multisigns-sdk 1.0.6 → 1.0.8

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.
Files changed (63) hide show
  1. package/dist/{chunk-VYJA3QAZ.js → chunk-3WZPZWTT.js} +1 -1
  2. package/dist/chunk-3WZPZWTT.js.map +1 -0
  3. package/dist/{chunk-KIJAQV3E.js → chunk-5D47RCSE.js} +8 -40
  4. package/dist/chunk-5D47RCSE.js.map +1 -0
  5. package/dist/chunk-7D4SUZUM.js +38 -0
  6. package/dist/{chunk-HPEF3SHJ.js → chunk-AZDMZJMI.js} +2 -2
  7. package/dist/{evm-validation-4UCXBNNX.js → chunk-FXHRAW2N.js} +5 -6
  8. package/dist/{evm-validation-4UCXBNNX.js.map → chunk-FXHRAW2N.js.map} +1 -1
  9. package/dist/{chunk-OTW5PZKP.js → chunk-G2AFPLPL.js} +2 -2
  10. package/dist/chunk-P5S66HVV.js +346 -0
  11. package/dist/chunk-P5S66HVV.js.map +1 -0
  12. package/dist/chunk-SLY2TEP7.js +36 -0
  13. package/dist/chunk-SLY2TEP7.js.map +1 -0
  14. package/dist/{chunk-KXIOGAV2.js → chunk-SW35WN7S.js} +2 -2
  15. package/dist/{chunk-2D7WK6DM.js → chunk-YIK2F4ES.js} +24 -8
  16. package/dist/chunk-YIK2F4ES.js.map +1 -0
  17. package/dist/chunk-YSKI4MI7.js +547 -0
  18. package/dist/chunk-YSKI4MI7.js.map +1 -0
  19. package/dist/{config-EBLIHXK5.js → config-U56L7O7I.js} +3 -3
  20. package/dist/createSolanaMultisigOrder-3ZAIO4W6.js +12 -0
  21. package/dist/estimateEvmRegularFee-UPIKRNHH.js +144 -0
  22. package/dist/estimateEvmRegularFee-UPIKRNHH.js.map +1 -0
  23. package/dist/estimateOrderExecutionFee-56V4CYAB.js +144 -0
  24. package/dist/estimateOrderExecutionFee-56V4CYAB.js.map +1 -0
  25. package/dist/estimateTronMultisigActivationFee-H723ID6I.js +90 -0
  26. package/dist/estimateTronMultisigActivationFee-H723ID6I.js.map +1 -0
  27. package/dist/estimateTronRegularFee-HKJLU27N.js +157 -0
  28. package/dist/estimateTronRegularFee-HKJLU27N.js.map +1 -0
  29. package/dist/evm-validation-UEE3NEI6.js +22 -0
  30. package/dist/evmSendTransaction-PXDRH7MR.js +291 -0
  31. package/dist/evmSendTransaction-PXDRH7MR.js.map +1 -0
  32. package/dist/index.cjs +7688 -2519
  33. package/dist/index.cjs.map +1 -1
  34. package/dist/index.d.cts +40 -38
  35. package/dist/index.d.ts +40 -38
  36. package/dist/index.js +4248 -1368
  37. package/dist/index.js.map +1 -1
  38. package/dist/{order-helpers-2UW3NAAZ.js → order-helpers-ZFGPS3HU.js} +3 -3
  39. package/dist/sendBtcTransaction-V24EFU5T.js +187 -0
  40. package/dist/sendBtcTransaction-V24EFU5T.js.map +1 -0
  41. package/dist/sendSolanaTransaction-TPEFMG47.js +337 -0
  42. package/dist/sendSolanaTransaction-TPEFMG47.js.map +1 -0
  43. package/dist/{shares-RSWRRBK5.js → shares-KAFAAQ2K.js} +5 -5
  44. package/dist/types-F5LB756Y.js +14 -0
  45. package/dist/types-F5LB756Y.js.map +1 -0
  46. package/dist/wallet.api-RPBMDZ5L.js +9 -0
  47. package/dist/wallet.api-RPBMDZ5L.js.map +1 -0
  48. package/package.json +1 -1
  49. package/dist/chunk-2D7WK6DM.js.map +0 -1
  50. package/dist/chunk-DGUM43GV.js +0 -11
  51. package/dist/chunk-KIJAQV3E.js.map +0 -1
  52. package/dist/chunk-VYJA3QAZ.js.map +0 -1
  53. package/dist/createSolanaMultisigOrder-J2DECM5P.js +0 -11
  54. package/dist/wallet.api-XLEU5W4L.js +0 -9
  55. /package/dist/{chunk-DGUM43GV.js.map → chunk-7D4SUZUM.js.map} +0 -0
  56. /package/dist/{chunk-HPEF3SHJ.js.map → chunk-AZDMZJMI.js.map} +0 -0
  57. /package/dist/{chunk-OTW5PZKP.js.map → chunk-G2AFPLPL.js.map} +0 -0
  58. /package/dist/{chunk-KXIOGAV2.js.map → chunk-SW35WN7S.js.map} +0 -0
  59. /package/dist/{config-EBLIHXK5.js.map → config-U56L7O7I.js.map} +0 -0
  60. /package/dist/{createSolanaMultisigOrder-J2DECM5P.js.map → createSolanaMultisigOrder-3ZAIO4W6.js.map} +0 -0
  61. /package/dist/{shares-RSWRRBK5.js.map → evm-validation-UEE3NEI6.js.map} +0 -0
  62. /package/dist/{order-helpers-2UW3NAAZ.js.map → order-helpers-ZFGPS3HU.js.map} +0 -0
  63. /package/dist/{wallet.api-XLEU5W4L.js.map → shares-KAFAAQ2K.js.map} +0 -0
@@ -52,4 +52,4 @@ export {
52
52
  OrderStatus,
53
53
  StatusFilterEnum
54
54
  };
55
- //# sourceMappingURL=chunk-VYJA3QAZ.js.map
55
+ //# sourceMappingURL=chunk-3WZPZWTT.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/core/types.ts"],"sourcesContent":["/**\n * Supported blockchain chain types\n */\nexport type ChainType = \"EVM\" | \"SOL\" | \"TRON\" | \"BTC\" | \"BTC_T3\";\n\nexport enum EChainType {\n EVM = \"EVM\",\n SOL = \"SOL\",\n TRON = \"TRON\",\n BTC = \"BTC\",\n BTC_T3 = \"BTC_T3\", // Bitcoin Testnet\n}\n\nlet _globalNetworkMode: NetworkMode = \"mainnet\";\nexport function _setGlobalNetworkMode(network: NetworkMode): void {\n _globalNetworkMode = network;\n}\n\n/**\n * Returns the appropriate BTC chain type based on the current network mode.\n * - Mainnet: EChainType.BTC\n * - Testnet: EChainType.BTC_T3\n *\n * @example\n * ```typescript\n * const btcChain = getBtcChainType(); // Returns EChainType.BTC or EChainType.BTC_T3\n * ```\n */\nexport function getBtcChainType(): EChainType.BTC | EChainType.BTC_T3 {\n return _globalNetworkMode === \"mainnet\" ? EChainType.BTC : EChainType.BTC_T3;\n}\n\n/**\n * Converts SDK chain type to backend API format.\n * This function handles the uppercase values and the special 'BTC_T3' value.\n */\nexport function toBackendChainType(\n chain: EChainType | ChainType | string\n): string {\n // Directly return the special Testnet chain value if encountered\n if (chain === \"BTC_T3\") {\n return \"BTC_T3\";\n }\n\n // For all other standard values ('EVM', 'SOL', 'TRON', 'BTC'), ensure they are uppercase.\n return String(chain).toUpperCase();\n}\n\nexport enum TestnetChainId {\n BASE_SEPOLIA = \"84532\",\n ARBITRUM_SEPOLIA = \"421614\",\n SOLANA_DEVNET = \"sol_devnet\",\n BTC = \"BTC_T3\",\n BNB = \"97\",\n POL = \"80002\",\n ETH_SEPOLIA = \"11155111\",\n OPTIMISM_SEPOLIA = \"11155420\",\n TRON = \"tron_shasta\",\n AVAX_FUJI = \"43113\",\n}\n\n// Frontend MainnetChainId values\nexport enum MainnetChainId {\n BASE = \"8453\",\n ARBITRUM = \"42161\",\n SOLANA = \"sol_mainnet\",\n BTC = \"BTC\",\n BNB = \"56\",\n POL = \"137\",\n ETH = \"1\",\n OPTIMISM = \"10\",\n TRON = \"tron_mainnet\",\n AVAX = \"43114\",\n}\n\n/**\n * Union of all possible chain ID values (EVM chain IDs are strings here for consistency)\n */\nexport type ChainIdValue = `${MainnetChainId}` | `${TestnetChainId}`;\n\nexport interface TWallet {\n name: string | null;\n chain: EChainType;\n address: string;\n share: string;\n isImported: boolean;\n}\n\n/**\n * Response from wallet creation/import\n */\nexport interface CreateWalletResponse {\n wallets: TWallet[];\n}\n\n/**\n * Single wallet details response\n */\nexport interface SingleWalletDetailsResponse {\n data: TWallet;\n}\n\n/**\n * Paginated wallets response\n */\nexport interface PaginatedWalletsResponse {\n wallets: TWallet[];\n total: number;\n page: number;\n limit: number;\n}\n\n/**\n * Multisig status enum\n */\nexport enum MultisigStatus {\n PENDING = \"pending\",\n ACTIVE = \"active\",\n INACTIVE = \"inactive\",\n}\n\n/**\n * Multisig params with deployment data\n */\nexport interface MultisigParams {\n chainType: EChainType;\n to: string;\n data: string;\n paymentToken: string;\n payment: string;\n vaultAddress: string;\n paymentReceiverAddress: string;\n fallbackAddress: string;\n singleton: string;\n initializer: string;\n deployData: string;\n share?: string;\n}\n\n/**\n * Token within a multisig\n */\nexport interface MultisignToken extends TokenMultisignBalance { }\n\n/**\n * Multisig vault/safe object\n */\nexport interface MultisigsItem {\n id: string;\n address: string | null;\n chainId: ChainIdValue;\n status: \"created\" | \"execution\" | \"deployed\";\n threshold: string;\n chainType: EChainType;\n isDeployed: boolean;\n factoryId: string;\n name: string;\n params: MultisigParams;\n updatedAt: string;\n createdAt: string;\n owners: { walletAddress: string }[];\n tokens: MultisignToken[];\n factoryAddress: string;\n}\n\nexport interface MultisigBaseDTO {\n address: string;\n chainType: EChainType;\n data: MultisigsItem[];\n}\n\n/**\n * Order status enum\n */\nexport enum OrderStatus {\n PENDING = \"pending\",\n APPROVED = \"approved\",\n EXECUTED = \"executed\",\n REJECTED = \"rejected\",\n CANCELLED = \"cancelled\",\n FAILED = \"failed\",\n}\n\n/**\n * Order method types - the action the order will perform\n */\nexport type OrderMethodType =\n | \"native\"\n | \"erc20\"\n | \"spl\"\n | \"trc20\"\n | \"trc\"\n | \"addOwner\"\n | \"removeOwner\"\n | \"changeThreshold\"\n | \"addOwnerWithThreshold\"\n | \"AddOwner\"\n | \"RemoveOwner\"\n | \"ChangeThreshold\"\n | \"multiSend\"\n | \"MultiSend\"\n | \"updateOwners\"\n | \"updateOwnerThreshold\";\n\n/**\n * Solana instruction types\n */\nexport enum ESolanaInstructionType {\n native = \"native\",\n spl = \"spl\",\n addOwner = \"addOwner\",\n removeOwner = \"removeOwner\",\n changeThreshold = \"changeThreshold\",\n MultiSend = \"MultiSend\",\n // Backwards compatibility aliases\n NATIVE = \"native\",\n SPL = \"spl\",\n ADD_OWNER = \"addOwner\",\n REMOVE_OWNER = \"removeOwner\",\n CHANGE_THRESHOLD = \"changeThreshold\",\n}\n\n/**\n * EVM method types for Gnosis Safe\n */\nexport type EvmMethodType =\n | \"execTransaction\"\n | \"addOwnerWithThreshold\"\n | \"AddOwner\"\n | \"removeOwner\"\n | \"RemoveOwner\"\n | \"changeThreshold\"\n | \"ChangeThreshold\"\n | \"multiSend\"\n | \"MultiSend\";\n\n/**\n * Tron order types\n */\nexport enum ETronOrderType {\n native = \"native\",\n trc20 = \"trc20\",\n trc = \"trc\",\n addOwner = \"addOwner\",\n removeOwner = \"removeOwner\",\n changeThreshold = \"changeThreshold\",\n updateOwners = \"updateOwners\",\n updateOwnerThreshold = \"updateOwnerThreshold\",\n}\n\n/**\n * Order instruction for creating orders\n */\nexport interface OrderInstruction {\n to?: string;\n toPubkey?: string;\n amount?: string;\n tokenAddress?: string;\n decimals?: number;\n type?: string;\n\n newOwner?: string;\n owners?: string[];\n removeOwner?: string;\n ownerToRemove?: string;\n newThreshold?: number;\n data?: string;\n value?: string;\n}\n\nexport interface OrderSigner {\n address: string;\n signature?: string;\n signedAt?: string;\n}\n\nexport type OrdersToken = {\n name: string;\n symbol: string;\n logoURL: string;\n priceUSD: number;\n price24hChange: number;\n decimals: number;\n amount: number;\n};\n\ntype InstructionArg = string | number | boolean;\n\nexport interface OrderMethod {\n method: string;\n args: InstructionArg[];\n}\n\nexport interface OrderInstructions {\n type?: ESolanaInstructionType | ETronOrderType | EvmMethodType;\n toPubkey?: string;\n amount?: string;\n newThreshold?: number;\n newOwner?: string;\n removeOwner?: string;\n tokenAddress?: string;\n to?: string;\n value?: string;\n data?: string;\n owners?: string[];\n}\n\nexport interface OrderParams {\n expireTime?: Date;\n chainType: string;\n proposalHash: string;\n transactionIndex: string;\n instructions: OrderInstructions[];\n safeTxGas?: string;\n token?: OrdersToken;\n methods?: OrderMethod[];\n operation?: \"0\" | \"1\" | string;\n data?: string;\n baseGas?: string;\n gasPrice?: string;\n gasToken?: string;\n value?: string;\n refundReceiver?: string;\n feeSats?: string;\n utxo?: Array<{ value: number }>;\n transaction?: {\n raw_data_hex?: string;\n };\n}\n\nexport interface Signature {\n id: string;\n orderId: string;\n multisigOwnerId: string;\n signedHash: string;\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface Signatures {\n walletAddress: string;\n signedHash: string;\n status: string;\n}\n\nexport enum EOrderStatus {\n proposed = \"proposed\",\n created = \"created\",\n pending = \"pending\",\n ready = \"ready\",\n rejected = \"rejected\",\n execution = \"execution\",\n expired = \"expired\",\n completed = \"completed\",\n}\n\n/**\n * Order object\n */\nexport interface Order {\n id: string;\n type?: string;\n multisigId: string;\n to: string;\n data: string;\n value: string;\n method: string;\n operation: number;\n hashToSing: string;\n txHash: string | null;\n updatedAt: string;\n createdAt: string;\n nonce: number;\n walletInitiator: string;\n signature: Signature;\n status: EOrderStatus;\n multisig: MultisigsItem;\n signatures: Signatures[];\n params?: OrderParams;\n isSmallestNonce?: boolean;\n}\n\n/**\n * Paginated orders response\n */\nexport interface PaginatedOrdersResponse {\n orders: Order[];\n total: number;\n page: number;\n limit: number;\n}\n\nexport interface TokenInfo {\n address: string;\n symbol: string;\n name?: string;\n decimals: number;\n logoUrl?: string;\n priceUsd?: string;\n balance?: string;\n}\n\n/**\n * Supported token from backend\n */\nexport interface SupportedToken {\n address: string;\n symbol: string;\n name: string;\n decimals: number;\n chainType: EChainType;\n chainId: ChainIdValue;\n logoUrl?: string;\n}\n\n/**\n * Token balance for multisig\n */\nexport interface TokenMultisignBalance {\n name: string;\n symbol: string;\n balanceWei: string;\n balance: string;\n decimals: number;\n address: string;\n logoURL: string;\n nativeTokenSymbol: string;\n nativeTokenName: string;\n\n amountNum?: number;\n priceUsd?: number;\n priceUSD?: number;\n priceChange24h?: number;\n price24hChange?: number;\n valueUsd?: number;\n balanceUSD?: number;\n}\n\n/**\n * Wallet portfolio response\n */\nexport interface TokensBalance {\n name: string;\n symbol: string;\n balanceWei: string;\n balance: string;\n priceUSD: number;\n price24hChange: number;\n balanceUSD: number;\n decimals: number;\n address: string;\n logoURL: string;\n}\n\nexport interface WalletPortfolioResponse {\n walletAddress: string;\n chainType: EChainType;\n chain: ChainIdValue;\n tokens: TokensBalance[];\n}\n\n\n/**\n * Portfolio request payload\n */\nexport interface PortfolioRequest {\n walletAddress: string;\n chainType: EChainType;\n chain: string;\n}\n\n/**\n * Wallet address with chain type for batch requests\n */\nexport interface WalletAddressAndChainType {\n walletAddress: string;\n chainType: EChainType;\n}\n\n/**\n * Total asset value response\n */\nexport interface TotalAssetValueResponse {\n totalAssetValueUSD: string;\n}\n\n/**\n * Supported tokens response\n */\nexport interface SupportedTokensResponse {\n tokens: SupportedToken[];\n total: number;\n}\n\nexport type FeeEstimationTxType =\n | \"send\"\n | \"sendToken\"\n | \"activate\"\n | \"createOrder\"\n | \"signOrder\"\n | \"executeOrder\";\n\n/**\n * Estimated fee response\n */\nexport interface EstimatedFee {\n estimatedFee: string;\n gasLimit?: string;\n gasPrice?: string;\n\n nativeFeeLamports?: number;\n\n gasFeeRaw?: string;\n maxFeePerGas?: string;\n maxPriorityFeePerGas?: string;\n energyFee?: string;\n bandwidthFee?: string;\n priorityFee?: string;\n feeRate?: number;\n feeInUsd?: string;\n totalFee?: string;\n currency?: string;\n}\n\nexport interface TransactionParams {\n chain: EChainType;\n from: string;\n to: string;\n value?: string;\n tokenAddress?: string;\n decimals?: number;\n chainId?: number;\n nonce?: number;\n gasLimit?: string;\n gasPrice?: string;\n maxFeePerGas?: string;\n maxPriorityFeePerGas?: string;\n utxos?: BtcUtxo[];\n isNativeToken?: boolean;\n feeRate?: number;\n data?: string;\n feeHint?: EstimatedFee\n}\n\nexport interface SignedTransaction {\n rawTransaction: string;\n hash?: string;\n chain: ChainType;\n}\n\n/**\n * Transaction broadcast result\n */\nexport interface BroadcastResult {\n /** Transaction hash */\n txHash: string;\n /** Chain type */\n chain: ChainType;\n explorerUrl?: string;\n}\n\n/**\n * Transaction parameters for building transactions\n */\nexport interface TxParams {\n from: string;\n to: string;\n amount: string;\n tokenAddress?: string;\n decimals?: number;\n chainId?: ChainIdValue;\n gasLimit?: string;\n gasPrice?: string;\n nonce?: number;\n utxos?: BtcUtxo[];\n feeHint?: EstimatedFee;\n}\n\n/**\n * BTC UTXO structure\n * Supports different script types: P2PKH (legacy), P2SH (nested), P2WPKH (native segwit), P2TR (taproot)\n */\nexport interface BtcUtxo {\n txid: string;\n vout: number;\n value: number;\n /** Output script in hex */\n script?: string;\n /** Script type for determining signing method */\n scriptType?: \"p2pkh\" | \"p2sh\" | \"p2wpkh\" | \"p2wsh\" | \"p2tr\";\n /** Non-witness UTXO (full previous tx hex) for legacy/nested inputs */\n nonWitnessUtxo?: string;\n}\n\n/**\n * Transaction result\n */\nexport interface TransactionResult {\n /** Transaction hash */\n txHash: string;\n /** Updated device share if rotation occurred */\n updatedDeviceShare: string | null;\n}\n\n/**\n * Signed transaction result (before broadcast)\n */\nexport interface SignedTransactionResult {\n /** Serialized signed transaction */\n signedTx: string;\n /** Updated device share if rotation occurred */\n updatedDeviceShare: string | null;\n}\n\n// ============================================================================\n// HISTORY TYPES\n// ============================================================================\n\n/**\n * Transaction history item\n */\ninterface TokenData {\n symbol: string;\n value: string;\n logoURL: string;\n}\n\ninterface TransactionDetails {\n to: string;\n value: string;\n data: string;\n operation: number;\n safeTxGas: string;\n baseGas: number;\n gasPrice: number;\n gasToken: number;\n refundReceiver: string;\n nonce: number;\n}\n\nexport interface TransactionHistoryItem {\n chainType: EChainType;\n chainId: ChainIdValue;\n threshold: string;\n executed: string;\n status: \"success\" | \"failed\" | \"pending\";\n method: string;\n from: string;\n to: string;\n value: string;\n creator: string;\n confirmations: string[];\n token: TokenData;\n details: TransactionDetails;\n hash: string;\n time: string;\n}\n\nexport interface HistoryResponse {\n total: number;\n page: number;\n limit: number;\n items: TransactionHistoryItem[];\n}\n\n/**\n * Status filter for history queries\n */\nexport enum StatusFilterEnum {\n ALL = \"all\",\n PENDING = \"pending\",\n EXECUTED = \"executed\",\n REJECTED = \"rejected\",\n}\n\nexport interface TxHistoryToken {\n symbol: string;\n logoURL: string;\n value: string;\n\n name?: string;\n priceUSD?: number;\n price24hChange?: number;\n}\n\nexport interface TxHistoryMethod {\n args: (string | number)[];\n method: string;\n}\n\nexport interface Instruction {\n type: \"native\" | \"spl\" | \"trc20\" | string;\n amount: string;\n toPubkey?: string;\n to?: string;\n tokenAddress?: string;\n}\n\nexport interface TxHistoryDetails {\n to: string;\n value: string;\n data: string;\n operation: number;\n safeTxGas: string;\n baseGas: number;\n gasPrice: number;\n gasToken: number;\n refundReceiver: string;\n nonce: number;\n\n instructions?: Instruction | Instruction[];\n token: TxHistoryToken;\n methods: TxHistoryMethod[];\n chainType: string;\n}\n\nexport interface TxHistoryItem {\n id: string;\n status: string;\n method: string;\n chainId: string;\n chainType: string;\n threshold: string;\n from: string;\n to: string;\n value: string;\n token: TxHistoryToken;\n details?: TxHistoryDetails;\n hash: string;\n time: string;\n executed: string;\n creator: string;\n confirmations: string[];\n}\n\n/**\n * Combined transaction history for multisigs\n */\nexport interface TxHistoryCombinedResponse {\n items: TxHistoryItem[];\n limit: number;\n total: number;\n page: number;\n}\n\n// ============================================================================\n// SDK INPUT TYPES - WALLET MODULE\n// ============================================================================\n\n/**\n * Input for createWallet\n */\nexport interface CreateWalletInput {\n chain: ChainType;\n}\n\n/**\n * Input for importWallet\n */\nexport interface ImportWalletInput {\n chain: ChainType;\n privateKey: string;\n}\n\n/**\n * Input for deleteWallet\n */\nexport interface DeleteWalletInput {\n chain: ChainType;\n address: string;\n}\n\n/**\n * Input for getWallet\n */\nexport interface GetWalletInput {\n chain: ChainType;\n address: string;\n}\n\n/**\n * Input for getWallets\n */\nexport interface GetWalletsInput {\n chain?: ChainType;\n page?: number;\n limit?: number;\n}\n\n/**\n * Input for getPortfolio\n */\nexport interface GetPortfolioInput {\n chain: ChainType;\n address: string;\n chainId?: ChainIdValue;\n}\n\n/**\n * Input for sendTransaction (native currency)\n */\nexport interface SendTransactionInput {\n chain: ChainType;\n from: string;\n to: string;\n amount: string;\n deviceShare: string;\n chainId?: ChainIdValue;\n feeHint?: EstimatedFee;\n}\n\n/**\n * Input for sendToken\n */\nexport interface SendTokenInput {\n chain: ChainType;\n from: string;\n to: string;\n amount: string;\n tokenAddress: string;\n decimals: number;\n deviceShare: string;\n chainId?: ChainIdValue;\n feeHint?: EstimatedFee;\n}\n\n/**\n * Input for estimateFee\n */\nexport interface EstimateFeeInput {\n chain: ChainType;\n txType: import('../strategies/types').TransactionEstimatingTypeValue;\n payload: {\n from?: string;\n to?: string;\n amount?: string;\n tokenAddress?: string;\n decimals?: number;\n orderId?: string;\n multisigId?: string;\n owners?: string[];\n threshold?: number;\n order?: Order;\n multisig?: MultisigsItem;\n method?: any;\n };\n chainId?: ChainIdValue;\n}\n\n/**\n * Input for exportWallet\n */\nexport interface ExportWalletInput {\n chain: ChainType;\n address: string;\n deviceShare: string;\n format?: \"hex\" | \"wif\" | \"bs58\" | \"array\";\n}\n\n/**\n * Output for exportWallet\n */\nexport interface ExportWalletOutput {\n privateKey: string;\n updatedDeviceShare: string | null;\n}\n\n/**\n * Input for updateWalletName\n */\nexport interface UpdateWalletNameInput {\n chain: ChainType;\n address: string;\n name: string;\n}\n\n// ============================================================================\n// SDK INPUT TYPES - MULTISIG MODULE\n// ============================================================================\n\n/**\n * Input for createMultisig\n */\nexport interface CreateMultisigInput {\n chain: ChainType;\n owners: string[];\n threshold: number;\n chainIds?: ChainIdValue[];\n}\n\n/**\n * Input for getMultisigs\n */\nexport interface GetMultisigsInput {\n chain: ChainType;\n walletAddress?: string;\n}\n\n/**\n * Input for getMultisigById\n */\nexport interface GetMultisigByIdInput {\n chain: ChainType;\n address: string;\n}\n\n/**\n * Input for activateMultisig\n */\nexport interface ActivateMultisigInput {\n chain: ChainType;\n multisigId: string;\n multisigAddress: string;\n walletAddress: string;\n deviceShare: string;\n feeQuote: EstimatedFee;\n chainId?: ChainIdValue;\n /** Full multisig object for EVM activation */\n multisig: MultisigsItem;\n /** Gas limit override */\n gasLimit?: string;\n /** Gas price override */\n gasPrice?: string;\n}\n\n/**\n * Output for activateMultisig\n */\nexport interface ActivateMultisigOutput {\n txHash: string;\n updatedDeviceShare: string | null;\n}\n\n/**\n * Input for estimateActivationFee\n */\nexport interface EstimateActivationFeeInput {\n chain: ChainType;\n multisigId?: string;\n owners?: string[];\n threshold?: number;\n chainId?: ChainIdValue;\n}\n\n/**\n * Input for updateMultisigName\n */\nexport interface UpdateMultisigNameInput {\n chain: ChainType;\n multisigId: string;\n name: string;\n walletAddress: string;\n}\n\n/**\n * Input for deleteMultisig\n */\nexport interface DeleteMultisigInput {\n chain: ChainType;\n multisigId: string;\n}\n\n// ============================================================================\n// SDK INPUT TYPES - ORDER MODULE\n// ============================================================================\n\n/**\n * Input for createOrder\n */\nexport interface CreateOrderInput {\n chain: ChainType;\n multisigId: string;\n multisigAddress?: string;\n walletAddress: string;\n method: OrderMethodType;\n instructions: OrderInstruction[];\n\n // Optional fields for settings orders\n multisig?: MultisigsItem;\n threshold?: number;\n newOwners?: string[];\n ownersToRemove?: string[];\n owners?: string[];\n multisigThreshold?: number;\n newThreshold?: number;\n\n // Optional fields for send orders\n selectedToken?: TokenInfo;\n token?: TokenInfo;\n deviceShare: string;\n chainId?: ChainIdValue;\n}\n\n/**\n * Output for createOrder\n */\nexport interface CreateOrderOutput {\n order: Order;\n proposalHash?: string;\n updatedDeviceShare: string | null;\n}\n\n/**\n * Input for creating a send order (token transfer) - Simplified API\n * SDK handles method detection and instruction building automatically\n */\nexport interface CreateSendOrderInput {\n multisigId: string;\n walletAddress: string;\n to: string;\n amount: string;\n token?: TokenInfo; // If omitted, assumes native token\n deviceShare: string;\n chainId: string;\n}\n\n/**\n * Input for creating a settings order (multisig configuration change) - Simplified API\n * SDK calculates changes and determines method automatically\n */\nexport interface CreateSettingsOrderInput {\n multisigId: string;\n multisig: MultisigsItem; // Current multisig state\n walletAddress: string;\n newOwners: string[]; // Desired final owner list\n newThreshold?: number; // Desired final threshold (optional, keeps current if omitted)\n deviceShare: string;\n}\n\n/**\n * Input for signOrder\n */\nexport interface SignOrderInput {\n chain: ChainType;\n orderId: string;\n walletAddress: string;\n deviceShare?: string;\n chainId?: ChainIdValue;\n multisigId?: string;\n version?: string;\n transaction?: string;\n}\n\n/**\n * Output for signOrder\n */\nexport interface SignOrderOutput {\n signature: string;\n order: Order;\n updatedDeviceShare: string | null;\n}\n\n/**\n * Input for rejectOrder\n */\nexport interface RejectOrderInput {\n chain: ChainType;\n order: Order;\n multisig: MultisigsItem;\n walletAddress: string;\n deviceShare?: string;\n chainId?: ChainIdValue;\n}\n\n/**\n * Output for rejectOrder\n */\nexport interface RejectOrderOutput {\n order: Order;\n updatedDeviceShare: string | null;\n}\n\n/**\n * Input for executeOrder\n */\nexport interface ExecuteOrderInput {\n chain: ChainType;\n order: Order;\n multisig: MultisigsItem;\n walletAddress: string;\n deviceShare: string;\n feeQuote?: EstimatedFee;\n chainId?: ChainIdValue;\n}\n\n/**\n * Output for executeOrder\n */\nexport interface ExecuteOrderOutput {\n txHash: string;\n order: Order;\n updatedDeviceShare: string | null;\n}\n\n/**\n * Input for estimateOrderExecutionFee\n */\nexport interface EstimateOrderExecutionFeeInput {\n chain: ChainType;\n orderId: string;\n walletAddress: string;\n chainId?: ChainIdValue;\n}\n\n/**\n * Input for getOrders\n */\nexport interface GetOrdersInput {\n chain: ChainType;\n multisigId: string;\n page?: number;\n limit?: number;\n}\n\n/**\n * Input for getOrderById\n */\nexport interface GetOrderByIdInput {\n chain: ChainType;\n orderId: string;\n}\n\n/**\n * Input for deleteOrder\n */\nexport interface DeleteOrderInput {\n chain: ChainType;\n orderId: string;\n}\n\n// ============================================================================\n// SDK INPUT TYPES - PORTFOLIO MODULE\n// ============================================================================\n\n/**\n * Input for getSupportedTokens\n */\nexport interface GetSupportedTokensInput {\n chain: ChainType;\n chainId: ChainIdValue;\n page?: number;\n limit?: number;\n search?: string;\n}\n\n// ============================================================================\n// SDK INPUT TYPES - HISTORY MODULE\n// ============================================================================\n\n/**\n * Input for getWalletHistory\n */\nexport interface GetWalletHistoryInput {\n chain: ChainType;\n walletAddress: string;\n page?: number;\n limit?: number;\n}\n\n/**\n * Input for getMultisigTxHistory\n */\nexport interface GetMultisigTxHistoryInput {\n multisigId: string;\n page?: number;\n limit?: number;\n}\n\n// ============================================================================\n// ERROR TYPES\n// ============================================================================\n\n/**\n * SDK error codes\n */\nexport enum SDKErrorCode {\n UNKNOWN = \"UNKNOWN\",\n NETWORK_ERROR = \"NETWORK_ERROR\",\n API_ERROR = \"API_ERROR\",\n INVALID_INPUT = \"INVALID_INPUT\",\n CHAIN_NOT_SUPPORTED = \"CHAIN_NOT_SUPPORTED\",\n INSUFFICIENT_BALANCE = \"INSUFFICIENT_BALANCE\",\n KEY_MISMATCH = \"KEY_MISMATCH\",\n KEY_RECONSTRUCTION_FAILED = \"KEY_RECONSTRUCTION_FAILED\",\n SIGNATURE_FAILED = \"SIGNATURE_FAILED\",\n TRANSACTION_FAILED = \"TRANSACTION_FAILED\",\n BROADCAST_FAILED = \"BROADCAST_FAILED\",\n ORDER_NOT_FOUND = \"ORDER_NOT_FOUND\",\n MULTISIG_NOT_FOUND = \"MULTISIG_NOT_FOUND\",\n WALLET_NOT_FOUND = \"WALLET_NOT_FOUND\",\n THRESHOLD_NOT_MET = \"THRESHOLD_NOT_MET\",\n UNAUTHORIZED = \"UNAUTHORIZED\",\n RATE_LIMITED = \"RATE_LIMITED\",\n TIMEOUT = \"TIMEOUT\",\n}\n\n/**\n * SDK error interface\n */\nexport interface SDKError {\n code: SDKErrorCode;\n message: string;\n chain?: ChainType;\n operation?: string;\n details?: Record<string, unknown>;\n cause?: Error;\n}\n\n// ============================================================================\n// EXECUTION TYPES (Internal but typed here for consistency)\n// ============================================================================\n\n/**\n * Execution action types (replaces iframe message types)\n */\nexport enum ExecutionAction {\n SIGN_NATIVE_TX = \"SIGN_NATIVE_TX\",\n SIGN_TOKEN_TX = \"SIGN_TOKEN_TX\",\n SIGN_ORDER = \"SIGN_ORDER\",\n CREATE_ORDER = \"CREATE_ORDER\",\n EXECUTE_ORDER = \"EXECUTE_ORDER\",\n REJECT_ORDER = \"REJECT_ORDER\",\n ACTIVATE_MULTISIG = \"ACTIVATE_MULTISIG\",\n EXPORT_KEY = \"EXPORT_KEY\",\n}\n\n/**\n * Key reconstruction result\n */\nexport interface KeyReconstructionResult {\n privateKey: Uint8Array;\n newDeviceShare: string | null;\n}\n\n/**\n * Share update result\n */\nexport interface ShareUpdateResult {\n deviceShare: string;\n serverShare: string;\n recoveryShare: string;\n}\n\n// ============================================================================\n// SDK CONFIGURATION TYPES\n// ============================================================================\n\n/**\n * Network mode\n */\nexport type NetworkMode = \"mainnet\" | \"testnet\";\n\n/**\n * RPC overrides per chain\n */\nexport type RpcOverrides = Partial<Record<ChainIdValue, string>>;\n\n/**\n * SDK configuration options\n */\nexport interface SDKConfig {\n /** API key for authentication (use this OR accessToken) */\n apiKey?: string;\n /** Access token for authentication (use this OR apiKey) */\n accessToken?: string;\n network?: NetworkMode;\n apiBaseUrl?: string;\n rpcOverrides?: RpcOverrides;\n timeout?: number;\n}\n\n// ============================================================================\n// EVENT TYPES\n// ============================================================================\n\n/**\n * Transaction sent event payload\n */\nexport interface TransactionSentEvent {\n chain: ChainType;\n txHash: string;\n from: string;\n to: string;\n amount: string;\n}\n\n/**\n * Transaction failed event payload\n */\nexport interface TransactionFailedEvent {\n chain: ChainType;\n error: SDKError;\n from: string;\n to: string;\n}\n\n/**\n * Order created event payload\n */\nexport interface OrderCreatedEvent {\n chain: ChainType;\n orderId: string;\n multisigId: string;\n}\n\n/**\n * Order signed event payload\n */\nexport interface OrderSignedEvent {\n chain: ChainType;\n orderId: string;\n signature: string;\n}\n\n/**\n * Order executed event payload\n */\nexport interface OrderExecutedEvent {\n chain: ChainType;\n orderId: string;\n txHash: string;\n}\n\n/**\n * Order rejected event payload\n */\nexport interface OrderRejectedEvent {\n chain: ChainType;\n orderId: string;\n}\n\n/**\n * Multisig activated event payload\n */\nexport interface MultisigActivatedEvent {\n chain: ChainType;\n multisigId: string;\n txHash: string;\n}\n\n/**\n * Key mismatch retry event payload\n */\nexport interface KeyMismatchRetryEvent {\n chain: ChainType;\n address: string;\n attempt: number;\n}\n\n/**\n * Error event payload\n */\nexport interface ErrorEvent {\n code: SDKErrorCode;\n message: string;\n chain?: ChainType;\n operation?: string;\n}\n\n/**\n * SDK event map for type-safe event handling\n */\nexport interface SDKEventMap {\n transactionSent: TransactionSentEvent;\n transactionFailed: TransactionFailedEvent;\n orderCreated: OrderCreatedEvent;\n orderSigned: OrderSignedEvent;\n orderExecuted: OrderExecutedEvent;\n orderRejected: OrderRejectedEvent;\n multisigActivated: MultisigActivatedEvent;\n keyMismatchRetry: KeyMismatchRetryEvent;\n error: ErrorEvent;\n}\n\n/**\n * SDK event names\n */\nexport type SDKEventName = keyof SDKEventMap;\n\n// ============================================================================\n// API RESPONSE TYPES\n// ============================================================================\n\n/**\n * Generic API response wrapper\n */\nexport interface ApiResponse<T> {\n data: T;\n status: number;\n message?: string;\n}\n\n/**\n * API error response\n */\nexport interface ApiErrorResponse {\n status: number;\n message: string;\n errors?: string[];\n}\n\n/**\n * Wallet rename response\n */\nexport interface WalletRenameResponse {\n wallet: TWallet;\n}\n\n/**\n * Delete operation response\n */\nexport interface DeleteResponse {\n success: boolean;\n}\n\n// ============================================================================\n// SDK API INTERFACES - Unified method signatures for public API\n// ============================================================================\n\n/**\n * Wallet API interface - Unified methods for wallet operations\n */\nexport interface IWalletApi {\n createWallet(\n params: CreateWalletInput\n ): Promise<{ wallet: TWallet; deviceShare: string }>;\n importWallet(\n params: ImportWalletInput\n ): Promise<{ wallet: TWallet; deviceShare: string }>;\n getWallet(params: GetWalletInput): Promise<SingleWalletDetailsResponse>;\n getWallets(params?: GetWalletsInput): Promise<PaginatedWalletsResponse>;\n getPaginatedWallets(\n params?: GetWalletsInput\n ): Promise<PaginatedWalletsResponse>;\n deleteWallet(params: DeleteWalletInput): Promise<DeleteResponse>;\n updateWalletName(\n params: UpdateWalletNameInput\n ): Promise<WalletRenameResponse>;\n fetchServerShare(params: {\n chain: ChainType;\n address: string;\n }): Promise<string>;\n fetchRecoveryShare(params: {\n chain: ChainType;\n address: string;\n }): Promise<string>;\n fetchShares(params: {\n chain: ChainType;\n address: string;\n }): Promise<{ server: string; recovery: string }>;\n fetchPublicKey(): Promise<string>;\n updateShares(params: {\n address: string;\n serverShare: string;\n encryptedRecoveryShare: string;\n }): Promise<void>;\n getPortfolio(params: GetPortfolioInput): Promise<WalletPortfolioResponse>;\n getSupportedTokens(\n params: GetSupportedTokensInput\n ): Promise<SupportedTokensResponse>;\n getTotalAssetValue(): Promise<TotalAssetValueResponse>;\n getHistory(params: GetWalletHistoryInput): Promise<HistoryResponse>;\n signTransaction(\n params: SendTransactionInput | SendTokenInput\n ): Promise<TransactionResult>;\n}\n\n/**\n * Multisig API interface - Unified methods for multisig operations\n */\nexport interface IMultisigApi {\n createMultisig(\n params: CreateMultisigInput\n ): Promise<MultisigsItem | MultisigsItem[]>;\n getMultisig(params: GetMultisigByIdInput): Promise<MultisigBaseDTO>;\n getMultisigs(params: GetMultisigsInput): Promise<MultisigBaseDTO[]>;\n getPaginatedMultisigs(params: GetMultisigsInput): Promise<MultisigBaseDTO[]>;\n updateMultisig(params: UpdateMultisigNameInput): Promise<MultisigBaseDTO>;\n deleteMultisig(params: DeleteMultisigInput): Promise<DeleteResponse>;\n activateMultisig(\n params: ActivateMultisigInput\n ): Promise<ActivateMultisigOutput>;\n addMember(params: {\n chain: ChainType;\n multisigId: string;\n newOwner: string;\n walletAddress: string;\n deviceShare: string;\n }): Promise<{ order: Order }>;\n removeMember(params: {\n chain: ChainType;\n multisigId: string;\n ownerToRemove: string;\n walletAddress: string;\n deviceShare: string;\n }): Promise<{ order: Order }>;\n updateThreshold(params: {\n chain: ChainType;\n multisigId: string;\n newThreshold: number;\n walletAddress: string;\n deviceShare: string;\n }): Promise<{ order: Order }>;\n getMultisigHistory(\n params: GetMultisigTxHistoryInput\n ): Promise<TxHistoryCombinedResponse>;\n fetchMultisigServerShare(params: {\n multisigId: string;\n walletAddress: string;\n }): Promise<string>;\n}\n\n/**\n * Order API interface - Unified methods for order operations\n */\nexport interface IOrderApi {\n createOrder(params: CreateOrderInput): Promise<CreateOrderOutput>;\n getOrder(params: GetOrderByIdInput): Promise<{ order: Order }>;\n getOrders(params: GetOrdersInput): Promise<PaginatedOrdersResponse>;\n getPaginatedOrders(params: GetOrdersInput): Promise<PaginatedOrdersResponse>;\n signOrder(params: SignOrderInput): Promise<SignOrderOutput>;\n executeOrder(params: ExecuteOrderInput): Promise<ExecuteOrderOutput>;\n rejectOrder(params: RejectOrderInput): Promise<RejectOrderOutput>;\n cancelOrder(params: DeleteOrderInput): Promise<DeleteResponse>;\n}\n"],"mappings":";AAKO,IAAK,aAAL,kBAAKA,gBAAL;AACL,EAAAA,YAAA,SAAM;AACN,EAAAA,YAAA,SAAM;AACN,EAAAA,YAAA,UAAO;AACP,EAAAA,YAAA,SAAM;AACN,EAAAA,YAAA,YAAS;AALC,SAAAA;AAAA,GAAA;AAQZ,IAAI,qBAAkC;AAC/B,SAAS,sBAAsB,SAA4B;AAChE,uBAAqB;AACvB;AAYO,SAAS,kBAAsD;AACpE,SAAO,uBAAuB,YAAY,kBAAiB;AAC7D;AAMO,SAAS,mBACd,OACQ;AAER,MAAI,UAAU,UAAU;AACtB,WAAO;AAAA,EACT;AAGA,SAAO,OAAO,KAAK,EAAE,YAAY;AACnC;AAqEO,IAAK,iBAAL,kBAAKC,oBAAL;AACL,EAAAA,gBAAA,aAAU;AACV,EAAAA,gBAAA,YAAS;AACT,EAAAA,gBAAA,cAAW;AAHD,SAAAA;AAAA,GAAA;AA2DL,IAAK,cAAL,kBAAKC,iBAAL;AACL,EAAAA,aAAA,aAAU;AACV,EAAAA,aAAA,cAAW;AACX,EAAAA,aAAA,cAAW;AACX,EAAAA,aAAA,cAAW;AACX,EAAAA,aAAA,eAAY;AACZ,EAAAA,aAAA,YAAS;AANC,SAAAA;AAAA,GAAA;AA8eL,IAAK,mBAAL,kBAAKC,sBAAL;AACL,EAAAA,kBAAA,SAAM;AACN,EAAAA,kBAAA,aAAU;AACV,EAAAA,kBAAA,cAAW;AACX,EAAAA,kBAAA,cAAW;AAJD,SAAAA;AAAA,GAAA;","names":["EChainType","MultisigStatus","OrderStatus","StatusFilterEnum"]}
@@ -1,9 +1,12 @@
1
1
  import {
2
2
  encryptRsaOaep
3
- } from "./chunk-KXIOGAV2.js";
3
+ } from "./chunk-SW35WN7S.js";
4
+ import {
5
+ ESolanaInstructionType
6
+ } from "./chunk-SLY2TEP7.js";
4
7
  import {
5
8
  EChainType
6
- } from "./chunk-VYJA3QAZ.js";
9
+ } from "./chunk-3WZPZWTT.js";
7
10
 
8
11
  // src/strategies/iframeServices/solana/createSolanaMultisigOrder.ts
9
12
  import {
@@ -19,44 +22,13 @@ import {
19
22
  createTransferCheckedInstruction,
20
23
  createAssociatedTokenAccountInstruction
21
24
  } from "@solana/spl-token";
22
-
23
- // src/strategies/types.ts
24
- var EChainType2 = {
25
- EVM: "EVM",
26
- SOL: "SOL",
27
- TRON: "TRON",
28
- BTC: "BTC",
29
- BTC_T3: "BTC_T3"
30
- };
31
- var ESolanaInstructionType = {
32
- native: "native",
33
- spl: "spl",
34
- addOwner: "addOwner",
35
- removeOwner: "removeOwner",
36
- changeThreshold: "changeThreshold"
37
- };
38
- var TransactionExecutionType = {
39
- ExecOrder: "execOrder",
40
- Send: "send",
41
- ActivateMultisig: "activateMultisig"
42
- };
43
- var TransactionEstimatingType = {
44
- ExecOrder: "execOrder",
45
- Send: "send",
46
- ActivateMultisig: "activateMultisig",
47
- SignOrder: "SignOrder",
48
- CreateOrder: "CreateOrder",
49
- ChangeMultisig: "ChangeMultisig"
50
- };
51
-
52
- // src/strategies/iframeServices/solana/createSolanaMultisigOrder.ts
53
25
  import * as Squads2 from "@sqds/multisig";
54
26
 
55
27
  // src/strategies/iframeServices/solana/utils/reconstructAndVerifySolKey.ts
56
28
  import { Keypair as Keypair2 } from "@solana/web3.js";
57
29
 
58
30
  // src/strategies/iframeServices/types.ts
59
- var EChainType3 = EChainType;
31
+ var EChainType2 = EChainType;
60
32
  var IS_MAINNET = process.env.IS_MAINNET === "true" || false;
61
33
 
62
34
  // src/strategies/iframeServices/utils/crypto.ts
@@ -244,7 +216,7 @@ var reconstructAndVerifySolKey = async (deviceShare, address, accessToken, force
244
216
  address,
245
217
  accessToken,
246
218
  forceUpdate,
247
- EChainType3.SOL
219
+ EChainType2.SOL
248
220
  );
249
221
  const reconstructed = await combineShares([mainShare, additionalShare]);
250
222
  let signer;
@@ -566,12 +538,8 @@ var createSolanaMultisigOrder = async (props) => {
566
538
  };
567
539
 
568
540
  export {
569
- EChainType2 as EChainType,
570
- ESolanaInstructionType,
571
- TransactionExecutionType,
572
- TransactionEstimatingType,
573
541
  reconstructAndVerifySolKey,
574
542
  solToLamports,
575
543
  createSolanaMultisigOrder
576
544
  };
577
- //# sourceMappingURL=chunk-KIJAQV3E.js.map
545
+ //# sourceMappingURL=chunk-5D47RCSE.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/strategies/iframeServices/solana/createSolanaMultisigOrder.ts","../src/strategies/iframeServices/solana/utils/reconstructAndVerifySolKey.ts","../src/strategies/iframeServices/types.ts","../src/strategies/iframeServices/utils/crypto.ts","../src/strategies/iframeServices/api/wallet.ts","../src/strategies/iframeServices/utils/getReconstructionShares.ts","../src/strategies/iframeServices/solana/utils/prepareActions.ts","../src/strategies/iframeServices/solana/utils/solToLamports.ts","../src/strategies/iframeServices/solana/utils/detectTokenProgram.ts"],"sourcesContent":["import {\n Connection,\n Keypair,\n PublicKey,\n SystemProgram,\n Transaction,\n TransactionMessage,\n} from \"@solana/web3.js\";\nimport {\n ASSOCIATED_TOKEN_PROGRAM_ID,\n getAssociatedTokenAddress,\n createTransferCheckedInstruction,\n createAssociatedTokenAccountInstruction,\n} from \"@solana/spl-token\";\nimport {\n ESolanaInstructionType,\n type IframeTxResponse,\n type SolOrderData,\n} from \"../../types\";\nimport * as Squads from \"@sqds/multisig\";\nimport { reconstructAndVerifySolKey } from \"./utils/reconstructAndVerifySolKey\";\nimport { prepareActions } from \"./utils/prepareActions\";\nimport { solToLamports } from \"./utils/solToLamports\";\nimport { detectTokenProgram } from \"./utils/detectTokenProgram\";\n\nconst parseTokenAmount = (amount: string, decimals: number): bigint => {\n const [whole = \"0\", fraction = \"\"] = amount.split(\".\");\n const fracPadded = (fraction + \"0\".repeat(decimals)).slice(0, decimals);\n const combined = whole + (fracPadded || \"0\".repeat(decimals));\n const normalized = combined.replace(/^0+(?=\\d)/, \"\");\n return normalized === \"\" ? 0n : BigInt(normalized);\n};\n\nexport const createSolanaMultisigOrder = async (\n props: SolOrderData<any[]>\n): Promise<IframeTxResponse> => {\n const {\n deviceShare,\n address,\n accessToken,\n multisigPda,\n method,\n instructions,\n orderId,\n rpcUrl,\n vaultAddress,\n selectedToken,\n } = props;\n\n let signer: Keypair;\n let updatedDeviceShare: string | null = null;\n\n try {\n const result = await reconstructAndVerifySolKey(\n deviceShare,\n address,\n accessToken,\n false\n );\n signer = result.signer;\n updatedDeviceShare = result.newDeviceShare;\n } catch (error: any) {\n if (error.message !== \"KEY_MISMATCH\") {\n throw error;\n }\n\n try {\n const result = await reconstructAndVerifySolKey(\n deviceShare,\n address,\n accessToken,\n true\n );\n signer = result.signer;\n updatedDeviceShare = result.newDeviceShare;\n } catch (retryError: any) {\n throw new Error(\n \"Wallet key verification failed, even after forcing a share update. The account may be corrupted.\"\n );\n }\n }\n\n const connection = new Connection(rpcUrl, \"confirmed\");\n\n const multisigPkey = new PublicKey(multisigPda);\n const multisigInfo = await Squads.accounts.Multisig.fromAccountAddress(\n connection,\n multisigPkey\n );\n const transactionIndex =\n BigInt(multisigInfo.transactionIndex.toString()) + 1n;\n\n const tx = new Transaction();\n const recentBlockhash = (await connection.getLatestBlockhash()).blockhash;\n\n if (method === ESolanaInstructionType.native) {\n if (!instructions[0].toPubkey || !instructions[0].amount) {\n throw new Error(\"Error: toPubkey or amount doesn't exist\");\n }\n const lamports = solToLamports(String(instructions[0].amount));\n\n const instructionIx = SystemProgram.transfer({\n fromPubkey: new PublicKey(vaultAddress),\n toPubkey: new PublicKey(instructions[0].toPubkey),\n lamports,\n });\n\n const transferMessage = new TransactionMessage({\n payerKey: new PublicKey(vaultAddress),\n recentBlockhash,\n instructions: [instructionIx],\n });\n\n const ix = Squads.instructions.vaultTransactionCreate({\n multisigPda: multisigPkey,\n transactionIndex: transactionIndex,\n creator: signer.publicKey,\n vaultIndex: 0,\n ephemeralSigners: 0,\n transactionMessage: transferMessage,\n memo: orderId,\n });\n\n tx.add(ix);\n } else if (method === ESolanaInstructionType.spl) {\n try {\n const inst = instructions[0];\n if (!inst?.toPubkey || !inst?.amount)\n throw new Error(\"SPL: missing toPubkey or amount\");\n if (!selectedToken?.address || typeof selectedToken.decimals !== \"number\")\n throw new Error(\"SPL: selectedToken info missing (mint/decimals)\");\n\n const [vaultPda] = Squads.getVaultPda({\n multisigPda: multisigPkey,\n index: 0,\n });\n\n const mint = new PublicKey(selectedToken.address);\n const recipient = new PublicKey(inst.toPubkey);\n\n const tokenProgramId = await detectTokenProgram(connection, mint);\n console.log(`🔍 Using token program: ${tokenProgramId.toBase58()}`);\n\n const tokenAccounts = await connection.getTokenAccountsByOwner(vaultPda, {\n mint,\n programId: tokenProgramId,\n });\n if (tokenAccounts.value.length === 0) {\n throw new Error(\n `SPL: vault has no token account for mint ${selectedToken.address}`\n );\n }\n const fromAta = tokenAccounts.value[0].pubkey;\n\n const toAta = await getAssociatedTokenAddress(\n mint,\n recipient,\n true,\n tokenProgramId,\n ASSOCIATED_TOKEN_PROGRAM_ID\n );\n\n const instructionsList = [];\n const toAtaInfo = await connection.getAccountInfo(toAta);\n if (!toAtaInfo) {\n instructionsList.push(\n createAssociatedTokenAccountInstruction(\n signer.publicKey,\n toAta,\n recipient,\n mint,\n tokenProgramId,\n ASSOCIATED_TOKEN_PROGRAM_ID\n )\n );\n }\n\n const amount = parseTokenAmount(\n String(inst.amount),\n selectedToken.decimals\n );\n if (amount <= 0n) throw new Error(\"SPL: amount must be > 0\");\n\n instructionsList.push(\n createTransferCheckedInstruction(\n fromAta,\n mint,\n toAta,\n vaultPda,\n amount,\n selectedToken.decimals,\n [],\n tokenProgramId\n )\n );\n\n const transferMessage = new TransactionMessage({\n payerKey: vaultPda,\n recentBlockhash,\n instructions: instructionsList,\n });\n\n const ix = Squads.instructions.vaultTransactionCreate({\n multisigPda: multisigPkey,\n transactionIndex,\n creator: signer.publicKey,\n vaultIndex: 0,\n ephemeralSigners: 0,\n transactionMessage: transferMessage,\n memo: orderId,\n });\n\n tx.add(ix);\n } catch (err) {\n console.error(\"createSolanaMultisigOrder (SPL) failed:\", err);\n throw err;\n }\n } else {\n const actions = props.instructions\n .map((inst) => prepareActions({ ...props, instructions: inst }))\n .flat();\n\n const ix = Squads.instructions.configTransactionCreate({\n multisigPda: multisigPkey,\n creator: signer.publicKey,\n transactionIndex: transactionIndex,\n actions: actions as any,\n memo: orderId,\n rentPayer: signer.publicKey,\n });\n tx.add(ix);\n }\n\n const proposalIx = Squads.instructions.proposalCreate({\n creator: signer.publicKey,\n multisigPda: multisigPkey,\n transactionIndex,\n });\n tx.add(proposalIx);\n tx.feePayer = signer.publicKey;\n tx.recentBlockhash = recentBlockhash;\n tx.partialSign(signer);\n\n const vaultTransaction = tx.serialize().toString(\"base64\");\n console.log(\"🚀 ~ vaultTransaction:\", vaultTransaction);\n\n return {\n tx: vaultTransaction,\n updatedDeviceShare,\n };\n};\n","import { Keypair } from \"@solana/web3.js\";\nimport { EChainType } from \"../../types\";\nimport { combineShares } from \"../../utils/crypto\";\nimport { getReconstructionShares } from \"../../utils/getReconstructionShares\";\n\nexport const reconstructAndVerifySolKey = async (\n deviceShare: string,\n address: string,\n accessToken: string,\n forceUpdate: boolean\n): Promise<{ signer: Keypair; newDeviceShare: string | null }> => {\n const { mainShare, additionalShare, newDeviceShare } =\n await getReconstructionShares(\n deviceShare,\n address,\n accessToken,\n forceUpdate,\n EChainType.SOL\n );\n const reconstructed = await combineShares([mainShare, additionalShare]);\n\n let signer: Keypair;\n\n try {\n signer = Keypair.fromSecretKey(reconstructed);\n } catch (err: any) {\n console.error(\"Keypair reconstruction failed:\", err.message);\n\n throw new Error(\"KEY_MISMATCH\");\n }\n\n if (signer.publicKey.toBase58() !== address) {\n throw new Error(\"KEY_MISMATCH\");\n }\n\n return { signer, newDeviceShare };\n};\n","import { EChainType as EChainTypeEnum, ESolanaInstructionType as ESolanaInstructionTypeEnum } from '../../core/types';\nimport { TRON_FULL_HOST as TRON_FULL_HOST_CONFIG } from '../../core/config';\nexport type { ChainType as EChainTypeValue, ChainIdValue, NetworkMode } from '../../core/types';\n\nexport const EChainType = EChainTypeEnum;\nexport type EChainType = EChainTypeEnum;\n\nexport const ESolanaInstructionType = ESolanaInstructionTypeEnum;\nexport type ESolanaInstructionType = ESolanaInstructionTypeEnum;\n\nexport const TRON_FULL_HOST = TRON_FULL_HOST_CONFIG;\nexport const IS_MAINNET = process.env.IS_MAINNET === \"true\" || false;\n\nexport const BTC_API_TESTNET_MEMPOOL = \"https://mempool.space/testnet/api\";\n\nexport interface IframeTxResponse {\n tx: string;\n updatedDeviceShare: string | null;\n}\n\nexport interface TokenMultisignBalance {\n name: string;\n symbol: string;\n balanceWei: string;\n balance: string;\n decimals: number;\n address: string;\n logoURL: string;\n nativeTokenSymbol: string;\n nativeTokenName: string;\n amountNum?: number;\n priceUsd?: number;\n priceChange24h?: number;\n valueUsd?: number;\n}\n\nexport interface SolOrderData<T> {\n deviceShare: string;\n address: string;\n accessToken: string;\n multisigPda: string;\n method: string;\n instructions: T;\n orderId: string;\n rpcUrl: string;\n threshold?: number;\n vaultAddress: string;\n selectedToken: TokenMultisignBalance;\n}\n\nexport interface BtcOrderData {\n orderId: string;\n multisigId: string;\n data: string;\n walletInitiator: string;\n to: string;\n value: string;\n feeSats: string;\n}\n\nexport interface TronOrderData {\n transaction: any;\n orderId: string;\n multisigId: string;\n isUpdateMultisigParams?: boolean;\n}\n\nexport interface MultisigParams {\n multisigPda: string;\n transactionIndex: string;\n orderId: string;\n rpcUrl: string;\n index?: string;\n}\n","import { ethers } from \"ethers\";\nimport { combine } from \"shamir-secret-sharing\";\nimport { Keypair } from \"@solana/web3.js\";\nimport * as ecc from \"tiny-secp256k1\";\nimport { Buffer } from 'buffer';\nimport { ECPairFactory } from \"ecpair\";\nimport * as bitcoin from \"bitcoinjs-lib\";\n\nconst ECPair = ECPairFactory(ecc);\n\nconst IS_MAINNET = process.env.IS_MAINNET === \"true\" || false;\n\nexport const combineShares = async (shares: string[]): Promise<Uint8Array> => {\n const shareBuffers = shares.map((share) => ethers.getBytes(share));\n const reconstructed = await combine(shareBuffers);\n return reconstructed;\n};\n\nexport const combineSolanaSharesToPrivateKey = (\n raw: Uint8Array\n): Uint8Array => {\n const key = Keypair.fromSecretKey(raw);\n return key.secretKey;\n};\n\nexport const combineEvmSharesToPrivateKey = async (\n raw: Uint8Array\n): Promise<string> => {\n const reconstructedPK = \"0x\" + Buffer.from(raw).toString(\"hex\");\n return reconstructedPK;\n};\n\nexport const combineBtcSharesToPrivateKey = async (\n raw: Uint8Array\n): Promise<string> => {\n const keyPair = ECPair.fromPrivateKey(Buffer.from(raw), {\n network: IS_MAINNET ? bitcoin.networks.bitcoin : bitcoin.networks.testnet,\n });\n return keyPair.toWIF();\n};\n\nexport const combineTronSharesToPrivateKey = async (\n raw: Uint8Array\n): Promise<string> => {\n const privateKey = Buffer.from(raw).toString(\"hex\");\n return privateKey;\n};\n","import { ethers } from 'ethers';\nimport { combineShares as shamirCombine } from '../../../crypto/shamir';\nimport { hexToBytes, bytesToHex, encryptRsaOaep } from '../../../crypto/util';\nimport type { EChainTypeValue } from '../types';\n\n\nexport const fetchServerShare = async (\n apiKey: string,\n walletAddress: string,\n chainType: EChainTypeValue,\n apiUrl: string\n): Promise<string> => {\n const res = await fetch(\n `${apiUrl}/sdk/wallets/share/c/${chainType}/${walletAddress}`,\n {\n headers: {\n \"X-API-KEY\": apiKey,\n },\n credentials: \"include\",\n }\n );\n\n if (!res.ok) {\n throw new Error(\"Failed to fetch server share\");\n }\n\n const data = await res.json();\n return data.share;\n};\n\nexport const fetchRecoveryShare = async (\n apiKey: string,\n walletAddress: string,\n chainType: EChainTypeValue,\n apiUrl: string\n): Promise<string> => {\n const res = await fetch(\n `${apiUrl}/sdk/wallets/share/s/${chainType}/${walletAddress}`,\n {\n headers: {\n \"X-API-KEY\": apiKey,\n },\n credentials: \"include\",\n }\n );\n\n if (!res.ok) {\n throw new Error(\"Failed to fetch recovery share\");\n }\n\n const data = await res.json();\n return data.share;\n};\n\nexport const fetchShares = async (\n apiKey: string,\n walletAddress: string,\n chainType: EChainTypeValue,\n apiUrl: string\n): Promise<{\n recovery: string;\n server: string;\n}> => {\n const [recovery, server] = await Promise.all([\n fetchRecoveryShare(apiKey, walletAddress, chainType, apiUrl),\n fetchServerShare(apiKey, walletAddress, chainType, apiUrl),\n ]);\n return {\n recovery,\n server,\n };\n};\n\nexport const fetchMultisigServerShare = async (\n multisigId: string,\n walletAddress: string,\n apiKey: string,\n apiUrl: string\n): Promise<string> => {\n const res = await fetch(`${apiUrl}/sdk/multisig/share/tron`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"X-API-KEY\": apiKey,\n },\n body: JSON.stringify({\n multisigId,\n walletAddress,\n }),\n });\n\n if (!res.ok) {\n throw new Error(\"Failed to fetch multisig server share\");\n }\n\n const data = await res.json();\n if (!data?.share) {\n throw new Error(\"Failed to fetch multisig server share\");\n }\n\n return data.share;\n};\n\nexport interface SplitPrivateKey {\n deviceShare: string;\n serverShare: string;\n recoveryShare: string;\n}\n\nexport const SHAMIR_THRESHOLD_PERSONAL = 2;\nexport const SHAMIR_SHARES_NUM = 3;\n\nexport const combineSharesFromHex = async (shares: string[]): Promise<Uint8Array> => {\n const { combine } = await import('shamir-secret-sharing');\n const shareBuffers = shares.map((share) => ethers.getBytes(share));\n const reconstructed = await combine(shareBuffers);\n return reconstructed;\n};\n\nexport const splitPrivateKey = async (\n privateKeyBytes: Uint8Array\n): Promise<SplitPrivateKey> => {\n const { split } = await import('shamir-secret-sharing');\n const shares = await split(\n privateKeyBytes,\n SHAMIR_SHARES_NUM,\n SHAMIR_THRESHOLD_PERSONAL\n );\n const { ethers } = await import('ethers');\n\n const deviceShare = ethers.hexlify(shares[0]);\n const serverShare = ethers.hexlify(shares[1]);\n const recoveryShare = ethers.hexlify(shares[2]);\n return {\n deviceShare,\n serverShare,\n recoveryShare,\n };\n};\n\nexport const createShares = async (\n privateKeyBytes: Uint8Array\n): Promise<SplitPrivateKey> => {\n if (!privateKeyBytes) {\n throw new Error(\"Cannot create shares\");\n }\n const shares = await splitPrivateKey(privateKeyBytes);\n return shares;\n};\n\nexport const updateShares = async (\n walletAddress: string,\n serverShare: string,\n recoveryShare: string,\n apiKey: string,\n apiUrl: string\n): Promise<{\n device: string;\n server: string;\n recovery: string;\n}> => {\n try {\n const reconstructed = await combineSharesFromHex([recoveryShare, serverShare]);\n const shares = await createShares(reconstructed);\n const pubkeyResponse = await fetch(`${apiUrl}/sdk/wallets/pubkey`, {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"X-API-KEY\": apiKey,\n },\n });\n\n if (!pubkeyResponse.ok) {\n await pubkeyResponse.text().catch(() => \"N/A\");\n console.error(\n `Critical Failure [${walletAddress}]: STEP 2 (Get Pubkey). Status: ${pubkeyResponse.status}.`\n );\n throw new Error(\n `Failed to fetch public key. Status: ${pubkeyResponse.status}`\n );\n }\n\n const { pubkey } = await pubkeyResponse.json();\n const encryptedRecoveryShare = await encryptRsaOaep(\n pubkey,\n shares.recoveryShare\n );\n const updateResponse = await fetch(`${apiUrl}/sdk/wallets/update`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"X-API-KEY\": apiKey,\n },\n body: JSON.stringify({\n walletAddress,\n serverShare: shares.serverShare,\n encryptedRecoveryShare,\n }),\n });\n\n if (!updateResponse.ok) {\n await updateResponse.text().catch(() => \"N/A\");\n console.error(\n `Critical Failure [${walletAddress}]: STEP 4 (Update Shares). Status: ${updateResponse.status}.`\n );\n throw new Error(\n `Failed to update shares on server. Status: ${updateResponse.status}`\n );\n }\n\n return {\n recovery: \"\",\n server: shares.serverShare,\n device: shares.deviceShare,\n };\n } catch (err) {\n console.error(`UpdateShares Critical Failure for ${walletAddress}:`, err);\n throw err;\n }\n};\n","import { fetchServerShare, fetchShares, updateShares } from \"../api/wallet\";\nimport type { EChainTypeValue } from \"../types\";\n\nconst API_URL = process.env.AFRIDAX_API_URL || \"https://afridax-backend-production.up.railway.app\";\n\nexport const getReconstructionShares = async (\n deviceShare: string,\n walletAddress: string,\n apiKey: string,\n forceUpdate: boolean,\n chainType: EChainTypeValue\n): Promise<{\n mainShare: string;\n additionalShare: string;\n newDeviceShare: string | null;\n}> => {\n let mainShare: string | null;\n let additionalShare: string | null;\n let newDeviceShare: string | null = null;\n\n if (forceUpdate || !deviceShare || deviceShare === \"-\") {\n const shares = await fetchShares(apiKey, walletAddress, chainType, API_URL);\n const { device, server } = await updateShares(\n walletAddress,\n shares.server,\n shares.recovery,\n apiKey,\n API_URL\n );\n mainShare = device;\n additionalShare = server;\n newDeviceShare = device;\n } else {\n const serverShare = await fetchServerShare(apiKey, walletAddress, chainType, API_URL);\n mainShare = deviceShare;\n additionalShare = serverShare;\n }\n\n if (!mainShare || !additionalShare) {\n throw new Error(\"Failed to retrieve key shares.\");\n }\n\n return { mainShare, additionalShare, newDeviceShare };\n};\n","import { PublicKey } from \"@solana/web3.js\";\nimport { ESolanaInstructionType, type SolOrderData } from \"../../../types\";\nimport * as Squads from \"@sqds/multisig\";\n\nexport const prepareActions = (props: SolOrderData<any>): any[] => {\n const { instructions, threshold } = props;\n\n switch (instructions.type) {\n case ESolanaInstructionType.addOwner: {\n const newMember = instructions.newOwner;\n if (!newMember) {\n throw new Error(\"Error: newMember doesn't exist\");\n }\n const add = {\n __kind: \"AddMember\",\n newMember: {\n key: new PublicKey(newMember),\n permissions: Squads.types.Permissions.all(),\n },\n };\n const changeThreshold = {\n __kind: \"ChangeThreshold\",\n newThreshold: threshold,\n };\n const actions = threshold ? [add, changeThreshold] : [add];\n return actions;\n }\n\n case ESolanaInstructionType.removeOwner: {\n const oldMember = instructions.removeOwner;\n if (!oldMember) {\n throw new Error(\"Error: oldMember doesn't exist\");\n }\n const remove = {\n __kind: \"RemoveMember\",\n oldMember: new PublicKey(oldMember),\n };\n const changeThreshold = {\n __kind: \"ChangeThreshold\",\n newThreshold: threshold,\n };\n const actions = threshold ? [remove, changeThreshold] : [remove];\n return actions;\n }\n\n case ESolanaInstructionType.changeThreshold: {\n const newThreshold = instructions.newThreshold;\n const change = {\n __kind: \"ChangeThreshold\",\n newThreshold,\n };\n const actions = [change];\n return actions;\n }\n case ESolanaInstructionType.spl: {\n throw new Error(\"SPL instructions are not yet supported.\");\n }\n default:\n throw new Error(`Unsupported method type: ${instructions?.type}`);\n }\n};\n","export const solToLamports = (amountString: string | number): bigint => {\n const amount = String(amountString);\n const DECIMAL_REGEX = /^\\d+(\\.\\d{1,9})?$/;\n\n let numericValue: number;\n try {\n numericValue = parseFloat(amount);\n } catch (e) {\n throw new Error(\"Invalid number format for SOL amount.\");\n }\n\n if (isNaN(numericValue) || numericValue < 0) {\n throw new Error(\"Invalid or negative SOL amount provided.\");\n }\n\n const fixedAmountString = numericValue.toFixed(9).replace(/\\.?0+$/, \"\");\n\n if (!DECIMAL_REGEX.test(fixedAmountString)) {\n throw new Error(\n \"SOL amount must have up to 9 decimal places and contain only digits and a period.\"\n );\n }\n\n const lamportsNumber = Math.floor(numericValue * 1_000_000_000);\n\n if (lamportsNumber === 0 && numericValue > 0) {\n throw new Error(\n \"Amount is too small to be represented in lamports (potential dust).\"\n );\n }\n\n return BigInt(lamportsNumber);\n};\n","import type { Connection, PublicKey } from \"@solana/web3.js\";\nimport { TOKEN_PROGRAM_ID, TOKEN_2022_PROGRAM_ID } from \"@solana/spl-token\";\n\nexport const detectTokenProgram = async (\n connection: Connection,\n mintPublicKey: PublicKey\n): Promise<PublicKey> => {\n try {\n const accountInfo = await connection.getAccountInfo(mintPublicKey);\n\n if (!accountInfo) {\n throw new Error(\"Token mint account not found\");\n }\n\n if (accountInfo.owner.equals(TOKEN_2022_PROGRAM_ID)) {\n console.log(\"Detected Token-2022 (Token Extensions) program\");\n return TOKEN_2022_PROGRAM_ID;\n }\n\n console.log(\"Detected legacy Token program\");\n return TOKEN_PROGRAM_ID;\n } catch (error) {\n console.warn(\n \"Failed to detect token program, defaulting to TOKEN_PROGRAM_ID:\",\n error\n );\n return TOKEN_PROGRAM_ID;\n }\n};\n"],"mappings":"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","names":["PublicKey","Squads","Keypair","EChainType","IS_MAINNET","ethers","combine","ethers","EChainType","Keypair","instructions","instructions","PublicKey"]}
@@ -0,0 +1,38 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
8
+ get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
9
+ }) : x)(function(x) {
10
+ if (typeof require !== "undefined") return require.apply(this, arguments);
11
+ throw Error('Dynamic require of "' + x + '" is not supported');
12
+ });
13
+ var __commonJS = (cb, mod) => function __require2() {
14
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
15
+ };
16
+ var __copyProps = (to, from, except, desc) => {
17
+ if (from && typeof from === "object" || typeof from === "function") {
18
+ for (let key of __getOwnPropNames(from))
19
+ if (!__hasOwnProp.call(to, key) && key !== except)
20
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
21
+ }
22
+ return to;
23
+ };
24
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
25
+ // If the importer is in node compatibility mode or this is not an ESM
26
+ // file that has been converted to a CommonJS file using a Babel-
27
+ // compatible transform (i.e. "__esModule" has not been set), then set
28
+ // "default" to the CommonJS "module.exports" for node compatibility.
29
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
30
+ mod
31
+ ));
32
+
33
+ export {
34
+ __require,
35
+ __commonJS,
36
+ __toESM
37
+ };
38
+ //# sourceMappingURL=chunk-7D4SUZUM.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  toBackendChainType
3
- } from "./chunk-VYJA3QAZ.js";
3
+ } from "./chunk-3WZPZWTT.js";
4
4
 
5
5
  // src/api/wallet.api.ts
6
6
  var WalletApi = class {
@@ -153,4 +153,4 @@ var WalletApi = class {
153
153
  export {
154
154
  WalletApi
155
155
  };
156
- //# sourceMappingURL=chunk-HPEF3SHJ.js.map
156
+ //# sourceMappingURL=chunk-AZDMZJMI.js.map
@@ -1,8 +1,6 @@
1
1
  import {
2
2
  TransactionError
3
3
  } from "./chunk-VM6L5X3N.js";
4
- import "./chunk-VYJA3QAZ.js";
5
- import "./chunk-DGUM43GV.js";
6
4
 
7
5
  // src/chains/evm/evm-validation.ts
8
6
  import { ethers } from "ethers";
@@ -129,13 +127,14 @@ function validateERC20TransferData(transaction) {
129
127
  throw new TransactionError("Not standard transaction");
130
128
  }
131
129
  }
130
+
132
131
  export {
133
- MAINNET_CHAIN_IDS,
134
- MAX_GAS_LIMIT_ERC20,
135
- MAX_GAS_LIMIT_NATIVE,
136
132
  SYMBOLIC_GWEI_LIMITS,
133
+ MAINNET_CHAIN_IDS,
137
134
  TESTNET_CHAIN_IDS,
138
135
  getChainConfig,
136
+ MAX_GAS_LIMIT_NATIVE,
137
+ MAX_GAS_LIMIT_ERC20,
139
138
  validateEvmTransaction
140
139
  };
141
- //# sourceMappingURL=evm-validation-4UCXBNNX.js.map
140
+ //# sourceMappingURL=chunk-FXHRAW2N.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/chains/evm/evm-validation.ts"],"sourcesContent":["\nimport { ethers } from 'ethers';\nimport { TransactionError } from '../../core/errors';\n\n/**\n * Chain configuration for gas limits\n */\nexport interface EvmChainConfig {\n key: string;\n chainId: string;\n maxGwei: number;\n}\n\n/**\n * Maximum gas price limits per chain (in Gwei)\n * These limits prevent users from accidentally paying excessive fees\n */\nexport const SYMBOLIC_GWEI_LIMITS: Record<string, number> = {\n ETH: 100,\n POL: 1000000,\n ARBITRUM: 150,\n OPTIMISM: 150,\n BASE: 150,\n BNB: 20,\n AVAX: 300,\n};\n\n/**\n * Chain ID mappings for mainnet and testnet\n */\nexport const MAINNET_CHAIN_IDS: Record<string, string> = {\n ETH: '1',\n POL: '137',\n ARBITRUM: '42161',\n OPTIMISM: '10',\n BASE: '8453',\n BNB: '56',\n AVAX: '43114',\n};\n\nexport const TESTNET_CHAIN_IDS: Record<string, string> = {\n ETH_SEPOLIA: '11155111',\n POL: '80002',\n ARBITRUM_SEPOLIA: '421614',\n OPTIMISM_SEPOLIA: '11155420',\n BASE_SEPOLIA: '84532',\n BNB: '97',\n AVAX_FUJI: '43113',\n};\n\n/**\n * Get chain configuration by chain ID\n */\nexport function getChainConfig(chainId: string | number): EvmChainConfig | null {\n const numericId = String(chainId);\n\n // Check mainnet chains\n for (const [key, id] of Object.entries(MAINNET_CHAIN_IDS)) {\n if (id === numericId && SYMBOLIC_GWEI_LIMITS[key] !== undefined) {\n return {\n key,\n chainId: numericId,\n maxGwei: SYMBOLIC_GWEI_LIMITS[key],\n };\n }\n }\n\n // Check testnet chains\n for (const [key, id] of Object.entries(TESTNET_CHAIN_IDS)) {\n const baseKey = key.replace('_SEPOLIA', '');\n if (id === numericId && SYMBOLIC_GWEI_LIMITS[baseKey] !== undefined) {\n return {\n key: baseKey,\n chainId: numericId,\n maxGwei: SYMBOLIC_GWEI_LIMITS[baseKey],\n };\n }\n }\n\n return null;\n}\n\n/**\n * Recommended maximum gas limits\n */\nexport const MAX_GAS_LIMIT_NATIVE = 500000;\nexport const MAX_GAS_LIMIT_ERC20 = 200000;\n\n/**\n * Validate EVM transaction parameters before signing\n */\nexport function validateEvmTransaction(\n transaction: ethers.Transaction,\n expectedChainId: number\n): void {\n // Validate chain ID\n const expectedChainIdBigInt = BigInt(expectedChainId);\n if (transaction.chainId !== expectedChainIdBigInt) {\n throw new TransactionError(\n `Chain ID mismatch. Expected: ${expectedChainId}, Received: ${transaction.chainId}`,\n { details: { expectedChainId, receivedChainId: transaction.chainId } }\n );\n }\n\n // Validate nonce\n if (transaction.nonce === undefined || transaction.nonce === null) {\n throw new TransactionError('Transaction nonce is missing');\n }\n\n // Determine if this is an ERC20 transfer\n const isERC20Transfer = transaction.data && transaction.data !== '0x';\n\n // Get chain configuration for gas price validation\n const chainConfig = getChainConfig(expectedChainId);\n if (!chainConfig) {\n throw new TransactionError(`Unsupported EVM chain ID: ${expectedChainId}`);\n }\n\n // Validate gas limit\n const maxGasLimit = isERC20Transfer ? MAX_GAS_LIMIT_ERC20 : MAX_GAS_LIMIT_NATIVE;\n if (transaction.gasLimit && transaction.gasLimit > BigInt(maxGasLimit)) {\n console.warn(\n `Gas limit (${transaction.gasLimit}) exceeds recommended maximum (${maxGasLimit})`\n );\n }\n\n // Validate gas price\n const maxGasPrice = ethers.parseUnits(String(chainConfig.maxGwei), 'gwei');\n\n if (transaction.gasPrice && transaction.gasPrice > maxGasPrice) {\n throw new TransactionError(\n `Gas price exceeds safe limit for ${chainConfig.key}. Limit: ${chainConfig.maxGwei} Gwei`,\n { details: { gasPrice: transaction.gasPrice, maxGasPrice } }\n );\n }\n\n if (transaction.maxFeePerGas && transaction.maxFeePerGas > maxGasPrice) {\n throw new TransactionError(\n `Max Fee Per Gas exceeds safe limit for ${chainConfig.key}. Limit: ${chainConfig.maxGwei} Gwei`,\n { details: { maxFeePerGas: transaction.maxFeePerGas, maxGasPrice } }\n );\n }\n\n // Validate ERC20 transfer data\n if (isERC20Transfer) {\n validateERC20TransferData(transaction);\n }\n\n // Warn if ERC20 transfer includes native token value\n if (isERC20Transfer && transaction.value && transaction.value > 0n) {\n console.warn('ERC20 transfer includes native token value - this is unusual');\n }\n}\n\n/**\n * Validate ERC20 transfer function data\n */\nfunction validateERC20TransferData(transaction: ethers.Transaction): void {\n try {\n const transferSignature = '0xa9059cbb'; // transfer(address,uint256)\n\n if (!transaction.data.startsWith(transferSignature)) {\n console.warn('Transaction contains data but not a standard ERC20 transfer');\n return;\n }\n\n const dataWithoutSig = transaction.data.slice(10);\n if (dataWithoutSig.length !== 128) {\n throw new TransactionError('Invalid ERC20 transfer data length');\n }\n\n // Extract and validate recipient address\n const recipientHex = '0x' + dataWithoutSig.slice(24, 64);\n const recipient = ethers.getAddress(recipientHex);\n\n if (!ethers.isAddress(recipient)) {\n throw new TransactionError('Invalid recipient address in transfer data');\n }\n\n // Extract and validate amount\n const amountHex = '0x' + dataWithoutSig.slice(64, 128);\n const amount = BigInt(amountHex);\n\n if (amount <= 0n) {\n throw new TransactionError('Invalid transfer amount');\n }\n } catch (error) {\n if (error instanceof TransactionError) {\n throw error;\n }\n console.error('Error validating ERC20 data:', error);\n throw new TransactionError('Not standard transaction');\n }\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/chains/evm/evm-validation.ts"],"sourcesContent":["\nimport { ethers } from 'ethers';\nimport { TransactionError } from '../../core/errors';\n\n/**\n * Chain configuration for gas limits\n */\nexport interface EvmChainConfig {\n key: string;\n chainId: string;\n maxGwei: number;\n}\n\n/**\n * Maximum gas price limits per chain (in Gwei)\n * These limits prevent users from accidentally paying excessive fees\n */\nexport const SYMBOLIC_GWEI_LIMITS: Record<string, number> = {\n ETH: 100,\n POL: 1000000,\n ARBITRUM: 150,\n OPTIMISM: 150,\n BASE: 150,\n BNB: 20,\n AVAX: 300,\n};\n\n/**\n * Chain ID mappings for mainnet and testnet\n */\nexport const MAINNET_CHAIN_IDS: Record<string, string> = {\n ETH: '1',\n POL: '137',\n ARBITRUM: '42161',\n OPTIMISM: '10',\n BASE: '8453',\n BNB: '56',\n AVAX: '43114',\n};\n\nexport const TESTNET_CHAIN_IDS: Record<string, string> = {\n ETH_SEPOLIA: '11155111',\n POL: '80002',\n ARBITRUM_SEPOLIA: '421614',\n OPTIMISM_SEPOLIA: '11155420',\n BASE_SEPOLIA: '84532',\n BNB: '97',\n AVAX_FUJI: '43113',\n};\n\n/**\n * Get chain configuration by chain ID\n */\nexport function getChainConfig(chainId: string | number): EvmChainConfig | null {\n const numericId = String(chainId);\n\n // Check mainnet chains\n for (const [key, id] of Object.entries(MAINNET_CHAIN_IDS)) {\n if (id === numericId && SYMBOLIC_GWEI_LIMITS[key] !== undefined) {\n return {\n key,\n chainId: numericId,\n maxGwei: SYMBOLIC_GWEI_LIMITS[key],\n };\n }\n }\n\n // Check testnet chains\n for (const [key, id] of Object.entries(TESTNET_CHAIN_IDS)) {\n const baseKey = key.replace('_SEPOLIA', '');\n if (id === numericId && SYMBOLIC_GWEI_LIMITS[baseKey] !== undefined) {\n return {\n key: baseKey,\n chainId: numericId,\n maxGwei: SYMBOLIC_GWEI_LIMITS[baseKey],\n };\n }\n }\n\n return null;\n}\n\n/**\n * Recommended maximum gas limits\n */\nexport const MAX_GAS_LIMIT_NATIVE = 500000;\nexport const MAX_GAS_LIMIT_ERC20 = 200000;\n\n/**\n * Validate EVM transaction parameters before signing\n */\nexport function validateEvmTransaction(\n transaction: ethers.Transaction,\n expectedChainId: number\n): void {\n // Validate chain ID\n const expectedChainIdBigInt = BigInt(expectedChainId);\n if (transaction.chainId !== expectedChainIdBigInt) {\n throw new TransactionError(\n `Chain ID mismatch. Expected: ${expectedChainId}, Received: ${transaction.chainId}`,\n { details: { expectedChainId, receivedChainId: transaction.chainId } }\n );\n }\n\n // Validate nonce\n if (transaction.nonce === undefined || transaction.nonce === null) {\n throw new TransactionError('Transaction nonce is missing');\n }\n\n // Determine if this is an ERC20 transfer\n const isERC20Transfer = transaction.data && transaction.data !== '0x';\n\n // Get chain configuration for gas price validation\n const chainConfig = getChainConfig(expectedChainId);\n if (!chainConfig) {\n throw new TransactionError(`Unsupported EVM chain ID: ${expectedChainId}`);\n }\n\n // Validate gas limit\n const maxGasLimit = isERC20Transfer ? MAX_GAS_LIMIT_ERC20 : MAX_GAS_LIMIT_NATIVE;\n if (transaction.gasLimit && transaction.gasLimit > BigInt(maxGasLimit)) {\n console.warn(\n `Gas limit (${transaction.gasLimit}) exceeds recommended maximum (${maxGasLimit})`\n );\n }\n\n // Validate gas price\n const maxGasPrice = ethers.parseUnits(String(chainConfig.maxGwei), 'gwei');\n\n if (transaction.gasPrice && transaction.gasPrice > maxGasPrice) {\n throw new TransactionError(\n `Gas price exceeds safe limit for ${chainConfig.key}. Limit: ${chainConfig.maxGwei} Gwei`,\n { details: { gasPrice: transaction.gasPrice, maxGasPrice } }\n );\n }\n\n if (transaction.maxFeePerGas && transaction.maxFeePerGas > maxGasPrice) {\n throw new TransactionError(\n `Max Fee Per Gas exceeds safe limit for ${chainConfig.key}. Limit: ${chainConfig.maxGwei} Gwei`,\n { details: { maxFeePerGas: transaction.maxFeePerGas, maxGasPrice } }\n );\n }\n\n // Validate ERC20 transfer data\n if (isERC20Transfer) {\n validateERC20TransferData(transaction);\n }\n\n // Warn if ERC20 transfer includes native token value\n if (isERC20Transfer && transaction.value && transaction.value > 0n) {\n console.warn('ERC20 transfer includes native token value - this is unusual');\n }\n}\n\n/**\n * Validate ERC20 transfer function data\n */\nfunction validateERC20TransferData(transaction: ethers.Transaction): void {\n try {\n const transferSignature = '0xa9059cbb'; // transfer(address,uint256)\n\n if (!transaction.data.startsWith(transferSignature)) {\n console.warn('Transaction contains data but not a standard ERC20 transfer');\n return;\n }\n\n const dataWithoutSig = transaction.data.slice(10);\n if (dataWithoutSig.length !== 128) {\n throw new TransactionError('Invalid ERC20 transfer data length');\n }\n\n // Extract and validate recipient address\n const recipientHex = '0x' + dataWithoutSig.slice(24, 64);\n const recipient = ethers.getAddress(recipientHex);\n\n if (!ethers.isAddress(recipient)) {\n throw new TransactionError('Invalid recipient address in transfer data');\n }\n\n // Extract and validate amount\n const amountHex = '0x' + dataWithoutSig.slice(64, 128);\n const amount = BigInt(amountHex);\n\n if (amount <= 0n) {\n throw new TransactionError('Invalid transfer amount');\n }\n } catch (error) {\n if (error instanceof TransactionError) {\n throw error;\n }\n console.error('Error validating ERC20 data:', error);\n throw new TransactionError('Not standard transaction');\n }\n}\n"],"mappings":"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","names":[]}
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  encryptRsaOaep
3
- } from "./chunk-KXIOGAV2.js";
3
+ } from "./chunk-SW35WN7S.js";
4
4
 
5
5
  // src/crypto/shares.ts
6
6
  import { combine, split } from "shamir-secret-sharing";
@@ -119,4 +119,4 @@ export {
119
119
  updateShares,
120
120
  getReconstructionShares
121
121
  };
122
- //# sourceMappingURL=chunk-OTW5PZKP.js.map
122
+ //# sourceMappingURL=chunk-G2AFPLPL.js.map