@sodax/wallet-sdk-core 0.0.1-rc.9 → 1.0.0-beta
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/dist/index.cjs +2 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +4 -4
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
package/dist/index.cjs
CHANGED
|
@@ -50,8 +50,8 @@ function getEvmViemChain(id) {
|
|
|
50
50
|
return chains.bsc;
|
|
51
51
|
case types.POLYGON_MAINNET_CHAIN_ID:
|
|
52
52
|
return chains.polygon;
|
|
53
|
-
case types.
|
|
54
|
-
return chains.
|
|
53
|
+
case types.ETHEREUM_MAINNET_CHAIN_ID:
|
|
54
|
+
return chains.mainnet;
|
|
55
55
|
default:
|
|
56
56
|
throw new Error(`Unsupported EVM chain ID: ${id}`);
|
|
57
57
|
}
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/wallet-providers/EvmWalletProvider.ts","../src/wallet-providers/SuiWalletProvider.ts","../src/wallet-providers/IconWalletProvider.ts","../src/wallet-providers/InjectiveWalletProvider.ts","../src/wallet-providers/SolanaWalletProvider.ts","../src/wallet-providers/StellarWalletProvider.ts"],"names":["SONIC_MAINNET_CHAIN_ID","sonic","AVALANCHE_MAINNET_CHAIN_ID","avalanche","ARBITRUM_MAINNET_CHAIN_ID","arbitrum","BASE_MAINNET_CHAIN_ID","base","OPTIMISM_MAINNET_CHAIN_ID","optimism","BSC_MAINNET_CHAIN_ID","bsc","POLYGON_MAINNET_CHAIN_ID","polygon","NIBIRU_MAINNET_CHAIN_ID","nibiru","createWalletClient","http","privateKeyToAccount","createPublicClient","SuiClient","Ed25519Keypair","signTransaction","IconSdkRaw","result","PrivateKey","MsgBroadcasterWithPk","MsgExecuteContract","createTransaction","getInjectiveSignerAddress","MsgExecuteContractCompat","InjectiveExecuteResponse","Keypair","Connection","TransactionMessage","VersionedTransaction","getAssociatedTokenAddress","PublicKey","TransactionInstruction","Networks","Horizon","Transaction"],"mappings":"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","file":"index.cjs","sourcesContent":["import type { ChainId, EvmRawTransaction, EvmRawTransactionReceipt, IEvmWalletProvider } from '@sodax/types';\nimport type { Account, Address, Chain, Transport, Hash, PublicClient, WalletClient } from 'viem';\nimport { privateKeyToAccount } from 'viem/accounts';\nimport { createWalletClient, createPublicClient, http } from 'viem';\nimport { sonic, avalanche, arbitrum, base, optimism, bsc, polygon, nibiru } from 'viem/chains';\nimport {\n SONIC_MAINNET_CHAIN_ID,\n AVALANCHE_MAINNET_CHAIN_ID,\n ARBITRUM_MAINNET_CHAIN_ID,\n BASE_MAINNET_CHAIN_ID,\n OPTIMISM_MAINNET_CHAIN_ID,\n BSC_MAINNET_CHAIN_ID,\n POLYGON_MAINNET_CHAIN_ID,\n NIBIRU_MAINNET_CHAIN_ID,\n} from '@sodax/types';\n\nexport function getEvmViemChain(id: ChainId): Chain {\n switch (id) {\n case SONIC_MAINNET_CHAIN_ID:\n return sonic;\n case AVALANCHE_MAINNET_CHAIN_ID:\n return avalanche;\n case ARBITRUM_MAINNET_CHAIN_ID:\n return arbitrum;\n case BASE_MAINNET_CHAIN_ID:\n return base;\n case OPTIMISM_MAINNET_CHAIN_ID:\n return optimism;\n case BSC_MAINNET_CHAIN_ID:\n return bsc;\n case POLYGON_MAINNET_CHAIN_ID:\n return polygon;\n case NIBIRU_MAINNET_CHAIN_ID:\n return nibiru;\n default:\n throw new Error(`Unsupported EVM chain ID: ${id}`);\n }\n}\n\nexport class EvmWalletProvider implements IEvmWalletProvider {\n private readonly walletClient: WalletClient<Transport, Chain, Account>;\n public readonly publicClient: PublicClient;\n\n constructor(config: EvmWalletConfig) {\n if (isPrivateKeyEvmWalletConfig(config)) {\n const chain = getEvmViemChain(config.chainId);\n this.walletClient = createWalletClient({\n chain,\n transport: http(config.rpcUrl ?? chain.rpcUrls.default.http[0]),\n account: privateKeyToAccount(config.privateKey),\n });\n this.publicClient = createPublicClient({\n chain,\n transport: http(config.rpcUrl ?? chain.rpcUrls.default.http[0]),\n });\n } else if (isBrowserExtensionEvmWalletConfig(config)) {\n this.walletClient = config.walletClient;\n this.publicClient = config.publicClient;\n } else {\n throw new Error('Invalid EVM wallet config');\n }\n }\n\n async sendTransaction(evmRawTx: EvmRawTransaction): Promise<Hash> {\n return this.walletClient.sendTransaction(evmRawTx);\n }\n\n async waitForTransactionReceipt(txHash: Hash): Promise<EvmRawTransactionReceipt> {\n const receipt = await this.publicClient.waitForTransactionReceipt({ hash: txHash });\n return {\n ...receipt,\n transactionIndex: receipt.transactionIndex.toString(),\n blockNumber: receipt.blockNumber.toString(),\n cumulativeGasUsed: receipt.cumulativeGasUsed.toString(),\n gasUsed: receipt.gasUsed.toString(),\n contractAddress: receipt.contractAddress?.toString() ?? null,\n logs: receipt.logs.map(log => ({\n ...log,\n blockNumber: log.blockNumber.toString() as `0x${string}`,\n logIndex: log.logIndex.toString() as `0x${string}`,\n transactionIndex: log.transactionIndex.toString() as `0x${string}`,\n })),\n effectiveGasPrice: receipt.effectiveGasPrice.toString(),\n };\n }\n\n async getWalletAddress(): Promise<Address> {\n return this.walletClient.account.address;\n }\n}\n\n/**\n * EVM Wallet Configuration Types\n */\n\nexport type PrivateKeyEvmWalletConfig = {\n privateKey: `0x${string}`;\n chainId: ChainId;\n rpcUrl?: `http${string}`;\n};\n\nexport type BrowserExtensionEvmWalletConfig = {\n walletClient: WalletClient<Transport, Chain, Account>;\n publicClient: PublicClient;\n};\n\nexport type EvmWalletConfig = PrivateKeyEvmWalletConfig | BrowserExtensionEvmWalletConfig;\n\n/**\n * EVM Type Guards\n */\n\nexport function isPrivateKeyEvmWalletConfig(config: EvmWalletConfig): config is PrivateKeyEvmWalletConfig {\n return 'privateKey' in config && config.privateKey.startsWith('0x');\n}\n\nexport function isBrowserExtensionEvmWalletConfig(config: EvmWalletConfig): config is BrowserExtensionEvmWalletConfig {\n return 'walletClient' in config && 'publicClient' in config;\n}\n","import { SuiClient } from '@mysten/sui/client';\nimport { Ed25519Keypair } from '@mysten/sui/keypairs/ed25519';\nimport type { Transaction, TransactionArgument } from '@mysten/sui/transactions';\nimport type { ISuiWalletProvider, SuiTransaction, SuiExecutionResult, SuiPaginatedCoins } from '@sodax/types';\nimport {\n signTransaction,\n type SuiWalletFeatures,\n type WalletAccount,\n type WalletWithFeatures,\n} from '@mysten/wallet-standard';\n\n// Private key wallet config\nexport type PrivateKeySuiWalletConfig = {\n rpcUrl: string;\n mnemonics: string;\n};\n\n// Browser extension wallet config\nexport type BrowserExtensionSuiWalletConfig = {\n client: SuiClient;\n wallet: WalletWithFeatures<Partial<SuiWalletFeatures>>;\n account: WalletAccount;\n};\n\n// Unified config type\nexport type SuiWalletConfig = PrivateKeySuiWalletConfig | BrowserExtensionSuiWalletConfig;\n\n// Type guards\nfunction isPrivateKeySuiWalletConfig(walletConfig: SuiWalletConfig): walletConfig is PrivateKeySuiWalletConfig {\n return 'mnemonics' in walletConfig;\n}\n\nfunction isBrowserExtensionSuiWalletConfig(\n walletConfig: SuiWalletConfig,\n): walletConfig is BrowserExtensionSuiWalletConfig {\n return 'wallet' in walletConfig && 'account' in walletConfig;\n}\n\nexport type PkSuiWallet = {\n keyPair: Ed25519Keypair;\n};\n\nexport type BrowserExtensionSuiWallet = {\n wallet: WalletWithFeatures<Partial<SuiWalletFeatures>>;\n account: WalletAccount;\n};\n\nexport type SuiWallet = PkSuiWallet | BrowserExtensionSuiWallet;\n\nexport function isPkSuiWallet(wallet: SuiWallet): wallet is PkSuiWallet {\n return 'keyPair' in wallet;\n}\n\nexport function isBrowserExtensionSuiWallet(wallet: SuiWallet): wallet is BrowserExtensionSuiWallet {\n return 'wallet' in wallet && 'account' in wallet;\n}\n\nexport function isSuiWallet(wallet: SuiWallet): wallet is SuiWallet {\n return isPkSuiWallet(wallet) || isBrowserExtensionSuiWallet(wallet);\n}\n\nexport class SuiWalletProvider implements ISuiWalletProvider {\n private readonly client: SuiClient;\n private readonly wallet: SuiWallet;\n\n constructor(walletConfig: SuiWalletConfig) {\n if (isPrivateKeySuiWalletConfig(walletConfig)) {\n this.client = new SuiClient({ url: walletConfig.rpcUrl });\n this.wallet = {\n keyPair: Ed25519Keypair.deriveKeypair(walletConfig.mnemonics),\n };\n } else if (isBrowserExtensionSuiWalletConfig(walletConfig)) {\n this.client = walletConfig.client;\n this.wallet = {\n wallet: walletConfig.wallet,\n account: walletConfig.account,\n };\n } else {\n throw new Error('Invalid wallet configuration');\n }\n }\n\n async signAndExecuteTxn(txn: SuiTransaction): Promise<string> {\n if (isPkSuiWallet(this.wallet)) {\n const res = await this.client.signAndExecuteTransaction({\n transaction: txn as unknown as Transaction,\n signer: this.wallet.keyPair,\n });\n\n return res.digest;\n }\n if (isBrowserExtensionSuiWallet(this.wallet)) {\n const browserWallet = this.wallet.wallet;\n const browserAccount = this.wallet.account;\n\n if (!browserAccount || browserAccount.chains.length === 0) {\n throw new Error('No chains available for wallet account');\n }\n const chain = browserAccount.chains[0];\n if (!chain) {\n throw new Error('No chain available for wallet account');\n }\n const { bytes, signature } = await signTransaction(browserWallet, {\n transaction: txn,\n account: browserAccount,\n chain,\n });\n\n const res = await this.client.executeTransactionBlock({\n transactionBlock: bytes,\n signature,\n options: {\n showRawEffects: true,\n },\n });\n\n return res.digest;\n }\n\n throw new Error('Invalid wallet configuration');\n }\n\n async viewContract(\n tx: Transaction,\n packageId: string,\n module: string,\n functionName: string,\n args: unknown[],\n typeArgs: string[] = [],\n ): Promise<SuiExecutionResult> {\n tx.moveCall({\n target: `${packageId}::${module}::${functionName}`,\n arguments: args as TransactionArgument[],\n typeArguments: typeArgs,\n });\n\n const sender = this.getSuiAddress();\n\n const txResults = await this.client.devInspectTransactionBlock({\n transactionBlock: tx,\n sender,\n });\n\n if (txResults.results && txResults.results[0] !== undefined) {\n return txResults.results[0] as SuiExecutionResult;\n }\n throw Error(`transaction didn't return any values: ${JSON.stringify(txResults, null, 2)}`);\n }\n\n async getCoins(address: string, token: string): Promise<SuiPaginatedCoins> {\n return this.client.getCoins({ owner: address, coinType: token, limit: 10 });\n }\n\n private getSuiAddress(): string {\n if (isPkSuiWallet(this.wallet)) {\n return this.wallet.keyPair.toSuiAddress();\n }\n if (isBrowserExtensionSuiWallet(this.wallet)) {\n return this.wallet.account.address;\n }\n throw new Error('Invalid wallet configuration');\n }\n\n async getWalletAddress(): Promise<string> {\n return this.getSuiAddress();\n }\n}\n","import type { IconTransactionResult, IcxCallTransaction, IIconWalletProvider } from '@sodax/types';\nimport type { IconService, Wallet as IconSdkWallet } from 'icon-sdk-js';\nimport * as IconSdkRaw from 'icon-sdk-js';\nconst IconSdk = ('default' in IconSdkRaw.default ? IconSdkRaw.default : IconSdkRaw) as typeof IconSdkRaw;\nconst { Converter, CallTransactionBuilder, Wallet } = IconSdk;\n\nexport class IconWalletProvider implements IIconWalletProvider {\n private readonly wallet: IconWallet;\n public readonly iconService: IconService;\n\n constructor(wallet: IconWalletConfig) {\n if (isPrivateKeyIconWalletConfig(wallet)) {\n this.wallet = {\n type: 'PRIVATE_KEY',\n wallet: Wallet.loadPrivateKey(wallet.privateKey.slice(2)),\n };\n this.iconService = new IconSdk.IconService(new IconSdk.IconService.HttpProvider(wallet.rpcUrl));\n } else if (isBrowserExtensionIconWalletConfig(wallet)) {\n this.wallet = {\n type: 'BROWSER_EXTENSION',\n wallet: wallet.walletAddress,\n };\n this.iconService = new IconSdk.IconService(new IconSdk.IconService.HttpProvider(wallet.rpcUrl));\n } else {\n throw new Error('Invalid Icon wallet config');\n }\n }\n\n public async sendTransaction(tx: IcxCallTransaction): Promise<Hash> {\n const builtTx = new CallTransactionBuilder()\n .from(tx.from)\n .to(tx.to)\n .stepLimit(Converter.toHex(3000000))\n .nid(tx.nid)\n .version(tx.version ?? '0x3')\n .timestamp(Converter.toHex(tx.timestamp ?? new Date().getTime() * 1000))\n .value(tx.value)\n .method(tx.method)\n .params(tx.params)\n .build();\n\n if (!isIconPkWallet(this.wallet)) {\n // if wallet starts with 0x, it's a private key\n const result = await requestJsonRpc(builtTx);\n\n return result.result satisfies string as Hash;\n }\n const signedTx = new IconSdk.IconService.SignedTransaction(builtTx, this.wallet.wallet);\n const result = await this.iconService.sendTransaction(signedTx).execute();\n\n return result satisfies string as Hash;\n }\n\n public async waitForTransactionReceipt(txHash: Hash): Promise<IconTransactionResult> {\n const result = await this.iconService.waitTransactionResult(txHash).execute();\n\n return {\n ...result,\n status: +result.status,\n cumulativeStepUsed: BigNumberToBigInt(result.cumulativeStepUsed),\n stepUsed: BigNumberToBigInt(result.stepUsed),\n stepPrice: BigNumberToBigInt(result.stepPrice),\n } satisfies IconTransactionResult;\n }\n\n async getWalletAddress(): Promise<IconEoaAddress> {\n if (!this.wallet.wallet) {\n throw new Error('Wallet not initialized');\n }\n return isIconPkWallet(this.wallet) ? (this.wallet.wallet.getAddress() as IconEoaAddress) : this.wallet.wallet;\n }\n}\n\n/**\n * Icon Types\n */\n\nexport type IconJsonRpcVersion = '2.0';\n\nexport type Hex = `0x${string}`;\nexport type Hash = `0x${string}`;\nexport type IconAddress = `hx${string}` | `cx${string}`;\nexport type IconEoaAddress = `hx${string}`;\n\nexport type PrivateKeyIconWalletConfig = {\n privateKey: `0x${string}`;\n rpcUrl: `http${string}`;\n};\n\nexport type BrowserExtensionIconWalletConfig = {\n walletAddress?: IconEoaAddress;\n rpcUrl: `http${string}`;\n};\n\nexport type IconWalletConfig = PrivateKeyIconWalletConfig | BrowserExtensionIconWalletConfig;\n\nexport type IconPkWallet = {\n type: 'PRIVATE_KEY';\n wallet: IconSdkWallet;\n};\n\nexport type IconBrowserExtensionWallet = {\n type: 'BROWSER_EXTENSION';\n wallet?: IconEoaAddress;\n};\n\nexport type IconWallet = IconPkWallet | IconBrowserExtensionWallet;\n\nexport type HanaWalletRequestEvent =\n | 'REQUEST_HAS_ACCOUNT'\n | 'REQUEST_HAS_ADDRESS'\n | 'REQUEST_ADDRESS'\n | 'REQUEST_JSON'\n | 'REQUEST_SIGNING'\n | 'REQUEST_JSON-RPC';\nexport type HanaWalletResponseEvent =\n | 'RESPONSE_HAS_ACCOUNT'\n | 'RESPONSE_HAS_ADDRESS'\n | 'RESPONSE_ADDRESS'\n | 'RESPONSE_JSON-RPC'\n | 'RESPONSE_SIGNING'\n | 'CANCEL_SIGNING'\n | 'CANCEL_JSON-RPC';\n\nexport type ResponseAddressType = {\n type: 'RESPONSE_ADDRESS';\n payload: IconAddress;\n};\n\nexport type ResponseSigningType = {\n type: 'RESPONSE_SIGNING';\n payload: string;\n};\n\nexport type RelayRequestDetail = {\n type: HanaWalletRequestEvent;\n payload?: {\n jsonrpc: IconJsonRpcVersion;\n method: string;\n params: unknown;\n id: number | undefined;\n };\n};\n\nexport type RelayRequestSigning = {\n type: 'REQUEST_SIGNING';\n payload: {\n from: IconAddress;\n hash: string;\n };\n};\n\nexport type JsonRpcPayloadResponse = {\n id: number;\n result: string; // txHash\n};\n\ninterface RelayResponseEventDetail {\n type: HanaWalletResponseEvent;\n payload: unknown;\n}\n\n/**\n * Icon Type Guards\n */\n\nexport function isIconPkWallet(wallet: IconWallet): wallet is IconPkWallet {\n return wallet.type === 'PRIVATE_KEY';\n}\n\nexport function isIconBrowserExtensionWallet(wallet: IconWallet): wallet is IconBrowserExtensionWallet {\n return wallet.type === 'BROWSER_EXTENSION';\n}\n\nexport function isPrivateKeyIconWalletConfig(config: IconWalletConfig): config is PrivateKeyIconWalletConfig {\n return 'privateKey' in config && config.privateKey.startsWith('0x');\n}\n\nexport function isBrowserExtensionIconWalletConfig(\n config: IconWalletConfig,\n): config is BrowserExtensionIconWalletConfig {\n return 'walletAddress' in config && (isIconEoaAddress(config.walletAddress) || !config.walletAddress);\n}\n\nexport function isIconAddress(value: unknown): value is IconAddress {\n return typeof value === 'string' && /^hx[a-f0-9]{40}$|^cx[a-f0-9]{40}$/.test(value);\n}\n\nexport function isIconEoaAddress(value: unknown): value is IconEoaAddress {\n return typeof value === 'string' && /^hx[a-f0-9]{40}$/.test(value);\n}\n\nexport function isResponseAddressType(value: unknown): value is ResponseAddressType {\n return (\n typeof value === 'object' &&\n value !== null &&\n 'type' in value &&\n 'payload' in value &&\n value.type === 'RESPONSE_ADDRESS' &&\n isIconAddress(value.payload)\n );\n}\n\nexport function isResponseSigningType(value: unknown): value is ResponseSigningType {\n return (\n typeof value === 'object' &&\n value !== null &&\n 'type' in value &&\n 'payload' in value &&\n value.type === 'RESPONSE_SIGNING' &&\n typeof value.payload === 'string'\n );\n}\n\nexport function isJsonRpcPayloadResponse(value: unknown): value is JsonRpcPayloadResponse {\n return (\n typeof value === 'object' &&\n value !== null &&\n 'id' in value &&\n 'result' in value &&\n typeof value.result === 'string'\n );\n}\n\n/**\n * Methods to interact with Icon Browser Extension Wallet (e.g. Hana Wallet)\n */\n\nexport function requestAddress(): Promise<IconAddress> {\n return new Promise(resolve => {\n const eventHandler = (event: Event) => {\n const customEvent = event as CustomEvent<RelayResponseEventDetail>;\n const response = customEvent.detail;\n if (isResponseAddressType(response)) {\n window.removeEventListener('ICONEX_RELAY_RESPONSE', eventHandler as EventListener, false);\n resolve(response.payload);\n }\n };\n\n window.removeEventListener('ICONEX_RELAY_RESPONSE', eventHandler, false);\n window.addEventListener('ICONEX_RELAY_RESPONSE', eventHandler, false);\n window.dispatchEvent(\n new CustomEvent<RelayRequestDetail>('ICONEX_RELAY_REQUEST', {\n detail: {\n type: 'REQUEST_ADDRESS',\n },\n }),\n );\n });\n}\n\nexport function requestSigning(from: IconAddress, hash: string): Promise<string> {\n return new Promise((resolve, reject) => {\n const signRequest = new CustomEvent<RelayRequestSigning>('ICONEX_RELAY_REQUEST', {\n detail: {\n type: 'REQUEST_SIGNING',\n payload: {\n from,\n hash,\n },\n },\n });\n\n const eventHandler = (event: Event) => {\n const customEvent = event as CustomEvent<RelayResponseEventDetail>;\n const response = customEvent.detail;\n if (isResponseSigningType(response)) {\n window.removeEventListener('ICONEX_RELAY_RESPONSE', eventHandler as EventListener, false);\n\n // resolve signature\n resolve(response.payload);\n } else if (response.type === 'CANCEL_SIGNING') {\n reject(new Error('CANCEL_SIGNING'));\n }\n };\n\n window.removeEventListener('ICONEX_RELAY_RESPONSE', eventHandler as EventListener, false);\n window.addEventListener('ICONEX_RELAY_RESPONSE', eventHandler as EventListener, false);\n window.dispatchEvent(signRequest);\n });\n}\n\nexport function requestJsonRpc(rawTransaction: unknown, id = 99999): Promise<JsonRpcPayloadResponse> {\n return new Promise((resolve, reject) => {\n const eventHandler = (event: Event) => {\n const customEvent = event as CustomEvent<RelayResponseEventDetail>;\n const { type, payload } = customEvent.detail;\n if (type === 'RESPONSE_JSON-RPC') {\n window.removeEventListener('ICONEX_RELAY_RESPONSE', eventHandler as EventListener, false);\n\n if (isJsonRpcPayloadResponse(payload)) {\n resolve(payload);\n } else {\n reject(new Error('Invalid payload response type (expected JsonRpcPayloadResponse)'));\n }\n } else if (type === 'CANCEL_JSON-RPC') {\n window.removeEventListener('ICONEX_RELAY_RESPONSE', eventHandler as EventListener, false);\n reject(new Error('CANCEL_JSON-RPC'));\n }\n };\n\n window.removeEventListener('ICONEX_RELAY_RESPONSE', eventHandler as EventListener, false);\n window.addEventListener('ICONEX_RELAY_RESPONSE', eventHandler as EventListener, false);\n window.dispatchEvent(\n new CustomEvent<RelayRequestDetail>('ICONEX_RELAY_REQUEST', {\n detail: {\n type: 'REQUEST_JSON-RPC',\n payload: {\n jsonrpc: '2.0',\n method: 'icx_sendTransaction',\n params: rawTransaction,\n id: id,\n },\n },\n }),\n );\n });\n}\n\n/**\n * Icon Utils\n */\n\nexport function BigNumberToBigInt(bigNumber: BigNumber): bigint {\n if (!bigNumber.isInteger()) {\n throw new Error('Cannot convert decimal number to BigInt');\n }\n return BigInt(bigNumber.toFixed(0));\n}\n","import type { Network } from '@injectivelabs/networks';\nimport {\n MsgExecuteContract,\n MsgExecuteContractCompat,\n createTransaction,\n PrivateKey,\n getInjectiveSignerAddress,\n type TxResponse,\n} from '@injectivelabs/sdk-ts';\nimport type { Hex, JsonObject, InjectiveCoin, IInjectiveWalletProvider, InjectiveEoaAddress } from '@sodax/types';\nimport { InjectiveExecuteResponse, type InjectiveRawTransaction } from '@sodax/types';\nimport type { MsgBroadcaster } from '@injectivelabs/wallet-core';\nimport { MsgBroadcasterWithPk } from '@injectivelabs/sdk-ts';\nimport type { ChainId, EvmChainId } from '@injectivelabs/ts-types';\n\n/**\n * Injective Wallet Configuration Types\n */\n\nexport type BrowserExtensionInjectiveWalletConfig = {\n msgBroadcaster: MsgBroadcaster;\n};\n\nexport type SecretInjectiveWalletConfig = {\n secret:\n | {\n privateKey: string;\n }\n | {\n mnemonics: string;\n };\n chainId: ChainId;\n network: Network;\n evmOptions?: {\n evmChainId: EvmChainId;\n rpcUrl: `http${string}`;\n };\n};\n\nexport type InjectiveWalletConfig = BrowserExtensionInjectiveWalletConfig | SecretInjectiveWalletConfig;\n\n/**\n * Injective Type Guards\n */\n\nexport function isBrowserExtensionInjectiveWalletConfig(\n config: InjectiveWalletConfig,\n): config is BrowserExtensionInjectiveWalletConfig {\n return 'msgBroadcaster' in config;\n}\n\nexport function isSecretInjectiveWalletConfig(config: InjectiveWalletConfig): config is SecretInjectiveWalletConfig {\n return (\n 'secret' in config &&\n typeof config.secret === 'object' &&\n (('privateKey' in config.secret && typeof config.secret.privateKey === 'string') ||\n ('mnemonics' in config.secret && typeof config.secret.mnemonics === 'string')) &&\n 'network' in config &&\n 'chainId' in config\n );\n}\n\nexport type InjectiveWallet = {\n msgBroadcaster: MsgBroadcaster | MsgBroadcasterWithPk;\n};\n\nexport class InjectiveWalletProvider implements IInjectiveWalletProvider {\n public wallet: InjectiveWallet;\n\n constructor(config: InjectiveWalletConfig) {\n if (isBrowserExtensionInjectiveWalletConfig(config)) {\n this.wallet = {\n msgBroadcaster: config.msgBroadcaster,\n };\n } else if (isSecretInjectiveWalletConfig(config)) {\n let privateKey: PrivateKey;\n if ('privateKey' in config.secret) {\n privateKey = PrivateKey.fromPrivateKey(config.secret.privateKey);\n } else if ('mnemonics' in config.secret) {\n privateKey = PrivateKey.fromMnemonic(config.secret.mnemonics);\n } else {\n throw new Error('Invalid Secret Injective wallet config');\n }\n this.wallet = {\n msgBroadcaster: new MsgBroadcasterWithPk({ privateKey, network: config.network }),\n };\n } else {\n throw new Error('Invalid Injective wallet config');\n }\n }\n\n async getRawTransaction(\n chainId: string,\n _: string,\n senderAddress: string,\n contractAddress: string,\n msg: JsonObject,\n memo?: string,\n ): Promise<InjectiveRawTransaction> {\n const msgExec = MsgExecuteContract.fromJSON({\n contractAddress: contractAddress,\n sender: senderAddress,\n msg: msg as object,\n funds: [],\n });\n const { txRaw } = createTransaction({\n message: msgExec,\n memo: memo || '',\n pubKey: await this.getWalletPubKey(),\n sequence: 0,\n accountNumber: 0,\n chainId: chainId,\n });\n\n const rawTx = {\n from: senderAddress as Hex,\n to: contractAddress as Hex,\n signedDoc: {\n bodyBytes: txRaw.bodyBytes,\n chainId: chainId,\n accountNumber: BigInt(0),\n authInfoBytes: txRaw.authInfoBytes,\n },\n };\n return rawTx;\n }\n\n // return wallet address as bech32\n async getWalletAddress(): Promise<InjectiveEoaAddress> {\n if (this.wallet.msgBroadcaster instanceof MsgBroadcasterWithPk) {\n return getInjectiveSignerAddress(this.wallet.msgBroadcaster.privateKey.toAddress().toBech32());\n }\n const addresses = await this.wallet.msgBroadcaster.walletStrategy.getAddresses();\n const injectiveAddresses = addresses.map(getInjectiveSignerAddress);\n if (injectiveAddresses.length <= 0 || injectiveAddresses[0] === undefined) {\n return Promise.reject(new Error('Wallet address not found'));\n }\n\n return injectiveAddresses[0];\n }\n\n async getWalletPubKey(): Promise<string> {\n if (this.wallet.msgBroadcaster instanceof MsgBroadcasterWithPk) {\n return this.wallet.msgBroadcaster.privateKey.toPublicKey().toString();\n }\n const pubKey = await this.wallet.msgBroadcaster.walletStrategy.getPubKey();\n if (pubKey === undefined) {\n return Promise.reject(new Error('Wallet public key not found'));\n }\n return pubKey;\n }\n\n async execute(\n senderAddress: string,\n contractAddress: string,\n msg: JsonObject,\n funds?: InjectiveCoin[],\n ): Promise<InjectiveExecuteResponse> {\n const msgExec = MsgExecuteContractCompat.fromJSON({\n contractAddress: contractAddress,\n sender: senderAddress,\n msg: msg as object,\n funds: funds || [],\n });\n\n let txResult: TxResponse;\n\n if (this.wallet.msgBroadcaster instanceof MsgBroadcasterWithPk) {\n txResult = await this.wallet.msgBroadcaster.broadcast({\n msgs: msgExec,\n });\n } else {\n txResult = await this.wallet.msgBroadcaster.broadcastWithFeeDelegation({\n msgs: msgExec,\n injectiveAddress: await this.getWalletAddress(),\n });\n }\n\n return InjectiveExecuteResponse.fromTxResponse(txResult);\n }\n}\n","import { getAssociatedTokenAddress } from '@solana/spl-token';\nimport {\n type Commitment,\n Connection,\n Keypair,\n PublicKey,\n type RpcResponseAndContext,\n type TokenAmount,\n TransactionInstruction,\n TransactionMessage,\n VersionedTransaction,\n} from '@solana/web3.js';\nimport type {\n ISolanaWalletProvider,\n SolanaAccountMeta,\n SolanaBase58PublicKey,\n SolanaRpcResponseAndContext,\n SolanaSerializedTransaction,\n SolanaSignatureResult,\n SolanaRawTransactionInstruction,\n TransactionSignature,\n} from '@sodax/types';\nimport type { SignerWalletAdapterProps } from '@solana/wallet-adapter-base';\n\n// Wallet adapter pattern interface\ninterface WalletContextState {\n publicKey: PublicKey | null;\n signTransaction: SignerWalletAdapterProps['signTransaction'] | undefined;\n}\n\n// Direct keypair pattern configs\nexport type PrivateKeySolanaWalletConfig = {\n privateKey: Uint8Array;\n endpoint: string;\n};\n\n// Wallet adapter pattern config\nexport type BrowserExtensionSolanaWalletConfig = {\n wallet: WalletContextState;\n connection: Connection;\n};\n\n// Unified config type\nexport type SolanaWalletConfig = PrivateKeySolanaWalletConfig | BrowserExtensionSolanaWalletConfig;\n\n// Type guards\nfunction isPrivateKeySolanaWalletConfig(\n walletConfig: SolanaWalletConfig,\n): walletConfig is PrivateKeySolanaWalletConfig {\n return 'privateKey' in walletConfig;\n}\n\nfunction isBrowserExtensionSolanaWalletConfig(\n walletConfig: SolanaWalletConfig,\n): walletConfig is BrowserExtensionSolanaWalletConfig {\n return 'wallet' in walletConfig && !(walletConfig.wallet instanceof Keypair);\n}\n\nexport class SolanaWalletProvider implements ISolanaWalletProvider {\n private readonly wallet: Keypair | WalletContextState;\n public readonly connection: Connection;\n private readonly isAdapterMode: boolean;\n\n constructor(walletConfig: SolanaWalletConfig) {\n if (isPrivateKeySolanaWalletConfig(walletConfig)) {\n this.wallet = Keypair.fromSecretKey(walletConfig.privateKey);\n this.connection = new Connection(walletConfig.endpoint, 'confirmed');\n this.isAdapterMode = false;\n } else if (isBrowserExtensionSolanaWalletConfig(walletConfig)) {\n this.wallet = walletConfig.wallet;\n this.connection = walletConfig.connection;\n this.isAdapterMode = true;\n } else {\n throw new Error('Invalid wallet configuration');\n }\n }\n\n public async waitForConfirmation(\n signature: string,\n commitment: Commitment = 'finalized',\n ): Promise<SolanaRpcResponseAndContext<SolanaSignatureResult>> {\n const latestBlockhash = await this.connection.getLatestBlockhash();\n const response = await this.connection.confirmTransaction(\n {\n signature,\n blockhash: latestBlockhash.blockhash,\n lastValidBlockHeight: latestBlockhash.lastValidBlockHeight,\n },\n commitment,\n );\n\n return response;\n }\n\n /**\n * Send a raw transaction to the Solana network.\n * @param rawTransaction - The raw transaction to send.\n * @returns The transaction signature.\n */\n public async sendTransaction(rawTransaction: Uint8Array | Array<number>): Promise<TransactionSignature> {\n return this.connection.sendRawTransaction(rawTransaction);\n }\n\n /**\n * Send a raw transaction to the Solana network and wait for confirmation.\n * @param rawTransaction - The raw transaction to send.\n * @param commitment - The commitment level to use. Defaults to 'finalized'.\n * @returns The transaction signature.\n */\n public async sendTransactionWithConfirmation(\n rawTransaction: Uint8Array | Array<number>,\n commitment: Commitment = 'finalized',\n ): Promise<TransactionSignature> {\n const txHash = await this.connection.sendRawTransaction(rawTransaction);\n await this.waitForConfirmation(txHash, commitment);\n return txHash;\n }\n\n /**\n * Build a v0 versioned transaction.\n * @param instructions - The instructions to include in the transaction.\n * @returns The v0 transaction.\n */\n async buildV0Txn(rawInstructions: SolanaRawTransactionInstruction[]): Promise<SolanaSerializedTransaction> {\n if (this.isAdapterMode) {\n return this.buildV0TxnWithAdapter(rawInstructions);\n }\n return this.buildV0TxnWithKeypair(rawInstructions);\n }\n\n private async buildV0TxnWithAdapter(\n rawInstructions: SolanaRawTransactionInstruction[],\n ): Promise<SolanaSerializedTransaction> {\n const adapterWallet = this.wallet as WalletContextState;\n\n if (!adapterWallet.publicKey) {\n throw new Error('Wallet public key is not initialized');\n }\n\n if (!adapterWallet.signTransaction) {\n throw new Error('Wallet signTransaction is not initialized');\n }\n\n const instructions = this.buildTransactionInstruction(rawInstructions);\n const latestBlockhash = await this.connection.getLatestBlockhash();\n const messageV0 = new TransactionMessage({\n payerKey: adapterWallet.publicKey,\n recentBlockhash: latestBlockhash.blockhash,\n instructions,\n }).compileToV0Message();\n\n const tx = await adapterWallet.signTransaction(new VersionedTransaction(messageV0));\n return tx.serialize();\n }\n\n private async buildV0TxnWithKeypair(\n rawInstructions: SolanaRawTransactionInstruction[],\n ): Promise<SolanaSerializedTransaction> {\n const keypairWallet = this.wallet as Keypair;\n const instructions = this.buildTransactionInstruction(rawInstructions);\n\n const messageV0 = new TransactionMessage({\n payerKey: keypairWallet.publicKey,\n recentBlockhash: (await this.connection.getLatestBlockhash()).blockhash,\n instructions,\n }).compileToV0Message();\n\n const tx = new VersionedTransaction(messageV0);\n tx.sign([keypairWallet]);\n\n return tx.serialize();\n }\n\n public getWalletBase58PublicKey(): SolanaBase58PublicKey {\n if (!this.wallet.publicKey) {\n throw new Error('Wallet public key is not initialized');\n }\n return this.wallet.publicKey.toBase58();\n }\n\n public async getWalletAddress(): Promise<string> {\n return this.getWalletBase58PublicKey();\n }\n\n public async getAssociatedTokenAddress(mint: SolanaBase58PublicKey): Promise<SolanaBase58PublicKey> {\n if (!this.wallet.publicKey) {\n throw new Error('Wallet public key is not initialized');\n }\n\n return (await getAssociatedTokenAddress(new PublicKey(mint), this.wallet.publicKey, true)).toBase58();\n }\n\n public async getBalance(publicKey: SolanaBase58PublicKey): Promise<number> {\n return await this.connection.getBalance(new PublicKey(publicKey));\n }\n\n public async getTokenAccountBalance(publicKey: SolanaBase58PublicKey): Promise<RpcResponseAndContext<TokenAmount>> {\n return this.connection.getTokenAccountBalance(new PublicKey(publicKey));\n }\n\n private buildTransactionInstruction(rawInstructions: SolanaRawTransactionInstruction[]): TransactionInstruction[] {\n return rawInstructions.map(\n rawInstruction =>\n new TransactionInstruction({\n keys: rawInstruction.keys.map((key: SolanaAccountMeta) => ({\n pubkey: new PublicKey(key.pubkey),\n isSigner: key.isSigner,\n isWritable: key.isWritable,\n })),\n programId: new PublicKey(rawInstruction.programId),\n data: Buffer.from(rawInstruction.data),\n }),\n );\n }\n}\n","import type { Hex, IStellarWalletProvider, StellarRawTransactionReceipt, XDR } from '@sodax/types';\nimport { Networks, Horizon, Transaction, Keypair } from '@stellar/stellar-sdk';\n\ninterface StellarWalletsKit {\n getAddress(): Promise<{ address: string }>;\n signTransaction(tx: XDR, options: { networkPassphrase: string }): Promise<{ signedTxXdr: XDR }>;\n}\n\nexport type StellarNetwork = 'TESTNET' | 'PUBLIC';\n\nconst STELLAR_HORIZON_URLS: { [key in StellarNetwork]: string } = {\n TESTNET: 'https://horizon-testnet.stellar.org',\n PUBLIC: 'https://horizon.stellar.org',\n};\n\nconst STELLAR_NETWORK_PASSPHRASES: { [key in StellarNetwork]: string } = {\n TESTNET: Networks.TESTNET,\n PUBLIC: Networks.PUBLIC,\n};\n\nconst TX_POLL_INTERVAL = 2000; // 2 seconds\nconst TX_POLL_TIMEOUT = 60000; // 60 seconds\n\nconst STELLAR_ERROR_CODES = {\n INVALID_CONFIG: 'INVALID_CONFIG',\n SIGN_TX_ERROR: 'SIGN_TX_ERROR',\n TX_RECEIPT_TIMEOUT: 'TX_RECEIPT_TIMEOUT',\n SEND_TX_ERROR: 'SEND_TX_ERROR',\n INVALID_NETWORK: 'INVALID_NETWORK',\n INVALID_PRIVATE_KEY: 'INVALID_PRIVATE_KEY',\n} as const;\n\nexport type StellarAddress = string; // Stellar addresses are in format: G...\n\nexport type PrivateKeyStellarWalletConfig = {\n type: 'PRIVATE_KEY';\n privateKey: Hex;\n network: StellarNetwork;\n rpcUrl?: string;\n};\n\nexport type BrowserExtensionStellarWalletConfig = {\n type: 'BROWSER_EXTENSION';\n walletsKit: StellarWalletsKit;\n network: StellarNetwork;\n rpcUrl?: string;\n};\n\nexport type StellarWalletConfig = PrivateKeyStellarWalletConfig | BrowserExtensionStellarWalletConfig;\n\nexport type StellarPkWallet = {\n type: 'PRIVATE_KEY';\n keypair: Keypair;\n};\n\nexport type StellarBrowserExtensionWallet = {\n type: 'BROWSER_EXTENSION';\n walletsKit: StellarWalletsKit;\n};\n\nexport type StellarWallet = StellarPkWallet | StellarBrowserExtensionWallet;\n\nexport class StellarWalletError extends Error {\n constructor(\n message: string,\n public readonly code: keyof typeof STELLAR_ERROR_CODES,\n ) {\n super(message);\n this.name = 'StellarWalletError';\n }\n}\n\nexport function isPrivateKeyStellarWalletConfig(config: StellarWalletConfig): config is PrivateKeyStellarWalletConfig {\n return config.type === 'PRIVATE_KEY';\n}\n\nexport function isBrowserExtensionStellarWalletConfig(\n config: StellarWalletConfig,\n): config is BrowserExtensionStellarWalletConfig {\n return config.type === 'BROWSER_EXTENSION';\n}\n\nexport function isStellarPkWallet(wallet: StellarWallet): wallet is StellarPkWallet {\n return wallet.type === 'PRIVATE_KEY';\n}\n\nexport function isStellarBrowserExtensionWallet(wallet: StellarWallet): wallet is StellarBrowserExtensionWallet {\n return wallet.type === 'BROWSER_EXTENSION';\n}\n\nexport function isValidStellarNetwork(network: string): network is StellarNetwork {\n return ['TESTNET', 'PUBLIC'].includes(network);\n}\n\nexport function isValidStellarPrivateKey(privateKey: string): boolean {\n try {\n // Remove '0x' prefix if present\n const key = privateKey.startsWith('0x') ? privateKey.slice(2) : privateKey;\n Keypair.fromSecret(key);\n return true;\n } catch {\n return false;\n }\n}\n\nexport class StellarWalletProvider implements IStellarWalletProvider {\n private readonly wallet: StellarWallet;\n private readonly server: Horizon.Server;\n private readonly networkPassphrase: string;\n\n constructor(config: StellarWalletConfig) {\n if (!isValidStellarNetwork(config.network)) {\n throw new StellarWalletError(`Invalid network: ${config.network}`, 'INVALID_NETWORK');\n }\n\n if (isPrivateKeyStellarWalletConfig(config)) {\n if (!isValidStellarPrivateKey(config.privateKey)) {\n throw new StellarWalletError('Invalid private key format', 'INVALID_PRIVATE_KEY');\n }\n // Remove '0x' prefix if present\n const privateKey = config.privateKey.startsWith('0x') ? config.privateKey.slice(2) : config.privateKey;\n this.wallet = {\n type: 'PRIVATE_KEY',\n keypair: Keypair.fromSecret(privateKey),\n };\n this.server = new Horizon.Server(config.rpcUrl ?? STELLAR_HORIZON_URLS[config.network]);\n this.networkPassphrase = STELLAR_NETWORK_PASSPHRASES[config.network];\n return;\n }\n\n if (isBrowserExtensionStellarWalletConfig(config)) {\n this.wallet = {\n type: 'BROWSER_EXTENSION',\n walletsKit: config.walletsKit,\n };\n this.server = new Horizon.Server(config.rpcUrl ?? STELLAR_HORIZON_URLS[config.network]);\n this.networkPassphrase = STELLAR_NETWORK_PASSPHRASES[config.network];\n return;\n }\n\n throw new StellarWalletError('Invalid wallet configuration', 'INVALID_CONFIG');\n }\n\n public async getWalletAddress(): Promise<string> {\n try {\n if (isStellarPkWallet(this.wallet)) {\n return this.wallet.keypair.publicKey();\n }\n\n const { address } = await this.wallet.walletsKit.getAddress();\n return address;\n } catch (error) {\n throw new StellarWalletError(\n error instanceof Error ? error.message : 'Failed to get wallet address',\n 'INVALID_CONFIG',\n );\n }\n }\n\n public async signTransaction(tx: XDR): Promise<XDR> {\n try {\n if (isStellarPkWallet(this.wallet)) {\n // Parse the XDR transaction\n const transaction = new Transaction(tx, this.networkPassphrase);\n transaction.sign(this.wallet.keypair);\n return transaction.toXDR();\n }\n\n const { signedTxXdr } = await this.wallet.walletsKit.signTransaction(tx, {\n networkPassphrase: this.networkPassphrase,\n });\n return signedTxXdr;\n } catch (error) {\n throw new StellarWalletError(\n error instanceof Error ? error.message : 'Failed to sign transaction',\n 'SIGN_TX_ERROR',\n );\n }\n }\n\n public async waitForTransactionReceipt(txHash: string): Promise<StellarRawTransactionReceipt> {\n const startTime = Date.now();\n while (Date.now() - startTime < TX_POLL_TIMEOUT) {\n try {\n const tx = await this.server.transactions().transaction(txHash).call();\n\n return {\n ...tx,\n _links: {\n ...tx._links,\n transaction: tx._links.self,\n },\n };\n } catch (error) {\n // Wait for the next poll interval\n await new Promise(resolve => setTimeout(resolve, TX_POLL_INTERVAL));\n }\n }\n throw new StellarWalletError(\n `Transaction receipt not found for hash ${txHash} after ${TX_POLL_TIMEOUT / 1000} seconds.`,\n 'TX_RECEIPT_TIMEOUT',\n );\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/wallet-providers/EvmWalletProvider.ts","../src/wallet-providers/SuiWalletProvider.ts","../src/wallet-providers/IconWalletProvider.ts","../src/wallet-providers/InjectiveWalletProvider.ts","../src/wallet-providers/SolanaWalletProvider.ts","../src/wallet-providers/StellarWalletProvider.ts"],"names":["SONIC_MAINNET_CHAIN_ID","sonic","AVALANCHE_MAINNET_CHAIN_ID","avalanche","ARBITRUM_MAINNET_CHAIN_ID","arbitrum","BASE_MAINNET_CHAIN_ID","base","OPTIMISM_MAINNET_CHAIN_ID","optimism","BSC_MAINNET_CHAIN_ID","bsc","POLYGON_MAINNET_CHAIN_ID","polygon","ETHEREUM_MAINNET_CHAIN_ID","mainnet","createWalletClient","http","privateKeyToAccount","createPublicClient","SuiClient","Ed25519Keypair","signTransaction","IconSdkRaw","result","PrivateKey","MsgBroadcasterWithPk","MsgExecuteContract","createTransaction","getInjectiveSignerAddress","MsgExecuteContractCompat","InjectiveExecuteResponse","Keypair","Connection","TransactionMessage","VersionedTransaction","getAssociatedTokenAddress","PublicKey","TransactionInstruction","Networks","Horizon","Transaction"],"mappings":"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","file":"index.cjs","sourcesContent":["import type { ChainId, EvmRawTransaction, EvmRawTransactionReceipt, IEvmWalletProvider } from '@sodax/types';\nimport type { Account, Address, Chain, Transport, Hash, PublicClient, WalletClient } from 'viem';\nimport { privateKeyToAccount } from 'viem/accounts';\nimport { createWalletClient, createPublicClient, http } from 'viem';\nimport { sonic, avalanche, arbitrum, base, optimism, bsc, polygon, mainnet } from 'viem/chains';\nimport {\n SONIC_MAINNET_CHAIN_ID,\n AVALANCHE_MAINNET_CHAIN_ID,\n ARBITRUM_MAINNET_CHAIN_ID,\n BASE_MAINNET_CHAIN_ID,\n OPTIMISM_MAINNET_CHAIN_ID,\n BSC_MAINNET_CHAIN_ID,\n POLYGON_MAINNET_CHAIN_ID,\n ETHEREUM_MAINNET_CHAIN_ID,\n} from '@sodax/types';\n\nexport function getEvmViemChain(id: ChainId): Chain {\n switch (id) {\n case SONIC_MAINNET_CHAIN_ID:\n return sonic;\n case AVALANCHE_MAINNET_CHAIN_ID:\n return avalanche;\n case ARBITRUM_MAINNET_CHAIN_ID:\n return arbitrum;\n case BASE_MAINNET_CHAIN_ID:\n return base;\n case OPTIMISM_MAINNET_CHAIN_ID:\n return optimism;\n case BSC_MAINNET_CHAIN_ID:\n return bsc;\n case POLYGON_MAINNET_CHAIN_ID:\n return polygon;\n case ETHEREUM_MAINNET_CHAIN_ID:\n return mainnet;\n default:\n throw new Error(`Unsupported EVM chain ID: ${id}`);\n }\n}\n\nexport class EvmWalletProvider implements IEvmWalletProvider {\n private readonly walletClient: WalletClient<Transport, Chain, Account>;\n public readonly publicClient: PublicClient;\n\n constructor(config: EvmWalletConfig) {\n if (isPrivateKeyEvmWalletConfig(config)) {\n const chain = getEvmViemChain(config.chainId);\n this.walletClient = createWalletClient({\n chain,\n transport: http(config.rpcUrl ?? chain.rpcUrls.default.http[0]),\n account: privateKeyToAccount(config.privateKey),\n });\n this.publicClient = createPublicClient({\n chain,\n transport: http(config.rpcUrl ?? chain.rpcUrls.default.http[0]),\n });\n } else if (isBrowserExtensionEvmWalletConfig(config)) {\n this.walletClient = config.walletClient;\n this.publicClient = config.publicClient;\n } else {\n throw new Error('Invalid EVM wallet config');\n }\n }\n\n async sendTransaction(evmRawTx: EvmRawTransaction): Promise<Hash> {\n return this.walletClient.sendTransaction(evmRawTx);\n }\n\n async waitForTransactionReceipt(txHash: Hash): Promise<EvmRawTransactionReceipt> {\n const receipt = await this.publicClient.waitForTransactionReceipt({ hash: txHash });\n return {\n ...receipt,\n transactionIndex: receipt.transactionIndex.toString(),\n blockNumber: receipt.blockNumber.toString(),\n cumulativeGasUsed: receipt.cumulativeGasUsed.toString(),\n gasUsed: receipt.gasUsed.toString(),\n contractAddress: receipt.contractAddress?.toString() ?? null,\n logs: receipt.logs.map(log => ({\n ...log,\n blockNumber: log.blockNumber.toString() as `0x${string}`,\n logIndex: log.logIndex.toString() as `0x${string}`,\n transactionIndex: log.transactionIndex.toString() as `0x${string}`,\n })),\n effectiveGasPrice: receipt.effectiveGasPrice.toString(),\n };\n }\n\n async getWalletAddress(): Promise<Address> {\n return this.walletClient.account.address;\n }\n}\n\n/**\n * EVM Wallet Configuration Types\n */\n\nexport type PrivateKeyEvmWalletConfig = {\n privateKey: `0x${string}`;\n chainId: ChainId;\n rpcUrl?: `http${string}`;\n};\n\nexport type BrowserExtensionEvmWalletConfig = {\n walletClient: WalletClient<Transport, Chain, Account>;\n publicClient: PublicClient;\n};\n\nexport type EvmWalletConfig = PrivateKeyEvmWalletConfig | BrowserExtensionEvmWalletConfig;\n\n/**\n * EVM Type Guards\n */\n\nexport function isPrivateKeyEvmWalletConfig(config: EvmWalletConfig): config is PrivateKeyEvmWalletConfig {\n return 'privateKey' in config && config.privateKey.startsWith('0x');\n}\n\nexport function isBrowserExtensionEvmWalletConfig(config: EvmWalletConfig): config is BrowserExtensionEvmWalletConfig {\n return 'walletClient' in config && 'publicClient' in config;\n}\n","import { SuiClient } from '@mysten/sui/client';\nimport { Ed25519Keypair } from '@mysten/sui/keypairs/ed25519';\nimport type { Transaction, TransactionArgument } from '@mysten/sui/transactions';\nimport type { ISuiWalletProvider, SuiTransaction, SuiExecutionResult, SuiPaginatedCoins } from '@sodax/types';\nimport {\n signTransaction,\n type SuiWalletFeatures,\n type WalletAccount,\n type WalletWithFeatures,\n} from '@mysten/wallet-standard';\n\n// Private key wallet config\nexport type PrivateKeySuiWalletConfig = {\n rpcUrl: string;\n mnemonics: string;\n};\n\n// Browser extension wallet config\nexport type BrowserExtensionSuiWalletConfig = {\n client: SuiClient;\n wallet: WalletWithFeatures<Partial<SuiWalletFeatures>>;\n account: WalletAccount;\n};\n\n// Unified config type\nexport type SuiWalletConfig = PrivateKeySuiWalletConfig | BrowserExtensionSuiWalletConfig;\n\n// Type guards\nfunction isPrivateKeySuiWalletConfig(walletConfig: SuiWalletConfig): walletConfig is PrivateKeySuiWalletConfig {\n return 'mnemonics' in walletConfig;\n}\n\nfunction isBrowserExtensionSuiWalletConfig(\n walletConfig: SuiWalletConfig,\n): walletConfig is BrowserExtensionSuiWalletConfig {\n return 'wallet' in walletConfig && 'account' in walletConfig;\n}\n\nexport type PkSuiWallet = {\n keyPair: Ed25519Keypair;\n};\n\nexport type BrowserExtensionSuiWallet = {\n wallet: WalletWithFeatures<Partial<SuiWalletFeatures>>;\n account: WalletAccount;\n};\n\nexport type SuiWallet = PkSuiWallet | BrowserExtensionSuiWallet;\n\nexport function isPkSuiWallet(wallet: SuiWallet): wallet is PkSuiWallet {\n return 'keyPair' in wallet;\n}\n\nexport function isBrowserExtensionSuiWallet(wallet: SuiWallet): wallet is BrowserExtensionSuiWallet {\n return 'wallet' in wallet && 'account' in wallet;\n}\n\nexport function isSuiWallet(wallet: SuiWallet): wallet is SuiWallet {\n return isPkSuiWallet(wallet) || isBrowserExtensionSuiWallet(wallet);\n}\n\nexport class SuiWalletProvider implements ISuiWalletProvider {\n private readonly client: SuiClient;\n private readonly wallet: SuiWallet;\n\n constructor(walletConfig: SuiWalletConfig) {\n if (isPrivateKeySuiWalletConfig(walletConfig)) {\n this.client = new SuiClient({ url: walletConfig.rpcUrl });\n this.wallet = {\n keyPair: Ed25519Keypair.deriveKeypair(walletConfig.mnemonics),\n };\n } else if (isBrowserExtensionSuiWalletConfig(walletConfig)) {\n this.client = walletConfig.client;\n this.wallet = {\n wallet: walletConfig.wallet,\n account: walletConfig.account,\n };\n } else {\n throw new Error('Invalid wallet configuration');\n }\n }\n\n async signAndExecuteTxn(txn: SuiTransaction): Promise<string> {\n if (isPkSuiWallet(this.wallet)) {\n const res = await this.client.signAndExecuteTransaction({\n transaction: txn as unknown as Transaction,\n signer: this.wallet.keyPair,\n });\n\n return res.digest;\n }\n if (isBrowserExtensionSuiWallet(this.wallet)) {\n const browserWallet = this.wallet.wallet;\n const browserAccount = this.wallet.account;\n\n if (!browserAccount || browserAccount.chains.length === 0) {\n throw new Error('No chains available for wallet account');\n }\n const chain = browserAccount.chains[0];\n if (!chain) {\n throw new Error('No chain available for wallet account');\n }\n const { bytes, signature } = await signTransaction(browserWallet, {\n transaction: txn,\n account: browserAccount,\n chain,\n });\n\n const res = await this.client.executeTransactionBlock({\n transactionBlock: bytes,\n signature,\n options: {\n showRawEffects: true,\n },\n });\n\n return res.digest;\n }\n\n throw new Error('Invalid wallet configuration');\n }\n\n async viewContract(\n tx: Transaction,\n packageId: string,\n module: string,\n functionName: string,\n args: unknown[],\n typeArgs: string[] = [],\n ): Promise<SuiExecutionResult> {\n tx.moveCall({\n target: `${packageId}::${module}::${functionName}`,\n arguments: args as TransactionArgument[],\n typeArguments: typeArgs,\n });\n\n const sender = this.getSuiAddress();\n\n const txResults = await this.client.devInspectTransactionBlock({\n transactionBlock: tx,\n sender,\n });\n\n if (txResults.results && txResults.results[0] !== undefined) {\n return txResults.results[0] as SuiExecutionResult;\n }\n throw Error(`transaction didn't return any values: ${JSON.stringify(txResults, null, 2)}`);\n }\n\n async getCoins(address: string, token: string): Promise<SuiPaginatedCoins> {\n return this.client.getCoins({ owner: address, coinType: token, limit: 10 });\n }\n\n private getSuiAddress(): string {\n if (isPkSuiWallet(this.wallet)) {\n return this.wallet.keyPair.toSuiAddress();\n }\n if (isBrowserExtensionSuiWallet(this.wallet)) {\n return this.wallet.account.address;\n }\n throw new Error('Invalid wallet configuration');\n }\n\n async getWalletAddress(): Promise<string> {\n return this.getSuiAddress();\n }\n}\n","import type { IconTransactionResult, IcxCallTransaction, IIconWalletProvider } from '@sodax/types';\nimport type { IconService, Wallet as IconSdkWallet } from 'icon-sdk-js';\nimport * as IconSdkRaw from 'icon-sdk-js';\nconst IconSdk = ('default' in IconSdkRaw.default ? IconSdkRaw.default : IconSdkRaw) as typeof IconSdkRaw;\nconst { Converter, CallTransactionBuilder, Wallet } = IconSdk;\n\nexport class IconWalletProvider implements IIconWalletProvider {\n private readonly wallet: IconWallet;\n public readonly iconService: IconService;\n\n constructor(wallet: IconWalletConfig) {\n if (isPrivateKeyIconWalletConfig(wallet)) {\n this.wallet = {\n type: 'PRIVATE_KEY',\n wallet: Wallet.loadPrivateKey(wallet.privateKey.slice(2)),\n };\n this.iconService = new IconSdk.IconService(new IconSdk.IconService.HttpProvider(wallet.rpcUrl));\n } else if (isBrowserExtensionIconWalletConfig(wallet)) {\n this.wallet = {\n type: 'BROWSER_EXTENSION',\n wallet: wallet.walletAddress,\n };\n this.iconService = new IconSdk.IconService(new IconSdk.IconService.HttpProvider(wallet.rpcUrl));\n } else {\n throw new Error('Invalid Icon wallet config');\n }\n }\n\n public async sendTransaction(tx: IcxCallTransaction): Promise<Hash> {\n const builtTx = new CallTransactionBuilder()\n .from(tx.from)\n .to(tx.to)\n .stepLimit(Converter.toHex(3000000))\n .nid(tx.nid)\n .version(tx.version ?? '0x3')\n .timestamp(Converter.toHex(tx.timestamp ?? new Date().getTime() * 1000))\n .value(tx.value)\n .method(tx.method)\n .params(tx.params)\n .build();\n\n if (!isIconPkWallet(this.wallet)) {\n // if wallet starts with 0x, it's a private key\n const result = await requestJsonRpc(builtTx);\n\n return result.result satisfies string as Hash;\n }\n const signedTx = new IconSdk.IconService.SignedTransaction(builtTx, this.wallet.wallet);\n const result = await this.iconService.sendTransaction(signedTx).execute();\n\n return result satisfies string as Hash;\n }\n\n public async waitForTransactionReceipt(txHash: Hash): Promise<IconTransactionResult> {\n const result = await this.iconService.waitTransactionResult(txHash).execute();\n\n return {\n ...result,\n status: +result.status,\n cumulativeStepUsed: BigNumberToBigInt(result.cumulativeStepUsed),\n stepUsed: BigNumberToBigInt(result.stepUsed),\n stepPrice: BigNumberToBigInt(result.stepPrice),\n } satisfies IconTransactionResult;\n }\n\n async getWalletAddress(): Promise<IconEoaAddress> {\n if (!this.wallet.wallet) {\n throw new Error('Wallet not initialized');\n }\n return isIconPkWallet(this.wallet) ? (this.wallet.wallet.getAddress() as IconEoaAddress) : this.wallet.wallet;\n }\n}\n\n/**\n * Icon Types\n */\n\nexport type IconJsonRpcVersion = '2.0';\n\nexport type Hex = `0x${string}`;\nexport type Hash = `0x${string}`;\nexport type IconAddress = `hx${string}` | `cx${string}`;\nexport type IconEoaAddress = `hx${string}`;\n\nexport type PrivateKeyIconWalletConfig = {\n privateKey: `0x${string}`;\n rpcUrl: `http${string}`;\n};\n\nexport type BrowserExtensionIconWalletConfig = {\n walletAddress?: IconEoaAddress;\n rpcUrl: `http${string}`;\n};\n\nexport type IconWalletConfig = PrivateKeyIconWalletConfig | BrowserExtensionIconWalletConfig;\n\nexport type IconPkWallet = {\n type: 'PRIVATE_KEY';\n wallet: IconSdkWallet;\n};\n\nexport type IconBrowserExtensionWallet = {\n type: 'BROWSER_EXTENSION';\n wallet?: IconEoaAddress;\n};\n\nexport type IconWallet = IconPkWallet | IconBrowserExtensionWallet;\n\nexport type HanaWalletRequestEvent =\n | 'REQUEST_HAS_ACCOUNT'\n | 'REQUEST_HAS_ADDRESS'\n | 'REQUEST_ADDRESS'\n | 'REQUEST_JSON'\n | 'REQUEST_SIGNING'\n | 'REQUEST_JSON-RPC';\nexport type HanaWalletResponseEvent =\n | 'RESPONSE_HAS_ACCOUNT'\n | 'RESPONSE_HAS_ADDRESS'\n | 'RESPONSE_ADDRESS'\n | 'RESPONSE_JSON-RPC'\n | 'RESPONSE_SIGNING'\n | 'CANCEL_SIGNING'\n | 'CANCEL_JSON-RPC';\n\nexport type ResponseAddressType = {\n type: 'RESPONSE_ADDRESS';\n payload: IconAddress;\n};\n\nexport type ResponseSigningType = {\n type: 'RESPONSE_SIGNING';\n payload: string;\n};\n\nexport type RelayRequestDetail = {\n type: HanaWalletRequestEvent;\n payload?: {\n jsonrpc: IconJsonRpcVersion;\n method: string;\n params: unknown;\n id: number | undefined;\n };\n};\n\nexport type RelayRequestSigning = {\n type: 'REQUEST_SIGNING';\n payload: {\n from: IconAddress;\n hash: string;\n };\n};\n\nexport type JsonRpcPayloadResponse = {\n id: number;\n result: string; // txHash\n};\n\ninterface RelayResponseEventDetail {\n type: HanaWalletResponseEvent;\n payload: unknown;\n}\n\n/**\n * Icon Type Guards\n */\n\nexport function isIconPkWallet(wallet: IconWallet): wallet is IconPkWallet {\n return wallet.type === 'PRIVATE_KEY';\n}\n\nexport function isIconBrowserExtensionWallet(wallet: IconWallet): wallet is IconBrowserExtensionWallet {\n return wallet.type === 'BROWSER_EXTENSION';\n}\n\nexport function isPrivateKeyIconWalletConfig(config: IconWalletConfig): config is PrivateKeyIconWalletConfig {\n return 'privateKey' in config && config.privateKey.startsWith('0x');\n}\n\nexport function isBrowserExtensionIconWalletConfig(\n config: IconWalletConfig,\n): config is BrowserExtensionIconWalletConfig {\n return 'walletAddress' in config && (isIconEoaAddress(config.walletAddress) || !config.walletAddress);\n}\n\nexport function isIconAddress(value: unknown): value is IconAddress {\n return typeof value === 'string' && /^hx[a-f0-9]{40}$|^cx[a-f0-9]{40}$/.test(value);\n}\n\nexport function isIconEoaAddress(value: unknown): value is IconEoaAddress {\n return typeof value === 'string' && /^hx[a-f0-9]{40}$/.test(value);\n}\n\nexport function isResponseAddressType(value: unknown): value is ResponseAddressType {\n return (\n typeof value === 'object' &&\n value !== null &&\n 'type' in value &&\n 'payload' in value &&\n value.type === 'RESPONSE_ADDRESS' &&\n isIconAddress(value.payload)\n );\n}\n\nexport function isResponseSigningType(value: unknown): value is ResponseSigningType {\n return (\n typeof value === 'object' &&\n value !== null &&\n 'type' in value &&\n 'payload' in value &&\n value.type === 'RESPONSE_SIGNING' &&\n typeof value.payload === 'string'\n );\n}\n\nexport function isJsonRpcPayloadResponse(value: unknown): value is JsonRpcPayloadResponse {\n return (\n typeof value === 'object' &&\n value !== null &&\n 'id' in value &&\n 'result' in value &&\n typeof value.result === 'string'\n );\n}\n\n/**\n * Methods to interact with Icon Browser Extension Wallet (e.g. Hana Wallet)\n */\n\nexport function requestAddress(): Promise<IconAddress> {\n return new Promise(resolve => {\n const eventHandler = (event: Event) => {\n const customEvent = event as CustomEvent<RelayResponseEventDetail>;\n const response = customEvent.detail;\n if (isResponseAddressType(response)) {\n window.removeEventListener('ICONEX_RELAY_RESPONSE', eventHandler as EventListener, false);\n resolve(response.payload);\n }\n };\n\n window.removeEventListener('ICONEX_RELAY_RESPONSE', eventHandler, false);\n window.addEventListener('ICONEX_RELAY_RESPONSE', eventHandler, false);\n window.dispatchEvent(\n new CustomEvent<RelayRequestDetail>('ICONEX_RELAY_REQUEST', {\n detail: {\n type: 'REQUEST_ADDRESS',\n },\n }),\n );\n });\n}\n\nexport function requestSigning(from: IconAddress, hash: string): Promise<string> {\n return new Promise((resolve, reject) => {\n const signRequest = new CustomEvent<RelayRequestSigning>('ICONEX_RELAY_REQUEST', {\n detail: {\n type: 'REQUEST_SIGNING',\n payload: {\n from,\n hash,\n },\n },\n });\n\n const eventHandler = (event: Event) => {\n const customEvent = event as CustomEvent<RelayResponseEventDetail>;\n const response = customEvent.detail;\n if (isResponseSigningType(response)) {\n window.removeEventListener('ICONEX_RELAY_RESPONSE', eventHandler as EventListener, false);\n\n // resolve signature\n resolve(response.payload);\n } else if (response.type === 'CANCEL_SIGNING') {\n reject(new Error('CANCEL_SIGNING'));\n }\n };\n\n window.removeEventListener('ICONEX_RELAY_RESPONSE', eventHandler as EventListener, false);\n window.addEventListener('ICONEX_RELAY_RESPONSE', eventHandler as EventListener, false);\n window.dispatchEvent(signRequest);\n });\n}\n\nexport function requestJsonRpc(rawTransaction: unknown, id = 99999): Promise<JsonRpcPayloadResponse> {\n return new Promise((resolve, reject) => {\n const eventHandler = (event: Event) => {\n const customEvent = event as CustomEvent<RelayResponseEventDetail>;\n const { type, payload } = customEvent.detail;\n if (type === 'RESPONSE_JSON-RPC') {\n window.removeEventListener('ICONEX_RELAY_RESPONSE', eventHandler as EventListener, false);\n\n if (isJsonRpcPayloadResponse(payload)) {\n resolve(payload);\n } else {\n reject(new Error('Invalid payload response type (expected JsonRpcPayloadResponse)'));\n }\n } else if (type === 'CANCEL_JSON-RPC') {\n window.removeEventListener('ICONEX_RELAY_RESPONSE', eventHandler as EventListener, false);\n reject(new Error('CANCEL_JSON-RPC'));\n }\n };\n\n window.removeEventListener('ICONEX_RELAY_RESPONSE', eventHandler as EventListener, false);\n window.addEventListener('ICONEX_RELAY_RESPONSE', eventHandler as EventListener, false);\n window.dispatchEvent(\n new CustomEvent<RelayRequestDetail>('ICONEX_RELAY_REQUEST', {\n detail: {\n type: 'REQUEST_JSON-RPC',\n payload: {\n jsonrpc: '2.0',\n method: 'icx_sendTransaction',\n params: rawTransaction,\n id: id,\n },\n },\n }),\n );\n });\n}\n\n/**\n * Icon Utils\n */\n\nexport function BigNumberToBigInt(bigNumber: BigNumber): bigint {\n if (!bigNumber.isInteger()) {\n throw new Error('Cannot convert decimal number to BigInt');\n }\n return BigInt(bigNumber.toFixed(0));\n}\n","import type { Network } from '@injectivelabs/networks';\nimport {\n MsgExecuteContract,\n MsgExecuteContractCompat,\n createTransaction,\n PrivateKey,\n getInjectiveSignerAddress,\n type TxResponse,\n} from '@injectivelabs/sdk-ts';\nimport type { Hex, JsonObject, InjectiveCoin, IInjectiveWalletProvider, InjectiveEoaAddress } from '@sodax/types';\nimport { InjectiveExecuteResponse, type InjectiveRawTransaction } from '@sodax/types';\nimport type { MsgBroadcaster } from '@injectivelabs/wallet-core';\nimport { MsgBroadcasterWithPk } from '@injectivelabs/sdk-ts';\nimport type { ChainId, EvmChainId } from '@injectivelabs/ts-types';\n\n/**\n * Injective Wallet Configuration Types\n */\n\nexport type BrowserExtensionInjectiveWalletConfig = {\n msgBroadcaster: MsgBroadcaster;\n};\n\nexport type SecretInjectiveWalletConfig = {\n secret:\n | {\n privateKey: string;\n }\n | {\n mnemonics: string;\n };\n chainId: ChainId;\n network: Network;\n evmOptions?: {\n evmChainId: EvmChainId;\n rpcUrl: `http${string}`;\n };\n};\n\nexport type InjectiveWalletConfig = BrowserExtensionInjectiveWalletConfig | SecretInjectiveWalletConfig;\n\n/**\n * Injective Type Guards\n */\n\nexport function isBrowserExtensionInjectiveWalletConfig(\n config: InjectiveWalletConfig,\n): config is BrowserExtensionInjectiveWalletConfig {\n return 'msgBroadcaster' in config;\n}\n\nexport function isSecretInjectiveWalletConfig(config: InjectiveWalletConfig): config is SecretInjectiveWalletConfig {\n return (\n 'secret' in config &&\n typeof config.secret === 'object' &&\n (('privateKey' in config.secret && typeof config.secret.privateKey === 'string') ||\n ('mnemonics' in config.secret && typeof config.secret.mnemonics === 'string')) &&\n 'network' in config &&\n 'chainId' in config\n );\n}\n\nexport type InjectiveWallet = {\n msgBroadcaster: MsgBroadcaster | MsgBroadcasterWithPk;\n};\n\nexport class InjectiveWalletProvider implements IInjectiveWalletProvider {\n public wallet: InjectiveWallet;\n\n constructor(config: InjectiveWalletConfig) {\n if (isBrowserExtensionInjectiveWalletConfig(config)) {\n this.wallet = {\n msgBroadcaster: config.msgBroadcaster,\n };\n } else if (isSecretInjectiveWalletConfig(config)) {\n let privateKey: PrivateKey;\n if ('privateKey' in config.secret) {\n privateKey = PrivateKey.fromPrivateKey(config.secret.privateKey);\n } else if ('mnemonics' in config.secret) {\n privateKey = PrivateKey.fromMnemonic(config.secret.mnemonics);\n } else {\n throw new Error('Invalid Secret Injective wallet config');\n }\n this.wallet = {\n msgBroadcaster: new MsgBroadcasterWithPk({ privateKey, network: config.network }),\n };\n } else {\n throw new Error('Invalid Injective wallet config');\n }\n }\n\n async getRawTransaction(\n chainId: string,\n _: string,\n senderAddress: string,\n contractAddress: string,\n msg: JsonObject,\n memo?: string,\n ): Promise<InjectiveRawTransaction> {\n const msgExec = MsgExecuteContract.fromJSON({\n contractAddress: contractAddress,\n sender: senderAddress,\n msg: msg as object,\n funds: [],\n });\n const { txRaw } = createTransaction({\n message: msgExec,\n memo: memo || '',\n pubKey: await this.getWalletPubKey(),\n sequence: 0,\n accountNumber: 0,\n chainId: chainId,\n });\n\n const rawTx = {\n from: senderAddress as Hex,\n to: contractAddress as Hex,\n signedDoc: {\n bodyBytes: txRaw.bodyBytes,\n chainId: chainId,\n accountNumber: BigInt(0),\n authInfoBytes: txRaw.authInfoBytes,\n },\n };\n return rawTx;\n }\n\n // return wallet address as bech32\n async getWalletAddress(): Promise<InjectiveEoaAddress> {\n if (this.wallet.msgBroadcaster instanceof MsgBroadcasterWithPk) {\n return getInjectiveSignerAddress(this.wallet.msgBroadcaster.privateKey.toAddress().toBech32());\n }\n const addresses = await this.wallet.msgBroadcaster.walletStrategy.getAddresses();\n const injectiveAddresses = addresses.map(getInjectiveSignerAddress);\n if (injectiveAddresses.length <= 0 || injectiveAddresses[0] === undefined) {\n return Promise.reject(new Error('Wallet address not found'));\n }\n\n return injectiveAddresses[0];\n }\n\n async getWalletPubKey(): Promise<string> {\n if (this.wallet.msgBroadcaster instanceof MsgBroadcasterWithPk) {\n return this.wallet.msgBroadcaster.privateKey.toPublicKey().toString();\n }\n const pubKey = await this.wallet.msgBroadcaster.walletStrategy.getPubKey();\n if (pubKey === undefined) {\n return Promise.reject(new Error('Wallet public key not found'));\n }\n return pubKey;\n }\n\n async execute(\n senderAddress: string,\n contractAddress: string,\n msg: JsonObject,\n funds?: InjectiveCoin[],\n ): Promise<InjectiveExecuteResponse> {\n const msgExec = MsgExecuteContractCompat.fromJSON({\n contractAddress: contractAddress,\n sender: senderAddress,\n msg: msg as object,\n funds: funds || [],\n });\n\n let txResult: TxResponse;\n\n if (this.wallet.msgBroadcaster instanceof MsgBroadcasterWithPk) {\n txResult = await this.wallet.msgBroadcaster.broadcast({\n msgs: msgExec,\n });\n } else {\n txResult = await this.wallet.msgBroadcaster.broadcastWithFeeDelegation({\n msgs: msgExec,\n injectiveAddress: await this.getWalletAddress(),\n });\n }\n\n return InjectiveExecuteResponse.fromTxResponse(txResult);\n }\n}\n","import { getAssociatedTokenAddress } from '@solana/spl-token';\nimport {\n type Commitment,\n Connection,\n Keypair,\n PublicKey,\n type RpcResponseAndContext,\n type TokenAmount,\n TransactionInstruction,\n TransactionMessage,\n VersionedTransaction,\n} from '@solana/web3.js';\nimport type {\n ISolanaWalletProvider,\n SolanaAccountMeta,\n SolanaBase58PublicKey,\n SolanaRpcResponseAndContext,\n SolanaSerializedTransaction,\n SolanaSignatureResult,\n SolanaRawTransactionInstruction,\n TransactionSignature,\n} from '@sodax/types';\nimport type { SignerWalletAdapterProps } from '@solana/wallet-adapter-base';\n\n// Wallet adapter pattern interface\ninterface WalletContextState {\n publicKey: PublicKey | null;\n signTransaction: SignerWalletAdapterProps['signTransaction'] | undefined;\n}\n\n// Direct keypair pattern configs\nexport type PrivateKeySolanaWalletConfig = {\n privateKey: Uint8Array;\n endpoint: string;\n};\n\n// Wallet adapter pattern config\nexport type BrowserExtensionSolanaWalletConfig = {\n wallet: WalletContextState;\n connection: Connection;\n};\n\n// Unified config type\nexport type SolanaWalletConfig = PrivateKeySolanaWalletConfig | BrowserExtensionSolanaWalletConfig;\n\n// Type guards\nfunction isPrivateKeySolanaWalletConfig(\n walletConfig: SolanaWalletConfig,\n): walletConfig is PrivateKeySolanaWalletConfig {\n return 'privateKey' in walletConfig;\n}\n\nfunction isBrowserExtensionSolanaWalletConfig(\n walletConfig: SolanaWalletConfig,\n): walletConfig is BrowserExtensionSolanaWalletConfig {\n return 'wallet' in walletConfig && !(walletConfig.wallet instanceof Keypair);\n}\n\nexport class SolanaWalletProvider implements ISolanaWalletProvider {\n private readonly wallet: Keypair | WalletContextState;\n public readonly connection: Connection;\n private readonly isAdapterMode: boolean;\n\n constructor(walletConfig: SolanaWalletConfig) {\n if (isPrivateKeySolanaWalletConfig(walletConfig)) {\n this.wallet = Keypair.fromSecretKey(walletConfig.privateKey);\n this.connection = new Connection(walletConfig.endpoint, 'confirmed');\n this.isAdapterMode = false;\n } else if (isBrowserExtensionSolanaWalletConfig(walletConfig)) {\n this.wallet = walletConfig.wallet;\n this.connection = walletConfig.connection;\n this.isAdapterMode = true;\n } else {\n throw new Error('Invalid wallet configuration');\n }\n }\n\n public async waitForConfirmation(\n signature: string,\n commitment: Commitment = 'finalized',\n ): Promise<SolanaRpcResponseAndContext<SolanaSignatureResult>> {\n const latestBlockhash = await this.connection.getLatestBlockhash();\n const response = await this.connection.confirmTransaction(\n {\n signature,\n blockhash: latestBlockhash.blockhash,\n lastValidBlockHeight: latestBlockhash.lastValidBlockHeight,\n },\n commitment,\n );\n\n return response;\n }\n\n /**\n * Send a raw transaction to the Solana network.\n * @param rawTransaction - The raw transaction to send.\n * @returns The transaction signature.\n */\n public async sendTransaction(rawTransaction: Uint8Array | Array<number>): Promise<TransactionSignature> {\n return this.connection.sendRawTransaction(rawTransaction);\n }\n\n /**\n * Send a raw transaction to the Solana network and wait for confirmation.\n * @param rawTransaction - The raw transaction to send.\n * @param commitment - The commitment level to use. Defaults to 'finalized'.\n * @returns The transaction signature.\n */\n public async sendTransactionWithConfirmation(\n rawTransaction: Uint8Array | Array<number>,\n commitment: Commitment = 'finalized',\n ): Promise<TransactionSignature> {\n const txHash = await this.connection.sendRawTransaction(rawTransaction);\n await this.waitForConfirmation(txHash, commitment);\n return txHash;\n }\n\n /**\n * Build a v0 versioned transaction.\n * @param instructions - The instructions to include in the transaction.\n * @returns The v0 transaction.\n */\n async buildV0Txn(rawInstructions: SolanaRawTransactionInstruction[]): Promise<SolanaSerializedTransaction> {\n if (this.isAdapterMode) {\n return this.buildV0TxnWithAdapter(rawInstructions);\n }\n return this.buildV0TxnWithKeypair(rawInstructions);\n }\n\n private async buildV0TxnWithAdapter(\n rawInstructions: SolanaRawTransactionInstruction[],\n ): Promise<SolanaSerializedTransaction> {\n const adapterWallet = this.wallet as WalletContextState;\n\n if (!adapterWallet.publicKey) {\n throw new Error('Wallet public key is not initialized');\n }\n\n if (!adapterWallet.signTransaction) {\n throw new Error('Wallet signTransaction is not initialized');\n }\n\n const instructions = this.buildTransactionInstruction(rawInstructions);\n const latestBlockhash = await this.connection.getLatestBlockhash();\n const messageV0 = new TransactionMessage({\n payerKey: adapterWallet.publicKey,\n recentBlockhash: latestBlockhash.blockhash,\n instructions,\n }).compileToV0Message();\n\n const tx = await adapterWallet.signTransaction(new VersionedTransaction(messageV0));\n return tx.serialize();\n }\n\n private async buildV0TxnWithKeypair(\n rawInstructions: SolanaRawTransactionInstruction[],\n ): Promise<SolanaSerializedTransaction> {\n const keypairWallet = this.wallet as Keypair;\n const instructions = this.buildTransactionInstruction(rawInstructions);\n\n const messageV0 = new TransactionMessage({\n payerKey: keypairWallet.publicKey,\n recentBlockhash: (await this.connection.getLatestBlockhash()).blockhash,\n instructions,\n }).compileToV0Message();\n\n const tx = new VersionedTransaction(messageV0);\n tx.sign([keypairWallet]);\n\n return tx.serialize();\n }\n\n public getWalletBase58PublicKey(): SolanaBase58PublicKey {\n if (!this.wallet.publicKey) {\n throw new Error('Wallet public key is not initialized');\n }\n return this.wallet.publicKey.toBase58();\n }\n\n public async getWalletAddress(): Promise<string> {\n return this.getWalletBase58PublicKey();\n }\n\n public async getAssociatedTokenAddress(mint: SolanaBase58PublicKey): Promise<SolanaBase58PublicKey> {\n if (!this.wallet.publicKey) {\n throw new Error('Wallet public key is not initialized');\n }\n\n return (await getAssociatedTokenAddress(new PublicKey(mint), this.wallet.publicKey, true)).toBase58();\n }\n\n public async getBalance(publicKey: SolanaBase58PublicKey): Promise<number> {\n return await this.connection.getBalance(new PublicKey(publicKey));\n }\n\n public async getTokenAccountBalance(publicKey: SolanaBase58PublicKey): Promise<RpcResponseAndContext<TokenAmount>> {\n return this.connection.getTokenAccountBalance(new PublicKey(publicKey));\n }\n\n private buildTransactionInstruction(rawInstructions: SolanaRawTransactionInstruction[]): TransactionInstruction[] {\n return rawInstructions.map(\n rawInstruction =>\n new TransactionInstruction({\n keys: rawInstruction.keys.map((key: SolanaAccountMeta) => ({\n pubkey: new PublicKey(key.pubkey),\n isSigner: key.isSigner,\n isWritable: key.isWritable,\n })),\n programId: new PublicKey(rawInstruction.programId),\n data: Buffer.from(rawInstruction.data),\n }),\n );\n }\n}\n","import type { Hex, IStellarWalletProvider, StellarRawTransactionReceipt, XDR } from '@sodax/types';\nimport { Networks, Horizon, Transaction, Keypair } from '@stellar/stellar-sdk';\n\ninterface StellarWalletsKit {\n getAddress(): Promise<{ address: string }>;\n signTransaction(tx: XDR, options: { networkPassphrase: string }): Promise<{ signedTxXdr: XDR }>;\n}\n\nexport type StellarNetwork = 'TESTNET' | 'PUBLIC';\n\nconst STELLAR_HORIZON_URLS: { [key in StellarNetwork]: string } = {\n TESTNET: 'https://horizon-testnet.stellar.org',\n PUBLIC: 'https://horizon.stellar.org',\n};\n\nconst STELLAR_NETWORK_PASSPHRASES: { [key in StellarNetwork]: string } = {\n TESTNET: Networks.TESTNET,\n PUBLIC: Networks.PUBLIC,\n};\n\nconst TX_POLL_INTERVAL = 2000; // 2 seconds\nconst TX_POLL_TIMEOUT = 60000; // 60 seconds\n\nconst STELLAR_ERROR_CODES = {\n INVALID_CONFIG: 'INVALID_CONFIG',\n SIGN_TX_ERROR: 'SIGN_TX_ERROR',\n TX_RECEIPT_TIMEOUT: 'TX_RECEIPT_TIMEOUT',\n SEND_TX_ERROR: 'SEND_TX_ERROR',\n INVALID_NETWORK: 'INVALID_NETWORK',\n INVALID_PRIVATE_KEY: 'INVALID_PRIVATE_KEY',\n} as const;\n\nexport type StellarAddress = string; // Stellar addresses are in format: G...\n\nexport type PrivateKeyStellarWalletConfig = {\n type: 'PRIVATE_KEY';\n privateKey: Hex;\n network: StellarNetwork;\n rpcUrl?: string;\n};\n\nexport type BrowserExtensionStellarWalletConfig = {\n type: 'BROWSER_EXTENSION';\n walletsKit: StellarWalletsKit;\n network: StellarNetwork;\n rpcUrl?: string;\n};\n\nexport type StellarWalletConfig = PrivateKeyStellarWalletConfig | BrowserExtensionStellarWalletConfig;\n\nexport type StellarPkWallet = {\n type: 'PRIVATE_KEY';\n keypair: Keypair;\n};\n\nexport type StellarBrowserExtensionWallet = {\n type: 'BROWSER_EXTENSION';\n walletsKit: StellarWalletsKit;\n};\n\nexport type StellarWallet = StellarPkWallet | StellarBrowserExtensionWallet;\n\nexport class StellarWalletError extends Error {\n constructor(\n message: string,\n public readonly code: keyof typeof STELLAR_ERROR_CODES,\n ) {\n super(message);\n this.name = 'StellarWalletError';\n }\n}\n\nexport function isPrivateKeyStellarWalletConfig(config: StellarWalletConfig): config is PrivateKeyStellarWalletConfig {\n return config.type === 'PRIVATE_KEY';\n}\n\nexport function isBrowserExtensionStellarWalletConfig(\n config: StellarWalletConfig,\n): config is BrowserExtensionStellarWalletConfig {\n return config.type === 'BROWSER_EXTENSION';\n}\n\nexport function isStellarPkWallet(wallet: StellarWallet): wallet is StellarPkWallet {\n return wallet.type === 'PRIVATE_KEY';\n}\n\nexport function isStellarBrowserExtensionWallet(wallet: StellarWallet): wallet is StellarBrowserExtensionWallet {\n return wallet.type === 'BROWSER_EXTENSION';\n}\n\nexport function isValidStellarNetwork(network: string): network is StellarNetwork {\n return ['TESTNET', 'PUBLIC'].includes(network);\n}\n\nexport function isValidStellarPrivateKey(privateKey: string): boolean {\n try {\n // Remove '0x' prefix if present\n const key = privateKey.startsWith('0x') ? privateKey.slice(2) : privateKey;\n Keypair.fromSecret(key);\n return true;\n } catch {\n return false;\n }\n}\n\nexport class StellarWalletProvider implements IStellarWalletProvider {\n private readonly wallet: StellarWallet;\n private readonly server: Horizon.Server;\n private readonly networkPassphrase: string;\n\n constructor(config: StellarWalletConfig) {\n if (!isValidStellarNetwork(config.network)) {\n throw new StellarWalletError(`Invalid network: ${config.network}`, 'INVALID_NETWORK');\n }\n\n if (isPrivateKeyStellarWalletConfig(config)) {\n if (!isValidStellarPrivateKey(config.privateKey)) {\n throw new StellarWalletError('Invalid private key format', 'INVALID_PRIVATE_KEY');\n }\n // Remove '0x' prefix if present\n const privateKey = config.privateKey.startsWith('0x') ? config.privateKey.slice(2) : config.privateKey;\n this.wallet = {\n type: 'PRIVATE_KEY',\n keypair: Keypair.fromSecret(privateKey),\n };\n this.server = new Horizon.Server(config.rpcUrl ?? STELLAR_HORIZON_URLS[config.network]);\n this.networkPassphrase = STELLAR_NETWORK_PASSPHRASES[config.network];\n return;\n }\n\n if (isBrowserExtensionStellarWalletConfig(config)) {\n this.wallet = {\n type: 'BROWSER_EXTENSION',\n walletsKit: config.walletsKit,\n };\n this.server = new Horizon.Server(config.rpcUrl ?? STELLAR_HORIZON_URLS[config.network]);\n this.networkPassphrase = STELLAR_NETWORK_PASSPHRASES[config.network];\n return;\n }\n\n throw new StellarWalletError('Invalid wallet configuration', 'INVALID_CONFIG');\n }\n\n public async getWalletAddress(): Promise<string> {\n try {\n if (isStellarPkWallet(this.wallet)) {\n return this.wallet.keypair.publicKey();\n }\n\n const { address } = await this.wallet.walletsKit.getAddress();\n return address;\n } catch (error) {\n throw new StellarWalletError(\n error instanceof Error ? error.message : 'Failed to get wallet address',\n 'INVALID_CONFIG',\n );\n }\n }\n\n public async signTransaction(tx: XDR): Promise<XDR> {\n try {\n if (isStellarPkWallet(this.wallet)) {\n // Parse the XDR transaction\n const transaction = new Transaction(tx, this.networkPassphrase);\n transaction.sign(this.wallet.keypair);\n return transaction.toXDR();\n }\n\n const { signedTxXdr } = await this.wallet.walletsKit.signTransaction(tx, {\n networkPassphrase: this.networkPassphrase,\n });\n return signedTxXdr;\n } catch (error) {\n throw new StellarWalletError(\n error instanceof Error ? error.message : 'Failed to sign transaction',\n 'SIGN_TX_ERROR',\n );\n }\n }\n\n public async waitForTransactionReceipt(txHash: string): Promise<StellarRawTransactionReceipt> {\n const startTime = Date.now();\n while (Date.now() - startTime < TX_POLL_TIMEOUT) {\n try {\n const tx = await this.server.transactions().transaction(txHash).call();\n\n return {\n ...tx,\n _links: {\n ...tx._links,\n transaction: tx._links.self,\n },\n };\n } catch (error) {\n // Wait for the next poll interval\n await new Promise(resolve => setTimeout(resolve, TX_POLL_INTERVAL));\n }\n }\n throw new StellarWalletError(\n `Transaction receipt not found for hash ${txHash} after ${TX_POLL_TIMEOUT / 1000} seconds.`,\n 'TX_RECEIPT_TIMEOUT',\n );\n }\n}\n"]}
|
package/dist/index.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { privateKeyToAccount } from 'viem/accounts';
|
|
2
2
|
import { createWalletClient, http, createPublicClient } from 'viem';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import { mainnet, polygon, bsc, optimism, base, arbitrum, avalanche, sonic } from 'viem/chains';
|
|
4
|
+
import { ETHEREUM_MAINNET_CHAIN_ID, POLYGON_MAINNET_CHAIN_ID, BSC_MAINNET_CHAIN_ID, OPTIMISM_MAINNET_CHAIN_ID, BASE_MAINNET_CHAIN_ID, ARBITRUM_MAINNET_CHAIN_ID, AVALANCHE_MAINNET_CHAIN_ID, SONIC_MAINNET_CHAIN_ID, InjectiveExecuteResponse } from '@sodax/types';
|
|
5
5
|
import { SuiClient } from '@mysten/sui/client';
|
|
6
6
|
import { Ed25519Keypair } from '@mysten/sui/keypairs/ed25519';
|
|
7
7
|
import { signTransaction } from '@mysten/wallet-standard';
|
|
@@ -28,8 +28,8 @@ function getEvmViemChain(id) {
|
|
|
28
28
|
return bsc;
|
|
29
29
|
case POLYGON_MAINNET_CHAIN_ID:
|
|
30
30
|
return polygon;
|
|
31
|
-
case
|
|
32
|
-
return
|
|
31
|
+
case ETHEREUM_MAINNET_CHAIN_ID:
|
|
32
|
+
return mainnet;
|
|
33
33
|
default:
|
|
34
34
|
throw new Error(`Unsupported EVM chain ID: ${id}`);
|
|
35
35
|
}
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/wallet-providers/EvmWalletProvider.ts","../src/wallet-providers/SuiWalletProvider.ts","../src/wallet-providers/IconWalletProvider.ts","../src/wallet-providers/InjectiveWalletProvider.ts","../src/wallet-providers/SolanaWalletProvider.ts","../src/wallet-providers/StellarWalletProvider.ts"],"names":["result","Keypair"],"mappings":";;;;;;;;;;;;;;AAgBO,SAAS,gBAAgB,EAAA,EAAoB;AAClD,EAAA,QAAQ,EAAA;AAAI,IACV,KAAK,sBAAA;AACH,MAAA,OAAO,KAAA;AAAA,IACT,KAAK,0BAAA;AACH,MAAA,OAAO,SAAA;AAAA,IACT,KAAK,yBAAA;AACH,MAAA,OAAO,QAAA;AAAA,IACT,KAAK,qBAAA;AACH,MAAA,OAAO,IAAA;AAAA,IACT,KAAK,yBAAA;AACH,MAAA,OAAO,QAAA;AAAA,IACT,KAAK,oBAAA;AACH,MAAA,OAAO,GAAA;AAAA,IACT,KAAK,wBAAA;AACH,MAAA,OAAO,OAAA;AAAA,IACT,KAAK,uBAAA;AACH,MAAA,OAAO,MAAA;AAAA,IACT;AACE,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,0BAAA,EAA6B,EAAE,CAAA,CAAE,CAAA;AAAA;AAEvD;AAEO,IAAM,oBAAN,MAAsD;AAAA,EAC1C,YAAA;AAAA,EACD,YAAA;AAAA,EAEhB,YAAY,MAAA,EAAyB;AACnC,IAAA,IAAI,2BAAA,CAA4B,MAAM,CAAA,EAAG;AACvC,MAAA,MAAM,KAAA,GAAQ,eAAA,CAAgB,MAAA,CAAO,OAAO,CAAA;AAC5C,MAAA,IAAA,CAAK,eAAe,kBAAA,CAAmB;AAAA,QACrC,KAAA;AAAA,QACA,SAAA,EAAW,KAAK,MAAA,CAAO,MAAA,IAAU,MAAM,OAAA,CAAQ,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAC,CAAA;AAAA,QAC9D,OAAA,EAAS,mBAAA,CAAoB,MAAA,CAAO,UAAU;AAAA,OAC/C,CAAA;AACD,MAAA,IAAA,CAAK,eAAe,kBAAA,CAAmB;AAAA,QACrC,KAAA;AAAA,QACA,SAAA,EAAW,KAAK,MAAA,CAAO,MAAA,IAAU,MAAM,OAAA,CAAQ,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAC;AAAA,OAC/D,CAAA;AAAA,IACH,CAAA,MAAA,IAAW,iCAAA,CAAkC,MAAM,CAAA,EAAG;AACpD,MAAA,IAAA,CAAK,eAAe,MAAA,CAAO,YAAA;AAC3B,MAAA,IAAA,CAAK,eAAe,MAAA,CAAO,YAAA;AAAA,IAC7B,CAAA,MAAO;AACL,MAAA,MAAM,IAAI,MAAM,2BAA2B,CAAA;AAAA,IAC7C;AAAA,EACF;AAAA,EAEA,MAAM,gBAAgB,QAAA,EAA4C;AAChE,IAAA,OAAO,IAAA,CAAK,YAAA,CAAa,eAAA,CAAgB,QAAQ,CAAA;AAAA,EACnD;AAAA,EAEA,MAAM,0BAA0B,MAAA,EAAiD;AAC/E,IAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,YAAA,CAAa,0BAA0B,EAAE,IAAA,EAAM,QAAQ,CAAA;AAClF,IAAA,OAAO;AAAA,MACL,GAAG,OAAA;AAAA,MACH,gBAAA,EAAkB,OAAA,CAAQ,gBAAA,CAAiB,QAAA,EAAS;AAAA,MACpD,WAAA,EAAa,OAAA,CAAQ,WAAA,CAAY,QAAA,EAAS;AAAA,MAC1C,iBAAA,EAAmB,OAAA,CAAQ,iBAAA,CAAkB,QAAA,EAAS;AAAA,MACtD,OAAA,EAAS,OAAA,CAAQ,OAAA,CAAQ,QAAA,EAAS;AAAA,MAClC,eAAA,EAAiB,OAAA,CAAQ,eAAA,EAAiB,QAAA,EAAS,IAAK,IAAA;AAAA,MACxD,IAAA,EAAM,OAAA,CAAQ,IAAA,CAAK,GAAA,CAAI,CAAA,GAAA,MAAQ;AAAA,QAC7B,GAAG,GAAA;AAAA,QACH,WAAA,EAAa,GAAA,CAAI,WAAA,CAAY,QAAA,EAAS;AAAA,QACtC,QAAA,EAAU,GAAA,CAAI,QAAA,CAAS,QAAA,EAAS;AAAA,QAChC,gBAAA,EAAkB,GAAA,CAAI,gBAAA,CAAiB,QAAA;AAAS,OAClD,CAAE,CAAA;AAAA,MACF,iBAAA,EAAmB,OAAA,CAAQ,iBAAA,CAAkB,QAAA;AAAS,KACxD;AAAA,EACF;AAAA,EAEA,MAAM,gBAAA,GAAqC;AACzC,IAAA,OAAO,IAAA,CAAK,aAAa,OAAA,CAAQ,OAAA;AAAA,EACnC;AACF;AAuBO,SAAS,4BAA4B,MAAA,EAA8D;AACxG,EAAA,OAAO,YAAA,IAAgB,MAAA,IAAU,MAAA,CAAO,UAAA,CAAW,WAAW,IAAI,CAAA;AACpE;AAEO,SAAS,kCAAkC,MAAA,EAAoE;AACpH,EAAA,OAAO,cAAA,IAAkB,UAAU,cAAA,IAAkB,MAAA;AACvD;AC1FA,SAAS,4BAA4B,YAAA,EAA0E;AAC7G,EAAA,OAAO,WAAA,IAAe,YAAA;AACxB;AAEA,SAAS,kCACP,YAAA,EACiD;AACjD,EAAA,OAAO,QAAA,IAAY,gBAAgB,SAAA,IAAa,YAAA;AAClD;AAaO,SAAS,cAAc,MAAA,EAA0C;AACtE,EAAA,OAAO,SAAA,IAAa,MAAA;AACtB;AAEO,SAAS,4BAA4B,MAAA,EAAwD;AAClG,EAAA,OAAO,QAAA,IAAY,UAAU,SAAA,IAAa,MAAA;AAC5C;AAEO,SAAS,YAAY,MAAA,EAAwC;AAClE,EAAA,OAAO,aAAA,CAAc,MAAM,CAAA,IAAK,2BAAA,CAA4B,MAAM,CAAA;AACpE;AAEO,IAAM,oBAAN,MAAsD;AAAA,EAC1C,MAAA;AAAA,EACA,MAAA;AAAA,EAEjB,YAAY,YAAA,EAA+B;AACzC,IAAA,IAAI,2BAAA,CAA4B,YAAY,CAAA,EAAG;AAC7C,MAAA,IAAA,CAAK,SAAS,IAAI,SAAA,CAAU,EAAE,GAAA,EAAK,YAAA,CAAa,QAAQ,CAAA;AACxD,MAAA,IAAA,CAAK,MAAA,GAAS;AAAA,QACZ,OAAA,EAAS,cAAA,CAAe,aAAA,CAAc,YAAA,CAAa,SAAS;AAAA,OAC9D;AAAA,IACF,CAAA,MAAA,IAAW,iCAAA,CAAkC,YAAY,CAAA,EAAG;AAC1D,MAAA,IAAA,CAAK,SAAS,YAAA,CAAa,MAAA;AAC3B,MAAA,IAAA,CAAK,MAAA,GAAS;AAAA,QACZ,QAAQ,YAAA,CAAa,MAAA;AAAA,QACrB,SAAS,YAAA,CAAa;AAAA,OACxB;AAAA,IACF,CAAA,MAAO;AACL,MAAA,MAAM,IAAI,MAAM,8BAA8B,CAAA;AAAA,IAChD;AAAA,EACF;AAAA,EAEA,MAAM,kBAAkB,GAAA,EAAsC;AAC5D,IAAA,IAAI,aAAA,CAAc,IAAA,CAAK,MAAM,CAAA,EAAG;AAC9B,MAAA,MAAM,GAAA,GAAM,MAAM,IAAA,CAAK,MAAA,CAAO,yBAAA,CAA0B;AAAA,QACtD,WAAA,EAAa,GAAA;AAAA,QACb,MAAA,EAAQ,KAAK,MAAA,CAAO;AAAA,OACrB,CAAA;AAED,MAAA,OAAO,GAAA,CAAI,MAAA;AAAA,IACb;AACA,IAAA,IAAI,2BAAA,CAA4B,IAAA,CAAK,MAAM,CAAA,EAAG;AAC5C,MAAA,MAAM,aAAA,GAAgB,KAAK,MAAA,CAAO,MAAA;AAClC,MAAA,MAAM,cAAA,GAAiB,KAAK,MAAA,CAAO,OAAA;AAEnC,MAAA,IAAI,CAAC,cAAA,IAAkB,cAAA,CAAe,MAAA,CAAO,WAAW,CAAA,EAAG;AACzD,QAAA,MAAM,IAAI,MAAM,wCAAwC,CAAA;AAAA,MAC1D;AACA,MAAA,MAAM,KAAA,GAAQ,cAAA,CAAe,MAAA,CAAO,CAAC,CAAA;AACrC,MAAA,IAAI,CAAC,KAAA,EAAO;AACV,QAAA,MAAM,IAAI,MAAM,uCAAuC,CAAA;AAAA,MACzD;AACA,MAAA,MAAM,EAAE,KAAA,EAAO,SAAA,EAAU,GAAI,MAAM,gBAAgB,aAAA,EAAe;AAAA,QAChE,WAAA,EAAa,GAAA;AAAA,QACb,OAAA,EAAS,cAAA;AAAA,QACT;AAAA,OACD,CAAA;AAED,MAAA,MAAM,GAAA,GAAM,MAAM,IAAA,CAAK,MAAA,CAAO,uBAAA,CAAwB;AAAA,QACpD,gBAAA,EAAkB,KAAA;AAAA,QAClB,SAAA;AAAA,QACA,OAAA,EAAS;AAAA,UACP,cAAA,EAAgB;AAAA;AAClB,OACD,CAAA;AAED,MAAA,OAAO,GAAA,CAAI,MAAA;AAAA,IACb;AAEA,IAAA,MAAM,IAAI,MAAM,8BAA8B,CAAA;AAAA,EAChD;AAAA,EAEA,MAAM,aACJ,EAAA,EACA,SAAA,EACA,QACA,YAAA,EACA,IAAA,EACA,QAAA,GAAqB,EAAC,EACO;AAC7B,IAAA,EAAA,CAAG,QAAA,CAAS;AAAA,MACV,QAAQ,CAAA,EAAG,SAAS,CAAA,EAAA,EAAK,MAAM,KAAK,YAAY,CAAA,CAAA;AAAA,MAChD,SAAA,EAAW,IAAA;AAAA,MACX,aAAA,EAAe;AAAA,KAChB,CAAA;AAED,IAAA,MAAM,MAAA,GAAS,KAAK,aAAA,EAAc;AAElC,IAAA,MAAM,SAAA,GAAY,MAAM,IAAA,CAAK,MAAA,CAAO,0BAAA,CAA2B;AAAA,MAC7D,gBAAA,EAAkB,EAAA;AAAA,MAClB;AAAA,KACD,CAAA;AAED,IAAA,IAAI,UAAU,OAAA,IAAW,SAAA,CAAU,OAAA,CAAQ,CAAC,MAAM,MAAA,EAAW;AAC3D,MAAA,OAAO,SAAA,CAAU,QAAQ,CAAC,CAAA;AAAA,IAC5B;AACA,IAAA,MAAM,KAAA,CAAM,yCAAyC,IAAA,CAAK,SAAA,CAAU,WAAW,IAAA,EAAM,CAAC,CAAC,CAAA,CAAE,CAAA;AAAA,EAC3F;AAAA,EAEA,MAAM,QAAA,CAAS,OAAA,EAAiB,KAAA,EAA2C;AACzE,IAAA,OAAO,IAAA,CAAK,MAAA,CAAO,QAAA,CAAS,EAAE,KAAA,EAAO,SAAS,QAAA,EAAU,KAAA,EAAO,KAAA,EAAO,EAAA,EAAI,CAAA;AAAA,EAC5E;AAAA,EAEQ,aAAA,GAAwB;AAC9B,IAAA,IAAI,aAAA,CAAc,IAAA,CAAK,MAAM,CAAA,EAAG;AAC9B,MAAA,OAAO,IAAA,CAAK,MAAA,CAAO,OAAA,CAAQ,YAAA,EAAa;AAAA,IAC1C;AACA,IAAA,IAAI,2BAAA,CAA4B,IAAA,CAAK,MAAM,CAAA,EAAG;AAC5C,MAAA,OAAO,IAAA,CAAK,OAAO,OAAA,CAAQ,OAAA;AAAA,IAC7B;AACA,IAAA,MAAM,IAAI,MAAM,8BAA8B,CAAA;AAAA,EAChD;AAAA,EAEA,MAAM,gBAAA,GAAoC;AACxC,IAAA,OAAO,KAAK,aAAA,EAAc;AAAA,EAC5B;AACF;ACnKA,IAAM,OAAA,GAAW,SAAA,IAAwB,UAAA,CAAA,OAAA,GAAqB,UAAA,CAAA,OAAA,GAAU,UAAA;AACxE,IAAM,EAAE,SAAA,EAAW,sBAAA,EAAwB,MAAA,EAAO,GAAI,OAAA;AAE/C,IAAM,qBAAN,MAAwD;AAAA,EAC5C,MAAA;AAAA,EACD,WAAA;AAAA,EAEhB,YAAY,MAAA,EAA0B;AACpC,IAAA,IAAI,4BAAA,CAA6B,MAAM,CAAA,EAAG;AACxC,MAAA,IAAA,CAAK,MAAA,GAAS;AAAA,QACZ,IAAA,EAAM,aAAA;AAAA,QACN,QAAQ,MAAA,CAAO,cAAA,CAAe,OAAO,UAAA,CAAW,KAAA,CAAM,CAAC,CAAC;AAAA,OAC1D;AACA,MAAA,IAAA,CAAK,WAAA,GAAc,IAAI,OAAA,CAAQ,WAAA,CAAY,IAAI,QAAQ,WAAA,CAAY,YAAA,CAAa,MAAA,CAAO,MAAM,CAAC,CAAA;AAAA,IAChG,CAAA,MAAA,IAAW,kCAAA,CAAmC,MAAM,CAAA,EAAG;AACrD,MAAA,IAAA,CAAK,MAAA,GAAS;AAAA,QACZ,IAAA,EAAM,mBAAA;AAAA,QACN,QAAQ,MAAA,CAAO;AAAA,OACjB;AACA,MAAA,IAAA,CAAK,WAAA,GAAc,IAAI,OAAA,CAAQ,WAAA,CAAY,IAAI,QAAQ,WAAA,CAAY,YAAA,CAAa,MAAA,CAAO,MAAM,CAAC,CAAA;AAAA,IAChG,CAAA,MAAO;AACL,MAAA,MAAM,IAAI,MAAM,4BAA4B,CAAA;AAAA,IAC9C;AAAA,EACF;AAAA,EAEA,MAAa,gBAAgB,EAAA,EAAuC;AAClE,IAAA,MAAM,OAAA,GAAU,IAAI,sBAAA,EAAuB,CACxC,IAAA,CAAK,GAAG,IAAI,CAAA,CACZ,EAAA,CAAG,EAAA,CAAG,EAAE,CAAA,CACR,UAAU,SAAA,CAAU,KAAA,CAAM,GAAO,CAAC,CAAA,CAClC,GAAA,CAAI,GAAG,GAAG,CAAA,CACV,OAAA,CAAQ,EAAA,CAAG,OAAA,IAAW,KAAK,EAC3B,SAAA,CAAU,SAAA,CAAU,KAAA,CAAM,EAAA,CAAG,SAAA,IAAA,iBAAa,IAAI,MAAK,EAAE,OAAA,EAAQ,GAAI,GAAI,CAAC,CAAA,CACtE,MAAM,EAAA,CAAG,KAAK,CAAA,CACd,MAAA,CAAO,EAAA,CAAG,MAAM,EAChB,MAAA,CAAO,EAAA,CAAG,MAAM,CAAA,CAChB,KAAA,EAAM;AAET,IAAA,IAAI,CAAC,cAAA,CAAe,IAAA,CAAK,MAAM,CAAA,EAAG;AAEhC,MAAA,MAAMA,OAAAA,GAAS,MAAM,cAAA,CAAe,OAAO,CAAA;AAE3C,MAAA,OAAOA,OAAAA,CAAO,MAAA;AAAA,IAChB;AACA,IAAA,MAAM,QAAA,GAAW,IAAI,OAAA,CAAQ,WAAA,CAAY,kBAAkB,OAAA,EAAS,IAAA,CAAK,OAAO,MAAM,CAAA;AACtF,IAAA,MAAM,SAAS,MAAM,IAAA,CAAK,YAAY,eAAA,CAAgB,QAAQ,EAAE,OAAA,EAAQ;AAExE,IAAA,OAAO,MAAA;AAAA,EACT;AAAA,EAEA,MAAa,0BAA0B,MAAA,EAA8C;AACnF,IAAA,MAAM,SAAS,MAAM,IAAA,CAAK,YAAY,qBAAA,CAAsB,MAAM,EAAE,OAAA,EAAQ;AAE5E,IAAA,OAAO;AAAA,MACL,GAAG,MAAA;AAAA,MACH,MAAA,EAAQ,CAAC,MAAA,CAAO,MAAA;AAAA,MAChB,kBAAA,EAAoB,iBAAA,CAAkB,MAAA,CAAO,kBAAkB,CAAA;AAAA,MAC/D,QAAA,EAAU,iBAAA,CAAkB,MAAA,CAAO,QAAQ,CAAA;AAAA,MAC3C,SAAA,EAAW,iBAAA,CAAkB,MAAA,CAAO,SAAS;AAAA,KAC/C;AAAA,EACF;AAAA,EAEA,MAAM,gBAAA,GAA4C;AAChD,IAAA,IAAI,CAAC,IAAA,CAAK,MAAA,CAAO,MAAA,EAAQ;AACvB,MAAA,MAAM,IAAI,MAAM,wBAAwB,CAAA;AAAA,IAC1C;AACA,IAAA,OAAO,cAAA,CAAe,IAAA,CAAK,MAAM,CAAA,GAAK,IAAA,CAAK,OAAO,MAAA,CAAO,UAAA,EAAW,GAAuB,IAAA,CAAK,MAAA,CAAO,MAAA;AAAA,EACzG;AACF;AA+FO,SAAS,eAAe,MAAA,EAA4C;AACzE,EAAA,OAAO,OAAO,IAAA,KAAS,aAAA;AACzB;AAEO,SAAS,6BAA6B,MAAA,EAA0D;AACrG,EAAA,OAAO,OAAO,IAAA,KAAS,mBAAA;AACzB;AAEO,SAAS,6BAA6B,MAAA,EAAgE;AAC3G,EAAA,OAAO,YAAA,IAAgB,MAAA,IAAU,MAAA,CAAO,UAAA,CAAW,WAAW,IAAI,CAAA;AACpE;AAEO,SAAS,mCACd,MAAA,EAC4C;AAC5C,EAAA,OAAO,mBAAmB,MAAA,KAAW,gBAAA,CAAiB,OAAO,aAAa,CAAA,IAAK,CAAC,MAAA,CAAO,aAAA,CAAA;AACzF;AAEO,SAAS,cAAc,KAAA,EAAsC;AAClE,EAAA,OAAO,OAAO,KAAA,KAAU,QAAA,IAAY,mCAAA,CAAoC,KAAK,KAAK,CAAA;AACpF;AAEO,SAAS,iBAAiB,KAAA,EAAyC;AACxE,EAAA,OAAO,OAAO,KAAA,KAAU,QAAA,IAAY,kBAAA,CAAmB,KAAK,KAAK,CAAA;AACnE;AAEO,SAAS,sBAAsB,KAAA,EAA8C;AAClF,EAAA,OACE,OAAO,KAAA,KAAU,QAAA,IACjB,KAAA,KAAU,QACV,MAAA,IAAU,KAAA,IACV,SAAA,IAAa,KAAA,IACb,KAAA,CAAM,IAAA,KAAS,kBAAA,IACf,aAAA,CAAc,MAAM,OAAO,CAAA;AAE/B;AAEO,SAAS,sBAAsB,KAAA,EAA8C;AAClF,EAAA,OACE,OAAO,KAAA,KAAU,QAAA,IACjB,KAAA,KAAU,QACV,MAAA,IAAU,KAAA,IACV,SAAA,IAAa,KAAA,IACb,KAAA,CAAM,IAAA,KAAS,kBAAA,IACf,OAAO,MAAM,OAAA,KAAY,QAAA;AAE7B;AAEO,SAAS,yBAAyB,KAAA,EAAiD;AACxF,EAAA,OACE,OAAO,KAAA,KAAU,QAAA,IACjB,KAAA,KAAU,IAAA,IACV,IAAA,IAAQ,KAAA,IACR,QAAA,IAAY,KAAA,IACZ,OAAO,KAAA,CAAM,MAAA,KAAW,QAAA;AAE5B;AAMO,SAAS,cAAA,GAAuC;AACrD,EAAA,OAAO,IAAI,QAAQ,CAAA,OAAA,KAAW;AAC5B,IAAA,MAAM,YAAA,GAAe,CAAC,KAAA,KAAiB;AACrC,MAAA,MAAM,WAAA,GAAc,KAAA;AACpB,MAAA,MAAM,WAAW,WAAA,CAAY,MAAA;AAC7B,MAAA,IAAI,qBAAA,CAAsB,QAAQ,CAAA,EAAG;AACnC,QAAA,MAAA,CAAO,mBAAA,CAAoB,uBAAA,EAAyB,YAAA,EAA+B,KAAK,CAAA;AACxF,QAAA,OAAA,CAAQ,SAAS,OAAO,CAAA;AAAA,MAC1B;AAAA,IACF,CAAA;AAEA,IAAA,MAAA,CAAO,mBAAA,CAAoB,uBAAA,EAAyB,YAAA,EAAc,KAAK,CAAA;AACvE,IAAA,MAAA,CAAO,gBAAA,CAAiB,uBAAA,EAAyB,YAAA,EAAc,KAAK,CAAA;AACpE,IAAA,MAAA,CAAO,aAAA;AAAA,MACL,IAAI,YAAgC,sBAAA,EAAwB;AAAA,QAC1D,MAAA,EAAQ;AAAA,UACN,IAAA,EAAM;AAAA;AACR,OACD;AAAA,KACH;AAAA,EACF,CAAC,CAAA;AACH;AAEO,SAAS,cAAA,CAAe,MAAmB,IAAA,EAA+B;AAC/E,EAAA,OAAO,IAAI,OAAA,CAAQ,CAAC,OAAA,EAAS,MAAA,KAAW;AACtC,IAAA,MAAM,WAAA,GAAc,IAAI,WAAA,CAAiC,sBAAA,EAAwB;AAAA,MAC/E,MAAA,EAAQ;AAAA,QACN,IAAA,EAAM,iBAAA;AAAA,QACN,OAAA,EAAS;AAAA,UACP,IAAA;AAAA,UACA;AAAA;AACF;AACF,KACD,CAAA;AAED,IAAA,MAAM,YAAA,GAAe,CAAC,KAAA,KAAiB;AACrC,MAAA,MAAM,WAAA,GAAc,KAAA;AACpB,MAAA,MAAM,WAAW,WAAA,CAAY,MAAA;AAC7B,MAAA,IAAI,qBAAA,CAAsB,QAAQ,CAAA,EAAG;AACnC,QAAA,MAAA,CAAO,mBAAA,CAAoB,uBAAA,EAAyB,YAAA,EAA+B,KAAK,CAAA;AAGxF,QAAA,OAAA,CAAQ,SAAS,OAAO,CAAA;AAAA,MAC1B,CAAA,MAAA,IAAW,QAAA,CAAS,IAAA,KAAS,gBAAA,EAAkB;AAC7C,QAAA,MAAA,CAAO,IAAI,KAAA,CAAM,gBAAgB,CAAC,CAAA;AAAA,MACpC;AAAA,IACF,CAAA;AAEA,IAAA,MAAA,CAAO,mBAAA,CAAoB,uBAAA,EAAyB,YAAA,EAA+B,KAAK,CAAA;AACxF,IAAA,MAAA,CAAO,gBAAA,CAAiB,uBAAA,EAAyB,YAAA,EAA+B,KAAK,CAAA;AACrF,IAAA,MAAA,CAAO,cAAc,WAAW,CAAA;AAAA,EAClC,CAAC,CAAA;AACH;AAEO,SAAS,cAAA,CAAe,cAAA,EAAyB,EAAA,GAAK,KAAA,EAAwC;AACnG,EAAA,OAAO,IAAI,OAAA,CAAQ,CAAC,OAAA,EAAS,MAAA,KAAW;AACtC,IAAA,MAAM,YAAA,GAAe,CAAC,KAAA,KAAiB;AACrC,MAAA,MAAM,WAAA,GAAc,KAAA;AACpB,MAAA,MAAM,EAAE,IAAA,EAAM,OAAA,EAAQ,GAAI,WAAA,CAAY,MAAA;AACtC,MAAA,IAAI,SAAS,mBAAA,EAAqB;AAChC,QAAA,MAAA,CAAO,mBAAA,CAAoB,uBAAA,EAAyB,YAAA,EAA+B,KAAK,CAAA;AAExF,QAAA,IAAI,wBAAA,CAAyB,OAAO,CAAA,EAAG;AACrC,UAAA,OAAA,CAAQ,OAAO,CAAA;AAAA,QACjB,CAAA,MAAO;AACL,UAAA,MAAA,CAAO,IAAI,KAAA,CAAM,iEAAiE,CAAC,CAAA;AAAA,QACrF;AAAA,MACF,CAAA,MAAA,IAAW,SAAS,iBAAA,EAAmB;AACrC,QAAA,MAAA,CAAO,mBAAA,CAAoB,uBAAA,EAAyB,YAAA,EAA+B,KAAK,CAAA;AACxF,QAAA,MAAA,CAAO,IAAI,KAAA,CAAM,iBAAiB,CAAC,CAAA;AAAA,MACrC;AAAA,IACF,CAAA;AAEA,IAAA,MAAA,CAAO,mBAAA,CAAoB,uBAAA,EAAyB,YAAA,EAA+B,KAAK,CAAA;AACxF,IAAA,MAAA,CAAO,gBAAA,CAAiB,uBAAA,EAAyB,YAAA,EAA+B,KAAK,CAAA;AACrF,IAAA,MAAA,CAAO,aAAA;AAAA,MACL,IAAI,YAAgC,sBAAA,EAAwB;AAAA,QAC1D,MAAA,EAAQ;AAAA,UACN,IAAA,EAAM,kBAAA;AAAA,UACN,OAAA,EAAS;AAAA,YACP,OAAA,EAAS,KAAA;AAAA,YACT,MAAA,EAAQ,qBAAA;AAAA,YACR,MAAA,EAAQ,cAAA;AAAA,YACR;AAAA;AACF;AACF,OACD;AAAA,KACH;AAAA,EACF,CAAC,CAAA;AACH;AAMO,SAAS,kBAAkB,SAAA,EAA8B;AAC9D,EAAA,IAAI,CAAC,SAAA,CAAU,SAAA,EAAU,EAAG;AAC1B,IAAA,MAAM,IAAI,MAAM,yCAAyC,CAAA;AAAA,EAC3D;AACA,EAAA,OAAO,MAAA,CAAO,SAAA,CAAU,OAAA,CAAQ,CAAC,CAAC,CAAA;AACpC;AC3RO,SAAS,wCACd,MAAA,EACiD;AACjD,EAAA,OAAO,gBAAA,IAAoB,MAAA;AAC7B;AAEO,SAAS,8BAA8B,MAAA,EAAsE;AAClH,EAAA,OACE,QAAA,IAAY,MAAA,IACZ,OAAO,MAAA,CAAO,MAAA,KAAW,aACvB,YAAA,IAAgB,MAAA,CAAO,MAAA,IAAU,OAAO,MAAA,CAAO,MAAA,CAAO,eAAe,QAAA,IACpE,WAAA,IAAe,MAAA,CAAO,MAAA,IAAU,OAAO,MAAA,CAAO,OAAO,SAAA,KAAc,QAAA,CAAA,IACtE,SAAA,IAAa,MAAA,IACb,SAAA,IAAa,MAAA;AAEjB;AAMO,IAAM,0BAAN,MAAkE;AAAA,EAChE,MAAA;AAAA,EAEP,YAAY,MAAA,EAA+B;AACzC,IAAA,IAAI,uCAAA,CAAwC,MAAM,CAAA,EAAG;AACnD,MAAA,IAAA,CAAK,MAAA,GAAS;AAAA,QACZ,gBAAgB,MAAA,CAAO;AAAA,OACzB;AAAA,IACF,CAAA,MAAA,IAAW,6BAAA,CAA8B,MAAM,CAAA,EAAG;AAChD,MAAA,IAAI,UAAA;AACJ,MAAA,IAAI,YAAA,IAAgB,OAAO,MAAA,EAAQ;AACjC,QAAA,UAAA,GAAa,UAAA,CAAW,cAAA,CAAe,MAAA,CAAO,MAAA,CAAO,UAAU,CAAA;AAAA,MACjE,CAAA,MAAA,IAAW,WAAA,IAAe,MAAA,CAAO,MAAA,EAAQ;AACvC,QAAA,UAAA,GAAa,UAAA,CAAW,YAAA,CAAa,MAAA,CAAO,MAAA,CAAO,SAAS,CAAA;AAAA,MAC9D,CAAA,MAAO;AACL,QAAA,MAAM,IAAI,MAAM,wCAAwC,CAAA;AAAA,MAC1D;AACA,MAAA,IAAA,CAAK,MAAA,GAAS;AAAA,QACZ,cAAA,EAAgB,IAAI,oBAAA,CAAqB,EAAE,YAAY,OAAA,EAAS,MAAA,CAAO,SAAS;AAAA,OAClF;AAAA,IACF,CAAA,MAAO;AACL,MAAA,MAAM,IAAI,MAAM,iCAAiC,CAAA;AAAA,IACnD;AAAA,EACF;AAAA,EAEA,MAAM,iBAAA,CACJ,OAAA,EACA,GACA,aAAA,EACA,eAAA,EACA,KACA,IAAA,EACkC;AAClC,IAAA,MAAM,OAAA,GAAU,mBAAmB,QAAA,CAAS;AAAA,MAC1C,eAAA;AAAA,MACA,MAAA,EAAQ,aAAA;AAAA,MACR,GAAA;AAAA,MACA,OAAO;AAAC,KACT,CAAA;AACD,IAAA,MAAM,EAAE,KAAA,EAAM,GAAI,iBAAA,CAAkB;AAAA,MAClC,OAAA,EAAS,OAAA;AAAA,MACT,MAAM,IAAA,IAAQ,EAAA;AAAA,MACd,MAAA,EAAQ,MAAM,IAAA,CAAK,eAAA,EAAgB;AAAA,MACnC,QAAA,EAAU,CAAA;AAAA,MACV,aAAA,EAAe,CAAA;AAAA,MACf;AAAA,KACD,CAAA;AAED,IAAA,MAAM,KAAA,GAAQ;AAAA,MACZ,IAAA,EAAM,aAAA;AAAA,MACN,EAAA,EAAI,eAAA;AAAA,MACJ,SAAA,EAAW;AAAA,QACT,WAAW,KAAA,CAAM,SAAA;AAAA,QACjB,OAAA;AAAA,QACA,aAAA,EAAe,OAAO,CAAC,CAAA;AAAA,QACvB,eAAe,KAAA,CAAM;AAAA;AACvB,KACF;AACA,IAAA,OAAO,KAAA;AAAA,EACT;AAAA;AAAA,EAGA,MAAM,gBAAA,GAAiD;AACrD,IAAA,IAAI,IAAA,CAAK,MAAA,CAAO,cAAA,YAA0B,oBAAA,EAAsB;AAC9D,MAAA,OAAO,yBAAA,CAA0B,KAAK,MAAA,CAAO,cAAA,CAAe,WAAW,SAAA,EAAU,CAAE,UAAU,CAAA;AAAA,IAC/F;AACA,IAAA,MAAM,YAAY,MAAM,IAAA,CAAK,MAAA,CAAO,cAAA,CAAe,eAAe,YAAA,EAAa;AAC/E,IAAA,MAAM,kBAAA,GAAqB,SAAA,CAAU,GAAA,CAAI,yBAAyB,CAAA;AAClE,IAAA,IAAI,mBAAmB,MAAA,IAAU,CAAA,IAAK,kBAAA,CAAmB,CAAC,MAAM,MAAA,EAAW;AACzE,MAAA,OAAO,OAAA,CAAQ,MAAA,CAAO,IAAI,KAAA,CAAM,0BAA0B,CAAC,CAAA;AAAA,IAC7D;AAEA,IAAA,OAAO,mBAAmB,CAAC,CAAA;AAAA,EAC7B;AAAA,EAEA,MAAM,eAAA,GAAmC;AACvC,IAAA,IAAI,IAAA,CAAK,MAAA,CAAO,cAAA,YAA0B,oBAAA,EAAsB;AAC9D,MAAA,OAAO,KAAK,MAAA,CAAO,cAAA,CAAe,UAAA,CAAW,WAAA,GAAc,QAAA,EAAS;AAAA,IACtE;AACA,IAAA,MAAM,SAAS,MAAM,IAAA,CAAK,MAAA,CAAO,cAAA,CAAe,eAAe,SAAA,EAAU;AACzE,IAAA,IAAI,WAAW,MAAA,EAAW;AACxB,MAAA,OAAO,OAAA,CAAQ,MAAA,CAAO,IAAI,KAAA,CAAM,6BAA6B,CAAC,CAAA;AAAA,IAChE;AACA,IAAA,OAAO,MAAA;AAAA,EACT;AAAA,EAEA,MAAM,OAAA,CACJ,aAAA,EACA,eAAA,EACA,KACA,KAAA,EACmC;AACnC,IAAA,MAAM,OAAA,GAAU,yBAAyB,QAAA,CAAS;AAAA,MAChD,eAAA;AAAA,MACA,MAAA,EAAQ,aAAA;AAAA,MACR,GAAA;AAAA,MACA,KAAA,EAAO,SAAS;AAAC,KAClB,CAAA;AAED,IAAA,IAAI,QAAA;AAEJ,IAAA,IAAI,IAAA,CAAK,MAAA,CAAO,cAAA,YAA0B,oBAAA,EAAsB;AAC9D,MAAA,QAAA,GAAW,MAAM,IAAA,CAAK,MAAA,CAAO,cAAA,CAAe,SAAA,CAAU;AAAA,QACpD,IAAA,EAAM;AAAA,OACP,CAAA;AAAA,IACH,CAAA,MAAO;AACL,MAAA,QAAA,GAAW,MAAM,IAAA,CAAK,MAAA,CAAO,cAAA,CAAe,0BAAA,CAA2B;AAAA,QACrE,IAAA,EAAM,OAAA;AAAA,QACN,gBAAA,EAAkB,MAAM,IAAA,CAAK,gBAAA;AAAiB,OAC/C,CAAA;AAAA,IACH;AAEA,IAAA,OAAO,wBAAA,CAAyB,eAAe,QAAQ,CAAA;AAAA,EACzD;AACF;ACtIA,SAAS,+BACP,YAAA,EAC8C;AAC9C,EAAA,OAAO,YAAA,IAAgB,YAAA;AACzB;AAEA,SAAS,qCACP,YAAA,EACoD;AACpD,EAAA,OAAO,QAAA,IAAY,YAAA,IAAgB,EAAE,YAAA,CAAa,MAAA,YAAkB,OAAA,CAAA;AACtE;AAEO,IAAM,uBAAN,MAA4D;AAAA,EAChD,MAAA;AAAA,EACD,UAAA;AAAA,EACC,aAAA;AAAA,EAEjB,YAAY,YAAA,EAAkC;AAC5C,IAAA,IAAI,8BAAA,CAA+B,YAAY,CAAA,EAAG;AAChD,MAAA,IAAA,CAAK,MAAA,GAAS,OAAA,CAAQ,aAAA,CAAc,YAAA,CAAa,UAAU,CAAA;AAC3D,MAAA,IAAA,CAAK,UAAA,GAAa,IAAI,UAAA,CAAW,YAAA,CAAa,UAAU,WAAW,CAAA;AACnE,MAAA,IAAA,CAAK,aAAA,GAAgB,KAAA;AAAA,IACvB,CAAA,MAAA,IAAW,oCAAA,CAAqC,YAAY,CAAA,EAAG;AAC7D,MAAA,IAAA,CAAK,SAAS,YAAA,CAAa,MAAA;AAC3B,MAAA,IAAA,CAAK,aAAa,YAAA,CAAa,UAAA;AAC/B,MAAA,IAAA,CAAK,aAAA,GAAgB,IAAA;AAAA,IACvB,CAAA,MAAO;AACL,MAAA,MAAM,IAAI,MAAM,8BAA8B,CAAA;AAAA,IAChD;AAAA,EACF;AAAA,EAEA,MAAa,mBAAA,CACX,SAAA,EACA,UAAA,GAAyB,WAAA,EACoC;AAC7D,IAAA,MAAM,eAAA,GAAkB,MAAM,IAAA,CAAK,UAAA,CAAW,kBAAA,EAAmB;AACjE,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,UAAA,CAAW,kBAAA;AAAA,MACrC;AAAA,QACE,SAAA;AAAA,QACA,WAAW,eAAA,CAAgB,SAAA;AAAA,QAC3B,sBAAsB,eAAA,CAAgB;AAAA,OACxC;AAAA,MACA;AAAA,KACF;AAEA,IAAA,OAAO,QAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAa,gBAAgB,cAAA,EAA2E;AACtG,IAAA,OAAO,IAAA,CAAK,UAAA,CAAW,kBAAA,CAAmB,cAAc,CAAA;AAAA,EAC1D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAa,+BAAA,CACX,cAAA,EACA,UAAA,GAAyB,WAAA,EACM;AAC/B,IAAA,MAAM,MAAA,GAAS,MAAM,IAAA,CAAK,UAAA,CAAW,mBAAmB,cAAc,CAAA;AACtE,IAAA,MAAM,IAAA,CAAK,mBAAA,CAAoB,MAAA,EAAQ,UAAU,CAAA;AACjD,IAAA,OAAO,MAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,WAAW,eAAA,EAA0F;AACzG,IAAA,IAAI,KAAK,aAAA,EAAe;AACtB,MAAA,OAAO,IAAA,CAAK,sBAAsB,eAAe,CAAA;AAAA,IACnD;AACA,IAAA,OAAO,IAAA,CAAK,sBAAsB,eAAe,CAAA;AAAA,EACnD;AAAA,EAEA,MAAc,sBACZ,eAAA,EACsC;AACtC,IAAA,MAAM,gBAAgB,IAAA,CAAK,MAAA;AAE3B,IAAA,IAAI,CAAC,cAAc,SAAA,EAAW;AAC5B,MAAA,MAAM,IAAI,MAAM,sCAAsC,CAAA;AAAA,IACxD;AAEA,IAAA,IAAI,CAAC,cAAc,eAAA,EAAiB;AAClC,MAAA,MAAM,IAAI,MAAM,2CAA2C,CAAA;AAAA,IAC7D;AAEA,IAAA,MAAM,YAAA,GAAe,IAAA,CAAK,2BAAA,CAA4B,eAAe,CAAA;AACrE,IAAA,MAAM,eAAA,GAAkB,MAAM,IAAA,CAAK,UAAA,CAAW,kBAAA,EAAmB;AACjE,IAAA,MAAM,SAAA,GAAY,IAAI,kBAAA,CAAmB;AAAA,MACvC,UAAU,aAAA,CAAc,SAAA;AAAA,MACxB,iBAAiB,eAAA,CAAgB,SAAA;AAAA,MACjC;AAAA,KACD,EAAE,kBAAA,EAAmB;AAEtB,IAAA,MAAM,KAAK,MAAM,aAAA,CAAc,gBAAgB,IAAI,oBAAA,CAAqB,SAAS,CAAC,CAAA;AAClF,IAAA,OAAO,GAAG,SAAA,EAAU;AAAA,EACtB;AAAA,EAEA,MAAc,sBACZ,eAAA,EACsC;AACtC,IAAA,MAAM,gBAAgB,IAAA,CAAK,MAAA;AAC3B,IAAA,MAAM,YAAA,GAAe,IAAA,CAAK,2BAAA,CAA4B,eAAe,CAAA;AAErE,IAAA,MAAM,SAAA,GAAY,IAAI,kBAAA,CAAmB;AAAA,MACvC,UAAU,aAAA,CAAc,SAAA;AAAA,MACxB,eAAA,EAAA,CAAkB,MAAM,IAAA,CAAK,UAAA,CAAW,oBAAmB,EAAG,SAAA;AAAA,MAC9D;AAAA,KACD,EAAE,kBAAA,EAAmB;AAEtB,IAAA,MAAM,EAAA,GAAK,IAAI,oBAAA,CAAqB,SAAS,CAAA;AAC7C,IAAA,EAAA,CAAG,IAAA,CAAK,CAAC,aAAa,CAAC,CAAA;AAEvB,IAAA,OAAO,GAAG,SAAA,EAAU;AAAA,EACtB;AAAA,EAEO,wBAAA,GAAkD;AACvD,IAAA,IAAI,CAAC,IAAA,CAAK,MAAA,CAAO,SAAA,EAAW;AAC1B,MAAA,MAAM,IAAI,MAAM,sCAAsC,CAAA;AAAA,IACxD;AACA,IAAA,OAAO,IAAA,CAAK,MAAA,CAAO,SAAA,CAAU,QAAA,EAAS;AAAA,EACxC;AAAA,EAEA,MAAa,gBAAA,GAAoC;AAC/C,IAAA,OAAO,KAAK,wBAAA,EAAyB;AAAA,EACvC;AAAA,EAEA,MAAa,0BAA0B,IAAA,EAA6D;AAClG,IAAA,IAAI,CAAC,IAAA,CAAK,MAAA,CAAO,SAAA,EAAW;AAC1B,MAAA,MAAM,IAAI,MAAM,sCAAsC,CAAA;AAAA,IACxD;AAEA,IAAA,OAAA,CAAQ,MAAM,yBAAA,CAA0B,IAAI,SAAA,CAAU,IAAI,CAAA,EAAG,IAAA,CAAK,MAAA,CAAO,SAAA,EAAW,IAAI,CAAA,EAAG,QAAA,EAAS;AAAA,EACtG;AAAA,EAEA,MAAa,WAAW,SAAA,EAAmD;AACzE,IAAA,OAAO,MAAM,IAAA,CAAK,UAAA,CAAW,WAAW,IAAI,SAAA,CAAU,SAAS,CAAC,CAAA;AAAA,EAClE;AAAA,EAEA,MAAa,uBAAuB,SAAA,EAA+E;AACjH,IAAA,OAAO,KAAK,UAAA,CAAW,sBAAA,CAAuB,IAAI,SAAA,CAAU,SAAS,CAAC,CAAA;AAAA,EACxE;AAAA,EAEQ,4BAA4B,eAAA,EAA8E;AAChH,IAAA,OAAO,eAAA,CAAgB,GAAA;AAAA,MACrB,CAAA,cAAA,KACE,IAAI,sBAAA,CAAuB;AAAA,QACzB,IAAA,EAAM,cAAA,CAAe,IAAA,CAAK,GAAA,CAAI,CAAC,GAAA,MAA4B;AAAA,UACzD,MAAA,EAAQ,IAAI,SAAA,CAAU,GAAA,CAAI,MAAM,CAAA;AAAA,UAChC,UAAU,GAAA,CAAI,QAAA;AAAA,UACd,YAAY,GAAA,CAAI;AAAA,SAClB,CAAE,CAAA;AAAA,QACF,SAAA,EAAW,IAAI,SAAA,CAAU,cAAA,CAAe,SAAS,CAAA;AAAA,QACjD,IAAA,EAAM,MAAA,CAAO,IAAA,CAAK,cAAA,CAAe,IAAI;AAAA,OACtC;AAAA,KACL;AAAA,EACF;AACF;AC5MA,IAAM,oBAAA,GAA4D;AAAA,EAChE,OAAA,EAAS,qCAAA;AAAA,EACT,MAAA,EAAQ;AACV,CAAA;AAEA,IAAM,2BAAA,GAAmE;AAAA,EACvE,SAAS,QAAA,CAAS,OAAA;AAAA,EAClB,QAAQ,QAAA,CAAS;AACnB,CAAA;AAEA,IAAM,gBAAA,GAAmB,GAAA;AACzB,IAAM,eAAA,GAAkB,GAAA;AAyCjB,IAAM,kBAAA,GAAN,cAAiC,KAAA,CAAM;AAAA,EAC5C,WAAA,CACE,SACgB,IAAA,EAChB;AACA,IAAA,KAAA,CAAM,OAAO,CAAA;AAFG,IAAA,IAAA,CAAA,IAAA,GAAA,IAAA;AAGhB,IAAA,IAAA,CAAK,IAAA,GAAO,oBAAA;AAAA,EACd;AACF;AAEO,SAAS,gCAAgC,MAAA,EAAsE;AACpH,EAAA,OAAO,OAAO,IAAA,KAAS,aAAA;AACzB;AAEO,SAAS,sCACd,MAAA,EAC+C;AAC/C,EAAA,OAAO,OAAO,IAAA,KAAS,mBAAA;AACzB;AAEO,SAAS,kBAAkB,MAAA,EAAkD;AAClF,EAAA,OAAO,OAAO,IAAA,KAAS,aAAA;AACzB;AAEO,SAAS,gCAAgC,MAAA,EAAgE;AAC9G,EAAA,OAAO,OAAO,IAAA,KAAS,mBAAA;AACzB;AAEO,SAAS,sBAAsB,OAAA,EAA4C;AAChF,EAAA,OAAO,CAAC,SAAA,EAAW,QAAQ,CAAA,CAAE,SAAS,OAAO,CAAA;AAC/C;AAEO,SAAS,yBAAyB,UAAA,EAA6B;AACpE,EAAA,IAAI;AAEF,IAAA,MAAM,GAAA,GAAM,WAAW,UAAA,CAAW,IAAI,IAAI,UAAA,CAAW,KAAA,CAAM,CAAC,CAAA,GAAI,UAAA;AAChE,IAAAC,SAAAA,CAAQ,WAAW,GAAG,CAAA;AACtB,IAAA,OAAO,IAAA;AAAA,EACT,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,KAAA;AAAA,EACT;AACF;AAEO,IAAM,wBAAN,MAA8D;AAAA,EAClD,MAAA;AAAA,EACA,MAAA;AAAA,EACA,iBAAA;AAAA,EAEjB,YAAY,MAAA,EAA6B;AACvC,IAAA,IAAI,CAAC,qBAAA,CAAsB,MAAA,CAAO,OAAO,CAAA,EAAG;AAC1C,MAAA,MAAM,IAAI,kBAAA,CAAmB,CAAA,iBAAA,EAAoB,MAAA,CAAO,OAAO,IAAI,iBAAiB,CAAA;AAAA,IACtF;AAEA,IAAA,IAAI,+BAAA,CAAgC,MAAM,CAAA,EAAG;AAC3C,MAAA,IAAI,CAAC,wBAAA,CAAyB,MAAA,CAAO,UAAU,CAAA,EAAG;AAChD,QAAA,MAAM,IAAI,kBAAA,CAAmB,4BAAA,EAA8B,qBAAqB,CAAA;AAAA,MAClF;AAEA,MAAA,MAAM,UAAA,GAAa,MAAA,CAAO,UAAA,CAAW,UAAA,CAAW,IAAI,CAAA,GAAI,MAAA,CAAO,UAAA,CAAW,KAAA,CAAM,CAAC,CAAA,GAAI,MAAA,CAAO,UAAA;AAC5F,MAAA,IAAA,CAAK,MAAA,GAAS;AAAA,QACZ,IAAA,EAAM,aAAA;AAAA,QACN,OAAA,EAASA,SAAAA,CAAQ,UAAA,CAAW,UAAU;AAAA,OACxC;AACA,MAAA,IAAA,CAAK,MAAA,GAAS,IAAI,OAAA,CAAQ,MAAA,CAAO,OAAO,MAAA,IAAU,oBAAA,CAAqB,MAAA,CAAO,OAAO,CAAC,CAAA;AACtF,MAAA,IAAA,CAAK,iBAAA,GAAoB,2BAAA,CAA4B,MAAA,CAAO,OAAO,CAAA;AACnE,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,qCAAA,CAAsC,MAAM,CAAA,EAAG;AACjD,MAAA,IAAA,CAAK,MAAA,GAAS;AAAA,QACZ,IAAA,EAAM,mBAAA;AAAA,QACN,YAAY,MAAA,CAAO;AAAA,OACrB;AACA,MAAA,IAAA,CAAK,MAAA,GAAS,IAAI,OAAA,CAAQ,MAAA,CAAO,OAAO,MAAA,IAAU,oBAAA,CAAqB,MAAA,CAAO,OAAO,CAAC,CAAA;AACtF,MAAA,IAAA,CAAK,iBAAA,GAAoB,2BAAA,CAA4B,MAAA,CAAO,OAAO,CAAA;AACnE,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,IAAI,kBAAA,CAAmB,8BAAA,EAAgC,gBAAgB,CAAA;AAAA,EAC/E;AAAA,EAEA,MAAa,gBAAA,GAAoC;AAC/C,IAAA,IAAI;AACF,MAAA,IAAI,iBAAA,CAAkB,IAAA,CAAK,MAAM,CAAA,EAAG;AAClC,QAAA,OAAO,IAAA,CAAK,MAAA,CAAO,OAAA,CAAQ,SAAA,EAAU;AAAA,MACvC;AAEA,MAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,MAAM,IAAA,CAAK,MAAA,CAAO,WAAW,UAAA,EAAW;AAC5D,MAAA,OAAO,OAAA;AAAA,IACT,SAAS,KAAA,EAAO;AACd,MAAA,MAAM,IAAI,kBAAA;AAAA,QACR,KAAA,YAAiB,KAAA,GAAQ,KAAA,CAAM,OAAA,GAAU,8BAAA;AAAA,QACzC;AAAA,OACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAa,gBAAgB,EAAA,EAAuB;AAClD,IAAA,IAAI;AACF,MAAA,IAAI,iBAAA,CAAkB,IAAA,CAAK,MAAM,CAAA,EAAG;AAElC,QAAA,MAAM,WAAA,GAAc,IAAI,WAAA,CAAY,EAAA,EAAI,KAAK,iBAAiB,CAAA;AAC9D,QAAA,WAAA,CAAY,IAAA,CAAK,IAAA,CAAK,MAAA,CAAO,OAAO,CAAA;AACpC,QAAA,OAAO,YAAY,KAAA,EAAM;AAAA,MAC3B;AAEA,MAAA,MAAM,EAAE,aAAY,GAAI,MAAM,KAAK,MAAA,CAAO,UAAA,CAAW,gBAAgB,EAAA,EAAI;AAAA,QACvE,mBAAmB,IAAA,CAAK;AAAA,OACzB,CAAA;AACD,MAAA,OAAO,WAAA;AAAA,IACT,SAAS,KAAA,EAAO;AACd,MAAA,MAAM,IAAI,kBAAA;AAAA,QACR,KAAA,YAAiB,KAAA,GAAQ,KAAA,CAAM,OAAA,GAAU,4BAAA;AAAA,QACzC;AAAA,OACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAa,0BAA0B,MAAA,EAAuD;AAC5F,IAAA,MAAM,SAAA,GAAY,KAAK,GAAA,EAAI;AAC3B,IAAA,OAAO,IAAA,CAAK,GAAA,EAAI,GAAI,SAAA,GAAY,eAAA,EAAiB;AAC/C,MAAA,IAAI;AACF,QAAA,MAAM,EAAA,GAAK,MAAM,IAAA,CAAK,MAAA,CAAO,cAAa,CAAE,WAAA,CAAY,MAAM,CAAA,CAAE,IAAA,EAAK;AAErE,QAAA,OAAO;AAAA,UACL,GAAG,EAAA;AAAA,UACH,MAAA,EAAQ;AAAA,YACN,GAAG,EAAA,CAAG,MAAA;AAAA,YACN,WAAA,EAAa,GAAG,MAAA,CAAO;AAAA;AACzB,SACF;AAAA,MACF,SAAS,KAAA,EAAO;AAEd,QAAA,MAAM,IAAI,OAAA,CAAQ,CAAA,OAAA,KAAW,UAAA,CAAW,OAAA,EAAS,gBAAgB,CAAC,CAAA;AAAA,MACpE;AAAA,IACF;AACA,IAAA,MAAM,IAAI,kBAAA;AAAA,MACR,CAAA,uCAAA,EAA0C,MAAM,CAAA,OAAA,EAAU,eAAA,GAAkB,GAAI,CAAA,SAAA,CAAA;AAAA,MAChF;AAAA,KACF;AAAA,EACF;AACF","file":"index.mjs","sourcesContent":["import type { ChainId, EvmRawTransaction, EvmRawTransactionReceipt, IEvmWalletProvider } from '@sodax/types';\nimport type { Account, Address, Chain, Transport, Hash, PublicClient, WalletClient } from 'viem';\nimport { privateKeyToAccount } from 'viem/accounts';\nimport { createWalletClient, createPublicClient, http } from 'viem';\nimport { sonic, avalanche, arbitrum, base, optimism, bsc, polygon, nibiru } from 'viem/chains';\nimport {\n SONIC_MAINNET_CHAIN_ID,\n AVALANCHE_MAINNET_CHAIN_ID,\n ARBITRUM_MAINNET_CHAIN_ID,\n BASE_MAINNET_CHAIN_ID,\n OPTIMISM_MAINNET_CHAIN_ID,\n BSC_MAINNET_CHAIN_ID,\n POLYGON_MAINNET_CHAIN_ID,\n NIBIRU_MAINNET_CHAIN_ID,\n} from '@sodax/types';\n\nexport function getEvmViemChain(id: ChainId): Chain {\n switch (id) {\n case SONIC_MAINNET_CHAIN_ID:\n return sonic;\n case AVALANCHE_MAINNET_CHAIN_ID:\n return avalanche;\n case ARBITRUM_MAINNET_CHAIN_ID:\n return arbitrum;\n case BASE_MAINNET_CHAIN_ID:\n return base;\n case OPTIMISM_MAINNET_CHAIN_ID:\n return optimism;\n case BSC_MAINNET_CHAIN_ID:\n return bsc;\n case POLYGON_MAINNET_CHAIN_ID:\n return polygon;\n case NIBIRU_MAINNET_CHAIN_ID:\n return nibiru;\n default:\n throw new Error(`Unsupported EVM chain ID: ${id}`);\n }\n}\n\nexport class EvmWalletProvider implements IEvmWalletProvider {\n private readonly walletClient: WalletClient<Transport, Chain, Account>;\n public readonly publicClient: PublicClient;\n\n constructor(config: EvmWalletConfig) {\n if (isPrivateKeyEvmWalletConfig(config)) {\n const chain = getEvmViemChain(config.chainId);\n this.walletClient = createWalletClient({\n chain,\n transport: http(config.rpcUrl ?? chain.rpcUrls.default.http[0]),\n account: privateKeyToAccount(config.privateKey),\n });\n this.publicClient = createPublicClient({\n chain,\n transport: http(config.rpcUrl ?? chain.rpcUrls.default.http[0]),\n });\n } else if (isBrowserExtensionEvmWalletConfig(config)) {\n this.walletClient = config.walletClient;\n this.publicClient = config.publicClient;\n } else {\n throw new Error('Invalid EVM wallet config');\n }\n }\n\n async sendTransaction(evmRawTx: EvmRawTransaction): Promise<Hash> {\n return this.walletClient.sendTransaction(evmRawTx);\n }\n\n async waitForTransactionReceipt(txHash: Hash): Promise<EvmRawTransactionReceipt> {\n const receipt = await this.publicClient.waitForTransactionReceipt({ hash: txHash });\n return {\n ...receipt,\n transactionIndex: receipt.transactionIndex.toString(),\n blockNumber: receipt.blockNumber.toString(),\n cumulativeGasUsed: receipt.cumulativeGasUsed.toString(),\n gasUsed: receipt.gasUsed.toString(),\n contractAddress: receipt.contractAddress?.toString() ?? null,\n logs: receipt.logs.map(log => ({\n ...log,\n blockNumber: log.blockNumber.toString() as `0x${string}`,\n logIndex: log.logIndex.toString() as `0x${string}`,\n transactionIndex: log.transactionIndex.toString() as `0x${string}`,\n })),\n effectiveGasPrice: receipt.effectiveGasPrice.toString(),\n };\n }\n\n async getWalletAddress(): Promise<Address> {\n return this.walletClient.account.address;\n }\n}\n\n/**\n * EVM Wallet Configuration Types\n */\n\nexport type PrivateKeyEvmWalletConfig = {\n privateKey: `0x${string}`;\n chainId: ChainId;\n rpcUrl?: `http${string}`;\n};\n\nexport type BrowserExtensionEvmWalletConfig = {\n walletClient: WalletClient<Transport, Chain, Account>;\n publicClient: PublicClient;\n};\n\nexport type EvmWalletConfig = PrivateKeyEvmWalletConfig | BrowserExtensionEvmWalletConfig;\n\n/**\n * EVM Type Guards\n */\n\nexport function isPrivateKeyEvmWalletConfig(config: EvmWalletConfig): config is PrivateKeyEvmWalletConfig {\n return 'privateKey' in config && config.privateKey.startsWith('0x');\n}\n\nexport function isBrowserExtensionEvmWalletConfig(config: EvmWalletConfig): config is BrowserExtensionEvmWalletConfig {\n return 'walletClient' in config && 'publicClient' in config;\n}\n","import { SuiClient } from '@mysten/sui/client';\nimport { Ed25519Keypair } from '@mysten/sui/keypairs/ed25519';\nimport type { Transaction, TransactionArgument } from '@mysten/sui/transactions';\nimport type { ISuiWalletProvider, SuiTransaction, SuiExecutionResult, SuiPaginatedCoins } from '@sodax/types';\nimport {\n signTransaction,\n type SuiWalletFeatures,\n type WalletAccount,\n type WalletWithFeatures,\n} from '@mysten/wallet-standard';\n\n// Private key wallet config\nexport type PrivateKeySuiWalletConfig = {\n rpcUrl: string;\n mnemonics: string;\n};\n\n// Browser extension wallet config\nexport type BrowserExtensionSuiWalletConfig = {\n client: SuiClient;\n wallet: WalletWithFeatures<Partial<SuiWalletFeatures>>;\n account: WalletAccount;\n};\n\n// Unified config type\nexport type SuiWalletConfig = PrivateKeySuiWalletConfig | BrowserExtensionSuiWalletConfig;\n\n// Type guards\nfunction isPrivateKeySuiWalletConfig(walletConfig: SuiWalletConfig): walletConfig is PrivateKeySuiWalletConfig {\n return 'mnemonics' in walletConfig;\n}\n\nfunction isBrowserExtensionSuiWalletConfig(\n walletConfig: SuiWalletConfig,\n): walletConfig is BrowserExtensionSuiWalletConfig {\n return 'wallet' in walletConfig && 'account' in walletConfig;\n}\n\nexport type PkSuiWallet = {\n keyPair: Ed25519Keypair;\n};\n\nexport type BrowserExtensionSuiWallet = {\n wallet: WalletWithFeatures<Partial<SuiWalletFeatures>>;\n account: WalletAccount;\n};\n\nexport type SuiWallet = PkSuiWallet | BrowserExtensionSuiWallet;\n\nexport function isPkSuiWallet(wallet: SuiWallet): wallet is PkSuiWallet {\n return 'keyPair' in wallet;\n}\n\nexport function isBrowserExtensionSuiWallet(wallet: SuiWallet): wallet is BrowserExtensionSuiWallet {\n return 'wallet' in wallet && 'account' in wallet;\n}\n\nexport function isSuiWallet(wallet: SuiWallet): wallet is SuiWallet {\n return isPkSuiWallet(wallet) || isBrowserExtensionSuiWallet(wallet);\n}\n\nexport class SuiWalletProvider implements ISuiWalletProvider {\n private readonly client: SuiClient;\n private readonly wallet: SuiWallet;\n\n constructor(walletConfig: SuiWalletConfig) {\n if (isPrivateKeySuiWalletConfig(walletConfig)) {\n this.client = new SuiClient({ url: walletConfig.rpcUrl });\n this.wallet = {\n keyPair: Ed25519Keypair.deriveKeypair(walletConfig.mnemonics),\n };\n } else if (isBrowserExtensionSuiWalletConfig(walletConfig)) {\n this.client = walletConfig.client;\n this.wallet = {\n wallet: walletConfig.wallet,\n account: walletConfig.account,\n };\n } else {\n throw new Error('Invalid wallet configuration');\n }\n }\n\n async signAndExecuteTxn(txn: SuiTransaction): Promise<string> {\n if (isPkSuiWallet(this.wallet)) {\n const res = await this.client.signAndExecuteTransaction({\n transaction: txn as unknown as Transaction,\n signer: this.wallet.keyPair,\n });\n\n return res.digest;\n }\n if (isBrowserExtensionSuiWallet(this.wallet)) {\n const browserWallet = this.wallet.wallet;\n const browserAccount = this.wallet.account;\n\n if (!browserAccount || browserAccount.chains.length === 0) {\n throw new Error('No chains available for wallet account');\n }\n const chain = browserAccount.chains[0];\n if (!chain) {\n throw new Error('No chain available for wallet account');\n }\n const { bytes, signature } = await signTransaction(browserWallet, {\n transaction: txn,\n account: browserAccount,\n chain,\n });\n\n const res = await this.client.executeTransactionBlock({\n transactionBlock: bytes,\n signature,\n options: {\n showRawEffects: true,\n },\n });\n\n return res.digest;\n }\n\n throw new Error('Invalid wallet configuration');\n }\n\n async viewContract(\n tx: Transaction,\n packageId: string,\n module: string,\n functionName: string,\n args: unknown[],\n typeArgs: string[] = [],\n ): Promise<SuiExecutionResult> {\n tx.moveCall({\n target: `${packageId}::${module}::${functionName}`,\n arguments: args as TransactionArgument[],\n typeArguments: typeArgs,\n });\n\n const sender = this.getSuiAddress();\n\n const txResults = await this.client.devInspectTransactionBlock({\n transactionBlock: tx,\n sender,\n });\n\n if (txResults.results && txResults.results[0] !== undefined) {\n return txResults.results[0] as SuiExecutionResult;\n }\n throw Error(`transaction didn't return any values: ${JSON.stringify(txResults, null, 2)}`);\n }\n\n async getCoins(address: string, token: string): Promise<SuiPaginatedCoins> {\n return this.client.getCoins({ owner: address, coinType: token, limit: 10 });\n }\n\n private getSuiAddress(): string {\n if (isPkSuiWallet(this.wallet)) {\n return this.wallet.keyPair.toSuiAddress();\n }\n if (isBrowserExtensionSuiWallet(this.wallet)) {\n return this.wallet.account.address;\n }\n throw new Error('Invalid wallet configuration');\n }\n\n async getWalletAddress(): Promise<string> {\n return this.getSuiAddress();\n }\n}\n","import type { IconTransactionResult, IcxCallTransaction, IIconWalletProvider } from '@sodax/types';\nimport type { IconService, Wallet as IconSdkWallet } from 'icon-sdk-js';\nimport * as IconSdkRaw from 'icon-sdk-js';\nconst IconSdk = ('default' in IconSdkRaw.default ? IconSdkRaw.default : IconSdkRaw) as typeof IconSdkRaw;\nconst { Converter, CallTransactionBuilder, Wallet } = IconSdk;\n\nexport class IconWalletProvider implements IIconWalletProvider {\n private readonly wallet: IconWallet;\n public readonly iconService: IconService;\n\n constructor(wallet: IconWalletConfig) {\n if (isPrivateKeyIconWalletConfig(wallet)) {\n this.wallet = {\n type: 'PRIVATE_KEY',\n wallet: Wallet.loadPrivateKey(wallet.privateKey.slice(2)),\n };\n this.iconService = new IconSdk.IconService(new IconSdk.IconService.HttpProvider(wallet.rpcUrl));\n } else if (isBrowserExtensionIconWalletConfig(wallet)) {\n this.wallet = {\n type: 'BROWSER_EXTENSION',\n wallet: wallet.walletAddress,\n };\n this.iconService = new IconSdk.IconService(new IconSdk.IconService.HttpProvider(wallet.rpcUrl));\n } else {\n throw new Error('Invalid Icon wallet config');\n }\n }\n\n public async sendTransaction(tx: IcxCallTransaction): Promise<Hash> {\n const builtTx = new CallTransactionBuilder()\n .from(tx.from)\n .to(tx.to)\n .stepLimit(Converter.toHex(3000000))\n .nid(tx.nid)\n .version(tx.version ?? '0x3')\n .timestamp(Converter.toHex(tx.timestamp ?? new Date().getTime() * 1000))\n .value(tx.value)\n .method(tx.method)\n .params(tx.params)\n .build();\n\n if (!isIconPkWallet(this.wallet)) {\n // if wallet starts with 0x, it's a private key\n const result = await requestJsonRpc(builtTx);\n\n return result.result satisfies string as Hash;\n }\n const signedTx = new IconSdk.IconService.SignedTransaction(builtTx, this.wallet.wallet);\n const result = await this.iconService.sendTransaction(signedTx).execute();\n\n return result satisfies string as Hash;\n }\n\n public async waitForTransactionReceipt(txHash: Hash): Promise<IconTransactionResult> {\n const result = await this.iconService.waitTransactionResult(txHash).execute();\n\n return {\n ...result,\n status: +result.status,\n cumulativeStepUsed: BigNumberToBigInt(result.cumulativeStepUsed),\n stepUsed: BigNumberToBigInt(result.stepUsed),\n stepPrice: BigNumberToBigInt(result.stepPrice),\n } satisfies IconTransactionResult;\n }\n\n async getWalletAddress(): Promise<IconEoaAddress> {\n if (!this.wallet.wallet) {\n throw new Error('Wallet not initialized');\n }\n return isIconPkWallet(this.wallet) ? (this.wallet.wallet.getAddress() as IconEoaAddress) : this.wallet.wallet;\n }\n}\n\n/**\n * Icon Types\n */\n\nexport type IconJsonRpcVersion = '2.0';\n\nexport type Hex = `0x${string}`;\nexport type Hash = `0x${string}`;\nexport type IconAddress = `hx${string}` | `cx${string}`;\nexport type IconEoaAddress = `hx${string}`;\n\nexport type PrivateKeyIconWalletConfig = {\n privateKey: `0x${string}`;\n rpcUrl: `http${string}`;\n};\n\nexport type BrowserExtensionIconWalletConfig = {\n walletAddress?: IconEoaAddress;\n rpcUrl: `http${string}`;\n};\n\nexport type IconWalletConfig = PrivateKeyIconWalletConfig | BrowserExtensionIconWalletConfig;\n\nexport type IconPkWallet = {\n type: 'PRIVATE_KEY';\n wallet: IconSdkWallet;\n};\n\nexport type IconBrowserExtensionWallet = {\n type: 'BROWSER_EXTENSION';\n wallet?: IconEoaAddress;\n};\n\nexport type IconWallet = IconPkWallet | IconBrowserExtensionWallet;\n\nexport type HanaWalletRequestEvent =\n | 'REQUEST_HAS_ACCOUNT'\n | 'REQUEST_HAS_ADDRESS'\n | 'REQUEST_ADDRESS'\n | 'REQUEST_JSON'\n | 'REQUEST_SIGNING'\n | 'REQUEST_JSON-RPC';\nexport type HanaWalletResponseEvent =\n | 'RESPONSE_HAS_ACCOUNT'\n | 'RESPONSE_HAS_ADDRESS'\n | 'RESPONSE_ADDRESS'\n | 'RESPONSE_JSON-RPC'\n | 'RESPONSE_SIGNING'\n | 'CANCEL_SIGNING'\n | 'CANCEL_JSON-RPC';\n\nexport type ResponseAddressType = {\n type: 'RESPONSE_ADDRESS';\n payload: IconAddress;\n};\n\nexport type ResponseSigningType = {\n type: 'RESPONSE_SIGNING';\n payload: string;\n};\n\nexport type RelayRequestDetail = {\n type: HanaWalletRequestEvent;\n payload?: {\n jsonrpc: IconJsonRpcVersion;\n method: string;\n params: unknown;\n id: number | undefined;\n };\n};\n\nexport type RelayRequestSigning = {\n type: 'REQUEST_SIGNING';\n payload: {\n from: IconAddress;\n hash: string;\n };\n};\n\nexport type JsonRpcPayloadResponse = {\n id: number;\n result: string; // txHash\n};\n\ninterface RelayResponseEventDetail {\n type: HanaWalletResponseEvent;\n payload: unknown;\n}\n\n/**\n * Icon Type Guards\n */\n\nexport function isIconPkWallet(wallet: IconWallet): wallet is IconPkWallet {\n return wallet.type === 'PRIVATE_KEY';\n}\n\nexport function isIconBrowserExtensionWallet(wallet: IconWallet): wallet is IconBrowserExtensionWallet {\n return wallet.type === 'BROWSER_EXTENSION';\n}\n\nexport function isPrivateKeyIconWalletConfig(config: IconWalletConfig): config is PrivateKeyIconWalletConfig {\n return 'privateKey' in config && config.privateKey.startsWith('0x');\n}\n\nexport function isBrowserExtensionIconWalletConfig(\n config: IconWalletConfig,\n): config is BrowserExtensionIconWalletConfig {\n return 'walletAddress' in config && (isIconEoaAddress(config.walletAddress) || !config.walletAddress);\n}\n\nexport function isIconAddress(value: unknown): value is IconAddress {\n return typeof value === 'string' && /^hx[a-f0-9]{40}$|^cx[a-f0-9]{40}$/.test(value);\n}\n\nexport function isIconEoaAddress(value: unknown): value is IconEoaAddress {\n return typeof value === 'string' && /^hx[a-f0-9]{40}$/.test(value);\n}\n\nexport function isResponseAddressType(value: unknown): value is ResponseAddressType {\n return (\n typeof value === 'object' &&\n value !== null &&\n 'type' in value &&\n 'payload' in value &&\n value.type === 'RESPONSE_ADDRESS' &&\n isIconAddress(value.payload)\n );\n}\n\nexport function isResponseSigningType(value: unknown): value is ResponseSigningType {\n return (\n typeof value === 'object' &&\n value !== null &&\n 'type' in value &&\n 'payload' in value &&\n value.type === 'RESPONSE_SIGNING' &&\n typeof value.payload === 'string'\n );\n}\n\nexport function isJsonRpcPayloadResponse(value: unknown): value is JsonRpcPayloadResponse {\n return (\n typeof value === 'object' &&\n value !== null &&\n 'id' in value &&\n 'result' in value &&\n typeof value.result === 'string'\n );\n}\n\n/**\n * Methods to interact with Icon Browser Extension Wallet (e.g. Hana Wallet)\n */\n\nexport function requestAddress(): Promise<IconAddress> {\n return new Promise(resolve => {\n const eventHandler = (event: Event) => {\n const customEvent = event as CustomEvent<RelayResponseEventDetail>;\n const response = customEvent.detail;\n if (isResponseAddressType(response)) {\n window.removeEventListener('ICONEX_RELAY_RESPONSE', eventHandler as EventListener, false);\n resolve(response.payload);\n }\n };\n\n window.removeEventListener('ICONEX_RELAY_RESPONSE', eventHandler, false);\n window.addEventListener('ICONEX_RELAY_RESPONSE', eventHandler, false);\n window.dispatchEvent(\n new CustomEvent<RelayRequestDetail>('ICONEX_RELAY_REQUEST', {\n detail: {\n type: 'REQUEST_ADDRESS',\n },\n }),\n );\n });\n}\n\nexport function requestSigning(from: IconAddress, hash: string): Promise<string> {\n return new Promise((resolve, reject) => {\n const signRequest = new CustomEvent<RelayRequestSigning>('ICONEX_RELAY_REQUEST', {\n detail: {\n type: 'REQUEST_SIGNING',\n payload: {\n from,\n hash,\n },\n },\n });\n\n const eventHandler = (event: Event) => {\n const customEvent = event as CustomEvent<RelayResponseEventDetail>;\n const response = customEvent.detail;\n if (isResponseSigningType(response)) {\n window.removeEventListener('ICONEX_RELAY_RESPONSE', eventHandler as EventListener, false);\n\n // resolve signature\n resolve(response.payload);\n } else if (response.type === 'CANCEL_SIGNING') {\n reject(new Error('CANCEL_SIGNING'));\n }\n };\n\n window.removeEventListener('ICONEX_RELAY_RESPONSE', eventHandler as EventListener, false);\n window.addEventListener('ICONEX_RELAY_RESPONSE', eventHandler as EventListener, false);\n window.dispatchEvent(signRequest);\n });\n}\n\nexport function requestJsonRpc(rawTransaction: unknown, id = 99999): Promise<JsonRpcPayloadResponse> {\n return new Promise((resolve, reject) => {\n const eventHandler = (event: Event) => {\n const customEvent = event as CustomEvent<RelayResponseEventDetail>;\n const { type, payload } = customEvent.detail;\n if (type === 'RESPONSE_JSON-RPC') {\n window.removeEventListener('ICONEX_RELAY_RESPONSE', eventHandler as EventListener, false);\n\n if (isJsonRpcPayloadResponse(payload)) {\n resolve(payload);\n } else {\n reject(new Error('Invalid payload response type (expected JsonRpcPayloadResponse)'));\n }\n } else if (type === 'CANCEL_JSON-RPC') {\n window.removeEventListener('ICONEX_RELAY_RESPONSE', eventHandler as EventListener, false);\n reject(new Error('CANCEL_JSON-RPC'));\n }\n };\n\n window.removeEventListener('ICONEX_RELAY_RESPONSE', eventHandler as EventListener, false);\n window.addEventListener('ICONEX_RELAY_RESPONSE', eventHandler as EventListener, false);\n window.dispatchEvent(\n new CustomEvent<RelayRequestDetail>('ICONEX_RELAY_REQUEST', {\n detail: {\n type: 'REQUEST_JSON-RPC',\n payload: {\n jsonrpc: '2.0',\n method: 'icx_sendTransaction',\n params: rawTransaction,\n id: id,\n },\n },\n }),\n );\n });\n}\n\n/**\n * Icon Utils\n */\n\nexport function BigNumberToBigInt(bigNumber: BigNumber): bigint {\n if (!bigNumber.isInteger()) {\n throw new Error('Cannot convert decimal number to BigInt');\n }\n return BigInt(bigNumber.toFixed(0));\n}\n","import type { Network } from '@injectivelabs/networks';\nimport {\n MsgExecuteContract,\n MsgExecuteContractCompat,\n createTransaction,\n PrivateKey,\n getInjectiveSignerAddress,\n type TxResponse,\n} from '@injectivelabs/sdk-ts';\nimport type { Hex, JsonObject, InjectiveCoin, IInjectiveWalletProvider, InjectiveEoaAddress } from '@sodax/types';\nimport { InjectiveExecuteResponse, type InjectiveRawTransaction } from '@sodax/types';\nimport type { MsgBroadcaster } from '@injectivelabs/wallet-core';\nimport { MsgBroadcasterWithPk } from '@injectivelabs/sdk-ts';\nimport type { ChainId, EvmChainId } from '@injectivelabs/ts-types';\n\n/**\n * Injective Wallet Configuration Types\n */\n\nexport type BrowserExtensionInjectiveWalletConfig = {\n msgBroadcaster: MsgBroadcaster;\n};\n\nexport type SecretInjectiveWalletConfig = {\n secret:\n | {\n privateKey: string;\n }\n | {\n mnemonics: string;\n };\n chainId: ChainId;\n network: Network;\n evmOptions?: {\n evmChainId: EvmChainId;\n rpcUrl: `http${string}`;\n };\n};\n\nexport type InjectiveWalletConfig = BrowserExtensionInjectiveWalletConfig | SecretInjectiveWalletConfig;\n\n/**\n * Injective Type Guards\n */\n\nexport function isBrowserExtensionInjectiveWalletConfig(\n config: InjectiveWalletConfig,\n): config is BrowserExtensionInjectiveWalletConfig {\n return 'msgBroadcaster' in config;\n}\n\nexport function isSecretInjectiveWalletConfig(config: InjectiveWalletConfig): config is SecretInjectiveWalletConfig {\n return (\n 'secret' in config &&\n typeof config.secret === 'object' &&\n (('privateKey' in config.secret && typeof config.secret.privateKey === 'string') ||\n ('mnemonics' in config.secret && typeof config.secret.mnemonics === 'string')) &&\n 'network' in config &&\n 'chainId' in config\n );\n}\n\nexport type InjectiveWallet = {\n msgBroadcaster: MsgBroadcaster | MsgBroadcasterWithPk;\n};\n\nexport class InjectiveWalletProvider implements IInjectiveWalletProvider {\n public wallet: InjectiveWallet;\n\n constructor(config: InjectiveWalletConfig) {\n if (isBrowserExtensionInjectiveWalletConfig(config)) {\n this.wallet = {\n msgBroadcaster: config.msgBroadcaster,\n };\n } else if (isSecretInjectiveWalletConfig(config)) {\n let privateKey: PrivateKey;\n if ('privateKey' in config.secret) {\n privateKey = PrivateKey.fromPrivateKey(config.secret.privateKey);\n } else if ('mnemonics' in config.secret) {\n privateKey = PrivateKey.fromMnemonic(config.secret.mnemonics);\n } else {\n throw new Error('Invalid Secret Injective wallet config');\n }\n this.wallet = {\n msgBroadcaster: new MsgBroadcasterWithPk({ privateKey, network: config.network }),\n };\n } else {\n throw new Error('Invalid Injective wallet config');\n }\n }\n\n async getRawTransaction(\n chainId: string,\n _: string,\n senderAddress: string,\n contractAddress: string,\n msg: JsonObject,\n memo?: string,\n ): Promise<InjectiveRawTransaction> {\n const msgExec = MsgExecuteContract.fromJSON({\n contractAddress: contractAddress,\n sender: senderAddress,\n msg: msg as object,\n funds: [],\n });\n const { txRaw } = createTransaction({\n message: msgExec,\n memo: memo || '',\n pubKey: await this.getWalletPubKey(),\n sequence: 0,\n accountNumber: 0,\n chainId: chainId,\n });\n\n const rawTx = {\n from: senderAddress as Hex,\n to: contractAddress as Hex,\n signedDoc: {\n bodyBytes: txRaw.bodyBytes,\n chainId: chainId,\n accountNumber: BigInt(0),\n authInfoBytes: txRaw.authInfoBytes,\n },\n };\n return rawTx;\n }\n\n // return wallet address as bech32\n async getWalletAddress(): Promise<InjectiveEoaAddress> {\n if (this.wallet.msgBroadcaster instanceof MsgBroadcasterWithPk) {\n return getInjectiveSignerAddress(this.wallet.msgBroadcaster.privateKey.toAddress().toBech32());\n }\n const addresses = await this.wallet.msgBroadcaster.walletStrategy.getAddresses();\n const injectiveAddresses = addresses.map(getInjectiveSignerAddress);\n if (injectiveAddresses.length <= 0 || injectiveAddresses[0] === undefined) {\n return Promise.reject(new Error('Wallet address not found'));\n }\n\n return injectiveAddresses[0];\n }\n\n async getWalletPubKey(): Promise<string> {\n if (this.wallet.msgBroadcaster instanceof MsgBroadcasterWithPk) {\n return this.wallet.msgBroadcaster.privateKey.toPublicKey().toString();\n }\n const pubKey = await this.wallet.msgBroadcaster.walletStrategy.getPubKey();\n if (pubKey === undefined) {\n return Promise.reject(new Error('Wallet public key not found'));\n }\n return pubKey;\n }\n\n async execute(\n senderAddress: string,\n contractAddress: string,\n msg: JsonObject,\n funds?: InjectiveCoin[],\n ): Promise<InjectiveExecuteResponse> {\n const msgExec = MsgExecuteContractCompat.fromJSON({\n contractAddress: contractAddress,\n sender: senderAddress,\n msg: msg as object,\n funds: funds || [],\n });\n\n let txResult: TxResponse;\n\n if (this.wallet.msgBroadcaster instanceof MsgBroadcasterWithPk) {\n txResult = await this.wallet.msgBroadcaster.broadcast({\n msgs: msgExec,\n });\n } else {\n txResult = await this.wallet.msgBroadcaster.broadcastWithFeeDelegation({\n msgs: msgExec,\n injectiveAddress: await this.getWalletAddress(),\n });\n }\n\n return InjectiveExecuteResponse.fromTxResponse(txResult);\n }\n}\n","import { getAssociatedTokenAddress } from '@solana/spl-token';\nimport {\n type Commitment,\n Connection,\n Keypair,\n PublicKey,\n type RpcResponseAndContext,\n type TokenAmount,\n TransactionInstruction,\n TransactionMessage,\n VersionedTransaction,\n} from '@solana/web3.js';\nimport type {\n ISolanaWalletProvider,\n SolanaAccountMeta,\n SolanaBase58PublicKey,\n SolanaRpcResponseAndContext,\n SolanaSerializedTransaction,\n SolanaSignatureResult,\n SolanaRawTransactionInstruction,\n TransactionSignature,\n} from '@sodax/types';\nimport type { SignerWalletAdapterProps } from '@solana/wallet-adapter-base';\n\n// Wallet adapter pattern interface\ninterface WalletContextState {\n publicKey: PublicKey | null;\n signTransaction: SignerWalletAdapterProps['signTransaction'] | undefined;\n}\n\n// Direct keypair pattern configs\nexport type PrivateKeySolanaWalletConfig = {\n privateKey: Uint8Array;\n endpoint: string;\n};\n\n// Wallet adapter pattern config\nexport type BrowserExtensionSolanaWalletConfig = {\n wallet: WalletContextState;\n connection: Connection;\n};\n\n// Unified config type\nexport type SolanaWalletConfig = PrivateKeySolanaWalletConfig | BrowserExtensionSolanaWalletConfig;\n\n// Type guards\nfunction isPrivateKeySolanaWalletConfig(\n walletConfig: SolanaWalletConfig,\n): walletConfig is PrivateKeySolanaWalletConfig {\n return 'privateKey' in walletConfig;\n}\n\nfunction isBrowserExtensionSolanaWalletConfig(\n walletConfig: SolanaWalletConfig,\n): walletConfig is BrowserExtensionSolanaWalletConfig {\n return 'wallet' in walletConfig && !(walletConfig.wallet instanceof Keypair);\n}\n\nexport class SolanaWalletProvider implements ISolanaWalletProvider {\n private readonly wallet: Keypair | WalletContextState;\n public readonly connection: Connection;\n private readonly isAdapterMode: boolean;\n\n constructor(walletConfig: SolanaWalletConfig) {\n if (isPrivateKeySolanaWalletConfig(walletConfig)) {\n this.wallet = Keypair.fromSecretKey(walletConfig.privateKey);\n this.connection = new Connection(walletConfig.endpoint, 'confirmed');\n this.isAdapterMode = false;\n } else if (isBrowserExtensionSolanaWalletConfig(walletConfig)) {\n this.wallet = walletConfig.wallet;\n this.connection = walletConfig.connection;\n this.isAdapterMode = true;\n } else {\n throw new Error('Invalid wallet configuration');\n }\n }\n\n public async waitForConfirmation(\n signature: string,\n commitment: Commitment = 'finalized',\n ): Promise<SolanaRpcResponseAndContext<SolanaSignatureResult>> {\n const latestBlockhash = await this.connection.getLatestBlockhash();\n const response = await this.connection.confirmTransaction(\n {\n signature,\n blockhash: latestBlockhash.blockhash,\n lastValidBlockHeight: latestBlockhash.lastValidBlockHeight,\n },\n commitment,\n );\n\n return response;\n }\n\n /**\n * Send a raw transaction to the Solana network.\n * @param rawTransaction - The raw transaction to send.\n * @returns The transaction signature.\n */\n public async sendTransaction(rawTransaction: Uint8Array | Array<number>): Promise<TransactionSignature> {\n return this.connection.sendRawTransaction(rawTransaction);\n }\n\n /**\n * Send a raw transaction to the Solana network and wait for confirmation.\n * @param rawTransaction - The raw transaction to send.\n * @param commitment - The commitment level to use. Defaults to 'finalized'.\n * @returns The transaction signature.\n */\n public async sendTransactionWithConfirmation(\n rawTransaction: Uint8Array | Array<number>,\n commitment: Commitment = 'finalized',\n ): Promise<TransactionSignature> {\n const txHash = await this.connection.sendRawTransaction(rawTransaction);\n await this.waitForConfirmation(txHash, commitment);\n return txHash;\n }\n\n /**\n * Build a v0 versioned transaction.\n * @param instructions - The instructions to include in the transaction.\n * @returns The v0 transaction.\n */\n async buildV0Txn(rawInstructions: SolanaRawTransactionInstruction[]): Promise<SolanaSerializedTransaction> {\n if (this.isAdapterMode) {\n return this.buildV0TxnWithAdapter(rawInstructions);\n }\n return this.buildV0TxnWithKeypair(rawInstructions);\n }\n\n private async buildV0TxnWithAdapter(\n rawInstructions: SolanaRawTransactionInstruction[],\n ): Promise<SolanaSerializedTransaction> {\n const adapterWallet = this.wallet as WalletContextState;\n\n if (!adapterWallet.publicKey) {\n throw new Error('Wallet public key is not initialized');\n }\n\n if (!adapterWallet.signTransaction) {\n throw new Error('Wallet signTransaction is not initialized');\n }\n\n const instructions = this.buildTransactionInstruction(rawInstructions);\n const latestBlockhash = await this.connection.getLatestBlockhash();\n const messageV0 = new TransactionMessage({\n payerKey: adapterWallet.publicKey,\n recentBlockhash: latestBlockhash.blockhash,\n instructions,\n }).compileToV0Message();\n\n const tx = await adapterWallet.signTransaction(new VersionedTransaction(messageV0));\n return tx.serialize();\n }\n\n private async buildV0TxnWithKeypair(\n rawInstructions: SolanaRawTransactionInstruction[],\n ): Promise<SolanaSerializedTransaction> {\n const keypairWallet = this.wallet as Keypair;\n const instructions = this.buildTransactionInstruction(rawInstructions);\n\n const messageV0 = new TransactionMessage({\n payerKey: keypairWallet.publicKey,\n recentBlockhash: (await this.connection.getLatestBlockhash()).blockhash,\n instructions,\n }).compileToV0Message();\n\n const tx = new VersionedTransaction(messageV0);\n tx.sign([keypairWallet]);\n\n return tx.serialize();\n }\n\n public getWalletBase58PublicKey(): SolanaBase58PublicKey {\n if (!this.wallet.publicKey) {\n throw new Error('Wallet public key is not initialized');\n }\n return this.wallet.publicKey.toBase58();\n }\n\n public async getWalletAddress(): Promise<string> {\n return this.getWalletBase58PublicKey();\n }\n\n public async getAssociatedTokenAddress(mint: SolanaBase58PublicKey): Promise<SolanaBase58PublicKey> {\n if (!this.wallet.publicKey) {\n throw new Error('Wallet public key is not initialized');\n }\n\n return (await getAssociatedTokenAddress(new PublicKey(mint), this.wallet.publicKey, true)).toBase58();\n }\n\n public async getBalance(publicKey: SolanaBase58PublicKey): Promise<number> {\n return await this.connection.getBalance(new PublicKey(publicKey));\n }\n\n public async getTokenAccountBalance(publicKey: SolanaBase58PublicKey): Promise<RpcResponseAndContext<TokenAmount>> {\n return this.connection.getTokenAccountBalance(new PublicKey(publicKey));\n }\n\n private buildTransactionInstruction(rawInstructions: SolanaRawTransactionInstruction[]): TransactionInstruction[] {\n return rawInstructions.map(\n rawInstruction =>\n new TransactionInstruction({\n keys: rawInstruction.keys.map((key: SolanaAccountMeta) => ({\n pubkey: new PublicKey(key.pubkey),\n isSigner: key.isSigner,\n isWritable: key.isWritable,\n })),\n programId: new PublicKey(rawInstruction.programId),\n data: Buffer.from(rawInstruction.data),\n }),\n );\n }\n}\n","import type { Hex, IStellarWalletProvider, StellarRawTransactionReceipt, XDR } from '@sodax/types';\nimport { Networks, Horizon, Transaction, Keypair } from '@stellar/stellar-sdk';\n\ninterface StellarWalletsKit {\n getAddress(): Promise<{ address: string }>;\n signTransaction(tx: XDR, options: { networkPassphrase: string }): Promise<{ signedTxXdr: XDR }>;\n}\n\nexport type StellarNetwork = 'TESTNET' | 'PUBLIC';\n\nconst STELLAR_HORIZON_URLS: { [key in StellarNetwork]: string } = {\n TESTNET: 'https://horizon-testnet.stellar.org',\n PUBLIC: 'https://horizon.stellar.org',\n};\n\nconst STELLAR_NETWORK_PASSPHRASES: { [key in StellarNetwork]: string } = {\n TESTNET: Networks.TESTNET,\n PUBLIC: Networks.PUBLIC,\n};\n\nconst TX_POLL_INTERVAL = 2000; // 2 seconds\nconst TX_POLL_TIMEOUT = 60000; // 60 seconds\n\nconst STELLAR_ERROR_CODES = {\n INVALID_CONFIG: 'INVALID_CONFIG',\n SIGN_TX_ERROR: 'SIGN_TX_ERROR',\n TX_RECEIPT_TIMEOUT: 'TX_RECEIPT_TIMEOUT',\n SEND_TX_ERROR: 'SEND_TX_ERROR',\n INVALID_NETWORK: 'INVALID_NETWORK',\n INVALID_PRIVATE_KEY: 'INVALID_PRIVATE_KEY',\n} as const;\n\nexport type StellarAddress = string; // Stellar addresses are in format: G...\n\nexport type PrivateKeyStellarWalletConfig = {\n type: 'PRIVATE_KEY';\n privateKey: Hex;\n network: StellarNetwork;\n rpcUrl?: string;\n};\n\nexport type BrowserExtensionStellarWalletConfig = {\n type: 'BROWSER_EXTENSION';\n walletsKit: StellarWalletsKit;\n network: StellarNetwork;\n rpcUrl?: string;\n};\n\nexport type StellarWalletConfig = PrivateKeyStellarWalletConfig | BrowserExtensionStellarWalletConfig;\n\nexport type StellarPkWallet = {\n type: 'PRIVATE_KEY';\n keypair: Keypair;\n};\n\nexport type StellarBrowserExtensionWallet = {\n type: 'BROWSER_EXTENSION';\n walletsKit: StellarWalletsKit;\n};\n\nexport type StellarWallet = StellarPkWallet | StellarBrowserExtensionWallet;\n\nexport class StellarWalletError extends Error {\n constructor(\n message: string,\n public readonly code: keyof typeof STELLAR_ERROR_CODES,\n ) {\n super(message);\n this.name = 'StellarWalletError';\n }\n}\n\nexport function isPrivateKeyStellarWalletConfig(config: StellarWalletConfig): config is PrivateKeyStellarWalletConfig {\n return config.type === 'PRIVATE_KEY';\n}\n\nexport function isBrowserExtensionStellarWalletConfig(\n config: StellarWalletConfig,\n): config is BrowserExtensionStellarWalletConfig {\n return config.type === 'BROWSER_EXTENSION';\n}\n\nexport function isStellarPkWallet(wallet: StellarWallet): wallet is StellarPkWallet {\n return wallet.type === 'PRIVATE_KEY';\n}\n\nexport function isStellarBrowserExtensionWallet(wallet: StellarWallet): wallet is StellarBrowserExtensionWallet {\n return wallet.type === 'BROWSER_EXTENSION';\n}\n\nexport function isValidStellarNetwork(network: string): network is StellarNetwork {\n return ['TESTNET', 'PUBLIC'].includes(network);\n}\n\nexport function isValidStellarPrivateKey(privateKey: string): boolean {\n try {\n // Remove '0x' prefix if present\n const key = privateKey.startsWith('0x') ? privateKey.slice(2) : privateKey;\n Keypair.fromSecret(key);\n return true;\n } catch {\n return false;\n }\n}\n\nexport class StellarWalletProvider implements IStellarWalletProvider {\n private readonly wallet: StellarWallet;\n private readonly server: Horizon.Server;\n private readonly networkPassphrase: string;\n\n constructor(config: StellarWalletConfig) {\n if (!isValidStellarNetwork(config.network)) {\n throw new StellarWalletError(`Invalid network: ${config.network}`, 'INVALID_NETWORK');\n }\n\n if (isPrivateKeyStellarWalletConfig(config)) {\n if (!isValidStellarPrivateKey(config.privateKey)) {\n throw new StellarWalletError('Invalid private key format', 'INVALID_PRIVATE_KEY');\n }\n // Remove '0x' prefix if present\n const privateKey = config.privateKey.startsWith('0x') ? config.privateKey.slice(2) : config.privateKey;\n this.wallet = {\n type: 'PRIVATE_KEY',\n keypair: Keypair.fromSecret(privateKey),\n };\n this.server = new Horizon.Server(config.rpcUrl ?? STELLAR_HORIZON_URLS[config.network]);\n this.networkPassphrase = STELLAR_NETWORK_PASSPHRASES[config.network];\n return;\n }\n\n if (isBrowserExtensionStellarWalletConfig(config)) {\n this.wallet = {\n type: 'BROWSER_EXTENSION',\n walletsKit: config.walletsKit,\n };\n this.server = new Horizon.Server(config.rpcUrl ?? STELLAR_HORIZON_URLS[config.network]);\n this.networkPassphrase = STELLAR_NETWORK_PASSPHRASES[config.network];\n return;\n }\n\n throw new StellarWalletError('Invalid wallet configuration', 'INVALID_CONFIG');\n }\n\n public async getWalletAddress(): Promise<string> {\n try {\n if (isStellarPkWallet(this.wallet)) {\n return this.wallet.keypair.publicKey();\n }\n\n const { address } = await this.wallet.walletsKit.getAddress();\n return address;\n } catch (error) {\n throw new StellarWalletError(\n error instanceof Error ? error.message : 'Failed to get wallet address',\n 'INVALID_CONFIG',\n );\n }\n }\n\n public async signTransaction(tx: XDR): Promise<XDR> {\n try {\n if (isStellarPkWallet(this.wallet)) {\n // Parse the XDR transaction\n const transaction = new Transaction(tx, this.networkPassphrase);\n transaction.sign(this.wallet.keypair);\n return transaction.toXDR();\n }\n\n const { signedTxXdr } = await this.wallet.walletsKit.signTransaction(tx, {\n networkPassphrase: this.networkPassphrase,\n });\n return signedTxXdr;\n } catch (error) {\n throw new StellarWalletError(\n error instanceof Error ? error.message : 'Failed to sign transaction',\n 'SIGN_TX_ERROR',\n );\n }\n }\n\n public async waitForTransactionReceipt(txHash: string): Promise<StellarRawTransactionReceipt> {\n const startTime = Date.now();\n while (Date.now() - startTime < TX_POLL_TIMEOUT) {\n try {\n const tx = await this.server.transactions().transaction(txHash).call();\n\n return {\n ...tx,\n _links: {\n ...tx._links,\n transaction: tx._links.self,\n },\n };\n } catch (error) {\n // Wait for the next poll interval\n await new Promise(resolve => setTimeout(resolve, TX_POLL_INTERVAL));\n }\n }\n throw new StellarWalletError(\n `Transaction receipt not found for hash ${txHash} after ${TX_POLL_TIMEOUT / 1000} seconds.`,\n 'TX_RECEIPT_TIMEOUT',\n );\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/wallet-providers/EvmWalletProvider.ts","../src/wallet-providers/SuiWalletProvider.ts","../src/wallet-providers/IconWalletProvider.ts","../src/wallet-providers/InjectiveWalletProvider.ts","../src/wallet-providers/SolanaWalletProvider.ts","../src/wallet-providers/StellarWalletProvider.ts"],"names":["result","Keypair"],"mappings":"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","file":"index.mjs","sourcesContent":["import type { ChainId, EvmRawTransaction, EvmRawTransactionReceipt, IEvmWalletProvider } from '@sodax/types';\nimport type { Account, Address, Chain, Transport, Hash, PublicClient, WalletClient } from 'viem';\nimport { privateKeyToAccount } from 'viem/accounts';\nimport { createWalletClient, createPublicClient, http } from 'viem';\nimport { sonic, avalanche, arbitrum, base, optimism, bsc, polygon, mainnet } from 'viem/chains';\nimport {\n SONIC_MAINNET_CHAIN_ID,\n AVALANCHE_MAINNET_CHAIN_ID,\n ARBITRUM_MAINNET_CHAIN_ID,\n BASE_MAINNET_CHAIN_ID,\n OPTIMISM_MAINNET_CHAIN_ID,\n BSC_MAINNET_CHAIN_ID,\n POLYGON_MAINNET_CHAIN_ID,\n ETHEREUM_MAINNET_CHAIN_ID,\n} from '@sodax/types';\n\nexport function getEvmViemChain(id: ChainId): Chain {\n switch (id) {\n case SONIC_MAINNET_CHAIN_ID:\n return sonic;\n case AVALANCHE_MAINNET_CHAIN_ID:\n return avalanche;\n case ARBITRUM_MAINNET_CHAIN_ID:\n return arbitrum;\n case BASE_MAINNET_CHAIN_ID:\n return base;\n case OPTIMISM_MAINNET_CHAIN_ID:\n return optimism;\n case BSC_MAINNET_CHAIN_ID:\n return bsc;\n case POLYGON_MAINNET_CHAIN_ID:\n return polygon;\n case ETHEREUM_MAINNET_CHAIN_ID:\n return mainnet;\n default:\n throw new Error(`Unsupported EVM chain ID: ${id}`);\n }\n}\n\nexport class EvmWalletProvider implements IEvmWalletProvider {\n private readonly walletClient: WalletClient<Transport, Chain, Account>;\n public readonly publicClient: PublicClient;\n\n constructor(config: EvmWalletConfig) {\n if (isPrivateKeyEvmWalletConfig(config)) {\n const chain = getEvmViemChain(config.chainId);\n this.walletClient = createWalletClient({\n chain,\n transport: http(config.rpcUrl ?? chain.rpcUrls.default.http[0]),\n account: privateKeyToAccount(config.privateKey),\n });\n this.publicClient = createPublicClient({\n chain,\n transport: http(config.rpcUrl ?? chain.rpcUrls.default.http[0]),\n });\n } else if (isBrowserExtensionEvmWalletConfig(config)) {\n this.walletClient = config.walletClient;\n this.publicClient = config.publicClient;\n } else {\n throw new Error('Invalid EVM wallet config');\n }\n }\n\n async sendTransaction(evmRawTx: EvmRawTransaction): Promise<Hash> {\n return this.walletClient.sendTransaction(evmRawTx);\n }\n\n async waitForTransactionReceipt(txHash: Hash): Promise<EvmRawTransactionReceipt> {\n const receipt = await this.publicClient.waitForTransactionReceipt({ hash: txHash });\n return {\n ...receipt,\n transactionIndex: receipt.transactionIndex.toString(),\n blockNumber: receipt.blockNumber.toString(),\n cumulativeGasUsed: receipt.cumulativeGasUsed.toString(),\n gasUsed: receipt.gasUsed.toString(),\n contractAddress: receipt.contractAddress?.toString() ?? null,\n logs: receipt.logs.map(log => ({\n ...log,\n blockNumber: log.blockNumber.toString() as `0x${string}`,\n logIndex: log.logIndex.toString() as `0x${string}`,\n transactionIndex: log.transactionIndex.toString() as `0x${string}`,\n })),\n effectiveGasPrice: receipt.effectiveGasPrice.toString(),\n };\n }\n\n async getWalletAddress(): Promise<Address> {\n return this.walletClient.account.address;\n }\n}\n\n/**\n * EVM Wallet Configuration Types\n */\n\nexport type PrivateKeyEvmWalletConfig = {\n privateKey: `0x${string}`;\n chainId: ChainId;\n rpcUrl?: `http${string}`;\n};\n\nexport type BrowserExtensionEvmWalletConfig = {\n walletClient: WalletClient<Transport, Chain, Account>;\n publicClient: PublicClient;\n};\n\nexport type EvmWalletConfig = PrivateKeyEvmWalletConfig | BrowserExtensionEvmWalletConfig;\n\n/**\n * EVM Type Guards\n */\n\nexport function isPrivateKeyEvmWalletConfig(config: EvmWalletConfig): config is PrivateKeyEvmWalletConfig {\n return 'privateKey' in config && config.privateKey.startsWith('0x');\n}\n\nexport function isBrowserExtensionEvmWalletConfig(config: EvmWalletConfig): config is BrowserExtensionEvmWalletConfig {\n return 'walletClient' in config && 'publicClient' in config;\n}\n","import { SuiClient } from '@mysten/sui/client';\nimport { Ed25519Keypair } from '@mysten/sui/keypairs/ed25519';\nimport type { Transaction, TransactionArgument } from '@mysten/sui/transactions';\nimport type { ISuiWalletProvider, SuiTransaction, SuiExecutionResult, SuiPaginatedCoins } from '@sodax/types';\nimport {\n signTransaction,\n type SuiWalletFeatures,\n type WalletAccount,\n type WalletWithFeatures,\n} from '@mysten/wallet-standard';\n\n// Private key wallet config\nexport type PrivateKeySuiWalletConfig = {\n rpcUrl: string;\n mnemonics: string;\n};\n\n// Browser extension wallet config\nexport type BrowserExtensionSuiWalletConfig = {\n client: SuiClient;\n wallet: WalletWithFeatures<Partial<SuiWalletFeatures>>;\n account: WalletAccount;\n};\n\n// Unified config type\nexport type SuiWalletConfig = PrivateKeySuiWalletConfig | BrowserExtensionSuiWalletConfig;\n\n// Type guards\nfunction isPrivateKeySuiWalletConfig(walletConfig: SuiWalletConfig): walletConfig is PrivateKeySuiWalletConfig {\n return 'mnemonics' in walletConfig;\n}\n\nfunction isBrowserExtensionSuiWalletConfig(\n walletConfig: SuiWalletConfig,\n): walletConfig is BrowserExtensionSuiWalletConfig {\n return 'wallet' in walletConfig && 'account' in walletConfig;\n}\n\nexport type PkSuiWallet = {\n keyPair: Ed25519Keypair;\n};\n\nexport type BrowserExtensionSuiWallet = {\n wallet: WalletWithFeatures<Partial<SuiWalletFeatures>>;\n account: WalletAccount;\n};\n\nexport type SuiWallet = PkSuiWallet | BrowserExtensionSuiWallet;\n\nexport function isPkSuiWallet(wallet: SuiWallet): wallet is PkSuiWallet {\n return 'keyPair' in wallet;\n}\n\nexport function isBrowserExtensionSuiWallet(wallet: SuiWallet): wallet is BrowserExtensionSuiWallet {\n return 'wallet' in wallet && 'account' in wallet;\n}\n\nexport function isSuiWallet(wallet: SuiWallet): wallet is SuiWallet {\n return isPkSuiWallet(wallet) || isBrowserExtensionSuiWallet(wallet);\n}\n\nexport class SuiWalletProvider implements ISuiWalletProvider {\n private readonly client: SuiClient;\n private readonly wallet: SuiWallet;\n\n constructor(walletConfig: SuiWalletConfig) {\n if (isPrivateKeySuiWalletConfig(walletConfig)) {\n this.client = new SuiClient({ url: walletConfig.rpcUrl });\n this.wallet = {\n keyPair: Ed25519Keypair.deriveKeypair(walletConfig.mnemonics),\n };\n } else if (isBrowserExtensionSuiWalletConfig(walletConfig)) {\n this.client = walletConfig.client;\n this.wallet = {\n wallet: walletConfig.wallet,\n account: walletConfig.account,\n };\n } else {\n throw new Error('Invalid wallet configuration');\n }\n }\n\n async signAndExecuteTxn(txn: SuiTransaction): Promise<string> {\n if (isPkSuiWallet(this.wallet)) {\n const res = await this.client.signAndExecuteTransaction({\n transaction: txn as unknown as Transaction,\n signer: this.wallet.keyPair,\n });\n\n return res.digest;\n }\n if (isBrowserExtensionSuiWallet(this.wallet)) {\n const browserWallet = this.wallet.wallet;\n const browserAccount = this.wallet.account;\n\n if (!browserAccount || browserAccount.chains.length === 0) {\n throw new Error('No chains available for wallet account');\n }\n const chain = browserAccount.chains[0];\n if (!chain) {\n throw new Error('No chain available for wallet account');\n }\n const { bytes, signature } = await signTransaction(browserWallet, {\n transaction: txn,\n account: browserAccount,\n chain,\n });\n\n const res = await this.client.executeTransactionBlock({\n transactionBlock: bytes,\n signature,\n options: {\n showRawEffects: true,\n },\n });\n\n return res.digest;\n }\n\n throw new Error('Invalid wallet configuration');\n }\n\n async viewContract(\n tx: Transaction,\n packageId: string,\n module: string,\n functionName: string,\n args: unknown[],\n typeArgs: string[] = [],\n ): Promise<SuiExecutionResult> {\n tx.moveCall({\n target: `${packageId}::${module}::${functionName}`,\n arguments: args as TransactionArgument[],\n typeArguments: typeArgs,\n });\n\n const sender = this.getSuiAddress();\n\n const txResults = await this.client.devInspectTransactionBlock({\n transactionBlock: tx,\n sender,\n });\n\n if (txResults.results && txResults.results[0] !== undefined) {\n return txResults.results[0] as SuiExecutionResult;\n }\n throw Error(`transaction didn't return any values: ${JSON.stringify(txResults, null, 2)}`);\n }\n\n async getCoins(address: string, token: string): Promise<SuiPaginatedCoins> {\n return this.client.getCoins({ owner: address, coinType: token, limit: 10 });\n }\n\n private getSuiAddress(): string {\n if (isPkSuiWallet(this.wallet)) {\n return this.wallet.keyPair.toSuiAddress();\n }\n if (isBrowserExtensionSuiWallet(this.wallet)) {\n return this.wallet.account.address;\n }\n throw new Error('Invalid wallet configuration');\n }\n\n async getWalletAddress(): Promise<string> {\n return this.getSuiAddress();\n }\n}\n","import type { IconTransactionResult, IcxCallTransaction, IIconWalletProvider } from '@sodax/types';\nimport type { IconService, Wallet as IconSdkWallet } from 'icon-sdk-js';\nimport * as IconSdkRaw from 'icon-sdk-js';\nconst IconSdk = ('default' in IconSdkRaw.default ? IconSdkRaw.default : IconSdkRaw) as typeof IconSdkRaw;\nconst { Converter, CallTransactionBuilder, Wallet } = IconSdk;\n\nexport class IconWalletProvider implements IIconWalletProvider {\n private readonly wallet: IconWallet;\n public readonly iconService: IconService;\n\n constructor(wallet: IconWalletConfig) {\n if (isPrivateKeyIconWalletConfig(wallet)) {\n this.wallet = {\n type: 'PRIVATE_KEY',\n wallet: Wallet.loadPrivateKey(wallet.privateKey.slice(2)),\n };\n this.iconService = new IconSdk.IconService(new IconSdk.IconService.HttpProvider(wallet.rpcUrl));\n } else if (isBrowserExtensionIconWalletConfig(wallet)) {\n this.wallet = {\n type: 'BROWSER_EXTENSION',\n wallet: wallet.walletAddress,\n };\n this.iconService = new IconSdk.IconService(new IconSdk.IconService.HttpProvider(wallet.rpcUrl));\n } else {\n throw new Error('Invalid Icon wallet config');\n }\n }\n\n public async sendTransaction(tx: IcxCallTransaction): Promise<Hash> {\n const builtTx = new CallTransactionBuilder()\n .from(tx.from)\n .to(tx.to)\n .stepLimit(Converter.toHex(3000000))\n .nid(tx.nid)\n .version(tx.version ?? '0x3')\n .timestamp(Converter.toHex(tx.timestamp ?? new Date().getTime() * 1000))\n .value(tx.value)\n .method(tx.method)\n .params(tx.params)\n .build();\n\n if (!isIconPkWallet(this.wallet)) {\n // if wallet starts with 0x, it's a private key\n const result = await requestJsonRpc(builtTx);\n\n return result.result satisfies string as Hash;\n }\n const signedTx = new IconSdk.IconService.SignedTransaction(builtTx, this.wallet.wallet);\n const result = await this.iconService.sendTransaction(signedTx).execute();\n\n return result satisfies string as Hash;\n }\n\n public async waitForTransactionReceipt(txHash: Hash): Promise<IconTransactionResult> {\n const result = await this.iconService.waitTransactionResult(txHash).execute();\n\n return {\n ...result,\n status: +result.status,\n cumulativeStepUsed: BigNumberToBigInt(result.cumulativeStepUsed),\n stepUsed: BigNumberToBigInt(result.stepUsed),\n stepPrice: BigNumberToBigInt(result.stepPrice),\n } satisfies IconTransactionResult;\n }\n\n async getWalletAddress(): Promise<IconEoaAddress> {\n if (!this.wallet.wallet) {\n throw new Error('Wallet not initialized');\n }\n return isIconPkWallet(this.wallet) ? (this.wallet.wallet.getAddress() as IconEoaAddress) : this.wallet.wallet;\n }\n}\n\n/**\n * Icon Types\n */\n\nexport type IconJsonRpcVersion = '2.0';\n\nexport type Hex = `0x${string}`;\nexport type Hash = `0x${string}`;\nexport type IconAddress = `hx${string}` | `cx${string}`;\nexport type IconEoaAddress = `hx${string}`;\n\nexport type PrivateKeyIconWalletConfig = {\n privateKey: `0x${string}`;\n rpcUrl: `http${string}`;\n};\n\nexport type BrowserExtensionIconWalletConfig = {\n walletAddress?: IconEoaAddress;\n rpcUrl: `http${string}`;\n};\n\nexport type IconWalletConfig = PrivateKeyIconWalletConfig | BrowserExtensionIconWalletConfig;\n\nexport type IconPkWallet = {\n type: 'PRIVATE_KEY';\n wallet: IconSdkWallet;\n};\n\nexport type IconBrowserExtensionWallet = {\n type: 'BROWSER_EXTENSION';\n wallet?: IconEoaAddress;\n};\n\nexport type IconWallet = IconPkWallet | IconBrowserExtensionWallet;\n\nexport type HanaWalletRequestEvent =\n | 'REQUEST_HAS_ACCOUNT'\n | 'REQUEST_HAS_ADDRESS'\n | 'REQUEST_ADDRESS'\n | 'REQUEST_JSON'\n | 'REQUEST_SIGNING'\n | 'REQUEST_JSON-RPC';\nexport type HanaWalletResponseEvent =\n | 'RESPONSE_HAS_ACCOUNT'\n | 'RESPONSE_HAS_ADDRESS'\n | 'RESPONSE_ADDRESS'\n | 'RESPONSE_JSON-RPC'\n | 'RESPONSE_SIGNING'\n | 'CANCEL_SIGNING'\n | 'CANCEL_JSON-RPC';\n\nexport type ResponseAddressType = {\n type: 'RESPONSE_ADDRESS';\n payload: IconAddress;\n};\n\nexport type ResponseSigningType = {\n type: 'RESPONSE_SIGNING';\n payload: string;\n};\n\nexport type RelayRequestDetail = {\n type: HanaWalletRequestEvent;\n payload?: {\n jsonrpc: IconJsonRpcVersion;\n method: string;\n params: unknown;\n id: number | undefined;\n };\n};\n\nexport type RelayRequestSigning = {\n type: 'REQUEST_SIGNING';\n payload: {\n from: IconAddress;\n hash: string;\n };\n};\n\nexport type JsonRpcPayloadResponse = {\n id: number;\n result: string; // txHash\n};\n\ninterface RelayResponseEventDetail {\n type: HanaWalletResponseEvent;\n payload: unknown;\n}\n\n/**\n * Icon Type Guards\n */\n\nexport function isIconPkWallet(wallet: IconWallet): wallet is IconPkWallet {\n return wallet.type === 'PRIVATE_KEY';\n}\n\nexport function isIconBrowserExtensionWallet(wallet: IconWallet): wallet is IconBrowserExtensionWallet {\n return wallet.type === 'BROWSER_EXTENSION';\n}\n\nexport function isPrivateKeyIconWalletConfig(config: IconWalletConfig): config is PrivateKeyIconWalletConfig {\n return 'privateKey' in config && config.privateKey.startsWith('0x');\n}\n\nexport function isBrowserExtensionIconWalletConfig(\n config: IconWalletConfig,\n): config is BrowserExtensionIconWalletConfig {\n return 'walletAddress' in config && (isIconEoaAddress(config.walletAddress) || !config.walletAddress);\n}\n\nexport function isIconAddress(value: unknown): value is IconAddress {\n return typeof value === 'string' && /^hx[a-f0-9]{40}$|^cx[a-f0-9]{40}$/.test(value);\n}\n\nexport function isIconEoaAddress(value: unknown): value is IconEoaAddress {\n return typeof value === 'string' && /^hx[a-f0-9]{40}$/.test(value);\n}\n\nexport function isResponseAddressType(value: unknown): value is ResponseAddressType {\n return (\n typeof value === 'object' &&\n value !== null &&\n 'type' in value &&\n 'payload' in value &&\n value.type === 'RESPONSE_ADDRESS' &&\n isIconAddress(value.payload)\n );\n}\n\nexport function isResponseSigningType(value: unknown): value is ResponseSigningType {\n return (\n typeof value === 'object' &&\n value !== null &&\n 'type' in value &&\n 'payload' in value &&\n value.type === 'RESPONSE_SIGNING' &&\n typeof value.payload === 'string'\n );\n}\n\nexport function isJsonRpcPayloadResponse(value: unknown): value is JsonRpcPayloadResponse {\n return (\n typeof value === 'object' &&\n value !== null &&\n 'id' in value &&\n 'result' in value &&\n typeof value.result === 'string'\n );\n}\n\n/**\n * Methods to interact with Icon Browser Extension Wallet (e.g. Hana Wallet)\n */\n\nexport function requestAddress(): Promise<IconAddress> {\n return new Promise(resolve => {\n const eventHandler = (event: Event) => {\n const customEvent = event as CustomEvent<RelayResponseEventDetail>;\n const response = customEvent.detail;\n if (isResponseAddressType(response)) {\n window.removeEventListener('ICONEX_RELAY_RESPONSE', eventHandler as EventListener, false);\n resolve(response.payload);\n }\n };\n\n window.removeEventListener('ICONEX_RELAY_RESPONSE', eventHandler, false);\n window.addEventListener('ICONEX_RELAY_RESPONSE', eventHandler, false);\n window.dispatchEvent(\n new CustomEvent<RelayRequestDetail>('ICONEX_RELAY_REQUEST', {\n detail: {\n type: 'REQUEST_ADDRESS',\n },\n }),\n );\n });\n}\n\nexport function requestSigning(from: IconAddress, hash: string): Promise<string> {\n return new Promise((resolve, reject) => {\n const signRequest = new CustomEvent<RelayRequestSigning>('ICONEX_RELAY_REQUEST', {\n detail: {\n type: 'REQUEST_SIGNING',\n payload: {\n from,\n hash,\n },\n },\n });\n\n const eventHandler = (event: Event) => {\n const customEvent = event as CustomEvent<RelayResponseEventDetail>;\n const response = customEvent.detail;\n if (isResponseSigningType(response)) {\n window.removeEventListener('ICONEX_RELAY_RESPONSE', eventHandler as EventListener, false);\n\n // resolve signature\n resolve(response.payload);\n } else if (response.type === 'CANCEL_SIGNING') {\n reject(new Error('CANCEL_SIGNING'));\n }\n };\n\n window.removeEventListener('ICONEX_RELAY_RESPONSE', eventHandler as EventListener, false);\n window.addEventListener('ICONEX_RELAY_RESPONSE', eventHandler as EventListener, false);\n window.dispatchEvent(signRequest);\n });\n}\n\nexport function requestJsonRpc(rawTransaction: unknown, id = 99999): Promise<JsonRpcPayloadResponse> {\n return new Promise((resolve, reject) => {\n const eventHandler = (event: Event) => {\n const customEvent = event as CustomEvent<RelayResponseEventDetail>;\n const { type, payload } = customEvent.detail;\n if (type === 'RESPONSE_JSON-RPC') {\n window.removeEventListener('ICONEX_RELAY_RESPONSE', eventHandler as EventListener, false);\n\n if (isJsonRpcPayloadResponse(payload)) {\n resolve(payload);\n } else {\n reject(new Error('Invalid payload response type (expected JsonRpcPayloadResponse)'));\n }\n } else if (type === 'CANCEL_JSON-RPC') {\n window.removeEventListener('ICONEX_RELAY_RESPONSE', eventHandler as EventListener, false);\n reject(new Error('CANCEL_JSON-RPC'));\n }\n };\n\n window.removeEventListener('ICONEX_RELAY_RESPONSE', eventHandler as EventListener, false);\n window.addEventListener('ICONEX_RELAY_RESPONSE', eventHandler as EventListener, false);\n window.dispatchEvent(\n new CustomEvent<RelayRequestDetail>('ICONEX_RELAY_REQUEST', {\n detail: {\n type: 'REQUEST_JSON-RPC',\n payload: {\n jsonrpc: '2.0',\n method: 'icx_sendTransaction',\n params: rawTransaction,\n id: id,\n },\n },\n }),\n );\n });\n}\n\n/**\n * Icon Utils\n */\n\nexport function BigNumberToBigInt(bigNumber: BigNumber): bigint {\n if (!bigNumber.isInteger()) {\n throw new Error('Cannot convert decimal number to BigInt');\n }\n return BigInt(bigNumber.toFixed(0));\n}\n","import type { Network } from '@injectivelabs/networks';\nimport {\n MsgExecuteContract,\n MsgExecuteContractCompat,\n createTransaction,\n PrivateKey,\n getInjectiveSignerAddress,\n type TxResponse,\n} from '@injectivelabs/sdk-ts';\nimport type { Hex, JsonObject, InjectiveCoin, IInjectiveWalletProvider, InjectiveEoaAddress } from '@sodax/types';\nimport { InjectiveExecuteResponse, type InjectiveRawTransaction } from '@sodax/types';\nimport type { MsgBroadcaster } from '@injectivelabs/wallet-core';\nimport { MsgBroadcasterWithPk } from '@injectivelabs/sdk-ts';\nimport type { ChainId, EvmChainId } from '@injectivelabs/ts-types';\n\n/**\n * Injective Wallet Configuration Types\n */\n\nexport type BrowserExtensionInjectiveWalletConfig = {\n msgBroadcaster: MsgBroadcaster;\n};\n\nexport type SecretInjectiveWalletConfig = {\n secret:\n | {\n privateKey: string;\n }\n | {\n mnemonics: string;\n };\n chainId: ChainId;\n network: Network;\n evmOptions?: {\n evmChainId: EvmChainId;\n rpcUrl: `http${string}`;\n };\n};\n\nexport type InjectiveWalletConfig = BrowserExtensionInjectiveWalletConfig | SecretInjectiveWalletConfig;\n\n/**\n * Injective Type Guards\n */\n\nexport function isBrowserExtensionInjectiveWalletConfig(\n config: InjectiveWalletConfig,\n): config is BrowserExtensionInjectiveWalletConfig {\n return 'msgBroadcaster' in config;\n}\n\nexport function isSecretInjectiveWalletConfig(config: InjectiveWalletConfig): config is SecretInjectiveWalletConfig {\n return (\n 'secret' in config &&\n typeof config.secret === 'object' &&\n (('privateKey' in config.secret && typeof config.secret.privateKey === 'string') ||\n ('mnemonics' in config.secret && typeof config.secret.mnemonics === 'string')) &&\n 'network' in config &&\n 'chainId' in config\n );\n}\n\nexport type InjectiveWallet = {\n msgBroadcaster: MsgBroadcaster | MsgBroadcasterWithPk;\n};\n\nexport class InjectiveWalletProvider implements IInjectiveWalletProvider {\n public wallet: InjectiveWallet;\n\n constructor(config: InjectiveWalletConfig) {\n if (isBrowserExtensionInjectiveWalletConfig(config)) {\n this.wallet = {\n msgBroadcaster: config.msgBroadcaster,\n };\n } else if (isSecretInjectiveWalletConfig(config)) {\n let privateKey: PrivateKey;\n if ('privateKey' in config.secret) {\n privateKey = PrivateKey.fromPrivateKey(config.secret.privateKey);\n } else if ('mnemonics' in config.secret) {\n privateKey = PrivateKey.fromMnemonic(config.secret.mnemonics);\n } else {\n throw new Error('Invalid Secret Injective wallet config');\n }\n this.wallet = {\n msgBroadcaster: new MsgBroadcasterWithPk({ privateKey, network: config.network }),\n };\n } else {\n throw new Error('Invalid Injective wallet config');\n }\n }\n\n async getRawTransaction(\n chainId: string,\n _: string,\n senderAddress: string,\n contractAddress: string,\n msg: JsonObject,\n memo?: string,\n ): Promise<InjectiveRawTransaction> {\n const msgExec = MsgExecuteContract.fromJSON({\n contractAddress: contractAddress,\n sender: senderAddress,\n msg: msg as object,\n funds: [],\n });\n const { txRaw } = createTransaction({\n message: msgExec,\n memo: memo || '',\n pubKey: await this.getWalletPubKey(),\n sequence: 0,\n accountNumber: 0,\n chainId: chainId,\n });\n\n const rawTx = {\n from: senderAddress as Hex,\n to: contractAddress as Hex,\n signedDoc: {\n bodyBytes: txRaw.bodyBytes,\n chainId: chainId,\n accountNumber: BigInt(0),\n authInfoBytes: txRaw.authInfoBytes,\n },\n };\n return rawTx;\n }\n\n // return wallet address as bech32\n async getWalletAddress(): Promise<InjectiveEoaAddress> {\n if (this.wallet.msgBroadcaster instanceof MsgBroadcasterWithPk) {\n return getInjectiveSignerAddress(this.wallet.msgBroadcaster.privateKey.toAddress().toBech32());\n }\n const addresses = await this.wallet.msgBroadcaster.walletStrategy.getAddresses();\n const injectiveAddresses = addresses.map(getInjectiveSignerAddress);\n if (injectiveAddresses.length <= 0 || injectiveAddresses[0] === undefined) {\n return Promise.reject(new Error('Wallet address not found'));\n }\n\n return injectiveAddresses[0];\n }\n\n async getWalletPubKey(): Promise<string> {\n if (this.wallet.msgBroadcaster instanceof MsgBroadcasterWithPk) {\n return this.wallet.msgBroadcaster.privateKey.toPublicKey().toString();\n }\n const pubKey = await this.wallet.msgBroadcaster.walletStrategy.getPubKey();\n if (pubKey === undefined) {\n return Promise.reject(new Error('Wallet public key not found'));\n }\n return pubKey;\n }\n\n async execute(\n senderAddress: string,\n contractAddress: string,\n msg: JsonObject,\n funds?: InjectiveCoin[],\n ): Promise<InjectiveExecuteResponse> {\n const msgExec = MsgExecuteContractCompat.fromJSON({\n contractAddress: contractAddress,\n sender: senderAddress,\n msg: msg as object,\n funds: funds || [],\n });\n\n let txResult: TxResponse;\n\n if (this.wallet.msgBroadcaster instanceof MsgBroadcasterWithPk) {\n txResult = await this.wallet.msgBroadcaster.broadcast({\n msgs: msgExec,\n });\n } else {\n txResult = await this.wallet.msgBroadcaster.broadcastWithFeeDelegation({\n msgs: msgExec,\n injectiveAddress: await this.getWalletAddress(),\n });\n }\n\n return InjectiveExecuteResponse.fromTxResponse(txResult);\n }\n}\n","import { getAssociatedTokenAddress } from '@solana/spl-token';\nimport {\n type Commitment,\n Connection,\n Keypair,\n PublicKey,\n type RpcResponseAndContext,\n type TokenAmount,\n TransactionInstruction,\n TransactionMessage,\n VersionedTransaction,\n} from '@solana/web3.js';\nimport type {\n ISolanaWalletProvider,\n SolanaAccountMeta,\n SolanaBase58PublicKey,\n SolanaRpcResponseAndContext,\n SolanaSerializedTransaction,\n SolanaSignatureResult,\n SolanaRawTransactionInstruction,\n TransactionSignature,\n} from '@sodax/types';\nimport type { SignerWalletAdapterProps } from '@solana/wallet-adapter-base';\n\n// Wallet adapter pattern interface\ninterface WalletContextState {\n publicKey: PublicKey | null;\n signTransaction: SignerWalletAdapterProps['signTransaction'] | undefined;\n}\n\n// Direct keypair pattern configs\nexport type PrivateKeySolanaWalletConfig = {\n privateKey: Uint8Array;\n endpoint: string;\n};\n\n// Wallet adapter pattern config\nexport type BrowserExtensionSolanaWalletConfig = {\n wallet: WalletContextState;\n connection: Connection;\n};\n\n// Unified config type\nexport type SolanaWalletConfig = PrivateKeySolanaWalletConfig | BrowserExtensionSolanaWalletConfig;\n\n// Type guards\nfunction isPrivateKeySolanaWalletConfig(\n walletConfig: SolanaWalletConfig,\n): walletConfig is PrivateKeySolanaWalletConfig {\n return 'privateKey' in walletConfig;\n}\n\nfunction isBrowserExtensionSolanaWalletConfig(\n walletConfig: SolanaWalletConfig,\n): walletConfig is BrowserExtensionSolanaWalletConfig {\n return 'wallet' in walletConfig && !(walletConfig.wallet instanceof Keypair);\n}\n\nexport class SolanaWalletProvider implements ISolanaWalletProvider {\n private readonly wallet: Keypair | WalletContextState;\n public readonly connection: Connection;\n private readonly isAdapterMode: boolean;\n\n constructor(walletConfig: SolanaWalletConfig) {\n if (isPrivateKeySolanaWalletConfig(walletConfig)) {\n this.wallet = Keypair.fromSecretKey(walletConfig.privateKey);\n this.connection = new Connection(walletConfig.endpoint, 'confirmed');\n this.isAdapterMode = false;\n } else if (isBrowserExtensionSolanaWalletConfig(walletConfig)) {\n this.wallet = walletConfig.wallet;\n this.connection = walletConfig.connection;\n this.isAdapterMode = true;\n } else {\n throw new Error('Invalid wallet configuration');\n }\n }\n\n public async waitForConfirmation(\n signature: string,\n commitment: Commitment = 'finalized',\n ): Promise<SolanaRpcResponseAndContext<SolanaSignatureResult>> {\n const latestBlockhash = await this.connection.getLatestBlockhash();\n const response = await this.connection.confirmTransaction(\n {\n signature,\n blockhash: latestBlockhash.blockhash,\n lastValidBlockHeight: latestBlockhash.lastValidBlockHeight,\n },\n commitment,\n );\n\n return response;\n }\n\n /**\n * Send a raw transaction to the Solana network.\n * @param rawTransaction - The raw transaction to send.\n * @returns The transaction signature.\n */\n public async sendTransaction(rawTransaction: Uint8Array | Array<number>): Promise<TransactionSignature> {\n return this.connection.sendRawTransaction(rawTransaction);\n }\n\n /**\n * Send a raw transaction to the Solana network and wait for confirmation.\n * @param rawTransaction - The raw transaction to send.\n * @param commitment - The commitment level to use. Defaults to 'finalized'.\n * @returns The transaction signature.\n */\n public async sendTransactionWithConfirmation(\n rawTransaction: Uint8Array | Array<number>,\n commitment: Commitment = 'finalized',\n ): Promise<TransactionSignature> {\n const txHash = await this.connection.sendRawTransaction(rawTransaction);\n await this.waitForConfirmation(txHash, commitment);\n return txHash;\n }\n\n /**\n * Build a v0 versioned transaction.\n * @param instructions - The instructions to include in the transaction.\n * @returns The v0 transaction.\n */\n async buildV0Txn(rawInstructions: SolanaRawTransactionInstruction[]): Promise<SolanaSerializedTransaction> {\n if (this.isAdapterMode) {\n return this.buildV0TxnWithAdapter(rawInstructions);\n }\n return this.buildV0TxnWithKeypair(rawInstructions);\n }\n\n private async buildV0TxnWithAdapter(\n rawInstructions: SolanaRawTransactionInstruction[],\n ): Promise<SolanaSerializedTransaction> {\n const adapterWallet = this.wallet as WalletContextState;\n\n if (!adapterWallet.publicKey) {\n throw new Error('Wallet public key is not initialized');\n }\n\n if (!adapterWallet.signTransaction) {\n throw new Error('Wallet signTransaction is not initialized');\n }\n\n const instructions = this.buildTransactionInstruction(rawInstructions);\n const latestBlockhash = await this.connection.getLatestBlockhash();\n const messageV0 = new TransactionMessage({\n payerKey: adapterWallet.publicKey,\n recentBlockhash: latestBlockhash.blockhash,\n instructions,\n }).compileToV0Message();\n\n const tx = await adapterWallet.signTransaction(new VersionedTransaction(messageV0));\n return tx.serialize();\n }\n\n private async buildV0TxnWithKeypair(\n rawInstructions: SolanaRawTransactionInstruction[],\n ): Promise<SolanaSerializedTransaction> {\n const keypairWallet = this.wallet as Keypair;\n const instructions = this.buildTransactionInstruction(rawInstructions);\n\n const messageV0 = new TransactionMessage({\n payerKey: keypairWallet.publicKey,\n recentBlockhash: (await this.connection.getLatestBlockhash()).blockhash,\n instructions,\n }).compileToV0Message();\n\n const tx = new VersionedTransaction(messageV0);\n tx.sign([keypairWallet]);\n\n return tx.serialize();\n }\n\n public getWalletBase58PublicKey(): SolanaBase58PublicKey {\n if (!this.wallet.publicKey) {\n throw new Error('Wallet public key is not initialized');\n }\n return this.wallet.publicKey.toBase58();\n }\n\n public async getWalletAddress(): Promise<string> {\n return this.getWalletBase58PublicKey();\n }\n\n public async getAssociatedTokenAddress(mint: SolanaBase58PublicKey): Promise<SolanaBase58PublicKey> {\n if (!this.wallet.publicKey) {\n throw new Error('Wallet public key is not initialized');\n }\n\n return (await getAssociatedTokenAddress(new PublicKey(mint), this.wallet.publicKey, true)).toBase58();\n }\n\n public async getBalance(publicKey: SolanaBase58PublicKey): Promise<number> {\n return await this.connection.getBalance(new PublicKey(publicKey));\n }\n\n public async getTokenAccountBalance(publicKey: SolanaBase58PublicKey): Promise<RpcResponseAndContext<TokenAmount>> {\n return this.connection.getTokenAccountBalance(new PublicKey(publicKey));\n }\n\n private buildTransactionInstruction(rawInstructions: SolanaRawTransactionInstruction[]): TransactionInstruction[] {\n return rawInstructions.map(\n rawInstruction =>\n new TransactionInstruction({\n keys: rawInstruction.keys.map((key: SolanaAccountMeta) => ({\n pubkey: new PublicKey(key.pubkey),\n isSigner: key.isSigner,\n isWritable: key.isWritable,\n })),\n programId: new PublicKey(rawInstruction.programId),\n data: Buffer.from(rawInstruction.data),\n }),\n );\n }\n}\n","import type { Hex, IStellarWalletProvider, StellarRawTransactionReceipt, XDR } from '@sodax/types';\nimport { Networks, Horizon, Transaction, Keypair } from '@stellar/stellar-sdk';\n\ninterface StellarWalletsKit {\n getAddress(): Promise<{ address: string }>;\n signTransaction(tx: XDR, options: { networkPassphrase: string }): Promise<{ signedTxXdr: XDR }>;\n}\n\nexport type StellarNetwork = 'TESTNET' | 'PUBLIC';\n\nconst STELLAR_HORIZON_URLS: { [key in StellarNetwork]: string } = {\n TESTNET: 'https://horizon-testnet.stellar.org',\n PUBLIC: 'https://horizon.stellar.org',\n};\n\nconst STELLAR_NETWORK_PASSPHRASES: { [key in StellarNetwork]: string } = {\n TESTNET: Networks.TESTNET,\n PUBLIC: Networks.PUBLIC,\n};\n\nconst TX_POLL_INTERVAL = 2000; // 2 seconds\nconst TX_POLL_TIMEOUT = 60000; // 60 seconds\n\nconst STELLAR_ERROR_CODES = {\n INVALID_CONFIG: 'INVALID_CONFIG',\n SIGN_TX_ERROR: 'SIGN_TX_ERROR',\n TX_RECEIPT_TIMEOUT: 'TX_RECEIPT_TIMEOUT',\n SEND_TX_ERROR: 'SEND_TX_ERROR',\n INVALID_NETWORK: 'INVALID_NETWORK',\n INVALID_PRIVATE_KEY: 'INVALID_PRIVATE_KEY',\n} as const;\n\nexport type StellarAddress = string; // Stellar addresses are in format: G...\n\nexport type PrivateKeyStellarWalletConfig = {\n type: 'PRIVATE_KEY';\n privateKey: Hex;\n network: StellarNetwork;\n rpcUrl?: string;\n};\n\nexport type BrowserExtensionStellarWalletConfig = {\n type: 'BROWSER_EXTENSION';\n walletsKit: StellarWalletsKit;\n network: StellarNetwork;\n rpcUrl?: string;\n};\n\nexport type StellarWalletConfig = PrivateKeyStellarWalletConfig | BrowserExtensionStellarWalletConfig;\n\nexport type StellarPkWallet = {\n type: 'PRIVATE_KEY';\n keypair: Keypair;\n};\n\nexport type StellarBrowserExtensionWallet = {\n type: 'BROWSER_EXTENSION';\n walletsKit: StellarWalletsKit;\n};\n\nexport type StellarWallet = StellarPkWallet | StellarBrowserExtensionWallet;\n\nexport class StellarWalletError extends Error {\n constructor(\n message: string,\n public readonly code: keyof typeof STELLAR_ERROR_CODES,\n ) {\n super(message);\n this.name = 'StellarWalletError';\n }\n}\n\nexport function isPrivateKeyStellarWalletConfig(config: StellarWalletConfig): config is PrivateKeyStellarWalletConfig {\n return config.type === 'PRIVATE_KEY';\n}\n\nexport function isBrowserExtensionStellarWalletConfig(\n config: StellarWalletConfig,\n): config is BrowserExtensionStellarWalletConfig {\n return config.type === 'BROWSER_EXTENSION';\n}\n\nexport function isStellarPkWallet(wallet: StellarWallet): wallet is StellarPkWallet {\n return wallet.type === 'PRIVATE_KEY';\n}\n\nexport function isStellarBrowserExtensionWallet(wallet: StellarWallet): wallet is StellarBrowserExtensionWallet {\n return wallet.type === 'BROWSER_EXTENSION';\n}\n\nexport function isValidStellarNetwork(network: string): network is StellarNetwork {\n return ['TESTNET', 'PUBLIC'].includes(network);\n}\n\nexport function isValidStellarPrivateKey(privateKey: string): boolean {\n try {\n // Remove '0x' prefix if present\n const key = privateKey.startsWith('0x') ? privateKey.slice(2) : privateKey;\n Keypair.fromSecret(key);\n return true;\n } catch {\n return false;\n }\n}\n\nexport class StellarWalletProvider implements IStellarWalletProvider {\n private readonly wallet: StellarWallet;\n private readonly server: Horizon.Server;\n private readonly networkPassphrase: string;\n\n constructor(config: StellarWalletConfig) {\n if (!isValidStellarNetwork(config.network)) {\n throw new StellarWalletError(`Invalid network: ${config.network}`, 'INVALID_NETWORK');\n }\n\n if (isPrivateKeyStellarWalletConfig(config)) {\n if (!isValidStellarPrivateKey(config.privateKey)) {\n throw new StellarWalletError('Invalid private key format', 'INVALID_PRIVATE_KEY');\n }\n // Remove '0x' prefix if present\n const privateKey = config.privateKey.startsWith('0x') ? config.privateKey.slice(2) : config.privateKey;\n this.wallet = {\n type: 'PRIVATE_KEY',\n keypair: Keypair.fromSecret(privateKey),\n };\n this.server = new Horizon.Server(config.rpcUrl ?? STELLAR_HORIZON_URLS[config.network]);\n this.networkPassphrase = STELLAR_NETWORK_PASSPHRASES[config.network];\n return;\n }\n\n if (isBrowserExtensionStellarWalletConfig(config)) {\n this.wallet = {\n type: 'BROWSER_EXTENSION',\n walletsKit: config.walletsKit,\n };\n this.server = new Horizon.Server(config.rpcUrl ?? STELLAR_HORIZON_URLS[config.network]);\n this.networkPassphrase = STELLAR_NETWORK_PASSPHRASES[config.network];\n return;\n }\n\n throw new StellarWalletError('Invalid wallet configuration', 'INVALID_CONFIG');\n }\n\n public async getWalletAddress(): Promise<string> {\n try {\n if (isStellarPkWallet(this.wallet)) {\n return this.wallet.keypair.publicKey();\n }\n\n const { address } = await this.wallet.walletsKit.getAddress();\n return address;\n } catch (error) {\n throw new StellarWalletError(\n error instanceof Error ? error.message : 'Failed to get wallet address',\n 'INVALID_CONFIG',\n );\n }\n }\n\n public async signTransaction(tx: XDR): Promise<XDR> {\n try {\n if (isStellarPkWallet(this.wallet)) {\n // Parse the XDR transaction\n const transaction = new Transaction(tx, this.networkPassphrase);\n transaction.sign(this.wallet.keypair);\n return transaction.toXDR();\n }\n\n const { signedTxXdr } = await this.wallet.walletsKit.signTransaction(tx, {\n networkPassphrase: this.networkPassphrase,\n });\n return signedTxXdr;\n } catch (error) {\n throw new StellarWalletError(\n error instanceof Error ? error.message : 'Failed to sign transaction',\n 'SIGN_TX_ERROR',\n );\n }\n }\n\n public async waitForTransactionReceipt(txHash: string): Promise<StellarRawTransactionReceipt> {\n const startTime = Date.now();\n while (Date.now() - startTime < TX_POLL_TIMEOUT) {\n try {\n const tx = await this.server.transactions().transaction(txHash).call();\n\n return {\n ...tx,\n _links: {\n ...tx._links,\n transaction: tx._links.self,\n },\n };\n } catch (error) {\n // Wait for the next poll interval\n await new Promise(resolve => setTimeout(resolve, TX_POLL_INTERVAL));\n }\n }\n throw new StellarWalletError(\n `Transaction receipt not found for hash ${txHash} after ${TX_POLL_TIMEOUT / 1000} seconds.`,\n 'TX_RECEIPT_TIMEOUT',\n );\n }\n}\n"]}
|
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
7
|
-
"version": "0.0
|
|
7
|
+
"version": "1.0.0-beta",
|
|
8
8
|
"license": "MIT",
|
|
9
9
|
"description": "Sodax Wallet SDK Core",
|
|
10
10
|
"keywords": [
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
"@stellar/stellar-sdk": "12.3.0",
|
|
55
55
|
"@mysten/sui": "1.21.2",
|
|
56
56
|
"@mysten/wallet-standard": "0.15.6",
|
|
57
|
-
"@sodax/types": "0.0
|
|
57
|
+
"@sodax/types": "1.0.0-beta"
|
|
58
58
|
},
|
|
59
59
|
"devDependencies": {
|
|
60
60
|
"@arethetypeswrong/cli": "^0.17.4",
|