@cfxlabsinc/b2b-services
    Preparing search index...

    Variable internalEventsConst

    internalEvents: {
        "account.depositMemo.hidden": {
            data: TObject<{ name: TUnion<[TString, TNull]> }>;
            description: "Deposit memo hidden";
            subject: "deposit-bank-memo";
        };
        "account.depositMemo.unhidden": {
            data: TObject<{ name: TUnion<[TString, TNull]> }>;
            description: "Deposit memo unhidden";
            subject: "deposit-bank-memo";
        };
        "account.victorAccount.created": {
            data: TObject<{ name: TString }>;
            description: "Victor account registered";
            subject: "victor-account";
        };
        "account.victorAccount.deleted": {
            data: TObject<{ name: TString }>;
            description: "Victor account deleted";
            subject: "victor-account";
        };
        "account.victorAccount.updated": {
            data: TObject<{ name: TString }>;
            description: "Victor account updated";
            subject: "victor-account";
        };
        "account.virtualAccount.hidden": {
            data: TObject<{ id: TString }>;
            description: "Virtual account hidden";
            subject: "virtual-account";
        };
        "account.virtualAccount.unhidden": {
            data: TObject<{ id: TString }>;
            description: "Virtual account unhidden";
            subject: "virtual-account";
        };
        "account.virtualAccountProvider.renamed": {
            data: TObject<{ name: TString; previousName: TString }>;
            description: "Virtual account provider renamed";
            subject: "virtual-account-provider";
        };
        "auth.adminRole.created": {
            data: TObject<{ name: TString }>;
            description: "Admin role created";
            subject: "admin-role";
        };
        "auth.adminRole.deleted": {
            data: TObject<{ name: TString }>;
            description: "Admin role deleted";
            subject: "admin-role";
        };
        "auth.adminRole.permissionsChanged": {
            data: TObject<{ name: TString }>;
            description: "Admin role permissions changed";
            subject: "admin-role";
        };
        "auth.adminRole.renamed": {
            data: TObject<{ name: TString; previousName: TString }>;
            description: "Admin role renamed";
            subject: "admin-role";
        };
        "auth.adminRole.updated": {
            data: TObject<{ name: TString }>;
            description: "Admin role description updated";
            subject: "admin-role";
        };
        "auth.adminUser.loggedOut": {
            data: TObject<{ name: TString }>;
            description: "Signed out";
            subject: "admin-user";
        };
        "auth.adminUser.passkeyAdded": {
            data: TObject<{ name: TString }>;
            description: "Passkey added";
            subject: "admin-user";
        };
        "auth.adminUser.roleChanged": {
            data: TObject<
                {
                    name: TString;
                    previousRoleId: TUnion<[TString, TNull]>;
                    roleId: TUnion<[TString, TNull]>;
                },
            >;
            description: "Admin user role changed";
            subject: "admin-user";
        };
        "auth.adminUser.statusChanged": {
            data: TObject<
                {
                    name: TString;
                    previousStatus: TUnion<[TLiteral<"ACTIVE">, TLiteral<"DISABLED">]>;
                    status: TUnion<[TLiteral<"ACTIVE">, TLiteral<"DISABLED">]>;
                },
            >;
            description: "Admin user status changed";
            subject: "admin-user";
        };
        "auth.dashboardInvite.created": {
            data: TObject<{ name: TString; roleId: TString }>;
            description: "Team member invited";
            subject: "dashboard-invite";
        };
        "auth.dashboardInvite.revoked": {
            data: TObject<{ name: TString; roleId: TString }>;
            description: "Team invite revoked";
            subject: "dashboard-invite";
        };
        "auth.dashboardMember.added": {
            data: TObject<{ name: TString; roleId: TString }>;
            description: "Team member added";
            subject: "dashboard-user";
        };
        "auth.dashboardMember.removed": {
            data: TObject<{ name: TString }>;
            description: "Team member removed";
            subject: "dashboard-user";
        };
        "auth.dashboardMember.roleChanged": {
            data: TObject<
                {
                    name: TString;
                    previousRoleId: TUnion<[TString, TNull]>;
                    roleId: TUnion<[TString, TNull]>;
                },
            >;
            description: "Team member role changed";
            subject: "dashboard-user";
        };
        "auth.dashboardMember.statusChanged": {
            data: TObject<
                {
                    name: TString;
                    previousStatus: TUnion<[TLiteral<"ACTIVE">, TLiteral<"DISABLED">]>;
                    status: TUnion<[TLiteral<"ACTIVE">, TLiteral<"DISABLED">]>;
                },
            >;
            description: "Team member status changed";
            subject: "dashboard-user";
        };
        "auth.dashboardRole.created": {
            data: TObject<{ name: TString; roleSetId: TString }>;
            description: "Dashboard role created";
            subject: "dashboard-role";
        };
        "auth.dashboardRole.deleted": {
            data: TObject<{ name: TString; roleSetId: TString }>;
            description: "Dashboard role deleted";
            subject: "dashboard-role";
        };
        "auth.dashboardRole.permissionsChanged": {
            data: TObject<{ name: TString; roleSetId: TString }>;
            description: "Dashboard role permissions changed";
            subject: "dashboard-role";
        };
        "auth.dashboardRole.renamed": {
            data: TObject<
                { name: TString; previousName: TString; roleSetId: TString },
            >;
            description: "Dashboard role renamed";
            subject: "dashboard-role";
        };
        "auth.dashboardRole.updated": {
            data: TObject<{ name: TString; roleSetId: TString }>;
            description: "Dashboard role updated";
            subject: "dashboard-role";
        };
        "auth.dashboardRoleSet.assigned": {
            data: TObject<
                {
                    name: TString;
                    previousRoleSetId: TUnion<[TString, TNull]>;
                    roleSetId: TString;
                },
            >;
            description: "Dashboard role set assigned";
            subject: "dashboard-role-set";
        };
        "auth.dashboardRoleSet.created": {
            data: TObject<{ name: TString }>;
            description: "Dashboard role set created";
            subject: "dashboard-role-set";
        };
        "auth.dashboardRoleSet.deleted": {
            data: TObject<{ name: TString }>;
            description: "Dashboard role set deleted";
            subject: "dashboard-role-set";
        };
        "auth.dashboardRoleSet.renamed": {
            data: TObject<{ name: TString; previousName: TString }>;
            description: "Dashboard role set renamed";
            subject: "dashboard-role-set";
        };
        "auth.dashboardRoleSet.updated": {
            data: TObject<{ name: TString }>;
            description: "Dashboard role set updated";
            subject: "dashboard-role-set";
        };
        "auth.dashboardSsoConnection.created": {
            data: TObject<{ name: TString }>;
            description: "SSO connection created";
            subject: "dashboard-sso-connection";
        };
        "auth.dashboardSsoConnection.deleted": {
            data: TObject<{ name: TString }>;
            description: "SSO connection deleted";
            subject: "dashboard-sso-connection";
        };
        "auth.dashboardSsoConnection.updated": {
            data: TObject<{ name: TString }>;
            description: "SSO connection updated";
            subject: "dashboard-sso-connection";
        };
        "auth.dashboardSsoConnection.verified": {
            data: TObject<{ name: TString }>;
            description: "SSO connection verified";
            subject: "dashboard-sso-connection";
        };
        "auth.dashboardUser.emailPreferencesUpdated": {
            data: TObject<{ name: TString }>;
            description: "Email preferences updated";
            subject: "dashboard-user";
        };
        "auth.dashboardUser.mfaReplaced": {
            data: TObject<{ name: TString }>;
            description: "Authenticator app replaced";
            subject: "dashboard-user";
        };
        "auth.dashboardUser.passkeyAdded": {
            data: TObject<{ name: TString }>;
            description: "Passkey added";
            subject: "dashboard-user";
        };
        "auth.dashboardUser.passkeyRemoved": {
            data: TObject<{ name: TString }>;
            description: "Passkey removed";
            subject: "dashboard-user";
        };
        "auth.dashboardUser.passwordChanged": {
            data: TObject<{ name: TString }>;
            description: "Password changed";
            subject: "dashboard-user";
        };
        "auth.dashboardUser.passwordSignInRestored": {
            data: TObject<{ name: TString; unlinked: TArray<TString> }>;
            description: "Password sign-in restored";
            subject: "dashboard-user";
        };
        "auth.dashboardUser.renamed": {
            data: TObject<{ name: TString }>;
            description: "Team member renamed";
            subject: "dashboard-user";
        };
        "auth.dashboardUser.signedOutEverywhere": {
            data: TObject<{ name: TString }>;
            description: "Signed out everywhere";
            subject: "dashboard-user";
        };
        "auth.email.sent": {
            data: TObject<
                {
                    audience: TString;
                    inviteId: TString;
                    kind: TLiteral<"DASHBOARD_INVITE">;
                    recipient: TString;
                    source: TLiteral<"DASHBOARD_INVITE">;
                    subject: TString;
                    workspaceName: TString;
                },
            >;
            description: "Dashboard invite emailed";
            subject: "dashboard-invite";
        };
        "backoffice.achBatch.created": {
            data: TObject<{ id: TString }>;
            description: "ACH batch created";
            subject: "ach-batch";
        };
        "backoffice.achBatch.statusUpdated": {
            data: TObject<
                {
                    id: TString;
                    status: TUnion<
                        [
                            TLiteral<"CREATED">,
                            TLiteral<"PROCESSING">,
                            TLiteral<"PROCESSED">,
                            TLiteral<"DELETED">,
                        ],
                    >;
                },
            >;
            description: "ACH batch status changed";
            subject: "ach-batch";
        };
        "backoffice.achFile.created": {
            data: TObject<{ id: TString }>;
            description: "ACH file created";
            subject: "ach-file";
        };
        "backoffice.achFile.statusUpdated": {
            data: TObject<
                {
                    id: TString;
                    status: TUnion<
                        [TLiteral<"CREATED">, TLiteral<"SUBMITTED">, TLiteral<"ARCHIVED">],
                    >;
                },
            >;
            description: "ACH file status changed";
            subject: "ach-file";
        };
        "backoffice.aiPriseProfile.updated": {
            data: TObject<
                {
                    aipriseProfileId: TString;
                    clientReferenceId: TOptional<TString>;
                    countryCode: TOptional<TString>;
                    eventType: TString;
                    name: TOptional<TString>;
                    previousResult: TOptional<
                        TUnion<
                            [
                                TLiteral<"APPROVED">,
                                TLiteral<"DECLINED">,
                                TLiteral<"REVIEW">,
                                TLiteral<"UNKNOWN">,
                                TLiteral<"DEACTIVATED">,
                            ],
                        >,
                    >;
                    profileKind: TUnion<[TLiteral<"BUSINESS">, TLiteral<"USER">]>;
                    reason: TOptional<TString>;
                    reasonCode: TOptional<TString>;
                    result: TOptional<
                        TUnion<
                            [
                                TLiteral<"APPROVED">,
                                TLiteral<"DECLINED">,
                                TLiteral<"REVIEW">,
                                TLiteral<"UNKNOWN">,
                                TLiteral<"DEACTIVATED">,
                            ],
                        >,
                    >;
                    runStatus: TOptional<
                        TUnion<
                            [
                                TLiteral<"NOT_STARTED">,
                                TLiteral<"RUNNING">,
                                TLiteral<"PENDING">,
                                TLiteral<"FAILED">,
                                TLiteral<"COMPLETED">,
                            ],
                        >,
                    >;
                },
            >;
            description: "AiPrise profile updated";
            subject: "aiprise-profile";
        };
        "backoffice.backfill.started": {
            data: TObject<
                {
                    backfill: TUnion<
                        [
                            TLiteral<"solanaAccountTransactionSync">,
                            TLiteral<"solanaParsedEvents">,
                            TLiteral<"victorTransactions">,
                            TLiteral<"wireEmailInbox">,
                        ],
                    >;
                },
            >;
            description: "Backfill started";
            subject: "backfill-run";
        };
        "backoffice.bankInternalTransfer.created": {
            data: TObject<{ id: TString }>;
            description: "Bank internal transfer created";
            subject: "bank-internal-transfer";
        };
        "backoffice.bankInternalTransfer.statusUpdated": {
            data: TObject<
                {
                    id: TString;
                    status: TUnion<
                        [TLiteral<"PENDING">, TLiteral<"COMPLETED">, TLiteral<"FAILED">],
                    >;
                },
            >;
            description: "Bank internal transfer status changed";
            subject: "bank-internal-transfer";
        };
        "backoffice.bankTransaction.created": {
            data: TObject<
                {
                    amount: TString;
                    bankId: TString;
                    description: TString;
                    id: TString;
                    type: TUnion<[TLiteral<"CREDIT">, TLiteral<"DEBIT">]>;
                },
            >;
            description: "Bank transaction recorded";
            subject: "bank-transaction";
        };
        "backoffice.bankTransaction.reconciled": {
            data: TObject<
                {
                    keys: TArray<
                        TUnion<
                            [
                                TLiteral<"ACH_BATCH">,
                                TLiteral<"BANK_INTERNAL_TRANSFER">,
                                TLiteral<"DEPOSIT">,
                                TLiteral<"DEPOSIT_IDS">,
                                TLiteral<"DEPOSIT_RETURN">,
                                TLiteral<"GREENDOT_BATCH">,
                                TLiteral<"MANUAL_MINT">,
                            ],
                        >,
                    >;
                },
            >;
            description: "Bank transaction reconciled";
            subject: "bank-transaction";
        };
        "backoffice.globalMaintenance.disabled": {
            data: TObject<{}>;
            description: "Global maintenance turned off";
            subject: "maintenance-flag";
        };
        "backoffice.globalMaintenance.enabled": {
            data: TObject<{}>;
            description: "Global maintenance turned on";
            subject: "maintenance-flag";
        };
        "backoffice.greendotSettlementFile.created": {
            data: TObject<
                {
                    key: TString;
                    kind: TUnion<
                        [TLiteral<"ADVICE_OF_CREDIT">, TLiteral<"TRANSMISSION_DETAIL">],
                    >;
                    size: TNumber;
                    versionId: TString;
                },
            >;
            description: "Green Dot settlement file received";
            subject: "greendot-settlement-file";
        };
        "backoffice.maintenance.disabled": {
            data: TObject<{ name: TString }>;
            description: "Service maintenance turned off";
            subject: "maintenance-flag";
        };
        "backoffice.maintenance.enabled": {
            data: TObject<{ name: TString }>;
            description: "Service maintenance turned on";
            subject: "maintenance-flag";
        };
        "backoffice.manualMint.created": {
            data: TObject<{ id: TString }>;
            description: "Manual mint created";
            subject: "manual-mint";
        };
        "backoffice.manualMint.statusUpdated": {
            data: TObject<
                {
                    id: TString;
                    status: TUnion<
                        [
                            TLiteral<"PENDING">,
                            TLiteral<"PROCESSING">,
                            TLiteral<"COMPLETED">,
                            TLiteral<"FAILED">,
                        ],
                    >;
                },
            >;
            description: "Manual mint status changed";
            subject: "manual-mint";
        };
        "backoffice.recurringFee.escalated": {
            data: TObject<
                {
                    amount: TString;
                    currency: TString;
                    customerId: TString;
                    customerName: TString;
                    failedAttempts: TArray<
                        TObject<
                            {
                                failedAt: TString;
                                feeTransferId: TString;
                                signature: TUnion<[TString, TNull]>;
                            },
                        >,
                    >;
                    invoiceId: TString;
                    invoiceNumber: TString;
                    periodKey: TString;
                    sourceAccountId: TString;
                    sourceAccountName: TUnion<[TString, TNull]>;
                },
            >;
            description: "Recurring fee charge escalated";
            subject: "recurring-fee-invoice";
        };
        "backoffice.recurringFee.unbilled": {
            data: TObject<
                {
                    failed: TArray<
                        TObject<
                            {
                                customerId: TString;
                                periodKey: TString;
                                reason: TOptional<TString>;
                            },
                        >,
                    >;
                    pastDue: TArray<
                        TObject<
                            {
                                customerId: TString;
                                periodKey: TString;
                                reason: TOptional<TString>;
                            },
                        >,
                    >;
                    periodKey: TString;
                },
            >;
            description: "Recurring fee months left unbilled";
            subject: "recurring-fee-period";
        };
        "backoffice.report.runRequested": {
            data: TObject<{ name: TString; reportId: TString }>;
            description: "Report run requested";
            subject: "report-run";
        };
        "backoffice.temporalSchedule.created": {
            data: TObject<{ name: TString }>;
            description: "Schedule created";
            subject: "temporal-schedule";
        };
        "backoffice.temporalSchedule.paused": {
            data: TObject<{ name: TString }>;
            description: "Schedule paused";
            subject: "temporal-schedule";
        };
        "backoffice.temporalSchedule.resumed": {
            data: TObject<{ name: TString }>;
            description: "Schedule resumed";
            subject: "temporal-schedule";
        };
        "backoffice.temporalSchedule.triggered": {
            data: TObject<{ name: TString }>;
            description: "Schedule run started";
            subject: "temporal-schedule";
        };
        "backoffice.temporalSchedule.updated": {
            data: TObject<{ name: TString }>;
            description: "Schedule updated";
            subject: "temporal-schedule";
        };
        "backoffice.wireBatch.created": {
            data: TObject<{ id: TString }>;
            description: "Wire batch created";
            subject: "wire-batch";
        };
        "backoffice.wireBatch.statusUpdated": {
            data: TObject<
                {
                    id: TString;
                    status: TUnion<
                        [
                            TLiteral<"CREATED">,
                            TLiteral<"PROCESSING">,
                            TLiteral<"SUBMITTED">,
                            TLiteral<"DELETED">,
                        ],
                    >;
                },
            >;
            description: "Wire batch status changed";
            subject: "wire-batch";
        };
        "backoffice.wireEmail.reconciled": {
            data: TObject<
                {
                    bankTransactionId: TString;
                    ffcMemo: TOptional<TString>;
                    wireEmailId: TString;
                },
            >;
            description: "Wire email reconciled";
            subject: "wire-email";
        };
        "backoffice.wireFile.created": {
            data: TObject<{ id: TString }>;
            description: "Wire file created";
            subject: "wire-file";
        };
        "backoffice.wireFile.statusUpdated": {
            data: TObject<
                {
                    id: TString;
                    status: TUnion<
                        [TLiteral<"CREATED">, TLiteral<"SUBMITTED">, TLiteral<"ARCHIVED">],
                    >;
                },
            >;
            description: "Wire file status changed";
            subject: "wire-file";
        };
        "bank.bank.instructionsUpdated": {
            data: TObject<{ name: TString }>;
            description: "Bank deposit instructions updated";
            subject: "bank";
        };
        "bank.bank.logoUpdated": {
            data: TObject<
                {
                    name: TString;
                    variant: TUnion<[TLiteral<"light">, TLiteral<"dark">]>;
                },
            >;
            description: "Bank logo updated";
            subject: "bank";
        };
        "bank.bank.updated": {
            data: TObject<{ name: TString }>;
            description: "Bank updated";
            subject: "bank";
        };
        "bank.bankAccount.created": {
            data: TObject<{ id: TString }>;
            description: "Bank account registered";
            subject: "bank-account";
        };
        "bank.bankAccount.deleted": {
            data: TObject<{ id: TString }>;
            description: "Bank account retired";
            subject: "bank-account";
        };
        "bank.bankAccount.statusChanged": {
            data: TObject<
                {
                    id: TString;
                    previousStatus: TUnion<[TLiteral<"ACTIVE">, TLiteral<"CLOSED">]>;
                    status: TUnion<[TLiteral<"ACTIVE">, TLiteral<"CLOSED">]>;
                },
            >;
            description: "Bank account status changed";
            subject: "bank-account";
        };
        "bank.bankAccount.updated": {
            data: TObject<{ id: TString }>;
            description: "Bank account updated";
            subject: "bank-account";
        };
        "bank.document.created": {
            data: TObject<{ bankId: TString; key: TString }>;
            description: "Bank document added";
            subject: "bank-document";
        };
        "bank.document.deleted": {
            data: TObject<{ bankId: TString; key: TString }>;
            description: "Bank document deleted";
            subject: "bank-document";
        };
        "bank.document.folderCreated": {
            data: TObject<{ bankId: TString; name: TString }>;
            description: "Bank folder created";
            subject: "bank-document";
        };
        "bank.document.folderDeleted": {
            data: TObject<{ bankId: TString; name: TString }>;
            description: "Bank folder deleted";
            subject: "bank-document";
        };
        "bank.program.created": {
            data: TObject<{ name: TString }>;
            description: "Program created";
            subject: "program";
        };
        "bank.program.customerGranted": {
            data: TObject<{ customerId: TString; name: TString }>;
            description: "Program granted to customer";
            subject: "program";
        };
        "bank.program.customerRevoked": {
            data: TObject<{ customerId: TString; name: TString }>;
            description: "Program revoked from customer";
            subject: "program";
        };
        "bank.program.deleted": {
            data: TObject<{ name: TString }>;
            description: "Program deleted";
            subject: "program";
        };
        "bank.program.paused": {
            data: TObject<{ name: TString }>;
            description: "Program paused";
            subject: "program";
        };
        "bank.program.resumed": {
            data: TObject<{ name: TString }>;
            description: "Program resumed";
            subject: "program";
        };
        "bank.program.updated": {
            data: TObject<{ name: TString }>;
            description: "Program updated";
            subject: "program";
        };
        "card.card.activated": {
            data: TObject<
                {
                    lastFourDigits: TUnion<[TString, TNull]>;
                    type: TUnion<[TLiteral<"VIRTUAL">, TLiteral<"PHYSICAL">]>;
                },
            >;
            description: "Card activated";
            subject: "girasol-card";
        };
        "card.card.blocked": {
            data: TObject<
                {
                    lastFourDigits: TUnion<[TString, TNull]>;
                    type: TUnion<[TLiteral<"VIRTUAL">, TLiteral<"PHYSICAL">]>;
                },
            >;
            description: "Card blocked";
            subject: "girasol-card";
        };
        "card.card.created": {
            data: TObject<
                {
                    lastFourDigits: TUnion<[TString, TNull]>;
                    type: TUnion<[TLiteral<"VIRTUAL">, TLiteral<"PHYSICAL">]>;
                },
            >;
            description: "Card created";
            subject: "girasol-card";
        };
        "card.card.detailsRevealed": {
            data: TObject<
                {
                    lastFourDigits: TUnion<[TString, TNull]>;
                    type: TUnion<[TLiteral<"VIRTUAL">, TLiteral<"PHYSICAL">]>;
                },
            >;
            description: "Card details revealed";
            subject: "girasol-card";
        };
        "card.card.frozen": {
            data: TObject<
                {
                    lastFourDigits: TUnion<[TString, TNull]>;
                    type: TUnion<[TLiteral<"VIRTUAL">, TLiteral<"PHYSICAL">]>;
                },
            >;
            description: "Card frozen";
            subject: "girasol-card";
        };
        "card.card.unfrozen": {
            data: TObject<
                {
                    lastFourDigits: TUnion<[TString, TNull]>;
                    type: TUnion<[TLiteral<"VIRTUAL">, TLiteral<"PHYSICAL">]>;
                },
            >;
            description: "Card unfrozen";
            subject: "girasol-card";
        };
        "card.cardAccount.balanceAdjusted": {
            data: TObject<
                {
                    adjustmentType: TUnion<[TLiteral<"CASH_IN">, TLiteral<"CASH_OUT">]>;
                    girasolTransactionId: TString;
                    name: TString;
                },
            >;
            description: "Card account balance adjusted";
            subject: "girasol-card-account";
        };
        "card.cardAccount.created": {
            data: TObject<{ name: TString }>;
            description: "Card account created";
            subject: "girasol-card-account";
        };
        "card.cardAccount.frozen": {
            data: TObject<{ name: TString }>;
            description: "Card account frozen";
            subject: "girasol-card-account";
        };
        "card.cardAccount.unfrozen": {
            data: TObject<{ name: TString }>;
            description: "Card account unfrozen";
            subject: "girasol-card-account";
        };
        "custody.backofficeWallet.created": {
            data: TObject<{ name: TString }>;
            description: "Backoffice wallet created";
            subject: "backoffice-wallet";
        };
        "custody.backofficeWallet.deleted": {
            data: TObject<{ name: TString }>;
            description: "Backoffice wallet deleted";
            subject: "backoffice-wallet";
        };
        "custody.backofficeWallet.updated": {
            data: TObject<{ name: TString }>;
            description: "Backoffice wallet updated";
            subject: "backoffice-wallet";
        };
        "custody.custodialWallet.created": {
            data: TObject<{ name: TString }>;
            description: "Customer wallet created";
            subject: "utila-custodial-wallet";
        };
        "custody.custodialWallet.deleted": {
            data: TObject<{ name: TString }>;
            description: "Customer wallet deleted";
            subject: "utila-custodial-wallet";
        };
        "custody.custodialWallet.restored": {
            data: TObject<{ name: TString }>;
            description: "Customer wallet restored";
            subject: "utila-custodial-wallet";
        };
        "custody.sweepWallet.addressDeleted": {
            data: TObject<{ address: TString; chain: TString; name: TString }>;
            description: "Deposit wallet address hidden";
            subject: "utila-sweep-wallet";
        };
        "custody.sweepWallet.addressRestored": {
            data: TObject<{ address: TString; chain: TString; name: TString }>;
            description: "Deposit wallet address restored";
            subject: "utila-sweep-wallet";
        };
        "custody.sweepWallet.created": {
            data: TObject<{ name: TString }>;
            description: "Deposit wallet created";
            subject: "utila-sweep-wallet";
        };
        "custody.sweepWallet.deleted": {
            data: TObject<{ name: TString }>;
            description: "Deposit wallet deleted";
            subject: "utila-sweep-wallet";
        };
        "custody.sweepWallet.linked": {
            data: TObject<{ name: TString }>;
            description: "Deposit wallet linked";
            subject: "utila-sweep-wallet";
        };
        "custody.sweepWallet.restored": {
            data: TObject<{ name: TString }>;
            description: "Deposit wallet restored";
            subject: "utila-sweep-wallet";
        };
        "custody.utilaVault.created": {
            data: TObject<{ name: TString }>;
            description: "Utila vault created";
            subject: "utila-vault";
        };
        "custody.utilaVault.deleted": {
            data: TObject<{ name: TString }>;
            description: "Utila vault deleted";
            subject: "utila-vault";
        };
        "custody.utilaVault.signingChecked": {
            data: TObject<
                {
                    name: TString;
                    previousSigningStatus: TUnion<
                        [
                            TLiteral<"UNCONFIGURED">,
                            TLiteral<"PROVISIONED">,
                            TLiteral<"AWAITING_APPROVAL">,
                            TLiteral<"SIGNING">,
                            TLiteral<"FAILED">,
                        ],
                    >;
                    signingStatus: TUnion<
                        [
                            TLiteral<"UNCONFIGURED">,
                            TLiteral<"PROVISIONED">,
                            TLiteral<"AWAITING_APPROVAL">,
                            TLiteral<"SIGNING">,
                            TLiteral<"FAILED">,
                        ],
                    >;
                },
            >;
            description: "Utila vault cosigner checked";
            subject: "utila-vault";
        };
        "custody.utilaVault.updated": {
            data: TObject<{ name: TString }>;
            description: "Utila vault updated";
            subject: "utila-vault";
        };
        "customer.allowedOrigin.created": {
            data: TObject<{ name: TString }>;
            description: "Allowed origin added";
            subject: "customer-origin";
        };
        "customer.allowedOrigin.deleted": {
            data: TObject<{ name: TString }>;
            description: "Allowed origin removed";
            subject: "customer-origin";
        };
        "customer.allowedOrigin.updated": {
            data: TObject<{ name: TString }>;
            description: "Allowed origin changed";
            subject: "customer-origin";
        };
        "customer.apiKey.created": {
            data: TObject<{ name: TString }>;
            description: "API key created";
            subject: "customer-api-key";
        };
        "customer.apiKey.deleted": {
            data: TObject<{ name: TString }>;
            description: "API key deleted";
            subject: "customer-api-key";
        };
        "customer.apiKey.renamed": {
            data: TObject<{ name: TString; previousName: TString }>;
            description: "API key renamed";
            subject: "customer-api-key";
        };
        "customer.apiKey.rotated": {
            data: TObject<{ name: TString; replacedApiKeyId: TString }>;
            description: "API key rotated";
            subject: "customer-api-key";
        };
        "customer.application.handoverRetried": {
            data: TObject<{ name: TString }>;
            description: "Application handover retried";
            subject: "customer-application";
        };
        "customer.application.sessionRenewed": {
            data: TObject<{ name: TString }>;
            description: "Application session renewed";
            subject: "customer-application";
        };
        "customer.application.statusUpdated": {
            data: TObject<
                {
                    applicationId: TString;
                    customerId: TUnion<[TString, TNull]>;
                    name: TString;
                    status: TUnion<
                        [
                            TLiteral<"SUBMITTED">,
                            TLiteral<"INFO_REQUESTED">,
                            TLiteral<"DECLINED">,
                            TLiteral<"APPROVED">,
                        ],
                    >;
                    workspaceId: TString;
                },
            >;
            description: "Customer application status changed";
            subject: "customer-application";
        };
        "customer.customer.deleted": {
            data: TObject<{ name: TString }>;
            description: "Customer deleted";
            subject: "customer";
        };
        "customer.customer.statusUpdated": {
            data: TObject<
                {
                    name: TString;
                    previousStatus: TUnion<
                        [
                            TLiteral<"PENDING">,
                            TLiteral<"ACTIVE">,
                            TLiteral<"FAILED">,
                            TLiteral<"DISABLED">,
                        ],
                    >;
                    status: TUnion<
                        [
                            TLiteral<"PENDING">,
                            TLiteral<"ACTIVE">,
                            TLiteral<"FAILED">,
                            TLiteral<"DISABLED">,
                        ],
                    >;
                },
            >;
            description: "Customer status changed";
            subject: "customer";
        };
        "customer.customer.updated": {
            data: TObject<{ name: TString }>;
            description: "Customer details updated";
            subject: "customer";
        };
        "customer.document.created": {
            data: TObject<{ customerId: TString; key: TString }>;
            description: "Customer document added";
            subject: "customer-document";
        };
        "customer.document.deleted": {
            data: TObject<{ customerId: TString; key: TString }>;
            description: "Customer document deleted";
            subject: "customer-document";
        };
        "customer.documentFolder.created": {
            data: TObject<{ name: TString }>;
            description: "Customer document folder created";
            subject: "customer-document";
        };
        "customer.documentFolder.deleted": {
            data: TObject<{ name: TString }>;
            description: "Customer document folder deleted";
            subject: "customer-document";
        };
        "customer.feeTransfer.statusUpdated": {
            data: TObject<
                {
                    id: TString;
                    status: TUnion<
                        [
                            TLiteral<"PROCESSING">,
                            TLiteral<"COMPLETED">,
                            TLiteral<"FAILED">,
                            TLiteral<"CANCELLED">,
                        ],
                    >;
                },
            >;
            description: "Fee transfer status changed";
            subject: "fee-transfer";
        };
        "customer.internalEmailSubscriber.added": {
            data: TObject<{ adminUserId: TString }>;
            description: "CFX staff added to customer emails";
            subject: "customer";
        };
        "customer.internalEmailSubscriber.removed": {
            data: TObject<{ adminUserId: TString }>;
            description: "CFX staff removed from customer emails";
            subject: "customer";
        };
        "customer.logo.deleted": {
            data: TObject<{ name: TString }>;
            description: "Customer logo removed";
            subject: "customer";
        };
        "customer.logo.updated": {
            data: TObject<{ name: TString }>;
            description: "Customer logo updated";
            subject: "customer";
        };
        "customer.notificationPreferences.updated": {
            data: TObject<
                {
                    channels: TArray<
                        TUnion<[TLiteral<"email">, TLiteral<"slack">, TLiteral<"sms">]>,
                    >;
                },
            >;
            description: "Notification preferences updated";
            subject: "customer";
        };
        "customer.recurringFee.invoiceIssued": {
            data: TObject<{ invoiceId: TString; termsVersion: TInteger }>;
            description: "Recurring fee invoice issued";
            subject: "recurring-fee-invoice";
        };
        "customer.recurringFee.paid": {
            data: TObject<{ feeTransferId: TString; invoiceId: TString }>;
            description: "Recurring fee invoice paid";
            subject: "recurring-fee-invoice";
        };
        "customer.recurringFee.paused": {
            data: TObject<{ sourceAccountId: TString }>;
            description: "Recurring fee paused";
            subject: "customer";
        };
        "customer.recurringFee.removed": {
            data: TObject<{ sourceAccountId: TString }>;
            description: "Recurring fee removed";
            subject: "customer";
        };
        "customer.recurringFee.resumed": {
            data: TObject<{ sourceAccountId: TString }>;
            description: "Recurring fee resumed";
            subject: "customer";
        };
        "customer.recurringFee.set": {
            data: TObject<{ sourceAccountId: TString }>;
            description: "Recurring fee set";
            subject: "customer";
        };
        "customer.shortUrl.deleted": {
            data: TObject<{ id: TString }>;
            description: "Short link deleted";
            subject: "short-url";
        };
        "customer.verificationTemplate.created": {
            data: TObject<
                {
                    type: TUnion<
                        [
                            TLiteral<"ORGANIZATION_KYB">,
                            TLiteral<"ORGANIZATION_DOCUMENT">,
                            TLiteral<"IDENTITY_AML">,
                            TLiteral<"IDENTITY_DOCUMENT">,
                            TLiteral<"RELATED_PERSON_DOCUMENT">,
                            TLiteral<"PAYMENT_INSTRUMENT_PERSON">,
                            TLiteral<"PAYMENT_INSTRUMENT_BUSINESS">,
                        ],
                    >;
                },
            >;
            description: "Verification template created";
            subject: "verification-template";
        };
        "customer.verificationTemplate.deleted": {
            data: TObject<
                {
                    type: TUnion<
                        [
                            TLiteral<"ORGANIZATION_KYB">,
                            TLiteral<"ORGANIZATION_DOCUMENT">,
                            TLiteral<"IDENTITY_AML">,
                            TLiteral<"IDENTITY_DOCUMENT">,
                            TLiteral<"RELATED_PERSON_DOCUMENT">,
                            TLiteral<"PAYMENT_INSTRUMENT_PERSON">,
                            TLiteral<"PAYMENT_INSTRUMENT_BUSINESS">,
                        ],
                    >;
                },
            >;
            description: "Verification template deleted";
            subject: "verification-template";
        };
        "customer.verificationTemplate.updated": {
            data: TObject<
                {
                    type: TUnion<
                        [
                            TLiteral<"ORGANIZATION_KYB">,
                            TLiteral<"ORGANIZATION_DOCUMENT">,
                            TLiteral<"IDENTITY_AML">,
                            TLiteral<"IDENTITY_DOCUMENT">,
                            TLiteral<"RELATED_PERSON_DOCUMENT">,
                            TLiteral<"PAYMENT_INSTRUMENT_PERSON">,
                            TLiteral<"PAYMENT_INSTRUMENT_BUSINESS">,
                        ],
                    >;
                },
            >;
            description: "Verification template changed";
            subject: "verification-template";
        };
        "deposit.cashDepositRetailer.hidden": {
            data: TObject<{ name: TString; retailerId: TString }>;
            description: "Cash deposit retailer hidden";
            subject: "cash-deposit-retailer";
        };
        "deposit.cashDepositRetailer.unhidden": {
            data: TObject<{ name: TString; retailerId: TString }>;
            description: "Cash deposit retailer unhidden";
            subject: "cash-deposit-retailer";
        };
        "entity.organization.aiPriseRerunRequested": {
            data: TObject<{ workflowId: TString }>;
            description: "AiPrise decision re-run requested";
            subject: "organization";
        };
        "entity.relatedPersonDocument.deleted": {
            data: TObject<{ relatedPersonId: TString; type: TString }>;
            description: "Related person document deleted";
            subject: "related-person-document";
        };
        "entity.relatedPersonDocument.uploaded": {
            data: TObject<{ relatedPersonId: TString; type: TString }>;
            description: "Related person document uploaded";
            subject: "related-person-document";
        };
        "evmProgram.upgrade.autoExecuted": {
            data: TObject<
                {
                    chainId: TNumber;
                    operationId: TString;
                    proxy: TString;
                    release: TString;
                    walletTransactionId: TString;
                },
            >;
            description: "EVM program upgrade executed by the timelock sweep";
            subject: "evm-program";
        };
        "ledger.account.withdrawal.created": {
            data: TObject<{ id: TString }>;
            description: "Ledger account withdrawal created";
            subject: "ledger-account-withdrawal";
        };
        "ledger.account.withdrawal.statusUpdated": {
            data: TObject<
                {
                    id: TString;
                    status: TUnion<
                        [
                            TLiteral<"PENDING">,
                            TLiteral<"PROCESSING">,
                            TLiteral<"COMPLETED">,
                            TLiteral<"RETURNED">,
                        ],
                    >;
                },
            >;
            description: "Ledger account withdrawal status changed";
            subject: "ledger-account-withdrawal";
        };
        "mintfx.authority.created": {
            data: TObject<{ signature: TString }>;
            description: "MintFX authority created";
            subject: "mintfx-authority";
        };
        "mintfx.authority.destroyed": {
            data: TObject<{ signature: TString }>;
            description: "MintFX authority destroyed";
            subject: "mintfx-authority";
        };
        "mintfx.authority.sendTimedOut": {
            data: TObject<
                {
                    operation: TUnion<
                        [TLiteral<"create">, TLiteral<"update">, TLiteral<"destroy">],
                    >;
                    signature: TString;
                },
            >;
            description: "MintFX authority send timed out";
            subject: "mintfx-authority";
        };
        "mintfx.authority.updated": {
            data: TObject<{ signature: TString }>;
            description: "MintFX authority updated";
            subject: "mintfx-authority";
        };
        "mintfx.token.metadataSendTimedOut": {
            data: TObject<{ name: TString; signature: TString }>;
            description: "Token metadata send timed out";
            subject: "mintfx-token";
        };
        "mintfx.token.metadataSet": {
            data: TObject<{ name: TString; signature: TString }>;
            description: "Token metadata set";
            subject: "mintfx-token";
        };
        "notification.emailTemplate.activated": {
            data: TObject<
                {
                    name: TString;
                    previousVersion: TUnion<[TInteger, TNull]>;
                    version: TUnion<[TInteger, TNull]>;
                },
            >;
            description: "Email template activated";
            subject: "email-template";
        };
        "notification.emailTemplate.deactivated": {
            data: TObject<
                {
                    name: TString;
                    previousVersion: TUnion<[TInteger, TNull]>;
                    version: TUnion<[TInteger, TNull]>;
                },
            >;
            description: "Email template switched off";
            subject: "email-template";
        };
        "notification.emailTemplate.draftDiscarded": {
            data: TObject<
                {
                    name: TString;
                    previousVersion: TUnion<[TInteger, TNull]>;
                    version: TUnion<[TInteger, TNull]>;
                },
            >;
            description: "Email template draft discarded";
            subject: "email-template";
        };
        "notification.emailTemplate.draftSaved": {
            data: TObject<
                {
                    name: TString;
                    previousVersion: TUnion<[TInteger, TNull]>;
                    version: TUnion<[TInteger, TNull]>;
                },
            >;
            description: "Email template draft saved";
            subject: "email-template";
        };
        "notification.emailTemplate.testSent": {
            data: TObject<{ name: TString; version: TInteger }>;
            description: "Email template test sent";
            subject: "email-template";
        };
        "notification.smsTemplate.activated": {
            data: TObject<
                {
                    name: TString;
                    previousVersion: TUnion<[TInteger, TNull]>;
                    version: TUnion<[TInteger, TNull]>;
                },
            >;
            description: "SMS template activated";
            subject: "sms-template";
        };
        "notification.smsTemplate.disabled": {
            data: TObject<{ name: TString }>;
            description: "SMS template disabled";
            subject: "sms-template";
        };
        "notification.smsTemplate.draftDiscarded": {
            data: TObject<
                {
                    name: TString;
                    previousVersion: TUnion<[TInteger, TNull]>;
                    version: TUnion<[TInteger, TNull]>;
                },
            >;
            description: "SMS template draft discarded";
            subject: "sms-template";
        };
        "notification.smsTemplate.draftSaved": {
            data: TObject<
                {
                    name: TString;
                    previousVersion: TUnion<[TInteger, TNull]>;
                    version: TUnion<[TInteger, TNull]>;
                },
            >;
            description: "SMS template draft saved";
            subject: "sms-template";
        };
        "notification.smsTemplate.enabled": {
            data: TObject<{ name: TString }>;
            description: "SMS template enabled";
            subject: "sms-template";
        };
        "notification.smsTemplate.reset": {
            data: TObject<
                {
                    name: TString;
                    previousVersion: TUnion<[TInteger, TNull]>;
                    version: TUnion<[TInteger, TNull]>;
                },
            >;
            description: "SMS template reset to default";
            subject: "sms-template";
        };
        "notification.smsTemplate.rolledBack": {
            data: TObject<
                {
                    name: TString;
                    previousVersion: TUnion<[TInteger, TNull]>;
                    version: TUnion<[TInteger, TNull]>;
                },
            >;
            description: "SMS template rolled back";
            subject: "sms-template";
        };
        "notification.smsTemplate.testSent": {
            data: TObject<{ name: TString; version: TInteger }>;
            description: "SMS template test sent";
            subject: "sms-template";
        };
        "product.activationRule.created": {
            data: TObject<{ name: TString; versionId: TInteger }>;
            description: "Activation rule created";
            subject: "product-activation-rule";
        };
        "product.activationRule.deleted": {
            data: TObject<{ name: TString; versionId: TInteger }>;
            description: "Activation rule deleted";
            subject: "product-activation-rule";
        };
        "product.activationRule.updated": {
            data: TObject<
                { name: TString; previousVersionId: TInteger; versionId: TInteger },
            >;
            description: "Activation rule updated";
            subject: "product-activation-rule";
        };
        "product.feeRule.created": {
            data: TObject<{ name: TString; versionId: TInteger }>;
            description: "Fee rule created";
            subject: "product-fee-rule";
        };
        "product.feeRule.deleted": {
            data: TObject<{ name: TString; versionId: TInteger }>;
            description: "Fee rule deleted";
            subject: "product-fee-rule";
        };
        "product.feeRule.updated": {
            data: TObject<
                { name: TString; previousVersionId: TInteger; versionId: TInteger },
            >;
            description: "Fee rule updated";
            subject: "product-fee-rule";
        };
        "product.limitRule.created": {
            data: TObject<{ name: TString; versionId: TInteger }>;
            description: "Limit rule created";
            subject: "product-limit-rule";
        };
        "product.limitRule.deleted": {
            data: TObject<{ name: TString; versionId: TInteger }>;
            description: "Limit rule deleted";
            subject: "product-limit-rule";
        };
        "product.limitRule.updated": {
            data: TObject<
                { name: TString; previousVersionId: TInteger; versionId: TInteger },
            >;
            description: "Limit rule updated";
            subject: "product-limit-rule";
        };
        "product.product.updated": {
            data: TObject<{ name: TString }>;
            description: "Product updated";
            subject: "product";
        };
        "product.route.created": {
            data: TObject<{ name: TString; versionId: TInteger }>;
            description: "Route created";
            subject: "product-route";
        };
        "product.route.deleted": {
            data: TObject<{ name: TString; versionId: TInteger }>;
            description: "Route deleted";
            subject: "product-route";
        };
        "product.route.updated": {
            data: TObject<
                { name: TString; previousVersionId: TInteger; versionId: TInteger },
            >;
            description: "Route updated";
            subject: "product-route";
        };
        "product.vendor.created": {
            data: TObject<{ name: TString; versionId: TInteger }>;
            description: "Vendor created";
            subject: "product-vendor";
        };
        "product.vendor.updated": {
            data: TObject<
                { name: TString; previousVersionId: TInteger; versionId: TInteger },
            >;
            description: "Vendor updated";
            subject: "product-vendor";
        };
        "program.authorityRecreate.requested": {
            data: TObject<
                {
                    name: TString;
                    network: TUnion<[TLiteral<"devnet">, TLiteral<"mainnet">]>;
                    workflowId: TString;
                },
            >;
            description: "MintFX authority recreate requested";
            subject: "solana-program";
        };
        "program.bufferClose.requested": {
            data: TObject<
                {
                    bufferAddress: TString;
                    name: TString;
                    network: TUnion<[TLiteral<"devnet">, TLiteral<"mainnet">]>;
                    workflowId: TString;
                },
            >;
            description: "Program buffer close requested";
            subject: "solana-program";
        };
        "program.deploy.requested": {
            data: TObject<
                {
                    name: TString;
                    network: TUnion<[TLiteral<"devnet">, TLiteral<"mainnet">]>;
                    releaseTag: TString;
                    workflowId: TString;
                },
            >;
            description: "Program deploy requested";
            subject: "solana-program";
        };
        "program.rentSweep.requested": {
            data: TObject<
                {
                    name: TString;
                    network: TUnion<[TLiteral<"devnet">, TLiteral<"mainnet">]>;
                    workflowId: TString;
                },
            >;
            description: "Program rent sweep requested";
            subject: "solana-program";
        };
        "redemption.redemption.created": {
            data: TObject<{ id: TString }>;
            description: "Redemption created";
            subject: "redemption";
        };
        "redemption.redemption.statusUpdated": {
            data: TObject<
                {
                    id: TString;
                    status: TUnion<
                        [
                            TLiteral<"PROCESSING">,
                            TLiteral<"COMPLETED">,
                            TLiteral<"FAILED">,
                            TLiteral<"RETURNED">,
                        ],
                    >;
                },
            >;
            description: "Redemption status changed";
            subject: "redemption";
        };
        "slack.customerSlackBotChannel.created": {
            data: TObject<
                { customerSlackBotInstallationId: TString; name: TString },
            >;
            description: "Slack channel added";
            subject: "customer-slack-bot-channel";
        };
        "slack.customerSlackBotChannel.deleted": {
            data: TObject<
                { customerSlackBotInstallationId: TString; name: TString },
            >;
            description: "Slack channel removed";
            subject: "customer-slack-bot-channel";
        };
        "slack.customerSlackBotInstallation.created": {
            data: TObject<{ id: TString }>;
            description: "Slack connected";
            subject: "customer-slack-bot-installation";
        };
        "slack.customerSlackBotInstallation.deleted": {
            data: TObject<{ id: TString }>;
            description: "Slack disconnected";
            subject: "customer-slack-bot-installation";
        };
        "slack.internalSlackChannel.created": {
            data: TObject<{ name: TString }>;
            description: "Internal Slack channel added";
            subject: "internal-slack-channel";
        };
        "slack.internalSlackChannel.deleted": {
            data: TObject<{ name: TString }>;
            description: "Internal Slack channel removed";
            subject: "internal-slack-channel";
        };
        "slack.internalSlackChannel.updated": {
            data: TObject<{ name: TString }>;
            description: "Internal Slack channel changed";
            subject: "internal-slack-channel";
        };
        "slack.slackBotInstallation.created": {
            data: TObject<{ id: TString }>;
            description: "CFX Slack bot installed";
            subject: "slack-bot-installation";
        };
        "slack.slackBotInstallation.deleted": {
            data: TObject<{ id: TString }>;
            description: "CFX Slack bot uninstalled";
            subject: "slack-bot-installation";
        };
        "slack.slackTemplate.activated": {
            data: TObject<
                {
                    name: TString;
                    previousVersion: TUnion<[TInteger, TNull]>;
                    version: TUnion<[TInteger, TNull]>;
                },
            >;
            description: "Slack template activated";
            subject: "slack-template";
        };
        "slack.slackTemplate.disabled": {
            data: TObject<{ name: TString }>;
            description: "Slack template disabled";
            subject: "slack-template";
        };
        "slack.slackTemplate.draftDiscarded": {
            data: TObject<
                {
                    name: TString;
                    previousVersion: TUnion<[TInteger, TNull]>;
                    version: TUnion<[TInteger, TNull]>;
                },
            >;
            description: "Slack template draft discarded";
            subject: "slack-template";
        };
        "slack.slackTemplate.draftSaved": {
            data: TObject<
                {
                    name: TString;
                    previousVersion: TUnion<[TInteger, TNull]>;
                    version: TUnion<[TInteger, TNull]>;
                },
            >;
            description: "Slack template draft saved";
            subject: "slack-template";
        };
        "slack.slackTemplate.enabled": {
            data: TObject<{ name: TString }>;
            description: "Slack template enabled";
            subject: "slack-template";
        };
        "slack.slackTemplate.reset": {
            data: TObject<
                {
                    name: TString;
                    previousVersion: TUnion<[TInteger, TNull]>;
                    version: TUnion<[TInteger, TNull]>;
                },
            >;
            description: "Slack template reset to default";
            subject: "slack-template";
        };
        "slack.slackTemplate.rolledBack": {
            data: TObject<
                {
                    name: TString;
                    previousVersion: TUnion<[TInteger, TNull]>;
                    version: TUnion<[TInteger, TNull]>;
                },
            >;
            description: "Slack template rolled back";
            subject: "slack-template";
        };
        "slack.templateTest.requested": {
            data: TObject<
                {
                    sampleCase: TObject<
                        {
                            axes: TRecord<"^.*$", TString>;
                            optionalVariables: TUnion<[TLiteral<"present">, TLiteral<"absent">]>;
                        },
                    >;
                    templateId: TString;
                    version: TOptional<TInteger>;
                },
            >;
            description: "Slack template test posted";
            subject: "slack-template";
        };
        "token.chain.created": {
            data: TObject<{ name: TString }>;
            description: "Chain created";
            subject: "chain";
        };
        "token.chain.deleted": {
            data: TObject<{ name: TString }>;
            description: "Chain deleted";
            subject: "chain";
        };
        "token.chain.updated": {
            data: TObject<{ name: TString }>;
            description: "Chain updated";
            subject: "chain";
        };
        "token.token.created": {
            data: TObject<{ name: TString }>;
            description: "Token created";
            subject: "token";
        };
        "token.token.deleted": {
            data: TObject<{ name: TString }>;
            description: "Token deleted";
            subject: "token";
        };
        "token.token.updated": {
            data: TObject<{ name: TString }>;
            description: "Token updated";
            subject: "token";
        };
        "transaction.metadata.updated": {
            data: TObject<{ id: TString }>;
            description: "Transaction details updated";
            subject: "transaction";
        };
        "transaction.metadataFile.created": {
            data: TObject<{ name: TString; transactionId: TString }>;
            description: "Transaction file attached";
            subject: "transaction-metadata-file";
        };
        "transaction.metadataFile.deleted": {
            data: TObject<{ name: TString; transactionId: TString }>;
            description: "Transaction file deleted";
            subject: "transaction-metadata-file";
        };
        "transaction.transaction.hidden": {
            data: TObject<{ transactionIds: TArray<TString> }>;
            description: "Transactions hidden";
            subject: "transaction-hide-group";
        };
        "transaction.transaction.unhidden": {
            data: TObject<{ transactionIds: TArray<TString> }>;
            description: "Transactions unhidden";
            subject: "transaction-hide-group";
        };
        "transaction.transaction.updated": {
            data: TObject<
                {
                    bankId: TOptional<TString>;
                    customerId: TString;
                    transactionIds: TArray<TString>;
                },
            >;
            description: "Transactions updated";
            subject: "customer-transactions";
        };
        "withdrawal.positivePayDecision.decided": {
            data: TObject<
                {
                    status: TUnion<
                        [TLiteral<"PENDING">, TLiteral<"APPROVED">, TLiteral<"DENIED">],
                    >;
                },
            >;
            description: "Positive pay decision made";
            subject: "positive-pay-decision";
        };
        "withdrawal.positivePayDecision.requestConfirmed": {
            data: TObject<
                {
                    status: TUnion<
                        [TLiteral<"PENDING">, TLiteral<"APPROVED">, TLiteral<"DENIED">],
                    >;
                },
            >;
            description: "Positive pay request confirmed";
            subject: "positive-pay-decision";
        };
        "withdrawal.positivePayDecision.undone": {
            data: TObject<
                {
                    status: TUnion<
                        [TLiteral<"PENDING">, TLiteral<"APPROVED">, TLiteral<"DENIED">],
                    >;
                },
            >;
            description: "Positive pay decision undone";
            subject: "positive-pay-decision";
        };
        "withdrawal.positivePayFile.resendRequested": {
            data: TObject<{ workflowId: TString }>;
            description: "Positive pay file resend requested";
            subject: "positive-pay-file";
        };
        "withdrawal.positivePayFile.sendRequested": {
            data: TObject<{ businessDate: TString }>;
            description: "Positive pay file send requested";
            subject: "positive-pay-run";
        };
        "withdrawal.withdrawal.statusUpdated": {
            data: TObject<
                {
                    id: TString;
                    status: TUnion<
                        [
                            TLiteral<"PROCESSING">,
                            TLiteral<"COMPLETED">,
                            TLiteral<"FAILED">,
                            TLiteral<"RETURNED">,
                        ],
                    >;
                },
            >;
            description: "Withdrawal status changed";
            subject: "withdrawal";
        };
    } = ...

    The internal event bus taxonomy, assembled from both directions per §8.4: every adminEventPublisher.publish(...) call site, and the consumer union in backoffice-api/src/controllers/InternalEventSlackConsumer.ts.

    Two things this deliberately does NOT copy from the consumer union:

    • Payloads are what publishers emit. backoffice.bankTransaction.created sends five fields against a declared {id}, and backoffice.metcapWireTransaction.updated sends two. TypeBox T.Object is open and pick() returns a non-fresh object, so neither drift was visible.
    • Status unions are the domain's, not the consumer's. Four events could already carry a value the consumer schema rejects; narrowing here would encode a latent validation failure.

    See docs/proposals/EVENT_BUS.md §8.20.4.

    Type Declaration

    • Readonlyaccount.depositMemo.hidden: {
          data: TObject<{ name: TUnion<[TString, TNull]> }>;
          description: "Deposit memo hidden";
          subject: "deposit-bank-memo";
      }
    • Readonlyaccount.depositMemo.unhidden: {
          data: TObject<{ name: TUnion<[TString, TNull]> }>;
          description: "Deposit memo unhidden";
          subject: "deposit-bank-memo";
      }
    • Readonlyaccount.victorAccount.created: {
          data: TObject<{ name: TString }>;
          description: "Victor account registered";
          subject: "victor-account";
      }
    • Readonlyaccount.victorAccount.deleted: {
          data: TObject<{ name: TString }>;
          description: "Victor account deleted";
          subject: "victor-account";
      }
    • Readonlyaccount.victorAccount.updated: {
          data: TObject<{ name: TString }>;
          description: "Victor account updated";
          subject: "victor-account";
      }
    • Readonlyaccount.virtualAccount.hidden: {
          data: TObject<{ id: TString }>;
          description: "Virtual account hidden";
          subject: "virtual-account";
      }
    • Readonlyaccount.virtualAccount.unhidden: {
          data: TObject<{ id: TString }>;
          description: "Virtual account unhidden";
          subject: "virtual-account";
      }
    • Readonlyaccount.virtualAccountProvider.renamed: {
          data: TObject<{ name: TString; previousName: TString }>;
          description: "Virtual account provider renamed";
          subject: "virtual-account-provider";
      }
    • Readonlyauth.adminRole.created: {
          data: TObject<{ name: TString }>;
          description: "Admin role created";
          subject: "admin-role";
      }
    • Readonlyauth.adminRole.deleted: {
          data: TObject<{ name: TString }>;
          description: "Admin role deleted";
          subject: "admin-role";
      }
    • Readonlyauth.adminRole.permissionsChanged: {
          data: TObject<{ name: TString }>;
          description: "Admin role permissions changed";
          subject: "admin-role";
      }
    • Readonlyauth.adminRole.renamed: {
          data: TObject<{ name: TString; previousName: TString }>;
          description: "Admin role renamed";
          subject: "admin-role";
      }
    • Readonlyauth.adminRole.updated: {
          data: TObject<{ name: TString }>;
          description: "Admin role description updated";
          subject: "admin-role";
      }

      A description edit; published beside renamed or permissionsChanged when those change too.

    • Readonlyauth.adminUser.loggedOut: {
          data: TObject<{ name: TString }>;
          description: "Signed out";
          subject: "admin-user";
      }
    • Readonlyauth.adminUser.passkeyAdded: {
          data: TObject<{ name: TString }>;
          description: "Passkey added";
          subject: "admin-user";
      }
    • Readonlyauth.adminUser.roleChanged: {
          data: TObject<
              {
                  name: TString;
                  previousRoleId: TUnion<[TString, TNull]>;
                  roleId: TUnion<[TString, TNull]>;
              },
          >;
          description: "Admin user role changed";
          subject: "admin-user";
      }
    • Readonlyauth.adminUser.statusChanged: {
          data: TObject<
              {
                  name: TString;
                  previousStatus: TUnion<[TLiteral<"ACTIVE">, TLiteral<"DISABLED">]>;
                  status: TUnion<[TLiteral<"ACTIVE">, TLiteral<"DISABLED">]>;
              },
          >;
          description: "Admin user status changed";
          subject: "admin-user";
      }
    • Readonlyauth.dashboardInvite.created: {
          data: TObject<{ name: TString; roleId: TString }>;
          description: "Team member invited";
          subject: "dashboard-invite";
      }
    • Readonlyauth.dashboardInvite.revoked: {
          data: TObject<{ name: TString; roleId: TString }>;
          description: "Team invite revoked";
          subject: "dashboard-invite";
      }
    • Readonlyauth.dashboardMember.added: {
          data: TObject<{ name: TString; roleId: TString }>;
          description: "Team member added";
          subject: "dashboard-user";
      }

      An invite to a registered login, which joins at once.

    • Readonlyauth.dashboardMember.removed: {
          data: TObject<{ name: TString }>;
          description: "Team member removed";
          subject: "dashboard-user";
      }
    • Readonlyauth.dashboardMember.roleChanged: {
          data: TObject<
              {
                  name: TString;
                  previousRoleId: TUnion<[TString, TNull]>;
                  roleId: TUnion<[TString, TNull]>;
              },
          >;
          description: "Team member role changed";
          subject: "dashboard-user";
      }
    • Readonlyauth.dashboardMember.statusChanged: {
          data: TObject<
              {
                  name: TString;
                  previousStatus: TUnion<[TLiteral<"ACTIVE">, TLiteral<"DISABLED">]>;
                  status: TUnion<[TLiteral<"ACTIVE">, TLiteral<"DISABLED">]>;
              },
          >;
          description: "Team member status changed";
          subject: "dashboard-user";
      }
    • Readonlyauth.dashboardRole.created: {
          data: TObject<{ name: TString; roleSetId: TString }>;
          description: "Dashboard role created";
          subject: "dashboard-role";
      }
    • Readonlyauth.dashboardRole.deleted: {
          data: TObject<{ name: TString; roleSetId: TString }>;
          description: "Dashboard role deleted";
          subject: "dashboard-role";
      }
    • Readonlyauth.dashboardRole.permissionsChanged: {
          data: TObject<{ name: TString; roleSetId: TString }>;
          description: "Dashboard role permissions changed";
          subject: "dashboard-role";
      }
    • Readonlyauth.dashboardRole.renamed: {
          data: TObject<
              { name: TString; previousName: TString; roleSetId: TString },
          >;
          description: "Dashboard role renamed";
          subject: "dashboard-role";
      }
    • Readonlyauth.dashboardRole.updated: {
          data: TObject<{ name: TString; roleSetId: TString }>;
          description: "Dashboard role updated";
          subject: "dashboard-role";
      }

      A description or rank edit, published beside any rename or permission change.

    • Readonlyauth.dashboardRoleSet.assigned: {
          data: TObject<
              {
                  name: TString;
                  previousRoleSetId: TUnion<[TString, TNull]>;
                  roleSetId: TString;
              },
          >;
          description: "Dashboard role set assigned";
          subject: "dashboard-role-set";
      }
    • Readonlyauth.dashboardRoleSet.created: {
          data: TObject<{ name: TString }>;
          description: "Dashboard role set created";
          subject: "dashboard-role-set";
      }
    • Readonlyauth.dashboardRoleSet.deleted: {
          data: TObject<{ name: TString }>;
          description: "Dashboard role set deleted";
          subject: "dashboard-role-set";
      }
    • Readonlyauth.dashboardRoleSet.renamed: {
          data: TObject<{ name: TString; previousName: TString }>;
          description: "Dashboard role set renamed";
          subject: "dashboard-role-set";
      }
    • Readonlyauth.dashboardRoleSet.updated: {
          data: TObject<{ name: TString }>;
          description: "Dashboard role set updated";
          subject: "dashboard-role-set";
      }

      A description or default role edit, published beside any rename.

    • Readonlyauth.dashboardSsoConnection.created: {
          data: TObject<{ name: TString }>;
          description: "SSO connection created";
          subject: "dashboard-sso-connection";
      }

      name is the connection's Cognito provider name.

    • Readonlyauth.dashboardSsoConnection.deleted: {
          data: TObject<{ name: TString }>;
          description: "SSO connection deleted";
          subject: "dashboard-sso-connection";
      }
    • Readonlyauth.dashboardSsoConnection.updated: {
          data: TObject<{ name: TString }>;
          description: "SSO connection updated";
          subject: "dashboard-sso-connection";
      }
    • Readonlyauth.dashboardSsoConnection.verified: {
          data: TObject<{ name: TString }>;
          description: "SSO connection verified";
          subject: "dashboard-sso-connection";
      }
    • Readonlyauth.dashboardUser.emailPreferencesUpdated: {
          data: TObject<{ name: TString }>;
          description: "Email preferences updated";
          subject: "dashboard-user";
      }

      A customer member's own email toggles.

    • Readonlyauth.dashboardUser.mfaReplaced: {
          data: TObject<{ name: TString }>;
          description: "Authenticator app replaced";
          subject: "dashboard-user";
      }
    • Readonlyauth.dashboardUser.passkeyAdded: {
          data: TObject<{ name: TString }>;
          description: "Passkey added";
          subject: "dashboard-user";
      }
    • Readonlyauth.dashboardUser.passkeyRemoved: {
          data: TObject<{ name: TString }>;
          description: "Passkey removed";
          subject: "dashboard-user";
      }
    • Readonlyauth.dashboardUser.passwordChanged: {
          data: TObject<{ name: TString }>;
          description: "Password changed";
          subject: "dashboard-user";
      }
    • Readonlyauth.dashboardUser.passwordSignInRestored: {
          data: TObject<{ name: TString; unlinked: TArray<TString> }>;
          description: "Password sign-in restored";
          subject: "dashboard-user";
      }

      An operator unlinked a user's stale SSO identities; unlinked names their Cognito providers.

    • Readonlyauth.dashboardUser.renamed: {
          data: TObject<{ name: TString }>;
          description: "Team member renamed";
          subject: "dashboard-user";
      }

      A member renamed themself; name is the new name.

    • Readonlyauth.dashboardUser.signedOutEverywhere: {
          data: TObject<{ name: TString }>;
          description: "Signed out everywhere";
          subject: "dashboard-user";
      }
    • Readonlyauth.email.sent: {
          data: TObject<
              {
                  audience: TString;
                  inviteId: TString;
                  kind: TLiteral<"DASHBOARD_INVITE">;
                  recipient: TString;
                  source: TLiteral<"DASHBOARD_INVITE">;
                  subject: TString;
                  workspaceName: TString;
              },
          >;
          description: "Dashboard invite emailed";
          subject: "dashboard-invite";
      }

      A dashboard invite went out, outside the notification handler (which mirrors Cognito's mail itself). Mirrored to the EMAIL_SENT Slack feed. Closed, and never a body or link.

    • Readonlybackoffice.achBatch.created: {
          data: TObject<{ id: TString }>;
          description: "ACH batch created";
          subject: "ach-batch";
      }
    • Readonlybackoffice.achBatch.statusUpdated: {
          data: TObject<
              {
                  id: TString;
                  status: TUnion<
                      [
                          TLiteral<"CREATED">,
                          TLiteral<"PROCESSING">,
                          TLiteral<"PROCESSED">,
                          TLiteral<"DELETED">,
                      ],
                  >;
              },
          >;
          description: "ACH batch status changed";
          subject: "ach-batch";
      }
    • Readonlybackoffice.achFile.created: {
          data: TObject<{ id: TString }>;
          description: "ACH file created";
          subject: "ach-file";
      }
    • Readonlybackoffice.achFile.statusUpdated: {
          data: TObject<
              {
                  id: TString;
                  status: TUnion<
                      [TLiteral<"CREATED">, TLiteral<"SUBMITTED">, TLiteral<"ARCHIVED">],
                  >;
              },
          >;
          description: "ACH file status changed";
          subject: "ach-file";
      }
    • Readonlybackoffice.aiPriseProfile.updated: {
          data: TObject<
              {
                  aipriseProfileId: TString;
                  clientReferenceId: TOptional<TString>;
                  countryCode: TOptional<TString>;
                  eventType: TString;
                  name: TOptional<TString>;
                  previousResult: TOptional<
                      TUnion<
                          [
                              TLiteral<"APPROVED">,
                              TLiteral<"DECLINED">,
                              TLiteral<"REVIEW">,
                              TLiteral<"UNKNOWN">,
                              TLiteral<"DEACTIVATED">,
                          ],
                      >,
                  >;
                  profileKind: TUnion<[TLiteral<"BUSINESS">, TLiteral<"USER">]>;
                  reason: TOptional<TString>;
                  reasonCode: TOptional<TString>;
                  result: TOptional<
                      TUnion<
                          [
                              TLiteral<"APPROVED">,
                              TLiteral<"DECLINED">,
                              TLiteral<"REVIEW">,
                              TLiteral<"UNKNOWN">,
                              TLiteral<"DEACTIVATED">,
                          ],
                      >,
                  >;
                  runStatus: TOptional<
                      TUnion<
                          [
                              TLiteral<"NOT_STARTED">,
                              TLiteral<"RUNNING">,
                              TLiteral<"PENDING">,
                              TLiteral<"FAILED">,
                              TLiteral<"COMPLETED">,
                          ],
                      >,
                  >;
              },
          >;
          description: "AiPrise profile updated";
          subject: "aiprise-profile";
      }

      A status-driving AiPrise profile callback was applied. eventType is AiPrise's own event type, or DECISION_CALLBACK for the business decision callback, which carries none. previousResult is the shadow row's result before this event refreshed it, so a consumer can act on transitions only.

    • Readonlybackoffice.backfill.started: {
          data: TObject<
              {
                  backfill: TUnion<
                      [
                          TLiteral<"solanaAccountTransactionSync">,
                          TLiteral<"solanaParsedEvents">,
                          TLiteral<"victorTransactions">,
                          TLiteral<"wireEmailInbox">,
                      ],
                  >;
              },
          >;
          description: "Backfill started";
          subject: "backfill-run";
      }
    • Readonlybackoffice.bankInternalTransfer.created: {
          data: TObject<{ id: TString }>;
          description: "Bank internal transfer created";
          subject: "bank-internal-transfer";
      }
    • Readonlybackoffice.bankInternalTransfer.statusUpdated: {
          data: TObject<
              {
                  id: TString;
                  status: TUnion<
                      [TLiteral<"PENDING">, TLiteral<"COMPLETED">, TLiteral<"FAILED">],
                  >;
              },
          >;
          description: "Bank internal transfer status changed";
          subject: "bank-internal-transfer";
      }
    • Readonlybackoffice.bankTransaction.created: {
          data: TObject<
              {
                  amount: TString;
                  bankId: TString;
                  description: TString;
                  id: TString;
                  type: TUnion<[TLiteral<"CREDIT">, TLiteral<"DEBIT">]>;
              },
          >;
          description: "Bank transaction recorded";
          subject: "bank-transaction";
      }
    • Readonlybackoffice.bankTransaction.reconciled: {
          data: TObject<
              {
                  keys: TArray<
                      TUnion<
                          [
                              TLiteral<"ACH_BATCH">,
                              TLiteral<"BANK_INTERNAL_TRANSFER">,
                              TLiteral<"DEPOSIT">,
                              TLiteral<"DEPOSIT_IDS">,
                              TLiteral<"DEPOSIT_RETURN">,
                              TLiteral<"GREENDOT_BATCH">,
                              TLiteral<"MANUAL_MINT">,
                          ],
                      >,
                  >;
              },
          >;
          description: "Bank transaction reconciled";
          subject: "bank-transaction";
      }

      A write linked the row to the records it settles. keys names the reconciliation keys that write set; a retry at the target publishes again.

    • Readonlybackoffice.globalMaintenance.disabled: {
          data: TObject<{}>;
          description: "Global maintenance turned off";
          subject: "maintenance-flag";
      }
    • Readonlybackoffice.globalMaintenance.enabled: {
          data: TObject<{}>;
          description: "Global maintenance turned on";
          subject: "maintenance-flag";
      }
    • Readonlybackoffice.greendotSettlementFile.created: {
          data: TObject<
              {
                  key: TString;
                  kind: TUnion<
                      [TLiteral<"ADVICE_OF_CREDIT">, TLiteral<"TRANSMISSION_DETAIL">],
                  >;
                  size: TNumber;
                  versionId: TString;
              },
          >;
          description: "Green Dot settlement file received";
          subject: "greendot-settlement-file";
      }
    • Readonlybackoffice.maintenance.disabled: {
          data: TObject<{ name: TString }>;
          description: "Service maintenance turned off";
          subject: "maintenance-flag";
      }
    • Readonlybackoffice.maintenance.enabled: {
          data: TObject<{ name: TString }>;
          description: "Service maintenance turned on";
          subject: "maintenance-flag";
      }
    • Readonlybackoffice.manualMint.created: {
          data: TObject<{ id: TString }>;
          description: "Manual mint created";
          subject: "manual-mint";
      }
    • Readonlybackoffice.manualMint.statusUpdated: {
          data: TObject<
              {
                  id: TString;
                  status: TUnion<
                      [
                          TLiteral<"PENDING">,
                          TLiteral<"PROCESSING">,
                          TLiteral<"COMPLETED">,
                          TLiteral<"FAILED">,
                      ],
                  >;
              },
          >;
          description: "Manual mint status changed";
          subject: "manual-mint";
      }
    • Readonlybackoffice.recurringFee.escalated: {
          data: TObject<
              {
                  amount: TString;
                  currency: TString;
                  customerId: TString;
                  customerName: TString;
                  failedAttempts: TArray<
                      TObject<
                          {
                              failedAt: TString;
                              feeTransferId: TString;
                              signature: TUnion<[TString, TNull]>;
                          },
                      >,
                  >;
                  invoiceId: TString;
                  invoiceNumber: TString;
                  periodKey: TString;
                  sourceAccountId: TString;
                  sourceAccountName: TUnion<[TString, TNull]>;
              },
          >;
          description: "Recurring fee charge escalated";
          subject: "recurring-fee-invoice";
      }
    • Readonlybackoffice.recurringFee.unbilled: {
          data: TObject<
              {
                  failed: TArray<
                      TObject<
                          {
                              customerId: TString;
                              periodKey: TString;
                              reason: TOptional<TString>;
                          },
                      >,
                  >;
                  pastDue: TArray<
                      TObject<
                          {
                              customerId: TString;
                              periodKey: TString;
                              reason: TOptional<TString>;
                          },
                      >,
                  >;
                  periodKey: TString;
              },
          >;
          description: "Recurring fee months left unbilled";
          subject: "recurring-fee-period";
      }
    • Readonlybackoffice.report.runRequested: {
          data: TObject<{ name: TString; reportId: TString }>;
          description: "Report run requested";
          subject: "report-run";
      }
    • Readonlybackoffice.temporalSchedule.created: {
          data: TObject<{ name: TString }>;
          description: "Schedule created";
          subject: "temporal-schedule";
      }
    • Readonlybackoffice.temporalSchedule.paused: {
          data: TObject<{ name: TString }>;
          description: "Schedule paused";
          subject: "temporal-schedule";
      }
    • Readonlybackoffice.temporalSchedule.resumed: {
          data: TObject<{ name: TString }>;
          description: "Schedule resumed";
          subject: "temporal-schedule";
      }
    • Readonlybackoffice.temporalSchedule.triggered: {
          data: TObject<{ name: TString }>;
          description: "Schedule run started";
          subject: "temporal-schedule";
      }
    • Readonlybackoffice.temporalSchedule.updated: {
          data: TObject<{ name: TString }>;
          description: "Schedule updated";
          subject: "temporal-schedule";
      }
    • Readonlybackoffice.wireBatch.created: {
          data: TObject<{ id: TString }>;
          description: "Wire batch created";
          subject: "wire-batch";
      }
    • Readonlybackoffice.wireBatch.statusUpdated: {
          data: TObject<
              {
                  id: TString;
                  status: TUnion<
                      [
                          TLiteral<"CREATED">,
                          TLiteral<"PROCESSING">,
                          TLiteral<"SUBMITTED">,
                          TLiteral<"DELETED">,
                      ],
                  >;
              },
          >;
          description: "Wire batch status changed";
          subject: "wire-batch";
      }
    • Readonlybackoffice.wireEmail.reconciled: {
          data: TObject<
              {
                  bankTransactionId: TString;
                  ffcMemo: TOptional<TString>;
                  wireEmailId: TString;
              },
          >;
          description: "Wire email reconciled";
          subject: "wire-email";
      }

      A stored wire_email has been attached to a bank transaction — created, matched or enriched, the caller does not care which. Replaces backoffice.metcapWireTransaction.created / .updated, which were published by the Hookdeck-fed metcap wire-email path that no longer exists.

      ffcMemo rides on the event rather than being re-read from the bank transaction because it is the reason the event exists: the consumer's whole job is memo → deposit_bank_memo → deposit quote. Optional, since plenty of wires quote no memo and still deserve the event.

    • Readonlybackoffice.wireFile.created: {
          data: TObject<{ id: TString }>;
          description: "Wire file created";
          subject: "wire-file";
      }
    • Readonlybackoffice.wireFile.statusUpdated: {
          data: TObject<
              {
                  id: TString;
                  status: TUnion<
                      [TLiteral<"CREATED">, TLiteral<"SUBMITTED">, TLiteral<"ARCHIVED">],
                  >;
              },
          >;
          description: "Wire file status changed";
          subject: "wire-file";
      }
    • Readonlybank.bank.instructionsUpdated: {
          data: TObject<{ name: TString }>;
          description: "Bank deposit instructions updated";
          subject: "bank";
      }
    • Readonlybank.bank.logoUpdated: {
          data: TObject<
              {
                  name: TString;
                  variant: TUnion<[TLiteral<"light">, TLiteral<"dark">]>;
              },
          >;
          description: "Bank logo updated";
          subject: "bank";
      }

      One per variant whose logo a bank save changes; name is the bank's display name.

    • Readonlybank.bank.updated: {
          data: TObject<{ name: TString }>;
          description: "Bank updated";
          subject: "bank";
      }

      Any edited field outside the deposit instructions and logos, the rest of the theme included.

    • Readonlybank.bankAccount.created: {
          data: TObject<{ id: TString }>;
          description: "Bank account registered";
          subject: "bank-account";
      }
    • Readonlybank.bankAccount.deleted: {
          data: TObject<{ id: TString }>;
          description: "Bank account retired";
          subject: "bank-account";
      }
    • Readonlybank.bankAccount.statusChanged: {
          data: TObject<
              {
                  id: TString;
                  previousStatus: TUnion<[TLiteral<"ACTIVE">, TLiteral<"CLOSED">]>;
                  status: TUnion<[TLiteral<"ACTIVE">, TLiteral<"CLOSED">]>;
              },
          >;
          description: "Bank account status changed";
          subject: "bank-account";
      }
    • Readonlybank.bankAccount.updated: {
          data: TObject<{ id: TString }>;
          description: "Bank account updated";
          subject: "bank-account";
      }

      Any edit but a status change, which is its own event.

    • Readonlybank.document.created: {
          data: TObject<{ bankId: TString; key: TString }>;
          description: "Bank document added";
          subject: "bank-document";
      }
    • Readonlybank.document.deleted: {
          data: TObject<{ bankId: TString; key: TString }>;
          description: "Bank document deleted";
          subject: "bank-document";
      }
    • Readonlybank.document.folderCreated: {
          data: TObject<{ bankId: TString; name: TString }>;
          description: "Bank folder created";
          subject: "bank-document";
      }
    • Readonlybank.document.folderDeleted: {
          data: TObject<{ bankId: TString; name: TString }>;
          description: "Bank folder deleted";
          subject: "bank-document";
      }
    • Readonlybank.program.created: {
          data: TObject<{ name: TString }>;
          description: "Program created";
          subject: "program";
      }
    • Readonlybank.program.customerGranted: {
          data: TObject<{ customerId: TString; name: TString }>;
          description: "Program granted to customer";
          subject: "program";
      }
    • Readonlybank.program.customerRevoked: {
          data: TObject<{ customerId: TString; name: TString }>;
          description: "Program revoked from customer";
          subject: "program";
      }
    • Readonlybank.program.deleted: {
          data: TObject<{ name: TString }>;
          description: "Program deleted";
          subject: "program";
      }
    • Readonlybank.program.paused: {
          data: TObject<{ name: TString }>;
          description: "Program paused";
          subject: "program";
      }
    • Readonlybank.program.resumed: {
          data: TObject<{ name: TString }>;
          description: "Program resumed";
          subject: "program";
      }
    • Readonlybank.program.updated: {
          data: TObject<{ name: TString }>;
          description: "Program updated";
          subject: "program";
      }

      Any edit but a pause or resume, which are their own events.

    • Readonlycard.card.activated: {
          data: TObject<
              {
                  lastFourDigits: TUnion<[TString, TNull]>;
                  type: TUnion<[TLiteral<"VIRTUAL">, TLiteral<"PHYSICAL">]>;
              },
          >;
          description: "Card activated";
          subject: "girasol-card";
      }
    • Readonlycard.card.blocked: {
          data: TObject<
              {
                  lastFourDigits: TUnion<[TString, TNull]>;
                  type: TUnion<[TLiteral<"VIRTUAL">, TLiteral<"PHYSICAL">]>;
              },
          >;
          description: "Card blocked";
          subject: "girasol-card";
      }
    • Readonlycard.card.created: {
          data: TObject<
              {
                  lastFourDigits: TUnion<[TString, TNull]>;
                  type: TUnion<[TLiteral<"VIRTUAL">, TLiteral<"PHYSICAL">]>;
              },
          >;
          description: "Card created";
          subject: "girasol-card";
      }
    • Readonlycard.card.detailsRevealed: {
          data: TObject<
              {
                  lastFourDigits: TUnion<[TString, TNull]>;
                  type: TUnion<[TLiteral<"VIRTUAL">, TLiteral<"PHYSICAL">]>;
              },
          >;
          description: "Card details revealed";
          subject: "girasol-card";
      }

      Someone read the card's number and CVV from Girasol.

    • Readonlycard.card.frozen: {
          data: TObject<
              {
                  lastFourDigits: TUnion<[TString, TNull]>;
                  type: TUnion<[TLiteral<"VIRTUAL">, TLiteral<"PHYSICAL">]>;
              },
          >;
          description: "Card frozen";
          subject: "girasol-card";
      }
    • Readonlycard.card.unfrozen: {
          data: TObject<
              {
                  lastFourDigits: TUnion<[TString, TNull]>;
                  type: TUnion<[TLiteral<"VIRTUAL">, TLiteral<"PHYSICAL">]>;
              },
          >;
          description: "Card unfrozen";
          subject: "girasol-card";
      }
    • Readonlycard.cardAccount.balanceAdjusted: {
          data: TObject<
              {
                  adjustmentType: TUnion<[TLiteral<"CASH_IN">, TLiteral<"CASH_OUT">]>;
                  girasolTransactionId: TString;
                  name: TString;
              },
          >;
          description: "Card account balance adjusted";
          subject: "girasol-card-account";
      }

      A sync moved money at Girasol to match the account's wallet.

    • Readonlycard.cardAccount.created: {
          data: TObject<{ name: TString }>;
          description: "Card account created";
          subject: "girasol-card-account";
      }
    • Readonlycard.cardAccount.frozen: {
          data: TObject<{ name: TString }>;
          description: "Card account frozen";
          subject: "girasol-card-account";
      }
    • Readonlycard.cardAccount.unfrozen: {
          data: TObject<{ name: TString }>;
          description: "Card account unfrozen";
          subject: "girasol-card-account";
      }
    • Readonlycustody.backofficeWallet.created: {
          data: TObject<{ name: TString }>;
          description: "Backoffice wallet created";
          subject: "backoffice-wallet";
      }
    • Readonlycustody.backofficeWallet.deleted: {
          data: TObject<{ name: TString }>;
          description: "Backoffice wallet deleted";
          subject: "backoffice-wallet";
      }
    • Readonlycustody.backofficeWallet.updated: {
          data: TObject<{ name: TString }>;
          description: "Backoffice wallet updated";
          subject: "backoffice-wallet";
      }
    • Readonlycustody.custodialWallet.created: {
          data: TObject<{ name: TString }>;
          description: "Customer wallet created";
          subject: "utila-custodial-wallet";
      }
    • Readonlycustody.custodialWallet.deleted: {
          data: TObject<{ name: TString }>;
          description: "Customer wallet deleted";
          subject: "utila-custodial-wallet";
      }
    • Readonlycustody.custodialWallet.restored: {
          data: TObject<{ name: TString }>;
          description: "Customer wallet restored";
          subject: "utila-custodial-wallet";
      }
    • Readonlycustody.sweepWallet.addressDeleted: {
          data: TObject<{ address: TString; chain: TString; name: TString }>;
          description: "Deposit wallet address hidden";
          subject: "utila-sweep-wallet";
      }

      One derived address hidden from the deposit page; the wallet stays.

    • Readonlycustody.sweepWallet.addressRestored: {
          data: TObject<{ address: TString; chain: TString; name: TString }>;
          description: "Deposit wallet address restored";
          subject: "utila-sweep-wallet";
      }
    • Readonlycustody.sweepWallet.created: {
          data: TObject<{ name: TString }>;
          description: "Deposit wallet created";
          subject: "utila-sweep-wallet";
      }
    • Readonlycustody.sweepWallet.deleted: {
          data: TObject<{ name: TString }>;
          description: "Deposit wallet deleted";
          subject: "utila-sweep-wallet";
      }
    • Readonlycustody.sweepWallet.linked: {
          data: TObject<{ name: TString }>;
          description: "Deposit wallet linked";
          subject: "utila-sweep-wallet";
      }

      A Utila wallet already in the vault, registered as a deposit wallet.

    • Readonlycustody.sweepWallet.restored: {
          data: TObject<{ name: TString }>;
          description: "Deposit wallet restored";
          subject: "utila-sweep-wallet";
      }
    • Readonlycustody.utilaVault.created: {
          data: TObject<{ name: TString }>;
          description: "Utila vault created";
          subject: "utila-vault";
      }
    • Readonlycustody.utilaVault.deleted: {
          data: TObject<{ name: TString }>;
          description: "Utila vault deleted";
          subject: "utila-vault";
      }
    • Readonlycustody.utilaVault.signingChecked: {
          data: TObject<
              {
                  name: TString;
                  previousSigningStatus: TUnion<
                      [
                          TLiteral<"UNCONFIGURED">,
                          TLiteral<"PROVISIONED">,
                          TLiteral<"AWAITING_APPROVAL">,
                          TLiteral<"SIGNING">,
                          TLiteral<"FAILED">,
                      ],
                  >;
                  signingStatus: TUnion<
                      [
                          TLiteral<"UNCONFIGURED">,
                          TLiteral<"PROVISIONED">,
                          TLiteral<"AWAITING_APPROVAL">,
                          TLiteral<"SIGNING">,
                          TLiteral<"FAILED">,
                      ],
                  >;
              },
          >;
          description: "Utila vault cosigner checked";
          subject: "utila-vault";
      }

      An operator's cosigner check: the device registered, or its approval and health read. Published on every check, since each records an outcome.

    • Readonlycustody.utilaVault.updated: {
          data: TObject<{ name: TString }>;
          description: "Utila vault updated";
          subject: "utila-vault";
      }

      A reassignment names the old customer in owners as well as the new.

    • Readonlycustomer.allowedOrigin.created: {
          data: TObject<{ name: TString }>;
          description: "Allowed origin added";
          subject: "customer-origin";
      }

      name is the origin, which is the entry's only field.

    • Readonlycustomer.allowedOrigin.deleted: {
          data: TObject<{ name: TString }>;
          description: "Allowed origin removed";
          subject: "customer-origin";
      }
    • Readonlycustomer.allowedOrigin.updated: {
          data: TObject<{ name: TString }>;
          description: "Allowed origin changed";
          subject: "customer-origin";
      }
    • Readonlycustomer.apiKey.created: {
          data: TObject<{ name: TString }>;
          description: "API key created";
          subject: "customer-api-key";
      }
    • Readonlycustomer.apiKey.deleted: {
          data: TObject<{ name: TString }>;
          description: "API key deleted";
          subject: "customer-api-key";
      }
    • Readonlycustomer.apiKey.renamed: {
          data: TObject<{ name: TString; previousName: TString }>;
          description: "API key renamed";
          subject: "customer-api-key";
      }
    • Readonlycustomer.apiKey.rotated: {
          data: TObject<{ name: TString; replacedApiKeyId: TString }>;
          description: "API key rotated";
          subject: "customer-api-key";
      }

      The subject is the new key; replacedApiKeyId keeps working until it is deleted.

    • Readonlycustomer.application.handoverRetried: {
          data: TObject<{ name: TString }>;
          description: "Application handover retried";
          subject: "customer-application";
      }
    • Readonlycustomer.application.sessionRenewed: {
          data: TObject<{ name: TString }>;
          description: "Application session renewed";
          subject: "customer-application";
      }
    • Readonlycustomer.application.statusUpdated: {
          data: TObject<
              {
                  applicationId: TString;
                  customerId: TUnion<[TString, TNull]>;
                  name: TString;
                  status: TUnion<
                      [
                          TLiteral<"SUBMITTED">,
                          TLiteral<"INFO_REQUESTED">,
                          TLiteral<"DECLINED">,
                          TLiteral<"APPROVED">,
                      ],
                  >;
                  workspaceId: TString;
              },
          >;
          description: "Customer application status changed";
          subject: "customer-application";
      }

      A self-serve application reached a step its applicant is emailed about. Internal, not customer-bus: an applicant has no customer until APPROVED. Published once per transition, by the write that made it.

    • Readonlycustomer.customer.deleted: {
          data: TObject<{ name: TString }>;
          description: "Customer deleted";
          subject: "customer";
      }
    • Readonlycustomer.customer.statusUpdated: {
          data: TObject<
              {
                  name: TString;
                  previousStatus: TUnion<
                      [
                          TLiteral<"PENDING">,
                          TLiteral<"ACTIVE">,
                          TLiteral<"FAILED">,
                          TLiteral<"DISABLED">,
                      ],
                  >;
                  status: TUnion<
                      [
                          TLiteral<"PENDING">,
                          TLiteral<"ACTIVE">,
                          TLiteral<"FAILED">,
                          TLiteral<"DISABLED">,
                      ],
                  >;
              },
          >;
          description: "Customer status changed";
          subject: "customer";
      }
    • Readonlycustomer.customer.updated: {
          data: TObject<{ name: TString }>;
          description: "Customer details updated";
          subject: "customer";
      }

      A name, description or self-verification edit.

    • Readonlycustomer.document.created: {
          data: TObject<{ customerId: TString; key: TString }>;
          description: "Customer document added";
          subject: "customer-document";
      }
    • Readonlycustomer.document.deleted: {
          data: TObject<{ customerId: TString; key: TString }>;
          description: "Customer document deleted";
          subject: "customer-document";
      }
    • Readonlycustomer.documentFolder.created: {
          data: TObject<{ name: TString }>;
          description: "Customer document folder created";
          subject: "customer-document";
      }

      name is the folder's path from the root.

    • Readonlycustomer.documentFolder.deleted: {
          data: TObject<{ name: TString }>;
          description: "Customer document folder deleted";
          subject: "customer-document";
      }
    • Readonlycustomer.feeTransfer.statusUpdated: {
          data: TObject<
              {
                  id: TString;
                  status: TUnion<
                      [
                          TLiteral<"PROCESSING">,
                          TLiteral<"COMPLETED">,
                          TLiteral<"FAILED">,
                          TLiteral<"CANCELLED">,
                      ],
                  >;
              },
          >;
          description: "Fee transfer status changed";
          subject: "fee-transfer";
      }
    • Readonlycustomer.internalEmailSubscriber.added: {
          data: TObject<{ adminUserId: TString }>;
          description: "CFX staff added to customer emails";
          subject: "customer";
      }
    • Readonlycustomer.internalEmailSubscriber.removed: {
          data: TObject<{ adminUserId: TString }>;
          description: "CFX staff removed from customer emails";
          subject: "customer";
      }
    • Readonlycustomer.logo.deleted: {
          data: TObject<{ name: TString }>;
          description: "Customer logo removed";
          subject: "customer";
      }
    • Readonlycustomer.logo.updated: {
          data: TObject<{ name: TString }>;
          description: "Customer logo updated";
          subject: "customer";
      }
    • Readonlycustomer.notificationPreferences.updated: {
          data: TObject<
              {
                  channels: TArray<
                      TUnion<[TLiteral<"email">, TLiteral<"slack">, TLiteral<"sms">]>,
                  >;
              },
          >;
          description: "Notification preferences updated";
          subject: "customer";
      }

      channels names the preference sets the edit changed.

    • Readonlycustomer.recurringFee.invoiceIssued: {
          data: TObject<{ invoiceId: TString; termsVersion: TInteger }>;
          description: "Recurring fee invoice issued";
          subject: "recurring-fee-invoice";
      }
    • Readonlycustomer.recurringFee.paid: {
          data: TObject<{ feeTransferId: TString; invoiceId: TString }>;
          description: "Recurring fee invoice paid";
          subject: "recurring-fee-invoice";
      }
    • Readonlycustomer.recurringFee.paused: {
          data: TObject<{ sourceAccountId: TString }>;
          description: "Recurring fee paused";
          subject: "customer";
      }
    • Readonlycustomer.recurringFee.removed: {
          data: TObject<{ sourceAccountId: TString }>;
          description: "Recurring fee removed";
          subject: "customer";
      }
    • Readonlycustomer.recurringFee.resumed: {
          data: TObject<{ sourceAccountId: TString }>;
          description: "Recurring fee resumed";
          subject: "customer";
      }
    • Readonlycustomer.recurringFee.set: {
          data: TObject<{ sourceAccountId: TString }>;
          description: "Recurring fee set";
          subject: "customer";
      }

      Set, re-priced or enrolled; the amount stays on the customer row.

    • Readonlycustomer.shortUrl.deleted: {
          data: TObject<{ id: TString }>;
          description: "Short link deleted";
          subject: "short-url";
      }
    • Readonlycustomer.verificationTemplate.created: {
          data: TObject<
              {
                  type: TUnion<
                      [
                          TLiteral<"ORGANIZATION_KYB">,
                          TLiteral<"ORGANIZATION_DOCUMENT">,
                          TLiteral<"IDENTITY_AML">,
                          TLiteral<"IDENTITY_DOCUMENT">,
                          TLiteral<"RELATED_PERSON_DOCUMENT">,
                          TLiteral<"PAYMENT_INSTRUMENT_PERSON">,
                          TLiteral<"PAYMENT_INSTRUMENT_BUSINESS">,
                      ],
                  >;
              },
          >;
          description: "Verification template created";
          subject: "verification-template";
      }
    • Readonlycustomer.verificationTemplate.deleted: {
          data: TObject<
              {
                  type: TUnion<
                      [
                          TLiteral<"ORGANIZATION_KYB">,
                          TLiteral<"ORGANIZATION_DOCUMENT">,
                          TLiteral<"IDENTITY_AML">,
                          TLiteral<"IDENTITY_DOCUMENT">,
                          TLiteral<"RELATED_PERSON_DOCUMENT">,
                          TLiteral<"PAYMENT_INSTRUMENT_PERSON">,
                          TLiteral<"PAYMENT_INSTRUMENT_BUSINESS">,
                      ],
                  >;
              },
          >;
          description: "Verification template deleted";
          subject: "verification-template";
      }
    • Readonlycustomer.verificationTemplate.updated: {
          data: TObject<
              {
                  type: TUnion<
                      [
                          TLiteral<"ORGANIZATION_KYB">,
                          TLiteral<"ORGANIZATION_DOCUMENT">,
                          TLiteral<"IDENTITY_AML">,
                          TLiteral<"IDENTITY_DOCUMENT">,
                          TLiteral<"RELATED_PERSON_DOCUMENT">,
                          TLiteral<"PAYMENT_INSTRUMENT_PERSON">,
                          TLiteral<"PAYMENT_INSTRUMENT_BUSINESS">,
                      ],
                  >;
              },
          >;
          description: "Verification template changed";
          subject: "verification-template";
      }
    • Readonlydeposit.cashDepositRetailer.hidden: {
          data: TObject<{ name: TString; retailerId: TString }>;
          description: "Cash deposit retailer hidden";
          subject: "cash-deposit-retailer";
      }
    • Readonlydeposit.cashDepositRetailer.unhidden: {
          data: TObject<{ name: TString; retailerId: TString }>;
          description: "Cash deposit retailer unhidden";
          subject: "cash-deposit-retailer";
      }
    • Readonlyentity.organization.aiPriseRerunRequested: {
          data: TObject<{ workflowId: TString }>;
          description: "AiPrise decision re-run requested";
          subject: "organization";
      }

      An operator re-applied AiPrise's decision; the run's own writes publish their own events.

    • Readonlyentity.relatedPersonDocument.deleted: {
          data: TObject<{ relatedPersonId: TString; type: TString }>;
          description: "Related person document deleted";
          subject: "related-person-document";
      }
    • Readonlyentity.relatedPersonDocument.uploaded: {
          data: TObject<{ relatedPersonId: TString; type: TString }>;
          description: "Related person document uploaded";
          subject: "related-person-document";
      }
    • ReadonlyevmProgram.upgrade.autoExecuted: {
          data: TObject<
              {
                  chainId: TNumber;
                  operationId: TString;
                  proxy: TString;
                  release: TString;
                  walletTransactionId: TString;
              },
          >;
          description: "EVM program upgrade executed by the timelock sweep";
          subject: "evm-program";
      }
    • Readonlyledger.account.withdrawal.created: {
          data: TObject<{ id: TString }>;
          description: "Ledger account withdrawal created";
          subject: "ledger-account-withdrawal";
      }
    • Readonlyledger.account.withdrawal.statusUpdated: {
          data: TObject<
              {
                  id: TString;
                  status: TUnion<
                      [
                          TLiteral<"PENDING">,
                          TLiteral<"PROCESSING">,
                          TLiteral<"COMPLETED">,
                          TLiteral<"RETURNED">,
                      ],
                  >;
              },
          >;
          description: "Ledger account withdrawal status changed";
          subject: "ledger-account-withdrawal";
      }
    • Readonlymintfx.authority.created: {
          data: TObject<{ signature: TString }>;
          description: "MintFX authority created";
          subject: "mintfx-authority";
      }
    • Readonlymintfx.authority.destroyed: {
          data: TObject<{ signature: TString }>;
          description: "MintFX authority destroyed";
          subject: "mintfx-authority";
      }
    • Readonlymintfx.authority.sendTimedOut: {
          data: TObject<
              {
                  operation: TUnion<
                      [TLiteral<"create">, TLiteral<"update">, TLiteral<"destroy">],
                  >;
                  signature: TString;
              },
          >;
          description: "MintFX authority send timed out";
          subject: "mintfx-authority";
      }
    • Readonlymintfx.authority.updated: {
          data: TObject<{ signature: TString }>;
          description: "MintFX authority updated";
          subject: "mintfx-authority";
      }
    • Readonlymintfx.token.metadataSendTimedOut: {
          data: TObject<{ name: TString; signature: TString }>;
          description: "Token metadata send timed out";
          subject: "mintfx-token";
      }

      The subject is the token's mint address.

    • Readonlymintfx.token.metadataSet: {
          data: TObject<{ name: TString; signature: TString }>;
          description: "Token metadata set";
          subject: "mintfx-token";
      }
    • Readonlynotification.emailTemplate.activated: {
          data: TObject<
              {
                  name: TString;
                  previousVersion: TUnion<[TInteger, TNull]>;
                  version: TUnion<[TInteger, TNull]>;
              },
          >;
          description: "Email template activated";
          subject: "email-template";
      }
    • Readonlynotification.emailTemplate.deactivated: {
          data: TObject<
              {
                  name: TString;
                  previousVersion: TUnion<[TInteger, TNull]>;
                  version: TUnion<[TInteger, TNull]>;
              },
          >;
          description: "Email template switched off";
          subject: "email-template";
      }
    • Readonlynotification.emailTemplate.draftDiscarded: {
          data: TObject<
              {
                  name: TString;
                  previousVersion: TUnion<[TInteger, TNull]>;
                  version: TUnion<[TInteger, TNull]>;
              },
          >;
          description: "Email template draft discarded";
          subject: "email-template";
      }
    • Readonlynotification.emailTemplate.draftSaved: {
          data: TObject<
              {
                  name: TString;
                  previousVersion: TUnion<[TInteger, TNull]>;
                  version: TUnion<[TInteger, TNull]>;
              },
          >;
          description: "Email template draft saved";
          subject: "email-template";
      }
    • Readonlynotification.emailTemplate.testSent: {
          data: TObject<{ name: TString; version: TInteger }>;
          description: "Email template test sent";
          subject: "email-template";
      }
    • Readonlynotification.smsTemplate.activated: {
          data: TObject<
              {
                  name: TString;
                  previousVersion: TUnion<[TInteger, TNull]>;
                  version: TUnion<[TInteger, TNull]>;
              },
          >;
          description: "SMS template activated";
          subject: "sms-template";
      }
    • Readonlynotification.smsTemplate.disabled: {
          data: TObject<{ name: TString }>;
          description: "SMS template disabled";
          subject: "sms-template";
      }
    • Readonlynotification.smsTemplate.draftDiscarded: {
          data: TObject<
              {
                  name: TString;
                  previousVersion: TUnion<[TInteger, TNull]>;
                  version: TUnion<[TInteger, TNull]>;
              },
          >;
          description: "SMS template draft discarded";
          subject: "sms-template";
      }
    • Readonlynotification.smsTemplate.draftSaved: {
          data: TObject<
              {
                  name: TString;
                  previousVersion: TUnion<[TInteger, TNull]>;
                  version: TUnion<[TInteger, TNull]>;
              },
          >;
          description: "SMS template draft saved";
          subject: "sms-template";
      }
    • Readonlynotification.smsTemplate.enabled: {
          data: TObject<{ name: TString }>;
          description: "SMS template enabled";
          subject: "sms-template";
      }
    • Readonlynotification.smsTemplate.reset: {
          data: TObject<
              {
                  name: TString;
                  previousVersion: TUnion<[TInteger, TNull]>;
                  version: TUnion<[TInteger, TNull]>;
              },
          >;
          description: "SMS template reset to default";
          subject: "sms-template";
      }
    • Readonlynotification.smsTemplate.rolledBack: {
          data: TObject<
              {
                  name: TString;
                  previousVersion: TUnion<[TInteger, TNull]>;
                  version: TUnion<[TInteger, TNull]>;
              },
          >;
          description: "SMS template rolled back";
          subject: "sms-template";
      }
    • Readonlynotification.smsTemplate.testSent: {
          data: TObject<{ name: TString; version: TInteger }>;
          description: "SMS template test sent";
          subject: "sms-template";
      }
    • Readonlyproduct.activationRule.created: {
          data: TObject<{ name: TString; versionId: TInteger }>;
          description: "Activation rule created";
          subject: "product-activation-rule";
      }
    • Readonlyproduct.activationRule.deleted: {
          data: TObject<{ name: TString; versionId: TInteger }>;
          description: "Activation rule deleted";
          subject: "product-activation-rule";
      }
    • Readonlyproduct.activationRule.updated: {
          data: TObject<
              { name: TString; previousVersionId: TInteger; versionId: TInteger },
          >;
          description: "Activation rule updated";
          subject: "product-activation-rule";
      }
    • Readonlyproduct.feeRule.created: {
          data: TObject<{ name: TString; versionId: TInteger }>;
          description: "Fee rule created";
          subject: "product-fee-rule";
      }
    • Readonlyproduct.feeRule.deleted: {
          data: TObject<{ name: TString; versionId: TInteger }>;
          description: "Fee rule deleted";
          subject: "product-fee-rule";
      }
    • Readonlyproduct.feeRule.updated: {
          data: TObject<
              { name: TString; previousVersionId: TInteger; versionId: TInteger },
          >;
          description: "Fee rule updated";
          subject: "product-fee-rule";
      }
    • Readonlyproduct.limitRule.created: {
          data: TObject<{ name: TString; versionId: TInteger }>;
          description: "Limit rule created";
          subject: "product-limit-rule";
      }
    • Readonlyproduct.limitRule.deleted: {
          data: TObject<{ name: TString; versionId: TInteger }>;
          description: "Limit rule deleted";
          subject: "product-limit-rule";
      }
    • Readonlyproduct.limitRule.updated: {
          data: TObject<
              { name: TString; previousVersionId: TInteger; versionId: TInteger },
          >;
          description: "Limit rule updated";
          subject: "product-limit-rule";
      }
    • Readonlyproduct.product.updated: {
          data: TObject<{ name: TString }>;
          description: "Product updated";
          subject: "product";
      }
    • Readonlyproduct.route.created: {
          data: TObject<{ name: TString; versionId: TInteger }>;
          description: "Route created";
          subject: "product-route";
      }
    • Readonlyproduct.route.deleted: {
          data: TObject<{ name: TString; versionId: TInteger }>;
          description: "Route deleted";
          subject: "product-route";
      }
    • Readonlyproduct.route.updated: {
          data: TObject<
              { name: TString; previousVersionId: TInteger; versionId: TInteger },
          >;
          description: "Route updated";
          subject: "product-route";
      }
    • Readonlyproduct.vendor.created: {
          data: TObject<{ name: TString; versionId: TInteger }>;
          description: "Vendor created";
          subject: "product-vendor";
      }
    • Readonlyproduct.vendor.updated: {
          data: TObject<
              { name: TString; previousVersionId: TInteger; versionId: TInteger },
          >;
          description: "Vendor updated";
          subject: "product-vendor";
      }
    • Readonlyprogram.authorityRecreate.requested: {
          data: TObject<
              {
                  name: TString;
                  network: TUnion<[TLiteral<"devnet">, TLiteral<"mainnet">]>;
                  workflowId: TString;
              },
          >;
          description: "MintFX authority recreate requested";
          subject: "solana-program";
      }
    • Readonlyprogram.bufferClose.requested: {
          data: TObject<
              {
                  bufferAddress: TString;
                  name: TString;
                  network: TUnion<[TLiteral<"devnet">, TLiteral<"mainnet">]>;
                  workflowId: TString;
              },
          >;
          description: "Program buffer close requested";
          subject: "solana-program";
      }

      One per buffer whose close started.

    • Readonlyprogram.deploy.requested: {
          data: TObject<
              {
                  name: TString;
                  network: TUnion<[TLiteral<"devnet">, TLiteral<"mainnet">]>;
                  releaseTag: TString;
                  workflowId: TString;
              },
          >;
          description: "Program deploy requested";
          subject: "solana-program";
      }
    • Readonlyprogram.rentSweep.requested: {
          data: TObject<
              {
                  name: TString;
                  network: TUnion<[TLiteral<"devnet">, TLiteral<"mainnet">]>;
                  workflowId: TString;
              },
          >;
          description: "Program rent sweep requested";
          subject: "solana-program";
      }
    • Readonlyredemption.redemption.created: {
          data: TObject<{ id: TString }>;
          description: "Redemption created";
          subject: "redemption";
      }
    • Readonlyredemption.redemption.statusUpdated: {
          data: TObject<
              {
                  id: TString;
                  status: TUnion<
                      [
                          TLiteral<"PROCESSING">,
                          TLiteral<"COMPLETED">,
                          TLiteral<"FAILED">,
                          TLiteral<"RETURNED">,
                      ],
                  >;
              },
          >;
          description: "Redemption status changed";
          subject: "redemption";
      }
    • Readonlyslack.customerSlackBotChannel.created: {
          data: TObject<
              { customerSlackBotInstallationId: TString; name: TString },
          >;
          description: "Slack channel added";
          subject: "customer-slack-bot-channel";
      }

      A customer added the bot to a channel; name is the Slack channel id.

    • Readonlyslack.customerSlackBotChannel.deleted: {
          data: TObject<
              { customerSlackBotInstallationId: TString; name: TString },
          >;
          description: "Slack channel removed";
          subject: "customer-slack-bot-channel";
      }
    • Readonlyslack.customerSlackBotInstallation.created: {
          data: TObject<{ id: TString }>;
          description: "Slack connected";
          subject: "customer-slack-bot-installation";
      }
    • Readonlyslack.customerSlackBotInstallation.deleted: {
          data: TObject<{ id: TString }>;
          description: "Slack disconnected";
          subject: "customer-slack-bot-installation";
      }
    • Readonlyslack.internalSlackChannel.created: {
          data: TObject<{ name: TString }>;
          description: "Internal Slack channel added";
          subject: "internal-slack-channel";
      }

      The channel one internal feed posts to; name is the feed's label.

    • Readonlyslack.internalSlackChannel.deleted: {
          data: TObject<{ name: TString }>;
          description: "Internal Slack channel removed";
          subject: "internal-slack-channel";
      }
    • Readonlyslack.internalSlackChannel.updated: {
          data: TObject<{ name: TString }>;
          description: "Internal Slack channel changed";
          subject: "internal-slack-channel";
      }
    • Readonlyslack.slackBotInstallation.created: {
          data: TObject<{ id: TString }>;
          description: "CFX Slack bot installed";
          subject: "slack-bot-installation";
      }
    • Readonlyslack.slackBotInstallation.deleted: {
          data: TObject<{ id: TString }>;
          description: "CFX Slack bot uninstalled";
          subject: "slack-bot-installation";
      }
    • Readonlyslack.slackTemplate.activated: {
          data: TObject<
              {
                  name: TString;
                  previousVersion: TUnion<[TInteger, TNull]>;
                  version: TUnion<[TInteger, TNull]>;
              },
          >;
          description: "Slack template activated";
          subject: "slack-template";
      }
    • Readonlyslack.slackTemplate.disabled: {
          data: TObject<{ name: TString }>;
          description: "Slack template disabled";
          subject: "slack-template";
      }
    • Readonlyslack.slackTemplate.draftDiscarded: {
          data: TObject<
              {
                  name: TString;
                  previousVersion: TUnion<[TInteger, TNull]>;
                  version: TUnion<[TInteger, TNull]>;
              },
          >;
          description: "Slack template draft discarded";
          subject: "slack-template";
      }
    • Readonlyslack.slackTemplate.draftSaved: {
          data: TObject<
              {
                  name: TString;
                  previousVersion: TUnion<[TInteger, TNull]>;
                  version: TUnion<[TInteger, TNull]>;
              },
          >;
          description: "Slack template draft saved";
          subject: "slack-template";
      }
    • Readonlyslack.slackTemplate.enabled: {
          data: TObject<{ name: TString }>;
          description: "Slack template enabled";
          subject: "slack-template";
      }
    • Readonlyslack.slackTemplate.reset: {
          data: TObject<
              {
                  name: TString;
                  previousVersion: TUnion<[TInteger, TNull]>;
                  version: TUnion<[TInteger, TNull]>;
              },
          >;
          description: "Slack template reset to default";
          subject: "slack-template";
      }
    • Readonlyslack.slackTemplate.rolledBack: {
          data: TObject<
              {
                  name: TString;
                  previousVersion: TUnion<[TInteger, TNull]>;
                  version: TUnion<[TInteger, TNull]>;
              },
          >;
          description: "Slack template rolled back";
          subject: "slack-template";
      }
    • Readonlyslack.templateTest.requested: {
          data: TObject<
              {
                  sampleCase: TObject<
                      {
                          axes: TRecord<"^.*$", TString>;
                          optionalVariables: TUnion<[TLiteral<"present">, TLiteral<"absent">]>;
                      },
                  >;
                  templateId: TString;
                  version: TOptional<TInteger>;
              },
          >;
          description: "Slack template test posted";
          subject: "slack-template";
      }

      The admin template editor's test post, consumed by internal-slack-bot, which holds the token. It renders a saved version (or the default) of the slacktpl_… template with registry samples for sampleCase to the TEMPLATE_TEST feed's channel, whatever the template's audience: never a customer's. No field carries free text; closed, like the SMS request.

    • Readonlytoken.chain.created: {
          data: TObject<{ name: TString }>;
          description: "Chain created";
          subject: "chain";
      }
    • Readonlytoken.chain.deleted: {
          data: TObject<{ name: TString }>;
          description: "Chain deleted";
          subject: "chain";
      }
    • Readonlytoken.chain.updated: {
          data: TObject<{ name: TString }>;
          description: "Chain updated";
          subject: "chain";
      }
    • Readonlytoken.token.created: {
          data: TObject<{ name: TString }>;
          description: "Token created";
          subject: "token";
      }
    • Readonlytoken.token.deleted: {
          data: TObject<{ name: TString }>;
          description: "Token deleted";
          subject: "token";
      }
    • Readonlytoken.token.updated: {
          data: TObject<{ name: TString }>;
          description: "Token updated";
          subject: "token";
      }
    • Readonlytransaction.metadata.updated: {
          data: TObject<{ id: TString }>;
          description: "Transaction details updated";
          subject: "transaction";
      }
    • Readonlytransaction.metadataFile.created: {
          data: TObject<{ name: TString; transactionId: TString }>;
          description: "Transaction file attached";
          subject: "transaction-metadata-file";
      }
    • Readonlytransaction.metadataFile.deleted: {
          data: TObject<{ name: TString; transactionId: TString }>;
          description: "Transaction file deleted";
          subject: "transaction-metadata-file";
      }
    • Readonlytransaction.transaction.hidden: {
          data: TObject<{ transactionIds: TArray<TString> }>;
          description: "Transactions hidden";
          subject: "transaction-hide-group";
      }
    • Readonlytransaction.transaction.unhidden: {
          data: TObject<{ transactionIds: TArray<TString> }>;
          description: "Transactions unhidden";
          subject: "transaction-hide-group";
      }
    • Readonlytransaction.transaction.updated: {
          data: TObject<
              {
                  bankId: TOptional<TString>;
                  customerId: TString;
                  transactionIds: TArray<TString>;
              },
          >;
          description: "Transactions updated";
          subject: "customer-transactions";
      }
    • Readonlywithdrawal.positivePayDecision.decided: {
          data: TObject<
              {
                  status: TUnion<
                      [TLiteral<"PENDING">, TLiteral<"APPROVED">, TLiteral<"DENIED">],
                  >;
              },
          >;
          description: "Positive pay decision made";
          subject: "positive-pay-decision";
      }
    • Readonlywithdrawal.positivePayDecision.requestConfirmed: {
          data: TObject<
              {
                  status: TUnion<
                      [TLiteral<"PENDING">, TLiteral<"APPROVED">, TLiteral<"DENIED">],
                  >;
              },
          >;
          description: "Positive pay request confirmed";
          subject: "positive-pay-decision";
      }

      Ops confirmed the customer's requested decision.

    • Readonlywithdrawal.positivePayDecision.undone: {
          data: TObject<
              {
                  status: TUnion<
                      [TLiteral<"PENDING">, TLiteral<"APPROVED">, TLiteral<"DENIED">],
                  >;
              },
          >;
          description: "Positive pay decision undone";
          subject: "positive-pay-decision";
      }
    • Readonlywithdrawal.positivePayFile.resendRequested: {
          data: TObject<{ workflowId: TString }>;
          description: "Positive pay file resend requested";
          subject: "positive-pay-file";
      }

      A resend of one file; the subject is the file.

    • Readonlywithdrawal.positivePayFile.sendRequested: {
          data: TObject<{ businessDate: TString }>;
          description: "Positive pay file send requested";
          subject: "positive-pay-run";
      }

      An off-schedule send; the subject is its workflow id, since no file exists yet.

    • Readonlywithdrawal.withdrawal.statusUpdated: {
          data: TObject<
              {
                  id: TString;
                  status: TUnion<
                      [
                          TLiteral<"PROCESSING">,
                          TLiteral<"COMPLETED">,
                          TLiteral<"FAILED">,
                          TLiteral<"RETURNED">,
                      ],
                  >;
              },
          >;
          description: "Withdrawal status changed";
          subject: "withdrawal";
      }