@wormhole-foundation/wormhole-connect 2.5.0-beta.0-development → 2.5.0-beta.2-development
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/assets/{aptos-t5JANz4b.js → aptos-BGyyK8mz.js} +3 -3
- package/dist/assets/{aptos-DvAOSqnD.js → aptos-Cepohe0c.js} +1 -1
- package/dist/assets/{blake2b-CzqSqyTv.js → blake2b-BwI-z5NJ.js} +1 -1
- package/dist/assets/{ccip-4EBcfi6P.js → ccip-BpjdU5zN.js} +1 -1
- package/dist/assets/{chunk-IMTC3J2M-Cms0K4gx.js → chunk-IMTC3J2M-CWE1FuDc.js} +1 -1
- package/dist/assets/events-6PekJgMN.js +1 -0
- package/dist/assets/{evm-8e-eySdo.js → evm-DS7RCBlt.js} +2 -2
- package/dist/assets/{evm-CYjbe4kH.js → evm-DvDOQf0K.js} +4 -4
- package/dist/assets/{index-M2j4uONF.js → index-5kmPKAJ_.js} +1 -1
- package/dist/assets/{index-DALVDBZq.js → index-BP8gdgNH.js} +1 -1
- package/dist/assets/{index-BgVVAYar.js → index-BXRb91Mn.js} +1 -1
- package/dist/assets/{index-SO_H3W5I.js → index-Bbr14gKC.js} +1 -1
- package/dist/assets/index-BjVbgKwL.js +1 -0
- package/dist/assets/{index-JtvUouOr.js → index-BwPu1wGj.js} +1 -1
- package/dist/assets/{index-CwGBYrGm.js → index-BxXKtU8j.js} +1 -1
- package/dist/assets/{index-BKj7Inys.js → index-BzNSt2uL.js} +1 -1
- package/dist/assets/{index-CSHmWPOV.js → index-C1f05Vbe.js} +1 -1
- package/dist/assets/{index-BcX-2q-J.js → index-C74fy0qh.js} +1 -1
- package/dist/assets/{index-Dl17aI3S.js → index-CCOom38X.js} +1 -1
- package/dist/assets/{index-C0rvraea.js → index-CHnF49kB.js} +1 -1
- package/dist/assets/{index-DmaqQuhH.js → index-CyxmcHOs.js} +1 -1
- package/dist/assets/{index-Chd_bwGM.js → index-D1MoRUWm.js} +1 -1
- package/dist/assets/{index-CqA1lXp5.js → index-D54DXHBu.js} +1 -1
- package/dist/assets/index-D8nnAO88.js +1 -0
- package/dist/assets/index-DpMc0uqY.js +1 -0
- package/dist/assets/{index-Ced_GF9G.js → index-FNyibGfB.js} +2 -2
- package/dist/assets/{index-D9U4BOHM.js → index-X7Qc-hll.js} +1 -1
- package/dist/assets/{index-CcMXeWAX.js → index-YqzS8F8M.js} +2 -2
- package/dist/assets/{index.es-Bzsluoyw.js → index.es-B2WvD5Rz.js} +6 -6
- package/dist/assets/{solana-BHeUantu.js → solana-Dj3oh4lV.js} +2 -2
- package/dist/assets/solana-DseaNtL0.js +2 -0
- package/dist/assets/solanaEmbed.esm-xl7iC7nm.js +37 -0
- package/dist/assets/sui-BdOrw1dc.js +2 -0
- package/dist/assets/{sui-CLrvrAHM.js → sui-Ck-FZzH_.js} +1 -1
- package/dist/assets/unsignedTransaction-arVvzoJx.js +1 -0
- package/dist/main.js +102 -102
- package/dist/src/AppRouter.d.ts.map +1 -1
- package/dist/src/utils/coingecko.d.ts.map +1 -1
- package/lib/{aptos-By3qLiAP.js → aptos-BHFBFxf9.js} +1 -1
- package/lib/{aptos-C3Ph4uY9.mjs → aptos-BusONhYq.mjs} +5 -5
- package/lib/{aptos-Cs46Nns5.mjs → aptos-DS0eK_De.mjs} +2 -2
- package/lib/{aptos-D7X5GMcO.js → aptos-Dqp93_ct.js} +2 -2
- package/lib/{base64-B-n8C-1n.js → base64-Cjk6rii_.js} +1 -1
- package/lib/{base64-DxqKuhqD.mjs → base64-Vgzj53Io.mjs} +1 -1
- package/lib/{ccip-BoG9ZHRV.js → ccip-BLUli_Dz.js} +1 -1
- package/lib/{ccip-DgwbitdX.mjs → ccip-FbY2UZlg.mjs} +1 -1
- package/lib/{chunk-IMTC3J2M-DfLEkM5Z.js → chunk-IMTC3J2M-6yduhw0s.js} +1 -1
- package/lib/{chunk-IMTC3J2M-w136PyXJ.mjs → chunk-IMTC3J2M-AkEA0_z6.mjs} +3 -3
- package/lib/{evm-Bta1KBsb.js → evm-BB0d_Gf4.js} +2 -2
- package/lib/{evm--NPB9x1d.mjs → evm-DAHEa0cY.mjs} +5 -5
- package/lib/{evm-BwXOj4Er.js → evm-DZww7tTt.js} +3 -3
- package/lib/{evm-OXQXmbRf.mjs → evm-gEzFFEsO.mjs} +6 -6
- package/lib/{index-C2jvFfvC.js → index-6m6Q8Vsa.js} +1 -1
- package/lib/{index-0m16n7L7.js → index-8STuBnQE.js} +1 -1
- package/lib/{index-hFtbBndd.js → index-B5i1j7Dy.js} +1 -1
- package/lib/{index-CoEGiDGu.js → index-BZh72NtL.js} +1 -1
- package/lib/{index-C86P0A0Y.mjs → index-BaMrMiTv.mjs} +1 -1
- package/lib/{index-BEHglvs0.js → index-BbxXJYWg.js} +1 -1
- package/lib/{index-ByicGRKs.mjs → index-Bcl7n3KD.mjs} +2 -2
- package/lib/{index-Bi6PAFR8.mjs → index-BeYO1LV3.mjs} +2 -2
- package/lib/{index-wsfzS6PN.js → index-Bhgci81L.js} +120 -120
- package/lib/{index-CWffCIQl.js → index-BuPKwE_4.js} +1 -1
- package/lib/{index-C5tynAhb.mjs → index-C27ZY3oS.mjs} +1 -1
- package/lib/{index-bDliG7yg.mjs → index-C6YOw6gB.mjs} +4 -4
- package/lib/{index-1WX3nZoM.mjs → index-CA09NOzo.mjs} +3 -3
- package/lib/index-CHaex8L3.mjs +75 -0
- package/lib/{index-B5z5oFY1.js → index-CSK3DRpf.js} +1 -1
- package/lib/{index-Cslbrg97.js → index-CT45reKG.js} +1 -1
- package/lib/{index-PnMJX4OC.mjs → index-CkXJo6xD.mjs} +1 -1
- package/lib/{index-FGc8swXY.mjs → index-Cs1dlfzD.mjs} +1 -1
- package/lib/{index-CKtZvS3X.mjs → index-CxTd6N-A.mjs} +2 -2
- package/lib/{index-CGbtcED2.mjs → index-D9hjnIst.mjs} +2 -2
- package/lib/{index-CksJcNrV.mjs → index-DDZaEBsC.mjs} +3 -3
- package/lib/{index-CDwpyfnd.mjs → index-DR-fv3uE.mjs} +2 -2
- package/lib/{index-BGqNMVpQ.js → index-DUC1gOTG.js} +1 -1
- package/lib/{index-Bpx_Rf1J.js → index-DUZnVNwZ.js} +1 -1
- package/lib/{index-DLiQpgMj.js → index-DXzXHly-.js} +1 -1
- package/lib/{index-MytorfyK.mjs → index-D_PIxJ0d.mjs} +2 -2
- package/lib/index-D_XBMeuk.js +1 -0
- package/lib/{index-DSejRtdA.js → index-DcYZkDfF.js} +1 -1
- package/lib/{index-cyTUScMF.js → index-DhR1_nfh.js} +1 -1
- package/lib/index-DhowVYVk.mjs +191 -0
- package/lib/{index-BLxoZ8qT.js → index-DlNp9VMO.js} +1 -1
- package/lib/{index-zMaT9P4V.mjs → index-DpeIjsSi.mjs} +1 -1
- package/lib/{index-B3smMSuW.js → index-Ds5QMWJr.js} +1 -1
- package/lib/{index-BXc3l4Br.mjs → index-Ds6Q5qfX.mjs} +2 -2
- package/lib/{index-DlW1-aGm.js → index-DtjJKYjA.js} +1 -1
- package/lib/{index-ILKgpNXM.js → index-FoZ3qnSm.js} +1 -1
- package/lib/{index-CoX_24Ky.mjs → index-GSQqQOXb.mjs} +1 -1
- package/lib/{index-m0543tB2.mjs → index-LdDD7AAy.mjs} +20959 -32801
- package/lib/index-OqOcvaDE.mjs +654 -0
- package/lib/{index-50mhIuON.mjs → index-QCqnETT_.mjs} +2 -2
- package/lib/index-j8CdhHvQ.js +1 -0
- package/lib/{index-Dt0J9sau.js → index-pWRTEePn.js} +1 -1
- package/lib/{index-DPM7TGSv.mjs → index-pg4EQbm-.mjs} +11 -2
- package/lib/index-s9pQs8eO.js +1 -0
- package/lib/{index-CANn2DFq.mjs → index-tI4rmxN8.mjs} +1 -1
- package/lib/{index-NTAse-vE.js → index-u05I0QmU.js} +1 -1
- package/lib/{index.es-DIL345_I.js → index.es-BeAVotPr.js} +2 -2
- package/lib/{index.es-Bh1QXm67.mjs → index.es-Z5ZsZIyC.mjs} +5 -5
- package/lib/index.js +1 -1
- package/lib/index.mjs +19 -19
- package/lib/{signer-CeNONJjb.mjs → signer-B0f07_6U.mjs} +1 -1
- package/lib/{signer-Br2-fgMa.js → signer-yr6Zpc2i.js} +1 -1
- package/lib/{solana-C5lAA_Eh.mjs → solana-C-LeRjT-.mjs} +4 -4
- package/lib/solana-Ci7N1M7R.js +1 -0
- package/lib/solana-DCefclYK.mjs +17 -0
- package/lib/{solana-Bwwk-8HE.js → solana-DWYDxAWP.js} +1 -1
- package/lib/{solanaEmbed.esm-_NPc8tZC.mjs → solanaEmbed.esm-CEtmCHNm.mjs} +1 -1
- package/lib/{solanaEmbed.esm-BMTrlSVI.js → solanaEmbed.esm-D5pFIuXZ.js} +1 -1
- package/lib/src/AppRouter.d.ts.map +1 -1
- package/lib/src/utils/coingecko.d.ts.map +1 -1
- package/lib/sui-756LVCZm.js +1 -0
- package/lib/{sui-zLYQBpSC.js → sui-BIUo4whG.js} +1 -1
- package/lib/sui-BuI3_sI0.mjs +585 -0
- package/lib/{sui-X62i5q3_.mjs → sui-naAV3r83.mjs} +1 -1
- package/package.json +17 -17
- package/dist/assets/index-BRtMY3at.js +0 -1
- package/dist/assets/index-BUlVFUMr.js +0 -1
- package/dist/assets/index-RBS_ALc7.js +0 -1
- package/dist/assets/solana-BEFCVrXa.js +0 -2
- package/dist/assets/solanaEmbed.esm-B7A7qKmk.js +0 -37
- package/dist/assets/sui-C1wbtvIC.js +0 -2
- package/lib/index-CNkTJOH_.js +0 -1
- package/lib/index-DN6dWOSB.js +0 -1
- package/lib/index-DUOnxuE_.mjs +0 -252
- package/lib/index-DqFY4i5u.js +0 -1
- package/lib/index-Eomc9IwB.mjs +0 -936
- package/lib/index-fkzogQYE.mjs +0 -376
- package/lib/solana-4Qcfxe9o.js +0 -1
- package/lib/solana-DM9nG3cQ.mjs +0 -17
- package/lib/sui-BvJu9wTN.mjs +0 -701
- package/lib/sui-pGBefbTJ.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
var M=Object.defineProperty;var V=(p,e,t)=>e in p?M(p,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):p[e]=t;var u=(p,e,t)=>V(p,typeof e!="symbol"?e+"":e,t);import{
|
|
1
|
+
var M=Object.defineProperty;var V=(p,e,t)=>e in p?M(p,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):p[e]=t;var u=(p,e,t)=>V(p,typeof e!="symbol"?e+"":e,t);import{cc as D,aU as T,aM as I,cd as S,K as b,aR as s,ce as _,cf as j,aw as B,az as F,cg as f,ch as h,ci as G,cj as g,ck as H,p as y,cl as K,aa as Y,cm as J,cn as X,co as Z,cp as tt,aB as et}from"../main.js";import{EvmTokenBridge as nt}from"./index-5kmPKAJ_.js";const v=new D(["function start((bytes32,address,address,address,address,address,uint256,uint256,uint256,uint256)) returns (address,uint16,uint64)","function receiveMessageAndSwap(bytes)"]),ot=new D(["function quoteExactInputSingle((address,address,uint256,uint24,uint160)) public view returns (uint256,uint160,uint32,uint256)"]),st="https://gfx.relayers.xlabs.xyz/api/v1/swap/quote";class rt{static async quoteRelayer(e,t,o){var i;if(T(t)||T(o))throw new Error("how did you get here tho?");const n=I.encode(t.toUniversalAddress().toUint8Array(),!1),r=I.encode(o.toUniversalAddress().toUint8Array(),!1),a={targetChain:S(e),sourceToken:n,targetToken:r};try{const c=await b.post(st,a);return BigInt(c.data.fee)}catch(c){throw b.isAxiosError(c)?new Error(`Error getting relayer fee: ${(i=c.response)==null?void 0:i.statusText}`):c}}}const A=100,x={ETH:[s.tokenId("Arbitrum","native"),s.tokenId("Base","native"),s.tokenId("Ethereum","native"),s.tokenId("Optimism","native")],WETH:[s.tokenId("Arbitrum","0x82aF49447D8a07e3bd95BD0d56f35241523fBab1"),s.tokenId("Avalanche","0x49D5c2BdFfac6CE2BFdB6640F4F80f226bc10bAB"),s.tokenId("Base","0x4200000000000000000000000000000000000006"),s.tokenId("Bsc","0x2170Ed0880ac9A755fd29B2688956BD959F933F8"),s.tokenId("Ethereum","0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"),s.tokenId("Optimism","0x4200000000000000000000000000000000000006"),s.tokenId("Polygon","0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619")],wstETH:[s.tokenId("Arbitrum","0x5979D7b546E38E414F7E9822514be443A4800529"),s.tokenId("Base","0xc1CBa3fCea344f92D9239c08C0568f6F2F0ee452"),s.tokenId("Ethereum","0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0"),s.tokenId("Optimism","0x1F32b1c2345538c0c6f582fCB022739c4A194Ebb"),s.tokenId("Polygon","0x03b54A6e9a984069379fae1a4fC4dBAE93B3bCCD")],USDT:[s.tokenId("Arbitrum","0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9"),s.tokenId("Avalanche","0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7"),s.tokenId("Base","0xfde4C96c8593536E31F229EA8f37b2ADa2699bb2"),s.tokenId("Bsc","0x55d398326f99059fF775485246999027B3197955"),s.tokenId("Ethereum","0xdAC17F958D2ee523a2206206994597C13D831ec7"),s.tokenId("Optimism","0x94b008aA00579c1307B0EF2c499aD98a8ce58e58"),s.tokenId("Polygon","0xc2132D05D31c914a87C6611C10748AEb04B58e8F"),s.tokenId("Celo","0x48065fbBE25f71C9282ddf5e1cD6D6A887483D5e")]};class m{constructor(e,t,o,n){u(this,"network");u(this,"chain");u(this,"provider");u(this,"contracts");u(this,"chainId");u(this,"core");u(this,"tokenBridge");if(this.network=e,this.chain=t,this.provider=o,this.contracts=n,!n.portico)throw new Error("Unsupported chain, no contract addresses for: "+t);this.core=new _(e,t,o,n),this.tokenBridge=new nt(e,t,o,n),this.chainId=j.get(e,t)}static async fromRpc(e,t){const[o,n]=await B.chainFromRpc(e),r=t[n];if(r.network!==o)throw new Error(`Network mismatch: ${r.network} != ${o}`);return new m(o,n,e,r.contracts)}async*transfer(e,t,o,n,r,d,a){const{minAmountStart:i,minAmountFinish:c}=a.swapAmounts;if(i===0n)throw new Error("Invalid min swap amount");if(c===0n)throw new Error("Invalid min swap amount");const w=new F(e).toString(),[k,E]=f(this.network,this.chain,o),[U,P]=f(this.network,t.chain,r),l=h(E),q=h(await this.getTransferrableToken(l)),R=h(t),N=h(P),O=new Date().valueOf()%2**4,$=G.serializeFlagSet({flags:{shouldWrapNative:k,shouldUnwrapNative:U},recipientChain:S(t.chain),bridgeNonce:O,feeTierStart:A,feeTierFinish:A,padding:new Uint8Array(19)}),Q=v.encodeFunctionData("start",[[$,l.toLowerCase(),q,N.toLowerCase(),R,d,n.toString(),i.toString(),c.toString(),a.relayerFee.toString()]]),W=this.getTokenGroup(E.address.toString()),C=this.getPorticoAddress(W);k||(yield*this.approve(l,w,n,C));const z=await this.core.getMessageFee(),L={to:C,data:Q,value:z+(k?n:0n)};yield this.createUnsignedTransaction(g(L,w),"PorticoBridge.Transfer")}async*redeem(e,t){const o=H(t.payload.payload.flagSet.recipientChain),n=t.payload.payload.finalTokenAddress.toNative(o).toString(),r=this.getTokenGroup(n),d=this.getPorticoAddress(r),i=await new y(d,v.fragments,this.provider).getFunction("receiveMessageAndSwap").populateTransaction(K(t)),c=new F(e).toString();yield this.createUnsignedTransaction(g(i,c),"PorticoBridge.Redeem")}async isTransferCompleted(e){return await this.tokenBridge.tokenBridge.isTransferCompleted(Y(e.hash))}async quoteSwap(e,t,o,n){const[,r]=f(this.network,this.chain,e),[,d]=f(this.network,this.chain,t),a=h(r),i=h(d);if(J(a,i))return n;const c=this.getQuoterAddress(o);return(await new y(c,ot.fragments,this.provider).getFunction("quoteExactInputSingle").staticCall([a,i,n,A,0]))[0]}async quoteRelay(e,t){return await rt.quoteRelayer(this.chain,e,t)}async getTransferrableToken(e){const t=s.tokenId(this.chain,e),[,o]=f(this.network,this.chain,t);if(this.chain==="Ethereum")return o;const n=Object.values(x).find(a=>a.find(i=>i.chain===this.chain&&h(i)===h(o)));if(!n)throw new Error(`No token group found for ${e} on ${this.chain}`);const r=n.find(a=>a.chain==="Ethereum");if(!r)throw new Error(`No Ethereum origin token found for ${e} on ${this.chain}`);const d=await this.tokenBridge.getWrappedAsset(r);return s.tokenId(this.chain,d.toString())}supportedTokens(){const e=[];for(const[t,o]of Object.entries(x))for(const n of o)n.chain===this.chain&&e.push({group:t,token:n});return e}getTokenGroup(e){const o=this.supportedTokens().find(n=>h(n.token)===e);if(!o)throw new Error("Token not found");return o.group}async*approve(e,t,o,n){const r=B.getTokenImplementation(this.provider,e);if(await r.allowance(t,n)<o){const a=await r.approve.populateTransaction(n,o);yield this.createUnsignedTransaction(g(a,t),"PorticoBridge.Approve")}}createUnsignedTransaction(e,t){return new X(Z(e,this.chainId),this.network,this.chain,t,!1)}getPorticoAddress(e){const t=this.contracts.portico;return e==="USDT"&&t.porticoPancakeSwap||t.porticoUniswap}getQuoterAddress(e){const t=this.contracts.portico;return e==="USDT"&&t.pancakeSwapQuoterV2||t.uniswapQuoterV2}}tt(et,"PorticoBridge",m);export{m as EvmPorticoBridge};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{bZ as Ft,j as Mt,i as qr,H as Dt}from"../main.js";const Bt="logger/5.8.0";let bt=!1,xt=!1;const Jr={debug:1,default:2,info:2,warning:3,error:4,off:5};let Nt=Jr.default,Qr=null;function Gt(){try{const e=[];if(["NFD","NFC","NFKD","NFKC"].forEach(t=>{try{if("test".normalize(t)!=="test")throw new Error("bad normalize")}catch{e.push(t)}}),e.length)throw new Error("missing "+e.join(", "));if("é".normalize("NFD")!=="é")throw new Error("broken implementation")}catch(e){return e.message}return null}const At=Gt();var nt;(function(e){e.DEBUG="DEBUG",e.INFO="INFO",e.WARNING="WARNING",e.ERROR="ERROR",e.OFF="OFF"})(nt||(nt={}));var U;(function(e){e.UNKNOWN_ERROR="UNKNOWN_ERROR",e.NOT_IMPLEMENTED="NOT_IMPLEMENTED",e.UNSUPPORTED_OPERATION="UNSUPPORTED_OPERATION",e.NETWORK_ERROR="NETWORK_ERROR",e.SERVER_ERROR="SERVER_ERROR",e.TIMEOUT="TIMEOUT",e.BUFFER_OVERRUN="BUFFER_OVERRUN",e.NUMERIC_FAULT="NUMERIC_FAULT",e.MISSING_NEW="MISSING_NEW",e.INVALID_ARGUMENT="INVALID_ARGUMENT",e.MISSING_ARGUMENT="MISSING_ARGUMENT",e.UNEXPECTED_ARGUMENT="UNEXPECTED_ARGUMENT",e.CALL_EXCEPTION="CALL_EXCEPTION",e.INSUFFICIENT_FUNDS="INSUFFICIENT_FUNDS",e.NONCE_EXPIRED="NONCE_EXPIRED",e.REPLACEMENT_UNDERPRICED="REPLACEMENT_UNDERPRICED",e.UNPREDICTABLE_GAS_LIMIT="UNPREDICTABLE_GAS_LIMIT",e.TRANSACTION_REPLACED="TRANSACTION_REPLACED",e.ACTION_REJECTED="ACTION_REJECTED"})(U||(U={}));const wt="0123456789abcdef";class p{constructor(t){Object.defineProperty(this,"version",{enumerable:!0,value:t,writable:!1})}_log(t,n){const u=t.toLowerCase();Jr[u]==null&&this.throwArgumentError("invalid log level name","logLevel",t),!(Nt>Jr[u])&&console.log.apply(console,n)}debug(...t){this._log(p.levels.DEBUG,t)}info(...t){this._log(p.levels.INFO,t)}warn(...t){this._log(p.levels.WARNING,t)}makeError(t,n,u){if(xt)return this.makeError("censored error",n,{});n||(n=p.errors.UNKNOWN_ERROR),u||(u={});const s=[];Object.keys(u).forEach(w=>{const x=u[w];try{if(x instanceof Uint8Array){let D="";for(let k=0;k<x.length;k++)D+=wt[x[k]>>4],D+=wt[x[k]&15];s.push(w+"=Uint8Array(0x"+D+")")}else s.push(w+"="+JSON.stringify(x))}catch{s.push(w+"="+JSON.stringify(u[w].toString()))}}),s.push(`code=${n}`),s.push(`version=${this.version}`);const I=t;let _="";switch(n){case U.NUMERIC_FAULT:{_="NUMERIC_FAULT";const w=t;switch(w){case"overflow":case"underflow":case"division-by-zero":_+="-"+w;break;case"negative-power":case"negative-width":_+="-unsupported";break;case"unbound-bitwise-result":_+="-unbound-result";break}break}case U.CALL_EXCEPTION:case U.INSUFFICIENT_FUNDS:case U.MISSING_NEW:case U.NONCE_EXPIRED:case U.REPLACEMENT_UNDERPRICED:case U.TRANSACTION_REPLACED:case U.UNPREDICTABLE_GAS_LIMIT:_=n;break}_&&(t+=" [ See: https://links.ethers.org/v5-errors-"+_+" ]"),s.length&&(t+=" ("+s.join(", ")+")");const M=new Error(t);return M.reason=I,M.code=n,Object.keys(u).forEach(function(w){M[w]=u[w]}),M}throwError(t,n,u){throw this.makeError(t,n,u)}throwArgumentError(t,n,u){return this.throwError(t,p.errors.INVALID_ARGUMENT,{argument:n,value:u})}assert(t,n,u,s){t||this.throwError(n,u,s)}assertArgument(t,n,u,s){t||this.throwArgumentError(n,u,s)}checkNormalize(t){At&&this.throwError("platform missing String.prototype.normalize",p.errors.UNSUPPORTED_OPERATION,{operation:"String.prototype.normalize",form:At})}checkSafeUint53(t,n){typeof t=="number"&&(n==null&&(n="value not safe"),(t<0||t>=9007199254740991)&&this.throwError(n,p.errors.NUMERIC_FAULT,{operation:"checkSafeInteger",fault:"out-of-safe-range",value:t}),t%1&&this.throwError(n,p.errors.NUMERIC_FAULT,{operation:"checkSafeInteger",fault:"non-integer",value:t}))}checkArgumentCount(t,n,u){u?u=": "+u:u="",t<n&&this.throwError("missing argument"+u,p.errors.MISSING_ARGUMENT,{count:t,expectedCount:n}),t>n&&this.throwError("too many arguments"+u,p.errors.UNEXPECTED_ARGUMENT,{count:t,expectedCount:n})}checkNew(t,n){(t===Object||t==null)&&this.throwError("missing new",p.errors.MISSING_NEW,{name:n.name})}checkAbstract(t,n){t===n?this.throwError("cannot instantiate abstract class "+JSON.stringify(n.name)+" directly; use a sub-class",p.errors.UNSUPPORTED_OPERATION,{name:t.name,operation:"new"}):(t===Object||t==null)&&this.throwError("missing new",p.errors.MISSING_NEW,{name:n.name})}static globalLogger(){return Qr||(Qr=new p(Bt)),Qr}static setCensorship(t,n){if(!t&&n&&this.globalLogger().throwError("cannot permanently disable censorship",p.errors.UNSUPPORTED_OPERATION,{operation:"setCensorship"}),bt){if(!t)return;this.globalLogger().throwError("error censorship permanent",p.errors.UNSUPPORTED_OPERATION,{operation:"setCensorship"})}xt=!!t,bt=!!n}static setLogLevel(t){const n=Jr[t.toLowerCase()];if(n==null){p.globalLogger().warn("invalid log level - "+t);return}Nt=n}static from(t){return new p(t)}}p.errors=U;p.levels=nt;const zt="bytes/5.8.0",b=new p(zt);function Rt(e){return!!e.toHexString}function G(e){return e.slice||(e.slice=function(){const t=Array.prototype.slice.call(arguments);return G(new Uint8Array(Array.prototype.slice.apply(e,t)))}),e}function Ht(e){return v(e)&&!(e.length%2)||jr(e)}function mt(e){return typeof e=="number"&&e==e&&e%1===0}function jr(e){if(e==null)return!1;if(e.constructor===Uint8Array)return!0;if(typeof e=="string"||!mt(e.length)||e.length<0)return!1;for(let t=0;t<e.length;t++){const n=e[t];if(!mt(n)||n<0||n>=256)return!1}return!0}function F(e,t){if(t||(t={}),typeof e=="number"){b.checkSafeUint53(e,"invalid arrayify value");const n=[];for(;e;)n.unshift(e&255),e=parseInt(String(e/256));return n.length===0&&n.push(0),G(new Uint8Array(n))}if(t.allowMissingPrefix&&typeof e=="string"&&e.substring(0,2)!=="0x"&&(e="0x"+e),Rt(e)&&(e=e.toHexString()),v(e)){let n=e.substring(2);n.length%2&&(t.hexPad==="left"?n="0"+n:t.hexPad==="right"?n+="0":b.throwArgumentError("hex data is odd-length","value",e));const u=[];for(let s=0;s<n.length;s+=2)u.push(parseInt(n.substring(s,s+2),16));return G(new Uint8Array(u))}return jr(e)?G(new Uint8Array(e)):b.throwArgumentError("invalid arrayify value","value",e)}function ie(e){const t=e.map(s=>F(s)),n=t.reduce((s,I)=>s+I.length,0),u=new Uint8Array(n);return t.reduce((s,I)=>(u.set(I,s),s+I.length),0),G(u)}function Lt(e,t){e=F(e),e.length>t&&b.throwArgumentError("value out of range","value",arguments[0]);const n=new Uint8Array(t);return n.set(e,t-e.length),G(n)}function v(e,t){return!(typeof e!="string"||!e.match(/^0x[0-9A-Fa-f]*$/)||t&&e.length!==2+2*t)}const rt="0123456789abcdef";function S(e,t){if(t||(t={}),typeof e=="number"){b.checkSafeUint53(e,"invalid hexlify value");let n="";for(;e;)n=rt[e&15]+n,e=Math.floor(e/16);return n.length?(n.length%2&&(n="0"+n),"0x"+n):"0x00"}if(typeof e=="bigint")return e=e.toString(16),e.length%2?"0x0"+e:"0x"+e;if(t.allowMissingPrefix&&typeof e=="string"&&e.substring(0,2)!=="0x"&&(e="0x"+e),Rt(e))return e.toHexString();if(v(e))return e.length%2&&(t.hexPad==="left"?e="0x0"+e.substring(2):t.hexPad==="right"?e+="0":b.throwArgumentError("hex data is odd-length","value",e)),e.toLowerCase();if(jr(e)){let n="0x";for(let u=0;u<e.length;u++){let s=e[u];n+=rt[(s&240)>>4]+rt[s&15]}return n}return b.throwArgumentError("invalid hexlify value","value",e)}function oe(e){if(typeof e!="string")e=S(e);else if(!v(e)||e.length%2)return null;return(e.length-2)/2}function fe(e,t,n){return typeof e!="string"?e=S(e):(!v(e)||e.length%2)&&b.throwArgumentError("invalid hexData","value",e),t=2+2*t,n!=null?"0x"+e.substring(t,2+2*n):"0x"+e.substring(t)}function ue(e){let t="0x";return e.forEach(n=>{t+=S(n).substring(2)}),t}function tt(e,t){for(typeof e!="string"?e=S(e):v(e)||b.throwArgumentError("invalid hex string","value",e),e.length>2*t+2&&b.throwArgumentError("value out of range","value",arguments[1]);e.length<2*t+2;)e="0x0"+e.substring(2);return e}function ae(e){const t={r:"0x",s:"0x",_vs:"0x",recoveryParam:0,v:0,yParityAndS:"0x",compact:"0x"};if(Ht(e)){let n=F(e);n.length===64?(t.v=27+(n[32]>>7),n[32]&=127,t.r=S(n.slice(0,32)),t.s=S(n.slice(32,64))):n.length===65?(t.r=S(n.slice(0,32)),t.s=S(n.slice(32,64)),t.v=n[64]):b.throwArgumentError("invalid signature string","signature",e),t.v<27&&(t.v===0||t.v===1?t.v+=27:b.throwArgumentError("signature invalid v byte","signature",e)),t.recoveryParam=1-t.v%2,t.recoveryParam&&(n[32]|=128),t._vs=S(n.slice(32,64))}else{if(t.r=e.r,t.s=e.s,t.v=e.v,t.recoveryParam=e.recoveryParam,t._vs=e._vs,t._vs!=null){const s=Lt(F(t._vs),32);t._vs=S(s);const I=s[0]>=128?1:0;t.recoveryParam==null?t.recoveryParam=I:t.recoveryParam!==I&&b.throwArgumentError("signature recoveryParam mismatch _vs","signature",e),s[0]&=127;const _=S(s);t.s==null?t.s=_:t.s!==_&&b.throwArgumentError("signature v mismatch _vs","signature",e)}if(t.recoveryParam==null)t.v==null?b.throwArgumentError("signature missing v and recoveryParam","signature",e):t.v===0||t.v===1?t.recoveryParam=t.v:t.recoveryParam=1-t.v%2;else if(t.v==null)t.v=27+t.recoveryParam;else{const s=t.v===0||t.v===1?t.v:1-t.v%2;t.recoveryParam!==s&&b.throwArgumentError("signature recoveryParam mismatch v","signature",e)}t.r==null||!v(t.r)?b.throwArgumentError("signature missing or invalid r","signature",e):t.r=tt(t.r,32),t.s==null||!v(t.s)?b.throwArgumentError("signature missing or invalid s","signature",e):t.s=tt(t.s,32);const n=F(t.s);n[0]>=128&&b.throwArgumentError("signature s out of range","signature",e),t.recoveryParam&&(n[0]|=128);const u=S(n);t._vs&&(v(t._vs)||b.throwArgumentError("signature invalid _vs","signature",e),t._vs=tt(t._vs,32)),t._vs==null?t._vs=u:t._vs!==u&&b.throwArgumentError("signature _vs mismatch v and s","signature",e)}return t.yParityAndS=t._vs,t.compact=t.r+t.yParityAndS.substring(2),t}const Wt="bignumber/5.7.0";var Xr=Ft.BN;const T=new p(Wt),et={},Kt=9007199254740991;let dt=!1;class d{constructor(t,n){t!==et&&T.throwError("cannot call constructor directly; use BigNumber.from",p.errors.UNSUPPORTED_OPERATION,{operation:"new (BigNumber)"}),this._hex=n,this._isBigNumber=!0,Object.freeze(this)}fromTwos(t){return m(E(this).fromTwos(t))}toTwos(t){return m(E(this).toTwos(t))}abs(){return this._hex[0]==="-"?d.from(this._hex.substring(1)):this}add(t){return m(E(this).add(E(t)))}sub(t){return m(E(this).sub(E(t)))}div(t){return d.from(t).isZero()&&R("division-by-zero","div"),m(E(this).div(E(t)))}mul(t){return m(E(this).mul(E(t)))}mod(t){const n=E(t);return n.isNeg()&&R("division-by-zero","mod"),m(E(this).umod(n))}pow(t){const n=E(t);return n.isNeg()&&R("negative-power","pow"),m(E(this).pow(n))}and(t){const n=E(t);return(this.isNegative()||n.isNeg())&&R("unbound-bitwise-result","and"),m(E(this).and(n))}or(t){const n=E(t);return(this.isNegative()||n.isNeg())&&R("unbound-bitwise-result","or"),m(E(this).or(n))}xor(t){const n=E(t);return(this.isNegative()||n.isNeg())&&R("unbound-bitwise-result","xor"),m(E(this).xor(n))}mask(t){return(this.isNegative()||t<0)&&R("negative-width","mask"),m(E(this).maskn(t))}shl(t){return(this.isNegative()||t<0)&&R("negative-width","shl"),m(E(this).shln(t))}shr(t){return(this.isNegative()||t<0)&&R("negative-width","shr"),m(E(this).shrn(t))}eq(t){return E(this).eq(E(t))}lt(t){return E(this).lt(E(t))}lte(t){return E(this).lte(E(t))}gt(t){return E(this).gt(E(t))}gte(t){return E(this).gte(E(t))}isNegative(){return this._hex[0]==="-"}isZero(){return E(this).isZero()}toNumber(){try{return E(this).toNumber()}catch{R("overflow","toNumber",this.toString())}return null}toBigInt(){try{return BigInt(this.toString())}catch{}return T.throwError("this platform does not support BigInt",p.errors.UNSUPPORTED_OPERATION,{value:this.toString()})}toString(){return arguments.length>0&&(arguments[0]===10?dt||(dt=!0,T.warn("BigNumber.toString does not accept any parameters; base-10 is assumed")):arguments[0]===16?T.throwError("BigNumber.toString does not accept any parameters; use bigNumber.toHexString()",p.errors.UNEXPECTED_ARGUMENT,{}):T.throwError("BigNumber.toString does not accept parameters",p.errors.UNEXPECTED_ARGUMENT,{})),E(this).toString(10)}toHexString(){return this._hex}toJSON(t){return{type:"BigNumber",hex:this.toHexString()}}static from(t){if(t instanceof d)return t;if(typeof t=="string")return t.match(/^-?0x[0-9a-f]+$/i)?new d(et,K(t)):t.match(/^-?[0-9]+$/)?new d(et,K(new Xr(t))):T.throwArgumentError("invalid BigNumber string","value",t);if(typeof t=="number")return t%1&&R("underflow","BigNumber.from",t),(t>=Kt||t<=-9007199254740991)&&R("overflow","BigNumber.from",t),d.from(String(t));const n=t;if(typeof n=="bigint")return d.from(n.toString());if(jr(n))return d.from(S(n));if(n)if(n.toHexString){const u=n.toHexString();if(typeof u=="string")return d.from(u)}else{let u=n._hex;if(u==null&&n.type==="BigNumber"&&(u=n.hex),typeof u=="string"&&(v(u)||u[0]==="-"&&v(u.substring(1))))return d.from(u)}return T.throwArgumentError("invalid BigNumber value","value",t)}static isBigNumber(t){return!!(t&&t._isBigNumber)}}function K(e){if(typeof e!="string")return K(e.toString(16));if(e[0]==="-")return e=e.substring(1),e[0]==="-"&&T.throwArgumentError("invalid hex","value",e),e=K(e),e==="0x00"?e:"-"+e;if(e.substring(0,2)!=="0x"&&(e="0x"+e),e==="0x")return"0x00";for(e.length%2&&(e="0x0"+e.substring(2));e.length>4&&e.substring(0,4)==="0x00";)e="0x"+e.substring(4);return e}function m(e){return d.from(K(e))}function E(e){const t=d.from(e).toHexString();return t[0]==="-"?new Xr("-"+t.substring(3),16):new Xr(t.substring(2),16)}function R(e,t,n){const u={fault:e,operation:t};return n!=null&&(u.value=n),T.throwError(e,p.errors.NUMERIC_FAULT,u)}function $t(e){return new Xr(e,36).toString(16)}const Jt="properties/5.7.0",vt=new p(Jt);function Xt(e,t,n){Object.defineProperty(e,t,{enumerable:!0,value:n,writable:!1})}function se(e,t){for(let n=0;n<32;n++){if(e[t])return e[t];if(!e.prototype||typeof e.prototype!="object")break;e=Object.getPrototypeOf(e.prototype).constructor}return null}const jt={bigint:!0,boolean:!0,function:!0,number:!0,string:!0};function It(e){if(e==null||jt[typeof e])return!0;if(Array.isArray(e)||typeof e=="object"){if(!Object.isFrozen(e))return!1;const t=Object.keys(e);for(let n=0;n<t.length;n++){let u=null;try{u=e[t[n]]}catch{continue}if(!It(u))return!1}return!0}return vt.throwArgumentError(`Cannot deepCopy ${typeof e}`,"object",e)}function Vt(e){if(It(e))return e;if(Array.isArray(e))return Object.freeze(e.map(t=>it(t)));if(typeof e=="object"){const t={};for(const n in e){const u=e[n];u!==void 0&&Xt(t,n,it(u))}return t}return vt.throwArgumentError(`Cannot deepCopy ${typeof e}`,"object",e)}function it(e){return Vt(e)}class ce{constructor(t){for(const n in t)this[n]=it(t[n])}}var Ot={exports:{}};(function(e){(function(){var t="input is invalid type",n="finalize already called",u=typeof window=="object",s=u?window:{};s.JS_SHA3_NO_WINDOW&&(u=!1);var I=!u&&typeof self=="object",_=!s.JS_SHA3_NO_NODE_JS&&typeof qr.process=="object"&&qr.process.versions&&qr.process.versions.node;_?s=Dt:I&&(s=self);var M=!s.JS_SHA3_NO_COMMON_JS&&!0&&e.exports,w=!s.JS_SHA3_NO_ARRAY_BUFFER&&typeof ArrayBuffer<"u",x="0123456789abcdef".split(""),D=[31,7936,2031616,520093696],k=[4,1024,262144,67108864],Ut=[1,256,65536,16777216],Tt=[6,1536,393216,100663296],O=[0,8,16,24],ft=[1,0,32898,0,32906,2147483648,2147516416,2147483648,32907,0,2147483649,0,2147516545,2147483648,32777,2147483648,138,0,136,0,2147516425,0,2147483658,0,2147516555,0,139,2147483648,32905,2147483648,32771,2147483648,32770,2147483648,128,2147483648,32778,0,2147483658,2147483648,2147516545,2147483648,32896,2147483648,2147483649,0,2147516424,2147483648],ut=[224,256,384,512],Vr=[128,256],at=["hex","buffer","arrayBuffer","array","digest"],st={128:168,256:136};(s.JS_SHA3_NO_NODE_JS||!Array.isArray)&&(Array.isArray=function(r){return Object.prototype.toString.call(r)==="[object Array]"}),w&&(s.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW||!ArrayBuffer.isView)&&(ArrayBuffer.isView=function(r){return typeof r=="object"&&r.buffer&&r.buffer.constructor===ArrayBuffer});for(var ct=function(r,i,o){return function(f){return new N(r,i,r).update(f)[o]()}},ht=function(r,i,o){return function(f,a){return new N(r,i,a).update(f)[o]()}},lt=function(r,i,o){return function(f,a,h,l){return C["cshake"+r].update(f,a,h,l)[o]()}},gt=function(r,i,o){return function(f,a,h,l){return C["kmac"+r].update(f,a,h,l)[o]()}},$=function(r,i,o,f){for(var a=0;a<at.length;++a){var h=at[a];r[h]=i(o,f,h)}return r},Et=function(r,i){var o=ct(r,i,"hex");return o.create=function(){return new N(r,i,r)},o.update=function(f){return o.create().update(f)},$(o,ct,r,i)},Ct=function(r,i){var o=ht(r,i,"hex");return o.create=function(f){return new N(r,i,f)},o.update=function(f,a){return o.create(a).update(f)},$(o,ht,r,i)},Pt=function(r,i){var o=st[r],f=lt(r,i,"hex");return f.create=function(a,h,l){return!h&&!l?C["shake"+r].create(a):new N(r,i,a).bytepad([h,l],o)},f.update=function(a,h,l,c){return f.create(h,l,c).update(a)},$(f,lt,r,i)},kt=function(r,i){var o=st[r],f=gt(r,i,"hex");return f.create=function(a,h,l){return new Yr(r,i,h).bytepad(["KMAC",l],o).bytepad([a],o)},f.update=function(a,h,l,c){return f.create(a,l,c).update(h)},$(f,gt,r,i)},pt=[{name:"keccak",padding:Ut,bits:ut,createMethod:Et},{name:"sha3",padding:Tt,bits:ut,createMethod:Et},{name:"shake",padding:D,bits:Vr,createMethod:Ct},{name:"cshake",padding:k,bits:Vr,createMethod:Pt},{name:"kmac",padding:k,bits:Vr,createMethod:kt}],C={},z=[],P=0;P<pt.length;++P)for(var B=pt[P],J=B.bits,H=0;H<J.length;++H){var Zr=B.name+"_"+J[H];if(z.push(Zr),C[Zr]=B.createMethod(J[H],B.padding),B.name!=="sha3"){var yt=B.name+J[H];z.push(yt),C[yt]=C[Zr]}}function N(r,i,o){this.blocks=[],this.s=[],this.padding=i,this.outputBits=o,this.reset=!0,this.finalized=!1,this.block=0,this.start=0,this.blockCount=1600-(r<<1)>>5,this.byteCount=this.blockCount<<2,this.outputBlocks=o>>5,this.extraBytes=(o&31)>>3;for(var f=0;f<50;++f)this.s[f]=0}N.prototype.update=function(r){if(this.finalized)throw new Error(n);var i,o=typeof r;if(o!=="string"){if(o==="object"){if(r===null)throw new Error(t);if(w&&r.constructor===ArrayBuffer)r=new Uint8Array(r);else if(!Array.isArray(r)&&(!w||!ArrayBuffer.isView(r)))throw new Error(t)}else throw new Error(t);i=!0}for(var f=this.blocks,a=this.byteCount,h=r.length,l=this.blockCount,c=0,A=this.s,g,y;c<h;){if(this.reset)for(this.reset=!1,f[0]=this.block,g=1;g<l+1;++g)f[g]=0;if(i)for(g=this.start;c<h&&g<a;++c)f[g>>2]|=r[c]<<O[g++&3];else for(g=this.start;c<h&&g<a;++c)y=r.charCodeAt(c),y<128?f[g>>2]|=y<<O[g++&3]:y<2048?(f[g>>2]|=(192|y>>6)<<O[g++&3],f[g>>2]|=(128|y&63)<<O[g++&3]):y<55296||y>=57344?(f[g>>2]|=(224|y>>12)<<O[g++&3],f[g>>2]|=(128|y>>6&63)<<O[g++&3],f[g>>2]|=(128|y&63)<<O[g++&3]):(y=65536+((y&1023)<<10|r.charCodeAt(++c)&1023),f[g>>2]|=(240|y>>18)<<O[g++&3],f[g>>2]|=(128|y>>12&63)<<O[g++&3],f[g>>2]|=(128|y>>6&63)<<O[g++&3],f[g>>2]|=(128|y&63)<<O[g++&3]);if(this.lastByteIndex=g,g>=a){for(this.start=g-a,this.block=f[l],g=0;g<l;++g)A[g]^=f[g];L(A),this.reset=!0}else this.start=g}return this},N.prototype.encode=function(r,i){var o=r&255,f=1,a=[o];for(r=r>>8,o=r&255;o>0;)a.unshift(o),r=r>>8,o=r&255,++f;return i?a.push(f):a.unshift(f),this.update(a),a.length},N.prototype.encodeString=function(r){var i,o=typeof r;if(o!=="string"){if(o==="object"){if(r===null)throw new Error(t);if(w&&r.constructor===ArrayBuffer)r=new Uint8Array(r);else if(!Array.isArray(r)&&(!w||!ArrayBuffer.isView(r)))throw new Error(t)}else throw new Error(t);i=!0}var f=0,a=r.length;if(i)f=a;else for(var h=0;h<r.length;++h){var l=r.charCodeAt(h);l<128?f+=1:l<2048?f+=2:l<55296||l>=57344?f+=3:(l=65536+((l&1023)<<10|r.charCodeAt(++h)&1023),f+=4)}return f+=this.encode(f*8),this.update(r),f},N.prototype.bytepad=function(r,i){for(var o=this.encode(i),f=0;f<r.length;++f)o+=this.encodeString(r[f]);var a=i-o%i,h=[];return h.length=a,this.update(h),this},N.prototype.finalize=function(){if(!this.finalized){this.finalized=!0;var r=this.blocks,i=this.lastByteIndex,o=this.blockCount,f=this.s;if(r[i>>2]|=this.padding[i&3],this.lastByteIndex===this.byteCount)for(r[0]=r[o],i=1;i<o+1;++i)r[i]=0;for(r[o-1]|=2147483648,i=0;i<o;++i)f[i]^=r[i];L(f)}},N.prototype.toString=N.prototype.hex=function(){this.finalize();for(var r=this.blockCount,i=this.s,o=this.outputBlocks,f=this.extraBytes,a=0,h=0,l="",c;h<o;){for(a=0;a<r&&h<o;++a,++h)c=i[a],l+=x[c>>4&15]+x[c&15]+x[c>>12&15]+x[c>>8&15]+x[c>>20&15]+x[c>>16&15]+x[c>>28&15]+x[c>>24&15];h%r===0&&(L(i),a=0)}return f&&(c=i[a],l+=x[c>>4&15]+x[c&15],f>1&&(l+=x[c>>12&15]+x[c>>8&15]),f>2&&(l+=x[c>>20&15]+x[c>>16&15])),l},N.prototype.arrayBuffer=function(){this.finalize();var r=this.blockCount,i=this.s,o=this.outputBlocks,f=this.extraBytes,a=0,h=0,l=this.outputBits>>3,c;f?c=new ArrayBuffer(o+1<<2):c=new ArrayBuffer(l);for(var A=new Uint32Array(c);h<o;){for(a=0;a<r&&h<o;++a,++h)A[h]=i[a];h%r===0&&L(i)}return f&&(A[a]=i[a],c=c.slice(0,l)),c},N.prototype.buffer=N.prototype.arrayBuffer,N.prototype.digest=N.prototype.array=function(){this.finalize();for(var r=this.blockCount,i=this.s,o=this.outputBlocks,f=this.extraBytes,a=0,h=0,l=[],c,A;h<o;){for(a=0;a<r&&h<o;++a,++h)c=h<<2,A=i[a],l[c]=A&255,l[c+1]=A>>8&255,l[c+2]=A>>16&255,l[c+3]=A>>24&255;h%r===0&&L(i)}return f&&(c=h<<2,A=i[a],l[c]=A&255,f>1&&(l[c+1]=A>>8&255),f>2&&(l[c+2]=A>>16&255)),l};function Yr(r,i,o){N.call(this,r,i,o)}Yr.prototype=new N,Yr.prototype.finalize=function(){return this.encode(this.outputBits,!0),N.prototype.finalize.call(this)};var L=function(r){var i,o,f,a,h,l,c,A,g,y,X,j,V,Z,Y,q,Q,rr,tr,er,nr,ir,or,fr,ur,ar,sr,cr,hr,lr,gr,Er,pr,yr,br,xr,Nr,Ar,wr,mr,dr,Sr,_r,Rr,vr,Ir,Or,Ur,Tr,Cr,Pr,kr,Fr,Mr,Dr,Br,Gr,zr,Hr,Lr,Wr,Kr,$r;for(f=0;f<48;f+=2)a=r[0]^r[10]^r[20]^r[30]^r[40],h=r[1]^r[11]^r[21]^r[31]^r[41],l=r[2]^r[12]^r[22]^r[32]^r[42],c=r[3]^r[13]^r[23]^r[33]^r[43],A=r[4]^r[14]^r[24]^r[34]^r[44],g=r[5]^r[15]^r[25]^r[35]^r[45],y=r[6]^r[16]^r[26]^r[36]^r[46],X=r[7]^r[17]^r[27]^r[37]^r[47],j=r[8]^r[18]^r[28]^r[38]^r[48],V=r[9]^r[19]^r[29]^r[39]^r[49],i=j^(l<<1|c>>>31),o=V^(c<<1|l>>>31),r[0]^=i,r[1]^=o,r[10]^=i,r[11]^=o,r[20]^=i,r[21]^=o,r[30]^=i,r[31]^=o,r[40]^=i,r[41]^=o,i=a^(A<<1|g>>>31),o=h^(g<<1|A>>>31),r[2]^=i,r[3]^=o,r[12]^=i,r[13]^=o,r[22]^=i,r[23]^=o,r[32]^=i,r[33]^=o,r[42]^=i,r[43]^=o,i=l^(y<<1|X>>>31),o=c^(X<<1|y>>>31),r[4]^=i,r[5]^=o,r[14]^=i,r[15]^=o,r[24]^=i,r[25]^=o,r[34]^=i,r[35]^=o,r[44]^=i,r[45]^=o,i=A^(j<<1|V>>>31),o=g^(V<<1|j>>>31),r[6]^=i,r[7]^=o,r[16]^=i,r[17]^=o,r[26]^=i,r[27]^=o,r[36]^=i,r[37]^=o,r[46]^=i,r[47]^=o,i=y^(a<<1|h>>>31),o=X^(h<<1|a>>>31),r[8]^=i,r[9]^=o,r[18]^=i,r[19]^=o,r[28]^=i,r[29]^=o,r[38]^=i,r[39]^=o,r[48]^=i,r[49]^=o,Z=r[0],Y=r[1],Ir=r[11]<<4|r[10]>>>28,Or=r[10]<<4|r[11]>>>28,cr=r[20]<<3|r[21]>>>29,hr=r[21]<<3|r[20]>>>29,Lr=r[31]<<9|r[30]>>>23,Wr=r[30]<<9|r[31]>>>23,Sr=r[40]<<18|r[41]>>>14,_r=r[41]<<18|r[40]>>>14,yr=r[2]<<1|r[3]>>>31,br=r[3]<<1|r[2]>>>31,q=r[13]<<12|r[12]>>>20,Q=r[12]<<12|r[13]>>>20,Ur=r[22]<<10|r[23]>>>22,Tr=r[23]<<10|r[22]>>>22,lr=r[33]<<13|r[32]>>>19,gr=r[32]<<13|r[33]>>>19,Kr=r[42]<<2|r[43]>>>30,$r=r[43]<<2|r[42]>>>30,Mr=r[5]<<30|r[4]>>>2,Dr=r[4]<<30|r[5]>>>2,xr=r[14]<<6|r[15]>>>26,Nr=r[15]<<6|r[14]>>>26,rr=r[25]<<11|r[24]>>>21,tr=r[24]<<11|r[25]>>>21,Cr=r[34]<<15|r[35]>>>17,Pr=r[35]<<15|r[34]>>>17,Er=r[45]<<29|r[44]>>>3,pr=r[44]<<29|r[45]>>>3,fr=r[6]<<28|r[7]>>>4,ur=r[7]<<28|r[6]>>>4,Br=r[17]<<23|r[16]>>>9,Gr=r[16]<<23|r[17]>>>9,Ar=r[26]<<25|r[27]>>>7,wr=r[27]<<25|r[26]>>>7,er=r[36]<<21|r[37]>>>11,nr=r[37]<<21|r[36]>>>11,kr=r[47]<<24|r[46]>>>8,Fr=r[46]<<24|r[47]>>>8,Rr=r[8]<<27|r[9]>>>5,vr=r[9]<<27|r[8]>>>5,ar=r[18]<<20|r[19]>>>12,sr=r[19]<<20|r[18]>>>12,zr=r[29]<<7|r[28]>>>25,Hr=r[28]<<7|r[29]>>>25,mr=r[38]<<8|r[39]>>>24,dr=r[39]<<8|r[38]>>>24,ir=r[48]<<14|r[49]>>>18,or=r[49]<<14|r[48]>>>18,r[0]=Z^~q&rr,r[1]=Y^~Q&tr,r[10]=fr^~ar&cr,r[11]=ur^~sr&hr,r[20]=yr^~xr&Ar,r[21]=br^~Nr&wr,r[30]=Rr^~Ir&Ur,r[31]=vr^~Or&Tr,r[40]=Mr^~Br&zr,r[41]=Dr^~Gr&Hr,r[2]=q^~rr&er,r[3]=Q^~tr&nr,r[12]=ar^~cr&lr,r[13]=sr^~hr&gr,r[22]=xr^~Ar&mr,r[23]=Nr^~wr&dr,r[32]=Ir^~Ur&Cr,r[33]=Or^~Tr&Pr,r[42]=Br^~zr&Lr,r[43]=Gr^~Hr&Wr,r[4]=rr^~er&ir,r[5]=tr^~nr&or,r[14]=cr^~lr&Er,r[15]=hr^~gr&pr,r[24]=Ar^~mr&Sr,r[25]=wr^~dr&_r,r[34]=Ur^~Cr&kr,r[35]=Tr^~Pr&Fr,r[44]=zr^~Lr&Kr,r[45]=Hr^~Wr&$r,r[6]=er^~ir&Z,r[7]=nr^~or&Y,r[16]=lr^~Er&fr,r[17]=gr^~pr&ur,r[26]=mr^~Sr&yr,r[27]=dr^~_r&br,r[36]=Cr^~kr&Rr,r[37]=Pr^~Fr&vr,r[46]=Lr^~Kr&Mr,r[47]=Wr^~$r&Dr,r[8]=ir^~Z&q,r[9]=or^~Y&Q,r[18]=Er^~fr&ar,r[19]=pr^~ur&sr,r[28]=Sr^~yr&xr,r[29]=_r^~br&Nr,r[38]=kr^~Rr&Ir,r[39]=Fr^~vr&Or,r[48]=Kr^~Mr&Br,r[49]=$r^~Dr&Gr,r[0]^=ft[f],r[1]^=ft[f+1]};if(M)e.exports=C;else for(P=0;P<z.length;++P)s[z[P]]=C[z[P]]})()})(Ot);var Zt=Ot.exports;const Yt=Mt(Zt);function qt(e){return"0x"+Yt.keccak_256(F(e))}const Qt="address/5.7.0",W=new p(Qt);function St(e){v(e,20)||W.throwArgumentError("invalid address","address",e),e=e.toLowerCase();const t=e.substring(2).split(""),n=new Uint8Array(40);for(let s=0;s<40;s++)n[s]=t[s].charCodeAt(0);const u=F(qt(n));for(let s=0;s<40;s+=2)u[s>>1]>>4>=8&&(t[s]=t[s].toUpperCase()),(u[s>>1]&15)>=8&&(t[s+1]=t[s+1].toUpperCase());return"0x"+t.join("")}const re=9007199254740991;function te(e){return Math.log10?Math.log10(e):Math.log(e)/Math.LN10}const ot={};for(let e=0;e<10;e++)ot[String(e)]=String(e);for(let e=0;e<26;e++)ot[String.fromCharCode(65+e)]=String(10+e);const _t=Math.floor(te(re));function ee(e){e=e.toUpperCase(),e=e.substring(4)+e.substring(0,2)+"00";let t=e.split("").map(u=>ot[u]).join("");for(;t.length>=_t;){let u=t.substring(0,_t);t=parseInt(u,10)%97+t.substring(u.length)}let n=String(98-parseInt(t,10)%97);for(;n.length<2;)n="0"+n;return n}function he(e){let t=null;if(typeof e!="string"&&W.throwArgumentError("invalid address","address",e),e.match(/^(0x)?[0-9a-fA-F]{40}$/))e.substring(0,2)!=="0x"&&(e="0x"+e),t=St(e),e.match(/([A-F].*[a-f])|([a-f].*[A-F])/)&&t!==e&&W.throwArgumentError("bad address checksum","address",e);else if(e.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)){for(e.substring(2,4)!==ee(e)&&W.throwArgumentError("bad icap checksum","address",e),t=$t(e.substring(4));t.length<40;)t="0"+t;t=St("0x"+t)}else W.throwArgumentError("invalid address","address",e);return t}export{d as B,ce as D,p as L,F as a,ue as b,ie as c,Xt as d,tt as e,se as f,he as g,S as h,fe as i,v as j,qt as k,oe as l,ae as s};
|
|
1
|
+
import{b$ as Ft,j as Mt,i as qr,H as Dt}from"../main.js";const Bt="logger/5.8.0";let bt=!1,xt=!1;const Jr={debug:1,default:2,info:2,warning:3,error:4,off:5};let Nt=Jr.default,Qr=null;function Gt(){try{const e=[];if(["NFD","NFC","NFKD","NFKC"].forEach(t=>{try{if("test".normalize(t)!=="test")throw new Error("bad normalize")}catch{e.push(t)}}),e.length)throw new Error("missing "+e.join(", "));if("é".normalize("NFD")!=="é")throw new Error("broken implementation")}catch(e){return e.message}return null}const At=Gt();var nt;(function(e){e.DEBUG="DEBUG",e.INFO="INFO",e.WARNING="WARNING",e.ERROR="ERROR",e.OFF="OFF"})(nt||(nt={}));var U;(function(e){e.UNKNOWN_ERROR="UNKNOWN_ERROR",e.NOT_IMPLEMENTED="NOT_IMPLEMENTED",e.UNSUPPORTED_OPERATION="UNSUPPORTED_OPERATION",e.NETWORK_ERROR="NETWORK_ERROR",e.SERVER_ERROR="SERVER_ERROR",e.TIMEOUT="TIMEOUT",e.BUFFER_OVERRUN="BUFFER_OVERRUN",e.NUMERIC_FAULT="NUMERIC_FAULT",e.MISSING_NEW="MISSING_NEW",e.INVALID_ARGUMENT="INVALID_ARGUMENT",e.MISSING_ARGUMENT="MISSING_ARGUMENT",e.UNEXPECTED_ARGUMENT="UNEXPECTED_ARGUMENT",e.CALL_EXCEPTION="CALL_EXCEPTION",e.INSUFFICIENT_FUNDS="INSUFFICIENT_FUNDS",e.NONCE_EXPIRED="NONCE_EXPIRED",e.REPLACEMENT_UNDERPRICED="REPLACEMENT_UNDERPRICED",e.UNPREDICTABLE_GAS_LIMIT="UNPREDICTABLE_GAS_LIMIT",e.TRANSACTION_REPLACED="TRANSACTION_REPLACED",e.ACTION_REJECTED="ACTION_REJECTED"})(U||(U={}));const wt="0123456789abcdef";class p{constructor(t){Object.defineProperty(this,"version",{enumerable:!0,value:t,writable:!1})}_log(t,n){const u=t.toLowerCase();Jr[u]==null&&this.throwArgumentError("invalid log level name","logLevel",t),!(Nt>Jr[u])&&console.log.apply(console,n)}debug(...t){this._log(p.levels.DEBUG,t)}info(...t){this._log(p.levels.INFO,t)}warn(...t){this._log(p.levels.WARNING,t)}makeError(t,n,u){if(xt)return this.makeError("censored error",n,{});n||(n=p.errors.UNKNOWN_ERROR),u||(u={});const s=[];Object.keys(u).forEach(w=>{const x=u[w];try{if(x instanceof Uint8Array){let D="";for(let k=0;k<x.length;k++)D+=wt[x[k]>>4],D+=wt[x[k]&15];s.push(w+"=Uint8Array(0x"+D+")")}else s.push(w+"="+JSON.stringify(x))}catch{s.push(w+"="+JSON.stringify(u[w].toString()))}}),s.push(`code=${n}`),s.push(`version=${this.version}`);const I=t;let _="";switch(n){case U.NUMERIC_FAULT:{_="NUMERIC_FAULT";const w=t;switch(w){case"overflow":case"underflow":case"division-by-zero":_+="-"+w;break;case"negative-power":case"negative-width":_+="-unsupported";break;case"unbound-bitwise-result":_+="-unbound-result";break}break}case U.CALL_EXCEPTION:case U.INSUFFICIENT_FUNDS:case U.MISSING_NEW:case U.NONCE_EXPIRED:case U.REPLACEMENT_UNDERPRICED:case U.TRANSACTION_REPLACED:case U.UNPREDICTABLE_GAS_LIMIT:_=n;break}_&&(t+=" [ See: https://links.ethers.org/v5-errors-"+_+" ]"),s.length&&(t+=" ("+s.join(", ")+")");const M=new Error(t);return M.reason=I,M.code=n,Object.keys(u).forEach(function(w){M[w]=u[w]}),M}throwError(t,n,u){throw this.makeError(t,n,u)}throwArgumentError(t,n,u){return this.throwError(t,p.errors.INVALID_ARGUMENT,{argument:n,value:u})}assert(t,n,u,s){t||this.throwError(n,u,s)}assertArgument(t,n,u,s){t||this.throwArgumentError(n,u,s)}checkNormalize(t){At&&this.throwError("platform missing String.prototype.normalize",p.errors.UNSUPPORTED_OPERATION,{operation:"String.prototype.normalize",form:At})}checkSafeUint53(t,n){typeof t=="number"&&(n==null&&(n="value not safe"),(t<0||t>=9007199254740991)&&this.throwError(n,p.errors.NUMERIC_FAULT,{operation:"checkSafeInteger",fault:"out-of-safe-range",value:t}),t%1&&this.throwError(n,p.errors.NUMERIC_FAULT,{operation:"checkSafeInteger",fault:"non-integer",value:t}))}checkArgumentCount(t,n,u){u?u=": "+u:u="",t<n&&this.throwError("missing argument"+u,p.errors.MISSING_ARGUMENT,{count:t,expectedCount:n}),t>n&&this.throwError("too many arguments"+u,p.errors.UNEXPECTED_ARGUMENT,{count:t,expectedCount:n})}checkNew(t,n){(t===Object||t==null)&&this.throwError("missing new",p.errors.MISSING_NEW,{name:n.name})}checkAbstract(t,n){t===n?this.throwError("cannot instantiate abstract class "+JSON.stringify(n.name)+" directly; use a sub-class",p.errors.UNSUPPORTED_OPERATION,{name:t.name,operation:"new"}):(t===Object||t==null)&&this.throwError("missing new",p.errors.MISSING_NEW,{name:n.name})}static globalLogger(){return Qr||(Qr=new p(Bt)),Qr}static setCensorship(t,n){if(!t&&n&&this.globalLogger().throwError("cannot permanently disable censorship",p.errors.UNSUPPORTED_OPERATION,{operation:"setCensorship"}),bt){if(!t)return;this.globalLogger().throwError("error censorship permanent",p.errors.UNSUPPORTED_OPERATION,{operation:"setCensorship"})}xt=!!t,bt=!!n}static setLogLevel(t){const n=Jr[t.toLowerCase()];if(n==null){p.globalLogger().warn("invalid log level - "+t);return}Nt=n}static from(t){return new p(t)}}p.errors=U;p.levels=nt;const zt="bytes/5.8.0",b=new p(zt);function Rt(e){return!!e.toHexString}function G(e){return e.slice||(e.slice=function(){const t=Array.prototype.slice.call(arguments);return G(new Uint8Array(Array.prototype.slice.apply(e,t)))}),e}function Ht(e){return v(e)&&!(e.length%2)||jr(e)}function mt(e){return typeof e=="number"&&e==e&&e%1===0}function jr(e){if(e==null)return!1;if(e.constructor===Uint8Array)return!0;if(typeof e=="string"||!mt(e.length)||e.length<0)return!1;for(let t=0;t<e.length;t++){const n=e[t];if(!mt(n)||n<0||n>=256)return!1}return!0}function F(e,t){if(t||(t={}),typeof e=="number"){b.checkSafeUint53(e,"invalid arrayify value");const n=[];for(;e;)n.unshift(e&255),e=parseInt(String(e/256));return n.length===0&&n.push(0),G(new Uint8Array(n))}if(t.allowMissingPrefix&&typeof e=="string"&&e.substring(0,2)!=="0x"&&(e="0x"+e),Rt(e)&&(e=e.toHexString()),v(e)){let n=e.substring(2);n.length%2&&(t.hexPad==="left"?n="0"+n:t.hexPad==="right"?n+="0":b.throwArgumentError("hex data is odd-length","value",e));const u=[];for(let s=0;s<n.length;s+=2)u.push(parseInt(n.substring(s,s+2),16));return G(new Uint8Array(u))}return jr(e)?G(new Uint8Array(e)):b.throwArgumentError("invalid arrayify value","value",e)}function ie(e){const t=e.map(s=>F(s)),n=t.reduce((s,I)=>s+I.length,0),u=new Uint8Array(n);return t.reduce((s,I)=>(u.set(I,s),s+I.length),0),G(u)}function Lt(e,t){e=F(e),e.length>t&&b.throwArgumentError("value out of range","value",arguments[0]);const n=new Uint8Array(t);return n.set(e,t-e.length),G(n)}function v(e,t){return!(typeof e!="string"||!e.match(/^0x[0-9A-Fa-f]*$/)||t&&e.length!==2+2*t)}const rt="0123456789abcdef";function S(e,t){if(t||(t={}),typeof e=="number"){b.checkSafeUint53(e,"invalid hexlify value");let n="";for(;e;)n=rt[e&15]+n,e=Math.floor(e/16);return n.length?(n.length%2&&(n="0"+n),"0x"+n):"0x00"}if(typeof e=="bigint")return e=e.toString(16),e.length%2?"0x0"+e:"0x"+e;if(t.allowMissingPrefix&&typeof e=="string"&&e.substring(0,2)!=="0x"&&(e="0x"+e),Rt(e))return e.toHexString();if(v(e))return e.length%2&&(t.hexPad==="left"?e="0x0"+e.substring(2):t.hexPad==="right"?e+="0":b.throwArgumentError("hex data is odd-length","value",e)),e.toLowerCase();if(jr(e)){let n="0x";for(let u=0;u<e.length;u++){let s=e[u];n+=rt[(s&240)>>4]+rt[s&15]}return n}return b.throwArgumentError("invalid hexlify value","value",e)}function oe(e){if(typeof e!="string")e=S(e);else if(!v(e)||e.length%2)return null;return(e.length-2)/2}function fe(e,t,n){return typeof e!="string"?e=S(e):(!v(e)||e.length%2)&&b.throwArgumentError("invalid hexData","value",e),t=2+2*t,n!=null?"0x"+e.substring(t,2+2*n):"0x"+e.substring(t)}function ue(e){let t="0x";return e.forEach(n=>{t+=S(n).substring(2)}),t}function tt(e,t){for(typeof e!="string"?e=S(e):v(e)||b.throwArgumentError("invalid hex string","value",e),e.length>2*t+2&&b.throwArgumentError("value out of range","value",arguments[1]);e.length<2*t+2;)e="0x0"+e.substring(2);return e}function ae(e){const t={r:"0x",s:"0x",_vs:"0x",recoveryParam:0,v:0,yParityAndS:"0x",compact:"0x"};if(Ht(e)){let n=F(e);n.length===64?(t.v=27+(n[32]>>7),n[32]&=127,t.r=S(n.slice(0,32)),t.s=S(n.slice(32,64))):n.length===65?(t.r=S(n.slice(0,32)),t.s=S(n.slice(32,64)),t.v=n[64]):b.throwArgumentError("invalid signature string","signature",e),t.v<27&&(t.v===0||t.v===1?t.v+=27:b.throwArgumentError("signature invalid v byte","signature",e)),t.recoveryParam=1-t.v%2,t.recoveryParam&&(n[32]|=128),t._vs=S(n.slice(32,64))}else{if(t.r=e.r,t.s=e.s,t.v=e.v,t.recoveryParam=e.recoveryParam,t._vs=e._vs,t._vs!=null){const s=Lt(F(t._vs),32);t._vs=S(s);const I=s[0]>=128?1:0;t.recoveryParam==null?t.recoveryParam=I:t.recoveryParam!==I&&b.throwArgumentError("signature recoveryParam mismatch _vs","signature",e),s[0]&=127;const _=S(s);t.s==null?t.s=_:t.s!==_&&b.throwArgumentError("signature v mismatch _vs","signature",e)}if(t.recoveryParam==null)t.v==null?b.throwArgumentError("signature missing v and recoveryParam","signature",e):t.v===0||t.v===1?t.recoveryParam=t.v:t.recoveryParam=1-t.v%2;else if(t.v==null)t.v=27+t.recoveryParam;else{const s=t.v===0||t.v===1?t.v:1-t.v%2;t.recoveryParam!==s&&b.throwArgumentError("signature recoveryParam mismatch v","signature",e)}t.r==null||!v(t.r)?b.throwArgumentError("signature missing or invalid r","signature",e):t.r=tt(t.r,32),t.s==null||!v(t.s)?b.throwArgumentError("signature missing or invalid s","signature",e):t.s=tt(t.s,32);const n=F(t.s);n[0]>=128&&b.throwArgumentError("signature s out of range","signature",e),t.recoveryParam&&(n[0]|=128);const u=S(n);t._vs&&(v(t._vs)||b.throwArgumentError("signature invalid _vs","signature",e),t._vs=tt(t._vs,32)),t._vs==null?t._vs=u:t._vs!==u&&b.throwArgumentError("signature _vs mismatch v and s","signature",e)}return t.yParityAndS=t._vs,t.compact=t.r+t.yParityAndS.substring(2),t}const Wt="bignumber/5.7.0";var Xr=Ft.BN;const T=new p(Wt),et={},Kt=9007199254740991;let dt=!1;class d{constructor(t,n){t!==et&&T.throwError("cannot call constructor directly; use BigNumber.from",p.errors.UNSUPPORTED_OPERATION,{operation:"new (BigNumber)"}),this._hex=n,this._isBigNumber=!0,Object.freeze(this)}fromTwos(t){return m(E(this).fromTwos(t))}toTwos(t){return m(E(this).toTwos(t))}abs(){return this._hex[0]==="-"?d.from(this._hex.substring(1)):this}add(t){return m(E(this).add(E(t)))}sub(t){return m(E(this).sub(E(t)))}div(t){return d.from(t).isZero()&&R("division-by-zero","div"),m(E(this).div(E(t)))}mul(t){return m(E(this).mul(E(t)))}mod(t){const n=E(t);return n.isNeg()&&R("division-by-zero","mod"),m(E(this).umod(n))}pow(t){const n=E(t);return n.isNeg()&&R("negative-power","pow"),m(E(this).pow(n))}and(t){const n=E(t);return(this.isNegative()||n.isNeg())&&R("unbound-bitwise-result","and"),m(E(this).and(n))}or(t){const n=E(t);return(this.isNegative()||n.isNeg())&&R("unbound-bitwise-result","or"),m(E(this).or(n))}xor(t){const n=E(t);return(this.isNegative()||n.isNeg())&&R("unbound-bitwise-result","xor"),m(E(this).xor(n))}mask(t){return(this.isNegative()||t<0)&&R("negative-width","mask"),m(E(this).maskn(t))}shl(t){return(this.isNegative()||t<0)&&R("negative-width","shl"),m(E(this).shln(t))}shr(t){return(this.isNegative()||t<0)&&R("negative-width","shr"),m(E(this).shrn(t))}eq(t){return E(this).eq(E(t))}lt(t){return E(this).lt(E(t))}lte(t){return E(this).lte(E(t))}gt(t){return E(this).gt(E(t))}gte(t){return E(this).gte(E(t))}isNegative(){return this._hex[0]==="-"}isZero(){return E(this).isZero()}toNumber(){try{return E(this).toNumber()}catch{R("overflow","toNumber",this.toString())}return null}toBigInt(){try{return BigInt(this.toString())}catch{}return T.throwError("this platform does not support BigInt",p.errors.UNSUPPORTED_OPERATION,{value:this.toString()})}toString(){return arguments.length>0&&(arguments[0]===10?dt||(dt=!0,T.warn("BigNumber.toString does not accept any parameters; base-10 is assumed")):arguments[0]===16?T.throwError("BigNumber.toString does not accept any parameters; use bigNumber.toHexString()",p.errors.UNEXPECTED_ARGUMENT,{}):T.throwError("BigNumber.toString does not accept parameters",p.errors.UNEXPECTED_ARGUMENT,{})),E(this).toString(10)}toHexString(){return this._hex}toJSON(t){return{type:"BigNumber",hex:this.toHexString()}}static from(t){if(t instanceof d)return t;if(typeof t=="string")return t.match(/^-?0x[0-9a-f]+$/i)?new d(et,K(t)):t.match(/^-?[0-9]+$/)?new d(et,K(new Xr(t))):T.throwArgumentError("invalid BigNumber string","value",t);if(typeof t=="number")return t%1&&R("underflow","BigNumber.from",t),(t>=Kt||t<=-9007199254740991)&&R("overflow","BigNumber.from",t),d.from(String(t));const n=t;if(typeof n=="bigint")return d.from(n.toString());if(jr(n))return d.from(S(n));if(n)if(n.toHexString){const u=n.toHexString();if(typeof u=="string")return d.from(u)}else{let u=n._hex;if(u==null&&n.type==="BigNumber"&&(u=n.hex),typeof u=="string"&&(v(u)||u[0]==="-"&&v(u.substring(1))))return d.from(u)}return T.throwArgumentError("invalid BigNumber value","value",t)}static isBigNumber(t){return!!(t&&t._isBigNumber)}}function K(e){if(typeof e!="string")return K(e.toString(16));if(e[0]==="-")return e=e.substring(1),e[0]==="-"&&T.throwArgumentError("invalid hex","value",e),e=K(e),e==="0x00"?e:"-"+e;if(e.substring(0,2)!=="0x"&&(e="0x"+e),e==="0x")return"0x00";for(e.length%2&&(e="0x0"+e.substring(2));e.length>4&&e.substring(0,4)==="0x00";)e="0x"+e.substring(4);return e}function m(e){return d.from(K(e))}function E(e){const t=d.from(e).toHexString();return t[0]==="-"?new Xr("-"+t.substring(3),16):new Xr(t.substring(2),16)}function R(e,t,n){const u={fault:e,operation:t};return n!=null&&(u.value=n),T.throwError(e,p.errors.NUMERIC_FAULT,u)}function $t(e){return new Xr(e,36).toString(16)}const Jt="properties/5.7.0",vt=new p(Jt);function Xt(e,t,n){Object.defineProperty(e,t,{enumerable:!0,value:n,writable:!1})}function se(e,t){for(let n=0;n<32;n++){if(e[t])return e[t];if(!e.prototype||typeof e.prototype!="object")break;e=Object.getPrototypeOf(e.prototype).constructor}return null}const jt={bigint:!0,boolean:!0,function:!0,number:!0,string:!0};function It(e){if(e==null||jt[typeof e])return!0;if(Array.isArray(e)||typeof e=="object"){if(!Object.isFrozen(e))return!1;const t=Object.keys(e);for(let n=0;n<t.length;n++){let u=null;try{u=e[t[n]]}catch{continue}if(!It(u))return!1}return!0}return vt.throwArgumentError(`Cannot deepCopy ${typeof e}`,"object",e)}function Vt(e){if(It(e))return e;if(Array.isArray(e))return Object.freeze(e.map(t=>it(t)));if(typeof e=="object"){const t={};for(const n in e){const u=e[n];u!==void 0&&Xt(t,n,it(u))}return t}return vt.throwArgumentError(`Cannot deepCopy ${typeof e}`,"object",e)}function it(e){return Vt(e)}class ce{constructor(t){for(const n in t)this[n]=it(t[n])}}var Ot={exports:{}};(function(e){(function(){var t="input is invalid type",n="finalize already called",u=typeof window=="object",s=u?window:{};s.JS_SHA3_NO_WINDOW&&(u=!1);var I=!u&&typeof self=="object",_=!s.JS_SHA3_NO_NODE_JS&&typeof qr.process=="object"&&qr.process.versions&&qr.process.versions.node;_?s=Dt:I&&(s=self);var M=!s.JS_SHA3_NO_COMMON_JS&&!0&&e.exports,w=!s.JS_SHA3_NO_ARRAY_BUFFER&&typeof ArrayBuffer<"u",x="0123456789abcdef".split(""),D=[31,7936,2031616,520093696],k=[4,1024,262144,67108864],Ut=[1,256,65536,16777216],Tt=[6,1536,393216,100663296],O=[0,8,16,24],ft=[1,0,32898,0,32906,2147483648,2147516416,2147483648,32907,0,2147483649,0,2147516545,2147483648,32777,2147483648,138,0,136,0,2147516425,0,2147483658,0,2147516555,0,139,2147483648,32905,2147483648,32771,2147483648,32770,2147483648,128,2147483648,32778,0,2147483658,2147483648,2147516545,2147483648,32896,2147483648,2147483649,0,2147516424,2147483648],ut=[224,256,384,512],Vr=[128,256],at=["hex","buffer","arrayBuffer","array","digest"],st={128:168,256:136};(s.JS_SHA3_NO_NODE_JS||!Array.isArray)&&(Array.isArray=function(r){return Object.prototype.toString.call(r)==="[object Array]"}),w&&(s.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW||!ArrayBuffer.isView)&&(ArrayBuffer.isView=function(r){return typeof r=="object"&&r.buffer&&r.buffer.constructor===ArrayBuffer});for(var ct=function(r,i,o){return function(f){return new N(r,i,r).update(f)[o]()}},ht=function(r,i,o){return function(f,a){return new N(r,i,a).update(f)[o]()}},lt=function(r,i,o){return function(f,a,h,l){return C["cshake"+r].update(f,a,h,l)[o]()}},gt=function(r,i,o){return function(f,a,h,l){return C["kmac"+r].update(f,a,h,l)[o]()}},$=function(r,i,o,f){for(var a=0;a<at.length;++a){var h=at[a];r[h]=i(o,f,h)}return r},Et=function(r,i){var o=ct(r,i,"hex");return o.create=function(){return new N(r,i,r)},o.update=function(f){return o.create().update(f)},$(o,ct,r,i)},Ct=function(r,i){var o=ht(r,i,"hex");return o.create=function(f){return new N(r,i,f)},o.update=function(f,a){return o.create(a).update(f)},$(o,ht,r,i)},Pt=function(r,i){var o=st[r],f=lt(r,i,"hex");return f.create=function(a,h,l){return!h&&!l?C["shake"+r].create(a):new N(r,i,a).bytepad([h,l],o)},f.update=function(a,h,l,c){return f.create(h,l,c).update(a)},$(f,lt,r,i)},kt=function(r,i){var o=st[r],f=gt(r,i,"hex");return f.create=function(a,h,l){return new Yr(r,i,h).bytepad(["KMAC",l],o).bytepad([a],o)},f.update=function(a,h,l,c){return f.create(a,l,c).update(h)},$(f,gt,r,i)},pt=[{name:"keccak",padding:Ut,bits:ut,createMethod:Et},{name:"sha3",padding:Tt,bits:ut,createMethod:Et},{name:"shake",padding:D,bits:Vr,createMethod:Ct},{name:"cshake",padding:k,bits:Vr,createMethod:Pt},{name:"kmac",padding:k,bits:Vr,createMethod:kt}],C={},z=[],P=0;P<pt.length;++P)for(var B=pt[P],J=B.bits,H=0;H<J.length;++H){var Zr=B.name+"_"+J[H];if(z.push(Zr),C[Zr]=B.createMethod(J[H],B.padding),B.name!=="sha3"){var yt=B.name+J[H];z.push(yt),C[yt]=C[Zr]}}function N(r,i,o){this.blocks=[],this.s=[],this.padding=i,this.outputBits=o,this.reset=!0,this.finalized=!1,this.block=0,this.start=0,this.blockCount=1600-(r<<1)>>5,this.byteCount=this.blockCount<<2,this.outputBlocks=o>>5,this.extraBytes=(o&31)>>3;for(var f=0;f<50;++f)this.s[f]=0}N.prototype.update=function(r){if(this.finalized)throw new Error(n);var i,o=typeof r;if(o!=="string"){if(o==="object"){if(r===null)throw new Error(t);if(w&&r.constructor===ArrayBuffer)r=new Uint8Array(r);else if(!Array.isArray(r)&&(!w||!ArrayBuffer.isView(r)))throw new Error(t)}else throw new Error(t);i=!0}for(var f=this.blocks,a=this.byteCount,h=r.length,l=this.blockCount,c=0,A=this.s,g,y;c<h;){if(this.reset)for(this.reset=!1,f[0]=this.block,g=1;g<l+1;++g)f[g]=0;if(i)for(g=this.start;c<h&&g<a;++c)f[g>>2]|=r[c]<<O[g++&3];else for(g=this.start;c<h&&g<a;++c)y=r.charCodeAt(c),y<128?f[g>>2]|=y<<O[g++&3]:y<2048?(f[g>>2]|=(192|y>>6)<<O[g++&3],f[g>>2]|=(128|y&63)<<O[g++&3]):y<55296||y>=57344?(f[g>>2]|=(224|y>>12)<<O[g++&3],f[g>>2]|=(128|y>>6&63)<<O[g++&3],f[g>>2]|=(128|y&63)<<O[g++&3]):(y=65536+((y&1023)<<10|r.charCodeAt(++c)&1023),f[g>>2]|=(240|y>>18)<<O[g++&3],f[g>>2]|=(128|y>>12&63)<<O[g++&3],f[g>>2]|=(128|y>>6&63)<<O[g++&3],f[g>>2]|=(128|y&63)<<O[g++&3]);if(this.lastByteIndex=g,g>=a){for(this.start=g-a,this.block=f[l],g=0;g<l;++g)A[g]^=f[g];L(A),this.reset=!0}else this.start=g}return this},N.prototype.encode=function(r,i){var o=r&255,f=1,a=[o];for(r=r>>8,o=r&255;o>0;)a.unshift(o),r=r>>8,o=r&255,++f;return i?a.push(f):a.unshift(f),this.update(a),a.length},N.prototype.encodeString=function(r){var i,o=typeof r;if(o!=="string"){if(o==="object"){if(r===null)throw new Error(t);if(w&&r.constructor===ArrayBuffer)r=new Uint8Array(r);else if(!Array.isArray(r)&&(!w||!ArrayBuffer.isView(r)))throw new Error(t)}else throw new Error(t);i=!0}var f=0,a=r.length;if(i)f=a;else for(var h=0;h<r.length;++h){var l=r.charCodeAt(h);l<128?f+=1:l<2048?f+=2:l<55296||l>=57344?f+=3:(l=65536+((l&1023)<<10|r.charCodeAt(++h)&1023),f+=4)}return f+=this.encode(f*8),this.update(r),f},N.prototype.bytepad=function(r,i){for(var o=this.encode(i),f=0;f<r.length;++f)o+=this.encodeString(r[f]);var a=i-o%i,h=[];return h.length=a,this.update(h),this},N.prototype.finalize=function(){if(!this.finalized){this.finalized=!0;var r=this.blocks,i=this.lastByteIndex,o=this.blockCount,f=this.s;if(r[i>>2]|=this.padding[i&3],this.lastByteIndex===this.byteCount)for(r[0]=r[o],i=1;i<o+1;++i)r[i]=0;for(r[o-1]|=2147483648,i=0;i<o;++i)f[i]^=r[i];L(f)}},N.prototype.toString=N.prototype.hex=function(){this.finalize();for(var r=this.blockCount,i=this.s,o=this.outputBlocks,f=this.extraBytes,a=0,h=0,l="",c;h<o;){for(a=0;a<r&&h<o;++a,++h)c=i[a],l+=x[c>>4&15]+x[c&15]+x[c>>12&15]+x[c>>8&15]+x[c>>20&15]+x[c>>16&15]+x[c>>28&15]+x[c>>24&15];h%r===0&&(L(i),a=0)}return f&&(c=i[a],l+=x[c>>4&15]+x[c&15],f>1&&(l+=x[c>>12&15]+x[c>>8&15]),f>2&&(l+=x[c>>20&15]+x[c>>16&15])),l},N.prototype.arrayBuffer=function(){this.finalize();var r=this.blockCount,i=this.s,o=this.outputBlocks,f=this.extraBytes,a=0,h=0,l=this.outputBits>>3,c;f?c=new ArrayBuffer(o+1<<2):c=new ArrayBuffer(l);for(var A=new Uint32Array(c);h<o;){for(a=0;a<r&&h<o;++a,++h)A[h]=i[a];h%r===0&&L(i)}return f&&(A[a]=i[a],c=c.slice(0,l)),c},N.prototype.buffer=N.prototype.arrayBuffer,N.prototype.digest=N.prototype.array=function(){this.finalize();for(var r=this.blockCount,i=this.s,o=this.outputBlocks,f=this.extraBytes,a=0,h=0,l=[],c,A;h<o;){for(a=0;a<r&&h<o;++a,++h)c=h<<2,A=i[a],l[c]=A&255,l[c+1]=A>>8&255,l[c+2]=A>>16&255,l[c+3]=A>>24&255;h%r===0&&L(i)}return f&&(c=h<<2,A=i[a],l[c]=A&255,f>1&&(l[c+1]=A>>8&255),f>2&&(l[c+2]=A>>16&255)),l};function Yr(r,i,o){N.call(this,r,i,o)}Yr.prototype=new N,Yr.prototype.finalize=function(){return this.encode(this.outputBits,!0),N.prototype.finalize.call(this)};var L=function(r){var i,o,f,a,h,l,c,A,g,y,X,j,V,Z,Y,q,Q,rr,tr,er,nr,ir,or,fr,ur,ar,sr,cr,hr,lr,gr,Er,pr,yr,br,xr,Nr,Ar,wr,mr,dr,Sr,_r,Rr,vr,Ir,Or,Ur,Tr,Cr,Pr,kr,Fr,Mr,Dr,Br,Gr,zr,Hr,Lr,Wr,Kr,$r;for(f=0;f<48;f+=2)a=r[0]^r[10]^r[20]^r[30]^r[40],h=r[1]^r[11]^r[21]^r[31]^r[41],l=r[2]^r[12]^r[22]^r[32]^r[42],c=r[3]^r[13]^r[23]^r[33]^r[43],A=r[4]^r[14]^r[24]^r[34]^r[44],g=r[5]^r[15]^r[25]^r[35]^r[45],y=r[6]^r[16]^r[26]^r[36]^r[46],X=r[7]^r[17]^r[27]^r[37]^r[47],j=r[8]^r[18]^r[28]^r[38]^r[48],V=r[9]^r[19]^r[29]^r[39]^r[49],i=j^(l<<1|c>>>31),o=V^(c<<1|l>>>31),r[0]^=i,r[1]^=o,r[10]^=i,r[11]^=o,r[20]^=i,r[21]^=o,r[30]^=i,r[31]^=o,r[40]^=i,r[41]^=o,i=a^(A<<1|g>>>31),o=h^(g<<1|A>>>31),r[2]^=i,r[3]^=o,r[12]^=i,r[13]^=o,r[22]^=i,r[23]^=o,r[32]^=i,r[33]^=o,r[42]^=i,r[43]^=o,i=l^(y<<1|X>>>31),o=c^(X<<1|y>>>31),r[4]^=i,r[5]^=o,r[14]^=i,r[15]^=o,r[24]^=i,r[25]^=o,r[34]^=i,r[35]^=o,r[44]^=i,r[45]^=o,i=A^(j<<1|V>>>31),o=g^(V<<1|j>>>31),r[6]^=i,r[7]^=o,r[16]^=i,r[17]^=o,r[26]^=i,r[27]^=o,r[36]^=i,r[37]^=o,r[46]^=i,r[47]^=o,i=y^(a<<1|h>>>31),o=X^(h<<1|a>>>31),r[8]^=i,r[9]^=o,r[18]^=i,r[19]^=o,r[28]^=i,r[29]^=o,r[38]^=i,r[39]^=o,r[48]^=i,r[49]^=o,Z=r[0],Y=r[1],Ir=r[11]<<4|r[10]>>>28,Or=r[10]<<4|r[11]>>>28,cr=r[20]<<3|r[21]>>>29,hr=r[21]<<3|r[20]>>>29,Lr=r[31]<<9|r[30]>>>23,Wr=r[30]<<9|r[31]>>>23,Sr=r[40]<<18|r[41]>>>14,_r=r[41]<<18|r[40]>>>14,yr=r[2]<<1|r[3]>>>31,br=r[3]<<1|r[2]>>>31,q=r[13]<<12|r[12]>>>20,Q=r[12]<<12|r[13]>>>20,Ur=r[22]<<10|r[23]>>>22,Tr=r[23]<<10|r[22]>>>22,lr=r[33]<<13|r[32]>>>19,gr=r[32]<<13|r[33]>>>19,Kr=r[42]<<2|r[43]>>>30,$r=r[43]<<2|r[42]>>>30,Mr=r[5]<<30|r[4]>>>2,Dr=r[4]<<30|r[5]>>>2,xr=r[14]<<6|r[15]>>>26,Nr=r[15]<<6|r[14]>>>26,rr=r[25]<<11|r[24]>>>21,tr=r[24]<<11|r[25]>>>21,Cr=r[34]<<15|r[35]>>>17,Pr=r[35]<<15|r[34]>>>17,Er=r[45]<<29|r[44]>>>3,pr=r[44]<<29|r[45]>>>3,fr=r[6]<<28|r[7]>>>4,ur=r[7]<<28|r[6]>>>4,Br=r[17]<<23|r[16]>>>9,Gr=r[16]<<23|r[17]>>>9,Ar=r[26]<<25|r[27]>>>7,wr=r[27]<<25|r[26]>>>7,er=r[36]<<21|r[37]>>>11,nr=r[37]<<21|r[36]>>>11,kr=r[47]<<24|r[46]>>>8,Fr=r[46]<<24|r[47]>>>8,Rr=r[8]<<27|r[9]>>>5,vr=r[9]<<27|r[8]>>>5,ar=r[18]<<20|r[19]>>>12,sr=r[19]<<20|r[18]>>>12,zr=r[29]<<7|r[28]>>>25,Hr=r[28]<<7|r[29]>>>25,mr=r[38]<<8|r[39]>>>24,dr=r[39]<<8|r[38]>>>24,ir=r[48]<<14|r[49]>>>18,or=r[49]<<14|r[48]>>>18,r[0]=Z^~q&rr,r[1]=Y^~Q&tr,r[10]=fr^~ar&cr,r[11]=ur^~sr&hr,r[20]=yr^~xr&Ar,r[21]=br^~Nr&wr,r[30]=Rr^~Ir&Ur,r[31]=vr^~Or&Tr,r[40]=Mr^~Br&zr,r[41]=Dr^~Gr&Hr,r[2]=q^~rr&er,r[3]=Q^~tr&nr,r[12]=ar^~cr&lr,r[13]=sr^~hr&gr,r[22]=xr^~Ar&mr,r[23]=Nr^~wr&dr,r[32]=Ir^~Ur&Cr,r[33]=Or^~Tr&Pr,r[42]=Br^~zr&Lr,r[43]=Gr^~Hr&Wr,r[4]=rr^~er&ir,r[5]=tr^~nr&or,r[14]=cr^~lr&Er,r[15]=hr^~gr&pr,r[24]=Ar^~mr&Sr,r[25]=wr^~dr&_r,r[34]=Ur^~Cr&kr,r[35]=Tr^~Pr&Fr,r[44]=zr^~Lr&Kr,r[45]=Hr^~Wr&$r,r[6]=er^~ir&Z,r[7]=nr^~or&Y,r[16]=lr^~Er&fr,r[17]=gr^~pr&ur,r[26]=mr^~Sr&yr,r[27]=dr^~_r&br,r[36]=Cr^~kr&Rr,r[37]=Pr^~Fr&vr,r[46]=Lr^~Kr&Mr,r[47]=Wr^~$r&Dr,r[8]=ir^~Z&q,r[9]=or^~Y&Q,r[18]=Er^~fr&ar,r[19]=pr^~ur&sr,r[28]=Sr^~yr&xr,r[29]=_r^~br&Nr,r[38]=kr^~Rr&Ir,r[39]=Fr^~vr&Or,r[48]=Kr^~Mr&Br,r[49]=$r^~Dr&Gr,r[0]^=ft[f],r[1]^=ft[f+1]};if(M)e.exports=C;else for(P=0;P<z.length;++P)s[z[P]]=C[z[P]]})()})(Ot);var Zt=Ot.exports;const Yt=Mt(Zt);function qt(e){return"0x"+Yt.keccak_256(F(e))}const Qt="address/5.7.0",W=new p(Qt);function St(e){v(e,20)||W.throwArgumentError("invalid address","address",e),e=e.toLowerCase();const t=e.substring(2).split(""),n=new Uint8Array(40);for(let s=0;s<40;s++)n[s]=t[s].charCodeAt(0);const u=F(qt(n));for(let s=0;s<40;s+=2)u[s>>1]>>4>=8&&(t[s]=t[s].toUpperCase()),(u[s>>1]&15)>=8&&(t[s+1]=t[s+1].toUpperCase());return"0x"+t.join("")}const re=9007199254740991;function te(e){return Math.log10?Math.log10(e):Math.log(e)/Math.LN10}const ot={};for(let e=0;e<10;e++)ot[String(e)]=String(e);for(let e=0;e<26;e++)ot[String.fromCharCode(65+e)]=String(10+e);const _t=Math.floor(te(re));function ee(e){e=e.toUpperCase(),e=e.substring(4)+e.substring(0,2)+"00";let t=e.split("").map(u=>ot[u]).join("");for(;t.length>=_t;){let u=t.substring(0,_t);t=parseInt(u,10)%97+t.substring(u.length)}let n=String(98-parseInt(t,10)%97);for(;n.length<2;)n="0"+n;return n}function he(e){let t=null;if(typeof e!="string"&&W.throwArgumentError("invalid address","address",e),e.match(/^(0x)?[0-9a-fA-F]{40}$/))e.substring(0,2)!=="0x"&&(e="0x"+e),t=St(e),e.match(/([A-F].*[a-f])|([a-f].*[A-F])/)&&t!==e&&W.throwArgumentError("bad address checksum","address",e);else if(e.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)){for(e.substring(2,4)!==ee(e)&&W.throwArgumentError("bad icap checksum","address",e),t=$t(e.substring(4));t.length<40;)t="0"+t;t=St("0x"+t)}else W.throwArgumentError("invalid address","address",e);return t}export{d as B,ce as D,p as L,F as a,ue as b,ie as c,Xt as d,tt as e,se as f,he as g,S as h,fe as i,v as j,qt as k,oe as l,ae as s};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var oe=Object.defineProperty;var se=(m,t,e)=>t in m?oe(m,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):m[t]=e;var h=(m,t,e)=>se(m,typeof t!="symbol"?t+"":t,e);import{g as F,a as N,i as $,S as I,b,T as B,c as C,p as ae,d as ie,e as R,f as M,h as Q,j as ce,k as x,l as de,m as le}from"./sui-BdOrw1dc.js";import{dt as V,bu as ge,du as X,dv as S,cf as ue,cA as D,cB as q,ck as fe,cd as j,bw as O,aU as v,ch as pe,cG as G,cD as he,dw as we,cl as W,bt as ye,aM as U,bl as me,dj as ke,d6 as H,dx as be,dy as Ie,bv as L,cp as Z}from"../main.js";import"./index-D8nnAO88.js";import{S as ee}from"./unsignedTransaction-arVvzoJx.js";import"./blake2b-BwI-z5NJ.js";import"./index-CyxmcHOs.js";const Y=async(m,t,e)=>{var d,r,n;if(!V(e))throw new Error(`Invalid Sui type: ${e}`);const i=await F(m,t);if(!i)throw new Error(`Unable to fetch object fields from token bridge state. Object ID: ${t}`);const o=(r=(d=i.token_registry.fields)==null?void 0:d.id)==null?void 0:r.id;if(!o)throw new Error("Unable to fetch token registry object ID");const a=ge((n=i.token_registry)==null?void 0:n.type);if(!a)throw new Error("Unable to fetch token registry package ID");return m.getDynamicFieldObject({parentId:o,name:{type:`${a}::token_registry::Key<${e}>`,value:{dummy_field:!1}}})},P=async(m,t,e,i)=>{var s,u,f,w;const o=await F(m,t);if(!o)throw new Error("Unable to fetch object fields from token bridge state");const a=(u=(s=o.token_registry)==null?void 0:s.fields)==null?void 0:u.coin_types,d=(w=(f=a==null?void 0:a.fields)==null?void 0:f.id)==null?void 0:w.id;if(!d)throw new Error("Unable to fetch coin types");const r=X(a==null?void 0:a.type);if(!r)throw new Error("Unable to get key type");const n=await m.getDynamicFieldObject({parentId:d,name:{type:r,value:{addr:[...e],chain:i}}});if(n.error){if(n.error.code==="dynamicFieldNotFound")return null;throw new Error(`Unexpected getDynamicFieldObject response ${n.error}`)}const l=N(n);if(!l)return null;if(!$(l))throw new Error("What?");return"value"in l?S(l.value):null};class z{constructor(t,e,i,o){h(this,"network");h(this,"chain");h(this,"provider");h(this,"contracts");h(this,"coreBridgeObjectId");h(this,"tokenBridgeObjectId");h(this,"chainId");this.network=t,this.chain=e,this.provider=i,this.contracts=o,this.chainId=ue.get(t,e);const a=this.contracts.tokenBridge;if(!a)throw new Error(`Wormhole Token Bridge contract for domain ${e} not found`);const d=this.contracts.coreBridge;if(!d)throw new Error(`Wormhole Token Bridge contract for domain ${e} not found`);this.tokenBridgeObjectId=a,this.coreBridgeObjectId=d}static async fromRpc(t,e){const[i,o]=await I.chainFromRpc(t),a=e[o];if(a.network!==i)throw new Error(`Network mismatch: ${a.network} != ${i}`);return new z(i,o,t,a.contracts)}async isWrappedAsset(t){try{return await this.getOriginalAsset(t),!0}catch{return!1}}async getOriginalAsset(t){let e=t.getCoinType();if(!V(e))throw new Error(`Invalid Sui type: ${e}`);const i=await Y(this.provider,this.tokenBridgeObjectId,e),o=N(i);if(!o)throw D(e);if(!$(o))throw new Error("Expected fields to be a MoveStruct");if(!("value"in o))throw new Error("Expected a `value` key in fields of MoveStruct");const a=o.value;if(!b(a))throw new Error("Expected fields to be a MoveStruct");const d=S(a.type);if(e=S(e),d.includes(`wrapped_asset::WrappedAsset<${e}>`)){const r=a.fields.info;if(!b(r))throw new Error("Expected fields to be a MoveStruct");const n=r.fields.token_address;if(!b(n))throw new Error("Expected fields to be a MoveStruct");if(!$(n.fields))throw new Error("Expected address data to be a MoveObject");if(!("value"in n.fields))throw new Error("Expected a `value` key in fields of MoveStruct");const l=n.fields.value;if(!b(l))throw new Error("Expected fields to be a MoveStruct");const s=new Uint8Array(l.fields.data);return{chain:fe(Number(r.fields.token_chain)),address:new q(s)}}throw D(e)}async getTokenUniversalAddress(t){let e=t.getCoinType();if(!V(e))throw new Error(`Invalid Sui type: ${e}`);const i=await Y(this.provider,this.tokenBridgeObjectId,e),o=N(i);if(!o)throw new Error(`Token of type ${e} has not been registered with the token bridge. Has it been attested?`);if(!$(o))throw new Error("Expected fields to be a MoveStruct");if(!("value"in o))throw new Error("Expected a `value` key in fields of MoveStruct");const a=o.value;if(!b(a))throw new Error("Expected fields to be a MoveStruct");const d=S(a.type);if(e=S(e),d.includes(`native_asset::NativeAsset<${e}>`)){const r=a.fields.token_address;if(!b(r))throw new Error("Expected fields to be a MoveStruct");if(!("value"in r.fields))throw new Error("Expected a `value` key in fields of MoveStruct");const n=r.fields.value;if(!b(n))throw new Error("Expected fields to be a MoveStruct");const l=new Uint8Array(n.fields.data);return new q(l)}throw new Error(`Token of type ${e} is not a native asset`)}async getTokenNativeAddress(t,e){const i=await P(this.provider,this.tokenBridgeObjectId,e.toUint8Array(),j(t));if(!i)throw new Error(`Token ${e.toString()} not found in token registry`);return new O(i)}async hasWrappedAsset(t){try{return await this.getWrappedAsset(t),!0}catch{}return!1}async getWrappedAsset(t){if(v(t.address))throw new Error("Token Address required, 'native' literal not supported");const e=await P(this.provider,this.tokenBridgeObjectId,t.address.toUniversalAddress().toUint8Array(),j(t.chain));if(!e)throw D(pe(t));return G(this.chain,e)}async isTransferCompleted(t){var r,n,l,s,u,f,w,y;const e=await F(this.provider,this.tokenBridgeObjectId);if(!e)throw new Error("Unable to fetch object fields from token bridge state");const i=(n=(r=e.consumed_vaas)==null?void 0:r.fields)==null?void 0:n.hashes,o=X((s=(l=i==null?void 0:i.fields)==null?void 0:l.items)==null?void 0:s.type);if(!o)throw new Error("Unable to get key type");const a=(y=(w=(f=(u=i==null?void 0:i.fields)==null?void 0:u.items)==null?void 0:f.fields)==null?void 0:w.id)==null?void 0:y.id;if(!a)throw new Error("Unable to fetch consumed VAAs table");const d=await this.provider.getDynamicFieldObject({parentId:a,name:{type:o,value:{data:[...he(t.hash)]}}});if(!d.error)return!0;if(d.error.code==="dynamicFieldNotFound")return!1;throw new Error(`Unexpected getDynamicFieldObject response ${d.error}`)}async*createAttestation(t){const e=0n,o=t.toString(),a=await this.provider.getCoinMetadata({coinType:o});if(a===null||a.id===null)throw new Error(`Coin metadata ID for type ${o} not found`);const[d,r]=await this.getPackageIds(),n=new B,[l]=n.splitCoins(n.gas,[n.pure.u64(e)]),[s]=n.moveCall({target:`${r}::attest_token::attest_token`,arguments:[n.object(this.tokenBridgeObjectId),n.object(a.id),n.pure.u32(0)],typeArguments:[o]});n.moveCall({target:`${d}::publish_message::publish_message`,arguments:[n.object(this.coreBridgeObjectId),l,s,n.object(C)]}),yield this.createUnsignedTx(n,"Sui.TokenBridge.CreateAttestation")}async*submitAttestation(t,e){const[i,o]=await this.getPackageIds(),a=e.toString(),d=Math.min(t.payload.decimals,8),r=await this.getCoinBuildOutput(i,o,d),n=await ae(r,a);yield this.createUnsignedTx(n,"Sui.TokenBridge.PrepareCreateWrapped");let l="",s="",u="",f="",w="",y=!1;for(;!y;){await new Promise(p=>setTimeout(p,500));const _=await this.provider.queryTransactionBlocks({filter:{FromAddress:a},options:{showObjectChanges:!0},limit:3});for(const p of _.data)if("objectChanges"in p){for(const g of p.objectChanges)ie(g)&&g.packageId!==void 0?l=g.packageId:R(g)&&g.objectType.includes("WrappedAssetSetup")?(s=g.objectId,w=g.objectType.split(", ")[1].replace(">","")):R(g)&&g.objectType.includes("UpgradeCap")?u=g.objectId:R(g)&&g.objectType.includes("CoinMetadata")&&(f=g.objectId);if(l!==""&&s!==""&&u!==""&&f!==""){y=!0;break}else l="",s="",u="",f=""}}const k=we(l),c=new B,[A]=c.moveCall({target:`${i}::vaa::parse_and_verify`,arguments:[c.object(this.coreBridgeObjectId),c.pure.vector("u8",W(t)),c.object(C)]}),[E]=c.moveCall({target:`${o}::vaa::verify_only_once`,arguments:[c.object(this.tokenBridgeObjectId),A]});c.moveCall({target:`${o}::create_wrapped::complete_registration`,arguments:[c.object(this.tokenBridgeObjectId),c.object(f),c.object(s),c.object(u),E],typeArguments:[k,w]}),yield this.createUnsignedTx(c,"Sui.TokenBridge.SubmitAttestation")}async*transfer(t,e,i,o,a){const d=0n,r=0n,l=t.toString(),s=(v(i)?M:i).toString(),u=await I.getCoins(this.provider,t,s),[f,...w]=u.filter(p=>Q(p.coinType,s));if(f===void 0)throw new Error(`Coins array doesn't contain any coins of type ${s}`);const[y,k]=await this.getPackageIds(),c=new B,[A]=(()=>{if(s===M)return c.splitCoins(c.gas,[c.pure.u64(o)]);{const p=c.object(f.coinObjectId);return w.length&&c.mergeCoins(p,w.map(g=>c.object(g.coinObjectId))),c.splitCoins(p,[c.pure.u64(o)])}})(),[E]=c.splitCoins(c.gas,[c.pure.u64(d)]),[_]=c.moveCall({target:`${k}::state::verified_asset`,arguments:[c.object(this.tokenBridgeObjectId)],typeArguments:[s]});if(a){if(!l)throw new Error("senderAddress is required for transfer with payload");let p=!1;const g=await(async()=>{const K=await ce(this.provider,y,l);if(K!==null)return c.object(K);{const[ne]=c.moveCall({target:`${y}::emitter::new`,arguments:[c.object(this.coreBridgeObjectId)]});return p=!0,ne}})(),[T,te]=c.moveCall({target:`${k}::transfer_tokens_with_payload::prepare_transfer`,arguments:[g,_,A,c.pure.u16(j(e.chain)),c.pure.vector("u8",e.address.toUint8Array()),c.pure.vector("u8",a),c.pure.u32(0)],typeArguments:[s]});c.moveCall({target:`${k}::coin_utils::return_nonzero`,arguments:[te],typeArguments:[s]});const[re]=c.moveCall({target:`${k}::transfer_tokens_with_payload::transfer_tokens_with_payload`,arguments:[c.object(this.tokenBridgeObjectId),T],typeArguments:[s]});c.moveCall({target:`${y}::publish_message::publish_message`,arguments:[c.object(this.coreBridgeObjectId),E,re,c.object(C)]}),p&&c.transferObjects([g],c.pure.address(l)),yield this.createUnsignedTx(c,"Sui.TokenBridge.TransferWithPayload")}else{const[p,g]=c.moveCall({target:`${k}::transfer_tokens::prepare_transfer`,arguments:[_,A,c.pure.u16(j(e.chain)),c.pure.vector("u8",e.address.toUint8Array()),c.pure.u64(r),c.pure.u32(0)],typeArguments:[s]});c.moveCall({target:`${k}::coin_utils::return_nonzero`,arguments:[g],typeArguments:[s]});const[T]=c.moveCall({target:`${k}::transfer_tokens::transfer_tokens`,arguments:[c.object(this.tokenBridgeObjectId),p],typeArguments:[s]});c.moveCall({target:`${y}::publish_message::publish_message`,arguments:[c.object(this.coreBridgeObjectId),E,T,c.object(C)]}),yield this.createUnsignedTx(c,"Sui.TokenBridge.Transfer")}}async*redeem(t,e,i=!0){const o=await P(this.provider,this.tokenBridgeObjectId,e.payload.token.address.toUint8Array(),j(e.payload.token.chain));if(!o)throw new Error("Unable to fetch token coinType");const[a,d]=await this.getPackageIds(),r=new B,[n]=r.moveCall({target:`${a}::vaa::parse_and_verify`,arguments:[r.object(this.coreBridgeObjectId),r.pure.vector("u8",W(e)),r.object(C)]}),[l]=r.moveCall({target:`${d}::vaa::verify_only_once`,arguments:[r.object(this.tokenBridgeObjectId),n]}),[s]=r.moveCall({target:`${d}::complete_transfer::authorize_transfer`,arguments:[r.object(this.tokenBridgeObjectId),l],typeArguments:[o]}),[u]=r.moveCall({target:`${d}::complete_transfer::redeem_relayer_payout`,arguments:[s],typeArguments:[o]});r.moveCall({target:`${d}::coin_utils::return_nonzero`,arguments:[u],typeArguments:[o]}),yield this.createUnsignedTx(r,"Sui.TokenBridge.Redeem")}async getWrappedNative(){return G(this.chain,M)}async getPackageIds(){return Promise.all([x(this.provider,this.coreBridgeObjectId),x(this.provider,this.tokenBridgeObjectId)])}async getCoinBuildOutput(t,e,i){var r;if(i>8)throw new Error("Decimals is capped at 8");const o=(r=await de(this.provider,this.tokenBridgeObjectId))==null?void 0:r.replace("0x","");if(!o)throw new Error(`Original token bridge package ID not found for object ID ${this.tokenBridgeObjectId}`);const a="a11ceb0b060000000901000a020a14031e1704350405392d07669f01088502600ae502050cea02160004010b010c0205020d000002000201020003030c020001000104020700000700010001090801010c020a050600030803040202000302010702080007080100020800080303090002070801010b020209000901010608010105010b0202080008030209000504434f494e095478436f6e7465787408565f5f305f325f3011577261707065644173736574536574757004636f696e0e6372656174655f777261707065640b64756d6d795f6669656c6404696e697414707265706172655f726567697374726174696f6e0f7075626c69635f7472616e736665720673656e646572087472616e736665720a74785f636f6e746578740f76657273696f6e5f636f6e74726f6c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002"+o+"00020106010000000001090b0031"+i.toString(16).padStart(2,"0")+"0a0138000b012e110238010200";return{modules:[ye.encode(U.decode(a))],dependencies:["0x1","0x2",e,t].map(n=>me(n))}}createUnsignedTx(t,e,i=!1){return new ee(t,this.network,this.chain,e,i)}}class J{constructor(t,e,i,o){h(this,"network");h(this,"chain");h(this,"connection");h(this,"contracts");h(this,"tokenBridgeRelayerObjectId");h(this,"coreBridgeObjectId");h(this,"tokenBridgeObjectId");h(this,"fields");this.network=t,this.chain=e,this.connection=i,this.contracts=o;const{tokenBridge:a,tokenBridgeRelayer:d,coreBridge:r}=o;if(!a||!d||!r)throw new Error(`Some object IDs for ${e} Automatic Token Bridge not found`);this.tokenBridgeRelayerObjectId=d,this.tokenBridgeObjectId=a,this.coreBridgeObjectId=r}static async fromRpc(t,e){const[i,o]=await I.chainFromRpc(t),a=e[o];if(a.network!==i)throw new Error(`Network mismatch for chain ${o}: ${a.network} != ${i}`);return new J(i,o,t,a.contracts)}async*transfer(t,e,i,o,a){const r=new O(v(i)?I.nativeTokenId(this.network,this.chain).address:i).getCoinType(),{coreBridge:n,tokenBridge:l}=await this.getPackageIds(),s=new B,u=BigInt(0),[f]=s.splitCoins(s.gas,[s.pure.u64(u)]),[w]=await(async()=>{if(v(i))return s.splitCoins(s.gas,[s.pure.u64(o)]);{const E=await I.getCoins(this.connection,t,r),[_,...p]=E.filter(T=>T.coinType===r);if(_===void 0)throw new Error(`Coins array doesn't contain any coins of type ${r}`);const g=s.object(_.coinObjectId);return p.length&&s.mergeCoins(g,p.map(T=>s.object(T.coinObjectId))),s.splitCoins(g,[s.pure.u64(o)])}})(),[y]=s.moveCall({target:`${l}::state::verified_asset`,arguments:[s.object(this.tokenBridgeObjectId)],typeArguments:[r]}),k=await this.getPackageId(),[c]=s.moveCall({target:`${k}::transfer::transfer_tokens_with_relay`,arguments:[s.object(this.tokenBridgeRelayerObjectId),w,y,s.pure.u64(a??0n),s.pure.u16(j(e.chain)),s.pure.address(U.encode(e.address.toUint8Array(),!0)),s.pure.u32(123)],typeArguments:[r]}),[A]=s.moveCall({target:`${l}::transfer_tokens_with_payload::transfer_tokens_with_payload`,arguments:[s.object(this.tokenBridgeObjectId),c],typeArguments:[r]});s.moveCall({target:`${n}::publish_message::publish_message`,arguments:[s.object(this.coreBridgeObjectId),f,A,s.object(C)]}),yield this.createUnsignedTx(s,"AutomaticTokenBridge.transfer")}async*redeem(t,e){const{coreBridge:i,tokenBridge:o}=await this.getPackageIds(),{address:a,chain:d}=e.payload.token,r=await P(this.connection,this.tokenBridgeObjectId,a.toUniversalAddress().toUint8Array(),j(d));if(!r)throw new Error("Unable to fetch token coinType");const n=new B,[l]=n.moveCall({target:`${i}::vaa::parse_and_verify`,arguments:[n.object(this.coreBridgeObjectId),n.pure.vector("u8",W(e)),n.object(C)]}),[s]=n.moveCall({target:`${o}::vaa::verify_only_once`,arguments:[n.object(this.tokenBridgeObjectId),l]}),[u]=n.moveCall({target:`${o}::complete_transfer_with_payload::authorize_transfer`,arguments:[n.object(this.tokenBridgeObjectId),s],typeArguments:[r]}),f=await this.getPackageId();n.moveCall({target:`${f}::redeem::complete_transfer`,arguments:[n.object(this.tokenBridgeRelayerObjectId),u],typeArguments:[r]}),yield this.createUnsignedTx(n,"AutomaticTokenBridge.redeem")}async getRelayerFee(t,e){const i=v(e)?I.nativeTokenId(this.network,this.chain):e,o=await this.getTokenInfo(i.toString());if(o===null)throw new Error("Unsupported token for relay");const a=await this.getFields(),d=await this.connection.getDynamicFieldObject({parentId:this.tokenBridgeRelayerObjectId,name:{type:"vector<u8>",value:Array.from(ke.encode("relayer_fees"))}});if(!d.data||!d.data.content)throw d.error?new Error("Failed to get relayer fees: "+JSON.stringify(d.error)):new Error("Unable to compute relayer fee");const{content:r}=d.data;if(!b(r)||!le(r.fields.id))throw new Error("Unable to compute relayer fee");const n=await this.connection.getDynamicFieldObject({parentId:r.fields.id.id,name:{type:"u16",value:j(t)}});if(!n.data||!n.data.content)throw n.error?new Error("Failed to get relayer fees: "+JSON.stringify(d.error)):new Error("Unable to compute relayer fee");const{content:l}=n.data;if(!b(l))throw new Error("Unable to compute relayer fee");const s=await I.getDecimals(this.chain,this.connection,e.toString()),u=o.swap_rate,f=a.relayer_fee_precision,w=a.swap_rate_precision,y=l.fields.value;return 10n**BigInt(s)*BigInt(y)*BigInt(w)/(BigInt(u)*BigInt(f))}async maxSwapAmount(t){var n,l;const i=(v(t)?I.nativeTokenId(this.network,this.chain):t).toString(),o=await this.connection.getCoinMetadata({coinType:i});if(!o)throw new Error("metadata is null");const a=await this.getPackageId(),d=new B;d.moveCall({target:`${a}::redeem::calculate_max_swap_amount_in`,arguments:[d.object(this.tokenBridgeRelayerObjectId),d.pure.u8(o.decimals)],typeArguments:[i]});const r=await this.connection.devInspectTransactionBlock({transactionBlock:d,sender:U.encode(new Uint8Array(32))});if(!r.results||r.results.length==0||!((n=r.results[0])!=null&&n.returnValues)||((l=r.results[0])==null?void 0:l.returnValues.length)!==1)throw Error("swap rate not set");return H.decode(new Uint8Array(r.results[0].returnValues[0][0].toReversed()))}async nativeTokenAmount(t,e){var l,s;const o=(v(t)?I.nativeTokenId(this.network,this.chain):t).toString(),a=await this.connection.getCoinMetadata({coinType:o});if(!a)throw new Error("metadata is null");const d=await this.getPackageId(),r=new B;r.moveCall({target:`${d}::redeem::calculate_native_swap_amount_out`,arguments:[r.object(this.tokenBridgeRelayerObjectId),r.pure.u64(e),r.pure.u8(a.decimals)],typeArguments:[o]});const n=await this.connection.devInspectTransactionBlock({transactionBlock:r,sender:U.encode(new Uint8Array(32))});if(!n.results||n.results.length==0||!((l=n.results[0])!=null&&l.returnValues)||((s=n.results[0])==null?void 0:s.returnValues.length)!==1)throw Error("swap rate not set");return H.decode(new Uint8Array(n.results[0].returnValues[0][0].toReversed()))}async getRegisteredTokens(){const e=(await this.getFields()).registered_tokens.fields.id.id;return(await this.connection.getDynamicFields({parentId:e})).data.map(a=>{const{address:d,module:r,name:n}=be(a.objectType);return new O([d,r,n].join(Ie))})}async isRegisteredToken(t){const e=new O(v(t)?I.nativeTokenId(this.network,this.chain).address:t).unwrap();try{return await this.getTokenInfo(e)!==null}catch(i){console.error(i)}return!1}async getTokenInfo(t){var n;const e=await this.getFields(),o=new O(e.registered_tokens.type).getPackageId(),a=e.registered_tokens.fields.id.id,d=new O(t),r=Q(L,d.unwrap())?L:d.getCoinType();try{const l=await this.connection.getDynamicFieldObject({parentId:a,name:{type:`${o}::registered_tokens::Key<${r}>`,value:{dummy_field:!1}}});if(l.error)throw new Error("Failed to get token info: "+JSON.stringify(l.error));if(!l.data||!l.data.content)throw new Error("Failed to get token info: "+JSON.stringify(l));const{content:s}=l.data;return b(s)&&b(s.fields.value)?s.fields.value.fields:null}catch(l){if((l==null?void 0:l.code)===-32e3&&((n=l.message)!=null&&n.includes("RPC Error")))return console.error(l),null;throw l}}async getFields(){if(!this.fields){const t=await F(this.connection,this.tokenBridgeRelayerObjectId);if(t===null)throw new Error("Failed to get fields from token bridge relayer state");this.fields=t}return this.fields}async getPackageId(){const t=await this.getFields();return new O(t.registered_tokens.type).getPackageId()}async getPackageIds(){const[t,e]=await Promise.all([x(this.connection,this.coreBridgeObjectId),x(this.connection,this.tokenBridgeObjectId)]);return{coreBridge:t,tokenBridge:e}}createUnsignedTx(t,e,i=!1){return new ee(t,this.network,this.chain,e,i)}}Z("Sui","TokenBridge",z);Z("Sui","AutomaticTokenBridge",J);export{J as SuiAutomaticTokenBridge,z as SuiTokenBridge,P as getTokenCoinType,Y as getTokenFromTokenRegistry};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var Q=Object.defineProperty;var X=(n,t,e)=>t in n?Q(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e;var d=(n,t,e)=>X(n,typeof t!="symbol"?t+"":t,e);import{P as s,i as c,cb as h,bJ as Y,bK as E,bL as W,bM as Z,bN as J,bO as j,cG as $,cH as ee,cI as te,aD as ne,aE as K,cM as ie,cN as se,cO as ae,cP as re,cQ as oe,cR as N,cS as ce,cT as x,cU as de,cV as v,V as O,cW as ue,cX as me,cY as ge,cL as fe,cn as le,aF as he}from"../main.js";import{deriveWrappedMetaKey as G,deriveTokenBridgeConfigKey as L,deriveAuthoritySignerKey as pe,deriveSenderAccountKey as ye,deriveMintAuthorityKey as we,deriveEndpointKey as Se}from"./index-CwGBYrGm.js";const ke={version:"0.1.0",name:"wormhole_gateway",instructions:[{name:"initialize",accounts:[{name:"authority",isMut:!0,isSigner:!0},{name:"custodian",isMut:!0,isSigner:!1},{name:"tbtcMint",isMut:!1,isSigner:!1,docs:["TBTC Program's mint PDA address bump is saved in this program's config. Ordinarily, we would","not have to deserialize this account. But we do in this case to make sure the TBTC program","has been initialized before this program."]},{name:"wrappedTbtcMint",isMut:!1,isSigner:!1},{name:"wrappedTbtcToken",isMut:!0,isSigner:!1},{name:"tokenBridgeSender",isMut:!1,isSigner:!1,docs:["sign for transferring via Token Bridge program with a message."]},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[{name:"mintingLimit",type:"u64"}]},{name:"changeAuthority",accounts:[{name:"custodian",isMut:!0,isSigner:!1},{name:"authority",isMut:!1,isSigner:!0},{name:"newAuthority",isMut:!1,isSigner:!1}],args:[]},{name:"cancelAuthorityChange",accounts:[{name:"custodian",isMut:!0,isSigner:!1},{name:"authority",isMut:!1,isSigner:!0}],args:[]},{name:"takeAuthority",accounts:[{name:"custodian",isMut:!0,isSigner:!1},{name:"pendingAuthority",isMut:!1,isSigner:!0}],args:[]},{name:"updateGatewayAddress",accounts:[{name:"custodian",isMut:!1,isSigner:!1},{name:"gatewayInfo",isMut:!0,isSigner:!1},{name:"authority",isMut:!0,isSigner:!0},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"UpdateGatewayAddressArgs"}}]},{name:"updateMintingLimit",accounts:[{name:"custodian",isMut:!0,isSigner:!1},{name:"authority",isMut:!1,isSigner:!0}],args:[{name:"newLimit",type:"u64"}]},{name:"receiveTbtc",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"custodian",isMut:!0,isSigner:!1},{name:"postedVaa",isMut:!1,isSigner:!1},{name:"tokenBridgeClaim",isMut:!0,isSigner:!1,docs:["transfer. By checking whether this account exists is a short-circuit way of bailing out","early if this transfer has already been redeemed (as opposed to letting the Token Bridge","instruction fail)."]},{name:"wrappedTbtcToken",isMut:!0,isSigner:!1,docs:["Custody account."]},{name:"wrappedTbtcMint",isMut:!0,isSigner:!1,docs:["This mint is owned by the Wormhole Token Bridge program. This PDA address is stored in the","custodian account."]},{name:"tbtcMint",isMut:!0,isSigner:!1},{name:"recipientToken",isMut:!0,isSigner:!1,docs:["Token account for minted tBTC.","","NOTE: Because the recipient is encoded in the transfer message payload, we can check the","authority from the deserialized VAA. But we should still check whether the authority is the","zero address in access control."]},{name:"recipient",isMut:!1,isSigner:!1,docs:["be created for him."]},{name:"recipientWrappedToken",isMut:!0,isSigner:!1,docs:["The gateway will create an associated token account for the recipient if it doesn't exist.","","NOTE: When the minting limit increases, the recipient can use this token account to mint","tBTC using the deposit_wormhole_tbtc instruction."]},{name:"tbtcConfig",isMut:!1,isSigner:!1},{name:"tbtcMinterInfo",isMut:!1,isSigner:!1},{name:"tokenBridgeConfig",isMut:!1,isSigner:!1},{name:"tokenBridgeRegisteredEmitter",isMut:!1,isSigner:!1},{name:"tokenBridgeWrappedAsset",isMut:!1,isSigner:!1},{name:"tokenBridgeMintAuthority",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1},{name:"tbtcProgram",isMut:!1,isSigner:!1},{name:"tokenBridgeProgram",isMut:!1,isSigner:!1},{name:"coreBridgeProgram",isMut:!1,isSigner:!1},{name:"associatedTokenProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"messageHash",type:{array:["u8",32]}}]},{name:"sendTbtcGateway",accounts:[{name:"custodian",isMut:!0,isSigner:!1},{name:"gatewayInfo",isMut:!1,isSigner:!1},{name:"wrappedTbtcToken",isMut:!0,isSigner:!1,docs:["Custody account."]},{name:"wrappedTbtcMint",isMut:!0,isSigner:!1},{name:"tbtcMint",isMut:!0,isSigner:!1},{name:"senderToken",isMut:!0,isSigner:!1},{name:"sender",isMut:!0,isSigner:!0},{name:"tokenBridgeConfig",isMut:!1,isSigner:!1},{name:"tokenBridgeWrappedAsset",isMut:!1,isSigner:!1},{name:"tokenBridgeTransferAuthority",isMut:!1,isSigner:!1},{name:"coreBridgeData",isMut:!0,isSigner:!1},{name:"coreMessage",isMut:!0,isSigner:!1},{name:"tokenBridgeCoreEmitter",isMut:!1,isSigner:!1},{name:"coreEmitterSequence",isMut:!0,isSigner:!1},{name:"coreFeeCollector",isMut:!0,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"tokenBridgeSender",isMut:!1,isSigner:!1,docs:["sign for transferring via Token Bridge program with a message."]},{name:"rent",isMut:!1,isSigner:!1},{name:"tokenBridgeProgram",isMut:!1,isSigner:!1},{name:"coreBridgeProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"SendTbtcGatewayArgs"}}]},{name:"sendTbtcWrapped",accounts:[{name:"custodian",isMut:!0,isSigner:!1},{name:"wrappedTbtcToken",isMut:!0,isSigner:!1,docs:["Custody account."]},{name:"wrappedTbtcMint",isMut:!0,isSigner:!1},{name:"tbtcMint",isMut:!0,isSigner:!1},{name:"senderToken",isMut:!0,isSigner:!1},{name:"sender",isMut:!0,isSigner:!0},{name:"tokenBridgeConfig",isMut:!1,isSigner:!1},{name:"tokenBridgeWrappedAsset",isMut:!1,isSigner:!1},{name:"tokenBridgeTransferAuthority",isMut:!1,isSigner:!1},{name:"coreBridgeData",isMut:!0,isSigner:!1},{name:"coreMessage",isMut:!0,isSigner:!1},{name:"tokenBridgeCoreEmitter",isMut:!1,isSigner:!1},{name:"coreEmitterSequence",isMut:!0,isSigner:!1},{name:"coreFeeCollector",isMut:!0,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1},{name:"tokenBridgeProgram",isMut:!1,isSigner:!1},{name:"coreBridgeProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"SendTbtcWrappedArgs"}}]},{name:"depositWormholeTbtc",accounts:[{name:"custodian",isMut:!0,isSigner:!1,docs:["NOTE: This account also acts as a minter for the TBTC program."]},{name:"wrappedTbtcToken",isMut:!0,isSigner:!1,docs:["This token account is owned by this program, whose mint is the wrapped TBTC mint. This PDA","address is stored in the custodian account."]},{name:"wrappedTbtcMint",isMut:!1,isSigner:!1,docs:["This mint is owned by the Wormhole Token Bridge program. This PDA address is stored in the","custodian account."]},{name:"tbtcMint",isMut:!0,isSigner:!1,docs:["This mint is owned by the TBTC program. This PDA address is stored in the custodian account."]},{name:"recipientWrappedToken",isMut:!0,isSigner:!1},{name:"recipientToken",isMut:!0,isSigner:!1},{name:"recipient",isMut:!1,isSigner:!0,docs:["This program requires that the owner of the TBTC token account sign for TBTC being minted","into his account."]},{name:"tbtcConfig",isMut:!1,isSigner:!1},{name:"tbtcMinterInfo",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"tbtcProgram",isMut:!1,isSigner:!1}],args:[{name:"amount",type:"u64"}]}],accounts:[{name:"custodian",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"authority",type:"publicKey"},{name:"pendingAuthority",type:{option:"publicKey"}},{name:"tbtcMint",type:"publicKey"},{name:"wrappedTbtcMint",type:"publicKey"},{name:"wrappedTbtcToken",type:"publicKey"},{name:"tokenBridgeSender",type:"publicKey"},{name:"tokenBridgeSenderBump",type:"u8"},{name:"mintingLimit",type:"u64"},{name:"mintedAmount",type:"u64"}]}},{name:"GatewayInfo",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"address",type:{array:["u8",32]}}]}}],types:[{name:"UpdateGatewayAddressArgs",type:{kind:"struct",fields:[{name:"chain",type:"u16"},{name:"address",type:{array:["u8",32]}}]}},{name:"SendTbtcGatewayArgs",type:{kind:"struct",fields:[{name:"amount",type:"u64"},{name:"recipientChain",type:"u16"},{name:"recipient",type:{array:["u8",32]}},{name:"nonce",type:"u32"}]}},{name:"SendTbtcWrappedArgs",type:{kind:"struct",fields:[{name:"amount",type:"u64"},{name:"recipientChain",type:"u16"},{name:"recipient",type:{array:["u8",32]}},{name:"arbiterFee",type:"u64"},{name:"nonce",type:"u32"}]}}],events:[{name:"WormholeTbtcReceived",fields:[{name:"receiver",type:"publicKey",index:!1},{name:"amount",type:"u64",index:!1}]},{name:"WormholeTbtcSent",fields:[{name:"amount",type:"u64",index:!1},{name:"recipientChain",type:"u16",index:!1},{name:"gateway",type:{array:["u8",32]},index:!1},{name:"recipient",type:{array:["u8",32]},index:!1},{name:"arbiterFee",type:"u64",index:!1},{name:"nonce",type:"u32",index:!1}]},{name:"WormholeTbtcDeposited",fields:[{name:"depositor",type:"publicKey",index:!1},{name:"amount",type:"u64",index:!1}]},{name:"GatewayAddressUpdated",fields:[{name:"chain",type:"u16",index:!1},{name:"gateway",type:{array:["u8",32]},index:!1}]},{name:"MintingLimitUpdated",fields:[{name:"mintingLimit",type:"u64",index:!1}]}],errors:[{code:6016,name:"MintingLimitExceeded",msg:"Cannot mint more than the minting limit"},{code:6032,name:"IsNotAuthority",msg:"Only custodian authority is permitted for this action"},{code:6034,name:"IsNotPendingAuthority",msg:"Not valid pending authority to take authority"},{code:6036,name:"NoPendingAuthorityChange",msg:"No pending authority"},{code:6048,name:"ZeroRecipient",msg:"0x0 recipient not allowed"},{code:6064,name:"NotEnoughWrappedTbtc",msg:"Not enough wormhole tBTC in the gateway to bridge"},{code:6080,name:"ZeroAmount",msg:"Amount must not be 0"},{code:6112,name:"TransferAlreadyRedeemed",msg:"Token Bridge transfer already redeemed"},{code:6128,name:"InvalidEthereumTbtc",msg:"Token chain and address do not match Ethereum's tBTC"},{code:6144,name:"NoTbtcTransferred",msg:"No tBTC transferred"},{code:6160,name:"RecipientZeroAddress",msg:"0x0 receiver not allowed"},{code:6176,name:"MintedAmountUnderflow",msg:"Not enough minted by the gateway to satisfy sending tBTC"},{code:6178,name:"MintedAmountOverflow",msg:"Minted amount after deposit exceeds u64"}]};function R(n){return s.findProgramAddressSync([c.Buffer.from("redeemer")],new s(n))[0]}function Me(n,t){const e=c.Buffer.alloc(8);return e.writeBigUInt64LE(t),s.findProgramAddressSync([c.Buffer.from("msg"),e],new s(n))[0]}function Te(n,t){const e=c.Buffer.alloc(2);return e.writeUInt16LE(h(t)),s.findProgramAddressSync([c.Buffer.from("gateway-info"),e],new s(n))[0]}const T=new s("Gj93RRt6QB7FjmyokAD5rcMAku7pq3Fk2Aa8y6nNbwsV");function Be(){return s.findProgramAddressSync([c.Buffer.from("config")],T)[0]}function be(n){return s.findProgramAddressSync([c.Buffer.from("minter-info"),n.toBuffer()],T)[0]}const B=new s("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA");new s("TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb");const b=new s("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL");new s("So11111111111111111111111111111111111111112");new s("9pan9bMn5HatX4EJdBwg9VgCa7Uz5HL8N1m5D3NdXejP");class Ae extends Error{constructor(t){super(t)}}class Ce extends Ae{constructor(){super(...arguments),this.name="TokenOwnerOffCurveError"}}const Pe=Y([E("mintAuthorityOption"),W("mintAuthority"),Z("supply"),J("decimals"),j("isInitialized"),E("freezeAuthorityOption"),W("freezeAuthority")]);Pe.span;async function M(n,t,e=!1,r=B,i=b){if(!e&&!s.isOnCurve(t.toBuffer()))throw new Ce;const[a]=await s.findProgramAddress([t.toBuffer(),r.toBuffer(),n.toBuffer()],i);return a}function Ie(n,t,e,r,i=B,a=b){return Ee(n,t,e,r,c.Buffer.alloc(0),i,a)}function Ee(n,t,e,r,i,a=B,o=b){const u=[{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:$.programId,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!1}];return new ee({keys:u,programId:o,data:i})}class A{constructor(t,e,r,i){d(this,"network");d(this,"chain");d(this,"connection");d(this,"contracts");d(this,"gateway");d(this,"tokenBridgeId");d(this,"coreBridgeId");if(this.network=t,this.chain=e,this.connection=r,this.contracts=i,this.network!=="Mainnet")throw new Error("TBTC is only supported on Mainnet");if(!this.contracts.tbtc)throw new Error("TBTC contract address is required");if(!this.contracts.tokenBridge)throw new Error("TokenBridge contract address is required");if(!this.contracts.coreBridge)throw new Error("CoreBridge contract address is required");this.gateway=new te(ke,this.contracts.tbtc,{connection:r}),this.tokenBridgeId=new s(this.contracts.tokenBridge),this.coreBridgeId=new s(this.contracts.coreBridge)}static async fromRpc(t,e){const[r,i]=await ne.chainFromRpc(t),a=e[i];if(a.network!==r)throw new Error(`Network mismatch: ${a.network} != ${r}`);return new A(r,i,t,a.contracts)}async*transfer(t,e,r){const i=new K(t).unwrap(),a=R(this.gateway.programId),{tbtcMint:o,wrappedTbtcToken:u,wrappedTbtcMint:m}=await this.gateway.account.custodian.fetch(a),p=G(this.tokenBridgeId,m),g=L(this.tokenBridgeId),f=pe(this.tokenBridgeId),C=ie(this.coreBridgeId),{sequence:y}=await se(this.connection,this.tokenBridgeId,this.coreBridgeId),w=Me(this.gateway.programId,y),S=ae(this.coreBridgeId),l=re(this.tokenBridgeId),k=oe(l,this.coreBridgeId),U=Te(this.gateway.programId,e.chain),V=ye(this.gateway.programId),P={amount:new N.BN(r.toString()),recipientChain:h(e.chain),recipient:[...e.address.toUniversalAddress().toUint8Array()],nonce:0},D=await M(o,i),q=ce.get(this.network,e.chain),I={custodian:a,wrappedTbtcToken:u,wrappedTbtcMint:m,tbtcMint:o,senderToken:D,sender:i,tokenBridgeConfig:g,tokenBridgeWrappedAsset:p,tokenBridgeTransferAuthority:f,coreBridgeData:S,coreMessage:w,tokenBridgeCoreEmitter:l,coreEmitterSequence:k,coreFeeCollector:C,clock:de,rent:x,tokenBridgeProgram:this.tokenBridgeId,coreBridgeProgram:this.coreBridgeId},_=q?await this.gateway.methods.sendTbtcGateway({...P}).accounts({...I,gatewayInfo:U,tokenBridgeSender:V}).instruction():await this.gateway.methods.sendTbtcWrapped({...P,arbiterFee:new N.BN(0)}).accounts(I).instruction(),{blockhash:F}=await this.connection.getLatestBlockhash(),z=v.compile({instructions:[_],payerKey:i,recentBlockhash:F}),H=new O(z);yield this.createUnsignedTransaction({transaction:H},"TBTCBridge.Send")}async*redeem(t,e){if(e.payloadName!=="GatewayTransfer")throw new Error("Invalid VAA payload");yield*new ue(this.network,this.chain,this.connection,this.contracts).postVaa(t,e);const i=[],a=new K(t).unwrap(),o=e.payload.payload.recipient.toNative(this.chain).unwrap(),u=R(this.gateway.programId),{tbtcMint:m,wrappedTbtcToken:p,wrappedTbtcMint:g}=await this.gateway.account.custodian.fetch(u),f=await M(m,o);await this.connection.getAccountInfo(f)||i.push(Ie(a,f,o,m));const y=G(this.tokenBridgeId,g),w=await M(g,o);i.push(await this.gateway.methods.receiveTbtc([...e.hash]).accounts({payer:a,custodian:u,postedVaa:ge(this.coreBridgeId,c.Buffer.from(e.hash)),tokenBridgeClaim:me(this.tokenBridgeId,e.emitterAddress.toUint8Array(),h(e.emitterChain),e.sequence),wrappedTbtcToken:p,wrappedTbtcMint:g,tbtcMint:m,recipientToken:f,recipient:o,recipientWrappedToken:w,tbtcConfig:Be(),tbtcMinterInfo:be(u),tokenBridgeConfig:L(this.tokenBridgeId),tokenBridgeRegisteredEmitter:Se(this.tokenBridgeId,h(e.emitterChain),e.emitterAddress.toUint8Array()),tokenBridgeWrappedAsset:y,tokenBridgeMintAuthority:we(this.tokenBridgeId),rent:x,tbtcProgram:T,tokenBridgeProgram:this.tokenBridgeId,coreBridgeProgram:this.coreBridgeId}).instruction());const{blockhash:S}=await this.connection.getLatestBlockhash(),l=v.compile({instructions:i,payerKey:a,recentBlockhash:S}),k=new O(l);yield this.createUnsignedTransaction({transaction:k},"TBTCBridge.Send")}createUnsignedTransaction(t,e){return new fe(t,this.network,this.chain,e,!1)}}le(he,"TBTCBridge",A);export{A as SolanaTBTCBridge};
|
|
1
|
+
var Z=Object.defineProperty;var H=(n,t,e)=>t in n?Z(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e;var d=(n,t,e)=>H(n,typeof t!="symbol"?t+"":t,e);import{P as s,i as c,cd as h,bM as X,bN as E,bO as W,bP as Y,bQ as J,bR as j,cI as $,cJ as ee,cK as te,aD as ne,aE as K,cO as ie,cP as se,cQ as ae,cR as re,cS as oe,cT as N,cU as ce,cV as x,cW as de,cX as v,V as O,cY as ue,cZ as me,c_ as ge,cN as fe,cp as le,aF as he}from"../main.js";import{deriveWrappedMetaKey as R,deriveTokenBridgeConfigKey as G,deriveAuthoritySignerKey as pe,deriveSenderAccountKey as ye,deriveMintAuthorityKey as we,deriveEndpointKey as Se}from"./index-BxXKtU8j.js";const ke={version:"0.1.0",name:"wormhole_gateway",instructions:[{name:"initialize",accounts:[{name:"authority",isMut:!0,isSigner:!0},{name:"custodian",isMut:!0,isSigner:!1},{name:"tbtcMint",isMut:!1,isSigner:!1,docs:["TBTC Program's mint PDA address bump is saved in this program's config. Ordinarily, we would","not have to deserialize this account. But we do in this case to make sure the TBTC program","has been initialized before this program."]},{name:"wrappedTbtcMint",isMut:!1,isSigner:!1},{name:"wrappedTbtcToken",isMut:!0,isSigner:!1},{name:"tokenBridgeSender",isMut:!1,isSigner:!1,docs:["sign for transferring via Token Bridge program with a message."]},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[{name:"mintingLimit",type:"u64"}]},{name:"changeAuthority",accounts:[{name:"custodian",isMut:!0,isSigner:!1},{name:"authority",isMut:!1,isSigner:!0},{name:"newAuthority",isMut:!1,isSigner:!1}],args:[]},{name:"cancelAuthorityChange",accounts:[{name:"custodian",isMut:!0,isSigner:!1},{name:"authority",isMut:!1,isSigner:!0}],args:[]},{name:"takeAuthority",accounts:[{name:"custodian",isMut:!0,isSigner:!1},{name:"pendingAuthority",isMut:!1,isSigner:!0}],args:[]},{name:"updateGatewayAddress",accounts:[{name:"custodian",isMut:!1,isSigner:!1},{name:"gatewayInfo",isMut:!0,isSigner:!1},{name:"authority",isMut:!0,isSigner:!0},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"UpdateGatewayAddressArgs"}}]},{name:"updateMintingLimit",accounts:[{name:"custodian",isMut:!0,isSigner:!1},{name:"authority",isMut:!1,isSigner:!0}],args:[{name:"newLimit",type:"u64"}]},{name:"receiveTbtc",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"custodian",isMut:!0,isSigner:!1},{name:"postedVaa",isMut:!1,isSigner:!1},{name:"tokenBridgeClaim",isMut:!0,isSigner:!1,docs:["transfer. By checking whether this account exists is a short-circuit way of bailing out","early if this transfer has already been redeemed (as opposed to letting the Token Bridge","instruction fail)."]},{name:"wrappedTbtcToken",isMut:!0,isSigner:!1,docs:["Custody account."]},{name:"wrappedTbtcMint",isMut:!0,isSigner:!1,docs:["This mint is owned by the Wormhole Token Bridge program. This PDA address is stored in the","custodian account."]},{name:"tbtcMint",isMut:!0,isSigner:!1},{name:"recipientToken",isMut:!0,isSigner:!1,docs:["Token account for minted tBTC.","","NOTE: Because the recipient is encoded in the transfer message payload, we can check the","authority from the deserialized VAA. But we should still check whether the authority is the","zero address in access control."]},{name:"recipient",isMut:!1,isSigner:!1,docs:["be created for him."]},{name:"recipientWrappedToken",isMut:!0,isSigner:!1,docs:["The gateway will create an associated token account for the recipient if it doesn't exist.","","NOTE: When the minting limit increases, the recipient can use this token account to mint","tBTC using the deposit_wormhole_tbtc instruction."]},{name:"tbtcConfig",isMut:!1,isSigner:!1},{name:"tbtcMinterInfo",isMut:!1,isSigner:!1},{name:"tokenBridgeConfig",isMut:!1,isSigner:!1},{name:"tokenBridgeRegisteredEmitter",isMut:!1,isSigner:!1},{name:"tokenBridgeWrappedAsset",isMut:!1,isSigner:!1},{name:"tokenBridgeMintAuthority",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1},{name:"tbtcProgram",isMut:!1,isSigner:!1},{name:"tokenBridgeProgram",isMut:!1,isSigner:!1},{name:"coreBridgeProgram",isMut:!1,isSigner:!1},{name:"associatedTokenProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"messageHash",type:{array:["u8",32]}}]},{name:"sendTbtcGateway",accounts:[{name:"custodian",isMut:!0,isSigner:!1},{name:"gatewayInfo",isMut:!1,isSigner:!1},{name:"wrappedTbtcToken",isMut:!0,isSigner:!1,docs:["Custody account."]},{name:"wrappedTbtcMint",isMut:!0,isSigner:!1},{name:"tbtcMint",isMut:!0,isSigner:!1},{name:"senderToken",isMut:!0,isSigner:!1},{name:"sender",isMut:!0,isSigner:!0},{name:"tokenBridgeConfig",isMut:!1,isSigner:!1},{name:"tokenBridgeWrappedAsset",isMut:!1,isSigner:!1},{name:"tokenBridgeTransferAuthority",isMut:!1,isSigner:!1},{name:"coreBridgeData",isMut:!0,isSigner:!1},{name:"coreMessage",isMut:!0,isSigner:!1},{name:"tokenBridgeCoreEmitter",isMut:!1,isSigner:!1},{name:"coreEmitterSequence",isMut:!0,isSigner:!1},{name:"coreFeeCollector",isMut:!0,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"tokenBridgeSender",isMut:!1,isSigner:!1,docs:["sign for transferring via Token Bridge program with a message."]},{name:"rent",isMut:!1,isSigner:!1},{name:"tokenBridgeProgram",isMut:!1,isSigner:!1},{name:"coreBridgeProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"SendTbtcGatewayArgs"}}]},{name:"sendTbtcWrapped",accounts:[{name:"custodian",isMut:!0,isSigner:!1},{name:"wrappedTbtcToken",isMut:!0,isSigner:!1,docs:["Custody account."]},{name:"wrappedTbtcMint",isMut:!0,isSigner:!1},{name:"tbtcMint",isMut:!0,isSigner:!1},{name:"senderToken",isMut:!0,isSigner:!1},{name:"sender",isMut:!0,isSigner:!0},{name:"tokenBridgeConfig",isMut:!1,isSigner:!1},{name:"tokenBridgeWrappedAsset",isMut:!1,isSigner:!1},{name:"tokenBridgeTransferAuthority",isMut:!1,isSigner:!1},{name:"coreBridgeData",isMut:!0,isSigner:!1},{name:"coreMessage",isMut:!0,isSigner:!1},{name:"tokenBridgeCoreEmitter",isMut:!1,isSigner:!1},{name:"coreEmitterSequence",isMut:!0,isSigner:!1},{name:"coreFeeCollector",isMut:!0,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1},{name:"tokenBridgeProgram",isMut:!1,isSigner:!1},{name:"coreBridgeProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"SendTbtcWrappedArgs"}}]},{name:"depositWormholeTbtc",accounts:[{name:"custodian",isMut:!0,isSigner:!1,docs:["NOTE: This account also acts as a minter for the TBTC program."]},{name:"wrappedTbtcToken",isMut:!0,isSigner:!1,docs:["This token account is owned by this program, whose mint is the wrapped TBTC mint. This PDA","address is stored in the custodian account."]},{name:"wrappedTbtcMint",isMut:!1,isSigner:!1,docs:["This mint is owned by the Wormhole Token Bridge program. This PDA address is stored in the","custodian account."]},{name:"tbtcMint",isMut:!0,isSigner:!1,docs:["This mint is owned by the TBTC program. This PDA address is stored in the custodian account."]},{name:"recipientWrappedToken",isMut:!0,isSigner:!1},{name:"recipientToken",isMut:!0,isSigner:!1},{name:"recipient",isMut:!1,isSigner:!0,docs:["This program requires that the owner of the TBTC token account sign for TBTC being minted","into his account."]},{name:"tbtcConfig",isMut:!1,isSigner:!1},{name:"tbtcMinterInfo",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"tbtcProgram",isMut:!1,isSigner:!1}],args:[{name:"amount",type:"u64"}]}],accounts:[{name:"custodian",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"authority",type:"publicKey"},{name:"pendingAuthority",type:{option:"publicKey"}},{name:"tbtcMint",type:"publicKey"},{name:"wrappedTbtcMint",type:"publicKey"},{name:"wrappedTbtcToken",type:"publicKey"},{name:"tokenBridgeSender",type:"publicKey"},{name:"tokenBridgeSenderBump",type:"u8"},{name:"mintingLimit",type:"u64"},{name:"mintedAmount",type:"u64"}]}},{name:"GatewayInfo",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"address",type:{array:["u8",32]}}]}}],types:[{name:"UpdateGatewayAddressArgs",type:{kind:"struct",fields:[{name:"chain",type:"u16"},{name:"address",type:{array:["u8",32]}}]}},{name:"SendTbtcGatewayArgs",type:{kind:"struct",fields:[{name:"amount",type:"u64"},{name:"recipientChain",type:"u16"},{name:"recipient",type:{array:["u8",32]}},{name:"nonce",type:"u32"}]}},{name:"SendTbtcWrappedArgs",type:{kind:"struct",fields:[{name:"amount",type:"u64"},{name:"recipientChain",type:"u16"},{name:"recipient",type:{array:["u8",32]}},{name:"arbiterFee",type:"u64"},{name:"nonce",type:"u32"}]}}],events:[{name:"WormholeTbtcReceived",fields:[{name:"receiver",type:"publicKey",index:!1},{name:"amount",type:"u64",index:!1}]},{name:"WormholeTbtcSent",fields:[{name:"amount",type:"u64",index:!1},{name:"recipientChain",type:"u16",index:!1},{name:"gateway",type:{array:["u8",32]},index:!1},{name:"recipient",type:{array:["u8",32]},index:!1},{name:"arbiterFee",type:"u64",index:!1},{name:"nonce",type:"u32",index:!1}]},{name:"WormholeTbtcDeposited",fields:[{name:"depositor",type:"publicKey",index:!1},{name:"amount",type:"u64",index:!1}]},{name:"GatewayAddressUpdated",fields:[{name:"chain",type:"u16",index:!1},{name:"gateway",type:{array:["u8",32]},index:!1}]},{name:"MintingLimitUpdated",fields:[{name:"mintingLimit",type:"u64",index:!1}]}],errors:[{code:6016,name:"MintingLimitExceeded",msg:"Cannot mint more than the minting limit"},{code:6032,name:"IsNotAuthority",msg:"Only custodian authority is permitted for this action"},{code:6034,name:"IsNotPendingAuthority",msg:"Not valid pending authority to take authority"},{code:6036,name:"NoPendingAuthorityChange",msg:"No pending authority"},{code:6048,name:"ZeroRecipient",msg:"0x0 recipient not allowed"},{code:6064,name:"NotEnoughWrappedTbtc",msg:"Not enough wormhole tBTC in the gateway to bridge"},{code:6080,name:"ZeroAmount",msg:"Amount must not be 0"},{code:6112,name:"TransferAlreadyRedeemed",msg:"Token Bridge transfer already redeemed"},{code:6128,name:"InvalidEthereumTbtc",msg:"Token chain and address do not match Ethereum's tBTC"},{code:6144,name:"NoTbtcTransferred",msg:"No tBTC transferred"},{code:6160,name:"RecipientZeroAddress",msg:"0x0 receiver not allowed"},{code:6176,name:"MintedAmountUnderflow",msg:"Not enough minted by the gateway to satisfy sending tBTC"},{code:6178,name:"MintedAmountOverflow",msg:"Minted amount after deposit exceeds u64"}]};function U(n){return s.findProgramAddressSync([c.Buffer.from("redeemer")],new s(n))[0]}function Me(n,t){const e=c.Buffer.alloc(8);return e.writeBigUInt64LE(t),s.findProgramAddressSync([c.Buffer.from("msg"),e],new s(n))[0]}function Te(n,t){const e=c.Buffer.alloc(2);return e.writeUInt16LE(h(t)),s.findProgramAddressSync([c.Buffer.from("gateway-info"),e],new s(n))[0]}const T=new s("Gj93RRt6QB7FjmyokAD5rcMAku7pq3Fk2Aa8y6nNbwsV");function Be(){return s.findProgramAddressSync([c.Buffer.from("config")],T)[0]}function be(n){return s.findProgramAddressSync([c.Buffer.from("minter-info"),n.toBuffer()],T)[0]}const B=new s("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA");new s("TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb");const b=new s("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL");new s("So11111111111111111111111111111111111111112");new s("9pan9bMn5HatX4EJdBwg9VgCa7Uz5HL8N1m5D3NdXejP");class Ae extends Error{constructor(t){super(t)}}class Pe extends Ae{constructor(){super(...arguments),this.name="TokenOwnerOffCurveError"}}const Ce=X([E("mintAuthorityOption"),W("mintAuthority"),Y("supply"),J("decimals"),j("isInitialized"),E("freezeAuthorityOption"),W("freezeAuthority")]);Ce.span;async function M(n,t,e=!1,r=B,i=b){if(!e&&!s.isOnCurve(t.toBuffer()))throw new Pe;const[a]=await s.findProgramAddress([t.toBuffer(),r.toBuffer(),n.toBuffer()],i);return a}function Ie(n,t,e,r,i=B,a=b){return Ee(n,t,e,r,c.Buffer.alloc(0),i,a)}function Ee(n,t,e,r,i,a=B,o=b){const u=[{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:$.programId,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!1}];return new ee({keys:u,programId:o,data:i})}class A{constructor(t,e,r,i){d(this,"network");d(this,"chain");d(this,"connection");d(this,"contracts");d(this,"gateway");d(this,"tokenBridgeId");d(this,"coreBridgeId");if(this.network=t,this.chain=e,this.connection=r,this.contracts=i,this.network!=="Mainnet")throw new Error("TBTC is only supported on Mainnet");if(!this.contracts.tbtc)throw new Error("TBTC contract address is required");if(!this.contracts.tokenBridge)throw new Error("TokenBridge contract address is required");if(!this.contracts.coreBridge)throw new Error("CoreBridge contract address is required");this.gateway=new te(ke,this.contracts.tbtc,{connection:r}),this.tokenBridgeId=new s(this.contracts.tokenBridge),this.coreBridgeId=new s(this.contracts.coreBridge)}static async fromRpc(t,e){const[r,i]=await ne.chainFromRpc(t),a=e[i];if(a.network!==r)throw new Error(`Network mismatch: ${a.network} != ${r}`);return new A(r,i,t,a.contracts)}async*transfer(t,e,r){const i=new K(t).unwrap(),a=U(this.gateway.programId),{tbtcMint:o,wrappedTbtcToken:u,wrappedTbtcMint:m}=await this.gateway.account.custodian.fetch(a),p=R(this.tokenBridgeId,m),g=G(this.tokenBridgeId),f=pe(this.tokenBridgeId),P=ie(this.coreBridgeId),{sequence:y}=await se(this.connection,this.tokenBridgeId,this.coreBridgeId),w=Me(this.gateway.programId,y),S=ae(this.coreBridgeId),l=re(this.tokenBridgeId),k=oe(l,this.coreBridgeId),V=Te(this.gateway.programId,e.chain),D=ye(this.gateway.programId),C={amount:new N.BN(r.toString()),recipientChain:h(e.chain),recipient:[...e.address.toUniversalAddress().toUint8Array()],nonce:0},L=await M(o,i),q=ce.get(this.network,e.chain),I={custodian:a,wrappedTbtcToken:u,wrappedTbtcMint:m,tbtcMint:o,senderToken:L,sender:i,tokenBridgeConfig:g,tokenBridgeWrappedAsset:p,tokenBridgeTransferAuthority:f,coreBridgeData:S,coreMessage:w,tokenBridgeCoreEmitter:l,coreEmitterSequence:k,coreFeeCollector:P,clock:de,rent:x,tokenBridgeProgram:this.tokenBridgeId,coreBridgeProgram:this.coreBridgeId},_=q?await this.gateway.methods.sendTbtcGateway({...C}).accounts({...I,gatewayInfo:V,tokenBridgeSender:D}).instruction():await this.gateway.methods.sendTbtcWrapped({...C,arbiterFee:new N.BN(0)}).accounts(I).instruction(),{blockhash:F}=await this.connection.getLatestBlockhash(),z=v.compile({instructions:[_],payerKey:i,recentBlockhash:F}),Q=new O(z);yield this.createUnsignedTransaction({transaction:Q},"TBTCBridge.Send")}async*redeem(t,e){if(e.payloadName!=="GatewayTransfer")throw new Error("Invalid VAA payload");yield*new ue(this.network,this.chain,this.connection,this.contracts).postVaa(t,e);const i=[],a=new K(t).unwrap(),o=e.payload.payload.recipient.toNative(this.chain).unwrap(),u=U(this.gateway.programId),{tbtcMint:m,wrappedTbtcToken:p,wrappedTbtcMint:g}=await this.gateway.account.custodian.fetch(u),f=await M(m,o);await this.connection.getAccountInfo(f)||i.push(Ie(a,f,o,m));const y=R(this.tokenBridgeId,g),w=await M(g,o);i.push(await this.gateway.methods.receiveTbtc([...e.hash]).accounts({payer:a,custodian:u,postedVaa:ge(this.coreBridgeId,c.Buffer.from(e.hash)),tokenBridgeClaim:me(this.tokenBridgeId,e.emitterAddress.toUint8Array(),h(e.emitterChain),e.sequence),wrappedTbtcToken:p,wrappedTbtcMint:g,tbtcMint:m,recipientToken:f,recipient:o,recipientWrappedToken:w,tbtcConfig:Be(),tbtcMinterInfo:be(u),tokenBridgeConfig:G(this.tokenBridgeId),tokenBridgeRegisteredEmitter:Se(this.tokenBridgeId,h(e.emitterChain),e.emitterAddress.toUint8Array()),tokenBridgeWrappedAsset:y,tokenBridgeMintAuthority:we(this.tokenBridgeId),rent:x,tbtcProgram:T,tokenBridgeProgram:this.tokenBridgeId,coreBridgeProgram:this.coreBridgeId}).instruction());const{blockhash:S}=await this.connection.getLatestBlockhash(),l=v.compile({instructions:i,payerKey:a,recentBlockhash:S}),k=new O(l);yield this.createUnsignedTransaction({transaction:k},"TBTCBridge.Send")}createUnsignedTransaction(t,e){return new fe(t,this.network,this.chain,e,!1)}}le(he,"TBTCBridge",A);export{A as SolanaTBTCBridge};
|