@cfxlabsinc/b2b-services
    Preparing search index...
    SmsNotification:
        | EscrowSmsNotification
        | CustomerTeamSms<
            | "CUSTOMER_DEPOSIT_PENDING"
            | "CUSTOMER_DEPOSIT_COMPLETED"
            | "CUSTOMER_DEPOSIT_CANCELLED",
            { account: string; amount: string },
        >
        | CustomerTeamSms<
            | "CUSTOMER_WITHDRAWAL_PENDING"
            | "CUSTOMER_WITHDRAWAL_COMPLETED"
            | "CUSTOMER_WITHDRAWAL_RETURNED",
            { amount: string; recipientName: string },
        >
        | CustomerTeamSms<
            | "CUSTOMER_TRANSFER_PENDING"
            | "CUSTOMER_TRANSFER_COMPLETED"
            | "CUSTOMER_TRANSFER_CANCELLED",
            { amount: string; sourceAccount: string; targetAccount: string },
        >
        | CustomerTeamSms<
            | "CUSTOMER_CARD_TRANSACTION_PENDING"
            | "CUSTOMER_CARD_TRANSACTION_AUTHORIZED"
            | "CUSTOMER_CARD_TRANSACTION_COMPLETED"
            | "CUSTOMER_CARD_TRANSACTION_DECLINED",
            {
                amount: string;
                card: string;
                isReversal: boolean;
                merchantName: string;
            },
        >
        | CustomerTeamSms<
            | "CUSTOMER_IDENTITY_PENDING_VERIFICATION"
            | "CUSTOMER_IDENTITY_ACTIVE"
            | "CUSTOMER_IDENTITY_REVIEW"
            | "CUSTOMER_IDENTITY_DISABLED"
            | "CUSTOMER_IDENTITY_BLOCKED"
            | "CUSTOMER_ORGANIZATION_PENDING_VERIFICATION"
            | "CUSTOMER_ORGANIZATION_ACTIVE"
            | "CUSTOMER_ORGANIZATION_DISABLED"
            | "CUSTOMER_LEDGER_ACCOUNT_CREATED"
            | "CUSTOMER_PAYMENT_INSTRUMENT_PENDING_VERIFICATION"
            | "CUSTOMER_PAYMENT_INSTRUMENT_ACTIVE"
            | "CUSTOMER_PAYMENT_INSTRUMENT_BLOCKED",
            { name: string },
        >

    One customer-branded SMS payload, discriminated by template. Per template:

    Template Audience Fields beyond brandPrefix, amount
    ESCROW_RECIPIENT_NOTIFIED recipient senderName, isLargeAmount, message?, claimUrl
    ESCROW_CLAIMED sender claimerName
    ESCROW_CANCELLED recipient senderName
    ESCROW_REJECTED sender
    ESCROW_REQUEST_CREATED recipient senderName, isLargeAmount, message?, payUrl?
    ESCROW_REQUEST_PAID sender
    ESCROW_REQUEST_DECLINED sender
    ESCROW_REQUEST_CANCELLED recipient senderName

    Names are full names (templates uppercase them), amount is pre-formatted currency, isLargeAmount is the caller's amount > 5.00, and the URLs are already shortened.

    Customer-team texts go to the customer's own dashboard members. Each carries brandPrefix and dashboardUrl (the customer-dashboard deep link):

    Templates Fields beyond brandPrefix, dashboardUrl
    CUSTOMER_DEPOSIT_{PENDING,COMPLETED,CANCELLED} amount, account
    CUSTOMER_WITHDRAWAL_{PENDING,COMPLETED,RETURNED} amount, recipientName
    CUSTOMER_TRANSFER_{PENDING,COMPLETED,CANCELLED} amount, sourceAccount, targetAccount
    CUSTOMER_CARD_TRANSACTION_{PENDING,AUTHORIZED,COMPLETED,DECLINED} amount, card, merchantName, isReversal
    CUSTOMER_IDENTITY_{PENDING_VERIFICATION,ACTIVE,REVIEW,DISABLED,BLOCKED} name
    CUSTOMER_ORGANIZATION_{PENDING_VERIFICATION,ACTIVE,DISABLED} name
    CUSTOMER_LEDGER_ACCOUNT_CREATED name
    CUSTOMER_PAYMENT_INSTRUMENT_{PENDING_VERIFICATION,ACTIVE,BLOCKED} name

    account, card and the like are display labels the caller has already built (e.g. "card ending 4242").