@coinflowlabs/angular 1.4.0 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md
CHANGED
|
@@ -4,6 +4,14 @@ This library was generated with [Angular CLI](https://github.com/angular/angular
|
|
|
4
4
|
|
|
5
5
|
# Changelog
|
|
6
6
|
|
|
7
|
+
## 1.6.0
|
|
8
|
+
|
|
9
|
+
- New Blockchain Support: The SDK now supports Stellar, a fast and low-cost blockchain for payments. Pass blockchain='stellar' to enable Stellar payment processing.
|
|
10
|
+
|
|
11
|
+
## 1.5.0
|
|
12
|
+
|
|
13
|
+
- Added zeroAuthorizationConfig prop to CoinflowPurchase for controlling zero authorization behavior (show/hide saved payment methods, verify a specific card by token). Deprecates isZeroAuthorization boolean prop.
|
|
14
|
+
|
|
7
15
|
## 1.4.0
|
|
8
16
|
|
|
9
17
|
- New Blockchain Support: The SDK now supports Monad, a high-performance EVM-compatible blockchain. Pass blockchain='monad' to enable Monad payment processing.
|
|
@@ -31,6 +31,12 @@ var SettlementType;
|
|
|
31
31
|
SettlementType["USDC"] = "USDC";
|
|
32
32
|
SettlementType["Bank"] = "Bank";
|
|
33
33
|
})(SettlementType || (SettlementType = {}));
|
|
34
|
+
function isZeroAuthVerifyCard(config) {
|
|
35
|
+
return 'cardToken' in config;
|
|
36
|
+
}
|
|
37
|
+
function isZeroAuthSavedPaymentMethods(config) {
|
|
38
|
+
return 'disableSavedPaymentMethods' in config;
|
|
39
|
+
}
|
|
34
40
|
var MerchantStyle;
|
|
35
41
|
(function (MerchantStyle) {
|
|
36
42
|
MerchantStyle["Rounded"] = "rounded";
|
|
@@ -524,7 +530,7 @@ class CoinflowUtils {
|
|
|
524
530
|
return 'http://localhost:5000';
|
|
525
531
|
return `https://api-${env}.coinflow.cash`;
|
|
526
532
|
}
|
|
527
|
-
static getCoinflowUrl({ walletPubkey, sessionKey, route, routePrefix, env, subtotal, presentment, transaction, blockchain = 'solana', webhookInfo, email, loaderBackground, handleHeightChangeId, bankAccountLinkRedirect, additionalWallets, chargebackProtectionData, merchantCss, color, rent, lockDefaultToken, tokens, planCode, disableApplePay, disableGooglePay, customerInfo, settlementType, lockAmount, nativeSolToConvert, theme, usePermit, transactionSigner, authOnly, deviceId, jwtToken, origins, threeDsChallengePreference, supportEmail, destinationAuthKey, allowedPaymentMethods, accountFundingTransaction, partialUsdcChecked, redemptionCheck, allowedWithdrawSpeeds, isZeroAuthorization, baseUrl, }) {
|
|
533
|
+
static getCoinflowUrl({ walletPubkey, sessionKey, route, routePrefix, env, subtotal, presentment, transaction, blockchain = 'solana', webhookInfo, email, loaderBackground, handleHeightChangeId, bankAccountLinkRedirect, additionalWallets, chargebackProtectionData, merchantCss, color, rent, lockDefaultToken, tokens, planCode, disableApplePay, disableGooglePay, customerInfo, settlementType, lockAmount, nativeSolToConvert, theme, usePermit, transactionSigner, authOnly, deviceId, jwtToken, origins, threeDsChallengePreference, supportEmail, destinationAuthKey, allowedPaymentMethods, accountFundingTransaction, partialUsdcChecked, redemptionCheck, allowedWithdrawSpeeds, isZeroAuthorization, zeroAuthorizationConfig, baseUrl, }) {
|
|
528
534
|
const prefix = routePrefix
|
|
529
535
|
? `/${routePrefix}/${blockchain}`
|
|
530
536
|
: `/${blockchain}`;
|
|
@@ -619,8 +625,13 @@ class CoinflowUtils {
|
|
|
619
625
|
url.searchParams.append('transactionSigner', transactionSigner);
|
|
620
626
|
if (authOnly === true)
|
|
621
627
|
url.searchParams.append('authOnly', 'true');
|
|
622
|
-
|
|
628
|
+
// zeroAuthorizationConfig takes precedence over isZeroAuthorization
|
|
629
|
+
if (zeroAuthorizationConfig) {
|
|
630
|
+
url.searchParams.append('zeroAuthorizationConfig', JSON.stringify(zeroAuthorizationConfig));
|
|
631
|
+
}
|
|
632
|
+
else if (isZeroAuthorization === true) {
|
|
623
633
|
url.searchParams.append('isZeroAuthorization', 'true');
|
|
634
|
+
}
|
|
624
635
|
if (partialUsdcChecked === true)
|
|
625
636
|
url.searchParams.append('partialUsdcChecked', 'true');
|
|
626
637
|
if (jwtToken)
|
|
@@ -682,6 +693,15 @@ class CoinflowUtils {
|
|
|
682
693
|
const { transaction } = props;
|
|
683
694
|
return LZString.compressToEncodedURIComponent(JSON.stringify(transaction));
|
|
684
695
|
},
|
|
696
|
+
stellar: () => {
|
|
697
|
+
if (!('transaction' in props))
|
|
698
|
+
return undefined;
|
|
699
|
+
const { transaction } = props;
|
|
700
|
+
if (!transaction)
|
|
701
|
+
return undefined;
|
|
702
|
+
// Transaction is already base64 XDR string, pass through directly
|
|
703
|
+
return transaction;
|
|
704
|
+
},
|
|
685
705
|
monad: () => {
|
|
686
706
|
if (!('transaction' in props))
|
|
687
707
|
return undefined;
|
|
@@ -705,6 +725,8 @@ class CoinflowUtils {
|
|
|
705
725
|
return args.base;
|
|
706
726
|
case 'arbitrum':
|
|
707
727
|
return args.arbitrum;
|
|
728
|
+
case 'stellar':
|
|
729
|
+
return args.stellar;
|
|
708
730
|
case 'monad':
|
|
709
731
|
return args.monad;
|
|
710
732
|
case 'user':
|
|
@@ -866,6 +888,11 @@ function getHandlers(props) {
|
|
|
866
888
|
onSuccess: props.onSuccess,
|
|
867
889
|
onAuthDeclined: props.onAuthDeclined,
|
|
868
890
|
}),
|
|
891
|
+
stellar: () => getStellarWalletHandlers({
|
|
892
|
+
wallet: wallet,
|
|
893
|
+
onSuccess: props.onSuccess,
|
|
894
|
+
onAuthDeclined: props.onAuthDeclined,
|
|
895
|
+
}),
|
|
869
896
|
monad: () => getEvmWalletHandlers({
|
|
870
897
|
wallet: wallet,
|
|
871
898
|
onSuccess: props.onSuccess,
|
|
@@ -933,6 +960,31 @@ function getEvmWalletHandlers({ wallet, onSuccess, onAuthDeclined, }) {
|
|
|
933
960
|
onAuthDeclined,
|
|
934
961
|
};
|
|
935
962
|
}
|
|
963
|
+
function getStellarWalletHandlers({ wallet, onSuccess, onAuthDeclined, }) {
|
|
964
|
+
return {
|
|
965
|
+
handleSendTransaction: async (transaction) => {
|
|
966
|
+
// transaction is unsigned base64 XDR
|
|
967
|
+
// dapp needs to handle sending and confirming
|
|
968
|
+
throw new Error(`sendTransaction is not supported on stellar, error when sending: ${transaction}`);
|
|
969
|
+
},
|
|
970
|
+
handleSignMessage: async (message) => {
|
|
971
|
+
if (!wallet.signMessage) {
|
|
972
|
+
throw new Error('signMessage is not supported by this wallet');
|
|
973
|
+
}
|
|
974
|
+
// Returns base64-encoded signature
|
|
975
|
+
return await wallet.signMessage(message);
|
|
976
|
+
},
|
|
977
|
+
handleSignTransaction: async (transaction) => {
|
|
978
|
+
if (!wallet.signTransaction) {
|
|
979
|
+
throw new Error('signTransaction is not supported by this wallet');
|
|
980
|
+
}
|
|
981
|
+
// Returns signed base64 XDR
|
|
982
|
+
return await wallet.signTransaction(transaction);
|
|
983
|
+
},
|
|
984
|
+
onSuccess,
|
|
985
|
+
onAuthDeclined,
|
|
986
|
+
};
|
|
987
|
+
}
|
|
936
988
|
function getSessionKeyHandlers({ onSuccess, onAuthDeclined, }) {
|
|
937
989
|
return {
|
|
938
990
|
handleSendTransaction: async () => {
|
|
@@ -1973,5 +2025,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImpor
|
|
|
1973
2025
|
* Generated bundle index. Do not edit.
|
|
1974
2026
|
*/
|
|
1975
2027
|
|
|
1976
|
-
export { BankingCurrencies, CARD_TYPE_MAPPING, CardType, CoinflowApplePayButtonComponent, CoinflowCardNumberInput, CoinflowCardNumberOnlyInput, CoinflowCvvInputComponent, CoinflowCvvOnlyInputComponent, CoinflowGooglePayButtonComponent, CoinflowIFrameComponent, CoinflowPurchaseComponent, CoinflowPurchaseHistoryComponent, CoinflowPurchaseProtectionComponent, CoinflowUtils, CoinflowWithdrawComponent, CoinflowWithdrawHistoryComponent, Currency, CurrencyToISO4217, EventBus, IFrameMessageMethods, MerchantStyle, PaymentMethods, RN_REDIRECT_MESSAGE_NAME, SettlementType, ThreeDsChallengePreference, TokenExCardNumberIframeId, TokenExCvvContainerID, WithdrawCategory, WithdrawCurrencies, WithdrawSpeed, doInitializeCvvOnlyTokenExIframe, doInitializeTokenExCardOnlyIframe, doInitializeTokenExIframe, getCurrencyDecimals, getCustomerName, getHandlers, getIframeConfig, getWalletPubkey, handleIFrameMessage, isBankingCurrency, isTypedCurrencyCents, isWithdrawCurrency, nftCartItem, paymentMethodLabels, setTokenExScriptTag };
|
|
2028
|
+
export { BankingCurrencies, CARD_TYPE_MAPPING, CardType, CoinflowApplePayButtonComponent, CoinflowCardNumberInput, CoinflowCardNumberOnlyInput, CoinflowCvvInputComponent, CoinflowCvvOnlyInputComponent, CoinflowGooglePayButtonComponent, CoinflowIFrameComponent, CoinflowPurchaseComponent, CoinflowPurchaseHistoryComponent, CoinflowPurchaseProtectionComponent, CoinflowUtils, CoinflowWithdrawComponent, CoinflowWithdrawHistoryComponent, Currency, CurrencyToISO4217, EventBus, IFrameMessageMethods, MerchantStyle, PaymentMethods, RN_REDIRECT_MESSAGE_NAME, SettlementType, ThreeDsChallengePreference, TokenExCardNumberIframeId, TokenExCvvContainerID, WithdrawCategory, WithdrawCurrencies, WithdrawSpeed, doInitializeCvvOnlyTokenExIframe, doInitializeTokenExCardOnlyIframe, doInitializeTokenExIframe, getCurrencyDecimals, getCustomerName, getHandlers, getIframeConfig, getWalletPubkey, handleIFrameMessage, isBankingCurrency, isTypedCurrencyCents, isWithdrawCurrency, isZeroAuthSavedPaymentMethods, isZeroAuthVerifyCard, nftCartItem, paymentMethodLabels, setTokenExScriptTag };
|
|
1977
2029
|
//# sourceMappingURL=coinflowlabs-angular.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coinflowlabs-angular.mjs","sources":["../../../projects/coinflowlabs/src/lib/common/CoinflowTypes.ts","../../../projects/coinflowlabs/src/lib/common/SolanaPeerDeps.ts","../../../projects/coinflowlabs/src/lib/common/types/Subtotal.ts","../../../projects/coinflowlabs/src/lib/common/NSure.ts","../../../projects/coinflowlabs/src/lib/common/CoinflowUtils.ts","../../../projects/coinflowlabs/src/lib/common/CoinflowLibMessageHandlers.ts","../../../projects/coinflowlabs/src/lib/common/EventBus.ts","../../../projects/coinflowlabs/src/lib/common/card-form/TokenEx.ts","../../../projects/coinflowlabs/src/lib/common/card-form/tokenexHelpers.ts","../../../projects/coinflowlabs/src/lib/common/types/nftCartItem.ts","../../../projects/coinflowlabs/src/lib/coinflow-iframe.component.ts","../../../projects/coinflowlabs/src/lib/coinflow-purchase.component.ts","../../../projects/coinflowlabs/src/lib/coinflow-purchase-history.component.ts","../../../projects/coinflowlabs/src/lib/coinflow-purchase-protection.component.ts","../../../projects/coinflowlabs/src/lib/coinflow-withdraw.component.ts","../../../projects/coinflowlabs/src/lib/coinflow-withdraw-history.component.ts","../../../projects/coinflowlabs/src/lib/card-form/CardFormService.ts","../../../projects/coinflowlabs/src/lib/card-form/coinflow-card-number-input.component.ts","../../../projects/coinflowlabs/src/lib/card-form/coinflow-card-number-only-input.component.ts","../../../projects/coinflowlabs/src/lib/card-form/coinflow-cvv-input.component.ts","../../../projects/coinflowlabs/src/lib/card-form/coinflow-cvv-only-input.component.ts","../../../projects/coinflowlabs/src/lib/mobile-wallet/coinflow-mobile-wallet-button.component.ts","../../../projects/coinflowlabs/src/lib/mobile-wallet/coinflow-apple-pay-button.component.ts","../../../projects/coinflowlabs/src/lib/mobile-wallet/google-pay-overlay.component.ts","../../../projects/coinflowlabs/src/lib/mobile-wallet/coinflow-google-pay-button.component.ts","../../../projects/coinflowlabs/src/public-api.ts","../../../projects/coinflowlabs/src/coinflowlabs-angular.ts"],"sourcesContent":["import type {\n Connection,\n VersionedTransaction,\n PublicKey,\n Signer,\n Transaction,\n} from '@solana/web3.js';\nimport {Currency, Subtotal} from './types/Subtotal';\nimport {GiftCardCartItem} from './types/giftCardCartItem';\nimport {nftCartItem} from './types/nftCartItem';\nimport {CryptoCartItem} from './types/cryptoCartItem';\nimport {MoneyTopUpCartItem} from './types/moneyTopUpCartItem';\n\nexport enum WithdrawCategory {\n USER = 'user',\n BUSINESS = 'business',\n}\n\nexport enum WithdrawSpeed {\n ASAP = 'asap',\n SAME_DAY = 'same_day',\n STANDARD = 'standard',\n CARD = 'card',\n IBAN = 'iban',\n PIX = 'pix',\n EFT = 'eft',\n VENMO = 'venmo',\n PAYPAL = 'paypal',\n WIRE = 'wire',\n INTERAC = 'interac',\n}\n\nexport enum SettlementType {\n Credits = 'Credits',\n USDC = 'USDC',\n Bank = 'Bank', // Deprecated, is the same as USDC\n}\n\nexport enum MerchantStyle {\n Rounded = 'rounded',\n Sharp = 'sharp',\n Pill = 'pill',\n}\n\nexport type MerchantTheme = {\n primary?: string;\n background?: string;\n backgroundAccent?: string;\n backgroundAccent2?: string;\n textColor?: string;\n textColorAccent?: string;\n textColorAction?: string;\n ctaColor?: string;\n font?: string;\n style?: MerchantStyle;\n};\n\ninterface BaseCustomerInfo {\n verificationId?: string;\n displayName?: string;\n address?: string;\n city?: string;\n state?: string;\n zip?: string;\n country?: string;\n ip?: string;\n lat?: string;\n lng?: string;\n /**\n * Date of birth in YYYY-MM-DD format\n */\n dob?: string;\n email?: string;\n}\n\nexport interface NameCustomerInfo extends BaseCustomerInfo {\n /**\n * @hidden\n */\n name?: string;\n}\n\nexport interface SplitNameCustomerInfo extends BaseCustomerInfo {\n /**\n * @minLength 1\n */\n firstName: string;\n /**\n * @minLength 1\n */\n lastName: string;\n}\n\nexport type CustomerInfo = SplitNameCustomerInfo | NameCustomerInfo;\n\n/** Coinflow Types **/\nexport type CoinflowBlockchain =\n | 'solana'\n | 'eth'\n | 'polygon'\n | 'base'\n | 'arbitrum'\n | 'monad'\n | 'user';\nexport type CoinflowEnvs =\n | 'prod'\n | 'staging'\n | 'staging-live'\n | 'sandbox'\n | 'local';\n\nexport interface CoinflowTypes {\n merchantId: string;\n env?: CoinflowEnvs;\n loaderBackground?: string;\n blockchain?: CoinflowBlockchain | undefined;\n handleHeightChange?: (height: string) => void;\n theme?: MerchantTheme;\n}\n\nexport type PartialBy<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;\n\nexport type MergeWithOptionalDiff<A, B> =\n // shared fields (required)\n Pick<A, Extract<keyof A, keyof B>> &\n Pick<B, Extract<keyof B, keyof A>> &\n // A-only fields (optional)\n Partial<Omit<A, keyof B>> &\n // B-only fields (optional)\n Partial<Omit<B, keyof A>>;\n\nexport type OnSuccessMethod = (\n args:\n | {\n paymentId: string;\n hash?: string | undefined;\n }\n | string\n) => void | Promise<void>;\n\nexport type AuthDeclinedWalletCallInfo = {\n title: string;\n code: string;\n action: string;\n message: string;\n total: string;\n};\n\nexport type OnAuthDeclinedMethod = (\n args: AuthDeclinedWalletCallInfo\n) => void | Promise<void>;\n\n/** Wallets **/\nexport interface SolanaWallet {\n publicKey: PublicKey | null;\n signTransaction?: <T extends Transaction | VersionedTransaction>(\n transaction: T\n ) => Promise<T>;\n sendTransaction: <T extends Transaction | VersionedTransaction>(\n transaction: T\n ) => Promise<string>;\n signMessage?: (message: Uint8Array) => Promise<Uint8Array>;\n}\n\ntype AccessList = Array<{address: string; storageKeys: Array<string>}>;\ntype AccessListish =\n | AccessList\n | Array<[string, Array<string>]>\n | Record<string, Array<string>>;\n\nexport type EthWallet = {\n address: string | null | undefined;\n sendTransaction: (transaction: {\n to: string;\n from?: string;\n nonce?: Bytes | bigint | string | number;\n\n gasLimit?: Bytes | bigint | string | number;\n gasPrice?: Bytes | bigint | string | number;\n\n data?: BytesLike;\n value?: Bytes | bigint | string | number;\n chainId?: number;\n\n type?: number;\n accessList?: AccessListish;\n\n maxPriorityFeePerGas?: Bytes | bigint | string | number;\n maxFeePerGas?: Bytes | bigint | string | number;\n\n customData?: Record<string, any>;\n ccipReadEnabled?: boolean;\n }) => Promise<{hash: string}>;\n signMessage: (message: string) => Promise<string>;\n};\n\n/** History **/\nexport interface CoinflowSolanaHistoryProps extends CoinflowTypes {\n wallet: SolanaWallet;\n connection: Connection;\n blockchain: 'solana';\n}\n\nexport interface CoinflowSessionKeyHistoryProps extends CoinflowTypes {\n sessionKey: string;\n blockchain?: undefined;\n}\n\nexport interface CoinflowEvmHistoryProps extends CoinflowTypes {\n wallet: EthWallet;\n blockchain: 'eth' | 'polygon' | 'base' | 'arbitrum' | 'monad';\n}\n\nexport interface CoinflowEthHistoryProps extends CoinflowEvmHistoryProps {\n blockchain: 'eth';\n}\n\nexport interface CoinflowPolygonHistoryProps extends CoinflowEvmHistoryProps {\n blockchain: 'polygon';\n}\n\nexport interface CoinflowBaseHistoryProps extends CoinflowEvmHistoryProps {\n blockchain: 'base';\n}\n\nexport interface CoinflowArbitrumHistoryProps extends CoinflowEvmHistoryProps {\n blockchain: 'arbitrum';\n}\n\nexport interface CoinflowMonadHistoryProps extends CoinflowEvmHistoryProps {\n blockchain: 'monad';\n}\n\nexport type CoinflowHistoryProps =\n | CoinflowSolanaHistoryProps\n | CoinflowPolygonHistoryProps\n | CoinflowEthHistoryProps\n | CoinflowBaseHistoryProps\n | CoinflowArbitrumHistoryProps\n | CoinflowMonadHistoryProps\n | CoinflowSessionKeyHistoryProps;\n\ntype Bytes = ArrayLike<number>;\ntype BytesLike = Bytes | string;\n\n/** Purchase **/\n\nexport type CartClassOmitted = CartItemClassOmitted[];\nexport type ChargebackProtectionData = CartClassOmitted;\n\nexport type CartItemClassOmitted =\n | NftCartItemClassOmitted\n | Omit<GiftCardCartItem, 'listPrice'>\n | CryptoCartItem\n | MoneyTopUpCartItem;\nexport type ChargebackProtectionItem = CartItemClassOmitted;\n\nexport type NftCartItemClassOmitted = Omit<\n nftCartItem,\n 'sellingPrice' | 'itemClass'\n>;\n\nexport type Cart = CartItem[];\nexport type CartItem =\n | Omit<nftCartItem, 'listPrice' | 'sellingPrice'>\n | Omit<GiftCardCartItem, 'listPrice'>\n | CryptoCartItem\n | MoneyTopUpCartItem;\n\nexport enum ThreeDsChallengePreference {\n NoPreference = 'NoPreference',\n Frictionless = 'Frictionless',\n Challenge = 'Challenge',\n}\n\nexport enum PaymentMethods {\n card = 'card',\n ach = 'ach',\n fasterPayments = 'fasterPayments',\n sepa = 'sepa',\n pix = 'pix',\n usdc = 'usdc',\n googlePay = 'googlePay',\n applePay = 'applePay',\n credits = 'credits',\n crypto = 'crypto',\n instantBankTransfer = 'instantBankTransfer',\n wire = 'wire',\n}\n\nexport const paymentMethodLabels: Record<PaymentMethods, string> = {\n [PaymentMethods.card]: 'Card',\n [PaymentMethods.ach]: 'ACH',\n [PaymentMethods.fasterPayments]: 'Faster Payments',\n [PaymentMethods.sepa]: 'SEPA',\n [PaymentMethods.pix]: 'PIX',\n [PaymentMethods.usdc]: 'USDC',\n [PaymentMethods.googlePay]: 'Google Pay',\n [PaymentMethods.applePay]: 'Apple Pay',\n [PaymentMethods.credits]: 'Credits',\n [PaymentMethods.crypto]: 'Crypto',\n [PaymentMethods.instantBankTransfer]: 'Instant Bank Transfer',\n [PaymentMethods.wire]: 'Wire Transfer',\n};\n\nexport interface CoinflowCommonPurchaseProps extends CoinflowTypes {\n subtotal?: Subtotal;\n presentment?: Currency;\n onSuccess?: OnSuccessMethod;\n onAuthDeclined?: OnAuthDeclinedMethod;\n webhookInfo?: {\n [key: string]: any;\n };\n email?: string;\n chargebackProtectionData?: ChargebackProtectionData;\n planCode?: string;\n /**\n * The payment methods displayed on the UI. If omitted, all available payment methods will be displayed.\n */\n allowedPaymentMethods?: PaymentMethods[];\n customerInfo?: CustomerInfo;\n settlementType?: SettlementType;\n authOnly?: boolean;\n isZeroAuthorization?: boolean;\n /**\n * If true, pre-checks the partial USDC payment checkbox when USDC balance is available.\n * If false or undefined, maintains default behavior (unchecked).\n */\n partialUsdcChecked?: boolean;\n /**\n * The DeviceID gotten from the Coinflow SDK:\n * https://docs.coinflow.cash/guides/checkout/fraud-protection/chargeback-protection/implement-chargeback-protection#how-to-add-chargeback-protection\n *\n * nSureSDK.getDeviceId()\n */\n deviceId?: string;\n jwtToken?: string;\n /**\n * Your company email address that the customer can contact.\n */\n supportEmail?: string;\n /**\n * If rendering the Coinflow component within multiple nested iframes, all ancestors in the chain must be provided as a comma-separated list.\n *\n * Example:\n * Primary origin that will be interacting with the Coinflow iFrame: foo.com\n * Subsequent origins that will render foo.com: bar.com\n * The origin array would then be: [https://foo.com,https://bar.com]\n */\n origins?: string[];\n threeDsChallengePreference?: ThreeDsChallengePreference;\n destinationAuthKey?: string;\n accountFundingTransaction?: AccountFundingTransaction;\n}\n\n/**\n * Used for Account Funding Transactions\n */\nexport interface AccountFundingTransaction {\n /**\n * Recipient information for Account Funding Transactions (AFT).\n * Required when AFT is enabled and type requires it.\n */\n recipientAftInfo?: RecipientAftInfo;\n}\n\nexport interface CoinflowSolanaPurchaseProps extends CoinflowCommonPurchaseProps {\n wallet: SolanaWallet;\n transaction?: Transaction | VersionedTransaction;\n partialSigners?: Signer[];\n debugTx?: boolean;\n connection: Connection;\n blockchain: 'solana';\n rent?: {lamports: string | number};\n nativeSolToConvert?: {lamports: string | number};\n redemptionCheck?: boolean;\n}\n\nexport interface CoinflowSessionKeyPurchaseProps extends CoinflowCommonPurchaseProps {\n sessionKey: string;\n wallet?: undefined;\n blockchain?: CoinflowBlockchain | undefined;\n}\n\nexport interface CoinflowEvmPurchaseProps extends CoinflowCommonPurchaseProps {\n transaction?: EvmTransactionData;\n wallet: EthWallet;\n}\n\nexport interface CoinflowPolygonPurchaseProps extends CoinflowEvmPurchaseProps {\n blockchain: 'polygon';\n}\n\nexport interface CoinflowEthPurchaseProps extends CoinflowEvmPurchaseProps {\n blockchain: 'eth';\n}\n\nexport interface CoinflowBasePurchaseProps extends CoinflowEvmPurchaseProps {\n blockchain: 'base';\n}\n\nexport interface CoinflowArbitrumPurchaseProps extends CoinflowEvmPurchaseProps {\n blockchain: 'arbitrum';\n}\n\nexport interface CoinflowMonadPurchaseProps extends CoinflowEvmPurchaseProps {\n blockchain: 'monad';\n}\n\nexport type CoinflowPurchaseProps =\n | CoinflowSolanaPurchaseProps\n | CoinflowSessionKeyPurchaseProps\n | CoinflowPolygonPurchaseProps\n | CoinflowEthPurchaseProps\n | CoinflowBasePurchaseProps\n | CoinflowArbitrumPurchaseProps\n | CoinflowMonadPurchaseProps;\n\n/** Withdraw **/\n\nexport interface CoinflowCommonWithdrawProps extends CoinflowTypes {\n onSuccess?: OnSuccessMethod;\n tokens?: string[];\n lockDefaultToken?: boolean;\n amount?: number;\n email?: string;\n bankAccountLinkRedirect?: string;\n additionalWallets?: {\n wallet: string;\n blockchain: 'solana' | 'eth' | 'polygon' | 'base' | 'arbitrum' | 'monad';\n }[];\n lockAmount?: boolean;\n transactionSigner?: string;\n /**\n * If rendering the Coinflow component within multiple nested iframes, all ancestors in the chain must be provided as a comma-separated list.\n *\n * Example:\n * Primary origin that will be interacting with the Coinflow iFrame: foo.com\n * Subsequent origins that will render foo.com: bar.com\n * The origin array would then be: [https://foo.com,https://bar.com]\n */\n origins?: string[];\n /**\n * If the withdrawer is authenticated with a sessionKey pass it here.\n */\n sessionKey?: string;\n /**\n * Array of allowed withdrawal speeds. If not provided, all speeds are allowed.\n */\n allowedWithdrawSpeeds?: WithdrawSpeed[];\n}\n\nexport type WalletTypes = SolanaWallet | EthWallet;\n\nexport interface SolanaWalletProps {\n wallet: SolanaWallet;\n connection: Connection;\n blockchain: 'solana';\n}\n\nexport type CoinflowSolanaWithdrawProps = CoinflowCommonWithdrawProps &\n SolanaWalletProps;\n\ninterface EvmWalletProps {\n wallet: EthWallet;\n usePermit?: boolean;\n}\n\ntype CoinflowEvmWithdrawProps = CoinflowCommonWithdrawProps & EvmWalletProps;\n\nexport interface EthWalletProps {\n blockchain: 'eth';\n}\n\nexport type CoinflowEthWithdrawProps = CoinflowEvmWithdrawProps &\n EthWalletProps;\n\nexport interface PolygonWalletProps {\n blockchain: 'polygon';\n}\n\nexport type CoinflowPolygonWithdrawProps = CoinflowEvmWithdrawProps &\n PolygonWalletProps;\n\nexport interface BaseWalletProps {\n blockchain: 'base';\n}\n\nexport type CoinflowBaseWithdrawProps = CoinflowEvmWithdrawProps &\n BaseWalletProps;\n\nexport interface ArbitrumWalletProps {\n blockchain: 'arbitrum';\n}\n\nexport type CoinflowArbitrumWithdrawProps = CoinflowEvmWithdrawProps &\n ArbitrumWalletProps;\n\nexport interface MonadWalletProps {\n blockchain: 'monad';\n}\n\nexport type CoinflowMonadWithdrawProps = CoinflowEvmWithdrawProps &\n MonadWalletProps;\n\nexport type CoinflowWithdrawProps =\n | CoinflowSolanaWithdrawProps\n | CoinflowEthWithdrawProps\n | CoinflowPolygonWithdrawProps\n | CoinflowBaseWithdrawProps\n | CoinflowArbitrumWithdrawProps\n | CoinflowMonadWithdrawProps;\n\nexport interface CommonEvmRedeem {\n /**\n * Whether the UI should wait\n * for the transaction to be sent and\n * the hash to be returned.\n */\n waitForHash?: boolean;\n}\n\n/**\n * (EVM only) If your contract sends the item/service being purchased via a custom \"receiver\" field, then utilize this object.\n *\n * The coinflow contract calls the \"to\" contract, which transfers the NFT/item to the \"receiver\" address defined in the contract function arguments.\n */\nexport interface NormalRedeem extends CommonEvmRedeem {\n /**\n * Transaction to be called.\n */\n transaction: {\n /**\n * The merchant's whitelisted contract\n */\n to: string;\n /**\n * The data to call this contract with, HEX encoded.\n *\n * The coinflow contract calls the \"to\" contract, contract pulls USDC from msg.sender, and transfers the NFT/item to the \"receiver\" address defined in the contract function arguments.\n */\n data: string;\n };\n}\n\n/**\n * (EVM only) If your know the ID of the NFT being purchased, then utilize this object.\n *\n * The contract transfers the NFT to msg.sender (which is the Coinflow contract), the Coinflow contract fwd's the NFT to the end user's wallet.\n */\nexport interface KnownTokenIdRedeem extends NormalRedeem {\n /**\n * The address of the Nft's Contract\n *\n * @minLength 42 Please provide a valid EVM Address (42 Characters Long)\n * @maxLength 42 Please provide a valid EVM Address (42 Characters Long)\n */\n nftContract: string;\n /**\n * The ID of the NFT being purchased. Will be forwarded by the Coinflow contract to the customer's wallet.\n *\n * @minLength 1 Please provide a valid Nft Id\n */\n nftId: string;\n}\n\n/**\n * (EVM only) If your contract mints an NFT via a OpenZeppelin Safe Mint Call, then utilize this object.\n *\n * The contract mints the NFT to msg.sender (which is the Coinflow contract), the Coinflow contract picks up the SafeMint event, and fwd's the NFT to the end user's wallet.\n */\nexport interface SafeMintRedeem extends NormalRedeem {\n type: 'safeMint';\n nftContract?: string;\n}\n\n/**\n * (EVM only) If your contract returns the NFT ID, then utilize this object.\n *\n * The contract mints the NFT to msg.sender (which is the Coinflow contract), the Coinflow contract picks up the returned NFT ID, and fwd's the NFT to the end user's wallet.\n */\nexport interface ReturnedTokenIdRedeem extends NormalRedeem {\n type: 'returned';\n nftContract?: string;\n}\n\nexport interface TokenRedeem extends CommonEvmRedeem {\n type: 'token';\n destination: string;\n}\n\n/**\n * If your contract exists on a chain supported by Decent, pass this object in order to call it.\n */\nexport interface DecentRedeem extends CommonEvmRedeem {\n type: 'decent';\n /**\n * ID of the destination chain you will be using\n * Find your chain ID here: https://chainlist.org/\n */\n dstChainId: number;\n /**\n * Address on that chain of the token you will be receiving\n */\n dstToken: string;\n /**\n * The contract address which will be called on the destination chain\n */\n contractAddress: string;\n contractData: string;\n /**\n * Amount of the token on the destination chain you will be receiving\n */\n cost: {\n /**\n * This is the raw amount of the token\n * ex: 50000000000000n\n */\n amount: string;\n /**\n * Whether or not the token is the native token for the chain (ex: Ethereum - ETH, Polygon - POL).\n * If native dstToken should be the 0 address (0x00...)\n */\n isNative: boolean;\n };\n}\n\n/**\n * (EVM only) if you want to execute an EVM transaction on a successful purchase, you can pass a transaction request here.\n *\n * Gas fees for the transaction will be automatically calculated and added to the total charged to the customer. Optionally the merchant can opt to pay for these gas fees.\n */\nexport type EvmTransactionData =\n | SafeMintRedeem\n | ReturnedTokenIdRedeem\n | KnownTokenIdRedeem\n | NormalRedeem\n | TokenRedeem\n | DecentRedeem;\n\nexport interface CoinflowIFrameProps\n extends\n Omit<CoinflowTypes, 'merchantId' | 'handleHeightChange'>,\n Pick<\n CoinflowCommonPurchaseProps,\n | 'chargebackProtectionData'\n | 'webhookInfo'\n | 'subtotal'\n | 'presentment'\n | 'customerInfo'\n | 'settlementType'\n | 'email'\n | 'planCode'\n | 'deviceId'\n | 'jwtToken'\n | 'origins'\n | 'threeDsChallengePreference'\n | 'supportEmail'\n | 'allowedPaymentMethods'\n | 'accountFundingTransaction'\n | 'partialUsdcChecked'\n | 'isZeroAuthorization'\n >,\n Pick<\n CoinflowCommonWithdrawProps,\n | 'bankAccountLinkRedirect'\n | 'additionalWallets'\n | 'transactionSigner'\n | 'lockAmount'\n | 'lockDefaultToken'\n | 'origins'\n | 'allowedWithdrawSpeeds'\n >,\n Pick<CoinflowEvmPurchaseProps, 'authOnly'>,\n Pick<\n CoinflowSolanaPurchaseProps,\n 'rent' | 'nativeSolToConvert' | 'destinationAuthKey' | 'redemptionCheck'\n > {\n walletPubkey: string | null | undefined;\n sessionKey?: string;\n route: string;\n routePrefix?: string;\n transaction?: string;\n tokens?: string[] | PublicKey[];\n merchantCss?: string;\n color?: 'white' | 'black';\n disableApplePay?: boolean;\n disableGooglePay?: boolean;\n theme?: MerchantTheme;\n usePermit?: boolean;\n handleHeightChangeId: string | number;\n}\n\nexport enum CardType {\n VISA = 'VISA',\n MASTERCARD = 'MSTR',\n AMEX = 'AMEX',\n DISCOVER = 'DISC',\n}\n\nexport interface RecipientAftInfo {\n /**\n * @minLength 2\n */\n firstName: string;\n /**\n * @minLength 2\n */\n lastName: string;\n /**\n * @minLength 2\n */\n address1: string;\n /**\n * @minLength 2\n */\n city: string;\n /**\n * @minLength 2\n */\n postalCode: string;\n /**\n * @minLength 2\n */\n state?: string;\n /**\n * @minLength 2\n * @maxLength 2\n */\n countryCode: string;\n /**\n * Recipients Date Of Birth in YYYMMDD format.\n * @pattern ^\\d{8}$\n */\n dateOfBirth?: string;\n /**\n * @pattern ^\\d+$\n */\n phoneNumber?: string;\n documentReference?: string;\n}\n\nexport const RN_REDIRECT_MESSAGE_NAME = 'rnredirect'; // DO NOT CHANGE\n","// This works in angular, but not react\n// let web3: typeof import('@solana/web3.js') | undefined;\n// let base58: typeof import('bs58') | undefined;\n//\n// try {\n// web3 = require('@solana/web3.js');\n// base58 = require('bs58');\n// } catch (e) {}\n//\n// export {web3, base58};\n\n// This works in react, but not angular\nimport * as SolanaWeb3Js from '@solana/web3.js';\nimport base58Imported from 'bs58';\n\nconst web3: typeof SolanaWeb3Js | undefined = SolanaWeb3Js;\nconst base58: typeof base58Imported | undefined = base58Imported;\nexport {web3, base58};\n","export enum Currency {\n USD = 'USD',\n AED = 'AED',\n AFN = 'AFN',\n ALL = 'ALL',\n AMD = 'AMD',\n ANG = 'ANG',\n AOA = 'AOA',\n ARS = 'ARS',\n AUD = 'AUD',\n AWG = 'AWG',\n AZN = 'AZN',\n BAM = 'BAM',\n BBD = 'BBD',\n BDT = 'BDT',\n BGN = 'BGN',\n BHD = 'BHD',\n BIF = 'BIF',\n BMD = 'BMD',\n BND = 'BND',\n BOB = 'BOB',\n BRL = 'BRL',\n BSD = 'BSD',\n BTN = 'BTN',\n BWP = 'BWP',\n BYN = 'BYN',\n BZD = 'BZD',\n CAD = 'CAD',\n CHF = 'CHF',\n CLF = 'CLF',\n CLP = 'CLP',\n CNY = 'CNY',\n COP = 'COP',\n CRC = 'CRC',\n CUP = 'CUP',\n CVE = 'CVE',\n CZK = 'CZK',\n DJF = 'DJF',\n DKK = 'DKK',\n DOP = 'DOP',\n DZD = 'DZD',\n EGP = 'EGP',\n ETB = 'ETB',\n EUR = 'EUR',\n FJD = 'FJD',\n GBP = 'GBP',\n GEL = 'GEL',\n GHS = 'GHS',\n GMD = 'GMD',\n GNF = 'GNF',\n GTQ = 'GTQ',\n GYD = 'GYD',\n HKD = 'HKD',\n HNL = 'HNL',\n HTG = 'HTG',\n HUF = 'HUF',\n IDR = 'IDR',\n ILS = 'ILS',\n INR = 'INR',\n IQD = 'IQD',\n IRR = 'IRR',\n ISK = 'ISK',\n JMD = 'JMD',\n JOD = 'JOD',\n JPY = 'JPY',\n KES = 'KES',\n KGS = 'KGS',\n KHR = 'KHR',\n KMF = 'KMF',\n KRW = 'KRW',\n KWD = 'KWD',\n KYD = 'KYD',\n KZT = 'KZT',\n LAK = 'LAK',\n LBP = 'LBP',\n LKR = 'LKR',\n LRD = 'LRD',\n LSL = 'LSL',\n LYD = 'LYD',\n MAD = 'MAD',\n MDL = 'MDL',\n MGA = 'MGA',\n MKD = 'MKD',\n MMK = 'MMK',\n MNT = 'MNT',\n MOP = 'MOP',\n MRU = 'MRU',\n MUR = 'MUR',\n MWK = 'MWK',\n MVR = 'MVR',\n MXN = 'MXN',\n MYR = 'MYR',\n MZN = 'MZN',\n NAD = 'NAD',\n NGN = 'NGN',\n NIO = 'NIO',\n NOK = 'NOK',\n NPR = 'NPR',\n NZD = 'NZD',\n OMR = 'OMR',\n PAB = 'PAB',\n PEN = 'PEN',\n PGK = 'PGK',\n PHP = 'PHP',\n PKR = 'PKR',\n PLN = 'PLN',\n PYG = 'PYG',\n QAR = 'QAR',\n RON = 'RON',\n RSD = 'RSD',\n RWF = 'RWF',\n SAR = 'SAR',\n SCR = 'SCR',\n SDG = 'SDG',\n SEK = 'SEK',\n SGD = 'SGD',\n SLE = 'SLE',\n SLL = 'SLL',\n SOS = 'SOS',\n SRD = 'SRD',\n STN = 'STN',\n SVC = 'SVC',\n SYP = 'SYP',\n SZL = 'SZL',\n THB = 'THB',\n TJS = 'TJS',\n TMT = 'TMT',\n TND = 'TND',\n TOP = 'TOP',\n TRY = 'TRY',\n TTD = 'TTD',\n TWD = 'TWD',\n TZS = 'TZS',\n UAH = 'UAH',\n UGX = 'UGX',\n UYU = 'UYU',\n UZS = 'UZS',\n VND = 'VND',\n VUV = 'VUV',\n WST = 'WST',\n XAF = 'XAF',\n XCD = 'XCD',\n XOF = 'XOF',\n XPF = 'XPF',\n YER = 'YER',\n ZAR = 'ZAR',\n ZMW = 'ZMW',\n ZWL = 'ZWL',\n\n CDF = 'CDF',\n ERN = 'ERN',\n FKP = 'FKP',\n KPW = 'KPW',\n RUB = 'RUB',\n SBD = 'SBD',\n SHP = 'SHP',\n SSP = 'SSP',\n VES = 'VES',\n}\n\nexport const CurrencyToISO4217: Record<Currency, string> = {\n [Currency.AED]: '784',\n [Currency.AFN]: '971',\n [Currency.ALL]: '008',\n [Currency.AMD]: '051',\n [Currency.ANG]: '532',\n [Currency.AOA]: '973',\n [Currency.AUD]: '036',\n [Currency.AWG]: '533',\n [Currency.AZN]: '944',\n [Currency.BAM]: '977',\n [Currency.BBD]: '052',\n [Currency.BDT]: '050',\n [Currency.BGN]: '975',\n [Currency.BHD]: '048',\n [Currency.BIF]: '108',\n [Currency.BND]: '096',\n [Currency.BOB]: '068',\n [Currency.BRL]: '986',\n [Currency.BTN]: '064',\n [Currency.BWP]: '072',\n [Currency.BZD]: '084',\n [Currency.CAD]: '124',\n [Currency.CHF]: '756',\n [Currency.CLP]: '152',\n [Currency.CNY]: '156',\n [Currency.COP]: '170',\n [Currency.CRC]: '188',\n [Currency.CVE]: '132',\n [Currency.CZK]: '203',\n [Currency.DJF]: '262',\n [Currency.DKK]: '208',\n [Currency.DOP]: '214',\n [Currency.DZD]: '012',\n [Currency.EGP]: '818',\n [Currency.ETB]: '230',\n [Currency.EUR]: '978',\n [Currency.GBP]: '826',\n [Currency.GEL]: '981',\n [Currency.GHS]: '936',\n [Currency.GMD]: '270',\n [Currency.GNF]: '324',\n [Currency.GTQ]: '320',\n [Currency.GYD]: '328',\n [Currency.HKD]: '344',\n [Currency.HNL]: '340',\n [Currency.HTG]: '332',\n [Currency.HUF]: '348',\n [Currency.IDR]: '360',\n [Currency.INR]: '356',\n [Currency.IQD]: '368',\n [Currency.IRR]: '364',\n [Currency.ISK]: '352',\n [Currency.JMD]: '388',\n [Currency.JOD]: '400',\n [Currency.JPY]: '392',\n [Currency.KES]: '404',\n [Currency.KGS]: '417',\n [Currency.KHR]: '116',\n [Currency.KMF]: '174',\n [Currency.KRW]: '410',\n [Currency.KWD]: '414',\n [Currency.KYD]: '136',\n [Currency.KZT]: '398',\n [Currency.LKR]: '144',\n [Currency.LRD]: '430',\n [Currency.LSL]: '426',\n [Currency.LYD]: '434',\n [Currency.MAD]: '504',\n [Currency.MDL]: '498',\n [Currency.MGA]: '969',\n [Currency.MKD]: '807',\n [Currency.MMK]: '104',\n [Currency.MNT]: '496',\n [Currency.MOP]: '446',\n [Currency.MRU]: '929',\n [Currency.MUR]: '480',\n [Currency.MVR]: '462',\n [Currency.MXN]: '484',\n [Currency.MYR]: '458',\n [Currency.NAD]: '516',\n [Currency.NGN]: '566',\n [Currency.NIO]: '558',\n [Currency.NOK]: '578',\n [Currency.NPR]: '524',\n [Currency.NZD]: '554',\n [Currency.OMR]: '512',\n [Currency.PAB]: '590',\n [Currency.PEN]: '604',\n [Currency.PHP]: '608',\n [Currency.PKR]: '586',\n [Currency.PLN]: '985',\n [Currency.PYG]: '600',\n [Currency.QAR]: '634',\n [Currency.RON]: '946',\n [Currency.RSD]: '941',\n [Currency.RWF]: '646',\n [Currency.SAR]: '682',\n [Currency.SCR]: '690',\n [Currency.SDG]: '938',\n [Currency.SEK]: '752',\n [Currency.SGD]: '702',\n [Currency.SLE]: '925',\n [Currency.SLL]: '694',\n [Currency.SOS]: '706',\n [Currency.STN]: '930',\n [Currency.SVC]: '222',\n [Currency.SYP]: '760',\n [Currency.SZL]: '748',\n [Currency.THB]: '764',\n [Currency.TJS]: '972',\n [Currency.TMT]: '934',\n [Currency.TND]: '788',\n [Currency.TRY]: '949',\n [Currency.TTD]: '780',\n [Currency.TWD]: '901',\n [Currency.TZS]: '834',\n [Currency.UAH]: '980',\n [Currency.UGX]: '800',\n [Currency.USD]: '840',\n [Currency.UYU]: '858',\n [Currency.UZS]: '860',\n [Currency.VND]: '704',\n [Currency.XAF]: '950',\n [Currency.XCD]: '951',\n [Currency.XOF]: '952',\n [Currency.XPF]: '953',\n [Currency.YER]: '886',\n [Currency.ZAR]: '710',\n [Currency.ZMW]: '967',\n [Currency.ARS]: '032',\n [Currency.BMD]: '060',\n [Currency.BSD]: '044',\n [Currency.BYN]: '933',\n [Currency.CUP]: '192',\n [Currency.FJD]: '242',\n [Currency.ILS]: '376',\n [Currency.LAK]: '418',\n [Currency.LBP]: '422',\n [Currency.MWK]: '454',\n [Currency.MZN]: '943',\n [Currency.PGK]: '598',\n [Currency.SRD]: '968',\n [Currency.TOP]: '776',\n [Currency.VUV]: '548',\n [Currency.WST]: '882',\n [Currency.ZWL]: '932',\n [Currency.CLF]: '990',\n [Currency.CDF]: '976',\n [Currency.ERN]: '232',\n [Currency.FKP]: '238',\n [Currency.KPW]: '408',\n [Currency.RUB]: '643',\n [Currency.SBD]: '090',\n [Currency.SHP]: '654',\n [Currency.SSP]: '728',\n [Currency.VES]: '928',\n};\n\nexport type WithdrawCurrency =\n | Currency.USD\n | Currency.EUR\n | Currency.GBP\n | Currency.BRL\n | Currency.CAD;\n\nexport const WithdrawCurrencies = {\n [Currency.USD]: Currency.USD,\n [Currency.EUR]: Currency.EUR,\n [Currency.GBP]: Currency.GBP,\n [Currency.BRL]: Currency.BRL,\n [Currency.CAD]: Currency.CAD,\n} as const;\n\nexport function isWithdrawCurrency(\n currency: Currency\n): currency is WithdrawCurrency {\n return currency in WithdrawCurrencies;\n}\n\nexport type BankingCurrency =\n | Currency.USD\n | Currency.EUR\n | Currency.GBP\n | Currency.CAD\n | Currency.BRL;\n\nexport const BankingCurrencies = {\n [Currency.USD]: Currency.USD,\n [Currency.EUR]: Currency.EUR,\n [Currency.GBP]: Currency.GBP,\n [Currency.CAD]: Currency.CAD,\n [Currency.BRL]: Currency.BRL,\n} as const;\n\nexport function isBankingCurrency(\n currency: Currency\n): currency is BankingCurrency {\n return currency in BankingCurrencies;\n}\n\nconst FourDecimalCurrencies = new Set<Currency>([Currency.CLF]);\n\nconst ThreeDecimalCurrencies = new Set<Currency>([\n Currency.BHD,\n Currency.IQD,\n Currency.JOD,\n Currency.KWD,\n Currency.LYD,\n Currency.OMR,\n Currency.TND,\n]);\n\nconst ZeroDecimalCurrencies = new Set<Currency>([\n Currency.BIF,\n Currency.CLP,\n Currency.DJF,\n Currency.GNF,\n Currency.ISK,\n Currency.JPY,\n Currency.KMF,\n Currency.PYG,\n Currency.RWF,\n Currency.UGX,\n Currency.VND,\n Currency.VUV,\n Currency.XAF,\n Currency.XOF,\n Currency.XPF,\n]);\n\nexport function getCurrencyDecimals(currency: Currency): number {\n if (FourDecimalCurrencies.has(currency)) return 4;\n if (ThreeDecimalCurrencies.has(currency)) return 3;\n if (ZeroDecimalCurrencies.has(currency)) return 0;\n return 2;\n}\n\nexport interface Cents {\n /**\n * @isInt Cents must be an integer\n * @minimum 0 Minimum Cents is 0\n */\n cents: number;\n}\n\nexport interface CurrencyCents extends Cents {\n currency: Currency;\n}\n\nexport interface TypedCurrencyCents<T extends Currency> extends Cents {\n currency: T;\n}\n\nexport function isTypedCurrencyCents<T extends Currency>(\n cents: CurrencyCents,\n currency: T\n): cents is TypedCurrencyCents<T> {\n return cents.currency === currency;\n}\n\nexport interface TokenSubtotal {\n /**\n * The tokens address\n *\n * Solana - Token Mint Address\n * Evm - Token Contract Address\n */\n address: string;\n /**\n * Number of tokens\n */\n amount: number | string;\n /**\n * Number of decimals for the token\n */\n decimals?: number;\n}\n\nexport type Subtotal = CurrencyCents | Cents | TokenSubtotal;\n","import nsureSDK from '@nsure-ai/web-client-sdk';\n\nfunction fun(): string | null {\n if (nsureSDK) return nsureSDK.getDeviceId();\n return null;\n}\n\nexport default fun;\n","import {\n CoinflowBlockchain,\n CoinflowEnvs,\n CoinflowIFrameProps,\n CoinflowPurchaseProps,\n CustomerInfo,\n} from './CoinflowTypes';\nimport {web3, base58} from './SolanaPeerDeps';\nimport LZString from 'lz-string';\nimport type {Transaction, VersionedTransaction} from '@solana/web3.js';\nimport {Currency} from './types/Subtotal';\nimport getNSureDeviceId from './NSure';\n\nexport class CoinflowUtils {\n env: CoinflowEnvs;\n url: string;\n\n constructor(env?: CoinflowEnvs) {\n this.env = env ?? 'prod';\n if (this.env === 'prod') this.url = 'https://api.coinflow.cash';\n else if (this.env === 'local') this.url = 'http://localhost:5000';\n else this.url = `https://api-${this.env}.coinflow.cash`;\n }\n\n async getNSurePartnerId(merchantId: string): Promise<string | undefined> {\n return fetch(this.url + `/merchant/view/${merchantId}`)\n .then(response => response.json())\n .then(\n (json: {\n nSurePartnerId: string | undefined;\n nSureSettings: {nSurePartnerId: string | undefined};\n }) => json.nSureSettings?.nSurePartnerId || json.nSurePartnerId\n )\n .catch(e => {\n console.error(e);\n return undefined;\n });\n }\n\n static getCoinflowBaseUrl(env?: CoinflowEnvs): string {\n if (!env || env === 'prod') return 'https://coinflow.cash';\n // @ts-expect-error This is for testing\n if (env === 'ngrok') return 'https://coinflow.ngrok.app';\n if (env === 'local') return 'http://localhost:3000';\n\n return `https://${env}.coinflow.cash`;\n }\n\n static getCoinflowAppBaseUrl(env?: CoinflowEnvs): string {\n if (!env || env === 'prod') return 'https://app.coinflow.cash';\n // @ts-expect-error This is for testing\n if (env === 'ngrok') return 'https://coinflow.ngrok.app';\n if (env === 'local') return 'http://localhost:3003';\n\n return `https://app-${env}.coinflow.cash`;\n }\n\n static getCoinflowApiUrl(env?: CoinflowEnvs): string {\n if (!env || env === 'prod') return 'https://api.coinflow.cash';\n if (env === 'local') return 'http://localhost:5000';\n\n return `https://api-${env}.coinflow.cash`;\n }\n\n static getCoinflowUrl({\n walletPubkey,\n sessionKey,\n route,\n routePrefix,\n env,\n subtotal,\n presentment,\n transaction,\n blockchain = 'solana',\n webhookInfo,\n email,\n loaderBackground,\n handleHeightChangeId,\n bankAccountLinkRedirect,\n additionalWallets,\n chargebackProtectionData,\n merchantCss,\n color,\n rent,\n lockDefaultToken,\n tokens,\n planCode,\n disableApplePay,\n disableGooglePay,\n customerInfo,\n settlementType,\n lockAmount,\n nativeSolToConvert,\n theme,\n usePermit,\n transactionSigner,\n authOnly,\n deviceId,\n jwtToken,\n origins,\n threeDsChallengePreference,\n supportEmail,\n destinationAuthKey,\n allowedPaymentMethods,\n accountFundingTransaction,\n partialUsdcChecked,\n redemptionCheck,\n allowedWithdrawSpeeds,\n isZeroAuthorization,\n baseUrl,\n }: CoinflowIFrameProps & {baseUrl?: string}): string {\n const prefix = routePrefix\n ? `/${routePrefix}/${blockchain}`\n : `/${blockchain}`;\n const url = new URL(\n prefix + route,\n baseUrl ?? CoinflowUtils.getCoinflowBaseUrl(env)\n );\n\n if (walletPubkey) url.searchParams.append('pubkey', walletPubkey);\n if (sessionKey) url.searchParams.append('sessionKey', sessionKey);\n\n if (transaction) {\n url.searchParams.append('transaction', transaction);\n }\n\n if (subtotal) {\n if ('cents' in subtotal) {\n url.searchParams.append('cents', subtotal.cents.toString());\n if ('currency' in subtotal) {\n url.searchParams.append('currency', subtotal.currency.toString());\n } else {\n url.searchParams.append('currency', Currency.USD);\n }\n } else {\n url.searchParams.append('token', subtotal.address.toString());\n url.searchParams.append('amount', subtotal.amount.toString());\n }\n }\n\n if (presentment) url.searchParams.append('presentment', presentment);\n\n if (webhookInfo) {\n url.searchParams.append(\n 'webhookInfo',\n LZString.compressToEncodedURIComponent(JSON.stringify(webhookInfo))\n );\n }\n\n if (theme) {\n url.searchParams.append(\n 'theme',\n LZString.compressToEncodedURIComponent(JSON.stringify(theme))\n );\n }\n\n if (customerInfo) {\n url.searchParams.append(\n 'customerInfo',\n LZString.compressToEncodedURIComponent(JSON.stringify(customerInfo))\n );\n }\n\n if (email) {\n url.searchParams.append('email', email);\n }\n if (supportEmail) url.searchParams.append('supportEmail', supportEmail);\n\n if (tokens) {\n url.searchParams.append('tokens', tokens.toString());\n }\n\n if (loaderBackground) {\n url.searchParams.append('loaderBackground', loaderBackground);\n }\n\n if (handleHeightChangeId) {\n url.searchParams.append(\n 'useHeightChange',\n handleHeightChangeId.toString()\n );\n }\n\n if (bankAccountLinkRedirect) {\n url.searchParams.append(\n 'bankAccountLinkRedirect',\n bankAccountLinkRedirect\n );\n }\n\n if (additionalWallets)\n url.searchParams.append(\n 'additionalWallets',\n LZString.compressToEncodedURIComponent(\n JSON.stringify(additionalWallets)\n )\n );\n\n if (chargebackProtectionData)\n url.searchParams.append(\n 'chargebackProtectionData',\n LZString.compressToEncodedURIComponent(\n JSON.stringify(chargebackProtectionData)\n )\n );\n if (deviceId) {\n url.searchParams.append('deviceId', deviceId);\n } else {\n const deviceId = getNSureDeviceId();\n if (deviceId) url.searchParams.append('deviceId', deviceId);\n }\n\n if (merchantCss) url.searchParams.append('merchantCss', merchantCss);\n if (color) url.searchParams.append('color', color);\n if (rent) url.searchParams.append('rent', rent.lamports.toString());\n if (redemptionCheck) url.searchParams.append('redemptionCheck', 'true');\n if (nativeSolToConvert)\n url.searchParams.append(\n 'nativeSolToConvert',\n nativeSolToConvert.lamports.toString()\n );\n if (lockDefaultToken) url.searchParams.append('lockDefaultToken', 'true');\n if (planCode) url.searchParams.append('planCode', planCode);\n\n if (disableApplePay) url.searchParams.append('disableApplePay', 'true');\n if (disableGooglePay) url.searchParams.append('disableGooglePay', 'true');\n if (settlementType)\n url.searchParams.append('settlementType', settlementType);\n\n if (lockAmount) url.searchParams.append('lockAmount', 'true');\n\n if (usePermit === false) url.searchParams.append('usePermit', 'false');\n if (transactionSigner)\n url.searchParams.append('transactionSigner', transactionSigner);\n if (authOnly === true) url.searchParams.append('authOnly', 'true');\n if (isZeroAuthorization === true)\n url.searchParams.append('isZeroAuthorization', 'true');\n if (partialUsdcChecked === true)\n url.searchParams.append('partialUsdcChecked', 'true');\n if (jwtToken) url.searchParams.append('jwtToken', jwtToken);\n if (origins)\n url.searchParams.append(\n 'origins',\n LZString.compressToEncodedURIComponent(JSON.stringify(origins))\n );\n\n if (allowedPaymentMethods)\n url.searchParams.append(\n 'allowedPaymentMethods',\n allowedPaymentMethods.join(',')\n );\n\n if (threeDsChallengePreference)\n url.searchParams.append(\n 'threeDsChallengePreference',\n threeDsChallengePreference\n );\n\n if (destinationAuthKey)\n url.searchParams.append('destinationAuthKey', destinationAuthKey);\n\n if (accountFundingTransaction)\n url.searchParams.append(\n 'accountFundingTransaction',\n LZString.compressToEncodedURIComponent(\n JSON.stringify(accountFundingTransaction)\n )\n );\n\n if (allowedWithdrawSpeeds)\n url.searchParams.append(\n 'allowedWithdrawSpeeds',\n allowedWithdrawSpeeds.join(',')\n );\n\n return url.toString();\n }\n\n static getTransaction(props: CoinflowPurchaseProps): string | undefined {\n if (!props.blockchain) return undefined;\n\n return this.byBlockchain<() => string | undefined>(props.blockchain, {\n solana: () => {\n if (!('transaction' in props)) return undefined;\n const {transaction} = props;\n if (!web3)\n throw new Error('@solana/web3.js dependency is required for Solana');\n if (!base58) throw new Error('bs58 dependency is required for Solana');\n if (!transaction) return undefined;\n return base58.encode(\n Uint8Array.from(\n (transaction as VersionedTransaction | Transaction).serialize({\n requireAllSignatures: false,\n verifySignatures: false,\n })\n )\n );\n },\n polygon: () => {\n if (!('transaction' in props)) return undefined;\n const {transaction} = props;\n return LZString.compressToEncodedURIComponent(\n JSON.stringify(transaction)\n );\n },\n eth: () => {\n if (!('transaction' in props)) return undefined;\n const {transaction} = props;\n return LZString.compressToEncodedURIComponent(\n JSON.stringify(transaction)\n );\n },\n base: () => {\n if (!('transaction' in props)) return undefined;\n const {transaction} = props;\n return LZString.compressToEncodedURIComponent(\n JSON.stringify(transaction)\n );\n },\n arbitrum: () => {\n if (!('transaction' in props)) return undefined;\n const {transaction} = props;\n return LZString.compressToEncodedURIComponent(\n JSON.stringify(transaction)\n );\n },\n monad: () => {\n if (!('transaction' in props)) return undefined;\n const {transaction} = props;\n return LZString.compressToEncodedURIComponent(\n JSON.stringify(transaction)\n );\n },\n user: () => {\n return undefined;\n },\n })();\n }\n\n static byBlockchain<T>(\n blockchain: CoinflowBlockchain,\n args: {\n solana: T;\n eth: T;\n polygon: T;\n base: T;\n arbitrum: T;\n monad: T;\n user: T;\n }\n ): T {\n switch (blockchain) {\n case 'solana':\n return args.solana;\n case 'polygon':\n return args.polygon;\n case 'eth':\n return args.eth;\n case 'base':\n return args.base;\n case 'arbitrum':\n return args.arbitrum;\n case 'monad':\n return args.monad;\n case 'user':\n return args.user;\n default:\n throw new Error('blockchain not supported!');\n }\n }\n}\n\nexport interface FullName {\n firstName: string;\n lastName: string;\n}\n\nexport function getCustomerName(\n info: CustomerInfo | undefined\n): FullName | undefined {\n if (!info) return undefined;\n\n let firstName: string | undefined, lastName: string | undefined;\n if ('name' in info && info.name) {\n firstName = info.name.split(' ')[0];\n lastName = info.name.split(' ').slice(1).join(' ');\n }\n\n if ('firstName' in info && info.firstName) firstName = info.firstName;\n\n if ('lastName' in info && info.lastName) lastName = info.lastName;\n\n if (firstName && lastName)\n return {\n firstName,\n lastName,\n };\n return undefined;\n}\n","import {\n AuthDeclinedWalletCallInfo,\n CoinflowBlockchain,\n CoinflowPurchaseProps,\n EthWallet,\n OnAuthDeclinedMethod,\n OnSuccessMethod,\n SolanaWallet,\n WalletTypes,\n} from './CoinflowTypes';\nimport {CoinflowUtils} from './CoinflowUtils';\nimport type {Transaction, VersionedTransaction} from '@solana/web3.js';\nimport {web3, base58} from './SolanaPeerDeps';\n\nexport type WalletCall =\n | {method: IFrameMessageMethods; data: string}\n | SuccessWalletCall;\n\ntype SuccessWalletCall = {\n method: IFrameMessageMethods.Success;\n data: string;\n info: {paymentId: string; hash?: string};\n};\n\ntype AuthDeclinedWalletCall = {\n method: IFrameMessageMethods.AuthDeclined;\n data: string;\n info: AuthDeclinedWalletCallInfo;\n};\n\nexport interface IFrameMessageHandlers {\n handleSendTransaction: (transaction: string) => Promise<string>;\n handleSignMessage?: (message: string) => Promise<string>;\n handleSignTransaction?: (transaction: string) => Promise<string>;\n handleHeightChange?: (height: string) => void;\n onSuccess: OnSuccessMethod | undefined;\n onAuthDeclined: OnAuthDeclinedMethod | undefined;\n}\n\nexport enum IFrameMessageMethods {\n SignMessage = 'signMessage',\n SignTransaction = 'signTransaction',\n SendTransaction = 'sendTransaction',\n HeightChange = 'heightChange',\n Success = 'success',\n AuthDeclined = 'authDeclined',\n Loaded = 'loaded',\n AccountLinked = 'accountLinked',\n}\n\nexport function getWalletPubkey(\n input: Pick<CoinflowPurchaseProps, 'wallet' | 'blockchain'>\n): string | null | undefined {\n let wallet: WalletTypes | undefined;\n if (\n 'signer' in input &&\n typeof input.signer === 'object' &&\n input.signer &&\n 'wallet' in input.signer\n )\n wallet = input.signer.wallet as WalletTypes;\n else if ('wallet' in input && input.wallet) wallet = input.wallet;\n\n if (!wallet) return;\n\n if (typeof wallet === 'string') return wallet;\n\n if (typeof wallet === 'object') {\n if ('publicKey' in wallet)\n return wallet.publicKey ? wallet.publicKey.toString() : undefined;\n\n if ('address' in wallet)\n return wallet.address ? (wallet.address as string) : undefined;\n }\n\n return null;\n}\n\nexport function handleIFrameMessage(\n rawMessage: string,\n handlers: IFrameMessageHandlers,\n handleHeightChangeId: string | number\n): Promise<string> | void {\n let walletCall: WalletCall;\n try {\n walletCall = JSON.parse(rawMessage);\n if (!('method' in walletCall) || !('data' in walletCall)) return;\n } catch (e) {\n console.error('handleIFrameMessage JSON parse', e);\n return;\n }\n\n const {data, method} = walletCall;\n switch (method) {\n case IFrameMessageMethods.SignMessage:\n if (!handlers.handleSignMessage) return;\n return handlers.handleSignMessage(data);\n case IFrameMessageMethods.SignTransaction:\n if (!handlers.handleSignTransaction) return;\n return handlers.handleSignTransaction(data);\n case IFrameMessageMethods.SendTransaction:\n return handlers.handleSendTransaction(data);\n case IFrameMessageMethods.HeightChange + ':' + handleHeightChangeId:\n if (!handlers.handleHeightChange) return;\n return handlers.handleHeightChange(data);\n case IFrameMessageMethods.Success:\n if (!handlers.onSuccess) return;\n handlers.onSuccess((walletCall as SuccessWalletCall).info);\n return;\n case IFrameMessageMethods.AuthDeclined:\n if (!handlers.onAuthDeclined) return;\n handlers.onAuthDeclined((walletCall as AuthDeclinedWalletCall).info);\n return;\n case IFrameMessageMethods.Loaded:\n return;\n case IFrameMessageMethods.AccountLinked:\n return;\n }\n\n console.warn(\n `Didn't expect to get here, handleIFrameMessage method:${method} is not one of ${Object.values(IFrameMessageMethods)}`\n );\n}\n\nexport function getHandlers(\n props: Pick<\n CoinflowPurchaseProps,\n 'wallet' | 'blockchain' | 'onSuccess' | 'onAuthDeclined'\n >\n): Omit<IFrameMessageHandlers, 'handleHeightChange'> {\n let chain: CoinflowBlockchain | undefined;\n let wallet: WalletTypes | undefined;\n if (\n 'signer' in props &&\n typeof props.signer === 'object' &&\n props.signer &&\n 'blockchain' in props.signer &&\n 'wallet' in props.signer\n ) {\n chain = props.signer.blockchain as CoinflowBlockchain;\n wallet = props.signer.wallet as WalletTypes;\n } else if ('blockchain' in props && props.blockchain) {\n chain = props.blockchain;\n wallet = props.wallet;\n }\n\n if (!chain) {\n return {\n handleSendTransaction: () => {\n throw new Error('handleSendTransaction Not Implemented');\n },\n handleSignMessage: () => {\n throw new Error('handleSendTransaction Not Implemented');\n },\n handleSignTransaction: () => {\n throw new Error('handleSendTransaction Not Implemented');\n },\n onSuccess: props.onSuccess,\n onAuthDeclined: props.onAuthDeclined,\n };\n }\n\n return CoinflowUtils.byBlockchain(chain, {\n solana: () =>\n getSolanaWalletHandlers({\n wallet: wallet as SolanaWallet,\n onSuccess: props.onSuccess,\n onAuthDeclined: props.onAuthDeclined,\n }),\n eth: () =>\n getEvmWalletHandlers({\n wallet: wallet as EthWallet,\n onSuccess: props.onSuccess,\n onAuthDeclined: props.onAuthDeclined,\n }),\n polygon: () =>\n getEvmWalletHandlers({\n wallet: wallet as EthWallet,\n onSuccess: props.onSuccess,\n onAuthDeclined: props.onAuthDeclined,\n }),\n base: () =>\n getEvmWalletHandlers({\n wallet: wallet as EthWallet,\n onSuccess: props.onSuccess,\n onAuthDeclined: props.onAuthDeclined,\n }),\n arbitrum: () =>\n getEvmWalletHandlers({\n wallet: wallet as EthWallet,\n onSuccess: props.onSuccess,\n onAuthDeclined: props.onAuthDeclined,\n }),\n monad: () =>\n getEvmWalletHandlers({\n wallet: wallet as EthWallet,\n onSuccess: props.onSuccess,\n onAuthDeclined: props.onAuthDeclined,\n }),\n user: () => getSessionKeyHandlers(props),\n })();\n}\n\nfunction getSolanaWalletHandlers({\n wallet,\n onSuccess,\n onAuthDeclined,\n}: {\n wallet: SolanaWallet;\n onSuccess: OnSuccessMethod | undefined;\n onAuthDeclined: OnAuthDeclinedMethod | undefined;\n}): Omit<IFrameMessageHandlers, 'handleHeightChange'> {\n return {\n handleSendTransaction: async (transaction: string) => {\n const tx = getSolanaTransaction(transaction);\n return await wallet.sendTransaction(tx);\n },\n handleSignMessage: async (message: string) => {\n const signMessage = wallet.signMessage;\n if (!signMessage) {\n throw new Error('signMessage is not supported by this wallet');\n }\n\n const signedMessage = await signMessage(\n new TextEncoder().encode(message)\n );\n if (!base58) throw new Error('bs58 dependency is required');\n return base58.encode(signedMessage);\n },\n handleSignTransaction: async (transaction: string) => {\n const signTransaction = wallet.signTransaction;\n if (!signTransaction) {\n throw new Error('signTransaction is not supported by this wallet');\n }\n const tx = getSolanaTransaction(transaction);\n const signedTransaction = await signTransaction(tx);\n if (!base58) throw new Error('bs58 dependency is required');\n return base58.encode(\n Uint8Array.from(\n signedTransaction.serialize({\n requireAllSignatures: false,\n verifySignatures: false,\n })\n )\n );\n },\n onSuccess,\n onAuthDeclined,\n };\n}\n\nfunction getSolanaTransaction(\n data: string\n): Transaction | VersionedTransaction {\n if (!web3)\n throw new Error(\n '@solana/web3.js is not defined. Please install @solana/web3.js into your project'\n );\n\n if (!base58)\n throw new Error(\n 'bs58 is not defined. Please install bs58 into your project'\n );\n\n const parsedUInt8Array = base58.decode(data);\n const vtx = web3.VersionedTransaction.deserialize(parsedUInt8Array);\n if (vtx.version === 'legacy') return web3.Transaction.from(parsedUInt8Array);\n return vtx;\n}\n\nfunction getEvmWalletHandlers({\n wallet,\n onSuccess,\n onAuthDeclined,\n}: {\n wallet: EthWallet;\n onSuccess?: OnSuccessMethod;\n onAuthDeclined: OnAuthDeclinedMethod | undefined;\n}): Omit<IFrameMessageHandlers, 'handleHeightChange'> {\n return {\n handleSendTransaction: async (transaction: string) => {\n const tx = JSON.parse(Buffer.from(transaction, 'base64').toString());\n const {hash} = await wallet.sendTransaction(tx);\n return hash;\n },\n handleSignMessage: async (message: string) => {\n return wallet.signMessage(message);\n },\n onSuccess,\n onAuthDeclined,\n };\n}\n\nfunction getSessionKeyHandlers({\n onSuccess,\n onAuthDeclined,\n}: Pick<CoinflowPurchaseProps, 'onSuccess' | 'onAuthDeclined'>): Omit<\n IFrameMessageHandlers,\n 'handleHeightChange'\n> {\n return {\n handleSendTransaction: async () => {\n return Promise.resolve('');\n },\n onSuccess,\n onAuthDeclined,\n };\n}\n","export type EventBusCallback = (event: Event) => void;\n\nexport class EventBus {\n public static on(type: string, callback: EventBusCallback) {\n document.addEventListener(type, callback);\n }\n\n public static dispatch(type: string, data: any) {\n document.dispatchEvent(new CustomEvent(type, {detail: data}));\n }\n\n public static remove(type: string, callback: EventBusCallback) {\n document.removeEventListener(type, callback);\n }\n}\n","// Type definitions for TokenEx iframe integration\n/// <reference path=\"./TokenEx.global.d.ts\" />\n\nimport {CardType, CoinflowEnvs} from '../CoinflowTypes';\nimport type {Properties as CSSProperties} from 'csstype';\n\nexport const TokenExCardNumberIframeId = 'tokenExCardNumber';\nexport const TokenExCvvContainerID = 'tokenExCardCvv';\nexport interface TokenExIframe extends ReturnType<typeof TokenEx.Iframe> {\n tokenize: () => Promise<TokenizationResponse>;\n}\n\nexport const CARD_TYPE_MAPPING: Record<CardType, string> = {\n [CardType.VISA]: 'visa',\n [CardType.MASTERCARD]: 'masterCard',\n [CardType.AMEX]: 'americanExpress',\n [CardType.DISCOVER]: 'discover',\n};\n\nexport interface TokenExIFrameConfiguration {\n origin: string;\n timestamp: string;\n tokenExID: string;\n tokenScheme: string;\n authenticationKey: string;\n pci: true;\n token?: string;\n use3DS?: boolean;\n threeDSMethodNotificationUrl?: string;\n}\n\nexport interface CardFormInputStyles {\n base: CSSProperties | string;\n placeholder?: CSSProperties | string;\n focus?: CSSProperties | string;\n error?: CSSProperties | string;\n}\n\nexport type CoinflowCardTokenResponse = {\n token: string;\n};\n\nexport interface CoinflowCardNumberInputProps {\n env: CoinflowEnvs;\n css: CardFormInputStyles & {cvv: CardFormInputStyles};\n debug?: boolean;\n origins: string[];\n font?: string;\n}\n\nexport interface CoinflowCvvOnlyInputProps {\n token: string;\n cardType: CardType;\n env: CoinflowEnvs;\n css: CardFormInputStyles & {cvv: CardFormInputStyles};\n debug?: boolean;\n origins: string[];\n font?: string;\n}\n\nexport interface VersionDetail {\n threeDSMethodURL: string;\n acsStartProtocolVersion: string;\n acsEndProtocolVersion: string;\n threeDSServerStartVersion: string;\n threeDSServerEndVersion?: string;\n acsInfoInd: [string];\n directoryServerID: string;\n dsStartProtocolVersion: string;\n dsEndProtocolVersion: string;\n dsIdentifier: string;\n threeDSServerTransID: string;\n}\n\nexport interface TokenizationResponse {\n cardType: string;\n cvvIncluded: true;\n firstSix: string;\n lastFour: string;\n referenceNumber: string;\n token: string;\n tokenHMAC: string;\n recommended3dsVersion?: Record<string, string>;\n threeDSecureResponse?: VersionDetail[];\n}\n","import type {Properties as CSSProperties} from 'csstype';\nimport {\n TokenizationResponse,\n TokenExCvvContainerID,\n TokenExIframe,\n TokenExIFrameConfiguration,\n CARD_TYPE_MAPPING,\n TokenExCardNumberIframeId,\n} from './TokenEx';\nimport {CoinflowUtils} from '../CoinflowUtils';\nimport {CardType, CoinflowEnvs} from '../CoinflowTypes';\n\nexport type MerchantIdOrCheckoutJwt =\n | {checkoutJwt: string}\n | {merchantId: string};\n\nexport interface CommonDoInitializeTokenExIframeArgs {\n css: string;\n debug?: boolean;\n font?: string;\n origins: string[];\n tokenExScriptLoaded: boolean;\n env: CoinflowEnvs;\n setCachedToken: (s: string | undefined) => void;\n setLoaded: (b: boolean) => void;\n}\n\nexport type DoInitializeTokenExIframeArgs =\n CommonDoInitializeTokenExIframeArgs & MerchantIdOrCheckoutJwt;\n\nexport type DoInitializeCvvOnlyTokenExIframeArgs =\n DoInitializeTokenExIframeArgs & {\n token: string;\n cardType: CardType;\n };\n\nexport type GetIFrameConfigArgs = {\n token?: string;\n origins: string[];\n env: CoinflowEnvs;\n} & MerchantIdOrCheckoutJwt;\n\nexport async function getIframeConfig(\n args: GetIFrameConfigArgs\n): Promise<TokenExIFrameConfiguration> {\n const {token, origins, env} = args;\n return new Promise((resolve, reject) => {\n fetch(new CoinflowUtils(env).url + '/api/tokenize/iframe/config', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n origins,\n token,\n merchantId: 'merchantId' in args ? args.merchantId : undefined,\n checkoutJwt: 'checkoutJwt' in args ? args.checkoutJwt : undefined,\n }),\n })\n .then(async res => {\n resolve((await res.json()) as TokenExIFrameConfiguration);\n })\n .catch(e => reject(e));\n });\n}\n\nexport function setTokenExScriptTag({\n env,\n setTokenExScriptLoaded,\n}: {\n env: CoinflowEnvs;\n setTokenExScriptLoaded: (b: boolean) => void;\n}) {\n const scriptTagId = 'tokenex-script';\n if (document.head.querySelector(`#${scriptTagId}`)) {\n setTokenExScriptLoaded(true);\n }\n\n const sdkScriptTag = document.createElement('script');\n sdkScriptTag.src =\n env === 'prod'\n ? 'https://htp.tokenex.com/iframe/iframe-v3.min.js'\n : 'https://test-htp.tokenex.com/iframe/iframe-v3.min.js';\n sdkScriptTag.id = scriptTagId;\n\n document.head.appendChild(sdkScriptTag);\n\n document.getElementById(scriptTagId)!.addEventListener('load', () => {\n console.log('Setting tokenExScriptLoaded to true!');\n setTokenExScriptLoaded(true);\n });\n}\n\nfunction loadIframe({\n iframe,\n setCachedToken,\n setLoaded,\n}: {\n setCachedToken: (s: string | undefined) => void;\n setLoaded: (b: boolean) => void;\n iframe: ReturnType<typeof TokenEx.Iframe>;\n}): TokenExIframe {\n const tokenize = async (): Promise<TokenizationResponse> => {\n iframe.tokenize();\n return await new Promise<TokenizationResponse>((resolve, reject) => {\n iframe.on('tokenize', (data: TokenizationResponse) => {\n setCachedToken(data.token);\n resolve(data);\n });\n iframe.on('validate', (data: {isValid: boolean; isCvvValid: boolean}) => {\n // noinspection PointlessBooleanExpressionJS\n const isInvalid = !data.isValid || data.isCvvValid === false;\n if (isInvalid) reject(data);\n });\n });\n };\n\n iframe.on('change', () => setCachedToken(undefined));\n iframe.on('cvvChange', () => setCachedToken(undefined));\n\n iframe.on('load', () => {\n setTimeout(() => setLoaded(true), 350);\n const el: HTMLIFrameElement | null = document.querySelector(\n '#tx_iframe_tokenExCardNumber'\n );\n if (el) {\n // noinspection JSDeprecatedSymbols\n el.scrolling = 'no';\n }\n });\n\n iframe.on('focus', () => {\n iframe.focus();\n });\n iframe.on('cvvFocus', () => {\n iframe.cvvFocus();\n });\n\n setLoaded(false);\n iframe.load();\n\n return {...iframe, tokenize};\n}\n\nexport async function doInitializeCvvOnlyTokenExIframe(\n args: DoInitializeCvvOnlyTokenExIframeArgs\n) {\n const {token, cardType} = args;\n return await doInitialize(TokenExCvvContainerID, args, {\n cvvOnly: true,\n cvv: true,\n cvvContainerID: TokenExCvvContainerID,\n placeholder: 'CVV',\n token,\n cardType: CARD_TYPE_MAPPING[cardType],\n });\n}\n\nexport async function doInitializeTokenExIframe(\n args: DoInitializeTokenExIframeArgs\n) {\n return await doInitialize(TokenExCardNumberIframeId, args, {\n cvv: true,\n cvvContainerID: TokenExCvvContainerID,\n cvvPlaceholder: 'CVV',\n });\n}\n\nexport async function doInitializeTokenExCardOnlyIframe(\n args: DoInitializeTokenExIframeArgs\n) {\n return await doInitialize(TokenExCardNumberIframeId, args, {cvv: false});\n}\n\nasync function doInitialize(\n id: string,\n args: DoInitializeTokenExIframeArgs,\n configOverrides: Partial<TokenEx.Config>\n) {\n const {tokenExScriptLoaded, css, debug, font, setCachedToken, setLoaded} =\n args;\n if (!tokenExScriptLoaded && typeof TokenEx === 'undefined') {\n console.warn(\n 'Warning Unable to load TokenEx on first attempt waiting for load event from document.head.script#tokenex-script'\n );\n return;\n }\n const iframeConfig = await getIframeConfig({\n ...args,\n token: configOverrides.token,\n });\n const {styles} = getStyles(css);\n const config = {\n ...iframeConfig,\n placeholder: '0000 0000 0000 0000',\n enablePrettyFormat: true,\n styles,\n font,\n debug: debug ?? false,\n ...configOverrides,\n };\n const iframe: ReturnType<typeof TokenEx.Iframe> = TokenEx.Iframe(id, config);\n\n return loadIframe({iframe, setCachedToken, setLoaded});\n}\n\nfunction getStyles(s: string) {\n const css = JSON.parse(s);\n const styles = {\n base: CSSPropertiesToComponent(css.base),\n focus: CSSPropertiesToComponent(css.focus),\n error: CSSPropertiesToComponent(css.error),\n placeholder: CSSPropertiesToComponent(css.placeholder),\n cvv: {\n base: CSSPropertiesToComponent(css.cvv?.base),\n focus: CSSPropertiesToComponent(css.cvv?.focus),\n error: CSSPropertiesToComponent(css.cvv?.error),\n placeholder: CSSPropertiesToComponent(css?.placeholder),\n },\n };\n\n return {styles};\n}\n\nfunction CSSPropertiesToComponent(\n dict: CSSProperties | string | undefined\n): string {\n if (!dict) return '';\n if (typeof dict === 'string') return dict;\n\n let str = '';\n for (const [key, value] of Object.entries(dict)) {\n let clo = '';\n key.split('').forEach(lt => {\n if (lt.toUpperCase() === lt) {\n clo += '-' + lt.toLowerCase();\n } else {\n clo += lt;\n }\n });\n str += clo + ':' + value + ';';\n }\n return str;\n}\n","/* generated using openapi-typescript-codegen -- do no edit */\n/* istanbul ignore file */\n/* tslint:disable */\n/* oxlint-disable */\n\nimport {AnyObject} from './AnyObject';\nimport {SellerInfo} from './CartitemCommon';\n\n/**\n * An nft cart item\n */\nexport type nftCartItem = {\n /**\n * Denotes the cart item class. The item schema is chosen based on this value\n */\n itemClass: 'nft';\n /**\n * The name of the related product\n *\n * @minLength 1\n */\n productName: string;\n /**\n * The product type. Possible values include: inGameProduct, gameOfSkill, dataStorage, computingResources, sportsTicket, eSportsTicket, musicTicket, conferenceTicket, virtualSportsTicket, virtualESportsTicket, virtualMusicTicket, virtualConferenceTicket, alcohol, DLC, subscription, fundACause, realEstate, computingContract, digitalArt, topUp\n */\n productType: productType;\n /**\n * The item's list price\n */\n listPrice?: {\n /**\n * The amount in the currency, which is specified in the `currency` property\n */\n valueInCurrency?: number;\n /**\n * Currency specified as a three letter code according to ISO 4217\n */\n currency?: string;\n };\n /**\n * The item's list price\n */\n sellingPrice: {\n /**\n * The amount in the currency, which is specified in the `currency` property\n */\n valueInCurrency?: number;\n /**\n * Currency specified as a three-letter code according to ISO 4217\n */\n currency?: string;\n };\n /**\n * The number of units sold\n */\n quantity: number;\n /**\n * Any additional data that the store can provide on the product, e.g. description, link to image, etc.\n */\n rawProductData?: AnyObject;\n seller?: SellerInfo;\n transactionHistory?: TransactionHistoryItem[];\n};\n\ntype TransactionHistoryItem = {\n txHash: string;\n blockNumber: number;\n txTime: string;\n assetID: string;\n registryContract: string;\n from: string;\n to: string;\n paymentToken: string;\n paymentAmount: string;\n chain: string;\n txType: string;\n};\n\nexport type productType =\n | 'inGameProduct'\n | 'gameOfSkill'\n | 'dataStorage'\n | 'computingResources'\n | 'sportsTicket'\n | 'eSportsTicket'\n | 'musicTicket'\n | 'conferenceTicket'\n | 'virtualSportsTicket'\n | 'virtualESportsTicket'\n | 'virtualMusicTicket'\n | 'virtualConferenceTicket'\n | 'alcohol'\n | 'DLC'\n | 'subscription'\n | 'fundACause'\n | 'realEstate'\n | 'computingContract'\n | 'digitalArt'\n | 'topUp'\n | 'ownershipContract'\n | 'inGameCurrency'\n | 'digitalCollectibles'\n | 'digitalCollectiblesMarketplace'\n | 'digitalGiftingMarketplace'\n | 'sweepstakes'\n | 'virtualSportsEvents'\n | 'contractInvoicing'\n | 'onlineCasino'\n | 'cryptoOnramp'\n | 'gaming'\n | 'travelDocuments'\n | 'musicStreaming'\n | 'digitalContent'\n | 'eBooks'\n | 'digitalSubscriptionContent';\n\nexport namespace nftCartItem {\n /**\n * Denotes the cart item class. The item schema is chosen based on this value\n */\n export enum itemClass {\n NFT = 'nft',\n }\n\n /**\n * The product type. Possible values include: inGameProduct, gameOfSkill, dataStorage, computingResources, sportsTicket, eSportsTicket, musicTicket, conferenceTicket, virtualSportsTicket, virtualESportsTicket, virtualMusicTicket, virtualConferenceTicket, alcohol, DLC, subscription, fundACause, realEstate, computingContract, digitalArt, topUp\n */\n export enum productType {\n IN_GAME_PRODUCT = 'inGameProduct',\n GAME_OF_SKILL = 'gameOfSkill',\n DATA_STORAGE = 'dataStorage',\n COMPUTING_RESOURCES = 'computingResources',\n SPORTS_TICKET = 'sportsTicket',\n E_SPORTS_TICKET = 'eSportsTicket',\n MUSIC_TICKET = 'musicTicket',\n CONFERENCE_TICKET = 'conferenceTicket',\n VIRTUAL_SPORTS_TICKET = 'virtualSportsTicket',\n VIRTUAL_ESPORTS_TICKET = 'virtualESportsTicket',\n VIRTUAL_MUSIC_TICKET = 'virtualMusicTicket',\n VIRTUAL_CONFERENCE_TICKET = 'virtualConferenceTicket',\n ALCOHOL = 'alcohol',\n DLC = 'DLC',\n SUBSCRIPTION = 'subscription',\n FUND_ACAUSE = 'fundACause',\n REAL_ESTATE = 'realEstate',\n COMPUTING_CONTRACT = 'computingContract',\n DIGITAL_ART = 'digitalArt',\n TOP_UP = 'topUp',\n OWNERSHIP_CONTRACT = 'ownershipContract',\n IN_GAME_CURRENCY = 'inGameCurrency',\n MONEY_TOP_UP_CART_ITEM = 'moneyTopUpCartItem',\n }\n}\n","import {\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n Output,\n ViewChild,\n} from '@angular/core';\nimport {\n CoinflowIFrameProps,\n CoinflowUtils,\n handleIFrameMessage,\n IFrameMessageHandlers,\n} from './common';\nimport {DomSanitizer, SafeResourceUrl} from '@angular/platform-browser';\n\n@Component({\n selector: 'lib-coinflow-iframe',\n standalone: true,\n imports: [],\n template: ` <iframe\n width=\"100%\"\n height=\"100%\"\n #iframe\n scrolling=\"{{ iframeProps?.handleHeightChangeId ? 'no' : 'yes' }}\"\n allow=\"payment;camera;clipboard-write\"\n title=\"withdraw\"\n frameBorder=\"0\"\n [src]=\"dynamicUrl\"\n credentialless\n (load)=\"handleIframeLoad()\"\n ></iframe>`,\n})\nexport class CoinflowIFrameComponent {\n @Input() iframeProps!: CoinflowIFrameProps;\n @Input() messageHandlers!: IFrameMessageHandlers;\n @Input() onLoad?: () => void | Promise<void>;\n @Input() waitForLoadedMessage?: boolean;\n\n @Output() messageEvent = new EventEmitter<any>();\n\n dynamicUrl?: SafeResourceUrl;\n @ViewChild('iframe') iframe?: ElementRef<HTMLIFrameElement>;\n private isLoading = true;\n\n constructor(private sanitizer: DomSanitizer) {}\n\n ngOnInit() {\n const coinflowUrl = CoinflowUtils.getCoinflowUrl(this.iframeProps);\n this.dynamicUrl =\n this.sanitizer.bypassSecurityTrustResourceUrl(coinflowUrl);\n }\n\n @HostListener('window:message', ['$event']) onPostMessage(event: any) {\n if (\n !event.origin.includes(\n CoinflowUtils.getCoinflowBaseUrl(this.iframeProps.env)\n )\n )\n return;\n\n this.messageEvent.emit(event);\n\n if (this.waitForLoadedMessage) {\n try {\n const message = JSON.parse(event.data);\n if (\n message &&\n typeof message === 'object' &&\n message.method === 'loaded'\n ) {\n this.isLoading = false;\n this.onLoad?.();\n }\n } catch (error) {\n // Ignore parse errors\n }\n }\n\n const promise = handleIFrameMessage(\n event.data,\n this.messageHandlers,\n this.iframeProps.handleHeightChangeId\n );\n if (!promise) return;\n promise\n .then(this.sendMessage.bind(this))\n .catch(e => this.sendMessage('ERROR ' + e.message));\n }\n\n sendMessage(message: string) {\n if (!this.iframe || !this.iframe.nativeElement) return;\n this.iframe.nativeElement.contentWindow!.postMessage(message, '*');\n }\n\n handleIframeLoad() {\n if (this.waitForLoadedMessage) return;\n\n this.isLoading = false;\n this.onLoad?.();\n }\n}\n","import {Component, Input} from '@angular/core';\nimport {CoinflowIFrameComponent} from './coinflow-iframe.component';\nimport {\n CoinflowIFrameProps,\n CoinflowPurchaseProps,\n CoinflowUtils,\n getHandlers,\n getWalletPubkey,\n IFrameMessageHandlers,\n} from './common';\nimport {WithOnLoad} from '../public-api';\n\n@Component({\n selector: 'lib-coinflow-purchase',\n standalone: true,\n imports: [CoinflowIFrameComponent],\n template:\n ' <lib-coinflow-iframe ng-if=\"iframeProps && messageHandlers\" [iframeProps]=\"iframeProps!\" [messageHandlers]=\"messageHandlers!\" [onLoad]=\"purchaseProps?.onLoad\" [waitForLoadedMessage]=\"true\"></lib-coinflow-iframe> ',\n})\nexport class CoinflowPurchaseComponent {\n @Input() purchaseProps!: CoinflowPurchaseProps & WithOnLoad;\n iframeProps?: CoinflowIFrameProps;\n messageHandlers?: IFrameMessageHandlers;\n\n ngOnInit() {\n const walletPubkey = getWalletPubkey(this.purchaseProps);\n this.messageHandlers = getHandlers(this.purchaseProps);\n this.messageHandlers.handleHeightChange =\n this.purchaseProps.handleHeightChange;\n\n const handleHeightChangeId = Math.random().toString(16).substring(2);\n\n this.iframeProps = {\n ...this.purchaseProps,\n walletPubkey,\n route: `/purchase-v2/${this.purchaseProps?.merchantId}`,\n transaction: CoinflowUtils.getTransaction(this.purchaseProps),\n handleHeightChangeId,\n };\n }\n}\n","import {Component} from '@angular/core';\n\n@Component({\n selector: 'lib-coinflow-purchase-history',\n standalone: true,\n imports: [],\n template: ' <p>coinflow-purchase-history works!</p> ',\n})\nexport class CoinflowPurchaseHistoryComponent {}\n","import {Component} from '@angular/core';\n\n@Component({\n selector: 'lib-coinflow-purchase-protection',\n standalone: true,\n imports: [],\n template: ' <p>coinflow-purchase-protection works!</p> ',\n})\nexport class CoinflowPurchaseProtectionComponent {}\n","import {Component, Input} from '@angular/core';\nimport {\n CoinflowIFrameProps,\n CoinflowWithdrawProps,\n getHandlers,\n getWalletPubkey,\n IFrameMessageHandlers,\n} from './common';\nimport {WithOnLoad} from '../public-api';\nimport {CoinflowIFrameComponent} from './coinflow-iframe.component';\n\n@Component({\n selector: 'lib-coinflow-withdraw',\n standalone: true,\n imports: [CoinflowIFrameComponent],\n template:\n ' <lib-coinflow-iframe ng-if=\"iframeProps && messageHandlers\" [iframeProps]=\"iframeProps!\" [messageHandlers]=\"messageHandlers!\" [onLoad]=\"withdrawProps?.onLoad\"></lib-coinflow-iframe> ',\n})\nexport class CoinflowWithdrawComponent {\n @Input() withdrawProps!: CoinflowWithdrawProps & WithOnLoad;\n iframeProps?: CoinflowIFrameProps;\n messageHandlers?: IFrameMessageHandlers;\n\n ngOnInit() {\n const walletPubkey = getWalletPubkey(this.withdrawProps);\n this.messageHandlers = getHandlers(this.withdrawProps);\n this.messageHandlers.handleHeightChange =\n this.withdrawProps.handleHeightChange;\n\n const handleHeightChangeId = Math.random().toString(16).substring(2);\n\n this.iframeProps = {\n ...this.withdrawProps,\n walletPubkey,\n route: `/withdraw/${this.withdrawProps?.merchantId}`,\n transaction: undefined,\n handleHeightChangeId,\n };\n }\n}\n","import {Component} from '@angular/core';\n\n@Component({\n selector: 'lib-coinflow-withdraw-history',\n standalone: true,\n imports: [],\n template: ' <p>coinflow-withdraw-history works!</p> ',\n})\nexport class CoinflowWithdrawHistoryComponent {}\n","import {\n doInitializeCvvOnlyTokenExIframe,\n doInitializeTokenExCardOnlyIframe,\n doInitializeTokenExIframe,\n MerchantIdOrCheckoutJwt,\n TokenExIframe,\n} from '../common';\nimport {Injectable} from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CardFormService {\n loaded = false;\n tokenExIframe: TokenExIframe | undefined = undefined;\n\n setTokenExIframe(iframe: TokenExIframe | undefined) {\n this.tokenExIframe = iframe;\n }\n\n setCachedToken() {}\n\n setLoaded(input: boolean) {\n this.loaded = input;\n }\n\n async initializeCvvOnlyTokenExIframe(\n args: Omit<\n Parameters<typeof doInitializeCvvOnlyTokenExIframe>[0],\n 'tokenExScriptLoaded' | 'setCachedToken' | 'setLoaded'\n > &\n MerchantIdOrCheckoutJwt\n ) {\n const iframe = await doInitializeCvvOnlyTokenExIframe({\n ...args,\n tokenExScriptLoaded: true,\n setCachedToken: this.setCachedToken.bind(this),\n setLoaded: this.setLoaded.bind(this),\n });\n this.setTokenExIframe(iframe);\n if (iframe) iframe.load();\n return iframe;\n }\n\n async initializeTokenExIframe(\n args: Omit<\n Parameters<typeof doInitializeTokenExIframe>[0],\n 'tokenExScriptLoaded' | 'setCachedToken' | 'setLoaded'\n > &\n MerchantIdOrCheckoutJwt\n ) {\n console.log('initializeTokenExIframe');\n const iframe = await doInitializeTokenExIframe({\n ...args,\n tokenExScriptLoaded: true,\n setCachedToken: this.setCachedToken.bind(this),\n setLoaded: this.setLoaded.bind(this),\n });\n console.log('iframe', iframe);\n this.setTokenExIframe(iframe);\n if (iframe) iframe.load();\n console.log('LOADED');\n return iframe;\n }\n\n async initializeTokenExCardOnlyIframe(\n args: Omit<\n Parameters<typeof doInitializeTokenExCardOnlyIframe>[0],\n 'tokenExScriptLoaded' | 'setCachedToken' | 'setLoaded'\n > &\n MerchantIdOrCheckoutJwt\n ) {\n const iframe = await doInitializeTokenExCardOnlyIframe({\n ...args,\n tokenExScriptLoaded: true,\n setCachedToken: this.setCachedToken.bind(this),\n setLoaded: this.setLoaded.bind(this),\n });\n this.setTokenExIframe(iframe);\n if (iframe) iframe.load();\n return iframe;\n }\n}\n","import {Component, inject, Input, OnDestroy} from '@angular/core';\nimport {\n CoinflowCardNumberInputProps,\n MerchantIdOrCheckoutJwt,\n setTokenExScriptTag,\n TokenExCardNumberIframeId,\n TokenExIframe,\n} from '../common';\nimport {CardFormService} from './CardFormService';\n\n@Component({\n selector: 'lib-coinflow-card-number-input',\n standalone: true,\n imports: [],\n template: '<div id=\"{{TokenExCardNumberIframeId}}\"></div>',\n})\nexport class CoinflowCardNumberInput implements OnDestroy {\n private cardFormService = inject(CardFormService);\n @Input() args!: CoinflowCardNumberInputProps & MerchantIdOrCheckoutJwt;\n private iframe: TokenExIframe | undefined = undefined;\n\n private onScriptLoaded() {\n this.cardFormService\n .initializeTokenExIframe({\n ...this.args,\n css: JSON.stringify(this.args.css),\n })\n .then(iframe => (this.iframe = iframe))\n .catch(e => console.error(e));\n }\n\n private initializeTokenEx() {\n setTokenExScriptTag({\n env: this.args.env,\n setTokenExScriptLoaded: this.onScriptLoaded.bind(this),\n });\n }\n\n public reinitialize() {\n this.iframe = undefined;\n this.initializeTokenEx();\n }\n\n ngOnInit() {\n this.initializeTokenEx();\n }\n\n ngOnDestroy() {\n this.iframe = undefined;\n }\n\n tokenize() {\n return this.iframe!.tokenize();\n }\n\n protected readonly TokenExCardNumberIframeId = TokenExCardNumberIframeId;\n}\n","import {Component, inject, Input, OnDestroy} from '@angular/core';\nimport {\n CoinflowCardNumberInputProps,\n MerchantIdOrCheckoutJwt,\n setTokenExScriptTag,\n TokenExCardNumberIframeId,\n TokenExIframe,\n} from '../common';\nimport {CardFormService} from './CardFormService';\n\n@Component({\n selector: 'lib-coinflow-card-number-only-input',\n standalone: true,\n imports: [],\n template: '<div id=\"{{TokenExCardNumberIframeId}}\"></div>',\n})\nexport class CoinflowCardNumberOnlyInput implements OnDestroy {\n private cardFormService = inject(CardFormService);\n @Input() args!: CoinflowCardNumberInputProps & MerchantIdOrCheckoutJwt;\n private iframe: TokenExIframe | undefined = undefined;\n\n private onScriptLoaded() {\n this.cardFormService\n .initializeTokenExCardOnlyIframe({\n ...this.args,\n css: JSON.stringify(this.args.css),\n })\n .then(iframe => (this.iframe = iframe))\n .catch(e => console.error(e));\n }\n\n private initializeTokenEx() {\n setTokenExScriptTag({\n env: this.args.env,\n setTokenExScriptLoaded: this.onScriptLoaded.bind(this),\n });\n }\n\n public reinitialize() {\n this.iframe = undefined;\n this.initializeTokenEx();\n }\n\n ngOnInit() {\n this.initializeTokenEx();\n }\n\n ngOnDestroy() {\n this.iframe = undefined;\n }\n\n tokenize() {\n return this.iframe!.tokenize();\n }\n\n protected readonly TokenExCardNumberIframeId = TokenExCardNumberIframeId;\n}\n","import {Component} from '@angular/core';\nimport {TokenExCvvContainerID} from '../common';\n\n@Component({\n selector: 'lib-coinflow-cvv-input',\n standalone: true,\n imports: [],\n template: '<div id=\"{{TokenExCvvContainerID}}\" ></div>',\n})\nexport class CoinflowCvvInputComponent {\n protected readonly TokenExCvvContainerID = TokenExCvvContainerID;\n}\n","import {\n Component,\n inject,\n Input,\n OnDestroy,\n SimpleChanges,\n} from '@angular/core';\nimport {\n CoinflowCvvOnlyInputProps,\n MerchantIdOrCheckoutJwt,\n setTokenExScriptTag,\n TokenExCvvContainerID,\n TokenExIframe,\n} from '../common';\nimport {CardFormService} from './CardFormService';\n\n@Component({\n selector: 'lib-coinflow-cvv-only-input',\n standalone: true,\n imports: [],\n template: '<div id=\"{{TokenExCvvContainerID}}\"></div>',\n})\nexport class CoinflowCvvOnlyInputComponent implements OnDestroy {\n private cardFormService = inject(CardFormService);\n @Input() args!: CoinflowCvvOnlyInputProps & MerchantIdOrCheckoutJwt;\n private iframe: TokenExIframe | undefined = undefined;\n\n private onScriptLoaded() {\n this.cardFormService\n .initializeCvvOnlyTokenExIframe({\n ...this.args,\n css: JSON.stringify(this.args.css),\n })\n .then(iframe => {\n this.iframe = iframe;\n })\n .catch(e => console.error(e));\n }\n\n private cleanup() {\n if (this.iframe) {\n const iframeElement = document.querySelector(`#${TokenExCvvContainerID}`);\n if (iframeElement) iframeElement.innerHTML = '';\n this.iframe = undefined;\n }\n }\n\n private initializeTokenEx() {\n setTokenExScriptTag({\n env: this.args.env,\n setTokenExScriptLoaded: this.onScriptLoaded.bind(this),\n });\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.args && !changes.args.firstChange) {\n this.reinitialize();\n }\n }\n\n public reinitialize() {\n this.cleanup();\n setTimeout(() => {\n this.initializeTokenEx();\n }, 500);\n }\n\n ngOnInit() {\n this.initializeTokenEx();\n }\n\n ngOnDestroy() {\n this.iframe = undefined;\n }\n\n tokenize() {\n return this.iframe!.tokenize();\n }\n\n protected readonly TokenExCvvContainerID = TokenExCvvContainerID;\n}\n","import {Component, Input} from '@angular/core';\nimport {CoinflowIFrameComponent} from '../coinflow-iframe.component';\nimport {\n CoinflowIFrameProps,\n CoinflowPurchaseProps,\n CoinflowUtils,\n getHandlers,\n getWalletPubkey,\n IFrameMessageHandlers,\n} from '../common';\nimport {WithOnLoad} from '../../public-api';\n\n@Component({\n selector: 'lib-coinflow-mobile-wallet-button',\n standalone: true,\n imports: [CoinflowIFrameComponent],\n template: ` <div style=\"position: relative; height: 100%;\">\n <div\n [style.background-color]=\"purchaseProps.color\"\n [style.display]=\"overlayDisplayOverride ?? display\"\n [style.opacity]=\"opacity\"\n [style.align-items]=\"alignItems\"\n style=\"width: 100%; height: 40px; position: absolute; top: 0; bottom: 0; left: 0; z-index: 20; justify-content: center; pointer-events: none;\"\n >\n <ng-content></ng-content>\n </div>\n <div style=\"position: relative; z-index: 10; height: 100%;\">\n <lib-coinflow-iframe\n (messageEvent)=\"handleMessage($event)\"\n ng-if=\"iframeProps && messageHandlers\"\n [iframeProps]=\"iframeProps!\"\n [messageHandlers]=\"messageHandlers!\"\n [onLoad]=\"purchaseProps?.onLoad\"\n [waitForLoadedMessage]=\"true\"\n ></lib-coinflow-iframe>\n </div>\n </div>`,\n})\nexport class CoinflowMobileWalletButtonComponent {\n @Input() purchaseProps!: CoinflowPurchaseProps &\n WithOnLoad & {\n color: 'white' | 'black';\n onError?: (message: string) => void;\n };\n\n @Input() route!: string;\n @Input() overlayDisplayOverride: string | undefined;\n @Input() alignItems: string | undefined;\n opacity: number = 0.8;\n display: string = 'flex';\n\n iframeProps?: CoinflowIFrameProps;\n messageHandlers?: IFrameMessageHandlers;\n\n handleMessage({data}: {data: string}) {\n try {\n const res = JSON.parse(data);\n\n console.log({data});\n if ('method' in res && res.data.startsWith('ERROR')) {\n this.purchaseProps.onError?.(res.info);\n return;\n }\n\n if ('method' in res && res.method === 'loaded') {\n this.opacity = 1;\n setTimeout(() => {\n this.display = 'none';\n }, 2000);\n }\n } catch (e) {}\n }\n\n ngOnInit() {\n const walletPubkey = getWalletPubkey(this.purchaseProps);\n this.messageHandlers = getHandlers(this.purchaseProps);\n this.messageHandlers.handleHeightChange =\n this.purchaseProps.handleHeightChange;\n\n const handleHeightChangeId = Math.random().toString(16).substring(2);\n\n this.iframeProps = {\n ...this.purchaseProps,\n walletPubkey,\n route: `/${this.route}/${this.purchaseProps?.merchantId}`,\n routePrefix: 'form',\n transaction: CoinflowUtils.getTransaction(this.purchaseProps),\n handleHeightChangeId,\n };\n }\n}\n","import {Component, Input} from '@angular/core';\nimport {CoinflowPurchaseProps} from '../common';\nimport {CoinflowMobileWalletButtonComponent} from './coinflow-mobile-wallet-button.component';\n\n@Component({\n selector: 'lib-coinflow-apple-pay-button',\n standalone: true,\n imports: [CoinflowMobileWalletButtonComponent],\n template: ` <lib-coinflow-mobile-wallet-button\n ng-if=\"iframeProps && messageHandlers\"\n [purchaseProps]=\"purchaseProps\"\n route=\"apple-pay\"\n >\n <svg id=\"svg-logo\" viewBox=\"0 0 35 15\">\n <svg\n id=\"svg-logo\"\n x=\"0\"\n y=\"3.85\"\n height=\"7.3\"\n width=\"35\"\n className=\"logo\"\n viewBox=\"0 0 105 43\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n >\n <title>Apple Logo</title>\n <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <g [attr.fill]=\"fill()\">\n <path\n d=\"M19.4028,5.5674 C20.6008,4.0684 21.4138,2.0564 21.1998,0.0004 C19.4458,0.0874 17.3058,1.1574 16.0668,2.6564 C14.9538,3.9414 13.9688,6.0374 14.2258,8.0074 C16.1948,8.1784 18.1618,7.0244 19.4028,5.5674\"\n ></path>\n <path\n d=\"M21.1772,8.3926 C18.3182,8.2226 15.8872,10.0156 14.5212,10.0156 C13.1552,10.0156 11.0642,8.4786 8.8022,8.5196 C5.8592,8.5626 3.1282,10.2276 1.6342,12.8746 C-1.4378,18.1696 0.8232,26.0246 3.8112,30.3376 C5.2622,32.4716 7.0102,34.8206 9.3142,34.7366 C11.4912,34.6506 12.3442,33.3266 14.9902,33.3266 C17.6352,33.3266 18.4042,34.7366 20.7082,34.6936 C23.0972,34.6506 24.5922,32.5586 26.0422,30.4226 C27.7072,27.9906 28.3882,25.6426 28.4312,25.5126 C28.3882,25.4706 23.8232,23.7186 23.7812,18.4676 C23.7382,14.0706 27.3652,11.9786 27.5362,11.8496 C25.4882,8.8196 22.2872,8.4786 21.1772,8.3926\"\n ></path>\n <path\n d=\"M85.5508,43.0381 L85.5508,39.1991 C85.8628,39.2421 86.6158,39.2871 87.0158,39.2871 C89.2138,39.2871 90.4558,38.3551 91.2108,35.9581 L91.6548,34.5371 L83.2428,11.2321 L88.4368,11.2321 L94.2958,30.1421 L94.4068,30.1421 L100.2668,11.2321 L105.3278,11.2321 L96.6048,35.7141 C94.6078,41.3291 92.3208,43.1721 87.4828,43.1721 C87.1048,43.1721 85.8838,43.1271 85.5508,43.0381\"\n ></path>\n <path\n d=\"M42.6499,19.3555 L48.3549,19.3555 C52.6829,19.3555 55.1469,17.0255 55.1469,12.9855 C55.1469,8.9455 52.6829,6.6375 48.3769,6.6375 L42.6499,6.6375 L42.6499,19.3555 Z M49.6869,2.4425 C55.9009,2.4425 60.2289,6.7265 60.2289,12.9625 C60.2289,19.2225 55.8129,23.5285 49.5309,23.5285 L42.6499,23.5285 L42.6499,34.4705 L37.6779,34.4705 L37.6779,2.4425 L49.6869,2.4425 Z\"\n ></path>\n <path\n d=\"M76.5547,25.7705 L76.5547,23.9715 L71.0287,24.3275 C67.9207,24.5275 66.3007,25.6815 66.3007,27.7015 C66.3007,29.6545 67.9887,30.9195 70.6287,30.9195 C74.0027,30.9195 76.5547,28.7665 76.5547,25.7705 M61.4617,27.8345 C61.4617,23.7285 64.5917,21.3755 70.3627,21.0205 L76.5547,20.6425 L76.5547,18.8675 C76.5547,16.2705 74.8457,14.8495 71.8057,14.8495 C69.2967,14.8495 67.4777,16.1375 67.0997,18.1125 L62.6167,18.1125 C62.7497,13.9615 66.6567,10.9435 71.9387,10.9435 C77.6207,10.9435 81.3267,13.9175 81.3267,18.5345 L81.3267,34.4705 L76.7327,34.4705 L76.7327,30.6305 L76.6217,30.6305 C75.3127,33.1395 72.4267,34.7145 69.2967,34.7145 C64.6807,34.7145 61.4617,31.9625 61.4617,27.8345\"\n ></path>\n </g>\n </g>\n </svg>\n </svg>\n </lib-coinflow-mobile-wallet-button>`,\n})\nexport class CoinflowApplePayButtonComponent {\n @Input() purchaseProps!: CoinflowPurchaseProps & {\n color: 'white' | 'black';\n onError?: (message: string) => void;\n };\n\n fill() {\n return this.purchaseProps.color === 'white' ? '#000' : '#FFF';\n }\n}\n","import {Component, Input} from '@angular/core';\n\n@Component({\n selector: 'coinflow-google-pay-overlay',\n standalone: true,\n imports: [],\n template: `\n @if (color === 'white') {\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"41\" height=\"17\">\n <g fill=\"none\" fill-rule=\"evenodd\">\n <path\n d=\"M19.526 2.635v4.083h2.518c.6 0 1.096-.202 1.488-.605.403-.402.605-.882.605-1.437 0-.544-.202-1.018-.605-1.422-.392-.413-.888-.62-1.488-.62h-2.518zm0 5.52v4.736h-1.504V1.198h3.99c1.013 0 1.873.337 2.582 1.012.72.675 1.08 1.497 1.08 2.466 0 .991-.36 1.819-1.08 2.482-.697.665-1.559.996-2.583.996h-2.485v.001zm7.668 2.287c0 .392.166.718.499.98.332.26.722.391 1.168.391.633 0 1.196-.234 1.692-.701.497-.469.744-1.019.744-1.65-.469-.37-1.123-.555-1.962-.555-.61 0-1.12.148-1.528.442-.409.294-.613.657-.613 1.093m1.946-5.815c1.112 0 1.989.297 2.633.89.642.594.964 1.408.964 2.442v4.932h-1.439v-1.11h-.065c-.622.914-1.45 1.372-2.486 1.372-.882 0-1.621-.262-2.215-.784-.594-.523-.891-1.176-.891-1.96 0-.828.313-1.486.94-1.976s1.463-.735 2.51-.735c.892 0 1.629.163 2.206.49v-.344c0-.522-.207-.966-.621-1.33a2.132 2.132 0 0 0-1.455-.547c-.84 0-1.504.353-1.995 1.062l-1.324-.834c.73-1.045 1.81-1.568 3.238-1.568m11.853.262l-5.02 11.53H34.42l1.864-4.034-3.302-7.496h1.635l2.387 5.749h.032l2.322-5.75z\"\n fill=\"#5F6368\"\n />\n <path\n d=\"M13.448 7.134c0-.473-.04-.93-.116-1.366H6.988v2.588h3.634a3.11 3.11 0 0 1-1.344 2.042v1.68h2.169c1.27-1.17 2.001-2.9 2.001-4.944\"\n fill=\"#4285F4\"\n />\n <path\n d=\"M6.988 13.7c1.816 0 3.344-.595 4.459-1.621l-2.169-1.681c-.603.406-1.38.643-2.29.643-1.754 0-3.244-1.182-3.776-2.774H.978v1.731a6.728 6.728 0 0 0 6.01 3.703\"\n fill=\"#34A853\"\n />\n <path\n d=\"M3.212 8.267a4.034 4.034 0 0 1 0-2.572V3.964H.978A6.678 6.678 0 0 0 .261 6.98c0 1.085.26 2.11.717 3.017l2.234-1.731z\"\n fill=\"#FABB05\"\n />\n <path\n d=\"M6.988 2.921c.992 0 1.88.34 2.58 1.008v.001l1.92-1.918C10.324.928 8.804.262 6.989.262a6.728 6.728 0 0 0-6.01 3.702l2.234 1.731c.532-1.592 2.022-2.774 3.776-2.774\"\n fill=\"#E94235\"\n />\n <path d=\"M0 0h41.285v18H0z\" />\n </g>\n </svg>\n } @else {\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"41\" height=\"17\">\n <g fill=\"none\" fill-rule=\"evenodd\">\n <path\n d=\"M19.526 2.635v4.083h2.518c.6 0 1.096-.202 1.488-.605.403-.402.605-.882.605-1.437 0-.544-.202-1.018-.605-1.422-.392-.413-.888-.62-1.488-.62h-2.518zm0 5.52v4.736h-1.504V1.198h3.99c1.013 0 1.873.337 2.582 1.012.72.675 1.08 1.497 1.08 2.466 0 .991-.36 1.819-1.08 2.482-.697.665-1.559.996-2.583.996h-2.485v.001zm7.668 2.287c0 .392.166.718.499.98.332.26.722.391 1.168.391.633 0 1.196-.234 1.692-.701.497-.469.744-1.019.744-1.65-.469-.37-1.123-.555-1.962-.555-.61 0-1.12.148-1.528.442-.409.294-.613.657-.613 1.093m1.946-5.815c1.112 0 1.989.297 2.633.89.642.594.964 1.408.964 2.442v4.932h-1.439v-1.11h-.065c-.622.914-1.45 1.372-2.486 1.372-.882 0-1.621-.262-2.215-.784-.594-.523-.891-1.176-.891-1.96 0-.828.313-1.486.94-1.976s1.463-.735 2.51-.735c.892 0 1.629.163 2.206.49v-.344c0-.522-.207-.966-.621-1.33a2.132 2.132 0 0 0-1.455-.547c-.84 0-1.504.353-1.995 1.062l-1.324-.834c.73-1.045 1.81-1.568 3.238-1.568m11.853.262l-5.02 11.53H34.42l1.864-4.034-3.302-7.496h1.635l2.387 5.749h.032l2.322-5.75z\"\n fill=\"#FFF\"\n />\n <path\n d=\"M13.448 7.134c0-.473-.04-.93-.116-1.366H6.988v2.588h3.634a3.11 3.11 0 0 1-1.344 2.042v1.68h2.169c1.27-1.17 2.001-2.9 2.001-4.944\"\n fill=\"#4285F4\"\n />\n <path\n d=\"M6.988 13.7c1.816 0 3.344-.595 4.459-1.621l-2.169-1.681c-.603.406-1.38.643-2.29.643-1.754 0-3.244-1.182-3.776-2.774H.978v1.731a6.728 6.728 0 0 0 6.01 3.703\"\n fill=\"#34A853\"\n />\n <path\n d=\"M3.212 8.267a4.034 4.034 0 0 1 0-2.572V3.964H.978A6.678 6.678 0 0 0 .261 6.98c0 1.085.26 2.11.717 3.017l2.234-1.731z\"\n fill=\"#FABB05\"\n />\n <path\n d=\"M6.988 2.921c.992 0 1.88.34 2.58 1.008v.001l1.92-1.918C10.324.928 8.804.262 6.989.262a6.728 6.728 0 0 0-6.01 3.702l2.234 1.731c.532-1.592 2.022-2.774 3.776-2.774\"\n fill=\"#E94235\"\n />\n </g>\n </svg>\n }\n `,\n})\nexport class CoinflowGooglePayOverlayComponent {\n @Input() color!: 'white' | 'black';\n}\n","import {Component, Input} from '@angular/core';\nimport {CoinflowPurchaseProps} from '../common';\nimport {CoinflowMobileWalletButtonComponent} from './coinflow-mobile-wallet-button.component';\nimport {CoinflowGooglePayOverlayComponent} from './google-pay-overlay.component';\n\n@Component({\n selector: 'lib-coinflow-google-pay-button',\n standalone: true,\n imports: [\n CoinflowMobileWalletButtonComponent,\n CoinflowGooglePayOverlayComponent,\n ],\n template: `<lib-coinflow-mobile-wallet-button\n ng-if=\"iframeProps && messageHandlers\"\n [purchaseProps]=\"purchaseProps\"\n route=\"google-pay\"\n alignItems=\"center\"\n overlayDisplayOverride=\"flex\"\n >\n <coinflow-google-pay-overlay\n [color]=\"purchaseProps.color\"\n ></coinflow-google-pay-overlay>\n </lib-coinflow-mobile-wallet-button> `,\n})\nexport class CoinflowGooglePayButtonComponent {\n @Input() purchaseProps!: CoinflowPurchaseProps & {\n color: 'white' | 'black';\n onError?: (message: string) => void;\n };\n}\n","/*\n * Public API Surface of coinflowlabs\n */\n\nexport * from './lib/coinflow-iframe.component';\nexport * from './lib/coinflow-purchase.component';\nexport * from './lib/coinflow-purchase-history.component';\nexport * from './lib/coinflow-purchase-protection.component';\nexport * from './lib/coinflow-withdraw.component';\nexport * from './lib/coinflow-withdraw-history.component';\n\nexport * from './lib/card-form/coinflow-card-number-input.component';\nexport * from './lib/card-form/coinflow-card-number-only-input.component';\nexport * from './lib/card-form/coinflow-cvv-input.component';\nexport * from './lib/card-form/coinflow-cvv-only-input.component';\n\nexport * from './lib/mobile-wallet/coinflow-apple-pay-button.component';\nexport * from './lib/mobile-wallet/coinflow-google-pay-button.component';\n\nexport * from './lib/common';\n\nexport type WithOnLoad = {\n onLoad?: () => void | Promise<void>;\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["getNSureDeviceId"],"mappings":"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,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AAEX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACb,CAAC,EA9JW,QAAQ,KAAR,QAAQ,GAAA,EAAA,CAAA,CAAA;AAgKb,MAAM,iBAAiB,GAA6B;AACzD,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,C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"}
|
|
1
|
+
{"version":3,"file":"coinflowlabs-angular.mjs","sources":["../../../projects/coinflowlabs/src/lib/common/CoinflowTypes.ts","../../../projects/coinflowlabs/src/lib/common/SolanaPeerDeps.ts","../../../projects/coinflowlabs/src/lib/common/types/Subtotal.ts","../../../projects/coinflowlabs/src/lib/common/NSure.ts","../../../projects/coinflowlabs/src/lib/common/CoinflowUtils.ts","../../../projects/coinflowlabs/src/lib/common/CoinflowLibMessageHandlers.ts","../../../projects/coinflowlabs/src/lib/common/EventBus.ts","../../../projects/coinflowlabs/src/lib/common/card-form/TokenEx.ts","../../../projects/coinflowlabs/src/lib/common/card-form/tokenexHelpers.ts","../../../projects/coinflowlabs/src/lib/common/types/nftCartItem.ts","../../../projects/coinflowlabs/src/lib/coinflow-iframe.component.ts","../../../projects/coinflowlabs/src/lib/coinflow-purchase.component.ts","../../../projects/coinflowlabs/src/lib/coinflow-purchase-history.component.ts","../../../projects/coinflowlabs/src/lib/coinflow-purchase-protection.component.ts","../../../projects/coinflowlabs/src/lib/coinflow-withdraw.component.ts","../../../projects/coinflowlabs/src/lib/coinflow-withdraw-history.component.ts","../../../projects/coinflowlabs/src/lib/card-form/CardFormService.ts","../../../projects/coinflowlabs/src/lib/card-form/coinflow-card-number-input.component.ts","../../../projects/coinflowlabs/src/lib/card-form/coinflow-card-number-only-input.component.ts","../../../projects/coinflowlabs/src/lib/card-form/coinflow-cvv-input.component.ts","../../../projects/coinflowlabs/src/lib/card-form/coinflow-cvv-only-input.component.ts","../../../projects/coinflowlabs/src/lib/mobile-wallet/coinflow-mobile-wallet-button.component.ts","../../../projects/coinflowlabs/src/lib/mobile-wallet/coinflow-apple-pay-button.component.ts","../../../projects/coinflowlabs/src/lib/mobile-wallet/google-pay-overlay.component.ts","../../../projects/coinflowlabs/src/lib/mobile-wallet/coinflow-google-pay-button.component.ts","../../../projects/coinflowlabs/src/public-api.ts","../../../projects/coinflowlabs/src/coinflowlabs-angular.ts"],"sourcesContent":["import type {\n Connection,\n VersionedTransaction,\n PublicKey,\n Signer,\n Transaction,\n} from '@solana/web3.js';\nimport {Currency, Subtotal} from './types/Subtotal';\nimport {GiftCardCartItem} from './types/giftCardCartItem';\nimport {nftCartItem} from './types/nftCartItem';\nimport {CryptoCartItem} from './types/cryptoCartItem';\nimport {MoneyTopUpCartItem} from './types/moneyTopUpCartItem';\n\nexport enum WithdrawCategory {\n USER = 'user',\n BUSINESS = 'business',\n}\n\nexport enum WithdrawSpeed {\n ASAP = 'asap',\n SAME_DAY = 'same_day',\n STANDARD = 'standard',\n CARD = 'card',\n IBAN = 'iban',\n PIX = 'pix',\n EFT = 'eft',\n VENMO = 'venmo',\n PAYPAL = 'paypal',\n WIRE = 'wire',\n INTERAC = 'interac',\n}\n\nexport enum SettlementType {\n Credits = 'Credits',\n USDC = 'USDC',\n Bank = 'Bank', // Deprecated, is the same as USDC\n}\n\n/**\n * Configuration for zero authorization flow - controls saved payment method visibility.\n */\nexport interface ZeroAuthSavedPaymentMethods {\n disableSavedPaymentMethods: boolean;\n}\n\n/**\n * Configuration for zero authorization flow - verify existing card mode.\n * Shows the \"Verify Card\" flow for a specific saved card.\n * The card token will be validated to ensure it belongs to the current user's wallet.\n * If the card doesn't belong to the user, falls back to \"Add New Card\" view.\n */\nexport interface ZeroAuthVerifyCard {\n cardToken: string;\n}\n\n/**\n * Configuration for zero authorization flow.\n * The presence of this object indicates the checkout is in zero auth mode.\n *\n * Two mutually exclusive modes:\n * - Saved payment methods: `{ disableSavedPaymentMethods: boolean }` - show or hide saved methods\n * - Verify card: `{ cardToken: \"token\" }` - verify a specific saved card\n */\nexport type ZeroAuthorizationConfig =\n | ZeroAuthSavedPaymentMethods\n | ZeroAuthVerifyCard;\n\nexport function isZeroAuthVerifyCard(\n config: ZeroAuthorizationConfig\n): config is ZeroAuthVerifyCard {\n return 'cardToken' in config;\n}\n\nexport function isZeroAuthSavedPaymentMethods(\n config: ZeroAuthorizationConfig\n): config is ZeroAuthSavedPaymentMethods {\n return 'disableSavedPaymentMethods' in config;\n}\n\nexport enum MerchantStyle {\n Rounded = 'rounded',\n Sharp = 'sharp',\n Pill = 'pill',\n}\n\nexport type MerchantTheme = {\n primary?: string;\n background?: string;\n backgroundAccent?: string;\n backgroundAccent2?: string;\n textColor?: string;\n textColorAccent?: string;\n textColorAction?: string;\n ctaColor?: string;\n font?: string;\n style?: MerchantStyle;\n};\n\ninterface BaseCustomerInfo {\n verificationId?: string;\n displayName?: string;\n address?: string;\n city?: string;\n state?: string;\n zip?: string;\n country?: string;\n ip?: string;\n lat?: string;\n lng?: string;\n /**\n * Date of birth in YYYY-MM-DD format\n */\n dob?: string;\n email?: string;\n}\n\nexport interface NameCustomerInfo extends BaseCustomerInfo {\n /**\n * @hidden\n */\n name?: string;\n}\n\nexport interface SplitNameCustomerInfo extends BaseCustomerInfo {\n /**\n * @minLength 1\n */\n firstName: string;\n /**\n * @minLength 1\n */\n lastName: string;\n}\n\nexport type CustomerInfo = SplitNameCustomerInfo | NameCustomerInfo;\n\n/** Coinflow Types **/\nexport type CoinflowBlockchain =\n | 'solana'\n | 'eth'\n | 'polygon'\n | 'base'\n | 'arbitrum'\n | 'stellar'\n | 'monad'\n | 'user';\nexport type CoinflowEnvs =\n | 'prod'\n | 'staging'\n | 'staging-live'\n | 'sandbox'\n | 'local';\n\nexport interface CoinflowTypes {\n merchantId: string;\n env?: CoinflowEnvs;\n loaderBackground?: string;\n blockchain?: CoinflowBlockchain | undefined;\n handleHeightChange?: (height: string) => void;\n theme?: MerchantTheme;\n}\n\nexport type PartialBy<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;\n\nexport type MergeWithOptionalDiff<A, B> =\n // shared fields (required)\n Pick<A, Extract<keyof A, keyof B>> &\n Pick<B, Extract<keyof B, keyof A>> &\n // A-only fields (optional)\n Partial<Omit<A, keyof B>> &\n // B-only fields (optional)\n Partial<Omit<B, keyof A>>;\n\nexport type OnSuccessMethod = (\n args:\n | {\n paymentId: string;\n hash?: string | undefined;\n }\n | string\n) => void | Promise<void>;\n\nexport type AuthDeclinedWalletCallInfo = {\n title: string;\n code: string;\n action: string;\n message: string;\n total: string;\n};\n\nexport type OnAuthDeclinedMethod = (\n args: AuthDeclinedWalletCallInfo\n) => void | Promise<void>;\n\n/** Wallets **/\nexport interface SolanaWallet {\n publicKey: PublicKey | null;\n signTransaction?: <T extends Transaction | VersionedTransaction>(\n transaction: T\n ) => Promise<T>;\n sendTransaction: <T extends Transaction | VersionedTransaction>(\n transaction: T\n ) => Promise<string>;\n signMessage?: (message: Uint8Array) => Promise<Uint8Array>;\n}\n\ntype AccessList = Array<{address: string; storageKeys: Array<string>}>;\ntype AccessListish =\n | AccessList\n | Array<[string, Array<string>]>\n | Record<string, Array<string>>;\n\nexport type EthWallet = {\n address: string | null | undefined;\n sendTransaction: (transaction: {\n to: string;\n from?: string;\n nonce?: Bytes | bigint | string | number;\n\n gasLimit?: Bytes | bigint | string | number;\n gasPrice?: Bytes | bigint | string | number;\n\n data?: BytesLike;\n value?: Bytes | bigint | string | number;\n chainId?: number;\n\n type?: number;\n accessList?: AccessListish;\n\n maxPriorityFeePerGas?: Bytes | bigint | string | number;\n maxFeePerGas?: Bytes | bigint | string | number;\n\n customData?: Record<string, any>;\n ccipReadEnabled?: boolean;\n }) => Promise<{hash: string}>;\n signMessage: (message: string) => Promise<string>;\n};\n\nexport interface StellarWallet {\n address: string | null;\n sendTransaction: (base64Xdr: string) => Promise<string>;\n signTransaction: (base64Xdr: string) => Promise<string>;\n signMessage: (message: string) => Promise<string>;\n}\n\n/** History **/\nexport interface CoinflowSolanaHistoryProps extends CoinflowTypes {\n wallet: SolanaWallet;\n connection: Connection;\n blockchain: 'solana';\n}\n\nexport interface CoinflowSessionKeyHistoryProps extends CoinflowTypes {\n sessionKey: string;\n blockchain?: undefined;\n}\n\nexport interface CoinflowEvmHistoryProps extends CoinflowTypes {\n wallet: EthWallet;\n blockchain: 'eth' | 'polygon' | 'base' | 'arbitrum' | 'monad';\n}\n\nexport interface CoinflowEthHistoryProps extends CoinflowEvmHistoryProps {\n blockchain: 'eth';\n}\n\nexport interface CoinflowPolygonHistoryProps extends CoinflowEvmHistoryProps {\n blockchain: 'polygon';\n}\n\nexport interface CoinflowBaseHistoryProps extends CoinflowEvmHistoryProps {\n blockchain: 'base';\n}\n\nexport interface CoinflowArbitrumHistoryProps extends CoinflowEvmHistoryProps {\n blockchain: 'arbitrum';\n}\n\nexport interface CoinflowStellarHistoryProps extends CoinflowTypes {\n wallet: StellarWallet;\n blockchain: 'stellar';\n}\n\nexport interface CoinflowMonadHistoryProps extends CoinflowEvmHistoryProps {\n blockchain: 'monad';\n}\n\nexport type CoinflowHistoryProps =\n | CoinflowSolanaHistoryProps\n | CoinflowPolygonHistoryProps\n | CoinflowEthHistoryProps\n | CoinflowBaseHistoryProps\n | CoinflowArbitrumHistoryProps\n | CoinflowStellarHistoryProps\n | CoinflowMonadHistoryProps\n | CoinflowSessionKeyHistoryProps;\n\ntype Bytes = ArrayLike<number>;\ntype BytesLike = Bytes | string;\n\n/** Purchase **/\n\nexport type CartClassOmitted = CartItemClassOmitted[];\nexport type ChargebackProtectionData = CartClassOmitted;\n\nexport type CartItemClassOmitted =\n | NftCartItemClassOmitted\n | Omit<GiftCardCartItem, 'listPrice'>\n | CryptoCartItem\n | MoneyTopUpCartItem;\nexport type ChargebackProtectionItem = CartItemClassOmitted;\n\nexport type NftCartItemClassOmitted = Omit<\n nftCartItem,\n 'sellingPrice' | 'itemClass'\n>;\n\nexport type Cart = CartItem[];\nexport type CartItem =\n | Omit<nftCartItem, 'listPrice' | 'sellingPrice'>\n | Omit<GiftCardCartItem, 'listPrice'>\n | CryptoCartItem\n | MoneyTopUpCartItem;\n\nexport enum ThreeDsChallengePreference {\n NoPreference = 'NoPreference',\n Frictionless = 'Frictionless',\n Challenge = 'Challenge',\n}\n\nexport enum PaymentMethods {\n card = 'card',\n ach = 'ach',\n fasterPayments = 'fasterPayments',\n sepa = 'sepa',\n pix = 'pix',\n usdc = 'usdc',\n googlePay = 'googlePay',\n applePay = 'applePay',\n credits = 'credits',\n crypto = 'crypto',\n instantBankTransfer = 'instantBankTransfer',\n wire = 'wire',\n}\n\nexport const paymentMethodLabels: Record<PaymentMethods, string> = {\n [PaymentMethods.card]: 'Card',\n [PaymentMethods.ach]: 'ACH',\n [PaymentMethods.fasterPayments]: 'Faster Payments',\n [PaymentMethods.sepa]: 'SEPA',\n [PaymentMethods.pix]: 'PIX',\n [PaymentMethods.usdc]: 'USDC',\n [PaymentMethods.googlePay]: 'Google Pay',\n [PaymentMethods.applePay]: 'Apple Pay',\n [PaymentMethods.credits]: 'Credits',\n [PaymentMethods.crypto]: 'Crypto',\n [PaymentMethods.instantBankTransfer]: 'Instant Bank Transfer',\n [PaymentMethods.wire]: 'Wire Transfer',\n};\n\nexport interface CoinflowCommonPurchaseProps extends CoinflowTypes {\n subtotal?: Subtotal;\n presentment?: Currency;\n onSuccess?: OnSuccessMethod;\n onAuthDeclined?: OnAuthDeclinedMethod;\n webhookInfo?: {\n [key: string]: any;\n };\n email?: string;\n chargebackProtectionData?: ChargebackProtectionData;\n planCode?: string;\n /**\n * The payment methods displayed on the UI. If omitted, all available payment methods will be displayed.\n */\n allowedPaymentMethods?: PaymentMethods[];\n customerInfo?: CustomerInfo;\n settlementType?: SettlementType;\n authOnly?: boolean;\n /**\n * @deprecated Use zeroAuthorizationConfig instead for more control over zero auth behavior.\n * Simple boolean flag for zero authorization mode. When true, defaults to showing saved payment methods.\n */\n isZeroAuthorization?: boolean;\n /**\n * Configuration for zero authorization flow. Takes precedence over isZeroAuthorization if both are provided.\n * Use this to control whether saved payment methods are shown and to pre-select a specific card for verification.\n */\n zeroAuthorizationConfig?: ZeroAuthorizationConfig;\n /**\n * If true, pre-checks the partial USDC payment checkbox when USDC balance is available.\n * If false or undefined, maintains default behavior (unchecked).\n */\n partialUsdcChecked?: boolean;\n /**\n * The DeviceID gotten from the Coinflow SDK:\n * https://docs.coinflow.cash/guides/checkout/fraud-protection/chargeback-protection/implement-chargeback-protection#how-to-add-chargeback-protection\n *\n * nSureSDK.getDeviceId()\n */\n deviceId?: string;\n jwtToken?: string;\n /**\n * Your company email address that the customer can contact.\n */\n supportEmail?: string;\n /**\n * If rendering the Coinflow component within multiple nested iframes, all ancestors in the chain must be provided as a comma-separated list.\n *\n * Example:\n * Primary origin that will be interacting with the Coinflow iFrame: foo.com\n * Subsequent origins that will render foo.com: bar.com\n * The origin array would then be: [https://foo.com,https://bar.com]\n */\n origins?: string[];\n threeDsChallengePreference?: ThreeDsChallengePreference;\n destinationAuthKey?: string;\n accountFundingTransaction?: AccountFundingTransaction;\n}\n\n/**\n * Used for Account Funding Transactions\n */\nexport interface AccountFundingTransaction {\n /**\n * Recipient information for Account Funding Transactions (AFT).\n * Required when AFT is enabled and type requires it.\n */\n recipientAftInfo?: RecipientAftInfo;\n}\n\nexport interface CoinflowSolanaPurchaseProps extends CoinflowCommonPurchaseProps {\n wallet: SolanaWallet;\n transaction?: Transaction | VersionedTransaction;\n partialSigners?: Signer[];\n debugTx?: boolean;\n connection: Connection;\n blockchain: 'solana';\n rent?: {lamports: string | number};\n nativeSolToConvert?: {lamports: string | number};\n redemptionCheck?: boolean;\n}\n\nexport interface CoinflowSessionKeyPurchaseProps extends CoinflowCommonPurchaseProps {\n sessionKey: string;\n wallet?: undefined;\n blockchain?: CoinflowBlockchain | undefined;\n}\n\nexport interface CoinflowEvmPurchaseProps extends CoinflowCommonPurchaseProps {\n transaction?: EvmTransactionData;\n wallet: EthWallet;\n}\n\nexport interface CoinflowPolygonPurchaseProps extends CoinflowEvmPurchaseProps {\n blockchain: 'polygon';\n}\n\nexport interface CoinflowEthPurchaseProps extends CoinflowEvmPurchaseProps {\n blockchain: 'eth';\n}\n\nexport interface CoinflowBasePurchaseProps extends CoinflowEvmPurchaseProps {\n blockchain: 'base';\n}\n\nexport interface CoinflowArbitrumPurchaseProps extends CoinflowEvmPurchaseProps {\n blockchain: 'arbitrum';\n}\n\nexport interface CoinflowStellarPurchaseProps extends CoinflowCommonPurchaseProps {\n wallet: StellarWallet;\n transaction?: string;\n blockchain: 'stellar';\n}\n\nexport interface CoinflowMonadPurchaseProps extends CoinflowEvmPurchaseProps {\n blockchain: 'monad';\n}\n\nexport type CoinflowPurchaseProps =\n | CoinflowSolanaPurchaseProps\n | CoinflowSessionKeyPurchaseProps\n | CoinflowPolygonPurchaseProps\n | CoinflowEthPurchaseProps\n | CoinflowBasePurchaseProps\n | CoinflowArbitrumPurchaseProps\n | CoinflowStellarPurchaseProps\n | CoinflowMonadPurchaseProps;\n\n/** Withdraw **/\n\nexport interface CoinflowCommonWithdrawProps extends CoinflowTypes {\n onSuccess?: OnSuccessMethod;\n tokens?: string[];\n lockDefaultToken?: boolean;\n amount?: number;\n email?: string;\n bankAccountLinkRedirect?: string;\n additionalWallets?: {\n wallet: string;\n blockchain:\n | 'solana'\n | 'eth'\n | 'polygon'\n | 'base'\n | 'arbitrum'\n | 'monad'\n | 'stellar';\n }[];\n lockAmount?: boolean;\n transactionSigner?: string;\n /**\n * If rendering the Coinflow component within multiple nested iframes, all ancestors in the chain must be provided as a comma-separated list.\n *\n * Example:\n * Primary origin that will be interacting with the Coinflow iFrame: foo.com\n * Subsequent origins that will render foo.com: bar.com\n * The origin array would then be: [https://foo.com,https://bar.com]\n */\n origins?: string[];\n /**\n * If the withdrawer is authenticated with a sessionKey pass it here.\n */\n sessionKey?: string;\n /**\n * Array of allowed withdrawal speeds. If not provided, all speeds are allowed.\n */\n allowedWithdrawSpeeds?: WithdrawSpeed[];\n}\n\nexport type WalletTypes = SolanaWallet | EthWallet | StellarWallet;\n\nexport interface SolanaWalletProps {\n wallet: SolanaWallet;\n connection: Connection;\n blockchain: 'solana';\n}\n\nexport type CoinflowSolanaWithdrawProps = CoinflowCommonWithdrawProps &\n SolanaWalletProps;\n\ninterface EvmWalletProps {\n wallet: EthWallet;\n usePermit?: boolean;\n}\n\ntype CoinflowEvmWithdrawProps = CoinflowCommonWithdrawProps & EvmWalletProps;\n\nexport interface EthWalletProps {\n blockchain: 'eth';\n}\n\nexport type CoinflowEthWithdrawProps = CoinflowEvmWithdrawProps &\n EthWalletProps;\n\nexport interface PolygonWalletProps {\n blockchain: 'polygon';\n}\n\nexport type CoinflowPolygonWithdrawProps = CoinflowEvmWithdrawProps &\n PolygonWalletProps;\n\nexport interface BaseWalletProps {\n blockchain: 'base';\n}\n\nexport type CoinflowBaseWithdrawProps = CoinflowEvmWithdrawProps &\n BaseWalletProps;\n\nexport interface ArbitrumWalletProps {\n blockchain: 'arbitrum';\n}\n\nexport type CoinflowArbitrumWithdrawProps = CoinflowEvmWithdrawProps &\n ArbitrumWalletProps;\n\nexport interface StellarWalletProps {\n wallet: StellarWallet;\n blockchain: 'stellar';\n}\n\nexport type CoinflowStellarWithdrawProps = CoinflowCommonWithdrawProps &\n StellarWalletProps;\n\nexport interface MonadWalletProps {\n blockchain: 'monad';\n}\n\nexport type CoinflowMonadWithdrawProps = CoinflowEvmWithdrawProps &\n MonadWalletProps;\n\nexport type CoinflowWithdrawProps =\n | CoinflowSolanaWithdrawProps\n | CoinflowEthWithdrawProps\n | CoinflowPolygonWithdrawProps\n | CoinflowBaseWithdrawProps\n | CoinflowArbitrumWithdrawProps\n | CoinflowStellarWithdrawProps\n | CoinflowMonadWithdrawProps;\n\nexport interface CommonEvmRedeem {\n /**\n * Whether the UI should wait\n * for the transaction to be sent and\n * the hash to be returned.\n */\n waitForHash?: boolean;\n}\n\n/**\n * (EVM only) If your contract sends the item/service being purchased via a custom \"receiver\" field, then utilize this object.\n *\n * The coinflow contract calls the \"to\" contract, which transfers the NFT/item to the \"receiver\" address defined in the contract function arguments.\n */\nexport interface NormalRedeem extends CommonEvmRedeem {\n /**\n * Transaction to be called.\n */\n transaction: {\n /**\n * The merchant's whitelisted contract\n */\n to: string;\n /**\n * The data to call this contract with, HEX encoded.\n *\n * The coinflow contract calls the \"to\" contract, contract pulls USDC from msg.sender, and transfers the NFT/item to the \"receiver\" address defined in the contract function arguments.\n */\n data: string;\n };\n}\n\n/**\n * (EVM only) If your know the ID of the NFT being purchased, then utilize this object.\n *\n * The contract transfers the NFT to msg.sender (which is the Coinflow contract), the Coinflow contract fwd's the NFT to the end user's wallet.\n */\nexport interface KnownTokenIdRedeem extends NormalRedeem {\n /**\n * The address of the Nft's Contract\n *\n * @minLength 42 Please provide a valid EVM Address (42 Characters Long)\n * @maxLength 42 Please provide a valid EVM Address (42 Characters Long)\n */\n nftContract: string;\n /**\n * The ID of the NFT being purchased. Will be forwarded by the Coinflow contract to the customer's wallet.\n *\n * @minLength 1 Please provide a valid Nft Id\n */\n nftId: string;\n}\n\n/**\n * (EVM only) If your contract mints an NFT via a OpenZeppelin Safe Mint Call, then utilize this object.\n *\n * The contract mints the NFT to msg.sender (which is the Coinflow contract), the Coinflow contract picks up the SafeMint event, and fwd's the NFT to the end user's wallet.\n */\nexport interface SafeMintRedeem extends NormalRedeem {\n type: 'safeMint';\n nftContract?: string;\n}\n\n/**\n * (EVM only) If your contract returns the NFT ID, then utilize this object.\n *\n * The contract mints the NFT to msg.sender (which is the Coinflow contract), the Coinflow contract picks up the returned NFT ID, and fwd's the NFT to the end user's wallet.\n */\nexport interface ReturnedTokenIdRedeem extends NormalRedeem {\n type: 'returned';\n nftContract?: string;\n}\n\nexport interface TokenRedeem extends CommonEvmRedeem {\n type: 'token';\n destination: string;\n}\n\n/**\n * If your contract exists on a chain supported by Decent, pass this object in order to call it.\n */\nexport interface DecentRedeem extends CommonEvmRedeem {\n type: 'decent';\n /**\n * ID of the destination chain you will be using\n * Find your chain ID here: https://chainlist.org/\n */\n dstChainId: number;\n /**\n * Address on that chain of the token you will be receiving\n */\n dstToken: string;\n /**\n * The contract address which will be called on the destination chain\n */\n contractAddress: string;\n contractData: string;\n /**\n * Amount of the token on the destination chain you will be receiving\n */\n cost: {\n /**\n * This is the raw amount of the token\n * ex: 50000000000000n\n */\n amount: string;\n /**\n * Whether or not the token is the native token for the chain (ex: Ethereum - ETH, Polygon - POL).\n * If native dstToken should be the 0 address (0x00...)\n */\n isNative: boolean;\n };\n}\n\n/**\n * (EVM only) if you want to execute an EVM transaction on a successful purchase, you can pass a transaction request here.\n *\n * Gas fees for the transaction will be automatically calculated and added to the total charged to the customer. Optionally the merchant can opt to pay for these gas fees.\n */\nexport type EvmTransactionData =\n | SafeMintRedeem\n | ReturnedTokenIdRedeem\n | KnownTokenIdRedeem\n | NormalRedeem\n | TokenRedeem\n | DecentRedeem;\n\nexport interface CoinflowIFrameProps\n extends\n Omit<CoinflowTypes, 'merchantId' | 'handleHeightChange'>,\n Pick<\n CoinflowCommonPurchaseProps,\n | 'chargebackProtectionData'\n | 'webhookInfo'\n | 'subtotal'\n | 'presentment'\n | 'customerInfo'\n | 'settlementType'\n | 'email'\n | 'planCode'\n | 'deviceId'\n | 'jwtToken'\n | 'origins'\n | 'threeDsChallengePreference'\n | 'supportEmail'\n | 'allowedPaymentMethods'\n | 'accountFundingTransaction'\n | 'partialUsdcChecked'\n | 'isZeroAuthorization'\n | 'zeroAuthorizationConfig'\n >,\n Pick<\n CoinflowCommonWithdrawProps,\n | 'bankAccountLinkRedirect'\n | 'additionalWallets'\n | 'transactionSigner'\n | 'lockAmount'\n | 'lockDefaultToken'\n | 'origins'\n | 'allowedWithdrawSpeeds'\n >,\n Pick<CoinflowEvmPurchaseProps, 'authOnly'>,\n Pick<\n CoinflowSolanaPurchaseProps,\n 'rent' | 'nativeSolToConvert' | 'destinationAuthKey' | 'redemptionCheck'\n > {\n walletPubkey: string | null | undefined;\n sessionKey?: string;\n route: string;\n routePrefix?: string;\n transaction?: string;\n tokens?: string[] | PublicKey[];\n merchantCss?: string;\n color?: 'white' | 'black';\n disableApplePay?: boolean;\n disableGooglePay?: boolean;\n theme?: MerchantTheme;\n usePermit?: boolean;\n handleHeightChangeId: string | number;\n}\n\nexport enum CardType {\n VISA = 'VISA',\n MASTERCARD = 'MSTR',\n AMEX = 'AMEX',\n DISCOVER = 'DISC',\n}\n\nexport interface RecipientAftInfo {\n /**\n * @minLength 2\n */\n firstName: string;\n /**\n * @minLength 2\n */\n lastName: string;\n /**\n * @minLength 2\n */\n address1: string;\n /**\n * @minLength 2\n */\n city: string;\n /**\n * @minLength 2\n */\n postalCode: string;\n /**\n * @minLength 2\n */\n state?: string;\n /**\n * @minLength 2\n * @maxLength 2\n */\n countryCode: string;\n /**\n * Recipients Date Of Birth in YYYMMDD format.\n * @pattern ^\\d{8}$\n */\n dateOfBirth?: string;\n /**\n * @pattern ^\\d+$\n */\n phoneNumber?: string;\n documentReference?: string;\n}\n\nexport const RN_REDIRECT_MESSAGE_NAME = 'rnredirect'; // DO NOT CHANGE\n","// This works in angular, but not react\n// let web3: typeof import('@solana/web3.js') | undefined;\n// let base58: typeof import('bs58') | undefined;\n//\n// try {\n// web3 = require('@solana/web3.js');\n// base58 = require('bs58');\n// } catch (e) {}\n//\n// export {web3, base58};\n\n// This works in react, but not angular\nimport * as SolanaWeb3Js from '@solana/web3.js';\nimport base58Imported from 'bs58';\n\nconst web3: typeof SolanaWeb3Js | undefined = SolanaWeb3Js;\nconst base58: typeof base58Imported | undefined = base58Imported;\nexport {web3, base58};\n","export enum Currency {\n USD = 'USD',\n AED = 'AED',\n AFN = 'AFN',\n ALL = 'ALL',\n AMD = 'AMD',\n ANG = 'ANG',\n AOA = 'AOA',\n ARS = 'ARS',\n AUD = 'AUD',\n AWG = 'AWG',\n AZN = 'AZN',\n BAM = 'BAM',\n BBD = 'BBD',\n BDT = 'BDT',\n BGN = 'BGN',\n BHD = 'BHD',\n BIF = 'BIF',\n BMD = 'BMD',\n BND = 'BND',\n BOB = 'BOB',\n BRL = 'BRL',\n BSD = 'BSD',\n BTN = 'BTN',\n BWP = 'BWP',\n BYN = 'BYN',\n BZD = 'BZD',\n CAD = 'CAD',\n CHF = 'CHF',\n CLF = 'CLF',\n CLP = 'CLP',\n CNY = 'CNY',\n COP = 'COP',\n CRC = 'CRC',\n CUP = 'CUP',\n CVE = 'CVE',\n CZK = 'CZK',\n DJF = 'DJF',\n DKK = 'DKK',\n DOP = 'DOP',\n DZD = 'DZD',\n EGP = 'EGP',\n ETB = 'ETB',\n EUR = 'EUR',\n FJD = 'FJD',\n GBP = 'GBP',\n GEL = 'GEL',\n GHS = 'GHS',\n GMD = 'GMD',\n GNF = 'GNF',\n GTQ = 'GTQ',\n GYD = 'GYD',\n HKD = 'HKD',\n HNL = 'HNL',\n HTG = 'HTG',\n HUF = 'HUF',\n IDR = 'IDR',\n ILS = 'ILS',\n INR = 'INR',\n IQD = 'IQD',\n IRR = 'IRR',\n ISK = 'ISK',\n JMD = 'JMD',\n JOD = 'JOD',\n JPY = 'JPY',\n KES = 'KES',\n KGS = 'KGS',\n KHR = 'KHR',\n KMF = 'KMF',\n KRW = 'KRW',\n KWD = 'KWD',\n KYD = 'KYD',\n KZT = 'KZT',\n LAK = 'LAK',\n LBP = 'LBP',\n LKR = 'LKR',\n LRD = 'LRD',\n LSL = 'LSL',\n LYD = 'LYD',\n MAD = 'MAD',\n MDL = 'MDL',\n MGA = 'MGA',\n MKD = 'MKD',\n MMK = 'MMK',\n MNT = 'MNT',\n MOP = 'MOP',\n MRU = 'MRU',\n MUR = 'MUR',\n MWK = 'MWK',\n MVR = 'MVR',\n MXN = 'MXN',\n MYR = 'MYR',\n MZN = 'MZN',\n NAD = 'NAD',\n NGN = 'NGN',\n NIO = 'NIO',\n NOK = 'NOK',\n NPR = 'NPR',\n NZD = 'NZD',\n OMR = 'OMR',\n PAB = 'PAB',\n PEN = 'PEN',\n PGK = 'PGK',\n PHP = 'PHP',\n PKR = 'PKR',\n PLN = 'PLN',\n PYG = 'PYG',\n QAR = 'QAR',\n RON = 'RON',\n RSD = 'RSD',\n RWF = 'RWF',\n SAR = 'SAR',\n SCR = 'SCR',\n SDG = 'SDG',\n SEK = 'SEK',\n SGD = 'SGD',\n SLE = 'SLE',\n SLL = 'SLL',\n SOS = 'SOS',\n SRD = 'SRD',\n STN = 'STN',\n SVC = 'SVC',\n SYP = 'SYP',\n SZL = 'SZL',\n THB = 'THB',\n TJS = 'TJS',\n TMT = 'TMT',\n TND = 'TND',\n TOP = 'TOP',\n TRY = 'TRY',\n TTD = 'TTD',\n TWD = 'TWD',\n TZS = 'TZS',\n UAH = 'UAH',\n UGX = 'UGX',\n UYU = 'UYU',\n UZS = 'UZS',\n VND = 'VND',\n VUV = 'VUV',\n WST = 'WST',\n XAF = 'XAF',\n XCD = 'XCD',\n XOF = 'XOF',\n XPF = 'XPF',\n YER = 'YER',\n ZAR = 'ZAR',\n ZMW = 'ZMW',\n ZWL = 'ZWL',\n\n CDF = 'CDF',\n ERN = 'ERN',\n FKP = 'FKP',\n KPW = 'KPW',\n RUB = 'RUB',\n SBD = 'SBD',\n SHP = 'SHP',\n SSP = 'SSP',\n VES = 'VES',\n}\n\nexport const CurrencyToISO4217: Record<Currency, string> = {\n [Currency.AED]: '784',\n [Currency.AFN]: '971',\n [Currency.ALL]: '008',\n [Currency.AMD]: '051',\n [Currency.ANG]: '532',\n [Currency.AOA]: '973',\n [Currency.AUD]: '036',\n [Currency.AWG]: '533',\n [Currency.AZN]: '944',\n [Currency.BAM]: '977',\n [Currency.BBD]: '052',\n [Currency.BDT]: '050',\n [Currency.BGN]: '975',\n [Currency.BHD]: '048',\n [Currency.BIF]: '108',\n [Currency.BND]: '096',\n [Currency.BOB]: '068',\n [Currency.BRL]: '986',\n [Currency.BTN]: '064',\n [Currency.BWP]: '072',\n [Currency.BZD]: '084',\n [Currency.CAD]: '124',\n [Currency.CHF]: '756',\n [Currency.CLP]: '152',\n [Currency.CNY]: '156',\n [Currency.COP]: '170',\n [Currency.CRC]: '188',\n [Currency.CVE]: '132',\n [Currency.CZK]: '203',\n [Currency.DJF]: '262',\n [Currency.DKK]: '208',\n [Currency.DOP]: '214',\n [Currency.DZD]: '012',\n [Currency.EGP]: '818',\n [Currency.ETB]: '230',\n [Currency.EUR]: '978',\n [Currency.GBP]: '826',\n [Currency.GEL]: '981',\n [Currency.GHS]: '936',\n [Currency.GMD]: '270',\n [Currency.GNF]: '324',\n [Currency.GTQ]: '320',\n [Currency.GYD]: '328',\n [Currency.HKD]: '344',\n [Currency.HNL]: '340',\n [Currency.HTG]: '332',\n [Currency.HUF]: '348',\n [Currency.IDR]: '360',\n [Currency.INR]: '356',\n [Currency.IQD]: '368',\n [Currency.IRR]: '364',\n [Currency.ISK]: '352',\n [Currency.JMD]: '388',\n [Currency.JOD]: '400',\n [Currency.JPY]: '392',\n [Currency.KES]: '404',\n [Currency.KGS]: '417',\n [Currency.KHR]: '116',\n [Currency.KMF]: '174',\n [Currency.KRW]: '410',\n [Currency.KWD]: '414',\n [Currency.KYD]: '136',\n [Currency.KZT]: '398',\n [Currency.LKR]: '144',\n [Currency.LRD]: '430',\n [Currency.LSL]: '426',\n [Currency.LYD]: '434',\n [Currency.MAD]: '504',\n [Currency.MDL]: '498',\n [Currency.MGA]: '969',\n [Currency.MKD]: '807',\n [Currency.MMK]: '104',\n [Currency.MNT]: '496',\n [Currency.MOP]: '446',\n [Currency.MRU]: '929',\n [Currency.MUR]: '480',\n [Currency.MVR]: '462',\n [Currency.MXN]: '484',\n [Currency.MYR]: '458',\n [Currency.NAD]: '516',\n [Currency.NGN]: '566',\n [Currency.NIO]: '558',\n [Currency.NOK]: '578',\n [Currency.NPR]: '524',\n [Currency.NZD]: '554',\n [Currency.OMR]: '512',\n [Currency.PAB]: '590',\n [Currency.PEN]: '604',\n [Currency.PHP]: '608',\n [Currency.PKR]: '586',\n [Currency.PLN]: '985',\n [Currency.PYG]: '600',\n [Currency.QAR]: '634',\n [Currency.RON]: '946',\n [Currency.RSD]: '941',\n [Currency.RWF]: '646',\n [Currency.SAR]: '682',\n [Currency.SCR]: '690',\n [Currency.SDG]: '938',\n [Currency.SEK]: '752',\n [Currency.SGD]: '702',\n [Currency.SLE]: '925',\n [Currency.SLL]: '694',\n [Currency.SOS]: '706',\n [Currency.STN]: '930',\n [Currency.SVC]: '222',\n [Currency.SYP]: '760',\n [Currency.SZL]: '748',\n [Currency.THB]: '764',\n [Currency.TJS]: '972',\n [Currency.TMT]: '934',\n [Currency.TND]: '788',\n [Currency.TRY]: '949',\n [Currency.TTD]: '780',\n [Currency.TWD]: '901',\n [Currency.TZS]: '834',\n [Currency.UAH]: '980',\n [Currency.UGX]: '800',\n [Currency.USD]: '840',\n [Currency.UYU]: '858',\n [Currency.UZS]: '860',\n [Currency.VND]: '704',\n [Currency.XAF]: '950',\n [Currency.XCD]: '951',\n [Currency.XOF]: '952',\n [Currency.XPF]: '953',\n [Currency.YER]: '886',\n [Currency.ZAR]: '710',\n [Currency.ZMW]: '967',\n [Currency.ARS]: '032',\n [Currency.BMD]: '060',\n [Currency.BSD]: '044',\n [Currency.BYN]: '933',\n [Currency.CUP]: '192',\n [Currency.FJD]: '242',\n [Currency.ILS]: '376',\n [Currency.LAK]: '418',\n [Currency.LBP]: '422',\n [Currency.MWK]: '454',\n [Currency.MZN]: '943',\n [Currency.PGK]: '598',\n [Currency.SRD]: '968',\n [Currency.TOP]: '776',\n [Currency.VUV]: '548',\n [Currency.WST]: '882',\n [Currency.ZWL]: '932',\n [Currency.CLF]: '990',\n [Currency.CDF]: '976',\n [Currency.ERN]: '232',\n [Currency.FKP]: '238',\n [Currency.KPW]: '408',\n [Currency.RUB]: '643',\n [Currency.SBD]: '090',\n [Currency.SHP]: '654',\n [Currency.SSP]: '728',\n [Currency.VES]: '928',\n};\n\nexport type WithdrawCurrency =\n | Currency.USD\n | Currency.EUR\n | Currency.GBP\n | Currency.BRL\n | Currency.CAD;\n\nexport const WithdrawCurrencies = {\n [Currency.USD]: Currency.USD,\n [Currency.EUR]: Currency.EUR,\n [Currency.GBP]: Currency.GBP,\n [Currency.BRL]: Currency.BRL,\n [Currency.CAD]: Currency.CAD,\n} as const;\n\nexport function isWithdrawCurrency(\n currency: Currency\n): currency is WithdrawCurrency {\n return currency in WithdrawCurrencies;\n}\n\nexport type BankingCurrency =\n | Currency.USD\n | Currency.EUR\n | Currency.GBP\n | Currency.CAD\n | Currency.BRL;\n\nexport const BankingCurrencies = {\n [Currency.USD]: Currency.USD,\n [Currency.EUR]: Currency.EUR,\n [Currency.GBP]: Currency.GBP,\n [Currency.CAD]: Currency.CAD,\n [Currency.BRL]: Currency.BRL,\n} as const;\n\nexport function isBankingCurrency(\n currency: Currency\n): currency is BankingCurrency {\n return currency in BankingCurrencies;\n}\n\nconst FourDecimalCurrencies = new Set<Currency>([Currency.CLF]);\n\nconst ThreeDecimalCurrencies = new Set<Currency>([\n Currency.BHD,\n Currency.IQD,\n Currency.JOD,\n Currency.KWD,\n Currency.LYD,\n Currency.OMR,\n Currency.TND,\n]);\n\nconst ZeroDecimalCurrencies = new Set<Currency>([\n Currency.BIF,\n Currency.CLP,\n Currency.DJF,\n Currency.GNF,\n Currency.ISK,\n Currency.JPY,\n Currency.KMF,\n Currency.PYG,\n Currency.RWF,\n Currency.UGX,\n Currency.VND,\n Currency.VUV,\n Currency.XAF,\n Currency.XOF,\n Currency.XPF,\n]);\n\nexport function getCurrencyDecimals(currency: Currency): number {\n if (FourDecimalCurrencies.has(currency)) return 4;\n if (ThreeDecimalCurrencies.has(currency)) return 3;\n if (ZeroDecimalCurrencies.has(currency)) return 0;\n return 2;\n}\n\nexport interface Cents {\n /**\n * @isInt Cents must be an integer\n * @minimum 0 Minimum Cents is 0\n */\n cents: number;\n}\n\nexport interface CurrencyCents extends Cents {\n currency: Currency;\n}\n\nexport interface TypedCurrencyCents<T extends Currency> extends Cents {\n currency: T;\n}\n\nexport function isTypedCurrencyCents<T extends Currency>(\n cents: CurrencyCents,\n currency: T\n): cents is TypedCurrencyCents<T> {\n return cents.currency === currency;\n}\n\nexport interface TokenSubtotal {\n /**\n * The tokens address\n *\n * Solana - Token Mint Address\n * Evm - Token Contract Address\n */\n address: string;\n /**\n * Number of tokens\n */\n amount: number | string;\n /**\n * Number of decimals for the token\n */\n decimals?: number;\n}\n\nexport type Subtotal = CurrencyCents | Cents | TokenSubtotal;\n","import nsureSDK from '@nsure-ai/web-client-sdk';\n\nfunction fun(): string | null {\n if (nsureSDK) return nsureSDK.getDeviceId();\n return null;\n}\n\nexport default fun;\n","import {\n CoinflowBlockchain,\n CoinflowEnvs,\n CoinflowIFrameProps,\n CoinflowPurchaseProps,\n CustomerInfo,\n} from './CoinflowTypes';\nimport {web3, base58} from './SolanaPeerDeps';\nimport LZString from 'lz-string';\nimport type {Transaction, VersionedTransaction} from '@solana/web3.js';\nimport {Currency} from './types/Subtotal';\nimport getNSureDeviceId from './NSure';\n\nexport class CoinflowUtils {\n env: CoinflowEnvs;\n url: string;\n\n constructor(env?: CoinflowEnvs) {\n this.env = env ?? 'prod';\n if (this.env === 'prod') this.url = 'https://api.coinflow.cash';\n else if (this.env === 'local') this.url = 'http://localhost:5000';\n else this.url = `https://api-${this.env}.coinflow.cash`;\n }\n\n async getNSurePartnerId(merchantId: string): Promise<string | undefined> {\n return fetch(this.url + `/merchant/view/${merchantId}`)\n .then(response => response.json())\n .then(\n (json: {\n nSurePartnerId: string | undefined;\n nSureSettings: {nSurePartnerId: string | undefined};\n }) => json.nSureSettings?.nSurePartnerId || json.nSurePartnerId\n )\n .catch(e => {\n console.error(e);\n return undefined;\n });\n }\n\n static getCoinflowBaseUrl(env?: CoinflowEnvs): string {\n if (!env || env === 'prod') return 'https://coinflow.cash';\n // @ts-expect-error This is for testing\n if (env === 'ngrok') return 'https://coinflow.ngrok.app';\n if (env === 'local') return 'http://localhost:3000';\n\n return `https://${env}.coinflow.cash`;\n }\n\n static getCoinflowAppBaseUrl(env?: CoinflowEnvs): string {\n if (!env || env === 'prod') return 'https://app.coinflow.cash';\n // @ts-expect-error This is for testing\n if (env === 'ngrok') return 'https://coinflow.ngrok.app';\n if (env === 'local') return 'http://localhost:3003';\n\n return `https://app-${env}.coinflow.cash`;\n }\n\n static getCoinflowApiUrl(env?: CoinflowEnvs): string {\n if (!env || env === 'prod') return 'https://api.coinflow.cash';\n if (env === 'local') return 'http://localhost:5000';\n\n return `https://api-${env}.coinflow.cash`;\n }\n\n static getCoinflowUrl({\n walletPubkey,\n sessionKey,\n route,\n routePrefix,\n env,\n subtotal,\n presentment,\n transaction,\n blockchain = 'solana',\n webhookInfo,\n email,\n loaderBackground,\n handleHeightChangeId,\n bankAccountLinkRedirect,\n additionalWallets,\n chargebackProtectionData,\n merchantCss,\n color,\n rent,\n lockDefaultToken,\n tokens,\n planCode,\n disableApplePay,\n disableGooglePay,\n customerInfo,\n settlementType,\n lockAmount,\n nativeSolToConvert,\n theme,\n usePermit,\n transactionSigner,\n authOnly,\n deviceId,\n jwtToken,\n origins,\n threeDsChallengePreference,\n supportEmail,\n destinationAuthKey,\n allowedPaymentMethods,\n accountFundingTransaction,\n partialUsdcChecked,\n redemptionCheck,\n allowedWithdrawSpeeds,\n isZeroAuthorization,\n zeroAuthorizationConfig,\n baseUrl,\n }: CoinflowIFrameProps & {baseUrl?: string}): string {\n const prefix = routePrefix\n ? `/${routePrefix}/${blockchain}`\n : `/${blockchain}`;\n const url = new URL(\n prefix + route,\n baseUrl ?? CoinflowUtils.getCoinflowBaseUrl(env)\n );\n\n if (walletPubkey) url.searchParams.append('pubkey', walletPubkey);\n if (sessionKey) url.searchParams.append('sessionKey', sessionKey);\n\n if (transaction) {\n url.searchParams.append('transaction', transaction);\n }\n\n if (subtotal) {\n if ('cents' in subtotal) {\n url.searchParams.append('cents', subtotal.cents.toString());\n if ('currency' in subtotal) {\n url.searchParams.append('currency', subtotal.currency.toString());\n } else {\n url.searchParams.append('currency', Currency.USD);\n }\n } else {\n url.searchParams.append('token', subtotal.address.toString());\n url.searchParams.append('amount', subtotal.amount.toString());\n }\n }\n\n if (presentment) url.searchParams.append('presentment', presentment);\n\n if (webhookInfo) {\n url.searchParams.append(\n 'webhookInfo',\n LZString.compressToEncodedURIComponent(JSON.stringify(webhookInfo))\n );\n }\n\n if (theme) {\n url.searchParams.append(\n 'theme',\n LZString.compressToEncodedURIComponent(JSON.stringify(theme))\n );\n }\n\n if (customerInfo) {\n url.searchParams.append(\n 'customerInfo',\n LZString.compressToEncodedURIComponent(JSON.stringify(customerInfo))\n );\n }\n\n if (email) {\n url.searchParams.append('email', email);\n }\n if (supportEmail) url.searchParams.append('supportEmail', supportEmail);\n\n if (tokens) {\n url.searchParams.append('tokens', tokens.toString());\n }\n\n if (loaderBackground) {\n url.searchParams.append('loaderBackground', loaderBackground);\n }\n\n if (handleHeightChangeId) {\n url.searchParams.append(\n 'useHeightChange',\n handleHeightChangeId.toString()\n );\n }\n\n if (bankAccountLinkRedirect) {\n url.searchParams.append(\n 'bankAccountLinkRedirect',\n bankAccountLinkRedirect\n );\n }\n\n if (additionalWallets)\n url.searchParams.append(\n 'additionalWallets',\n LZString.compressToEncodedURIComponent(\n JSON.stringify(additionalWallets)\n )\n );\n\n if (chargebackProtectionData)\n url.searchParams.append(\n 'chargebackProtectionData',\n LZString.compressToEncodedURIComponent(\n JSON.stringify(chargebackProtectionData)\n )\n );\n if (deviceId) {\n url.searchParams.append('deviceId', deviceId);\n } else {\n const deviceId = getNSureDeviceId();\n if (deviceId) url.searchParams.append('deviceId', deviceId);\n }\n\n if (merchantCss) url.searchParams.append('merchantCss', merchantCss);\n if (color) url.searchParams.append('color', color);\n if (rent) url.searchParams.append('rent', rent.lamports.toString());\n if (redemptionCheck) url.searchParams.append('redemptionCheck', 'true');\n if (nativeSolToConvert)\n url.searchParams.append(\n 'nativeSolToConvert',\n nativeSolToConvert.lamports.toString()\n );\n if (lockDefaultToken) url.searchParams.append('lockDefaultToken', 'true');\n if (planCode) url.searchParams.append('planCode', planCode);\n\n if (disableApplePay) url.searchParams.append('disableApplePay', 'true');\n if (disableGooglePay) url.searchParams.append('disableGooglePay', 'true');\n if (settlementType)\n url.searchParams.append('settlementType', settlementType);\n\n if (lockAmount) url.searchParams.append('lockAmount', 'true');\n\n if (usePermit === false) url.searchParams.append('usePermit', 'false');\n if (transactionSigner)\n url.searchParams.append('transactionSigner', transactionSigner);\n if (authOnly === true) url.searchParams.append('authOnly', 'true');\n\n // zeroAuthorizationConfig takes precedence over isZeroAuthorization\n if (zeroAuthorizationConfig) {\n url.searchParams.append(\n 'zeroAuthorizationConfig',\n JSON.stringify(zeroAuthorizationConfig)\n );\n } else if (isZeroAuthorization === true) {\n url.searchParams.append('isZeroAuthorization', 'true');\n }\n\n if (partialUsdcChecked === true)\n url.searchParams.append('partialUsdcChecked', 'true');\n if (jwtToken) url.searchParams.append('jwtToken', jwtToken);\n if (origins)\n url.searchParams.append(\n 'origins',\n LZString.compressToEncodedURIComponent(JSON.stringify(origins))\n );\n\n if (allowedPaymentMethods)\n url.searchParams.append(\n 'allowedPaymentMethods',\n allowedPaymentMethods.join(',')\n );\n\n if (threeDsChallengePreference)\n url.searchParams.append(\n 'threeDsChallengePreference',\n threeDsChallengePreference\n );\n\n if (destinationAuthKey)\n url.searchParams.append('destinationAuthKey', destinationAuthKey);\n\n if (accountFundingTransaction)\n url.searchParams.append(\n 'accountFundingTransaction',\n LZString.compressToEncodedURIComponent(\n JSON.stringify(accountFundingTransaction)\n )\n );\n\n if (allowedWithdrawSpeeds)\n url.searchParams.append(\n 'allowedWithdrawSpeeds',\n allowedWithdrawSpeeds.join(',')\n );\n\n return url.toString();\n }\n\n static getTransaction(props: CoinflowPurchaseProps): string | undefined {\n if (!props.blockchain) return undefined;\n\n return this.byBlockchain<() => string | undefined>(props.blockchain, {\n solana: () => {\n if (!('transaction' in props)) return undefined;\n const {transaction} = props;\n if (!web3)\n throw new Error('@solana/web3.js dependency is required for Solana');\n if (!base58) throw new Error('bs58 dependency is required for Solana');\n if (!transaction) return undefined;\n return base58.encode(\n Uint8Array.from(\n (transaction as VersionedTransaction | Transaction).serialize({\n requireAllSignatures: false,\n verifySignatures: false,\n })\n )\n );\n },\n polygon: () => {\n if (!('transaction' in props)) return undefined;\n const {transaction} = props;\n return LZString.compressToEncodedURIComponent(\n JSON.stringify(transaction)\n );\n },\n eth: () => {\n if (!('transaction' in props)) return undefined;\n const {transaction} = props;\n return LZString.compressToEncodedURIComponent(\n JSON.stringify(transaction)\n );\n },\n base: () => {\n if (!('transaction' in props)) return undefined;\n const {transaction} = props;\n return LZString.compressToEncodedURIComponent(\n JSON.stringify(transaction)\n );\n },\n arbitrum: () => {\n if (!('transaction' in props)) return undefined;\n const {transaction} = props;\n return LZString.compressToEncodedURIComponent(\n JSON.stringify(transaction)\n );\n },\n stellar: () => {\n if (!('transaction' in props)) return undefined;\n const {transaction} = props;\n if (!transaction) return undefined;\n // Transaction is already base64 XDR string, pass through directly\n return transaction as string;\n },\n monad: () => {\n if (!('transaction' in props)) return undefined;\n const {transaction} = props;\n return LZString.compressToEncodedURIComponent(\n JSON.stringify(transaction)\n );\n },\n user: () => {\n return undefined;\n },\n })();\n }\n\n static byBlockchain<T>(\n blockchain: CoinflowBlockchain,\n args: {\n solana: T;\n eth: T;\n polygon: T;\n base: T;\n arbitrum: T;\n stellar: T;\n monad: T;\n user: T;\n }\n ): T {\n switch (blockchain) {\n case 'solana':\n return args.solana;\n case 'polygon':\n return args.polygon;\n case 'eth':\n return args.eth;\n case 'base':\n return args.base;\n case 'arbitrum':\n return args.arbitrum;\n case 'stellar':\n return args.stellar;\n case 'monad':\n return args.monad;\n case 'user':\n return args.user;\n default:\n throw new Error('blockchain not supported!');\n }\n }\n}\n\nexport interface FullName {\n firstName: string;\n lastName: string;\n}\n\nexport function getCustomerName(\n info: CustomerInfo | undefined\n): FullName | undefined {\n if (!info) return undefined;\n\n let firstName: string | undefined, lastName: string | undefined;\n if ('name' in info && info.name) {\n firstName = info.name.split(' ')[0];\n lastName = info.name.split(' ').slice(1).join(' ');\n }\n\n if ('firstName' in info && info.firstName) firstName = info.firstName;\n\n if ('lastName' in info && info.lastName) lastName = info.lastName;\n\n if (firstName && lastName)\n return {\n firstName,\n lastName,\n };\n return undefined;\n}\n","import {\n AuthDeclinedWalletCallInfo,\n CoinflowBlockchain,\n CoinflowPurchaseProps,\n EthWallet,\n OnAuthDeclinedMethod,\n OnSuccessMethod,\n SolanaWallet,\n StellarWallet,\n WalletTypes,\n} from './CoinflowTypes';\nimport {CoinflowUtils} from './CoinflowUtils';\nimport type {Transaction, VersionedTransaction} from '@solana/web3.js';\nimport {web3, base58} from './SolanaPeerDeps';\n\nexport type WalletCall =\n | {method: IFrameMessageMethods; data: string}\n | SuccessWalletCall;\n\ntype SuccessWalletCall = {\n method: IFrameMessageMethods.Success;\n data: string;\n info: {paymentId: string; hash?: string};\n};\n\ntype AuthDeclinedWalletCall = {\n method: IFrameMessageMethods.AuthDeclined;\n data: string;\n info: AuthDeclinedWalletCallInfo;\n};\n\nexport interface IFrameMessageHandlers {\n handleSendTransaction: (transaction: string) => Promise<string>;\n handleSignMessage?: (message: string) => Promise<string>;\n handleSignTransaction?: (transaction: string) => Promise<string>;\n handleHeightChange?: (height: string) => void;\n onSuccess: OnSuccessMethod | undefined;\n onAuthDeclined: OnAuthDeclinedMethod | undefined;\n}\n\nexport enum IFrameMessageMethods {\n SignMessage = 'signMessage',\n SignTransaction = 'signTransaction',\n SendTransaction = 'sendTransaction',\n HeightChange = 'heightChange',\n Success = 'success',\n AuthDeclined = 'authDeclined',\n Loaded = 'loaded',\n AccountLinked = 'accountLinked',\n}\n\nexport function getWalletPubkey(\n input: Pick<CoinflowPurchaseProps, 'wallet' | 'blockchain'>\n): string | null | undefined {\n let wallet: WalletTypes | undefined;\n if (\n 'signer' in input &&\n typeof input.signer === 'object' &&\n input.signer &&\n 'wallet' in input.signer\n )\n wallet = input.signer.wallet as WalletTypes;\n else if ('wallet' in input && input.wallet) wallet = input.wallet;\n\n if (!wallet) return;\n\n if (typeof wallet === 'string') return wallet;\n\n if (typeof wallet === 'object') {\n if ('publicKey' in wallet)\n return wallet.publicKey ? wallet.publicKey.toString() : undefined;\n\n if ('address' in wallet)\n return wallet.address ? (wallet.address as string) : undefined;\n }\n\n return null;\n}\n\nexport function handleIFrameMessage(\n rawMessage: string,\n handlers: IFrameMessageHandlers,\n handleHeightChangeId: string | number\n): Promise<string> | void {\n let walletCall: WalletCall;\n try {\n walletCall = JSON.parse(rawMessage);\n if (!('method' in walletCall) || !('data' in walletCall)) return;\n } catch (e) {\n console.error('handleIFrameMessage JSON parse', e);\n return;\n }\n\n const {data, method} = walletCall;\n switch (method) {\n case IFrameMessageMethods.SignMessage:\n if (!handlers.handleSignMessage) return;\n return handlers.handleSignMessage(data);\n case IFrameMessageMethods.SignTransaction:\n if (!handlers.handleSignTransaction) return;\n return handlers.handleSignTransaction(data);\n case IFrameMessageMethods.SendTransaction:\n return handlers.handleSendTransaction(data);\n case IFrameMessageMethods.HeightChange + ':' + handleHeightChangeId:\n if (!handlers.handleHeightChange) return;\n return handlers.handleHeightChange(data);\n case IFrameMessageMethods.Success:\n if (!handlers.onSuccess) return;\n handlers.onSuccess((walletCall as SuccessWalletCall).info);\n return;\n case IFrameMessageMethods.AuthDeclined:\n if (!handlers.onAuthDeclined) return;\n handlers.onAuthDeclined((walletCall as AuthDeclinedWalletCall).info);\n return;\n case IFrameMessageMethods.Loaded:\n return;\n case IFrameMessageMethods.AccountLinked:\n return;\n }\n\n console.warn(\n `Didn't expect to get here, handleIFrameMessage method:${method} is not one of ${Object.values(IFrameMessageMethods)}`\n );\n}\n\nexport function getHandlers(\n props: Pick<\n CoinflowPurchaseProps,\n 'wallet' | 'blockchain' | 'onSuccess' | 'onAuthDeclined'\n >\n): Omit<IFrameMessageHandlers, 'handleHeightChange'> {\n let chain: CoinflowBlockchain | undefined;\n let wallet: WalletTypes | undefined;\n if (\n 'signer' in props &&\n typeof props.signer === 'object' &&\n props.signer &&\n 'blockchain' in props.signer &&\n 'wallet' in props.signer\n ) {\n chain = props.signer.blockchain as CoinflowBlockchain;\n wallet = props.signer.wallet as WalletTypes;\n } else if ('blockchain' in props && props.blockchain) {\n chain = props.blockchain;\n wallet = props.wallet;\n }\n\n if (!chain) {\n return {\n handleSendTransaction: () => {\n throw new Error('handleSendTransaction Not Implemented');\n },\n handleSignMessage: () => {\n throw new Error('handleSendTransaction Not Implemented');\n },\n handleSignTransaction: () => {\n throw new Error('handleSendTransaction Not Implemented');\n },\n onSuccess: props.onSuccess,\n onAuthDeclined: props.onAuthDeclined,\n };\n }\n\n return CoinflowUtils.byBlockchain(chain, {\n solana: () =>\n getSolanaWalletHandlers({\n wallet: wallet as SolanaWallet,\n onSuccess: props.onSuccess,\n onAuthDeclined: props.onAuthDeclined,\n }),\n eth: () =>\n getEvmWalletHandlers({\n wallet: wallet as EthWallet,\n onSuccess: props.onSuccess,\n onAuthDeclined: props.onAuthDeclined,\n }),\n polygon: () =>\n getEvmWalletHandlers({\n wallet: wallet as EthWallet,\n onSuccess: props.onSuccess,\n onAuthDeclined: props.onAuthDeclined,\n }),\n base: () =>\n getEvmWalletHandlers({\n wallet: wallet as EthWallet,\n onSuccess: props.onSuccess,\n onAuthDeclined: props.onAuthDeclined,\n }),\n arbitrum: () =>\n getEvmWalletHandlers({\n wallet: wallet as EthWallet,\n onSuccess: props.onSuccess,\n onAuthDeclined: props.onAuthDeclined,\n }),\n stellar: () =>\n getStellarWalletHandlers({\n wallet: wallet as StellarWallet,\n onSuccess: props.onSuccess,\n onAuthDeclined: props.onAuthDeclined,\n }),\n monad: () =>\n getEvmWalletHandlers({\n wallet: wallet as EthWallet,\n onSuccess: props.onSuccess,\n onAuthDeclined: props.onAuthDeclined,\n }),\n user: () => getSessionKeyHandlers(props),\n })();\n}\n\nfunction getSolanaWalletHandlers({\n wallet,\n onSuccess,\n onAuthDeclined,\n}: {\n wallet: SolanaWallet;\n onSuccess: OnSuccessMethod | undefined;\n onAuthDeclined: OnAuthDeclinedMethod | undefined;\n}): Omit<IFrameMessageHandlers, 'handleHeightChange'> {\n return {\n handleSendTransaction: async (transaction: string) => {\n const tx = getSolanaTransaction(transaction);\n return await wallet.sendTransaction(tx);\n },\n handleSignMessage: async (message: string) => {\n const signMessage = wallet.signMessage;\n if (!signMessage) {\n throw new Error('signMessage is not supported by this wallet');\n }\n\n const signedMessage = await signMessage(\n new TextEncoder().encode(message)\n );\n if (!base58) throw new Error('bs58 dependency is required');\n return base58.encode(signedMessage);\n },\n handleSignTransaction: async (transaction: string) => {\n const signTransaction = wallet.signTransaction;\n if (!signTransaction) {\n throw new Error('signTransaction is not supported by this wallet');\n }\n const tx = getSolanaTransaction(transaction);\n const signedTransaction = await signTransaction(tx);\n if (!base58) throw new Error('bs58 dependency is required');\n return base58.encode(\n Uint8Array.from(\n signedTransaction.serialize({\n requireAllSignatures: false,\n verifySignatures: false,\n })\n )\n );\n },\n onSuccess,\n onAuthDeclined,\n };\n}\n\nfunction getSolanaTransaction(\n data: string\n): Transaction | VersionedTransaction {\n if (!web3)\n throw new Error(\n '@solana/web3.js is not defined. Please install @solana/web3.js into your project'\n );\n\n if (!base58)\n throw new Error(\n 'bs58 is not defined. Please install bs58 into your project'\n );\n\n const parsedUInt8Array = base58.decode(data);\n const vtx = web3.VersionedTransaction.deserialize(parsedUInt8Array);\n if (vtx.version === 'legacy') return web3.Transaction.from(parsedUInt8Array);\n return vtx;\n}\n\nfunction getEvmWalletHandlers({\n wallet,\n onSuccess,\n onAuthDeclined,\n}: {\n wallet: EthWallet;\n onSuccess?: OnSuccessMethod;\n onAuthDeclined: OnAuthDeclinedMethod | undefined;\n}): Omit<IFrameMessageHandlers, 'handleHeightChange'> {\n return {\n handleSendTransaction: async (transaction: string) => {\n const tx = JSON.parse(Buffer.from(transaction, 'base64').toString());\n const {hash} = await wallet.sendTransaction(tx);\n return hash;\n },\n handleSignMessage: async (message: string) => {\n return wallet.signMessage(message);\n },\n onSuccess,\n onAuthDeclined,\n };\n}\n\nfunction getStellarWalletHandlers({\n wallet,\n onSuccess,\n onAuthDeclined,\n}: {\n wallet: StellarWallet;\n onSuccess: OnSuccessMethod | undefined;\n onAuthDeclined: OnAuthDeclinedMethod | undefined;\n}): Omit<IFrameMessageHandlers, 'handleHeightChange'> {\n return {\n handleSendTransaction: async (transaction: string) => {\n // transaction is unsigned base64 XDR\n // dapp needs to handle sending and confirming\n throw new Error(\n `sendTransaction is not supported on stellar, error when sending: ${transaction}`\n );\n },\n handleSignMessage: async (message: string) => {\n if (!wallet.signMessage) {\n throw new Error('signMessage is not supported by this wallet');\n }\n // Returns base64-encoded signature\n return await wallet.signMessage(message);\n },\n handleSignTransaction: async (transaction: string) => {\n if (!wallet.signTransaction) {\n throw new Error('signTransaction is not supported by this wallet');\n }\n // Returns signed base64 XDR\n return await wallet.signTransaction(transaction);\n },\n onSuccess,\n onAuthDeclined,\n };\n}\n\nfunction getSessionKeyHandlers({\n onSuccess,\n onAuthDeclined,\n}: Pick<CoinflowPurchaseProps, 'onSuccess' | 'onAuthDeclined'>): Omit<\n IFrameMessageHandlers,\n 'handleHeightChange'\n> {\n return {\n handleSendTransaction: async () => {\n return Promise.resolve('');\n },\n onSuccess,\n onAuthDeclined,\n };\n}\n","export type EventBusCallback = (event: Event) => void;\n\nexport class EventBus {\n public static on(type: string, callback: EventBusCallback) {\n document.addEventListener(type, callback);\n }\n\n public static dispatch(type: string, data: any) {\n document.dispatchEvent(new CustomEvent(type, {detail: data}));\n }\n\n public static remove(type: string, callback: EventBusCallback) {\n document.removeEventListener(type, callback);\n }\n}\n","// Type definitions for TokenEx iframe integration\n/// <reference path=\"./TokenEx.global.d.ts\" />\n\nimport {CardType, CoinflowEnvs} from '../CoinflowTypes';\nimport type {Properties as CSSProperties} from 'csstype';\n\nexport const TokenExCardNumberIframeId = 'tokenExCardNumber';\nexport const TokenExCvvContainerID = 'tokenExCardCvv';\nexport interface TokenExIframe extends ReturnType<typeof TokenEx.Iframe> {\n tokenize: () => Promise<TokenizationResponse>;\n}\n\nexport const CARD_TYPE_MAPPING: Record<CardType, string> = {\n [CardType.VISA]: 'visa',\n [CardType.MASTERCARD]: 'masterCard',\n [CardType.AMEX]: 'americanExpress',\n [CardType.DISCOVER]: 'discover',\n};\n\nexport interface TokenExIFrameConfiguration {\n origin: string;\n timestamp: string;\n tokenExID: string;\n tokenScheme: string;\n authenticationKey: string;\n pci: true;\n token?: string;\n use3DS?: boolean;\n threeDSMethodNotificationUrl?: string;\n}\n\nexport interface CardFormInputStyles {\n base: CSSProperties | string;\n placeholder?: CSSProperties | string;\n focus?: CSSProperties | string;\n error?: CSSProperties | string;\n}\n\nexport type CoinflowCardTokenResponse = {\n token: string;\n};\n\nexport interface CoinflowCardNumberInputProps {\n env: CoinflowEnvs;\n css: CardFormInputStyles & {cvv: CardFormInputStyles};\n debug?: boolean;\n origins: string[];\n font?: string;\n}\n\nexport interface CoinflowCvvOnlyInputProps {\n token: string;\n cardType: CardType;\n env: CoinflowEnvs;\n css: CardFormInputStyles & {cvv: CardFormInputStyles};\n debug?: boolean;\n origins: string[];\n font?: string;\n}\n\nexport interface VersionDetail {\n threeDSMethodURL: string;\n acsStartProtocolVersion: string;\n acsEndProtocolVersion: string;\n threeDSServerStartVersion: string;\n threeDSServerEndVersion?: string;\n acsInfoInd: [string];\n directoryServerID: string;\n dsStartProtocolVersion: string;\n dsEndProtocolVersion: string;\n dsIdentifier: string;\n threeDSServerTransID: string;\n}\n\nexport interface TokenizationResponse {\n cardType: string;\n cvvIncluded: true;\n firstSix: string;\n lastFour: string;\n referenceNumber: string;\n token: string;\n tokenHMAC: string;\n recommended3dsVersion?: Record<string, string>;\n threeDSecureResponse?: VersionDetail[];\n}\n","import type {Properties as CSSProperties} from 'csstype';\nimport {\n TokenizationResponse,\n TokenExCvvContainerID,\n TokenExIframe,\n TokenExIFrameConfiguration,\n CARD_TYPE_MAPPING,\n TokenExCardNumberIframeId,\n} from './TokenEx';\nimport {CoinflowUtils} from '../CoinflowUtils';\nimport {CardType, CoinflowEnvs} from '../CoinflowTypes';\n\nexport type MerchantIdOrCheckoutJwt =\n | {checkoutJwt: string}\n | {merchantId: string};\n\nexport interface CommonDoInitializeTokenExIframeArgs {\n css: string;\n debug?: boolean;\n font?: string;\n origins: string[];\n tokenExScriptLoaded: boolean;\n env: CoinflowEnvs;\n setCachedToken: (s: string | undefined) => void;\n setLoaded: (b: boolean) => void;\n}\n\nexport type DoInitializeTokenExIframeArgs =\n CommonDoInitializeTokenExIframeArgs & MerchantIdOrCheckoutJwt;\n\nexport type DoInitializeCvvOnlyTokenExIframeArgs =\n DoInitializeTokenExIframeArgs & {\n token: string;\n cardType: CardType;\n };\n\nexport type GetIFrameConfigArgs = {\n token?: string;\n origins: string[];\n env: CoinflowEnvs;\n} & MerchantIdOrCheckoutJwt;\n\nexport async function getIframeConfig(\n args: GetIFrameConfigArgs\n): Promise<TokenExIFrameConfiguration> {\n const {token, origins, env} = args;\n return new Promise((resolve, reject) => {\n fetch(new CoinflowUtils(env).url + '/api/tokenize/iframe/config', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n origins,\n token,\n merchantId: 'merchantId' in args ? args.merchantId : undefined,\n checkoutJwt: 'checkoutJwt' in args ? args.checkoutJwt : undefined,\n }),\n })\n .then(async res => {\n resolve((await res.json()) as TokenExIFrameConfiguration);\n })\n .catch(e => reject(e));\n });\n}\n\nexport function setTokenExScriptTag({\n env,\n setTokenExScriptLoaded,\n}: {\n env: CoinflowEnvs;\n setTokenExScriptLoaded: (b: boolean) => void;\n}) {\n const scriptTagId = 'tokenex-script';\n if (document.head.querySelector(`#${scriptTagId}`)) {\n setTokenExScriptLoaded(true);\n }\n\n const sdkScriptTag = document.createElement('script');\n sdkScriptTag.src =\n env === 'prod'\n ? 'https://htp.tokenex.com/iframe/iframe-v3.min.js'\n : 'https://test-htp.tokenex.com/iframe/iframe-v3.min.js';\n sdkScriptTag.id = scriptTagId;\n\n document.head.appendChild(sdkScriptTag);\n\n document.getElementById(scriptTagId)!.addEventListener('load', () => {\n console.log('Setting tokenExScriptLoaded to true!');\n setTokenExScriptLoaded(true);\n });\n}\n\nfunction loadIframe({\n iframe,\n setCachedToken,\n setLoaded,\n}: {\n setCachedToken: (s: string | undefined) => void;\n setLoaded: (b: boolean) => void;\n iframe: ReturnType<typeof TokenEx.Iframe>;\n}): TokenExIframe {\n const tokenize = async (): Promise<TokenizationResponse> => {\n iframe.tokenize();\n return await new Promise<TokenizationResponse>((resolve, reject) => {\n iframe.on('tokenize', (data: TokenizationResponse) => {\n setCachedToken(data.token);\n resolve(data);\n });\n iframe.on('validate', (data: {isValid: boolean; isCvvValid: boolean}) => {\n // noinspection PointlessBooleanExpressionJS\n const isInvalid = !data.isValid || data.isCvvValid === false;\n if (isInvalid) reject(data);\n });\n });\n };\n\n iframe.on('change', () => setCachedToken(undefined));\n iframe.on('cvvChange', () => setCachedToken(undefined));\n\n iframe.on('load', () => {\n setTimeout(() => setLoaded(true), 350);\n const el: HTMLIFrameElement | null = document.querySelector(\n '#tx_iframe_tokenExCardNumber'\n );\n if (el) {\n // noinspection JSDeprecatedSymbols\n el.scrolling = 'no';\n }\n });\n\n iframe.on('focus', () => {\n iframe.focus();\n });\n iframe.on('cvvFocus', () => {\n iframe.cvvFocus();\n });\n\n setLoaded(false);\n iframe.load();\n\n return {...iframe, tokenize};\n}\n\nexport async function doInitializeCvvOnlyTokenExIframe(\n args: DoInitializeCvvOnlyTokenExIframeArgs\n) {\n const {token, cardType} = args;\n return await doInitialize(TokenExCvvContainerID, args, {\n cvvOnly: true,\n cvv: true,\n cvvContainerID: TokenExCvvContainerID,\n placeholder: 'CVV',\n token,\n cardType: CARD_TYPE_MAPPING[cardType],\n });\n}\n\nexport async function doInitializeTokenExIframe(\n args: DoInitializeTokenExIframeArgs\n) {\n return await doInitialize(TokenExCardNumberIframeId, args, {\n cvv: true,\n cvvContainerID: TokenExCvvContainerID,\n cvvPlaceholder: 'CVV',\n });\n}\n\nexport async function doInitializeTokenExCardOnlyIframe(\n args: DoInitializeTokenExIframeArgs\n) {\n return await doInitialize(TokenExCardNumberIframeId, args, {cvv: false});\n}\n\nasync function doInitialize(\n id: string,\n args: DoInitializeTokenExIframeArgs,\n configOverrides: Partial<TokenEx.Config>\n) {\n const {tokenExScriptLoaded, css, debug, font, setCachedToken, setLoaded} =\n args;\n if (!tokenExScriptLoaded && typeof TokenEx === 'undefined') {\n console.warn(\n 'Warning Unable to load TokenEx on first attempt waiting for load event from document.head.script#tokenex-script'\n );\n return;\n }\n const iframeConfig = await getIframeConfig({\n ...args,\n token: configOverrides.token,\n });\n const {styles} = getStyles(css);\n const config = {\n ...iframeConfig,\n placeholder: '0000 0000 0000 0000',\n enablePrettyFormat: true,\n styles,\n font,\n debug: debug ?? false,\n ...configOverrides,\n };\n const iframe: ReturnType<typeof TokenEx.Iframe> = TokenEx.Iframe(id, config);\n\n return loadIframe({iframe, setCachedToken, setLoaded});\n}\n\nfunction getStyles(s: string) {\n const css = JSON.parse(s);\n const styles = {\n base: CSSPropertiesToComponent(css.base),\n focus: CSSPropertiesToComponent(css.focus),\n error: CSSPropertiesToComponent(css.error),\n placeholder: CSSPropertiesToComponent(css.placeholder),\n cvv: {\n base: CSSPropertiesToComponent(css.cvv?.base),\n focus: CSSPropertiesToComponent(css.cvv?.focus),\n error: CSSPropertiesToComponent(css.cvv?.error),\n placeholder: CSSPropertiesToComponent(css?.placeholder),\n },\n };\n\n return {styles};\n}\n\nfunction CSSPropertiesToComponent(\n dict: CSSProperties | string | undefined\n): string {\n if (!dict) return '';\n if (typeof dict === 'string') return dict;\n\n let str = '';\n for (const [key, value] of Object.entries(dict)) {\n let clo = '';\n key.split('').forEach(lt => {\n if (lt.toUpperCase() === lt) {\n clo += '-' + lt.toLowerCase();\n } else {\n clo += lt;\n }\n });\n str += clo + ':' + value + ';';\n }\n return str;\n}\n","/* generated using openapi-typescript-codegen -- do no edit */\n/* istanbul ignore file */\n/* tslint:disable */\n/* oxlint-disable */\n\nimport {AnyObject} from './AnyObject';\nimport {SellerInfo} from './CartitemCommon';\n\n/**\n * An nft cart item\n */\nexport type nftCartItem = {\n /**\n * Denotes the cart item class. The item schema is chosen based on this value\n */\n itemClass: 'nft';\n /**\n * The name of the related product\n *\n * @minLength 1\n */\n productName: string;\n /**\n * The product type. Possible values include: inGameProduct, gameOfSkill, dataStorage, computingResources, sportsTicket, eSportsTicket, musicTicket, conferenceTicket, virtualSportsTicket, virtualESportsTicket, virtualMusicTicket, virtualConferenceTicket, alcohol, DLC, subscription, fundACause, realEstate, computingContract, digitalArt, topUp\n */\n productType: productType;\n /**\n * The item's list price\n */\n listPrice?: {\n /**\n * The amount in the currency, which is specified in the `currency` property\n */\n valueInCurrency?: number;\n /**\n * Currency specified as a three letter code according to ISO 4217\n */\n currency?: string;\n };\n /**\n * The item's list price\n */\n sellingPrice: {\n /**\n * The amount in the currency, which is specified in the `currency` property\n */\n valueInCurrency?: number;\n /**\n * Currency specified as a three-letter code according to ISO 4217\n */\n currency?: string;\n };\n /**\n * The number of units sold\n */\n quantity: number;\n /**\n * Any additional data that the store can provide on the product, e.g. description, link to image, etc.\n */\n rawProductData?: AnyObject;\n seller?: SellerInfo;\n transactionHistory?: TransactionHistoryItem[];\n};\n\ntype TransactionHistoryItem = {\n txHash: string;\n blockNumber: number;\n txTime: string;\n assetID: string;\n registryContract: string;\n from: string;\n to: string;\n paymentToken: string;\n paymentAmount: string;\n chain: string;\n txType: string;\n};\n\nexport type productType =\n | 'inGameProduct'\n | 'gameOfSkill'\n | 'dataStorage'\n | 'computingResources'\n | 'sportsTicket'\n | 'eSportsTicket'\n | 'musicTicket'\n | 'conferenceTicket'\n | 'virtualSportsTicket'\n | 'virtualESportsTicket'\n | 'virtualMusicTicket'\n | 'virtualConferenceTicket'\n | 'alcohol'\n | 'DLC'\n | 'subscription'\n | 'fundACause'\n | 'realEstate'\n | 'computingContract'\n | 'digitalArt'\n | 'topUp'\n | 'ownershipContract'\n | 'inGameCurrency'\n | 'digitalCollectibles'\n | 'digitalCollectiblesMarketplace'\n | 'digitalGiftingMarketplace'\n | 'sweepstakes'\n | 'virtualSportsEvents'\n | 'contractInvoicing'\n | 'onlineCasino'\n | 'cryptoOnramp'\n | 'gaming'\n | 'travelDocuments'\n | 'musicStreaming'\n | 'digitalContent'\n | 'eBooks'\n | 'digitalSubscriptionContent';\n\nexport namespace nftCartItem {\n /**\n * Denotes the cart item class. The item schema is chosen based on this value\n */\n export enum itemClass {\n NFT = 'nft',\n }\n\n /**\n * The product type. Possible values include: inGameProduct, gameOfSkill, dataStorage, computingResources, sportsTicket, eSportsTicket, musicTicket, conferenceTicket, virtualSportsTicket, virtualESportsTicket, virtualMusicTicket, virtualConferenceTicket, alcohol, DLC, subscription, fundACause, realEstate, computingContract, digitalArt, topUp\n */\n export enum productType {\n IN_GAME_PRODUCT = 'inGameProduct',\n GAME_OF_SKILL = 'gameOfSkill',\n DATA_STORAGE = 'dataStorage',\n COMPUTING_RESOURCES = 'computingResources',\n SPORTS_TICKET = 'sportsTicket',\n E_SPORTS_TICKET = 'eSportsTicket',\n MUSIC_TICKET = 'musicTicket',\n CONFERENCE_TICKET = 'conferenceTicket',\n VIRTUAL_SPORTS_TICKET = 'virtualSportsTicket',\n VIRTUAL_ESPORTS_TICKET = 'virtualESportsTicket',\n VIRTUAL_MUSIC_TICKET = 'virtualMusicTicket',\n VIRTUAL_CONFERENCE_TICKET = 'virtualConferenceTicket',\n ALCOHOL = 'alcohol',\n DLC = 'DLC',\n SUBSCRIPTION = 'subscription',\n FUND_ACAUSE = 'fundACause',\n REAL_ESTATE = 'realEstate',\n COMPUTING_CONTRACT = 'computingContract',\n DIGITAL_ART = 'digitalArt',\n TOP_UP = 'topUp',\n OWNERSHIP_CONTRACT = 'ownershipContract',\n IN_GAME_CURRENCY = 'inGameCurrency',\n MONEY_TOP_UP_CART_ITEM = 'moneyTopUpCartItem',\n }\n}\n","import {\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n Output,\n ViewChild,\n} from '@angular/core';\nimport {\n CoinflowIFrameProps,\n CoinflowUtils,\n handleIFrameMessage,\n IFrameMessageHandlers,\n} from './common';\nimport {DomSanitizer, SafeResourceUrl} from '@angular/platform-browser';\n\n@Component({\n selector: 'lib-coinflow-iframe',\n standalone: true,\n imports: [],\n template: ` <iframe\n width=\"100%\"\n height=\"100%\"\n #iframe\n scrolling=\"{{ iframeProps?.handleHeightChangeId ? 'no' : 'yes' }}\"\n allow=\"payment;camera;clipboard-write\"\n title=\"withdraw\"\n frameBorder=\"0\"\n [src]=\"dynamicUrl\"\n credentialless\n (load)=\"handleIframeLoad()\"\n ></iframe>`,\n})\nexport class CoinflowIFrameComponent {\n @Input() iframeProps!: CoinflowIFrameProps;\n @Input() messageHandlers!: IFrameMessageHandlers;\n @Input() onLoad?: () => void | Promise<void>;\n @Input() waitForLoadedMessage?: boolean;\n\n @Output() messageEvent = new EventEmitter<any>();\n\n dynamicUrl?: SafeResourceUrl;\n @ViewChild('iframe') iframe?: ElementRef<HTMLIFrameElement>;\n private isLoading = true;\n\n constructor(private sanitizer: DomSanitizer) {}\n\n ngOnInit() {\n const coinflowUrl = CoinflowUtils.getCoinflowUrl(this.iframeProps);\n this.dynamicUrl =\n this.sanitizer.bypassSecurityTrustResourceUrl(coinflowUrl);\n }\n\n @HostListener('window:message', ['$event']) onPostMessage(event: any) {\n if (\n !event.origin.includes(\n CoinflowUtils.getCoinflowBaseUrl(this.iframeProps.env)\n )\n )\n return;\n\n this.messageEvent.emit(event);\n\n if (this.waitForLoadedMessage) {\n try {\n const message = JSON.parse(event.data);\n if (\n message &&\n typeof message === 'object' &&\n message.method === 'loaded'\n ) {\n this.isLoading = false;\n this.onLoad?.();\n }\n } catch (error) {\n // Ignore parse errors\n }\n }\n\n const promise = handleIFrameMessage(\n event.data,\n this.messageHandlers,\n this.iframeProps.handleHeightChangeId\n );\n if (!promise) return;\n promise\n .then(this.sendMessage.bind(this))\n .catch(e => this.sendMessage('ERROR ' + e.message));\n }\n\n sendMessage(message: string) {\n if (!this.iframe || !this.iframe.nativeElement) return;\n this.iframe.nativeElement.contentWindow!.postMessage(message, '*');\n }\n\n handleIframeLoad() {\n if (this.waitForLoadedMessage) return;\n\n this.isLoading = false;\n this.onLoad?.();\n }\n}\n","import {Component, Input} from '@angular/core';\nimport {CoinflowIFrameComponent} from './coinflow-iframe.component';\nimport {\n CoinflowIFrameProps,\n CoinflowPurchaseProps,\n CoinflowUtils,\n getHandlers,\n getWalletPubkey,\n IFrameMessageHandlers,\n} from './common';\nimport {WithOnLoad} from '../public-api';\n\n@Component({\n selector: 'lib-coinflow-purchase',\n standalone: true,\n imports: [CoinflowIFrameComponent],\n template:\n ' <lib-coinflow-iframe ng-if=\"iframeProps && messageHandlers\" [iframeProps]=\"iframeProps!\" [messageHandlers]=\"messageHandlers!\" [onLoad]=\"purchaseProps?.onLoad\" [waitForLoadedMessage]=\"true\"></lib-coinflow-iframe> ',\n})\nexport class CoinflowPurchaseComponent {\n @Input() purchaseProps!: CoinflowPurchaseProps & WithOnLoad;\n iframeProps?: CoinflowIFrameProps;\n messageHandlers?: IFrameMessageHandlers;\n\n ngOnInit() {\n const walletPubkey = getWalletPubkey(this.purchaseProps);\n this.messageHandlers = getHandlers(this.purchaseProps);\n this.messageHandlers.handleHeightChange =\n this.purchaseProps.handleHeightChange;\n\n const handleHeightChangeId = Math.random().toString(16).substring(2);\n\n this.iframeProps = {\n ...this.purchaseProps,\n walletPubkey,\n route: `/purchase-v2/${this.purchaseProps?.merchantId}`,\n transaction: CoinflowUtils.getTransaction(this.purchaseProps),\n handleHeightChangeId,\n };\n }\n}\n","import {Component} from '@angular/core';\n\n@Component({\n selector: 'lib-coinflow-purchase-history',\n standalone: true,\n imports: [],\n template: ' <p>coinflow-purchase-history works!</p> ',\n})\nexport class CoinflowPurchaseHistoryComponent {}\n","import {Component} from '@angular/core';\n\n@Component({\n selector: 'lib-coinflow-purchase-protection',\n standalone: true,\n imports: [],\n template: ' <p>coinflow-purchase-protection works!</p> ',\n})\nexport class CoinflowPurchaseProtectionComponent {}\n","import {Component, Input} from '@angular/core';\nimport {\n CoinflowIFrameProps,\n CoinflowWithdrawProps,\n getHandlers,\n getWalletPubkey,\n IFrameMessageHandlers,\n} from './common';\nimport {WithOnLoad} from '../public-api';\nimport {CoinflowIFrameComponent} from './coinflow-iframe.component';\n\n@Component({\n selector: 'lib-coinflow-withdraw',\n standalone: true,\n imports: [CoinflowIFrameComponent],\n template:\n ' <lib-coinflow-iframe ng-if=\"iframeProps && messageHandlers\" [iframeProps]=\"iframeProps!\" [messageHandlers]=\"messageHandlers!\" [onLoad]=\"withdrawProps?.onLoad\"></lib-coinflow-iframe> ',\n})\nexport class CoinflowWithdrawComponent {\n @Input() withdrawProps!: CoinflowWithdrawProps & WithOnLoad;\n iframeProps?: CoinflowIFrameProps;\n messageHandlers?: IFrameMessageHandlers;\n\n ngOnInit() {\n const walletPubkey = getWalletPubkey(this.withdrawProps);\n this.messageHandlers = getHandlers(this.withdrawProps);\n this.messageHandlers.handleHeightChange =\n this.withdrawProps.handleHeightChange;\n\n const handleHeightChangeId = Math.random().toString(16).substring(2);\n\n this.iframeProps = {\n ...this.withdrawProps,\n walletPubkey,\n route: `/withdraw/${this.withdrawProps?.merchantId}`,\n transaction: undefined,\n handleHeightChangeId,\n };\n }\n}\n","import {Component} from '@angular/core';\n\n@Component({\n selector: 'lib-coinflow-withdraw-history',\n standalone: true,\n imports: [],\n template: ' <p>coinflow-withdraw-history works!</p> ',\n})\nexport class CoinflowWithdrawHistoryComponent {}\n","import {\n doInitializeCvvOnlyTokenExIframe,\n doInitializeTokenExCardOnlyIframe,\n doInitializeTokenExIframe,\n MerchantIdOrCheckoutJwt,\n TokenExIframe,\n} from '../common';\nimport {Injectable} from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CardFormService {\n loaded = false;\n tokenExIframe: TokenExIframe | undefined = undefined;\n\n setTokenExIframe(iframe: TokenExIframe | undefined) {\n this.tokenExIframe = iframe;\n }\n\n setCachedToken() {}\n\n setLoaded(input: boolean) {\n this.loaded = input;\n }\n\n async initializeCvvOnlyTokenExIframe(\n args: Omit<\n Parameters<typeof doInitializeCvvOnlyTokenExIframe>[0],\n 'tokenExScriptLoaded' | 'setCachedToken' | 'setLoaded'\n > &\n MerchantIdOrCheckoutJwt\n ) {\n const iframe = await doInitializeCvvOnlyTokenExIframe({\n ...args,\n tokenExScriptLoaded: true,\n setCachedToken: this.setCachedToken.bind(this),\n setLoaded: this.setLoaded.bind(this),\n });\n this.setTokenExIframe(iframe);\n if (iframe) iframe.load();\n return iframe;\n }\n\n async initializeTokenExIframe(\n args: Omit<\n Parameters<typeof doInitializeTokenExIframe>[0],\n 'tokenExScriptLoaded' | 'setCachedToken' | 'setLoaded'\n > &\n MerchantIdOrCheckoutJwt\n ) {\n console.log('initializeTokenExIframe');\n const iframe = await doInitializeTokenExIframe({\n ...args,\n tokenExScriptLoaded: true,\n setCachedToken: this.setCachedToken.bind(this),\n setLoaded: this.setLoaded.bind(this),\n });\n console.log('iframe', iframe);\n this.setTokenExIframe(iframe);\n if (iframe) iframe.load();\n console.log('LOADED');\n return iframe;\n }\n\n async initializeTokenExCardOnlyIframe(\n args: Omit<\n Parameters<typeof doInitializeTokenExCardOnlyIframe>[0],\n 'tokenExScriptLoaded' | 'setCachedToken' | 'setLoaded'\n > &\n MerchantIdOrCheckoutJwt\n ) {\n const iframe = await doInitializeTokenExCardOnlyIframe({\n ...args,\n tokenExScriptLoaded: true,\n setCachedToken: this.setCachedToken.bind(this),\n setLoaded: this.setLoaded.bind(this),\n });\n this.setTokenExIframe(iframe);\n if (iframe) iframe.load();\n return iframe;\n }\n}\n","import {Component, inject, Input, OnDestroy} from '@angular/core';\nimport {\n CoinflowCardNumberInputProps,\n MerchantIdOrCheckoutJwt,\n setTokenExScriptTag,\n TokenExCardNumberIframeId,\n TokenExIframe,\n} from '../common';\nimport {CardFormService} from './CardFormService';\n\n@Component({\n selector: 'lib-coinflow-card-number-input',\n standalone: true,\n imports: [],\n template: '<div id=\"{{TokenExCardNumberIframeId}}\"></div>',\n})\nexport class CoinflowCardNumberInput implements OnDestroy {\n private cardFormService = inject(CardFormService);\n @Input() args!: CoinflowCardNumberInputProps & MerchantIdOrCheckoutJwt;\n private iframe: TokenExIframe | undefined = undefined;\n\n private onScriptLoaded() {\n this.cardFormService\n .initializeTokenExIframe({\n ...this.args,\n css: JSON.stringify(this.args.css),\n })\n .then(iframe => (this.iframe = iframe))\n .catch(e => console.error(e));\n }\n\n private initializeTokenEx() {\n setTokenExScriptTag({\n env: this.args.env,\n setTokenExScriptLoaded: this.onScriptLoaded.bind(this),\n });\n }\n\n public reinitialize() {\n this.iframe = undefined;\n this.initializeTokenEx();\n }\n\n ngOnInit() {\n this.initializeTokenEx();\n }\n\n ngOnDestroy() {\n this.iframe = undefined;\n }\n\n tokenize() {\n return this.iframe!.tokenize();\n }\n\n protected readonly TokenExCardNumberIframeId = TokenExCardNumberIframeId;\n}\n","import {Component, inject, Input, OnDestroy} from '@angular/core';\nimport {\n CoinflowCardNumberInputProps,\n MerchantIdOrCheckoutJwt,\n setTokenExScriptTag,\n TokenExCardNumberIframeId,\n TokenExIframe,\n} from '../common';\nimport {CardFormService} from './CardFormService';\n\n@Component({\n selector: 'lib-coinflow-card-number-only-input',\n standalone: true,\n imports: [],\n template: '<div id=\"{{TokenExCardNumberIframeId}}\"></div>',\n})\nexport class CoinflowCardNumberOnlyInput implements OnDestroy {\n private cardFormService = inject(CardFormService);\n @Input() args!: CoinflowCardNumberInputProps & MerchantIdOrCheckoutJwt;\n private iframe: TokenExIframe | undefined = undefined;\n\n private onScriptLoaded() {\n this.cardFormService\n .initializeTokenExCardOnlyIframe({\n ...this.args,\n css: JSON.stringify(this.args.css),\n })\n .then(iframe => (this.iframe = iframe))\n .catch(e => console.error(e));\n }\n\n private initializeTokenEx() {\n setTokenExScriptTag({\n env: this.args.env,\n setTokenExScriptLoaded: this.onScriptLoaded.bind(this),\n });\n }\n\n public reinitialize() {\n this.iframe = undefined;\n this.initializeTokenEx();\n }\n\n ngOnInit() {\n this.initializeTokenEx();\n }\n\n ngOnDestroy() {\n this.iframe = undefined;\n }\n\n tokenize() {\n return this.iframe!.tokenize();\n }\n\n protected readonly TokenExCardNumberIframeId = TokenExCardNumberIframeId;\n}\n","import {Component} from '@angular/core';\nimport {TokenExCvvContainerID} from '../common';\n\n@Component({\n selector: 'lib-coinflow-cvv-input',\n standalone: true,\n imports: [],\n template: '<div id=\"{{TokenExCvvContainerID}}\" ></div>',\n})\nexport class CoinflowCvvInputComponent {\n protected readonly TokenExCvvContainerID = TokenExCvvContainerID;\n}\n","import {\n Component,\n inject,\n Input,\n OnDestroy,\n SimpleChanges,\n} from '@angular/core';\nimport {\n CoinflowCvvOnlyInputProps,\n MerchantIdOrCheckoutJwt,\n setTokenExScriptTag,\n TokenExCvvContainerID,\n TokenExIframe,\n} from '../common';\nimport {CardFormService} from './CardFormService';\n\n@Component({\n selector: 'lib-coinflow-cvv-only-input',\n standalone: true,\n imports: [],\n template: '<div id=\"{{TokenExCvvContainerID}}\"></div>',\n})\nexport class CoinflowCvvOnlyInputComponent implements OnDestroy {\n private cardFormService = inject(CardFormService);\n @Input() args!: CoinflowCvvOnlyInputProps & MerchantIdOrCheckoutJwt;\n private iframe: TokenExIframe | undefined = undefined;\n\n private onScriptLoaded() {\n this.cardFormService\n .initializeCvvOnlyTokenExIframe({\n ...this.args,\n css: JSON.stringify(this.args.css),\n })\n .then(iframe => {\n this.iframe = iframe;\n })\n .catch(e => console.error(e));\n }\n\n private cleanup() {\n if (this.iframe) {\n const iframeElement = document.querySelector(`#${TokenExCvvContainerID}`);\n if (iframeElement) iframeElement.innerHTML = '';\n this.iframe = undefined;\n }\n }\n\n private initializeTokenEx() {\n setTokenExScriptTag({\n env: this.args.env,\n setTokenExScriptLoaded: this.onScriptLoaded.bind(this),\n });\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.args && !changes.args.firstChange) {\n this.reinitialize();\n }\n }\n\n public reinitialize() {\n this.cleanup();\n setTimeout(() => {\n this.initializeTokenEx();\n }, 500);\n }\n\n ngOnInit() {\n this.initializeTokenEx();\n }\n\n ngOnDestroy() {\n this.iframe = undefined;\n }\n\n tokenize() {\n return this.iframe!.tokenize();\n }\n\n protected readonly TokenExCvvContainerID = TokenExCvvContainerID;\n}\n","import {Component, Input} from '@angular/core';\nimport {CoinflowIFrameComponent} from '../coinflow-iframe.component';\nimport {\n CoinflowIFrameProps,\n CoinflowPurchaseProps,\n CoinflowUtils,\n getHandlers,\n getWalletPubkey,\n IFrameMessageHandlers,\n} from '../common';\nimport {WithOnLoad} from '../../public-api';\n\n@Component({\n selector: 'lib-coinflow-mobile-wallet-button',\n standalone: true,\n imports: [CoinflowIFrameComponent],\n template: ` <div style=\"position: relative; height: 100%;\">\n <div\n [style.background-color]=\"purchaseProps.color\"\n [style.display]=\"overlayDisplayOverride ?? display\"\n [style.opacity]=\"opacity\"\n [style.align-items]=\"alignItems\"\n style=\"width: 100%; height: 40px; position: absolute; top: 0; bottom: 0; left: 0; z-index: 20; justify-content: center; pointer-events: none;\"\n >\n <ng-content></ng-content>\n </div>\n <div style=\"position: relative; z-index: 10; height: 100%;\">\n <lib-coinflow-iframe\n (messageEvent)=\"handleMessage($event)\"\n ng-if=\"iframeProps && messageHandlers\"\n [iframeProps]=\"iframeProps!\"\n [messageHandlers]=\"messageHandlers!\"\n [onLoad]=\"purchaseProps?.onLoad\"\n [waitForLoadedMessage]=\"true\"\n ></lib-coinflow-iframe>\n </div>\n </div>`,\n})\nexport class CoinflowMobileWalletButtonComponent {\n @Input() purchaseProps!: CoinflowPurchaseProps &\n WithOnLoad & {\n color: 'white' | 'black';\n onError?: (message: string) => void;\n };\n\n @Input() route!: string;\n @Input() overlayDisplayOverride: string | undefined;\n @Input() alignItems: string | undefined;\n opacity: number = 0.8;\n display: string = 'flex';\n\n iframeProps?: CoinflowIFrameProps;\n messageHandlers?: IFrameMessageHandlers;\n\n handleMessage({data}: {data: string}) {\n try {\n const res = JSON.parse(data);\n\n console.log({data});\n if ('method' in res && res.data.startsWith('ERROR')) {\n this.purchaseProps.onError?.(res.info);\n return;\n }\n\n if ('method' in res && res.method === 'loaded') {\n this.opacity = 1;\n setTimeout(() => {\n this.display = 'none';\n }, 2000);\n }\n } catch (e) {}\n }\n\n ngOnInit() {\n const walletPubkey = getWalletPubkey(this.purchaseProps);\n this.messageHandlers = getHandlers(this.purchaseProps);\n this.messageHandlers.handleHeightChange =\n this.purchaseProps.handleHeightChange;\n\n const handleHeightChangeId = Math.random().toString(16).substring(2);\n\n this.iframeProps = {\n ...this.purchaseProps,\n walletPubkey,\n route: `/${this.route}/${this.purchaseProps?.merchantId}`,\n routePrefix: 'form',\n transaction: CoinflowUtils.getTransaction(this.purchaseProps),\n handleHeightChangeId,\n };\n }\n}\n","import {Component, Input} from '@angular/core';\nimport {CoinflowPurchaseProps} from '../common';\nimport {CoinflowMobileWalletButtonComponent} from './coinflow-mobile-wallet-button.component';\n\n@Component({\n selector: 'lib-coinflow-apple-pay-button',\n standalone: true,\n imports: [CoinflowMobileWalletButtonComponent],\n template: ` <lib-coinflow-mobile-wallet-button\n ng-if=\"iframeProps && messageHandlers\"\n [purchaseProps]=\"purchaseProps\"\n route=\"apple-pay\"\n >\n <svg id=\"svg-logo\" viewBox=\"0 0 35 15\">\n <svg\n id=\"svg-logo\"\n x=\"0\"\n y=\"3.85\"\n height=\"7.3\"\n width=\"35\"\n className=\"logo\"\n viewBox=\"0 0 105 43\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n >\n <title>Apple Logo</title>\n <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <g [attr.fill]=\"fill()\">\n <path\n d=\"M19.4028,5.5674 C20.6008,4.0684 21.4138,2.0564 21.1998,0.0004 C19.4458,0.0874 17.3058,1.1574 16.0668,2.6564 C14.9538,3.9414 13.9688,6.0374 14.2258,8.0074 C16.1948,8.1784 18.1618,7.0244 19.4028,5.5674\"\n ></path>\n <path\n d=\"M21.1772,8.3926 C18.3182,8.2226 15.8872,10.0156 14.5212,10.0156 C13.1552,10.0156 11.0642,8.4786 8.8022,8.5196 C5.8592,8.5626 3.1282,10.2276 1.6342,12.8746 C-1.4378,18.1696 0.8232,26.0246 3.8112,30.3376 C5.2622,32.4716 7.0102,34.8206 9.3142,34.7366 C11.4912,34.6506 12.3442,33.3266 14.9902,33.3266 C17.6352,33.3266 18.4042,34.7366 20.7082,34.6936 C23.0972,34.6506 24.5922,32.5586 26.0422,30.4226 C27.7072,27.9906 28.3882,25.6426 28.4312,25.5126 C28.3882,25.4706 23.8232,23.7186 23.7812,18.4676 C23.7382,14.0706 27.3652,11.9786 27.5362,11.8496 C25.4882,8.8196 22.2872,8.4786 21.1772,8.3926\"\n ></path>\n <path\n d=\"M85.5508,43.0381 L85.5508,39.1991 C85.8628,39.2421 86.6158,39.2871 87.0158,39.2871 C89.2138,39.2871 90.4558,38.3551 91.2108,35.9581 L91.6548,34.5371 L83.2428,11.2321 L88.4368,11.2321 L94.2958,30.1421 L94.4068,30.1421 L100.2668,11.2321 L105.3278,11.2321 L96.6048,35.7141 C94.6078,41.3291 92.3208,43.1721 87.4828,43.1721 C87.1048,43.1721 85.8838,43.1271 85.5508,43.0381\"\n ></path>\n <path\n d=\"M42.6499,19.3555 L48.3549,19.3555 C52.6829,19.3555 55.1469,17.0255 55.1469,12.9855 C55.1469,8.9455 52.6829,6.6375 48.3769,6.6375 L42.6499,6.6375 L42.6499,19.3555 Z M49.6869,2.4425 C55.9009,2.4425 60.2289,6.7265 60.2289,12.9625 C60.2289,19.2225 55.8129,23.5285 49.5309,23.5285 L42.6499,23.5285 L42.6499,34.4705 L37.6779,34.4705 L37.6779,2.4425 L49.6869,2.4425 Z\"\n ></path>\n <path\n d=\"M76.5547,25.7705 L76.5547,23.9715 L71.0287,24.3275 C67.9207,24.5275 66.3007,25.6815 66.3007,27.7015 C66.3007,29.6545 67.9887,30.9195 70.6287,30.9195 C74.0027,30.9195 76.5547,28.7665 76.5547,25.7705 M61.4617,27.8345 C61.4617,23.7285 64.5917,21.3755 70.3627,21.0205 L76.5547,20.6425 L76.5547,18.8675 C76.5547,16.2705 74.8457,14.8495 71.8057,14.8495 C69.2967,14.8495 67.4777,16.1375 67.0997,18.1125 L62.6167,18.1125 C62.7497,13.9615 66.6567,10.9435 71.9387,10.9435 C77.6207,10.9435 81.3267,13.9175 81.3267,18.5345 L81.3267,34.4705 L76.7327,34.4705 L76.7327,30.6305 L76.6217,30.6305 C75.3127,33.1395 72.4267,34.7145 69.2967,34.7145 C64.6807,34.7145 61.4617,31.9625 61.4617,27.8345\"\n ></path>\n </g>\n </g>\n </svg>\n </svg>\n </lib-coinflow-mobile-wallet-button>`,\n})\nexport class CoinflowApplePayButtonComponent {\n @Input() purchaseProps!: CoinflowPurchaseProps & {\n color: 'white' | 'black';\n onError?: (message: string) => void;\n };\n\n fill() {\n return this.purchaseProps.color === 'white' ? '#000' : '#FFF';\n }\n}\n","import {Component, Input} from '@angular/core';\n\n@Component({\n selector: 'coinflow-google-pay-overlay',\n standalone: true,\n imports: [],\n template: `\n @if (color === 'white') {\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"41\" height=\"17\">\n <g fill=\"none\" fill-rule=\"evenodd\">\n <path\n d=\"M19.526 2.635v4.083h2.518c.6 0 1.096-.202 1.488-.605.403-.402.605-.882.605-1.437 0-.544-.202-1.018-.605-1.422-.392-.413-.888-.62-1.488-.62h-2.518zm0 5.52v4.736h-1.504V1.198h3.99c1.013 0 1.873.337 2.582 1.012.72.675 1.08 1.497 1.08 2.466 0 .991-.36 1.819-1.08 2.482-.697.665-1.559.996-2.583.996h-2.485v.001zm7.668 2.287c0 .392.166.718.499.98.332.26.722.391 1.168.391.633 0 1.196-.234 1.692-.701.497-.469.744-1.019.744-1.65-.469-.37-1.123-.555-1.962-.555-.61 0-1.12.148-1.528.442-.409.294-.613.657-.613 1.093m1.946-5.815c1.112 0 1.989.297 2.633.89.642.594.964 1.408.964 2.442v4.932h-1.439v-1.11h-.065c-.622.914-1.45 1.372-2.486 1.372-.882 0-1.621-.262-2.215-.784-.594-.523-.891-1.176-.891-1.96 0-.828.313-1.486.94-1.976s1.463-.735 2.51-.735c.892 0 1.629.163 2.206.49v-.344c0-.522-.207-.966-.621-1.33a2.132 2.132 0 0 0-1.455-.547c-.84 0-1.504.353-1.995 1.062l-1.324-.834c.73-1.045 1.81-1.568 3.238-1.568m11.853.262l-5.02 11.53H34.42l1.864-4.034-3.302-7.496h1.635l2.387 5.749h.032l2.322-5.75z\"\n fill=\"#5F6368\"\n />\n <path\n d=\"M13.448 7.134c0-.473-.04-.93-.116-1.366H6.988v2.588h3.634a3.11 3.11 0 0 1-1.344 2.042v1.68h2.169c1.27-1.17 2.001-2.9 2.001-4.944\"\n fill=\"#4285F4\"\n />\n <path\n d=\"M6.988 13.7c1.816 0 3.344-.595 4.459-1.621l-2.169-1.681c-.603.406-1.38.643-2.29.643-1.754 0-3.244-1.182-3.776-2.774H.978v1.731a6.728 6.728 0 0 0 6.01 3.703\"\n fill=\"#34A853\"\n />\n <path\n d=\"M3.212 8.267a4.034 4.034 0 0 1 0-2.572V3.964H.978A6.678 6.678 0 0 0 .261 6.98c0 1.085.26 2.11.717 3.017l2.234-1.731z\"\n fill=\"#FABB05\"\n />\n <path\n d=\"M6.988 2.921c.992 0 1.88.34 2.58 1.008v.001l1.92-1.918C10.324.928 8.804.262 6.989.262a6.728 6.728 0 0 0-6.01 3.702l2.234 1.731c.532-1.592 2.022-2.774 3.776-2.774\"\n fill=\"#E94235\"\n />\n <path d=\"M0 0h41.285v18H0z\" />\n </g>\n </svg>\n } @else {\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"41\" height=\"17\">\n <g fill=\"none\" fill-rule=\"evenodd\">\n <path\n d=\"M19.526 2.635v4.083h2.518c.6 0 1.096-.202 1.488-.605.403-.402.605-.882.605-1.437 0-.544-.202-1.018-.605-1.422-.392-.413-.888-.62-1.488-.62h-2.518zm0 5.52v4.736h-1.504V1.198h3.99c1.013 0 1.873.337 2.582 1.012.72.675 1.08 1.497 1.08 2.466 0 .991-.36 1.819-1.08 2.482-.697.665-1.559.996-2.583.996h-2.485v.001zm7.668 2.287c0 .392.166.718.499.98.332.26.722.391 1.168.391.633 0 1.196-.234 1.692-.701.497-.469.744-1.019.744-1.65-.469-.37-1.123-.555-1.962-.555-.61 0-1.12.148-1.528.442-.409.294-.613.657-.613 1.093m1.946-5.815c1.112 0 1.989.297 2.633.89.642.594.964 1.408.964 2.442v4.932h-1.439v-1.11h-.065c-.622.914-1.45 1.372-2.486 1.372-.882 0-1.621-.262-2.215-.784-.594-.523-.891-1.176-.891-1.96 0-.828.313-1.486.94-1.976s1.463-.735 2.51-.735c.892 0 1.629.163 2.206.49v-.344c0-.522-.207-.966-.621-1.33a2.132 2.132 0 0 0-1.455-.547c-.84 0-1.504.353-1.995 1.062l-1.324-.834c.73-1.045 1.81-1.568 3.238-1.568m11.853.262l-5.02 11.53H34.42l1.864-4.034-3.302-7.496h1.635l2.387 5.749h.032l2.322-5.75z\"\n fill=\"#FFF\"\n />\n <path\n d=\"M13.448 7.134c0-.473-.04-.93-.116-1.366H6.988v2.588h3.634a3.11 3.11 0 0 1-1.344 2.042v1.68h2.169c1.27-1.17 2.001-2.9 2.001-4.944\"\n fill=\"#4285F4\"\n />\n <path\n d=\"M6.988 13.7c1.816 0 3.344-.595 4.459-1.621l-2.169-1.681c-.603.406-1.38.643-2.29.643-1.754 0-3.244-1.182-3.776-2.774H.978v1.731a6.728 6.728 0 0 0 6.01 3.703\"\n fill=\"#34A853\"\n />\n <path\n d=\"M3.212 8.267a4.034 4.034 0 0 1 0-2.572V3.964H.978A6.678 6.678 0 0 0 .261 6.98c0 1.085.26 2.11.717 3.017l2.234-1.731z\"\n fill=\"#FABB05\"\n />\n <path\n d=\"M6.988 2.921c.992 0 1.88.34 2.58 1.008v.001l1.92-1.918C10.324.928 8.804.262 6.989.262a6.728 6.728 0 0 0-6.01 3.702l2.234 1.731c.532-1.592 2.022-2.774 3.776-2.774\"\n fill=\"#E94235\"\n />\n </g>\n </svg>\n }\n `,\n})\nexport class CoinflowGooglePayOverlayComponent {\n @Input() color!: 'white' | 'black';\n}\n","import {Component, Input} from '@angular/core';\nimport {CoinflowPurchaseProps} from '../common';\nimport {CoinflowMobileWalletButtonComponent} from './coinflow-mobile-wallet-button.component';\nimport {CoinflowGooglePayOverlayComponent} from './google-pay-overlay.component';\n\n@Component({\n selector: 'lib-coinflow-google-pay-button',\n standalone: true,\n imports: [\n CoinflowMobileWalletButtonComponent,\n CoinflowGooglePayOverlayComponent,\n ],\n template: `<lib-coinflow-mobile-wallet-button\n ng-if=\"iframeProps && messageHandlers\"\n [purchaseProps]=\"purchaseProps\"\n route=\"google-pay\"\n alignItems=\"center\"\n overlayDisplayOverride=\"flex\"\n >\n <coinflow-google-pay-overlay\n [color]=\"purchaseProps.color\"\n ></coinflow-google-pay-overlay>\n </lib-coinflow-mobile-wallet-button> `,\n})\nexport class CoinflowGooglePayButtonComponent {\n @Input() purchaseProps!: CoinflowPurchaseProps & {\n color: 'white' | 'black';\n onError?: (message: string) => void;\n };\n}\n","/*\n * Public API Surface of coinflowlabs\n */\n\nexport * from './lib/coinflow-iframe.component';\nexport * from './lib/coinflow-purchase.component';\nexport * from './lib/coinflow-purchase-history.component';\nexport * from './lib/coinflow-purchase-protection.component';\nexport * from './lib/coinflow-withdraw.component';\nexport * from './lib/coinflow-withdraw-history.component';\n\nexport * from './lib/card-form/coinflow-card-number-input.component';\nexport * from './lib/card-form/coinflow-card-number-only-input.component';\nexport * from './lib/card-form/coinflow-cvv-input.component';\nexport * from './lib/card-form/coinflow-cvv-only-input.component';\n\nexport * from './lib/mobile-wallet/coinflow-apple-pay-button.component';\nexport * from './lib/mobile-wallet/coinflow-google-pay-button.component';\n\nexport * from './lib/common';\n\nexport type WithOnLoad = {\n onLoad?: () => void | Promise<void>;\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["getNSureDeviceId"],"mappings":"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A,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AAEX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACb,CAAC,EA9JW,QAAQ,KAAR,QAAQ,GAAA,EAAA,CAAA,CAAA;AAgKb,MAAM,iBAAiB,GAA6B;AACzD,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ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"}
|
package/package.json
CHANGED
|
@@ -677,6 +677,32 @@ declare enum SettlementType {
|
|
|
677
677
|
USDC = "USDC",
|
|
678
678
|
Bank = "Bank"
|
|
679
679
|
}
|
|
680
|
+
/**
|
|
681
|
+
* Configuration for zero authorization flow - controls saved payment method visibility.
|
|
682
|
+
*/
|
|
683
|
+
interface ZeroAuthSavedPaymentMethods {
|
|
684
|
+
disableSavedPaymentMethods: boolean;
|
|
685
|
+
}
|
|
686
|
+
/**
|
|
687
|
+
* Configuration for zero authorization flow - verify existing card mode.
|
|
688
|
+
* Shows the "Verify Card" flow for a specific saved card.
|
|
689
|
+
* The card token will be validated to ensure it belongs to the current user's wallet.
|
|
690
|
+
* If the card doesn't belong to the user, falls back to "Add New Card" view.
|
|
691
|
+
*/
|
|
692
|
+
interface ZeroAuthVerifyCard {
|
|
693
|
+
cardToken: string;
|
|
694
|
+
}
|
|
695
|
+
/**
|
|
696
|
+
* Configuration for zero authorization flow.
|
|
697
|
+
* The presence of this object indicates the checkout is in zero auth mode.
|
|
698
|
+
*
|
|
699
|
+
* Two mutually exclusive modes:
|
|
700
|
+
* - Saved payment methods: `{ disableSavedPaymentMethods: boolean }` - show or hide saved methods
|
|
701
|
+
* - Verify card: `{ cardToken: "token" }` - verify a specific saved card
|
|
702
|
+
*/
|
|
703
|
+
type ZeroAuthorizationConfig = ZeroAuthSavedPaymentMethods | ZeroAuthVerifyCard;
|
|
704
|
+
declare function isZeroAuthVerifyCard(config: ZeroAuthorizationConfig): config is ZeroAuthVerifyCard;
|
|
705
|
+
declare function isZeroAuthSavedPaymentMethods(config: ZeroAuthorizationConfig): config is ZeroAuthSavedPaymentMethods;
|
|
680
706
|
declare enum MerchantStyle {
|
|
681
707
|
Rounded = "rounded",
|
|
682
708
|
Sharp = "sharp",
|
|
@@ -729,7 +755,7 @@ interface SplitNameCustomerInfo extends BaseCustomerInfo {
|
|
|
729
755
|
}
|
|
730
756
|
type CustomerInfo = SplitNameCustomerInfo | NameCustomerInfo;
|
|
731
757
|
/** Coinflow Types **/
|
|
732
|
-
type CoinflowBlockchain = 'solana' | 'eth' | 'polygon' | 'base' | 'arbitrum' | 'monad' | 'user';
|
|
758
|
+
type CoinflowBlockchain = 'solana' | 'eth' | 'polygon' | 'base' | 'arbitrum' | 'stellar' | 'monad' | 'user';
|
|
733
759
|
type CoinflowEnvs = 'prod' | 'staging' | 'staging-live' | 'sandbox' | 'local';
|
|
734
760
|
interface CoinflowTypes {
|
|
735
761
|
merchantId: string;
|
|
@@ -787,6 +813,12 @@ type EthWallet = {
|
|
|
787
813
|
}>;
|
|
788
814
|
signMessage: (message: string) => Promise<string>;
|
|
789
815
|
};
|
|
816
|
+
interface StellarWallet {
|
|
817
|
+
address: string | null;
|
|
818
|
+
sendTransaction: (base64Xdr: string) => Promise<string>;
|
|
819
|
+
signTransaction: (base64Xdr: string) => Promise<string>;
|
|
820
|
+
signMessage: (message: string) => Promise<string>;
|
|
821
|
+
}
|
|
790
822
|
/** History **/
|
|
791
823
|
interface CoinflowSolanaHistoryProps extends CoinflowTypes {
|
|
792
824
|
wallet: SolanaWallet;
|
|
@@ -813,10 +845,14 @@ interface CoinflowBaseHistoryProps extends CoinflowEvmHistoryProps {
|
|
|
813
845
|
interface CoinflowArbitrumHistoryProps extends CoinflowEvmHistoryProps {
|
|
814
846
|
blockchain: 'arbitrum';
|
|
815
847
|
}
|
|
848
|
+
interface CoinflowStellarHistoryProps extends CoinflowTypes {
|
|
849
|
+
wallet: StellarWallet;
|
|
850
|
+
blockchain: 'stellar';
|
|
851
|
+
}
|
|
816
852
|
interface CoinflowMonadHistoryProps extends CoinflowEvmHistoryProps {
|
|
817
853
|
blockchain: 'monad';
|
|
818
854
|
}
|
|
819
|
-
type CoinflowHistoryProps = CoinflowSolanaHistoryProps | CoinflowPolygonHistoryProps | CoinflowEthHistoryProps | CoinflowBaseHistoryProps | CoinflowArbitrumHistoryProps | CoinflowMonadHistoryProps | CoinflowSessionKeyHistoryProps;
|
|
855
|
+
type CoinflowHistoryProps = CoinflowSolanaHistoryProps | CoinflowPolygonHistoryProps | CoinflowEthHistoryProps | CoinflowBaseHistoryProps | CoinflowArbitrumHistoryProps | CoinflowStellarHistoryProps | CoinflowMonadHistoryProps | CoinflowSessionKeyHistoryProps;
|
|
820
856
|
type Bytes = ArrayLike<number>;
|
|
821
857
|
type BytesLike = Bytes | string;
|
|
822
858
|
/** Purchase **/
|
|
@@ -865,7 +901,16 @@ interface CoinflowCommonPurchaseProps extends CoinflowTypes {
|
|
|
865
901
|
customerInfo?: CustomerInfo;
|
|
866
902
|
settlementType?: SettlementType;
|
|
867
903
|
authOnly?: boolean;
|
|
904
|
+
/**
|
|
905
|
+
* @deprecated Use zeroAuthorizationConfig instead for more control over zero auth behavior.
|
|
906
|
+
* Simple boolean flag for zero authorization mode. When true, defaults to showing saved payment methods.
|
|
907
|
+
*/
|
|
868
908
|
isZeroAuthorization?: boolean;
|
|
909
|
+
/**
|
|
910
|
+
* Configuration for zero authorization flow. Takes precedence over isZeroAuthorization if both are provided.
|
|
911
|
+
* Use this to control whether saved payment methods are shown and to pre-select a specific card for verification.
|
|
912
|
+
*/
|
|
913
|
+
zeroAuthorizationConfig?: ZeroAuthorizationConfig;
|
|
869
914
|
/**
|
|
870
915
|
* If true, pre-checks the partial USDC payment checkbox when USDC balance is available.
|
|
871
916
|
* If false or undefined, maintains default behavior (unchecked).
|
|
@@ -942,10 +987,15 @@ interface CoinflowBasePurchaseProps extends CoinflowEvmPurchaseProps {
|
|
|
942
987
|
interface CoinflowArbitrumPurchaseProps extends CoinflowEvmPurchaseProps {
|
|
943
988
|
blockchain: 'arbitrum';
|
|
944
989
|
}
|
|
990
|
+
interface CoinflowStellarPurchaseProps extends CoinflowCommonPurchaseProps {
|
|
991
|
+
wallet: StellarWallet;
|
|
992
|
+
transaction?: string;
|
|
993
|
+
blockchain: 'stellar';
|
|
994
|
+
}
|
|
945
995
|
interface CoinflowMonadPurchaseProps extends CoinflowEvmPurchaseProps {
|
|
946
996
|
blockchain: 'monad';
|
|
947
997
|
}
|
|
948
|
-
type CoinflowPurchaseProps = CoinflowSolanaPurchaseProps | CoinflowSessionKeyPurchaseProps | CoinflowPolygonPurchaseProps | CoinflowEthPurchaseProps | CoinflowBasePurchaseProps | CoinflowArbitrumPurchaseProps | CoinflowMonadPurchaseProps;
|
|
998
|
+
type CoinflowPurchaseProps = CoinflowSolanaPurchaseProps | CoinflowSessionKeyPurchaseProps | CoinflowPolygonPurchaseProps | CoinflowEthPurchaseProps | CoinflowBasePurchaseProps | CoinflowArbitrumPurchaseProps | CoinflowStellarPurchaseProps | CoinflowMonadPurchaseProps;
|
|
949
999
|
/** Withdraw **/
|
|
950
1000
|
interface CoinflowCommonWithdrawProps extends CoinflowTypes {
|
|
951
1001
|
onSuccess?: OnSuccessMethod;
|
|
@@ -956,7 +1006,7 @@ interface CoinflowCommonWithdrawProps extends CoinflowTypes {
|
|
|
956
1006
|
bankAccountLinkRedirect?: string;
|
|
957
1007
|
additionalWallets?: {
|
|
958
1008
|
wallet: string;
|
|
959
|
-
blockchain: 'solana' | 'eth' | 'polygon' | 'base' | 'arbitrum' | 'monad';
|
|
1009
|
+
blockchain: 'solana' | 'eth' | 'polygon' | 'base' | 'arbitrum' | 'monad' | 'stellar';
|
|
960
1010
|
}[];
|
|
961
1011
|
lockAmount?: boolean;
|
|
962
1012
|
transactionSigner?: string;
|
|
@@ -978,7 +1028,7 @@ interface CoinflowCommonWithdrawProps extends CoinflowTypes {
|
|
|
978
1028
|
*/
|
|
979
1029
|
allowedWithdrawSpeeds?: WithdrawSpeed[];
|
|
980
1030
|
}
|
|
981
|
-
type WalletTypes = SolanaWallet | EthWallet;
|
|
1031
|
+
type WalletTypes = SolanaWallet | EthWallet | StellarWallet;
|
|
982
1032
|
interface SolanaWalletProps {
|
|
983
1033
|
wallet: SolanaWallet;
|
|
984
1034
|
connection: Connection;
|
|
@@ -1006,11 +1056,16 @@ interface ArbitrumWalletProps {
|
|
|
1006
1056
|
blockchain: 'arbitrum';
|
|
1007
1057
|
}
|
|
1008
1058
|
type CoinflowArbitrumWithdrawProps = CoinflowEvmWithdrawProps & ArbitrumWalletProps;
|
|
1059
|
+
interface StellarWalletProps {
|
|
1060
|
+
wallet: StellarWallet;
|
|
1061
|
+
blockchain: 'stellar';
|
|
1062
|
+
}
|
|
1063
|
+
type CoinflowStellarWithdrawProps = CoinflowCommonWithdrawProps & StellarWalletProps;
|
|
1009
1064
|
interface MonadWalletProps {
|
|
1010
1065
|
blockchain: 'monad';
|
|
1011
1066
|
}
|
|
1012
1067
|
type CoinflowMonadWithdrawProps = CoinflowEvmWithdrawProps & MonadWalletProps;
|
|
1013
|
-
type CoinflowWithdrawProps = CoinflowSolanaWithdrawProps | CoinflowEthWithdrawProps | CoinflowPolygonWithdrawProps | CoinflowBaseWithdrawProps | CoinflowArbitrumWithdrawProps | CoinflowMonadWithdrawProps;
|
|
1068
|
+
type CoinflowWithdrawProps = CoinflowSolanaWithdrawProps | CoinflowEthWithdrawProps | CoinflowPolygonWithdrawProps | CoinflowBaseWithdrawProps | CoinflowArbitrumWithdrawProps | CoinflowStellarWithdrawProps | CoinflowMonadWithdrawProps;
|
|
1014
1069
|
interface CommonEvmRedeem {
|
|
1015
1070
|
/**
|
|
1016
1071
|
* Whether the UI should wait
|
|
@@ -1124,7 +1179,7 @@ interface DecentRedeem extends CommonEvmRedeem {
|
|
|
1124
1179
|
* Gas fees for the transaction will be automatically calculated and added to the total charged to the customer. Optionally the merchant can opt to pay for these gas fees.
|
|
1125
1180
|
*/
|
|
1126
1181
|
type EvmTransactionData = SafeMintRedeem | ReturnedTokenIdRedeem | KnownTokenIdRedeem | NormalRedeem | TokenRedeem | DecentRedeem;
|
|
1127
|
-
interface CoinflowIFrameProps extends Omit<CoinflowTypes, 'merchantId' | 'handleHeightChange'>, Pick<CoinflowCommonPurchaseProps, 'chargebackProtectionData' | 'webhookInfo' | 'subtotal' | 'presentment' | 'customerInfo' | 'settlementType' | 'email' | 'planCode' | 'deviceId' | 'jwtToken' | 'origins' | 'threeDsChallengePreference' | 'supportEmail' | 'allowedPaymentMethods' | 'accountFundingTransaction' | 'partialUsdcChecked' | 'isZeroAuthorization'>, Pick<CoinflowCommonWithdrawProps, 'bankAccountLinkRedirect' | 'additionalWallets' | 'transactionSigner' | 'lockAmount' | 'lockDefaultToken' | 'origins' | 'allowedWithdrawSpeeds'>, Pick<CoinflowEvmPurchaseProps, 'authOnly'>, Pick<CoinflowSolanaPurchaseProps, 'rent' | 'nativeSolToConvert' | 'destinationAuthKey' | 'redemptionCheck'> {
|
|
1182
|
+
interface CoinflowIFrameProps extends Omit<CoinflowTypes, 'merchantId' | 'handleHeightChange'>, Pick<CoinflowCommonPurchaseProps, 'chargebackProtectionData' | 'webhookInfo' | 'subtotal' | 'presentment' | 'customerInfo' | 'settlementType' | 'email' | 'planCode' | 'deviceId' | 'jwtToken' | 'origins' | 'threeDsChallengePreference' | 'supportEmail' | 'allowedPaymentMethods' | 'accountFundingTransaction' | 'partialUsdcChecked' | 'isZeroAuthorization' | 'zeroAuthorizationConfig'>, Pick<CoinflowCommonWithdrawProps, 'bankAccountLinkRedirect' | 'additionalWallets' | 'transactionSigner' | 'lockAmount' | 'lockDefaultToken' | 'origins' | 'allowedWithdrawSpeeds'>, Pick<CoinflowEvmPurchaseProps, 'authOnly'>, Pick<CoinflowSolanaPurchaseProps, 'rent' | 'nativeSolToConvert' | 'destinationAuthKey' | 'redemptionCheck'> {
|
|
1128
1183
|
walletPubkey: string | null | undefined;
|
|
1129
1184
|
sessionKey?: string;
|
|
1130
1185
|
route: string;
|
|
@@ -1196,7 +1251,7 @@ declare class CoinflowUtils {
|
|
|
1196
1251
|
static getCoinflowBaseUrl(env?: CoinflowEnvs): string;
|
|
1197
1252
|
static getCoinflowAppBaseUrl(env?: CoinflowEnvs): string;
|
|
1198
1253
|
static getCoinflowApiUrl(env?: CoinflowEnvs): string;
|
|
1199
|
-
static getCoinflowUrl({ walletPubkey, sessionKey, route, routePrefix, env, subtotal, presentment, transaction, blockchain, webhookInfo, email, loaderBackground, handleHeightChangeId, bankAccountLinkRedirect, additionalWallets, chargebackProtectionData, merchantCss, color, rent, lockDefaultToken, tokens, planCode, disableApplePay, disableGooglePay, customerInfo, settlementType, lockAmount, nativeSolToConvert, theme, usePermit, transactionSigner, authOnly, deviceId, jwtToken, origins, threeDsChallengePreference, supportEmail, destinationAuthKey, allowedPaymentMethods, accountFundingTransaction, partialUsdcChecked, redemptionCheck, allowedWithdrawSpeeds, isZeroAuthorization, baseUrl, }: CoinflowIFrameProps & {
|
|
1254
|
+
static getCoinflowUrl({ walletPubkey, sessionKey, route, routePrefix, env, subtotal, presentment, transaction, blockchain, webhookInfo, email, loaderBackground, handleHeightChangeId, bankAccountLinkRedirect, additionalWallets, chargebackProtectionData, merchantCss, color, rent, lockDefaultToken, tokens, planCode, disableApplePay, disableGooglePay, customerInfo, settlementType, lockAmount, nativeSolToConvert, theme, usePermit, transactionSigner, authOnly, deviceId, jwtToken, origins, threeDsChallengePreference, supportEmail, destinationAuthKey, allowedPaymentMethods, accountFundingTransaction, partialUsdcChecked, redemptionCheck, allowedWithdrawSpeeds, isZeroAuthorization, zeroAuthorizationConfig, baseUrl, }: CoinflowIFrameProps & {
|
|
1200
1255
|
baseUrl?: string;
|
|
1201
1256
|
}): string;
|
|
1202
1257
|
static getTransaction(props: CoinflowPurchaseProps): string | undefined;
|
|
@@ -1206,6 +1261,7 @@ declare class CoinflowUtils {
|
|
|
1206
1261
|
polygon: T;
|
|
1207
1262
|
base: T;
|
|
1208
1263
|
arbitrum: T;
|
|
1264
|
+
stellar: T;
|
|
1209
1265
|
monad: T;
|
|
1210
1266
|
user: T;
|
|
1211
1267
|
}): T;
|
|
@@ -1490,5 +1546,5 @@ type WithOnLoad = {
|
|
|
1490
1546
|
onLoad?: () => void | Promise<void>;
|
|
1491
1547
|
};
|
|
1492
1548
|
|
|
1493
|
-
export { BankingCurrencies, CARD_TYPE_MAPPING, CardType, CoinflowApplePayButtonComponent, CoinflowCardNumberInput, CoinflowCardNumberOnlyInput, CoinflowCvvInputComponent, CoinflowCvvOnlyInputComponent, CoinflowGooglePayButtonComponent, CoinflowIFrameComponent, CoinflowPurchaseComponent, CoinflowPurchaseHistoryComponent, CoinflowPurchaseProtectionComponent, CoinflowUtils, CoinflowWithdrawComponent, CoinflowWithdrawHistoryComponent, Currency, CurrencyToISO4217, EventBus, IFrameMessageMethods, MerchantStyle, PaymentMethods, RN_REDIRECT_MESSAGE_NAME, SettlementType, ThreeDsChallengePreference, TokenExCardNumberIframeId, TokenExCvvContainerID, WithdrawCategory, WithdrawCurrencies, WithdrawSpeed, doInitializeCvvOnlyTokenExIframe, doInitializeTokenExCardOnlyIframe, doInitializeTokenExIframe, getCurrencyDecimals, getCustomerName, getHandlers, getIframeConfig, getWalletPubkey, handleIFrameMessage, isBankingCurrency, isTypedCurrencyCents, isWithdrawCurrency, nftCartItem, paymentMethodLabels, productType, setTokenExScriptTag };
|
|
1494
|
-
export type { AccountFundingTransaction, AnyObject, ArbitrumWalletProps, AuthDeclinedWalletCallInfo, BankingCurrency, BaseWalletProps, CardFormInputStyles, Cart, CartClassOmitted, CartItem, CartItemClassOmitted, Cents, ChargebackProtectionData, ChargebackProtectionItem, CoinflowArbitrumHistoryProps, CoinflowArbitrumPurchaseProps, CoinflowArbitrumWithdrawProps, CoinflowBaseHistoryProps, CoinflowBasePurchaseProps, CoinflowBaseWithdrawProps, CoinflowBlockchain, CoinflowCardNumberInputProps, CoinflowCardTokenResponse, CoinflowCommonPurchaseProps, CoinflowCommonWithdrawProps, CoinflowCvvOnlyInputProps, CoinflowEnvs, CoinflowEthHistoryProps, CoinflowEthPurchaseProps, CoinflowEthWithdrawProps, CoinflowEvmHistoryProps, CoinflowEvmPurchaseProps, CoinflowHistoryProps, CoinflowIFrameProps, CoinflowMonadHistoryProps, CoinflowMonadPurchaseProps, CoinflowMonadWithdrawProps, CoinflowPolygonHistoryProps, CoinflowPolygonPurchaseProps, CoinflowPolygonWithdrawProps, CoinflowPurchaseProps, CoinflowSessionKeyHistoryProps, CoinflowSessionKeyPurchaseProps, CoinflowSolanaHistoryProps, CoinflowSolanaPurchaseProps, CoinflowSolanaWithdrawProps, CoinflowTypes, CoinflowWithdrawProps, CommonDoInitializeTokenExIframeArgs, CommonEvmRedeem, CryptoCartItem, CurrencyCents, CustomerInfo, DecentRedeem, DoInitializeCvvOnlyTokenExIframeArgs, DoInitializeTokenExIframeArgs, EthWallet, EthWalletProps, EventBusCallback, EvmTransactionData, FullName, GetIFrameConfigArgs, GiftCardCartItem, IFrameMessageHandlers, KnownTokenIdRedeem, MerchantIdOrCheckoutJwt, MerchantTheme, MergeWithOptionalDiff, MonadWalletProps, NameCustomerInfo, NftCartItemClassOmitted, NormalRedeem, OnAuthDeclinedMethod, OnSuccessMethod, PartialBy, PolygonWalletProps, RecipientAftInfo, ReturnedTokenIdRedeem, SafeMintRedeem, SolanaWallet, SolanaWalletProps, SplitNameCustomerInfo, Subtotal, TokenExIFrameConfiguration, TokenExIframe, TokenRedeem, TokenSubtotal, TokenizationResponse, TypedCurrencyCents, VersionDetail, WalletCall, WalletTypes, WithOnLoad, WithdrawCurrency };
|
|
1549
|
+
export { BankingCurrencies, CARD_TYPE_MAPPING, CardType, CoinflowApplePayButtonComponent, CoinflowCardNumberInput, CoinflowCardNumberOnlyInput, CoinflowCvvInputComponent, CoinflowCvvOnlyInputComponent, CoinflowGooglePayButtonComponent, CoinflowIFrameComponent, CoinflowPurchaseComponent, CoinflowPurchaseHistoryComponent, CoinflowPurchaseProtectionComponent, CoinflowUtils, CoinflowWithdrawComponent, CoinflowWithdrawHistoryComponent, Currency, CurrencyToISO4217, EventBus, IFrameMessageMethods, MerchantStyle, PaymentMethods, RN_REDIRECT_MESSAGE_NAME, SettlementType, ThreeDsChallengePreference, TokenExCardNumberIframeId, TokenExCvvContainerID, WithdrawCategory, WithdrawCurrencies, WithdrawSpeed, doInitializeCvvOnlyTokenExIframe, doInitializeTokenExCardOnlyIframe, doInitializeTokenExIframe, getCurrencyDecimals, getCustomerName, getHandlers, getIframeConfig, getWalletPubkey, handleIFrameMessage, isBankingCurrency, isTypedCurrencyCents, isWithdrawCurrency, isZeroAuthSavedPaymentMethods, isZeroAuthVerifyCard, nftCartItem, paymentMethodLabels, productType, setTokenExScriptTag };
|
|
1550
|
+
export type { AccountFundingTransaction, AnyObject, ArbitrumWalletProps, AuthDeclinedWalletCallInfo, BankingCurrency, BaseWalletProps, CardFormInputStyles, Cart, CartClassOmitted, CartItem, CartItemClassOmitted, Cents, ChargebackProtectionData, ChargebackProtectionItem, CoinflowArbitrumHistoryProps, CoinflowArbitrumPurchaseProps, CoinflowArbitrumWithdrawProps, CoinflowBaseHistoryProps, CoinflowBasePurchaseProps, CoinflowBaseWithdrawProps, CoinflowBlockchain, CoinflowCardNumberInputProps, CoinflowCardTokenResponse, CoinflowCommonPurchaseProps, CoinflowCommonWithdrawProps, CoinflowCvvOnlyInputProps, CoinflowEnvs, CoinflowEthHistoryProps, CoinflowEthPurchaseProps, CoinflowEthWithdrawProps, CoinflowEvmHistoryProps, CoinflowEvmPurchaseProps, CoinflowHistoryProps, CoinflowIFrameProps, CoinflowMonadHistoryProps, CoinflowMonadPurchaseProps, CoinflowMonadWithdrawProps, CoinflowPolygonHistoryProps, CoinflowPolygonPurchaseProps, CoinflowPolygonWithdrawProps, CoinflowPurchaseProps, CoinflowSessionKeyHistoryProps, CoinflowSessionKeyPurchaseProps, CoinflowSolanaHistoryProps, CoinflowSolanaPurchaseProps, CoinflowSolanaWithdrawProps, CoinflowStellarHistoryProps, CoinflowStellarPurchaseProps, CoinflowStellarWithdrawProps, CoinflowTypes, CoinflowWithdrawProps, CommonDoInitializeTokenExIframeArgs, CommonEvmRedeem, CryptoCartItem, CurrencyCents, CustomerInfo, DecentRedeem, DoInitializeCvvOnlyTokenExIframeArgs, DoInitializeTokenExIframeArgs, EthWallet, EthWalletProps, EventBusCallback, EvmTransactionData, FullName, GetIFrameConfigArgs, GiftCardCartItem, IFrameMessageHandlers, KnownTokenIdRedeem, MerchantIdOrCheckoutJwt, MerchantTheme, MergeWithOptionalDiff, MonadWalletProps, NameCustomerInfo, NftCartItemClassOmitted, NormalRedeem, OnAuthDeclinedMethod, OnSuccessMethod, PartialBy, PolygonWalletProps, RecipientAftInfo, ReturnedTokenIdRedeem, SafeMintRedeem, SolanaWallet, SolanaWalletProps, SplitNameCustomerInfo, StellarWallet, StellarWalletProps, Subtotal, TokenExIFrameConfiguration, TokenExIframe, TokenRedeem, TokenSubtotal, TokenizationResponse, TypedCurrencyCents, VersionDetail, WalletCall, WalletTypes, WithOnLoad, WithdrawCurrency, ZeroAuthSavedPaymentMethods, ZeroAuthVerifyCard, ZeroAuthorizationConfig };
|