@lombard.finance/sdk-solana 1.2.1 → 1.2.2
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/index2.cjs +2 -2
- package/dist/index2.js +88 -29
- package/package.json +1 -1
- package/src/idl/consortium.json +173 -35
- package/src/utils/tokenAccount.ts +1 -1
- package/src/web3Sdk/claimToken/claimBtcb.ts +10 -4
- package/src/web3Sdk/claimToken/claimToken.ts +15 -5
- package/src/web3Sdk/claimToken/shared.ts +111 -3
package/dist/index2.cjs
CHANGED
|
@@ -111,10 +111,10 @@ Use Chrome, Firefox or Internet Explorer 11`)}var s=requireSafeBuffer$2().Buffer
|
|
|
111
111
|
use chrome, FireFox or Internet Explorer 11`)}var t=requireSafeBuffer$2(),a=requireBrowser$e(),s=t.Buffer,u=t.kMaxLength,l=commonjsGlobal$2.crypto||commonjsGlobal$2.msCrypto,p=Math.pow(2,32)-1;function m(M,k){if(typeof M!="number"||M!==M)throw new TypeError("offset must be a number");if(M>p||M<0)throw new TypeError("offset must be a uint32");if(M>u||M>k)throw new RangeError("offset out of range")}function g(M,k,P){if(typeof M!="number"||M!==M)throw new TypeError("size must be a number");if(M>p||M<0)throw new TypeError("size must be a uint32");if(M+k>P||M>u)throw new RangeError("buffer too small")}l&&l.getRandomValues||!process$1.browser?(browser$4.randomFill=b,browser$4.randomFillSync=E):(browser$4.randomFill=e,browser$4.randomFillSync=e);function b(M,k,P,x){if(!s.isBuffer(M)&&!(M instanceof commonjsGlobal$2.Uint8Array))throw new TypeError('"buf" argument must be a Buffer or Uint8Array');if(typeof k=="function")x=k,k=0,P=M.length;else if(typeof P=="function")x=P,P=M.length-k;else if(typeof x!="function")throw new TypeError('"cb" argument must be a function');return m(k,M.length),g(P,k,M.length),v(M,k,P,x)}function v(M,k,P,x){if(process$1.browser){var A=M.buffer,O=new Uint8Array(A,k,P);if(l.getRandomValues(O),x){process$1.nextTick(function(){x(null,M)});return}return M}if(x){a(P,function(z,C){if(z)return x(z);C.copy(M,k),x(null,M)});return}var D=a(P);return D.copy(M,k),M}function E(M,k,P){if(typeof k>"u"&&(k=0),!s.isBuffer(M)&&!(M instanceof commonjsGlobal$2.Uint8Array))throw new TypeError('"buf" argument must be a Buffer or Uint8Array');return m(k,M.length),P===void 0&&(P=M.length-k),g(P,k,M.length),v(M,k,P)}return browser$4}var hasRequiredCryptoBrowserify;function requireCryptoBrowserify(){if(hasRequiredCryptoBrowserify)return cryptoBrowserify;hasRequiredCryptoBrowserify=1,cryptoBrowserify.randomBytes=cryptoBrowserify.rng=cryptoBrowserify.pseudoRandomBytes=cryptoBrowserify.prng=requireBrowser$e(),cryptoBrowserify.createHash=cryptoBrowserify.Hash=requireBrowser$d(),cryptoBrowserify.createHmac=cryptoBrowserify.Hmac=requireBrowser$c();var e=requireAlgos(),t=Object.keys(e),a=["sha1","sha224","sha256","sha384","sha512","md5","rmd160"].concat(t);cryptoBrowserify.getHashes=function(){return a};var s=requireBrowser$b();cryptoBrowserify.pbkdf2=s.pbkdf2,cryptoBrowserify.pbkdf2Sync=s.pbkdf2Sync;var u=requireBrowser$9();cryptoBrowserify.Cipher=u.Cipher,cryptoBrowserify.createCipher=u.createCipher,cryptoBrowserify.Cipheriv=u.Cipheriv,cryptoBrowserify.createCipheriv=u.createCipheriv,cryptoBrowserify.Decipher=u.Decipher,cryptoBrowserify.createDecipher=u.createDecipher,cryptoBrowserify.Decipheriv=u.Decipheriv,cryptoBrowserify.createDecipheriv=u.createDecipheriv,cryptoBrowserify.getCiphers=u.getCiphers,cryptoBrowserify.listCiphers=u.listCiphers;var l=requireBrowser$8();cryptoBrowserify.DiffieHellmanGroup=l.DiffieHellmanGroup,cryptoBrowserify.createDiffieHellmanGroup=l.createDiffieHellmanGroup,cryptoBrowserify.getDiffieHellman=l.getDiffieHellman,cryptoBrowserify.createDiffieHellman=l.createDiffieHellman,cryptoBrowserify.DiffieHellman=l.DiffieHellman;var p=requireBrowser$7();cryptoBrowserify.createSign=p.createSign,cryptoBrowserify.Sign=p.Sign,cryptoBrowserify.createVerify=p.createVerify,cryptoBrowserify.Verify=p.Verify,cryptoBrowserify.createECDH=requireBrowser$6();var m=requireBrowser$5();cryptoBrowserify.publicEncrypt=m.publicEncrypt,cryptoBrowserify.privateEncrypt=m.privateEncrypt,cryptoBrowserify.publicDecrypt=m.publicDecrypt,cryptoBrowserify.privateDecrypt=m.privateDecrypt;var g=requireBrowser$4();return cryptoBrowserify.randomFill=g.randomFill,cryptoBrowserify.randomFillSync=g.randomFillSync,cryptoBrowserify.createCredentials=function(){throw new Error(`sorry, createCredentials is not implemented yet
|
|
112
112
|
we accept pull requests
|
|
113
113
|
https://github.com/browserify/crypto-browserify`)},cryptoBrowserify.constants={DH_CHECK_P_NOT_SAFE_PRIME:2,DH_CHECK_P_NOT_PRIME:1,DH_UNABLE_TO_CHECK_GENERATOR:4,DH_NOT_SUITABLE_GENERATOR:8,NPN_ENABLED:1,ALPN_ENABLED:1,RSA_PKCS1_PADDING:1,RSA_SSLV23_PADDING:2,RSA_NO_PADDING:3,RSA_PKCS1_OAEP_PADDING:4,RSA_X931_PADDING:5,RSA_PKCS1_PSS_PADDING:6,POINT_CONVERSION_COMPRESSED:2,POINT_CONVERSION_UNCOMPRESSED:4,POINT_CONVERSION_HYBRID:6},cryptoBrowserify}var hasRequiredSha256$3;function requireSha256$3(){return hasRequiredSha256$3||(hasRequiredSha256$3=1,(function(e){(function(){var t="input is invalid type",a=typeof window=="object",s=a?window:{};s.JS_SHA256_NO_WINDOW&&(a=!1);var u=!a&&typeof self=="object",l=!s.JS_SHA256_NO_NODE_JS&&typeof process$1=="object"&&process$1.versions&&process$1.versions.node&&process$1.type!="renderer";l?s=commonjsGlobal$2:u&&(s=self);var p=!s.JS_SHA256_NO_COMMON_JS&&!0&&e.exports,m=!s.JS_SHA256_NO_ARRAY_BUFFER&&typeof ArrayBuffer<"u",g="0123456789abcdef".split(""),b=[-2147483648,8388608,32768,128],v=[24,16,8,0],E=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],M=["hex","array","digest","arrayBuffer"],k=[];(s.JS_SHA256_NO_NODE_JS||!Array.isArray)&&(Array.isArray=function(j){return Object.prototype.toString.call(j)==="[object Array]"}),m&&(s.JS_SHA256_NO_ARRAY_BUFFER_IS_VIEW||!ArrayBuffer.isView)&&(ArrayBuffer.isView=function(j){return typeof j=="object"&&j.buffer&&j.buffer.constructor===ArrayBuffer});var P=function(j,V){return function(K){return new z(V,!0).update(K)[j]()}},x=function(j){var V=P("hex",j);l&&(V=A(V,j)),V.create=function(){return new z(j)},V.update=function(q){return V.create().update(q)};for(var K=0;K<M.length;++K){var F=M[K];V[F]=P(F,j)}return V},A=function(j,V){var K=requireCryptoBrowserify(),F=requireDist$7().Buffer,q=V?"sha224":"sha256",R;F.from&&!s.JS_SHA256_NO_BUFFER_FROM?R=F.from:R=function(S){return new F(S)};var y=function(S){if(typeof S=="string")return K.createHash(q).update(S,"utf8").digest("hex");if(S==null)throw new Error(t);return S.constructor===ArrayBuffer&&(S=new Uint8Array(S)),Array.isArray(S)||ArrayBuffer.isView(S)||S.constructor===F?K.createHash(q).update(R(S)).digest("hex"):j(S)};return y},O=function(j,V){return function(K,F){return new C(K,V,!0).update(F)[j]()}},D=function(j){var V=O("hex",j);V.create=function(q){return new C(q,j)},V.update=function(q,R){return V.create(q).update(R)};for(var K=0;K<M.length;++K){var F=M[K];V[F]=O(F,j)}return V};function z(j,V){V?(k[0]=k[16]=k[1]=k[2]=k[3]=k[4]=k[5]=k[6]=k[7]=k[8]=k[9]=k[10]=k[11]=k[12]=k[13]=k[14]=k[15]=0,this.blocks=k):this.blocks=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],j?(this.h0=3238371032,this.h1=914150663,this.h2=812702999,this.h3=4144912697,this.h4=4290775857,this.h5=1750603025,this.h6=1694076839,this.h7=3204075428):(this.h0=1779033703,this.h1=3144134277,this.h2=1013904242,this.h3=2773480762,this.h4=1359893119,this.h5=2600822924,this.h6=528734635,this.h7=1541459225),this.block=this.start=this.bytes=this.hBytes=0,this.finalized=this.hashed=!1,this.first=!0,this.is224=j}z.prototype.update=function(j){if(!this.finalized){var V,K=typeof j;if(K!=="string"){if(K==="object"){if(j===null)throw new Error(t);if(m&&j.constructor===ArrayBuffer)j=new Uint8Array(j);else if(!Array.isArray(j)&&(!m||!ArrayBuffer.isView(j)))throw new Error(t)}else throw new Error(t);V=!0}for(var F,q=0,R,y=j.length,S=this.blocks;q<y;){if(this.hashed&&(this.hashed=!1,S[0]=this.block,this.block=S[16]=S[1]=S[2]=S[3]=S[4]=S[5]=S[6]=S[7]=S[8]=S[9]=S[10]=S[11]=S[12]=S[13]=S[14]=S[15]=0),V)for(R=this.start;q<y&&R<64;++q)S[R>>>2]|=j[q]<<v[R++&3];else for(R=this.start;q<y&&R<64;++q)F=j.charCodeAt(q),F<128?S[R>>>2]|=F<<v[R++&3]:F<2048?(S[R>>>2]|=(192|F>>>6)<<v[R++&3],S[R>>>2]|=(128|F&63)<<v[R++&3]):F<55296||F>=57344?(S[R>>>2]|=(224|F>>>12)<<v[R++&3],S[R>>>2]|=(128|F>>>6&63)<<v[R++&3],S[R>>>2]|=(128|F&63)<<v[R++&3]):(F=65536+((F&1023)<<10|j.charCodeAt(++q)&1023),S[R>>>2]|=(240|F>>>18)<<v[R++&3],S[R>>>2]|=(128|F>>>12&63)<<v[R++&3],S[R>>>2]|=(128|F>>>6&63)<<v[R++&3],S[R>>>2]|=(128|F&63)<<v[R++&3]);this.lastByteIndex=R,this.bytes+=R-this.start,R>=64?(this.block=S[16],this.start=R-64,this.hash(),this.hashed=!0):this.start=R}return this.bytes>4294967295&&(this.hBytes+=this.bytes/4294967296<<0,this.bytes=this.bytes%4294967296),this}},z.prototype.finalize=function(){if(!this.finalized){this.finalized=!0;var j=this.blocks,V=this.lastByteIndex;j[16]=this.block,j[V>>>2]|=b[V&3],this.block=j[16],V>=56&&(this.hashed||this.hash(),j[0]=this.block,j[16]=j[1]=j[2]=j[3]=j[4]=j[5]=j[6]=j[7]=j[8]=j[9]=j[10]=j[11]=j[12]=j[13]=j[14]=j[15]=0),j[14]=this.hBytes<<3|this.bytes>>>29,j[15]=this.bytes<<3,this.hash()}},z.prototype.hash=function(){var j=this.h0,V=this.h1,K=this.h2,F=this.h3,q=this.h4,R=this.h5,y=this.h6,S=this.h7,w=this.blocks,T,U,N,$,I,_,H,Z,W,G,J;for(T=16;T<64;++T)I=w[T-15],U=(I>>>7|I<<25)^(I>>>18|I<<14)^I>>>3,I=w[T-2],N=(I>>>17|I<<15)^(I>>>19|I<<13)^I>>>10,w[T]=w[T-16]+U+w[T-7]+N<<0;for(J=V&K,T=0;T<64;T+=4)this.first?(this.is224?(Z=300032,I=w[0]-1413257819,S=I-150054599<<0,F=I+24177077<<0):(Z=704751109,I=w[0]-210244248,S=I-1521486534<<0,F=I+143694565<<0),this.first=!1):(U=(j>>>2|j<<30)^(j>>>13|j<<19)^(j>>>22|j<<10),N=(q>>>6|q<<26)^(q>>>11|q<<21)^(q>>>25|q<<7),Z=j&V,$=Z^j&K^J,H=q&R^~q&y,I=S+N+H+E[T]+w[T],_=U+$,S=F+I<<0,F=I+_<<0),U=(F>>>2|F<<30)^(F>>>13|F<<19)^(F>>>22|F<<10),N=(S>>>6|S<<26)^(S>>>11|S<<21)^(S>>>25|S<<7),W=F&j,$=W^F&V^Z,H=S&q^~S&R,I=y+N+H+E[T+1]+w[T+1],_=U+$,y=K+I<<0,K=I+_<<0,U=(K>>>2|K<<30)^(K>>>13|K<<19)^(K>>>22|K<<10),N=(y>>>6|y<<26)^(y>>>11|y<<21)^(y>>>25|y<<7),G=K&F,$=G^K&j^W,H=y&S^~y&q,I=R+N+H+E[T+2]+w[T+2],_=U+$,R=V+I<<0,V=I+_<<0,U=(V>>>2|V<<30)^(V>>>13|V<<19)^(V>>>22|V<<10),N=(R>>>6|R<<26)^(R>>>11|R<<21)^(R>>>25|R<<7),J=V&K,$=J^V&F^G,H=R&y^~R&S,I=q+N+H+E[T+3]+w[T+3],_=U+$,q=j+I<<0,j=I+_<<0,this.chromeBugWorkAround=!0;this.h0=this.h0+j<<0,this.h1=this.h1+V<<0,this.h2=this.h2+K<<0,this.h3=this.h3+F<<0,this.h4=this.h4+q<<0,this.h5=this.h5+R<<0,this.h6=this.h6+y<<0,this.h7=this.h7+S<<0},z.prototype.hex=function(){this.finalize();var j=this.h0,V=this.h1,K=this.h2,F=this.h3,q=this.h4,R=this.h5,y=this.h6,S=this.h7,w=g[j>>>28&15]+g[j>>>24&15]+g[j>>>20&15]+g[j>>>16&15]+g[j>>>12&15]+g[j>>>8&15]+g[j>>>4&15]+g[j&15]+g[V>>>28&15]+g[V>>>24&15]+g[V>>>20&15]+g[V>>>16&15]+g[V>>>12&15]+g[V>>>8&15]+g[V>>>4&15]+g[V&15]+g[K>>>28&15]+g[K>>>24&15]+g[K>>>20&15]+g[K>>>16&15]+g[K>>>12&15]+g[K>>>8&15]+g[K>>>4&15]+g[K&15]+g[F>>>28&15]+g[F>>>24&15]+g[F>>>20&15]+g[F>>>16&15]+g[F>>>12&15]+g[F>>>8&15]+g[F>>>4&15]+g[F&15]+g[q>>>28&15]+g[q>>>24&15]+g[q>>>20&15]+g[q>>>16&15]+g[q>>>12&15]+g[q>>>8&15]+g[q>>>4&15]+g[q&15]+g[R>>>28&15]+g[R>>>24&15]+g[R>>>20&15]+g[R>>>16&15]+g[R>>>12&15]+g[R>>>8&15]+g[R>>>4&15]+g[R&15]+g[y>>>28&15]+g[y>>>24&15]+g[y>>>20&15]+g[y>>>16&15]+g[y>>>12&15]+g[y>>>8&15]+g[y>>>4&15]+g[y&15];return this.is224||(w+=g[S>>>28&15]+g[S>>>24&15]+g[S>>>20&15]+g[S>>>16&15]+g[S>>>12&15]+g[S>>>8&15]+g[S>>>4&15]+g[S&15]),w},z.prototype.toString=z.prototype.hex,z.prototype.digest=function(){this.finalize();var j=this.h0,V=this.h1,K=this.h2,F=this.h3,q=this.h4,R=this.h5,y=this.h6,S=this.h7,w=[j>>>24&255,j>>>16&255,j>>>8&255,j&255,V>>>24&255,V>>>16&255,V>>>8&255,V&255,K>>>24&255,K>>>16&255,K>>>8&255,K&255,F>>>24&255,F>>>16&255,F>>>8&255,F&255,q>>>24&255,q>>>16&255,q>>>8&255,q&255,R>>>24&255,R>>>16&255,R>>>8&255,R&255,y>>>24&255,y>>>16&255,y>>>8&255,y&255];return this.is224||w.push(S>>>24&255,S>>>16&255,S>>>8&255,S&255),w},z.prototype.array=z.prototype.digest,z.prototype.arrayBuffer=function(){this.finalize();var j=new ArrayBuffer(this.is224?28:32),V=new DataView(j);return V.setUint32(0,this.h0),V.setUint32(4,this.h1),V.setUint32(8,this.h2),V.setUint32(12,this.h3),V.setUint32(16,this.h4),V.setUint32(20,this.h5),V.setUint32(24,this.h6),this.is224||V.setUint32(28,this.h7),j};function C(j,V,K){var F,q=typeof j;if(q==="string"){var R=[],y=j.length,S=0,w;for(F=0;F<y;++F)w=j.charCodeAt(F),w<128?R[S++]=w:w<2048?(R[S++]=192|w>>>6,R[S++]=128|w&63):w<55296||w>=57344?(R[S++]=224|w>>>12,R[S++]=128|w>>>6&63,R[S++]=128|w&63):(w=65536+((w&1023)<<10|j.charCodeAt(++F)&1023),R[S++]=240|w>>>18,R[S++]=128|w>>>12&63,R[S++]=128|w>>>6&63,R[S++]=128|w&63);j=R}else if(q==="object"){if(j===null)throw new Error(t);if(m&&j.constructor===ArrayBuffer)j=new Uint8Array(j);else if(!Array.isArray(j)&&(!m||!ArrayBuffer.isView(j)))throw new Error(t)}else throw new Error(t);j.length>64&&(j=new z(V,!0).update(j).array());var T=[],U=[];for(F=0;F<64;++F){var N=j[F]||0;T[F]=92^N,U[F]=54^N}z.call(this,V,K),this.update(U),this.oKeyPad=T,this.inner=!0,this.sharedMemory=K}C.prototype=new z,C.prototype.finalize=function(){if(z.prototype.finalize.call(this),this.inner){this.inner=!1;var j=this.array();z.call(this,this.is224,this.sharedMemory),this.update(this.oKeyPad),this.update(j),z.prototype.finalize.call(this)}};var L=x();L.sha256=L,L.sha224=x(!0),L.sha256.hmac=D(),L.sha224.hmac=D(!0),p?e.exports=L:(s.sha256=L.sha256,s.sha224=L.sha224)})()})(sha256$7)),sha256$7.exports}var sha256Exports=requireSha256$3();class MintPayload{constructor(t){Rt(this,"prefix");Rt(this,"chainId");Rt(this,"destinationAddress");Rt(this,"amount");Rt(this,"txId");Rt(this,"vout");this.prefix=t.slice(0,8),this.chainId=t.slice(8,72),this.destinationAddress=t.slice(72,136),this.amount=t.slice(136,200),this.txId=t.slice(200,264),this.vout=t.slice(264)}hex(){return this.prefix+this.chainId+this.destinationAddress+this.amount+this.txId+this.vout}bytes(){return Buffer.from(this.hex(),"hex")}hash(){return sha256Exports.sha256(this.bytes())}hashAsBytes(){return Buffer.from(this.hash(),"hex")}recipientPubKey(){const t=bs58$4.encode(Buffer.from(this.destinationAddress,"hex"));return new PublicKey$1(t)}amountBigInt(){return BigInt(`0x${this.amount}`)}}const address$3=null,metadata$4={name:"lbtc",version:"0.1.0",spec:"0.1.0",description:"Created with Anchor"},instructions$4=JSON.parse('[{"name":"accept_ownership","discriminator":[172,23,43,13,238,213,85,150],"accounts":[{"name":"payer","signer":true},{"name":"config","writable":true,"pda":{"seeds":[{"kind":"const","value":[108,98,116,99,95,99,111,110,102,105,103]}]}}],"args":[]},{"name":"add_claimer","discriminator":[33,50,122,167,214,239,123,116],"accounts":[{"name":"payer","signer":true},{"name":"config","writable":true,"pda":{"seeds":[{"kind":"const","value":[108,98,116,99,95,99,111,110,102,105,103]}]}}],"args":[{"name":"claimer","type":"pubkey"}]},{"name":"add_pauser","discriminator":[164,101,59,65,139,178,135,187],"accounts":[{"name":"payer","signer":true},{"name":"config","writable":true,"pda":{"seeds":[{"kind":"const","value":[108,98,116,99,95,99,111,110,102,105,103]}]}}],"args":[{"name":"pauser","type":"pubkey"}]},{"name":"change_mint_auth","discriminator":[98,59,17,150,173,118,36,101],"accounts":[{"name":"payer","signer":true},{"name":"config","pda":{"seeds":[{"kind":"const","value":[108,98,116,99,95,99,111,110,102,105,103]}]}},{"name":"mint","writable":true},{"name":"current_auth","docs":["current authority is passed the function call will fail."]},{"name":"token_program"},{"name":"token_authority","pda":{"seeds":[{"kind":"const","value":[116,111,107,101,110,95,97,117,116,104,111,114,105,116,121]}]}}],"args":[{"name":"new_auth","type":"pubkey"}]},{"name":"create_metadata","discriminator":[30,35,117,134,196,139,44,25],"accounts":[{"name":"payer","writable":true,"signer":true},{"name":"config","writable":true,"pda":{"seeds":[{"kind":"const","value":[108,98,116,99,95,99,111,110,102,105,103]}]}},{"name":"token_program"},{"name":"metadata_program"},{"name":"metadata_pda","writable":true},{"name":"mint","writable":true},{"name":"mint_authority","docs":["instruction will fail."]},{"name":"token_authority","pda":{"seeds":[{"kind":"const","value":[116,111,107,101,110,95,97,117,116,104,111,114,105,116,121]}]}},{"name":"system_program","address":"11111111111111111111111111111111"},{"name":"sysvar_instructions"}],"args":[]},{"name":"create_metadata_for_valset_payload","discriminator":[189,101,231,21,186,160,249,252],"accounts":[{"name":"payer","writable":true,"signer":true},{"name":"metadata","writable":true,"pda":{"seeds":[{"kind":"arg","path":"hash"},{"kind":"const","value":[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]},{"kind":"account","path":"payer"}]}},{"name":"system_program","address":"11111111111111111111111111111111"}],"args":[{"name":"hash","type":{"array":["u8",32]}}]},{"name":"create_mint_payload","discriminator":[205,40,45,244,160,237,72,219],"accounts":[{"name":"payer","writable":true,"signer":true},{"name":"config","pda":{"seeds":[{"kind":"const","value":[108,98,116,99,95,99,111,110,102,105,103]}]}},{"name":"payload","writable":true,"pda":{"seeds":[{"kind":"arg","path":"mint_payload_hash"}]}},{"name":"system_program","address":"11111111111111111111111111111111"}],"args":[{"name":"mint_payload_hash","type":{"array":["u8",32]}},{"name":"mint_payload","type":{"array":["u8",164]}}]},{"name":"create_valset_payload","discriminator":[231,207,246,127,211,38,71,1],"accounts":[{"name":"payer","writable":true,"signer":true},{"name":"config","pda":{"seeds":[{"kind":"const","value":[108,98,116,99,95,99,111,110,102,105,103]}]}},{"name":"metadata","writable":true},{"name":"payload","writable":true},{"name":"system_program","address":"11111111111111111111111111111111"}],"args":[{"name":"epoch","type":"u64"},{"name":"weight_threshold","type":"u64"},{"name":"height","type":"u64"}]},{"name":"disable_bascule","discriminator":[57,164,60,76,249,175,240,28],"accounts":[{"name":"payer","signer":true},{"name":"config","writable":true,"pda":{"seeds":[{"kind":"const","value":[108,98,116,99,95,99,111,110,102,105,103]}]}}],"args":[]},{"name":"disable_withdrawals","discriminator":[150,136,206,120,173,230,137,209],"accounts":[{"name":"payer","signer":true},{"name":"config","writable":true,"pda":{"seeds":[{"kind":"const","value":[108,98,116,99,95,99,111,110,102,105,103]}]}}],"args":[]},{"name":"enable_bascule","discriminator":[42,184,103,55,45,231,145,180],"accounts":[{"name":"payer","signer":true},{"name":"config","writable":true,"pda":{"seeds":[{"kind":"const","value":[108,98,116,99,95,99,111,110,102,105,103]}]}}],"args":[]},{"name":"enable_withdrawals","discriminator":[97,146,76,161,177,54,109,83],"accounts":[{"name":"payer","signer":true},{"name":"config","writable":true,"pda":{"seeds":[{"kind":"const","value":[108,98,116,99,95,99,111,110,102,105,103]}]}}],"args":[]},{"name":"initialize","discriminator":[175,175,109,31,13,152,155,237],"accounts":[{"name":"deployer","writable":true,"signer":true},{"name":"program_data","pda":{"seeds":[{"kind":"const","value":[5,18,233,181,134,159,8,194,99,45,239,95,15,59,4,50,169,234,230,162,95,98,2,56,42,26,72,208,172,11,245,81]}],"program":{"kind":"const","value":[2,168,246,145,78,136,161,176,226,16,21,62,247,99,174,43,0,194,185,61,22,193,36,210,192,83,122,16,4,128,0,0]}}},{"name":"mint"},{"name":"treasury"},{"name":"config","writable":true,"pda":{"seeds":[{"kind":"const","value":[108,98,116,99,95,99,111,110,102,105,103]}]}},{"name":"system_program","address":"11111111111111111111111111111111"}],"args":[{"name":"admin","type":"pubkey"},{"name":"burn_commission","type":"u64"},{"name":"dust_fee_rate","type":"u64"},{"name":"mint_fee","type":"u64"}]},{"name":"mint_from_payload","discriminator":[78,44,95,232,161,7,56,178],"accounts":[{"name":"payer","writable":true,"signer":true},{"name":"config","pda":{"seeds":[{"kind":"const","value":[108,98,116,99,95,99,111,110,102,105,103]}]}},{"name":"token_program"},{"name":"recipient","writable":true},{"name":"mint","writable":true},{"name":"mint_authority","docs":["instruction will fail."]},{"name":"token_authority","pda":{"seeds":[{"kind":"const","value":[116,111,107,101,110,95,97,117,116,104,111,114,105,116,121]}]}},{"name":"payload","writable":true,"pda":{"seeds":[{"kind":"arg","path":"mint_payload_hash"}]}},{"name":"bascule","optional":true,"address":"E1p8P6TTe8QvKmSK7QZ3n7HtQY9hE1p9JrCwLrXnPUfn"},{"name":"bascule_data","writable":true,"optional":true,"pda":{"seeds":[{"kind":"const","value":[98,97,115,99,117,108,101]}],"program":{"kind":"const","value":[193,93,55,141,121,57,63,222,176,201,79,221,101,49,120,87,228,105,19,90,252,72,35,96,106,143,169,173,71,172,57,85]}}},{"name":"deposit","writable":true,"optional":true},{"name":"system_program","optional":true,"address":"11111111111111111111111111111111"}],"args":[{"name":"mint_payload_hash","type":{"array":["u8",32]}}]},{"name":"mint_with_fee","discriminator":[142,93,70,12,187,19,19,154],"accounts":[{"name":"payer","writable":true,"signer":true},{"name":"config","pda":{"seeds":[{"kind":"const","value":[108,98,116,99,95,99,111,110,102,105,103]}]}},{"name":"token_program"},{"name":"recipient_auth"},{"name":"recipient","writable":true},{"name":"mint","writable":true},{"name":"mint_authority","docs":["instruction will fail."]},{"name":"token_authority","pda":{"seeds":[{"kind":"const","value":[116,111,107,101,110,95,97,117,116,104,111,114,105,116,121]}]}},{"name":"treasury","writable":true},{"name":"payload","writable":true,"pda":{"seeds":[{"kind":"arg","path":"mint_payload_hash"}]}},{"name":"bascule","optional":true,"address":"E1p8P6TTe8QvKmSK7QZ3n7HtQY9hE1p9JrCwLrXnPUfn"},{"name":"bascule_data","writable":true,"optional":true,"pda":{"seeds":[{"kind":"const","value":[98,97,115,99,117,108,101]}],"program":{"kind":"const","value":[193,93,55,141,121,57,63,222,176,201,79,221,101,49,120,87,228,105,19,90,252,72,35,96,106,143,169,173,71,172,57,85]}}},{"name":"deposit","writable":true,"optional":true},{"name":"system_program","optional":true,"address":"11111111111111111111111111111111"}],"args":[{"name":"mint_payload_hash","type":{"array":["u8",32]}},{"name":"fee_payload","type":{"array":["u8",132]}},{"name":"fee_signature","type":{"array":["u8",64]}}]},{"name":"pause","discriminator":[211,22,221,251,74,121,193,47],"accounts":[{"name":"payer","signer":true},{"name":"config","writable":true,"pda":{"seeds":[{"kind":"const","value":[108,98,116,99,95,99,111,110,102,105,103]}]}}],"args":[]},{"name":"post_metadata_for_valset_payload","discriminator":[200,60,18,229,92,163,148,119],"accounts":[{"name":"payer","signer":true},{"name":"metadata","writable":true}],"args":[{"name":"validators","type":{"vec":{"array":["u8",64]}}},{"name":"weights","type":{"vec":"u64"}}]},{"name":"post_mint_signatures","discriminator":[224,223,208,229,215,98,206,244],"accounts":[{"name":"config","pda":{"seeds":[{"kind":"const","value":[108,98,116,99,95,99,111,110,102,105,103]}]}},{"name":"payload","writable":true,"pda":{"seeds":[{"kind":"arg","path":"mint_payload_hash"}]}}],"args":[{"name":"mint_payload_hash","type":{"array":["u8",32]}},{"name":"signatures","type":{"vec":{"array":["u8",64]}}},{"name":"indices","type":{"vec":"u64"}}]},{"name":"post_valset_signatures","discriminator":[227,35,134,32,134,86,93,76],"accounts":[{"name":"payer","signer":true},{"name":"config","pda":{"seeds":[{"kind":"const","value":[108,98,116,99,95,99,111,110,102,105,103]}]}},{"name":"payload","writable":true}],"args":[{"name":"signatures","type":{"vec":{"array":["u8",64]}}},{"name":"indices","type":{"vec":"u64"}}]},{"name":"redeem","discriminator":[184,12,86,149,70,196,97,225],"accounts":[{"name":"payer","writable":true,"signer":true},{"name":"holder","writable":true},{"name":"config","writable":true,"pda":{"seeds":[{"kind":"const","value":[108,98,116,99,95,99,111,110,102,105,103]}]}},{"name":"token_program"},{"name":"mint","writable":true},{"name":"treasury","writable":true},{"name":"unstake_info","writable":true,"pda":{"seeds":[{"kind":"account","path":"config.unstake_counter","account":"Config"}]}},{"name":"system_program","address":"11111111111111111111111111111111"}],"args":[{"name":"script_pubkey","type":"bytes"},{"name":"amount","type":"u64"}]},{"name":"remove_claimer","discriminator":[152,9,18,115,56,228,139,144],"accounts":[{"name":"payer","signer":true},{"name":"config","writable":true,"pda":{"seeds":[{"kind":"const","value":[108,98,116,99,95,99,111,110,102,105,103]}]}}],"args":[{"name":"claimer","type":"pubkey"}]},{"name":"remove_pauser","discriminator":[251,114,202,18,216,118,176,86],"accounts":[{"name":"payer","signer":true},{"name":"config","writable":true,"pda":{"seeds":[{"kind":"const","value":[108,98,116,99,95,99,111,110,102,105,103]}]}}],"args":[{"name":"pauser","type":"pubkey"}]},{"name":"set_burn_commission","discriminator":[222,166,1,25,113,177,18,103],"accounts":[{"name":"payer","signer":true},{"name":"config","writable":true,"pda":{"seeds":[{"kind":"const","value":[108,98,116,99,95,99,111,110,102,105,103]}]}}],"args":[{"name":"commission","type":"u64"}]},{"name":"set_dust_fee_rate","discriminator":[85,132,15,39,176,199,66,119],"accounts":[{"name":"payer","signer":true},{"name":"config","writable":true,"pda":{"seeds":[{"kind":"const","value":[108,98,116,99,95,99,111,110,102,105,103]}]}}],"args":[{"name":"rate","type":"u64"}]},{"name":"set_initial_valset","discriminator":[171,69,132,141,206,84,175,115],"accounts":[{"name":"payer","writable":true,"signer":true},{"name":"config","writable":true,"pda":{"seeds":[{"kind":"const","value":[108,98,116,99,95,99,111,110,102,105,103]}]}},{"name":"metadata","writable":true},{"name":"payload","writable":true}],"args":[]},{"name":"set_mint_fee","discriminator":[52,77,178,201,245,51,250,139],"accounts":[{"name":"payer","signer":true},{"name":"config","writable":true,"pda":{"seeds":[{"kind":"const","value":[108,98,116,99,95,99,111,110,102,105,103]}]}}],"args":[{"name":"mint_fee","type":"u64"}]},{"name":"set_next_valset","discriminator":[254,186,52,223,48,163,138,51],"accounts":[{"name":"payer","writable":true,"signer":true},{"name":"config","writable":true,"pda":{"seeds":[{"kind":"const","value":[108,98,116,99,95,99,111,110,102,105,103]}]}},{"name":"metadata","writable":true},{"name":"payload","writable":true}],"args":[]},{"name":"set_operator","discriminator":[238,153,101,169,243,131,36,1],"accounts":[{"name":"payer","signer":true},{"name":"config","writable":true,"pda":{"seeds":[{"kind":"const","value":[108,98,116,99,95,99,111,110,102,105,103]}]}}],"args":[{"name":"operator","type":"pubkey"}]},{"name":"set_treasury","discriminator":[57,97,196,95,195,206,106,136],"accounts":[{"name":"payer","signer":true},{"name":"config","writable":true,"pda":{"seeds":[{"kind":"const","value":[108,98,116,99,95,99,111,110,102,105,103]}]}},{"name":"treasury"}],"args":[]},{"name":"transfer_ownership","discriminator":[65,177,215,73,53,45,99,47],"accounts":[{"name":"payer","signer":true},{"name":"config","writable":true,"pda":{"seeds":[{"kind":"const","value":[108,98,116,99,95,99,111,110,102,105,103]}]}}],"args":[{"name":"new_admin","type":"pubkey"}]},{"name":"unpause","discriminator":[169,144,4,38,10,141,188,255],"accounts":[{"name":"payer","signer":true},{"name":"config","writable":true,"pda":{"seeds":[{"kind":"const","value":[108,98,116,99,95,99,111,110,102,105,103]}]}}],"args":[]}]'),accounts$4=[{name:"BasculeData",discriminator:[43,219,194,55,0,135,158,67]},{name:"Config",discriminator:[155,12,170,224,30,250,204,130]},{name:"Metadata",discriminator:[72,11,121,26,111,181,85,93]},{name:"MintPayload",discriminator:[182,176,206,189,220,224,214,49]},{name:"UnstakeInfo",discriminator:[35,204,218,156,35,179,155,198]},{name:"ValsetPayload",discriminator:[109,13,39,81,55,143,90,72]}],events$4=[{name:"BasculeEnabled",discriminator:[84,223,73,187,19,208,205,93]},{name:"BurnCommissionSet",discriminator:[18,131,170,12,202,225,50,38]},{name:"ClaimerAdded",discriminator:[150,253,36,31,52,150,16,21]},{name:"ClaimerRemoved",discriminator:[141,26,147,25,89,23,74,210]},{name:"DustFeeRateSet",discriminator:[156,255,129,11,222,55,84,248]},{name:"MintAuthorityUpdated",discriminator:[251,56,50,229,68,227,225,225]},{name:"MintFeeSet",discriminator:[19,160,65,66,12,237,135,42]},{name:"MintPayloadPosted",discriminator:[252,192,166,176,58,104,196,152]},{name:"MintProofConsumed",discriminator:[39,6,40,221,150,118,32,59]},{name:"OperatorSet",discriminator:[187,242,164,221,208,246,180,178]},{name:"OwnershipTransferInitiated",discriminator:[181,32,40,60,60,64,235,29]},{name:"OwnershipTransferred",discriminator:[172,61,205,183,250,50,38,98]},{name:"PauseEnabled",discriminator:[4,110,17,57,220,234,137,77]},{name:"PauserAdded",discriminator:[231,206,109,54,239,205,234,248]},{name:"PauserRemoved",discriminator:[224,157,132,185,123,96,72,220]},{name:"SignaturesAdded",discriminator:[100,152,145,89,36,109,28,103]},{name:"TreasuryChanged",discriminator:[252,2,55,56,106,205,227,47]},{name:"UnstakeRequest",discriminator:[68,183,44,101,202,120,161,227]},{name:"ValidatorSetUpdated",discriminator:[234,43,30,48,204,242,119,118]},{name:"ValsetMetadataCreated",discriminator:[180,48,84,47,191,69,1,228]},{name:"ValsetMetadataPosted",discriminator:[128,155,30,200,28,163,50,72]},{name:"ValsetPayloadCreated",discriminator:[129,29,121,180,138,90,247,6]},{name:"WithdrawalsEnabled",discriminator:[248,142,36,143,24,105,24,86]}],errors$b=[{code:6e3,name:"Unauthorized",msg:"Unauthorized function call"},{code:6001,name:"RecipientMismatch",msg:"Mismatch between mint payload and passed account"},{code:6002,name:"MintPayloadUsed",msg:"Mint payload already used"},{code:6003,name:"MintPayloadHashMismatch",msg:"Passed mint payload hash does not match computed hash"},{code:6004,name:"ValsetPayloadHashMismatch",msg:"Passed valset payload hash does not match computed hash"},{code:6005,name:"WithdrawalsDisabled",msg:"Withdrawals are disabled"},{code:6006,name:"FeeGTEAmount",msg:"Fee is greater than or equal to amount"},{code:6007,name:"FeeApprovalExpired",msg:"Fee approval expired"},{code:6008,name:"UnsupportedRedeemAddress",msg:"Script pubkey is unsupported"},{code:6009,name:"AmountBelowDustLimit",msg:"Redeemed amount is below the BTC dust limit"},{code:6010,name:"NotEnoughSignatures",msg:"Not enough valid signatures"},{code:6011,name:"InvalidFeeSignature",msg:"Fee signature invalid"},{code:6012,name:"InvalidActionBytes",msg:"Invalid action bytes"},{code:6013,name:"InvalidChainID",msg:"Invalid chain ID"},{code:6014,name:"U64TooLarge",msg:"Attempted to decode a u64, but leftover too large"},{code:6015,name:"U32TooLarge",msg:"Attempted to decode a u32, but leftover too large"},{code:6016,name:"CouldNotConvertToU64",msg:"Could not convert amount bytes to u64"},{code:6017,name:"CouldNotConvertToU32",msg:"Could not convert vout bytes to u32"},{code:6018,name:"LeftoverData",msg:"Leftover data in payload"},{code:6019,name:"ValidatorSetAlreadySet",msg:"Validator set already set"},{code:6020,name:"InvalidEpoch",msg:"Invalid epoch"},{code:6021,name:"NoValidatorSet",msg:"No validator set exists"},{code:6022,name:"InvalidValidatorSetSize",msg:"Invalid validator set size"},{code:6023,name:"InvalidWeightThreshold",msg:"Invalid weight threshold"},{code:6024,name:"ValidatorsAndWeightsMismatch",msg:"Mismatch between validators length and weights length"},{code:6025,name:"ZeroWeight",msg:"Weight for validator is zero"},{code:6026,name:"WeightsBelowThreshold",msg:"Sum of weights is below the threshold"},{code:6027,name:"Paused",msg:"LBTC contract is paused"},{code:6028,name:"NotPaused",msg:"LBTC contract is not paused"},{code:6029,name:"InvalidVerifyingcontract",msg:"Invalid verifying contract"},{code:6030,name:"SignaturesIndicesMismatch",msg:"Mismatch between signatures and indices length"},{code:6031,name:"FeeTooHigh",msg:"Selected fee is too high"},{code:6032,name:"ClaimerExists",msg:"Claimer already exists"},{code:6033,name:"PauserExists",msg:"Pauser already exists"},{code:6034,name:"ClaimerNotFound",msg:"Claimer not found"},{code:6035,name:"PauserNotFound",msg:"Pauser not found"}],types$h=[{name:"BasculeData",docs:["The bascule program state"],type:{kind:"struct",fields:[{name:"admin",docs:['The account that has the "admin" capability.',"","This account can grant other capabilities and update most of the properties of this data account.",'Whoever calls the "Initialize" instruction becomes the admin; afterwards, the admin cannot be changed.'],type:"pubkey"},{name:"pending_admin",docs:["The pending admin (which needs to explicitly accept before becoming the new admin)."],type:"pubkey"},{name:"pauser",docs:['The account that has the "pauser" capability.',"This account is allowed to pause and unpause the program.","Defaults to the program admin, but can be changed later."],type:"pubkey"},{name:"deposit_reporter",docs:["The account that is allowed to report deposits.","Must be explicitly set in a subsequent instruction."],type:"pubkey"},{name:"withdrawal_validators",docs:["The accounts that are allowed to validate withdrawals.","INVARIANT:","- this vector contains no duplicates"],type:{vec:"pubkey"}},{name:"is_paused",docs:["Whether the program paused"],type:"bool"},{name:"validate_threshold",docs:["Bascule validates all withdrawals whose amounts are greater than or equal","to this threshold. The bascule allows all withdrawals below this threshold.","The program will still produce events that off-chain code can use to","monitor smaller withdrawals.","","When the threshold is zero (the default), the bascule validates all withdrawals."],type:"u64"},{name:"bump",docs:["Canonical bump for the program-derived address, set upon creation"],type:"u8"}]}},{name:"BasculeEnabled",type:{kind:"struct",fields:[{name:"enabled",type:"bool"}]}},{name:"BurnCommissionSet",type:{kind:"struct",fields:[{name:"burn_commission",type:"u64"}]}},{name:"ClaimerAdded",type:{kind:"struct",fields:[{name:"claimer",type:"pubkey"}]}},{name:"ClaimerRemoved",type:{kind:"struct",fields:[{name:"claimer",type:"pubkey"}]}},{name:"Config",type:{kind:"struct",fields:[{name:"admin",type:"pubkey"},{name:"pending_admin",type:"pubkey"},{name:"operator",type:"pubkey"},{name:"treasury",type:"pubkey"},{name:"claimers",type:{vec:"pubkey"}},{name:"pausers",type:{vec:"pubkey"}},{name:"mint",type:"pubkey"},{name:"burn_commission",type:"u64"},{name:"withdrawals_enabled",type:"bool"},{name:"dust_fee_rate",type:"u64"},{name:"bascule_enabled",type:"bool"},{name:"paused",type:"bool"},{name:"mint_fee",type:"u64"},{name:"epoch",type:"u64"},{name:"validators",type:{vec:{array:["u8",64]}}},{name:"weights",type:{vec:"u64"}},{name:"weight_threshold",type:"u64"},{name:"unstake_counter",type:"u64"}]}},{name:"DustFeeRateSet",type:{kind:"struct",fields:[{name:"rate",type:"u64"}]}},{name:"Metadata",type:{kind:"struct",fields:[{name:"hash",type:{array:["u8",32]}},{name:"validators",type:{vec:{array:["u8",64]}}},{name:"weights",type:{vec:"u64"}}]}},{name:"MintAuthorityUpdated",type:{kind:"struct",fields:[{name:"new_auth",type:"pubkey"}]}},{name:"MintFeeSet",type:{kind:"struct",fields:[{name:"mint_fee",type:"u64"}]}},{name:"MintPayload",type:{kind:"struct",fields:[{name:"epoch",type:"u64"},{name:"payload",type:{array:["u8",164]}},{name:"signed",type:{vec:"bool"}},{name:"weight",type:"u64"},{name:"minted",type:"bool"}]}},{name:"MintPayloadPosted",type:{kind:"struct",fields:[{name:"hash",type:{array:["u8",32]}},{name:"payload",type:{array:["u8",164]}}]}},{name:"MintProofConsumed",type:{kind:"struct",fields:[{name:"recipient",type:"pubkey"},{name:"payload_hash",type:{array:["u8",32]}}]}},{name:"OperatorSet",type:{kind:"struct",fields:[{name:"operator",type:"pubkey"}]}},{name:"OwnershipTransferInitiated",type:{kind:"struct",fields:[{name:"new_admin",type:"pubkey"}]}},{name:"OwnershipTransferred",type:{kind:"struct",fields:[{name:"new_admin",type:"pubkey"}]}},{name:"PauseEnabled",type:{kind:"struct",fields:[{name:"enabled",type:"bool"}]}},{name:"PauserAdded",type:{kind:"struct",fields:[{name:"pauser",type:"pubkey"}]}},{name:"PauserRemoved",type:{kind:"struct",fields:[{name:"pauser",type:"pubkey"}]}},{name:"SignaturesAdded",type:{kind:"struct",fields:[{name:"hash",type:{array:["u8",32]}},{name:"signatures",type:{vec:{array:["u8",64]}}}]}},{name:"TreasuryChanged",type:{kind:"struct",fields:[{name:"address",type:"pubkey"}]}},{name:"UnstakeInfo",type:{kind:"struct",fields:[{name:"from",type:"pubkey"},{name:"script_pubkey",type:"bytes"},{name:"amount",type:"u64"}]}},{name:"UnstakeRequest",type:{kind:"struct",fields:[{name:"from",type:"pubkey"},{name:"script_pubkey",type:"bytes"},{name:"amount",type:"u64"}]}},{name:"ValidatorSetUpdated",type:{kind:"struct",fields:[{name:"epoch",type:"u64"},{name:"validators",type:{vec:{array:["u8",64]}}},{name:"weights",type:{vec:"u64"}},{name:"weight_threshold",type:"u64"}]}},{name:"ValsetMetadataCreated",type:{kind:"struct",fields:[{name:"hash",type:{array:["u8",32]}}]}},{name:"ValsetMetadataPosted",type:{kind:"struct",fields:[{name:"hash",type:{array:["u8",32]}},{name:"validators",type:{vec:{array:["u8",64]}}},{name:"weights",type:{vec:"u64"}}]}},{name:"ValsetPayload",type:{kind:"struct",fields:[{name:"hash",type:{array:["u8",32]}},{name:"epoch",type:"u64"},{name:"weight_threshold",type:"u64"},{name:"signed",type:{vec:"bool"}},{name:"weight",type:"u64"}]}},{name:"ValsetPayloadCreated",type:{kind:"struct",fields:[{name:"hash",type:{array:["u8",32]}},{name:"epoch",type:"u64"},{name:"weight_threshold",type:"u64"},{name:"height",type:"u64"}]}},{name:"WithdrawalsEnabled",type:{kind:"struct",fields:[{name:"enabled",type:"bool"}]}}],lbtcIdl={address:address$3,metadata:metadata$4,instructions:instructions$4,accounts:accounts$4,events:events$4,errors:errors$b,types:types$h},getLbtcIdl=e=>{const t=getConfig(networkToEnv[e]);return{...lbtcIdl,address:t.lbtcProgramId}};function createDebugLogger(e={}){const{debug:t=!1,prefix:a=""}=e,s=[];return{debugLog:(...p)=>{if(!t)return;const m=p.map(b=>typeof b=="object"&&b!==null?JSON.stringify(b):String(b)),g=a?`${a} ${m.join(" ")}`:m.join(" ");console.log(g)},printLogs:()=>{console.log(s.join(`
|
|
114
|
-
`))}}}const verifyMatchingRecipient=async(e,t,a)=>{const s=await getAssociatedTokenAddress(e,new PublicKey$1(a),!1,TOKEN_PROGRAM_ID$1);if(!t.recipientPubKey().equals(s))throw new Error(`Recipient mismatch: ${t.recipientPubKey().toBase58()} vs ${s.toBase58()}`)};async function getTokenProgramForMint(e,t){const a=await e.getAccountInfo(t);if(!a)throw new Error(`Mint account not found: ${t.toBase58()}`);if(a.owner.equals(TOKEN_2022_PROGRAM_ID))return TOKEN_2022_PROGRAM_ID;if(a.owner.equals(TOKEN_PROGRAM_ID$1))return TOKEN_PROGRAM_ID$1;throw new Error(`Unsupported mint owner ${a.owner.toBase58()} for ${t.toBase58()}`)}async function createOrGetAssociatedTokenAccount({provider:e,connection:t,ownerAddress:a,mintAddress:s}){const u=new PublicKey$1(s),l=new PublicKey$1(a),p=await getTokenProgramForMint(t,u),m=await getAssociatedTokenAddress(u,l,!1,p,ASSOCIATED_TOKEN_PROGRAM_ID);try{return(await getAccount(t,m,"confirmed",p)).address.toBase58()}catch{const g=new Transaction$3,b=createAssociatedTokenAccountInstruction(e.publicKey,m,l,u,p,ASSOCIATED_TOKEN_PROGRAM_ID);g.add(b);const{blockhash:v}=await t.getLatestBlockhash("confirmed");g.recentBlockhash=v,g.feePayer=e.publicKey;const E=await e.signTransaction(g),M=await t.sendRawTransaction(E.serialize()),k=await t.confirmTransaction(M,"confirmed");if(k.value.err)throw new Error(`Transaction failed: ${JSON.stringify(k.value.err)}`);return m.toBase58()}}async function checkPayloadStatus(e,t,a){try{const s=await e.account.mintPayload.fetch(t);return s?{exists:!0,isSigned:Array.isArray(s.signed)?s.signed.every(l=>l===!0):!1,isMinted:!!s.minted}:{exists:!1,isSigned:!1,isMinted:!1}}catch(s){return a("Error checking payload status:",s),{exists:!1,isSigned:!1,isMinted:!1}}}const parseSignaturesFromProof=e=>{if(!e)return{signatures:[],indices:[]};const t=e.startsWith("0x")?e.slice(2):e;if(t.length<128)return{signatures:[],indices:[]};const a=[],s=[];try{const u=Number.parseInt(t.slice(0,64),16);(Number.isNaN(u)||u!==32)&&console.warn(`Unexpected ABI header offset: ${u}`);const l=64,p=t.slice(l,l+64),m=Number.parseInt(p,16);if(Number.isNaN(m)||m<0)return{signatures:[],indices:[]};if(m===0)return{signatures:[],indices:[]};const g=64;if((g+m*32)*2>t.length)return{signatures:[],indices:[]};for(let v=0;v<m;v++){const E=g*2+v*64,M=t.slice(E,E+64),k=Number.parseInt(M,16);if(Number.isNaN(k))return{signatures:[],indices:[]};const P=g+k,x=P*2,A=x+64,D=(P+32)*2,z=D+128;if(A>t.length)return{signatures:[],indices:[]};const C=t.slice(x,A),L=Number.parseInt(C,16);if(Number.isNaN(L)||L!==64){console.warn(`Signature element ${v} length is ${L}, expected 64. Skipping.`);continue}if(z>t.length)return{signatures:[],indices:[]};const j=t.slice(D,z),V=Buffer$1.from(j,"hex");V.length!==64||V.every(F=>F===0)||(a.push(new Uint8Array(V)),s.push(new BN$1(v)))}return{signatures:a,indices:s}}catch(u){const l=u instanceof Error?u.message:String(u);return console.error("Error parsing signature proof:",l),{signatures:[],indices:[]}}};var sha3={exports:{}},hasRequiredSha3;function requireSha3(){return hasRequiredSha3||(hasRequiredSha3=1,(function(e){(function(){var t="input is invalid type",a="finalize already called",s=typeof window=="object",u=s?window:{};u.JS_SHA3_NO_WINDOW&&(s=!1);var l=!s&&typeof self=="object",p=!u.JS_SHA3_NO_NODE_JS&&typeof process$1=="object"&&process$1.versions&&process$1.versions.node;p?u=commonjsGlobal$2:l&&(u=self);for(var m=!u.JS_SHA3_NO_COMMON_JS&&!0&&e.exports,g=!u.JS_SHA3_NO_ARRAY_BUFFER&&typeof ArrayBuffer<"u",b="0123456789abcdef".split(""),v=[31,7936,2031616,520093696],E=[4,1024,262144,67108864],M=[1,256,65536,16777216],k=[6,1536,393216,100663296],P=[0,8,16,24],x=[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],A=[224,256,384,512],O=[128,256],D=["hex","buffer","arrayBuffer","array","digest"],z={128:168,256:136},C=u.JS_SHA3_NO_NODE_JS||!Array.isArray?function(ae){return Object.prototype.toString.call(ae)==="[object Array]"}:Array.isArray,L=g&&(u.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW||!ArrayBuffer.isView)?function(ae){return typeof ae=="object"&&ae.buffer&&ae.buffer.constructor===ArrayBuffer}:ArrayBuffer.isView,j=function(ae){var de=typeof ae;if(de==="string")return[ae,!0];if(de!=="object"||ae===null)throw new Error(t);if(g&&ae.constructor===ArrayBuffer)return[new Uint8Array(ae),!1];if(!C(ae)&&!L(ae))throw new Error(t);return[ae,!1]},V=function(ae){return j(ae)[0].length===0},K=function(ae){for(var de=[],le=0;le<ae.length;++le)de[le]=ae[le];return de},F=function(ae,de,le){return function(be){return new Y(ae,de,ae).update(be)[le]()}},q=function(ae,de,le){return function(be,ne){return new Y(ae,de,ne).update(be)[le]()}},R=function(ae,de,le){return function(be,ne,pe,ve){return I["cshake"+ae].update(be,ne,pe,ve)[le]()}},y=function(ae,de,le){return function(be,ne,pe,ve){return I["kmac"+ae].update(be,ne,pe,ve)[le]()}},S=function(ae,de,le,be){for(var ne=0;ne<D.length;++ne){var pe=D[ne];ae[pe]=de(le,be,pe)}return ae},w=function(ae,de){var le=F(ae,de,"hex");return le.create=function(){return new Y(ae,de,ae)},le.update=function(be){return le.create().update(be)},S(le,F,ae,de)},T=function(ae,de){var le=q(ae,de,"hex");return le.create=function(be){return new Y(ae,de,be)},le.update=function(be,ne){return le.create(ne).update(be)},S(le,q,ae,de)},U=function(ae,de){var le=z[ae],be=R(ae,de,"hex");return be.create=function(ne,pe,ve){return V(pe)&&V(ve)?I["shake"+ae].create(ne):new Y(ae,de,ne).bytepad([pe,ve],le)},be.update=function(ne,pe,ve,qe){return be.create(pe,ve,qe).update(ne)},S(be,R,ae,de)},N=function(ae,de){var le=z[ae],be=y(ae,de,"hex");return be.create=function(ne,pe,ve){return new te(ae,de,pe).bytepad(["KMAC",ve],le).bytepad([ne],le)},be.update=function(ne,pe,ve,qe){return be.create(ne,ve,qe).update(pe)},S(be,y,ae,de)},$=[{name:"keccak",padding:M,bits:A,createMethod:w},{name:"sha3",padding:k,bits:A,createMethod:w},{name:"shake",padding:v,bits:O,createMethod:T},{name:"cshake",padding:E,bits:O,createMethod:U},{name:"kmac",padding:E,bits:O,createMethod:N}],I={},_=[],H=0;H<$.length;++H)for(var Z=$[H],W=Z.bits,G=0;G<W.length;++G){var J=Z.name+"_"+W[G];if(_.push(J),I[J]=Z.createMethod(W[G],Z.padding),Z.name!=="sha3"){var ie=Z.name+W[G];_.push(ie),I[ie]=I[J]}}function Y(ae,de,le){this.blocks=[],this.s=[],this.padding=de,this.outputBits=le,this.reset=!0,this.finalized=!1,this.block=0,this.start=0,this.blockCount=1600-(ae<<1)>>5,this.byteCount=this.blockCount<<2,this.outputBlocks=le>>5,this.extraBytes=(le&31)>>3;for(var be=0;be<50;++be)this.s[be]=0}Y.prototype.update=function(ae){if(this.finalized)throw new Error(a);var de=j(ae);ae=de[0];for(var le=de[1],be=this.blocks,ne=this.byteCount,pe=ae.length,ve=this.blockCount,qe=0,De=this.s,Me,Xe;qe<pe;){if(this.reset)for(this.reset=!1,be[0]=this.block,Me=1;Me<ve+1;++Me)be[Me]=0;if(le)for(Me=this.start;qe<pe&&Me<ne;++qe)Xe=ae.charCodeAt(qe),Xe<128?be[Me>>2]|=Xe<<P[Me++&3]:Xe<2048?(be[Me>>2]|=(192|Xe>>6)<<P[Me++&3],be[Me>>2]|=(128|Xe&63)<<P[Me++&3]):Xe<55296||Xe>=57344?(be[Me>>2]|=(224|Xe>>12)<<P[Me++&3],be[Me>>2]|=(128|Xe>>6&63)<<P[Me++&3],be[Me>>2]|=(128|Xe&63)<<P[Me++&3]):(Xe=65536+((Xe&1023)<<10|ae.charCodeAt(++qe)&1023),be[Me>>2]|=(240|Xe>>18)<<P[Me++&3],be[Me>>2]|=(128|Xe>>12&63)<<P[Me++&3],be[Me>>2]|=(128|Xe>>6&63)<<P[Me++&3],be[Me>>2]|=(128|Xe&63)<<P[Me++&3]);else for(Me=this.start;qe<pe&&Me<ne;++qe)be[Me>>2]|=ae[qe]<<P[Me++&3];if(this.lastByteIndex=Me,Me>=ne){for(this.start=Me-ne,this.block=be[ve],Me=0;Me<ve;++Me)De[Me]^=be[Me];ee(De),this.reset=!0}else this.start=Me}return this},Y.prototype.encode=function(ae,de){var le=ae&255,be=1,ne=[le];for(ae=ae>>8,le=ae&255;le>0;)ne.unshift(le),ae=ae>>8,le=ae&255,++be;return de?ne.push(be):ne.unshift(be),this.update(ne),ne.length},Y.prototype.encodeString=function(ae){var de=j(ae);ae=de[0];var le=de[1],be=0,ne=ae.length;if(le)for(var pe=0;pe<ae.length;++pe){var ve=ae.charCodeAt(pe);ve<128?be+=1:ve<2048?be+=2:ve<55296||ve>=57344?be+=3:(ve=65536+((ve&1023)<<10|ae.charCodeAt(++pe)&1023),be+=4)}else be=ne;return be+=this.encode(be*8),this.update(ae),be},Y.prototype.bytepad=function(ae,de){for(var le=this.encode(de),be=0;be<ae.length;++be)le+=this.encodeString(ae[be]);var ne=(de-le%de)%de,pe=[];return pe.length=ne,this.update(pe),this},Y.prototype.finalize=function(){if(!this.finalized){this.finalized=!0;var ae=this.blocks,de=this.lastByteIndex,le=this.blockCount,be=this.s;if(ae[de>>2]|=this.padding[de&3],this.lastByteIndex===this.byteCount)for(ae[0]=ae[le],de=1;de<le+1;++de)ae[de]=0;for(ae[le-1]|=2147483648,de=0;de<le;++de)be[de]^=ae[de];ee(be)}},Y.prototype.toString=Y.prototype.hex=function(){this.finalize();for(var ae=this.blockCount,de=this.s,le=this.outputBlocks,be=this.extraBytes,ne=0,pe=0,ve="",qe;pe<le;){for(ne=0;ne<ae&&pe<le;++ne,++pe)qe=de[ne],ve+=b[qe>>4&15]+b[qe&15]+b[qe>>12&15]+b[qe>>8&15]+b[qe>>20&15]+b[qe>>16&15]+b[qe>>28&15]+b[qe>>24&15];pe%ae===0&&(de=K(de),ee(de),ne=0)}return be&&(qe=de[ne],ve+=b[qe>>4&15]+b[qe&15],be>1&&(ve+=b[qe>>12&15]+b[qe>>8&15]),be>2&&(ve+=b[qe>>20&15]+b[qe>>16&15])),ve},Y.prototype.arrayBuffer=function(){this.finalize();var ae=this.blockCount,de=this.s,le=this.outputBlocks,be=this.extraBytes,ne=0,pe=0,ve=this.outputBits>>3,qe;be?qe=new ArrayBuffer(le+1<<2):qe=new ArrayBuffer(ve);for(var De=new Uint32Array(qe);pe<le;){for(ne=0;ne<ae&&pe<le;++ne,++pe)De[pe]=de[ne];pe%ae===0&&(de=K(de),ee(de))}return be&&(De[pe]=de[ne],qe=qe.slice(0,ve)),qe},Y.prototype.buffer=Y.prototype.arrayBuffer,Y.prototype.digest=Y.prototype.array=function(){this.finalize();for(var ae=this.blockCount,de=this.s,le=this.outputBlocks,be=this.extraBytes,ne=0,pe=0,ve=[],qe,De;pe<le;){for(ne=0;ne<ae&&pe<le;++ne,++pe)qe=pe<<2,De=de[ne],ve[qe]=De&255,ve[qe+1]=De>>8&255,ve[qe+2]=De>>16&255,ve[qe+3]=De>>24&255;pe%ae===0&&(de=K(de),ee(de))}return be&&(qe=pe<<2,De=de[ne],ve[qe]=De&255,be>1&&(ve[qe+1]=De>>8&255),be>2&&(ve[qe+2]=De>>16&255)),ve};function te(ae,de,le){Y.call(this,ae,de,le)}te.prototype=new Y,te.prototype.finalize=function(){return this.encode(this.outputBits,!0),Y.prototype.finalize.call(this)};var ee=function(ae){var de,le,be,ne,pe,ve,qe,De,Me,Xe,Ze,oe,me,ye,Pe,we,_e,Ce,Fe,Se,ue,Ae,Te,Be,Ue,Ie,ke,tt,Ve,Ee,Ye,$e,Oe,Ke,je,it,at,Re,he,Ne,B,X,Q,fe,ce,se,ze,Ge,rt,et,ot,dt,lt,It,pt,vt,Et,wt,Tt,xt,kt,Pt,mt;for(be=0;be<48;be+=2)ne=ae[0]^ae[10]^ae[20]^ae[30]^ae[40],pe=ae[1]^ae[11]^ae[21]^ae[31]^ae[41],ve=ae[2]^ae[12]^ae[22]^ae[32]^ae[42],qe=ae[3]^ae[13]^ae[23]^ae[33]^ae[43],De=ae[4]^ae[14]^ae[24]^ae[34]^ae[44],Me=ae[5]^ae[15]^ae[25]^ae[35]^ae[45],Xe=ae[6]^ae[16]^ae[26]^ae[36]^ae[46],Ze=ae[7]^ae[17]^ae[27]^ae[37]^ae[47],oe=ae[8]^ae[18]^ae[28]^ae[38]^ae[48],me=ae[9]^ae[19]^ae[29]^ae[39]^ae[49],de=oe^(ve<<1|qe>>>31),le=me^(qe<<1|ve>>>31),ae[0]^=de,ae[1]^=le,ae[10]^=de,ae[11]^=le,ae[20]^=de,ae[21]^=le,ae[30]^=de,ae[31]^=le,ae[40]^=de,ae[41]^=le,de=ne^(De<<1|Me>>>31),le=pe^(Me<<1|De>>>31),ae[2]^=de,ae[3]^=le,ae[12]^=de,ae[13]^=le,ae[22]^=de,ae[23]^=le,ae[32]^=de,ae[33]^=le,ae[42]^=de,ae[43]^=le,de=ve^(Xe<<1|Ze>>>31),le=qe^(Ze<<1|Xe>>>31),ae[4]^=de,ae[5]^=le,ae[14]^=de,ae[15]^=le,ae[24]^=de,ae[25]^=le,ae[34]^=de,ae[35]^=le,ae[44]^=de,ae[45]^=le,de=De^(oe<<1|me>>>31),le=Me^(me<<1|oe>>>31),ae[6]^=de,ae[7]^=le,ae[16]^=de,ae[17]^=le,ae[26]^=de,ae[27]^=le,ae[36]^=de,ae[37]^=le,ae[46]^=de,ae[47]^=le,de=Xe^(ne<<1|pe>>>31),le=Ze^(pe<<1|ne>>>31),ae[8]^=de,ae[9]^=le,ae[18]^=de,ae[19]^=le,ae[28]^=de,ae[29]^=le,ae[38]^=de,ae[39]^=le,ae[48]^=de,ae[49]^=le,ye=ae[0],Pe=ae[1],se=ae[11]<<4|ae[10]>>>28,ze=ae[10]<<4|ae[11]>>>28,tt=ae[20]<<3|ae[21]>>>29,Ve=ae[21]<<3|ae[20]>>>29,xt=ae[31]<<9|ae[30]>>>23,kt=ae[30]<<9|ae[31]>>>23,X=ae[40]<<18|ae[41]>>>14,Q=ae[41]<<18|ae[40]>>>14,Ke=ae[2]<<1|ae[3]>>>31,je=ae[3]<<1|ae[2]>>>31,we=ae[13]<<12|ae[12]>>>20,_e=ae[12]<<12|ae[13]>>>20,Ge=ae[22]<<10|ae[23]>>>22,rt=ae[23]<<10|ae[22]>>>22,Ee=ae[33]<<13|ae[32]>>>19,Ye=ae[32]<<13|ae[33]>>>19,Pt=ae[42]<<2|ae[43]>>>30,mt=ae[43]<<2|ae[42]>>>30,It=ae[5]<<30|ae[4]>>>2,pt=ae[4]<<30|ae[5]>>>2,it=ae[14]<<6|ae[15]>>>26,at=ae[15]<<6|ae[14]>>>26,Ce=ae[25]<<11|ae[24]>>>21,Fe=ae[24]<<11|ae[25]>>>21,et=ae[34]<<15|ae[35]>>>17,ot=ae[35]<<15|ae[34]>>>17,$e=ae[45]<<29|ae[44]>>>3,Oe=ae[44]<<29|ae[45]>>>3,Be=ae[6]<<28|ae[7]>>>4,Ue=ae[7]<<28|ae[6]>>>4,vt=ae[17]<<23|ae[16]>>>9,Et=ae[16]<<23|ae[17]>>>9,Re=ae[26]<<25|ae[27]>>>7,he=ae[27]<<25|ae[26]>>>7,Se=ae[36]<<21|ae[37]>>>11,ue=ae[37]<<21|ae[36]>>>11,dt=ae[47]<<24|ae[46]>>>8,lt=ae[46]<<24|ae[47]>>>8,fe=ae[8]<<27|ae[9]>>>5,ce=ae[9]<<27|ae[8]>>>5,Ie=ae[18]<<20|ae[19]>>>12,ke=ae[19]<<20|ae[18]>>>12,wt=ae[29]<<7|ae[28]>>>25,Tt=ae[28]<<7|ae[29]>>>25,Ne=ae[38]<<8|ae[39]>>>24,B=ae[39]<<8|ae[38]>>>24,Ae=ae[48]<<14|ae[49]>>>18,Te=ae[49]<<14|ae[48]>>>18,ae[0]=ye^~we&Ce,ae[1]=Pe^~_e&Fe,ae[10]=Be^~Ie&tt,ae[11]=Ue^~ke&Ve,ae[20]=Ke^~it&Re,ae[21]=je^~at&he,ae[30]=fe^~se&Ge,ae[31]=ce^~ze&rt,ae[40]=It^~vt&wt,ae[41]=pt^~Et&Tt,ae[2]=we^~Ce&Se,ae[3]=_e^~Fe&ue,ae[12]=Ie^~tt&Ee,ae[13]=ke^~Ve&Ye,ae[22]=it^~Re&Ne,ae[23]=at^~he&B,ae[32]=se^~Ge&et,ae[33]=ze^~rt&ot,ae[42]=vt^~wt&xt,ae[43]=Et^~Tt&kt,ae[4]=Ce^~Se&Ae,ae[5]=Fe^~ue&Te,ae[14]=tt^~Ee&$e,ae[15]=Ve^~Ye&Oe,ae[24]=Re^~Ne&X,ae[25]=he^~B&Q,ae[34]=Ge^~et&dt,ae[35]=rt^~ot<,ae[44]=wt^~xt&Pt,ae[45]=Tt^~kt&mt,ae[6]=Se^~Ae&ye,ae[7]=ue^~Te&Pe,ae[16]=Ee^~$e&Be,ae[17]=Ye^~Oe&Ue,ae[26]=Ne^~X&Ke,ae[27]=B^~Q&je,ae[36]=et^~dt&fe,ae[37]=ot^~lt&ce,ae[46]=xt^~Pt&It,ae[47]=kt^~mt&pt,ae[8]=Ae^~ye&we,ae[9]=Te^~Pe&_e,ae[18]=$e^~Be&Ie,ae[19]=Oe^~Ue&ke,ae[28]=X^~Ke&it,ae[29]=Q^~je&at,ae[38]=dt^~fe&se,ae[39]=lt^~ce&ze,ae[48]=Pt^~It&vt,ae[49]=mt^~pt&Et,ae[0]^=x[be],ae[1]^=x[be+1]};if(m)e.exports=I;else for(H=0;H<_.length;++H)u[_[H]]=I[_[H]]})()})(sha3)),sha3.exports}var sha3Exports=requireSha3();function generateDepositId(e,t,a,s){const l=Buffer$1.from(a,"hex").reverse();if(l.length!==32)throw new Error("txId must be a 32-byte array.");const p=Buffer$1.alloc(32,0),m=Buffer$1.from([3,83,79,76]),g=e.toBuffer(),b=Buffer$1.alloc(8);b.writeBigUInt64BE(t);const v=Buffer$1.alloc(4);v.writeUInt32BE(s);const E=Buffer$1.concat([new Uint8Array(p),new Uint8Array(m),new Uint8Array(g),new Uint8Array(b),new Uint8Array(l),new Uint8Array(v)]),M=new Uint8Array(E.buffer,E.byteOffset,E.byteLength),k=sha3Exports.keccak256(M),P=Buffer$1.from(k,"hex");return new Uint8Array(P)}const postMintSignatures=async({connection:e,provider:t,program:a,configPDA:s,mintPayloadPDA:u,payloadHashArray:l,proofSignature:p})=>{const{signatures:m,indices:g}=parseSignaturesFromProof(p);if(m.length===0||g.length===0)throw new Error("No valid signatures found in the proof");const b=m.map(E=>Array.from(E)),v=await a.methods.postMintSignatures(l,b,g).accounts({config:s,payload:u}).transaction();return await sendAndConfirmTransaction({instruction:v,connection:e,provider:t,debugLabel:"Post Mint Signatures"})},ALREADY_MINTED_TX_HASH="ALREADY_MINTED";async function claimLBTC(e,t){const{recipientAddress:a,network:s,proofSignature:u,rawPayload:l,rpcUrl:p,debug:m=!1}=t,{debugLog:g,printLogs:b}=createDebugLogger({debug:m});try{if(!e.publicKey)throw new Error("Wallet not found");const v=getConfig(networkToEnv[s]),E=getConnection(s,p),M={publicKey:new PublicKey$1(e.publicKey),signTransaction:e.signTransaction,signAllTransactions:e.signAllTransactions},k=new AnchorProvider(E,M,{});setProvider(k);const P=new Program$1(getLbtcIdl(s),k),x=new PublicKey$1(v.lbtcTokenMint),A=new PublicKey$1(v.lbtcProgramId),O=new PublicKey$1(v.lzMultisig),D=new MintPayload(l),[z]=PublicKey$1.findProgramAddressSync([D.hashAsBytes()],A),[C]=PublicKey$1.findProgramAddressSync([Buffer.from("lbtc_config")],A),[L]=PublicKey$1.findProgramAddressSync([Buffer.from("token_authority")],A),j=Array.from(D.hashAsBytes());await verifyMatchingRecipient(x,D,a);const V=await checkPayloadStatus(P,z,g);if(V.isMinted)return ALREADY_MINTED_TX_HASH;if(await createOrGetAssociatedTokenAccount({provider:e,connection:E,ownerAddress:a,mintAddress:v.lbtcTokenMint}),V.exists)g("Mint payload already exists, skipping create instruction.");else{g("Adding Create Mint Payload instruction...");const U=await P.methods.createMintPayload(j,Array.from(D.bytes())).accounts({payer:e.publicKey,config:C,payload:z,systemProgram:SystemProgram.programId}).transaction();await sendAndConfirmTransaction({instruction:U,connection:E,provider:e,debugLabel:"Create Mint Payload"})}V.isSigned?g("Payload already signed, skipping post signatures instruction."):await postMintSignatures({connection:E,provider:e,program:P,configPDA:C,mintPayloadPDA:z,payloadHashArray:j,proofSignature:u});const K=new PublicKey$1(a),F=await getAssociatedTokenAddress(x,K),q=D.amount.startsWith("0x")?BigInt(D.amount):BigInt(`0x${D.amount}`),R=generateDepositId(F,q,D.txId,Number(D.vout)),y=Buffer.from("deposit"),[S]=v.bascule?PublicKey$1.findProgramAddressSync([y,R],new PublicKey$1(v.bascule)):[],w=await P.methods.mintFromPayload(j).accounts({config:C,tokenProgram:TOKEN_PROGRAM_ID$1,recipient:F,mint:x,mintAuthority:O,tokenAuthority:L,payload:z,bascule:v.bascule,basculeData:v.basculeData,deposit:S,systemProgram:SystemProgram.programId,signer:e.publicKey}).transaction(),{signature:T}=await sendAndConfirmTransaction({instruction:w,connection:E,provider:e,debugLabel:"Mint From Payload"});return T}catch(v){throw v instanceof Error&&(v.message=`${v.message}
|
|
114
|
+
`))}}}const verifyMatchingRecipient=async(e,t,a)=>{const s=await getAssociatedTokenAddress(e,new PublicKey$1(a),!1,TOKEN_PROGRAM_ID$1);if(!t.recipientPubKey().equals(s))throw new Error(`Recipient mismatch: ${t.recipientPubKey().toBase58()} vs ${s.toBase58()}`)};async function getTokenProgramForMint(e,t){const a=await e.getAccountInfo(t);if(!a)throw new Error(`Mint account not found: ${t.toBase58()}`);if(a.owner.equals(TOKEN_2022_PROGRAM_ID))return TOKEN_2022_PROGRAM_ID;if(a.owner.equals(TOKEN_PROGRAM_ID$1))return TOKEN_PROGRAM_ID$1;throw new Error(`Unsupported mint owner ${a.owner.toBase58()} for ${t.toBase58()}`)}async function createOrGetAssociatedTokenAccount({provider:e,connection:t,ownerAddress:a,mintAddress:s}){const u=new PublicKey$1(s),l=new PublicKey$1(a),p=await getTokenProgramForMint(t,u),m=await getAssociatedTokenAddress(u,l,!0,p,ASSOCIATED_TOKEN_PROGRAM_ID);try{return(await getAccount(t,m,"confirmed",p)).address.toBase58()}catch{const g=new Transaction$3,b=createAssociatedTokenAccountInstruction(e.publicKey,m,l,u,p,ASSOCIATED_TOKEN_PROGRAM_ID);g.add(b);const{blockhash:v}=await t.getLatestBlockhash("confirmed");g.recentBlockhash=v,g.feePayer=e.publicKey;const E=await e.signTransaction(g),M=await t.sendRawTransaction(E.serialize()),k=await t.confirmTransaction(M,"confirmed");if(k.value.err)throw new Error(`Transaction failed: ${JSON.stringify(k.value.err)}`);return m.toBase58()}}async function checkPayloadStatus(e,t,a){try{const s=await e.account.mintPayload.fetch(t);return s?{exists:!0,isSigned:Array.isArray(s.signed)?s.signed.every(l=>l===!0):!1,isMinted:!!s.minted}:{exists:!1,isSigned:!1,isMinted:!1}}catch(s){return a("Error checking payload status:",s),{exists:!1,isSigned:!1,isMinted:!1}}}const parseSignaturesFromProof=e=>{if(!e)return{signatures:[],indices:[]};const t=e.startsWith("0x")?e.slice(2):e;if(t.length<128)return{signatures:[],indices:[]};const a=[],s=[];try{const u=Number.parseInt(t.slice(0,64),16);(Number.isNaN(u)||u!==32)&&console.warn(`Unexpected ABI header offset: ${u}`);const l=64,p=t.slice(l,l+64),m=Number.parseInt(p,16);if(Number.isNaN(m)||m<0)return{signatures:[],indices:[]};if(m===0)return{signatures:[],indices:[]};const g=64;if((g+m*32)*2>t.length)return{signatures:[],indices:[]};for(let v=0;v<m;v++){const E=g*2+v*64,M=t.slice(E,E+64),k=Number.parseInt(M,16);if(Number.isNaN(k))return{signatures:[],indices:[]};const P=g+k,x=P*2,A=x+64,D=(P+32)*2,z=D+128;if(A>t.length)return{signatures:[],indices:[]};const C=t.slice(x,A),L=Number.parseInt(C,16);if(Number.isNaN(L)||L!==64){console.warn(`Signature element ${v} length is ${L}, expected 64. Skipping.`);continue}if(z>t.length)return{signatures:[],indices:[]};const j=t.slice(D,z),V=Buffer$1.from(j,"hex");V.length!==64||V.every(F=>F===0)||(a.push(new Uint8Array(V)),s.push(new BN$1(v)))}return{signatures:a,indices:s}}catch(u){const l=u instanceof Error?u.message:String(u);return console.error("Error parsing signature proof:",l),{signatures:[],indices:[]}}};var sha3={exports:{}},hasRequiredSha3;function requireSha3(){return hasRequiredSha3||(hasRequiredSha3=1,(function(e){(function(){var t="input is invalid type",a="finalize already called",s=typeof window=="object",u=s?window:{};u.JS_SHA3_NO_WINDOW&&(s=!1);var l=!s&&typeof self=="object",p=!u.JS_SHA3_NO_NODE_JS&&typeof process$1=="object"&&process$1.versions&&process$1.versions.node;p?u=commonjsGlobal$2:l&&(u=self);for(var m=!u.JS_SHA3_NO_COMMON_JS&&!0&&e.exports,g=!u.JS_SHA3_NO_ARRAY_BUFFER&&typeof ArrayBuffer<"u",b="0123456789abcdef".split(""),v=[31,7936,2031616,520093696],E=[4,1024,262144,67108864],M=[1,256,65536,16777216],k=[6,1536,393216,100663296],P=[0,8,16,24],x=[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],A=[224,256,384,512],O=[128,256],D=["hex","buffer","arrayBuffer","array","digest"],z={128:168,256:136},C=u.JS_SHA3_NO_NODE_JS||!Array.isArray?function(ae){return Object.prototype.toString.call(ae)==="[object Array]"}:Array.isArray,L=g&&(u.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW||!ArrayBuffer.isView)?function(ae){return typeof ae=="object"&&ae.buffer&&ae.buffer.constructor===ArrayBuffer}:ArrayBuffer.isView,j=function(ae){var de=typeof ae;if(de==="string")return[ae,!0];if(de!=="object"||ae===null)throw new Error(t);if(g&&ae.constructor===ArrayBuffer)return[new Uint8Array(ae),!1];if(!C(ae)&&!L(ae))throw new Error(t);return[ae,!1]},V=function(ae){return j(ae)[0].length===0},K=function(ae){for(var de=[],le=0;le<ae.length;++le)de[le]=ae[le];return de},F=function(ae,de,le){return function(be){return new Y(ae,de,ae).update(be)[le]()}},q=function(ae,de,le){return function(be,ne){return new Y(ae,de,ne).update(be)[le]()}},R=function(ae,de,le){return function(be,ne,pe,ve){return I["cshake"+ae].update(be,ne,pe,ve)[le]()}},y=function(ae,de,le){return function(be,ne,pe,ve){return I["kmac"+ae].update(be,ne,pe,ve)[le]()}},S=function(ae,de,le,be){for(var ne=0;ne<D.length;++ne){var pe=D[ne];ae[pe]=de(le,be,pe)}return ae},w=function(ae,de){var le=F(ae,de,"hex");return le.create=function(){return new Y(ae,de,ae)},le.update=function(be){return le.create().update(be)},S(le,F,ae,de)},T=function(ae,de){var le=q(ae,de,"hex");return le.create=function(be){return new Y(ae,de,be)},le.update=function(be,ne){return le.create(ne).update(be)},S(le,q,ae,de)},U=function(ae,de){var le=z[ae],be=R(ae,de,"hex");return be.create=function(ne,pe,ve){return V(pe)&&V(ve)?I["shake"+ae].create(ne):new Y(ae,de,ne).bytepad([pe,ve],le)},be.update=function(ne,pe,ve,qe){return be.create(pe,ve,qe).update(ne)},S(be,R,ae,de)},N=function(ae,de){var le=z[ae],be=y(ae,de,"hex");return be.create=function(ne,pe,ve){return new te(ae,de,pe).bytepad(["KMAC",ve],le).bytepad([ne],le)},be.update=function(ne,pe,ve,qe){return be.create(ne,ve,qe).update(pe)},S(be,y,ae,de)},$=[{name:"keccak",padding:M,bits:A,createMethod:w},{name:"sha3",padding:k,bits:A,createMethod:w},{name:"shake",padding:v,bits:O,createMethod:T},{name:"cshake",padding:E,bits:O,createMethod:U},{name:"kmac",padding:E,bits:O,createMethod:N}],I={},_=[],H=0;H<$.length;++H)for(var Z=$[H],W=Z.bits,G=0;G<W.length;++G){var J=Z.name+"_"+W[G];if(_.push(J),I[J]=Z.createMethod(W[G],Z.padding),Z.name!=="sha3"){var ie=Z.name+W[G];_.push(ie),I[ie]=I[J]}}function Y(ae,de,le){this.blocks=[],this.s=[],this.padding=de,this.outputBits=le,this.reset=!0,this.finalized=!1,this.block=0,this.start=0,this.blockCount=1600-(ae<<1)>>5,this.byteCount=this.blockCount<<2,this.outputBlocks=le>>5,this.extraBytes=(le&31)>>3;for(var be=0;be<50;++be)this.s[be]=0}Y.prototype.update=function(ae){if(this.finalized)throw new Error(a);var de=j(ae);ae=de[0];for(var le=de[1],be=this.blocks,ne=this.byteCount,pe=ae.length,ve=this.blockCount,qe=0,De=this.s,Me,Xe;qe<pe;){if(this.reset)for(this.reset=!1,be[0]=this.block,Me=1;Me<ve+1;++Me)be[Me]=0;if(le)for(Me=this.start;qe<pe&&Me<ne;++qe)Xe=ae.charCodeAt(qe),Xe<128?be[Me>>2]|=Xe<<P[Me++&3]:Xe<2048?(be[Me>>2]|=(192|Xe>>6)<<P[Me++&3],be[Me>>2]|=(128|Xe&63)<<P[Me++&3]):Xe<55296||Xe>=57344?(be[Me>>2]|=(224|Xe>>12)<<P[Me++&3],be[Me>>2]|=(128|Xe>>6&63)<<P[Me++&3],be[Me>>2]|=(128|Xe&63)<<P[Me++&3]):(Xe=65536+((Xe&1023)<<10|ae.charCodeAt(++qe)&1023),be[Me>>2]|=(240|Xe>>18)<<P[Me++&3],be[Me>>2]|=(128|Xe>>12&63)<<P[Me++&3],be[Me>>2]|=(128|Xe>>6&63)<<P[Me++&3],be[Me>>2]|=(128|Xe&63)<<P[Me++&3]);else for(Me=this.start;qe<pe&&Me<ne;++qe)be[Me>>2]|=ae[qe]<<P[Me++&3];if(this.lastByteIndex=Me,Me>=ne){for(this.start=Me-ne,this.block=be[ve],Me=0;Me<ve;++Me)De[Me]^=be[Me];ee(De),this.reset=!0}else this.start=Me}return this},Y.prototype.encode=function(ae,de){var le=ae&255,be=1,ne=[le];for(ae=ae>>8,le=ae&255;le>0;)ne.unshift(le),ae=ae>>8,le=ae&255,++be;return de?ne.push(be):ne.unshift(be),this.update(ne),ne.length},Y.prototype.encodeString=function(ae){var de=j(ae);ae=de[0];var le=de[1],be=0,ne=ae.length;if(le)for(var pe=0;pe<ae.length;++pe){var ve=ae.charCodeAt(pe);ve<128?be+=1:ve<2048?be+=2:ve<55296||ve>=57344?be+=3:(ve=65536+((ve&1023)<<10|ae.charCodeAt(++pe)&1023),be+=4)}else be=ne;return be+=this.encode(be*8),this.update(ae),be},Y.prototype.bytepad=function(ae,de){for(var le=this.encode(de),be=0;be<ae.length;++be)le+=this.encodeString(ae[be]);var ne=(de-le%de)%de,pe=[];return pe.length=ne,this.update(pe),this},Y.prototype.finalize=function(){if(!this.finalized){this.finalized=!0;var ae=this.blocks,de=this.lastByteIndex,le=this.blockCount,be=this.s;if(ae[de>>2]|=this.padding[de&3],this.lastByteIndex===this.byteCount)for(ae[0]=ae[le],de=1;de<le+1;++de)ae[de]=0;for(ae[le-1]|=2147483648,de=0;de<le;++de)be[de]^=ae[de];ee(be)}},Y.prototype.toString=Y.prototype.hex=function(){this.finalize();for(var ae=this.blockCount,de=this.s,le=this.outputBlocks,be=this.extraBytes,ne=0,pe=0,ve="",qe;pe<le;){for(ne=0;ne<ae&&pe<le;++ne,++pe)qe=de[ne],ve+=b[qe>>4&15]+b[qe&15]+b[qe>>12&15]+b[qe>>8&15]+b[qe>>20&15]+b[qe>>16&15]+b[qe>>28&15]+b[qe>>24&15];pe%ae===0&&(de=K(de),ee(de),ne=0)}return be&&(qe=de[ne],ve+=b[qe>>4&15]+b[qe&15],be>1&&(ve+=b[qe>>12&15]+b[qe>>8&15]),be>2&&(ve+=b[qe>>20&15]+b[qe>>16&15])),ve},Y.prototype.arrayBuffer=function(){this.finalize();var ae=this.blockCount,de=this.s,le=this.outputBlocks,be=this.extraBytes,ne=0,pe=0,ve=this.outputBits>>3,qe;be?qe=new ArrayBuffer(le+1<<2):qe=new ArrayBuffer(ve);for(var De=new Uint32Array(qe);pe<le;){for(ne=0;ne<ae&&pe<le;++ne,++pe)De[pe]=de[ne];pe%ae===0&&(de=K(de),ee(de))}return be&&(De[pe]=de[ne],qe=qe.slice(0,ve)),qe},Y.prototype.buffer=Y.prototype.arrayBuffer,Y.prototype.digest=Y.prototype.array=function(){this.finalize();for(var ae=this.blockCount,de=this.s,le=this.outputBlocks,be=this.extraBytes,ne=0,pe=0,ve=[],qe,De;pe<le;){for(ne=0;ne<ae&&pe<le;++ne,++pe)qe=pe<<2,De=de[ne],ve[qe]=De&255,ve[qe+1]=De>>8&255,ve[qe+2]=De>>16&255,ve[qe+3]=De>>24&255;pe%ae===0&&(de=K(de),ee(de))}return be&&(qe=pe<<2,De=de[ne],ve[qe]=De&255,be>1&&(ve[qe+1]=De>>8&255),be>2&&(ve[qe+2]=De>>16&255)),ve};function te(ae,de,le){Y.call(this,ae,de,le)}te.prototype=new Y,te.prototype.finalize=function(){return this.encode(this.outputBits,!0),Y.prototype.finalize.call(this)};var ee=function(ae){var de,le,be,ne,pe,ve,qe,De,Me,Xe,Ze,oe,me,ye,Pe,we,_e,Ce,Fe,Se,ue,Ae,Te,Be,Ue,Ie,ke,tt,Ve,Ee,Ye,$e,Oe,Ke,je,it,at,Re,he,Ne,B,X,Q,fe,ce,se,ze,Ge,rt,et,ot,dt,lt,It,pt,vt,Et,wt,Tt,xt,kt,Pt,mt;for(be=0;be<48;be+=2)ne=ae[0]^ae[10]^ae[20]^ae[30]^ae[40],pe=ae[1]^ae[11]^ae[21]^ae[31]^ae[41],ve=ae[2]^ae[12]^ae[22]^ae[32]^ae[42],qe=ae[3]^ae[13]^ae[23]^ae[33]^ae[43],De=ae[4]^ae[14]^ae[24]^ae[34]^ae[44],Me=ae[5]^ae[15]^ae[25]^ae[35]^ae[45],Xe=ae[6]^ae[16]^ae[26]^ae[36]^ae[46],Ze=ae[7]^ae[17]^ae[27]^ae[37]^ae[47],oe=ae[8]^ae[18]^ae[28]^ae[38]^ae[48],me=ae[9]^ae[19]^ae[29]^ae[39]^ae[49],de=oe^(ve<<1|qe>>>31),le=me^(qe<<1|ve>>>31),ae[0]^=de,ae[1]^=le,ae[10]^=de,ae[11]^=le,ae[20]^=de,ae[21]^=le,ae[30]^=de,ae[31]^=le,ae[40]^=de,ae[41]^=le,de=ne^(De<<1|Me>>>31),le=pe^(Me<<1|De>>>31),ae[2]^=de,ae[3]^=le,ae[12]^=de,ae[13]^=le,ae[22]^=de,ae[23]^=le,ae[32]^=de,ae[33]^=le,ae[42]^=de,ae[43]^=le,de=ve^(Xe<<1|Ze>>>31),le=qe^(Ze<<1|Xe>>>31),ae[4]^=de,ae[5]^=le,ae[14]^=de,ae[15]^=le,ae[24]^=de,ae[25]^=le,ae[34]^=de,ae[35]^=le,ae[44]^=de,ae[45]^=le,de=De^(oe<<1|me>>>31),le=Me^(me<<1|oe>>>31),ae[6]^=de,ae[7]^=le,ae[16]^=de,ae[17]^=le,ae[26]^=de,ae[27]^=le,ae[36]^=de,ae[37]^=le,ae[46]^=de,ae[47]^=le,de=Xe^(ne<<1|pe>>>31),le=Ze^(pe<<1|ne>>>31),ae[8]^=de,ae[9]^=le,ae[18]^=de,ae[19]^=le,ae[28]^=de,ae[29]^=le,ae[38]^=de,ae[39]^=le,ae[48]^=de,ae[49]^=le,ye=ae[0],Pe=ae[1],se=ae[11]<<4|ae[10]>>>28,ze=ae[10]<<4|ae[11]>>>28,tt=ae[20]<<3|ae[21]>>>29,Ve=ae[21]<<3|ae[20]>>>29,xt=ae[31]<<9|ae[30]>>>23,kt=ae[30]<<9|ae[31]>>>23,X=ae[40]<<18|ae[41]>>>14,Q=ae[41]<<18|ae[40]>>>14,Ke=ae[2]<<1|ae[3]>>>31,je=ae[3]<<1|ae[2]>>>31,we=ae[13]<<12|ae[12]>>>20,_e=ae[12]<<12|ae[13]>>>20,Ge=ae[22]<<10|ae[23]>>>22,rt=ae[23]<<10|ae[22]>>>22,Ee=ae[33]<<13|ae[32]>>>19,Ye=ae[32]<<13|ae[33]>>>19,Pt=ae[42]<<2|ae[43]>>>30,mt=ae[43]<<2|ae[42]>>>30,It=ae[5]<<30|ae[4]>>>2,pt=ae[4]<<30|ae[5]>>>2,it=ae[14]<<6|ae[15]>>>26,at=ae[15]<<6|ae[14]>>>26,Ce=ae[25]<<11|ae[24]>>>21,Fe=ae[24]<<11|ae[25]>>>21,et=ae[34]<<15|ae[35]>>>17,ot=ae[35]<<15|ae[34]>>>17,$e=ae[45]<<29|ae[44]>>>3,Oe=ae[44]<<29|ae[45]>>>3,Be=ae[6]<<28|ae[7]>>>4,Ue=ae[7]<<28|ae[6]>>>4,vt=ae[17]<<23|ae[16]>>>9,Et=ae[16]<<23|ae[17]>>>9,Re=ae[26]<<25|ae[27]>>>7,he=ae[27]<<25|ae[26]>>>7,Se=ae[36]<<21|ae[37]>>>11,ue=ae[37]<<21|ae[36]>>>11,dt=ae[47]<<24|ae[46]>>>8,lt=ae[46]<<24|ae[47]>>>8,fe=ae[8]<<27|ae[9]>>>5,ce=ae[9]<<27|ae[8]>>>5,Ie=ae[18]<<20|ae[19]>>>12,ke=ae[19]<<20|ae[18]>>>12,wt=ae[29]<<7|ae[28]>>>25,Tt=ae[28]<<7|ae[29]>>>25,Ne=ae[38]<<8|ae[39]>>>24,B=ae[39]<<8|ae[38]>>>24,Ae=ae[48]<<14|ae[49]>>>18,Te=ae[49]<<14|ae[48]>>>18,ae[0]=ye^~we&Ce,ae[1]=Pe^~_e&Fe,ae[10]=Be^~Ie&tt,ae[11]=Ue^~ke&Ve,ae[20]=Ke^~it&Re,ae[21]=je^~at&he,ae[30]=fe^~se&Ge,ae[31]=ce^~ze&rt,ae[40]=It^~vt&wt,ae[41]=pt^~Et&Tt,ae[2]=we^~Ce&Se,ae[3]=_e^~Fe&ue,ae[12]=Ie^~tt&Ee,ae[13]=ke^~Ve&Ye,ae[22]=it^~Re&Ne,ae[23]=at^~he&B,ae[32]=se^~Ge&et,ae[33]=ze^~rt&ot,ae[42]=vt^~wt&xt,ae[43]=Et^~Tt&kt,ae[4]=Ce^~Se&Ae,ae[5]=Fe^~ue&Te,ae[14]=tt^~Ee&$e,ae[15]=Ve^~Ye&Oe,ae[24]=Re^~Ne&X,ae[25]=he^~B&Q,ae[34]=Ge^~et&dt,ae[35]=rt^~ot<,ae[44]=wt^~xt&Pt,ae[45]=Tt^~kt&mt,ae[6]=Se^~Ae&ye,ae[7]=ue^~Te&Pe,ae[16]=Ee^~$e&Be,ae[17]=Ye^~Oe&Ue,ae[26]=Ne^~X&Ke,ae[27]=B^~Q&je,ae[36]=et^~dt&fe,ae[37]=ot^~lt&ce,ae[46]=xt^~Pt&It,ae[47]=kt^~mt&pt,ae[8]=Ae^~ye&we,ae[9]=Te^~Pe&_e,ae[18]=$e^~Be&Ie,ae[19]=Oe^~Ue&ke,ae[28]=X^~Ke&it,ae[29]=Q^~je&at,ae[38]=dt^~fe&se,ae[39]=lt^~ce&ze,ae[48]=Pt^~It&vt,ae[49]=mt^~pt&Et,ae[0]^=x[be],ae[1]^=x[be+1]};if(m)e.exports=I;else for(H=0;H<_.length;++H)u[_[H]]=I[_[H]]})()})(sha3)),sha3.exports}var sha3Exports=requireSha3();function generateDepositId(e,t,a,s){const l=Buffer$1.from(a,"hex").reverse();if(l.length!==32)throw new Error("txId must be a 32-byte array.");const p=Buffer$1.alloc(32,0),m=Buffer$1.from([3,83,79,76]),g=e.toBuffer(),b=Buffer$1.alloc(8);b.writeBigUInt64BE(t);const v=Buffer$1.alloc(4);v.writeUInt32BE(s);const E=Buffer$1.concat([new Uint8Array(p),new Uint8Array(m),new Uint8Array(g),new Uint8Array(b),new Uint8Array(l),new Uint8Array(v)]),M=new Uint8Array(E.buffer,E.byteOffset,E.byteLength),k=sha3Exports.keccak256(M),P=Buffer$1.from(k,"hex");return new Uint8Array(P)}const postMintSignatures=async({connection:e,provider:t,program:a,configPDA:s,mintPayloadPDA:u,payloadHashArray:l,proofSignature:p})=>{const{signatures:m,indices:g}=parseSignaturesFromProof(p);if(m.length===0||g.length===0)throw new Error("No valid signatures found in the proof");const b=m.map(E=>Array.from(E)),v=await a.methods.postMintSignatures(l,b,g).accounts({config:s,payload:u}).transaction();return await sendAndConfirmTransaction({instruction:v,connection:e,provider:t,debugLabel:"Post Mint Signatures"})},ALREADY_MINTED_TX_HASH="ALREADY_MINTED";async function claimLBTC(e,t){const{recipientAddress:a,network:s,proofSignature:u,rawPayload:l,rpcUrl:p,debug:m=!1}=t,{debugLog:g,printLogs:b}=createDebugLogger({debug:m});try{if(!e.publicKey)throw new Error("Wallet not found");const v=getConfig(networkToEnv[s]),E=getConnection(s,p),M={publicKey:new PublicKey$1(e.publicKey),signTransaction:e.signTransaction,signAllTransactions:e.signAllTransactions},k=new AnchorProvider(E,M,{});setProvider(k);const P=new Program$1(getLbtcIdl(s),k),x=new PublicKey$1(v.lbtcTokenMint),A=new PublicKey$1(v.lbtcProgramId),O=new PublicKey$1(v.lzMultisig),D=new MintPayload(l),[z]=PublicKey$1.findProgramAddressSync([D.hashAsBytes()],A),[C]=PublicKey$1.findProgramAddressSync([Buffer.from("lbtc_config")],A),[L]=PublicKey$1.findProgramAddressSync([Buffer.from("token_authority")],A),j=Array.from(D.hashAsBytes());await verifyMatchingRecipient(x,D,a);const V=await checkPayloadStatus(P,z,g);if(V.isMinted)return ALREADY_MINTED_TX_HASH;if(await createOrGetAssociatedTokenAccount({provider:e,connection:E,ownerAddress:a,mintAddress:v.lbtcTokenMint}),V.exists)g("Mint payload already exists, skipping create instruction.");else{g("Adding Create Mint Payload instruction...");const U=await P.methods.createMintPayload(j,Array.from(D.bytes())).accounts({payer:e.publicKey,config:C,payload:z,systemProgram:SystemProgram.programId}).transaction();await sendAndConfirmTransaction({instruction:U,connection:E,provider:e,debugLabel:"Create Mint Payload"})}V.isSigned?g("Payload already signed, skipping post signatures instruction."):await postMintSignatures({connection:E,provider:e,program:P,configPDA:C,mintPayloadPDA:z,payloadHashArray:j,proofSignature:u});const K=new PublicKey$1(a),F=await getAssociatedTokenAddress(x,K),q=D.amount.startsWith("0x")?BigInt(D.amount):BigInt(`0x${D.amount}`),R=generateDepositId(F,q,D.txId,Number(D.vout)),y=Buffer.from("deposit"),[S]=v.bascule?PublicKey$1.findProgramAddressSync([y,R],new PublicKey$1(v.bascule)):[],w=await P.methods.mintFromPayload(j).accounts({config:C,tokenProgram:TOKEN_PROGRAM_ID$1,recipient:F,mint:x,mintAuthority:O,tokenAuthority:L,payload:z,bascule:v.bascule,basculeData:v.basculeData,deposit:S,systemProgram:SystemProgram.programId,signer:e.publicKey}).transaction(),{signature:T}=await sendAndConfirmTransaction({instruction:w,connection:E,provider:e,debugLabel:"Mint From Payload"});return T}catch(v){throw v instanceof Error&&(v.message=`${v.message}
|
|
115
115
|
|
|
116
116
|
Debug logs:
|
|
117
|
-
${b()}`),v}}const r={prod:"prod"};let n=null;const o=async()=>{try{const e=await Promise.resolve().then(()=>require("./index3.cjs")).then(a=>a.index),t=await Promise.resolve().then(()=>index);try{e.initEccLib(t)}catch(a){if(!/already initialized/i.test(String(a)))throw a}return e}catch(e){throw n=null,new Error(`Failed to initialize bitcoinjs-lib: ${e instanceof Error?e.message:String(e)}. Ensure bitcoinjs-lib and @bitcoinerlab/secp256k1 peer dependencies are installed.`)}},c=async()=>(n||(n=o()),n);async function d$1(e,t=r.prod){const a=await c();return`0x${a.address.toOutputScript(e,t===r.prod?a.networks.bitcoin:a.networks.testnet).toString("hex")}`}async function unstakeLBTC(e,t){try{const{amount:a,btcAddress:s,network:u,rpcUrl:l}=t,p=networkToEnv[u]||DEFAULT_ENV,{treasuryAddress:m,lbtcTokenMint:g}=getConfig(p),b=getConnection(u,l);if(!e.publicKey)throw SolanaSdkError.wrap(new Error("Wallet not connected"),ErrorCode$1.UNSTAKE_REJECTED,"Please connect your Solana wallet and ensure it is on the correct network.");const v=getLbtcIdl(u),E=new Program$1(v,{connection:b}),M=Buffer.from((await d$1(s,p)).replace(/^0x/,""),"hex"),k=new PublicKey$1(g),[P]=PublicKey$1.findProgramAddressSync([Buffer.from("lbtc_config")],new PublicKey$1(E.programId));if(!await b.getAccountInfo(P))throw SolanaSdkError.wrap(new Error(`LBTC program config not found on ${u}`),ErrorCode$1.UNSTAKE_REJECTED,`LBTC unstaking is not available on ${u}. The program may not be deployed or configured.`);const A=await createOrGetAssociatedTokenAccount({provider:e,connection:b,ownerAddress:e.publicKey.toBase58(),mintAddress:k.toBase58()}),O=await b.getTokenAccountBalance(new PublicKey$1(A)),D=BigInt(O.value.amount),z=BigInt(a);if(D<z)throw SolanaSdkError.wrap(new Error("Insufficient LBTC balance"),ErrorCode$1.UNSTAKE_REJECTED,`Insufficient LBTC balance. You have ${O.value.uiAmountString} LBTC but requested to unstake ${Number(a)/1e8} LBTC.`);const C=await E.methods.redeem(M,new BN$1(a)).accounts({payer:e.publicKey,holder:A,config:P,tokenProgram:TOKEN_PROGRAM_ID$1,mint:k,treasury:m}).transaction(),{signature:L}=await sendAndConfirmTransaction({instruction:C,connection:b,provider:e,debugLabel:"Unstake LBTC"});return L}catch(a){throw SolanaSdkError.wrap(a,ErrorCode$1.UNSTAKE_REJECTED,"LBTC unstake operation failed")}}const address$2="LomVyJDZ91jeVbNnTupJXKJTQFakJVMc87CmwDHYt95",metadata$3={name:"asset_router",version:"0.1.0",spec:"0.1.0",description:"The asset router contract providing token management in the Ledger v2 design."},instructions$3=JSON.parse('[{"name":"accept_ownership","discriminator":[172,23,43,13,238,213,85,150],"accounts":[{"name":"payer","signer":true},{"name":"config","writable":true,"pda":{"seeds":[{"kind":"const","value":[97,115,115,101,116,95,114,111,117,116,101,114,95,99,111,110,102,105,103]}]}}],"args":[]},{"name":"change_mint_auth","discriminator":[98,59,17,150,173,118,36,101],"accounts":[{"name":"payer","signer":true},{"name":"config","pda":{"seeds":[{"kind":"const","value":[97,115,115,101,116,95,114,111,117,116,101,114,95,99,111,110,102,105,103]}]}},{"name":"mint"},{"name":"current_auth","docs":["current authority is passed the function call will fail."]},{"name":"token_program"},{"name":"token_authority","pda":{"seeds":[{"kind":"const","value":[116,111,107,101,110,95,97,117,116,104,111,114,105,116,121]}]}}],"args":[{"name":"new_auth","type":"pubkey"}]},{"name":"deposit","discriminator":[242,35,198,137,82,225,242,182],"accounts":[{"name":"payer","writable":true,"signer":true},{"name":"config","pda":{"seeds":[{"kind":"const","value":[97,115,115,101,116,95,114,111,117,116,101,114,95,99,111,110,102,105,103]}]}},{"name":"token_route","pda":{"seeds":[{"kind":"const","value":[116,111,107,101,110,95,114,111,117,116,101]},{"kind":"const","value":[2,41,105,152,166,248,226,167,132,219,93,159,149,225,143,194,63,112,68,26,16,57,68,104,1,8,152,121,176,140,126,240]},{"kind":"account","path":"mint"},{"kind":"arg","path":"to_lchain_id"},{"kind":"arg","path":"to_token_address"}]}},{"name":"payer_token_account","writable":true},{"name":"token_program"},{"name":"mint","writable":true},{"name":"messaging_authority","pda":{"seeds":[{"kind":"const","value":[109,101,115,115,97,103,105,110,103,95,97,117,116,104,111,114,105,116,121]}]}},{"name":"mailbox","address":"LomJw912MoUd7iiAesTQAgz1paLcTqi6ndG3w3pnKH9"},{"name":"mailbox_config","writable":true},{"name":"outbound_message_path"},{"name":"outbound_message","writable":true},{"name":"sender_config","optional":true},{"name":"treasury","writable":true,"optional":true},{"name":"system_program","address":"11111111111111111111111111111111"}],"args":[{"name":"to_lchain_id","type":{"array":["u8",32]}},{"name":"to_token_address","type":{"array":["u8",32]}},{"name":"recipient","type":{"array":["u8",32]}},{"name":"amount","type":"u64"}]},{"name":"disable_bascule","discriminator":[57,164,60,76,249,175,240,28],"accounts":[{"name":"payer","signer":true},{"name":"config","writable":true,"pda":{"seeds":[{"kind":"const","value":[97,115,115,101,116,95,114,111,117,116,101,114,95,99,111,110,102,105,103]}]}}],"args":[]},{"name":"enable_bascule","discriminator":[42,184,103,55,45,231,145,180],"accounts":[{"name":"payer","signer":true},{"name":"config","writable":true,"pda":{"seeds":[{"kind":"const","value":[97,115,115,101,116,95,114,111,117,116,101,114,95,99,111,110,102,105,103]}]}}],"args":[]},{"name":"gmp_receive","discriminator":[75,72,219,230,85,3,24,44],"accounts":[{"name":"message_info","signer":true},{"name":"handler","writable":true,"signer":true},{"name":"config","pda":{"seeds":[{"kind":"const","value":[97,115,115,101,116,95,114,111,117,116,101,114,95,99,111,110,102,105,103]}]}},{"name":"message_handled","writable":true,"pda":{"seeds":[{"kind":"const","value":[109,101,115,115,97,103,101,95,104,97,110,100,108,101,100]},{"kind":"arg","path":"payload_hash"}]}},{"name":"token_program"},{"name":"recipient","writable":true},{"name":"mint"},{"name":"mint_authority","docs":["instruction will fail."]},{"name":"token_authority","pda":{"seeds":[{"kind":"const","value":[116,111,107,101,110,95,97,117,116,104,111,114,105,116,121]}]}},{"name":"system_program","address":"11111111111111111111111111111111"}],"args":[{"name":"payload_hash","type":{"array":["u8",32]}}]},{"name":"grant_account_role","discriminator":[166,105,3,49,241,233,230,157],"accounts":[{"name":"admin","writable":true,"signer":true},{"name":"config","pda":{"seeds":[{"kind":"const","value":[97,115,115,101,116,95,114,111,117,116,101,114,95,99,111,110,102,105,103]}]}},{"name":"account_roles","writable":true,"pda":{"seeds":[{"kind":"const","value":[97,99,99,111,117,110,116,95,114,111,108,101,115]},{"kind":"arg","path":"account"}]}},{"name":"system_program","address":"11111111111111111111111111111111"}],"args":[{"name":"account","type":"pubkey"},{"name":"account_role","type":{"defined":{"name":"AccountRole"}}}]},{"name":"initialize","discriminator":[175,175,109,31,13,152,155,237],"accounts":[{"name":"deployer","writable":true,"signer":true},{"name":"program_data","pda":{"seeds":[{"kind":"const","value":[5,18,234,77,227,43,95,61,233,140,62,195,41,12,98,129,217,16,222,194,22,133,11,224,186,228,222,153,255,78,217,216]}],"program":{"kind":"const","value":[2,168,246,145,78,136,161,176,226,16,21,62,247,99,174,43,0,194,185,61,22,193,36,210,192,83,122,16,4,128,0,0]}}},{"name":"config","writable":true,"pda":{"seeds":[{"kind":"const","value":[97,115,115,101,116,95,114,111,117,116,101,114,95,99,111,110,102,105,103]}]}},{"name":"messaging_authority","writable":true,"pda":{"seeds":[{"kind":"const","value":[109,101,115,115,97,103,105,110,103,95,97,117,116,104,111,114,105,116,121]}]}},{"name":"system_program","address":"11111111111111111111111111111111"}],"args":[{"name":"config","type":{"defined":{"name":"Config"}}}]},{"name":"mint_from_payload","discriminator":[78,44,95,232,161,7,56,178],"accounts":[{"name":"payer","writable":true,"signer":true},{"name":"config","pda":{"seeds":[{"kind":"const","value":[97,115,115,101,116,95,114,111,117,116,101,114,95,99,111,110,102,105,103]}]}},{"name":"token_program"},{"name":"recipient","writable":true},{"name":"mint","writable":true},{"name":"mint_authority","docs":["instruction will fail."]},{"name":"token_authority","pda":{"seeds":[{"kind":"const","value":[116,111,107,101,110,95,97,117,116,104,111,114,105,116,121]}]}},{"name":"consortium_validated_payload","docs":["check that the consortium program has validated the payload"]},{"name":"deposit_payload_spent","writable":true},{"name":"system_program","address":"11111111111111111111111111111111"}],"args":[{"name":"mint_payload","type":{"array":["u8",196]}},{"name":"mint_payload_hash","type":{"array":["u8",32]}}]},{"name":"mint_with_fee","discriminator":[142,93,70,12,187,19,19,154],"accounts":[{"name":"payer","writable":true,"signer":true},{"name":"config","pda":{"seeds":[{"kind":"const","value":[97,115,115,101,116,95,114,111,117,116,101,114,95,99,111,110,102,105,103]}]}},{"name":"account_roles","pda":{"seeds":[{"kind":"const","value":[97,99,99,111,117,110,116,95,114,111,108,101,115]},{"kind":"account","path":"payer"}]}},{"name":"token_config","pda":{"seeds":[{"kind":"const","value":[116,111,107,101,110,95,99,111,110,102,105,103]},{"kind":"account","path":"mint"}]}},{"name":"token_program"},{"name":"recipient","writable":true},{"name":"mint","writable":true},{"name":"mint_authority","docs":["instruction will fail."]},{"name":"token_authority","pda":{"seeds":[{"kind":"const","value":[116,111,107,101,110,95,97,117,116,104,111,114,105,116,121]}]}},{"name":"consortium_validated_payload","docs":["check that the consortium program has validated the payload"]},{"name":"deposit_payload_spent","writable":true},{"name":"system_program","address":"11111111111111111111111111111111"},{"name":"treasury_token_account","writable":true},{"name":"instruction_sysvar","address":"Sysvar1nstructions1111111111111111111111111"}],"args":[{"name":"mint_payload","type":{"array":["u8",196]}},{"name":"mint_payload_hash","type":{"array":["u8",32]}},{"name":"fee_payload","type":{"array":["u8",52]}},{"name":"fee_signature","type":{"array":["u8",64]}}]},{"name":"pause","discriminator":[211,22,221,251,74,121,193,47],"accounts":[{"name":"payer","signer":true},{"name":"config","writable":true,"pda":{"seeds":[{"kind":"const","value":[97,115,115,101,116,95,114,111,117,116,101,114,95,99,111,110,102,105,103]}]}},{"name":"account_roles","writable":true,"pda":{"seeds":[{"kind":"const","value":[97,99,99,111,117,110,116,95,114,111,108,101,115]},{"kind":"account","path":"payer"}]}}],"args":[]},{"name":"redeem","discriminator":[184,12,86,149,70,196,97,225],"accounts":[{"name":"payer","writable":true,"signer":true},{"name":"config","pda":{"seeds":[{"kind":"const","value":[97,115,115,101,116,95,114,111,117,116,101,114,95,99,111,110,102,105,103]}]}},{"name":"token_config","pda":{"seeds":[{"kind":"const","value":[116,111,107,101,110,95,99,111,110,102,105,103]},{"kind":"account","path":"mint"}]}},{"name":"token_route","pda":{"seeds":[{"kind":"const","value":[116,111,107,101,110,95,114,111,117,116,101]},{"kind":"const","value":[2,41,105,152,166,248,226,167,132,219,93,159,149,225,143,194,63,112,68,26,16,57,68,104,1,8,152,121,176,140,126,240]},{"kind":"account","path":"mint"},{"kind":"arg","path":"to_lchain_id"},{"kind":"arg","path":"to_token_address"}]}},{"name":"payer_token_account","writable":true},{"name":"token_program"},{"name":"mint","writable":true},{"name":"treasury_token_account","writable":true},{"name":"messaging_authority","pda":{"seeds":[{"kind":"const","value":[109,101,115,115,97,103,105,110,103,95,97,117,116,104,111,114,105,116,121]}]}},{"name":"mailbox","address":"LomJw912MoUd7iiAesTQAgz1paLcTqi6ndG3w3pnKH9"},{"name":"mailbox_config","writable":true},{"name":"outbound_message_path"},{"name":"outbound_message","writable":true},{"name":"sender_config","optional":true},{"name":"treasury","writable":true,"optional":true},{"name":"system_program","address":"11111111111111111111111111111111"}],"args":[{"name":"to_lchain_id","type":{"array":["u8",32]}},{"name":"to_token_address","type":{"array":["u8",32]}},{"name":"recipient","type":{"array":["u8",32]}},{"name":"amount","type":"u64"}]},{"name":"redeem_for_btc","discriminator":[122,146,65,202,104,10,146,122],"accounts":[{"name":"payer","writable":true,"signer":true},{"name":"config","pda":{"seeds":[{"kind":"const","value":[97,115,115,101,116,95,114,111,117,116,101,114,95,99,111,110,102,105,103]}]}},{"name":"token_config","pda":{"seeds":[{"kind":"const","value":[116,111,107,101,110,95,99,111,110,102,105,103]},{"kind":"account","path":"mint"}]}},{"name":"token_route"},{"name":"payer_token_account","writable":true},{"name":"token_program"},{"name":"mint","writable":true},{"name":"treasury_token_account","writable":true},{"name":"messaging_authority","pda":{"seeds":[{"kind":"const","value":[109,101,115,115,97,103,105,110,103,95,97,117,116,104,111,114,105,116,121]}]}},{"name":"mailbox","address":"LomJw912MoUd7iiAesTQAgz1paLcTqi6ndG3w3pnKH9"},{"name":"mailbox_config","writable":true},{"name":"outbound_message_path"},{"name":"outbound_message","writable":true},{"name":"sender_config","optional":true},{"name":"treasury","writable":true,"optional":true},{"name":"system_program","address":"11111111111111111111111111111111"}],"args":[{"name":"script_pubkey","type":"bytes"},{"name":"amount","type":"u64"}]},{"name":"revoke_account_roles","discriminator":[88,183,44,133,35,162,233,161],"accounts":[{"name":"admin","writable":true,"signer":true},{"name":"config","writable":true,"pda":{"seeds":[{"kind":"const","value":[97,115,115,101,116,95,114,111,117,116,101,114,95,99,111,110,102,105,103]}]}},{"name":"account_roles","writable":true,"pda":{"seeds":[{"kind":"const","value":[97,99,99,111,117,110,116,95,114,111,108,101,115]},{"kind":"arg","path":"account"}]}},{"name":"system_program","address":"11111111111111111111111111111111"}],"args":[{"name":"account","type":"pubkey"}]},{"name":"set_mint_fee","discriminator":[52,77,178,201,245,51,250,139],"accounts":[{"name":"operator","signer":true},{"name":"account_roles","writable":true,"pda":{"seeds":[{"kind":"const","value":[97,99,99,111,117,110,116,95,114,111,108,101,115]},{"kind":"account","path":"operator"}]}},{"name":"token_config","writable":true}],"args":[{"name":"mint_fee","type":"u64"}]},{"name":"set_token_config","discriminator":[158,231,35,78,98,32,210,196],"accounts":[{"name":"payer","writable":true,"signer":true},{"name":"config","writable":true,"pda":{"seeds":[{"kind":"const","value":[97,115,115,101,116,95,114,111,117,116,101,114,95,99,111,110,102,105,103]}]}},{"name":"token_config","writable":true,"pda":{"seeds":[{"kind":"const","value":[116,111,107,101,110,95,99,111,110,102,105,103]},{"kind":"arg","path":"mint_address"}]}},{"name":"system_program","address":"11111111111111111111111111111111"}],"args":[{"name":"mint_address","type":"pubkey"},{"name":"token_config","type":{"defined":{"name":"TokenConfig"}}}]},{"name":"set_token_route","discriminator":[90,100,101,223,118,150,79,221],"accounts":[{"name":"payer","writable":true,"signer":true},{"name":"config","writable":true,"pda":{"seeds":[{"kind":"const","value":[97,115,115,101,116,95,114,111,117,116,101,114,95,99,111,110,102,105,103]}]}},{"name":"token_route","writable":true,"pda":{"seeds":[{"kind":"const","value":[116,111,107,101,110,95,114,111,117,116,101]},{"kind":"arg","path":"from_chain_id"},{"kind":"arg","path":"from_token_address"},{"kind":"arg","path":"to_chain_id"},{"kind":"arg","path":"to_token_address"}]}},{"name":"system_program","address":"11111111111111111111111111111111"}],"args":[{"name":"from_chain_id","type":{"array":["u8",32]}},{"name":"from_token_address","type":{"array":["u8",32]}},{"name":"to_chain_id","type":{"array":["u8",32]}},{"name":"to_token_address","type":{"array":["u8",32]}},{"name":"token_route_type","type":{"defined":{"name":"TokenRouteType"}}}]},{"name":"set_treasury","discriminator":[57,97,196,95,195,206,106,136],"accounts":[{"name":"payer","signer":true},{"name":"config","writable":true,"pda":{"seeds":[{"kind":"const","value":[97,115,115,101,116,95,114,111,117,116,101,114,95,99,111,110,102,105,103]}]}}],"args":[{"name":"treasury","type":"pubkey"}]},{"name":"transfer_ownership","discriminator":[65,177,215,73,53,45,99,47],"accounts":[{"name":"payer","signer":true},{"name":"config","writable":true,"pda":{"seeds":[{"kind":"const","value":[97,115,115,101,116,95,114,111,117,116,101,114,95,99,111,110,102,105,103]}]}}],"args":[{"name":"new_admin","type":"pubkey"}]},{"name":"unpause","discriminator":[169,144,4,38,10,141,188,255],"accounts":[{"name":"payer","signer":true},{"name":"config","writable":true,"pda":{"seeds":[{"kind":"const","value":[97,115,115,101,116,95,114,111,117,116,101,114,95,99,111,110,102,105,103]}]}}],"args":[]},{"name":"unset_token_route","discriminator":[213,165,89,45,165,194,51,165],"accounts":[{"name":"payer","writable":true,"signer":true},{"name":"config","writable":true,"pda":{"seeds":[{"kind":"const","value":[97,115,115,101,116,95,114,111,117,116,101,114,95,99,111,110,102,105,103]}]}},{"name":"token_route","writable":true,"pda":{"seeds":[{"kind":"const","value":[116,111,107,101,110,95,114,111,117,116,101]},{"kind":"arg","path":"from_chain_id"},{"kind":"arg","path":"from_token_address"},{"kind":"arg","path":"to_chain_id"},{"kind":"arg","path":"to_token_address"}]}},{"name":"system_program","address":"11111111111111111111111111111111"}],"args":[{"name":"from_chain_id","type":{"array":["u8",32]}},{"name":"from_token_address","type":{"array":["u8",32]}},{"name":"to_chain_id","type":{"array":["u8",32]}},{"name":"to_token_address","type":{"array":["u8",32]}}]}]'),accounts$3=[{name:"AccountRoles",discriminator:[25,230,229,88,31,135,177,142]},{name:"Config",discriminator:[155,12,170,224,30,250,204,130]},{name:"DepositPayloadSpent",discriminator:[44,125,36,131,19,161,75,25]},{name:"MessageHandled",discriminator:[157,239,26,195,144,53,19,109]},{name:"MessageV1Info",discriminator:[113,42,224,190,65,33,233,178]},{name:"MessagingAuthority",discriminator:[149,84,21,225,138,238,79,217]},{name:"TokenConfig",discriminator:[92,73,255,43,107,51,117,101]},{name:"TokenRoute",discriminator:[126,114,64,197,31,189,252,132]},{name:"ValidatedPayload",discriminator:[129,8,149,193,22,240,127,36]}],events$3=[{name:"AccountRoleGranted",discriminator:[156,201,253,16,204,194,211,121]},{name:"AccountRolesRevoked",discriminator:[193,45,230,213,88,196,24,174]},{name:"BasculeEnabled",discriminator:[84,223,73,187,19,208,205,93]},{name:"MintAuthorityUpdated",discriminator:[251,56,50,229,68,227,225,225]},{name:"MintFeeSet",discriminator:[19,160,65,66,12,237,135,42]},{name:"MintProofConsumed",discriminator:[39,6,40,221,150,118,32,59]},{name:"OwnershipTransferInitiated",discriminator:[181,32,40,60,60,64,235,29]},{name:"OwnershipTransferred",discriminator:[172,61,205,183,250,50,38,98]},{name:"ProgramPaused",discriminator:[247,9,236,38,105,35,112,115]},{name:"TokenConfigSet",discriminator:[48,183,41,161,246,12,242,8]},{name:"TokenRouteSet",discriminator:[4,31,245,62,151,52,49,202]},{name:"TokenRouteUnset",discriminator:[42,85,28,244,48,106,76,33]},{name:"TreasuryChanged",discriminator:[252,2,55,56,106,205,227,47]}],errors$a=[{code:6e3,name:"Unauthorized",msg:"Unauthorized function call"},{code:6001,name:"AccountRoleAlreadyGranted",msg:"Account role already granted"},{code:6002,name:"RecipientMismatch",msg:"Mismatch between mint payload and passed account"},{code:6003,name:"InvalidChainID",msg:"Invalid chain ID"},{code:6004,name:"BasculeNotAvailable",msg:"Bascule not available"},{code:6005,name:"InvalidTokenAddress",msg:"Invalid token address"},{code:6006,name:"MintPayloadUsed",msg:"Mint payload already used"},{code:6007,name:"MintPayloadHashMismatch",msg:"Passed mint payload hash does not match computed hash"},{code:6008,name:"WithdrawalsDisabled",msg:"Withdrawals are disabled"},{code:6009,name:"FeeGTEAmount",msg:"Fee is greater than or equal to amount"},{code:6010,name:"FeeApprovalExpired",msg:"Fee approval expired"},{code:6011,name:"UnsupportedRedeemAddress",msg:"Script pubkey is unsupported"},{code:6012,name:"AmountBelowDustLimit",msg:"Redeemed amount is below the BTC dust limit"},{code:6013,name:"InvalidFeeAction",msg:"Invalid fee action"},{code:6014,name:"InvalidFeeSignature",msg:"Fee signature invalid"},{code:6015,name:"InvalidFeePayloadLength",msg:"Invalid fee payload length"},{code:6016,name:"Paused",msg:"LBTC contract is paused"},{code:6017,name:"NotPaused",msg:"LBTC contract is not paused"},{code:6018,name:"InvalidVerifyingcontract",msg:"Invalid verifying contract"},{code:6019,name:"FeeTooHigh",msg:"Selected fee is too high"},{code:6020,name:"InvalidPayloadLength",msg:"Invalid payload length"},{code:6021,name:"InvalidPayloadSelector",msg:"Invalid payload selector"},{code:6022,name:"BufferIOError",msg:"Buffer IO error"},{code:6023,name:"InvalidMessageLength",msg:"Invalid message length"},{code:6024,name:"InvalidMessageSelector",msg:"Invalid message selector"},{code:6025,name:"InvalidMessageSender",msg:"Invalid message sender"},{code:6026,name:"ZeroAmount",msg:"Zero amount"},{code:6027,name:"InvalidTokenRouteType",msg:"Invalid token route type"},{code:6028,name:"ProgramError",msg:"Program error"},{code:6029,name:"TreasuryTokenAccountNotFound",msg:"Treasury token account not found"},{code:6030,name:"MissingEd25519Instruction",msg:"Missing Ed25519 instruction"},{code:6031,name:"InvalidEd25519Instruction",msg:"Invalid Ed25519 instruction"},{code:6032,name:"InvalidPublicKey",msg:"Invalid public key"},{code:6033,name:"InvalidMessage",msg:"Invalid message"},{code:6034,name:"InvalidSignature",msg:"Invalid signature"}],types$g=[{name:"AccountRole",type:{kind:"enum",variants:[{name:"Operator"},{name:"Pauser"},{name:"Claimer"}]}},{name:"AccountRoleGranted",type:{kind:"struct",fields:[{name:"account",type:"pubkey"},{name:"account_role",type:{defined:{name:"AccountRole"}}}]}},{name:"AccountRoles",type:{kind:"struct",fields:[{name:"roles",type:{vec:{defined:{name:"AccountRole"}}}}]}},{name:"AccountRolesRevoked",type:{kind:"struct",fields:[{name:"account",type:"pubkey"}]}},{name:"BasculeEnabled",type:{kind:"struct",fields:[{name:"enabled",type:"bool"}]}},{name:"Config",type:{kind:"struct",fields:[{name:"admin",type:"pubkey"},{name:"pending_admin",type:"pubkey"},{name:"treasury",type:"pubkey"},{name:"paused",type:"bool"},{name:"native_mint",type:"pubkey"},{name:"mailbox",type:"pubkey"},{name:"bascule_enabled",type:"bool"},{name:"ledger_lchain_id",type:{array:["u8",32]}},{name:"bitcoin_lchain_id",type:{array:["u8",32]}}]}},{name:"DepositPayloadSpent",type:{kind:"struct",fields:[]}},{name:"MessageHandled",type:{kind:"struct",fields:[]}},{name:"MessageState",docs:["The state of a payload including a GMP message"],type:{kind:"enum",variants:[{name:"Unknown"},{name:"Delivered"},{name:"Handled"}]}},{name:"MessageV1",type:{kind:"struct",fields:[{name:"message_path_identifier",type:{array:["u8",32]}},{name:"nonce",type:"u64"},{name:"sender",type:{array:["u8",32]}},{name:"recipient",type:{array:["u8",32]}},{name:"destination_caller",type:{option:{array:["u8",32]}}},{name:"body",type:"bytes"}]}},{name:"MessageV1Info",type:{kind:"struct",fields:[{name:"status",type:{defined:{name:"MessageState"}}},{name:"message",type:{defined:{name:"MessageV1"}}}]}},{name:"MessagingAuthority",type:{kind:"struct",fields:[]}},{name:"MintAuthorityUpdated",type:{kind:"struct",fields:[{name:"new_auth",type:"pubkey"}]}},{name:"MintFeeSet",type:{kind:"struct",fields:[{name:"mint_fee",type:"u64"}]}},{name:"MintProofConsumed",type:{kind:"struct",fields:[{name:"recipient",type:"pubkey"},{name:"payload_hash",type:{array:["u8",32]}}]}},{name:"OwnershipTransferInitiated",type:{kind:"struct",fields:[{name:"new_admin",type:"pubkey"}]}},{name:"OwnershipTransferred",type:{kind:"struct",fields:[{name:"new_admin",type:"pubkey"}]}},{name:"ProgramPaused",type:{kind:"struct",fields:[{name:"paused",type:"bool"}]}},{name:"TokenConfig",type:{kind:"struct",fields:[{name:"redeem_fee",type:"u64"},{name:"redeem_for_btc_min_amount",type:"u64"},{name:"max_mint_commission",type:"u64"},{name:"to_native_commission",type:"u64"},{name:"ledger_redeem_handler",type:{array:["u8",32]}}]}},{name:"TokenConfigSet",type:{kind:"struct",fields:[{name:"config",type:{defined:{name:"TokenConfig"}}}]}},{name:"TokenRoute",type:{kind:"struct",fields:[{name:"route_type",type:{defined:{name:"TokenRouteType"}}}]}},{name:"TokenRouteSet",type:{kind:"struct",fields:[{name:"from_chain_id",type:{array:["u8",32]}},{name:"from_token_address",type:{array:["u8",32]}},{name:"to_chain_id",type:{array:["u8",32]}},{name:"to_token_address",type:{array:["u8",32]}},{name:"token_route_type",type:{defined:{name:"TokenRouteType"}}}]}},{name:"TokenRouteType",type:{kind:"enum",variants:[{name:"Deposit"},{name:"Redeem"}]}},{name:"TokenRouteUnset",type:{kind:"struct",fields:[{name:"from_chain_id",type:{array:["u8",32]}},{name:"from_token_address",type:{array:["u8",32]}},{name:"to_chain_id",type:{array:["u8",32]}},{name:"to_token_address",type:{array:["u8",32]}},{name:"token_route_type",type:{defined:{name:"TokenRouteType"}}}]}},{name:"TreasuryChanged",type:{kind:"struct",fields:[{name:"address",type:"pubkey"}]}},{name:"ValidatedPayload",type:{kind:"struct",fields:[]}}],assetRouterIdl={address:address$2,metadata:metadata$3,instructions:instructions$3,accounts:accounts$3,events:events$3,errors:errors$a,types:types$g},getAssetRouterIdl=e=>{const t=getConfig(e);if(!t.assetRouter)throw new Error(`Asset Router program not configured for env: ${e}`);const a={...assetRouterIdl};return a.address=t.assetRouter,a},address$1="LomCbo8K5ar4kVpqoGGktE8WemHfGz84V8aH8Y1iGxd",metadata$2={name:"consortium",version:"0.1.0",spec:"0.1.0",description:"The consortium program in charge of validating payloads from the Lombard Ledger notarization system"},instructions$2=[{name:"accept_ownership",discriminator:[172,23,43,13,238,213,85,150],accounts:[{name:"payer",signer:!0},{name:"config",writable:!0,pda:{seeds:[{kind:"const",value:[99,111,110,115,111,114,116,105,117,109,95,99,111,110,102,105,103]}]}}],args:[]},{name:"create_session",discriminator:[242,193,143,179,150,25,122,227],accounts:[{name:"payer",writable:!0,signer:!0},{name:"config",pda:{seeds:[{kind:"const",value:[99,111,110,115,111,114,116,105,117,109,95,99,111,110,102,105,103]}]}},{name:"session",writable:!0},{name:"validated_payload"},{name:"system_program",address:"11111111111111111111111111111111"}],args:[{name:"payload_hash",type:{array:["u8",32]}}]},{name:"finalize_session",discriminator:[34,148,144,47,37,130,206,161],accounts:[{name:"payer",writable:!0,signer:!0},{name:"config",writable:!0,pda:{seeds:[{kind:"const",value:[99,111,110,115,111,114,116,105,117,109,95,99,111,110,102,105,103]}]}},{name:"session",writable:!0},{name:"validated_payload",writable:!0},{name:"system_program",address:"11111111111111111111111111111111"}],args:[{name:"payload_hash",type:{array:["u8",32]}}]},{name:"initialize",discriminator:[175,175,109,31,13,152,155,237],accounts:[{name:"deployer",writable:!0,signer:!0},{name:"program_data",pda:{seeds:[{kind:"const",value:[5,18,232,207,63,79,103,31,175,129,100,82,234,70,252,19,56,48,244,150,245,196,124,54,56,237,166,8,8,240,99,62]}],program:{kind:"const",value:[2,168,246,145,78,136,161,176,226,16,21,62,247,99,174,43,0,194,185,61,22,193,36,210,192,83,122,16,4,128,0,0]}}},{name:"config",writable:!0,pda:{seeds:[{kind:"const",value:[99,111,110,115,111,114,116,105,117,109,95,99,111,110,102,105,103]}]}},{name:"system_program",address:"11111111111111111111111111111111"}],args:[{name:"admin",type:"pubkey"}]},{name:"post_session_payload",discriminator:[151,42,50,73,194,109,25,199],accounts:[{name:"payer",writable:!0,signer:!0},{name:"session_payload",writable:!0},{name:"system_program",address:"11111111111111111111111111111111"}],args:[{name:"payload_hash",type:{array:["u8",32]}},{name:"payload_chunk",type:"bytes"},{name:"payload_length",type:"u32"}]},{name:"post_session_signatures",discriminator:[154,155,118,64,171,114,246,45],accounts:[{name:"payer",writable:!0,signer:!0},{name:"config",pda:{seeds:[{kind:"const",value:[99,111,110,115,111,114,116,105,117,109,95,99,111,110,102,105,103]}]}},{name:"session",writable:!0}],args:[{name:"payload_hash",type:{array:["u8",32]}},{name:"signatures",type:{vec:{array:["u8",64]}}},{name:"indices",type:{vec:"u64"}}]},{name:"set_initial_valset",discriminator:[171,69,132,141,206,84,175,115],accounts:[{name:"admin",writable:!0,signer:!0},{name:"config",writable:!0,pda:{seeds:[{kind:"const",value:[99,111,110,115,111,114,116,105,117,109,95,99,111,110,102,105,103]}]}}],args:[{name:"payload",type:"bytes"}]},{name:"transfer_ownership",discriminator:[65,177,215,73,53,45,99,47],accounts:[{name:"payer",signer:!0},{name:"config",writable:!0,pda:{seeds:[{kind:"const",value:[99,111,110,115,111,114,116,105,117,109,95,99,111,110,102,105,103]}]}}],args:[{name:"new_admin",type:"pubkey"}]},{name:"update_valset",discriminator:[31,154,103,219,117,16,212,162],accounts:[{name:"payer",writable:!0,signer:!0},{name:"config",writable:!0,pda:{seeds:[{kind:"const",value:[99,111,110,115,111,114,116,105,117,109,95,99,111,110,102,105,103]}]}},{name:"validated_payload"},{name:"session_payload",writable:!0}],args:[{name:"payload_hash",type:{array:["u8",32]}}]}],accounts$2=[{name:"Config",discriminator:[155,12,170,224,30,250,204,130]},{name:"Session",discriminator:[243,81,72,115,214,188,72,144]},{name:"SessionPayload",discriminator:[33,115,191,63,132,170,233,102]},{name:"ValidatedPayload",discriminator:[129,8,149,193,22,240,127,36]}],events$2=[{name:"OwnershipTransferInitiated",discriminator:[181,32,40,60,60,64,235,29]},{name:"OwnershipTransferred",discriminator:[172,61,205,183,250,50,38,98]},{name:"SessionCreated",discriminator:[107,111,254,25,21,122,220,225]},{name:"SessionFinalized",discriminator:[33,12,242,91,206,42,163,235]},{name:"SessionPayloadChunkPosted",discriminator:[32,54,237,154,192,9,225,122]},{name:"SessionSignaturesAdded",discriminator:[135,184,98,71,244,44,30,32]},{name:"ValidatorSetUpdated",discriminator:[234,43,30,48,204,242,119,118]}],errors$9=[{code:6e3,name:"Unauthorized",msg:"Unauthorized function call"},{code:6001,name:"NotEnoughSignatures",msg:"Not enough signatures"},{code:6002,name:"LeftoverData",msg:"Leftover data in payload"},{code:6003,name:"ValidatorSetAlreadySet",msg:"Validator set already set"},{code:6004,name:"OutdatedEpoch",msg:"Outdated epoch"},{code:6005,name:"NotConsecutiveEpoch",msg:"No consecutive epoch"},{code:6006,name:"NotIncrementingHeight",msg:"Not incrementing height"},{code:6007,name:"NoValidatorSet",msg:"No validator set exists"},{code:6008,name:"ValidatorSetSizeTooBig",msg:"Validator set size too big"},{code:6009,name:"ValidatorSetSizeTooSmall",msg:"Validator set size too small"},{code:6010,name:"InvalidWeightThreshold",msg:"Invalid weight threshold"},{code:6011,name:"ValidatorsAndWeightsMismatch",msg:"Mismatch between validators length and weights length"},{code:6012,name:"ZeroWeight",msg:"Weight for validator is zero"},{code:6013,name:"WeightsBelowThreshold",msg:"Sum of weights is below the threshold"},{code:6014,name:"SignaturesIndicesMismatch",msg:"Mismatch between signatures and indices length"},{code:6015,name:"WrongPayloadSelector",msg:"Wrong selector of session payload"},{code:6016,name:"InvalidPayloadLength",msg:"Invalid session payload length"},{code:6017,name:"InvalidValidatorPubkeyLength",msg:"Invalid validator pubkey length"},{code:6018,name:"BufferIOError",msg:"Buffer IO error"},{code:6019,name:"EmptyPayloadChunk",msg:"Empty payload chunk"},{code:6020,name:"SessionPayloadHashMismatch",msg:"Session payload hash mismatch"},{code:6021,name:"ValidatedPayloadAlreadyExists",msg:"Validated payload account already exists"},{code:6022,name:"ValidatedPayloadNotEmpty",msg:"Validated payload not empty"}],types$f=[{name:"Config",type:{kind:"struct",fields:[{name:"admin",type:"pubkey"},{name:"pending_admin",type:"pubkey"},{name:"current_epoch",type:"u64"},{name:"current_validators",type:{vec:{array:["u8",64]}}},{name:"current_weights",type:{vec:"u64"}},{name:"current_weight_threshold",type:"u64"},{name:"current_height",type:"u64"}]}},{name:"OwnershipTransferInitiated",type:{kind:"struct",fields:[{name:"new_admin",type:"pubkey"}]}},{name:"OwnershipTransferred",type:{kind:"struct",fields:[{name:"new_admin",type:"pubkey"}]}},{name:"Session",type:{kind:"struct",fields:[{name:"epoch",type:"u64"},{name:"signed",type:{vec:"bool"}},{name:"weight",type:"u64"}]}},{name:"SessionCreated",type:{kind:"struct",fields:[{name:"hash",type:{array:["u8",32]}}]}},{name:"SessionFinalized",type:{kind:"struct",fields:[{name:"hash",type:{array:["u8",32]}}]}},{name:"SessionPayload",type:{kind:"struct",fields:[{name:"payload",type:"bytes"}]}},{name:"SessionPayloadChunkPosted",type:{kind:"struct",fields:[{name:"payload_hash",type:{array:["u8",32]}},{name:"payload_chunk",type:"bytes"}]}},{name:"SessionSignaturesAdded",type:{kind:"struct",fields:[{name:"hash",type:{array:["u8",32]}},{name:"signatures",type:{vec:{array:["u8",64]}}}]}},{name:"ValidatedPayload",type:{kind:"struct",fields:[]}},{name:"ValidatorSetUpdated",type:{kind:"struct",fields:[{name:"epoch",type:"u64"},{name:"payload_hash",type:{array:["u8",32]}},{name:"validators",type:{vec:{array:["u8",64]}}},{name:"weights",type:{vec:"u64"}},{name:"weight_threshold",type:"u64"}]}}],consortiumIdl={address:address$1,metadata:metadata$2,instructions:instructions$2,accounts:accounts$2,events:events$2,errors:errors$9,types:types$f},getConsortiumIdl=e=>{const t=getConfig(e);if(!t.consortium)throw new Error(`Consortium program not configured for env: ${e}`);const a={...consortiumIdl};return a.address=t.consortium,a},DEPOSIT_SELECTOR_V1=Buffer.from([206,37,231,194]),GMP_MESSAGE_V1_SELECTOR=Buffer.from([226,136,251,74]);function parseAssetRouterConfig(e){if(e.length<266)throw new Error(`Asset Router config account data too short: expected >= 266 bytes, got ${e.length}`);const a=new PublicKey$1(new Uint8Array(32)),s=e[104]!==0,u=new PublicKey$1(e.subarray(105,137)),l=new PublicKey$1(e.subarray(170,202)),p=l.equals(a)?null:l,m=new PublicKey$1(e.subarray(202,234)),g=m.equals(a)?null:m,b=new Uint8Array(e.subarray(234,266));return{paused:s,nativeMint:u,basculeProgramId:p,basculeGmpProgramId:g,ledgerChainId:b}}async function executeConsortiumSession(e){const{provider:t,connection:a,consortiumProgram:s,consortiumConfigPDA:u,sessionPDA:l,validatedPayloadPDA:p,payloadHashArray:m,params:g,debugLog:b}=e,v=await a.getAccountInfo(p),E=await a.getAccountInfo(l);if(b("Session PDA:",l.toBase58(),"exists:",!!E),b("ValidatedPayload PDA:",p.toBase58(),"exists:",!!v),v){b("ValidatedPayload exists — skipping all consortium steps");return}if(E)b("Session already exists, skipping create_session");else{b("Step 1: create_session...");const x=await s.methods.createSession(m).accounts({payer:t.publicKey,config:u,session:l,validatedPayload:p,systemProgram:SystemProgram.programId}).transaction();await sendAndConfirmTransaction({instruction:x,connection:a,provider:t,debugLabel:"Consortium create_session",skipPreflight:g.skipPreflight??!1}),b("create_session completed")}const M=E??await a.getAccountInfo(l);let k=!1;if(M&&M.data.length>=28){const A=20+M.data.readUInt32LE(16);M.data.length>=A+8&&(k=M.data.readBigUInt64LE(A)>0n)}if(k)b("Signatures already posted (weight > 0), skipping step 2");else{b("Step 2: post_session_signatures...");const{signatures:x,indices:A}=parseSignaturesFromProof(g.proofSignature);if(x.length===0||A.length===0)throw new Error("No valid signatures found in the proof");const O=x.map(z=>Array.from(z)),D=await s.methods.postSessionSignatures(m,O,A).accounts({payer:t.publicKey,config:u,session:l}).transaction();await sendAndConfirmTransaction({instruction:D,connection:a,provider:t,debugLabel:"Consortium post_session_signatures",skipPreflight:g.skipPreflight??!1}),b("post_session_signatures completed")}b("Step 3: finalize_session...");const P=await s.methods.finalizeSession(m).accounts({payer:t.publicKey,config:u,session:l,validatedPayload:p,systemProgram:SystemProgram.programId}).transaction();await sendAndConfirmTransaction({instruction:P,connection:a,provider:t,debugLabel:"Consortium finalize_session",skipPreflight:g.skipPreflight??!1}),b("finalize_session completed — ValidatedPayload created")}function computePayloadHash(e){return Buffer.from(sha256Exports.sha256(e),"hex")}function computeDepositIdFromPayload(e){const t=Buffer.alloc(32,0),a=Buffer.from([3,83,79,76]),s=Buffer.concat([t,a,e.subarray(36,68),e.subarray(68,76),e.subarray(76,108),e.subarray(108,112)]),u=sha3Exports.keccak256(new Uint8Array(s));return new Uint8Array(Buffer.from(u,"hex"))}async function claimBtcbFromPayload(e){const{provider:t,connection:a,params:s,payloadBytes:u,payloadHash:l,payloadHashArray:p,assetRouterProgram:m,assetRouterProgramId:g,assetRouterConfigPDA:b,tokenAuthorityPDA:v,validatedPayloadPDA:E,arConfig:M,debugLog:k}=e,[P]=PublicKey$1.findProgramAddressSync([Buffer.from("deposit_payload_spent"),l],g);if(await a.getAccountInfo(P))return k("Payload already spent (tokens already minted)"),ALREADY_MINTED_TX_HASH;await executeConsortiumSession(e);const A=M.nativeMint;k("Native mint from config:",A.toBase58());const O=s.basculeProgram?new PublicKey$1(s.basculeProgram):M.basculeProgramId;k("Bascule program:",(O==null?void 0:O.toBase58())??"not set");const D=await a.getAccountInfo(A);if(!D)throw new Error(`Mint account not found: ${A.toBase58()}`);const z=D.owner;k("Token program:",z.toBase58());const C=await getMint(a,A,void 0,z);if(!C.mintAuthority)throw new Error("Mint has no mint authority");const L=C.mintAuthority;k("Mint authority:",L.toBase58());const j=new PublicKey$1(u.subarray(36,68));k("Recipient from payload:",j.toBase58()),await createOrGetAssociatedTokenAccount({provider:t,connection:a,ownerAddress:j.toBase58(),mintAddress:A.toBase58()}),k("mint_from_payload...");const V=Array.from(u),K=await m.methods.mintFromPayload(V,p).accounts({payer:t.publicKey,config:b,tokenProgram:z,recipient:j,mint:A,mintAuthority:L,tokenAuthority:v,consortiumValidatedPayload:E,depositPayloadSpent:P,systemProgram:SystemProgram.programId}).instruction();if(O){const[q]=PublicKey$1.findProgramAddressSync([Buffer.from("bascule_validator")],g),[R]=PublicKey$1.findProgramAddressSync([Buffer.from("bascule")],O),y=computeDepositIdFromPayload(u);k("Deposit ID:",Buffer.from(y).toString("hex"));const[S]=PublicKey$1.findProgramAddressSync([Buffer.from("deposit"),y],O);k("Bascule validator PDA:",q.toBase58()),k("Bascule data PDA:",R.toBase58()),k("Bascule deposit PDA:",S.toBase58()),K.keys.push({pubkey:q,isSigner:!1,isWritable:!1},{pubkey:O,isSigner:!1,isWritable:!1},{pubkey:R,isSigner:!1,isWritable:!0},{pubkey:S,isSigner:!1,isWritable:!0})}k("Instruction account count:",K.keys.length);const{signature:F}=await sendAndConfirmTransaction({instruction:K,connection:a,provider:t,debugLabel:"Asset Router mint_from_payload",skipPreflight:s.skipPreflight??!1});return k("BTC.B mint successful! Signature:",F),F}const address="LomJw912MoUd7iiAesTQAgz1paLcTqi6ndG3w3pnKH9",metadata$1={name:"mailbox",version:"0.1.0",spec:"0.1.0",description:"The mailbox program supporting the Lombard Ledger General Message Passing protocol"},instructions$1=[{name:"accept_ownership",discriminator:[172,23,43,13,238,213,85,150],accounts:[{name:"payer",signer:!0},{name:"config",writable:!0,pda:{seeds:[{kind:"const",value:[109,97,105,108,98,111,120,95,99,111,110,102,105,103]}]}}],args:[]},{name:"deliver_message",discriminator:[42,2,185,166,108,228,198,252],accounts:[{name:"deliverer",writable:!0,signer:!0},{name:"config",pda:{seeds:[{kind:"const",value:[109,97,105,108,98,111,120,95,99,111,110,102,105,103]}]}},{name:"message_info",writable:!0,pda:{seeds:[{kind:"const",value:[109,101,115,115,97,103,101]},{kind:"arg",path:"payload_hash"}]}},{name:"inbound_message_path"},{name:"consortium_payload"},{name:"consortium_validated_payload",docs:["check that the consortium program has validated the payload"]},{name:"system_program",address:"11111111111111111111111111111111"}],args:[{name:"payload_hash",type:{array:["u8",32]}}]},{name:"disable_inbound_message_path",discriminator:[242,182,70,210,26,33,33,78],accounts:[{name:"admin",writable:!0,signer:!0},{name:"config",writable:!0,pda:{seeds:[{kind:"const",value:[109,97,105,108,98,111,120,95,99,111,110,102,105,103]}]}},{name:"inbound_message_path",writable:!0,pda:{seeds:[{kind:"const",value:[105,110,98,111,117,110,100,95,109,101,115,115,97,103,101,95,112,97,116,104]},{kind:"arg",path:"source_chain_id"}]}},{name:"system_program",address:"11111111111111111111111111111111"}],args:[{name:"source_chain_id",type:{array:["u8",32]}}]},{name:"disable_outbound_message_path",discriminator:[57,102,27,150,123,166,38,158],accounts:[{name:"admin",writable:!0,signer:!0},{name:"config",writable:!0,pda:{seeds:[{kind:"const",value:[109,97,105,108,98,111,120,95,99,111,110,102,105,103]}]}},{name:"outbound_message_path",writable:!0,pda:{seeds:[{kind:"const",value:[111,117,116,98,111,117,110,100,95,109,101,115,115,97,103,101,95,112,97,116,104]},{kind:"arg",path:"destination_chain_id"}]}},{name:"system_program",address:"11111111111111111111111111111111"}],args:[{name:"destination_chain_id",type:{array:["u8",32]}}]},{name:"enable_inbound_message_path",discriminator:[178,201,217,113,101,52,44,127],accounts:[{name:"admin",writable:!0,signer:!0},{name:"config",writable:!0,pda:{seeds:[{kind:"const",value:[109,97,105,108,98,111,120,95,99,111,110,102,105,103]}]}},{name:"inbound_message_path",writable:!0,pda:{seeds:[{kind:"const",value:[105,110,98,111,117,110,100,95,109,101,115,115,97,103,101,95,112,97,116,104]},{kind:"arg",path:"source_chain_id"}]}},{name:"system_program",address:"11111111111111111111111111111111"}],args:[{name:"source_chain_id",type:{array:["u8",32]}},{name:"source_mailbox_address",type:{array:["u8",32]}}]},{name:"enable_outbound_message_path",discriminator:[86,206,215,63,209,234,166,13],accounts:[{name:"admin",writable:!0,signer:!0},{name:"config",writable:!0,pda:{seeds:[{kind:"const",value:[109,97,105,108,98,111,120,95,99,111,110,102,105,103]}]}},{name:"outbound_message_path",writable:!0,pda:{seeds:[{kind:"const",value:[111,117,116,98,111,117,110,100,95,109,101,115,115,97,103,101,95,112,97,116,104]},{kind:"arg",path:"destination_chain_id"}]}},{name:"system_program",address:"11111111111111111111111111111111"}],args:[{name:"destination_chain_id",type:{array:["u8",32]}}]},{name:"grant_account_role",discriminator:[166,105,3,49,241,233,230,157],accounts:[{name:"admin",writable:!0,signer:!0},{name:"config",pda:{seeds:[{kind:"const",value:[109,97,105,108,98,111,120,95,99,111,110,102,105,103]}]}},{name:"account_roles",writable:!0,pda:{seeds:[{kind:"const",value:[97,99,99,111,117,110,116,95,114,111,108,101,115]},{kind:"arg",path:"account"}]}},{name:"system_program",address:"11111111111111111111111111111111"}],args:[{name:"account",type:"pubkey"},{name:"account_role",type:{defined:{name:"AccountRole"}}}]},{name:"handle_message",discriminator:[91,215,39,71,108,217,94,89],accounts:[{name:"handler",writable:!0,signer:!0},{name:"config",pda:{seeds:[{kind:"const",value:[109,97,105,108,98,111,120,95,99,111,110,102,105,103]}]}},{name:"message_info",writable:!0,pda:{seeds:[{kind:"const",value:[109,101,115,115,97,103,101]},{kind:"arg",path:"payload_hash"}]}},{name:"recipient_program"}],args:[{name:"payload_hash",type:{array:["u8",32]}}],returns:"bytes"},{name:"initialize",discriminator:[175,175,109,31,13,152,155,237],accounts:[{name:"deployer",writable:!0,signer:!0},{name:"program_data",pda:{seeds:[{kind:"const",value:[5,18,233,90,194,193,50,141,128,131,75,41,96,114,108,90,65,124,105,212,246,221,111,217,24,17,69,69,125,185,67,232]}],program:{kind:"const",value:[2,168,246,145,78,136,161,176,226,16,21,62,247,99,174,43,0,194,185,61,22,193,36,210,192,83,122,16,4,128,0,0]}}},{name:"config",writable:!0,pda:{seeds:[{kind:"const",value:[109,97,105,108,98,111,120,95,99,111,110,102,105,103]}]}},{name:"system_program",address:"11111111111111111111111111111111"}],args:[{name:"admin",type:"pubkey"},{name:"consortium",type:"pubkey"},{name:"treasury",type:"pubkey"},{name:"default_max_payload_size",type:"u32"},{name:"fee_per_byte",type:"u64"}]},{name:"pause",discriminator:[211,22,221,251,74,121,193,47],accounts:[{name:"pauser",signer:!0},{name:"config",writable:!0,pda:{seeds:[{kind:"const",value:[109,97,105,108,98,111,120,95,99,111,110,102,105,103]}]}},{name:"account_roles",pda:{seeds:[{kind:"const",value:[97,99,99,111,117,110,116,95,114,111,108,101,115]},{kind:"account",path:"pauser"}]}}],args:[]},{name:"revoke_account_roles",discriminator:[88,183,44,133,35,162,233,161],accounts:[{name:"admin",writable:!0,signer:!0},{name:"config",writable:!0,pda:{seeds:[{kind:"const",value:[109,97,105,108,98,111,120,95,99,111,110,102,105,103]}]}},{name:"account_roles",writable:!0,pda:{seeds:[{kind:"const",value:[97,99,99,111,117,110,116,95,114,111,108,101,115]},{kind:"arg",path:"account"}]}},{name:"system_program",address:"11111111111111111111111111111111"}],args:[{name:"account",type:"pubkey"}]},{name:"send_message",discriminator:[57,40,34,178,189,10,65,26],accounts:[{name:"fee_payer",writable:!0,signer:!0},{name:"sender_authority",signer:!0},{name:"config",writable:!0,pda:{seeds:[{kind:"const",value:[109,97,105,108,98,111,120,95,99,111,110,102,105,103]}]}},{name:"outbound_message_path"},{name:"outbound_message",writable:!0,pda:{seeds:[{kind:"const",value:[111,117,116,98,111,117,110,100,95,109,101,115,115,97,103,101]},{kind:"account",path:"config.global_nonce",account:"Config"}]}},{name:"system_program",address:"11111111111111111111111111111111"},{name:"treasury",writable:!0,optional:!0},{name:"sender_config",optional:!0,pda:{seeds:[{kind:"const",value:[115,101,110,100,101,114,95,99,111,110,102,105,103]},{kind:"account",path:"sender_authority.owner"}]}}],args:[{name:"message_body",type:"bytes"},{name:"recipient",type:{array:["u8",32]}},{name:"destination_caller",type:{option:{array:["u8",32]}}},{name:"fee_override",type:"u64"}],returns:{defined:{name:"SendResult"}}},{name:"set_sender_config",discriminator:[131,205,139,221,93,186,118,146],accounts:[{name:"admin",writable:!0,signer:!0},{name:"config",writable:!0,pda:{seeds:[{kind:"const",value:[109,97,105,108,98,111,120,95,99,111,110,102,105,103]}]}},{name:"sender_config",writable:!0,pda:{seeds:[{kind:"const",value:[115,101,110,100,101,114,95,99,111,110,102,105,103]},{kind:"arg",path:"sender_program"}]}},{name:"system_program",address:"11111111111111111111111111111111"}],args:[{name:"sender_program",type:"pubkey"},{name:"max_payload_size",type:"u32"},{name:"fee_disabled",type:"bool"}]},{name:"transfer_ownership",discriminator:[65,177,215,73,53,45,99,47],accounts:[{name:"admin",signer:!0},{name:"config",writable:!0,pda:{seeds:[{kind:"const",value:[109,97,105,108,98,111,120,95,99,111,110,102,105,103]}]}}],args:[{name:"new_admin",type:"pubkey"}]},{name:"unpause",discriminator:[169,144,4,38,10,141,188,255],accounts:[{name:"admin",signer:!0},{name:"config",writable:!0,pda:{seeds:[{kind:"const",value:[109,97,105,108,98,111,120,95,99,111,110,102,105,103]}]}}],args:[]},{name:"unset_sender_config",discriminator:[10,248,20,172,121,20,97,86],accounts:[{name:"admin",writable:!0,signer:!0},{name:"config",writable:!0,pda:{seeds:[{kind:"const",value:[109,97,105,108,98,111,120,95,99,111,110,102,105,103]}]}},{name:"sender_config",writable:!0,pda:{seeds:[{kind:"const",value:[115,101,110,100,101,114,95,99,111,110,102,105,103]},{kind:"arg",path:"sender_program"}]}},{name:"system_program",address:"11111111111111111111111111111111"}],args:[{name:"sender_program",type:"pubkey"}]},{name:"update_config",discriminator:[29,158,252,191,10,83,219,99],accounts:[{name:"admin",signer:!0},{name:"config",writable:!0,pda:{seeds:[{kind:"const",value:[109,97,105,108,98,111,120,95,99,111,110,102,105,103]}]}}],args:[{name:"default_max_payload_size",type:{option:"u32"}},{name:"fee_per_byte",type:{option:"u64"}}]}],accounts$1=[{name:"AccountRoles",discriminator:[25,230,229,88,31,135,177,142]},{name:"Config",discriminator:[155,12,170,224,30,250,204,130]},{name:"InboundMessagePath",discriminator:[183,101,83,26,169,221,228,25]},{name:"MessageV1Info",discriminator:[113,42,224,190,65,33,233,178]},{name:"OutboundMessage",discriminator:[166,139,82,146,129,32,235,239]},{name:"OutboundMessagePath",discriminator:[58,4,19,64,132,71,137,190]},{name:"SenderConfig",discriminator:[0,241,220,77,167,128,79,152]},{name:"SessionPayload",discriminator:[33,115,191,63,132,170,233,102]},{name:"ValidatedPayload",discriminator:[129,8,149,193,22,240,127,36]}],events$1=[{name:"AccountRoleGranted",discriminator:[156,201,253,16,204,194,211,121]},{name:"AccountRolesRevoked",discriminator:[193,45,230,213,88,196,24,174]},{name:"ConfigUpdated",discriminator:[40,241,230,122,11,19,198,194]},{name:"InboundMessagePathStatusChanged",discriminator:[63,7,150,75,197,37,39,168]},{name:"MessageDelivered",discriminator:[206,54,202,10,22,64,153,18]},{name:"MessageHandled",discriminator:[241,188,96,32,20,92,213,251]},{name:"MessageSent",discriminator:[116,70,224,76,128,28,110,55]},{name:"OutboundMessagePathStatusChanged",discriminator:[106,217,122,13,125,45,243,216]},{name:"OwnershipTransferInitiated",discriminator:[181,32,40,60,60,64,235,29]},{name:"OwnershipTransferred",discriminator:[172,61,205,183,250,50,38,98]},{name:"PauserAdded",discriminator:[231,206,109,54,239,205,234,248]},{name:"PauserRemoved",discriminator:[224,157,132,185,123,96,72,220]},{name:"ProgramPaused",discriminator:[247,9,236,38,105,35,112,115]},{name:"SenderConfigSet",discriminator:[48,41,191,185,220,186,107,160]},{name:"SenderConfigUnset",discriminator:[27,176,73,192,0,73,206,177]},{name:"TreasuryChanged",discriminator:[252,2,55,56,106,205,227,47]}],errors$8=[{code:6e3,name:"Unauthorized",msg:"Unauthorized function call"},{code:6001,name:"AccountRoleAlreadyGranted",msg:"Account role already granted"},{code:6002,name:"Paused",msg:"Program is paused"},{code:6003,name:"NotPaused",msg:"Program is not paused"},{code:6004,name:"InvalidPayloadLength",msg:"Invalid payload size"},{code:6005,name:"PayloadTooLarge",msg:"Payload too large"},{code:6006,name:"InvalidPayloadSelector",msg:"Invalid payload selector"},{code:6007,name:"InvalidMessagePath",msg:"Invalid message path"},{code:6008,name:"PayloadNotFound",msg:"Payload not found"},{code:6009,name:"PayloadAlreadyHandled",msg:"Payload already handled"},{code:6010,name:"InvalidPayloadState",msg:"Invalid payload state"},{code:6011,name:"InsufficientFunds",msg:"Insufficient funds for fee"},{code:6012,name:"InvalidFeeConfiguration",msg:"Invalid fee configuration"},{code:6013,name:"InvalidAdmin",msg:"Invalid admin"},{code:6014,name:"InvalidPauser",msg:"Invalid pauser"},{code:6015,name:"PauserAlreadyExists",msg:"Pauser already exists"},{code:6016,name:"PauserNotFound",msg:"Pauser not found"},{code:6017,name:"InvalidNonce",msg:"Invalid nonce"},{code:6018,name:"BufferIOError",msg:"Buffer IO error"},{code:6019,name:"TreasuryMismatch",msg:"treasury mismatch"},{code:6020,name:"PublicSendWithFeeDisabled",msg:"public send with fee disabled"},{code:6021,name:"InvalidDestinationCaller",msg:"Invalid destination caller"}],types$e=[{name:"AccountRole",type:{kind:"enum",variants:[{name:"Pauser"},{name:"None"}]}},{name:"AccountRoleGranted",type:{kind:"struct",fields:[{name:"account",type:"pubkey"},{name:"account_role",type:{defined:{name:"AccountRole"}}}]}},{name:"AccountRoles",type:{kind:"struct",fields:[{name:"roles",type:{vec:{defined:{name:"AccountRole"}}}}]}},{name:"AccountRolesRevoked",type:{kind:"struct",fields:[{name:"account",type:"pubkey"}]}},{name:"Config",type:{kind:"struct",fields:[{name:"admin",type:"pubkey"},{name:"pending_admin",type:"pubkey"},{name:"treasury",type:"pubkey"},{name:"paused",type:"bool"},{name:"consortium",type:"pubkey"},{name:"global_nonce",type:"u64"},{name:"default_max_payload_size",type:"u32"},{name:"fee_per_byte",type:"u64"}]}},{name:"ConfigUpdated",type:{kind:"struct",fields:[{name:"admin",type:"pubkey"},{name:"default_max_payload_size",type:"u32"},{name:"fee_per_byte",type:"u64"}]}},{name:"InboundMessagePath",type:{kind:"struct",fields:[{name:"identifier",type:{array:["u8",32]}},{name:"source_mailbox_address",type:{array:["u8",32]}},{name:"source_chain_id",type:{array:["u8",32]}}]}},{name:"InboundMessagePathStatusChanged",type:{kind:"struct",fields:[{name:"identifier",type:{array:["u8",32]}},{name:"source_mailbox_address",type:{array:["u8",32]}},{name:"source_chain_id",type:{array:["u8",32]}},{name:"enabled",type:"bool"}]}},{name:"MessageDelivered",type:{kind:"struct",fields:[{name:"payload_hash",type:{array:["u8",32]}},{name:"source_mailbox_address",type:{array:["u8",32]}},{name:"source_chain_id",type:{array:["u8",32]}}]}},{name:"MessageHandled",type:{kind:"struct",fields:[{name:"payload_hash",type:{array:["u8",32]}}]}},{name:"MessageSent",type:{kind:"struct",fields:[{name:"nonce",type:"u64"},{name:"raw_payload",type:"bytes"}]}},{name:"MessageState",docs:["The state of a payload including a GMP message"],type:{kind:"enum",variants:[{name:"Unknown"},{name:"Delivered"},{name:"Handled"}]}},{name:"MessageV1",type:{kind:"struct",fields:[{name:"message_path_identifier",type:{array:["u8",32]}},{name:"nonce",type:"u64"},{name:"sender",type:{array:["u8",32]}},{name:"recipient",type:{array:["u8",32]}},{name:"destination_caller",type:{option:{array:["u8",32]}}},{name:"body",type:"bytes"}]}},{name:"MessageV1Info",type:{kind:"struct",fields:[{name:"status",type:{defined:{name:"MessageState"}}},{name:"message",type:{defined:{name:"MessageV1"}}}]}},{name:"OutboundMessage",type:{kind:"struct",fields:[{defined:{name:"MessageV1"}}]}},{name:"OutboundMessagePath",type:{kind:"struct",fields:[{name:"identifier",type:{array:["u8",32]}},{name:"destination_chain_id",type:{array:["u8",32]}}]}},{name:"OutboundMessagePathStatusChanged",type:{kind:"struct",fields:[{name:"identifier",type:{array:["u8",32]}},{name:"destination_chain_id",type:{array:["u8",32]}},{name:"enabled",type:"bool"}]}},{name:"OwnershipTransferInitiated",type:{kind:"struct",fields:[{name:"new_admin",type:"pubkey"}]}},{name:"OwnershipTransferred",type:{kind:"struct",fields:[{name:"new_admin",type:"pubkey"}]}},{name:"PauserAdded",type:{kind:"struct",fields:[{name:"pauser",type:"pubkey"}]}},{name:"PauserRemoved",type:{kind:"struct",fields:[{name:"pauser",type:"pubkey"}]}},{name:"ProgramPaused",type:{kind:"struct",fields:[{name:"paused",type:"bool"}]}},{name:"SendResult",type:{kind:"struct",fields:[{name:"nonce",type:"u64"},{name:"payload_hash",type:{array:["u8",32]}}]}},{name:"SenderConfig",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"max_payload_size",type:"u32"},{name:"fee_disabled",type:"bool"}]}},{name:"SenderConfigSet",type:{kind:"struct",fields:[{name:"sender_program",type:"pubkey"},{name:"max_payload_size",type:"u32"},{name:"fee_disabled",type:"bool"}]}},{name:"SenderConfigUnset",type:{kind:"struct",fields:[{name:"sender_program",type:"pubkey"}]}},{name:"SessionPayload",type:{kind:"struct",fields:[{name:"payload",type:"bytes"}]}},{name:"TreasuryChanged",type:{kind:"struct",fields:[{name:"old_treasury",type:"pubkey"},{name:"new_treasury",type:"pubkey"}]}},{name:"ValidatedPayload",type:{kind:"struct",fields:[]}}],mailboxIdl={address,metadata:metadata$1,instructions:instructions$1,accounts:accounts$1,events:events$1,errors:errors$8,types:types$e},getMailboxIdl=e=>{const t=getConfig(e);if(!t.mailbox)throw new Error(`Mailbox program not configured for env: ${e}`);const a={...mailboxIdl};return a.address=t.mailbox,a};async function claimLbtcGmp(e){const{provider:t,connection:a,params:s,config:u,payloadBytes:l,payloadHash:p,payloadHashArray:m,payer:g,assetRouterProgramId:b,consortiumProgramId:v,consortiumProgram:E,assetRouterConfigPDA:M,tokenAuthorityPDA:k,validatedPayloadPDA:P,arConfig:x,debugLog:A}=e;if(l.length<296)throw new Error(`LBTC GMP payload too short: expected >= 296 bytes, got ${l.length}`);const[O]=PublicKey$1.findProgramAddressSync([Buffer.from("message_handled"),p],b);if(await a.getAccountInfo(O))return A("Message already handled (LBTC already minted)"),ALREADY_MINTED_TX_HASH;await executeConsortiumSession(e);const[z]=PublicKey$1.findProgramAddressSync([Buffer.from("session_payload"),g.toBytes(),p],v);if(await a.getAccountInfo(z))A("Session payload already exists, skipping post_session_payload");else{A("post_session_payload...");const Z=await E.methods.postSessionPayload(m,Buffer.from(l),l.length).accounts({payer:t.publicKey,sessionPayload:z,systemProgram:SystemProgram.programId}).transaction();await sendAndConfirmTransaction({instruction:Z,connection:a,provider:t,debugLabel:"Consortium post_session_payload",skipPreflight:s.skipPreflight??!1}),A("post_session_payload completed")}if(!u.mailbox)throw new Error(`Mailbox program not configured for network: ${s.network}`);const L=new PublicKey$1(u.mailbox),j=new Program$1(getMailboxIdl(e.env),e.assetRouterProgram.provider),[V]=PublicKey$1.findProgramAddressSync([Buffer.from("mailbox_config")],L),[K]=PublicKey$1.findProgramAddressSync([Buffer.from("message"),p],L);if(!u.ledgerChainId)throw new Error(`Ledger chain ID not configured for network: ${s.network}`);const F=Buffer.from(u.ledgerChainId,"hex");A("Ledger chain ID:",u.ledgerChainId);const[q]=PublicKey$1.findProgramAddressSync([Buffer.from("inbound_message_path"),F],L);if(A("Inbound message path PDA:",q.toBase58()),await a.getAccountInfo(K))A("Message already delivered, skipping deliver_message");else{A("deliver_message...");const Z=await j.methods.deliverMessage(m).accounts({deliverer:t.publicKey,config:V,messageInfo:K,inboundMessagePath:q,consortiumPayload:z,consortiumValidatedPayload:P,systemProgram:SystemProgram.programId}).transaction();await sendAndConfirmTransaction({instruction:Z,connection:a,provider:t,debugLabel:"Mailbox deliver_message",skipPreflight:s.skipPreflight??!1}),A("deliver_message completed")}A("handle_message...");const y=new PublicKey$1(l.subarray(100,132)),S=new PublicKey$1(l.subarray(232,264)),w=new PublicKey$1(l.subarray(264,296));A("GMP recipient (asset router):",y.toBase58()),A("Mint:",S.toBase58()),A("Token recipient:",w.toBase58());const T=await a.getAccountInfo(S);if(!T)throw new Error(`Mint account not found: ${S.toBase58()}`);const U=T.owner,N=await getMint(a,S,void 0,U);if(!N.mintAuthority)throw new Error("Mint has no mint authority");const $=N.mintAuthority;await createOrGetAssociatedTokenAccount({provider:t,connection:a,ownerAddress:w.toBase58(),mintAddress:S.toBase58()});const I=await j.methods.handleMessage(m).accounts({handler:t.publicKey,config:V,messageInfo:K,recipientProgram:y}).instruction();I.keys.push({pubkey:g,isSigner:!0,isWritable:!0},{pubkey:M,isSigner:!1,isWritable:!1},{pubkey:O,isSigner:!1,isWritable:!0},{pubkey:U,isSigner:!1,isWritable:!1},{pubkey:w,isSigner:!1,isWritable:!0},{pubkey:S,isSigner:!1,isWritable:!0},{pubkey:$,isSigner:!1,isWritable:!1},{pubkey:k,isSigner:!1,isWritable:!1},{pubkey:SystemProgram.programId,isSigner:!1,isWritable:!1});const _=x.basculeGmpProgramId;if(_){A("Bascule GMP program:",_.toBase58());const[Z]=PublicKey$1.findProgramAddressSync([Buffer.from("bascule_validator")],b),[W]=PublicKey$1.findProgramAddressSync([Buffer.from("bascule_gmp_config")],_),[G]=PublicKey$1.findProgramAddressSync([Buffer.from("account_roles"),W.toBytes()],_),[J]=PublicKey$1.findProgramAddressSync([Buffer.from("mint_payload"),p],_);I.keys.push({pubkey:Z,isSigner:!1,isWritable:!1},{pubkey:_,isSigner:!1,isWritable:!1},{pubkey:W,isSigner:!1,isWritable:!1},{pubkey:G,isSigner:!1,isWritable:!1},{pubkey:J,isSigner:!1,isWritable:!0})}else{A("Bascule GMP not enabled, adding placeholder accounts");for(let Z=0;Z<5;Z++)I.keys.push({pubkey:b,isSigner:!1,isWritable:!1})}A("handle_message account count:",I.keys.length);const{signature:H}=await sendAndConfirmTransaction({instruction:I,connection:a,provider:t,debugLabel:"Mailbox handle_message",skipPreflight:s.skipPreflight??!1});return A("LBTC mint successful! Signature:",H),H}async function claimToken(e,t){const{network:a,env:s,rawPayload:u,rpcUrl:l,debug:p=!1}=t,{debugLog:m,printLogs:g}=createDebugLogger({debug:p});try{if(!e.publicKey)throw new Error("Wallet not found");const b=s??networkToEnv[a],v=getConfig(b);if(!v.assetRouter)throw new Error(`Asset Router not configured for network: ${a}`);if(!v.consortium)throw new Error(`Consortium not configured for network: ${a}`);const E=getConnection(a,l),M={publicKey:new PublicKey$1(e.publicKey),signTransaction:e.signTransaction,signAllTransactions:e.signAllTransactions},k=new AnchorProvider(E,M,{});setProvider(k);const P=new Program$1(getAssetRouterIdl(b),k),x=new Program$1(getConsortiumIdl(b),k),A=new PublicKey$1(v.assetRouter),O=new PublicKey$1(v.consortium),D=Buffer.from(u,"hex");if(D.length<4)throw new Error(`Payload too short: ${D.length} bytes`);const z=D.subarray(0,4),C=computePayloadHash(D),L=Array.from(C);m("Payload length:",D.length),m("Selector:",Buffer.from(z).toString("hex")),m("Payload hash:",C.toString("hex"));const j=new PublicKey$1(e.publicKey),[V]=PublicKey$1.findProgramAddressSync([Buffer.from("consortium_config")],O),[K]=PublicKey$1.findProgramAddressSync([Buffer.from("session"),j.toBytes(),C],O),[F]=PublicKey$1.findProgramAddressSync([Buffer.from("validated_payload"),C],O),[q]=PublicKey$1.findProgramAddressSync([Buffer.from("asset_router_config")],A),[R]=PublicKey$1.findProgramAddressSync([Buffer.from("token_authority")],A);m("Asset Router program ID:",A.toBase58()),m("Asset Router config PDA:",q.toBase58());const y=await E.getAccountInfo(q);if(m("Config account exists:",!!y),!y)throw new Error(`Asset Router config account not found at ${q.toBase58()} (program: ${A.toBase58()})`);const S=parseAssetRouterConfig(y.data);if(S.paused)throw new Error("Asset Router contract is paused");const w={provider:e,params:t,env:b,config:v,connection:E,payloadBytes:D,payloadHash:C,payloadHashArray:L,payer:j,assetRouterProgramId:A,consortiumProgramId:O,assetRouterProgram:P,consortiumProgram:x,consortiumConfigPDA:V,sessionPDA:K,validatedPayloadPDA:F,assetRouterConfigPDA:q,tokenAuthorityPDA:R,arConfig:S,debugLog:m};if(z.equals(DEPOSIT_SELECTOR_V1))return m("Flow: BTC.B direct mint"),await claimBtcbFromPayload(w);if(z.equals(GMP_MESSAGE_V1_SELECTOR))return m("Flow: LBTC GMP via Mailbox"),await claimLbtcGmp(w);throw new Error(`Unknown payload selector: ${Buffer.from(z).toString("hex")}`)}catch(b){throw b instanceof Error&&(b.message=`${b.message}
|
|
117
|
+
${b()}`),v}}const r={prod:"prod"};let n=null;const o=async()=>{try{const e=await Promise.resolve().then(()=>require("./index3.cjs")).then(a=>a.index),t=await Promise.resolve().then(()=>index);try{e.initEccLib(t)}catch(a){if(!/already initialized/i.test(String(a)))throw a}return e}catch(e){throw n=null,new Error(`Failed to initialize bitcoinjs-lib: ${e instanceof Error?e.message:String(e)}. Ensure bitcoinjs-lib and @bitcoinerlab/secp256k1 peer dependencies are installed.`)}},c=async()=>(n||(n=o()),n);async function d$1(e,t=r.prod){const a=await c();return`0x${a.address.toOutputScript(e,t===r.prod?a.networks.bitcoin:a.networks.testnet).toString("hex")}`}async function unstakeLBTC(e,t){try{const{amount:a,btcAddress:s,network:u,rpcUrl:l}=t,p=networkToEnv[u]||DEFAULT_ENV,{treasuryAddress:m,lbtcTokenMint:g}=getConfig(p),b=getConnection(u,l);if(!e.publicKey)throw SolanaSdkError.wrap(new Error("Wallet not connected"),ErrorCode$1.UNSTAKE_REJECTED,"Please connect your Solana wallet and ensure it is on the correct network.");const v=getLbtcIdl(u),E=new Program$1(v,{connection:b}),M=Buffer.from((await d$1(s,p)).replace(/^0x/,""),"hex"),k=new PublicKey$1(g),[P]=PublicKey$1.findProgramAddressSync([Buffer.from("lbtc_config")],new PublicKey$1(E.programId));if(!await b.getAccountInfo(P))throw SolanaSdkError.wrap(new Error(`LBTC program config not found on ${u}`),ErrorCode$1.UNSTAKE_REJECTED,`LBTC unstaking is not available on ${u}. The program may not be deployed or configured.`);const A=await createOrGetAssociatedTokenAccount({provider:e,connection:b,ownerAddress:e.publicKey.toBase58(),mintAddress:k.toBase58()}),O=await b.getTokenAccountBalance(new PublicKey$1(A)),D=BigInt(O.value.amount),z=BigInt(a);if(D<z)throw SolanaSdkError.wrap(new Error("Insufficient LBTC balance"),ErrorCode$1.UNSTAKE_REJECTED,`Insufficient LBTC balance. You have ${O.value.uiAmountString} LBTC but requested to unstake ${Number(a)/1e8} LBTC.`);const C=await E.methods.redeem(M,new BN$1(a)).accounts({payer:e.publicKey,holder:A,config:P,tokenProgram:TOKEN_PROGRAM_ID$1,mint:k,treasury:m}).transaction(),{signature:L}=await sendAndConfirmTransaction({instruction:C,connection:b,provider:e,debugLabel:"Unstake LBTC"});return L}catch(a){throw SolanaSdkError.wrap(a,ErrorCode$1.UNSTAKE_REJECTED,"LBTC unstake operation failed")}}const address$2="LomVyJDZ91jeVbNnTupJXKJTQFakJVMc87CmwDHYt95",metadata$3={name:"asset_router",version:"0.1.0",spec:"0.1.0",description:"The asset router contract providing token management in the Ledger v2 design."},instructions$3=JSON.parse('[{"name":"accept_ownership","discriminator":[172,23,43,13,238,213,85,150],"accounts":[{"name":"payer","signer":true},{"name":"config","writable":true,"pda":{"seeds":[{"kind":"const","value":[97,115,115,101,116,95,114,111,117,116,101,114,95,99,111,110,102,105,103]}]}}],"args":[]},{"name":"change_mint_auth","discriminator":[98,59,17,150,173,118,36,101],"accounts":[{"name":"payer","signer":true},{"name":"config","pda":{"seeds":[{"kind":"const","value":[97,115,115,101,116,95,114,111,117,116,101,114,95,99,111,110,102,105,103]}]}},{"name":"mint"},{"name":"current_auth","docs":["current authority is passed the function call will fail."]},{"name":"token_program"},{"name":"token_authority","pda":{"seeds":[{"kind":"const","value":[116,111,107,101,110,95,97,117,116,104,111,114,105,116,121]}]}}],"args":[{"name":"new_auth","type":"pubkey"}]},{"name":"deposit","discriminator":[242,35,198,137,82,225,242,182],"accounts":[{"name":"payer","writable":true,"signer":true},{"name":"config","pda":{"seeds":[{"kind":"const","value":[97,115,115,101,116,95,114,111,117,116,101,114,95,99,111,110,102,105,103]}]}},{"name":"token_route","pda":{"seeds":[{"kind":"const","value":[116,111,107,101,110,95,114,111,117,116,101]},{"kind":"const","value":[2,41,105,152,166,248,226,167,132,219,93,159,149,225,143,194,63,112,68,26,16,57,68,104,1,8,152,121,176,140,126,240]},{"kind":"account","path":"mint"},{"kind":"arg","path":"to_lchain_id"},{"kind":"arg","path":"to_token_address"}]}},{"name":"payer_token_account","writable":true},{"name":"token_program"},{"name":"mint","writable":true},{"name":"messaging_authority","pda":{"seeds":[{"kind":"const","value":[109,101,115,115,97,103,105,110,103,95,97,117,116,104,111,114,105,116,121]}]}},{"name":"mailbox","address":"LomJw912MoUd7iiAesTQAgz1paLcTqi6ndG3w3pnKH9"},{"name":"mailbox_config","writable":true},{"name":"outbound_message_path"},{"name":"outbound_message","writable":true},{"name":"sender_config","optional":true},{"name":"treasury","writable":true,"optional":true},{"name":"system_program","address":"11111111111111111111111111111111"}],"args":[{"name":"to_lchain_id","type":{"array":["u8",32]}},{"name":"to_token_address","type":{"array":["u8",32]}},{"name":"recipient","type":{"array":["u8",32]}},{"name":"amount","type":"u64"}]},{"name":"disable_bascule","discriminator":[57,164,60,76,249,175,240,28],"accounts":[{"name":"payer","signer":true},{"name":"config","writable":true,"pda":{"seeds":[{"kind":"const","value":[97,115,115,101,116,95,114,111,117,116,101,114,95,99,111,110,102,105,103]}]}}],"args":[]},{"name":"enable_bascule","discriminator":[42,184,103,55,45,231,145,180],"accounts":[{"name":"payer","signer":true},{"name":"config","writable":true,"pda":{"seeds":[{"kind":"const","value":[97,115,115,101,116,95,114,111,117,116,101,114,95,99,111,110,102,105,103]}]}}],"args":[]},{"name":"gmp_receive","discriminator":[75,72,219,230,85,3,24,44],"accounts":[{"name":"message_info","signer":true},{"name":"handler","writable":true,"signer":true},{"name":"config","pda":{"seeds":[{"kind":"const","value":[97,115,115,101,116,95,114,111,117,116,101,114,95,99,111,110,102,105,103]}]}},{"name":"message_handled","writable":true,"pda":{"seeds":[{"kind":"const","value":[109,101,115,115,97,103,101,95,104,97,110,100,108,101,100]},{"kind":"arg","path":"payload_hash"}]}},{"name":"token_program"},{"name":"recipient","writable":true},{"name":"mint"},{"name":"mint_authority","docs":["instruction will fail."]},{"name":"token_authority","pda":{"seeds":[{"kind":"const","value":[116,111,107,101,110,95,97,117,116,104,111,114,105,116,121]}]}},{"name":"system_program","address":"11111111111111111111111111111111"}],"args":[{"name":"payload_hash","type":{"array":["u8",32]}}]},{"name":"grant_account_role","discriminator":[166,105,3,49,241,233,230,157],"accounts":[{"name":"admin","writable":true,"signer":true},{"name":"config","pda":{"seeds":[{"kind":"const","value":[97,115,115,101,116,95,114,111,117,116,101,114,95,99,111,110,102,105,103]}]}},{"name":"account_roles","writable":true,"pda":{"seeds":[{"kind":"const","value":[97,99,99,111,117,110,116,95,114,111,108,101,115]},{"kind":"arg","path":"account"}]}},{"name":"system_program","address":"11111111111111111111111111111111"}],"args":[{"name":"account","type":"pubkey"},{"name":"account_role","type":{"defined":{"name":"AccountRole"}}}]},{"name":"initialize","discriminator":[175,175,109,31,13,152,155,237],"accounts":[{"name":"deployer","writable":true,"signer":true},{"name":"program_data","pda":{"seeds":[{"kind":"const","value":[5,18,234,77,227,43,95,61,233,140,62,195,41,12,98,129,217,16,222,194,22,133,11,224,186,228,222,153,255,78,217,216]}],"program":{"kind":"const","value":[2,168,246,145,78,136,161,176,226,16,21,62,247,99,174,43,0,194,185,61,22,193,36,210,192,83,122,16,4,128,0,0]}}},{"name":"config","writable":true,"pda":{"seeds":[{"kind":"const","value":[97,115,115,101,116,95,114,111,117,116,101,114,95,99,111,110,102,105,103]}]}},{"name":"messaging_authority","writable":true,"pda":{"seeds":[{"kind":"const","value":[109,101,115,115,97,103,105,110,103,95,97,117,116,104,111,114,105,116,121]}]}},{"name":"system_program","address":"11111111111111111111111111111111"}],"args":[{"name":"config","type":{"defined":{"name":"Config"}}}]},{"name":"mint_from_payload","discriminator":[78,44,95,232,161,7,56,178],"accounts":[{"name":"payer","writable":true,"signer":true},{"name":"config","pda":{"seeds":[{"kind":"const","value":[97,115,115,101,116,95,114,111,117,116,101,114,95,99,111,110,102,105,103]}]}},{"name":"token_program"},{"name":"recipient","writable":true},{"name":"mint","writable":true},{"name":"mint_authority","docs":["instruction will fail."]},{"name":"token_authority","pda":{"seeds":[{"kind":"const","value":[116,111,107,101,110,95,97,117,116,104,111,114,105,116,121]}]}},{"name":"consortium_validated_payload","docs":["check that the consortium program has validated the payload"]},{"name":"deposit_payload_spent","writable":true},{"name":"system_program","address":"11111111111111111111111111111111"}],"args":[{"name":"mint_payload","type":{"array":["u8",196]}},{"name":"mint_payload_hash","type":{"array":["u8",32]}}]},{"name":"mint_with_fee","discriminator":[142,93,70,12,187,19,19,154],"accounts":[{"name":"payer","writable":true,"signer":true},{"name":"config","pda":{"seeds":[{"kind":"const","value":[97,115,115,101,116,95,114,111,117,116,101,114,95,99,111,110,102,105,103]}]}},{"name":"account_roles","pda":{"seeds":[{"kind":"const","value":[97,99,99,111,117,110,116,95,114,111,108,101,115]},{"kind":"account","path":"payer"}]}},{"name":"token_config","pda":{"seeds":[{"kind":"const","value":[116,111,107,101,110,95,99,111,110,102,105,103]},{"kind":"account","path":"mint"}]}},{"name":"token_program"},{"name":"recipient","writable":true},{"name":"mint","writable":true},{"name":"mint_authority","docs":["instruction will fail."]},{"name":"token_authority","pda":{"seeds":[{"kind":"const","value":[116,111,107,101,110,95,97,117,116,104,111,114,105,116,121]}]}},{"name":"consortium_validated_payload","docs":["check that the consortium program has validated the payload"]},{"name":"deposit_payload_spent","writable":true},{"name":"system_program","address":"11111111111111111111111111111111"},{"name":"treasury_token_account","writable":true},{"name":"instruction_sysvar","address":"Sysvar1nstructions1111111111111111111111111"}],"args":[{"name":"mint_payload","type":{"array":["u8",196]}},{"name":"mint_payload_hash","type":{"array":["u8",32]}},{"name":"fee_payload","type":{"array":["u8",52]}},{"name":"fee_signature","type":{"array":["u8",64]}}]},{"name":"pause","discriminator":[211,22,221,251,74,121,193,47],"accounts":[{"name":"payer","signer":true},{"name":"config","writable":true,"pda":{"seeds":[{"kind":"const","value":[97,115,115,101,116,95,114,111,117,116,101,114,95,99,111,110,102,105,103]}]}},{"name":"account_roles","writable":true,"pda":{"seeds":[{"kind":"const","value":[97,99,99,111,117,110,116,95,114,111,108,101,115]},{"kind":"account","path":"payer"}]}}],"args":[]},{"name":"redeem","discriminator":[184,12,86,149,70,196,97,225],"accounts":[{"name":"payer","writable":true,"signer":true},{"name":"config","pda":{"seeds":[{"kind":"const","value":[97,115,115,101,116,95,114,111,117,116,101,114,95,99,111,110,102,105,103]}]}},{"name":"token_config","pda":{"seeds":[{"kind":"const","value":[116,111,107,101,110,95,99,111,110,102,105,103]},{"kind":"account","path":"mint"}]}},{"name":"token_route","pda":{"seeds":[{"kind":"const","value":[116,111,107,101,110,95,114,111,117,116,101]},{"kind":"const","value":[2,41,105,152,166,248,226,167,132,219,93,159,149,225,143,194,63,112,68,26,16,57,68,104,1,8,152,121,176,140,126,240]},{"kind":"account","path":"mint"},{"kind":"arg","path":"to_lchain_id"},{"kind":"arg","path":"to_token_address"}]}},{"name":"payer_token_account","writable":true},{"name":"token_program"},{"name":"mint","writable":true},{"name":"treasury_token_account","writable":true},{"name":"messaging_authority","pda":{"seeds":[{"kind":"const","value":[109,101,115,115,97,103,105,110,103,95,97,117,116,104,111,114,105,116,121]}]}},{"name":"mailbox","address":"LomJw912MoUd7iiAesTQAgz1paLcTqi6ndG3w3pnKH9"},{"name":"mailbox_config","writable":true},{"name":"outbound_message_path"},{"name":"outbound_message","writable":true},{"name":"sender_config","optional":true},{"name":"treasury","writable":true,"optional":true},{"name":"system_program","address":"11111111111111111111111111111111"}],"args":[{"name":"to_lchain_id","type":{"array":["u8",32]}},{"name":"to_token_address","type":{"array":["u8",32]}},{"name":"recipient","type":{"array":["u8",32]}},{"name":"amount","type":"u64"}]},{"name":"redeem_for_btc","discriminator":[122,146,65,202,104,10,146,122],"accounts":[{"name":"payer","writable":true,"signer":true},{"name":"config","pda":{"seeds":[{"kind":"const","value":[97,115,115,101,116,95,114,111,117,116,101,114,95,99,111,110,102,105,103]}]}},{"name":"token_config","pda":{"seeds":[{"kind":"const","value":[116,111,107,101,110,95,99,111,110,102,105,103]},{"kind":"account","path":"mint"}]}},{"name":"token_route"},{"name":"payer_token_account","writable":true},{"name":"token_program"},{"name":"mint","writable":true},{"name":"treasury_token_account","writable":true},{"name":"messaging_authority","pda":{"seeds":[{"kind":"const","value":[109,101,115,115,97,103,105,110,103,95,97,117,116,104,111,114,105,116,121]}]}},{"name":"mailbox","address":"LomJw912MoUd7iiAesTQAgz1paLcTqi6ndG3w3pnKH9"},{"name":"mailbox_config","writable":true},{"name":"outbound_message_path"},{"name":"outbound_message","writable":true},{"name":"sender_config","optional":true},{"name":"treasury","writable":true,"optional":true},{"name":"system_program","address":"11111111111111111111111111111111"}],"args":[{"name":"script_pubkey","type":"bytes"},{"name":"amount","type":"u64"}]},{"name":"revoke_account_roles","discriminator":[88,183,44,133,35,162,233,161],"accounts":[{"name":"admin","writable":true,"signer":true},{"name":"config","writable":true,"pda":{"seeds":[{"kind":"const","value":[97,115,115,101,116,95,114,111,117,116,101,114,95,99,111,110,102,105,103]}]}},{"name":"account_roles","writable":true,"pda":{"seeds":[{"kind":"const","value":[97,99,99,111,117,110,116,95,114,111,108,101,115]},{"kind":"arg","path":"account"}]}},{"name":"system_program","address":"11111111111111111111111111111111"}],"args":[{"name":"account","type":"pubkey"}]},{"name":"set_mint_fee","discriminator":[52,77,178,201,245,51,250,139],"accounts":[{"name":"operator","signer":true},{"name":"account_roles","writable":true,"pda":{"seeds":[{"kind":"const","value":[97,99,99,111,117,110,116,95,114,111,108,101,115]},{"kind":"account","path":"operator"}]}},{"name":"token_config","writable":true}],"args":[{"name":"mint_fee","type":"u64"}]},{"name":"set_token_config","discriminator":[158,231,35,78,98,32,210,196],"accounts":[{"name":"payer","writable":true,"signer":true},{"name":"config","writable":true,"pda":{"seeds":[{"kind":"const","value":[97,115,115,101,116,95,114,111,117,116,101,114,95,99,111,110,102,105,103]}]}},{"name":"token_config","writable":true,"pda":{"seeds":[{"kind":"const","value":[116,111,107,101,110,95,99,111,110,102,105,103]},{"kind":"arg","path":"mint_address"}]}},{"name":"system_program","address":"11111111111111111111111111111111"}],"args":[{"name":"mint_address","type":"pubkey"},{"name":"token_config","type":{"defined":{"name":"TokenConfig"}}}]},{"name":"set_token_route","discriminator":[90,100,101,223,118,150,79,221],"accounts":[{"name":"payer","writable":true,"signer":true},{"name":"config","writable":true,"pda":{"seeds":[{"kind":"const","value":[97,115,115,101,116,95,114,111,117,116,101,114,95,99,111,110,102,105,103]}]}},{"name":"token_route","writable":true,"pda":{"seeds":[{"kind":"const","value":[116,111,107,101,110,95,114,111,117,116,101]},{"kind":"arg","path":"from_chain_id"},{"kind":"arg","path":"from_token_address"},{"kind":"arg","path":"to_chain_id"},{"kind":"arg","path":"to_token_address"}]}},{"name":"system_program","address":"11111111111111111111111111111111"}],"args":[{"name":"from_chain_id","type":{"array":["u8",32]}},{"name":"from_token_address","type":{"array":["u8",32]}},{"name":"to_chain_id","type":{"array":["u8",32]}},{"name":"to_token_address","type":{"array":["u8",32]}},{"name":"token_route_type","type":{"defined":{"name":"TokenRouteType"}}}]},{"name":"set_treasury","discriminator":[57,97,196,95,195,206,106,136],"accounts":[{"name":"payer","signer":true},{"name":"config","writable":true,"pda":{"seeds":[{"kind":"const","value":[97,115,115,101,116,95,114,111,117,116,101,114,95,99,111,110,102,105,103]}]}}],"args":[{"name":"treasury","type":"pubkey"}]},{"name":"transfer_ownership","discriminator":[65,177,215,73,53,45,99,47],"accounts":[{"name":"payer","signer":true},{"name":"config","writable":true,"pda":{"seeds":[{"kind":"const","value":[97,115,115,101,116,95,114,111,117,116,101,114,95,99,111,110,102,105,103]}]}}],"args":[{"name":"new_admin","type":"pubkey"}]},{"name":"unpause","discriminator":[169,144,4,38,10,141,188,255],"accounts":[{"name":"payer","signer":true},{"name":"config","writable":true,"pda":{"seeds":[{"kind":"const","value":[97,115,115,101,116,95,114,111,117,116,101,114,95,99,111,110,102,105,103]}]}}],"args":[]},{"name":"unset_token_route","discriminator":[213,165,89,45,165,194,51,165],"accounts":[{"name":"payer","writable":true,"signer":true},{"name":"config","writable":true,"pda":{"seeds":[{"kind":"const","value":[97,115,115,101,116,95,114,111,117,116,101,114,95,99,111,110,102,105,103]}]}},{"name":"token_route","writable":true,"pda":{"seeds":[{"kind":"const","value":[116,111,107,101,110,95,114,111,117,116,101]},{"kind":"arg","path":"from_chain_id"},{"kind":"arg","path":"from_token_address"},{"kind":"arg","path":"to_chain_id"},{"kind":"arg","path":"to_token_address"}]}},{"name":"system_program","address":"11111111111111111111111111111111"}],"args":[{"name":"from_chain_id","type":{"array":["u8",32]}},{"name":"from_token_address","type":{"array":["u8",32]}},{"name":"to_chain_id","type":{"array":["u8",32]}},{"name":"to_token_address","type":{"array":["u8",32]}}]}]'),accounts$3=[{name:"AccountRoles",discriminator:[25,230,229,88,31,135,177,142]},{name:"Config",discriminator:[155,12,170,224,30,250,204,130]},{name:"DepositPayloadSpent",discriminator:[44,125,36,131,19,161,75,25]},{name:"MessageHandled",discriminator:[157,239,26,195,144,53,19,109]},{name:"MessageV1Info",discriminator:[113,42,224,190,65,33,233,178]},{name:"MessagingAuthority",discriminator:[149,84,21,225,138,238,79,217]},{name:"TokenConfig",discriminator:[92,73,255,43,107,51,117,101]},{name:"TokenRoute",discriminator:[126,114,64,197,31,189,252,132]},{name:"ValidatedPayload",discriminator:[129,8,149,193,22,240,127,36]}],events$3=[{name:"AccountRoleGranted",discriminator:[156,201,253,16,204,194,211,121]},{name:"AccountRolesRevoked",discriminator:[193,45,230,213,88,196,24,174]},{name:"BasculeEnabled",discriminator:[84,223,73,187,19,208,205,93]},{name:"MintAuthorityUpdated",discriminator:[251,56,50,229,68,227,225,225]},{name:"MintFeeSet",discriminator:[19,160,65,66,12,237,135,42]},{name:"MintProofConsumed",discriminator:[39,6,40,221,150,118,32,59]},{name:"OwnershipTransferInitiated",discriminator:[181,32,40,60,60,64,235,29]},{name:"OwnershipTransferred",discriminator:[172,61,205,183,250,50,38,98]},{name:"ProgramPaused",discriminator:[247,9,236,38,105,35,112,115]},{name:"TokenConfigSet",discriminator:[48,183,41,161,246,12,242,8]},{name:"TokenRouteSet",discriminator:[4,31,245,62,151,52,49,202]},{name:"TokenRouteUnset",discriminator:[42,85,28,244,48,106,76,33]},{name:"TreasuryChanged",discriminator:[252,2,55,56,106,205,227,47]}],errors$a=[{code:6e3,name:"Unauthorized",msg:"Unauthorized function call"},{code:6001,name:"AccountRoleAlreadyGranted",msg:"Account role already granted"},{code:6002,name:"RecipientMismatch",msg:"Mismatch between mint payload and passed account"},{code:6003,name:"InvalidChainID",msg:"Invalid chain ID"},{code:6004,name:"BasculeNotAvailable",msg:"Bascule not available"},{code:6005,name:"InvalidTokenAddress",msg:"Invalid token address"},{code:6006,name:"MintPayloadUsed",msg:"Mint payload already used"},{code:6007,name:"MintPayloadHashMismatch",msg:"Passed mint payload hash does not match computed hash"},{code:6008,name:"WithdrawalsDisabled",msg:"Withdrawals are disabled"},{code:6009,name:"FeeGTEAmount",msg:"Fee is greater than or equal to amount"},{code:6010,name:"FeeApprovalExpired",msg:"Fee approval expired"},{code:6011,name:"UnsupportedRedeemAddress",msg:"Script pubkey is unsupported"},{code:6012,name:"AmountBelowDustLimit",msg:"Redeemed amount is below the BTC dust limit"},{code:6013,name:"InvalidFeeAction",msg:"Invalid fee action"},{code:6014,name:"InvalidFeeSignature",msg:"Fee signature invalid"},{code:6015,name:"InvalidFeePayloadLength",msg:"Invalid fee payload length"},{code:6016,name:"Paused",msg:"LBTC contract is paused"},{code:6017,name:"NotPaused",msg:"LBTC contract is not paused"},{code:6018,name:"InvalidVerifyingcontract",msg:"Invalid verifying contract"},{code:6019,name:"FeeTooHigh",msg:"Selected fee is too high"},{code:6020,name:"InvalidPayloadLength",msg:"Invalid payload length"},{code:6021,name:"InvalidPayloadSelector",msg:"Invalid payload selector"},{code:6022,name:"BufferIOError",msg:"Buffer IO error"},{code:6023,name:"InvalidMessageLength",msg:"Invalid message length"},{code:6024,name:"InvalidMessageSelector",msg:"Invalid message selector"},{code:6025,name:"InvalidMessageSender",msg:"Invalid message sender"},{code:6026,name:"ZeroAmount",msg:"Zero amount"},{code:6027,name:"InvalidTokenRouteType",msg:"Invalid token route type"},{code:6028,name:"ProgramError",msg:"Program error"},{code:6029,name:"TreasuryTokenAccountNotFound",msg:"Treasury token account not found"},{code:6030,name:"MissingEd25519Instruction",msg:"Missing Ed25519 instruction"},{code:6031,name:"InvalidEd25519Instruction",msg:"Invalid Ed25519 instruction"},{code:6032,name:"InvalidPublicKey",msg:"Invalid public key"},{code:6033,name:"InvalidMessage",msg:"Invalid message"},{code:6034,name:"InvalidSignature",msg:"Invalid signature"}],types$g=[{name:"AccountRole",type:{kind:"enum",variants:[{name:"Operator"},{name:"Pauser"},{name:"Claimer"}]}},{name:"AccountRoleGranted",type:{kind:"struct",fields:[{name:"account",type:"pubkey"},{name:"account_role",type:{defined:{name:"AccountRole"}}}]}},{name:"AccountRoles",type:{kind:"struct",fields:[{name:"roles",type:{vec:{defined:{name:"AccountRole"}}}}]}},{name:"AccountRolesRevoked",type:{kind:"struct",fields:[{name:"account",type:"pubkey"}]}},{name:"BasculeEnabled",type:{kind:"struct",fields:[{name:"enabled",type:"bool"}]}},{name:"Config",type:{kind:"struct",fields:[{name:"admin",type:"pubkey"},{name:"pending_admin",type:"pubkey"},{name:"treasury",type:"pubkey"},{name:"paused",type:"bool"},{name:"native_mint",type:"pubkey"},{name:"mailbox",type:"pubkey"},{name:"bascule_enabled",type:"bool"},{name:"ledger_lchain_id",type:{array:["u8",32]}},{name:"bitcoin_lchain_id",type:{array:["u8",32]}}]}},{name:"DepositPayloadSpent",type:{kind:"struct",fields:[]}},{name:"MessageHandled",type:{kind:"struct",fields:[]}},{name:"MessageState",docs:["The state of a payload including a GMP message"],type:{kind:"enum",variants:[{name:"Unknown"},{name:"Delivered"},{name:"Handled"}]}},{name:"MessageV1",type:{kind:"struct",fields:[{name:"message_path_identifier",type:{array:["u8",32]}},{name:"nonce",type:"u64"},{name:"sender",type:{array:["u8",32]}},{name:"recipient",type:{array:["u8",32]}},{name:"destination_caller",type:{option:{array:["u8",32]}}},{name:"body",type:"bytes"}]}},{name:"MessageV1Info",type:{kind:"struct",fields:[{name:"status",type:{defined:{name:"MessageState"}}},{name:"message",type:{defined:{name:"MessageV1"}}}]}},{name:"MessagingAuthority",type:{kind:"struct",fields:[]}},{name:"MintAuthorityUpdated",type:{kind:"struct",fields:[{name:"new_auth",type:"pubkey"}]}},{name:"MintFeeSet",type:{kind:"struct",fields:[{name:"mint_fee",type:"u64"}]}},{name:"MintProofConsumed",type:{kind:"struct",fields:[{name:"recipient",type:"pubkey"},{name:"payload_hash",type:{array:["u8",32]}}]}},{name:"OwnershipTransferInitiated",type:{kind:"struct",fields:[{name:"new_admin",type:"pubkey"}]}},{name:"OwnershipTransferred",type:{kind:"struct",fields:[{name:"new_admin",type:"pubkey"}]}},{name:"ProgramPaused",type:{kind:"struct",fields:[{name:"paused",type:"bool"}]}},{name:"TokenConfig",type:{kind:"struct",fields:[{name:"redeem_fee",type:"u64"},{name:"redeem_for_btc_min_amount",type:"u64"},{name:"max_mint_commission",type:"u64"},{name:"to_native_commission",type:"u64"},{name:"ledger_redeem_handler",type:{array:["u8",32]}}]}},{name:"TokenConfigSet",type:{kind:"struct",fields:[{name:"config",type:{defined:{name:"TokenConfig"}}}]}},{name:"TokenRoute",type:{kind:"struct",fields:[{name:"route_type",type:{defined:{name:"TokenRouteType"}}}]}},{name:"TokenRouteSet",type:{kind:"struct",fields:[{name:"from_chain_id",type:{array:["u8",32]}},{name:"from_token_address",type:{array:["u8",32]}},{name:"to_chain_id",type:{array:["u8",32]}},{name:"to_token_address",type:{array:["u8",32]}},{name:"token_route_type",type:{defined:{name:"TokenRouteType"}}}]}},{name:"TokenRouteType",type:{kind:"enum",variants:[{name:"Deposit"},{name:"Redeem"}]}},{name:"TokenRouteUnset",type:{kind:"struct",fields:[{name:"from_chain_id",type:{array:["u8",32]}},{name:"from_token_address",type:{array:["u8",32]}},{name:"to_chain_id",type:{array:["u8",32]}},{name:"to_token_address",type:{array:["u8",32]}},{name:"token_route_type",type:{defined:{name:"TokenRouteType"}}}]}},{name:"TreasuryChanged",type:{kind:"struct",fields:[{name:"address",type:"pubkey"}]}},{name:"ValidatedPayload",type:{kind:"struct",fields:[]}}],assetRouterIdl={address:address$2,metadata:metadata$3,instructions:instructions$3,accounts:accounts$3,events:events$3,errors:errors$a,types:types$g},getAssetRouterIdl=e=>{const t=getConfig(e);if(!t.assetRouter)throw new Error(`Asset Router program not configured for env: ${e}`);const a={...assetRouterIdl};return a.address=t.assetRouter,a},address$1="LomCbo8K5ar4kVpqoGGktE8WemHfGz84V8aH8Y1iGxd",metadata$2={name:"consortium",version:"0.1.0",spec:"0.1.0",description:"The consortium program in charge of validating payloads from the Lombard Ledger notarization system"},instructions$2=[{name:"accept_ownership",discriminator:[172,23,43,13,238,213,85,150],accounts:[{name:"payer",signer:!0},{name:"config",writable:!0,pda:{seeds:[{kind:"const",value:[99,111,110,115,111,114,116,105,117,109,95,99,111,110,102,105,103]}]}}],args:[]},{name:"close_session_for_epoch",discriminator:[129,95,13,91,244,182,162,64],accounts:[{name:"payer",writable:!0,signer:!0},{name:"config",writable:!0,pda:{seeds:[{kind:"const",value:[99,111,110,115,111,114,116,105,117,109,95,99,111,110,102,105,103]}]}},{name:"session",writable:!0},{name:"system_program",address:"11111111111111111111111111111111"}],args:[{name:"payload_hash",type:{array:["u8",32]}},{name:"epoch",type:"u64"}]},{name:"create_session",discriminator:[242,193,143,179,150,25,122,227],accounts:[{name:"payer",writable:!0,signer:!0},{name:"config",pda:{seeds:[{kind:"const",value:[99,111,110,115,111,114,116,105,117,109,95,99,111,110,102,105,103]}]}},{name:"session",writable:!0},{name:"validated_payload"},{name:"system_program",address:"11111111111111111111111111111111"}],args:[{name:"payload_hash",type:{array:["u8",32]}}]},{name:"finalize_session",discriminator:[34,148,144,47,37,130,206,161],accounts:[{name:"payer",writable:!0,signer:!0},{name:"config",writable:!0,pda:{seeds:[{kind:"const",value:[99,111,110,115,111,114,116,105,117,109,95,99,111,110,102,105,103]}]}},{name:"session",writable:!0},{name:"validated_payload",writable:!0},{name:"system_program",address:"11111111111111111111111111111111"}],args:[{name:"payload_hash",type:{array:["u8",32]}}]},{name:"initialize",discriminator:[175,175,109,31,13,152,155,237],accounts:[{name:"deployer",writable:!0,signer:!0},{name:"program_data",pda:{seeds:[{kind:"const",value:[23,67,123,218,38,158,2,95,105,116,48,75,136,37,103,238,87,155,138,65,243,223,127,72,135,203,123,2,120,52,22,54]}],program:{kind:"const",value:[2,168,246,145,78,136,161,176,226,16,21,62,247,99,174,43,0,194,185,61,22,193,36,210,192,83,122,16,4,128,0,0]}}},{name:"config",writable:!0,pda:{seeds:[{kind:"const",value:[99,111,110,115,111,114,116,105,117,109,95,99,111,110,102,105,103]}]}},{name:"system_program",address:"11111111111111111111111111111111"}],args:[{name:"admin",type:"pubkey"}]},{name:"post_session_payload",discriminator:[151,42,50,73,194,109,25,199],accounts:[{name:"payer",writable:!0,signer:!0},{name:"session_payload",writable:!0},{name:"system_program",address:"11111111111111111111111111111111"}],args:[{name:"payload_hash",type:{array:["u8",32]}},{name:"payload_chunk",type:"bytes"},{name:"payload_length",type:"u32"}]},{name:"post_session_signatures",discriminator:[154,155,118,64,171,114,246,45],accounts:[{name:"payer",writable:!0,signer:!0},{name:"config",pda:{seeds:[{kind:"const",value:[99,111,110,115,111,114,116,105,117,109,95,99,111,110,102,105,103]}]}},{name:"session",writable:!0},{name:"system_program",address:"11111111111111111111111111111111"}],args:[{name:"payload_hash",type:{array:["u8",32]}},{name:"signatures",type:{vec:{array:["u8",64]}}},{name:"indices",type:{vec:"u64"}}]},{name:"set_initial_valset",discriminator:[171,69,132,141,206,84,175,115],accounts:[{name:"admin",writable:!0,signer:!0},{name:"config",writable:!0,pda:{seeds:[{kind:"const",value:[99,111,110,115,111,114,116,105,117,109,95,99,111,110,102,105,103]}]}}],args:[{name:"payload",type:"bytes"}]},{name:"set_initial_valset_from_session",discriminator:[47,155,97,15,186,115,157,213],accounts:[{name:"admin",writable:!0,signer:!0},{name:"config",writable:!0,pda:{seeds:[{kind:"const",value:[99,111,110,115,111,114,116,105,117,109,95,99,111,110,102,105,103]}]}},{name:"session_payload",writable:!0}],args:[{name:"payload_hash",type:{array:["u8",32]}}]},{name:"transfer_ownership",discriminator:[65,177,215,73,53,45,99,47],accounts:[{name:"payer",signer:!0},{name:"config",writable:!0,pda:{seeds:[{kind:"const",value:[99,111,110,115,111,114,116,105,117,109,95,99,111,110,102,105,103]}]}}],args:[{name:"new_admin",type:"pubkey"}]},{name:"update_valset",discriminator:[31,154,103,219,117,16,212,162],accounts:[{name:"payer",writable:!0,signer:!0},{name:"config",writable:!0,pda:{seeds:[{kind:"const",value:[99,111,110,115,111,114,116,105,117,109,95,99,111,110,102,105,103]}]}},{name:"validated_payload"},{name:"session_payload",writable:!0}],args:[{name:"payload_hash",type:{array:["u8",32]}}]}],accounts$2=[{name:"Config",discriminator:[155,12,170,224,30,250,204,130]},{name:"Session",discriminator:[243,81,72,115,214,188,72,144]},{name:"SessionPayload",discriminator:[33,115,191,63,132,170,233,102]},{name:"ValidatedPayload",discriminator:[129,8,149,193,22,240,127,36]}],events$2=[{name:"OwnershipTransferInitiated",discriminator:[181,32,40,60,60,64,235,29]},{name:"OwnershipTransferred",discriminator:[172,61,205,183,250,50,38,98]},{name:"SessionCreated",discriminator:[107,111,254,25,21,122,220,225]},{name:"SessionFinalized",discriminator:[33,12,242,91,206,42,163,235]},{name:"SessionPayloadChunkPosted",discriminator:[32,54,237,154,192,9,225,122]},{name:"SessionSignaturesAdded",discriminator:[135,184,98,71,244,44,30,32]},{name:"ValidatorSetUpdated",discriminator:[234,43,30,48,204,242,119,118]}],errors$9=[{code:6e3,name:"Unauthorized",msg:"Unauthorized function call"},{code:6001,name:"NotEnoughSignatures",msg:"Not enough signatures"},{code:6002,name:"LeftoverData",msg:"Leftover data in payload"},{code:6003,name:"ValidatorSetAlreadySet",msg:"Validator set already set"},{code:6004,name:"OutdatedEpoch",msg:"Outdated epoch"},{code:6005,name:"NotConsecutiveEpoch",msg:"No consecutive epoch"},{code:6006,name:"NotIncrementingHeight",msg:"Not incrementing height"},{code:6007,name:"NoValidatorSet",msg:"No validator set exists"},{code:6008,name:"ValidatorSetSizeTooBig",msg:"Validator set size too big"},{code:6009,name:"ValidatorSetSizeTooSmall",msg:"Validator set size too small"},{code:6010,name:"InvalidWeightThreshold",msg:"Invalid weight threshold"},{code:6011,name:"ValidatorsAndWeightsMismatch",msg:"Mismatch between validators length and weights length"},{code:6012,name:"ZeroWeight",msg:"Weight for validator is zero"},{code:6013,name:"WeightsBelowThreshold",msg:"Sum of weights is below the threshold"},{code:6014,name:"SignaturesIndicesMismatch",msg:"Mismatch between signatures and indices length"},{code:6015,name:"WrongPayloadSelector",msg:"Wrong selector of session payload"},{code:6016,name:"InvalidPayloadLength",msg:"Invalid session payload length"},{code:6017,name:"InvalidValidatorPubkeyLength",msg:"Invalid validator pubkey length"},{code:6018,name:"BufferIOError",msg:"Buffer IO error"},{code:6019,name:"EmptyPayloadChunk",msg:"Empty payload chunk"},{code:6020,name:"SessionPayloadHashMismatch",msg:"Session payload hash mismatch"},{code:6021,name:"ValidatedPayloadAlreadyExists",msg:"Validated payload account already exists"},{code:6022,name:"ValidatedPayloadNotEmpty",msg:"Validated payload not empty"}],types$f=[{name:"Config",type:{kind:"struct",fields:[{name:"admin",type:"pubkey"},{name:"pending_admin",type:"pubkey"},{name:"current_epoch",type:"u64"},{name:"current_validators",type:{vec:{array:["u8",64]}}},{name:"current_weights",type:{vec:"u64"}},{name:"current_weight_threshold",type:"u64"},{name:"current_height",type:"u64"}]}},{name:"OwnershipTransferInitiated",type:{kind:"struct",fields:[{name:"new_admin",type:"pubkey"}]}},{name:"OwnershipTransferred",type:{kind:"struct",fields:[{name:"new_admin",type:"pubkey"}]}},{name:"Session",type:{kind:"struct",fields:[{name:"signed",type:{vec:"bool"}},{name:"weight",type:"u64"}]}},{name:"SessionCreated",type:{kind:"struct",fields:[{name:"hash",type:{array:["u8",32]}}]}},{name:"SessionFinalized",type:{kind:"struct",fields:[{name:"hash",type:{array:["u8",32]}}]}},{name:"SessionPayload",type:{kind:"struct",fields:[{name:"payload",type:"bytes"}]}},{name:"SessionPayloadChunkPosted",type:{kind:"struct",fields:[{name:"payload_hash",type:{array:["u8",32]}},{name:"payload_chunk",type:"bytes"}]}},{name:"SessionSignaturesAdded",type:{kind:"struct",fields:[{name:"hash",type:{array:["u8",32]}},{name:"signatures",type:{vec:{array:["u8",64]}}}]}},{name:"ValidatedPayload",type:{kind:"struct",fields:[]}},{name:"ValidatorSetUpdated",type:{kind:"struct",fields:[{name:"epoch",type:"u64"},{name:"payload_hash",type:{array:["u8",32]}},{name:"validators",type:{vec:{array:["u8",64]}}},{name:"weights",type:{vec:"u64"}},{name:"weight_threshold",type:"u64"}]}}],consortiumIdl={address:address$1,metadata:metadata$2,instructions:instructions$2,accounts:accounts$2,events:events$2,errors:errors$9,types:types$f},getConsortiumIdl=e=>{const t=getConfig(e);if(!t.consortium)throw new Error(`Consortium program not configured for env: ${e}`);const a={...consortiumIdl};return a.address=t.consortium,a},CONSORTIUM_SESSION_SEED=Buffer.from("session"),CONSORTIUM_CONFIG_SEED=Buffer.from("consortium_config"),DEPOSIT_SELECTOR_V1=Buffer.from([206,37,231,194]),GMP_MESSAGE_V1_SELECTOR=Buffer.from([226,136,251,74]);function getConsortiumConfigPDA(e){return PublicKey$1.findProgramAddressSync([CONSORTIUM_CONFIG_SEED],e)[0]}function getConsortiumSessionPDA(e,t,a,s){return PublicKey$1.findProgramAddressSync([CONSORTIUM_SESSION_SEED,s.toBuffer("be",8),t.toBytes(),a],e)[0]}async function fetchCurrentEpoch(e,t){const a=await e.getAccountInfo(t);if(!a)throw new Error(`Consortium config account not found at ${t.toBase58()}`);const s=72,u=s+8;if(a.data.length<u)throw new Error(`Consortium config data too short: expected >= ${u} bytes, got ${a.data.length}`);const l=a.data.readBigUInt64LE(s);return new BN$1(l.toString())}function parseAssetRouterConfig(e){if(e.length<266)throw new Error(`Asset Router config account data too short: expected >= 266 bytes, got ${e.length}`);const a=new PublicKey$1(new Uint8Array(32)),s=e[104]!==0,u=new PublicKey$1(e.subarray(105,137)),l=new PublicKey$1(e.subarray(170,202)),p=l.equals(a)?null:l,m=new PublicKey$1(e.subarray(202,234)),g=m.equals(a)?null:m,b=new Uint8Array(e.subarray(234,266));return{paused:s,nativeMint:u,basculeProgramId:p,basculeGmpProgramId:g,ledgerChainId:b}}async function executeConsortiumSession(e){const{provider:t,connection:a,consortiumProgram:s,consortiumConfigPDA:u,sessionPDA:l,validatedPayloadPDA:p,payloadHashArray:m,params:g,debugLog:b}=e,v=await a.getAccountInfo(p),E=await a.getAccountInfo(l);if(b("Session PDA:",l.toBase58(),"exists:",!!E),b("ValidatedPayload PDA:",p.toBase58(),"exists:",!!v),v){b("ValidatedPayload exists — skipping all consortium steps");return}if(E)b("Session already exists, skipping create_session");else{b("Step 1: create_session...");const x=await s.methods.createSession(m).accounts({payer:t.publicKey,config:u,session:l,validatedPayload:p,systemProgram:SystemProgram.programId}).transaction();await sendAndConfirmTransaction({instruction:x,connection:a,provider:t,debugLabel:"Consortium create_session",skipPreflight:g.skipPreflight??!1}),b("create_session completed")}const M=E??await a.getAccountInfo(l);let k=!1;if(M&&M.data.length>=28){const A=20+M.data.readUInt32LE(16);M.data.length>=A+8&&(k=M.data.readBigUInt64LE(A)>0n)}if(k)b("Signatures already posted (weight > 0), skipping step 2");else{b("Step 2: post_session_signatures...");const{signatures:x,indices:A}=parseSignaturesFromProof(g.proofSignature);if(x.length===0||A.length===0)throw new Error("No valid signatures found in the proof");const O=x.map(z=>Array.from(z)),D=await s.methods.postSessionSignatures(m,O,A).accounts({payer:t.publicKey,config:u,session:l}).transaction();await sendAndConfirmTransaction({instruction:D,connection:a,provider:t,debugLabel:"Consortium post_session_signatures",skipPreflight:g.skipPreflight??!1}),b("post_session_signatures completed")}b("Step 3: finalize_session...");const P=await s.methods.finalizeSession(m).accounts({payer:t.publicKey,config:u,session:l,validatedPayload:p,systemProgram:SystemProgram.programId}).transaction();await sendAndConfirmTransaction({instruction:P,connection:a,provider:t,debugLabel:"Consortium finalize_session",skipPreflight:g.skipPreflight??!1}),b("finalize_session completed — ValidatedPayload created")}function computePayloadHash(e){return Buffer.from(sha256Exports.sha256(e),"hex")}async function assertBtcbDepositRecipientMatchesWallet({payloadBytes:e,mint:t,tokenProgramId:a,recipientWallet:s}){const u=new PublicKey$1(e.subarray(36,68)),l=await getAssociatedTokenAddress(t,new PublicKey$1(s),!0,a,ASSOCIATED_TOKEN_PROGRAM_ID);if(!l.equals(u))throw new Error(`Recipient mismatch: payload expects token account ${u.toBase58()} but ATA for wallet ${s} is ${l.toBase58()}.`);return u}function computeDepositIdFromPayload(e){const t=Buffer.alloc(32,0),a=Buffer.from([3,83,79,76]),s=Buffer.concat([t,a,e.subarray(36,68),e.subarray(68,76),e.subarray(76,108),e.subarray(108,112)]),u=sha3Exports.keccak256(new Uint8Array(s));return new Uint8Array(Buffer.from(u,"hex"))}async function claimBtcbFromPayload(e){const{provider:t,connection:a,params:s,payloadBytes:u,payloadHash:l,payloadHashArray:p,assetRouterProgram:m,assetRouterProgramId:g,assetRouterConfigPDA:b,tokenAuthorityPDA:v,validatedPayloadPDA:E,arConfig:M,debugLog:k}=e,[P]=PublicKey$1.findProgramAddressSync([Buffer.from("deposit_payload_spent"),l],g);if(await a.getAccountInfo(P))return k("Payload already spent (tokens already minted)"),ALREADY_MINTED_TX_HASH;await executeConsortiumSession(e);const A=M.nativeMint;k("Native mint from config:",A.toBase58());const O=s.basculeProgram?new PublicKey$1(s.basculeProgram):M.basculeProgramId;k("Bascule program:",(O==null?void 0:O.toBase58())??"not set");const D=await a.getAccountInfo(A);if(!D)throw new Error(`Mint account not found: ${A.toBase58()}`);const z=D.owner;k("Token program:",z.toBase58());const C=await getMint(a,A,void 0,z);if(!C.mintAuthority)throw new Error("Mint has no mint authority");const L=C.mintAuthority;k("Mint authority:",L.toBase58());const j=await assertBtcbDepositRecipientMatchesWallet({payloadBytes:u,mint:A,tokenProgramId:z,recipientWallet:s.recipientAddress});k("Recipient token account:",j.toBase58()),await createOrGetAssociatedTokenAccount({provider:t,connection:a,ownerAddress:s.recipientAddress,mintAddress:A.toBase58()}),k("mint_from_payload...");const V=Array.from(u),K=await m.methods.mintFromPayload(V,p).accounts({payer:t.publicKey,config:b,tokenProgram:z,recipient:j,mint:A,mintAuthority:L,tokenAuthority:v,consortiumValidatedPayload:E,depositPayloadSpent:P,systemProgram:SystemProgram.programId}).instruction();if(O){const[q]=PublicKey$1.findProgramAddressSync([Buffer.from("bascule_validator")],g),[R]=PublicKey$1.findProgramAddressSync([Buffer.from("bascule")],O),y=computeDepositIdFromPayload(u);k("Deposit ID:",Buffer.from(y).toString("hex"));const[S]=PublicKey$1.findProgramAddressSync([Buffer.from("deposit"),y],O);k("Bascule validator PDA:",q.toBase58()),k("Bascule data PDA:",R.toBase58()),k("Bascule deposit PDA:",S.toBase58()),K.keys.push({pubkey:q,isSigner:!1,isWritable:!1},{pubkey:O,isSigner:!1,isWritable:!1},{pubkey:R,isSigner:!1,isWritable:!0},{pubkey:S,isSigner:!1,isWritable:!0})}k("Instruction account count:",K.keys.length);const{signature:F}=await sendAndConfirmTransaction({instruction:K,connection:a,provider:t,debugLabel:"Asset Router mint_from_payload",skipPreflight:s.skipPreflight??!1});return k("BTC.B mint successful! Signature:",F),F}const address="LomJw912MoUd7iiAesTQAgz1paLcTqi6ndG3w3pnKH9",metadata$1={name:"mailbox",version:"0.1.0",spec:"0.1.0",description:"The mailbox program supporting the Lombard Ledger General Message Passing protocol"},instructions$1=[{name:"accept_ownership",discriminator:[172,23,43,13,238,213,85,150],accounts:[{name:"payer",signer:!0},{name:"config",writable:!0,pda:{seeds:[{kind:"const",value:[109,97,105,108,98,111,120,95,99,111,110,102,105,103]}]}}],args:[]},{name:"deliver_message",discriminator:[42,2,185,166,108,228,198,252],accounts:[{name:"deliverer",writable:!0,signer:!0},{name:"config",pda:{seeds:[{kind:"const",value:[109,97,105,108,98,111,120,95,99,111,110,102,105,103]}]}},{name:"message_info",writable:!0,pda:{seeds:[{kind:"const",value:[109,101,115,115,97,103,101]},{kind:"arg",path:"payload_hash"}]}},{name:"inbound_message_path"},{name:"consortium_payload"},{name:"consortium_validated_payload",docs:["check that the consortium program has validated the payload"]},{name:"system_program",address:"11111111111111111111111111111111"}],args:[{name:"payload_hash",type:{array:["u8",32]}}]},{name:"disable_inbound_message_path",discriminator:[242,182,70,210,26,33,33,78],accounts:[{name:"admin",writable:!0,signer:!0},{name:"config",writable:!0,pda:{seeds:[{kind:"const",value:[109,97,105,108,98,111,120,95,99,111,110,102,105,103]}]}},{name:"inbound_message_path",writable:!0,pda:{seeds:[{kind:"const",value:[105,110,98,111,117,110,100,95,109,101,115,115,97,103,101,95,112,97,116,104]},{kind:"arg",path:"source_chain_id"}]}},{name:"system_program",address:"11111111111111111111111111111111"}],args:[{name:"source_chain_id",type:{array:["u8",32]}}]},{name:"disable_outbound_message_path",discriminator:[57,102,27,150,123,166,38,158],accounts:[{name:"admin",writable:!0,signer:!0},{name:"config",writable:!0,pda:{seeds:[{kind:"const",value:[109,97,105,108,98,111,120,95,99,111,110,102,105,103]}]}},{name:"outbound_message_path",writable:!0,pda:{seeds:[{kind:"const",value:[111,117,116,98,111,117,110,100,95,109,101,115,115,97,103,101,95,112,97,116,104]},{kind:"arg",path:"destination_chain_id"}]}},{name:"system_program",address:"11111111111111111111111111111111"}],args:[{name:"destination_chain_id",type:{array:["u8",32]}}]},{name:"enable_inbound_message_path",discriminator:[178,201,217,113,101,52,44,127],accounts:[{name:"admin",writable:!0,signer:!0},{name:"config",writable:!0,pda:{seeds:[{kind:"const",value:[109,97,105,108,98,111,120,95,99,111,110,102,105,103]}]}},{name:"inbound_message_path",writable:!0,pda:{seeds:[{kind:"const",value:[105,110,98,111,117,110,100,95,109,101,115,115,97,103,101,95,112,97,116,104]},{kind:"arg",path:"source_chain_id"}]}},{name:"system_program",address:"11111111111111111111111111111111"}],args:[{name:"source_chain_id",type:{array:["u8",32]}},{name:"source_mailbox_address",type:{array:["u8",32]}}]},{name:"enable_outbound_message_path",discriminator:[86,206,215,63,209,234,166,13],accounts:[{name:"admin",writable:!0,signer:!0},{name:"config",writable:!0,pda:{seeds:[{kind:"const",value:[109,97,105,108,98,111,120,95,99,111,110,102,105,103]}]}},{name:"outbound_message_path",writable:!0,pda:{seeds:[{kind:"const",value:[111,117,116,98,111,117,110,100,95,109,101,115,115,97,103,101,95,112,97,116,104]},{kind:"arg",path:"destination_chain_id"}]}},{name:"system_program",address:"11111111111111111111111111111111"}],args:[{name:"destination_chain_id",type:{array:["u8",32]}}]},{name:"grant_account_role",discriminator:[166,105,3,49,241,233,230,157],accounts:[{name:"admin",writable:!0,signer:!0},{name:"config",pda:{seeds:[{kind:"const",value:[109,97,105,108,98,111,120,95,99,111,110,102,105,103]}]}},{name:"account_roles",writable:!0,pda:{seeds:[{kind:"const",value:[97,99,99,111,117,110,116,95,114,111,108,101,115]},{kind:"arg",path:"account"}]}},{name:"system_program",address:"11111111111111111111111111111111"}],args:[{name:"account",type:"pubkey"},{name:"account_role",type:{defined:{name:"AccountRole"}}}]},{name:"handle_message",discriminator:[91,215,39,71,108,217,94,89],accounts:[{name:"handler",writable:!0,signer:!0},{name:"config",pda:{seeds:[{kind:"const",value:[109,97,105,108,98,111,120,95,99,111,110,102,105,103]}]}},{name:"message_info",writable:!0,pda:{seeds:[{kind:"const",value:[109,101,115,115,97,103,101]},{kind:"arg",path:"payload_hash"}]}},{name:"recipient_program"}],args:[{name:"payload_hash",type:{array:["u8",32]}}],returns:"bytes"},{name:"initialize",discriminator:[175,175,109,31,13,152,155,237],accounts:[{name:"deployer",writable:!0,signer:!0},{name:"program_data",pda:{seeds:[{kind:"const",value:[5,18,233,90,194,193,50,141,128,131,75,41,96,114,108,90,65,124,105,212,246,221,111,217,24,17,69,69,125,185,67,232]}],program:{kind:"const",value:[2,168,246,145,78,136,161,176,226,16,21,62,247,99,174,43,0,194,185,61,22,193,36,210,192,83,122,16,4,128,0,0]}}},{name:"config",writable:!0,pda:{seeds:[{kind:"const",value:[109,97,105,108,98,111,120,95,99,111,110,102,105,103]}]}},{name:"system_program",address:"11111111111111111111111111111111"}],args:[{name:"admin",type:"pubkey"},{name:"consortium",type:"pubkey"},{name:"treasury",type:"pubkey"},{name:"default_max_payload_size",type:"u32"},{name:"fee_per_byte",type:"u64"}]},{name:"pause",discriminator:[211,22,221,251,74,121,193,47],accounts:[{name:"pauser",signer:!0},{name:"config",writable:!0,pda:{seeds:[{kind:"const",value:[109,97,105,108,98,111,120,95,99,111,110,102,105,103]}]}},{name:"account_roles",pda:{seeds:[{kind:"const",value:[97,99,99,111,117,110,116,95,114,111,108,101,115]},{kind:"account",path:"pauser"}]}}],args:[]},{name:"revoke_account_roles",discriminator:[88,183,44,133,35,162,233,161],accounts:[{name:"admin",writable:!0,signer:!0},{name:"config",writable:!0,pda:{seeds:[{kind:"const",value:[109,97,105,108,98,111,120,95,99,111,110,102,105,103]}]}},{name:"account_roles",writable:!0,pda:{seeds:[{kind:"const",value:[97,99,99,111,117,110,116,95,114,111,108,101,115]},{kind:"arg",path:"account"}]}},{name:"system_program",address:"11111111111111111111111111111111"}],args:[{name:"account",type:"pubkey"}]},{name:"send_message",discriminator:[57,40,34,178,189,10,65,26],accounts:[{name:"fee_payer",writable:!0,signer:!0},{name:"sender_authority",signer:!0},{name:"config",writable:!0,pda:{seeds:[{kind:"const",value:[109,97,105,108,98,111,120,95,99,111,110,102,105,103]}]}},{name:"outbound_message_path"},{name:"outbound_message",writable:!0,pda:{seeds:[{kind:"const",value:[111,117,116,98,111,117,110,100,95,109,101,115,115,97,103,101]},{kind:"account",path:"config.global_nonce",account:"Config"}]}},{name:"system_program",address:"11111111111111111111111111111111"},{name:"treasury",writable:!0,optional:!0},{name:"sender_config",optional:!0,pda:{seeds:[{kind:"const",value:[115,101,110,100,101,114,95,99,111,110,102,105,103]},{kind:"account",path:"sender_authority.owner"}]}}],args:[{name:"message_body",type:"bytes"},{name:"recipient",type:{array:["u8",32]}},{name:"destination_caller",type:{option:{array:["u8",32]}}},{name:"fee_override",type:"u64"}],returns:{defined:{name:"SendResult"}}},{name:"set_sender_config",discriminator:[131,205,139,221,93,186,118,146],accounts:[{name:"admin",writable:!0,signer:!0},{name:"config",writable:!0,pda:{seeds:[{kind:"const",value:[109,97,105,108,98,111,120,95,99,111,110,102,105,103]}]}},{name:"sender_config",writable:!0,pda:{seeds:[{kind:"const",value:[115,101,110,100,101,114,95,99,111,110,102,105,103]},{kind:"arg",path:"sender_program"}]}},{name:"system_program",address:"11111111111111111111111111111111"}],args:[{name:"sender_program",type:"pubkey"},{name:"max_payload_size",type:"u32"},{name:"fee_disabled",type:"bool"}]},{name:"transfer_ownership",discriminator:[65,177,215,73,53,45,99,47],accounts:[{name:"admin",signer:!0},{name:"config",writable:!0,pda:{seeds:[{kind:"const",value:[109,97,105,108,98,111,120,95,99,111,110,102,105,103]}]}}],args:[{name:"new_admin",type:"pubkey"}]},{name:"unpause",discriminator:[169,144,4,38,10,141,188,255],accounts:[{name:"admin",signer:!0},{name:"config",writable:!0,pda:{seeds:[{kind:"const",value:[109,97,105,108,98,111,120,95,99,111,110,102,105,103]}]}}],args:[]},{name:"unset_sender_config",discriminator:[10,248,20,172,121,20,97,86],accounts:[{name:"admin",writable:!0,signer:!0},{name:"config",writable:!0,pda:{seeds:[{kind:"const",value:[109,97,105,108,98,111,120,95,99,111,110,102,105,103]}]}},{name:"sender_config",writable:!0,pda:{seeds:[{kind:"const",value:[115,101,110,100,101,114,95,99,111,110,102,105,103]},{kind:"arg",path:"sender_program"}]}},{name:"system_program",address:"11111111111111111111111111111111"}],args:[{name:"sender_program",type:"pubkey"}]},{name:"update_config",discriminator:[29,158,252,191,10,83,219,99],accounts:[{name:"admin",signer:!0},{name:"config",writable:!0,pda:{seeds:[{kind:"const",value:[109,97,105,108,98,111,120,95,99,111,110,102,105,103]}]}}],args:[{name:"default_max_payload_size",type:{option:"u32"}},{name:"fee_per_byte",type:{option:"u64"}}]}],accounts$1=[{name:"AccountRoles",discriminator:[25,230,229,88,31,135,177,142]},{name:"Config",discriminator:[155,12,170,224,30,250,204,130]},{name:"InboundMessagePath",discriminator:[183,101,83,26,169,221,228,25]},{name:"MessageV1Info",discriminator:[113,42,224,190,65,33,233,178]},{name:"OutboundMessage",discriminator:[166,139,82,146,129,32,235,239]},{name:"OutboundMessagePath",discriminator:[58,4,19,64,132,71,137,190]},{name:"SenderConfig",discriminator:[0,241,220,77,167,128,79,152]},{name:"SessionPayload",discriminator:[33,115,191,63,132,170,233,102]},{name:"ValidatedPayload",discriminator:[129,8,149,193,22,240,127,36]}],events$1=[{name:"AccountRoleGranted",discriminator:[156,201,253,16,204,194,211,121]},{name:"AccountRolesRevoked",discriminator:[193,45,230,213,88,196,24,174]},{name:"ConfigUpdated",discriminator:[40,241,230,122,11,19,198,194]},{name:"InboundMessagePathStatusChanged",discriminator:[63,7,150,75,197,37,39,168]},{name:"MessageDelivered",discriminator:[206,54,202,10,22,64,153,18]},{name:"MessageHandled",discriminator:[241,188,96,32,20,92,213,251]},{name:"MessageSent",discriminator:[116,70,224,76,128,28,110,55]},{name:"OutboundMessagePathStatusChanged",discriminator:[106,217,122,13,125,45,243,216]},{name:"OwnershipTransferInitiated",discriminator:[181,32,40,60,60,64,235,29]},{name:"OwnershipTransferred",discriminator:[172,61,205,183,250,50,38,98]},{name:"PauserAdded",discriminator:[231,206,109,54,239,205,234,248]},{name:"PauserRemoved",discriminator:[224,157,132,185,123,96,72,220]},{name:"ProgramPaused",discriminator:[247,9,236,38,105,35,112,115]},{name:"SenderConfigSet",discriminator:[48,41,191,185,220,186,107,160]},{name:"SenderConfigUnset",discriminator:[27,176,73,192,0,73,206,177]},{name:"TreasuryChanged",discriminator:[252,2,55,56,106,205,227,47]}],errors$8=[{code:6e3,name:"Unauthorized",msg:"Unauthorized function call"},{code:6001,name:"AccountRoleAlreadyGranted",msg:"Account role already granted"},{code:6002,name:"Paused",msg:"Program is paused"},{code:6003,name:"NotPaused",msg:"Program is not paused"},{code:6004,name:"InvalidPayloadLength",msg:"Invalid payload size"},{code:6005,name:"PayloadTooLarge",msg:"Payload too large"},{code:6006,name:"InvalidPayloadSelector",msg:"Invalid payload selector"},{code:6007,name:"InvalidMessagePath",msg:"Invalid message path"},{code:6008,name:"PayloadNotFound",msg:"Payload not found"},{code:6009,name:"PayloadAlreadyHandled",msg:"Payload already handled"},{code:6010,name:"InvalidPayloadState",msg:"Invalid payload state"},{code:6011,name:"InsufficientFunds",msg:"Insufficient funds for fee"},{code:6012,name:"InvalidFeeConfiguration",msg:"Invalid fee configuration"},{code:6013,name:"InvalidAdmin",msg:"Invalid admin"},{code:6014,name:"InvalidPauser",msg:"Invalid pauser"},{code:6015,name:"PauserAlreadyExists",msg:"Pauser already exists"},{code:6016,name:"PauserNotFound",msg:"Pauser not found"},{code:6017,name:"InvalidNonce",msg:"Invalid nonce"},{code:6018,name:"BufferIOError",msg:"Buffer IO error"},{code:6019,name:"TreasuryMismatch",msg:"treasury mismatch"},{code:6020,name:"PublicSendWithFeeDisabled",msg:"public send with fee disabled"},{code:6021,name:"InvalidDestinationCaller",msg:"Invalid destination caller"}],types$e=[{name:"AccountRole",type:{kind:"enum",variants:[{name:"Pauser"},{name:"None"}]}},{name:"AccountRoleGranted",type:{kind:"struct",fields:[{name:"account",type:"pubkey"},{name:"account_role",type:{defined:{name:"AccountRole"}}}]}},{name:"AccountRoles",type:{kind:"struct",fields:[{name:"roles",type:{vec:{defined:{name:"AccountRole"}}}}]}},{name:"AccountRolesRevoked",type:{kind:"struct",fields:[{name:"account",type:"pubkey"}]}},{name:"Config",type:{kind:"struct",fields:[{name:"admin",type:"pubkey"},{name:"pending_admin",type:"pubkey"},{name:"treasury",type:"pubkey"},{name:"paused",type:"bool"},{name:"consortium",type:"pubkey"},{name:"global_nonce",type:"u64"},{name:"default_max_payload_size",type:"u32"},{name:"fee_per_byte",type:"u64"}]}},{name:"ConfigUpdated",type:{kind:"struct",fields:[{name:"admin",type:"pubkey"},{name:"default_max_payload_size",type:"u32"},{name:"fee_per_byte",type:"u64"}]}},{name:"InboundMessagePath",type:{kind:"struct",fields:[{name:"identifier",type:{array:["u8",32]}},{name:"source_mailbox_address",type:{array:["u8",32]}},{name:"source_chain_id",type:{array:["u8",32]}}]}},{name:"InboundMessagePathStatusChanged",type:{kind:"struct",fields:[{name:"identifier",type:{array:["u8",32]}},{name:"source_mailbox_address",type:{array:["u8",32]}},{name:"source_chain_id",type:{array:["u8",32]}},{name:"enabled",type:"bool"}]}},{name:"MessageDelivered",type:{kind:"struct",fields:[{name:"payload_hash",type:{array:["u8",32]}},{name:"source_mailbox_address",type:{array:["u8",32]}},{name:"source_chain_id",type:{array:["u8",32]}}]}},{name:"MessageHandled",type:{kind:"struct",fields:[{name:"payload_hash",type:{array:["u8",32]}}]}},{name:"MessageSent",type:{kind:"struct",fields:[{name:"nonce",type:"u64"},{name:"raw_payload",type:"bytes"}]}},{name:"MessageState",docs:["The state of a payload including a GMP message"],type:{kind:"enum",variants:[{name:"Unknown"},{name:"Delivered"},{name:"Handled"}]}},{name:"MessageV1",type:{kind:"struct",fields:[{name:"message_path_identifier",type:{array:["u8",32]}},{name:"nonce",type:"u64"},{name:"sender",type:{array:["u8",32]}},{name:"recipient",type:{array:["u8",32]}},{name:"destination_caller",type:{option:{array:["u8",32]}}},{name:"body",type:"bytes"}]}},{name:"MessageV1Info",type:{kind:"struct",fields:[{name:"status",type:{defined:{name:"MessageState"}}},{name:"message",type:{defined:{name:"MessageV1"}}}]}},{name:"OutboundMessage",type:{kind:"struct",fields:[{defined:{name:"MessageV1"}}]}},{name:"OutboundMessagePath",type:{kind:"struct",fields:[{name:"identifier",type:{array:["u8",32]}},{name:"destination_chain_id",type:{array:["u8",32]}}]}},{name:"OutboundMessagePathStatusChanged",type:{kind:"struct",fields:[{name:"identifier",type:{array:["u8",32]}},{name:"destination_chain_id",type:{array:["u8",32]}},{name:"enabled",type:"bool"}]}},{name:"OwnershipTransferInitiated",type:{kind:"struct",fields:[{name:"new_admin",type:"pubkey"}]}},{name:"OwnershipTransferred",type:{kind:"struct",fields:[{name:"new_admin",type:"pubkey"}]}},{name:"PauserAdded",type:{kind:"struct",fields:[{name:"pauser",type:"pubkey"}]}},{name:"PauserRemoved",type:{kind:"struct",fields:[{name:"pauser",type:"pubkey"}]}},{name:"ProgramPaused",type:{kind:"struct",fields:[{name:"paused",type:"bool"}]}},{name:"SendResult",type:{kind:"struct",fields:[{name:"nonce",type:"u64"},{name:"payload_hash",type:{array:["u8",32]}}]}},{name:"SenderConfig",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"max_payload_size",type:"u32"},{name:"fee_disabled",type:"bool"}]}},{name:"SenderConfigSet",type:{kind:"struct",fields:[{name:"sender_program",type:"pubkey"},{name:"max_payload_size",type:"u32"},{name:"fee_disabled",type:"bool"}]}},{name:"SenderConfigUnset",type:{kind:"struct",fields:[{name:"sender_program",type:"pubkey"}]}},{name:"SessionPayload",type:{kind:"struct",fields:[{name:"payload",type:"bytes"}]}},{name:"TreasuryChanged",type:{kind:"struct",fields:[{name:"old_treasury",type:"pubkey"},{name:"new_treasury",type:"pubkey"}]}},{name:"ValidatedPayload",type:{kind:"struct",fields:[]}}],mailboxIdl={address,metadata:metadata$1,instructions:instructions$1,accounts:accounts$1,events:events$1,errors:errors$8,types:types$e},getMailboxIdl=e=>{const t=getConfig(e);if(!t.mailbox)throw new Error(`Mailbox program not configured for env: ${e}`);const a={...mailboxIdl};return a.address=t.mailbox,a};async function claimLbtcGmp(e){const{provider:t,connection:a,params:s,config:u,payloadBytes:l,payloadHash:p,payloadHashArray:m,payer:g,assetRouterProgramId:b,consortiumProgramId:v,consortiumProgram:E,assetRouterConfigPDA:M,tokenAuthorityPDA:k,validatedPayloadPDA:P,arConfig:x,debugLog:A}=e;if(l.length<296)throw new Error(`LBTC GMP payload too short: expected >= 296 bytes, got ${l.length}`);const[O]=PublicKey$1.findProgramAddressSync([Buffer.from("message_handled"),p],b);if(await a.getAccountInfo(O))return A("Message already handled (LBTC already minted)"),ALREADY_MINTED_TX_HASH;await executeConsortiumSession(e);const[z]=PublicKey$1.findProgramAddressSync([Buffer.from("session_payload"),g.toBytes(),p],v);if(await a.getAccountInfo(z))A("Session payload already exists, skipping post_session_payload");else{A("post_session_payload...");const Z=await E.methods.postSessionPayload(m,Buffer.from(l),l.length).accounts({payer:t.publicKey,sessionPayload:z,systemProgram:SystemProgram.programId}).transaction();await sendAndConfirmTransaction({instruction:Z,connection:a,provider:t,debugLabel:"Consortium post_session_payload",skipPreflight:s.skipPreflight??!1}),A("post_session_payload completed")}if(!u.mailbox)throw new Error(`Mailbox program not configured for network: ${s.network}`);const L=new PublicKey$1(u.mailbox),j=new Program$1(getMailboxIdl(e.env),e.assetRouterProgram.provider),[V]=PublicKey$1.findProgramAddressSync([Buffer.from("mailbox_config")],L),[K]=PublicKey$1.findProgramAddressSync([Buffer.from("message"),p],L);if(!u.ledgerChainId)throw new Error(`Ledger chain ID not configured for network: ${s.network}`);const F=Buffer.from(u.ledgerChainId,"hex");A("Ledger chain ID:",u.ledgerChainId);const[q]=PublicKey$1.findProgramAddressSync([Buffer.from("inbound_message_path"),F],L);if(A("Inbound message path PDA:",q.toBase58()),await a.getAccountInfo(K))A("Message already delivered, skipping deliver_message");else{A("deliver_message...");const Z=await j.methods.deliverMessage(m).accounts({deliverer:t.publicKey,config:V,messageInfo:K,inboundMessagePath:q,consortiumPayload:z,consortiumValidatedPayload:P,systemProgram:SystemProgram.programId}).transaction();await sendAndConfirmTransaction({instruction:Z,connection:a,provider:t,debugLabel:"Mailbox deliver_message",skipPreflight:s.skipPreflight??!1}),A("deliver_message completed")}A("handle_message...");const y=new PublicKey$1(l.subarray(100,132)),S=new PublicKey$1(l.subarray(232,264)),w=new PublicKey$1(l.subarray(264,296));A("GMP recipient (asset router):",y.toBase58()),A("Mint:",S.toBase58()),A("Token recipient:",w.toBase58());const T=await a.getAccountInfo(S);if(!T)throw new Error(`Mint account not found: ${S.toBase58()}`);const U=T.owner,N=await getMint(a,S,void 0,U);if(!N.mintAuthority)throw new Error("Mint has no mint authority");const $=N.mintAuthority;await createOrGetAssociatedTokenAccount({provider:t,connection:a,ownerAddress:w.toBase58(),mintAddress:S.toBase58()});const I=await j.methods.handleMessage(m).accounts({handler:t.publicKey,config:V,messageInfo:K,recipientProgram:y}).instruction();I.keys.push({pubkey:g,isSigner:!0,isWritable:!0},{pubkey:M,isSigner:!1,isWritable:!1},{pubkey:O,isSigner:!1,isWritable:!0},{pubkey:U,isSigner:!1,isWritable:!1},{pubkey:w,isSigner:!1,isWritable:!0},{pubkey:S,isSigner:!1,isWritable:!0},{pubkey:$,isSigner:!1,isWritable:!1},{pubkey:k,isSigner:!1,isWritable:!1},{pubkey:SystemProgram.programId,isSigner:!1,isWritable:!1});const _=x.basculeGmpProgramId;if(_){A("Bascule GMP program:",_.toBase58());const[Z]=PublicKey$1.findProgramAddressSync([Buffer.from("bascule_validator")],b),[W]=PublicKey$1.findProgramAddressSync([Buffer.from("bascule_gmp_config")],_),[G]=PublicKey$1.findProgramAddressSync([Buffer.from("account_roles"),W.toBytes()],_),[J]=PublicKey$1.findProgramAddressSync([Buffer.from("mint_payload"),p],_);I.keys.push({pubkey:Z,isSigner:!1,isWritable:!1},{pubkey:_,isSigner:!1,isWritable:!1},{pubkey:W,isSigner:!1,isWritable:!1},{pubkey:G,isSigner:!1,isWritable:!1},{pubkey:J,isSigner:!1,isWritable:!0})}else{A("Bascule GMP not enabled, adding placeholder accounts");for(let Z=0;Z<5;Z++)I.keys.push({pubkey:b,isSigner:!1,isWritable:!1})}A("handle_message account count:",I.keys.length);const{signature:H}=await sendAndConfirmTransaction({instruction:I,connection:a,provider:t,debugLabel:"Mailbox handle_message",skipPreflight:s.skipPreflight??!1});return A("LBTC mint successful! Signature:",H),H}async function claimToken(e,t){const{network:a,env:s,rawPayload:u,rpcUrl:l,debug:p=!1}=t,{debugLog:m,printLogs:g}=createDebugLogger({debug:p});try{if(!e.publicKey)throw new Error("Wallet not found");const b=s??networkToEnv[a],v=getConfig(b);if(!v.assetRouter)throw new Error(`Asset Router not configured for network: ${a}`);if(!v.consortium)throw new Error(`Consortium not configured for network: ${a}`);const E=getConnection(a,l),M={publicKey:new PublicKey$1(e.publicKey),signTransaction:e.signTransaction,signAllTransactions:e.signAllTransactions},k=new AnchorProvider(E,M,{});setProvider(k);const P=new Program$1(getAssetRouterIdl(b),k),x=new Program$1(getConsortiumIdl(b),k),A=new PublicKey$1(v.assetRouter),O=new PublicKey$1(v.consortium),D=Buffer.from(u,"hex");if(D.length<4)throw new Error(`Payload too short: ${D.length} bytes`);const z=D.subarray(0,4),C=computePayloadHash(D),L=Array.from(C);m("Payload length:",D.length),m("Selector:",Buffer.from(z).toString("hex")),m("Payload hash:",C.toString("hex"));const j=new PublicKey$1(e.publicKey),V=getConsortiumConfigPDA(O),K=await fetchCurrentEpoch(E,V);m("Current consortium epoch:",K.toString());const F=getConsortiumSessionPDA(O,j,C,K),[q]=PublicKey$1.findProgramAddressSync([Buffer.from("validated_payload"),C],O),[R]=PublicKey$1.findProgramAddressSync([Buffer.from("asset_router_config")],A),[y]=PublicKey$1.findProgramAddressSync([Buffer.from("token_authority")],A);m("Asset Router program ID:",A.toBase58()),m("Asset Router config PDA:",R.toBase58());const S=await E.getAccountInfo(R);if(m("Config account exists:",!!S),!S)throw new Error(`Asset Router config account not found at ${R.toBase58()} (program: ${A.toBase58()})`);const w=parseAssetRouterConfig(S.data);if(w.paused)throw new Error("Asset Router contract is paused");const T={provider:e,params:t,env:b,config:v,connection:E,payloadBytes:D,payloadHash:C,payloadHashArray:L,payer:j,assetRouterProgramId:A,consortiumProgramId:O,assetRouterProgram:P,consortiumProgram:x,consortiumConfigPDA:V,sessionPDA:F,validatedPayloadPDA:q,assetRouterConfigPDA:R,tokenAuthorityPDA:y,arConfig:w,debugLog:m};if(z.equals(DEPOSIT_SELECTOR_V1))return m("Flow: BTC.B direct mint"),await claimBtcbFromPayload(T);if(z.equals(GMP_MESSAGE_V1_SELECTOR))return m("Flow: LBTC GMP via Mailbox"),await claimLbtcGmp(T);throw new Error(`Unknown payload selector: ${Buffer.from(z).toString("hex")}`)}catch(b){throw b instanceof Error&&(b.message=`${b.message}
|
|
118
118
|
|
|
119
119
|
Debug logs:
|
|
120
120
|
${g()}`),b}}const BTC_NATIVE_TOKEN_ADDRESS=(()=>{const e=Buffer.alloc(32,0);return e[31]=1,e})();async function redeemForBtc(e,t){var E;const{amount:a,btcAddress:s,network:u,env:l,rpcUrl:p,debug:m=!1,skipPreflight:g=!1}=t,{debugLog:b,printLogs:v}=createDebugLogger({debug:m});try{if(!e.publicKey)throw new Error("Wallet not connected");const M=l??networkToEnv[u]??DEFAULT_ENV,k=getConfig(M);if(!k.assetRouter)throw new Error(`Asset Router not configured for network: ${u}`);if(!k.mailbox)throw new Error(`Mailbox not configured for network: ${u}`);if(!k.solanaRoutingChainId)throw new Error(`Solana routing chain ID not configured for network: ${u}`);if(!k.bitcoinRoutingChainId)throw new Error(`Bitcoin routing chain ID not configured for network: ${u}`);const P=t.tokenMint||k.btcbTokenMint;if(!P)throw new Error(`BTC.b mint not configured for network: ${u}`);const x=18446744073709551615n;if(!/^\d+$/.test(a))throw new Error(`Invalid amount "${a}": must be a positive integer string (lamports, no decimals or signs)`);const A=BigInt(a);if(A===0n)throw new Error("Amount must be greater than zero");if(A>x)throw new Error(`Amount ${a} exceeds the u64 maximum (${x})`);const O=getConnection(u,p),D=new PublicKey$1(e.publicKey),z=new PublicKey$1(P),C=new PublicKey$1(k.assetRouter),L=new PublicKey$1(k.mailbox),j=Buffer.from(k.solanaRoutingChainId,"hex"),V=Buffer.from(k.bitcoinRoutingChainId,"hex");b("Payer:",D.toBase58()),b("Mint:",z.toBase58()),b("Amount:",a),b("BTC address:",s);const K=Buffer.from((await d$1(s,M)).replace(/^0x/,""),"hex");b("Script pubkey length:",K.length);const F=await getTokenProgramForMint(O,z);b("Token program:",F.toBase58());const[q]=PublicKey$1.findProgramAddressSync([Buffer.from("asset_router_config")],C),[R]=PublicKey$1.findProgramAddressSync([Buffer.from("token_config"),z.toBuffer()],C),[y]=PublicKey$1.findProgramAddressSync([Buffer.from("token_route"),j,z.toBuffer(),V,BTC_NATIVE_TOKEN_ADDRESS],C),[S]=PublicKey$1.findProgramAddressSync([Buffer.from("messaging_authority")],C);b("Asset Router config PDA:",q.toBase58()),b("Token config PDA:",R.toBase58()),b("Token route PDA:",y.toBase58()),b("Messaging authority PDA:",S.toBase58());const[w]=PublicKey$1.findProgramAddressSync([Buffer.from("mailbox_config")],L);if(!k.ledgerChainId)throw new Error(`Ledger chain ID not configured for network: ${u}`);const T=Buffer.from(k.ledgerChainId,"hex"),[U]=PublicKey$1.findProgramAddressSync([Buffer.from("outbound_message_path"),T],L),[N]=PublicKey$1.findProgramAddressSync([Buffer.from("sender_config"),C.toBuffer()],L);b("Mailbox config PDA:",w.toBase58()),b("Outbound message path PDA:",U.toBase58()),b("Sender config PDA:",N.toBase58());const[$,I]=await Promise.all([O.getAccountInfo(q),O.getAccountInfo(w)]);if(!$)throw new Error("Asset Router config account not found");if(!I)throw new Error("Mailbox config account not found");if($.data.length<105)throw new Error(`Asset Router config account data too short: expected >= 105 bytes, got ${$.data.length}`);const _=new PublicKey$1($.data.subarray(72,104));if($.data[104]!==0)throw new Error("Asset Router is paused");if(b("Asset Router treasury:",_.toBase58()),I.data.length<104)throw new Error(`Mailbox config account data too short: expected >= 104 bytes, got ${I.data.length}`);const Z=new PublicKey$1(I.data.subarray(72,104));b("Mailbox treasury:",Z.toBase58());const W=await getAssociatedTokenAddress(z,D,!1,F,ASSOCIATED_TOKEN_PROGRAM_ID),G=await getAssociatedTokenAddress(z,_,!0,F,ASSOCIATED_TOKEN_PROGRAM_ID);b("Payer token account:",W.toBase58()),b("Treasury token account:",G.toBase58());const J=await O.getTokenAccountBalance(W);if(BigInt(J.value.amount)<A)throw new Error(`Insufficient BTC.b balance: have ${J.value.uiAmountString}, need ${Number(A)/1e8}`);const Y=new Program$1(getAssetRouterIdl(M),{connection:O}),te=3;for(let ee=0;ee<te;ee++){const ae=await O.getAccountInfo(w);if(!ae)throw new Error("Mailbox config account not found");if(ae.data.length<145)throw new Error(`Mailbox config account data too short: expected >= 145 bytes, got ${ae.data.length}`);const de=ae.data.readBigUInt64LE(137),le=Buffer.alloc(8);le.writeBigUInt64BE(de);const[be]=PublicKey$1.findProgramAddressSync([Buffer.from("outbound_message"),le],L);b(`Attempt ${ee+1}: global nonce=${de}, outbound_message=${be.toBase58()}`);const ne=await Y.methods.redeemForBtc(K,new BN$1(a)).accounts({payer:D,config:q,tokenConfig:R,tokenRoute:y,payerTokenAccount:W,tokenProgram:F,mint:z,treasuryTokenAccount:G,messagingAuthority:S,mailbox:L,mailboxConfig:w,outboundMessagePath:U,outboundMessage:be,senderConfig:N,treasury:Z,systemProgram:SystemProgram.programId}).transaction();b("Instruction account count:",(E=ne.instructions[0])==null?void 0:E.keys.length);try{const{signature:pe}=await sendAndConfirmTransaction({instruction:ne,connection:O,provider:e,debugLabel:"Asset Router redeem_for_btc",skipPreflight:g});return b("redeem_for_btc completed, signature:",pe),pe}catch(pe){if(pe instanceof Error&&pe.message.includes("0x7d6")&&ee<te-1){b("Nonce stale (ConstraintSeeds), retrying...");continue}throw pe}}throw new Error("Failed after max nonce retries")}catch(M){throw M instanceof Error&&m&&(M.message=`${M.message}
|