@reactmore/crypto-wallet-sdk 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crypto-wallet-sdk.esm.js","sources":["../src/api/dex.ts","../src/services/base/wallet.ts","../src/utils/response.ts","../src/utils/amount.ts","../src/utils/evmUnits.ts","../src/services/evm/wallet.ts","../src/services/btc/wallet.ts","../src/services/sol/wallet.ts","../src/services/wallet-registry.ts","../src/client/index.ts"],"sourcesContent":["// src/api/dex.ts\r\nimport {\r\n DexConfig,\r\n NetworkConfigs,\r\n ChainConfig,\r\n} from \"./../types\";\r\n\r\nexport class DexAPI {\r\n private readonly defaultNetworkConfigs: NetworkConfigs = {\r\n \"1\": { // Ethereum Mainnet\r\n id: \"1\",\r\n explorer: \"https://etherscan.io/\",\r\n defaultSlippage: \"0.005\",\r\n maxSlippage: \"1\",\r\n confirmationTimeout: 60000,\r\n maxRetries: 3,\r\n },\r\n \"11155111\": { // Ethereum Sepolia\r\n id: \"11155111\",\r\n explorer: \"https://sepolia.etherscan.io/\",\r\n defaultSlippage: \"0.005\",\r\n maxSlippage: \"1\",\r\n confirmationTimeout: 60000,\r\n maxRetries: 3,\r\n },\r\n \"56\": { // Binance Smart Chain\r\n id: \"56\",\r\n explorer: \"https://bscscan.com/\",\r\n defaultSlippage: \"0.005\",\r\n maxSlippage: \"1\",\r\n confirmationTimeout: 60000,\r\n maxRetries: 3,\r\n },\r\n \"97\": { // Binance Smart Chain Testnet\r\n id: \"97\",\r\n explorer: \"https://testnet.bscscan.com/\",\r\n defaultSlippage: \"0.005\",\r\n maxSlippage: \"1\",\r\n confirmationTimeout: 60000,\r\n maxRetries: 3,\r\n },\r\n \"501\": {\r\n id: \"501\",\r\n explorer: \"https://web3.okx.com/explorer/sol/tx\",\r\n defaultSlippage: \"0.005\",\r\n maxSlippage: \"1\",\r\n computeUnits: 300000,\r\n confirmationTimeout: 60000,\r\n maxRetries: 3,\r\n },\r\n \"784\": {\r\n id: \"784\",\r\n explorer: \"https://web3.okx.com/explorer/sui/tx\",\r\n defaultSlippage: \"0.005\",\r\n maxSlippage: \"1\",\r\n confirmationTimeout: 60000,\r\n maxRetries: 3,\r\n },\r\n \"43114\": { // Avalanche C-Chain\r\n id: \"43114\",\r\n explorer: \"https://web3.okx.com/explorer/avax/tx\",\r\n defaultSlippage: \"0.005\",\r\n maxSlippage: \"1\",\r\n confirmationTimeout: 60000,\r\n maxRetries: 3,\r\n },\r\n\r\n \"137\": { // Polygon Mainnet\r\n id: \"137\",\r\n explorer: \"https://web3.okx.com/explorer/polygon/tx\",\r\n defaultSlippage: \"0.005\",\r\n maxSlippage: \"1\",\r\n confirmationTimeout: 60000,\r\n maxRetries: 3,\r\n },\r\n \"80002\": { // Polygon Testnet\r\n id: \"80002\",\r\n explorer: \"https://amoy.polygonscan.com\",\r\n defaultSlippage: \"0.005\",\r\n maxSlippage: \"1\",\r\n confirmationTimeout: 60000,\r\n maxRetries: 3,\r\n },\r\n \"146\": { // Sonic Mainnet\r\n id: \"146\",\r\n explorer: \"https://web3.okx.com/explorer/sonic/tx\",\r\n defaultSlippage: \"0.005\",\r\n maxSlippage: \"1\",\r\n confirmationTimeout: 60000,\r\n maxRetries: 3,\r\n },\r\n \"8453\": { // Base Mainnet\r\n id: \"8453\",\r\n explorer: \"https://web3.okx.com/explorer/base/tx\",\r\n defaultSlippage: \"0.005\",\r\n maxSlippage: \"1\",\r\n confirmationTimeout: 60000,\r\n maxRetries: 3,\r\n },\r\n \"196\": { // X Layer Mainnet\r\n id: \"196\",\r\n explorer: \"https://web3.okx.com/explorer/x-layer/tx\",\r\n defaultSlippage: \"0.005\",\r\n maxSlippage: \"1\",\r\n confirmationTimeout: 60000,\r\n maxRetries: 3,\r\n },\r\n \"10\": { // Optimism\r\n id: \"10\",\r\n explorer: \"https://web3.okx.com/explorer/optimism/tx\",\r\n defaultSlippage: \"0.005\",\r\n maxSlippage: \"1\",\r\n confirmationTimeout: 60000,\r\n maxRetries: 3,\r\n },\r\n \"42161\": { // Arbitrum\r\n id: \"42161\",\r\n explorer: \"https://web3.okx.com/explorer/arbitrum/tx\",\r\n defaultSlippage: \"0.005\",\r\n maxSlippage: \"1\",\r\n confirmationTimeout: 60000,\r\n maxRetries: 3,\r\n },\r\n\r\n \"100\": { // Gnosis\r\n id: \"100\",\r\n explorer: \"https://web3.okx.com/explorer/gnosis/tx\",\r\n defaultSlippage: \"0.005\",\r\n maxSlippage: \"1\",\r\n confirmationTimeout: 60000,\r\n maxRetries: 3,\r\n },\r\n \"169\": { // Manta Pacific\r\n id: \"169\",\r\n explorer: \"https://web3.okx.com/explorer/manta/tx\",\r\n defaultSlippage: \"0.005\",\r\n maxSlippage: \"1\",\r\n confirmationTimeout: 60000,\r\n maxRetries: 3,\r\n },\r\n \"250\": { // Fantom Opera\r\n id: \"250\",\r\n explorer: \"https://web3.okx.com/explorer/ftm/tx\",\r\n defaultSlippage: \"0.005\",\r\n maxSlippage: \"1\",\r\n confirmationTimeout: 60000,\r\n maxRetries: 3,\r\n },\r\n \"324\": { // zkSync Era\r\n id: \"324\",\r\n explorer: \"https://web3.okx.com/explorer/zksync/tx\",\r\n defaultSlippage: \"0.005\",\r\n maxSlippage: \"1\",\r\n confirmationTimeout: 60000,\r\n maxRetries: 3,\r\n },\r\n \"1101\": { // Polygon zkEVM\r\n id: \"1101\",\r\n explorer: \"https://web3.okx.com/explorer/polygon-zkevm/tx\",\r\n defaultSlippage: \"0.005\",\r\n maxSlippage: \"1\",\r\n confirmationTimeout: 60000,\r\n maxRetries: 3,\r\n },\r\n \"5000\": { // Mantle\r\n id: \"5000\",\r\n explorer: \"https://web3.okx.com/explorer/mantle/tx\",\r\n defaultSlippage: \"0.005\",\r\n maxSlippage: \"1\",\r\n confirmationTimeout: 60000,\r\n maxRetries: 3,\r\n },\r\n \"25\": { // Cronos\r\n id: \"25\",\r\n explorer: \"https://cronoscan.com/tx\",\r\n defaultSlippage: \"0.005\",\r\n maxSlippage: \"1\",\r\n confirmationTimeout: 60000,\r\n maxRetries: 3,\r\n },\r\n \"534352\": { // Scroll\r\n id: \"534352\",\r\n explorer: \"https://web3.okx.com/explorer/scroll/tx\",\r\n defaultSlippage: \"0.005\",\r\n maxSlippage: \"1\",\r\n confirmationTimeout: 60000,\r\n maxRetries: 3,\r\n },\r\n \"59144\": { // Linea\r\n id: \"59144\",\r\n explorer: \"https://web3.okx.com/explorer/linea/tx\",\r\n defaultSlippage: \"0.005\",\r\n maxSlippage: \"1\",\r\n confirmationTimeout: 60000,\r\n maxRetries: 3,\r\n },\r\n \"1088\": { // Metis\r\n id: \"1088\",\r\n explorer: \"https://web3.okx.com/explorer/metis/tx\",\r\n defaultSlippage: \"0.005\",\r\n maxSlippage: \"1\",\r\n confirmationTimeout: 60000,\r\n maxRetries: 3,\r\n },\r\n \"1030\": { // Conflux\r\n id: \"1030\",\r\n explorer: \"https://www.confluxscan.io/tx\",\r\n defaultSlippage: \"0.005\",\r\n maxSlippage: \"1\",\r\n confirmationTimeout: 60000,\r\n maxRetries: 3,\r\n },\r\n \"81457\": { // Blast\r\n id: \"81457\",\r\n explorer: \"https://web3.okx.com/explorer/blast/tx\",\r\n defaultSlippage: \"0.005\",\r\n maxSlippage: \"1\",\r\n confirmationTimeout: 60000,\r\n maxRetries: 3,\r\n },\r\n \"7000\": { // Zeta Chain\r\n id: \"7000\",\r\n explorer: \"https://explorer.zetachain.com/tx\",\r\n defaultSlippage: \"0.005\",\r\n maxSlippage: \"1\",\r\n confirmationTimeout: 60000,\r\n maxRetries: 3,\r\n },\r\n \"66\": { // OKT Chain\r\n id: \"66\",\r\n explorer: \"https://www.okx.com/web3/explorer/oktc/tx\",\r\n defaultSlippage: \"0.005\",\r\n maxSlippage: \"1\",\r\n confirmationTimeout: 60000,\r\n maxRetries: 3,\r\n },\r\n\r\n };\r\n\r\n constructor(private readonly config: DexConfig) {\r\n this.config.networks = {\r\n ...this.defaultNetworkConfigs,\r\n ...(config.networks || {}),\r\n };\r\n }\r\n\r\n public getNetworkConfig(chainId: string): ChainConfig {\r\n const networkConfig = this.config.networks?.[chainId];\r\n if (!networkConfig) {\r\n throw new Error(`Network configuration not found for chain ${chainId}`);\r\n }\r\n return networkConfig;\r\n }\r\n\r\n\r\n}","import { DexAPI } from \"./../../api/dex\";\r\nimport { DexConfig, ChainConfig } from \"./../../types\";\r\nimport { bip39 } from \"@okxweb3/crypto-lib\";\r\n\r\nabstract class BaseWallet {\r\n\r\n public config: DexConfig;\r\n public dex: DexAPI;\r\n\r\n constructor(config: DexConfig) {\r\n this.config = {\r\n timeout: 30000,\r\n ...config,\r\n };\r\n\r\n this.dex = new DexAPI(this.config);\r\n }\r\n\r\n public get currentChain(): ChainConfig {\r\n if (!this.config.chainId) throw new Error(\"chainId not set in config\");\r\n return this.dex.getNetworkConfig(this.config.chainId);\r\n }\r\n\r\n public async generateMnemonic(numWords: number = 12): Promise<string> {\r\n const strength = (numWords / 3) * 32;\r\n return bip39.generateMnemonic(strength);\r\n }\r\n}\r\n\r\nexport { BaseWallet }","import { IResponse } from './../types';\r\n\r\nexport const successResponse = (args: IResponse): IResponse => {\r\n return args;\r\n};\r\n","// src/utils/amount.ts\r\nimport BigNumber from \"bignumber.js\";\r\n\r\n/**\r\n * Convert human-readable amount → raw integer by decimals\r\n * ex: 0.1 USDC (decimals 6) => 100000\r\n */\r\nexport const parseAmount = (amount: string | number, decimals: number): bigint => {\r\n const bn = new BigNumber(amount);\r\n const multiplier = new BigNumber(10).pow(decimals);\r\n return BigInt(bn.times(multiplier).toFixed(0));\r\n};\r\n\r\n/**\r\n * Convert raw amount → human-readable number by decimals\r\n * ex: 100000 (decimals 6) => 0.1\r\n */\r\nexport const formatAmount = (raw: bigint | string, decimals: number): number => {\r\n const bn = new BigNumber(raw.toString());\r\n const divisor = new BigNumber(10).pow(decimals);\r\n return bn.dividedBy(divisor).toNumber();\r\n};\r\n","// src/utils/evmUnits.ts\r\nimport { parseAmount, formatAmount } from \"./amount\";\r\n\r\n// Ether = 18 decimals\r\nexport const parseEther = (v: string | number) => parseAmount(v, 18);\r\nexport const formatEther = (v: bigint | string) => formatAmount(v, 18);\r\n\r\n// Gwei = 9 decimals\r\nexport const parseGwei = (v: string | number) => parseAmount(v, 9);\r\nexport const formatGwei = (v: bigint | string) => formatAmount(v, 9);\r\n\r\n// Wei = 0 decimals (identity, tapi biar konsisten)\r\nexport const parseWei = (v: string | number) => parseAmount(v, 0);\r\nexport const formatWei = (v: bigint | string) => formatAmount(v, 0);\r\n","import { BaseWallet } from \"../base/index\";\r\nimport { DexConfig } from \"../../types\";\r\nimport { BigNumber } from \"@okxweb3/crypto-lib\";\r\nimport { EthWallet as EthWalletOkx } from \"@okxweb3/coin-ethereum\";\r\nimport { GenerateWalletPayload, TokenInfo, IResponse } from \"./../../types\";\r\nimport { successResponse, formatAmount, parseAmount, parseGwei, formatGwei, formatEther, parseEther } from \"./../../utils\";\r\nimport { GetContract, BalancePayload, TransferPayload, GetTransactionPayload, ISmartContractCallPayload, SignerPayload, GetErcTokenInfoPayload, estimateGasPayload } from \"./types\";\r\nimport { ethers } from \"ethers\";\r\nimport erc20Abi from \"./abi/erc20.json\";\r\n\r\nconst provider = (rpcUrl?: string) => new ethers.JsonRpcProvider(rpcUrl);\r\n\r\nconst DEFAULT_PRIORITY = \"0.1\";\r\nconst DEFAULT_MAXFEE = \"3\";\r\n\r\nexport class EvmWallet extends BaseWallet {\r\n\r\n private wallet: EthWalletOkx;\r\n\r\n constructor(config: DexConfig) {\r\n super(config)\r\n this.wallet = new EthWalletOkx();\r\n }\r\n\r\n async getContract({ contractAddress, rpcUrl, privateKey, abi }: GetContract) {\r\n if (!rpcUrl) throw new Error(\"RPC URL is required\");\r\n\r\n const providerInstance = provider(rpcUrl ?? this.config.rpcUrl);\r\n const gasFeeData = await providerInstance.getFeeData();\r\n\r\n let nonce, contract, signer;\r\n\r\n\r\n if (privateKey) {\r\n signer = new ethers.Wallet(privateKey, providerInstance);\r\n nonce = await providerInstance.getTransactionCount(\r\n await signer.getAddress(),\r\n \"pending\"\r\n );\r\n }\r\n\r\n if (contractAddress) {\r\n contract = new ethers.Contract(\r\n contractAddress,\r\n abi || erc20Abi,\r\n signer || providerInstance\r\n );\r\n\r\n const code = await providerInstance.getCode(contractAddress);\r\n if (code === \"0x\") {\r\n throw new Error(\"Address is not a contract\");\r\n }\r\n }\r\n\r\n return { contract, signer, gasFeeData, nonce, providerInstance };\r\n }\r\n\r\n async generateWallet({ mnemonic, derivationPath }: GenerateWalletPayload): Promise<IResponse> {\r\n const hdPath = derivationPath || \"m/44'/60'/0'/0/0\";\r\n const getMnemonic = mnemonic ?? (await this.generateMnemonic(12));\r\n\r\n const derivePrivateKey = await this.wallet.getDerivedPrivateKey({ mnemonic: getMnemonic, hdPath });\r\n const { address, publicKey } = await this.wallet.getNewAddress({ privateKey: derivePrivateKey });\r\n\r\n return successResponse({ address, publicKey, privateKey: derivePrivateKey });\r\n }\r\n\r\n async getBalance({ rpcUrl, contractAddress, address }: BalancePayload): Promise<IResponse> {\r\n const { contract, providerInstance } = await this.getContract({ rpcUrl: rpcUrl ?? this.config.rpcUrl, contractAddress });\r\n\r\n if (contract) {\r\n const decimals = await contract.decimals();\r\n const balance = await contract.balanceOf(address);\r\n return successResponse({\r\n balance: formatAmount(balance.toString(), decimals),\r\n _rawBalance: balance.toString(),\r\n _decimal: decimals,\r\n });\r\n }\r\n\r\n const balance = await providerInstance.getBalance(address);\r\n\r\n return successResponse({\r\n balance: formatAmount(balance.toString(), 18),\r\n _rawBalance: balance.toString(),\r\n _decimal: 18,\r\n });\r\n }\r\n\r\n async transfer({ privateKey, contractAddress, rpcUrl, ...args }: TransferPayload): Promise<IResponse> {\r\n const { contract, providerInstance, gasFeeData, nonce } = await this.getContract({\r\n rpcUrl: rpcUrl ?? this.config.rpcUrl,\r\n privateKey,\r\n contractAddress,\r\n });\r\n\r\n const recipientAddress = await this.wallet.validAddress({ address: args.recipientAddress });\r\n if (!recipientAddress.isValid) throw new Error(\"address not valid\");\r\n\r\n // VALIDASI FEE\r\n if (args.maxPriorityFeePerGas && args.maxFeePerGas) {\r\n const prio = BigInt(args.maxPriorityFeePerGas);\r\n const max = BigInt(args.maxFeePerGas);\r\n if (max < prio) {\r\n throw new Error(\"maxFeePerGas must be >= maxPriorityFeePerGas\");\r\n }\r\n }\r\n\r\n if (args.gasPrice && (args.maxFeePerGas || args.maxPriorityFeePerGas)) {\r\n throw new Error(\"Cannot use gasPrice with EIP-1559 fee fields\");\r\n }\r\n\r\n let value: bigint;\r\n let gasLimit: bigint;\r\n\r\n if (contractAddress) {\r\n if (!contract) throw new Error(\"contract not valid\");\r\n\r\n const decimals = await contract.decimals();\r\n value = parseAmount(args.amount.toString(), decimals);\r\n\r\n\r\n gasLimit = args.gasLimit\r\n ? BigInt(args.gasLimit)\r\n : await contract.transfer.estimateGas(\r\n args.recipientAddress,\r\n value\r\n );\r\n } else {\r\n value = parseEther(args.amount.toString());\r\n gasLimit = args.gasLimit ? BigInt(args.gasLimit) : 21000n;\r\n }\r\n\r\n // DEFAULT FEE\r\n const noFeeProvided =\r\n !args.gasPrice &&\r\n !args.maxFeePerGas &&\r\n !args.maxPriorityFeePerGas;\r\n\r\n if (noFeeProvided) {\r\n const estimate = await this.estimateGas({\r\n rpcUrl: rpcUrl ?? this.config.rpcUrl,\r\n recipientAddress: args.recipientAddress,\r\n amount: args.amount.toString(),\r\n data: args.data,\r\n });\r\n\r\n gasLimit = BigInt(estimate.gasLimit);\r\n\r\n // ===== LEGACY =====\r\n if (estimate.model === \"LEGACY\") {\r\n if (!estimate.gasPrice) {\r\n throw new Error(\"LEGACY estimate missing gasPrice\");\r\n }\r\n\r\n args.gasPrice = estimate.gasPrice; // wei\r\n return this.transfer({ privateKey, contractAddress, rpcUrl, ...args });\r\n }\r\n\r\n // ===== EIP-1559 =====\r\n const fee = estimate.fees.regular;\r\n\r\n if (!fee?.maxFeePerGas || !fee?.maxPriorityFeePerGas) {\r\n throw new Error(\"EIP1559 estimate missing fee fields\");\r\n }\r\n\r\n args.maxFeePerGas = fee.maxFeePerGas;\r\n args.maxPriorityFeePerGas = fee.maxPriorityFeePerGas;\r\n }\r\n\r\n // ===============================\r\n // SIGN & BROADCAST\r\n // ===============================\r\n const signParams = await this.buildSignParams({\r\n args: { ...args, privateKey, gasLimit },\r\n nonce,\r\n gasFeeData,\r\n recipientAddress,\r\n value,\r\n contractAddress,\r\n });\r\n\r\n const signedTx = await this.wallet.signTransaction(signParams);\r\n const broadcast = await providerInstance.broadcastTransaction(signedTx);\r\n\r\n return successResponse({ ...broadcast });\r\n }\r\n\r\n async getTransaction({ hash, rpcUrl, withReceipt }: GetTransactionPayload): Promise<IResponse> {\r\n const { providerInstance } = await this.getContract({ rpcUrl: rpcUrl ?? this.config.rpcUrl });\r\n\r\n try {\r\n if (withReceipt) {\r\n const [tx, receipt] = await Promise.all([\r\n providerInstance.getTransaction(hash),\r\n providerInstance.getTransactionReceipt(hash),\r\n ]);\r\n\r\n const memo = tx?.data && tx.data !== \"0x\"\r\n ? ethers.toUtf8String(tx.data)\r\n : null;\r\n\r\n return successResponse({\r\n transaction: tx,\r\n receipt,\r\n memo,\r\n });\r\n }\r\n\r\n const tx = await providerInstance.getTransaction(hash);\r\n\r\n return successResponse({\r\n transaction: tx,\r\n });\r\n } catch (error) {\r\n throw error;\r\n }\r\n }\r\n\r\n async getTokenInfo({ contractAddress, rpcUrl }: GetErcTokenInfoPayload): Promise<IResponse> {\r\n const { contract } = await this.getContract({ contractAddress, rpcUrl: rpcUrl ?? this.config.rpcUrl, });\r\n\r\n if (contract) {\r\n const [name, symbol, decimals, totalSupply] = await Promise.all([\r\n contract.name(),\r\n contract.symbol(),\r\n contract.decimals(),\r\n contract.totalSupply(),\r\n ]);\r\n\r\n const data: TokenInfo = {\r\n name,\r\n symbol,\r\n decimals,\r\n totalSupply: formatAmount(totalSupply.toString(), decimals).toString(),\r\n\r\n };\r\n return successResponse({ ...data });\r\n }\r\n\r\n throw new Error('Contract not found');\r\n };\r\n\r\n async smartContractCall(args: ISmartContractCallPayload): Promise<IResponse> {\r\n const { contract, gasFeeData, nonce } = await this.getContract({\r\n rpcUrl: args.rpcUrl ?? this.config.rpcUrl,\r\n contractAddress: args.contractAddress,\r\n abi: args.contractAbi,\r\n privateKey: args.privateKey,\r\n });\r\n\r\n try {\r\n let tx;\r\n let overrides = {} as any;\r\n\r\n if (args.methodType === 'read') {\r\n overrides = {};\r\n } else if (args.methodType === 'write') {\r\n overrides = {\r\n gasPrice: args.gasPrice\r\n ? parseGwei(args.gasPrice)\r\n : gasFeeData?.gasPrice,\r\n\r\n nonce: args.nonce || nonce,\r\n value: args.value ? parseEther(args.value.toString()) : 0,\r\n };\r\n\r\n if (args.gasLimit) {\r\n overrides.gasLimit = args.gasLimit;\r\n }\r\n }\r\n\r\n if (args.params.length > 0) {\r\n tx = await contract?.[args.method](...args.params, overrides);\r\n } else {\r\n tx = await contract?.[args.method](overrides);\r\n }\r\n\r\n return successResponse({\r\n data: tx,\r\n });\r\n } catch (error) {\r\n throw error;\r\n }\r\n };\r\n\r\n async estimateGas({ rpcUrl, recipientAddress, amount, data }: estimateGasPayload): Promise<IResponse> {\r\n const { providerInstance } = await this.getContract({ rpcUrl: rpcUrl ?? this.config.rpcUrl });\r\n\r\n try {\r\n\r\n const network = await providerInstance.getNetwork();\r\n const chainId = Number(network.chainId);\r\n\r\n const tx = {\r\n to: recipientAddress,\r\n value: parseEther(amount.toString()),\r\n data: data\r\n ? ethers.hexlify(ethers.toUtf8Bytes(data as string))\r\n : '0x',\r\n };\r\n\r\n const [feeData, gasLimit] = await Promise.all([\r\n providerInstance.getFeeData(),\r\n providerInstance.estimateGas(tx),\r\n ]);\r\n\r\n const { gasPrice, maxFeePerGas, maxPriorityFeePerGas } = feeData;\r\n\r\n const applyMultiplier = (base: bigint, mul: number) =>\r\n (base * BigInt(Math.floor(mul * 10))) / 10n;\r\n\r\n // feeData IS AUTO CHECK EIP OR LEGACY\r\n const isEip1559 = maxFeePerGas !== null && maxPriorityFeePerGas !== null;\r\n\r\n if (!isEip1559) {\r\n const baseGasPrice = BigInt(gasPrice ?? 0n);\r\n\r\n const regularGasPrice = baseGasPrice; // wallet \"slow\"\r\n const expressGasPrice = (baseGasPrice * 110n) / 100n; // +10%\r\n const instantGasPrice = (baseGasPrice * 125n) / 100n; // +25%\r\n\r\n const regularFee = gasLimit * regularGasPrice;\r\n const expressFee = gasLimit * expressGasPrice;\r\n const instantFee = gasLimit * instantGasPrice;\r\n\r\n return successResponse({\r\n chainId,\r\n gasLimit: gasLimit.toString(),\r\n gasPrice: baseGasPrice.toString(),\r\n gasPriceGwei: formatGwei(baseGasPrice),\r\n model: \"LEGACY\",\r\n fees: {\r\n regular: formatEther(regularFee),\r\n express: formatEther(expressFee),\r\n instant: formatEther(instantFee),\r\n }\r\n });\r\n }\r\n\r\n let baseFee: bigint;\r\n let priorityFee: bigint;\r\n\r\n const block = await providerInstance.getBlock(\"latest\");\r\n\r\n baseFee = BigInt(block!.baseFeePerGas ?? 0n);\r\n priorityFee = BigInt(\r\n feeData.maxPriorityFeePerGas ?? parseGwei(DEFAULT_PRIORITY)\r\n );\r\n\r\n const regularPriority = priorityFee;\r\n const regularMaxFee = baseFee + regularPriority;\r\n\r\n const expressPriority = applyMultiplier(priorityFee, 1.2);\r\n const expressMaxFee = applyMultiplier(baseFee, 1.2) + expressPriority;\r\n\r\n const instantPriority = applyMultiplier(priorityFee, 1.5);\r\n const instantMaxFee = applyMultiplier(baseFee, 1.5) + instantPriority;\r\n\r\n const MAX_GAS_GWEI = 100n * 1_000_000_000n;\r\n const cap = (v: bigint) => (v > MAX_GAS_GWEI ? MAX_GAS_GWEI : v);\r\n\r\n const regularFee = gasLimit * cap(regularMaxFee);\r\n const expressFee = gasLimit * cap(expressMaxFee);\r\n const instantFee = gasLimit * cap(instantMaxFee);\r\n\r\n return successResponse({\r\n chainId,\r\n gasLimit: gasLimit.toString(),\r\n baseFeeGwei: formatGwei(baseFee),\r\n priorityFeeGwei: formatGwei(priorityFee),\r\n model: \"EIP1559\",\r\n fees: {\r\n regular: {\r\n perCoin: formatEther(regularFee),\r\n maxPriorityFeePerGas: regularPriority.toString(),\r\n maxFeePerGas: regularMaxFee.toString(),\r\n },\r\n express: {\r\n perCoin: formatEther(expressFee),\r\n maxPriorityFeePerGas: expressPriority.toString(),\r\n maxFeePerGas: expressMaxFee.toString(),\r\n },\r\n instant: {\r\n perCoin: formatEther(instantFee),\r\n maxPriorityFeePerGas: instantPriority.toString(),\r\n maxFeePerGas: instantMaxFee.toString(),\r\n },\r\n }\r\n });\r\n\r\n } catch (error) {\r\n throw error;\r\n }\r\n }\r\n\r\n private async buildSignParams({ args, nonce, gasFeeData, recipientAddress, value, contractAddress }: SignerPayload) {\r\n const txBase = {\r\n to: recipientAddress.address,\r\n value: BigNumber(value.toString()),\r\n data: args.data\r\n ? ethers.hexlify(ethers.toUtf8Bytes(args.data as string))\r\n : '0x',\r\n nonce: args.nonce || (await nonce),\r\n gasLimit: args.gasLimit ? BigNumber(args.gasLimit) : BigNumber(21000),\r\n chainId: Number(this.currentChain.id),\r\n ...(contractAddress ? { contractAddress } : {}),\r\n };\r\n\r\n // legacy vs eip-1559\r\n if (args.gasPrice) {\r\n return {\r\n privateKey: args.privateKey,\r\n data: {\r\n ...txBase,\r\n gasPrice: BigNumber(parseGwei(args.gasPrice).toString()),\r\n type: 0,\r\n },\r\n };\r\n }\r\n\r\n return {\r\n privateKey: args.privateKey,\r\n data: {\r\n ...txBase,\r\n type: 2,\r\n maxPriorityFeePerGas: BigNumber(\r\n args.maxPriorityFeePerGas\r\n ? args.maxPriorityFeePerGas\r\n : gasFeeData.maxPriorityFeePerGas!.toString()\r\n ),\r\n maxFeePerGas: BigNumber(\r\n args.maxFeePerGas\r\n ? args.maxFeePerGas\r\n : gasFeeData.maxFeePerGas!.toString()\r\n ),\r\n },\r\n };\r\n }\r\n}\r\n","import { BaseWallet } from \"../base/index\";\r\nimport { DexConfig } from \"../../types\";\r\nimport { BtcWallet as BtcWalletOkxm, TBtcWallet } from \"@okxweb3/coin-bitcoin\";\r\nimport { IResponse, GenerateWalletPayload } from \"./../../types\";\r\n\r\nconst successResponse = (args: IResponse): IResponse => args;\r\n\r\nexport class BtcWallet extends BaseWallet {\r\n\r\n private wallet: BtcWalletOkxm | TBtcWallet;\r\n\r\n constructor(config: DexConfig) {\r\n super(config);\r\n this.wallet = this.config.cluster === \"testnet\" ? new TBtcWallet() : new BtcWalletOkxm();\r\n }\r\n\r\n async generateWallet({ mnemonic, derivationPath }: GenerateWalletPayload): Promise<IResponse> {\r\n const hdPath = derivationPath || \"m/44'/0'/0'/0/0\";\r\n const getMnemonic = mnemonic ?? (await this.generateMnemonic(12));\r\n\r\n const derivePrivateKey = await this.wallet.getDerivedPrivateKey({ mnemonic: getMnemonic, hdPath });\r\n const { address, publicKey } = await this.wallet.getNewAddress({ privateKey: derivePrivateKey });\r\n\r\n return successResponse({ address, publicKey, privateKey: derivePrivateKey });\r\n }\r\n\r\n\r\n}\r\n","import { BaseWallet } from \"../base/index\";\r\nimport { DexConfig } from \"../../types\";\r\nimport { base } from \"@okxweb3/crypto-lib\";\r\nimport { SolWallet as SolWalletOkx } from \"@okxweb3/coin-solana\";\r\nimport * as solanaWeb3 from '@solana/web3.js';\r\nimport { getAssociatedTokenAddress } from '@solana/spl-token';\r\nimport { ENV, TokenListProvider } from \"@solana/spl-token-registry\";\r\nimport { successResponse, parseAmount, formatAmount } from \"./../../utils\";\r\nimport { IResponse, GenerateWalletPayload, TokenInfo } from \"./../../types\";\r\nimport { BalanceSolanaPayload, TransferSolanaPayload, GetSplTokenInfoPayload } from \"./types\";\r\n// @ts-ignore\r\nimport * as BufferLayout from 'buffer-layout';\r\n\r\nconst provider = (rpcUrl?: string) => new solanaWeb3.Connection(rpcUrl as string);\r\n\r\nexport const ACCOUNT_LAYOUT = BufferLayout.struct([\r\n BufferLayout.blob(32, 'mint'),\r\n BufferLayout.blob(32, 'owner'),\r\n BufferLayout.nu64('amount'),\r\n BufferLayout.blob(93),\r\n]);\r\n\r\nexport const CLUSTER_ENV: Record<string, ENV> = {\r\n \"mainnet-beta\": ENV.MainnetBeta,\r\n \"testnet\": ENV.Testnet,\r\n \"devnet\": ENV.Devnet,\r\n};\r\n\r\nexport class SolWallet extends BaseWallet {\r\n\r\n private wallet: SolWalletOkx;\r\n\r\n constructor(config: DexConfig) {\r\n super(config)\r\n this.wallet = new SolWalletOkx();\r\n }\r\n\r\n async generateWallet({ mnemonic, derivationPath }: GenerateWalletPayload): Promise<IResponse> {\r\n const hdPath = derivationPath || \"m/44'/501'/0'/0'\";\r\n const getMnemonic = mnemonic ?? (await this.generateMnemonic(12));\r\n\r\n const derivePrivateKey = await this.wallet.getDerivedPrivateKey({ mnemonic: getMnemonic, hdPath });\r\n const { address, publicKey } = await this.wallet.getNewAddress({ privateKey: derivePrivateKey });\r\n\r\n return successResponse({ address, publicKey, privateKey: derivePrivateKey });\r\n }\r\n\r\n async getBalance({ rpcUrl, contractAddress, address }: BalanceSolanaPayload): Promise<IResponse> {\r\n const connection = provider(rpcUrl ?? this.config.rpcUrl);\r\n try {\r\n const recipientAddress = await this.wallet.validAddress({ address });\r\n if (!recipientAddress.isValid) throw new Error(\"address not valid\");\r\n\r\n const publicKey = new solanaWeb3.PublicKey(recipientAddress.address);\r\n if (contractAddress) {\r\n const mintPubkey = new solanaWeb3.PublicKey(contractAddress);\r\n // get token by account \r\n const tokenAccountAddress = await getAssociatedTokenAddress(mintPubkey, publicKey);\r\n const accountInfo = await connection.getAccountInfo(tokenAccountAddress);\r\n\r\n // check if account not associated with this return 0 balance \r\n if (!accountInfo) {\r\n return successResponse({\r\n balance: \"0\",\r\n });\r\n }\r\n\r\n const rawBalance = await connection.getTokenAccountBalance(tokenAccountAddress);\r\n return successResponse({\r\n balance: formatAmount(rawBalance.value.amount, rawBalance.value.decimals),\r\n _rawBalance: rawBalance.value.amount,\r\n _decimal: rawBalance.value.decimals,\r\n });\r\n }\r\n\r\n const balance = await connection.getBalance(publicKey);\r\n return successResponse({\r\n balance: formatAmount(balance.toString(), 9),\r\n _rawBalance: parseAmount(balance, 9),\r\n _decimal: 9,\r\n });\r\n } catch (error) {\r\n throw error;\r\n }\r\n }\r\n\r\n async transfer({ privateKey, contractAddress, rpcUrl, ...args }: TransferSolanaPayload & { createAssociatedAddress?: boolean; token2022?: boolean }): Promise<IResponse> {\r\n const connection = provider(rpcUrl ?? this.config.rpcUrl);\r\n\r\n try {\r\n // validate recipient\r\n const recipientAddress = await this.wallet.validAddress({ address: args.recipientAddress });\r\n if (!recipientAddress.isValid) throw new Error(\"address not valid\");\r\n\r\n // get sender info from privateKey using OKX wallet util\r\n const fromAccount = await this.wallet.getNewAddress({ privateKey });\r\n\r\n // recommended fees (CU)\r\n let { computeUnitLimit, computeUnitPrice } = await this.getRecommendedFees(connection);\r\n if (args.gasLimit) computeUnitLimit = args.gasLimit;\r\n if (args.gasPrice) computeUnitPrice = parseInt(args.gasPrice as any, 10);\r\n\r\n // get latest blockhash\r\n const { blockhash } = await connection.getLatestBlockhash();\r\n\r\n // ---------- SPL TOKEN FLOW ----------\r\n if (contractAddress) {\r\n const mintPubkey = new solanaWeb3.PublicKey(contractAddress);\r\n const fromPubkey = new solanaWeb3.PublicKey(fromAccount.address);\r\n const recipientPubkey = new solanaWeb3.PublicKey(recipientAddress.address);\r\n\r\n // Associated Token Accounts (computed, not necessarily exist)\r\n const fromTokenAccount = await getAssociatedTokenAddress(mintPubkey, fromPubkey);\r\n const recipientTokenAccount = await getAssociatedTokenAddress(mintPubkey, recipientPubkey);\r\n\r\n // Try to read decimals from sender token account first, fallback to token supply\r\n let decimals = 0;\r\n try {\r\n const fromTokenBal = await connection.getTokenAccountBalance(fromTokenAccount);\r\n decimals = fromTokenBal.value.decimals;\r\n } catch (err) {\r\n // fallback: try to fetch mint info (supply) to get decimals\r\n try {\r\n const mintAccountInfo = await connection.getParsedAccountInfo(mintPubkey);\r\n // parsed data path may vary; handle gracefully\r\n // if parsed exists:\r\n if (mintAccountInfo.value && (mintAccountInfo.value.data as any).parsed) {\r\n const parsed = (mintAccountInfo.value.data as any).parsed;\r\n decimals = parsed.info.decimals || 0;\r\n }\r\n } catch (err2) {\r\n // cannot determine decimals — throw explicit error\r\n throw new Error(\"Failed to determine token decimals for mint \" + contractAddress);\r\n }\r\n }\r\n\r\n // Check whether recipient ATA exists\r\n const recipientAtaInfo = await connection.getAccountInfo(recipientTokenAccount);\r\n const recipientHasATA = !!recipientAtaInfo;\r\n\r\n // decide whether to create ATA: user can pass args.createAssociatedAddress\r\n const shouldCreateATA = !!(args.createAssociatedAddress) && !recipientHasATA;\r\n\r\n // compute token amount (smallest unit)\r\n // args.amount is assumed token amount in human units (eg. 1.5 USDC)\r\n const rawTokenAmount = BigInt(Math.round((args.amount ?? 0) * (10 ** decimals)));\r\n\r\n // Build params for OKX wallet signTransaction (tokenTransfer)\r\n const params = {\r\n privateKey,\r\n data: {\r\n type: \"tokenTransfer\",\r\n payer: fromAccount.address,\r\n from: fromAccount.address,\r\n to: recipientAddress.address,\r\n blockHash: blockhash,\r\n mint: contractAddress,\r\n amount: rawTokenAmount.toString(), // send as string\r\n decimal: decimals,\r\n createAssociatedAddress: !!shouldCreateATA, // OKX SDK should create ATA if true\r\n token2022: !!args.token2022, // allow override by user\r\n computeUnitLimit,\r\n computeUnitPrice\r\n }\r\n };\r\n\r\n // sign & broadcast\r\n const signedTx = await this.wallet.signTransaction(params);\r\n // OKX returns base58 signed tx — decode and broadcast\r\n const rawTx = base.fromBase58(signedTx);\r\n const txid = await connection.sendRawTransaction(rawTx, { skipPreflight: false, maxRetries: 3 });\r\n return successResponse({ hash: txid });\r\n }\r\n\r\n // ---------- NATIVE SOL FLOW ----------\r\n const lamports = Math.round((args.amount ?? 0) * solanaWeb3.LAMPORTS_PER_SOL);\r\n\r\n const solParams = {\r\n privateKey,\r\n data: {\r\n type: \"transfer\",\r\n payer: fromAccount.address,\r\n from: fromAccount.address,\r\n to: recipientAddress.address,\r\n blockHash: blockhash,\r\n amount: lamports,\r\n computeUnitLimit,\r\n computeUnitPrice\r\n }\r\n };\r\n\r\n const signedTx = await this.wallet.signTransaction(solParams);\r\n const rawTx = base.fromBase58(signedTx);\r\n const broadcast = await connection.sendRawTransaction(rawTx, {\r\n skipPreflight: false,\r\n maxRetries: 3,\r\n });\r\n\r\n return successResponse({ hash: broadcast });\r\n } catch (error) {\r\n throw error;\r\n }\r\n }\r\n\r\n async getTokenInfo({ contractAddress, rpcUrl, cluster = \"mainnet-beta\" }: GetSplTokenInfoPayload): Promise<IResponse> {\r\n try {\r\n const connection = provider(rpcUrl ?? this.config.rpcUrl);\r\n const mintAddress = new solanaWeb3.PublicKey(contractAddress);\r\n\r\n // --- step 1: fetch mint info dari RPC ---\r\n const mintInfo = await connection.getParsedAccountInfo(mintAddress);\r\n const parsedMint = (mintInfo?.value?.data as any)?.parsed?.info;\r\n\r\n\r\n const decimals = parsedMint?.decimals ?? 0;\r\n const supplyRaw = parsedMint?.supply ?? \"0\";\r\n\r\n // --- step 2: coba ambil info dari TokenListProvider ---\r\n let tokenName = \"\";\r\n let tokenSymbol = \"\";\r\n let tokenLogo = \"\";\r\n\r\n try {\r\n const env = CLUSTER_ENV[cluster] ?? ENV.MainnetBeta;\r\n const provider = await new TokenListProvider().resolve();\r\n const tokenList = provider.filterByChainId(env).getList();\r\n const tokenMap = new Map(tokenList.map((item) => [item.address, item]));\r\n const token = tokenMap.get(mintAddress.toBase58());\r\n\r\n if (token) {\r\n tokenName = token.name;\r\n tokenSymbol = token.symbol;\r\n tokenLogo = token.logoURI || \"\";\r\n }\r\n } catch (err) {\r\n console.warn(\"TokenListProvider failed:\", err);\r\n }\r\n\r\n // --- step 3: fallback kalau name/symbol kosong ---\r\n if (!tokenName) tokenName = contractAddress.slice(0, 6) + \"...\";\r\n if (!tokenSymbol) tokenSymbol = \"SPL\";\r\n\r\n const data: TokenInfo = {\r\n name: tokenName,\r\n symbol: tokenSymbol,\r\n address: contractAddress,\r\n decimals,\r\n logoUrl: tokenLogo || \"\",\r\n totalSupply: (Number(supplyRaw) / 10 ** decimals).toString(),\r\n };\r\n\r\n return successResponse({ ...data });\r\n } catch (error) {\r\n throw error;\r\n }\r\n };\r\n\r\n private async getRecommendedFees(connection: solanaWeb3.Connection) {\r\n let computeUnitLimit = 140000; // default \r\n let computeUnitPrice = 0; // default = 0 (without priority fee)\r\n\r\n try {\r\n const fees = await connection.getRecentPrioritizationFees();\r\n if (fees.length > 0) {\r\n // Ambil median biar stabil\r\n const sorted = fees.map(f => f.prioritizationFee).sort((a, b) => a - b);\r\n computeUnitPrice = sorted[Math.floor(sorted.length / 2)] || 0;\r\n }\r\n } catch (err) {\r\n console.warn(\"Failed to fetch prioritization fees, fallback to defaults\");\r\n }\r\n\r\n return { computeUnitLimit, computeUnitPrice };\r\n }\r\n}\r\n","// src/services/wallet-registry.ts\r\nimport { EvmWallet, BtcWallet, SolWallet } from \"./index\";\r\n\r\nexport const WalletRegistry = {\r\n EVM: EvmWallet,\r\n BTC: BtcWallet,\r\n SOL: SolWallet,\r\n};\r\n\r\nexport type WalletTypes = keyof typeof WalletRegistry;\r\n","import { WalletRegistry, WalletTypes } from \"../services/wallet-registry\";\r\nimport { DexConfig } from \"../types\";\r\n\r\n\r\ninterface ClientConfig<T extends WalletTypes> {\r\n network: T;\r\n chainId?: string;\r\n rpcUrl?: string;\r\n}\r\n\r\nexport class CryptoClientSdk<T extends WalletTypes> {\r\n private network: T;\r\n private chainId?: string;\r\n private rpcUrl?: string;\r\n\r\n constructor({ network, chainId, rpcUrl }: ClientConfig<T>) {\r\n this.network = network;\r\n this.chainId = chainId;\r\n this.rpcUrl = rpcUrl;\r\n }\r\n\r\n getWallet(): InstanceType<(typeof WalletRegistry)[T]> {\r\n const WalletClass = WalletRegistry[this.network];\r\n\r\n const config: DexConfig = {\r\n chainId: this.chainId,\r\n rpcUrl: this.rpcUrl,\r\n };\r\n\r\n return new WalletClass(config) as InstanceType<(typeof WalletRegistry)[T]>;\r\n }\r\n}"],"names":["DexAPI","config","id","explorer","defaultSlippage","maxSlippage","confirmationTimeout","maxRetries","computeUnits","networks","_extends","defaultNetworkConfigs","_proto","prototype","getNetworkConfig","chainId","networkConfig","_this$config$networks","Error","BaseWallet","timeout","dex","generateMnemonic","_generateMnemonic","_asyncToGenerator","_regenerator","m","_callee","numWords","strength","_context","a","bip39","_x","apply","arguments","_createClass","key","get","successResponse","args","parseAmount","amount","decimals","bn","BigNumber","multiplier","pow","BigInt","times","toFixed","formatAmount","raw","toString","divisor","dividedBy","toNumber","parseEther","v","formatEther","parseGwei","formatGwei","provider","rpcUrl","ethers","JsonRpcProvider","DEFAULT_PRIORITY","EvmWallet","_BaseWallet","_this","call","wallet","EthWalletOkx","_inheritsLoose","getContract","_getContract","_ref","contractAddress","privateKey","abi","providerInstance","gasFeeData","nonce","contract","signer","code","_t","w","n","getFeeData","Wallet","getAddress","getTransactionCount","Contract","erc20Abi","getCode","generateWallet","_generateWallet","_callee2","_ref2","mnemonic","derivationPath","hdPath","getMnemonic","derivePrivateKey","_yield$this$wallet$ge","address","publicKey","_t2","_context2","getDerivedPrivateKey","getNewAddress","_x2","getBalance","_getBalance","_callee3","_ref3","_yield$this$getContra","_balance","balance","_context3","balanceOf","_rawBalance","_decimal","_x3","transfer","_transfer","_callee4","_ref4","_yield$this$getContra2","recipientAddress","prio","max","value","gasLimit","noFeeProvided","estimate","fee","signParams","signedTx","broadcast","_t3","_context4","_objectWithoutPropertiesLoose","_excluded","validAddress","isValid","maxPriorityFeePerGas","maxFeePerGas","gasPrice","estimateGas","data","model","fees","regular","buildSignParams","signTransaction","broadcastTransaction","_x4","getTransaction","_getTransaction","_callee5","_ref5","hash","withReceipt","_yield$this$getContra3","_yield$Promise$all","_tx","receipt","memo","tx","_t4","_context5","p","Promise","all","getTransactionReceipt","toUtf8String","transaction","_x5","getTokenInfo","_getTokenInfo","_callee6","_ref6","_yield$this$getContra4","_yield$Promise$all2","name","symbol","totalSupply","_context6","_x6","smartContractCall","_smartContractCall","_callee7","_args$rpcUrl","_yield$this$getContra5","overrides","_t5","_context7","contractAbi","methodType","params","length","method","concat","_x7","_estimateGas","_callee8","_ref7","_yield$this$getContra6","_block$baseFeePerGas","_feeData$maxPriorityF","network","_yield$Promise$all3","feeData","applyMultiplier","isEip1559","baseGasPrice","regularGasPrice","expressGasPrice","instantGasPrice","_regularFee","_expressFee","_instantFee","baseFee","priorityFee","block","regularPriority","regularMaxFee","expressPriority","expressMaxFee","instantPriority","instantMaxFee","MAX_GAS_GWEI","cap","regularFee","expressFee","instantFee","_t6","_context8","getNetwork","Number","to","hexlify","toUtf8Bytes","base","mul","Math","floor","gasPriceGwei","express","instant","getBlock","baseFeePerGas","baseFeeGwei","priorityFeeGwei","perCoin","_x8","_buildSignParams","_callee9","_ref8","txBase","_t7","_t8","_t9","_t0","_t1","_t10","_t11","_t12","_context9","currentChain","type","_x9","BtcWallet","cluster","TBtcWallet","BtcWalletOkxm","solanaWeb3","ACCOUNT_LAYOUT","BufferLayout","CLUSTER_ENV","ENV","MainnetBeta","Testnet","Devnet","SolWallet","SolWalletOkx","connection","mintPubkey","tokenAccountAddress","accountInfo","rawBalance","getAssociatedTokenAddress","getAccountInfo","getTokenAccountBalance","_args$amount2","fromAccount","_yield$this$getRecomm","computeUnitLimit","computeUnitPrice","_yield$connection$get","blockhash","_args$amount","fromPubkey","recipientPubkey","fromTokenAccount","recipientTokenAccount","fromTokenBal","mintAccountInfo","parsed","recipientAtaInfo","recipientHasATA","shouldCreateATA","rawTokenAmount","_signedTx","_rawTx","txid","lamports","solParams","rawTx","getRecommendedFees","parseInt","getLatestBlockhash","getParsedAccountInfo","info","createAssociatedAddress","round","payer","from","blockHash","mint","decimal","token2022","fromBase58","sendRawTransaction","skipPreflight","_ref4$cluster","_mintInfo$value","_parsedMint$decimals","_parsedMint$supply","mintAddress","mintInfo","parsedMint","supplyRaw","tokenName","tokenSymbol","tokenLogo","_CLUSTER_ENV$cluster","env","_provider","tokenList","tokenMap","token","supply","TokenListProvider","resolve","filterByChainId","getList","Map","map","item","toBase58","logoURI","console","warn","slice","logoUrl","_getRecommendedFees","sorted","getRecentPrioritizationFees","f","prioritizationFee","sort","b","WalletRegistry","EVM","BTC","SOL","CryptoClientSdk","getWallet","WalletClass"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from './services';
2
+ export * from "./client";
package/dist/index.js ADDED
@@ -0,0 +1,8 @@
1
+
2
+ 'use strict'
3
+
4
+ if (process.env.NODE_ENV === 'production') {
5
+ module.exports = require('./crypto-wallet-sdk.cjs.production.min.js')
6
+ } else {
7
+ module.exports = require('./crypto-wallet-sdk.cjs.development.js')
8
+ }
@@ -0,0 +1 @@
1
+ export * from './wallet';
@@ -0,0 +1,10 @@
1
+ import { DexAPI } from "./../../api/dex";
2
+ import { DexConfig, ChainConfig } from "./../../types";
3
+ declare abstract class BaseWallet {
4
+ config: DexConfig;
5
+ dex: DexAPI;
6
+ constructor(config: DexConfig);
7
+ get currentChain(): ChainConfig;
8
+ generateMnemonic(numWords?: number): Promise<string>;
9
+ }
10
+ export { BaseWallet };
@@ -0,0 +1 @@
1
+ export * from './wallet';
@@ -0,0 +1,8 @@
1
+ import { BaseWallet } from "../base/index";
2
+ import { DexConfig } from "../../types";
3
+ import { IResponse, GenerateWalletPayload } from "./../../types";
4
+ export declare class BtcWallet extends BaseWallet {
5
+ private wallet;
6
+ constructor(config: DexConfig);
7
+ generateWallet({ mnemonic, derivationPath }: GenerateWalletPayload): Promise<IResponse>;
8
+ }
@@ -0,0 +1,2 @@
1
+ export * from './wallet';
2
+ export * from './types';
@@ -0,0 +1,69 @@
1
+ import { ethers } from "ethers";
2
+ export interface GetContract {
3
+ rpcUrl?: string;
4
+ privateKey?: string;
5
+ contractAddress?: string;
6
+ abi?: any[];
7
+ }
8
+ export interface BalancePayload {
9
+ address: string;
10
+ rpcUrl?: string;
11
+ contractAddress?: string;
12
+ }
13
+ export interface TransferPayload {
14
+ recipientAddress: string;
15
+ amount: string | number;
16
+ rpcUrl?: string;
17
+ privateKey: string;
18
+ gasPrice?: string;
19
+ contractAddress?: string;
20
+ nonce?: number;
21
+ data?: string;
22
+ gasLimit?: string | number;
23
+ maxPriorityFeePerGas?: string;
24
+ maxFeePerGas?: string;
25
+ }
26
+ export interface GetTransactionPayload {
27
+ rpcUrl?: string;
28
+ hash: string;
29
+ withReceipt?: boolean;
30
+ }
31
+ export interface ISmartContractCallPayload {
32
+ rpcUrl?: string;
33
+ apiKey?: string;
34
+ contractAddress: string;
35
+ method: string;
36
+ methodType: 'read' | 'write';
37
+ params: any[];
38
+ payment?: any[];
39
+ value?: number;
40
+ contractAbi?: any[];
41
+ gasPrice?: string;
42
+ gasLimit?: string | number;
43
+ feeLimit?: number;
44
+ nonce?: number;
45
+ privateKey?: string;
46
+ }
47
+ export interface SignerPayload {
48
+ args: any;
49
+ nonce: Promise<number> | number | undefined;
50
+ gasFeeData: ethers.FeeData;
51
+ recipientAddress: {
52
+ address: string;
53
+ };
54
+ value: bigint | string;
55
+ contractAddress?: string;
56
+ }
57
+ export interface GetErcTokenInfoPayload {
58
+ rpcUrl: string;
59
+ contractAddress: string;
60
+ cluster?: 'mainnet-beta' | 'testnet' | 'devnet';
61
+ apiKey?: string;
62
+ }
63
+ export interface estimateGasPayload {
64
+ rpcUrl?: string;
65
+ recipientAddress: string;
66
+ cluster?: 'mainnet-beta' | 'testnet' | 'devnet';
67
+ amount: string | number;
68
+ data?: string;
69
+ }
@@ -0,0 +1,24 @@
1
+ import { BaseWallet } from "../base/index";
2
+ import { DexConfig } from "../../types";
3
+ import { GenerateWalletPayload, IResponse } from "./../../types";
4
+ import { GetContract, BalancePayload, TransferPayload, GetTransactionPayload, ISmartContractCallPayload, GetErcTokenInfoPayload, estimateGasPayload } from "./types";
5
+ import { ethers } from "ethers";
6
+ export declare class EvmWallet extends BaseWallet {
7
+ private wallet;
8
+ constructor(config: DexConfig);
9
+ getContract({ contractAddress, rpcUrl, privateKey, abi }: GetContract): Promise<{
10
+ contract: ethers.Contract | undefined;
11
+ signer: ethers.Wallet | undefined;
12
+ gasFeeData: ethers.FeeData;
13
+ nonce: number | undefined;
14
+ providerInstance: ethers.JsonRpcProvider;
15
+ }>;
16
+ generateWallet({ mnemonic, derivationPath }: GenerateWalletPayload): Promise<IResponse>;
17
+ getBalance({ rpcUrl, contractAddress, address }: BalancePayload): Promise<IResponse>;
18
+ transfer({ privateKey, contractAddress, rpcUrl, ...args }: TransferPayload): Promise<IResponse>;
19
+ getTransaction({ hash, rpcUrl, withReceipt }: GetTransactionPayload): Promise<IResponse>;
20
+ getTokenInfo({ contractAddress, rpcUrl }: GetErcTokenInfoPayload): Promise<IResponse>;
21
+ smartContractCall(args: ISmartContractCallPayload): Promise<IResponse>;
22
+ estimateGas({ rpcUrl, recipientAddress, amount, data }: estimateGasPayload): Promise<IResponse>;
23
+ private buildSignParams;
24
+ }
@@ -0,0 +1,4 @@
1
+ export * from './base';
2
+ export * from './evm';
3
+ export * from './btc';
4
+ export * from './sol';
@@ -0,0 +1,2 @@
1
+ export * from './wallet';
2
+ export * from './types';
@@ -0,0 +1,21 @@
1
+ export interface BalanceSolanaPayload {
2
+ address: string;
3
+ rpcUrl?: string;
4
+ contractAddress?: string;
5
+ }
6
+ export interface TransferSolanaPayload {
7
+ recipientAddress: string;
8
+ amount: number;
9
+ rpcUrl?: string;
10
+ privateKey: string;
11
+ contractAddress?: string;
12
+ nonce?: number;
13
+ data?: string;
14
+ gasPrice?: string;
15
+ gasLimit?: number;
16
+ }
17
+ export interface GetSplTokenInfoPayload {
18
+ rpcUrl?: string;
19
+ contractAddress: string;
20
+ cluster?: 'mainnet-beta' | 'testnet' | 'devnet';
21
+ }
@@ -0,0 +1,19 @@
1
+ import { BaseWallet } from "../base/index";
2
+ import { DexConfig } from "../../types";
3
+ import { ENV } from "@solana/spl-token-registry";
4
+ import { IResponse, GenerateWalletPayload } from "./../../types";
5
+ import { BalanceSolanaPayload, TransferSolanaPayload, GetSplTokenInfoPayload } from "./types";
6
+ export declare const ACCOUNT_LAYOUT: any;
7
+ export declare const CLUSTER_ENV: Record<string, ENV>;
8
+ export declare class SolWallet extends BaseWallet {
9
+ private wallet;
10
+ constructor(config: DexConfig);
11
+ generateWallet({ mnemonic, derivationPath }: GenerateWalletPayload): Promise<IResponse>;
12
+ getBalance({ rpcUrl, contractAddress, address }: BalanceSolanaPayload): Promise<IResponse>;
13
+ transfer({ privateKey, contractAddress, rpcUrl, ...args }: TransferSolanaPayload & {
14
+ createAssociatedAddress?: boolean;
15
+ token2022?: boolean;
16
+ }): Promise<IResponse>;
17
+ getTokenInfo({ contractAddress, rpcUrl, cluster }: GetSplTokenInfoPayload): Promise<IResponse>;
18
+ private getRecommendedFees;
19
+ }
@@ -0,0 +1,7 @@
1
+ import { EvmWallet, BtcWallet, SolWallet } from "./index";
2
+ export declare const WalletRegistry: {
3
+ EVM: typeof EvmWallet;
4
+ BTC: typeof BtcWallet;
5
+ SOL: typeof SolWallet;
6
+ };
7
+ export declare type WalletTypes = keyof typeof WalletRegistry;
@@ -0,0 +1,35 @@
1
+ export interface ChainConfig {
2
+ id: string;
3
+ explorer: string;
4
+ defaultSlippage: string;
5
+ maxSlippage: string;
6
+ computeUnits?: number;
7
+ confirmationTimeout?: number;
8
+ maxRetries?: number;
9
+ dexContractAddress?: string;
10
+ }
11
+ export interface NetworkConfigs {
12
+ [chainId: string]: ChainConfig;
13
+ }
14
+ export interface DexConfig {
15
+ networks?: NetworkConfigs;
16
+ timeout?: number;
17
+ chainId?: string;
18
+ cluster?: string;
19
+ rpcUrl?: string;
20
+ }
21
+ export interface IResponse {
22
+ [key: string]: any;
23
+ }
24
+ export interface GenerateWalletPayload {
25
+ mnemonic?: string;
26
+ derivationPath?: string;
27
+ }
28
+ export interface TokenInfo {
29
+ name: string;
30
+ symbol: string;
31
+ address?: string;
32
+ decimals: number;
33
+ totalSupply: string;
34
+ logoUrl?: string;
35
+ }
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Convert human-readable amount → raw integer by decimals
3
+ * ex: 0.1 USDC (decimals 6) => 100000
4
+ */
5
+ export declare const parseAmount: (amount: string | number, decimals: number) => bigint;
6
+ /**
7
+ * Convert raw amount → human-readable number by decimals
8
+ * ex: 100000 (decimals 6) => 0.1
9
+ */
10
+ export declare const formatAmount: (raw: bigint | string, decimals: number) => number;
@@ -0,0 +1,4 @@
1
+ export declare const parseBTC: (v: string | number) => bigint;
2
+ export declare const formatBTC: (v: bigint | string) => number;
3
+ export declare const parseSatoshi: (v: string | number) => bigint;
4
+ export declare const formatSatoshi: (v: bigint | string) => number;
@@ -0,0 +1,6 @@
1
+ export declare const parseEther: (v: string | number) => bigint;
2
+ export declare const formatEther: (v: bigint | string) => number;
3
+ export declare const parseGwei: (v: string | number) => bigint;
4
+ export declare const formatGwei: (v: bigint | string) => number;
5
+ export declare const parseWei: (v: string | number) => bigint;
6
+ export declare const formatWei: (v: bigint | string) => number;
@@ -0,0 +1,5 @@
1
+ export * from "./response";
2
+ export * from "./amount";
3
+ export * from "./evmUnits";
4
+ export * from "./btcUnits";
5
+ export * from "./solUnits";
@@ -0,0 +1,2 @@
1
+ import { IResponse } from './../types';
2
+ export declare const successResponse: (args: IResponse) => IResponse;
@@ -0,0 +1,4 @@
1
+ export declare const parseSOL: (v: string | number) => bigint;
2
+ export declare const formatSOL: (v: bigint | string) => number;
3
+ export declare const parseLamport: (v: string | number) => bigint;
4
+ export declare const formatLamport: (v: bigint | string) => number;
package/package.json ADDED
@@ -0,0 +1,72 @@
1
+ {
2
+ "name": "@reactmore/crypto-wallet-sdk",
3
+ "version": "1.2.0",
4
+ "description": "Multi-chain crypto wallet SDK for EVM, Bitcoin, Solana, and more",
5
+ "author": "Reactmore",
6
+ "license": "ISC",
7
+ "main": "dist/index.js",
8
+ "types": "dist/index.d.ts",
9
+ "module": "dist/crypto-wallet-sdk.esm.js",
10
+ "files": [
11
+ "dist"
12
+ ],
13
+ "publishConfig": {
14
+ "access": "public"
15
+ },
16
+ "scripts": {
17
+ "start": "tsdx watch",
18
+ "build": "tsdx build",
19
+ "test": "tsdx test",
20
+ "test:smoke": "tsdx test --testPathPattern=smoke",
21
+ "test:btc": "tsdx test --testPathPattern=bitcoin",
22
+ "test:eth": "tsdx test --testPathPattern=ethereum",
23
+ "test:sol": "tsdx test --testPathPattern=solana",
24
+ "test:tron": "tsdx test --testPathPattern=tron",
25
+ "test:waves": "tsdx test --testPathPattern=waves",
26
+ "test:sui": "tsdx test --testPathPattern=sui",
27
+ "test:ton": "tsdx test --testPathPattern=ton",
28
+ "lint": "tsdx lint",
29
+ "prepare": "tsdx build",
30
+ "size": "size-limit",
31
+ "analyze": "size-limit --why"
32
+ },
33
+ "husky": {
34
+ "hooks": {
35
+ "pre-commit": "tsdx lint"
36
+ }
37
+ },
38
+ "size-limit": [
39
+ {
40
+ "path": "dist/crypto-wallet-sdk.cjs.production.min.js",
41
+ "limit": "500 KB"
42
+ },
43
+ {
44
+ "path": "dist/crypto-wallet-sdk.esm.js",
45
+ "limit": "500 KB"
46
+ }
47
+ ],
48
+ "devDependencies": {
49
+ "@types/jest": "^29.0.0",
50
+ "baseline-browser-mapping": "^2.9.19",
51
+ "eslint": "^8.0.0",
52
+ "husky": "^7.0.4",
53
+ "jest": "^29.0.0",
54
+ "ts-jest": "^29.0.0",
55
+ "tsdx": "^0.14.1",
56
+ "tslib": "^2.3.1",
57
+ "typescript": "^5.0.0"
58
+ },
59
+ "dependencies": {
60
+ "@metaplex-foundation/js": "^0.20.1",
61
+ "@okxweb3/coin-base": "^1.1.6",
62
+ "@okxweb3/coin-bitcoin": "^1.2.1",
63
+ "@okxweb3/coin-ethereum": "^1.1.2",
64
+ "@okxweb3/coin-solana": "^1.1.0",
65
+ "@okxweb3/crypto-lib": "^1.0.13",
66
+ "@solana/spl-token": "^0.4.14",
67
+ "@solana/spl-token-registry": "^0.2.4574",
68
+ "@solana/web3.js": "^1.98.4",
69
+ "buffer-layout": "^1.2.2",
70
+ "ethers": "^6.15.0"
71
+ }
72
+ }