suiport-sdk 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +61 -0
- package/dist/components/index.cjs +1701 -0
- package/dist/components/index.cjs.map +1 -0
- package/dist/components/index.d.cts +2 -0
- package/dist/components/index.d.ts +2 -0
- package/dist/components/index.js +1694 -0
- package/dist/components/index.js.map +1 -0
- package/dist/core/index.cjs +589 -0
- package/dist/core/index.cjs.map +1 -0
- package/dist/core/index.d.cts +319 -0
- package/dist/core/index.d.ts +319 -0
- package/dist/core/index.js +499 -0
- package/dist/core/index.js.map +1 -0
- package/dist/index-DPKoi9iF.d.cts +65 -0
- package/dist/index-DPKoi9iF.d.ts +65 -0
- package/dist/index.cjs +1857 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +50 -0
- package/dist/index.d.ts +50 -0
- package/dist/index.js +1760 -0
- package/dist/index.js.map +1 -0
- package/package.json +67 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/core/config.ts","../../src/core/intents.ts","../../src/core/tokens.ts","../../src/hooks/useSuiportPayment.ts","../../src/components/SuiportModal.tsx","../../src/components/SuiportButton.tsx"],"names":["error","useState","useEffect","useCallback","jsxs","Fragment","jsx"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * SuiPort SDK Configuration\n */\n\nimport { OpenAPI } from '@defuse-protocol/one-click-sdk-typescript';\n\nexport interface SuiportConfig {\n /** NEAR API key for 1Click service */\n apiKey: string;\n /** API base URL (default: production) */\n baseUrl?: string;\n /** Default referral ID */\n referral?: string;\n}\n\nlet _config: SuiportConfig | null = null;\n\n/**\n * Initialize the SuiPort SDK\n *\n * @example\n * ```ts\n * import { initSuiport } from '@suiport/sdk'\n *\n * initSuiport({\n * apiKey: 'your-near-api-key',\n * })\n * ```\n */\nexport function initSuiport(config: SuiportConfig): void {\n _config = config;\n\n if (!config.apiKey) {\n throw new Error(\"Suiport SDK Error: apiKey is required. Pass your NEAR API key to initSuiport().\");\n }\n\n // Configure the underlying 1Click SDK\n OpenAPI.BASE = config.baseUrl || 'https://1click.chaindefuser.com';\n OpenAPI.TOKEN = config.apiKey;\n}\n\n/**\n * Get the current SDK configuration\n */\nexport function getConfig(): SuiportConfig {\n if (!_config) {\n throw new Error(\n 'SuiPort SDK not initialized. Call initSuiport() first.'\n );\n }\n return _config;\n}\n\n/**\n * Check if SDK is initialized\n */\nexport function isInitialized(): boolean {\n return _config !== null;\n}\n","/**\n * SuiPort Intents Service\n *\n * Core functions for cross-chain swaps via 1Click SDK\n */\n\nimport {\n OpenAPI,\n OneClickService,\n QuoteRequest,\n ApiError,\n} from '@defuse-protocol/one-click-sdk-typescript';\nimport type { Token } from './tokens';\nimport { getConfig, isInitialized } from './config';\n\n// ============================================================================\n// TYPES\n// ============================================================================\n\n/** Swap type options */\nexport type SwapType =\n | 'EXACT_INPUT'\n | 'EXACT_OUTPUT'\n | 'FLEX_INPUT'\n | 'ANY_INPUT';\n\n/** Quote request options */\nexport interface QuoteOptions {\n /** Origin token (source chain) */\n originToken: Token;\n /** Destination token (target chain) */\n destinationToken: Token;\n /** Amount in human-readable format (e.g., \"1.5\" for 1.5 USDC) */\n amount: string;\n /** Recipient address on destination chain */\n recipient: string;\n /** Refund address on origin chain (if swap fails) */\n refundTo: string;\n /** Slippage tolerance in basis points (100 = 1%) */\n slippageTolerance?: number;\n /** Swap type (default: EXACT_INPUT) */\n swapType?: SwapType;\n /** Deadline for the swap (default: 1 hour from now) */\n deadline?: Date;\n /** Dry run - get quote without creating deposit address */\n dry?: boolean;\n /** Referral identifier for tracking */\n referral?: string;\n}\n\n/** Quote result with deposit info */\nexport interface QuoteResult {\n /** Unique deposit address to send funds */\n depositAddress: string;\n /** Memo (required for some chains like Stellar) */\n memo?: string;\n /** Expected input amount (smallest units) */\n amountIn: string;\n /** Expected output amount (smallest units) */\n amountOut: string;\n /** Human-readable output amount */\n amountOutFormatted: string;\n /** Estimated USD value of output */\n amountOutUsd?: string;\n /** Deadline for the swap */\n deadline?: string;\n /** When the quote becomes inactive */\n timeWhenInactive?: string;\n /** Correlation ID for tracking */\n correlationId: string;\n}\n\n/** Execution status */\nexport type ExecutionStatus =\n | 'PENDING_DEPOSIT'\n | 'KNOWN_DEPOSIT_TX'\n | 'PROCESSING'\n | 'SUCCESS'\n | 'INCOMPLETE_DEPOSIT'\n | 'REFUNDED'\n | 'FAILED';\n\n/** Status result */\nexport interface StatusResult {\n /** Current status */\n status: ExecutionStatus;\n /** Whether the swap is complete (success or failed) */\n isComplete: boolean;\n /** Whether the swap succeeded */\n isSuccess: boolean;\n /** Correlation ID for tracking */\n correlationId: string;\n /** Destination chain transaction hashes (if available) */\n destinationTxHashes?: string[];\n /** Origin chain transaction hashes (if available) */\n originTxHashes?: string[];\n}\n\n// ============================================================================\n// UTILITY FUNCTIONS\n// ============================================================================\n\n/**\n * Convert human-readable amount to smallest units\n */\nexport function toSmallestUnits(amount: string, decimals: number): string {\n const [whole, fraction = ''] = amount.split('.');\n const paddedFraction = fraction.padEnd(decimals, '0').slice(0, decimals);\n return `${whole}${paddedFraction}`.replace(/^0+/, '') || '0';\n}\n\n/**\n * Convert smallest units to human-readable amount\n */\nexport function fromSmallestUnits(amount: string, decimals: number): string {\n const padded = amount.padStart(decimals + 1, '0');\n const whole = padded.slice(0, -decimals) || '0';\n const fraction = padded.slice(-decimals).replace(/0+$/, '');\n return fraction ? `${whole}.${fraction}` : whole;\n}\n\n/**\n * Generate a deadline timestamp\n */\nexport function generateDeadline(hoursFromNow = 1): string {\n const deadline = new Date(Date.now() + hoursFromNow * 60 * 60 * 1000);\n return deadline.toISOString();\n}\n\n// ============================================================================\n// CORE SERVICE FUNCTIONS\n// ============================================================================\n\nfunction ensureInitialized() {\n if (!isInitialized()) {\n throw new Error(\n 'SuiPort SDK not initialized. Call initSuiport() first.'\n );\n }\n}\n\n/**\n * Get a quote for a cross-chain swap\n */\nexport async function getQuote(options: QuoteOptions): Promise<QuoteResult> {\n ensureInitialized();\n const config = getConfig();\n\n const {\n originToken,\n destinationToken,\n amount,\n recipient,\n refundTo,\n slippageTolerance = 100, // 1% default\n swapType = 'EXACT_INPUT',\n deadline,\n dry = false,\n referral = config.referral || 'suiport',\n } = options;\n\n const amountInSmallestUnits = toSmallestUnits(amount, originToken.decimals);\n\n const quoteRequest: QuoteRequest = {\n dry,\n swapType: QuoteRequest.swapType[swapType],\n slippageTolerance,\n originAsset: originToken.assetId,\n depositType: QuoteRequest.depositType.ORIGIN_CHAIN,\n destinationAsset: destinationToken.assetId,\n amount: amountInSmallestUnits,\n refundTo,\n refundType: QuoteRequest.refundType.ORIGIN_CHAIN,\n recipient,\n recipientType: QuoteRequest.recipientType.DESTINATION_CHAIN,\n deadline: deadline?.toISOString() || generateDeadline(1),\n referral,\n };\n\n try {\n const response = await OneClickService.getQuote(quoteRequest);\n const quote = response.quote;\n\n return {\n depositAddress: quote.depositAddress || '',\n memo: quote.depositMemo,\n amountIn: quote.amountIn,\n amountOut: quote.amountOut,\n amountOutFormatted: quote.amountOutFormatted,\n amountOutUsd: quote.amountOutUsd,\n deadline: quote.deadline,\n timeWhenInactive: quote.timeWhenInactive,\n correlationId: response.correlationId,\n };\n } catch (error) {\n if (error instanceof ApiError) {\n throw new Error(\n `Quote failed (${error.status}): ${JSON.stringify(error.body)}`\n );\n }\n throw error;\n }\n}\n\n/**\n * Submit a deposit transaction hash to speed up processing\n */\nexport async function submitDepositTx(params: {\n txHash: string;\n depositAddress: string;\n memo?: string;\n nearSenderAccount?: string;\n}): Promise<void> {\n ensureInitialized();\n\n const { txHash, depositAddress, memo, nearSenderAccount } = params;\n\n try {\n await OneClickService.submitDepositTx({\n txHash,\n depositAddress,\n memo,\n nearSenderAccount,\n });\n } catch (error) {\n if (error instanceof ApiError) {\n throw new Error(\n `Submit deposit failed (${error.status}): ${JSON.stringify(error.body)}`\n );\n }\n throw error;\n }\n}\n\n/**\n * Get the execution status of a swap\n */\nexport async function getExecutionStatus(\n depositAddress: string,\n memo?: string\n): Promise<StatusResult> {\n ensureInitialized();\n\n try {\n const response = await OneClickService.getExecutionStatus(\n depositAddress,\n memo\n );\n\n const status = response.status as ExecutionStatus;\n const isComplete = ['SUCCESS', 'REFUNDED', 'FAILED'].includes(status);\n const isSuccess = status === 'SUCCESS';\n\n const swapDetails = response.swapDetails;\n const destinationTxHashes =\n swapDetails?.destinationChainTxHashes?.map((tx) => tx.hash);\n const originTxHashes = swapDetails?.originChainTxHashes?.map(\n (tx) => tx.hash\n );\n\n return {\n status,\n isComplete,\n isSuccess,\n correlationId: response.correlationId,\n destinationTxHashes,\n originTxHashes,\n };\n } catch (error) {\n if (error instanceof ApiError) {\n throw new Error(\n `Status check failed (${error.status}): ${JSON.stringify(error.body)}`\n );\n }\n throw error;\n }\n}\n\n/**\n * Poll execution status until complete\n */\nexport async function pollExecutionStatus(\n depositAddress: string,\n options?: {\n memo?: string;\n interval?: number;\n timeout?: number;\n onStatusChange?: (status: StatusResult) => void;\n }\n): Promise<StatusResult> {\n const {\n memo,\n interval = 5000,\n timeout = 600000,\n onStatusChange,\n } = options || {};\n\n const startTime = Date.now();\n let lastStatus: ExecutionStatus | null = null;\n\n while (Date.now() - startTime < timeout) {\n const status = await getExecutionStatus(depositAddress, memo);\n\n if (status.status !== lastStatus) {\n lastStatus = status.status;\n onStatusChange?.(status);\n }\n\n if (status.isComplete) {\n return status;\n }\n\n await new Promise((resolve) => setTimeout(resolve, interval));\n }\n\n throw new Error(`Timeout waiting for swap completion after ${timeout}ms`);\n}\n\n// Re-export for convenience\nexport { OpenAPI, OneClickService, ApiError };\n","/**\n * SuiPort Token Definitions\n * \n * Importable token constants for the SuiPort SDK.\n * Usage: import { arbitrumUSDC, suiSUI, CHAINS } from 'suiport/tokens'\n * \n * Token naming convention: {chain}{Symbol}\n * Example: arbitrumUSDC, ethereumETH, suiSUI\n */\n\n// ============================================================================\n// TOKEN ICONS - Shared across chains (same token = same icon)\n// ============================================================================\n\nexport const TOKEN_ICONS = {\n // Stablecoins\n USDC: 'https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48/logo.png',\n USDT: 'https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0xdAC17F958D2ee523a2206206994597C13D831ec7/logo.png',\n DAI: 'https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0x6B175474E89094C44Da98b954EesdfdsfdC495271d0F/logo.png',\n\n // Major tokens\n ETH: 'https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/info/logo.png',\n WETH: 'https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2/logo.png',\n BTC: 'https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/bitcoin/info/logo.png',\n WBTC: 'https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599/logo.png',\n\n // L1s & L2s\n SUI: 'https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/sui/info/logo.png',\n SOL: 'https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/solana/info/logo.png',\n NEAR: 'https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/near/info/logo.png',\n ARB: 'https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/arbitrum/info/logo.png',\n OP: 'https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/optimism/info/logo.png',\n POL: 'https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/polygon/info/logo.png',\n AVAX: 'https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/avalanchec/info/logo.png',\n BNB: 'https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/binance/info/logo.png',\n BASE: 'https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/base/info/logo.png',\n\n // Other L1s\n ADA: 'https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/cardano/info/logo.png',\n XRP: 'https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ripple/info/logo.png',\n DOGE: 'https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/doge/info/logo.png',\n LTC: 'https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/litecoin/info/logo.png',\n BCH: 'https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/bitcoincash/info/logo.png',\n TON: 'https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ton/info/logo.png',\n TRX: 'https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/tron/info/logo.png',\n XLM: 'https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/stellar/info/logo.png',\n APT: 'https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/aptos/info/logo.png',\n\n // DeFi & Others\n AAVE: 'https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0x7Fc66500c84A76Ad7e9c93437BFc5Ac33E2DDaE9/logo.png',\n UNI: 'https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984/logo.png',\n LINK: 'https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0x514910771AF9Ca656af840dff83E8264EcF986CA/logo.png',\n SHIB: 'https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0x95aD61b0a150d79219dCF64E1E6Cc01f0B64C4cE/logo.png',\n PEPE: 'https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0x6982508145454Ce325dDbE47a25d4ec3d2311933/logo.png',\n\n // Ecosystem tokens\n STRK: 'https://assets.coingecko.com/coins/images/26433/standard/starknet.png',\n BERA: 'https://assets.coingecko.com/coins/images/34286/standard/bera.png',\n GNO: 'https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0x6810e776880C02933D47DB1b9fc05908e5386b96/logo.png',\n MON: 'https://assets.coingecko.com/coins/images/35887/standard/monad.png',\n ZEC: 'https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/zcash/info/logo.png',\n\n // Meme coins\n TRUMP: 'https://assets.coingecko.com/coins/images/53746/standard/trump.jpg',\n WIF: 'https://assets.coingecko.com/coins/images/33566/standard/dogwifhat.jpg',\n BRETT: 'https://assets.coingecko.com/coins/images/35529/standard/brett.png',\n TURBO: 'https://assets.coingecko.com/coins/images/30116/standard/turbo.png',\n\n // Default fallback\n DEFAULT: 'https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/info/logo.png',\n} as const;\n\n// ============================================================================\n// CHAIN ICONS\n// ============================================================================\n\nexport const CHAIN_ICONS = {\n sui: 'https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/sui/info/logo.png',\n eth: 'https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/info/logo.png',\n arb: 'https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/arbitrum/info/logo.png',\n base: 'https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/base/info/logo.png',\n op: 'https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/optimism/info/logo.png',\n sol: 'https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/solana/info/logo.png',\n btc: 'https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/bitcoin/info/logo.png',\n near: 'https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/near/info/logo.png',\n pol: 'https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/polygon/info/logo.png',\n avax: 'https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/avalanchec/info/logo.png',\n bsc: 'https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/binance/info/logo.png',\n ton: 'https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ton/info/logo.png',\n tron: 'https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/tron/info/logo.png',\n stellar: 'https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/stellar/info/logo.png',\n cardano: 'https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/cardano/info/logo.png',\n aptos: 'https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/aptos/info/logo.png',\n gnosis: 'https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/xdai/info/logo.png',\n starknet: 'https://assets.coingecko.com/coins/images/26433/standard/starknet.png',\n bera: 'https://assets.coingecko.com/coins/images/34286/standard/bera.png',\n monad: 'https://assets.coingecko.com/coins/images/35887/standard/monad.png',\n doge: 'https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/doge/info/logo.png',\n ltc: 'https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/litecoin/info/logo.png',\n bch: 'https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/bitcoincash/info/logo.png',\n xrp: 'https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ripple/info/logo.png',\n zec: 'https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/zcash/info/logo.png',\n} as const;\n\n// ============================================================================\n// TYPES\n// ============================================================================\n\nexport type ChainId = keyof typeof CHAIN_ICONS;\n\nexport interface Token {\n /** Readable name: arbitrumUSDC, suiSUI */\n name: string;\n /** Display symbol: USDC, SUI, ETH */\n symbol: string;\n /** 1Click API asset ID */\n assetId: string;\n /** Chain identifier */\n chain: ChainId;\n /** Token decimals */\n decimals: number;\n /** Token icon URL */\n icon: string;\n /** Chain icon URL */\n chainIcon: string;\n /** Contract address on the chain (if applicable) */\n contractAddress?: string;\n}\n\nexport interface Chain {\n id: ChainId;\n name: string;\n icon: string;\n tokens: Token[];\n}\n\n// ============================================================================\n// HELPER FUNCTION\n// ============================================================================\n\nfunction createToken(\n chain: ChainId,\n symbol: string,\n assetId: string,\n decimals: number,\n contractAddress?: string\n): Token {\n const name = `${chain}${symbol.replace('$', '').replace(' ', '')}`;\n const icon = TOKEN_ICONS[symbol as keyof typeof TOKEN_ICONS] || TOKEN_ICONS.DEFAULT;\n const chainIcon = CHAIN_ICONS[chain];\n\n return {\n name,\n symbol,\n assetId,\n chain,\n decimals,\n icon,\n chainIcon,\n contractAddress,\n };\n}\n\n// ============================================================================\n// SUI TOKENS (Destination chain for SuiPort!)\n// ============================================================================\n\nexport const suiSUI = createToken('sui', 'SUI', 'nep141:sui.omft.near', 9);\nexport const suiUSDC = createToken('sui', 'USDC', 'nep141:sui-c1b81ecaf27933252d31a963bc5e9458f13c18ce.omft.near', 6, '0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC');\n\n// ============================================================================\n// ETHEREUM TOKENS\n// ============================================================================\n\nexport const ethereumETH = createToken('eth', 'ETH', 'nep141:eth.omft.near', 18);\nexport const ethereumUSDC = createToken('eth', 'USDC', 'nep141:eth-0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48.omft.near', 6, '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48');\nexport const ethereumUSDT = createToken('eth', 'USDT', 'nep141:eth-0xdac17f958d2ee523a2206206994597c13d831ec7.omft.near', 6, '0xdac17f958d2ee523a2206206994597c13d831ec7');\nexport const ethereumWBTC = createToken('eth', 'WBTC', 'nep141:eth-0x2260fac5e5542a773aa44fbcfedf7c193bc2c599.omft.near', 8, '0x2260fac5e5542a773aa44fbcfedf7c193bc2c599');\nexport const ethereumDAI = createToken('eth', 'DAI', 'nep141:eth-0x6b175474e89094c44da98b954eedeac495271d0f.omft.near', 18, '0x6b175474e89094c44da98b954eedeac495271d0f');\nexport const ethereumAAVE = createToken('eth', 'AAVE', 'nep141:eth-0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9.omft.near', 18, '0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9');\nexport const ethereumUNI = createToken('eth', 'UNI', 'nep141:eth-0x1f9840a85d5af5bf1d1762f925bdaddc4201f984.omft.near', 18, '0x1f9840a85d5af5bf1d1762f925bdaddc4201f984');\nexport const ethereumLINK = createToken('eth', 'LINK', 'nep141:eth-0x514910771af9ca656af840dff83e8264ecf986ca.omft.near', 18, '0x514910771af9ca656af840dff83e8264ecf986ca');\nexport const ethereumSHIB = createToken('eth', 'SHIB', 'nep141:eth-0x95ad61b0a150d79219dcf64e1e6cc01f0b64c4ce.omft.near', 18, '0x95ad61b0a150d79219dcf64e1e6cc01f0b64c4ce');\nexport const ethereumPEPE = createToken('eth', 'PEPE', 'nep141:eth-0x6982508145454ce325ddbe47a25d4ec3d2311933.omft.near', 18, '0x6982508145454ce325ddbe47a25d4ec3d2311933');\nexport const ethereumTURBO = createToken('eth', 'TURBO', 'nep141:eth-0xa35923162c49cf95e6bf26623385eb431ad920d3.omft.near', 18, '0xa35923162c49cf95e6bf26623385eb431ad920d3');\nexport const ethereumSAFE = createToken('eth', 'SAFE', 'nep141:eth-0x5afe3855358e112b5647b952709e6165e1c1eeee.omft.near', 18, '0x5afe3855358e112b5647b952709e6165e1c1eeee');\n\n// ============================================================================\n// ARBITRUM TOKENS\n// ============================================================================\n\nexport const arbitrumETH = createToken('arb', 'ETH', 'nep141:arb.omft.near', 18);\nexport const arbitrumUSDC = createToken('arb', 'USDC', 'nep141:arb-0xaf88d065e77c8cc2239327c5edb3a432268e5831.omft.near', 6, '0xaf88d065e77c8cc2239327c5edb3a432268e5831');\nexport const arbitrumUSDT = createToken('arb', 'USDT', 'nep141:arb-0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9.omft.near', 6, '0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9');\nexport const arbitrumARB = createToken('arb', 'ARB', 'nep141:arb-0x912ce59144191c1204e64559fe8253a0e49e6548.omft.near', 18, '0x912ce59144191c1204e64559fe8253a0e49e6548');\nexport const arbitrumGMX = createToken('arb', 'GMX', 'nep141:arb-0xfc5a1a6eb076a2c7ad06ed22c90d7e710e35ad0a.omft.near', 18, '0xfc5a1a6eb076a2c7ad06ed22c90d7e710e35ad0a');\n\n// ============================================================================\n// BASE TOKENS\n// ============================================================================\n\nexport const baseETH = createToken('base', 'ETH', 'nep141:base.omft.near', 18);\nexport const baseUSDC = createToken('base', 'USDC', 'nep141:base-0x833589fcd6edb6e08f4c7c32d4f71b54bda02913.omft.near', 6, '0x833589fcd6edb6e08f4c7c32d4f71b54bda02913');\nexport const baseCbBTC = createToken('base', 'cbBTC', 'nep141:base-0xcbb7c0000ab88b473b1f5afd9ef808440eed33bf.omft.near', 8, '0xcbb7c0000ab88b473b1f5afd9ef808440eed33bf');\nexport const baseBRETT = createToken('base', 'BRETT', 'nep141:base-0x532f27101965dd16442e59d40670faf5ebb142e4.omft.near', 18, '0x532f27101965dd16442e59d40670faf5ebb142e4');\n\n// ============================================================================\n// OPTIMISM TOKENS\n// ============================================================================\n\nexport const optimismETH = createToken('op', 'ETH', 'nep245:v2_1.omni.hot.tg:10_11111111111111111111', 18);\nexport const optimismUSDC = createToken('op', 'USDC', 'nep245:v2_1.omni.hot.tg:10_A2ewyUyDp6qsue1jqZsGypkCxRJ', 6, '0x0b2c639c533813f4aa9d7837caf62653d097ff85');\nexport const optimismUSDT = createToken('op', 'USDT', 'nep245:v2_1.omni.hot.tg:10_359RPSJVdTxwTJT9TyGssr2rFoWo', 6, '0x94b008aa00579c1307b0ef2c499ad98a8ce58e58');\nexport const optimismOP = createToken('op', 'OP', 'nep245:v2_1.omni.hot.tg:10_vLAiSt9KfUGKpw5cD3vsSyNYBo7', 18, '0x4200000000000000000000000000000000000042');\n\n// ============================================================================\n// SOLANA TOKENS\n// ============================================================================\n\nexport const solanaSOL = createToken('sol', 'SOL', 'nep141:sol.omft.near', 9);\nexport const solanaUSDC = createToken('sol', 'USDC', 'nep141:sol-5ce3bf3a31af18be40ba30f721101b4341690186.omft.near', 6, 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v');\nexport const solanaUSDT = createToken('sol', 'USDT', 'nep141:sol-c800a4bd850783ccb82c2b2c7e84175443606352.omft.near', 6, 'Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB');\nexport const solanaTRUMP = createToken('sol', 'TRUMP', 'nep141:sol-c58e6539c2f2e097c251f8edf11f9c03e581f8d4.omft.near', 6, '6p6xgHyF7AeE6TZkSmFsko444wqoP15icUSqi2jfGiPN');\nexport const solanaWIF = createToken('sol', '$WIF', 'nep141:sol-b9c68f94ec8fd160137af8cdfe5e61cd68e2afba.omft.near', 6, 'EKpQGSJtjMFqKZ9KQanSqYXRcF8fBopzLHYxdM65zcjm');\nexport const solanaMELANIA = createToken('sol', 'MELANIA', 'nep141:sol-d600e625449a4d9380eaf5e3265e54c90d34e260.omft.near', 6, 'FUAfBo2jgks6gB4Z4LfZkqSZgzNucisEHqnNebaRxM1P');\n\n// ============================================================================\n// BITCOIN\n// ============================================================================\n\nexport const bitcoinBTC = createToken('btc', 'BTC', 'nep141:btc.omft.near', 8);\n\n// ============================================================================\n// POLYGON TOKENS\n// ============================================================================\n\nexport const polygonPOL = createToken('pol', 'POL', 'nep245:v2_1.omni.hot.tg:137_11111111111111111111', 18);\nexport const polygonUSDC = createToken('pol', 'USDC', 'nep245:v2_1.omni.hot.tg:137_qiStmoQJDQPTebaPjgx5VBxZv6L', 6, '0x3c499c542cef5e3811e1192ce70d8cc03d5c3359');\nexport const polygonUSDT = createToken('pol', 'USDT', 'nep245:v2_1.omni.hot.tg:137_3hpYoaLtt8MP1Z2GH1U473DMRKgr', 6, '0xc2132d05d31c914a87c6611c10748aeb04b58e8f');\n\n// ============================================================================\n// AVALANCHE TOKENS\n// ============================================================================\n\nexport const avalancheAVAX = createToken('avax', 'AVAX', 'nep245:v2_1.omni.hot.tg:43114_11111111111111111111', 18);\nexport const avalancheUSDC = createToken('avax', 'USDC', 'nep245:v2_1.omni.hot.tg:43114_3atVJH3r5c4GqiSYmg9fECvjc47o', 6, '0xb97ef9ef8734c71904d8002f8b6bc66dd9c48a6e');\nexport const avalancheUSDT = createToken('avax', 'USDT', 'nep245:v2_1.omni.hot.tg:43114_372BeH7ENZieCaabwkbWkBiTTgXp', 6, '0x9702230a8ea53601f5cd2dc00fdbc13d4df4a8c7');\n\n// ============================================================================\n// BSC TOKENS\n// ============================================================================\n\nexport const bscBNB = createToken('bsc', 'BNB', 'nep245:v2_1.omni.hot.tg:56_11111111111111111111', 18);\nexport const bscUSDC = createToken('bsc', 'USDC', 'nep245:v2_1.omni.hot.tg:56_2w93GqMcEmQFDru84j3HZZWt557r', 18, '0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d');\nexport const bscUSDT = createToken('bsc', 'USDT', 'nep245:v2_1.omni.hot.tg:56_2CMMyVTGZkeyNZTSvS5sarzfir6g', 18, '0x55d398326f99059ff775485246999027b3197955');\n\n// ============================================================================\n// TON TOKENS\n// ============================================================================\n\nexport const tonTON = createToken('ton', 'TON', 'nep245:v2_1.omni.hot.tg:1117_', 9);\nexport const tonUSDT = createToken('ton', 'USDT', 'nep245:v2_1.omni.hot.tg:1117_3tsdfyziyc7EJbP2aULWSKU4toBaAcN4FdTgfm5W1mC4ouR', 6, 'EQCxE6mUtQJKFnGfaROTKOt1lZbDiiX1kCixRv7Nw2Id_sDs');\n\n// ============================================================================\n// TRON TOKENS\n// ============================================================================\n\nexport const tronTRX = createToken('tron', 'TRX', 'nep141:tron.omft.near', 6);\nexport const tronUSDT = createToken('tron', 'USDT', 'nep141:tron-d28a265909efecdcee7c5028585214ea0b96f015.omft.near', 6, 'TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t');\n\n// ============================================================================\n// OTHER L1 TOKENS\n// ============================================================================\n\nexport const cardanoADA = createToken('cardano', 'ADA', 'nep141:cardano.omft.near', 6);\nexport const rippleXRP = createToken('xrp', 'XRP', 'nep141:xrp.omft.near', 6);\nexport const dogecoinDOGE = createToken('doge', 'DOGE', 'nep141:doge.omft.near', 8);\nexport const litecoinLTC = createToken('ltc', 'LTC', 'nep141:ltc.omft.near', 8);\nexport const bitcoinCashBCH = createToken('bch', 'BCH', 'nep141:bch.omft.near', 8);\nexport const aptosAPT = createToken('aptos', 'APT', 'nep141:aptos.omft.near', 8);\nexport const starknetSTRK = createToken('starknet', 'STRK', 'nep141:starknet.omft.near', 18);\nexport const berachainBERA = createToken('bera', 'BERA', 'nep141:bera.omft.near', 18);\nexport const zcashZEC = createToken('zec', 'ZEC', 'nep141:zec.omft.near', 8);\n\n// NEAR tokens\nexport const nearNEAR = createToken('near', 'wNEAR', 'nep141:wrap.near', 24, 'wrap.near');\nexport const nearUSDC = createToken('near', 'USDC', 'nep141:17208628f84f5d6ad33f0da3bbbeb27ffcb398eac501a31bd6ad2011e36133a1', 6, '17208628f84f5d6ad33f0da3bbbeb27ffcb398eac501a31bd6ad2011e36133a1');\nexport const nearUSDT = createToken('near', 'USDT', 'nep141:usdt.tether-token.near', 6, 'usdt.tether-token.near');\n\n// ============================================================================\n// CHAIN DEFINITIONS\n// ============================================================================\n\nexport const CHAINS: Record<ChainId, Chain> = {\n sui: {\n id: 'sui',\n name: 'Sui',\n icon: CHAIN_ICONS.sui,\n tokens: [suiSUI, suiUSDC],\n },\n eth: {\n id: 'eth',\n name: 'Ethereum',\n icon: CHAIN_ICONS.eth,\n tokens: [ethereumETH, ethereumUSDC, ethereumUSDT, ethereumWBTC, ethereumDAI, ethereumAAVE, ethereumUNI, ethereumLINK, ethereumSHIB, ethereumPEPE, ethereumTURBO, ethereumSAFE],\n },\n arb: {\n id: 'arb',\n name: 'Arbitrum',\n icon: CHAIN_ICONS.arb,\n tokens: [arbitrumETH, arbitrumUSDC, arbitrumUSDT, arbitrumARB, arbitrumGMX],\n },\n base: {\n id: 'base',\n name: 'Base',\n icon: CHAIN_ICONS.base,\n tokens: [baseETH, baseUSDC, baseCbBTC, baseBRETT],\n },\n op: {\n id: 'op',\n name: 'Optimism',\n icon: CHAIN_ICONS.op,\n tokens: [optimismETH, optimismUSDC, optimismUSDT, optimismOP],\n },\n sol: {\n id: 'sol',\n name: 'Solana',\n icon: CHAIN_ICONS.sol,\n tokens: [solanaSOL, solanaUSDC, solanaUSDT, solanaTRUMP, solanaWIF, solanaMELANIA],\n },\n btc: {\n id: 'btc',\n name: 'Bitcoin',\n icon: CHAIN_ICONS.btc,\n tokens: [bitcoinBTC],\n },\n pol: {\n id: 'pol',\n name: 'Polygon',\n icon: CHAIN_ICONS.pol,\n tokens: [polygonPOL, polygonUSDC, polygonUSDT],\n },\n avax: {\n id: 'avax',\n name: 'Avalanche',\n icon: CHAIN_ICONS.avax,\n tokens: [avalancheAVAX, avalancheUSDC, avalancheUSDT],\n },\n bsc: {\n id: 'bsc',\n name: 'BNB Chain',\n icon: CHAIN_ICONS.bsc,\n tokens: [bscBNB, bscUSDC, bscUSDT],\n },\n ton: {\n id: 'ton',\n name: 'TON',\n icon: CHAIN_ICONS.ton,\n tokens: [tonTON, tonUSDT],\n },\n tron: {\n id: 'tron',\n name: 'Tron',\n icon: CHAIN_ICONS.tron,\n tokens: [tronTRX, tronUSDT],\n },\n near: {\n id: 'near',\n name: 'NEAR',\n icon: CHAIN_ICONS.near,\n tokens: [nearNEAR, nearUSDC, nearUSDT],\n },\n cardano: {\n id: 'cardano',\n name: 'Cardano',\n icon: CHAIN_ICONS.cardano,\n tokens: [cardanoADA],\n },\n xrp: {\n id: 'xrp',\n name: 'XRP Ledger',\n icon: CHAIN_ICONS.xrp,\n tokens: [rippleXRP],\n },\n doge: {\n id: 'doge',\n name: 'Dogecoin',\n icon: CHAIN_ICONS.doge,\n tokens: [dogecoinDOGE],\n },\n ltc: {\n id: 'ltc',\n name: 'Litecoin',\n icon: CHAIN_ICONS.ltc,\n tokens: [litecoinLTC],\n },\n bch: {\n id: 'bch',\n name: 'Bitcoin Cash',\n icon: CHAIN_ICONS.bch,\n tokens: [bitcoinCashBCH],\n },\n aptos: {\n id: 'aptos',\n name: 'Aptos',\n icon: CHAIN_ICONS.aptos,\n tokens: [aptosAPT],\n },\n starknet: {\n id: 'starknet',\n name: 'Starknet',\n icon: CHAIN_ICONS.starknet,\n tokens: [starknetSTRK],\n },\n bera: {\n id: 'bera',\n name: 'Berachain',\n icon: CHAIN_ICONS.bera,\n tokens: [berachainBERA],\n },\n zec: {\n id: 'zec',\n name: 'Zcash',\n icon: CHAIN_ICONS.zec,\n tokens: [zcashZEC],\n },\n gnosis: {\n id: 'gnosis',\n name: 'Gnosis',\n icon: CHAIN_ICONS.gnosis,\n tokens: [],\n },\n monad: {\n id: 'monad',\n name: 'Monad',\n icon: CHAIN_ICONS.monad,\n tokens: [],\n },\n stellar: {\n id: 'stellar',\n name: 'Stellar',\n icon: CHAIN_ICONS.stellar,\n tokens: [],\n },\n};\n\n// ============================================================================\n// ALL TOKENS - Flat list for easy iteration\n// ============================================================================\n\nexport const ALL_TOKENS: Token[] = Object.values(CHAINS).flatMap(chain => chain.tokens);\n\n// ============================================================================\n// UTILITY FUNCTIONS\n// ============================================================================\n\n/** Get token by name, e.g. getToken('arbitrumUSDC') */\nexport function getToken(name: string): Token | undefined {\n return ALL_TOKENS.find(t => t.name === name);\n}\n\n/** Get all tokens for a specific chain */\nexport function getTokensByChain(chainId: ChainId): Token[] {\n return CHAINS[chainId]?.tokens || [];\n}\n\n/** Get token by asset ID */\nexport function getTokenByAssetId(assetId: string): Token | undefined {\n return ALL_TOKENS.find(t => t.assetId === assetId);\n}\n\n/** Get all supported chains */\nexport function getSupportedChains(): Chain[] {\n return Object.values(CHAINS).filter(c => c.tokens.length > 0);\n}\n\n/** Get SUI destination tokens (for SuiPort) */\nexport function getSuiDestinationTokens(): Token[] {\n return CHAINS.sui.tokens;\n}\n\n// Export for convenience\nexport default {\n CHAINS,\n ALL_TOKENS,\n TOKEN_ICONS,\n CHAIN_ICONS,\n getToken,\n getTokensByChain,\n getTokenByAssetId,\n getSupportedChains,\n getSuiDestinationTokens,\n};\n","/**\n * useSuiportPayment Hook\n *\n * Main hook for managing payment state and flow\n */\n\nimport { useState, useCallback, useRef, useEffect } from 'react';\nimport {\n getQuote,\n getExecutionStatus,\n type QuoteResult,\n type StatusResult,\n type ExecutionStatus,\n} from '../core/intents';\nimport {\n getSupportedChains,\n getSuiDestinationTokens,\n suiSUI,\n suiUSDC,\n type Token,\n type Chain,\n} from '../core/tokens';\nimport type { PaymentState } from '../types';\n\nexport interface UseSuiportPaymentOptions {\n recipient: string;\n refundAddress?: string;\n destinationToken?: 'suiSUI' | 'suiUSDC';\n amount?: string;\n onSuccess?: (result: { txHash: string; amount: string }) => void;\n onError?: (error: Error) => void;\n}\n\nexport interface UseSuiportPaymentReturn {\n // State\n paymentState: PaymentState;\n quote: QuoteResult | null;\n previewQuote: QuoteResult | null;\n isLoadingPreview: boolean;\n status: StatusResult | null;\n error: Error | null;\n\n // Selected values\n selectedChain: Chain | null;\n selectedToken: Token | null;\n amount: string;\n destinationToken: Token;\n\n // Data\n chains: Chain[];\n tokens: Token[];\n destinationTokens: Token[];\n\n // Actions\n setSelectedChain: (chain: Chain) => void;\n setSelectedToken: (token: Token) => void;\n setAmount: (amount: string) => void;\n fetchQuote: () => Promise<void>;\n startPolling: () => void;\n stopPolling: () => void;\n reset: () => void;\n copyToClipboard: (text: string) => Promise<boolean>;\n}\n\nexport function useSuiportPayment(\n options: UseSuiportPaymentOptions\n): UseSuiportPaymentReturn {\n const { recipient, refundAddress, destinationToken, onSuccess, onError } =\n options;\n\n // Get destination token\n const destToken = destinationToken === 'suiSUI' ? suiSUI : suiUSDC;\n\n // State\n const [paymentState, setPaymentState] = useState<PaymentState>('idle');\n const [quote, setQuote] = useState<QuoteResult | null>(null);\n const [previewQuote, setPreviewQuote] = useState<QuoteResult | null>(null);\n const [isLoadingPreview, setIsLoadingPreview] = useState(false);\n const [status, setStatus] = useState<StatusResult | null>(null);\n const [error, setError] = useState<Error | null>(null);\n\n // Selection state\n const [selectedChain, setSelectedChain] = useState<Chain | null>(null);\n const [selectedToken, setSelectedToken] = useState<Token | null>(null);\n const [amount, setAmountState] = useState('');\n\n // Refs\n const pollingRef = useRef<NodeJS.Timeout | null>(null);\n const lastStatusRef = useRef<ExecutionStatus | null>(null);\n const previewDebounceRef = useRef<NodeJS.Timeout | null>(null);\n\n // Get available chains/tokens\n const chains = getSupportedChains().filter((c) => c.id !== 'sui');\n const tokens = selectedChain?.tokens || [];\n const destinationTokens = getSuiDestinationTokens();\n\n // Handle amount change with debounced preview\n const setAmount = useCallback(\n (newAmount: string) => {\n setAmountState(newAmount);\n setPreviewQuote(null);\n\n // Clear existing debounce\n if (previewDebounceRef.current) {\n clearTimeout(previewDebounceRef.current);\n }\n\n // Only fetch preview if we have required fields\n if (newAmount && selectedToken && refundAddress) {\n setIsLoadingPreview(true);\n\n // Debounce 3 seconds\n previewDebounceRef.current = setTimeout(async () => {\n try {\n const result = await getQuote({\n originToken: selectedToken,\n destinationToken: destToken,\n amount: newAmount,\n recipient,\n refundTo: refundAddress,\n dry: true, // Dry run for preview\n });\n setPreviewQuote(result);\n } catch (err) {\n console.warn('Preview quote failed:', err);\n } finally {\n setIsLoadingPreview(false);\n }\n }, 3000);\n } else {\n setIsLoadingPreview(false);\n }\n },\n [selectedToken, refundAddress, recipient, destToken]\n );\n\n // Handle chain selection\n const handleChainSelect = useCallback((chain: Chain) => {\n setSelectedChain(chain);\n setSelectedToken(chain.tokens[0] || null);\n setPaymentState('selecting');\n setPreviewQuote(null);\n }, []);\n\n // Handle token selection\n const handleTokenSelect = useCallback((token: Token) => {\n setSelectedToken(token);\n setPaymentState('selecting');\n setPreviewQuote(null);\n }, []);\n\n // Fetch quote (real, non-dry)\n const fetchQuote = useCallback(async () => {\n if (!selectedToken || !amount || !refundAddress) {\n setError(new Error('Missing required fields'));\n return;\n }\n\n setPaymentState('quoting');\n setError(null);\n\n try {\n const result = await getQuote({\n originToken: selectedToken,\n destinationToken: destToken,\n amount,\n recipient,\n refundTo: refundAddress,\n dry: false,\n });\n\n setQuote(result);\n setPaymentState('awaiting_deposit');\n } catch (err) {\n const error =\n err instanceof Error ? err : new Error('Failed to get quote');\n setError(error);\n setPaymentState('error');\n onError?.(error);\n }\n }, [\n selectedToken,\n amount,\n refundAddress,\n recipient,\n destToken,\n onError,\n ]);\n\n // Poll for status\n const pollStatus = useCallback(async () => {\n if (!quote?.depositAddress) return;\n\n try {\n const result = await getExecutionStatus(\n quote.depositAddress,\n quote.memo\n );\n setStatus(result);\n\n if (result.status !== lastStatusRef.current) {\n lastStatusRef.current = result.status;\n\n if (result.status === 'PROCESSING') {\n setPaymentState('processing');\n } else if (result.isSuccess) {\n setPaymentState('success');\n stopPolling();\n onSuccess?.({\n txHash: result.destinationTxHashes?.[0] || '',\n amount: quote.amountOut,\n });\n } else if (result.status === 'FAILED') {\n setPaymentState('error');\n stopPolling();\n const err = new Error('Payment failed');\n setError(err);\n onError?.(err);\n }\n }\n } catch (err) {\n console.error('Status poll error:', err);\n }\n }, [quote, onSuccess, onError]);\n\n // Start polling\n const startPolling = useCallback(() => {\n if (pollingRef.current) return;\n pollStatus();\n pollingRef.current = setInterval(pollStatus, 5000);\n }, [pollStatus]);\n\n // Stop polling\n const stopPolling = useCallback(() => {\n if (pollingRef.current) {\n clearInterval(pollingRef.current);\n pollingRef.current = null;\n }\n }, []);\n\n // Copy to clipboard\n const copyToClipboard = useCallback(async (text: string): Promise<boolean> => {\n try {\n await navigator.clipboard.writeText(text);\n return true;\n } catch {\n return false;\n }\n }, []);\n\n // Reset state\n const reset = useCallback(() => {\n stopPolling();\n if (previewDebounceRef.current) {\n clearTimeout(previewDebounceRef.current);\n }\n setPaymentState('idle');\n setQuote(null);\n setPreviewQuote(null);\n setIsLoadingPreview(false);\n setStatus(null);\n setError(null);\n setSelectedChain(null);\n setSelectedToken(null);\n setAmountState('');\n lastStatusRef.current = null;\n }, [stopPolling]);\n\n // Cleanup on unmount\n useEffect(() => {\n return () => {\n stopPolling();\n if (previewDebounceRef.current) {\n clearTimeout(previewDebounceRef.current);\n }\n };\n }, [stopPolling]);\n\n return {\n paymentState,\n quote,\n previewQuote,\n isLoadingPreview,\n status,\n error,\n selectedChain,\n selectedToken,\n amount,\n destinationToken: destToken,\n chains,\n tokens,\n destinationTokens,\n setSelectedChain: handleChainSelect,\n setSelectedToken: handleTokenSelect,\n setAmount,\n fetchQuote,\n startPolling,\n stopPolling,\n reset,\n copyToClipboard,\n };\n}\n","/**\n * SuiportModal Component\n *\n * Premium payment modal with chain/token selection and QR code display\n * Based on Aura.build design with glassmorphism and animations\n */\n\nimport React, { useEffect, useCallback, useState } from 'react';\nimport { QRCodeSVG } from 'qrcode.react';\nimport { useSuiportPayment } from '../hooks/useSuiportPayment';\nimport type { SuiportModalProps } from '../types';\n\n// ============================================================================\n// STYLES\n// ============================================================================\n\nconst styles = {\n overlay: {\n position: 'fixed' as const,\n inset: 0,\n backgroundColor: 'rgba(0, 0, 0, 0.8)',\n backdropFilter: 'blur(8px)',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n zIndex: 9999,\n padding: '16px',\n animation: 'suiport-fade-in 0.2s ease',\n },\n modal: {\n position: 'relative' as const,\n width: '100%',\n maxWidth: '380px',\n background: 'rgba(22, 22, 30, 0.95)',\n backdropFilter: 'blur(24px)',\n border: '1px solid rgba(255, 255, 255, 0.08)',\n borderRadius: '24px',\n padding: '24px',\n boxShadow:\n '0 25px 50px -12px rgba(0, 0, 0, 0.5), inset 0 0 0 1px rgba(255, 255, 255, 0.05)',\n fontFamily:\n \"'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif\",\n animation: 'suiport-slide-up 0.3s ease',\n },\n header: {\n display: 'flex',\n flexDirection: 'column' as const,\n alignItems: 'center',\n marginBottom: '24px',\n },\n headerIcon: {\n width: '48px',\n height: '48px',\n borderRadius: '16px',\n background: 'linear-gradient(135deg, rgba(255,255,255,0.1), transparent)',\n border: '1px solid rgba(255,255,255,0.05)',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n marginBottom: '16px',\n },\n title: {\n fontSize: '18px',\n fontWeight: 500,\n color: 'white',\n margin: 0,\n textShadow: '0 0 15px rgba(255,255,255,0.3)',\n },\n subtitle: {\n fontSize: '12px',\n color: 'rgba(255,255,255,0.4)',\n marginTop: '4px',\n fontWeight: 300,\n letterSpacing: '0.5px',\n },\n closeButton: {\n position: 'absolute' as const,\n top: '16px',\n right: '16px',\n width: '32px',\n height: '32px',\n borderRadius: '8px',\n background: 'rgba(255,255,255,0.05)',\n border: '1px solid rgba(255,255,255,0.1)',\n color: 'rgba(255,255,255,0.6)',\n cursor: 'pointer',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n transition: 'all 0.2s',\n },\n selectorsRow: {\n display: 'grid',\n gridTemplateColumns: '1fr 1fr',\n gap: '12px',\n marginBottom: '24px',\n },\n selector: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n padding: '12px',\n background: 'rgba(255,255,255,0.05)',\n border: '1px solid rgba(255,255,255,0.05)',\n borderRadius: '16px',\n cursor: 'pointer',\n transition: 'all 0.2s',\n },\n selectorIcon: {\n width: '32px',\n height: '32px',\n borderRadius: '50%',\n background: '#1c1c26',\n border: '1px solid rgba(255,255,255,0.1)',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n overflow: 'hidden',\n },\n selectorLabel: {\n fontSize: '10px',\n textTransform: 'uppercase' as const,\n letterSpacing: '1.5px',\n color: 'rgba(255,255,255,0.3)',\n fontWeight: 500,\n },\n selectorValue: {\n fontSize: '14px',\n color: 'rgba(255,255,255,0.9)',\n fontWeight: 500,\n },\n amountInput: {\n width: '100%',\n textAlign: 'center' as const,\n fontSize: '48px',\n fontWeight: 500,\n color: 'white',\n background: 'transparent',\n border: 'none',\n outline: 'none',\n marginBottom: '24px',\n caretColor: '#4F46E5',\n },\n details: {\n marginBottom: '20px',\n padding: '0 4px',\n },\n detailRow: {\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n fontSize: '12px',\n color: 'rgba(255,255,255,0.4)',\n marginBottom: '8px',\n },\n detailValue: {\n fontWeight: 500,\n color: 'rgba(255,255,255,0.7)',\n display: 'flex',\n alignItems: 'center',\n gap: '6px',\n },\n button: {\n width: '100%',\n position: 'relative' as const,\n overflow: 'hidden',\n borderRadius: '16px',\n padding: '2px',\n background: 'linear-gradient(90deg, #4F46E5, #7C3AED, #4F46E5)',\n backgroundSize: '200% 200%',\n animation: 'suiport-gradient 3s ease infinite',\n border: 'none',\n cursor: 'pointer',\n },\n buttonInner: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: '8px',\n height: '48px',\n borderRadius: '14px',\n background: '#0A0A0F',\n color: 'white',\n fontSize: '14px',\n fontWeight: 500,\n transition: 'background 0.3s',\n },\n buttonDisabled: {\n opacity: 0.5,\n cursor: 'not-allowed',\n },\n // QR container - dark background, no white box\n qrContainer: {\n display: 'flex',\n flexDirection: 'column' as const,\n alignItems: 'center',\n padding: '24px',\n background: 'transparent',\n marginBottom: '16px',\n },\n // Address with copy button\n addressContainer: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: '8px',\n marginTop: '16px',\n },\n addressText: {\n fontSize: '12px',\n color: 'rgba(255,255,255,0.6)',\n wordBreak: 'break-all' as const,\n textAlign: 'center' as const,\n fontFamily: 'monospace',\n },\n copyButton: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: '32px',\n height: '32px',\n borderRadius: '8px',\n background: 'rgba(255,255,255,0.1)',\n border: '1px solid rgba(255,255,255,0.15)',\n cursor: 'pointer',\n transition: 'all 0.2s',\n flexShrink: 0,\n },\n statusBadge: {\n display: 'inline-flex',\n alignItems: 'center',\n gap: '6px',\n padding: '6px 12px',\n borderRadius: '20px',\n fontSize: '12px',\n fontWeight: 500,\n },\n successBadge: {\n background: 'rgba(16, 185, 129, 0.2)',\n color: '#10B981',\n },\n processingBadge: {\n background: 'rgba(79, 70, 229, 0.2)',\n color: '#818CF8',\n },\n dropdown: {\n position: 'absolute' as const,\n top: 'calc(100% + 8px)',\n left: 0,\n right: 0,\n background: 'rgba(22, 22, 30, 0.98)',\n border: '1px solid rgba(255,255,255,0.1)',\n borderRadius: '16px',\n maxHeight: '200px',\n overflowY: 'auto' as const,\n zIndex: 10,\n boxShadow: '0 20px 40px rgba(0,0,0,0.5)',\n },\n dropdownItem: {\n display: 'flex',\n alignItems: 'center',\n gap: '12px',\n padding: '12px 16px',\n cursor: 'pointer',\n transition: 'background 0.2s',\n },\n loadingDot: {\n width: '8px',\n height: '8px',\n borderRadius: '50%',\n background: '#818CF8',\n animation: 'suiport-pulse 1s ease infinite',\n },\n tokenBadge: {\n display: 'inline-flex',\n alignItems: 'center',\n gap: '4px',\n padding: '2px 8px',\n borderRadius: '12px',\n background: 'rgba(255,255,255,0.08)',\n fontSize: '11px',\n },\n};\n\n// CSS Keyframes (injected once)\nconst injectStyles = () => {\n if (typeof document === 'undefined') return;\n if (document.getElementById('suiport-styles')) return;\n\n const style = document.createElement('style');\n style.id = 'suiport-styles';\n style.textContent = `\n @keyframes suiport-fade-in {\n from { opacity: 0; }\n to { opacity: 1; }\n }\n @keyframes suiport-slide-up {\n from { opacity: 0; transform: translateY(20px) scale(0.95); }\n to { opacity: 1; transform: translateY(0) scale(1); }\n }\n @keyframes suiport-gradient {\n 0% { background-position: 0% 50%; }\n 50% { background-position: 100% 50%; }\n 100% { background-position: 0% 50%; }\n }\n @keyframes suiport-pulse {\n 0%, 100% { opacity: 1; }\n 50% { opacity: 0.3; }\n }\n `;\n document.head.appendChild(style);\n};\n\n// ============================================================================\n// COMPONENT\n// ============================================================================\n\nexport function SuiportModal({\n open,\n onClose,\n recipient,\n refundAddress,\n destinationToken = 'suiUSDC',\n amount: initialAmount,\n onSuccess,\n onError,\n}: SuiportModalProps) {\n const payment = useSuiportPayment({\n recipient,\n refundAddress,\n destinationToken,\n amount: initialAmount,\n onSuccess,\n onError,\n });\n\n const [chainDropdownOpen, setChainDropdownOpen] = React.useState(false);\n const [tokenDropdownOpen, setTokenDropdownOpen] = React.useState(false);\n const [copied, setCopied] = useState(false);\n const [showReceipt, setShowReceipt] = useState(false);\n\n // Inject styles on mount\n useEffect(() => {\n injectStyles();\n }, []);\n\n // Start polling when awaiting deposit\n useEffect(() => {\n if (payment.paymentState === 'awaiting_deposit') {\n payment.startPolling();\n }\n }, [payment.paymentState]);\n\n // Stop polling on unmount only\n useEffect(() => {\n return () => payment.stopPolling();\n }, []);\n\n // Reset on close\n const handleClose = useCallback(() => {\n payment.reset();\n onClose();\n }, [payment, onClose]);\n\n // Handle escape key\n useEffect(() => {\n const handleEscape = (e: KeyboardEvent) => {\n if (e.key === 'Escape') handleClose();\n };\n if (open) {\n document.addEventListener('keydown', handleEscape);\n return () => document.removeEventListener('keydown', handleEscape);\n }\n }, [open, handleClose]);\n\n // Copy address handler\n const handleCopy = useCallback(async () => {\n if (payment.quote?.depositAddress) {\n const success = await payment.copyToClipboard(payment.quote.depositAddress);\n if (success) {\n setCopied(true);\n setTimeout(() => setCopied(false), 2000);\n }\n }\n }, [payment]);\n\n if (!open) return null;\n\n const canSubmit =\n payment.selectedToken && payment.amount && refundAddress;\n const isProcessing =\n payment.paymentState === 'quoting' ||\n payment.paymentState === 'processing';\n const showQR = payment.paymentState === 'awaiting_deposit' || payment.paymentState === 'processing';\n const isSuccess = payment.paymentState === 'success';\n\n return (\n <div style={styles.overlay} onClick={handleClose}>\n <div style={styles.modal} onClick={(e) => e.stopPropagation()}>\n {/* Close Button */}\n <button\n style={styles.closeButton}\n onClick={handleClose}\n onMouseEnter={(e) => {\n e.currentTarget.style.background =\n 'rgba(255,255,255,0.1)';\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.background =\n 'rgba(255,255,255,0.05)';\n }}\n >\n <CloseIcon />\n </button>\n\n {/* Success State - Full Daimo-style */}\n {isSuccess ? (\n <div style={{ textAlign: 'center', paddingTop: '20px' }}>\n <h2 style={{ ...styles.title, marginBottom: '32px', fontSize: '20px' }}>\n Payment Successful\n </h2>\n\n {/* Large Checkmark Circle */}\n <div\n style={{\n width: '100px',\n height: '100px',\n borderRadius: '50%',\n background: 'rgba(22, 22, 30, 0.9)',\n border: '3px solid #10B981',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n margin: '0 auto 24px',\n boxShadow: '0 0 30px rgba(16, 185, 129, 0.3)',\n }}\n >\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#10B981\" strokeWidth=\"3\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <polyline points=\"20 6 9 17 4 12\" />\n </svg>\n </div>\n\n <p style={{ color: 'white', fontSize: '18px', fontWeight: 500, marginBottom: '8px' }}>\n Payment Completed\n </p>\n <p style={{ color: 'rgba(255,255,255,0.5)', fontSize: '14px', marginBottom: '32px' }}>\n {payment.amount} {payment.selectedToken?.symbol} → ~{payment.quote?.amountOutFormatted || ''} {payment.destinationToken.symbol} on Sui\n </p>\n\n {/* Show Receipt Link */}\n <button\n onClick={() => setShowReceipt(!showReceipt)}\n style={{ background: 'transparent', border: 'none', color: 'rgba(255,255,255,0.6)', fontSize: '14px', cursor: 'pointer', textDecoration: 'underline', marginBottom: showReceipt ? '16px' : '0' }}\n >\n {showReceipt ? 'Hide receipt' : 'Show receipt'}\n </button>\n\n {/* Receipt Details */}\n {showReceipt && (\n <div style={{ background: 'rgba(255,255,255,0.05)', borderRadius: '12px', padding: '16px', textAlign: 'left', marginTop: '8px' }}>\n {payment.status?.originTxHashes?.map((hash, i) => (\n <div key={`origin-${i}`} style={{ marginBottom: '12px' }}>\n <p style={{ color: 'rgba(255,255,255,0.5)', fontSize: '12px', marginBottom: '4px' }}>Source TX ({payment.selectedChain?.name})</p>\n <a href={payment.selectedChain?.id === 'base' ? `https://basescan.org/tx/${hash}` : payment.selectedChain?.id === 'arb' ? `https://arbiscan.io/tx/${hash}` : `https://etherscan.io/tx/${hash}`} target=\"_blank\" rel=\"noopener noreferrer\" style={{ color: '#60A5FA', fontSize: '13px', textDecoration: 'none', fontFamily: 'monospace' }}>\n {hash.slice(0, 10)}...{hash.slice(-8)} ↗\n </a>\n </div>\n ))}\n {payment.status?.destinationTxHashes?.map((hash, i) => (\n <div key={`dest-${i}`}>\n <p style={{ color: 'rgba(255,255,255,0.5)', fontSize: '12px', marginBottom: '4px' }}>Destination TX (Sui)</p>\n <a href={`https://suiscan.xyz/mainnet/tx/${hash}`} target=\"_blank\" rel=\"noopener noreferrer\" style={{ color: '#60A5FA', fontSize: '13px', textDecoration: 'none', fontFamily: 'monospace' }}>\n {hash.slice(0, 10)}...{hash.slice(-8)} ↗\n </a>\n </div>\n ))}\n {!payment.status?.originTxHashes?.length && !payment.status?.destinationTxHashes?.length && (\n <p style={{ color: 'rgba(255,255,255,0.4)', fontSize: '13px' }}>Transaction details loading...</p>\n )}\n </div>\n )}\n\n {/* Done Button */}\n <button onClick={handleClose} style={{ ...styles.button, marginTop: '24px', background: 'linear-gradient(135deg, #10B981, #059669)' }}>\n Done\n </button>\n </div>\n ) : (\n <>\n {/* Header - only when not success */}\n <div style={styles.header}>\n <div style={styles.headerIcon}>\n <CardIcon />\n </div>\n <h2 style={styles.title}>\n {showQR ? 'Send Payment' : 'Pay with any token'}\n </h2>\n <p style={styles.subtitle}>\n {showQR ? 'Scan QR or copy address below' : 'Secure, gasless transactions'}\n </p>\n </div>\n\n {/* QR Code State */}\n {showQR && payment.quote && (\n <>\n {/* QR Code - white on dark background */}\n <div style={styles.qrContainer}>\n <QRCodeSVG\n value={payment.quote.depositAddress}\n size={180}\n level=\"M\"\n bgColor=\"transparent\"\n fgColor=\"white\"\n />\n </div>\n\n {/* Address with copy button */}\n <div style={styles.addressContainer}>\n <span style={styles.addressText}>\n {payment.quote.depositAddress.slice(0, 8)}...\n {payment.quote.depositAddress.slice(-8)}\n </span>\n <button\n style={styles.copyButton}\n onClick={handleCopy}\n onMouseEnter={(e) => {\n e.currentTarget.style.background = 'rgba(255,255,255,0.2)';\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.background = 'rgba(255,255,255,0.1)';\n }}\n >\n {copied ? <CheckSmallIcon /> : <CopyIcon />}\n </button>\n </div>\n\n {/* Details with chain/token info */}\n <div style={{ ...styles.details, marginTop: '20px' }}>\n <div style={styles.detailRow}>\n <span>Status</span>\n <span\n style={{\n ...styles.statusBadge,\n ...styles.processingBadge,\n }}\n >\n <PulseIcon /> {payment.paymentState === 'processing' ? 'Processing deposit...' : 'Waiting for deposit'}\n </span>\n </div>\n <div style={styles.detailRow}>\n <span>Amount to send</span>\n <span style={styles.detailValue}>\n {payment.amount} {payment.selectedToken?.symbol}\n <span style={styles.tokenBadge}>\n {payment.selectedChain?.name}\n </span>\n </span>\n </div>\n <div style={styles.detailRow}>\n <span>You receive</span>\n <span style={styles.detailValue}>\n ~{payment.quote.amountOutFormatted}{' '}\n {payment.destinationToken.symbol}\n <span style={styles.tokenBadge}>Sui</span>\n </span>\n </div>\n </div>\n </>\n )}\n\n {/* Selection State */}\n {!showQR && !isSuccess && (\n <>\n {/* Chain & Token Selectors */}\n <div style={styles.selectorsRow}>\n {/* Chain Selector */}\n <div style={{ position: 'relative' }}>\n <div\n style={styles.selector}\n onClick={() => {\n setChainDropdownOpen(!chainDropdownOpen);\n setTokenDropdownOpen(false);\n }}\n >\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: '12px',\n }}\n >\n <div style={styles.selectorIcon}>\n {payment.selectedChain ? (\n <img\n src={payment.selectedChain.icon}\n alt=\"\"\n style={{\n width: '100%',\n height: '100%',\n }}\n />\n ) : (\n <GlobeIcon />\n )}\n </div>\n <div>\n <div style={styles.selectorLabel}>\n Chain\n </div>\n <div style={styles.selectorValue}>\n {payment.selectedChain?.name ||\n 'Select'}\n </div>\n </div>\n </div>\n <ChevronIcon />\n </div>\n\n {/* Chain Dropdown */}\n {chainDropdownOpen && (\n <div style={styles.dropdown}>\n {payment.chains.map((chain) => (\n <div\n key={chain.id}\n style={styles.dropdownItem}\n onClick={() => {\n payment.setSelectedChain(chain);\n setChainDropdownOpen(false);\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.background =\n 'rgba(255,255,255,0.1)';\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.background =\n 'transparent';\n }}\n >\n <img\n src={chain.icon}\n alt=\"\"\n style={{\n width: '24px',\n height: '24px',\n borderRadius: '50%',\n }}\n />\n <span\n style={{\n color: 'white',\n fontSize: '14px',\n }}\n >\n {chain.name}\n </span>\n </div>\n ))}\n </div>\n )}\n </div>\n\n {/* Token Selector */}\n <div style={{ position: 'relative' }}>\n <div\n style={{\n ...styles.selector,\n opacity: payment.selectedChain ? 1 : 0.5,\n pointerEvents: payment.selectedChain\n ? 'auto'\n : 'none',\n }}\n onClick={() => {\n if (payment.selectedChain) {\n setTokenDropdownOpen(!tokenDropdownOpen);\n setChainDropdownOpen(false);\n }\n }}\n >\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: '12px',\n }}\n >\n <div style={styles.selectorIcon}>\n {payment.selectedToken ? (\n <img\n src={payment.selectedToken.icon}\n alt=\"\"\n style={{\n width: '100%',\n height: '100%',\n }}\n />\n ) : (\n <DollarIcon />\n )}\n </div>\n <div>\n <div style={styles.selectorLabel}>\n Token\n </div>\n <div style={styles.selectorValue}>\n {payment.selectedToken?.symbol ||\n 'Select'}\n </div>\n </div>\n </div>\n <ChevronIcon />\n </div>\n\n {/* Token Dropdown */}\n {tokenDropdownOpen && (\n <div style={styles.dropdown}>\n {payment.tokens.map((token) => (\n <div\n key={token.assetId}\n style={styles.dropdownItem}\n onClick={() => {\n payment.setSelectedToken(token);\n setTokenDropdownOpen(false);\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.background =\n 'rgba(255,255,255,0.1)';\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.background =\n 'transparent';\n }}\n >\n <img\n src={token.icon}\n alt=\"\"\n style={{\n width: '24px',\n height: '24px',\n borderRadius: '50%',\n }}\n />\n <span\n style={{\n color: 'white',\n fontSize: '14px',\n }}\n >\n {token.symbol}\n </span>\n </div>\n ))}\n </div>\n )}\n </div>\n </div>\n\n {/* Amount Input */}\n <input\n type=\"text\"\n inputMode=\"decimal\"\n placeholder=\"0.00\"\n value={payment.amount}\n onChange={(e) => payment.setAmount(e.target.value)}\n style={styles.amountInput}\n />\n\n {/* Details - only show \"You receive\" after amount entered */}\n <div style={styles.details}>\n {payment.amount && (\n <div style={styles.detailRow}>\n <span>You receive</span>\n {payment.isLoadingPreview ? (\n <div style={{ display: 'flex', gap: '4px' }}>\n <div style={styles.loadingDot} />\n <div style={{ ...styles.loadingDot, animationDelay: '0.2s' }} />\n <div style={{ ...styles.loadingDot, animationDelay: '0.4s' }} />\n </div>\n ) : payment.previewQuote ? (\n <span style={styles.detailValue}>\n ~{payment.previewQuote.amountOutFormatted}{' '}\n {payment.destinationToken.symbol}\n </span>\n ) : (\n <span style={{ color: 'rgba(255,255,255,0.3)' }}>\n Enter amount...\n </span>\n )}\n </div>\n )}\n <div style={styles.detailRow}>\n <span>Destination</span>\n <span style={styles.detailValue}>\n {payment.destinationToken.symbol} on Sui\n </span>\n </div>\n </div>\n\n {/* Submit Button */}\n <button\n style={{\n ...styles.button,\n ...(!canSubmit || isProcessing\n ? styles.buttonDisabled\n : {}),\n }}\n disabled={!canSubmit || isProcessing}\n onClick={() => payment.fetchQuote()}\n >\n <div style={styles.buttonInner}>\n {isProcessing ? (\n <>\n <SpinnerIcon /> Processing...\n </>\n ) : (\n <>\n Confirm Payment\n <ArrowIcon />\n </>\n )}\n </div>\n </button>\n </>\n )}\n </>\n )}\n\n {/* Powered by */}\n <p\n style={{\n textAlign: 'center',\n fontSize: '10px',\n color: 'rgba(255,255,255,0.3)',\n marginTop: '16px',\n }}\n >\n Powered by SuiPort • NEAR Intents\n </p>\n </div>\n </div>\n );\n}\n\n\n// ============================================================================\n// ICONS\n// ============================================================================\n\nfunction CloseIcon() {\n return (\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M18 6L6 18M6 6L18 18\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n />\n </svg>\n );\n}\n\nfunction CardIcon() {\n return (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"rgba(255,255,255,0.9)\"\n strokeWidth=\"1.5\"\n >\n <path d=\"M3 10h18M7 15h2m4 0h4M6 19h12a3 3 0 003-3V8a3 3 0 00-3-3H6a3 3 0 00-3 3v8a3 3 0 003 3z\" />\n </svg>\n );\n}\n\nfunction GlobeIcon() {\n return (\n <svg\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"#818CF8\"\n strokeWidth=\"1.5\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"M2 12h20M12 2a15.3 15.3 0 014 10 15.3 15.3 0 01-4 10 15.3 15.3 0 01-4-10 15.3 15.3 0 014-10z\" />\n </svg>\n );\n}\n\nfunction DollarIcon() {\n return (\n <svg\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"#22D3EE\"\n strokeWidth=\"1.5\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"M12 6v12M15 9.5a3 3 0 00-3-2.5h-1a2.5 2.5 0 000 5h2a2.5 2.5 0 010 5H12a3 3 0 01-3-2.5\" />\n </svg>\n );\n}\n\nfunction ChevronIcon() {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"rgba(255,255,255,0.4)\"\n strokeWidth=\"2\"\n >\n <path d=\"M6 9l6 6 6-6\" />\n </svg>\n );\n}\n\n\n\n\nfunction CheckSmallIcon() {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"#10B981\"\n strokeWidth=\"2\"\n >\n <path d=\"M20 6L9 17l-5-5\" />\n </svg>\n );\n}\n\nfunction CopyIcon() {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"rgba(255,255,255,0.7)\"\n strokeWidth=\"2\"\n >\n <rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\" ry=\"2\" />\n <path d=\"M5 15H4a2 2 0 01-2-2V4a2 2 0 012-2h9a2 2 0 012 2v1\" />\n </svg>\n );\n}\n\nfunction PulseIcon() {\n return (\n <svg width=\"8\" height=\"8\" viewBox=\"0 0 8 8\">\n <circle\n cx=\"4\"\n cy=\"4\"\n r=\"4\"\n fill=\"#818CF8\"\n style={{ animation: 'suiport-pulse 1s ease infinite' }}\n />\n </svg>\n );\n}\n\nfunction SpinnerIcon() {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n style={{ animation: 'spin 1s linear infinite' }}\n >\n <circle\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"rgba(255,255,255,0.2)\"\n strokeWidth=\"3\"\n />\n <path\n d=\"M12 2a10 10 0 019.95 9\"\n stroke=\"white\"\n strokeWidth=\"3\"\n strokeLinecap=\"round\"\n />\n </svg>\n );\n}\n\nfunction ArrowIcon() {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n >\n <path d=\"M5 12h14M12 5l7 7-7 7\" />\n </svg>\n );\n}\n","/**\n * SuiportButton Component\n *\n * Drop-in button that opens the SuiPort payment modal\n *\n * @example\n * ```tsx\n * import { SuiportButton } from '@suiport/sdk'\n *\n * <SuiportButton\n * recipient=\"0x...\"\n * destinationToken=\"suiUSDC\"\n * onSuccess={(result) => console.log('Paid!', result)}\n * />\n * ```\n */\n\nimport React, { useState } from 'react';\nimport { SuiportModal } from './SuiportModal';\nimport type { SuiportButtonProps } from '../types';\n\nconst buttonStyles = {\n default: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: '8px',\n padding: '12px 24px',\n fontSize: '14px',\n fontWeight: 500,\n color: 'white',\n background: 'linear-gradient(135deg, #4F46E5 0%, #7C3AED 100%)',\n border: 'none',\n borderRadius: '12px',\n cursor: 'pointer',\n transition: 'all 0.2s ease',\n boxShadow: '0 4px 14px rgba(79, 70, 229, 0.3)',\n fontFamily:\n \"'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif\",\n } as React.CSSProperties,\n compact: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: '6px',\n padding: '8px 16px',\n fontSize: '13px',\n fontWeight: 500,\n color: 'white',\n background: 'linear-gradient(135deg, #4F46E5 0%, #7C3AED 100%)',\n border: 'none',\n borderRadius: '8px',\n cursor: 'pointer',\n transition: 'all 0.2s ease',\n boxShadow: '0 2px 8px rgba(79, 70, 229, 0.25)',\n fontFamily:\n \"'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif\",\n } as React.CSSProperties,\n outline: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: '8px',\n padding: '12px 24px',\n fontSize: '14px',\n fontWeight: 500,\n color: '#4F46E5',\n background: 'transparent',\n border: '2px solid #4F46E5',\n borderRadius: '12px',\n cursor: 'pointer',\n transition: 'all 0.2s ease',\n fontFamily:\n \"'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif\",\n } as React.CSSProperties,\n disabled: {\n opacity: 0.5,\n cursor: 'not-allowed',\n } as React.CSSProperties,\n};\n\nexport function SuiportButton({\n recipient,\n refundAddress,\n destinationToken = 'suiUSDC',\n amount,\n label = 'Pay with Crypto',\n variant = 'default',\n disabled = false,\n className,\n onSuccess,\n onError,\n onOpenChange,\n}: SuiportButtonProps) {\n const [isOpen, setIsOpen] = useState(false);\n\n const handleOpen = () => {\n if (!disabled) {\n setIsOpen(true);\n onOpenChange?.(true);\n }\n };\n\n const handleClose = () => {\n setIsOpen(false);\n onOpenChange?.(false);\n };\n\n const style = {\n ...buttonStyles[variant],\n ...(disabled ? buttonStyles.disabled : {}),\n };\n\n return (\n <>\n <button\n type=\"button\"\n onClick={handleOpen}\n disabled={disabled}\n className={className}\n style={style}\n >\n <SuiportIcon />\n {label}\n </button>\n\n <SuiportModal\n open={isOpen}\n onClose={handleClose}\n recipient={recipient}\n refundAddress={refundAddress}\n destinationToken={destinationToken}\n amount={amount}\n onSuccess={onSuccess}\n onError={onError}\n />\n </>\n );\n}\n\nfunction SuiportIcon() {\n return (\n <svg\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12 2L2 7L12 12L22 7L12 2Z\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M2 17L12 22L22 17\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M2 12L12 17L22 12\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n}\n"]}
|