@reactmore/crypto-wallet-sdk 1.2.0 → 1.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/crypto-wallet-sdk.cjs.development.js +123 -105
- package/dist/crypto-wallet-sdk.cjs.development.js.map +1 -1
- package/dist/crypto-wallet-sdk.cjs.production.min.js +1 -1
- package/dist/crypto-wallet-sdk.cjs.production.min.js.map +1 -1
- package/dist/crypto-wallet-sdk.esm.js +123 -105
- package/dist/crypto-wallet-sdk.esm.js.map +1 -1
- package/dist/services/evm/types.d.ts +7 -8
- package/dist/services/evm/wallet.d.ts +1 -1
- package/dist/types/index.d.ts +1 -0
- package/package.json +72 -72
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e,t=require("@okxweb3/crypto-lib"),r=require("@okxweb3/coin-ethereum"),n=(e=require("bignumber.js"))&&"object"==typeof e&&"default"in e?e.default:e,a=require("ethers"),i=require("@okxweb3/coin-bitcoin"),o=require("@okxweb3/coin-solana"),s=require("@solana/web3.js"),c=require("@solana/spl-token"),u=require("@solana/spl-token-registry"),l=require("buffer-layout");function p(e,t,r,n,a,i,o){try{var s=e[i](o),c=s.value}catch(e){return void r(e)}s.done?t(c):Promise.resolve(c).then(n,a)}function m(e){return function(){var t=this,r=arguments;return new Promise((function(n,a){var i=e.apply(t,r);function o(e){p(i,n,a,o,s,"next",e)}function s(e){p(i,n,a,o,s,"throw",e)}o(void 0)}))}}function d(){return(d=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)({}).hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(null,arguments)}function f(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,function(e,t){(Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e})(e,t)}(e,t)}function g(e,t){if(null==e)return{};var r={};for(var n in e)if({}.hasOwnProperty.call(e,n)){if(-1!==t.indexOf(n))continue;r[n]=e[n]}return r}function h(){var e,t,r="function"==typeof Symbol?Symbol:{},n=r.iterator||"@@iterator",a=r.toStringTag||"@@toStringTag";function i(r,n,a,i){var c=Object.create((n&&n.prototype instanceof s?n:s).prototype);return v(c,"_invoke",function(r,n,a){var i,s,c,u=0,l=a||[],p=!1,m={p:0,n:0,v:e,a:d,f:d.bind(e,4),d:function(t,r){return i=t,s=0,c=e,m.n=r,o}};function d(r,n){for(s=r,c=n,t=0;!p&&u&&!a&&t<l.length;t++){var a,i=l[t],d=m.p,f=i[2];r>3?(a=f===n)&&(c=i[(s=i[4])?5:(s=3,3)],i[4]=i[5]=e):i[0]<=d&&((a=r<2&&d<i[1])?(s=0,m.v=n,m.n=i[1]):d<f&&(a=r<3||i[0]>n||n>f)&&(i[4]=r,i[5]=n,m.n=f,s=0))}if(a||r>1)return o;throw p=!0,n}return function(a,l,f){if(u>1)throw TypeError("Generator is already running");for(p&&1===l&&d(l,f),s=l,c=f;(t=s<2?e:c)||!p;){i||(s?s<3?(s>1&&(m.n=-1),d(s,c)):m.n=c:m.v=c);try{if(u=2,i){if(s||(a="next"),t=i[a]){if(!(t=t.call(i,c)))throw TypeError("iterator result is not an object");if(!t.done)return t;c=t.value,s<2&&(s=0)}else 1===s&&(t=i.return)&&t.call(i),s<2&&(c=TypeError("The iterator does not provide a '"+a+"' method"),s=1);i=e}else if((t=(p=m.n<0)?c:r.call(n,m))!==o)break}catch(t){i=e,s=1,c=t}finally{u=1}}return{value:t,done:p}}}(r,a,i),!0),c}var o={};function s(){}function c(){}function u(){}t=Object.getPrototypeOf;var l=[][n]?t(t([][n]())):(v(t={},n,(function(){return this})),t),p=u.prototype=s.prototype=Object.create(l);function m(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,u):(e.__proto__=u,v(e,a,"GeneratorFunction")),e.prototype=Object.create(p),e}return c.prototype=u,v(p,"constructor",u),v(u,"constructor",c),c.displayName="GeneratorFunction",v(u,a,"GeneratorFunction"),v(p),v(p,a,"Generator"),v(p,n,(function(){return this})),v(p,"toString",(function(){return"[object Generator]"})),(h=function(){return{w:i,m:m}})()}function v(e,t,r,n){var a=Object.defineProperty;try{a({},"",{})}catch(e){a=0}(v=function(e,t,r,n){function i(t,r){v(e,t,(function(e){return this._invoke(t,r,e)}))}t?a?a(e,t,{value:r,enumerable:!n,configurable:!n,writable:!n}):e[t]=r:(i("next",0),i("throw",1),i("return",2))})(e,t,r,n)}function y(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,"string");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:t+""}var x=function(){function e(e){this.config=e,this.defaultNetworkConfigs={1:{id:"1",explorer:"https://etherscan.io/",defaultSlippage:"0.005",maxSlippage:"1",confirmationTimeout:6e4,maxRetries:3},11155111:{id:"11155111",explorer:"https://sepolia.etherscan.io/",defaultSlippage:"0.005",maxSlippage:"1",confirmationTimeout:6e4,maxRetries:3},56:{id:"56",explorer:"https://bscscan.com/",defaultSlippage:"0.005",maxSlippage:"1",confirmationTimeout:6e4,maxRetries:3},97:{id:"97",explorer:"https://testnet.bscscan.com/",defaultSlippage:"0.005",maxSlippage:"1",confirmationTimeout:6e4,maxRetries:3},501:{id:"501",explorer:"https://web3.okx.com/explorer/sol/tx",defaultSlippage:"0.005",maxSlippage:"1",computeUnits:3e5,confirmationTimeout:6e4,maxRetries:3},784:{id:"784",explorer:"https://web3.okx.com/explorer/sui/tx",defaultSlippage:"0.005",maxSlippage:"1",confirmationTimeout:6e4,maxRetries:3},43114:{id:"43114",explorer:"https://web3.okx.com/explorer/avax/tx",defaultSlippage:"0.005",maxSlippage:"1",confirmationTimeout:6e4,maxRetries:3},137:{id:"137",explorer:"https://web3.okx.com/explorer/polygon/tx",defaultSlippage:"0.005",maxSlippage:"1",confirmationTimeout:6e4,maxRetries:3},80002:{id:"80002",explorer:"https://amoy.polygonscan.com",defaultSlippage:"0.005",maxSlippage:"1",confirmationTimeout:6e4,maxRetries:3},146:{id:"146",explorer:"https://web3.okx.com/explorer/sonic/tx",defaultSlippage:"0.005",maxSlippage:"1",confirmationTimeout:6e4,maxRetries:3},8453:{id:"8453",explorer:"https://web3.okx.com/explorer/base/tx",defaultSlippage:"0.005",maxSlippage:"1",confirmationTimeout:6e4,maxRetries:3},196:{id:"196",explorer:"https://web3.okx.com/explorer/x-layer/tx",defaultSlippage:"0.005",maxSlippage:"1",confirmationTimeout:6e4,maxRetries:3},10:{id:"10",explorer:"https://web3.okx.com/explorer/optimism/tx",defaultSlippage:"0.005",maxSlippage:"1",confirmationTimeout:6e4,maxRetries:3},42161:{id:"42161",explorer:"https://web3.okx.com/explorer/arbitrum/tx",defaultSlippage:"0.005",maxSlippage:"1",confirmationTimeout:6e4,maxRetries:3},100:{id:"100",explorer:"https://web3.okx.com/explorer/gnosis/tx",defaultSlippage:"0.005",maxSlippage:"1",confirmationTimeout:6e4,maxRetries:3},169:{id:"169",explorer:"https://web3.okx.com/explorer/manta/tx",defaultSlippage:"0.005",maxSlippage:"1",confirmationTimeout:6e4,maxRetries:3},250:{id:"250",explorer:"https://web3.okx.com/explorer/ftm/tx",defaultSlippage:"0.005",maxSlippage:"1",confirmationTimeout:6e4,maxRetries:3},324:{id:"324",explorer:"https://web3.okx.com/explorer/zksync/tx",defaultSlippage:"0.005",maxSlippage:"1",confirmationTimeout:6e4,maxRetries:3},1101:{id:"1101",explorer:"https://web3.okx.com/explorer/polygon-zkevm/tx",defaultSlippage:"0.005",maxSlippage:"1",confirmationTimeout:6e4,maxRetries:3},5e3:{id:"5000",explorer:"https://web3.okx.com/explorer/mantle/tx",defaultSlippage:"0.005",maxSlippage:"1",confirmationTimeout:6e4,maxRetries:3},25:{id:"25",explorer:"https://cronoscan.com/tx",defaultSlippage:"0.005",maxSlippage:"1",confirmationTimeout:6e4,maxRetries:3},534352:{id:"534352",explorer:"https://web3.okx.com/explorer/scroll/tx",defaultSlippage:"0.005",maxSlippage:"1",confirmationTimeout:6e4,maxRetries:3},59144:{id:"59144",explorer:"https://web3.okx.com/explorer/linea/tx",defaultSlippage:"0.005",maxSlippage:"1",confirmationTimeout:6e4,maxRetries:3},1088:{id:"1088",explorer:"https://web3.okx.com/explorer/metis/tx",defaultSlippage:"0.005",maxSlippage:"1",confirmationTimeout:6e4,maxRetries:3},1030:{id:"1030",explorer:"https://www.confluxscan.io/tx",defaultSlippage:"0.005",maxSlippage:"1",confirmationTimeout:6e4,maxRetries:3},81457:{id:"81457",explorer:"https://web3.okx.com/explorer/blast/tx",defaultSlippage:"0.005",maxSlippage:"1",confirmationTimeout:6e4,maxRetries:3},7e3:{id:"7000",explorer:"https://explorer.zetachain.com/tx",defaultSlippage:"0.005",maxSlippage:"1",confirmationTimeout:6e4,maxRetries:3},66:{id:"66",explorer:"https://www.okx.com/web3/explorer/oktc/tx",defaultSlippage:"0.005",maxSlippage:"1",confirmationTimeout:6e4,maxRetries:3}},this.config.networks=d({},this.defaultNetworkConfigs,e.networks||{})}return e.prototype.getNetworkConfig=function(e){var t,r=null==(t=this.config.networks)?void 0:t[e];if(!r)throw new Error("Network configuration not found for chain "+e);return r},e}(),b=function(){function e(e){this.config=d({timeout:3e4},e),this.dex=new x(this.config)}var r,n;return e.prototype.generateMnemonic=function(){var e=m(h().m((function e(r){return h().w((function(e){for(;;)switch(e.n){case 0:return void 0===r&&(r=12),e.a(2,t.bip39.generateMnemonic(r/3*32))}}),e)})));return function(t){return e.apply(this,arguments)}}(),r=e,(n=[{key:"currentChain",get:function(){if(!this.config.chainId)throw new Error("chainId not set in config");return this.dex.getNetworkConfig(this.config.chainId)}}])&&function(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,y(n.key),n)}}(r.prototype,n),Object.defineProperty(r,"prototype",{writable:!1}),r}(),w=function(e,t){var r=new n(e),a=new n(10).pow(t);return BigInt(r.times(a).toFixed(0))},P=function(e,t){var r=new n(e.toString()),a=new n(10).pow(t);return r.dividedBy(a).toNumber()},k=function(e){return w(e,18)},S=function(e){return P(e,18)},T=function(e){return w(e,9)},A=function(e){return P(e,9)},F=[{constant:!0,inputs:[],name:"name",outputs:[{name:"",type:"string"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"_spender",type:"address"},{name:"_value",type:"uint256"}],name:"approve",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"totalSupply",outputs:[{name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"_from",type:"address"},{name:"_to",type:"address"},{name:"_value",type:"uint256"}],name:"transferFrom",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"decimals",outputs:[{name:"",type:"uint8"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{name:"_owner",type:"address"}],name:"balanceOf",outputs:[{name:"balance",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"symbol",outputs:[{name:"",type:"string"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"_to",type:"address"},{name:"_value",type:"uint256"}],name:"transfer",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[{name:"_owner",type:"address"},{name:"_spender",type:"address"}],name:"allowance",outputs:[{name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{payable:!0,stateMutability:"payable",type:"fallback"},{anonymous:!1,inputs:[{indexed:!0,name:"owner",type:"address"},{indexed:!0,name:"spender",type:"address"},{indexed:!1,name:"value",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"from",type:"address"},{indexed:!0,name:"to",type:"address"},{indexed:!1,name:"value",type:"uint256"}],name:"Transfer",type:"event"}],U=["privateKey","contractAddress","rpcUrl"],G=function(e){return new a.ethers.JsonRpcProvider(e)},R=function(e){function n(t){var n;return(n=e.call(this,t)||this).wallet=new r.EthWallet,n}f(n,e);var i=n.prototype;return i.getContract=function(){var e=m(h().m((function e(t){var r,n,i,o,s,c,u,l,p,m;return h().w((function(e){for(;;)switch(e.n){case 0:if(r=t.contractAddress,i=t.privateKey,o=t.abi,n=t.rpcUrl){e.n=1;break}throw new Error("RPC URL is required");case 1:return s=G(null!=n?n:this.config.rpcUrl),e.n=2,s.getFeeData();case 2:if(c=e.v,!i){e.n=5;break}return p=new a.ethers.Wallet(i,s),m=s,e.n=3,p.getAddress();case 3:return e.n=4,m.getTransactionCount.call(m,e.v,"pending");case 4:u=e.v;case 5:if(!r){e.n=7;break}return l=new a.ethers.Contract(r,o||F,p||s),e.n=6,s.getCode(r);case 6:if("0x"!==e.v){e.n=7;break}throw new Error("Address is not a contract");case 7:return e.a(2,{contract:l,signer:p,gasFeeData:c,nonce:u,providerInstance:s})}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),i.generateWallet=function(){var e=m(h().m((function e(t){var r,n,a,i,o,s;return h().w((function(e){for(;;)switch(e.n){case 0:if(n=t.derivationPath||"m/44'/60'/0'/0/0",null==(r=t.mnemonic)){e.n=1;break}s=r,e.n=3;break;case 1:return e.n=2,this.generateMnemonic(12);case 2:s=e.v;case 3:return a=s,e.n=4,this.wallet.getDerivedPrivateKey({mnemonic:a,hdPath:n});case 4:return i=e.v,e.n=5,this.wallet.getNewAddress({privateKey:i});case 5:return e.a(2,{address:(o=e.v).address,publicKey:o.publicKey,privateKey:i})}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),i.getBalance=function(){var e=m(h().m((function e(t){var r,n,a,i,o,s,c,u,l;return h().w((function(e){for(;;)switch(e.n){case 0:return r=t.rpcUrl,n=t.contractAddress,a=t.address,e.n=1,this.getContract({rpcUrl:null!=r?r:this.config.rpcUrl,contractAddress:n});case 1:if(s=(i=e.v).providerInstance,!(o=i.contract)){e.n=4;break}return e.n=2,o.decimals();case 2:return c=e.v,e.n=3,o.balanceOf(a);case 3:return e.a(2,{balance:P((u=e.v).toString(),c),_rawBalance:u.toString(),_decimal:c});case 4:return e.n=5,s.getBalance(a);case 5:return e.a(2,{balance:P((l=e.v).toString(),18),_rawBalance:l.toString(),_decimal:18})}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),i.transfer=function(){var e=m(h().m((function e(t){var r,n,a,i,o,s,c,u,l,p,m,f,v,y,x,b,P,S,T;return h().w((function(e){for(;;)switch(e.n){case 0:return r=t.privateKey,n=t.contractAddress,a=t.rpcUrl,i=g(t,U),e.n=1,this.getContract({rpcUrl:null!=a?a:this.config.rpcUrl,privateKey:r,contractAddress:n});case 1:return s=(o=e.v).contract,c=o.providerInstance,u=o.gasFeeData,l=o.nonce,e.n=2,this.wallet.validAddress({address:i.recipientAddress});case 2:if((p=e.v).isValid){e.n=3;break}throw new Error("address not valid");case 3:if(!i.maxPriorityFeePerGas||!i.maxFeePerGas){e.n=4;break}if(m=BigInt(i.maxPriorityFeePerGas),!(BigInt(i.maxFeePerGas)<m)){e.n=4;break}throw new Error("maxFeePerGas must be >= maxPriorityFeePerGas");case 4:if(!i.gasPrice||!i.maxFeePerGas&&!i.maxPriorityFeePerGas){e.n=5;break}throw new Error("Cannot use gasPrice with EIP-1559 fee fields");case 5:if(!n){e.n=11;break}if(s){e.n=6;break}throw new Error("contract not valid");case 6:return e.n=7,s.decimals();case 7:if(y=e.v,f=w(i.amount.toString(),y),!i.gasLimit){e.n=8;break}T=BigInt(i.gasLimit),e.n=10;break;case 8:return e.n=9,s.transfer.estimateGas(i.recipientAddress,f);case 9:T=e.v;case 10:v=T,e.n=12;break;case 11:f=k(i.amount.toString()),v=i.gasLimit?BigInt(i.gasLimit):21000n;case 12:if(i.gasPrice||i.maxFeePerGas||i.maxPriorityFeePerGas){e.n=17;break}return e.n=13,this.estimateGas({rpcUrl:null!=a?a:this.config.rpcUrl,recipientAddress:i.recipientAddress,amount:i.amount.toString(),data:i.data});case 13:if(x=e.v,v=BigInt(x.gasLimit),"LEGACY"!==x.model){e.n=15;break}if(x.gasPrice){e.n=14;break}throw new Error("LEGACY estimate missing gasPrice");case 14:return i.gasPrice=x.gasPrice,e.a(2,this.transfer(d({privateKey:r,contractAddress:n,rpcUrl:a},i)));case 15:if(null!=(b=x.fees.regular)&&b.maxFeePerGas&&null!=b&&b.maxPriorityFeePerGas){e.n=16;break}throw new Error("EIP1559 estimate missing fee fields");case 16:i.maxFeePerGas=b.maxFeePerGas,i.maxPriorityFeePerGas=b.maxPriorityFeePerGas;case 17:return e.n=18,this.buildSignParams({args:d({},i,{privateKey:r,gasLimit:v}),nonce:l,gasFeeData:u,recipientAddress:p,value:f,contractAddress:n});case 18:return P=e.v,e.n=19,this.wallet.signTransaction(P);case 19:return S=e.v,e.n=20,c.broadcastTransaction(S);case 20:return e.a(2,d({},e.v))}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),i.getTransaction=function(){var e=m(h().m((function e(t){var r,n,i,o,s,c,u,l;return h().w((function(e){for(;;)switch(e.p=e.n){case 0:return r=t.hash,n=t.rpcUrl,i=t.withReceipt,e.n=1,this.getContract({rpcUrl:null!=n?n:this.config.rpcUrl});case 1:if(o=e.v.providerInstance,e.p=2,!i){e.n=4;break}return e.n=3,Promise.all([o.getTransaction(r),o.getTransactionReceipt(r)]);case 3:return u=(s=e.v)[1],l=null!=(c=s[0])&&c.data&&"0x"!==c.data?a.ethers.toUtf8String(c.data):null,e.a(2,{transaction:c,receipt:u,memo:l});case 4:return e.n=5,o.getTransaction(r);case 5:return e.a(2,{transaction:e.v});case 6:throw e.p=6,e.v;case 7:return e.a(2)}}),e,this,[[2,6]])})));return function(t){return e.apply(this,arguments)}}(),i.getTokenInfo=function(){var e=m(h().m((function e(t){var r,n,a,i,o,s;return h().w((function(e){for(;;)switch(e.n){case 0:return r=t.contractAddress,n=t.rpcUrl,e.n=1,this.getContract({contractAddress:r,rpcUrl:null!=n?n:this.config.rpcUrl});case 1:if(!(a=e.v.contract)){e.n=3;break}return e.n=2,Promise.all([a.name(),a.symbol(),a.decimals(),a.totalSupply()]);case 2:return s={name:(i=e.v)[0],symbol:i[1],decimals:o=i[2],totalSupply:P(i[3].toString(),o).toString()},e.a(2,d({},s));case 3:throw new Error("Contract not found");case 4:return e.a(2)}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),i.smartContractCall=function(){var e=m(h().m((function e(t){var r,n,a,i,o,s,c;return h().w((function(e){for(;;)switch(e.p=e.n){case 0:return e.n=1,this.getContract({rpcUrl:null!=(r=t.rpcUrl)?r:this.config.rpcUrl,contractAddress:t.contractAddress,abi:t.contractAbi,privateKey:t.privateKey});case 1:if(a=(n=e.v).contract,i=n.gasFeeData,o=n.nonce,e.p=2,c={},"read"===t.methodType?c={}:"write"===t.methodType&&(c={gasPrice:t.gasPrice?T(t.gasPrice):null==i?void 0:i.gasPrice,nonce:t.nonce||o,value:t.value?k(t.value.toString()):0},t.gasLimit&&(c.gasLimit=t.gasLimit)),!(t.params.length>0)){e.n=4;break}return e.n=3,null==a?void 0:a[t.method].apply(a,t.params.concat([c]));case 3:s=e.v,e.n=6;break;case 4:return e.n=5,null==a?void 0:a[t.method](c);case 5:s=e.v;case 6:return e.a(2,{data:s});case 7:throw e.p=7,e.v;case 8:return e.a(2)}}),e,this,[[2,7]])})));return function(t){return e.apply(this,arguments)}}(),i.estimateGas=function(){var e=m(h().m((function e(t){var r,n,i,o,s,c,u,l,p,m,d,f,g,v,y,x,b,w,P,F,U,G,R,B,I,K,C,E,L,_,O,M;return h().w((function(e){for(;;)switch(e.p=e.n){case 0:return r=t.rpcUrl,n=t.recipientAddress,i=t.amount,o=t.data,e.n=1,this.getContract({rpcUrl:null!=r?r:this.config.rpcUrl});case 1:return s=e.v.providerInstance,e.p=2,e.n=3,s.getNetwork();case 3:return l=Number(e.v.chainId),p={to:n,value:k(i.toString()),data:o?a.ethers.hexlify(a.ethers.toUtf8Bytes(o)):"0x"},e.n=4,Promise.all([s.getFeeData(),s.estimateGas(p)]);case 4:if(f=(m=e.v)[1],g=(d=m[0]).gasPrice,v=d.maxPriorityFeePerGas,y=function(e,t){return e*BigInt(Math.floor(10*t))/10n},null!==d.maxFeePerGas&&null!==v){e.n=5;break}return x=BigInt(null!=g?g:0n),b=f*x,w=f*(110n*x/100n),P=f*(125n*x/100n),e.a(2,{chainId:l,gasLimit:f.toString(),gasPrice:x.toString(),gasPriceGwei:A(x),model:"LEGACY",fees:{regular:S(b),express:S(w),instant:S(P)}});case 5:return e.n=6,s.getBlock("latest");case 6:return F=BigInt(null!=(c=e.v.baseFeePerGas)?c:0n),U=BigInt(null!=(u=d.maxPriorityFeePerGas)?u:T("0.1")),R=F+(G=U),B=y(U,1.2),I=y(F,1.2)+B,K=y(U,1.5),C=y(F,1.5)+K,E=100n*1000000000n,_=f*(L=function(e){return e>E?E:e})(R),O=f*L(I),M=f*L(C),e.a(2,{chainId:l,gasLimit:f.toString(),baseFeeGwei:A(F),priorityFeeGwei:A(U),model:"EIP1559",fees:{regular:{perCoin:S(_),maxPriorityFeePerGas:G.toString(),maxFeePerGas:R.toString()},express:{perCoin:S(O),maxPriorityFeePerGas:B.toString(),maxFeePerGas:I.toString()},instant:{perCoin:S(M),maxPriorityFeePerGas:K.toString(),maxFeePerGas:C.toString()}}});case 7:throw e.p=7,e.v;case 8:return e.a(2)}}),e,this,[[2,7]])})));return function(t){return e.apply(this,arguments)}}(),i.buildSignParams=function(){var e=m(h().m((function e(r){var n,i,o,s,c,u,l,p,m,f,g,v,y;return h().w((function(e){for(;;)switch(e.n){case 0:if(n=r.args,i=r.nonce,o=r.gasFeeData,s=r.contractAddress,u=d,l=r.recipientAddress.address,p=t.BigNumber(r.value.toString()),m=n.data?a.ethers.hexlify(a.ethers.toUtf8Bytes(n.data)):"0x",f=n.nonce){e.n=2;break}return e.n=1,i;case 1:f=e.v;case 2:if(g=f,v=t.BigNumber(n.gasLimit?n.gasLimit:21e3),y=Number(this.currentChain.id),c=u({to:l,value:p,data:m,nonce:g,gasLimit:v,chainId:y},s?{contractAddress:s}:{}),!n.gasPrice){e.n=3;break}return e.a(2,{privateKey:n.privateKey,data:d({},c,{gasPrice:t.BigNumber(T(n.gasPrice).toString()),type:0})});case 3:return e.a(2,{privateKey:n.privateKey,data:d({},c,{type:2,maxPriorityFeePerGas:t.BigNumber(n.maxPriorityFeePerGas?n.maxPriorityFeePerGas:o.maxPriorityFeePerGas.toString()),maxFeePerGas:t.BigNumber(n.maxFeePerGas?n.maxFeePerGas:o.maxFeePerGas.toString())})})}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),n}(b),B=function(e){function t(t){var r;return(r=e.call(this,t)||this).wallet="testnet"===r.config.cluster?new i.TBtcWallet:new i.BtcWallet,r}return f(t,e),t.prototype.generateWallet=function(){var e=m(h().m((function e(t){var r,n,a,i,o,s;return h().w((function(e){for(;;)switch(e.n){case 0:if(n=t.derivationPath||"m/44'/0'/0'/0/0",null==(r=t.mnemonic)){e.n=1;break}s=r,e.n=3;break;case 1:return e.n=2,this.generateMnemonic(12);case 2:s=e.v;case 3:return a=s,e.n=4,this.wallet.getDerivedPrivateKey({mnemonic:a,hdPath:n});case 4:return i=e.v,e.n=5,this.wallet.getNewAddress({privateKey:i});case 5:return e.a(2,{address:(o=e.v).address,publicKey:o.publicKey,privateKey:i})}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),t}(b),I=["privateKey","contractAddress","rpcUrl"],K=function(e){return new s.Connection(e)},C=l.struct([l.blob(32,"mint"),l.blob(32,"owner"),l.nu64("amount"),l.blob(93)]),E={"mainnet-beta":u.ENV.MainnetBeta,testnet:u.ENV.Testnet,devnet:u.ENV.Devnet},L=function(e){function r(t){var r;return(r=e.call(this,t)||this).wallet=new o.SolWallet,r}f(r,e);var n=r.prototype;return n.generateWallet=function(){var e=m(h().m((function e(t){var r,n,a,i,o,s;return h().w((function(e){for(;;)switch(e.n){case 0:if(n=t.derivationPath||"m/44'/501'/0'/0'",null==(r=t.mnemonic)){e.n=1;break}s=r,e.n=3;break;case 1:return e.n=2,this.generateMnemonic(12);case 2:s=e.v;case 3:return a=s,e.n=4,this.wallet.getDerivedPrivateKey({mnemonic:a,hdPath:n});case 4:return i=e.v,e.n=5,this.wallet.getNewAddress({privateKey:i});case 5:return e.a(2,{address:(o=e.v).address,publicKey:o.publicKey,privateKey:i})}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),n.getBalance=function(){var e=m(h().m((function e(t){var r,n,a,i,o,u,l,p,m,d;return h().w((function(e){for(;;)switch(e.p=e.n){case 0:return n=t.contractAddress,a=t.address,i=K(null!=(r=t.rpcUrl)?r:this.config.rpcUrl),e.p=1,e.n=2,this.wallet.validAddress({address:a});case 2:if((o=e.v).isValid){e.n=3;break}throw new Error("address not valid");case 3:if(u=new s.PublicKey(o.address),!n){e.n=8;break}return l=new s.PublicKey(n),e.n=4,c.getAssociatedTokenAddress(l,u);case 4:return p=e.v,e.n=5,i.getAccountInfo(p);case 5:if(e.v){e.n=6;break}return e.a(2,{balance:"0"});case 6:return e.n=7,i.getTokenAccountBalance(p);case 7:return e.a(2,{balance:P((m=e.v).value.amount,m.value.decimals),_rawBalance:m.value.amount,_decimal:m.value.decimals});case 8:return e.n=9,i.getBalance(u);case 9:return e.a(2,{balance:P((d=e.v).toString(),9),_rawBalance:w(d,9),_decimal:9});case 10:throw e.p=10,e.v;case 11:return e.a(2)}}),e,this,[[1,10]])})));return function(t){return e.apply(this,arguments)}}(),n.transfer=function(){var e=m(h().m((function e(r){var n,a,i,o,u,l,p,m,d,f,v,y,x,b,w,P,k,S,T,A,F,U,G,R,B,C,E,L;return h().w((function(e){for(;;)switch(e.p=e.n){case 0:return n=r.privateKey,a=r.contractAddress,i=r.rpcUrl,o=g(r,I),u=K(null!=i?i:this.config.rpcUrl),e.p=1,e.n=2,this.wallet.validAddress({address:o.recipientAddress});case 2:if((p=e.v).isValid){e.n=3;break}throw new Error("address not valid");case 3:return e.n=4,this.wallet.getNewAddress({privateKey:n});case 4:return m=e.v,e.n=5,this.getRecommendedFees(u);case 5:return f=(d=e.v).computeUnitLimit,v=d.computeUnitPrice,o.gasLimit&&(f=o.gasLimit),o.gasPrice&&(v=parseInt(o.gasPrice,10)),e.n=6,u.getLatestBlockhash();case 6:if(y=e.v.blockhash,!a){e.n=19;break}return b=new s.PublicKey(a),w=new s.PublicKey(m.address),P=new s.PublicKey(p.address),e.n=7,c.getAssociatedTokenAddress(b,w);case 7:return k=e.v,e.n=8,c.getAssociatedTokenAddress(b,P);case 8:return S=e.v,T=0,e.p=9,e.n=10,u.getTokenAccountBalance(k);case 10:T=e.v.value.decimals,e.n=15;break;case 11:return e.p=11,e.p=12,e.n=13,u.getParsedAccountInfo(b);case 13:(A=e.v).value&&A.value.data.parsed&&(T=A.value.data.parsed.info.decimals||0),e.n=15;break;case 14:throw e.p=14,new Error("Failed to determine token decimals for mint "+a);case 15:return e.n=16,u.getAccountInfo(S);case 16:return F=!!e.v,U=!!o.createAssociatedAddress&&!F,G=BigInt(Math.round((null!=(x=o.amount)?x:0)*Math.pow(10,T))),R={privateKey:n,data:{type:"tokenTransfer",payer:m.address,from:m.address,to:p.address,blockHash:y,mint:a,amount:G.toString(),decimal:T,createAssociatedAddress:!!U,token2022:!!o.token2022,computeUnitLimit:f,computeUnitPrice:v}},e.n=17,this.wallet.signTransaction(R);case 17:return B=t.base.fromBase58(e.v),e.n=18,u.sendRawTransaction(B,{skipPreflight:!1,maxRetries:3});case 18:return e.a(2,{hash:e.v});case 19:return C=Math.round((null!=(l=o.amount)?l:0)*s.LAMPORTS_PER_SOL),E={privateKey:n,data:{type:"transfer",payer:m.address,from:m.address,to:p.address,blockHash:y,amount:C,computeUnitLimit:f,computeUnitPrice:v}},e.n=20,this.wallet.signTransaction(E);case 20:return L=t.base.fromBase58(e.v),e.n=21,u.sendRawTransaction(L,{skipPreflight:!1,maxRetries:3});case 21:return e.a(2,{hash:e.v});case 22:throw e.p=22,e.v;case 23:return e.a(2)}}),e,this,[[12,14],[9,11],[1,22]])})));return function(t){return e.apply(this,arguments)}}(),n.getTokenInfo=function(){var e=m(h().m((function e(t){var r,n,a,i,o,c,l,p,m,f,g,v,y,x,b,w,P,k,S,T,A,F;return h().w((function(e){for(;;)switch(e.p=e.n){case 0:return r=t.contractAddress,n=t.rpcUrl,i=void 0===(a=t.cluster)?"mainnet-beta":a,e.p=1,p=K(null!=n?n:this.config.rpcUrl),m=new s.PublicKey(r),e.n=2,p.getParsedAccountInfo(m);case 2:return g=null==(f=e.v)||null==(o=f.value)||null==(o=o.data)||null==(o=o.parsed)?void 0:o.info,v=null!=(c=null==g?void 0:g.decimals)?c:0,y=null!=(l=null==g?void 0:g.supply)?l:"0",x="",b="",w="",e.p=3,k=null!=(P=E[i])?P:u.ENV.MainnetBeta,e.n=4,(new u.TokenListProvider).resolve();case 4:S=e.v.filterByChainId(k).getList(),T=new Map(S.map((function(e){return[e.address,e]}))),(A=T.get(m.toBase58()))&&(x=A.name,b=A.symbol,w=A.logoURI||""),e.n=6;break;case 5:e.p=5,console.warn("TokenListProvider failed:",e.v);case 6:return x||(x=r.slice(0,6)+"..."),b||(b="SPL"),F={name:x,symbol:b,address:r,decimals:v,logoUrl:w||"",totalSupply:(Number(y)/Math.pow(10,v)).toString()},e.a(2,d({},F));case 7:throw e.p=7,e.v;case 8:return e.a(2)}}),e,this,[[3,5],[1,7]])})));return function(t){return e.apply(this,arguments)}}(),n.getRecommendedFees=function(){var e=m(h().m((function e(t){var r,n,a,i;return h().w((function(e){for(;;)switch(e.p=e.n){case 0:return r=14e4,n=0,e.p=1,e.n=2,t.getRecentPrioritizationFees();case 2:(a=e.v).length>0&&(i=a.map((function(e){return e.prioritizationFee})).sort((function(e,t){return e-t})),n=i[Math.floor(i.length/2)]||0),e.n=4;break;case 3:e.p=3,console.warn("Failed to fetch prioritization fees, fallback to defaults");case 4:return e.a(2,{computeUnitLimit:r,computeUnitPrice:n})}}),e,null,[[1,3]])})));return function(t){return e.apply(this,arguments)}}(),r}(b),_={EVM:R,BTC:B,SOL:L},O=function(){function e(e){var t=e.chainId,r=e.rpcUrl;this.network=e.network,this.chainId=t,this.rpcUrl=r}return e.prototype.getWallet=function(){return new(0,_[this.network])({chainId:this.chainId,rpcUrl:this.rpcUrl})},e}();exports.ACCOUNT_LAYOUT=C,exports.BaseWallet=b,exports.BtcWallet=B,exports.CLUSTER_ENV=E,exports.CryptoClientSdk=O,exports.EvmWallet=R,exports.SolWallet=L;
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e,t=require("@okxweb3/crypto-lib"),r=require("@okxweb3/coin-ethereum"),n=(e=require("bignumber.js"))&&"object"==typeof e&&"default"in e?e.default:e,a=require("ethers"),i=require("@okxweb3/coin-bitcoin"),o=require("@okxweb3/coin-solana"),s=require("@solana/web3.js"),c=require("@solana/spl-token"),u=require("@solana/spl-token-registry"),l=require("buffer-layout");function p(e,t,r,n,a,i,o){try{var s=e[i](o),c=s.value}catch(e){return void r(e)}s.done?t(c):Promise.resolve(c).then(n,a)}function m(e){return function(){var t=this,r=arguments;return new Promise((function(n,a){var i=e.apply(t,r);function o(e){p(i,n,a,o,s,"next",e)}function s(e){p(i,n,a,o,s,"throw",e)}o(void 0)}))}}function d(){return(d=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)({}).hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(null,arguments)}function f(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,function(e,t){(Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e})(e,t)}(e,t)}function g(e,t){if(null==e)return{};var r={};for(var n in e)if({}.hasOwnProperty.call(e,n)){if(-1!==t.indexOf(n))continue;r[n]=e[n]}return r}function h(){var e,t,r="function"==typeof Symbol?Symbol:{},n=r.iterator||"@@iterator",a=r.toStringTag||"@@toStringTag";function i(r,n,a,i){var c=Object.create((n&&n.prototype instanceof s?n:s).prototype);return v(c,"_invoke",function(r,n,a){var i,s,c,u=0,l=a||[],p=!1,m={p:0,n:0,v:e,a:d,f:d.bind(e,4),d:function(t,r){return i=t,s=0,c=e,m.n=r,o}};function d(r,n){for(s=r,c=n,t=0;!p&&u&&!a&&t<l.length;t++){var a,i=l[t],d=m.p,f=i[2];r>3?(a=f===n)&&(c=i[(s=i[4])?5:(s=3,3)],i[4]=i[5]=e):i[0]<=d&&((a=r<2&&d<i[1])?(s=0,m.v=n,m.n=i[1]):d<f&&(a=r<3||i[0]>n||n>f)&&(i[4]=r,i[5]=n,m.n=f,s=0))}if(a||r>1)return o;throw p=!0,n}return function(a,l,f){if(u>1)throw TypeError("Generator is already running");for(p&&1===l&&d(l,f),s=l,c=f;(t=s<2?e:c)||!p;){i||(s?s<3?(s>1&&(m.n=-1),d(s,c)):m.n=c:m.v=c);try{if(u=2,i){if(s||(a="next"),t=i[a]){if(!(t=t.call(i,c)))throw TypeError("iterator result is not an object");if(!t.done)return t;c=t.value,s<2&&(s=0)}else 1===s&&(t=i.return)&&t.call(i),s<2&&(c=TypeError("The iterator does not provide a '"+a+"' method"),s=1);i=e}else if((t=(p=m.n<0)?c:r.call(n,m))!==o)break}catch(t){i=e,s=1,c=t}finally{u=1}}return{value:t,done:p}}}(r,a,i),!0),c}var o={};function s(){}function c(){}function u(){}t=Object.getPrototypeOf;var l=[][n]?t(t([][n]())):(v(t={},n,(function(){return this})),t),p=u.prototype=s.prototype=Object.create(l);function m(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,u):(e.__proto__=u,v(e,a,"GeneratorFunction")),e.prototype=Object.create(p),e}return c.prototype=u,v(p,"constructor",u),v(u,"constructor",c),c.displayName="GeneratorFunction",v(u,a,"GeneratorFunction"),v(p),v(p,a,"Generator"),v(p,n,(function(){return this})),v(p,"toString",(function(){return"[object Generator]"})),(h=function(){return{w:i,m:m}})()}function v(e,t,r,n){var a=Object.defineProperty;try{a({},"",{})}catch(e){a=0}(v=function(e,t,r,n){function i(t,r){v(e,t,(function(e){return this._invoke(t,r,e)}))}t?a?a(e,t,{value:r,enumerable:!n,configurable:!n,writable:!n}):e[t]=r:(i("next",0),i("throw",1),i("return",2))})(e,t,r,n)}function x(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,"string");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:t+""}var y=function(){function e(e){this.config=e,this.defaultNetworkConfigs={1:{id:"1",explorer:"https://etherscan.io/",defaultSlippage:"0.005",maxSlippage:"1",confirmationTimeout:6e4,maxRetries:3},11155111:{id:"11155111",explorer:"https://sepolia.etherscan.io/",defaultSlippage:"0.005",maxSlippage:"1",confirmationTimeout:6e4,maxRetries:3},56:{id:"56",explorer:"https://bscscan.com/",defaultSlippage:"0.005",maxSlippage:"1",confirmationTimeout:6e4,maxRetries:3},97:{id:"97",explorer:"https://testnet.bscscan.com/",defaultSlippage:"0.005",maxSlippage:"1",confirmationTimeout:6e4,maxRetries:3},501:{id:"501",explorer:"https://web3.okx.com/explorer/sol/tx",defaultSlippage:"0.005",maxSlippage:"1",computeUnits:3e5,confirmationTimeout:6e4,maxRetries:3},784:{id:"784",explorer:"https://web3.okx.com/explorer/sui/tx",defaultSlippage:"0.005",maxSlippage:"1",confirmationTimeout:6e4,maxRetries:3},43114:{id:"43114",explorer:"https://web3.okx.com/explorer/avax/tx",defaultSlippage:"0.005",maxSlippage:"1",confirmationTimeout:6e4,maxRetries:3},137:{id:"137",explorer:"https://web3.okx.com/explorer/polygon/tx",defaultSlippage:"0.005",maxSlippage:"1",confirmationTimeout:6e4,maxRetries:3},80002:{id:"80002",explorer:"https://amoy.polygonscan.com",defaultSlippage:"0.005",maxSlippage:"1",confirmationTimeout:6e4,maxRetries:3},146:{id:"146",explorer:"https://web3.okx.com/explorer/sonic/tx",defaultSlippage:"0.005",maxSlippage:"1",confirmationTimeout:6e4,maxRetries:3},8453:{id:"8453",explorer:"https://web3.okx.com/explorer/base/tx",defaultSlippage:"0.005",maxSlippage:"1",confirmationTimeout:6e4,maxRetries:3},196:{id:"196",explorer:"https://web3.okx.com/explorer/x-layer/tx",defaultSlippage:"0.005",maxSlippage:"1",confirmationTimeout:6e4,maxRetries:3},10:{id:"10",explorer:"https://web3.okx.com/explorer/optimism/tx",defaultSlippage:"0.005",maxSlippage:"1",confirmationTimeout:6e4,maxRetries:3},42161:{id:"42161",explorer:"https://web3.okx.com/explorer/arbitrum/tx",defaultSlippage:"0.005",maxSlippage:"1",confirmationTimeout:6e4,maxRetries:3},100:{id:"100",explorer:"https://web3.okx.com/explorer/gnosis/tx",defaultSlippage:"0.005",maxSlippage:"1",confirmationTimeout:6e4,maxRetries:3},169:{id:"169",explorer:"https://web3.okx.com/explorer/manta/tx",defaultSlippage:"0.005",maxSlippage:"1",confirmationTimeout:6e4,maxRetries:3},250:{id:"250",explorer:"https://web3.okx.com/explorer/ftm/tx",defaultSlippage:"0.005",maxSlippage:"1",confirmationTimeout:6e4,maxRetries:3},324:{id:"324",explorer:"https://web3.okx.com/explorer/zksync/tx",defaultSlippage:"0.005",maxSlippage:"1",confirmationTimeout:6e4,maxRetries:3},1101:{id:"1101",explorer:"https://web3.okx.com/explorer/polygon-zkevm/tx",defaultSlippage:"0.005",maxSlippage:"1",confirmationTimeout:6e4,maxRetries:3},5e3:{id:"5000",explorer:"https://web3.okx.com/explorer/mantle/tx",defaultSlippage:"0.005",maxSlippage:"1",confirmationTimeout:6e4,maxRetries:3},25:{id:"25",explorer:"https://cronoscan.com/tx",defaultSlippage:"0.005",maxSlippage:"1",confirmationTimeout:6e4,maxRetries:3},534352:{id:"534352",explorer:"https://web3.okx.com/explorer/scroll/tx",defaultSlippage:"0.005",maxSlippage:"1",confirmationTimeout:6e4,maxRetries:3},59144:{id:"59144",explorer:"https://web3.okx.com/explorer/linea/tx",defaultSlippage:"0.005",maxSlippage:"1",confirmationTimeout:6e4,maxRetries:3},1088:{id:"1088",explorer:"https://web3.okx.com/explorer/metis/tx",defaultSlippage:"0.005",maxSlippage:"1",confirmationTimeout:6e4,maxRetries:3},1030:{id:"1030",explorer:"https://www.confluxscan.io/tx",defaultSlippage:"0.005",maxSlippage:"1",confirmationTimeout:6e4,maxRetries:3},81457:{id:"81457",explorer:"https://web3.okx.com/explorer/blast/tx",defaultSlippage:"0.005",maxSlippage:"1",confirmationTimeout:6e4,maxRetries:3},7e3:{id:"7000",explorer:"https://explorer.zetachain.com/tx",defaultSlippage:"0.005",maxSlippage:"1",confirmationTimeout:6e4,maxRetries:3},66:{id:"66",explorer:"https://www.okx.com/web3/explorer/oktc/tx",defaultSlippage:"0.005",maxSlippage:"1",confirmationTimeout:6e4,maxRetries:3}},this.config.networks=d({},this.defaultNetworkConfigs,e.networks||{})}return e.prototype.getNetworkConfig=function(e){var t,r=null==(t=this.config.networks)?void 0:t[e];if(!r)throw new Error("Network configuration not found for chain "+e);return r},e}(),b=function(){function e(e){this.config=d({timeout:3e4},e),this.dex=new y(this.config)}var r,n;return e.prototype.generateMnemonic=function(){var e=m(h().m((function e(r){return h().w((function(e){for(;;)switch(e.n){case 0:return void 0===r&&(r=12),e.a(2,t.bip39.generateMnemonic(r/3*32))}}),e)})));return function(t){return e.apply(this,arguments)}}(),r=e,(n=[{key:"currentChain",get:function(){if(!this.config.chainId)throw new Error("chainId not set in config");return this.dex.getNetworkConfig(this.config.chainId)}}])&&function(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,x(n.key),n)}}(r.prototype,n),Object.defineProperty(r,"prototype",{writable:!1}),r}(),w=function(e,t){var r=new n(e),a=new n(10).pow(t);return BigInt(r.times(a).toFixed(0))},P=function(e,t){var r=new n(e.toString()),a=new n(10).pow(t);return r.dividedBy(a).toNumber()},k=function(e){return w(e,18)},S=function(e){return P(e,18)},T=function(e){return w(e,9)},A=function(e){return P(e,9)},U=[{constant:!0,inputs:[],name:"name",outputs:[{name:"",type:"string"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"_spender",type:"address"},{name:"_value",type:"uint256"}],name:"approve",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"totalSupply",outputs:[{name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"_from",type:"address"},{name:"_to",type:"address"},{name:"_value",type:"uint256"}],name:"transferFrom",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"decimals",outputs:[{name:"",type:"uint8"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{name:"_owner",type:"address"}],name:"balanceOf",outputs:[{name:"balance",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"symbol",outputs:[{name:"",type:"string"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"_to",type:"address"},{name:"_value",type:"uint256"}],name:"transfer",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[{name:"_owner",type:"address"},{name:"_spender",type:"address"}],name:"allowance",outputs:[{name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{payable:!0,stateMutability:"payable",type:"fallback"},{anonymous:!1,inputs:[{indexed:!0,name:"owner",type:"address"},{indexed:!0,name:"spender",type:"address"},{indexed:!1,name:"value",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"from",type:"address"},{indexed:!0,name:"to",type:"address"},{indexed:!1,name:"value",type:"uint256"}],name:"Transfer",type:"event"}],F=["privateKey","contractAddress","rpcUrl"],G=function(e){return new a.ethers.JsonRpcProvider(e)},R=function(e){function n(t){var n;return(n=e.call(this,t)||this).wallet=new r.EthWallet,n}f(n,e);var i=n.prototype;return i.getContract=function(){var e=m(h().m((function e(t){var r,n,i,o,s,c,u,l,p,m;return h().w((function(e){for(;;)switch(e.n){case 0:if(r=t.contractAddress,i=t.privateKey,o=t.abi,n=t.rpcUrl){e.n=1;break}throw new Error("RPC URL is required");case 1:return s=G(null!=n?n:this.config.rpcUrl),e.n=2,s.getFeeData();case 2:if(c=e.v,!i){e.n=5;break}return p=new a.ethers.Wallet(i,s),m=s,e.n=3,p.getAddress();case 3:return e.n=4,m.getTransactionCount.call(m,e.v,"pending");case 4:u=e.v;case 5:if(!r){e.n=7;break}return l=new a.ethers.Contract(r,o||U,p||s),e.n=6,s.getCode(r);case 6:if("0x"!==e.v){e.n=7;break}throw new Error("Address is not a contract");case 7:return e.a(2,{contract:l,signer:p,gasFeeData:c,nonce:u,providerInstance:s})}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),i.generateWallet=function(){var e=m(h().m((function e(t){var r,n,a,i,o;return h().w((function(e){for(;;)switch(e.n){case 0:if(n=t.privateKey,a=t.derivationPath||"m/44'/60'/0'/0/0",!(r=t.mnemonic)||!n){e.n=1;break}throw new Error("Provide either mnemonic or privateKey, not both");case 1:if(!n){e.n=2;break}i=n,e.n=6;break;case 2:if(!r){e.n=4;break}return e.n=3,this.wallet.getDerivedPrivateKey({mnemonic:r,hdPath:a});case 3:i=e.v,e.n=6;break;case 4:return e.n=5,this.wallet.getRandomPrivateKey();case 5:i=e.v;case 6:return e.n=7,this.wallet.getNewAddress({privateKey:i});case 7:return e.a(2,{address:(o=e.v).address,publicKey:o.publicKey,privateKey:i})}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),i.getBalance=function(){var e=m(h().m((function e(t){var r,n,a,i,o,s,c,u,l;return h().w((function(e){for(;;)switch(e.n){case 0:return r=t.rpcUrl,n=t.contractAddress,a=t.address,e.n=1,this.getContract({rpcUrl:null!=r?r:this.config.rpcUrl,contractAddress:n});case 1:if(s=(i=e.v).providerInstance,!(o=i.contract)){e.n=4;break}return e.n=2,o.decimals();case 2:return c=e.v,e.n=3,o.balanceOf(a);case 3:return e.a(2,{balance:P((u=e.v).toString(),c),_rawBalance:u.toString(),_decimal:c});case 4:return e.n=5,s.getBalance(a);case 5:return e.a(2,{balance:P((l=e.v).toString(),18),_rawBalance:l.toString(),_decimal:18})}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),i.transfer=function(){var e=m(h().m((function e(t){var r,n,i,o,s,c,u,l,p,m,f,v,x,y,b,P,S,T,A,U,G,R,B,K,I,C;return h().w((function(e){for(;;)switch(e.n){case 0:return r=t.privateKey,n=t.contractAddress,i=t.rpcUrl,o=g(t,F),e.n=1,this.getContract({rpcUrl:null!=i?i:this.config.rpcUrl,privateKey:r,contractAddress:n});case 1:return c=(s=e.v).contract,u=s.providerInstance,l=s.gasFeeData,p=s.nonce,m=s.signer,e.n=2,this.wallet.validAddress({address:o.recipientAddress});case 2:if(e.v.isValid){e.n=3;break}throw new Error("recipient address not valid");case 3:if(!o.maxPriorityFeePerGas||!o.maxFeePerGas){e.n=4;break}if(f=BigInt(o.maxPriorityFeePerGas),!(BigInt(o.maxFeePerGas)<f)){e.n=4;break}throw new Error("maxFeePerGas must be >= maxPriorityFeePerGas");case 4:if(!o.gasPrice||!o.maxFeePerGas&&!o.maxPriorityFeePerGas){e.n=5;break}throw new Error("Cannot mix gasPrice with EIP-1559 fields");case 5:if(!n){e.n=12;break}if(c){e.n=6;break}throw new Error("contract not valid");case 6:return e.n=7,c.decimals();case 7:if(P=e.v,S=w(o.amount.toString(),P),x=c.interface.encodeFunctionData("transfer",[o.recipientAddress,S]),v=n,y=0n,!o.gasLimit){e.n=8;break}R=BigInt(o.gasLimit),e.n=11;break;case 8:return B=u,e.n=9,m.getAddress();case 9:return K=e.v,I=n,C=x,e.n=10,B.estimateGas.call(B,{from:K,to:I,data:C});case 10:R=e.v;case 11:b=R,e.n=13;break;case 12:v=o.recipientAddress,y=k(o.amount.toString()),x=o.data?a.ethers.hexlify(a.ethers.toUtf8Bytes(o.data)):"0x",b=o.gasLimit?BigInt(o.gasLimit):21000n;case 13:if(o.gasPrice||o.maxFeePerGas||o.maxPriorityFeePerGas||n){e.n=16;break}return e.n=14,this.estimateGas({rpcUrl:null!=i?i:this.config.rpcUrl,recipientAddress:v,amount:o.amount.toString(),data:"0x"!==x?x:void 0});case 14:if(T=e.v,b=BigInt(T.gasLimit),"LEGACY"!==T.model){e.n=15;break}return o.gasPrice=T.gasPrice,e.a(2,this.transfer(d({privateKey:r,contractAddress:n,rpcUrl:i},o)));case 15:o.maxFeePerGas=(A=T.fees.regular).maxFeePerGas,o.maxPriorityFeePerGas=A.maxPriorityFeePerGas;case 16:return e.n=17,this.buildSignParams({privateKey:r,nonce:p,gasFeeData:l,txTo:v,txData:x,txValue:y,gasLimit:b,args:o});case 17:return U=e.v,e.n=18,this.wallet.signTransaction(U);case 18:return G=e.v,e.n=19,u.broadcastTransaction(G);case 19:return e.a(2,d({},e.v))}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),i.getTransaction=function(){var e=m(h().m((function e(t){var r,n,i,o,s,c,u,l;return h().w((function(e){for(;;)switch(e.p=e.n){case 0:return r=t.hash,n=t.rpcUrl,i=t.withReceipt,e.n=1,this.getContract({rpcUrl:null!=n?n:this.config.rpcUrl});case 1:if(o=e.v.providerInstance,e.p=2,!i){e.n=4;break}return e.n=3,Promise.all([o.getTransaction(r),o.getTransactionReceipt(r)]);case 3:return u=(s=e.v)[1],l=null!=(c=s[0])&&c.data&&"0x"!==c.data?a.ethers.toUtf8String(c.data):null,e.a(2,{transaction:c,receipt:u,memo:l});case 4:return e.n=5,o.getTransaction(r);case 5:return e.a(2,{transaction:e.v});case 6:throw e.p=6,e.v;case 7:return e.a(2)}}),e,this,[[2,6]])})));return function(t){return e.apply(this,arguments)}}(),i.getTokenInfo=function(){var e=m(h().m((function e(t){var r,n,a,i,o,s;return h().w((function(e){for(;;)switch(e.n){case 0:return r=t.contractAddress,n=t.rpcUrl,e.n=1,this.getContract({contractAddress:r,rpcUrl:null!=n?n:this.config.rpcUrl});case 1:if(!(a=e.v.contract)){e.n=3;break}return e.n=2,Promise.all([a.name(),a.symbol(),a.decimals(),a.totalSupply()]);case 2:return s={name:(i=e.v)[0],symbol:i[1],decimals:o=i[2],totalSupply:P(i[3].toString(),o).toString()},e.a(2,d({},s));case 3:throw new Error("Contract not found");case 4:return e.a(2)}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),i.smartContractCall=function(){var e=m(h().m((function e(t){var r,n,a,i,o,s,c;return h().w((function(e){for(;;)switch(e.p=e.n){case 0:return e.n=1,this.getContract({rpcUrl:null!=(r=t.rpcUrl)?r:this.config.rpcUrl,contractAddress:t.contractAddress,abi:t.contractAbi,privateKey:t.privateKey});case 1:if(a=(n=e.v).contract,i=n.gasFeeData,o=n.nonce,e.p=2,c={},"read"===t.methodType?c={}:"write"===t.methodType&&(c={gasPrice:t.gasPrice?T(t.gasPrice):null==i?void 0:i.gasPrice,nonce:t.nonce||o,value:t.value?k(t.value.toString()):0},t.gasLimit&&(c.gasLimit=t.gasLimit)),!(t.params.length>0)){e.n=4;break}return e.n=3,null==a?void 0:a[t.method].apply(a,t.params.concat([c]));case 3:s=e.v,e.n=6;break;case 4:return e.n=5,null==a?void 0:a[t.method](c);case 5:s=e.v;case 6:return e.a(2,{data:s});case 7:throw e.p=7,e.v;case 8:return e.a(2)}}),e,this,[[2,7]])})));return function(t){return e.apply(this,arguments)}}(),i.estimateGas=function(){var e=m(h().m((function e(t){var r,n,i,o,s,c,u,l,p,m,d,f,g,v,x,y,b,w,P,U,F,G,R,B,K,I,C,_,L,E,O,M;return h().w((function(e){for(;;)switch(e.p=e.n){case 0:return r=t.rpcUrl,n=t.recipientAddress,i=t.amount,o=t.data,e.n=1,this.getContract({rpcUrl:null!=r?r:this.config.rpcUrl});case 1:return s=e.v.providerInstance,e.p=2,e.n=3,s.getNetwork();case 3:return l=Number(e.v.chainId),p={to:n,value:k(i.toString()),data:o?a.ethers.hexlify(a.ethers.toUtf8Bytes(o)):"0x"},e.n=4,Promise.all([s.getFeeData(),s.estimateGas(p)]);case 4:if(f=(m=e.v)[1],g=(d=m[0]).gasPrice,v=d.maxPriorityFeePerGas,x=function(e,t){return e*BigInt(Math.floor(10*t))/10n},null!==d.maxFeePerGas&&null!==v){e.n=5;break}return y=BigInt(null!=g?g:0n),b=f*y,w=f*(110n*y/100n),P=f*(125n*y/100n),e.a(2,{chainId:l,gasLimit:f.toString(),gasPrice:y.toString(),gasPriceGwei:A(y),model:"LEGACY",fees:{regular:S(b),express:S(w),instant:S(P)}});case 5:return e.n=6,s.getBlock("latest");case 6:return U=BigInt(null!=(c=e.v.baseFeePerGas)?c:0n),F=BigInt(null!=(u=d.maxPriorityFeePerGas)?u:T("0.1")),R=U+(G=F),B=x(F,1.2),K=x(U,1.2)+B,I=x(F,1.5),C=x(U,1.5)+I,_=100n*1000000000n,E=f*(L=function(e){return e>_?_:e})(R),O=f*L(K),M=f*L(C),e.a(2,{chainId:l,gasLimit:f.toString(),baseFeeGwei:A(U),priorityFeeGwei:A(F),model:"EIP1559",fees:{regular:{perCoin:S(E),maxPriorityFeePerGas:G.toString(),maxFeePerGas:R.toString()},express:{perCoin:S(O),maxPriorityFeePerGas:B.toString(),maxFeePerGas:K.toString()},instant:{perCoin:S(M),maxPriorityFeePerGas:I.toString(),maxFeePerGas:C.toString()}}});case 7:throw e.p=7,e.v;case 8:return e.a(2)}}),e,this,[[2,7]])})));return function(t){return e.apply(this,arguments)}}(),i.buildSignParams=function(){var e=m(h().m((function e(r){var n,a,i,o,s,c,u,l,p,m,f,g,v,x,y,b,w;return h().w((function(e){for(;;)switch(e.n){case 0:if(o=r.privateKey,s=r.nonce,c=r.gasFeeData,u=r.txData,l=r.gasLimit,p=r.args,f=r.txTo,g=t.BigNumber(r.txValue.toString()),v=u,null==(n=p.nonce)){e.n=1;break}x=n,e.n=3;break;case 1:return e.n=2,s;case 2:x=e.v;case 3:if(y=x,b=t.BigNumber(l.toString()),w=Number(this.currentChain.id),m={to:f,value:g,data:v,nonce:y,gasLimit:b,chainId:w},!p.gasPrice){e.n=4;break}return e.a(2,{privateKey:o,data:d({},m,{gasPrice:t.BigNumber(T(p.gasPrice).toString()),type:0})});case 4:return e.a(2,{privateKey:o,data:d({},m,{type:2,maxPriorityFeePerGas:t.BigNumber(null!=(a=p.maxPriorityFeePerGas)?a:c.maxPriorityFeePerGas.toString()),maxFeePerGas:t.BigNumber(null!=(i=p.maxFeePerGas)?i:c.maxFeePerGas.toString())})})}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),n}(b),B=function(e){function t(t){var r;return(r=e.call(this,t)||this).wallet="testnet"===r.config.cluster?new i.TBtcWallet:new i.BtcWallet,r}return f(t,e),t.prototype.generateWallet=function(){var e=m(h().m((function e(t){var r,n,a,i,o,s;return h().w((function(e){for(;;)switch(e.n){case 0:if(n=t.derivationPath||"m/44'/0'/0'/0/0",null==(r=t.mnemonic)){e.n=1;break}s=r,e.n=3;break;case 1:return e.n=2,this.generateMnemonic(12);case 2:s=e.v;case 3:return a=s,e.n=4,this.wallet.getDerivedPrivateKey({mnemonic:a,hdPath:n});case 4:return i=e.v,e.n=5,this.wallet.getNewAddress({privateKey:i});case 5:return e.a(2,{address:(o=e.v).address,publicKey:o.publicKey,privateKey:i})}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),t}(b),K=["privateKey","contractAddress","rpcUrl"],I=function(e){return new s.Connection(e)},C=l.struct([l.blob(32,"mint"),l.blob(32,"owner"),l.nu64("amount"),l.blob(93)]),_={"mainnet-beta":u.ENV.MainnetBeta,testnet:u.ENV.Testnet,devnet:u.ENV.Devnet},L=function(e){function r(t){var r;return(r=e.call(this,t)||this).wallet=new o.SolWallet,r}f(r,e);var n=r.prototype;return n.generateWallet=function(){var e=m(h().m((function e(t){var r,n,a,i,o,s;return h().w((function(e){for(;;)switch(e.n){case 0:if(n=t.derivationPath||"m/44'/501'/0'/0'",null==(r=t.mnemonic)){e.n=1;break}s=r,e.n=3;break;case 1:return e.n=2,this.generateMnemonic(12);case 2:s=e.v;case 3:return a=s,e.n=4,this.wallet.getDerivedPrivateKey({mnemonic:a,hdPath:n});case 4:return i=e.v,e.n=5,this.wallet.getNewAddress({privateKey:i});case 5:return e.a(2,{address:(o=e.v).address,publicKey:o.publicKey,privateKey:i})}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),n.getBalance=function(){var e=m(h().m((function e(t){var r,n,a,i,o,u,l,p,m,d;return h().w((function(e){for(;;)switch(e.p=e.n){case 0:return n=t.contractAddress,a=t.address,i=I(null!=(r=t.rpcUrl)?r:this.config.rpcUrl),e.p=1,e.n=2,this.wallet.validAddress({address:a});case 2:if((o=e.v).isValid){e.n=3;break}throw new Error("address not valid");case 3:if(u=new s.PublicKey(o.address),!n){e.n=8;break}return l=new s.PublicKey(n),e.n=4,c.getAssociatedTokenAddress(l,u);case 4:return p=e.v,e.n=5,i.getAccountInfo(p);case 5:if(e.v){e.n=6;break}return e.a(2,{balance:"0"});case 6:return e.n=7,i.getTokenAccountBalance(p);case 7:return e.a(2,{balance:P((m=e.v).value.amount,m.value.decimals),_rawBalance:m.value.amount,_decimal:m.value.decimals});case 8:return e.n=9,i.getBalance(u);case 9:return e.a(2,{balance:P((d=e.v).toString(),9),_rawBalance:w(d,9),_decimal:9});case 10:throw e.p=10,e.v;case 11:return e.a(2)}}),e,this,[[1,10]])})));return function(t){return e.apply(this,arguments)}}(),n.transfer=function(){var e=m(h().m((function e(r){var n,a,i,o,u,l,p,m,d,f,v,x,y,b,w,P,k,S,T,A,U,F,G,R,B,C,_,L;return h().w((function(e){for(;;)switch(e.p=e.n){case 0:return n=r.privateKey,a=r.contractAddress,i=r.rpcUrl,o=g(r,K),u=I(null!=i?i:this.config.rpcUrl),e.p=1,e.n=2,this.wallet.validAddress({address:o.recipientAddress});case 2:if((p=e.v).isValid){e.n=3;break}throw new Error("address not valid");case 3:return e.n=4,this.wallet.getNewAddress({privateKey:n});case 4:return m=e.v,e.n=5,this.getRecommendedFees(u);case 5:return f=(d=e.v).computeUnitLimit,v=d.computeUnitPrice,o.gasLimit&&(f=o.gasLimit),o.gasPrice&&(v=parseInt(o.gasPrice,10)),e.n=6,u.getLatestBlockhash();case 6:if(x=e.v.blockhash,!a){e.n=19;break}return b=new s.PublicKey(a),w=new s.PublicKey(m.address),P=new s.PublicKey(p.address),e.n=7,c.getAssociatedTokenAddress(b,w);case 7:return k=e.v,e.n=8,c.getAssociatedTokenAddress(b,P);case 8:return S=e.v,T=0,e.p=9,e.n=10,u.getTokenAccountBalance(k);case 10:T=e.v.value.decimals,e.n=15;break;case 11:return e.p=11,e.p=12,e.n=13,u.getParsedAccountInfo(b);case 13:(A=e.v).value&&A.value.data.parsed&&(T=A.value.data.parsed.info.decimals||0),e.n=15;break;case 14:throw e.p=14,new Error("Failed to determine token decimals for mint "+a);case 15:return e.n=16,u.getAccountInfo(S);case 16:return U=!!e.v,F=!!o.createAssociatedAddress&&!U,G=BigInt(Math.round((null!=(y=o.amount)?y:0)*Math.pow(10,T))),R={privateKey:n,data:{type:"tokenTransfer",payer:m.address,from:m.address,to:p.address,blockHash:x,mint:a,amount:G.toString(),decimal:T,createAssociatedAddress:!!F,token2022:!!o.token2022,computeUnitLimit:f,computeUnitPrice:v}},e.n=17,this.wallet.signTransaction(R);case 17:return B=t.base.fromBase58(e.v),e.n=18,u.sendRawTransaction(B,{skipPreflight:!1,maxRetries:3});case 18:return e.a(2,{hash:e.v});case 19:return C=Math.round((null!=(l=o.amount)?l:0)*s.LAMPORTS_PER_SOL),_={privateKey:n,data:{type:"transfer",payer:m.address,from:m.address,to:p.address,blockHash:x,amount:C,computeUnitLimit:f,computeUnitPrice:v}},e.n=20,this.wallet.signTransaction(_);case 20:return L=t.base.fromBase58(e.v),e.n=21,u.sendRawTransaction(L,{skipPreflight:!1,maxRetries:3});case 21:return e.a(2,{hash:e.v});case 22:throw e.p=22,e.v;case 23:return e.a(2)}}),e,this,[[12,14],[9,11],[1,22]])})));return function(t){return e.apply(this,arguments)}}(),n.getTokenInfo=function(){var e=m(h().m((function e(t){var r,n,a,i,o,c,l,p,m,f,g,v,x,y,b,w,P,k,S,T,A,U;return h().w((function(e){for(;;)switch(e.p=e.n){case 0:return r=t.contractAddress,n=t.rpcUrl,i=void 0===(a=t.cluster)?"mainnet-beta":a,e.p=1,p=I(null!=n?n:this.config.rpcUrl),m=new s.PublicKey(r),e.n=2,p.getParsedAccountInfo(m);case 2:return g=null==(f=e.v)||null==(o=f.value)||null==(o=o.data)||null==(o=o.parsed)?void 0:o.info,v=null!=(c=null==g?void 0:g.decimals)?c:0,x=null!=(l=null==g?void 0:g.supply)?l:"0",y="",b="",w="",e.p=3,k=null!=(P=_[i])?P:u.ENV.MainnetBeta,e.n=4,(new u.TokenListProvider).resolve();case 4:S=e.v.filterByChainId(k).getList(),T=new Map(S.map((function(e){return[e.address,e]}))),(A=T.get(m.toBase58()))&&(y=A.name,b=A.symbol,w=A.logoURI||""),e.n=6;break;case 5:e.p=5,console.warn("TokenListProvider failed:",e.v);case 6:return y||(y=r.slice(0,6)+"..."),b||(b="SPL"),U={name:y,symbol:b,address:r,decimals:v,logoUrl:w||"",totalSupply:(Number(x)/Math.pow(10,v)).toString()},e.a(2,d({},U));case 7:throw e.p=7,e.v;case 8:return e.a(2)}}),e,this,[[3,5],[1,7]])})));return function(t){return e.apply(this,arguments)}}(),n.getRecommendedFees=function(){var e=m(h().m((function e(t){var r,n,a,i;return h().w((function(e){for(;;)switch(e.p=e.n){case 0:return r=14e4,n=0,e.p=1,e.n=2,t.getRecentPrioritizationFees();case 2:(a=e.v).length>0&&(i=a.map((function(e){return e.prioritizationFee})).sort((function(e,t){return e-t})),n=i[Math.floor(i.length/2)]||0),e.n=4;break;case 3:e.p=3,console.warn("Failed to fetch prioritization fees, fallback to defaults");case 4:return e.a(2,{computeUnitLimit:r,computeUnitPrice:n})}}),e,null,[[1,3]])})));return function(t){return e.apply(this,arguments)}}(),r}(b),E={EVM:R,BTC:B,SOL:L},O=function(){function e(e){var t=e.chainId,r=e.rpcUrl;this.network=e.network,this.chainId=t,this.rpcUrl=r}return e.prototype.getWallet=function(){return new(0,E[this.network])({chainId:this.chainId,rpcUrl:this.rpcUrl})},e}();exports.ACCOUNT_LAYOUT=C,exports.BaseWallet=b,exports.BtcWallet=B,exports.CLUSTER_ENV=_,exports.CryptoClientSdk=O,exports.EvmWallet=R,exports.SolWallet=L;
|
|
2
2
|
//# sourceMappingURL=crypto-wallet-sdk.cjs.production.min.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crypto-wallet-sdk.cjs.production.min.js","sources":["../src/api/dex.ts","../src/services/base/wallet.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 }","// 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","this","1","id","explorer","defaultSlippage","maxSlippage","confirmationTimeout","maxRetries","11155111","56","97","501","computeUnits","784","43114","137","80002","146","8453","196","10","42161","100","169","250","324","1101","5000","25","534352","59144","1088","1030","81457","7000","66","networks","_extends","defaultNetworkConfigs","prototype","getNetworkConfig","chainId","networkConfig","_this$config$networks","Error","BaseWallet","timeout","dex","generateMnemonic","_generateMnemonic","_asyncToGenerator","_regenerator","m","_callee","numWords","_context","a","bip39","_x","apply","arguments","key","get","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","EvmWallet","_BaseWallet","_this","call","wallet","EthWalletOkx","_inheritsLoose","_proto","getContract","_getContract","_ref","contractAddress","privateKey","abi","providerInstance","gasFeeData","nonce","contract","signer","_t","w","n","getFeeData","Wallet","getAddress","getTransactionCount","Contract","erc20Abi","getCode","generateWallet","_generateWallet","_callee2","_ref2","mnemonic","hdPath","getMnemonic","derivePrivateKey","_yield$this$wallet$ge","_t2","_context2","derivationPath","getDerivedPrivateKey","getNewAddress","address","publicKey","_x2","getBalance","_getBalance","_callee3","_ref3","_yield$this$getContra","_balance","balance","_context3","balanceOf","_rawBalance","_decimal","_x3","transfer","_transfer","_callee4","_ref4","args","_yield$this$getContra2","recipientAddress","prio","value","gasLimit","estimate","fee","signParams","signedTx","_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$Promise$all","_tx","receipt","memo","_context5","p","Promise","all","getTransactionReceipt","tx","toUtf8String","transaction","_x5","getTokenInfo","_getTokenInfo","_callee6","_ref6","_yield$Promise$all2","_context6","name","symbol","totalSupply","_x6","smartContractCall","_smartContractCall","_callee7","_args$rpcUrl","_yield$this$getContra5","overrides","_context7","contractAbi","methodType","params","length","method","concat","_x7","_estimateGas","_callee8","_ref7","_block$baseFeePerGas","_feeData$maxPriorityF","_yield$Promise$all3","feeData","applyMultiplier","baseGasPrice","_regularFee","_expressFee","_instantFee","baseFee","priorityFee","regularPriority","regularMaxFee","expressPriority","expressMaxFee","instantPriority","instantMaxFee","MAX_GAS_GWEI","cap","regularFee","expressFee","instantFee","_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","mainnet-beta","ENV","MainnetBeta","testnet","Testnet","devnet","Devnet","SolWallet","SolWalletOkx","connection","mintPubkey","tokenAccountAddress","rawBalance","getAssociatedTokenAddress","getAccountInfo","getTokenAccountBalance","_args$amount2","fromAccount","_yield$this$getRecomm","computeUnitLimit","computeUnitPrice","blockhash","_args$amount","fromPubkey","recipientPubkey","fromTokenAccount","recipientTokenAccount","mintAccountInfo","recipientHasATA","shouldCreateATA","rawTokenAmount","_rawTx","lamports","solParams","rawTx","getRecommendedFees","parseInt","getLatestBlockhash","getParsedAccountInfo","parsed","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","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","network","getWallet","WalletClass"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"crypto-wallet-sdk.cjs.production.min.js","sources":["../src/api/dex.ts","../src/services/base/wallet.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 }","// 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, privateKey, derivationPath }: GenerateWalletPayload): Promise<IResponse> {\r\n const hdPath = derivationPath || \"m/44'/60'/0'/0/0\";\r\n\r\n if (mnemonic && privateKey) {\r\n throw new Error(\"Provide either mnemonic or privateKey, not both\");\r\n }\r\n\r\n let derivePrivateKey: string;\r\n\r\n if (privateKey) {\r\n derivePrivateKey = privateKey;\r\n } else if (mnemonic) {\r\n derivePrivateKey = await this.wallet.getDerivedPrivateKey({ mnemonic, hdPath });\r\n } else {\r\n derivePrivateKey = await this.wallet.getRandomPrivateKey();\r\n }\r\n\r\n const { address, publicKey } = await this.wallet.getNewAddress({\r\n privateKey: derivePrivateKey,\r\n });\r\n\r\n return successResponse({\r\n address,\r\n publicKey,\r\n privateKey: derivePrivateKey,\r\n });\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\r\n const { contract, providerInstance, gasFeeData, nonce, signer } = await this.getContract({\r\n rpcUrl: rpcUrl ?? this.config.rpcUrl,\r\n privateKey,\r\n contractAddress,\r\n });\r\n\r\n // =========================\r\n // VALIDATE ADDRESS\r\n // =========================\r\n const recipientAddress = await this.wallet.validAddress({\r\n address: args.recipientAddress\r\n });\r\n\r\n if (!recipientAddress.isValid) {\r\n throw new Error(\"recipient address not valid\");\r\n }\r\n\r\n // =========================\r\n // VALIDATE FEE INPUT\r\n // =========================\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 mix gasPrice with EIP-1559 fields\");\r\n }\r\n\r\n // =========================\r\n // BUILD TX DATA\r\n // =========================\r\n let txTo: string;\r\n let txData: string;\r\n let txValue: bigint;\r\n let gasLimit: bigint;\r\n\r\n if (contractAddress) {\r\n // ===== ERC20 TRANSFER =====\r\n if (!contract) throw new Error(\"contract not valid\");\r\n\r\n const decimals = await contract.decimals();\r\n const amount = parseAmount(args.amount.toString(), decimals);\r\n\r\n txData = contract.interface.encodeFunctionData(\r\n \"transfer\",\r\n [args.recipientAddress, amount]\r\n );\r\n\r\n txTo = contractAddress;\r\n txValue = 0n;\r\n\r\n gasLimit = args.gasLimit\r\n ? BigInt(args.gasLimit)\r\n : await providerInstance.estimateGas({\r\n from: await signer!.getAddress(),\r\n to: contractAddress,\r\n data: txData,\r\n });\r\n\r\n } else {\r\n // ===== NATIVE TRANSFER =====\r\n txTo = args.recipientAddress;\r\n txValue = parseEther(args.amount.toString());\r\n\r\n txData = args.data\r\n ? ethers.hexlify(ethers.toUtf8Bytes(args.data))\r\n : '0x';\r\n\r\n gasLimit = args.gasLimit\r\n ? BigInt(args.gasLimit)\r\n : 21000n;\r\n }\r\n\r\n // =========================\r\n // AUTO ESTIMATE FEE\r\n // =========================\r\n const noFeeProvided =\r\n !args.gasPrice &&\r\n !args.maxFeePerGas &&\r\n !args.maxPriorityFeePerGas;\r\n\r\n if (noFeeProvided && !contractAddress) {\r\n const estimate = await this.estimateGas({\r\n rpcUrl: rpcUrl ?? this.config.rpcUrl,\r\n recipientAddress: txTo,\r\n amount: args.amount.toString(),\r\n data: txData !== '0x' ? txData : undefined,\r\n });\r\n\r\n gasLimit = BigInt(estimate.gasLimit);\r\n\r\n if (estimate.model === \"LEGACY\") {\r\n args.gasPrice = estimate.gasPrice!;\r\n return this.transfer({ privateKey, contractAddress, rpcUrl, ...args });\r\n }\r\n\r\n const fee = estimate.fees.regular;\r\n args.maxFeePerGas = fee.maxFeePerGas;\r\n args.maxPriorityFeePerGas = fee.maxPriorityFeePerGas;\r\n }\r\n\r\n // =========================\r\n // SIGN & SEND\r\n // =========================\r\n const signParams = await this.buildSignParams({\r\n privateKey,\r\n nonce,\r\n gasFeeData,\r\n txTo,\r\n txData,\r\n txValue,\r\n gasLimit,\r\n args\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\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 ? ethers.hexlify(ethers.toUtf8Bytes(data as string)) : '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\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({ privateKey, nonce, gasFeeData, txTo, txData, txValue, gasLimit, args,\r\n }: SignerPayload) {\r\n\r\n const txBase = {\r\n to: txTo,\r\n value: BigNumber(txValue.toString()),\r\n data: txData,\r\n nonce: args.nonce ?? await nonce,\r\n gasLimit: BigNumber(gasLimit.toString()),\r\n chainId: Number(this.currentChain.id),\r\n };\r\n\r\n // =========================\r\n // LEGACY TX\r\n // =========================\r\n if (args.gasPrice) {\r\n return {\r\n privateKey,\r\n data: {\r\n ...txBase,\r\n gasPrice: BigNumber(\r\n parseGwei(args.gasPrice).toString()\r\n ),\r\n type: 0,\r\n },\r\n };\r\n }\r\n\r\n // =========================\r\n // EIP-1559 TX\r\n // =========================\r\n return {\r\n privateKey,\r\n data: {\r\n ...txBase,\r\n type: 2,\r\n maxPriorityFeePerGas: BigNumber(\r\n args.maxPriorityFeePerGas ??\r\n gasFeeData.maxPriorityFeePerGas!.toString()\r\n ),\r\n maxFeePerGas: BigNumber(\r\n args.maxFeePerGas ??\r\n gasFeeData.maxFeePerGas!.toString()\r\n ),\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","this","1","id","explorer","defaultSlippage","maxSlippage","confirmationTimeout","maxRetries","11155111","56","97","501","computeUnits","784","43114","137","80002","146","8453","196","10","42161","100","169","250","324","1101","5000","25","534352","59144","1088","1030","81457","7000","66","networks","_extends","defaultNetworkConfigs","prototype","getNetworkConfig","chainId","networkConfig","_this$config$networks","Error","BaseWallet","timeout","dex","generateMnemonic","_generateMnemonic","_asyncToGenerator","_regenerator","m","_callee","numWords","_context","a","bip39","_x","apply","arguments","key","get","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","EvmWallet","_BaseWallet","_this","call","wallet","EthWalletOkx","_inheritsLoose","_proto","getContract","_getContract","_ref","contractAddress","privateKey","abi","providerInstance","gasFeeData","nonce","contract","signer","_t","w","n","getFeeData","Wallet","getAddress","getTransactionCount","Contract","erc20Abi","getCode","generateWallet","_generateWallet","_callee2","_ref2","mnemonic","hdPath","derivePrivateKey","_yield$this$wallet$ge","_context2","derivationPath","getDerivedPrivateKey","getRandomPrivateKey","getNewAddress","address","publicKey","_x2","getBalance","_getBalance","_callee3","_ref3","_yield$this$getContra","_balance","balance","_context3","balanceOf","_rawBalance","_decimal","_x3","transfer","_transfer","_callee4","_ref4","args","_yield$this$getContra2","prio","txTo","txData","txValue","gasLimit","estimate","fee","signParams","signedTx","_t2","_t3","_t4","_t5","_t6","_context4","_objectWithoutPropertiesLoose","_excluded","validAddress","recipientAddress","isValid","maxPriorityFeePerGas","maxFeePerGas","gasPrice","encodeFunctionData","estimateGas","from","to","data","hexlify","toUtf8Bytes","undefined","model","fees","regular","buildSignParams","signTransaction","broadcastTransaction","_x4","getTransaction","_getTransaction","_callee5","_ref5","hash","withReceipt","_yield$Promise$all","_tx","receipt","memo","_context5","p","Promise","all","getTransactionReceipt","tx","toUtf8String","transaction","_x5","getTokenInfo","_getTokenInfo","_callee6","_ref6","_yield$Promise$all2","_context6","name","symbol","totalSupply","_x6","smartContractCall","_smartContractCall","_callee7","_args$rpcUrl","_yield$this$getContra5","overrides","_context7","contractAbi","methodType","value","params","length","method","concat","_x7","_estimateGas","_callee8","_ref7","_block$baseFeePerGas","_feeData$maxPriorityF","_yield$Promise$all3","feeData","applyMultiplier","baseGasPrice","_regularFee","_expressFee","_instantFee","baseFee","priorityFee","regularPriority","regularMaxFee","expressPriority","expressMaxFee","instantPriority","instantMaxFee","MAX_GAS_GWEI","cap","regularFee","expressFee","instantFee","_context8","getNetwork","Number","base","mul","Math","floor","gasPriceGwei","express","instant","getBlock","baseFeePerGas","baseFeeGwei","priorityFeeGwei","perCoin","_x8","_buildSignParams","_callee9","_ref8","_args$nonce","_args$maxPriorityFeeP","_args$maxFeePerGas","txBase","_t0","_t1","_t10","_t11","_t12","_t13","_t14","_context9","currentChain","type","_x9","BtcWallet","cluster","TBtcWallet","BtcWalletOkxm","getMnemonic","solanaWeb3","ACCOUNT_LAYOUT","BufferLayout","CLUSTER_ENV","mainnet-beta","ENV","MainnetBeta","testnet","Testnet","devnet","Devnet","SolWallet","SolWalletOkx","connection","mintPubkey","tokenAccountAddress","rawBalance","getAssociatedTokenAddress","getAccountInfo","getTokenAccountBalance","_args$amount2","fromAccount","_yield$this$getRecomm","computeUnitLimit","computeUnitPrice","blockhash","_args$amount","fromPubkey","recipientPubkey","fromTokenAccount","recipientTokenAccount","mintAccountInfo","recipientHasATA","shouldCreateATA","rawTokenAmount","_rawTx","lamports","solParams","rawTx","getRecommendedFees","parseInt","getLatestBlockhash","getParsedAccountInfo","parsed","info","createAssociatedAddress","round","payer","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","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","network","getWallet","WalletClass"],"mappings":"skHAOaA,aAwOT,SAAAA,EAA6BC,GAAAC,YAAAD,EAvOZC,2BAAwC,CACrDC,EAAK,CACDC,GAAI,IACJC,SAAU,wBACVC,gBAAiB,QACjBC,YAAa,IACbC,oBAAqB,IACrBC,WAAY,GAEhBC,SAAY,CACRN,GAAI,WACJC,SAAU,gCACVC,gBAAiB,QACjBC,YAAa,IACbC,oBAAqB,IACrBC,WAAY,GAEhBE,GAAM,CACFP,GAAI,KACJC,SAAU,uBACVC,gBAAiB,QACjBC,YAAa,IACbC,oBAAqB,IACrBC,WAAY,GAEhBG,GAAM,CACFR,GAAI,KACJC,SAAU,+BACVC,gBAAiB,QACjBC,YAAa,IACbC,oBAAqB,IACrBC,WAAY,GAEhBI,IAAO,CACHT,GAAI,MACJC,SAAU,uCACVC,gBAAiB,QACjBC,YAAa,IACbO,aAAc,IACdN,oBAAqB,IACrBC,WAAY,GAEhBM,IAAO,CACHX,GAAI,MACJC,SAAU,uCACVC,gBAAiB,QACjBC,YAAa,IACbC,oBAAqB,IACrBC,WAAY,GAEhBO,MAAS,CACLZ,GAAI,QACJC,SAAU,wCACVC,gBAAiB,QACjBC,YAAa,IACbC,oBAAqB,IACrBC,WAAY,GAGhBQ,IAAO,CACHb,GAAI,MACJC,SAAU,2CACVC,gBAAiB,QACjBC,YAAa,IACbC,oBAAqB,IACrBC,WAAY,GAEhBS,MAAS,CACLd,GAAI,QACJC,SAAU,+BACVC,gBAAiB,QACjBC,YAAa,IACbC,oBAAqB,IACrBC,WAAY,GAEhBU,IAAO,CACHf,GAAI,MACJC,SAAU,yCACVC,gBAAiB,QACjBC,YAAa,IACbC,oBAAqB,IACrBC,WAAY,GAEhBW,KAAQ,CACJhB,GAAI,OACJC,SAAU,wCACVC,gBAAiB,QACjBC,YAAa,IACbC,oBAAqB,IACrBC,WAAY,GAEhBY,IAAO,CACHjB,GAAI,MACJC,SAAU,2CACVC,gBAAiB,QACjBC,YAAa,IACbC,oBAAqB,IACrBC,WAAY,GAEhBa,GAAM,CACFlB,GAAI,KACJC,SAAU,4CACVC,gBAAiB,QACjBC,YAAa,IACbC,oBAAqB,IACrBC,WAAY,GAEhBc,MAAS,CACLnB,GAAI,QACJC,SAAU,4CACVC,gBAAiB,QACjBC,YAAa,IACbC,oBAAqB,IACrBC,WAAY,GAGhBe,IAAO,CACHpB,GAAI,MACJC,SAAU,0CACVC,gBAAiB,QACjBC,YAAa,IACbC,oBAAqB,IACrBC,WAAY,GAEhBgB,IAAO,CACHrB,GAAI,MACJC,SAAU,yCACVC,gBAAiB,QACjBC,YAAa,IACbC,oBAAqB,IACrBC,WAAY,GAEhBiB,IAAO,CACHtB,GAAI,MACJC,SAAU,uCACVC,gBAAiB,QACjBC,YAAa,IACbC,oBAAqB,IACrBC,WAAY,GAEhBkB,IAAO,CACHvB,GAAI,MACJC,SAAU,0CACVC,gBAAiB,QACjBC,YAAa,IACbC,oBAAqB,IACrBC,WAAY,GAEhBmB,KAAQ,CACJxB,GAAI,OACJC,SAAU,iDACVC,gBAAiB,QACjBC,YAAa,IACbC,oBAAqB,IACrBC,WAAY,GAEhBoB,IAAQ,CACJzB,GAAI,OACJC,SAAU,0CACVC,gBAAiB,QACjBC,YAAa,IACbC,oBAAqB,IACrBC,WAAY,GAEhBqB,GAAM,CACF1B,GAAI,KACJC,SAAU,2BACVC,gBAAiB,QACjBC,YAAa,IACbC,oBAAqB,IACrBC,WAAY,GAEhBsB,OAAU,CACN3B,GAAI,SACJC,SAAU,0CACVC,gBAAiB,QACjBC,YAAa,IACbC,oBAAqB,IACrBC,WAAY,GAEhBuB,MAAS,CACL5B,GAAI,QACJC,SAAU,yCACVC,gBAAiB,QACjBC,YAAa,IACbC,oBAAqB,IACrBC,WAAY,GAEhBwB,KAAQ,CACJ7B,GAAI,OACJC,SAAU,yCACVC,gBAAiB,QACjBC,YAAa,IACbC,oBAAqB,IACrBC,WAAY,GAEhByB,KAAQ,CACJ9B,GAAI,OACJC,SAAU,gCACVC,gBAAiB,QACjBC,YAAa,IACbC,oBAAqB,IACrBC,WAAY,GAEhB0B,MAAS,CACL/B,GAAI,QACJC,SAAU,yCACVC,gBAAiB,QACjBC,YAAa,IACbC,oBAAqB,IACrBC,WAAY,GAEhB2B,IAAQ,CACJhC,GAAI,OACJC,SAAU,oCACVC,gBAAiB,QACjBC,YAAa,IACbC,oBAAqB,IACrBC,WAAY,GAEhB4B,GAAM,CACFjC,GAAI,KACJC,SAAU,4CACVC,gBAAiB,QACjBC,YAAa,IACbC,oBAAqB,IACrBC,WAAY,IAMhBP,KAAKD,OAAOqC,SAAQC,KACbrC,KAAKsC,sBACJvC,EAAOqC,UAAY,IAU9B,OARAtC,EAAAyC,UAEMC,iBAAA,SAAiBC,SACdC,SAAaC,EAAG3C,KAAKD,OAAOqC,iBAAZO,EAAuBF,GAC7C,IAAKC,EACD,MAAM,IAAIE,mDAAmDH,GAEjE,OAAOC,GACV5C,KCxPU+C,aAKX,SAAAA,EAAY9C,GACRC,KAAKD,OAAMsC,GACPS,QAAS,KACN/C,GAGPC,KAAK+C,IAAM,IAAIjD,EAAOE,KAAKD,QAC9B,QAO4B,OAP5B8C,EAAAN,UAOYS,4BAAgB,IAAAC,EAAAC,EAAAC,IAAAC,GAAtB,SAAAC,EAAuBC,uDACU,gBADVA,IAAAA,EAAmB,IACTC,EAAAC,IAC7BC,QAAMT,iBADKM,EAAW,EAAK,QACKD,OAFd,OAG5B,SAH4BK,GAAA,OAAAT,EAAAU,WAAAC,iBAAAf,OAAAgB,mBAAAC,IAL7B,WACI,IAAK9D,KAAKD,OAAO0C,QAAS,MAAM,IAAIG,MAAM,6BAC1C,OAAO5C,KAAK+C,IAAIP,iBAAiBxC,KAAKD,OAAO0C,6PCbxCsB,EAAc,SAACC,EAAyBC,GACjD,IAAMC,EAAK,IAAIC,EAAUH,GACnBI,EAAa,IAAID,EAAU,IAAIE,IAAIJ,GACzC,OAAOK,OAAOJ,EAAGK,MAAMH,GAAYI,QAAQ,KAOlCC,EAAe,SAACC,EAAsBT,GAC/C,IAAMC,EAAK,IAAIC,EAAUO,EAAIC,YACvBC,EAAU,IAAIT,EAAU,IAAIE,IAAIJ,GACtC,OAAOC,EAAGW,UAAUD,GAASE,YChBpBC,EAAa,SAACC,GAAkB,OAAKjB,EAAYiB,EAAG,KACpDC,EAAc,SAACD,GAAkB,OAAKP,EAAaO,EAAG,KAGtDE,EAAY,SAACF,GAAkB,OAAKjB,EAAYiB,EAAG,IACnDG,EAAa,SAACH,GAAkB,OAAKP,EAAaO,EAAG,02DCC5DI,EAAW,SAACC,GAAe,OAAK,IAAIC,SAAOC,gBAAgBF,IAKpDG,WAAUC,GAInB,SAAAD,EAAYzF,SAEyB,OADjC2F,EAAAD,EAAAE,UAAM5F,UACD6F,OAAS,IAAIC,YAAeH,EACpCI,EAAAN,EAAAC,GAAA,IAAAM,EAAAP,EAAAjD,UAqa4B,OAra5BwD,EAEKC,uBAAW,IAAAC,EAAA/C,EAAAC,IAAAC,GAAjB,SAAAC,EAAA6C,GAAA,IAAAC,EAAAd,EAAAe,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA,OAAAxD,IAAAyD,YAAArD,GAAA,cAAAA,EAAAsD,GAAA,OAA4D,GAAxCV,EAAeD,EAAfC,gBAAyBC,EAAUF,EAAVE,WAAYC,EAAGH,EAAHG,IAApBhB,EAAMa,EAANb,QACtB9B,EAAAsD,IAAA,MAAA,MAAQ,IAAIjE,MAAM,uBAAsB,OAEY,OAAzD0D,EAAmBlB,QAASC,EAAAA,EAAUrF,KAAKD,OAAOsF,QAAO9B,EAAAsD,IACtCP,EAAiBQ,aAAY,OAAtC,GAAVP,EAAUhD,EAAAyB,GAKZoB,GAAU7C,EAAAsD,IAAA,MAEoB,OAD9BH,EAAS,IAAIpB,SAAOyB,OAAOX,EAAYE,GAAkBK,EAC3CL,EAAgB/C,EAAAsD,IACpBH,EAAOM,aAAY,OAAA,OAAAzD,EAAAsD,IAAAF,EADEM,oBAAmBtB,KAAAgB,EAAApD,EAAAyB,EAE9C,WAAS,OAFbwB,EAAKjD,EAAAyB,EAAA,OAAA,IAMLmB,GAAe5C,EAAAsD,IAAA,MAKb,OAJFJ,EAAW,IAAInB,SAAO4B,SAClBf,EACAE,GAAOc,EACPT,GAAUJ,GACZ/C,EAAAsD,IAEiBP,EAAiBc,QAAQjB,GAAgB,OAAlD,GACG,OADH5C,EAAAyB,GACOzB,EAAAsD,IAAA,MAAA,MACP,IAAIjE,MAAM,6BAA4B,OAAA,OAAAW,EAAAC,IAI7C,CAAEiD,SAAAA,EAAUC,OAAAA,EAAQH,WAAAA,EAAYC,MAAAA,EAAOF,iBAAAA,OAAkBjD,YA9BnD,OA+BhB,SA/BgBK,GAAA,OAAAuC,EAAAtC,WAAAC,eAAAmC,EAiCXsB,0BAAc,IAAAC,EAAApE,EAAAC,IAAAC,GAApB,SAAAmE,EAAAC,GAAA,IAAAC,EAAArB,EAAAsB,EAAAC,EAAAC,EAAA,OAAAzE,IAAAyD,YAAAiB,GAAA,cAAAA,EAAAhB,GAAA,OACuD,GADtBT,EAAUoB,EAAVpB,WACvBsB,EADiDF,EAAdM,gBACR,qBADdL,EAAQD,EAARC,YAGHrB,GAAUyB,EAAAhB,IAAA,MAAA,MAChB,IAAIjE,MAAM,mDAAkD,OAAA,IAKlEwD,GAAUyB,EAAAhB,IAAA,MACVc,EAAmBvB,EAAWyB,EAAAhB,IAAA,MAAA,OAAA,IACvBY,GAAQI,EAAAhB,IAAA,MAAA,OAAAgB,EAAAhB,IACU7G,KAAK4F,OAAOmC,qBAAqB,CAAEN,SAAAA,EAAUC,OAAAA,IAAS,OAA/EC,EAAgBE,EAAA7C,EAAA6C,EAAAhB,IAAA,MAAA,OAAA,OAAAgB,EAAAhB,IAES7G,KAAK4F,OAAOoC,sBAAqB,OAA1DL,EAAgBE,EAAA7C,EAAA,OAAA,OAAA6C,EAAAhB,IAGiB7G,KAAK4F,OAAOqC,cAAc,CAC3D7B,WAAYuB,IACd,OAFwB,OAAAE,EAAArE,IAIH,CACnB0E,SAHFN,EAAAC,EAAA7C,GAFMkD,QAMJC,UANsBP,EAATO,UAOb/B,WAAYuB,OACdJ,YAzBc,OA0BnB,SA1BmBa,GAAA,OAAAd,EAAA3D,WAAAC,eAAAmC,EA4BdsC,sBAAU,IAAAC,EAAApF,EAAAC,IAAAC,GAAhB,SAAAmF,EAAAC,GAAA,IAAAnD,EAAAc,EAAA+B,EAAAO,EAAAhC,EAAAH,EAAArC,EAAAyE,EAAAC,EAAA,OAAAxF,IAAAyD,YAAAgC,GAAA,cAAAA,EAAA/B,GAAA,OAAmD,OAAhCxB,EAAMmD,EAANnD,OAAQc,EAAeqC,EAAfrC,gBAAiB+B,EAAOM,EAAPN,QAAOU,EAAA/B,IACF7G,KAAKgG,YAAY,CAAEX,aAAQA,EAAAA,EAAUrF,KAAKD,OAAOsF,OAAQc,gBAAAA,IAAkB,OAAtF,GAAhBG,GAAsGmC,EAAAG,EAAA5D,GAAtGsB,mBAAVG,EAAQgC,EAARhC,WAEImC,EAAA/B,IAAA,MAAA,OAAA+B,EAAA/B,IACeJ,EAASxC,WAAU,OAA5B,OAARA,EAAQ2E,EAAA5D,EAAA4D,EAAA/B,IACQJ,EAASoC,UAAUX,GAAQ,OAApC,OAAAU,EAAApF,IACU,CACnBmF,QAASlE,GAFPkE,EAAOC,EAAA5D,GAEqBL,WAAYV,GAC1C6E,YAAaH,EAAQhE,WACrBoE,SAAU9E,IACZ,OAAA,OAAA2E,EAAA/B,IAGgBP,EAAiB+B,WAAWH,GAAQ,OAA7C,OAAAU,EAAApF,IAEU,CACnBmF,QAASlE,GAHPkE,EAAOC,EAAA5D,GAGqBL,WAAY,IAC1CmE,YAAaH,EAAQhE,WACrBoE,SAAU,QACZR,YAnBU,OAoBf,SApBeS,GAAA,OAAAV,EAAA3E,WAAAC,eAAAmC,EAsBVkD,oBAAQ,IAAAC,EAAAhG,EAAAC,IAAAC,GAAd,SAAA+F,EAAAC,GAAA,IAAAhD,EAAAD,EAAAd,EAAAgE,EAAAC,EAAA7C,EAAAH,EAAAC,EAAAC,EAAAE,EAAA6C,EAAAC,EAAAC,EAAAC,EAAAC,EAAA1F,EAAAD,EAAA4F,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA,OAAAjH,IAAAyD,YAAAyD,GAAA,cAAAA,EAAAxD,GAAA,OAA6D,OAA5CT,EAAUgD,EAAVhD,WAAYD,EAAeiD,EAAfjD,gBAAiBd,EAAM+D,EAAN/D,OAAWgE,EAAIiB,EAAAlB,EAAAmB,GAAAF,EAAAxD,IAEe7G,KAAKgG,YAAY,CACrFX,aAAQA,EAAAA,EAAUrF,KAAKD,OAAOsF,OAC9Be,WAAAA,EACAD,gBAAAA,IACF,OAJ2D,OAArDM,GAIN6C,EAAAe,EAAArF,GAJMyB,SAAUH,EAAgBgD,EAAhBhD,iBAAkBC,EAAU+C,EAAV/C,WAAYC,EAAK8C,EAAL9C,MAAOE,EAAM4C,EAAN5C,OAAM2D,EAAAxD,IAS9B7G,KAAK4F,OAAO4E,aAAa,CACpDtC,QAASmB,EAAKoB,mBAChB,OAFoB,GAAAJ,EAAArF,EAIA0F,SAAOL,EAAAxD,IAAA,MAAA,MACnB,IAAIjE,MAAM,+BAA8B,OAAA,IAM9CyG,EAAKsB,uBAAwBtB,EAAKuB,cAAYP,EAAAxD,IAAA,MAET,GAD/B0C,EAAOjF,OAAO+E,EAAKsB,wBACbrG,OAAO+E,EAAKuB,cACdrB,IAAIc,EAAAxD,IAAA,MAAA,MACJ,IAAIjE,MAAM,gDAA+C,OAAA,IAInEyG,EAAKwB,WAAaxB,EAAKuB,eAAgBvB,EAAKsB,sBAAqBN,EAAAxD,IAAA,MAAA,MAC3D,IAAIjE,MAAM,4CAA2C,OAAA,IAW3DuD,GAAekE,EAAAxD,KAAA,MAAA,GAEVJ,GAAQ4D,EAAAxD,IAAA,MAAA,MAAQ,IAAIjE,MAAM,sBAAqB,OAAA,OAAAyH,EAAAxD,IAE7BJ,EAASxC,WAAU,OAS7B,GATPA,EAAQoG,EAAArF,EACRhB,EAASD,EAAYsF,EAAKrF,OAAOW,WAAYV,GAEnDwF,EAAShD,YAAmBqE,mBACxB,WACA,CAACzB,EAAKoB,iBAAkBzG,IAG5BwF,EAAOrD,EACPuD,EAAU,IAECL,EAAKM,UAAQU,EAAAxD,IAAA,MAAAmD,EAClB1F,OAAO+E,EAAKM,UAASU,EAAAxD,KAAA,MAAA,OACC,OADDoD,EACf3D,EAAgB+D,EAAAxD,IACRH,EAAQM,aAAY,OAEpB,OAFoBkD,EAAAG,EAAArF,EAAAmF,EAC5BhE,EAAeiE,EACbX,EAAMY,EAAAxD,KAAAoD,EAHSc,YAAWpF,KAAAsE,GAChCe,KAAId,EACJe,GAAEd,EACFe,KAAId,IAAA,QAAAJ,EAAAK,EAAArF,EAAA,QALZ2E,EAAQK,EAAAK,EAAAxD,KAAA,MAAA,QAUR2C,EAAOH,EAAKoB,iBACZf,EAAU3E,EAAWsE,EAAKrF,OAAOW,YAEjC8E,EAASJ,EAAK6B,KACR5F,SAAO6F,QAAQ7F,SAAO8F,YAAY/B,EAAK6B,OACvC,KAENvB,EAAWN,EAAKM,SACVrF,OAAO+E,EAAKM,UACZ,OAAO,QASa,GAFzBN,EAAKwB,UACLxB,EAAKuB,cACLvB,EAAKsB,sBAEYxE,GAAekE,EAAAxD,KAAA,MAAA,OAAAwD,EAAAxD,KACV7G,KAAK+K,YAAY,CACpC1F,aAAQA,EAAAA,EAAUrF,KAAKD,OAAOsF,OAC9BoF,iBAAkBjB,EAClBxF,OAAQqF,EAAKrF,OAAOW,WACpBuG,KAAiB,OAAXzB,EAAkBA,OAAS4B,IACnC,QAEmC,GAP/BzB,EAAQS,EAAArF,EAOd2E,EAAWrF,OAAOsF,EAASD,UAEJ,WAAnBC,EAAS0B,OAAkBjB,EAAAxD,KAAA,MACQ,OAAnCwC,EAAKwB,SAAWjB,EAASiB,SAAUR,EAAA7G,IAC5BxD,KAAKiJ,SAAQ5G,GAAG+D,WAAAA,EAAYD,gBAAAA,EAAiBd,OAAAA,GAAWgE,KAAO,QAI1EA,EAAKuB,cADCf,EAAMD,EAAS2B,KAAKC,SACFZ,aACxBvB,EAAKsB,qBAAuBd,EAAIc,qBAAqB,QAAA,OAAAN,EAAAxD,KAMhC7G,KAAKyL,gBAAgB,CAC1CrF,WAAAA,EACAI,MAAAA,EACAD,WAAAA,EACAiD,KAAAA,EACAC,OAAAA,EACAC,QAAAA,EACAC,SAAAA,EACAN,KAAAA,IACF,QATc,OAAVS,EAAUO,EAAArF,EAAAqF,EAAAxD,KAWO7G,KAAK4F,OAAO8F,gBAAgB5B,GAAW,QAAhD,OAARC,EAAQM,EAAArF,EAAAqF,EAAAxD,KACUP,EAAiBqF,qBAAqB5B,GAAS,QAAxD,OAAAM,EAAA7G,IAEOnB,KAFPgI,EAAArF,OAEyBmE,YA5H9B,OA6Hb,SA7HayC,GAAA,OAAA1C,EAAAvF,WAAAC,eAAAmC,EAgIR8F,0BAAc,IAAAC,EAAA5I,EAAAC,IAAAC,GAApB,SAAA2I,EAAAC,GAAA,IAAAC,EAAA5G,EAAA6G,EAAA5F,EAAA6F,EAAAC,EAAAC,EAAAC,EAAA,OAAAnJ,IAAAyD,YAAA2F,GAAA,cAAAA,EAAAC,EAAAD,EAAA1F,GAAA,OAAgD,OAAzBoF,EAAID,EAAJC,KAAM5G,EAAM2G,EAAN3G,OAAQ6G,EAAWF,EAAXE,YAAWK,EAAA1F,IACT7G,KAAKgG,YAAY,CAAEX,aAAQA,EAAAA,EAAUrF,KAAKD,OAAOsF,SAAS,OAArE,GAAhBiB,EAAqFiG,EAAAvH,EAArFsB,iBAAgBiG,EAAAC,KAGhBN,GAAWK,EAAA1F,IAAA,MAAA,OAAA0F,EAAA1F,IACiB4F,QAAQC,IAAI,CACpCpG,EAAiBuF,eAAeI,GAChC3F,EAAiBqG,sBAAsBV,KACzC,OAIQ,OAPCI,GAGTF,EAAAI,EAAAvH,MAEIsH,SALCM,EAAET,OAKIS,EAAI1B,MAAoB,OAAZ0B,EAAG1B,KACtB5F,SAAOuH,aAAaD,EAAG1B,MACvB,KAAIqB,EAAA/I,IAEa,CACnBsJ,YAAaF,EACbP,QAAAA,EACAC,KAAAA,IACF,OAAA,OAAAC,EAAA1F,IAGWP,EAAiBuF,eAAeI,GAAK,OAA9C,OAAAM,EAAA/I,IAEe,CACnBsJ,YAHIP,EAAAvH,IAIN,OAAA,MAAAuH,EAAAC,IAAAD,EAAAvH,EAAA,OAAA,OAAAuH,EAAA/I,QAAAuI,oBAzBU,OA6BnB,SA7BmBgB,GAAA,OAAAjB,EAAAnI,WAAAC,eAAAmC,EA+BdiH,wBAAY,IAAAC,EAAA/J,EAAAC,IAAAC,GAAlB,SAAA8J,EAAAC,GAAA,IAAAhH,EAAAd,EAAAoB,EAAA2G,EAAAnJ,EAAAiH,EAAA,OAAA/H,IAAAyD,YAAAyG,GAAA,cAAAA,EAAAxG,GAAA,OAA4C,OAAvBV,EAAegH,EAAfhH,gBAAiBd,EAAM8H,EAAN9H,OAAMgI,EAAAxG,IACb7G,KAAKgG,YAAY,CAAEG,gBAAAA,EAAiBd,aAAQA,EAAAA,EAAUrF,KAAKD,OAAOsF,SAAU,OAAvF,KAARoB,EAA+F4G,EAAArI,EAA/FyB,WAEI4G,EAAAxG,IAAA,MAAA,OAAAwG,EAAAxG,IAC4C4F,QAAQC,IAAI,CAC5DjG,EAAS6G,OACT7G,EAAS8G,SACT9G,EAASxC,WACTwC,EAAS+G,gBACX,OAQD,OANKtC,EAAkB,CACpBoC,MAHFF,EAAAC,EAAArI,MAIEuI,OATeH,KAUfnJ,SAViBA,EAAQmJ,KAWzBI,YAAa/I,EAXyB2I,KAWAzI,WAAYV,GAAUU,YAE/D0I,EAAA7J,IACqBnB,KAAM6I,IAAO,OAAA,MAGjC,IAAItI,MAAM,sBAAqB,OAAA,OAAAyK,EAAA7J,QAAA0J,YArBvB,OAsBjB,SAtBiBO,GAAA,OAAAR,EAAAtJ,WAAAC,eAAAmC,EAwBZ2H,6BAAiB,IAAAC,EAAAzK,EAAAC,IAAAC,GAAvB,SAAAwK,EAAwBvE,GAA+B,IAAAwE,EAAAC,EAAArH,EAAAF,EAAAC,EAAAoG,EAAAmB,EAAA,OAAA5K,IAAAyD,YAAAoH,GAAA,cAAAA,EAAAxB,EAAAwB,EAAAnH,GAAA,OAAA,OAAAmH,EAAAnH,IACL7G,KAAKgG,YAAY,CAC3DX,cAAMwI,EAAExE,EAAKhE,QAAMwI,EAAI7N,KAAKD,OAAOsF,OACnCc,gBAAiBkD,EAAKlD,gBACtBE,IAAKgD,EAAK4E,YACV7H,WAAYiD,EAAKjD,aACnB,OAqBG,GA1BGK,GAKNqH,EAAAE,EAAAhJ,GALMyB,SAAUF,EAAUuH,EAAVvH,WAAYC,EAAKsH,EAALtH,MAAKwH,EAAAxB,IAS3BuB,EAAY,GAEQ,SAApB1E,EAAK6E,WACLH,EAAY,GACe,UAApB1E,EAAK6E,aACZH,EAAY,CACRlD,SAAUxB,EAAKwB,SACT3F,EAAUmE,EAAKwB,gBACftE,SAAAA,EAAYsE,SAElBrE,MAAO6C,EAAK7C,OAASA,EACrB2H,MAAO9E,EAAK8E,MAAQpJ,EAAWsE,EAAK8E,MAAMxJ,YAAc,GAGxD0E,EAAKM,WACLoE,EAAUpE,SAAWN,EAAKM,aAI9BN,EAAK+E,OAAOC,OAAS,IAACL,EAAAnH,IAAA,MAAA,OAAAmH,EAAAnH,UACXJ,SAAAA,EAAW4C,EAAKiF,QAAO3K,MAAvB8C,EAA2B4C,EAAK+E,OAAMG,QAAER,KAAU,OAA7DnB,EAAEoB,EAAAhJ,EAAAgJ,EAAAnH,IAAA,MAAA,OAAA,OAAAmH,EAAAnH,UAESJ,SAAAA,EAAW4C,EAAKiF,QAAQP,GAAU,OAA7CnB,EAAEoB,EAAAhJ,EAAA,OAAA,OAAAgJ,EAAAxK,IAGiB,CACnB0H,KAAM0B,IACR,OAAA,MAAAoB,EAAAxB,IAAAwB,EAAAhJ,EAAA,OAAA,OAAAgJ,EAAAxK,QAAAoK,oBArCa,OAyCtB,SAzCsBY,GAAA,OAAAb,EAAAhK,WAAAC,eAAAmC,EA2CjBgF,uBAAW,IAAA0D,EAAAvL,EAAAC,IAAAC,GAAjB,SAAAsL,EAAAC,GAAA,IAAAtJ,EAAAoF,EAAAzG,EAAAkH,EAAA5E,EAAAsI,EAAAC,EAAApM,EAAAmK,EAAAkC,EAAAC,EAAApF,EAAAkB,EAAAF,EAAAqE,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA,OAAA9M,IAAAyD,YAAAsJ,GAAA,cAAAA,EAAA1D,EAAA0D,EAAArJ,GAAA,OAA0D,OAAtCxB,EAAMsJ,EAANtJ,OAAQoF,EAAgBkE,EAAhBlE,iBAAkBzG,EAAM2K,EAAN3K,OAAQkH,EAAIyD,EAAJzD,KAAIgF,EAAArJ,IACnB7G,KAAKgG,YAAY,CAAEX,aAAQA,EAAAA,EAAUrF,KAAKD,OAAOsF,SAAS,OAArE,OAAhBiB,EAAqF4J,EAAAlL,EAArFsB,iBAAgB4J,EAAA1D,IAAA0D,EAAArJ,IAIEP,EAAiB6J,aAAY,OAOlD,OANK1N,EAAU2N,OADHF,EAAAlL,EACkBvC,SAEzBmK,EAAK,CACP3B,GAAIR,EACJ0D,MAAOpJ,EAAWf,EAAOW,YACzBuG,KAAMA,EAAO5F,SAAO6F,QAAQ7F,SAAO8F,YAAYF,IAAmB,MACrEgF,EAAArJ,IAEiC4F,QAAQC,IAAI,CAC1CpG,EAAiBQ,aACjBR,EAAiByE,YAAY6B,KAC/B,OAUsE,GAbxDjD,GAGdmF,EAAAoB,EAAAlL,MAIM6F,GAPDkE,EAAOD,MAONjE,SAAwBF,EAAyBoE,EAAzBpE,qBAE1BqE,EAAkB,SAACqB,EAAcC,GAAW,OAC7CD,EAAO/L,OAAOiM,KAAKC,MAAY,GAANF,IAAc,KAGT,OANsBvB,EAAvCnE,cAMkD,OAAzBD,GAE7BuF,EAAArJ,IAAA,MASmC,OARvCoI,EAAe3K,aAAOuG,EAAAA,EAAY,IAMlCkF,EAAapG,EAJKsF,EAKlBe,EAAarG,GAJqB,KAAfsF,EAAuB,MAK1CgB,EAAatG,GAJqB,KAAfsF,EAAuB,MAIHiB,EAAA1M,IAEtB,CACnBf,QAAAA,EACAkH,SAAUA,EAAShF,WACnBkG,SAAUoE,EAAatK,WACvB8L,aAActL,EAAW8J,GACzB3D,MAAO,SACPC,KAAM,CACFC,QAASvG,EAAY8K,GACrBW,QAASzL,EAAY+K,GACrBW,QAAS1L,EAAYgL,MAE3B,OAAA,OAAAC,EAAArJ,IAMcP,EAAiBsK,SAAS,UAAS,OAqBP,OAnBhDvB,EAAU/K,cAAMsK,EAFLsB,EAAAlL,EAEa6L,eAAajC,EAAI,IACzCU,EAAchL,cAAMuK,EAChBE,EAAQpE,sBAAoBkE,EAAI3J,EA9XvB,QAkYPsK,EAAgBH,GADhBE,EAAkBD,GAGlBG,EAAkBT,EAAgBM,EAAa,KAC/CI,EAAgBV,EAAgBK,EAAS,KAAOI,EAEhDE,EAAkBX,EAAgBM,EAAa,KAC/CM,EAAgBZ,EAAgBK,EAAS,KAAOM,EAEhDE,EAAe,KAAO,YAGtBE,EAAapG,GAFbmG,EAAM,SAAC9K,GAAS,OAAMA,EAAI6K,EAAeA,EAAe7K,IAE5BwK,GAC5BQ,EAAarG,EAAWmG,EAAIJ,GAC5BO,EAAatG,EAAWmG,EAAIF,GAAcM,EAAA1M,IAEzB,CACnBf,QAAAA,EACAkH,SAAUA,EAAShF,WACnBmM,YAAa3L,EAAWkK,GACxB0B,gBAAiB5L,EAAWmK,GAC5BhE,MAAO,UACPC,KAAM,CACFC,QAAS,CACLwF,QAAS/L,EAAY8K,GACrBpF,qBAAsB4E,EAAgB5K,WACtCiG,aAAc4E,EAAc7K,YAEhC+L,QAAS,CACLM,QAAS/L,EAAY+K,GACrBrF,qBAAsB8E,EAAgB9K,WACtCiG,aAAc8E,EAAc/K,YAEhCgM,QAAS,CACLK,QAAS/L,EAAYgL,GACrBtF,qBAAsBgF,EAAgBhL,WACtCiG,aAAcgF,EAAcjL,eAGtC,OAAA,MAAAuL,EAAA1D,IAAA0D,EAAAlL,EAAA,OAAA,OAAAkL,EAAA1M,QAAAkL,oBAvGO,OA4GhB,SA5GgBuC,GAAA,OAAAxC,EAAA9K,WAAAC,eAAAmC,EA8GH0F,2BAAe,IAAAyF,EAAAhO,EAAAC,IAAAC,GAArB,SAAA+N,EAAAC,GAAA,IAAAC,EAAAC,EAAAC,EAAAnL,EAAAI,EAAAD,EAAAkD,EAAAE,EAAAN,EAAAmI,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA,OAAA5O,IAAAyD,YAAAoL,GAAA,cAAAA,EAAAnL,GAAA,OAMY,GANYT,EAAUgL,EAAVhL,WAAYI,EAAK4K,EAAL5K,MAAOD,EAAU6K,EAAV7K,WAAkBkD,EAAM2H,EAAN3H,OAAiBE,EAAQyH,EAARzH,SAAUN,EAAI+H,EAAJ/H,KAAIoI,EAAjCL,EAAJ5H,KAI/CkI,EACDvN,YALqEiN,EAAP1H,QAK5C/E,YAAWgN,EAC9BlI,SAAM4H,EACLhI,EAAK7C,QAAKwL,EAAAnL,IAAA,MAAA+K,EAAAP,EAAAW,EAAAnL,IAAA,MAAA,OAAA,OAAAmL,EAAAnL,IAAUL,EAAK,OAAAoL,EAAAI,EAAAhN,EAAA,OAEzB,GAFyB6M,EAAAD,EAAAE,EACtB3N,YAAUwF,EAAShF,YAAWoN,EAC/B3B,OAAOpQ,KAAKiS,aAAa/R,IANhCsR,GACFvG,GAAEwG,EACFtD,MAAKuD,EACLxG,KAAIyG,EACJnL,MAAKqL,EACLlI,SAAQmI,EACRrP,QAAOsP,IAMP1I,EAAKwB,UAAQmH,EAAAnL,IAAA,MAAA,OAAAmL,EAAAxO,IACN,CACH4C,WAAAA,EACA8E,KAAI7I,KACGmP,GACH3G,SAAU1G,YACNe,EAAUmE,EAAKwB,UAAUlG,YAE7BuN,KAAM,MAEb,OAAA,OAAAF,EAAAxO,IAME,CACH4C,WAAAA,EACA8E,KAAI7I,KACGmP,GACHU,KAAM,EACNvH,qBAAsBxG,mBAASmN,EAC3BjI,EAAKsB,sBAAoB2G,EACzB/K,EAAWoE,qBAAsBhG,YAErCiG,aAAczG,mBAASoN,EACnBlI,EAAKuB,cAAY2G,EACjBhL,EAAWqE,aAAcjG,mBAGpCwM,YA7CwB,OA8C5B,SA9C4BgB,GAAA,OAAAjB,EAAAvN,WAAAC,eAAA4B,GA5aF3C,GCRlBuP,WAAU3M,GAInB,SAAA2M,EAAYrS,SAEiF,OADzF2F,EAAAD,EAAAE,UAAM5F,UACD6F,OAAiC,YAAxBF,EAAK3F,OAAOsS,QAAwB,IAAIC,aAAe,IAAIC,YAAgB7M,EAGzE,OAFnBI,EAAAsM,EAAA3M,GAAA2M,EAAA7P,UAEK8E,0BAAc,IAAAC,EAAApE,EAAAC,IAAAC,GAApB,SAAAC,EAAA6C,GAAA,IAAAuB,EAAAC,EAAA8K,EAAA7K,EAAAC,EAAAjB,EAAA,OAAAxD,IAAAyD,YAAArD,GAAA,cAAAA,EAAAsD,GAAA,OACsD,GAA5Ca,EADqCxB,EAAd4B,gBACI,yBADdL,EAAQvB,EAARuB,WAESlE,EAAAsD,IAAA,MAAAF,EAARc,EAAQlE,EAAAsD,IAAA,MAAA,OAAA,OAAAtD,EAAAsD,IAAW7G,KAAKgD,iBAAiB,IAAG,OAAA2D,EAAApD,EAAAyB,EAAA,OAA/C,OAAXwN,EAAW7L,EAAApD,EAAAsD,IAEc7G,KAAK4F,OAAOmC,qBAAqB,CAAEN,SAAU+K,EAAa9K,OAAAA,IAAS,OAA5E,OAAhBC,EAAgBpE,EAAAyB,EAAAzB,EAAAsD,IACe7G,KAAK4F,OAAOqC,cAAc,CAAE7B,WAAYuB,IAAmB,OAAtE,OAAApE,EAAAC,IAEH,CAAE0E,SAFuEN,EAAArE,EAAAyB,GAAxFkD,QAE0BC,UAFRP,EAATO,UAE4B/B,WAAYuB,OAAmBtE,YAP5D,OAQnB,SARmBK,GAAA,OAAA4D,EAAA3D,WAAAC,eAAAwO,GATOvP,+CCMzBuC,EAAW,SAACC,GAAe,OAAK,IAAIoN,aAAsBpN,IAEnDqN,EAAiBC,SAAoB,CAC9CA,OAAkB,GAAI,QACtBA,OAAkB,GAAI,SACtBA,OAAkB,UAClBA,OAAkB,MAGTC,EAAmC,CAC5CC,eAAgBC,MAAIC,YACpBC,QAAWF,MAAIG,QACfC,OAAUJ,MAAIK,QAGLC,WAAU3N,GAInB,SAAA2N,EAAYrT,SAEyB,OADjC2F,EAAAD,EAAAE,UAAM5F,UACD6F,OAAS,IAAIyN,YAAe3N,EACpCI,EAAAsN,EAAA3N,GAAA,IAAAM,EAAAqN,EAAA7Q,UA8N+B,OA9N/BwD,EAEKsB,0BAAc,IAAAC,EAAApE,EAAAC,IAAAC,GAApB,SAAAC,EAAA6C,GAAA,IAAAuB,EAAAC,EAAA8K,EAAA7K,EAAAC,EAAAjB,EAAA,OAAAxD,IAAAyD,YAAArD,GAAA,cAAAA,EAAAsD,GAAA,OACuD,GAA7Ca,EADqCxB,EAAd4B,gBACI,0BADdL,EAAQvB,EAARuB,WAESlE,EAAAsD,IAAA,MAAAF,EAARc,EAAQlE,EAAAsD,IAAA,MAAA,OAAA,OAAAtD,EAAAsD,IAAW7G,KAAKgD,iBAAiB,IAAG,OAAA2D,EAAApD,EAAAyB,EAAA,OAA/C,OAAXwN,EAAW7L,EAAApD,EAAAsD,IAEc7G,KAAK4F,OAAOmC,qBAAqB,CAAEN,SAAU+K,EAAa9K,OAAAA,IAAS,OAA5E,OAAhBC,EAAgBpE,EAAAyB,EAAAzB,EAAAsD,IACe7G,KAAK4F,OAAOqC,cAAc,CAAE7B,WAAYuB,IAAmB,OAAtE,OAAApE,EAAAC,IAEH,CAAE0E,SAFuEN,EAAArE,EAAAyB,GAAxFkD,QAE0BC,UAFRP,EAATO,UAE4B/B,WAAYuB,OAAmBtE,YAP5D,OAQnB,SARmBK,GAAA,OAAA4D,EAAA3D,WAAAC,eAAAmC,EAUdsC,sBAAU,IAAAC,EAAApF,EAAAC,IAAAC,GAAhB,SAAAmE,EAAAC,GAAA,IAAAnC,EAAAc,EAAA+B,EAAAoL,EAAA7I,EAAAtC,EAAAoL,EAAAC,EAAAC,EAAA9K,EAAA,OAAAxF,IAAAyD,YAAAiB,GAAA,cAAAA,EAAA2E,EAAA3E,EAAAhB,GAAA,OAC6D,OADlCV,EAAeqB,EAAfrB,gBAAiB+B,EAAOV,EAAPU,QAClCoL,EAAalO,SADJC,EAAMmC,EAANnC,QACaA,EAAUrF,KAAKD,OAAOsF,QAAOwC,EAAA2E,IAAA3E,EAAAhB,IAEtB7G,KAAK4F,OAAO4E,aAAa,CAAEtC,QAAAA,IAAU,OAA9C,IAAhBuC,EAAgB5C,EAAA7C,GACA0F,SAAO7C,EAAAhB,IAAA,MAAA,MAAQ,IAAIjE,MAAM,qBAAoB,OAEC,GAA9DuF,EAAY,IAAIsK,YAAqBhI,EAAiBvC,UACxD/B,GAAe0B,EAAAhB,IAAA,MAEf,OADM0M,EAAa,IAAId,YAAqBtM,GAC5C0B,EAAAhB,IACkC6M,4BAA0BH,EAAYpL,GAAU,OAAzD,OAAnBqL,EAAmB3L,EAAA7C,EAAA6C,EAAAhB,IACCyM,EAAWK,eAAeH,GAAoB,OAAvD,GAAA3L,EAAA7C,GAGD6C,EAAAhB,IAAA,MAAA,OAAAgB,EAAArE,IACW,CACnBmF,QAAS,MACX,OAAA,OAAAd,EAAAhB,IAGmByM,EAAWM,uBAAuBJ,GAAoB,OAA/D,OAAA3L,EAAArE,IACO,CACnBmF,QAASlE,GAFPgP,EAAU5L,EAAA7C,GAEqBmJ,MAAMnK,OAAQyP,EAAWtF,MAAMlK,UAChE6E,YAAa2K,EAAWtF,MAAMnK,OAC9B+E,SAAU0K,EAAWtF,MAAMlK,WAC7B,OAAA,OAAA4D,EAAAhB,IAGgByM,EAAWjL,WAAWF,GAAU,OAAzC,OAAAN,EAAArE,IACU,CACnBmF,QAASlE,GAFPkE,EAAOd,EAAA7C,GAEqBL,WAAY,GAC1CmE,YAAa/E,EAAY4E,EAAS,GAClCI,SAAU,IACZ,QAAA,MAAAlB,EAAA2E,KAAA3E,EAAA7C,EAAA,QAAA,OAAA6C,EAAArE,QAAA+D,qBAjCM,OAqCf,SArCea,GAAA,OAAAE,EAAA3E,WAAAC,eAAAmC,EAuCVkD,oBAAQ,IAAAC,EAAAhG,EAAAC,IAAAC,GAAd,SAAAmF,EAAAC,OAAApC,EAAAD,EAAAd,EAAAgE,EAAAiK,EAAAO,EAAApJ,EAAAqJ,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAZ,EAAAa,EAAAC,EAAAC,EAAAC,EAAAtQ,EAAAuQ,EAAAC,EAAAC,EAAAC,EAAAvG,EAAAwG,EAAAC,EAAAC,EAAAC,EAAA,OAAA5R,IAAAyD,YAAAgC,GAAA,cAAAA,EAAA4D,EAAA5D,EAAA/B,GAAA,OAC6D,OAD5CT,EAAUoC,EAAVpC,WAAYD,EAAeqC,EAAfrC,gBAAiBd,EAAMmD,EAANnD,OAAWgE,EAAIiB,EAAA9B,EAAA+B,GACnD+I,EAAalO,QAASC,EAAAA,EAAUrF,KAAKD,OAAOsF,QAAOuD,EAAA4D,IAAA5D,EAAA/B,IAItB7G,KAAK4F,OAAO4E,aAAa,CAAEtC,QAASmB,EAAKoB,mBAAmB,OAArE,IAAhBA,EAAgB7B,EAAA5D,GACA0F,SAAO9B,EAAA/B,IAAA,MAAA,MAAQ,IAAIjE,MAAM,qBAAoB,OAAA,OAAAgG,EAAA/B,IAGzC7G,KAAK4F,OAAOqC,cAAc,CAAE7B,WAAAA,IAAa,OAAlD,OAAX0N,EAAWlL,EAAA5D,EAAA4D,EAAA/B,IAGkC7G,KAAKgV,mBAAmB1B,GAAW,OAItF,OAJMU,GAAgFD,EAAAnL,EAAA5D,GAAhFgP,iBAAkBC,EAAgBF,EAAhBE,iBACpB5K,EAAKM,WAAUqK,EAAmB3K,EAAKM,UACvCN,EAAKwB,WAAUoJ,EAAmBgB,SAAS5L,EAAKwB,SAAiB,KAErEjC,EAAA/B,IAC4ByM,EAAW4B,qBAAoB,OAA1C,GAAThB,EAAmDtL,EAAA5D,EAAnDkP,WAGJ/N,GAAeyC,EAAA/B,KAAA,MAKf,OAJM0M,EAAa,IAAId,YAAqBtM,GACtCiO,EAAa,IAAI3B,YAAqBqB,EAAY5L,SAClDmM,EAAkB,IAAI5B,YAAqBhI,EAAiBvC,SAElEU,EAAA/B,IAC+B6M,4BAA0BH,EAAYa,GAAW,OAA1D,OAAhBE,EAAgB1L,EAAA5D,EAAA4D,EAAA/B,IACc6M,4BAA0BH,EAAYc,GAAgB,OAG1E,OAHVE,EAAqB3L,EAAA5D,EAGvBf,EAAW,EAAC2E,EAAA4D,IAAA5D,EAAA/B,KAEeyM,EAAWM,uBAAuBU,GAAiB,QAC9ErQ,EADkB2E,EAAA5D,EACMmJ,MAAMlK,SAAS2E,EAAA/B,KAAA,MAAA,QAAA,OAAA+B,EAAA4D,KAAA5D,EAAA4D,KAAA5D,EAAA/B,KAILyM,EAAW6B,qBAAqB5B,GAAW,SAAnEiB,EAAe5L,EAAA5D,GAGDmJ,OAAUqG,EAAgBrG,MAAMjD,KAAakK,SAE7DnR,EADgBuQ,EAAgBrG,MAAMjD,KAAakK,OACjCC,KAAKpR,UAAY,GACtC2E,EAAA/B,KAAA,MAAA,QAAA,MAAA+B,EAAA4D,KAGK,IAAI5J,MAAM,+CAAiDuD,GAAgB,QAAA,OAAAyC,EAAA/B,KAK1DyM,EAAWK,eAAeY,GAAsB,QA6B/E,OA5BME,IADgB7L,EAAA5D,EAIhB0P,IAAqBrL,EAAKiM,0BAA6Bb,EAIvDE,EAAiBrQ,OAAOiM,KAAKgF,cAAMpB,EAAC9K,EAAKrF,QAAMmQ,EAAI,GAAC5D,KAAAlM,IAAK,GAAMJ,KAG/DmK,EAAS,CACXhI,WAAAA,EACA8E,KAAM,CACFgH,KAAM,gBACNsD,MAAO1B,EAAY5L,QACnB8C,KAAM8I,EAAY5L,QAClB+C,GAAIR,EAAiBvC,QACrBuN,UAAWvB,EACXwB,KAAMvP,EACNnC,OAAQ2Q,EAAehQ,WACvBgR,QAAS1R,EACTqR,0BAA2BZ,EAC3BkB,YAAavM,EAAKuM,UAClB5B,iBAAAA,EACAC,iBAAAA,IAIRrL,EAAA/B,KACuB7G,KAAK4F,OAAO8F,gBAAgB0C,GAAO,QAEnB,OAAjC2G,EAAQ1E,OAAKwF,WAFLjN,EAAA5D,GAEyB4D,EAAA/B,KACpByM,EAAWwC,mBAAmBf,EAAO,CAAEgB,eAAe,EAAOxV,WAAY,IAAI,QAAtF,OAAAqI,EAAApF,IACa,CAAEyI,KADfrD,EAAA5D,IAC4B,QAkBzC,OAdK6P,EAAWtE,KAAKgF,cAAM1B,EAACxK,EAAKrF,QAAM6P,EAAI,GAAKpB,oBAE3CqC,EAAY,CACd1O,WAAAA,EACA8E,KAAM,CACFgH,KAAM,WACNsD,MAAO1B,EAAY5L,QACnB8C,KAAM8I,EAAY5L,QAClB+C,GAAIR,EAAiBvC,QACrBuN,UAAWvB,EACXlQ,OAAQ6Q,EACRb,iBAAAA,EACAC,iBAAAA,IAEPrL,EAAA/B,KAEsB7G,KAAK4F,OAAO8F,gBAAgBoJ,GAAU,QACtB,OAAjCC,EAAQ1E,OAAKwF,WADLjN,EAAA5D,GACyB4D,EAAA/B,KACfyM,EAAWwC,mBAAmBf,EAAO,CACzDgB,eAAe,EACfxV,WAAY,IACd,QAHa,OAAAqI,EAAApF,IAKQ,CAAEyI,KALVrD,EAAA5D,IAK4B,QAAA,MAAA4D,EAAA4D,KAAA5D,EAAA5D,EAAA,QAAA,OAAA4D,EAAApF,QAAA+E,oCAhHrC,OAoHb,SApHaS,GAAA,OAAAE,EAAAvF,WAAAC,eAAAmC,EAsHRiH,wBAAY,IAAAC,EAAA/J,EAAAC,IAAAC,GAAlB,SAAA+F,EAAAC,GAAA,IAAAjD,EAAAd,EAAA2Q,EAAA3D,EAAA4D,EAAAC,EAAAC,EAAA7C,EAAA8C,EAAAC,EAAAC,EAAArS,EAAAsS,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA7L,EAAA,OAAA/H,IAAAyD,YAAAyD,GAAA,cAAAA,EAAAmC,EAAAnC,EAAAxD,GAAA,OAKQ,OALaV,EAAeiD,EAAfjD,gBAAiBd,EAAM+D,EAAN/D,OAAQgN,YAAF2D,EAAA5M,EAAEiJ,SAAU,eAAc2D,EAAA3L,EAAAmC,IAExD8G,EAAalO,QAASC,EAAAA,EAAUrF,KAAKD,OAAOsF,QAC5C+Q,EAAc,IAAI3D,YAAqBtM,GAE7CkE,EAAAxD,IACuByM,EAAW6B,qBAAqBiB,GAAY,OAaZ,OAZjDE,SADAD,EAAQhM,EAAArF,WACciR,EAARI,EAAUlI,eAAK8H,EAAfA,EAAiB/K,cAAY+K,EAA7BA,EAA+Bb,eAA/Ba,EAAuCZ,KAGrDpR,SAAQiS,QAAGI,SAAAA,EAAYrS,UAAQiS,EAAI,EACnCK,SAASJ,QAAGG,SAAAA,EAAYU,QAAMb,EAAI,IAGpCK,EAAY,GACZC,EAAc,GACdC,EAAY,GAAErM,EAAAmC,IAGRoK,SAAGD,EAAG/D,EAAYP,IAAQsE,EAAI7D,MAAIC,YAAW1I,EAAAxD,KAC5B,IAAIoQ,qBAAoBC,UAAS,OAClDL,EADQxM,EAAArF,EACamS,gBAAgBP,GAAKQ,UAC1CN,EAAW,IAAIO,IAAIR,EAAUS,KAAI,SAACC,GAAI,MAAK,CAACA,EAAKrP,QAASqP,QAC1DR,EAAQD,EAAShT,IAAIsS,EAAYoB,eAGnChB,EAAYO,EAAMzJ,KAClBmJ,EAAcM,EAAMxJ,OACpBmJ,EAAYK,EAAMU,SAAW,IAChCpN,EAAAxD,IAAA,MAAA,OAAAwD,EAAAmC,IAEDkL,QAAQC,KAAK,4BAFZtN,EAAArF,GAE8C,OAclD,OAVIwR,IAAWA,EAAYrQ,EAAgByR,MAAM,EAAG,GAAK,OACrDnB,IAAaA,EAAc,OAE1BvL,EAAkB,CACpBoC,KAAMkJ,EACNjJ,OAAQkJ,EACRvO,QAAS/B,EACTlC,SAAAA,EACA4T,QAASnB,GAAa,GACtBlJ,aAAc4C,OAAOmG,GAAUhG,KAAAlM,IAAG,GAAMJ,IAAUU,YACrD0F,EAAA7G,IAEqBnB,KAAM6I,IAAO,OAAA,MAAAb,EAAAmC,IAAAnC,EAAArF,EAAA,OAAA,OAAAqF,EAAA7G,QAAA2F,0BA/CzB,OAmDjB,SAnDiByC,GAAA,OAAAqB,EAAAtJ,WAAAC,eAAAmC,EAqDJiP,8BAAkB,IAAA8C,EAAA5U,EAAAC,IAAAC,GAAxB,SAAA2I,EAAyBuH,GAAiC,IAAAU,EAAAC,EAAA1I,EAAAwM,EAAA,OAAA5U,IAAAyD,YAAA2F,GAAA,cAAAA,EAAAC,EAAAD,EAAA1F,GAAA,OAE/B,OAD3BmN,EAAmB,KACnBC,EAAmB,EAAQ1H,EAAAC,IAAAD,EAAA1F,IAGRyM,EAAW0E,8BAA6B,QAArDzM,EAAIgB,EAAAvH,GACDqJ,OAAS,IAER0J,EAASxM,EAAK+L,KAAI,SAAAW,GAAC,OAAIA,EAAEC,qBAAmBC,MAAK,SAAC3U,EAAG4U,GAAC,OAAK5U,EAAI4U,KACrEnE,EAAmB8D,EAAOxH,KAAKC,MAAMuH,EAAO1J,OAAS,KAAO,GAC/D9B,EAAA1F,IAAA,MAAA,OAAA0F,EAAAC,IAEDkL,QAAQC,KAAK,6DAA6D,OAAA,OAAApL,EAAA/I,IAGvE,CAAEwQ,iBAAAA,EAAkBC,iBAAAA,OAAkBlI,oBAfjB,OAgB/B,SAhB+BgB,GAAA,OAAA+K,EAAAnU,WAAAC,eAAAwP,GArOLvQ,GCzBlBwV,EAAiB,CAC5BC,IAAK9S,EACL+S,IAAKnG,EACLoG,IAAKpF,GCIMqF,aAKT,SAAAA,EAAAvS,OAAuBzD,EAAOyD,EAAPzD,QAAS4C,EAAMa,EAANb,OAC5BrF,KAAK0Y,QADYxS,EAAPwS,QAEV1Y,KAAKyC,QAAUA,EACfzC,KAAKqF,OAASA,EAYjB,OAXAoT,EAAAlW,UAEDoW,UAAA,WAQI,OAAO,IAAIC,EAPSP,EAAerY,KAAK0Y,UAEd,CACtBjW,QAASzC,KAAKyC,QACd4C,OAAQrF,KAAKqF,UAIpBoT"}
|