@coinflowlabs/angular 1.2.1 → 1.3.1

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,13 @@ This library was generated with [Angular CLI](https://github.com/angular/angular
4
4
 
5
5
  # Changelog
6
6
 
7
+ ## 1.3.1
8
+
9
+ - Added `redemptionCheck` to purchase (Solana only)
10
+ ## 1.3.0
11
+
12
+ - Added `allowedWithdrawSpeeds` query parameter to allow merchants to specify what withdraw speeds are allowed. The default is all.
13
+
7
14
  ## 1.2.1
8
15
 
9
16
  - Added more `chargebackProtectionData` product types
@@ -16,7 +23,6 @@ This library was generated with [Angular CLI](https://github.com/angular/angular
16
23
 
17
24
  - Added `onLoad` property
18
25
 
19
-
20
26
  ## 1.1.0
21
27
 
22
28
  - Added Multi-Currency Presentment via the `presentment` property
@@ -5,6 +5,22 @@ import base58Imported from 'bs58';
5
5
  import LZString from 'lz-string';
6
6
  import * as i1 from '@angular/platform-browser';
7
7
 
8
+ var WithdrawCategory;
9
+ (function (WithdrawCategory) {
10
+ WithdrawCategory["USER"] = "user";
11
+ WithdrawCategory["BUSINESS"] = "business";
12
+ })(WithdrawCategory || (WithdrawCategory = {}));
13
+ var WithdrawSpeed;
14
+ (function (WithdrawSpeed) {
15
+ WithdrawSpeed["ASAP"] = "asap";
16
+ WithdrawSpeed["SAME_DAY"] = "same_day";
17
+ WithdrawSpeed["STANDARD"] = "standard";
18
+ WithdrawSpeed["CARD"] = "card";
19
+ WithdrawSpeed["IBAN"] = "iban";
20
+ WithdrawSpeed["PIX"] = "pix";
21
+ WithdrawSpeed["EFT"] = "eft";
22
+ WithdrawSpeed["VENMO"] = "venmo";
23
+ })(WithdrawSpeed || (WithdrawSpeed = {}));
8
24
  var SettlementType;
9
25
  (function (SettlementType) {
10
26
  SettlementType["Credits"] = "Credits";
@@ -404,7 +420,7 @@ class CoinflowUtils {
404
420
  return 'http://localhost:5000';
405
421
  return `https://api-${env}.coinflow.cash`;
406
422
  }
407
- 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, }) {
423
+ 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, }) {
408
424
  const prefix = routePrefix
409
425
  ? `/${routePrefix}/${blockchain}`
410
426
  : `/${blockchain}`;
@@ -481,6 +497,8 @@ class CoinflowUtils {
481
497
  url.searchParams.append('color', color);
482
498
  if (rent)
483
499
  url.searchParams.append('rent', rent.lamports.toString());
500
+ if (redemptionCheck)
501
+ url.searchParams.append('redemptionCheck', 'true');
484
502
  if (nativeSolToConvert)
485
503
  url.searchParams.append('nativeSolToConvert', nativeSolToConvert.lamports.toString());
486
504
  if (lockDefaultToken)
@@ -515,6 +533,8 @@ class CoinflowUtils {
515
533
  url.searchParams.append('destinationAuthKey', destinationAuthKey);
516
534
  if (accountFundingTransaction)
517
535
  url.searchParams.append('accountFundingTransaction', LZString.compressToEncodedURIComponent(JSON.stringify(accountFundingTransaction)));
536
+ if (allowedWithdrawSpeeds)
537
+ url.searchParams.append('allowedWithdrawSpeeds', allowedWithdrawSpeeds.join(','));
518
538
  return url.toString();
519
539
  }
520
540
  static getTransaction(props) {
@@ -1837,5 +1857,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.1", ngImpor
1837
1857
  * Generated bundle index. Do not edit.
1838
1858
  */
1839
1859
 
1840
- export { CARD_TYPE_MAPPING, CardType, CoinflowApplePayButtonComponent, CoinflowCardNumberInput, CoinflowCardNumberOnlyInput, CoinflowCvvInputComponent, CoinflowCvvOnlyInputComponent, CoinflowGooglePayButtonComponent, CoinflowIFrameComponent, CoinflowPurchaseComponent, CoinflowPurchaseHistoryComponent, CoinflowPurchaseProtectionComponent, CoinflowUtils, CoinflowWithdrawComponent, CoinflowWithdrawHistoryComponent, Currency, CurrencyToISO4217, EventBus, IFrameMessageMethods, MerchantStyle, PaymentMethods, SettlementType, ThreeDsChallengePreference, TokenExCardNumberIframeId, TokenExCvvContainerID, WithdrawCurrencies, doInitializeCvvOnlyTokenExIframe, doInitializeTokenExCardOnlyIframe, doInitializeTokenExIframe, getCustomerName, getHandlers, getIframeConfig, getWalletPubkey, handleIFrameMessage, isTypedCurrencyCents, isWithdrawCurrency, nftCartItem, setTokenExScriptTag };
1860
+ export { CARD_TYPE_MAPPING, CardType, CoinflowApplePayButtonComponent, CoinflowCardNumberInput, CoinflowCardNumberOnlyInput, CoinflowCvvInputComponent, CoinflowCvvOnlyInputComponent, CoinflowGooglePayButtonComponent, CoinflowIFrameComponent, CoinflowPurchaseComponent, CoinflowPurchaseHistoryComponent, CoinflowPurchaseProtectionComponent, CoinflowUtils, CoinflowWithdrawComponent, CoinflowWithdrawHistoryComponent, Currency, CurrencyToISO4217, EventBus, IFrameMessageMethods, MerchantStyle, PaymentMethods, SettlementType, ThreeDsChallengePreference, TokenExCardNumberIframeId, TokenExCvvContainerID, WithdrawCategory, WithdrawCurrencies, WithdrawSpeed, doInitializeCvvOnlyTokenExIframe, doInitializeTokenExCardOnlyIframe, doInitializeTokenExIframe, getCustomerName, getHandlers, getIframeConfig, getWalletPubkey, handleIFrameMessage, isTypedCurrencyCents, isWithdrawCurrency, nftCartItem, setTokenExScriptTag };
1841
1861
  //# 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/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 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}\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 | '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 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';\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 type CoinflowHistoryProps =\n | CoinflowSolanaHistoryProps\n | CoinflowPolygonHistoryProps\n | CoinflowEthHistoryProps\n | CoinflowBaseHistoryProps\n | CoinflowArbitrumHistoryProps\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 'listPrice' | '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}\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 * 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/docs/implement-chargeback-protection#how-to-add-chargeback-protection\n *\n * window?.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\n 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}\n\nexport interface CoinflowSessionKeyPurchaseProps\n 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\n extends CoinflowEvmPurchaseProps {\n blockchain: 'arbitrum';\n}\n\nexport type CoinflowPurchaseProps =\n | CoinflowSolanaPurchaseProps\n | CoinflowSessionKeyPurchaseProps\n | CoinflowPolygonPurchaseProps\n | CoinflowEthPurchaseProps\n | CoinflowBasePurchaseProps\n | CoinflowArbitrumPurchaseProps;\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';\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\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 type CoinflowWithdrawProps =\n | CoinflowSolanaWithdrawProps\n | CoinflowEthWithdrawProps\n | CoinflowPolygonWithdrawProps\n | CoinflowBaseWithdrawProps\n | CoinflowArbitrumWithdrawProps;\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\n/** @deprecated Reservoir decided to sunset Reservoir NFT, including their API and associated services, effective October 15, 2025. */\nexport type ReservoirNftIdItem = Omit<KnownTokenIdRedeem, keyof NormalRedeem>;\n/** @deprecated Reservoir decided to sunset Reservoir NFT, including their API and associated services, effective October 15, 2025. */\nexport interface ReservoirOrderIdItem {\n /** @deprecated Reservoir decided to sunset Reservoir NFT, including their API and associated services, effective October 15, 2025. */\n orderId: string;\n}\n\n/** @deprecated Reservoir decided to sunset Reservoir NFT, including their API and associated services, effective October 15, 2025. */\nexport type ReservoirItem = ReservoirNftIdItem | ReservoirOrderIdItem;\n\n/** @deprecated Reservoir decided to sunset Reservoir NFT, including their API and associated services, effective October 15, 2025. */\nexport type ReservoirItems = ReservoirItem | ReservoirItem[];\n\n/** @deprecated Reservoir decided to sunset Reservoir NFT, including their API and associated services, effective October 15, 2025. */\nexport interface ReservoirRedeem extends CommonEvmRedeem {\n /** @deprecated Reservoir decided to sunset Reservoir NFT, including their API and associated services, effective October 15, 2025. */\n type: 'reservoir';\n /** @deprecated Reservoir decided to sunset Reservoir NFT, including their API and associated services, effective October 15, 2025. */\n items: ReservoirItems;\n /** @deprecated Reservoir decided to sunset Reservoir NFT, including their API and associated services, effective October 15, 2025. */\n taker?: 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 | ReservoirRedeem;\n\nexport interface CoinflowIFrameProps\n extends 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 >,\n Pick<\n CoinflowCommonWithdrawProps,\n | 'bankAccountLinkRedirect'\n | 'additionalWallets'\n | 'transactionSigner'\n | 'lockAmount'\n | 'lockDefaultToken'\n | 'origins'\n >,\n Pick<CoinflowEvmPurchaseProps, 'authOnly'>,\n Pick<\n CoinflowSolanaPurchaseProps,\n 'rent' | 'nativeSolToConvert' | 'destinationAuthKey'\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 * @pattern ^\\d{8}$\n */\n dateOfBirth: string;\n /**\n * @pattern ^\\d+$\n */\n phoneNumber?: string;\n documentReference?: string;\n}\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 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 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\nexport const CurrencyToISO4217: Record<Currency, string> = {\n [Currency.AED]: '784',\n [Currency.AFN]: '971',\n [Currency.ALL]: '008',\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.ZWL]: '932',\n [Currency.CLF]: '990',\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 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 {\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';\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 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 }: CoinflowIFrameProps): string {\n const prefix = routePrefix\n ? `/${routePrefix}/${blockchain}`\n : `/${blockchain}`;\n const url = new URL(prefix + route, CoinflowUtils.getCoinflowBaseUrl(env));\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 if (typeof window !== 'undefined') {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n const deviceId = window?.nSureSDK?.getDeviceId();\n if (deviceId) url.searchParams.append('deviceId', deviceId);\n }\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 (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 (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 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 (transaction as VersionedTransaction | Transaction).serialize({\n requireAllSignatures: false,\n verifySignatures: false,\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 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 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 '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 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 signedTransaction.serialize({\n requireAllSignatures: false,\n verifySignatures: false,\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\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\ndeclare global {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace TokenEx {\n interface FraudServicesConfig {\n useKount?: boolean;\n kount?: {\n merchantId?: string;\n mode?: string;\n anId?: string;\n };\n }\n\n interface Config {\n debug?: boolean;\n enablePrettyFormat?: boolean;\n maskInput?: boolean;\n enableValidateOnBlur?: boolean;\n enableAriaRequired?: boolean;\n pci?: boolean;\n cvvOnly?: boolean;\n allowUnknownCardTypes?: boolean;\n enableAutoComplete?: boolean;\n returnAutoCompleteValues?: boolean;\n returnKhash?: boolean;\n returnWhash?: boolean;\n enforceLuhnCompliance?: boolean;\n use3DS?: boolean;\n enableValidateOnKeyUp?: boolean;\n enableValidateOnCvvKeyUp?: boolean;\n expiresInSeconds?: number;\n useExtendedBIN?: boolean;\n inlineIframeJavaScript?: boolean;\n iframeVersion?: number;\n authenticationKey?: string;\n origin?: string;\n tokenExID?: string;\n timestamp?: string;\n tokenScheme?: string;\n token?: string;\n customDataLabel?: string;\n customCvvDataLabel?: string;\n title?: string;\n cvvTitle?: string;\n inputTitle?: string;\n cvvInputTitle?: string;\n cardMaxLengths?: {\n visa?: number;\n mastercard?: number;\n americanExpress?: number;\n discover?: number;\n jcb?: number;\n diners?: number;\n };\n fraudServices?: FraudServicesConfig;\n threeDSMethodNotificationUrl?: string;\n customDataTypes?: string | object;\n cvvContainerID?: string;\n cvvPlaceholder?: string;\n cardType?: string;\n forterSiteId?: string;\n forterUsername?: string;\n customRegEx?: string;\n placeholder?: string;\n inputType?: string;\n inputMode?: string;\n font?: string;\n cvv?: boolean;\n styles: {\n base: string;\n focus: string;\n error: string;\n placeholder: string;\n cvv: {base: string; focus: string; placeholder: string; error: string};\n };\n }\n\n interface IframeAPI {\n load(): void;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n on: (event: string, callback: (data?: any) => void) => void;\n\n tokenize(): void;\n\n validate(): void;\n\n reset(): void;\n\n blur(): void;\n\n cvvBlur(): void;\n\n focus(): void;\n\n cvvFocus(): void;\n\n remove(): void;\n\n toggleMask(): void;\n\n toggleCvvMask(): void;\n\n setPAN(pan: string): void;\n\n binLookup(): void;\n\n validateConfig(): void;\n\n setFraudServicesRequestDetails(data: string): void;\n }\n\n function Iframe(containerID: string, configuration: Config): IframeAPI;\n }\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/* eslint-disable */\n\nimport {AnyObject} from './AnyObject';\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?: {\n id: string;\n email: string;\n firstName: string;\n lastName: string;\n dob: string;\n rawSellerData: Record<string, any>;\n };\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":[],"mappings":"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;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;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,EAlJW,QAAQ,KAAR,QAAQ,GAAA,EAAA,CAAA,CAAA;AAoJb,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,CAA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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/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}\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}\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 | '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 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';\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 type CoinflowHistoryProps =\n | CoinflowSolanaHistoryProps\n | CoinflowPolygonHistoryProps\n | CoinflowEthHistoryProps\n | CoinflowBaseHistoryProps\n | CoinflowArbitrumHistoryProps\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 'listPrice' | '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}\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 * 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/docs/implement-chargeback-protection#how-to-add-chargeback-protection\n *\n * window?.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\n 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\n 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\n extends CoinflowEvmPurchaseProps {\n blockchain: 'arbitrum';\n}\n\nexport type CoinflowPurchaseProps =\n | CoinflowSolanaPurchaseProps\n | CoinflowSessionKeyPurchaseProps\n | CoinflowPolygonPurchaseProps\n | CoinflowEthPurchaseProps\n | CoinflowBasePurchaseProps\n | CoinflowArbitrumPurchaseProps;\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';\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 type CoinflowWithdrawProps =\n | CoinflowSolanaWithdrawProps\n | CoinflowEthWithdrawProps\n | CoinflowPolygonWithdrawProps\n | CoinflowBaseWithdrawProps\n | CoinflowArbitrumWithdrawProps;\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\n/** @deprecated Reservoir decided to sunset Reservoir NFT, including their API and associated services, effective October 15, 2025. */\nexport type ReservoirNftIdItem = Omit<KnownTokenIdRedeem, keyof NormalRedeem>;\n/** @deprecated Reservoir decided to sunset Reservoir NFT, including their API and associated services, effective October 15, 2025. */\nexport interface ReservoirOrderIdItem {\n /** @deprecated Reservoir decided to sunset Reservoir NFT, including their API and associated services, effective October 15, 2025. */\n orderId: string;\n}\n\n/** @deprecated Reservoir decided to sunset Reservoir NFT, including their API and associated services, effective October 15, 2025. */\nexport type ReservoirItem = ReservoirNftIdItem | ReservoirOrderIdItem;\n\n/** @deprecated Reservoir decided to sunset Reservoir NFT, including their API and associated services, effective October 15, 2025. */\nexport type ReservoirItems = ReservoirItem | ReservoirItem[];\n\n/** @deprecated Reservoir decided to sunset Reservoir NFT, including their API and associated services, effective October 15, 2025. */\nexport interface ReservoirRedeem extends CommonEvmRedeem {\n /** @deprecated Reservoir decided to sunset Reservoir NFT, including their API and associated services, effective October 15, 2025. */\n type: 'reservoir';\n /** @deprecated Reservoir decided to sunset Reservoir NFT, including their API and associated services, effective October 15, 2025. */\n items: ReservoirItems;\n /** @deprecated Reservoir decided to sunset Reservoir NFT, including their API and associated services, effective October 15, 2025. */\n taker?: 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 | ReservoirRedeem;\n\nexport interface CoinflowIFrameProps\n extends 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 >,\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 * @pattern ^\\d{8}$\n */\n dateOfBirth: string;\n /**\n * @pattern ^\\d+$\n */\n phoneNumber?: string;\n documentReference?: string;\n}\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 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 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\nexport const CurrencyToISO4217: Record<Currency, string> = {\n [Currency.AED]: '784',\n [Currency.AFN]: '971',\n [Currency.ALL]: '008',\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.ZWL]: '932',\n [Currency.CLF]: '990',\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 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 {\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';\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 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 }: CoinflowIFrameProps): string {\n const prefix = routePrefix\n ? `/${routePrefix}/${blockchain}`\n : `/${blockchain}`;\n const url = new URL(prefix + route, CoinflowUtils.getCoinflowBaseUrl(env));\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 if (typeof window !== 'undefined') {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n const deviceId = window?.nSureSDK?.getDeviceId();\n if (deviceId) url.searchParams.append('deviceId', deviceId);\n }\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 (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 (transaction as VersionedTransaction | Transaction).serialize({\n requireAllSignatures: false,\n verifySignatures: false,\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 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 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 '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 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 signedTransaction.serialize({\n requireAllSignatures: false,\n verifySignatures: false,\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\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\ndeclare global {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace TokenEx {\n interface FraudServicesConfig {\n useKount?: boolean;\n kount?: {\n merchantId?: string;\n mode?: string;\n anId?: string;\n };\n }\n\n interface Config {\n debug?: boolean;\n enablePrettyFormat?: boolean;\n maskInput?: boolean;\n enableValidateOnBlur?: boolean;\n enableAriaRequired?: boolean;\n pci?: boolean;\n cvvOnly?: boolean;\n allowUnknownCardTypes?: boolean;\n enableAutoComplete?: boolean;\n returnAutoCompleteValues?: boolean;\n returnKhash?: boolean;\n returnWhash?: boolean;\n enforceLuhnCompliance?: boolean;\n use3DS?: boolean;\n enableValidateOnKeyUp?: boolean;\n enableValidateOnCvvKeyUp?: boolean;\n expiresInSeconds?: number;\n useExtendedBIN?: boolean;\n inlineIframeJavaScript?: boolean;\n iframeVersion?: number;\n authenticationKey?: string;\n origin?: string;\n tokenExID?: string;\n timestamp?: string;\n tokenScheme?: string;\n token?: string;\n customDataLabel?: string;\n customCvvDataLabel?: string;\n title?: string;\n cvvTitle?: string;\n inputTitle?: string;\n cvvInputTitle?: string;\n cardMaxLengths?: {\n visa?: number;\n mastercard?: number;\n americanExpress?: number;\n discover?: number;\n jcb?: number;\n diners?: number;\n };\n fraudServices?: FraudServicesConfig;\n threeDSMethodNotificationUrl?: string;\n customDataTypes?: string | object;\n cvvContainerID?: string;\n cvvPlaceholder?: string;\n cardType?: string;\n forterSiteId?: string;\n forterUsername?: string;\n customRegEx?: string;\n placeholder?: string;\n inputType?: string;\n inputMode?: string;\n font?: string;\n cvv?: boolean;\n styles: {\n base: string;\n focus: string;\n error: string;\n placeholder: string;\n cvv: {base: string; focus: string; placeholder: string; error: string};\n };\n }\n\n interface IframeAPI {\n load(): void;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n on: (event: string, callback: (data?: any) => void) => void;\n\n tokenize(): void;\n\n validate(): void;\n\n reset(): void;\n\n blur(): void;\n\n cvvBlur(): void;\n\n focus(): void;\n\n cvvFocus(): void;\n\n remove(): void;\n\n toggleMask(): void;\n\n toggleCvvMask(): void;\n\n setPAN(pan: string): void;\n\n binLookup(): void;\n\n validateConfig(): void;\n\n setFraudServicesRequestDetails(data: string): void;\n }\n\n function Iframe(containerID: string, configuration: Config): IframeAPI;\n }\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/* eslint-disable */\n\nimport {AnyObject} from './AnyObject';\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?: {\n id: string;\n email: string;\n firstName: string;\n lastName: string;\n dob: string;\n rawSellerData: Record<string, any>;\n };\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":[],"mappings":"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KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;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,EAlJW,QAAQ,KAAR,QAAQ,GAAA,EAAA,CAAA,CAAA;AAoJb,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,QAA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"}
@@ -4,6 +4,20 @@ import { GiftCardCartItem } from './types/giftCardCartItem';
4
4
  import { nftCartItem } from './types/nftCartItem';
5
5
  import { CryptoCartItem } from './types/cryptoCartItem';
6
6
  import { MoneyTopUpCartItem } from './types/moneyTopUpCartItem';
7
+ export declare enum WithdrawCategory {
8
+ USER = "user",
9
+ BUSINESS = "business"
10
+ }
11
+ export declare enum WithdrawSpeed {
12
+ ASAP = "asap",
13
+ SAME_DAY = "same_day",
14
+ STANDARD = "standard",
15
+ CARD = "card",
16
+ IBAN = "iban",
17
+ PIX = "pix",
18
+ EFT = "eft",
19
+ VENMO = "venmo"
20
+ }
7
21
  export declare enum SettlementType {
8
22
  Credits = "Credits",
9
23
  USDC = "USDC",
@@ -243,6 +257,7 @@ export interface CoinflowSolanaPurchaseProps extends CoinflowCommonPurchaseProps
243
257
  nativeSolToConvert?: {
244
258
  lamports: string | number;
245
259
  };
260
+ redemptionCheck?: boolean;
246
261
  }
247
262
  export interface CoinflowSessionKeyPurchaseProps extends CoinflowCommonPurchaseProps {
248
263
  sessionKey: string;
@@ -293,6 +308,10 @@ export interface CoinflowCommonWithdrawProps extends CoinflowTypes {
293
308
  * If the withdrawer is authenticated with a sessionKey pass it here.
294
309
  */
295
310
  sessionKey?: string;
311
+ /**
312
+ * Array of allowed withdrawal speeds. If not provided, all speeds are allowed.
313
+ */
314
+ allowedWithdrawSpeeds?: WithdrawSpeed[];
296
315
  }
297
316
  export type WalletTypes = SolanaWallet | EthWallet;
298
317
  export interface SolanaWalletProps {
@@ -456,7 +475,7 @@ export interface DecentRedeem extends CommonEvmRedeem {
456
475
  * 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.
457
476
  */
458
477
  export type EvmTransactionData = SafeMintRedeem | ReturnedTokenIdRedeem | KnownTokenIdRedeem | NormalRedeem | TokenRedeem | DecentRedeem | ReservoirRedeem;
459
- export 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'>, Pick<CoinflowCommonWithdrawProps, 'bankAccountLinkRedirect' | 'additionalWallets' | 'transactionSigner' | 'lockAmount' | 'lockDefaultToken' | 'origins'>, Pick<CoinflowEvmPurchaseProps, 'authOnly'>, Pick<CoinflowSolanaPurchaseProps, 'rent' | 'nativeSolToConvert' | 'destinationAuthKey'> {
478
+ export 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'>, Pick<CoinflowCommonWithdrawProps, 'bankAccountLinkRedirect' | 'additionalWallets' | 'transactionSigner' | 'lockAmount' | 'lockDefaultToken' | 'origins' | 'allowedWithdrawSpeeds'>, Pick<CoinflowEvmPurchaseProps, 'authOnly'>, Pick<CoinflowSolanaPurchaseProps, 'rent' | 'nativeSolToConvert' | 'destinationAuthKey' | 'redemptionCheck'> {
460
479
  walletPubkey: string | null | undefined;
461
480
  sessionKey?: string;
462
481
  route: string;
@@ -6,7 +6,7 @@ export declare class CoinflowUtils {
6
6
  getNSurePartnerId(merchantId: string): Promise<string | undefined>;
7
7
  static getCoinflowBaseUrl(env?: CoinflowEnvs): string;
8
8
  static getCoinflowApiUrl(env?: CoinflowEnvs): string;
9
- 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, }: CoinflowIFrameProps): string;
9
+ 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, }: CoinflowIFrameProps): string;
10
10
  static getTransaction(props: CoinflowPurchaseProps): string | undefined;
11
11
  static byBlockchain<T>(blockchain: CoinflowBlockchain, args: {
12
12
  solana: T;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@coinflowlabs/angular",
3
- "version": "1.2.1",
3
+ "version": "1.3.1",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^17.3.0",
6
6
  "@angular/core": "^17.3.0",