@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.
- package/LICENSE +21 -0
- package/README.md +255 -0
- package/dist/api/dex.d.ts +7 -0
- package/dist/client/index.d.ts +14 -0
- package/dist/crypto-wallet-sdk.cjs.development.js +1962 -0
- package/dist/crypto-wallet-sdk.cjs.development.js.map +1 -0
- package/dist/crypto-wallet-sdk.cjs.production.min.js +2 -0
- package/dist/crypto-wallet-sdk.cjs.production.min.js.map +1 -0
- package/dist/crypto-wallet-sdk.esm.js +1950 -0
- package/dist/crypto-wallet-sdk.esm.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +8 -0
- package/dist/services/base/index.d.ts +1 -0
- package/dist/services/base/wallet.d.ts +10 -0
- package/dist/services/btc/index.d.ts +1 -0
- package/dist/services/btc/wallet.d.ts +8 -0
- package/dist/services/evm/index.d.ts +2 -0
- package/dist/services/evm/types.d.ts +69 -0
- package/dist/services/evm/wallet.d.ts +24 -0
- package/dist/services/index.d.ts +4 -0
- package/dist/services/sol/index.d.ts +2 -0
- package/dist/services/sol/types.d.ts +21 -0
- package/dist/services/sol/wallet.d.ts +19 -0
- package/dist/services/wallet-registry.d.ts +7 -0
- package/dist/types/index.d.ts +35 -0
- package/dist/utils/amount.d.ts +10 -0
- package/dist/utils/btcUnits.d.ts +4 -0
- package/dist/utils/evmUnits.d.ts +6 -0
- package/dist/utils/index.d.ts +5 -0
- package/dist/utils/response.d.ts +2 -0
- package/dist/utils/solUnits.d.ts +4 -0
- package/package.json +72 -0
|
@@ -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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"}
|
package/dist/index.d.ts
ADDED
package/dist/index.js
ADDED
|
@@ -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,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,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,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,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;
|
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
|
+
}
|