@actioncodes/protocol 2.0.16 → 2.0.18

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/index.cjs CHANGED
@@ -1,3 +1,3 @@
1
- var L0=Object.create;var{getPrototypeOf:M0,defineProperty:t,getOwnPropertyNames:r8,getOwnPropertyDescriptor:V0}=Object,a8=Object.prototype.hasOwnProperty;var o=(Q,X,$)=>{$=Q!=null?L0(M0(Q)):{};let Z=X||!Q||!Q.__esModule?t($,"default",{value:Q,enumerable:!0}):$;for(let q of r8(Q))if(!a8.call(Z,q))t(Z,q,{get:()=>Q[q],enumerable:!0});return Z},i8=new WeakMap,I0=(Q)=>{var X=i8.get(Q),$;if(X)return X;if(X=t({},"__esModule",{value:!0}),Q&&typeof Q==="object"||typeof Q==="function")r8(Q).map((Z)=>!a8.call(X,Z)&&t(X,Z,{get:()=>Q[Z],enumerable:!($=V0(Q,Z))||$.enumerable}));return i8.set(Q,X),X};var T0=(Q,X)=>{for(var $ in X)t(Q,$,{get:X[$],enumerable:!0,configurable:!0,set:(Z)=>X[$]=()=>Z})};var i0={};T0(i0,{validateProtocolMetaFormat:()=>s0,truncateBits:()=>v8,sha256:()=>W0,serializeDelegationProof:()=>G8,serializeCanonicalRevoke:()=>D8,serializeCanonical:()=>m,parseProtocolMeta:()=>q8,hmacSha256:()=>O8,hkdfSha256:()=>f0,getCanonicalMessageParts:()=>s,digestToDigits:()=>W8,codeHash:()=>p8,buildProtocolMeta:()=>V8,base32EncodeCrockford:()=>u0,WalletStrategy:()=>r,TransactionNotSignedByIntendedOwnerError:()=>A8,SolanaAdapter:()=>a,SUPPORTED_CHAINS:()=>l0,SCHEME:()=>L8,ProtocolErrorCode:()=>F0,ProtocolError:()=>Y,PROTOCOL_NORMALIZATION:()=>F8,PROTOCOL_META_MAX_BYTES:()=>i,MissingMetaError:()=>H8,MetaMismatchError:()=>_8,InvalidSignatureError:()=>u8,InvalidPubkeyFormatError:()=>f8,InvalidCodeFormatError:()=>g8,InvalidAdapterError:()=>c8,ExpiredCodeError:()=>S8,DelegationStrategy:()=>I8,CODE_MIN_LENGTH:()=>w8,CODE_MAX_LENGTH:()=>k8,CODE_DEFAULT_LENGTH:()=>d0,CODE_CHARSET_DIGITS:()=>n0,CANONICAL_REVOKE_MESSAGE_PREFIX:()=>h0,CANONICAL_MESSAGE_VERSION:()=>g0,CANONICAL_MESSAGE_PREFIX:()=>c0,BaseChainAdapter:()=>Y8,ActionCodesProtocol:()=>w0,ADAPTER_CHAIN_NAME:()=>h});module.exports=I0(i0);class Y8{}/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */function x0(Q){return Q instanceof Uint8Array||ArrayBuffer.isView(Q)&&Q.constructor.name==="Uint8Array"}function N8(Q,X=""){if(!Number.isSafeInteger(Q)||Q<0){let $=X&&`"${X}" `;throw Error(`${$}expected integer >= 0, got ${Q}`)}}function p(Q,X,$=""){let Z=x0(Q),q=Q?.length,J=X!==void 0;if(!Z||J&&q!==X){let R=$&&`"${$}" `,z=J?` of length ${X}`:"",U=Z?`length=${q}`:`type=${typeof Q}`;throw Error(R+"expected Uint8Array"+z+", got "+U)}return Q}function Q8(Q){if(typeof Q!=="function"||typeof Q.create!=="function")throw Error("Hash must wrapped by utils.createHasher");N8(Q.outputLen),N8(Q.blockLen)}function d(Q,X=!0){if(Q.destroyed)throw Error("Hash instance has been destroyed");if(X&&Q.finished)throw Error("Hash#digest() has already been called")}function e8(Q,X){p(Q,void 0,"digestInto() output");let $=X.outputLen;if(Q.length<$)throw Error('"digestInto() output" expected to be of length >='+$)}function I(...Q){for(let X=0;X<Q.length;X++)Q[X].fill(0)}function z8(Q){return new DataView(Q.buffer,Q.byteOffset,Q.byteLength)}function T(Q,X){return Q<<32-X|Q>>>X}function t8(Q,X={}){let $=(q,J)=>Q(J).update(q).digest(),Z=Q(void 0);return $.outputLen=Z.outputLen,$.blockLen=Z.blockLen,$.create=(q)=>Q(q),Object.assign($,X),Object.freeze($)}var o8=(Q)=>({oid:Uint8Array.from([6,9,96,134,72,1,101,3,4,2,Q])});function Q0(Q,X,$){return Q&X^~Q&$}function X0(Q,X,$){return Q&X^Q&$^X&$}class U8{blockLen;outputLen;padOffset;isLE;buffer;view;finished=!1;length=0;pos=0;destroyed=!1;constructor(Q,X,$,Z){this.blockLen=Q,this.outputLen=X,this.padOffset=$,this.isLE=Z,this.buffer=new Uint8Array(Q),this.view=z8(this.buffer)}update(Q){d(this),p(Q);let{view:X,buffer:$,blockLen:Z}=this,q=Q.length;for(let J=0;J<q;){let R=Math.min(Z-this.pos,q-J);if(R===Z){let z=z8(Q);for(;Z<=q-J;J+=Z)this.process(z,J);continue}if($.set(Q.subarray(J,J+R),this.pos),this.pos+=R,J+=R,this.pos===Z)this.process(X,0),this.pos=0}return this.length+=Q.length,this.roundClean(),this}digestInto(Q){d(this),e8(Q,this),this.finished=!0;let{buffer:X,view:$,blockLen:Z,isLE:q}=this,{pos:J}=this;if(X[J++]=128,I(this.buffer.subarray(J)),this.padOffset>Z-J)this.process($,0),J=0;for(let N=J;N<Z;N++)X[N]=0;$.setBigUint64(Z-8,BigInt(this.length*8),q),this.process($,0);let R=z8(Q),z=this.outputLen;if(z%4)throw Error("_sha2: outputLen must be aligned to 32bit");let U=z/4,j=this.get();if(U>j.length)throw Error("_sha2: outputLen bigger than state");for(let N=0;N<U;N++)R.setUint32(4*N,j[N],q)}digest(){let{buffer:Q,outputLen:X}=this;this.digestInto(Q);let $=Q.slice(0,X);return this.destroy(),$}_cloneInto(Q){Q||=new this.constructor,Q.set(...this.get());let{blockLen:X,buffer:$,length:Z,finished:q,destroyed:J,pos:R}=this;if(Q.destroyed=J,Q.finished=q,Q.length=Z,Q.pos=R,Z%X)Q.buffer.set($);return Q}clone(){return this._cloneInto()}}var C=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),y=Uint32Array.from([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428]),F=Uint32Array.from([3418070365,3238371032,1654270250,914150663,2438529370,812702999,355462360,4144912697,1731405415,4290775857,2394180231,1750603025,3675008525,1694076839,1203062813,3204075428]),w=Uint32Array.from([1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209]);var j8=BigInt(4294967295),$0=BigInt(32);function b0(Q,X=!1){if(X)return{h:Number(Q&j8),l:Number(Q>>$0&j8)};return{h:Number(Q>>$0&j8)|0,l:Number(Q&j8)|0}}function Z0(Q,X=!1){let $=Q.length,Z=new Uint32Array($),q=new Uint32Array($);for(let J=0;J<$;J++){let{h:R,l:z}=b0(Q[J],X);[Z[J],q[J]]=[R,z]}return[Z,q]}var C8=(Q,X,$)=>Q>>>$,y8=(Q,X,$)=>Q<<32-$|X>>>$,u=(Q,X,$)=>Q>>>$|X<<32-$,g=(Q,X,$)=>Q<<32-$|X>>>$,X8=(Q,X,$)=>Q<<64-$|X>>>$-32,$8=(Q,X,$)=>Q>>>$-32|X<<64-$;function x(Q,X,$,Z){let q=(X>>>0)+(Z>>>0);return{h:Q+$+(q/4294967296|0)|0,l:q|0}}var q0=(Q,X,$)=>(Q>>>0)+(X>>>0)+($>>>0),J0=(Q,X,$,Z)=>X+$+Z+(Q/4294967296|0)|0,R0=(Q,X,$,Z)=>(Q>>>0)+(X>>>0)+($>>>0)+(Z>>>0),Y0=(Q,X,$,Z,q)=>X+$+Z+q+(Q/4294967296|0)|0,N0=(Q,X,$,Z,q)=>(Q>>>0)+(X>>>0)+($>>>0)+(Z>>>0)+(q>>>0),z0=(Q,X,$,Z,q,J)=>X+$+Z+q+J+(Q/4294967296|0)|0;var C0=Uint32Array.from([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]),S=new Uint32Array(64);class m8 extends U8{constructor(Q){super(64,Q,8,!1)}get(){let{A:Q,B:X,C:$,D:Z,E:q,F:J,G:R,H:z}=this;return[Q,X,$,Z,q,J,R,z]}set(Q,X,$,Z,q,J,R,z){this.A=Q|0,this.B=X|0,this.C=$|0,this.D=Z|0,this.E=q|0,this.F=J|0,this.G=R|0,this.H=z|0}process(Q,X){for(let N=0;N<16;N++,X+=4)S[N]=Q.getUint32(X,!1);for(let N=16;N<64;N++){let K=S[N-15],O=S[N-2],k=T(K,7)^T(K,18)^K>>>3,G=T(O,17)^T(O,19)^O>>>10;S[N]=G+S[N-7]+k+S[N-16]|0}let{A:$,B:Z,C:q,D:J,E:R,F:z,G:U,H:j}=this;for(let N=0;N<64;N++){let K=T(R,6)^T(R,11)^T(R,25),O=j+K+Q0(R,z,U)+C0[N]+S[N]|0,G=(T($,2)^T($,13)^T($,22))+X0($,Z,q)|0;j=U,U=z,z=R,R=J+O|0,J=q,q=Z,Z=$,$=O+G|0}$=$+this.A|0,Z=Z+this.B|0,q=q+this.C|0,J=J+this.D|0,R=R+this.E|0,z=z+this.F|0,U=U+this.G|0,j=j+this.H|0,this.set($,Z,q,J,R,z,U,j)}roundClean(){I(S)}destroy(){this.set(0,0,0,0,0,0,0,0),I(this.buffer)}}class U0 extends m8{A=C[0]|0;B=C[1]|0;C=C[2]|0;D=C[3]|0;E=C[4]|0;F=C[5]|0;G=C[6]|0;H=C[7]|0;constructor(){super(32)}}class y0 extends m8{A=y[0]|0;B=y[1]|0;C=y[2]|0;D=y[3]|0;E=y[4]|0;F=y[5]|0;G=y[6]|0;H=y[7]|0;constructor(){super(28)}}var j0=(()=>Z0(["0x428a2f98d728ae22","0x7137449123ef65cd","0xb5c0fbcfec4d3b2f","0xe9b5dba58189dbbc","0x3956c25bf348b538","0x59f111f1b605d019","0x923f82a4af194f9b","0xab1c5ed5da6d8118","0xd807aa98a3030242","0x12835b0145706fbe","0x243185be4ee4b28c","0x550c7dc3d5ffb4e2","0x72be5d74f27b896f","0x80deb1fe3b1696b1","0x9bdc06a725c71235","0xc19bf174cf692694","0xe49b69c19ef14ad2","0xefbe4786384f25e3","0x0fc19dc68b8cd5b5","0x240ca1cc77ac9c65","0x2de92c6f592b0275","0x4a7484aa6ea6e483","0x5cb0a9dcbd41fbd4","0x76f988da831153b5","0x983e5152ee66dfab","0xa831c66d2db43210","0xb00327c898fb213f","0xbf597fc7beef0ee4","0xc6e00bf33da88fc2","0xd5a79147930aa725","0x06ca6351e003826f","0x142929670a0e6e70","0x27b70a8546d22ffc","0x2e1b21385c26c926","0x4d2c6dfc5ac42aed","0x53380d139d95b3df","0x650a73548baf63de","0x766a0abb3c77b2a8","0x81c2c92e47edaee6","0x92722c851482353b","0xa2bfe8a14cf10364","0xa81a664bbc423001","0xc24b8b70d0f89791","0xc76c51a30654be30","0xd192e819d6ef5218","0xd69906245565a910","0xf40e35855771202a","0x106aa07032bbd1b8","0x19a4c116b8d2d0c8","0x1e376c085141ab53","0x2748774cdf8eeb99","0x34b0bcb5e19b48a8","0x391c0cb3c5c95a63","0x4ed8aa4ae3418acb","0x5b9cca4f7763e373","0x682e6ff3d6b2b8a3","0x748f82ee5defb2fc","0x78a5636f43172f60","0x84c87814a1f0ab72","0x8cc702081a6439ec","0x90befffa23631e28","0xa4506cebde82bde9","0xbef9a3f7b2c67915","0xc67178f2e372532b","0xca273eceea26619c","0xd186b8c721c0c207","0xeada7dd6cde0eb1e","0xf57d4f7fee6ed178","0x06f067aa72176fba","0x0a637dc5a2c898a6","0x113f9804bef90dae","0x1b710b35131c471b","0x28db77f523047d84","0x32caab7b40c72493","0x3c9ebe0a15c9bebc","0x431d67c49c100d4c","0x4cc5d4becb3e42b6","0x597f299cfc657e2a","0x5fcb6fab3ad6faec","0x6c44198c4a475817"].map((Q)=>BigInt(Q))))(),m0=(()=>j0[0])(),B0=(()=>j0[1])(),H=new Uint32Array(80),_=new Uint32Array(80);class Z8 extends U8{constructor(Q){super(128,Q,16,!1)}get(){let{Ah:Q,Al:X,Bh:$,Bl:Z,Ch:q,Cl:J,Dh:R,Dl:z,Eh:U,El:j,Fh:N,Fl:K,Gh:O,Gl:k,Hh:G,Hl:V}=this;return[Q,X,$,Z,q,J,R,z,U,j,N,K,O,k,G,V]}set(Q,X,$,Z,q,J,R,z,U,j,N,K,O,k,G,V){this.Ah=Q|0,this.Al=X|0,this.Bh=$|0,this.Bl=Z|0,this.Ch=q|0,this.Cl=J|0,this.Dh=R|0,this.Dl=z|0,this.Eh=U|0,this.El=j|0,this.Fh=N|0,this.Fl=K|0,this.Gh=O|0,this.Gl=k|0,this.Hh=G|0,this.Hl=V|0}process(Q,X){for(let v=0;v<16;v++,X+=4)H[v]=Q.getUint32(X),_[v]=Q.getUint32(X+=4);for(let v=16;v<80;v++){let B=H[v-15]|0,P=_[v-15]|0,T8=u(B,P,1)^u(B,P,8)^C8(B,P,7),x8=g(B,P,1)^g(B,P,8)^y8(B,P,7),b=H[v-2]|0,E=_[v-2]|0,J8=u(b,E,19)^X8(b,E,61)^C8(b,E,6),b8=g(b,E,19)^$8(b,E,61)^y8(b,E,6),R8=R0(x8,b8,_[v-7],_[v-16]),E8=Y0(R8,T8,J8,H[v-7],H[v-16]);H[v]=E8|0,_[v]=R8|0}let{Ah:$,Al:Z,Bh:q,Bl:J,Ch:R,Cl:z,Dh:U,Dl:j,Eh:N,El:K,Fh:O,Fl:k,Gh:G,Gl:V,Hh:D,Hl:e}=this;for(let v=0;v<80;v++){let B=u(N,K,14)^u(N,K,18)^X8(N,K,41),P=g(N,K,14)^g(N,K,18)^$8(N,K,41),T8=N&O^~N&G,x8=K&k^~K&V,b=N0(e,P,x8,B0[v],_[v]),E=z0(b,D,B,T8,m0[v],H[v]),J8=b|0,b8=u($,Z,28)^X8($,Z,34)^X8($,Z,39),R8=g($,Z,28)^$8($,Z,34)^$8($,Z,39),E8=$&q^$&R^q&R,k0=Z&J^Z&z^J&z;D=G|0,e=V|0,G=O|0,V=k|0,O=N|0,k=K|0,{h:N,l:K}=x(U|0,j|0,E|0,J8|0),U=R|0,j=z|0,R=q|0,z=J|0,q=$|0,J=Z|0;let s8=q0(J8,R8,k0);$=J0(s8,E,b8,E8),Z=s8|0}({h:$,l:Z}=x(this.Ah|0,this.Al|0,$|0,Z|0)),{h:q,l:J}=x(this.Bh|0,this.Bl|0,q|0,J|0),{h:R,l:z}=x(this.Ch|0,this.Cl|0,R|0,z|0),{h:U,l:j}=x(this.Dh|0,this.Dl|0,U|0,j|0),{h:N,l:K}=x(this.Eh|0,this.El|0,N|0,K|0),{h:O,l:k}=x(this.Fh|0,this.Fl|0,O|0,k|0),{h:G,l:V}=x(this.Gh|0,this.Gl|0,G|0,V|0),{h:D,l:e}=x(this.Hh|0,this.Hl|0,D|0,e|0),this.set($,Z,q,J,R,z,U,j,N,K,O,k,G,V,D,e)}roundClean(){I(H,_)}destroy(){I(this.buffer),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}}class P0 extends Z8{Ah=w[0]|0;Al=w[1]|0;Bh=w[2]|0;Bl=w[3]|0;Ch=w[4]|0;Cl=w[5]|0;Dh=w[6]|0;Dl=w[7]|0;Eh=w[8]|0;El=w[9]|0;Fh=w[10]|0;Fl=w[11]|0;Gh=w[12]|0;Gl=w[13]|0;Hh=w[14]|0;Hl=w[15]|0;constructor(){super(64)}}class p0 extends Z8{Ah=F[0]|0;Al=F[1]|0;Bh=F[2]|0;Bl=F[3]|0;Ch=F[4]|0;Cl=F[5]|0;Dh=F[6]|0;Dl=F[7]|0;Eh=F[8]|0;El=F[9]|0;Fh=F[10]|0;Fl=F[11]|0;Gh=F[12]|0;Gl=F[13]|0;Hh=F[14]|0;Hl=F[15]|0;constructor(){super(48)}}var L=Uint32Array.from([2352822216,424955298,1944164710,2312950998,502970286,855612546,1738396948,1479516111,258812777,2077511080,2011393907,79989058,1067287976,1780299464,286451373,2446758561]),M=Uint32Array.from([573645204,4230739756,2673172387,3360449730,596883563,1867755857,2520282905,1497426621,2519219938,2827943907,3193839141,1401305490,721525244,746961066,246885852,2177182882]);class S0 extends Z8{Ah=L[0]|0;Al=L[1]|0;Bh=L[2]|0;Bl=L[3]|0;Ch=L[4]|0;Cl=L[5]|0;Dh=L[6]|0;Dl=L[7]|0;Eh=L[8]|0;El=L[9]|0;Fh=L[10]|0;Fl=L[11]|0;Gh=L[12]|0;Gl=L[13]|0;Hh=L[14]|0;Hl=L[15]|0;constructor(){super(28)}}class H0 extends Z8{Ah=M[0]|0;Al=M[1]|0;Bh=M[2]|0;Bl=M[3]|0;Ch=M[4]|0;Cl=M[5]|0;Dh=M[6]|0;Dl=M[7]|0;Eh=M[8]|0;El=M[9]|0;Fh=M[10]|0;Fl=M[11]|0;Gh=M[12]|0;Gl=M[13]|0;Hh=M[14]|0;Hl=M[15]|0;constructor(){super(32)}}var K8=t8(()=>new U0,o8(1));class B8{oHash;iHash;blockLen;outputLen;finished=!1;destroyed=!1;constructor(Q,X){if(Q8(Q),p(X,void 0,"key"),this.iHash=Q.create(),typeof this.iHash.update!=="function")throw Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;let $=this.blockLen,Z=new Uint8Array($);Z.set(X.length>$?Q.create().update(X).digest():X);for(let q=0;q<Z.length;q++)Z[q]^=54;this.iHash.update(Z),this.oHash=Q.create();for(let q=0;q<Z.length;q++)Z[q]^=106;this.oHash.update(Z),I(Z)}update(Q){return d(this),this.iHash.update(Q),this}digestInto(Q){d(this),p(Q,this.outputLen,"output"),this.finished=!0,this.iHash.digestInto(Q),this.oHash.update(Q),this.oHash.digestInto(Q),this.destroy()}digest(){let Q=new Uint8Array(this.oHash.outputLen);return this.digestInto(Q),Q}_cloneInto(Q){Q||=Object.create(Object.getPrototypeOf(this),{});let{oHash:X,iHash:$,finished:Z,destroyed:q,blockLen:J,outputLen:R}=this;return Q=Q,Q.finished=Z,Q.destroyed=q,Q.blockLen=J,Q.outputLen=R,Q.oHash=X._cloneInto(Q.oHash),Q.iHash=$._cloneInto(Q.iHash),Q}clone(){return this._cloneInto()}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}}var n=(Q,X,$)=>new B8(Q,X).update($).digest();n.create=(Q,X)=>new B8(Q,X);function _0(Q,X,$){if(Q8(Q),$===void 0)$=new Uint8Array(Q.outputLen);return n(Q,$,X)}var P8=Uint8Array.of(0),K0=Uint8Array.of();function A0(Q,X,$,Z=32){Q8(Q),N8(Z,"length");let q=Q.outputLen;if(Z>255*q)throw Error("Length must be <= 255*HashLen");let J=Math.ceil(Z/q);if($===void 0)$=K0;else p($,void 0,"info");let R=new Uint8Array(J*q),z=n.create(Q,X),U=z._cloneInto(),j=new Uint8Array(z.outputLen);for(let N=0;N<J;N++)P8[0]=N+1,U.update(N===0?K0:j).update($).update(P8).digestInto(j),R.set(j,q*N),z._cloneInto(U);return z.destroy(),U.destroy(),I(j,P8),R.slice(0,Z)}var O0=(Q,X,$,Z,q)=>A0(Q,_0(Q,X,$),Z,q);function l(Q){if(typeof Q==="string")return new TextEncoder().encode(Q);return Q}function W0(Q){return K8(l(Q))}function O8(Q,X){return n(K8,l(Q),l(X))}function f0(Q,X,{salt:$,info:Z}={}){let q=$?l($):new Uint8Array(32),J=l(Q),R=Z?l(Z):new Uint8Array(0);return O0(K8,J,q,R,X)}var v0="0123456789ABCDEFGHJKMNPQRSTVWXYZ";function u0(Q){let X=0,$=0,Z="";for(let q=0;q<Q.length;q++){$=$<<8|Q[q],X+=8;while(X>=5)Z+=v0[$>>>X-5&31],X-=5}if(X>0)Z+=v0[$<<5-X&31];return Z}function v8(Q,X){let $=Math.ceil(X/8),Z=new Uint8Array($),q=Math.min($,Q.length);Z.set(Q.subarray(0,q));let J=$*8-X;if(J>0){let R=255<<J;Z[$-1]=Z[$-1]&R}return Z}function W8(Q,X){if(Q.length===0)throw Error("digestToDigits: empty digest");let $="",Z=Q[Q.length-1]&15;for(let q=0;$.length<X;q++){let J=(Z+q*4)%Math.max(1,Q.length-4),U=(((Q[J]&127)<<24|Q[J+1]<<16|Q[J+2]<<8|Q[J+3])%1e9).toString().padStart(9,"0");$+=U}return $.slice(0,X)}function p8(Q){let X=W0(Q);return Array.from(X).map(($)=>$.toString(16).padStart(2,"0")).join("")}var g0=1,c0="actioncodes",h0="actioncodes-revoke";function m(Q){let X=JSON.stringify({id:"actioncodes",ver:1,pubkey:Q.pubkey,windowStart:Q.windowStart});return new TextEncoder().encode(X)}function D8(Q){let X=JSON.stringify({id:"actioncodes-revoke",ver:1,pubkey:Q.pubkey,codeHash:Q.codeHash,windowStart:Q.windowStart});return new TextEncoder().encode(X)}function s(Q,X){let $=Math.floor(Date.now()/X)*X;return m({pubkey:Q,windowStart:$})}function G8(Q){let X=JSON.stringify({walletPubkey:Q.walletPubkey,delegatedPubkey:Q.delegatedPubkey,expiresAt:Q.expiresAt,chain:Q.chain});return new TextEncoder().encode(X)}var F8="NFC",i=256,w8=6,k8=24,d0=8,n0="0123456789",l0=["solana"];var L8="actioncodes:";function V8(Q){let X=D0(Q);if(X.int!=null)M8(X.int);let $=[`ver=${X.ver}`,`id=${encodeURIComponent(X.id)}`,`int=${encodeURIComponent(X.int)}`];if(X.p!=null&&Object.keys(X.p).length>0){let q=JSON.stringify(X.p);M8(q),$.push(`p=${encodeURIComponent(q)}`)}let Z=L8+$.join("&");return G0(Z),Z}function q8(Q){if(!Q.startsWith(L8))throw Error("protocol meta must start with actioncodes:");let $=Q.slice(L8.length).split("&").filter(Boolean),Z=new Map;for(let O of $){let[k,G]=O.split("=",2);if(!k)continue;let V=G!=null?decodeURIComponent(G):"";Z.set(k,V)}let q=Z.get("ver"),J=Z.get("id"),R=Z.get("int"),z=Z.get("p");if(q==null||J==null||R==null)throw Error("protocol meta missing required fields ver or id or int");let U=Number(q);if(!Number.isInteger(U)||U<=0)throw Error("protocol meta ver must be positive integer");let j;if(z!=null&&z!=="")try{if(j=JSON.parse(z),typeof j!=="object"||j===null||Array.isArray(j))throw Error("protocol meta p must be a JSON object")}catch{throw Error("protocol meta p must be valid JSON")}let N=D0({ver:U,id:J,int:R,p:j});if(N.int!=null)M8(N.int);if(N.p!=null)M8(JSON.stringify(N.p));if([...Z.keys()].filter((O)=>O!=="ver"&&O!=="id"&&O!=="int"&&O!=="p").length>0)throw Error("protocol meta contains unsupported keys");return G0(V8(N)),N}function s0(Q){try{return q8(Q),{ok:!0}}catch(X){return{ok:!1,reason:String(X)}}}function D0(Q){let X=Q.id.normalize(F8).trim(),$={ver:Q.ver,id:X,int:Q.int};if(Q.int!=null)$.int=Q.int.normalize(F8).trim();if(Q.p!=null)$.p=Q.p;return $}function G0(Q){if(new TextEncoder().encode(Q).length>i)throw Error(`protocol meta exceeds ${i} bytes`)}function M8(Q){if(new TextEncoder().encode(Q).length>i)throw Error(`protocol meta params exceed ${i} bytes`)}var F0;((D)=>{D.EXPIRED_CODE="EXPIRED_CODE";D.INVALID_CODE="INVALID_CODE";D.INVALID_CODE_FORMAT="INVALID_CODE_FORMAT";D.INVALID_SIGNATURE="INVALID_SIGNATURE";D.MISSING_META="MISSING_META";D.INVALID_META_FORMAT="INVALID_META_FORMAT";D.META_MISMATCH="META_MISMATCH";D.META_TOO_LARGE="META_TOO_LARGE";D.TRANSACTION_NOT_SIGNED_BY_INTENDED_OWNER="TRANSACTION_NOT_SIGNED_BY_INTENDED_OWNER";D.INVALID_TRANSACTION_FORMAT="INVALID_TRANSACTION_FORMAT";D.INVALID_PUBKEY_FORMAT="INVALID_PUBKEY_FORMAT";D.INVALID_INPUT="INVALID_INPUT";D.MISSING_REQUIRED_FIELD="MISSING_REQUIRED_FIELD";D.CRYPTO_ERROR="CRYPTO_ERROR";D.INVALID_DIGEST="INVALID_DIGEST";D.INVALID_ADAPTER="INVALID_ADAPTER"})(F0||={});class Y extends Error{code;details;constructor(Q,X,$){super(X);this.code=Q;this.details=$;this.name="ProtocolError"}static expiredCode(Q,X,$){return new S8(Q,X,$)}static invalidCode(){return new Y("INVALID_CODE","Invalid code provided",{})}static invalidCodeFormat(Q,X){return new g8(Q,X)}static invalidSignature(Q){return new u8(Q)}static missingMeta(){return new H8}static invalidMetaFormat(Q){return new Y("INVALID_META_FORMAT",`Invalid protocol meta format: ${Q}`,{reason:Q})}static metaMismatch(Q,X,$){return new _8(Q,X,$)}static metaTooLarge(Q,X){return new Y("META_TOO_LARGE",`Protocol meta too large: ${X} bytes (max: ${Q})`,{maxBytes:Q,actualBytes:X})}static transactionNotSignedByIntendedOwner(Q,X){return new A8(Q,X)}static invalidTransactionFormat(Q){return new Y("INVALID_TRANSACTION_FORMAT",`Invalid transaction format: ${Q}`,{reason:Q})}static invalidPubkeyFormat(Q,X){return new f8(Q,X)}static invalidInput(Q,X,$){return new Y("INVALID_INPUT",`Invalid ${Q}: ${$}`,{field:Q,value:X,reason:$})}static missingRequiredField(Q){return new Y("MISSING_REQUIRED_FIELD",`Missing required field: ${Q}`,{field:Q})}static cryptoError(Q,X){return new Y("CRYPTO_ERROR",`Crypto error in ${Q}: ${X}`,{operation:Q,reason:X})}static invalidDigest(Q){return new Y("INVALID_DIGEST",`Invalid digest: ${Q}`,{reason:Q})}static invalidAdapter(Q){return new c8(Q)}static create(Q,X,$){return new Y(Q,X,$)}}class S8 extends Y{constructor(Q,X,$){super("EXPIRED_CODE",`Action code '${Q}' expired at ${X}, current time: ${$}`,{code:Q,expiresAt:X,currentTime:$});this.name="ExpiredCodeError"}}class H8 extends Y{constructor(){super("MISSING_META","Transaction does not contain valid protocol meta");this.name="MissingMetaError"}}class _8 extends Y{constructor(Q,X,$){super("META_MISMATCH",`Meta ${$} mismatch: expected '${Q}', got '${X}'`,{expected:Q,actual:X,field:$});this.name="MetaMismatchError"}}class A8 extends Y{constructor(Q,X){super("TRANSACTION_NOT_SIGNED_BY_INTENDED_OWNER",`Transaction not signed by intended owner '${Q}'. Actual signers: [${X.join(", ")}]`,{intended:Q,actualSigners:X});this.name="TransactionNotSignedByIntendedOwnerError"}}class f8 extends Y{constructor(Q,X){super("INVALID_PUBKEY_FORMAT",`Invalid public key format '${Q}': ${X}`,{pubkey:Q,reason:X});this.name="InvalidPubkeyFormatError"}}class u8 extends Y{constructor(Q){super("INVALID_SIGNATURE",`Invalid signature: ${Q}`,{reason:Q});this.name="InvalidSignatureError"}}class g8 extends Y{constructor(Q,X){super("INVALID_CODE_FORMAT",`Invalid code format '${Q}': ${X}`,{code:Q,reason:X});this.name="InvalidCodeFormatError"}}class c8 extends Y{constructor(Q){super("INVALID_ADAPTER",`Invalid adapter: ${Q}`,{adapter:Q});this.name="InvalidAdapterError"}}var h8=o(require("bs58"));class r{config;constructor(Q){this.config=Q}generateCode(Q,X){let $=Q,Z=JSON.parse(new TextDecoder().decode($)),q=Z.pubkey,J=Z.windowStart,R;try{R=h8.default.decode(X)}catch{throw Y.invalidSignature("Invalid Base58 signature format")}let z=O8(R,$),U=Math.max(w8,Math.min(k8,this.config.codeLength)),j=8*Math.ceil(U/2),N=v8(z,j);return{actionCode:{code:W8(N,U),pubkey:q,timestamp:J,expiresAt:J+this.config.ttlMs,signature:X},canonicalMessage:$}}validateCode(Q){let X=Date.now();if(X>Q.expiresAt+(this.config.clockSkewMs??0))throw Y.expiredCode(Q.code,Q.expiresAt,X);let $=m({pubkey:Q.pubkey,windowStart:Q.timestamp});if(!Q.signature)throw Y.missingRequiredField("signature");let Z;try{Z=h8.default.decode(Q.signature)}catch{throw Y.invalidSignature("Invalid Base58 signature format")}let q=O8(Z,$),J=Math.max(w8,Math.min(k8,this.config.codeLength)),R=v8(q,8*Math.ceil(J/2));if(W8(R,J)!==Q.code)throw Y.invalidCode()}getCanonicalMessageParts(Q){return s(Q,this.config.ttlMs)}}var d8=require("@solana/web3.js"),n8=o(require("tweetnacl")),l8=o(require("bs58"));class I8{walletStrategy;config;constructor(Q){this.config=Q,this.walletStrategy=new r(Q)}generateDelegatedCode(Q,X){this.validateDelegationProof(Q);let $=s(Q.delegatedPubkey,this.config.ttlMs);return{actionCode:{...this.walletStrategy.generateCode($,X).actionCode,pubkey:Q.walletPubkey,delegationProof:Q}}}validateDelegatedCode(Q,X){let $=Date.now();if($>Q.expiresAt+(this.config.clockSkewMs??0))throw Y.expiredCode(Q.code,Q.expiresAt,$);if(this.validateDelegationProof(X),Q.pubkey!==X.walletPubkey||Q.pubkey!==Q.delegationProof.walletPubkey)throw Y.invalidInput("walletPubkey",Q.delegationProof.walletPubkey,"Action code wallet pubkey does not match delegation proof");if(Q.delegationProof.delegatedPubkey!==X.delegatedPubkey)throw Y.invalidInput("delegatedPubkey",Q.delegationProof.delegatedPubkey,"Invalid delegatedPubkey: Action code delegated pubkey does not match delegation proof");if(Q.delegationProof.expiresAt!==X.expiresAt)throw Y.invalidInput("expiresAt",Q.delegationProof.expiresAt,"Action code delegation expiration does not match delegation proof");if(!Q.delegationProof.signature)throw Y.missingRequiredField("delegationProof.signature");if(Q.delegationProof.signature!==X.signature)throw Y.invalidInput("signature",Q.delegationProof.signature,"Invalid signature: Action code delegation signature does not match delegation proof");let Z=m({pubkey:X.delegatedPubkey,windowStart:Q.timestamp}),q;try{q=l8.default.decode(Q.signature??"")}catch{throw Y.invalidSignature("Invalid Base58 delegated signature format")}let J=l8.default.decode(X.delegatedPubkey);if(!n8.default.sign.detached.verify(Z,q,J))throw Y.invalidSignature("Delegated signature verification failed")}validateDelegationProof(Q){if(!Q.walletPubkey||typeof Q.walletPubkey!=="string")throw Y.invalidInput("walletPubkey",Q.walletPubkey,"Wallet pubkey is required and must be a string");try{new d8.PublicKey(Q.walletPubkey)}catch{throw Y.invalidInput("walletPubkey",Q.walletPubkey,"Invalid wallet pubkey format")}if(!Q.delegatedPubkey||typeof Q.delegatedPubkey!=="string")throw Y.invalidInput("delegatedPubkey",Q.delegatedPubkey,"Delegated pubkey is required and must be a string");try{new d8.PublicKey(Q.delegatedPubkey)}catch{throw Y.invalidInput("delegatedPubkey",Q.delegatedPubkey,"Invalid delegated pubkey format")}if(!Q.chain||typeof Q.chain!=="string")throw Y.invalidInput("chain",Q.chain,"Chain is required and must be a string");if(Q.chain.length===0||Q.chain.length>50)throw Y.invalidInput("chain",Q.chain,"Chain must be between 1 and 50 characters");if(!/^[a-z0-9-]+$/.test(Q.chain))throw Y.invalidInput("chain",Q.chain,"Chain contains invalid characters (only lowercase letters, numbers, and hyphens allowed)");if(typeof Q.expiresAt!=="number"||!Number.isInteger(Q.expiresAt))throw Y.invalidInput("expiresAt",Q.expiresAt,"Expiration time must be a valid integer timestamp");if(Q.expiresAt<=0)throw Y.invalidInput("expiresAt",Q.expiresAt,"Expiration time must be positive");let X=Date.now(),$=31536000000;if(Q.expiresAt>X+$)throw Y.invalidInput("expiresAt",Q.expiresAt,"Expiration time is too far in the future");if(Q.expiresAt<X)throw Y.expiredCode("Delegation proof has expired",Q.expiresAt,X);if(!Q.signature||typeof Q.signature!=="string")throw Y.invalidInput("signature",Q.signature,"Delegation signature is required and must be a string");if(Q.signature.length===0||Q.signature.length>200)throw Y.invalidInput("signature",Q.signature,"Delegation signature must be between 1 and 200 characters")}getCanonicalMessageParts(Q){return s(Q,this.config.ttlMs)}}var A=o(require("tweetnacl")),c=o(require("bs58")),W=require("@solana/web3.js"),f=require("@solana/spl-memo");var h="solana";class a extends Y8{normalizePubkey(Q){if(typeof Q==="string")return new W.PublicKey(Q);return Q}verifyWithWallet(Q){if(Q.chain!==h)return!1;if(!Q.message||!Q.message.pubkey||!Q.walletSignature)return!1;try{let X=m(Q.message),$=this.normalizePubkey(Q.message.pubkey),Z=c.default.decode(Q.walletSignature),q=$.toBytes();if(Z.length!==64||q.length!==32)return!1;return A.default.sign.detached.verify(X,Z,q)}catch{return!1}}verifyWithDelegation(Q){if(Q.chain!==h)return!1;if(!Q.message.pubkey||!Q.delegatedSignature||!Q.delegationProof)return!1;let X=Q.delegationProof;if(!X.walletPubkey||!X.delegatedPubkey||!X.chain||!X.expiresAt||!X.signature)return!1;if(X.chain!==h)return!1;if(X.delegatedPubkey!==Q.message.pubkey)return!1;if(X.expiresAt<Date.now())return!1;try{let $=G8(X),Z=this.normalizePubkey(X.walletPubkey),q=c.default.decode(X.signature),J=Z.toBytes(),R=m(Q.message),z=this.normalizePubkey(X.delegatedPubkey),U=c.default.decode(Q.delegatedSignature),j=z.toBytes();if(q.length!==64||J.length!==32)return!1;if(U.length!==64||j.length!==32)return!1;let N=A.default.sign.detached.verify($,q,J),K=A.default.sign.detached.verify(R,U,j);return N&&K}catch{return!1}}verifyRevokeWithWallet(Q){if(Q.chain!==h)return!1;if(!Q.message||!Q.message.pubkey||!Q.walletSignature)return!1;try{let X=D8(Q.message),$=this.normalizePubkey(Q.message.pubkey),Z=c.default.decode(Q.walletSignature),q=$.toBytes();if(Z.length!==64||q.length!==32)return!1;return A.default.sign.detached.verify(X,Z,q)}catch{return!1}}verifyRevokeWithDelegation(Q){if(Q.chain!==h)return!1;if(!Q.message||!Q.message.pubkey||!Q.delegatedSignature||!Q.delegationProof)return!1;let X=Q.delegationProof;if(!X.walletPubkey||!X.delegatedPubkey||!X.chain||!X.expiresAt||!X.signature)return!1;if(X.chain!==h)return!1;if(X.delegatedPubkey!==Q.message.pubkey)return!1;if(X.expiresAt<Date.now())return!1;try{let $=G8(X),Z=this.normalizePubkey(X.walletPubkey),q=c.default.decode(X.signature),J=Z.toBytes();if(q.length!==64||J.length!==32)return!1;if(!A.default.sign.detached.verify($,q,J))return!1;let z=D8(Q.message),U=this.normalizePubkey(X.delegatedPubkey),j=c.default.decode(Q.delegatedSignature),N=U.toBytes();if(j.length!==64||N.length!==32)return!1;return A.default.sign.detached.verify(z,j,N)}catch{return!1}}static createProtocolMetaIx(Q){let X=V8(Q);return f.createMemoInstruction(X)}getProtocolMeta(Q){try{let X=this.deserializeTransaction(Q);for(let $ of this.getMemoInstructions(X)){let Z=$.data;try{let q=new TextDecoder().decode(Z);if(q8(q))return q}catch{}}return null}catch{return null}}deserializeTransaction(Q){try{let X=W.VersionedTransaction.deserialize(Buffer.from(Q,"base64"));if(X.message instanceof W.MessageV0)return X;else return W.Transaction.from(Buffer.from(Q,"base64"))}catch{try{return W.Transaction.from(Buffer.from(Q,"base64"))}catch{throw Y.invalidTransactionFormat("Invalid base64 transaction format")}}}parseMeta(Q){let X=this.getProtocolMeta(Q);if(!X)return null;return q8(X)}getMemoInstructions(Q){if(Q instanceof W.Transaction)return Q.instructions.filter((X)=>X.programId.equals(f.MEMO_PROGRAM_ID));else{let $=Q.message;if($ instanceof W.MessageV0){let Z=[];for(let q of $.compiledInstructions){let J=$.staticAccountKeys[q.programIdIndex];if(J&&J.equals(f.MEMO_PROGRAM_ID)){let R=q.accountKeyIndexes.map((z)=>({pubkey:$.staticAccountKeys[z],isSigner:!1,isWritable:!1}));Z.push(new W.TransactionInstruction({keys:R,programId:J,data:q.data}))}}return Z}return[]}}verifyTransactionMatchesCode(Q,X){let $=Date.now();if($>Q.expiresAt)throw Y.expiredCode(Q.code,Q.expiresAt,$);let Z=this.parseMeta(X);if(!Z)throw Y.missingMeta();if(Z.ver!==2)throw Y.metaMismatch("2",String(Z.ver),"ver");let q=p8(Q.code);if(Z.id!==q)throw Y.metaMismatch(q,Z.id,"id");if(Z.int!==Q.pubkey)throw Y.metaMismatch(Q.pubkey,Z.int,"int")}verifyTransactionSignedByIntentOwner(Q){let X=this.parseMeta(Q);if(!X)throw Y.missingMeta();let $=X.int;if(!$)throw Y.invalidMetaFormat("Missing 'int' (intendedFor) field");let Z;try{Z=new W.PublicKey($)}catch{throw Y.invalidPubkeyFormat($,"Invalid public key format")}let q=this.deserializeTransaction(Q),J=[];if(q instanceof W.Transaction){if(!q.signatures.some((z)=>{if(!z.signature)return!1;return J.push(z.publicKey.toString()),z.publicKey.equals(Z)}))throw Y.transactionNotSignedByIntendedOwner($,J);return}if(q instanceof W.VersionedTransaction){let R=q.message;if(R instanceof W.MessageV0){let z=R.header.numRequiredSignatures;for(let U=0;U<z;U++){let j=R.staticAccountKeys[U];if(j){if(J.push(j.toString()),j.equals(Z))return}}throw Y.transactionNotSignedByIntendedOwner($,J)}}throw Y.invalidTransactionFormat("Unsupported transaction format")}static attachProtocolMeta(Q,X){if(new a().getProtocolMeta(Q))throw Y.invalidTransactionFormat("Transaction already contains protocol meta. Cannot attach additional protocol meta.");let q=a.createProtocolMetaIx(X);try{let J=W.VersionedTransaction.deserialize(Buffer.from(Q,"base64"));if(J.message instanceof W.MessageV0){let R=J.message,z=[...R.staticAccountKeys];if(!z.some((O)=>O.equals(f.MEMO_PROGRAM_ID)))z.push(f.MEMO_PROGRAM_ID);let j={programIdIndex:z.findIndex((O)=>O.equals(f.MEMO_PROGRAM_ID)),accountKeyIndexes:[],data:q.data},N=new W.MessageV0({header:R.header,staticAccountKeys:z,recentBlockhash:R.recentBlockhash,compiledInstructions:[...R.compiledInstructions,j],addressTableLookups:R.addressTableLookups}),K=new W.VersionedTransaction(N);return K.signatures=J.signatures,Buffer.from(K.serialize()).toString("base64")}else{let R=W.Transaction.from(Buffer.from(Q,"base64"));return R.add(q),Buffer.from(R.serialize({requireAllSignatures:!1})).toString("base64")}}catch{try{let J=W.Transaction.from(Buffer.from(Q,"base64"));return J.add(q),Buffer.from(J.serialize({requireAllSignatures:!1})).toString("base64")}catch{throw Y.invalidTransactionFormat("Invalid base64 transaction format")}}}}class w0{config;adapters={};_walletStrategy;_delegationStrategy;constructor(Q){this.config=Q;this.adapters.solana=new a,this._walletStrategy=new r(Q),this._delegationStrategy=new I8(Q)}getConfig(){return this.config}registerAdapter(Q,X){this.adapters[Q]=X}getAdapter(Q){return this.adapters[Q]}get adapter(){return{solana:this.adapters.solana}}get walletStrategy(){return this._walletStrategy}get delegationStrategy(){return this._delegationStrategy}generateCode(Q,X,$){if(Q==="wallet"){if(!$)throw Y.invalidSignature("Missing signature over canonical message");return this.walletStrategy.generateCode(X,$)}else{if(!$)throw Y.invalidSignature("Missing delegated signature");return this.delegationStrategy.generateDelegatedCode(X,$)}}validateCode(Q,X,$){if(Q==="wallet"){if(this.walletStrategy.validateCode(X),!$)return;let Z=$,q=this.getAdapter(Z.chain);if(!q)throw Y.invalidAdapter(Z.chain);if(!q.verifyWithWallet({...Z,message:{pubkey:X.pubkey,windowStart:X.timestamp}}))throw Y.invalidSignature("Wallet signature verification failed")}else{let Z=$;this.delegationStrategy.validateDelegatedCode(X,Z.delegationProof);let q=this.getAdapter(Z.chain);if(!q)throw Y.invalidAdapter(Z.chain);if(!q.verifyWithDelegation({...Z,message:{pubkey:X.pubkey,windowStart:X.timestamp}}))throw Y.invalidSignature("Delegation signature verification failed")}}}
1
+ var L0=Object.create;var{getPrototypeOf:M0,defineProperty:t,getOwnPropertyNames:r8,getOwnPropertyDescriptor:V0}=Object,a8=Object.prototype.hasOwnProperty;var o=(Q,X,$)=>{$=Q!=null?L0(M0(Q)):{};let Z=X||!Q||!Q.__esModule?t($,"default",{value:Q,enumerable:!0}):$;for(let q of r8(Q))if(!a8.call(Z,q))t(Z,q,{get:()=>Q[q],enumerable:!0});return Z},i8=new WeakMap,I0=(Q)=>{var X=i8.get(Q),$;if(X)return X;if(X=t({},"__esModule",{value:!0}),Q&&typeof Q==="object"||typeof Q==="function")r8(Q).map((Z)=>!a8.call(X,Z)&&t(X,Z,{get:()=>Q[Z],enumerable:!($=V0(Q,Z))||$.enumerable}));return i8.set(Q,X),X};var T0=(Q,X)=>{for(var $ in X)t(Q,$,{get:X[$],enumerable:!0,configurable:!0,set:(Z)=>X[$]=()=>Z})};var i0={};T0(i0,{validateProtocolMetaFormat:()=>s0,truncateBits:()=>v8,sha256:()=>W0,serializeDelegationProof:()=>G8,serializeCanonicalRevoke:()=>D8,serializeCanonical:()=>m,parseProtocolMeta:()=>q8,hmacSha256:()=>O8,hkdfSha256:()=>f0,getCanonicalMessageParts:()=>s,digestToDigits:()=>W8,codeHash:()=>p8,buildProtocolMeta:()=>V8,base32EncodeCrockford:()=>u0,WalletStrategy:()=>r,TransactionNotSignedByIntendedOwnerError:()=>A8,SolanaAdapter:()=>a,SUPPORTED_CHAINS:()=>l0,SCHEME:()=>L8,ProtocolErrorCode:()=>F0,ProtocolError:()=>Y,PROTOCOL_NORMALIZATION:()=>F8,PROTOCOL_META_MAX_BYTES:()=>i,MissingMetaError:()=>H8,MetaMismatchError:()=>_8,InvalidSignatureError:()=>u8,InvalidPubkeyFormatError:()=>f8,InvalidCodeFormatError:()=>g8,InvalidAdapterError:()=>c8,ExpiredCodeError:()=>S8,DelegationStrategy:()=>I8,CODE_MIN_LENGTH:()=>w8,CODE_MAX_LENGTH:()=>k8,CODE_DEFAULT_LENGTH:()=>d0,CODE_CHARSET_DIGITS:()=>n0,CANONICAL_REVOKE_MESSAGE_PREFIX:()=>h0,CANONICAL_MESSAGE_VERSION:()=>g0,CANONICAL_MESSAGE_PREFIX:()=>c0,BaseChainAdapter:()=>Y8,ActionCodesProtocol:()=>w0,ADAPTER_CHAIN_NAME:()=>h});module.exports=I0(i0);class Y8{}/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */function x0(Q){return Q instanceof Uint8Array||ArrayBuffer.isView(Q)&&Q.constructor.name==="Uint8Array"}function N8(Q,X=""){if(!Number.isSafeInteger(Q)||Q<0){let $=X&&`"${X}" `;throw Error(`${$}expected integer >= 0, got ${Q}`)}}function p(Q,X,$=""){let Z=x0(Q),q=Q?.length,J=X!==void 0;if(!Z||J&&q!==X){let R=$&&`"${$}" `,z=J?` of length ${X}`:"",U=Z?`length=${q}`:`type=${typeof Q}`;throw Error(R+"expected Uint8Array"+z+", got "+U)}return Q}function Q8(Q){if(typeof Q!=="function"||typeof Q.create!=="function")throw Error("Hash must wrapped by utils.createHasher");N8(Q.outputLen),N8(Q.blockLen)}function d(Q,X=!0){if(Q.destroyed)throw Error("Hash instance has been destroyed");if(X&&Q.finished)throw Error("Hash#digest() has already been called")}function e8(Q,X){p(Q,void 0,"digestInto() output");let $=X.outputLen;if(Q.length<$)throw Error('"digestInto() output" expected to be of length >='+$)}function I(...Q){for(let X=0;X<Q.length;X++)Q[X].fill(0)}function z8(Q){return new DataView(Q.buffer,Q.byteOffset,Q.byteLength)}function T(Q,X){return Q<<32-X|Q>>>X}function t8(Q,X={}){let $=(q,J)=>Q(J).update(q).digest(),Z=Q(void 0);return $.outputLen=Z.outputLen,$.blockLen=Z.blockLen,$.create=(q)=>Q(q),Object.assign($,X),Object.freeze($)}var o8=(Q)=>({oid:Uint8Array.from([6,9,96,134,72,1,101,3,4,2,Q])});function Q0(Q,X,$){return Q&X^~Q&$}function X0(Q,X,$){return Q&X^Q&$^X&$}class U8{blockLen;outputLen;padOffset;isLE;buffer;view;finished=!1;length=0;pos=0;destroyed=!1;constructor(Q,X,$,Z){this.blockLen=Q,this.outputLen=X,this.padOffset=$,this.isLE=Z,this.buffer=new Uint8Array(Q),this.view=z8(this.buffer)}update(Q){d(this),p(Q);let{view:X,buffer:$,blockLen:Z}=this,q=Q.length;for(let J=0;J<q;){let R=Math.min(Z-this.pos,q-J);if(R===Z){let z=z8(Q);for(;Z<=q-J;J+=Z)this.process(z,J);continue}if($.set(Q.subarray(J,J+R),this.pos),this.pos+=R,J+=R,this.pos===Z)this.process(X,0),this.pos=0}return this.length+=Q.length,this.roundClean(),this}digestInto(Q){d(this),e8(Q,this),this.finished=!0;let{buffer:X,view:$,blockLen:Z,isLE:q}=this,{pos:J}=this;if(X[J++]=128,I(this.buffer.subarray(J)),this.padOffset>Z-J)this.process($,0),J=0;for(let N=J;N<Z;N++)X[N]=0;$.setBigUint64(Z-8,BigInt(this.length*8),q),this.process($,0);let R=z8(Q),z=this.outputLen;if(z%4)throw Error("_sha2: outputLen must be aligned to 32bit");let U=z/4,j=this.get();if(U>j.length)throw Error("_sha2: outputLen bigger than state");for(let N=0;N<U;N++)R.setUint32(4*N,j[N],q)}digest(){let{buffer:Q,outputLen:X}=this;this.digestInto(Q);let $=Q.slice(0,X);return this.destroy(),$}_cloneInto(Q){Q||=new this.constructor,Q.set(...this.get());let{blockLen:X,buffer:$,length:Z,finished:q,destroyed:J,pos:R}=this;if(Q.destroyed=J,Q.finished=q,Q.length=Z,Q.pos=R,Z%X)Q.buffer.set($);return Q}clone(){return this._cloneInto()}}var E=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),y=Uint32Array.from([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428]),F=Uint32Array.from([3418070365,3238371032,1654270250,914150663,2438529370,812702999,355462360,4144912697,1731405415,4290775857,2394180231,1750603025,3675008525,1694076839,1203062813,3204075428]),w=Uint32Array.from([1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209]);var j8=BigInt(4294967295),$0=BigInt(32);function b0(Q,X=!1){if(X)return{h:Number(Q&j8),l:Number(Q>>$0&j8)};return{h:Number(Q>>$0&j8)|0,l:Number(Q&j8)|0}}function Z0(Q,X=!1){let $=Q.length,Z=new Uint32Array($),q=new Uint32Array($);for(let J=0;J<$;J++){let{h:R,l:z}=b0(Q[J],X);[Z[J],q[J]]=[R,z]}return[Z,q]}var E8=(Q,X,$)=>Q>>>$,y8=(Q,X,$)=>Q<<32-$|X>>>$,u=(Q,X,$)=>Q>>>$|X<<32-$,g=(Q,X,$)=>Q<<32-$|X>>>$,X8=(Q,X,$)=>Q<<64-$|X>>>$-32,$8=(Q,X,$)=>Q>>>$-32|X<<64-$;function x(Q,X,$,Z){let q=(X>>>0)+(Z>>>0);return{h:Q+$+(q/4294967296|0)|0,l:q|0}}var q0=(Q,X,$)=>(Q>>>0)+(X>>>0)+($>>>0),J0=(Q,X,$,Z)=>X+$+Z+(Q/4294967296|0)|0,R0=(Q,X,$,Z)=>(Q>>>0)+(X>>>0)+($>>>0)+(Z>>>0),Y0=(Q,X,$,Z,q)=>X+$+Z+q+(Q/4294967296|0)|0,N0=(Q,X,$,Z,q)=>(Q>>>0)+(X>>>0)+($>>>0)+(Z>>>0)+(q>>>0),z0=(Q,X,$,Z,q,J)=>X+$+Z+q+J+(Q/4294967296|0)|0;var E0=Uint32Array.from([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]),S=new Uint32Array(64);class m8 extends U8{constructor(Q){super(64,Q,8,!1)}get(){let{A:Q,B:X,C:$,D:Z,E:q,F:J,G:R,H:z}=this;return[Q,X,$,Z,q,J,R,z]}set(Q,X,$,Z,q,J,R,z){this.A=Q|0,this.B=X|0,this.C=$|0,this.D=Z|0,this.E=q|0,this.F=J|0,this.G=R|0,this.H=z|0}process(Q,X){for(let N=0;N<16;N++,X+=4)S[N]=Q.getUint32(X,!1);for(let N=16;N<64;N++){let K=S[N-15],O=S[N-2],k=T(K,7)^T(K,18)^K>>>3,G=T(O,17)^T(O,19)^O>>>10;S[N]=G+S[N-7]+k+S[N-16]|0}let{A:$,B:Z,C:q,D:J,E:R,F:z,G:U,H:j}=this;for(let N=0;N<64;N++){let K=T(R,6)^T(R,11)^T(R,25),O=j+K+Q0(R,z,U)+E0[N]+S[N]|0,G=(T($,2)^T($,13)^T($,22))+X0($,Z,q)|0;j=U,U=z,z=R,R=J+O|0,J=q,q=Z,Z=$,$=O+G|0}$=$+this.A|0,Z=Z+this.B|0,q=q+this.C|0,J=J+this.D|0,R=R+this.E|0,z=z+this.F|0,U=U+this.G|0,j=j+this.H|0,this.set($,Z,q,J,R,z,U,j)}roundClean(){I(S)}destroy(){this.set(0,0,0,0,0,0,0,0),I(this.buffer)}}class U0 extends m8{A=E[0]|0;B=E[1]|0;C=E[2]|0;D=E[3]|0;E=E[4]|0;F=E[5]|0;G=E[6]|0;H=E[7]|0;constructor(){super(32)}}class y0 extends m8{A=y[0]|0;B=y[1]|0;C=y[2]|0;D=y[3]|0;E=y[4]|0;F=y[5]|0;G=y[6]|0;H=y[7]|0;constructor(){super(28)}}var j0=(()=>Z0(["0x428a2f98d728ae22","0x7137449123ef65cd","0xb5c0fbcfec4d3b2f","0xe9b5dba58189dbbc","0x3956c25bf348b538","0x59f111f1b605d019","0x923f82a4af194f9b","0xab1c5ed5da6d8118","0xd807aa98a3030242","0x12835b0145706fbe","0x243185be4ee4b28c","0x550c7dc3d5ffb4e2","0x72be5d74f27b896f","0x80deb1fe3b1696b1","0x9bdc06a725c71235","0xc19bf174cf692694","0xe49b69c19ef14ad2","0xefbe4786384f25e3","0x0fc19dc68b8cd5b5","0x240ca1cc77ac9c65","0x2de92c6f592b0275","0x4a7484aa6ea6e483","0x5cb0a9dcbd41fbd4","0x76f988da831153b5","0x983e5152ee66dfab","0xa831c66d2db43210","0xb00327c898fb213f","0xbf597fc7beef0ee4","0xc6e00bf33da88fc2","0xd5a79147930aa725","0x06ca6351e003826f","0x142929670a0e6e70","0x27b70a8546d22ffc","0x2e1b21385c26c926","0x4d2c6dfc5ac42aed","0x53380d139d95b3df","0x650a73548baf63de","0x766a0abb3c77b2a8","0x81c2c92e47edaee6","0x92722c851482353b","0xa2bfe8a14cf10364","0xa81a664bbc423001","0xc24b8b70d0f89791","0xc76c51a30654be30","0xd192e819d6ef5218","0xd69906245565a910","0xf40e35855771202a","0x106aa07032bbd1b8","0x19a4c116b8d2d0c8","0x1e376c085141ab53","0x2748774cdf8eeb99","0x34b0bcb5e19b48a8","0x391c0cb3c5c95a63","0x4ed8aa4ae3418acb","0x5b9cca4f7763e373","0x682e6ff3d6b2b8a3","0x748f82ee5defb2fc","0x78a5636f43172f60","0x84c87814a1f0ab72","0x8cc702081a6439ec","0x90befffa23631e28","0xa4506cebde82bde9","0xbef9a3f7b2c67915","0xc67178f2e372532b","0xca273eceea26619c","0xd186b8c721c0c207","0xeada7dd6cde0eb1e","0xf57d4f7fee6ed178","0x06f067aa72176fba","0x0a637dc5a2c898a6","0x113f9804bef90dae","0x1b710b35131c471b","0x28db77f523047d84","0x32caab7b40c72493","0x3c9ebe0a15c9bebc","0x431d67c49c100d4c","0x4cc5d4becb3e42b6","0x597f299cfc657e2a","0x5fcb6fab3ad6faec","0x6c44198c4a475817"].map((Q)=>BigInt(Q))))(),m0=(()=>j0[0])(),B0=(()=>j0[1])(),H=new Uint32Array(80),_=new Uint32Array(80);class Z8 extends U8{constructor(Q){super(128,Q,16,!1)}get(){let{Ah:Q,Al:X,Bh:$,Bl:Z,Ch:q,Cl:J,Dh:R,Dl:z,Eh:U,El:j,Fh:N,Fl:K,Gh:O,Gl:k,Hh:G,Hl:V}=this;return[Q,X,$,Z,q,J,R,z,U,j,N,K,O,k,G,V]}set(Q,X,$,Z,q,J,R,z,U,j,N,K,O,k,G,V){this.Ah=Q|0,this.Al=X|0,this.Bh=$|0,this.Bl=Z|0,this.Ch=q|0,this.Cl=J|0,this.Dh=R|0,this.Dl=z|0,this.Eh=U|0,this.El=j|0,this.Fh=N|0,this.Fl=K|0,this.Gh=O|0,this.Gl=k|0,this.Hh=G|0,this.Hl=V|0}process(Q,X){for(let v=0;v<16;v++,X+=4)H[v]=Q.getUint32(X),_[v]=Q.getUint32(X+=4);for(let v=16;v<80;v++){let B=H[v-15]|0,P=_[v-15]|0,T8=u(B,P,1)^u(B,P,8)^E8(B,P,7),x8=g(B,P,1)^g(B,P,8)^y8(B,P,7),b=H[v-2]|0,C=_[v-2]|0,J8=u(b,C,19)^X8(b,C,61)^E8(b,C,6),b8=g(b,C,19)^$8(b,C,61)^y8(b,C,6),R8=R0(x8,b8,_[v-7],_[v-16]),C8=Y0(R8,T8,J8,H[v-7],H[v-16]);H[v]=C8|0,_[v]=R8|0}let{Ah:$,Al:Z,Bh:q,Bl:J,Ch:R,Cl:z,Dh:U,Dl:j,Eh:N,El:K,Fh:O,Fl:k,Gh:G,Gl:V,Hh:D,Hl:e}=this;for(let v=0;v<80;v++){let B=u(N,K,14)^u(N,K,18)^X8(N,K,41),P=g(N,K,14)^g(N,K,18)^$8(N,K,41),T8=N&O^~N&G,x8=K&k^~K&V,b=N0(e,P,x8,B0[v],_[v]),C=z0(b,D,B,T8,m0[v],H[v]),J8=b|0,b8=u($,Z,28)^X8($,Z,34)^X8($,Z,39),R8=g($,Z,28)^$8($,Z,34)^$8($,Z,39),C8=$&q^$&R^q&R,k0=Z&J^Z&z^J&z;D=G|0,e=V|0,G=O|0,V=k|0,O=N|0,k=K|0,{h:N,l:K}=x(U|0,j|0,C|0,J8|0),U=R|0,j=z|0,R=q|0,z=J|0,q=$|0,J=Z|0;let s8=q0(J8,R8,k0);$=J0(s8,C,b8,C8),Z=s8|0}({h:$,l:Z}=x(this.Ah|0,this.Al|0,$|0,Z|0)),{h:q,l:J}=x(this.Bh|0,this.Bl|0,q|0,J|0),{h:R,l:z}=x(this.Ch|0,this.Cl|0,R|0,z|0),{h:U,l:j}=x(this.Dh|0,this.Dl|0,U|0,j|0),{h:N,l:K}=x(this.Eh|0,this.El|0,N|0,K|0),{h:O,l:k}=x(this.Fh|0,this.Fl|0,O|0,k|0),{h:G,l:V}=x(this.Gh|0,this.Gl|0,G|0,V|0),{h:D,l:e}=x(this.Hh|0,this.Hl|0,D|0,e|0),this.set($,Z,q,J,R,z,U,j,N,K,O,k,G,V,D,e)}roundClean(){I(H,_)}destroy(){I(this.buffer),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}}class P0 extends Z8{Ah=w[0]|0;Al=w[1]|0;Bh=w[2]|0;Bl=w[3]|0;Ch=w[4]|0;Cl=w[5]|0;Dh=w[6]|0;Dl=w[7]|0;Eh=w[8]|0;El=w[9]|0;Fh=w[10]|0;Fl=w[11]|0;Gh=w[12]|0;Gl=w[13]|0;Hh=w[14]|0;Hl=w[15]|0;constructor(){super(64)}}class p0 extends Z8{Ah=F[0]|0;Al=F[1]|0;Bh=F[2]|0;Bl=F[3]|0;Ch=F[4]|0;Cl=F[5]|0;Dh=F[6]|0;Dl=F[7]|0;Eh=F[8]|0;El=F[9]|0;Fh=F[10]|0;Fl=F[11]|0;Gh=F[12]|0;Gl=F[13]|0;Hh=F[14]|0;Hl=F[15]|0;constructor(){super(48)}}var L=Uint32Array.from([2352822216,424955298,1944164710,2312950998,502970286,855612546,1738396948,1479516111,258812777,2077511080,2011393907,79989058,1067287976,1780299464,286451373,2446758561]),M=Uint32Array.from([573645204,4230739756,2673172387,3360449730,596883563,1867755857,2520282905,1497426621,2519219938,2827943907,3193839141,1401305490,721525244,746961066,246885852,2177182882]);class S0 extends Z8{Ah=L[0]|0;Al=L[1]|0;Bh=L[2]|0;Bl=L[3]|0;Ch=L[4]|0;Cl=L[5]|0;Dh=L[6]|0;Dl=L[7]|0;Eh=L[8]|0;El=L[9]|0;Fh=L[10]|0;Fl=L[11]|0;Gh=L[12]|0;Gl=L[13]|0;Hh=L[14]|0;Hl=L[15]|0;constructor(){super(28)}}class H0 extends Z8{Ah=M[0]|0;Al=M[1]|0;Bh=M[2]|0;Bl=M[3]|0;Ch=M[4]|0;Cl=M[5]|0;Dh=M[6]|0;Dl=M[7]|0;Eh=M[8]|0;El=M[9]|0;Fh=M[10]|0;Fl=M[11]|0;Gh=M[12]|0;Gl=M[13]|0;Hh=M[14]|0;Hl=M[15]|0;constructor(){super(32)}}var K8=t8(()=>new U0,o8(1));class B8{oHash;iHash;blockLen;outputLen;finished=!1;destroyed=!1;constructor(Q,X){if(Q8(Q),p(X,void 0,"key"),this.iHash=Q.create(),typeof this.iHash.update!=="function")throw Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;let $=this.blockLen,Z=new Uint8Array($);Z.set(X.length>$?Q.create().update(X).digest():X);for(let q=0;q<Z.length;q++)Z[q]^=54;this.iHash.update(Z),this.oHash=Q.create();for(let q=0;q<Z.length;q++)Z[q]^=106;this.oHash.update(Z),I(Z)}update(Q){return d(this),this.iHash.update(Q),this}digestInto(Q){d(this),p(Q,this.outputLen,"output"),this.finished=!0,this.iHash.digestInto(Q),this.oHash.update(Q),this.oHash.digestInto(Q),this.destroy()}digest(){let Q=new Uint8Array(this.oHash.outputLen);return this.digestInto(Q),Q}_cloneInto(Q){Q||=Object.create(Object.getPrototypeOf(this),{});let{oHash:X,iHash:$,finished:Z,destroyed:q,blockLen:J,outputLen:R}=this;return Q=Q,Q.finished=Z,Q.destroyed=q,Q.blockLen=J,Q.outputLen=R,Q.oHash=X._cloneInto(Q.oHash),Q.iHash=$._cloneInto(Q.iHash),Q}clone(){return this._cloneInto()}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}}var n=(Q,X,$)=>new B8(Q,X).update($).digest();n.create=(Q,X)=>new B8(Q,X);function _0(Q,X,$){if(Q8(Q),$===void 0)$=new Uint8Array(Q.outputLen);return n(Q,$,X)}var P8=Uint8Array.of(0),K0=Uint8Array.of();function A0(Q,X,$,Z=32){Q8(Q),N8(Z,"length");let q=Q.outputLen;if(Z>255*q)throw Error("Length must be <= 255*HashLen");let J=Math.ceil(Z/q);if($===void 0)$=K0;else p($,void 0,"info");let R=new Uint8Array(J*q),z=n.create(Q,X),U=z._cloneInto(),j=new Uint8Array(z.outputLen);for(let N=0;N<J;N++)P8[0]=N+1,U.update(N===0?K0:j).update($).update(P8).digestInto(j),R.set(j,q*N),z._cloneInto(U);return z.destroy(),U.destroy(),I(j,P8),R.slice(0,Z)}var O0=(Q,X,$,Z,q)=>A0(Q,_0(Q,X,$),Z,q);function l(Q){if(typeof Q==="string")return new TextEncoder().encode(Q);return Q}function W0(Q){return K8(l(Q))}function O8(Q,X){return n(K8,l(Q),l(X))}function f0(Q,X,{salt:$,info:Z}={}){let q=$?l($):new Uint8Array(32),J=l(Q),R=Z?l(Z):new Uint8Array(0);return O0(K8,J,q,R,X)}var v0="0123456789ABCDEFGHJKMNPQRSTVWXYZ";function u0(Q){let X=0,$=0,Z="";for(let q=0;q<Q.length;q++){$=$<<8|Q[q],X+=8;while(X>=5)Z+=v0[$>>>X-5&31],X-=5}if(X>0)Z+=v0[$<<5-X&31];return Z}function v8(Q,X){let $=Math.ceil(X/8),Z=new Uint8Array($),q=Math.min($,Q.length);Z.set(Q.subarray(0,q));let J=$*8-X;if(J>0){let R=255<<J;Z[$-1]=Z[$-1]&R}return Z}function W8(Q,X){if(Q.length===0)throw Error("digestToDigits: empty digest");let $="",Z=Q[Q.length-1]&15;for(let q=0;$.length<X;q++){let J=(Z+q*4)%Math.max(1,Q.length-4),U=(((Q[J]&127)<<24|Q[J+1]<<16|Q[J+2]<<8|Q[J+3])%1e9).toString().padStart(9,"0");$+=U}return $.slice(0,X)}function p8(Q){let X=W0(Q);return Array.from(X).map(($)=>$.toString(16).padStart(2,"0")).join("")}var g0=1,c0="actioncodes",h0="actioncodes-revoke";function m(Q){let X=JSON.stringify({id:"actioncodes",ver:1,pubkey:Q.pubkey,windowStart:Q.windowStart});return new TextEncoder().encode(X)}function D8(Q){let X=JSON.stringify({id:"actioncodes-revoke",ver:1,pubkey:Q.pubkey,codeHash:Q.codeHash,windowStart:Q.windowStart});return new TextEncoder().encode(X)}function s(Q){return m({pubkey:Q,windowStart:Date.now()})}function G8(Q){let X=JSON.stringify({walletPubkey:Q.walletPubkey,delegatedPubkey:Q.delegatedPubkey,expiresAt:Q.expiresAt,chain:Q.chain});return new TextEncoder().encode(X)}var F8="NFC",i=256,w8=6,k8=24,d0=8,n0="0123456789",l0=["solana"];var L8="actioncodes:";function V8(Q){let X=D0(Q);if(X.int!=null)M8(X.int);let $=[`ver=${X.ver}`,`id=${encodeURIComponent(X.id)}`,`int=${encodeURIComponent(X.int)}`];if(X.p!=null&&Object.keys(X.p).length>0){let q=JSON.stringify(X.p);M8(q),$.push(`p=${encodeURIComponent(q)}`)}let Z=L8+$.join("&");return G0(Z),Z}function q8(Q){if(!Q.startsWith(L8))throw Error("protocol meta must start with actioncodes:");let $=Q.slice(L8.length).split("&").filter(Boolean),Z=new Map;for(let O of $){let[k,G]=O.split("=",2);if(!k)continue;let V=G!=null?decodeURIComponent(G):"";Z.set(k,V)}let q=Z.get("ver"),J=Z.get("id"),R=Z.get("int"),z=Z.get("p");if(q==null||J==null||R==null)throw Error("protocol meta missing required fields ver or id or int");let U=Number(q);if(!Number.isInteger(U)||U<=0)throw Error("protocol meta ver must be positive integer");let j;if(z!=null&&z!=="")try{if(j=JSON.parse(z),typeof j!=="object"||j===null||Array.isArray(j))throw Error("protocol meta p must be a JSON object")}catch{throw Error("protocol meta p must be valid JSON")}let N=D0({ver:U,id:J,int:R,p:j});if(N.int!=null)M8(N.int);if(N.p!=null)M8(JSON.stringify(N.p));if([...Z.keys()].filter((O)=>O!=="ver"&&O!=="id"&&O!=="int"&&O!=="p").length>0)throw Error("protocol meta contains unsupported keys");return G0(V8(N)),N}function s0(Q){try{return q8(Q),{ok:!0}}catch(X){return{ok:!1,reason:String(X)}}}function D0(Q){let X=Q.id.normalize(F8).trim(),$={ver:Q.ver,id:X,int:Q.int};if(Q.int!=null)$.int=Q.int.normalize(F8).trim();if(Q.p!=null)$.p=Q.p;return $}function G0(Q){if(new TextEncoder().encode(Q).length>i)throw Error(`protocol meta exceeds ${i} bytes`)}function M8(Q){if(new TextEncoder().encode(Q).length>i)throw Error(`protocol meta params exceed ${i} bytes`)}var F0;((D)=>{D.EXPIRED_CODE="EXPIRED_CODE";D.INVALID_CODE="INVALID_CODE";D.INVALID_CODE_FORMAT="INVALID_CODE_FORMAT";D.INVALID_SIGNATURE="INVALID_SIGNATURE";D.MISSING_META="MISSING_META";D.INVALID_META_FORMAT="INVALID_META_FORMAT";D.META_MISMATCH="META_MISMATCH";D.META_TOO_LARGE="META_TOO_LARGE";D.TRANSACTION_NOT_SIGNED_BY_INTENDED_OWNER="TRANSACTION_NOT_SIGNED_BY_INTENDED_OWNER";D.INVALID_TRANSACTION_FORMAT="INVALID_TRANSACTION_FORMAT";D.INVALID_PUBKEY_FORMAT="INVALID_PUBKEY_FORMAT";D.INVALID_INPUT="INVALID_INPUT";D.MISSING_REQUIRED_FIELD="MISSING_REQUIRED_FIELD";D.CRYPTO_ERROR="CRYPTO_ERROR";D.INVALID_DIGEST="INVALID_DIGEST";D.INVALID_ADAPTER="INVALID_ADAPTER"})(F0||={});class Y extends Error{code;details;constructor(Q,X,$){super(X);this.code=Q;this.details=$;this.name="ProtocolError"}static expiredCode(Q,X,$){return new S8(Q,X,$)}static invalidCode(){return new Y("INVALID_CODE","Invalid code provided",{})}static invalidCodeFormat(Q,X){return new g8(Q,X)}static invalidSignature(Q){return new u8(Q)}static missingMeta(){return new H8}static invalidMetaFormat(Q){return new Y("INVALID_META_FORMAT",`Invalid protocol meta format: ${Q}`,{reason:Q})}static metaMismatch(Q,X,$){return new _8(Q,X,$)}static metaTooLarge(Q,X){return new Y("META_TOO_LARGE",`Protocol meta too large: ${X} bytes (max: ${Q})`,{maxBytes:Q,actualBytes:X})}static transactionNotSignedByIntendedOwner(Q,X){return new A8(Q,X)}static invalidTransactionFormat(Q){return new Y("INVALID_TRANSACTION_FORMAT",`Invalid transaction format: ${Q}`,{reason:Q})}static invalidPubkeyFormat(Q,X){return new f8(Q,X)}static invalidInput(Q,X,$){return new Y("INVALID_INPUT",`Invalid ${Q}: ${$}`,{field:Q,value:X,reason:$})}static missingRequiredField(Q){return new Y("MISSING_REQUIRED_FIELD",`Missing required field: ${Q}`,{field:Q})}static cryptoError(Q,X){return new Y("CRYPTO_ERROR",`Crypto error in ${Q}: ${X}`,{operation:Q,reason:X})}static invalidDigest(Q){return new Y("INVALID_DIGEST",`Invalid digest: ${Q}`,{reason:Q})}static invalidAdapter(Q){return new c8(Q)}static create(Q,X,$){return new Y(Q,X,$)}}class S8 extends Y{constructor(Q,X,$){super("EXPIRED_CODE",`Action code '${Q}' expired at ${X}, current time: ${$}`,{code:Q,expiresAt:X,currentTime:$});this.name="ExpiredCodeError"}}class H8 extends Y{constructor(){super("MISSING_META","Transaction does not contain valid protocol meta");this.name="MissingMetaError"}}class _8 extends Y{constructor(Q,X,$){super("META_MISMATCH",`Meta ${$} mismatch: expected '${Q}', got '${X}'`,{expected:Q,actual:X,field:$});this.name="MetaMismatchError"}}class A8 extends Y{constructor(Q,X){super("TRANSACTION_NOT_SIGNED_BY_INTENDED_OWNER",`Transaction not signed by intended owner '${Q}'. Actual signers: [${X.join(", ")}]`,{intended:Q,actualSigners:X});this.name="TransactionNotSignedByIntendedOwnerError"}}class f8 extends Y{constructor(Q,X){super("INVALID_PUBKEY_FORMAT",`Invalid public key format '${Q}': ${X}`,{pubkey:Q,reason:X});this.name="InvalidPubkeyFormatError"}}class u8 extends Y{constructor(Q){super("INVALID_SIGNATURE",`Invalid signature: ${Q}`,{reason:Q});this.name="InvalidSignatureError"}}class g8 extends Y{constructor(Q,X){super("INVALID_CODE_FORMAT",`Invalid code format '${Q}': ${X}`,{code:Q,reason:X});this.name="InvalidCodeFormatError"}}class c8 extends Y{constructor(Q){super("INVALID_ADAPTER",`Invalid adapter: ${Q}`,{adapter:Q});this.name="InvalidAdapterError"}}var h8=o(require("bs58"));class r{config;constructor(Q){this.config=Q}generateCode(Q,X){let $=Q,Z=JSON.parse(new TextDecoder().decode($)),q=Z.pubkey,J=Z.windowStart,R;try{R=h8.default.decode(X)}catch{throw Y.invalidSignature("Invalid Base58 signature format")}let z=O8(R,$),U=Math.max(w8,Math.min(k8,this.config.codeLength)),j=8*Math.ceil(U/2),N=v8(z,j);return{actionCode:{code:W8(N,U),pubkey:q,timestamp:J,expiresAt:J+this.config.ttlMs,signature:X},canonicalMessage:$}}validateCode(Q){let X=Date.now();if(X>Q.expiresAt+(this.config.clockSkewMs??0))throw Y.expiredCode(Q.code,Q.expiresAt,X);let $=m({pubkey:Q.pubkey,windowStart:Q.timestamp});if(!Q.signature)throw Y.missingRequiredField("signature");let Z;try{Z=h8.default.decode(Q.signature)}catch{throw Y.invalidSignature("Invalid Base58 signature format")}let q=O8(Z,$),J=Math.max(w8,Math.min(k8,this.config.codeLength)),R=v8(q,8*Math.ceil(J/2));if(W8(R,J)!==Q.code)throw Y.invalidCode()}getCanonicalMessageParts(Q){return s(Q)}}var d8=require("@solana/web3.js"),n8=o(require("tweetnacl")),l8=o(require("bs58"));class I8{walletStrategy;config;constructor(Q){this.config=Q,this.walletStrategy=new r(Q)}generateDelegatedCode(Q,X){this.validateDelegationProof(Q);let $=s(Q.delegatedPubkey);return{actionCode:{...this.walletStrategy.generateCode($,X).actionCode,pubkey:Q.walletPubkey,delegationProof:Q}}}validateDelegatedCode(Q,X){let $=Date.now();if($>Q.expiresAt+(this.config.clockSkewMs??0))throw Y.expiredCode(Q.code,Q.expiresAt,$);if(this.validateDelegationProof(X),Q.pubkey!==X.walletPubkey||Q.pubkey!==Q.delegationProof.walletPubkey)throw Y.invalidInput("walletPubkey",Q.delegationProof.walletPubkey,"Action code wallet pubkey does not match delegation proof");if(Q.delegationProof.delegatedPubkey!==X.delegatedPubkey)throw Y.invalidInput("delegatedPubkey",Q.delegationProof.delegatedPubkey,"Invalid delegatedPubkey: Action code delegated pubkey does not match delegation proof");if(Q.delegationProof.expiresAt!==X.expiresAt)throw Y.invalidInput("expiresAt",Q.delegationProof.expiresAt,"Action code delegation expiration does not match delegation proof");if(!Q.delegationProof.signature)throw Y.missingRequiredField("delegationProof.signature");if(Q.delegationProof.signature!==X.signature)throw Y.invalidInput("signature",Q.delegationProof.signature,"Invalid signature: Action code delegation signature does not match delegation proof");let Z=m({pubkey:X.delegatedPubkey,windowStart:Q.timestamp}),q;try{q=l8.default.decode(Q.signature??"")}catch{throw Y.invalidSignature("Invalid Base58 delegated signature format")}let J=l8.default.decode(X.delegatedPubkey);if(!n8.default.sign.detached.verify(Z,q,J))throw Y.invalidSignature("Delegated signature verification failed")}validateDelegationProof(Q){if(!Q.walletPubkey||typeof Q.walletPubkey!=="string")throw Y.invalidInput("walletPubkey",Q.walletPubkey,"Wallet pubkey is required and must be a string");try{new d8.PublicKey(Q.walletPubkey)}catch{throw Y.invalidInput("walletPubkey",Q.walletPubkey,"Invalid wallet pubkey format")}if(!Q.delegatedPubkey||typeof Q.delegatedPubkey!=="string")throw Y.invalidInput("delegatedPubkey",Q.delegatedPubkey,"Delegated pubkey is required and must be a string");try{new d8.PublicKey(Q.delegatedPubkey)}catch{throw Y.invalidInput("delegatedPubkey",Q.delegatedPubkey,"Invalid delegated pubkey format")}if(!Q.chain||typeof Q.chain!=="string")throw Y.invalidInput("chain",Q.chain,"Chain is required and must be a string");if(Q.chain.length===0||Q.chain.length>50)throw Y.invalidInput("chain",Q.chain,"Chain must be between 1 and 50 characters");if(!/^[a-z0-9-]+$/.test(Q.chain))throw Y.invalidInput("chain",Q.chain,"Chain contains invalid characters (only lowercase letters, numbers, and hyphens allowed)");if(typeof Q.expiresAt!=="number"||!Number.isInteger(Q.expiresAt))throw Y.invalidInput("expiresAt",Q.expiresAt,"Expiration time must be a valid integer timestamp");if(Q.expiresAt<=0)throw Y.invalidInput("expiresAt",Q.expiresAt,"Expiration time must be positive");let X=Date.now(),$=31536000000;if(Q.expiresAt>X+$)throw Y.invalidInput("expiresAt",Q.expiresAt,"Expiration time is too far in the future");if(Q.expiresAt<X)throw Y.expiredCode("Delegation proof has expired",Q.expiresAt,X);if(!Q.signature||typeof Q.signature!=="string")throw Y.invalidInput("signature",Q.signature,"Delegation signature is required and must be a string");if(Q.signature.length===0||Q.signature.length>200)throw Y.invalidInput("signature",Q.signature,"Delegation signature must be between 1 and 200 characters")}getCanonicalMessageParts(Q){return s(Q)}}var A=o(require("tweetnacl")),c=o(require("bs58")),W=require("@solana/web3.js"),f=require("@solana/spl-memo");var h="solana";class a extends Y8{normalizePubkey(Q){if(typeof Q==="string")return new W.PublicKey(Q);return Q}verifyWithWallet(Q){if(Q.chain!==h)return!1;if(!Q.message||!Q.message.pubkey||!Q.walletSignature)return!1;try{let X=m(Q.message),$=this.normalizePubkey(Q.message.pubkey),Z=c.default.decode(Q.walletSignature),q=$.toBytes();if(Z.length!==64||q.length!==32)return!1;return A.default.sign.detached.verify(X,Z,q)}catch{return!1}}verifyWithDelegation(Q){if(Q.chain!==h)return!1;if(!Q.message.pubkey||!Q.delegatedSignature||!Q.delegationProof)return!1;let X=Q.delegationProof;if(!X.walletPubkey||!X.delegatedPubkey||!X.chain||!X.expiresAt||!X.signature)return!1;if(X.chain!==h)return!1;if(X.delegatedPubkey!==Q.message.pubkey)return!1;if(X.expiresAt<Date.now())return!1;try{let $=G8(X),Z=this.normalizePubkey(X.walletPubkey),q=c.default.decode(X.signature),J=Z.toBytes(),R=m(Q.message),z=this.normalizePubkey(X.delegatedPubkey),U=c.default.decode(Q.delegatedSignature),j=z.toBytes();if(q.length!==64||J.length!==32)return!1;if(U.length!==64||j.length!==32)return!1;let N=A.default.sign.detached.verify($,q,J),K=A.default.sign.detached.verify(R,U,j);return N&&K}catch{return!1}}verifyRevokeWithWallet(Q){if(Q.chain!==h)return!1;if(!Q.message||!Q.message.pubkey||!Q.walletSignature)return!1;try{let X=D8(Q.message),$=this.normalizePubkey(Q.message.pubkey),Z=c.default.decode(Q.walletSignature),q=$.toBytes();if(Z.length!==64||q.length!==32)return!1;return A.default.sign.detached.verify(X,Z,q)}catch{return!1}}verifyRevokeWithDelegation(Q){if(Q.chain!==h)return!1;if(!Q.message||!Q.message.pubkey||!Q.delegatedSignature||!Q.delegationProof)return!1;let X=Q.delegationProof;if(!X.walletPubkey||!X.delegatedPubkey||!X.chain||!X.expiresAt||!X.signature)return!1;if(X.chain!==h)return!1;if(X.delegatedPubkey!==Q.message.pubkey)return!1;if(X.expiresAt<Date.now())return!1;try{let $=G8(X),Z=this.normalizePubkey(X.walletPubkey),q=c.default.decode(X.signature),J=Z.toBytes();if(q.length!==64||J.length!==32)return!1;if(!A.default.sign.detached.verify($,q,J))return!1;let z=D8(Q.message),U=this.normalizePubkey(X.delegatedPubkey),j=c.default.decode(Q.delegatedSignature),N=U.toBytes();if(j.length!==64||N.length!==32)return!1;return A.default.sign.detached.verify(z,j,N)}catch{return!1}}static createProtocolMetaIx(Q){let X=V8(Q);return f.createMemoInstruction(X)}getProtocolMeta(Q){try{let X=this.deserializeTransaction(Q);for(let $ of this.getMemoInstructions(X)){let Z=$.data;try{let q=new TextDecoder().decode(Z);if(q8(q))return q}catch{}}return null}catch{return null}}deserializeTransaction(Q){try{let X=W.VersionedTransaction.deserialize(Buffer.from(Q,"base64"));if(X.message instanceof W.MessageV0)return X;else return W.Transaction.from(Buffer.from(Q,"base64"))}catch{try{return W.Transaction.from(Buffer.from(Q,"base64"))}catch{throw Y.invalidTransactionFormat("Invalid base64 transaction format")}}}parseMeta(Q){let X=this.getProtocolMeta(Q);if(!X)return null;return q8(X)}getMemoInstructions(Q){if(Q instanceof W.Transaction)return Q.instructions.filter((X)=>X.programId.equals(f.MEMO_PROGRAM_ID));else{let $=Q.message;if($ instanceof W.MessageV0){let Z=[];for(let q of $.compiledInstructions){let J=$.staticAccountKeys[q.programIdIndex];if(J&&J.equals(f.MEMO_PROGRAM_ID)){let R=q.accountKeyIndexes.map((z)=>({pubkey:$.staticAccountKeys[z],isSigner:!1,isWritable:!1}));Z.push(new W.TransactionInstruction({keys:R,programId:J,data:q.data}))}}return Z}return[]}}verifyTransactionMatchesCode(Q,X){let $=Date.now();if($>Q.expiresAt)throw Y.expiredCode(Q.code,Q.expiresAt,$);let Z=this.parseMeta(X);if(!Z)throw Y.missingMeta();if(Z.ver!==2)throw Y.metaMismatch("2",String(Z.ver),"ver");let q=p8(Q.code);if(Z.id!==q)throw Y.metaMismatch(q,Z.id,"id");if(Z.int!==Q.pubkey)throw Y.metaMismatch(Q.pubkey,Z.int,"int")}verifyTransactionSignedByIntentOwner(Q){let X=this.parseMeta(Q);if(!X)throw Y.missingMeta();let $=X.int;if(!$)throw Y.invalidMetaFormat("Missing 'int' (intendedFor) field");let Z;try{Z=new W.PublicKey($)}catch{throw Y.invalidPubkeyFormat($,"Invalid public key format")}let q=this.deserializeTransaction(Q),J=[];if(q instanceof W.Transaction){if(!q.signatures.some((z)=>{if(!z.signature)return!1;return J.push(z.publicKey.toString()),z.publicKey.equals(Z)}))throw Y.transactionNotSignedByIntendedOwner($,J);return}if(q instanceof W.VersionedTransaction){let R=q.message;if(R instanceof W.MessageV0){let z=R.header.numRequiredSignatures;for(let U=0;U<z;U++){let j=R.staticAccountKeys[U];if(j){if(J.push(j.toString()),j.equals(Z))return}}throw Y.transactionNotSignedByIntendedOwner($,J)}}throw Y.invalidTransactionFormat("Unsupported transaction format")}static attachProtocolMeta(Q,X){if(new a().getProtocolMeta(Q))throw Y.invalidTransactionFormat("Transaction already contains protocol meta. Cannot attach additional protocol meta.");let q=a.createProtocolMetaIx(X);try{let J=W.VersionedTransaction.deserialize(Buffer.from(Q,"base64"));if(J.message instanceof W.MessageV0){let R=J.message,z=[...R.staticAccountKeys];if(!z.some((O)=>O.equals(f.MEMO_PROGRAM_ID)))z.push(f.MEMO_PROGRAM_ID);let j={programIdIndex:z.findIndex((O)=>O.equals(f.MEMO_PROGRAM_ID)),accountKeyIndexes:[],data:q.data},N=new W.MessageV0({header:R.header,staticAccountKeys:z,recentBlockhash:R.recentBlockhash,compiledInstructions:[...R.compiledInstructions,j],addressTableLookups:R.addressTableLookups}),K=new W.VersionedTransaction(N);return K.signatures=J.signatures,Buffer.from(K.serialize()).toString("base64")}else{let R=W.Transaction.from(Buffer.from(Q,"base64"));return R.add(q),Buffer.from(R.serialize({requireAllSignatures:!1})).toString("base64")}}catch{try{let J=W.Transaction.from(Buffer.from(Q,"base64"));return J.add(q),Buffer.from(J.serialize({requireAllSignatures:!1})).toString("base64")}catch{throw Y.invalidTransactionFormat("Invalid base64 transaction format")}}}}class w0{config;adapters={};_walletStrategy;_delegationStrategy;constructor(Q){this.config=Q;this.adapters.solana=new a,this._walletStrategy=new r(Q),this._delegationStrategy=new I8(Q)}getConfig(){return this.config}registerAdapter(Q,X){this.adapters[Q]=X}getAdapter(Q){return this.adapters[Q]}get adapter(){return{solana:this.adapters.solana}}get walletStrategy(){return this._walletStrategy}get delegationStrategy(){return this._delegationStrategy}generateCode(Q,X,$){if(Q==="wallet"){if(!$)throw Y.invalidSignature("Missing signature over canonical message");return this.walletStrategy.generateCode(X,$)}else{if(!$)throw Y.invalidSignature("Missing delegated signature");return this.delegationStrategy.generateDelegatedCode(X,$)}}validateCode(Q,X,$){if(Q==="wallet"){if(this.walletStrategy.validateCode(X),!$)return;let Z=$,q=this.getAdapter(Z.chain);if(!q)throw Y.invalidAdapter(Z.chain);if(!q.verifyWithWallet({...Z,message:{pubkey:X.pubkey,windowStart:X.timestamp}}))throw Y.invalidSignature("Wallet signature verification failed")}else{let Z=$;this.delegationStrategy.validateDelegatedCode(X,Z.delegationProof);let q=this.getAdapter(Z.chain);if(!q)throw Y.invalidAdapter(Z.chain);if(!q.verifyWithDelegation({...Z,message:{pubkey:Z.delegationProof.delegatedPubkey,windowStart:X.timestamp}}))throw Y.invalidSignature("Delegation signature verification failed")}}}
2
2
 
3
- //# debugId=4D7669885DFAB6CB64756E2164756E21
3
+ //# debugId=CFB61FD88902383464756E2164756E21
@@ -10,16 +10,16 @@
10
10
  "/**\n * HMAC: RFC2104 message authentication code.\n * @module\n */\nimport { abytes, aexists, ahash, clean } from \"./utils.js\";\n/** Internal class for HMAC. */\nexport class _HMAC {\n oHash;\n iHash;\n blockLen;\n outputLen;\n finished = false;\n destroyed = false;\n constructor(hash, key) {\n ahash(hash);\n abytes(key, undefined, 'key');\n this.iHash = hash.create();\n if (typeof this.iHash.update !== 'function')\n throw new Error('Expected instance of class which extends utils.Hash');\n this.blockLen = this.iHash.blockLen;\n this.outputLen = this.iHash.outputLen;\n const blockLen = this.blockLen;\n const pad = new Uint8Array(blockLen);\n // blockLen can be bigger than outputLen\n pad.set(key.length > blockLen ? hash.create().update(key).digest() : key);\n for (let i = 0; i < pad.length; i++)\n pad[i] ^= 0x36;\n this.iHash.update(pad);\n // By doing update (processing of first block) of outer hash here we can re-use it between multiple calls via clone\n this.oHash = hash.create();\n // Undo internal XOR && apply outer XOR\n for (let i = 0; i < pad.length; i++)\n pad[i] ^= 0x36 ^ 0x5c;\n this.oHash.update(pad);\n clean(pad);\n }\n update(buf) {\n aexists(this);\n this.iHash.update(buf);\n return this;\n }\n digestInto(out) {\n aexists(this);\n abytes(out, this.outputLen, 'output');\n this.finished = true;\n this.iHash.digestInto(out);\n this.oHash.update(out);\n this.oHash.digestInto(out);\n this.destroy();\n }\n digest() {\n const out = new Uint8Array(this.oHash.outputLen);\n this.digestInto(out);\n return out;\n }\n _cloneInto(to) {\n // Create new instance without calling constructor since key already in state and we don't know it.\n to ||= Object.create(Object.getPrototypeOf(this), {});\n const { oHash, iHash, finished, destroyed, blockLen, outputLen } = this;\n to = to;\n to.finished = finished;\n to.destroyed = destroyed;\n to.blockLen = blockLen;\n to.outputLen = outputLen;\n to.oHash = oHash._cloneInto(to.oHash);\n to.iHash = iHash._cloneInto(to.iHash);\n return to;\n }\n clone() {\n return this._cloneInto();\n }\n destroy() {\n this.destroyed = true;\n this.oHash.destroy();\n this.iHash.destroy();\n }\n}\n/**\n * HMAC: RFC2104 message authentication code.\n * @param hash - function that would be used e.g. sha256\n * @param key - message key\n * @param message - message data\n * @example\n * import { hmac } from '@noble/hashes/hmac';\n * import { sha256 } from '@noble/hashes/sha2';\n * const mac1 = hmac(sha256, 'key', 'message');\n */\nexport const hmac = (hash, key, message) => new _HMAC(hash, key).update(message).digest();\nhmac.create = (hash, key) => new _HMAC(hash, key);\n//# sourceMappingURL=hmac.js.map",
11
11
  "/**\n * HKDF (RFC 5869): extract + expand in one step.\n * See https://soatok.blog/2021/11/17/understanding-hkdf/.\n * @module\n */\nimport { hmac } from \"./hmac.js\";\nimport { abytes, ahash, anumber, clean } from \"./utils.js\";\n/**\n * HKDF-extract from spec. Less important part. `HKDF-Extract(IKM, salt) -> PRK`\n * Arguments position differs from spec (IKM is first one, since it is not optional)\n * @param hash - hash function that would be used (e.g. sha256)\n * @param ikm - input keying material, the initial key\n * @param salt - optional salt value (a non-secret random value)\n */\nexport function extract(hash, ikm, salt) {\n ahash(hash);\n // NOTE: some libraries treat zero-length array as 'not provided';\n // we don't, since we have undefined as 'not provided'\n // https://github.com/RustCrypto/KDFs/issues/15\n if (salt === undefined)\n salt = new Uint8Array(hash.outputLen);\n return hmac(hash, salt, ikm);\n}\nconst HKDF_COUNTER = /* @__PURE__ */ Uint8Array.of(0);\nconst EMPTY_BUFFER = /* @__PURE__ */ Uint8Array.of();\n/**\n * HKDF-expand from the spec. The most important part. `HKDF-Expand(PRK, info, L) -> OKM`\n * @param hash - hash function that would be used (e.g. sha256)\n * @param prk - a pseudorandom key of at least HashLen octets (usually, the output from the extract step)\n * @param info - optional context and application specific information (can be a zero-length string)\n * @param length - length of output keying material in bytes\n */\nexport function expand(hash, prk, info, length = 32) {\n ahash(hash);\n anumber(length, 'length');\n const olen = hash.outputLen;\n if (length > 255 * olen)\n throw new Error('Length must be <= 255*HashLen');\n const blocks = Math.ceil(length / olen);\n if (info === undefined)\n info = EMPTY_BUFFER;\n else\n abytes(info, undefined, 'info');\n // first L(ength) octets of T\n const okm = new Uint8Array(blocks * olen);\n // Re-use HMAC instance between blocks\n const HMAC = hmac.create(hash, prk);\n const HMACTmp = HMAC._cloneInto();\n const T = new Uint8Array(HMAC.outputLen);\n for (let counter = 0; counter < blocks; counter++) {\n HKDF_COUNTER[0] = counter + 1;\n // T(0) = empty string (zero length)\n // T(N) = HMAC-Hash(PRK, T(N-1) | info | N)\n HMACTmp.update(counter === 0 ? EMPTY_BUFFER : T)\n .update(info)\n .update(HKDF_COUNTER)\n .digestInto(T);\n okm.set(T, olen * counter);\n HMAC._cloneInto(HMACTmp);\n }\n HMAC.destroy();\n HMACTmp.destroy();\n clean(T, HKDF_COUNTER);\n return okm.slice(0, length);\n}\n/**\n * HKDF (RFC 5869): derive keys from an initial input.\n * Combines hkdf_extract + hkdf_expand in one step\n * @param hash - hash function that would be used (e.g. sha256)\n * @param ikm - input keying material, the initial key\n * @param salt - optional salt value (a non-secret random value)\n * @param info - optional context and application specific information (can be a zero-length string)\n * @param length - length of output keying material in bytes\n * @example\n * import { hkdf } from '@noble/hashes/hkdf';\n * import { sha256 } from '@noble/hashes/sha2';\n * import { randomBytes } from '@noble/hashes/utils';\n * const inputKey = randomBytes(32);\n * const salt = randomBytes(32);\n * const info = 'application-key';\n * const hk1 = hkdf(sha256, inputKey, salt, info, 32);\n */\nexport const hkdf = (hash, ikm, salt, info, length) => expand(hash, extract(hash, ikm, salt), info, length);\n//# sourceMappingURL=hkdf.js.map",
12
12
  "import { sha256 as nobleSha256 } from \"@noble/hashes/sha2.js\";\nimport { hmac } from \"@noble/hashes/hmac.js\";\nimport { hkdf } from \"@noble/hashes/hkdf.js\";\n\nfunction toBytes(input: Uint8Array | string): Uint8Array {\n if (typeof input === \"string\") return new TextEncoder().encode(input);\n return input;\n}\n\nexport function sha256(data: Uint8Array | string): Uint8Array {\n return nobleSha256(toBytes(data));\n}\n\nexport function hmacSha256(\n key: Uint8Array | string,\n data: Uint8Array | string\n): Uint8Array {\n return hmac(nobleSha256, toBytes(key), toBytes(data));\n}\n\n// HKDF implementation using @noble/hashes\nexport function hkdfSha256(\n ikm: Uint8Array | string,\n length: number,\n {\n salt,\n info,\n }: { salt?: Uint8Array | string; info?: Uint8Array | string } = {}\n): Uint8Array {\n const saltBuf = salt ? toBytes(salt) : new Uint8Array(32);\n const ikmBuf = toBytes(ikm);\n const infoBuf = info ? toBytes(info) : new Uint8Array(0);\n\n return hkdf(nobleSha256, ikmBuf, saltBuf, infoBuf, length);\n}\n\n// Crockford Base32 without lookalikes (I L O U mapped) – output uppercase\nconst CROCKFORD_ALPHABET = \"0123456789ABCDEFGHJKMNPQRSTVWXYZ\";\n\nexport function base32EncodeCrockford(data: Uint8Array): string {\n let bits = 0;\n let value = 0;\n let output = \"\";\n for (let i = 0; i < data.length; i++) {\n value = (value << 8) | data[i]!;\n bits += 8;\n while (bits >= 5) {\n output += CROCKFORD_ALPHABET[(value >>> (bits - 5)) & 31];\n bits -= 5;\n }\n }\n if (bits > 0) {\n output += CROCKFORD_ALPHABET[(value << (5 - bits)) & 31];\n }\n return output;\n}\n\nexport function truncateBits(input: Uint8Array, totalBits: number): Uint8Array {\n const totalBytes = Math.ceil(totalBits / 8);\n const out = new Uint8Array(totalBytes);\n const copyBytes = Math.min(totalBytes, input.length);\n out.set(input.subarray(0, copyBytes));\n // If not byte-aligned, mask the last byte\n const extraBits = totalBytes * 8 - totalBits;\n if (extraBits > 0) {\n const mask = 0xff << extraBits;\n out[totalBytes - 1] = out[totalBytes - 1]! & mask;\n }\n return out;\n}\n\n// Derive digits-only code from a digest using modulo bias-reduction (HOTP-style per-digit)\nexport function digestToDigits(digest: Uint8Array, length: number): string {\n if (digest.length === 0) throw new Error(\"digestToDigits: empty digest\");\n // HOTP-like dynamic truncation for unbiased decimal extraction\n // Process 4 bytes windows to produce digits\n let out = \"\";\n const offset = digest[digest.length - 1]! & 0x0f;\n for (let i = 0; out.length < length; i++) {\n const idx = (offset + i * 4) % Math.max(1, digest.length - 4);\n const p =\n ((digest[idx]! & 0x7f) << 24) |\n (digest[idx + 1]! << 16) |\n (digest[idx + 2]! << 8) |\n digest[idx + 3]!;\n const num = p % 1000000000; // up to 9 digits\n const chunk = num.toString().padStart(9, \"0\");\n out += chunk;\n }\n return out.slice(0, length);\n}\n\n// Generate a SHA256 hash of a code string for use as a unique identifier\nexport function codeHash(code: string): string {\n const hash = sha256(code);\n return Array.from(hash)\n .map((b) => b.toString(16).padStart(2, \"0\"))\n .join(\"\");\n}\n",
13
- "import type {\n CanonicalMessageParts,\n CanonicalRevokeMessageParts,\n DelegationProof,\n} from \"../types\";\n\nexport const CANONICAL_MESSAGE_VERSION = 1;\nexport const CANONICAL_MESSAGE_PREFIX = \"actioncodes\";\nexport const CANONICAL_REVOKE_MESSAGE_PREFIX = \"actioncodes-revoke\";\n\nexport function serializeCanonical(parts: CanonicalMessageParts): Uint8Array {\n const json = JSON.stringify({\n id: CANONICAL_MESSAGE_PREFIX,\n ver: CANONICAL_MESSAGE_VERSION,\n pubkey: parts.pubkey,\n windowStart: parts.windowStart,\n });\n return new TextEncoder().encode(json);\n}\n\nexport function serializeCanonicalRevoke(\n parts: CanonicalRevokeMessageParts\n): Uint8Array {\n const json = JSON.stringify({\n id: CANONICAL_REVOKE_MESSAGE_PREFIX,\n ver: CANONICAL_MESSAGE_VERSION,\n pubkey: parts.pubkey,\n codeHash: parts.codeHash,\n windowStart: parts.windowStart,\n });\n return new TextEncoder().encode(json);\n}\n\nexport function getCanonicalMessageParts(\n pubkey: string,\n ttlMs: number\n): Uint8Array {\n const windowStart = Math.floor(Date.now() / ttlMs) * ttlMs;\n return serializeCanonical({ pubkey, windowStart });\n}\n\nexport function serializeDelegationProof(proof: Omit<DelegationProof, 'signature'>): Uint8Array {\n const json = JSON.stringify({\n walletPubkey: proof.walletPubkey,\n delegatedPubkey: proof.delegatedPubkey,\n expiresAt: proof.expiresAt,\n chain: proof.chain,\n });\n return new TextEncoder().encode(json);\n}\n",
13
+ "import type {\n CanonicalMessageParts,\n CanonicalRevokeMessageParts,\n DelegationProof,\n} from \"../types\";\n\nexport const CANONICAL_MESSAGE_VERSION = 1;\nexport const CANONICAL_MESSAGE_PREFIX = \"actioncodes\";\nexport const CANONICAL_REVOKE_MESSAGE_PREFIX = \"actioncodes-revoke\";\n\nexport function serializeCanonical(parts: CanonicalMessageParts): Uint8Array {\n const json = JSON.stringify({\n id: CANONICAL_MESSAGE_PREFIX,\n ver: CANONICAL_MESSAGE_VERSION,\n pubkey: parts.pubkey,\n windowStart: parts.windowStart,\n });\n return new TextEncoder().encode(json);\n}\n\nexport function serializeCanonicalRevoke(\n parts: CanonicalRevokeMessageParts\n): Uint8Array {\n const json = JSON.stringify({\n id: CANONICAL_REVOKE_MESSAGE_PREFIX,\n ver: CANONICAL_MESSAGE_VERSION,\n pubkey: parts.pubkey,\n codeHash: parts.codeHash,\n windowStart: parts.windowStart,\n });\n return new TextEncoder().encode(json);\n}\n\nexport function getCanonicalMessageParts(pubkey: string): Uint8Array {\n return serializeCanonical({ pubkey, windowStart: Date.now() });\n}\n\nexport function serializeDelegationProof(\n proof: Omit<DelegationProof, \"signature\">\n): Uint8Array {\n const json = JSON.stringify({\n walletPubkey: proof.walletPubkey,\n delegatedPubkey: proof.delegatedPubkey,\n expiresAt: proof.expiresAt,\n chain: proof.chain,\n });\n return new TextEncoder().encode(json);\n}\n",
14
14
  "// Protocol-wide constants\n\nexport const PROTOCOL_NORMALIZATION = \"NFC\";\nexport const PROTOCOL_META_MAX_BYTES = 256; // UTF-8 bytes\n\nexport const CODE_MIN_LENGTH = 6;\nexport const CODE_MAX_LENGTH = 24;\nexport const CODE_DEFAULT_LENGTH = 8;\n\n// Digits-only codes (0-9)\nexport const CODE_CHARSET_DIGITS = \"0123456789\";\n\nexport const SUPPORTED_CHAINS = [\"solana\"] as const;\n\n\n",
15
15
  "import { PROTOCOL_META_MAX_BYTES, PROTOCOL_NORMALIZATION } from \"../constants\";\n\n// v2 protocol meta\nexport interface ProtocolMetaFields {\n ver: 2;\n id: string; // code id (usually hex/hash)\n int: string; // intent owner who created the code\n p?: Record<string, unknown>; // optional parameters as JSON object\n}\n\nexport const SCHEME = \"actioncodes:\";\n\nexport function buildProtocolMeta(fields: ProtocolMetaFields): string {\n const norm = normalizeFields(fields);\n if (norm.int != null) guardParamSize(norm.int);\n \n const parts = [\n `ver=${norm.ver}`,\n `id=${encodeURIComponent(norm.id)}`,\n `int=${encodeURIComponent(norm.int)}`,\n ];\n\n if (norm.p != null && Object.keys(norm.p).length > 0) {\n const paramsJson = JSON.stringify(norm.p);\n guardParamSize(paramsJson);\n parts.push(`p=${encodeURIComponent(paramsJson)}`);\n }\n \n const out = SCHEME + parts.join(\"&\");\n guardSize(out);\n return out;\n}\n\nexport function parseProtocolMeta(input: string): ProtocolMetaFields {\n if (!input.startsWith(SCHEME)) throw new Error(\"protocol meta must start with actioncodes:\");\n const q = input.slice(SCHEME.length);\n const pairs = q.split(\"&\").filter(Boolean);\n const map = new Map<string, string>();\n for (const pair of pairs) {\n const [k, vRaw] = pair.split(\"=\", 2);\n if (!k) continue;\n const v = vRaw != null ? decodeURIComponent(vRaw) : \"\";\n map.set(k, v);\n }\n const verStr = map.get(\"ver\");\n const id = map.get(\"id\");\n const int = map.get(\"int\");\n const pStr = map.get(\"p\");\n if (verStr == null || id == null || int == null) throw new Error(\"protocol meta missing required fields ver or id or int\");\n const ver = Number(verStr);\n if (!Number.isInteger(ver) || ver <= 0) throw new Error(\"protocol meta ver must be positive integer\");\n \n let p: Record<string, unknown> | undefined;\n if (pStr != null && pStr !== \"\") {\n try {\n p = JSON.parse(pStr);\n if (typeof p !== \"object\" || p === null || Array.isArray(p)) {\n throw new Error(\"protocol meta p must be a JSON object\");\n }\n } catch {\n throw new Error(\"protocol meta p must be valid JSON\");\n }\n }\n \n const norm = normalizeFields({ ver: ver as 2, id, int, p });\n if (norm.int != null) guardParamSize(norm.int);\n if (norm.p != null) guardParamSize(JSON.stringify(norm.p));\n const unknownKeys = [...map.keys()].filter((k) => k !== \"ver\" && k !== \"id\" && k !== \"int\" && k !== \"p\");\n if (unknownKeys.length > 0) throw new Error(\"protocol meta contains unsupported keys\");\n guardSize(buildProtocolMeta(norm));\n return norm;\n}\n\nexport function validateProtocolMetaFormat(input: string): { ok: true } | { ok: false; reason: string } {\n try {\n parseProtocolMeta(input);\n return { ok: true };\n } catch (e: unknown) {\n return { ok: false, reason: String(e) };\n }\n}\n\nfunction normalizeFields(fields: ProtocolMetaFields): ProtocolMetaFields {\n const id = fields.id.normalize(PROTOCOL_NORMALIZATION).trim();\n const out: ProtocolMetaFields = { ver: fields.ver, id, int: fields.int };\n if (fields.int != null) out.int = fields.int.normalize(PROTOCOL_NORMALIZATION).trim();\n if (fields.p != null) {\n // For JSON objects, we don't normalize the object itself, just ensure it's valid\n out.p = fields.p;\n }\n return out;\n}\n\nfunction guardSize(s: string): void {\n const bytes = new TextEncoder().encode(s);\n if (bytes.length > PROTOCOL_META_MAX_BYTES) throw new Error(`protocol meta exceeds ${PROTOCOL_META_MAX_BYTES} bytes`);\n}\n\nfunction guardParamSize(value: string): void {\n const bytes = new TextEncoder().encode(value);\n if (bytes.length > PROTOCOL_META_MAX_BYTES) throw new Error(`protocol meta params exceed ${PROTOCOL_META_MAX_BYTES} bytes`);\n}\n\n\n",
16
16
  "export enum ProtocolErrorCode {\n // Code validation errors\n EXPIRED_CODE = \"EXPIRED_CODE\",\n INVALID_CODE = \"INVALID_CODE\",\n INVALID_CODE_FORMAT = \"INVALID_CODE_FORMAT\",\n INVALID_SIGNATURE = \"INVALID_SIGNATURE\",\n\n // Meta validation errors\n MISSING_META = \"MISSING_META\",\n INVALID_META_FORMAT = \"INVALID_META_FORMAT\",\n META_MISMATCH = \"META_MISMATCH\",\n META_TOO_LARGE = \"META_TOO_LARGE\",\n\n // Transaction errors\n TRANSACTION_NOT_SIGNED_BY_INTENDED_OWNER = \"TRANSACTION_NOT_SIGNED_BY_INTENDED_OWNER\",\n INVALID_TRANSACTION_FORMAT = \"INVALID_TRANSACTION_FORMAT\",\n INVALID_PUBKEY_FORMAT = \"INVALID_PUBKEY_FORMAT\",\n\n // Input validation errors\n INVALID_INPUT = \"INVALID_INPUT\",\n MISSING_REQUIRED_FIELD = \"MISSING_REQUIRED_FIELD\",\n\n // Crypto errors\n CRYPTO_ERROR = \"CRYPTO_ERROR\",\n INVALID_DIGEST = \"INVALID_DIGEST\",\n\n // Adapter errors\n INVALID_ADAPTER = \"INVALID_ADAPTER\",\n}\n\nexport class ProtocolError extends Error {\n constructor(\n public readonly code: ProtocolErrorCode,\n message: string,\n public readonly details?: Record<string, unknown>\n ) {\n super(message);\n this.name = \"ProtocolError\";\n }\n\n // Code validation errors\n static expiredCode(code: string, expiresAt: number, currentTime: number): ExpiredCodeError {\n return new ExpiredCodeError(code, expiresAt, currentTime);\n }\n\n static invalidCode(): ProtocolError {\n return new ProtocolError(\n ProtocolErrorCode.INVALID_CODE,\n \"Invalid code provided\",\n {}\n );\n }\n\n static invalidCodeFormat(code: string, reason: string): InvalidCodeFormatError {\n return new InvalidCodeFormatError(code, reason);\n }\n\n static invalidSignature(reason: string): InvalidSignatureError {\n return new InvalidSignatureError(reason);\n }\n\n // Meta validation errors\n static missingMeta(): MissingMetaError {\n return new MissingMetaError();\n }\n\n static invalidMetaFormat(reason: string): ProtocolError {\n return new ProtocolError(\n ProtocolErrorCode.INVALID_META_FORMAT,\n `Invalid protocol meta format: ${reason}`,\n { reason }\n );\n }\n\n static metaMismatch(expected: string, actual: string, field: string): MetaMismatchError {\n return new MetaMismatchError(expected, actual, field);\n }\n\n static metaTooLarge(maxBytes: number, actualBytes: number): ProtocolError {\n return new ProtocolError(\n ProtocolErrorCode.META_TOO_LARGE,\n `Protocol meta too large: ${actualBytes} bytes (max: ${maxBytes})`,\n { maxBytes, actualBytes }\n );\n }\n\n // Transaction errors\n static transactionNotSignedByIntendedOwner(intended: string, actualSigners: string[]): TransactionNotSignedByIntendedOwnerError {\n return new TransactionNotSignedByIntendedOwnerError(intended, actualSigners);\n }\n\n static invalidTransactionFormat(reason: string): ProtocolError {\n return new ProtocolError(\n ProtocolErrorCode.INVALID_TRANSACTION_FORMAT,\n `Invalid transaction format: ${reason}`,\n { reason }\n );\n }\n\n static invalidPubkeyFormat(pubkey: string, reason: string): InvalidPubkeyFormatError {\n return new InvalidPubkeyFormatError(pubkey, reason);\n }\n\n // Input validation errors\n static invalidInput(field: string, value: unknown, reason: string): ProtocolError {\n return new ProtocolError(\n ProtocolErrorCode.INVALID_INPUT,\n `Invalid ${field}: ${reason}`,\n { field, value, reason }\n );\n }\n\n static missingRequiredField(field: string): ProtocolError {\n return new ProtocolError(\n ProtocolErrorCode.MISSING_REQUIRED_FIELD,\n `Missing required field: ${field}`,\n { field }\n );\n }\n\n // Crypto errors\n static cryptoError(operation: string, reason: string): ProtocolError {\n return new ProtocolError(\n ProtocolErrorCode.CRYPTO_ERROR,\n `Crypto error in ${operation}: ${reason}`,\n { operation, reason }\n );\n }\n\n static invalidDigest(reason: string): ProtocolError {\n return new ProtocolError(\n ProtocolErrorCode.INVALID_DIGEST,\n `Invalid digest: ${reason}`,\n { reason }\n );\n }\n\n // Adapter errors\n static invalidAdapter(adapter: string): InvalidAdapterError {\n return new InvalidAdapterError(adapter);\n }\n\n // Generic error creator\n static create(code: ProtocolErrorCode, message: string, details?: Record<string, unknown>): ProtocolError {\n return new ProtocolError(code, message, details);\n }\n}\n\n// Specific error classes for instanceof checks\nexport class ExpiredCodeError extends ProtocolError {\n constructor(code: string, expiresAt: number, currentTime: number) {\n super(\n ProtocolErrorCode.EXPIRED_CODE,\n `Action code '${code}' expired at ${expiresAt}, current time: ${currentTime}`,\n { code, expiresAt, currentTime }\n );\n this.name = \"ExpiredCodeError\";\n }\n}\n\nexport class MissingMetaError extends ProtocolError {\n constructor() {\n super(\n ProtocolErrorCode.MISSING_META,\n \"Transaction does not contain valid protocol meta\"\n );\n this.name = \"MissingMetaError\";\n }\n}\n\nexport class MetaMismatchError extends ProtocolError {\n constructor(expected: string, actual: string, field: string) {\n super(\n ProtocolErrorCode.META_MISMATCH,\n `Meta ${field} mismatch: expected '${expected}', got '${actual}'`,\n { expected, actual, field }\n );\n this.name = \"MetaMismatchError\";\n }\n}\n\nexport class TransactionNotSignedByIntendedOwnerError extends ProtocolError {\n constructor(intended: string, actualSigners: string[]) {\n super(\n ProtocolErrorCode.TRANSACTION_NOT_SIGNED_BY_INTENDED_OWNER,\n `Transaction not signed by intended owner '${intended}'. Actual signers: [${actualSigners.join(\n \", \"\n )}]`,\n { intended, actualSigners }\n );\n this.name = \"TransactionNotSignedByIntendedOwnerError\";\n }\n}\n\nexport class InvalidPubkeyFormatError extends ProtocolError {\n constructor(pubkey: string, reason: string) {\n super(\n ProtocolErrorCode.INVALID_PUBKEY_FORMAT,\n `Invalid public key format '${pubkey}': ${reason}`,\n { pubkey, reason }\n );\n this.name = \"InvalidPubkeyFormatError\";\n }\n}\n\nexport class InvalidSignatureError extends ProtocolError {\n constructor(reason: string) {\n super(ProtocolErrorCode.INVALID_SIGNATURE, `Invalid signature: ${reason}`, {\n reason,\n });\n this.name = \"InvalidSignatureError\";\n }\n}\n\nexport class InvalidCodeFormatError extends ProtocolError {\n constructor(code: string, reason: string) {\n super(\n ProtocolErrorCode.INVALID_CODE_FORMAT,\n `Invalid code format '${code}': ${reason}`,\n { code, reason }\n );\n this.name = \"InvalidCodeFormatError\";\n }\n}\n\nexport class InvalidAdapterError extends ProtocolError {\n constructor(adapter: string) {\n super(ProtocolErrorCode.INVALID_ADAPTER, `Invalid adapter: ${adapter}`, { adapter });\n this.name = \"InvalidAdapterError\";\n }\n}",
17
- "import type {\n ActionCode,\n CodeGenerationConfig,\n WalletStrategyCodeGenerationResult,\n} from \"../types\";\nimport {\n hmacSha256,\n truncateBits,\n digestToDigits,\n} from \"../utils/crypto\";\nimport { CODE_MAX_LENGTH, CODE_MIN_LENGTH } from \"../constants\";\nimport {\n serializeCanonical,\n getCanonicalMessageParts,\n} from \"../utils/canonical\";\nimport { ProtocolError } from \"../errors\";\nimport bs58 from \"bs58\";\n\nexport class WalletStrategy {\n constructor(private config: CodeGenerationConfig) {}\n\n generateCode(\n canonicalMessage: Uint8Array,\n signature: string\n ): WalletStrategyCodeGenerationResult {\n const canonical = canonicalMessage;\n\n // Parse pubkey and windowStart from canonical message\n const decoded = JSON.parse(new TextDecoder().decode(canonical));\n const pubkey = decoded.pubkey;\n const windowStart = decoded.windowStart;\n\n // Use signature as the primary entropy source\n // Decode Base58 signature to bytes\n let signatureBytes: Uint8Array;\n try {\n signatureBytes = bs58.decode(signature);\n } catch {\n throw ProtocolError.invalidSignature(\"Invalid Base58 signature format\");\n }\n const digest = hmacSha256(signatureBytes, canonical);\n\n const clamped = Math.max(\n CODE_MIN_LENGTH,\n Math.min(CODE_MAX_LENGTH, this.config.codeLength)\n );\n const bitsNeeded = 8 * Math.ceil(clamped / 2);\n const truncated = truncateBits(digest, bitsNeeded);\n const code = digestToDigits(truncated, clamped);\n\n const actionCode: ActionCode = {\n code,\n pubkey,\n timestamp: windowStart,\n expiresAt: windowStart + this.config.ttlMs,\n signature,\n };\n\n return { actionCode, canonicalMessage: canonical };\n }\n\n validateCode(actionCode: ActionCode): void {\n const currentTime = Date.now();\n if (currentTime > actionCode.expiresAt + (this.config.clockSkewMs ?? 0)) {\n throw ProtocolError.expiredCode(\n actionCode.code,\n actionCode.expiresAt,\n currentTime\n );\n }\n\n const canonical = serializeCanonical({\n pubkey: actionCode.pubkey,\n windowStart: actionCode.timestamp,\n });\n\n // Use same digest method as generation\n if (!actionCode.signature) {\n throw ProtocolError.missingRequiredField(\"signature\");\n }\n \n // Use signature as the primary entropy source\n // Decode Base58 signature to bytes\n let signatureBytes: Uint8Array;\n try {\n signatureBytes = bs58.decode(actionCode.signature);\n } catch {\n throw ProtocolError.invalidSignature(\"Invalid Base58 signature format\");\n }\n const digest = hmacSha256(signatureBytes, canonical);\n\n const clamped = Math.max(\n CODE_MIN_LENGTH,\n Math.min(CODE_MAX_LENGTH, this.config.codeLength)\n );\n const truncated = truncateBits(digest, 8 * Math.ceil(clamped / 2));\n const expected = digestToDigits(truncated, clamped);\n\n if (expected !== actionCode.code) {\n throw ProtocolError.invalidCode();\n }\n }\n\n // Instance method for accessing canonical functions\n getCanonicalMessageParts(pubkey: string): Uint8Array {\n return getCanonicalMessageParts(pubkey, this.config.ttlMs);\n }\n}\n",
18
- "import { WalletStrategy } from \"./WalletStrategy\";\nimport {\n getCanonicalMessageParts,\n serializeCanonical,\n} from \"../utils/canonical\";\nimport { ProtocolError } from \"../errors\";\nimport { PublicKey } from \"@solana/web3.js\";\nimport nacl from \"tweetnacl\";\nimport bs58 from \"bs58\";\n\nimport type {\n DelegationProof,\n DelegatedActionCode,\n CodeGenerationConfig,\n DelegationStrategyCodeGenerationResult,\n} from \"../types\";\n\nexport class DelegationStrategy {\n private walletStrategy: WalletStrategy;\n private config: CodeGenerationConfig;\n\n constructor(config: CodeGenerationConfig) {\n this.config = config;\n this.walletStrategy = new WalletStrategy(config);\n }\n\n /**\n * Generate a delegated action code using a delegation proof and signature over message to generate code via delegated keypair\n */\n generateDelegatedCode(\n delegationProof: DelegationProof,\n signature: string // this is the signature over message to generate code via delegated keypair\n ): DelegationStrategyCodeGenerationResult {\n // Validate delegation proof format and expiration\n this.validateDelegationProof(delegationProof);\n\n // Generate canonical message using the delegated pubkey (the signer)\n const canonicalMessage = getCanonicalMessageParts(\n delegationProof.delegatedPubkey,\n this.config.ttlMs\n );\n\n // Generate code using existing WalletStrategy with canonical message\n const result = this.walletStrategy.generateCode(\n canonicalMessage,\n signature // Use signature\n );\n\n // Create delegated action code\n const delegatedActionCode: DelegatedActionCode = {\n ...result.actionCode,\n pubkey: delegationProof.walletPubkey, // Code belongs to the user who delegated\n delegationProof: delegationProof,\n };\n\n return {\n actionCode: delegatedActionCode,\n };\n }\n\n /**\n * Validate a delegated action code\n */\n validateDelegatedCode(\n actionCode: DelegatedActionCode,\n delegationProof: DelegationProof\n ): void {\n // Basic validation checks (similar to WalletStrategy.validateCode)\n const currentTime = Date.now();\n if (currentTime > actionCode.expiresAt + (this.config.clockSkewMs ?? 0)) {\n throw ProtocolError.expiredCode(\n actionCode.code,\n actionCode.expiresAt,\n currentTime\n );\n }\n\n // Verify delegation proof is still valid\n this.validateDelegationProof(delegationProof);\n\n // Verify the delegation proof matches the action code\n if (\n actionCode.pubkey !== delegationProof.walletPubkey || actionCode.pubkey !== actionCode.delegationProof.walletPubkey\n ) {\n throw ProtocolError.invalidInput(\n \"walletPubkey\",\n actionCode.delegationProof.walletPubkey,\n \"Action code wallet pubkey does not match delegation proof\"\n );\n }\n\n if (\n actionCode.delegationProof.delegatedPubkey !==\n delegationProof.delegatedPubkey\n ) {\n throw ProtocolError.invalidInput(\n \"delegatedPubkey\",\n actionCode.delegationProof.delegatedPubkey,\n \"Invalid delegatedPubkey: Action code delegated pubkey does not match delegation proof\"\n );\n }\n\n if (actionCode.delegationProof.expiresAt !== delegationProof.expiresAt) {\n throw ProtocolError.invalidInput(\n \"expiresAt\",\n actionCode.delegationProof.expiresAt,\n \"Action code delegation expiration does not match delegation proof\"\n );\n }\n\n // Verify delegated signature is present\n if (!actionCode.delegationProof.signature) {\n throw ProtocolError.missingRequiredField(\"delegationProof.signature\");\n }\n\n if (actionCode.delegationProof.signature !== delegationProof.signature) {\n throw ProtocolError.invalidInput(\n \"signature\",\n actionCode.delegationProof.signature,\n \"Invalid signature: Action code delegation signature does not match delegation proof\"\n );\n }\n\n // Finally, verify the delegated signature against the canonical message\n // Use the original timestamp from the action code, not the current time\n const canonicalMessage = serializeCanonical({\n pubkey: delegationProof.delegatedPubkey,\n windowStart: actionCode.timestamp,\n });\n\n // Decode and verify the delegated signature\n let signatureBytes: Uint8Array;\n try {\n signatureBytes = bs58.decode(actionCode.signature ?? \"\");\n } catch {\n throw ProtocolError.invalidSignature(\n \"Invalid Base58 delegated signature format\"\n );\n }\n\n // Verify the signature using the delegated keypair's public key\n const delegatedPubkeyBytes = bs58.decode(delegationProof.delegatedPubkey);\n const isValidSignature = nacl.sign.detached.verify(\n canonicalMessage,\n signatureBytes,\n delegatedPubkeyBytes\n );\n\n if (!isValidSignature) {\n throw ProtocolError.invalidSignature(\n \"Delegated signature verification failed\"\n );\n }\n }\n\n /**\n * Validate a delegation proof with comprehensive input validation\n */\n private validateDelegationProof(delegationProof: DelegationProof): void {\n // Validate walletPubkey using Solana's PublicKey constructor\n if (\n !delegationProof.walletPubkey ||\n typeof delegationProof.walletPubkey !== \"string\"\n ) {\n throw ProtocolError.invalidInput(\n \"walletPubkey\",\n delegationProof.walletPubkey,\n \"Wallet pubkey is required and must be a string\"\n );\n }\n try {\n new PublicKey(delegationProof.walletPubkey);\n } catch {\n throw ProtocolError.invalidInput(\n \"walletPubkey\",\n delegationProof.walletPubkey,\n \"Invalid wallet pubkey format\"\n );\n }\n\n // Validate delegatedPubkey using Solana's PublicKey constructor\n if (\n !delegationProof.delegatedPubkey ||\n typeof delegationProof.delegatedPubkey !== \"string\"\n ) {\n throw ProtocolError.invalidInput(\n \"delegatedPubkey\",\n delegationProof.delegatedPubkey,\n \"Delegated pubkey is required and must be a string\"\n );\n }\n try {\n new PublicKey(delegationProof.delegatedPubkey);\n } catch {\n throw ProtocolError.invalidInput(\n \"delegatedPubkey\",\n delegationProof.delegatedPubkey,\n \"Invalid delegated pubkey format\"\n );\n }\n\n // Validate chain\n if (!delegationProof.chain || typeof delegationProof.chain !== \"string\") {\n throw ProtocolError.invalidInput(\n \"chain\",\n delegationProof.chain,\n \"Chain is required and must be a string\"\n );\n }\n if (\n delegationProof.chain.length === 0 ||\n delegationProof.chain.length > 50\n ) {\n throw ProtocolError.invalidInput(\n \"chain\",\n delegationProof.chain,\n \"Chain must be between 1 and 50 characters\"\n );\n }\n if (!/^[a-z0-9-]+$/.test(delegationProof.chain)) {\n throw ProtocolError.invalidInput(\n \"chain\",\n delegationProof.chain,\n \"Chain contains invalid characters (only lowercase letters, numbers, and hyphens allowed)\"\n );\n }\n\n // Validate expiresAt\n if (\n typeof delegationProof.expiresAt !== \"number\" ||\n !Number.isInteger(delegationProof.expiresAt)\n ) {\n throw ProtocolError.invalidInput(\n \"expiresAt\",\n delegationProof.expiresAt,\n \"Expiration time must be a valid integer timestamp\"\n );\n }\n if (delegationProof.expiresAt <= 0) {\n throw ProtocolError.invalidInput(\n \"expiresAt\",\n delegationProof.expiresAt,\n \"Expiration time must be positive\"\n );\n }\n\n // Check for reasonable expiration bounds (not too far in the future)\n const now = Date.now();\n const maxFuture = 365 * 24 * 60 * 60 * 1000; // 1 year from now\n\n if (delegationProof.expiresAt > now + maxFuture) {\n throw ProtocolError.invalidInput(\n \"expiresAt\",\n delegationProof.expiresAt,\n \"Expiration time is too far in the future\"\n );\n }\n\n // Check if delegation has expired\n if (delegationProof.expiresAt < now) {\n throw ProtocolError.expiredCode(\n \"Delegation proof has expired\",\n delegationProof.expiresAt,\n now\n );\n }\n\n // Validate signature\n if (\n !delegationProof.signature ||\n typeof delegationProof.signature !== \"string\"\n ) {\n throw ProtocolError.invalidInput(\n \"signature\",\n delegationProof.signature,\n \"Delegation signature is required and must be a string\"\n );\n }\n if (\n delegationProof.signature.length === 0 ||\n delegationProof.signature.length > 200\n ) {\n throw ProtocolError.invalidInput(\n \"signature\",\n delegationProof.signature,\n \"Delegation signature must be between 1 and 200 characters\"\n );\n }\n // Note: Signature format validation will be done during actual verification\n }\n\n /**\n * Get canonical message parts for delegation\n */\n getCanonicalMessageParts(pubkey: string): Uint8Array {\n return getCanonicalMessageParts(pubkey, this.config.ttlMs);\n }\n}\n",
17
+ "import type {\n ActionCode,\n CodeGenerationConfig,\n WalletStrategyCodeGenerationResult,\n} from \"../types\";\nimport {\n hmacSha256,\n truncateBits,\n digestToDigits,\n} from \"../utils/crypto\";\nimport { CODE_MAX_LENGTH, CODE_MIN_LENGTH } from \"../constants\";\nimport {\n serializeCanonical,\n getCanonicalMessageParts,\n} from \"../utils/canonical\";\nimport { ProtocolError } from \"../errors\";\nimport bs58 from \"bs58\";\n\nexport class WalletStrategy {\n constructor(private config: CodeGenerationConfig) {}\n\n generateCode(\n canonicalMessage: Uint8Array,\n signature: string\n ): WalletStrategyCodeGenerationResult {\n const canonical = canonicalMessage;\n\n // Parse pubkey and windowStart from canonical message\n const decoded = JSON.parse(new TextDecoder().decode(canonical));\n const pubkey = decoded.pubkey;\n const windowStart = decoded.windowStart;\n\n // Use signature as the primary entropy source\n // Decode Base58 signature to bytes\n let signatureBytes: Uint8Array;\n try {\n signatureBytes = bs58.decode(signature);\n } catch {\n throw ProtocolError.invalidSignature(\"Invalid Base58 signature format\");\n }\n const digest = hmacSha256(signatureBytes, canonical);\n\n const clamped = Math.max(\n CODE_MIN_LENGTH,\n Math.min(CODE_MAX_LENGTH, this.config.codeLength)\n );\n const bitsNeeded = 8 * Math.ceil(clamped / 2);\n const truncated = truncateBits(digest, bitsNeeded);\n const code = digestToDigits(truncated, clamped);\n\n const actionCode: ActionCode = {\n code,\n pubkey,\n timestamp: windowStart,\n expiresAt: windowStart + this.config.ttlMs,\n signature,\n };\n\n return { actionCode, canonicalMessage: canonical };\n }\n\n validateCode(actionCode: ActionCode): void {\n const currentTime = Date.now();\n if (currentTime > actionCode.expiresAt + (this.config.clockSkewMs ?? 0)) {\n throw ProtocolError.expiredCode(\n actionCode.code,\n actionCode.expiresAt,\n currentTime\n );\n }\n\n const canonical = serializeCanonical({\n pubkey: actionCode.pubkey,\n windowStart: actionCode.timestamp,\n });\n\n // Use same digest method as generation\n if (!actionCode.signature) {\n throw ProtocolError.missingRequiredField(\"signature\");\n }\n \n // Use signature as the primary entropy source\n // Decode Base58 signature to bytes\n let signatureBytes: Uint8Array;\n try {\n signatureBytes = bs58.decode(actionCode.signature);\n } catch {\n throw ProtocolError.invalidSignature(\"Invalid Base58 signature format\");\n }\n const digest = hmacSha256(signatureBytes, canonical);\n\n const clamped = Math.max(\n CODE_MIN_LENGTH,\n Math.min(CODE_MAX_LENGTH, this.config.codeLength)\n );\n const truncated = truncateBits(digest, 8 * Math.ceil(clamped / 2));\n const expected = digestToDigits(truncated, clamped);\n\n if (expected !== actionCode.code) {\n throw ProtocolError.invalidCode();\n }\n }\n\n // Instance method for accessing canonical functions\n getCanonicalMessageParts(pubkey: string): Uint8Array {\n return getCanonicalMessageParts(pubkey);\n }\n}\n",
18
+ "import { WalletStrategy } from \"./WalletStrategy\";\nimport {\n getCanonicalMessageParts,\n serializeCanonical,\n} from \"../utils/canonical\";\nimport { ProtocolError } from \"../errors\";\nimport { PublicKey } from \"@solana/web3.js\";\nimport nacl from \"tweetnacl\";\nimport bs58 from \"bs58\";\n\nimport type {\n DelegationProof,\n DelegatedActionCode,\n CodeGenerationConfig,\n DelegationStrategyCodeGenerationResult,\n} from \"../types\";\n\nexport class DelegationStrategy {\n private walletStrategy: WalletStrategy;\n private config: CodeGenerationConfig;\n\n constructor(config: CodeGenerationConfig) {\n this.config = config;\n this.walletStrategy = new WalletStrategy(config);\n }\n\n /**\n * Generate a delegated action code using a delegation proof and signature over message to generate code via delegated keypair\n */\n generateDelegatedCode(\n delegationProof: DelegationProof,\n signature: string // this is the signature over message to generate code via delegated keypair\n ): DelegationStrategyCodeGenerationResult {\n // Validate delegation proof format and expiration\n this.validateDelegationProof(delegationProof);\n\n // Generate canonical message using the delegated pubkey (the signer)\n const canonicalMessage = getCanonicalMessageParts(delegationProof.delegatedPubkey);\n \n // Generate code using existing WalletStrategy with canonical message\n const result = this.walletStrategy.generateCode(\n canonicalMessage,\n signature // Use signature\n );\n\n // Create delegated action code\n const delegatedActionCode: DelegatedActionCode = {\n ...result.actionCode,\n pubkey: delegationProof.walletPubkey, // Code belongs to the user who delegated\n delegationProof: delegationProof,\n };\n\n return {\n actionCode: delegatedActionCode,\n };\n }\n\n /**\n * Validate a delegated action code\n */\n validateDelegatedCode(\n actionCode: DelegatedActionCode,\n delegationProof: DelegationProof\n ): void {\n // Basic validation checks (similar to WalletStrategy.validateCode)\n const currentTime = Date.now();\n if (currentTime > actionCode.expiresAt + (this.config.clockSkewMs ?? 0)) {\n throw ProtocolError.expiredCode(\n actionCode.code,\n actionCode.expiresAt,\n currentTime\n );\n }\n\n // Verify delegation proof is still valid\n this.validateDelegationProof(delegationProof);\n\n // Verify the delegation proof matches the action code\n if (\n actionCode.pubkey !== delegationProof.walletPubkey ||\n actionCode.pubkey !== actionCode.delegationProof.walletPubkey\n ) {\n throw ProtocolError.invalidInput(\n \"walletPubkey\",\n actionCode.delegationProof.walletPubkey,\n \"Action code wallet pubkey does not match delegation proof\"\n );\n }\n\n if (\n actionCode.delegationProof.delegatedPubkey !==\n delegationProof.delegatedPubkey\n ) {\n throw ProtocolError.invalidInput(\n \"delegatedPubkey\",\n actionCode.delegationProof.delegatedPubkey,\n \"Invalid delegatedPubkey: Action code delegated pubkey does not match delegation proof\"\n );\n }\n\n if (actionCode.delegationProof.expiresAt !== delegationProof.expiresAt) {\n throw ProtocolError.invalidInput(\n \"expiresAt\",\n actionCode.delegationProof.expiresAt,\n \"Action code delegation expiration does not match delegation proof\"\n );\n }\n\n // Verify delegated signature is present\n if (!actionCode.delegationProof.signature) {\n throw ProtocolError.missingRequiredField(\"delegationProof.signature\");\n }\n\n if (actionCode.delegationProof.signature !== delegationProof.signature) {\n throw ProtocolError.invalidInput(\n \"signature\",\n actionCode.delegationProof.signature,\n \"Invalid signature: Action code delegation signature does not match delegation proof\"\n );\n }\n\n // Finally, verify the delegated signature against the canonical message\n // Use the original timestamp from the action code, not the current time\n const canonicalMessage = serializeCanonical({\n pubkey: delegationProof.delegatedPubkey,\n windowStart: actionCode.timestamp,\n });\n\n // Decode and verify the delegated signature\n let signatureBytes: Uint8Array;\n try {\n signatureBytes = bs58.decode(actionCode.signature ?? \"\");\n } catch {\n throw ProtocolError.invalidSignature(\n \"Invalid Base58 delegated signature format\"\n );\n }\n\n // Verify the signature using the delegated keypair's public key\n const delegatedPubkeyBytes = bs58.decode(delegationProof.delegatedPubkey);\n const isValidSignature = nacl.sign.detached.verify(\n canonicalMessage,\n signatureBytes,\n delegatedPubkeyBytes\n );\n\n if (!isValidSignature) {\n throw ProtocolError.invalidSignature(\n \"Delegated signature verification failed\"\n );\n }\n }\n\n /**\n * Validate a delegation proof with comprehensive input validation\n */\n private validateDelegationProof(delegationProof: DelegationProof): void {\n // Validate walletPubkey using Solana's PublicKey constructor\n if (\n !delegationProof.walletPubkey ||\n typeof delegationProof.walletPubkey !== \"string\"\n ) {\n throw ProtocolError.invalidInput(\n \"walletPubkey\",\n delegationProof.walletPubkey,\n \"Wallet pubkey is required and must be a string\"\n );\n }\n try {\n new PublicKey(delegationProof.walletPubkey);\n } catch {\n throw ProtocolError.invalidInput(\n \"walletPubkey\",\n delegationProof.walletPubkey,\n \"Invalid wallet pubkey format\"\n );\n }\n\n // Validate delegatedPubkey using Solana's PublicKey constructor\n if (\n !delegationProof.delegatedPubkey ||\n typeof delegationProof.delegatedPubkey !== \"string\"\n ) {\n throw ProtocolError.invalidInput(\n \"delegatedPubkey\",\n delegationProof.delegatedPubkey,\n \"Delegated pubkey is required and must be a string\"\n );\n }\n try {\n new PublicKey(delegationProof.delegatedPubkey);\n } catch {\n throw ProtocolError.invalidInput(\n \"delegatedPubkey\",\n delegationProof.delegatedPubkey,\n \"Invalid delegated pubkey format\"\n );\n }\n\n // Validate chain\n if (!delegationProof.chain || typeof delegationProof.chain !== \"string\") {\n throw ProtocolError.invalidInput(\n \"chain\",\n delegationProof.chain,\n \"Chain is required and must be a string\"\n );\n }\n if (\n delegationProof.chain.length === 0 ||\n delegationProof.chain.length > 50\n ) {\n throw ProtocolError.invalidInput(\n \"chain\",\n delegationProof.chain,\n \"Chain must be between 1 and 50 characters\"\n );\n }\n if (!/^[a-z0-9-]+$/.test(delegationProof.chain)) {\n throw ProtocolError.invalidInput(\n \"chain\",\n delegationProof.chain,\n \"Chain contains invalid characters (only lowercase letters, numbers, and hyphens allowed)\"\n );\n }\n\n // Validate expiresAt\n if (\n typeof delegationProof.expiresAt !== \"number\" ||\n !Number.isInteger(delegationProof.expiresAt)\n ) {\n throw ProtocolError.invalidInput(\n \"expiresAt\",\n delegationProof.expiresAt,\n \"Expiration time must be a valid integer timestamp\"\n );\n }\n if (delegationProof.expiresAt <= 0) {\n throw ProtocolError.invalidInput(\n \"expiresAt\",\n delegationProof.expiresAt,\n \"Expiration time must be positive\"\n );\n }\n\n // Check for reasonable expiration bounds (not too far in the future)\n const now = Date.now();\n const maxFuture = 365 * 24 * 60 * 60 * 1000; // 1 year from now\n\n if (delegationProof.expiresAt > now + maxFuture) {\n throw ProtocolError.invalidInput(\n \"expiresAt\",\n delegationProof.expiresAt,\n \"Expiration time is too far in the future\"\n );\n }\n\n // Check if delegation has expired\n if (delegationProof.expiresAt < now) {\n throw ProtocolError.expiredCode(\n \"Delegation proof has expired\",\n delegationProof.expiresAt,\n now\n );\n }\n\n // Validate signature\n if (\n !delegationProof.signature ||\n typeof delegationProof.signature !== \"string\"\n ) {\n throw ProtocolError.invalidInput(\n \"signature\",\n delegationProof.signature,\n \"Delegation signature is required and must be a string\"\n );\n }\n if (\n delegationProof.signature.length === 0 ||\n delegationProof.signature.length > 200\n ) {\n throw ProtocolError.invalidInput(\n \"signature\",\n delegationProof.signature,\n \"Delegation signature must be between 1 and 200 characters\"\n );\n }\n // Note: Signature format validation will be done during actual verification\n }\n\n /**\n * Get canonical message parts for delegation\n */\n getCanonicalMessageParts(pubkey: string): Uint8Array {\n return getCanonicalMessageParts(pubkey);\n }\n}\n",
19
19
  "import nacl from \"tweetnacl\";\nimport bs58 from \"bs58\";\nimport {\n PublicKey,\n Transaction,\n VersionedTransaction,\n TransactionInstruction,\n MessageV0,\n} from \"@solana/web3.js\";\nimport { createMemoInstruction, MEMO_PROGRAM_ID } from \"@solana/spl-memo\";\nimport {\n BaseChainAdapter,\n type WalletContext,\n type WalletRevokeContext,\n type DelegatedContext,\n type DelegatedRevokeContext,\n} from \"./BaseChainAdapter\";\nimport {\n buildProtocolMeta,\n parseProtocolMeta,\n type ProtocolMetaFields,\n} from \"../utils/protocolMeta\";\nimport { codeHash } from \"../utils/crypto\";\nimport type { ActionCode } from \"../types\";\nimport { ProtocolError } from \"../errors\";\nimport {\n serializeCanonical,\n serializeCanonicalRevoke,\n serializeDelegationProof,\n} from \"../utils/canonical\";\n\nexport const ADAPTER_CHAIN_NAME = \"solana\" as const;\nexport type SolanaWalletContext = WalletContext<{\n chain: typeof ADAPTER_CHAIN_NAME;\n}>;\nexport type SolanaDelegatedContext = DelegatedContext<{\n chain: typeof ADAPTER_CHAIN_NAME;\n}>;\nexport type SolanaWalletRevokeContext = WalletRevokeContext<{\n chain: typeof ADAPTER_CHAIN_NAME;\n}>;\nexport type SolanaDelegatedRevokeContext = DelegatedRevokeContext<{\n chain: typeof ADAPTER_CHAIN_NAME;\n}>;\n\n/** Union of supported Solana txn types */\nexport type SolanaTransaction = Transaction | VersionedTransaction;\n\nexport class SolanaAdapter extends BaseChainAdapter<\n SolanaWalletContext,\n SolanaDelegatedContext,\n SolanaWalletRevokeContext,\n SolanaDelegatedRevokeContext\n> {\n /** Normalize pubkey input to PublicKey */\n private normalizePubkey(input: string | PublicKey): PublicKey {\n if (typeof input === \"string\") {\n return new PublicKey(input);\n }\n return input;\n }\n\n /** Verify the signature over canonical message (protocol-level) */\n verifyWithWallet(context: SolanaWalletContext): boolean {\n // Early validation checks - these are fast and don't leak timing info\n if (context.chain !== ADAPTER_CHAIN_NAME) return false;\n if (!context.message || !context.message.pubkey || !context.walletSignature)\n return false;\n\n // Perform all operations in a single try-catch to ensure consistent timing\n try {\n const message = serializeCanonical(context.message);\n const pub = this.normalizePubkey(context.message.pubkey);\n const sigBytes = bs58.decode(context.walletSignature);\n const pubBytes = pub.toBytes();\n\n // Validate lengths\n if (sigBytes.length !== 64 || pubBytes.length !== 32) {\n return false;\n }\n\n // Perform signature verification\n return nacl.sign.detached.verify(message, sigBytes, pubBytes);\n } catch {\n // All errors result in false with consistent timing\n return false;\n }\n }\n\n /** Verify delegation proof signature */\n verifyWithDelegation(context: SolanaDelegatedContext): boolean {\n // Early validation checks - these are fast and don't leak timing info\n if (context.chain !== ADAPTER_CHAIN_NAME) return false;\n if (\n !context.message.pubkey ||\n !context.delegatedSignature ||\n !context.delegationProof\n )\n return false;\n\n const proof = context.delegationProof;\n\n // Basic validation\n if (\n !proof.walletPubkey ||\n !proof.delegatedPubkey ||\n !proof.chain ||\n !proof.expiresAt ||\n !proof.signature\n ) {\n return false;\n }\n\n // Validate chain matches adapter\n if (proof.chain !== ADAPTER_CHAIN_NAME) {\n return false;\n }\n\n // The revoke/message pubkey for delegated flow must be the delegated pubkey\n if (proof.delegatedPubkey !== context.message.pubkey) return false;\n\n // Check if delegation has expired\n if (proof.expiresAt < Date.now()) return false;\n\n // Perform all operations in a single try-catch to ensure consistent timing\n try {\n const delegationMessage = serializeDelegationProof(proof);\n const walletPub = this.normalizePubkey(proof.walletPubkey);\n const walletSigBytes = bs58.decode(proof.signature);\n const walletPubBytes = walletPub.toBytes();\n \n const canonicalMessage = serializeCanonical(context.message);\n const delegatedPub = this.normalizePubkey(proof.delegatedPubkey);\n const delegatedSigBytes = bs58.decode(context.delegatedSignature);\n const delegatedPubBytes = delegatedPub.toBytes();\n \n // Validate lengths first to prevent timing attacks\n if (walletSigBytes.length !== 64 || walletPubBytes.length !== 32) {\n return false;\n }\n if (delegatedSigBytes.length !== 64 || delegatedPubBytes.length !== 32) {\n return false;\n }\n \n // Perform both signature verifications regardless of first result\n // This prevents timing attacks that could leak information about which signature failed\n const walletOk = nacl.sign.detached.verify(\n delegationMessage,\n walletSigBytes,\n walletPubBytes\n );\n \n const delegatedOk = nacl.sign.detached.verify(\n canonicalMessage,\n delegatedSigBytes,\n delegatedPubBytes\n );\n \n // Return result only after both operations complete\n return walletOk && delegatedOk;\n } catch {\n // All errors result in false with consistent timing\n return false;\n }\n }\n\n /** Verify the signature over canonical revoke message (protocol-level) */\n verifyRevokeWithWallet(context: SolanaWalletRevokeContext): boolean {\n // Early validation checks - these are fast and don't leak timing info\n if (context.chain !== ADAPTER_CHAIN_NAME) return false;\n if (!context.message || !context.message.pubkey || !context.walletSignature)\n return false;\n\n // Perform all operations in a single try-catch to ensure consistent timing\n try {\n const message = serializeCanonicalRevoke(context.message);\n const pub = this.normalizePubkey(context.message.pubkey);\n const sigBytes = bs58.decode(context.walletSignature);\n const pubBytes = pub.toBytes();\n\n // Validate lengths\n if (sigBytes.length !== 64 || pubBytes.length !== 32) {\n return false;\n }\n\n // Perform signature verification\n return nacl.sign.detached.verify(message, sigBytes, pubBytes);\n } catch {\n // All errors result in false with consistent timing\n return false;\n }\n }\n\n verifyRevokeWithDelegation(context: SolanaDelegatedRevokeContext): boolean {\n // Early validation checks - these are fast and don't leak timing info\n if (context.chain !== ADAPTER_CHAIN_NAME) return false;\n if (\n !context.message ||\n !context.message.pubkey ||\n !context.delegatedSignature ||\n !context.delegationProof\n )\n return false;\n\n const proof = context.delegationProof;\n\n // Basic validation\n if (\n !proof.walletPubkey ||\n !proof.delegatedPubkey ||\n !proof.chain ||\n !proof.expiresAt ||\n !proof.signature\n ) {\n return false;\n }\n\n // Validate chain matches adapter\n if (proof.chain !== ADAPTER_CHAIN_NAME) {\n return false;\n }\n\n // The revoke/message pubkey for delegated flow must be the delegated pubkey\n if (proof.delegatedPubkey !== context.message.pubkey) return false;\n\n // Check if delegation has expired\n if (proof.expiresAt < Date.now()) return false;\n\n try {\n const delegationMessage = serializeDelegationProof(proof);\n const walletPub = this.normalizePubkey(proof.walletPubkey);\n const walletSigBytes = bs58.decode(proof.signature);\n const walletPubBytes = walletPub.toBytes();\n if (walletSigBytes.length !== 64 || walletPubBytes.length !== 32) {\n return false;\n }\n const walletOk = nacl.sign.detached.verify(\n delegationMessage,\n walletSigBytes,\n walletPubBytes\n );\n if (!walletOk) return false;\n\n const revokeMessage = serializeCanonicalRevoke(context.message);\n const delegatedPub = this.normalizePubkey(proof.delegatedPubkey);\n const delegatedSigBytes = bs58.decode(context.delegatedSignature);\n const delegatedPubBytes = delegatedPub.toBytes();\n if (delegatedSigBytes.length !== 64 || delegatedPubBytes.length !== 32) {\n return false;\n }\n return nacl.sign.detached.verify(\n revokeMessage,\n delegatedSigBytes,\n delegatedPubBytes\n );\n } catch {\n // All errors result in false with consistent timing\n return false;\n }\n }\n\n /** Create a Solana memo instruction carrying protocol meta (for SDK/clients) */\n static createProtocolMetaIx(\n meta: ProtocolMetaFields\n ): TransactionInstruction {\n const metaString = buildProtocolMeta(meta);\n return createMemoInstruction(metaString);\n }\n\n /** Extract protocol metadata string (memo) from a base64-encoded transaction, or null */\n getProtocolMeta(txString: string): string | null {\n try {\n const tx = this.deserializeTransaction(txString);\n for (const ix of this.getMemoInstructions(tx)) {\n const data = ix.data;\n try {\n const s = new TextDecoder().decode(data);\n // Optionally: test parse\n const parsed = parseProtocolMeta(s);\n if (parsed) return s;\n } catch {\n // ignore\n }\n }\n return null;\n } catch {\n return null;\n }\n }\n\n /** Deserialize a base64-encoded transaction string to SolanaTransaction */\n private deserializeTransaction(txString: string): SolanaTransaction {\n try {\n // Try versioned first (most common now)\n const versionedTx = VersionedTransaction.deserialize(\n Buffer.from(txString, \"base64\")\n );\n\n // Check if this is actually a versioned transaction by checking if it has a MessageV0\n if (versionedTx.message instanceof MessageV0) {\n return versionedTx;\n } else {\n // This is likely a legacy transaction that was incorrectly deserialized as versioned\n // Fall back to legacy deserialization\n return Transaction.from(Buffer.from(txString, \"base64\"));\n }\n } catch {\n try {\n // Fallback to legacy\n return Transaction.from(Buffer.from(txString, \"base64\"));\n } catch {\n throw ProtocolError.invalidTransactionFormat(\n \"Invalid base64 transaction format\"\n );\n }\n }\n }\n\n /** Get parsed ProtocolMeta object from base64-encoded transaction, or null if none or invalid */\n parseMeta(txString: string): ProtocolMetaFields | null {\n const s = this.getProtocolMeta(txString);\n if (!s) return null;\n return parseProtocolMeta(s);\n }\n\n /** List memo instructions from the transaction (legacy & versioned) */\n private getMemoInstructions(tx: SolanaTransaction): TransactionInstruction[] {\n if (tx instanceof Transaction) {\n return tx.instructions.filter((ix) =>\n ix.programId.equals(MEMO_PROGRAM_ID)\n );\n } else {\n // VersionedTransaction: inspect `message.compiledInstructions` / static keys\n const vtx = tx as VersionedTransaction;\n const msg = vtx.message;\n if (msg instanceof MessageV0) {\n const memos: TransactionInstruction[] = [];\n for (const ix of msg.compiledInstructions) {\n const pid = msg.staticAccountKeys[ix.programIdIndex];\n if (pid && pid.equals(MEMO_PROGRAM_ID)) {\n // reconstruct a TransactionInstruction for inspection\n const keys = ix.accountKeyIndexes.map((i) => ({\n pubkey: msg.staticAccountKeys[i]!,\n isSigner: false,\n isWritable: false,\n }));\n memos.push(\n new TransactionInstruction({\n keys,\n programId: pid,\n data: ix.data as Buffer,\n })\n );\n }\n }\n return memos;\n }\n return [];\n }\n }\n\n /**\n * Validate that a base64-encoded transaction's memo meta aligns with the bound `actionCode`.\n * Throws ProtocolError if validation fails.\n */\n verifyTransactionMatchesCode(actionCode: ActionCode, txString: string): void {\n // Check expiration first\n const currentTime = Date.now();\n if (currentTime > actionCode.expiresAt) {\n throw ProtocolError.expiredCode(\n actionCode.code,\n actionCode.expiresAt,\n currentTime\n );\n }\n\n const meta = this.parseMeta(txString);\n if (!meta) {\n throw ProtocolError.missingMeta();\n }\n\n // Check version\n if (meta.ver !== 2) {\n throw ProtocolError.metaMismatch(\"2\", String(meta.ver), \"ver\");\n }\n\n // Check code ID - should be codeHash of the code, not the code itself\n const expectedCodeHash = codeHash(actionCode.code);\n if (meta.id !== expectedCodeHash) {\n throw ProtocolError.metaMismatch(expectedCodeHash, meta.id, \"id\");\n }\n\n // Check intended pubkey\n if (meta.int !== actionCode.pubkey) {\n throw ProtocolError.metaMismatch(actionCode.pubkey, meta.int, \"int\");\n }\n }\n\n /**\n * Verify that the base64-encoded transaction is signed by the \"intendedFor\" pubkey\n * as declared in the protocol meta of the transaction.\n * Throws ProtocolError if validation fails.\n */\n verifyTransactionSignedByIntentOwner(txString: string): void {\n const meta = this.parseMeta(txString);\n if (!meta) {\n throw ProtocolError.missingMeta();\n }\n\n const intended = meta.int;\n if (!intended) {\n throw ProtocolError.invalidMetaFormat(\n \"Missing 'int' (intendedFor) field\"\n );\n }\n\n let pubkey: PublicKey;\n try {\n pubkey = new PublicKey(intended);\n } catch {\n throw ProtocolError.invalidPubkeyFormat(\n intended,\n \"Invalid public key format\"\n );\n }\n\n const tx = this.deserializeTransaction(txString);\n const actualSigners: string[] = [];\n\n // For legacy Transaction\n if (tx instanceof Transaction) {\n const isSigned = tx.signatures.some((sig) => {\n if (!sig.signature) return false;\n actualSigners.push(sig.publicKey.toString());\n return sig.publicKey.equals(pubkey);\n });\n\n if (!isSigned) {\n throw ProtocolError.transactionNotSignedByIntendedOwner(\n intended,\n actualSigners\n );\n }\n return;\n }\n\n // For VersionedTransaction (MessageV0)\n if (tx instanceof VersionedTransaction) {\n const msg = tx.message;\n if (msg instanceof MessageV0) {\n const signerCount = msg.header.numRequiredSignatures;\n for (let i = 0; i < signerCount; i++) {\n const key = msg.staticAccountKeys[i];\n if (key) {\n actualSigners.push(key.toString());\n if (key.equals(pubkey)) {\n return; // Found the intended signer\n }\n }\n }\n throw ProtocolError.transactionNotSignedByIntendedOwner(\n intended,\n actualSigners\n );\n }\n }\n\n throw ProtocolError.invalidTransactionFormat(\n \"Unsupported transaction format\"\n );\n }\n\n /**\n * Attach protocol meta into a base64-encoded transaction and return the modified transaction as base64.\n * Throws ProtocolError if the transaction already contains protocol meta.\n */\n static attachProtocolMeta(\n txString: string,\n meta: ProtocolMetaFields\n ): string {\n // Check if transaction already has protocol meta\n const adapter = new SolanaAdapter();\n const existingMeta = adapter.getProtocolMeta(txString);\n if (existingMeta) {\n throw ProtocolError.invalidTransactionFormat(\n \"Transaction already contains protocol meta. Cannot attach additional protocol meta.\"\n );\n }\n\n const metaIx = SolanaAdapter.createProtocolMetaIx(meta);\n\n try {\n // Try to deserialize as versioned first\n const versionedTx = VersionedTransaction.deserialize(\n Buffer.from(txString, \"base64\")\n );\n\n // Check if this is actually a versioned transaction by checking if it has a MessageV0\n if (versionedTx.message instanceof MessageV0) {\n const msg = versionedTx.message;\n\n // Extend static account keys with programId if missing\n const newStaticKeys = [...msg.staticAccountKeys];\n if (!newStaticKeys.some((k) => k.equals(MEMO_PROGRAM_ID))) {\n newStaticKeys.push(MEMO_PROGRAM_ID);\n }\n\n // Program ID index\n const programIdIndex = newStaticKeys.findIndex((k) =>\n k.equals(MEMO_PROGRAM_ID)\n );\n\n // Memo instruction as compiled instruction\n const compiledIx = {\n programIdIndex,\n accountKeyIndexes: [],\n data: metaIx.data,\n };\n\n const newMsg = new MessageV0({\n header: msg.header,\n staticAccountKeys: newStaticKeys,\n recentBlockhash: msg.recentBlockhash,\n compiledInstructions: [...msg.compiledInstructions, compiledIx],\n addressTableLookups: msg.addressTableLookups,\n });\n\n // Re-wrap in VersionedTransaction\n const newTx = new VersionedTransaction(newMsg);\n // Preserve existing signatures if any\n newTx.signatures = versionedTx.signatures;\n\n return Buffer.from(newTx.serialize()).toString(\"base64\");\n } else {\n // This is likely a legacy transaction that was incorrectly deserialized as versioned\n // Fall back to legacy deserialization\n const legacyTx = Transaction.from(Buffer.from(txString, \"base64\"));\n\n // Legacy tx: just push memo instruction\n legacyTx.add(metaIx);\n\n return Buffer.from(\n legacyTx.serialize({ requireAllSignatures: false })\n ).toString(\"base64\");\n }\n } catch {\n try {\n // Fallback to legacy transaction\n const legacyTx = Transaction.from(Buffer.from(txString, \"base64\"));\n\n // Legacy tx: just push memo instruction\n legacyTx.add(metaIx);\n\n return Buffer.from(\n legacyTx.serialize({ requireAllSignatures: false })\n ).toString(\"base64\");\n } catch {\n throw ProtocolError.invalidTransactionFormat(\n \"Invalid base64 transaction format\"\n );\n }\n }\n }\n}\n",
20
- "import type {\n ActionCode,\n CodeGenerationConfig,\n DelegationProof,\n DelegatedActionCode,\n} from \"./types\";\nimport type {\n ChainAdapter,\n WalletContext,\n DelegatedContext,\n} from \"./adapters/BaseChainAdapter\";\nimport { WalletStrategy } from \"./strategy/WalletStrategy\";\nimport { DelegationStrategy } from \"./strategy/DelegationStrategy\";\nimport { SolanaAdapter } from \"./adapters/SolanaAdapter\";\nimport { ProtocolError } from \"./errors\";\n\nexport class ActionCodesProtocol {\n private adapters: Record<string, ChainAdapter> = {};\n private _walletStrategy: WalletStrategy;\n private _delegationStrategy: DelegationStrategy;\n\n constructor(private readonly config: CodeGenerationConfig) {\n // Register default adapters\n this.adapters.solana = new SolanaAdapter() as unknown as ChainAdapter;\n\n // Initialize strategies\n this._walletStrategy = new WalletStrategy(config);\n this._delegationStrategy = new DelegationStrategy(config);\n }\n\n public getConfig(): CodeGenerationConfig {\n return this.config;\n }\n\n /** Register a chain adapter */\n registerAdapter(chain: string, adapter: ChainAdapter): void {\n this.adapters[chain] = adapter;\n }\n\n /** Get a registered adapter */\n getAdapter(chain: string): ChainAdapter | undefined {\n return this.adapters[chain];\n }\n\n /** Typed access to specific adapters */\n get adapter() {\n return {\n solana: this.adapters.solana as unknown as SolanaAdapter,\n };\n }\n\n /** Access to strategies */\n get walletStrategy() {\n return this._walletStrategy;\n }\n\n get delegationStrategy() {\n return this._delegationStrategy;\n }\n\n // Generate code\n generateCode(\n strategy: \"wallet\",\n canonicalMessage: Uint8Array,\n signature: string\n ): {\n actionCode: ActionCode;\n canonicalMessage: Uint8Array;\n };\n generateCode(\n strategy: \"delegation\",\n delegationProof: DelegationProof,\n signature: string\n ): {\n actionCode: DelegatedActionCode;\n };\n generateCode(\n strategy: \"wallet\" | \"delegation\",\n param1: Uint8Array | DelegationProof,\n signature?: string\n ): {\n actionCode: ActionCode | DelegatedActionCode;\n canonicalMessage?: Uint8Array;\n } {\n if (strategy === \"wallet\") {\n // Here param1 must be Uint8Array (canonical message)\n if (!signature) {\n throw ProtocolError.invalidSignature(\n \"Missing signature over canonical message\"\n );\n }\n return this.walletStrategy.generateCode(param1 as Uint8Array, signature);\n } else {\n // Here param1 must be DelegationProof\n if (!signature) {\n throw ProtocolError.invalidSignature(\"Missing delegated signature\");\n }\n return this.delegationStrategy.generateDelegatedCode(\n param1 as DelegationProof,\n signature\n );\n }\n }\n\n // Overloaded validateCode methods with strategy parameter\n validateCode(\n strategy: \"wallet\",\n actionCode: ActionCode,\n context?: WalletContext<unknown>\n ): void;\n validateCode(\n strategy: \"delegation\",\n actionCode: DelegatedActionCode,\n context?: DelegatedContext<unknown>\n ): void;\n validateCode(\n strategy: \"wallet\" | \"delegation\",\n actionCode: ActionCode | DelegatedActionCode,\n param2?: WalletContext<unknown> | DelegatedContext<unknown>\n ): void {\n if (strategy === \"wallet\") {\n // This will throw if validation fails\n this.walletStrategy.validateCode(actionCode as ActionCode);\n\n if (!param2) return;\n\n const context = param2 as Omit<WalletContext<unknown>, \"message\">;\n const adapter = this.getAdapter(context.chain);\n if (!adapter) throw ProtocolError.invalidAdapter(context.chain);\n\n const ok = adapter.verifyWithWallet({\n ...(context as Record<string, unknown>),\n message: {\n pubkey: (actionCode as ActionCode).pubkey,\n windowStart: (actionCode as ActionCode).timestamp,\n },\n } as unknown as WalletContext<unknown>);\n\n if (!ok) {\n throw ProtocolError.invalidSignature(\n \"Wallet signature verification failed\"\n );\n }\n } else {\n const context = param2 as Omit<DelegatedContext<unknown>, \"message\">;\n\n // CRITICAL: First validate the delegated action code\n // This ensures the code was actually generated from this delegation proof\n this.delegationStrategy.validateDelegatedCode(\n actionCode as DelegatedActionCode,\n context.delegationProof\n );\n\n // Then verify the delegation proof signature\n const adapter = this.getAdapter(context.chain);\n if (!adapter) throw ProtocolError.invalidAdapter(context.chain);\n\n const ok = adapter.verifyWithDelegation({\n ...(context as Record<string, unknown>),\n message: {\n pubkey: (actionCode as ActionCode).pubkey,\n windowStart: (actionCode as ActionCode).timestamp,\n },\n } as unknown as DelegatedContext<unknown>);\n\n if (!ok) {\n throw ProtocolError.invalidSignature(\n \"Delegation signature verification failed\"\n );\n }\n }\n }\n}\n"
20
+ "import type {\n ActionCode,\n CodeGenerationConfig,\n DelegationProof,\n DelegatedActionCode,\n} from \"./types\";\nimport type {\n ChainAdapter,\n WalletContext,\n DelegatedContext,\n} from \"./adapters/BaseChainAdapter\";\nimport { WalletStrategy } from \"./strategy/WalletStrategy\";\nimport { DelegationStrategy } from \"./strategy/DelegationStrategy\";\nimport { SolanaAdapter } from \"./adapters/SolanaAdapter\";\nimport { ProtocolError } from \"./errors\";\n\nexport class ActionCodesProtocol {\n private adapters: Record<string, ChainAdapter> = {};\n private _walletStrategy: WalletStrategy;\n private _delegationStrategy: DelegationStrategy;\n\n constructor(private readonly config: CodeGenerationConfig) {\n // Register default adapters\n this.adapters.solana = new SolanaAdapter() as unknown as ChainAdapter;\n\n // Initialize strategies\n this._walletStrategy = new WalletStrategy(config);\n this._delegationStrategy = new DelegationStrategy(config);\n }\n\n public getConfig(): CodeGenerationConfig {\n return this.config;\n }\n\n /** Register a chain adapter */\n registerAdapter(chain: string, adapter: ChainAdapter): void {\n this.adapters[chain] = adapter;\n }\n\n /** Get a registered adapter */\n getAdapter(chain: string): ChainAdapter | undefined {\n return this.adapters[chain];\n }\n\n /** Typed access to specific adapters */\n get adapter() {\n return {\n solana: this.adapters.solana as unknown as SolanaAdapter,\n };\n }\n\n /** Access to strategies */\n get walletStrategy() {\n return this._walletStrategy;\n }\n\n get delegationStrategy() {\n return this._delegationStrategy;\n }\n\n // Generate code\n generateCode(\n strategy: \"wallet\",\n canonicalMessage: Uint8Array,\n signature: string\n ): {\n actionCode: ActionCode;\n canonicalMessage: Uint8Array;\n };\n generateCode(\n strategy: \"delegation\",\n delegationProof: DelegationProof,\n signature: string\n ): {\n actionCode: DelegatedActionCode;\n };\n generateCode(\n strategy: \"wallet\" | \"delegation\",\n param1: Uint8Array | DelegationProof,\n signature?: string\n ): {\n actionCode: ActionCode | DelegatedActionCode;\n canonicalMessage?: Uint8Array;\n } {\n if (strategy === \"wallet\") {\n // Here param1 must be Uint8Array (canonical message)\n if (!signature) {\n throw ProtocolError.invalidSignature(\n \"Missing signature over canonical message\"\n );\n }\n return this.walletStrategy.generateCode(param1 as Uint8Array, signature);\n } else {\n // Here param1 must be DelegationProof\n if (!signature) {\n throw ProtocolError.invalidSignature(\"Missing delegated signature\");\n }\n return this.delegationStrategy.generateDelegatedCode(\n param1 as DelegationProof,\n signature\n );\n }\n }\n\n // Overloaded validateCode methods with strategy parameter\n validateCode(\n strategy: \"wallet\",\n actionCode: ActionCode,\n context?: WalletContext<unknown>\n ): void;\n validateCode(\n strategy: \"delegation\",\n actionCode: DelegatedActionCode,\n context?: DelegatedContext<unknown>\n ): void;\n validateCode(\n strategy: \"wallet\" | \"delegation\",\n actionCode: ActionCode | DelegatedActionCode,\n param2?: WalletContext<unknown> | DelegatedContext<unknown>\n ): void {\n if (strategy === \"wallet\") {\n // This will throw if validation fails\n this.walletStrategy.validateCode(actionCode as ActionCode);\n\n if (!param2) return;\n\n const context = param2 as Omit<WalletContext<unknown>, \"message\">;\n const adapter = this.getAdapter(context.chain);\n if (!adapter) throw ProtocolError.invalidAdapter(context.chain);\n\n const ok = adapter.verifyWithWallet({\n ...(context as Record<string, unknown>),\n message: {\n pubkey: (actionCode as ActionCode).pubkey,\n windowStart: (actionCode as ActionCode).timestamp,\n },\n } as unknown as WalletContext<unknown>);\n\n if (!ok) {\n throw ProtocolError.invalidSignature(\n \"Wallet signature verification failed\"\n );\n }\n } else {\n const context = param2 as Omit<DelegatedContext<unknown>, \"message\">;\n\n // CRITICAL: First validate the delegated action code\n // This ensures the code was actually generated from this delegation proof\n this.delegationStrategy.validateDelegatedCode(\n actionCode as DelegatedActionCode,\n context.delegationProof\n );\n\n // Then verify the delegation proof signature\n const adapter = this.getAdapter(context.chain);\n if (!adapter) throw ProtocolError.invalidAdapter(context.chain);\n\n const ok = adapter.verifyWithDelegation({\n ...(context as Record<string, unknown>),\n message: {\n pubkey: context.delegationProof.delegatedPubkey,\n windowStart: (actionCode as ActionCode).timestamp,\n },\n } as unknown as DelegatedContext<unknown>);\n\n if (!ok) {\n throw ProtocolError.invalidSignature(\n \"Delegation signature verification failed\"\n );\n }\n }\n }\n}\n"
21
21
  ],
22
- "mappings": "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",
23
- "debugId": "4D7669885DFAB6CB64756E2164756E21",
22
+ "mappings": "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",
23
+ "debugId": "CFB61FD88902383464756E2164756E21",
24
24
  "names": []
25
25
  }
package/dist/index.js CHANGED
@@ -1,3 +1,3 @@
1
- class G8{}/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */function D0(Q){return Q instanceof Uint8Array||ArrayBuffer.isView(Q)&&Q.constructor.name==="Uint8Array"}function J8(Q,X=""){if(!Number.isSafeInteger(Q)||Q<0){let $=X&&`"${X}" `;throw Error(`${$}expected integer >= 0, got ${Q}`)}}function B(Q,X,$=""){let Z=D0(Q),q=Q?.length,J=X!==void 0;if(!Z||J&&q!==X){let R=$&&`"${$}" `,z=J?` of length ${X}`:"",U=Z?`length=${q}`:`type=${typeof Q}`;throw Error(R+"expected Uint8Array"+z+", got "+U)}return Q}function s(Q){if(typeof Q!=="function"||typeof Q.create!=="function")throw Error("Hash must wrapped by utils.createHasher");J8(Q.outputLen),J8(Q.blockLen)}function u(Q,X=!0){if(Q.destroyed)throw Error("Hash instance has been destroyed");if(X&&Q.finished)throw Error("Hash#digest() has already been called")}function S8(Q,X){B(Q,void 0,"digestInto() output");let $=X.outputLen;if(Q.length<$)throw Error('"digestInto() output" expected to be of length >='+$)}function V(...Q){for(let X=0;X<Q.length;X++)Q[X].fill(0)}function R8(Q){return new DataView(Q.buffer,Q.byteOffset,Q.byteLength)}function I(Q,X){return Q<<32-X|Q>>>X}function H8(Q,X={}){let $=(q,J)=>Q(J).update(q).digest(),Z=Q(void 0);return $.outputLen=Z.outputLen,$.blockLen=Z.blockLen,$.create=(q)=>Q(q),Object.assign($,X),Object.freeze($)}var _8=(Q)=>({oid:Uint8Array.from([6,9,96,134,72,1,101,3,4,2,Q])});function A8(Q,X,$){return Q&X^~Q&$}function f8(Q,X,$){return Q&X^Q&$^X&$}class Y8{blockLen;outputLen;padOffset;isLE;buffer;view;finished=!1;length=0;pos=0;destroyed=!1;constructor(Q,X,$,Z){this.blockLen=Q,this.outputLen=X,this.padOffset=$,this.isLE=Z,this.buffer=new Uint8Array(Q),this.view=R8(this.buffer)}update(Q){u(this),B(Q);let{view:X,buffer:$,blockLen:Z}=this,q=Q.length;for(let J=0;J<q;){let R=Math.min(Z-this.pos,q-J);if(R===Z){let z=R8(Q);for(;Z<=q-J;J+=Z)this.process(z,J);continue}if($.set(Q.subarray(J,J+R),this.pos),this.pos+=R,J+=R,this.pos===Z)this.process(X,0),this.pos=0}return this.length+=Q.length,this.roundClean(),this}digestInto(Q){u(this),S8(Q,this),this.finished=!0;let{buffer:X,view:$,blockLen:Z,isLE:q}=this,{pos:J}=this;if(X[J++]=128,V(this.buffer.subarray(J)),this.padOffset>Z-J)this.process($,0),J=0;for(let N=J;N<Z;N++)X[N]=0;$.setBigUint64(Z-8,BigInt(this.length*8),q),this.process($,0);let R=R8(Q),z=this.outputLen;if(z%4)throw Error("_sha2: outputLen must be aligned to 32bit");let U=z/4,j=this.get();if(U>j.length)throw Error("_sha2: outputLen bigger than state");for(let N=0;N<U;N++)R.setUint32(4*N,j[N],q)}digest(){let{buffer:Q,outputLen:X}=this;this.digestInto(Q);let $=Q.slice(0,X);return this.destroy(),$}_cloneInto(Q){Q||=new this.constructor,Q.set(...this.get());let{blockLen:X,buffer:$,length:Z,finished:q,destroyed:J,pos:R}=this;if(Q.destroyed=J,Q.finished=q,Q.length=Z,Q.pos=R,Z%X)Q.buffer.set($);return Q}clone(){return this._cloneInto()}}var E=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),C=Uint32Array.from([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428]),G=Uint32Array.from([3418070365,3238371032,1654270250,914150663,2438529370,812702999,355462360,4144912697,1731405415,4290775857,2394180231,1750603025,3675008525,1694076839,1203062813,3204075428]),F=Uint32Array.from([1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209]);var N8=BigInt(4294967295),u8=BigInt(32);function G0(Q,X=!1){if(X)return{h:Number(Q&N8),l:Number(Q>>u8&N8)};return{h:Number(Q>>u8&N8)|0,l:Number(Q&N8)|0}}function g8(Q,X=!1){let $=Q.length,Z=new Uint32Array($),q=new Uint32Array($);for(let J=0;J<$;J++){let{h:R,l:z}=G0(Q[J],X);[Z[J],q[J]]=[R,z]}return[Z,q]}var F8=(Q,X,$)=>Q>>>$,w8=(Q,X,$)=>Q<<32-$|X>>>$,_=(Q,X,$)=>Q>>>$|X<<32-$,A=(Q,X,$)=>Q<<32-$|X>>>$,i=(Q,X,$)=>Q<<64-$|X>>>$-32,r=(Q,X,$)=>Q>>>$-32|X<<64-$;function T(Q,X,$,Z){let q=(X>>>0)+(Z>>>0);return{h:Q+$+(q/4294967296|0)|0,l:q|0}}var c8=(Q,X,$)=>(Q>>>0)+(X>>>0)+($>>>0),h8=(Q,X,$,Z)=>X+$+Z+(Q/4294967296|0)|0,d8=(Q,X,$,Z)=>(Q>>>0)+(X>>>0)+($>>>0)+(Z>>>0),n8=(Q,X,$,Z,q)=>X+$+Z+q+(Q/4294967296|0)|0,l8=(Q,X,$,Z,q)=>(Q>>>0)+(X>>>0)+($>>>0)+(Z>>>0)+(q>>>0),s8=(Q,X,$,Z,q,J)=>X+$+Z+q+J+(Q/4294967296|0)|0;var w0=Uint32Array.from([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]),P=new Uint32Array(64);class k8 extends Y8{constructor(Q){super(64,Q,8,!1)}get(){let{A:Q,B:X,C:$,D:Z,E:q,F:J,G:R,H:z}=this;return[Q,X,$,Z,q,J,R,z]}set(Q,X,$,Z,q,J,R,z){this.A=Q|0,this.B=X|0,this.C=$|0,this.D=Z|0,this.E=q|0,this.F=J|0,this.G=R|0,this.H=z|0}process(Q,X){for(let N=0;N<16;N++,X+=4)P[N]=Q.getUint32(X,!1);for(let N=16;N<64;N++){let K=P[N-15],O=P[N-2],w=I(K,7)^I(K,18)^K>>>3,D=I(O,17)^I(O,19)^O>>>10;P[N]=D+P[N-7]+w+P[N-16]|0}let{A:$,B:Z,C:q,D:J,E:R,F:z,G:U,H:j}=this;for(let N=0;N<64;N++){let K=I(R,6)^I(R,11)^I(R,25),O=j+K+A8(R,z,U)+w0[N]+P[N]|0,D=(I($,2)^I($,13)^I($,22))+f8($,Z,q)|0;j=U,U=z,z=R,R=J+O|0,J=q,q=Z,Z=$,$=O+D|0}$=$+this.A|0,Z=Z+this.B|0,q=q+this.C|0,J=J+this.D|0,R=R+this.E|0,z=z+this.F|0,U=U+this.G|0,j=j+this.H|0,this.set($,Z,q,J,R,z,U,j)}roundClean(){V(P)}destroy(){this.set(0,0,0,0,0,0,0,0),V(this.buffer)}}class i8 extends k8{A=E[0]|0;B=E[1]|0;C=E[2]|0;D=E[3]|0;E=E[4]|0;F=E[5]|0;G=E[6]|0;H=E[7]|0;constructor(){super(32)}}class k0 extends k8{A=C[0]|0;B=C[1]|0;C=C[2]|0;D=C[3]|0;E=C[4]|0;F=C[5]|0;G=C[6]|0;H=C[7]|0;constructor(){super(28)}}var r8=(()=>g8(["0x428a2f98d728ae22","0x7137449123ef65cd","0xb5c0fbcfec4d3b2f","0xe9b5dba58189dbbc","0x3956c25bf348b538","0x59f111f1b605d019","0x923f82a4af194f9b","0xab1c5ed5da6d8118","0xd807aa98a3030242","0x12835b0145706fbe","0x243185be4ee4b28c","0x550c7dc3d5ffb4e2","0x72be5d74f27b896f","0x80deb1fe3b1696b1","0x9bdc06a725c71235","0xc19bf174cf692694","0xe49b69c19ef14ad2","0xefbe4786384f25e3","0x0fc19dc68b8cd5b5","0x240ca1cc77ac9c65","0x2de92c6f592b0275","0x4a7484aa6ea6e483","0x5cb0a9dcbd41fbd4","0x76f988da831153b5","0x983e5152ee66dfab","0xa831c66d2db43210","0xb00327c898fb213f","0xbf597fc7beef0ee4","0xc6e00bf33da88fc2","0xd5a79147930aa725","0x06ca6351e003826f","0x142929670a0e6e70","0x27b70a8546d22ffc","0x2e1b21385c26c926","0x4d2c6dfc5ac42aed","0x53380d139d95b3df","0x650a73548baf63de","0x766a0abb3c77b2a8","0x81c2c92e47edaee6","0x92722c851482353b","0xa2bfe8a14cf10364","0xa81a664bbc423001","0xc24b8b70d0f89791","0xc76c51a30654be30","0xd192e819d6ef5218","0xd69906245565a910","0xf40e35855771202a","0x106aa07032bbd1b8","0x19a4c116b8d2d0c8","0x1e376c085141ab53","0x2748774cdf8eeb99","0x34b0bcb5e19b48a8","0x391c0cb3c5c95a63","0x4ed8aa4ae3418acb","0x5b9cca4f7763e373","0x682e6ff3d6b2b8a3","0x748f82ee5defb2fc","0x78a5636f43172f60","0x84c87814a1f0ab72","0x8cc702081a6439ec","0x90befffa23631e28","0xa4506cebde82bde9","0xbef9a3f7b2c67915","0xc67178f2e372532b","0xca273eceea26619c","0xd186b8c721c0c207","0xeada7dd6cde0eb1e","0xf57d4f7fee6ed178","0x06f067aa72176fba","0x0a637dc5a2c898a6","0x113f9804bef90dae","0x1b710b35131c471b","0x28db77f523047d84","0x32caab7b40c72493","0x3c9ebe0a15c9bebc","0x431d67c49c100d4c","0x4cc5d4becb3e42b6","0x597f299cfc657e2a","0x5fcb6fab3ad6faec","0x6c44198c4a475817"].map((Q)=>BigInt(Q))))(),L0=(()=>r8[0])(),M0=(()=>r8[1])(),p=new Uint32Array(80),S=new Uint32Array(80);class a extends Y8{constructor(Q){super(128,Q,16,!1)}get(){let{Ah:Q,Al:X,Bh:$,Bl:Z,Ch:q,Cl:J,Dh:R,Dl:z,Eh:U,El:j,Fh:N,Fl:K,Gh:O,Gl:w,Hh:D,Hl:M}=this;return[Q,X,$,Z,q,J,R,z,U,j,N,K,O,w,D,M]}set(Q,X,$,Z,q,J,R,z,U,j,N,K,O,w,D,M){this.Ah=Q|0,this.Al=X|0,this.Bh=$|0,this.Bl=Z|0,this.Ch=q|0,this.Cl=J|0,this.Dh=R|0,this.Dl=z|0,this.Eh=U|0,this.El=j|0,this.Fh=N|0,this.Fl=K|0,this.Gh=O|0,this.Gl=w|0,this.Hh=D|0,this.Hl=M|0}process(Q,X){for(let v=0;v<16;v++,X+=4)p[v]=Q.getUint32(X),S[v]=Q.getUint32(X+=4);for(let v=16;v<80;v++){let y=p[v-15]|0,m=S[v-15]|0,O8=_(y,m,1)^_(y,m,8)^F8(y,m,7),v8=A(y,m,1)^A(y,m,8)^w8(y,m,7),x=p[v-2]|0,b=S[v-2]|0,Z8=_(x,b,19)^i(x,b,61)^F8(x,b,6),W8=A(x,b,19)^r(x,b,61)^w8(x,b,6),q8=d8(v8,W8,S[v-7],S[v-16]),D8=n8(q8,O8,Z8,p[v-7],p[v-16]);p[v]=D8|0,S[v]=q8|0}let{Ah:$,Al:Z,Bh:q,Bl:J,Ch:R,Cl:z,Dh:U,Dl:j,Eh:N,El:K,Fh:O,Fl:w,Gh:D,Gl:M,Hh:W,Hl:l}=this;for(let v=0;v<80;v++){let y=_(N,K,14)^_(N,K,18)^i(N,K,41),m=A(N,K,14)^A(N,K,18)^r(N,K,41),O8=N&O^~N&D,v8=K&w^~K&M,x=l8(l,m,v8,M0[v],S[v]),b=s8(x,W,y,O8,L0[v],p[v]),Z8=x|0,W8=_($,Z,28)^i($,Z,34)^i($,Z,39),q8=A($,Z,28)^r($,Z,34)^r($,Z,39),D8=$&q^$&R^q&R,W0=Z&J^Z&z^J&z;W=D|0,l=M|0,D=O|0,M=w|0,O=N|0,w=K|0,{h:N,l:K}=T(U|0,j|0,b|0,Z8|0),U=R|0,j=z|0,R=q|0,z=J|0,q=$|0,J=Z|0;let p8=c8(Z8,q8,W0);$=h8(p8,b,W8,D8),Z=p8|0}({h:$,l:Z}=T(this.Ah|0,this.Al|0,$|0,Z|0)),{h:q,l:J}=T(this.Bh|0,this.Bl|0,q|0,J|0),{h:R,l:z}=T(this.Ch|0,this.Cl|0,R|0,z|0),{h:U,l:j}=T(this.Dh|0,this.Dl|0,U|0,j|0),{h:N,l:K}=T(this.Eh|0,this.El|0,N|0,K|0),{h:O,l:w}=T(this.Fh|0,this.Fl|0,O|0,w|0),{h:D,l:M}=T(this.Gh|0,this.Gl|0,D|0,M|0),{h:W,l}=T(this.Hh|0,this.Hl|0,W|0,l|0),this.set($,Z,q,J,R,z,U,j,N,K,O,w,D,M,W,l)}roundClean(){V(p,S)}destroy(){V(this.buffer),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}}class V0 extends a{Ah=F[0]|0;Al=F[1]|0;Bh=F[2]|0;Bl=F[3]|0;Ch=F[4]|0;Cl=F[5]|0;Dh=F[6]|0;Dl=F[7]|0;Eh=F[8]|0;El=F[9]|0;Fh=F[10]|0;Fl=F[11]|0;Gh=F[12]|0;Gl=F[13]|0;Hh=F[14]|0;Hl=F[15]|0;constructor(){super(64)}}class I0 extends a{Ah=G[0]|0;Al=G[1]|0;Bh=G[2]|0;Bl=G[3]|0;Ch=G[4]|0;Cl=G[5]|0;Dh=G[6]|0;Dl=G[7]|0;Eh=G[8]|0;El=G[9]|0;Fh=G[10]|0;Fl=G[11]|0;Gh=G[12]|0;Gl=G[13]|0;Hh=G[14]|0;Hl=G[15]|0;constructor(){super(48)}}var k=Uint32Array.from([2352822216,424955298,1944164710,2312950998,502970286,855612546,1738396948,1479516111,258812777,2077511080,2011393907,79989058,1067287976,1780299464,286451373,2446758561]),L=Uint32Array.from([573645204,4230739756,2673172387,3360449730,596883563,1867755857,2520282905,1497426621,2519219938,2827943907,3193839141,1401305490,721525244,746961066,246885852,2177182882]);class T0 extends a{Ah=k[0]|0;Al=k[1]|0;Bh=k[2]|0;Bl=k[3]|0;Ch=k[4]|0;Cl=k[5]|0;Dh=k[6]|0;Dl=k[7]|0;Eh=k[8]|0;El=k[9]|0;Fh=k[10]|0;Fl=k[11]|0;Gh=k[12]|0;Gl=k[13]|0;Hh=k[14]|0;Hl=k[15]|0;constructor(){super(28)}}class x0 extends a{Ah=L[0]|0;Al=L[1]|0;Bh=L[2]|0;Bl=L[3]|0;Ch=L[4]|0;Cl=L[5]|0;Dh=L[6]|0;Dl=L[7]|0;Eh=L[8]|0;El=L[9]|0;Fh=L[10]|0;Fl=L[11]|0;Gh=L[12]|0;Gl=L[13]|0;Hh=L[14]|0;Hl=L[15]|0;constructor(){super(32)}}var z8=H8(()=>new i8,_8(1));class L8{oHash;iHash;blockLen;outputLen;finished=!1;destroyed=!1;constructor(Q,X){if(s(Q),B(X,void 0,"key"),this.iHash=Q.create(),typeof this.iHash.update!=="function")throw Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;let $=this.blockLen,Z=new Uint8Array($);Z.set(X.length>$?Q.create().update(X).digest():X);for(let q=0;q<Z.length;q++)Z[q]^=54;this.iHash.update(Z),this.oHash=Q.create();for(let q=0;q<Z.length;q++)Z[q]^=106;this.oHash.update(Z),V(Z)}update(Q){return u(this),this.iHash.update(Q),this}digestInto(Q){u(this),B(Q,this.outputLen,"output"),this.finished=!0,this.iHash.digestInto(Q),this.oHash.update(Q),this.oHash.digestInto(Q),this.destroy()}digest(){let Q=new Uint8Array(this.oHash.outputLen);return this.digestInto(Q),Q}_cloneInto(Q){Q||=Object.create(Object.getPrototypeOf(this),{});let{oHash:X,iHash:$,finished:Z,destroyed:q,blockLen:J,outputLen:R}=this;return Q=Q,Q.finished=Z,Q.destroyed=q,Q.blockLen=J,Q.outputLen=R,Q.oHash=X._cloneInto(Q.oHash),Q.iHash=$._cloneInto(Q.iHash),Q}clone(){return this._cloneInto()}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}}var g=(Q,X,$)=>new L8(Q,X).update($).digest();g.create=(Q,X)=>new L8(Q,X);function b0(Q,X,$){if(s(Q),$===void 0)$=new Uint8Array(Q.outputLen);return g(Q,$,X)}var M8=Uint8Array.of(0),a8=Uint8Array.of();function E0(Q,X,$,Z=32){s(Q),J8(Z,"length");let q=Q.outputLen;if(Z>255*q)throw Error("Length must be <= 255*HashLen");let J=Math.ceil(Z/q);if($===void 0)$=a8;else B($,void 0,"info");let R=new Uint8Array(J*q),z=g.create(Q,X),U=z._cloneInto(),j=new Uint8Array(z.outputLen);for(let N=0;N<J;N++)M8[0]=N+1,U.update(N===0?a8:j).update($).update(M8).digestInto(j),R.set(j,q*N),z._cloneInto(U);return z.destroy(),U.destroy(),V(j,M8),R.slice(0,Z)}var e8=(Q,X,$,Z,q)=>E0(Q,b0(Q,X,$),Z,q);function c(Q){if(typeof Q==="string")return new TextEncoder().encode(Q);return Q}function C0(Q){return z8(c(Q))}function V8(Q,X){return g(z8,c(Q),c(X))}function r0(Q,X,{salt:$,info:Z}={}){let q=$?c($):new Uint8Array(32),J=c(Q),R=Z?c(Z):new Uint8Array(0);return e8(z8,J,q,R,X)}var t8="0123456789ABCDEFGHJKMNPQRSTVWXYZ";function a0(Q){let X=0,$=0,Z="";for(let q=0;q<Q.length;q++){$=$<<8|Q[q],X+=8;while(X>=5)Z+=t8[$>>>X-5&31],X-=5}if(X>0)Z+=t8[$<<5-X&31];return Z}function I8(Q,X){let $=Math.ceil(X/8),Z=new Uint8Array($),q=Math.min($,Q.length);Z.set(Q.subarray(0,q));let J=$*8-X;if(J>0){let R=255<<J;Z[$-1]=Z[$-1]&R}return Z}function T8(Q,X){if(Q.length===0)throw Error("digestToDigits: empty digest");let $="",Z=Q[Q.length-1]&15;for(let q=0;$.length<X;q++){let J=(Z+q*4)%Math.max(1,Q.length-4),U=(((Q[J]&127)<<24|Q[J+1]<<16|Q[J+2]<<8|Q[J+3])%1e9).toString().padStart(9,"0");$+=U}return $.slice(0,X)}function o8(Q){let X=C0(Q);return Array.from(X).map(($)=>$.toString(16).padStart(2,"0")).join("")}var t0=1,o0="actioncodes",QQ="actioncodes-revoke";function H(Q){let X=JSON.stringify({id:"actioncodes",ver:1,pubkey:Q.pubkey,windowStart:Q.windowStart});return new TextEncoder().encode(X)}function x8(Q){let X=JSON.stringify({id:"actioncodes-revoke",ver:1,pubkey:Q.pubkey,codeHash:Q.codeHash,windowStart:Q.windowStart});return new TextEncoder().encode(X)}function e(Q,X){let $=Math.floor(Date.now()/X)*X;return H({pubkey:Q,windowStart:$})}function b8(Q){let X=JSON.stringify({walletPubkey:Q.walletPubkey,delegatedPubkey:Q.delegatedPubkey,expiresAt:Q.expiresAt,chain:Q.chain});return new TextEncoder().encode(X)}var E8="NFC",t=256,C8=6,y8=24,$Q=8,ZQ="0123456789",qQ=["solana"];var m8="actioncodes:";function B8(Q){let X=Q0(Q);if(X.int!=null)U8(X.int);let $=[`ver=${X.ver}`,`id=${encodeURIComponent(X.id)}`,`int=${encodeURIComponent(X.int)}`];if(X.p!=null&&Object.keys(X.p).length>0){let q=JSON.stringify(X.p);U8(q),$.push(`p=${encodeURIComponent(q)}`)}let Z=m8+$.join("&");return X0(Z),Z}function j8(Q){if(!Q.startsWith(m8))throw Error("protocol meta must start with actioncodes:");let $=Q.slice(m8.length).split("&").filter(Boolean),Z=new Map;for(let O of $){let[w,D]=O.split("=",2);if(!w)continue;let M=D!=null?decodeURIComponent(D):"";Z.set(w,M)}let q=Z.get("ver"),J=Z.get("id"),R=Z.get("int"),z=Z.get("p");if(q==null||J==null||R==null)throw Error("protocol meta missing required fields ver or id or int");let U=Number(q);if(!Number.isInteger(U)||U<=0)throw Error("protocol meta ver must be positive integer");let j;if(z!=null&&z!=="")try{if(j=JSON.parse(z),typeof j!=="object"||j===null||Array.isArray(j))throw Error("protocol meta p must be a JSON object")}catch{throw Error("protocol meta p must be valid JSON")}let N=Q0({ver:U,id:J,int:R,p:j});if(N.int!=null)U8(N.int);if(N.p!=null)U8(JSON.stringify(N.p));if([...Z.keys()].filter((O)=>O!=="ver"&&O!=="id"&&O!=="int"&&O!=="p").length>0)throw Error("protocol meta contains unsupported keys");return X0(B8(N)),N}function YQ(Q){try{return j8(Q),{ok:!0}}catch(X){return{ok:!1,reason:String(X)}}}function Q0(Q){let X=Q.id.normalize(E8).trim(),$={ver:Q.ver,id:X,int:Q.int};if(Q.int!=null)$.int=Q.int.normalize(E8).trim();if(Q.p!=null)$.p=Q.p;return $}function X0(Q){if(new TextEncoder().encode(Q).length>t)throw Error(`protocol meta exceeds ${t} bytes`)}function U8(Q){if(new TextEncoder().encode(Q).length>t)throw Error(`protocol meta params exceed ${t} bytes`)}var y0;((W)=>{W.EXPIRED_CODE="EXPIRED_CODE";W.INVALID_CODE="INVALID_CODE";W.INVALID_CODE_FORMAT="INVALID_CODE_FORMAT";W.INVALID_SIGNATURE="INVALID_SIGNATURE";W.MISSING_META="MISSING_META";W.INVALID_META_FORMAT="INVALID_META_FORMAT";W.META_MISMATCH="META_MISMATCH";W.META_TOO_LARGE="META_TOO_LARGE";W.TRANSACTION_NOT_SIGNED_BY_INTENDED_OWNER="TRANSACTION_NOT_SIGNED_BY_INTENDED_OWNER";W.INVALID_TRANSACTION_FORMAT="INVALID_TRANSACTION_FORMAT";W.INVALID_PUBKEY_FORMAT="INVALID_PUBKEY_FORMAT";W.INVALID_INPUT="INVALID_INPUT";W.MISSING_REQUIRED_FIELD="MISSING_REQUIRED_FIELD";W.CRYPTO_ERROR="CRYPTO_ERROR";W.INVALID_DIGEST="INVALID_DIGEST";W.INVALID_ADAPTER="INVALID_ADAPTER"})(y0||={});class Y extends Error{code;details;constructor(Q,X,$){super(X);this.code=Q;this.details=$;this.name="ProtocolError"}static expiredCode(Q,X,$){return new $0(Q,X,$)}static invalidCode(){return new Y("INVALID_CODE","Invalid code provided",{})}static invalidCodeFormat(Q,X){return new N0(Q,X)}static invalidSignature(Q){return new Y0(Q)}static missingMeta(){return new Z0}static invalidMetaFormat(Q){return new Y("INVALID_META_FORMAT",`Invalid protocol meta format: ${Q}`,{reason:Q})}static metaMismatch(Q,X,$){return new q0(Q,X,$)}static metaTooLarge(Q,X){return new Y("META_TOO_LARGE",`Protocol meta too large: ${X} bytes (max: ${Q})`,{maxBytes:Q,actualBytes:X})}static transactionNotSignedByIntendedOwner(Q,X){return new J0(Q,X)}static invalidTransactionFormat(Q){return new Y("INVALID_TRANSACTION_FORMAT",`Invalid transaction format: ${Q}`,{reason:Q})}static invalidPubkeyFormat(Q,X){return new R0(Q,X)}static invalidInput(Q,X,$){return new Y("INVALID_INPUT",`Invalid ${Q}: ${$}`,{field:Q,value:X,reason:$})}static missingRequiredField(Q){return new Y("MISSING_REQUIRED_FIELD",`Missing required field: ${Q}`,{field:Q})}static cryptoError(Q,X){return new Y("CRYPTO_ERROR",`Crypto error in ${Q}: ${X}`,{operation:Q,reason:X})}static invalidDigest(Q){return new Y("INVALID_DIGEST",`Invalid digest: ${Q}`,{reason:Q})}static invalidAdapter(Q){return new z0(Q)}static create(Q,X,$){return new Y(Q,X,$)}}class $0 extends Y{constructor(Q,X,$){super("EXPIRED_CODE",`Action code '${Q}' expired at ${X}, current time: ${$}`,{code:Q,expiresAt:X,currentTime:$});this.name="ExpiredCodeError"}}class Z0 extends Y{constructor(){super("MISSING_META","Transaction does not contain valid protocol meta");this.name="MissingMetaError"}}class q0 extends Y{constructor(Q,X,$){super("META_MISMATCH",`Meta ${$} mismatch: expected '${Q}', got '${X}'`,{expected:Q,actual:X,field:$});this.name="MetaMismatchError"}}class J0 extends Y{constructor(Q,X){super("TRANSACTION_NOT_SIGNED_BY_INTENDED_OWNER",`Transaction not signed by intended owner '${Q}'. Actual signers: [${X.join(", ")}]`,{intended:Q,actualSigners:X});this.name="TransactionNotSignedByIntendedOwnerError"}}class R0 extends Y{constructor(Q,X){super("INVALID_PUBKEY_FORMAT",`Invalid public key format '${Q}': ${X}`,{pubkey:Q,reason:X});this.name="InvalidPubkeyFormatError"}}class Y0 extends Y{constructor(Q){super("INVALID_SIGNATURE",`Invalid signature: ${Q}`,{reason:Q});this.name="InvalidSignatureError"}}class N0 extends Y{constructor(Q,X){super("INVALID_CODE_FORMAT",`Invalid code format '${Q}': ${X}`,{code:Q,reason:X});this.name="InvalidCodeFormatError"}}class z0 extends Y{constructor(Q){super("INVALID_ADAPTER",`Invalid adapter: ${Q}`,{adapter:Q});this.name="InvalidAdapterError"}}import U0 from"bs58";class o{config;constructor(Q){this.config=Q}generateCode(Q,X){let $=Q,Z=JSON.parse(new TextDecoder().decode($)),q=Z.pubkey,J=Z.windowStart,R;try{R=U0.decode(X)}catch{throw Y.invalidSignature("Invalid Base58 signature format")}let z=V8(R,$),U=Math.max(C8,Math.min(y8,this.config.codeLength)),j=8*Math.ceil(U/2),N=I8(z,j);return{actionCode:{code:T8(N,U),pubkey:q,timestamp:J,expiresAt:J+this.config.ttlMs,signature:X},canonicalMessage:$}}validateCode(Q){let X=Date.now();if(X>Q.expiresAt+(this.config.clockSkewMs??0))throw Y.expiredCode(Q.code,Q.expiresAt,X);let $=H({pubkey:Q.pubkey,windowStart:Q.timestamp});if(!Q.signature)throw Y.missingRequiredField("signature");let Z;try{Z=U0.decode(Q.signature)}catch{throw Y.invalidSignature("Invalid Base58 signature format")}let q=V8(Z,$),J=Math.max(C8,Math.min(y8,this.config.codeLength)),R=I8(q,8*Math.ceil(J/2));if(T8(R,J)!==Q.code)throw Y.invalidCode()}getCanonicalMessageParts(Q){return e(Q,this.config.ttlMs)}}import{PublicKey as j0}from"@solana/web3.js";import K0 from"tweetnacl";import O0 from"bs58";class P8{walletStrategy;config;constructor(Q){this.config=Q,this.walletStrategy=new o(Q)}generateDelegatedCode(Q,X){this.validateDelegationProof(Q);let $=e(Q.delegatedPubkey,this.config.ttlMs);return{actionCode:{...this.walletStrategy.generateCode($,X).actionCode,pubkey:Q.walletPubkey,delegationProof:Q}}}validateDelegatedCode(Q,X){let $=Date.now();if($>Q.expiresAt+(this.config.clockSkewMs??0))throw Y.expiredCode(Q.code,Q.expiresAt,$);if(this.validateDelegationProof(X),Q.pubkey!==X.walletPubkey||Q.pubkey!==Q.delegationProof.walletPubkey)throw Y.invalidInput("walletPubkey",Q.delegationProof.walletPubkey,"Action code wallet pubkey does not match delegation proof");if(Q.delegationProof.delegatedPubkey!==X.delegatedPubkey)throw Y.invalidInput("delegatedPubkey",Q.delegationProof.delegatedPubkey,"Invalid delegatedPubkey: Action code delegated pubkey does not match delegation proof");if(Q.delegationProof.expiresAt!==X.expiresAt)throw Y.invalidInput("expiresAt",Q.delegationProof.expiresAt,"Action code delegation expiration does not match delegation proof");if(!Q.delegationProof.signature)throw Y.missingRequiredField("delegationProof.signature");if(Q.delegationProof.signature!==X.signature)throw Y.invalidInput("signature",Q.delegationProof.signature,"Invalid signature: Action code delegation signature does not match delegation proof");let Z=H({pubkey:X.delegatedPubkey,windowStart:Q.timestamp}),q;try{q=O0.decode(Q.signature??"")}catch{throw Y.invalidSignature("Invalid Base58 delegated signature format")}let J=O0.decode(X.delegatedPubkey);if(!K0.sign.detached.verify(Z,q,J))throw Y.invalidSignature("Delegated signature verification failed")}validateDelegationProof(Q){if(!Q.walletPubkey||typeof Q.walletPubkey!=="string")throw Y.invalidInput("walletPubkey",Q.walletPubkey,"Wallet pubkey is required and must be a string");try{new j0(Q.walletPubkey)}catch{throw Y.invalidInput("walletPubkey",Q.walletPubkey,"Invalid wallet pubkey format")}if(!Q.delegatedPubkey||typeof Q.delegatedPubkey!=="string")throw Y.invalidInput("delegatedPubkey",Q.delegatedPubkey,"Delegated pubkey is required and must be a string");try{new j0(Q.delegatedPubkey)}catch{throw Y.invalidInput("delegatedPubkey",Q.delegatedPubkey,"Invalid delegated pubkey format")}if(!Q.chain||typeof Q.chain!=="string")throw Y.invalidInput("chain",Q.chain,"Chain is required and must be a string");if(Q.chain.length===0||Q.chain.length>50)throw Y.invalidInput("chain",Q.chain,"Chain must be between 1 and 50 characters");if(!/^[a-z0-9-]+$/.test(Q.chain))throw Y.invalidInput("chain",Q.chain,"Chain contains invalid characters (only lowercase letters, numbers, and hyphens allowed)");if(typeof Q.expiresAt!=="number"||!Number.isInteger(Q.expiresAt))throw Y.invalidInput("expiresAt",Q.expiresAt,"Expiration time must be a valid integer timestamp");if(Q.expiresAt<=0)throw Y.invalidInput("expiresAt",Q.expiresAt,"Expiration time must be positive");let X=Date.now(),$=31536000000;if(Q.expiresAt>X+$)throw Y.invalidInput("expiresAt",Q.expiresAt,"Expiration time is too far in the future");if(Q.expiresAt<X)throw Y.expiredCode("Delegation proof has expired",Q.expiresAt,X);if(!Q.signature||typeof Q.signature!=="string")throw Y.invalidInput("signature",Q.signature,"Delegation signature is required and must be a string");if(Q.signature.length===0||Q.signature.length>200)throw Y.invalidInput("signature",Q.signature,"Delegation signature must be between 1 and 200 characters")}getCanonicalMessageParts(Q){return e(Q,this.config.ttlMs)}}import f from"tweetnacl";import h from"bs58";import{PublicKey as v0,Transaction as d,VersionedTransaction as K8,TransactionInstruction as m0,MessageV0 as Q8}from"@solana/web3.js";import{createMemoInstruction as B0,MEMO_PROGRAM_ID as X8}from"@solana/spl-memo";var n="solana";class $8 extends G8{normalizePubkey(Q){if(typeof Q==="string")return new v0(Q);return Q}verifyWithWallet(Q){if(Q.chain!==n)return!1;if(!Q.message||!Q.message.pubkey||!Q.walletSignature)return!1;try{let X=H(Q.message),$=this.normalizePubkey(Q.message.pubkey),Z=h.decode(Q.walletSignature),q=$.toBytes();if(Z.length!==64||q.length!==32)return!1;return f.sign.detached.verify(X,Z,q)}catch{return!1}}verifyWithDelegation(Q){if(Q.chain!==n)return!1;if(!Q.message.pubkey||!Q.delegatedSignature||!Q.delegationProof)return!1;let X=Q.delegationProof;if(!X.walletPubkey||!X.delegatedPubkey||!X.chain||!X.expiresAt||!X.signature)return!1;if(X.chain!==n)return!1;if(X.delegatedPubkey!==Q.message.pubkey)return!1;if(X.expiresAt<Date.now())return!1;try{let $=b8(X),Z=this.normalizePubkey(X.walletPubkey),q=h.decode(X.signature),J=Z.toBytes(),R=H(Q.message),z=this.normalizePubkey(X.delegatedPubkey),U=h.decode(Q.delegatedSignature),j=z.toBytes();if(q.length!==64||J.length!==32)return!1;if(U.length!==64||j.length!==32)return!1;let N=f.sign.detached.verify($,q,J),K=f.sign.detached.verify(R,U,j);return N&&K}catch{return!1}}verifyRevokeWithWallet(Q){if(Q.chain!==n)return!1;if(!Q.message||!Q.message.pubkey||!Q.walletSignature)return!1;try{let X=x8(Q.message),$=this.normalizePubkey(Q.message.pubkey),Z=h.decode(Q.walletSignature),q=$.toBytes();if(Z.length!==64||q.length!==32)return!1;return f.sign.detached.verify(X,Z,q)}catch{return!1}}verifyRevokeWithDelegation(Q){if(Q.chain!==n)return!1;if(!Q.message||!Q.message.pubkey||!Q.delegatedSignature||!Q.delegationProof)return!1;let X=Q.delegationProof;if(!X.walletPubkey||!X.delegatedPubkey||!X.chain||!X.expiresAt||!X.signature)return!1;if(X.chain!==n)return!1;if(X.delegatedPubkey!==Q.message.pubkey)return!1;if(X.expiresAt<Date.now())return!1;try{let $=b8(X),Z=this.normalizePubkey(X.walletPubkey),q=h.decode(X.signature),J=Z.toBytes();if(q.length!==64||J.length!==32)return!1;if(!f.sign.detached.verify($,q,J))return!1;let z=x8(Q.message),U=this.normalizePubkey(X.delegatedPubkey),j=h.decode(Q.delegatedSignature),N=U.toBytes();if(j.length!==64||N.length!==32)return!1;return f.sign.detached.verify(z,j,N)}catch{return!1}}static createProtocolMetaIx(Q){let X=B8(Q);return B0(X)}getProtocolMeta(Q){try{let X=this.deserializeTransaction(Q);for(let $ of this.getMemoInstructions(X)){let Z=$.data;try{let q=new TextDecoder().decode(Z);if(j8(q))return q}catch{}}return null}catch{return null}}deserializeTransaction(Q){try{let X=K8.deserialize(Buffer.from(Q,"base64"));if(X.message instanceof Q8)return X;else return d.from(Buffer.from(Q,"base64"))}catch{try{return d.from(Buffer.from(Q,"base64"))}catch{throw Y.invalidTransactionFormat("Invalid base64 transaction format")}}}parseMeta(Q){let X=this.getProtocolMeta(Q);if(!X)return null;return j8(X)}getMemoInstructions(Q){if(Q instanceof d)return Q.instructions.filter((X)=>X.programId.equals(X8));else{let $=Q.message;if($ instanceof Q8){let Z=[];for(let q of $.compiledInstructions){let J=$.staticAccountKeys[q.programIdIndex];if(J&&J.equals(X8)){let R=q.accountKeyIndexes.map((z)=>({pubkey:$.staticAccountKeys[z],isSigner:!1,isWritable:!1}));Z.push(new m0({keys:R,programId:J,data:q.data}))}}return Z}return[]}}verifyTransactionMatchesCode(Q,X){let $=Date.now();if($>Q.expiresAt)throw Y.expiredCode(Q.code,Q.expiresAt,$);let Z=this.parseMeta(X);if(!Z)throw Y.missingMeta();if(Z.ver!==2)throw Y.metaMismatch("2",String(Z.ver),"ver");let q=o8(Q.code);if(Z.id!==q)throw Y.metaMismatch(q,Z.id,"id");if(Z.int!==Q.pubkey)throw Y.metaMismatch(Q.pubkey,Z.int,"int")}verifyTransactionSignedByIntentOwner(Q){let X=this.parseMeta(Q);if(!X)throw Y.missingMeta();let $=X.int;if(!$)throw Y.invalidMetaFormat("Missing 'int' (intendedFor) field");let Z;try{Z=new v0($)}catch{throw Y.invalidPubkeyFormat($,"Invalid public key format")}let q=this.deserializeTransaction(Q),J=[];if(q instanceof d){if(!q.signatures.some((z)=>{if(!z.signature)return!1;return J.push(z.publicKey.toString()),z.publicKey.equals(Z)}))throw Y.transactionNotSignedByIntendedOwner($,J);return}if(q instanceof K8){let R=q.message;if(R instanceof Q8){let z=R.header.numRequiredSignatures;for(let U=0;U<z;U++){let j=R.staticAccountKeys[U];if(j){if(J.push(j.toString()),j.equals(Z))return}}throw Y.transactionNotSignedByIntendedOwner($,J)}}throw Y.invalidTransactionFormat("Unsupported transaction format")}static attachProtocolMeta(Q,X){if(new $8().getProtocolMeta(Q))throw Y.invalidTransactionFormat("Transaction already contains protocol meta. Cannot attach additional protocol meta.");let q=$8.createProtocolMetaIx(X);try{let J=K8.deserialize(Buffer.from(Q,"base64"));if(J.message instanceof Q8){let R=J.message,z=[...R.staticAccountKeys];if(!z.some((O)=>O.equals(X8)))z.push(X8);let j={programIdIndex:z.findIndex((O)=>O.equals(X8)),accountKeyIndexes:[],data:q.data},N=new Q8({header:R.header,staticAccountKeys:z,recentBlockhash:R.recentBlockhash,compiledInstructions:[...R.compiledInstructions,j],addressTableLookups:R.addressTableLookups}),K=new K8(N);return K.signatures=J.signatures,Buffer.from(K.serialize()).toString("base64")}else{let R=d.from(Buffer.from(Q,"base64"));return R.add(q),Buffer.from(R.serialize({requireAllSignatures:!1})).toString("base64")}}catch{try{let J=d.from(Buffer.from(Q,"base64"));return J.add(q),Buffer.from(J.serialize({requireAllSignatures:!1})).toString("base64")}catch{throw Y.invalidTransactionFormat("Invalid base64 transaction format")}}}}class P0{config;adapters={};_walletStrategy;_delegationStrategy;constructor(Q){this.config=Q;this.adapters.solana=new $8,this._walletStrategy=new o(Q),this._delegationStrategy=new P8(Q)}getConfig(){return this.config}registerAdapter(Q,X){this.adapters[Q]=X}getAdapter(Q){return this.adapters[Q]}get adapter(){return{solana:this.adapters.solana}}get walletStrategy(){return this._walletStrategy}get delegationStrategy(){return this._delegationStrategy}generateCode(Q,X,$){if(Q==="wallet"){if(!$)throw Y.invalidSignature("Missing signature over canonical message");return this.walletStrategy.generateCode(X,$)}else{if(!$)throw Y.invalidSignature("Missing delegated signature");return this.delegationStrategy.generateDelegatedCode(X,$)}}validateCode(Q,X,$){if(Q==="wallet"){if(this.walletStrategy.validateCode(X),!$)return;let Z=$,q=this.getAdapter(Z.chain);if(!q)throw Y.invalidAdapter(Z.chain);if(!q.verifyWithWallet({...Z,message:{pubkey:X.pubkey,windowStart:X.timestamp}}))throw Y.invalidSignature("Wallet signature verification failed")}else{let Z=$;this.delegationStrategy.validateDelegatedCode(X,Z.delegationProof);let q=this.getAdapter(Z.chain);if(!q)throw Y.invalidAdapter(Z.chain);if(!q.verifyWithDelegation({...Z,message:{pubkey:X.pubkey,windowStart:X.timestamp}}))throw Y.invalidSignature("Delegation signature verification failed")}}}export{YQ as validateProtocolMetaFormat,I8 as truncateBits,C0 as sha256,b8 as serializeDelegationProof,x8 as serializeCanonicalRevoke,H as serializeCanonical,j8 as parseProtocolMeta,V8 as hmacSha256,r0 as hkdfSha256,e as getCanonicalMessageParts,T8 as digestToDigits,o8 as codeHash,B8 as buildProtocolMeta,a0 as base32EncodeCrockford,o as WalletStrategy,J0 as TransactionNotSignedByIntendedOwnerError,$8 as SolanaAdapter,qQ as SUPPORTED_CHAINS,m8 as SCHEME,y0 as ProtocolErrorCode,Y as ProtocolError,E8 as PROTOCOL_NORMALIZATION,t as PROTOCOL_META_MAX_BYTES,Z0 as MissingMetaError,q0 as MetaMismatchError,Y0 as InvalidSignatureError,R0 as InvalidPubkeyFormatError,N0 as InvalidCodeFormatError,z0 as InvalidAdapterError,$0 as ExpiredCodeError,P8 as DelegationStrategy,C8 as CODE_MIN_LENGTH,y8 as CODE_MAX_LENGTH,$Q as CODE_DEFAULT_LENGTH,ZQ as CODE_CHARSET_DIGITS,QQ as CANONICAL_REVOKE_MESSAGE_PREFIX,t0 as CANONICAL_MESSAGE_VERSION,o0 as CANONICAL_MESSAGE_PREFIX,G8 as BaseChainAdapter,P0 as ActionCodesProtocol,n as ADAPTER_CHAIN_NAME};
1
+ class G8{}/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */function D0(Q){return Q instanceof Uint8Array||ArrayBuffer.isView(Q)&&Q.constructor.name==="Uint8Array"}function J8(Q,X=""){if(!Number.isSafeInteger(Q)||Q<0){let $=X&&`"${X}" `;throw Error(`${$}expected integer >= 0, got ${Q}`)}}function B(Q,X,$=""){let Z=D0(Q),q=Q?.length,J=X!==void 0;if(!Z||J&&q!==X){let R=$&&`"${$}" `,z=J?` of length ${X}`:"",U=Z?`length=${q}`:`type=${typeof Q}`;throw Error(R+"expected Uint8Array"+z+", got "+U)}return Q}function s(Q){if(typeof Q!=="function"||typeof Q.create!=="function")throw Error("Hash must wrapped by utils.createHasher");J8(Q.outputLen),J8(Q.blockLen)}function u(Q,X=!0){if(Q.destroyed)throw Error("Hash instance has been destroyed");if(X&&Q.finished)throw Error("Hash#digest() has already been called")}function S8(Q,X){B(Q,void 0,"digestInto() output");let $=X.outputLen;if(Q.length<$)throw Error('"digestInto() output" expected to be of length >='+$)}function V(...Q){for(let X=0;X<Q.length;X++)Q[X].fill(0)}function R8(Q){return new DataView(Q.buffer,Q.byteOffset,Q.byteLength)}function I(Q,X){return Q<<32-X|Q>>>X}function H8(Q,X={}){let $=(q,J)=>Q(J).update(q).digest(),Z=Q(void 0);return $.outputLen=Z.outputLen,$.blockLen=Z.blockLen,$.create=(q)=>Q(q),Object.assign($,X),Object.freeze($)}var _8=(Q)=>({oid:Uint8Array.from([6,9,96,134,72,1,101,3,4,2,Q])});function A8(Q,X,$){return Q&X^~Q&$}function f8(Q,X,$){return Q&X^Q&$^X&$}class Y8{blockLen;outputLen;padOffset;isLE;buffer;view;finished=!1;length=0;pos=0;destroyed=!1;constructor(Q,X,$,Z){this.blockLen=Q,this.outputLen=X,this.padOffset=$,this.isLE=Z,this.buffer=new Uint8Array(Q),this.view=R8(this.buffer)}update(Q){u(this),B(Q);let{view:X,buffer:$,blockLen:Z}=this,q=Q.length;for(let J=0;J<q;){let R=Math.min(Z-this.pos,q-J);if(R===Z){let z=R8(Q);for(;Z<=q-J;J+=Z)this.process(z,J);continue}if($.set(Q.subarray(J,J+R),this.pos),this.pos+=R,J+=R,this.pos===Z)this.process(X,0),this.pos=0}return this.length+=Q.length,this.roundClean(),this}digestInto(Q){u(this),S8(Q,this),this.finished=!0;let{buffer:X,view:$,blockLen:Z,isLE:q}=this,{pos:J}=this;if(X[J++]=128,V(this.buffer.subarray(J)),this.padOffset>Z-J)this.process($,0),J=0;for(let N=J;N<Z;N++)X[N]=0;$.setBigUint64(Z-8,BigInt(this.length*8),q),this.process($,0);let R=R8(Q),z=this.outputLen;if(z%4)throw Error("_sha2: outputLen must be aligned to 32bit");let U=z/4,j=this.get();if(U>j.length)throw Error("_sha2: outputLen bigger than state");for(let N=0;N<U;N++)R.setUint32(4*N,j[N],q)}digest(){let{buffer:Q,outputLen:X}=this;this.digestInto(Q);let $=Q.slice(0,X);return this.destroy(),$}_cloneInto(Q){Q||=new this.constructor,Q.set(...this.get());let{blockLen:X,buffer:$,length:Z,finished:q,destroyed:J,pos:R}=this;if(Q.destroyed=J,Q.finished=q,Q.length=Z,Q.pos=R,Z%X)Q.buffer.set($);return Q}clone(){return this._cloneInto()}}var C=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),E=Uint32Array.from([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428]),G=Uint32Array.from([3418070365,3238371032,1654270250,914150663,2438529370,812702999,355462360,4144912697,1731405415,4290775857,2394180231,1750603025,3675008525,1694076839,1203062813,3204075428]),F=Uint32Array.from([1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209]);var N8=BigInt(4294967295),u8=BigInt(32);function G0(Q,X=!1){if(X)return{h:Number(Q&N8),l:Number(Q>>u8&N8)};return{h:Number(Q>>u8&N8)|0,l:Number(Q&N8)|0}}function g8(Q,X=!1){let $=Q.length,Z=new Uint32Array($),q=new Uint32Array($);for(let J=0;J<$;J++){let{h:R,l:z}=G0(Q[J],X);[Z[J],q[J]]=[R,z]}return[Z,q]}var F8=(Q,X,$)=>Q>>>$,w8=(Q,X,$)=>Q<<32-$|X>>>$,_=(Q,X,$)=>Q>>>$|X<<32-$,A=(Q,X,$)=>Q<<32-$|X>>>$,i=(Q,X,$)=>Q<<64-$|X>>>$-32,r=(Q,X,$)=>Q>>>$-32|X<<64-$;function T(Q,X,$,Z){let q=(X>>>0)+(Z>>>0);return{h:Q+$+(q/4294967296|0)|0,l:q|0}}var c8=(Q,X,$)=>(Q>>>0)+(X>>>0)+($>>>0),h8=(Q,X,$,Z)=>X+$+Z+(Q/4294967296|0)|0,d8=(Q,X,$,Z)=>(Q>>>0)+(X>>>0)+($>>>0)+(Z>>>0),n8=(Q,X,$,Z,q)=>X+$+Z+q+(Q/4294967296|0)|0,l8=(Q,X,$,Z,q)=>(Q>>>0)+(X>>>0)+($>>>0)+(Z>>>0)+(q>>>0),s8=(Q,X,$,Z,q,J)=>X+$+Z+q+J+(Q/4294967296|0)|0;var w0=Uint32Array.from([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]),P=new Uint32Array(64);class k8 extends Y8{constructor(Q){super(64,Q,8,!1)}get(){let{A:Q,B:X,C:$,D:Z,E:q,F:J,G:R,H:z}=this;return[Q,X,$,Z,q,J,R,z]}set(Q,X,$,Z,q,J,R,z){this.A=Q|0,this.B=X|0,this.C=$|0,this.D=Z|0,this.E=q|0,this.F=J|0,this.G=R|0,this.H=z|0}process(Q,X){for(let N=0;N<16;N++,X+=4)P[N]=Q.getUint32(X,!1);for(let N=16;N<64;N++){let K=P[N-15],O=P[N-2],w=I(K,7)^I(K,18)^K>>>3,D=I(O,17)^I(O,19)^O>>>10;P[N]=D+P[N-7]+w+P[N-16]|0}let{A:$,B:Z,C:q,D:J,E:R,F:z,G:U,H:j}=this;for(let N=0;N<64;N++){let K=I(R,6)^I(R,11)^I(R,25),O=j+K+A8(R,z,U)+w0[N]+P[N]|0,D=(I($,2)^I($,13)^I($,22))+f8($,Z,q)|0;j=U,U=z,z=R,R=J+O|0,J=q,q=Z,Z=$,$=O+D|0}$=$+this.A|0,Z=Z+this.B|0,q=q+this.C|0,J=J+this.D|0,R=R+this.E|0,z=z+this.F|0,U=U+this.G|0,j=j+this.H|0,this.set($,Z,q,J,R,z,U,j)}roundClean(){V(P)}destroy(){this.set(0,0,0,0,0,0,0,0),V(this.buffer)}}class i8 extends k8{A=C[0]|0;B=C[1]|0;C=C[2]|0;D=C[3]|0;E=C[4]|0;F=C[5]|0;G=C[6]|0;H=C[7]|0;constructor(){super(32)}}class k0 extends k8{A=E[0]|0;B=E[1]|0;C=E[2]|0;D=E[3]|0;E=E[4]|0;F=E[5]|0;G=E[6]|0;H=E[7]|0;constructor(){super(28)}}var r8=(()=>g8(["0x428a2f98d728ae22","0x7137449123ef65cd","0xb5c0fbcfec4d3b2f","0xe9b5dba58189dbbc","0x3956c25bf348b538","0x59f111f1b605d019","0x923f82a4af194f9b","0xab1c5ed5da6d8118","0xd807aa98a3030242","0x12835b0145706fbe","0x243185be4ee4b28c","0x550c7dc3d5ffb4e2","0x72be5d74f27b896f","0x80deb1fe3b1696b1","0x9bdc06a725c71235","0xc19bf174cf692694","0xe49b69c19ef14ad2","0xefbe4786384f25e3","0x0fc19dc68b8cd5b5","0x240ca1cc77ac9c65","0x2de92c6f592b0275","0x4a7484aa6ea6e483","0x5cb0a9dcbd41fbd4","0x76f988da831153b5","0x983e5152ee66dfab","0xa831c66d2db43210","0xb00327c898fb213f","0xbf597fc7beef0ee4","0xc6e00bf33da88fc2","0xd5a79147930aa725","0x06ca6351e003826f","0x142929670a0e6e70","0x27b70a8546d22ffc","0x2e1b21385c26c926","0x4d2c6dfc5ac42aed","0x53380d139d95b3df","0x650a73548baf63de","0x766a0abb3c77b2a8","0x81c2c92e47edaee6","0x92722c851482353b","0xa2bfe8a14cf10364","0xa81a664bbc423001","0xc24b8b70d0f89791","0xc76c51a30654be30","0xd192e819d6ef5218","0xd69906245565a910","0xf40e35855771202a","0x106aa07032bbd1b8","0x19a4c116b8d2d0c8","0x1e376c085141ab53","0x2748774cdf8eeb99","0x34b0bcb5e19b48a8","0x391c0cb3c5c95a63","0x4ed8aa4ae3418acb","0x5b9cca4f7763e373","0x682e6ff3d6b2b8a3","0x748f82ee5defb2fc","0x78a5636f43172f60","0x84c87814a1f0ab72","0x8cc702081a6439ec","0x90befffa23631e28","0xa4506cebde82bde9","0xbef9a3f7b2c67915","0xc67178f2e372532b","0xca273eceea26619c","0xd186b8c721c0c207","0xeada7dd6cde0eb1e","0xf57d4f7fee6ed178","0x06f067aa72176fba","0x0a637dc5a2c898a6","0x113f9804bef90dae","0x1b710b35131c471b","0x28db77f523047d84","0x32caab7b40c72493","0x3c9ebe0a15c9bebc","0x431d67c49c100d4c","0x4cc5d4becb3e42b6","0x597f299cfc657e2a","0x5fcb6fab3ad6faec","0x6c44198c4a475817"].map((Q)=>BigInt(Q))))(),L0=(()=>r8[0])(),M0=(()=>r8[1])(),p=new Uint32Array(80),S=new Uint32Array(80);class a extends Y8{constructor(Q){super(128,Q,16,!1)}get(){let{Ah:Q,Al:X,Bh:$,Bl:Z,Ch:q,Cl:J,Dh:R,Dl:z,Eh:U,El:j,Fh:N,Fl:K,Gh:O,Gl:w,Hh:D,Hl:M}=this;return[Q,X,$,Z,q,J,R,z,U,j,N,K,O,w,D,M]}set(Q,X,$,Z,q,J,R,z,U,j,N,K,O,w,D,M){this.Ah=Q|0,this.Al=X|0,this.Bh=$|0,this.Bl=Z|0,this.Ch=q|0,this.Cl=J|0,this.Dh=R|0,this.Dl=z|0,this.Eh=U|0,this.El=j|0,this.Fh=N|0,this.Fl=K|0,this.Gh=O|0,this.Gl=w|0,this.Hh=D|0,this.Hl=M|0}process(Q,X){for(let v=0;v<16;v++,X+=4)p[v]=Q.getUint32(X),S[v]=Q.getUint32(X+=4);for(let v=16;v<80;v++){let y=p[v-15]|0,m=S[v-15]|0,O8=_(y,m,1)^_(y,m,8)^F8(y,m,7),v8=A(y,m,1)^A(y,m,8)^w8(y,m,7),x=p[v-2]|0,b=S[v-2]|0,Z8=_(x,b,19)^i(x,b,61)^F8(x,b,6),W8=A(x,b,19)^r(x,b,61)^w8(x,b,6),q8=d8(v8,W8,S[v-7],S[v-16]),D8=n8(q8,O8,Z8,p[v-7],p[v-16]);p[v]=D8|0,S[v]=q8|0}let{Ah:$,Al:Z,Bh:q,Bl:J,Ch:R,Cl:z,Dh:U,Dl:j,Eh:N,El:K,Fh:O,Fl:w,Gh:D,Gl:M,Hh:W,Hl:l}=this;for(let v=0;v<80;v++){let y=_(N,K,14)^_(N,K,18)^i(N,K,41),m=A(N,K,14)^A(N,K,18)^r(N,K,41),O8=N&O^~N&D,v8=K&w^~K&M,x=l8(l,m,v8,M0[v],S[v]),b=s8(x,W,y,O8,L0[v],p[v]),Z8=x|0,W8=_($,Z,28)^i($,Z,34)^i($,Z,39),q8=A($,Z,28)^r($,Z,34)^r($,Z,39),D8=$&q^$&R^q&R,W0=Z&J^Z&z^J&z;W=D|0,l=M|0,D=O|0,M=w|0,O=N|0,w=K|0,{h:N,l:K}=T(U|0,j|0,b|0,Z8|0),U=R|0,j=z|0,R=q|0,z=J|0,q=$|0,J=Z|0;let p8=c8(Z8,q8,W0);$=h8(p8,b,W8,D8),Z=p8|0}({h:$,l:Z}=T(this.Ah|0,this.Al|0,$|0,Z|0)),{h:q,l:J}=T(this.Bh|0,this.Bl|0,q|0,J|0),{h:R,l:z}=T(this.Ch|0,this.Cl|0,R|0,z|0),{h:U,l:j}=T(this.Dh|0,this.Dl|0,U|0,j|0),{h:N,l:K}=T(this.Eh|0,this.El|0,N|0,K|0),{h:O,l:w}=T(this.Fh|0,this.Fl|0,O|0,w|0),{h:D,l:M}=T(this.Gh|0,this.Gl|0,D|0,M|0),{h:W,l}=T(this.Hh|0,this.Hl|0,W|0,l|0),this.set($,Z,q,J,R,z,U,j,N,K,O,w,D,M,W,l)}roundClean(){V(p,S)}destroy(){V(this.buffer),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}}class V0 extends a{Ah=F[0]|0;Al=F[1]|0;Bh=F[2]|0;Bl=F[3]|0;Ch=F[4]|0;Cl=F[5]|0;Dh=F[6]|0;Dl=F[7]|0;Eh=F[8]|0;El=F[9]|0;Fh=F[10]|0;Fl=F[11]|0;Gh=F[12]|0;Gl=F[13]|0;Hh=F[14]|0;Hl=F[15]|0;constructor(){super(64)}}class I0 extends a{Ah=G[0]|0;Al=G[1]|0;Bh=G[2]|0;Bl=G[3]|0;Ch=G[4]|0;Cl=G[5]|0;Dh=G[6]|0;Dl=G[7]|0;Eh=G[8]|0;El=G[9]|0;Fh=G[10]|0;Fl=G[11]|0;Gh=G[12]|0;Gl=G[13]|0;Hh=G[14]|0;Hl=G[15]|0;constructor(){super(48)}}var k=Uint32Array.from([2352822216,424955298,1944164710,2312950998,502970286,855612546,1738396948,1479516111,258812777,2077511080,2011393907,79989058,1067287976,1780299464,286451373,2446758561]),L=Uint32Array.from([573645204,4230739756,2673172387,3360449730,596883563,1867755857,2520282905,1497426621,2519219938,2827943907,3193839141,1401305490,721525244,746961066,246885852,2177182882]);class T0 extends a{Ah=k[0]|0;Al=k[1]|0;Bh=k[2]|0;Bl=k[3]|0;Ch=k[4]|0;Cl=k[5]|0;Dh=k[6]|0;Dl=k[7]|0;Eh=k[8]|0;El=k[9]|0;Fh=k[10]|0;Fl=k[11]|0;Gh=k[12]|0;Gl=k[13]|0;Hh=k[14]|0;Hl=k[15]|0;constructor(){super(28)}}class x0 extends a{Ah=L[0]|0;Al=L[1]|0;Bh=L[2]|0;Bl=L[3]|0;Ch=L[4]|0;Cl=L[5]|0;Dh=L[6]|0;Dl=L[7]|0;Eh=L[8]|0;El=L[9]|0;Fh=L[10]|0;Fl=L[11]|0;Gh=L[12]|0;Gl=L[13]|0;Hh=L[14]|0;Hl=L[15]|0;constructor(){super(32)}}var z8=H8(()=>new i8,_8(1));class L8{oHash;iHash;blockLen;outputLen;finished=!1;destroyed=!1;constructor(Q,X){if(s(Q),B(X,void 0,"key"),this.iHash=Q.create(),typeof this.iHash.update!=="function")throw Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;let $=this.blockLen,Z=new Uint8Array($);Z.set(X.length>$?Q.create().update(X).digest():X);for(let q=0;q<Z.length;q++)Z[q]^=54;this.iHash.update(Z),this.oHash=Q.create();for(let q=0;q<Z.length;q++)Z[q]^=106;this.oHash.update(Z),V(Z)}update(Q){return u(this),this.iHash.update(Q),this}digestInto(Q){u(this),B(Q,this.outputLen,"output"),this.finished=!0,this.iHash.digestInto(Q),this.oHash.update(Q),this.oHash.digestInto(Q),this.destroy()}digest(){let Q=new Uint8Array(this.oHash.outputLen);return this.digestInto(Q),Q}_cloneInto(Q){Q||=Object.create(Object.getPrototypeOf(this),{});let{oHash:X,iHash:$,finished:Z,destroyed:q,blockLen:J,outputLen:R}=this;return Q=Q,Q.finished=Z,Q.destroyed=q,Q.blockLen=J,Q.outputLen=R,Q.oHash=X._cloneInto(Q.oHash),Q.iHash=$._cloneInto(Q.iHash),Q}clone(){return this._cloneInto()}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}}var g=(Q,X,$)=>new L8(Q,X).update($).digest();g.create=(Q,X)=>new L8(Q,X);function b0(Q,X,$){if(s(Q),$===void 0)$=new Uint8Array(Q.outputLen);return g(Q,$,X)}var M8=Uint8Array.of(0),a8=Uint8Array.of();function C0(Q,X,$,Z=32){s(Q),J8(Z,"length");let q=Q.outputLen;if(Z>255*q)throw Error("Length must be <= 255*HashLen");let J=Math.ceil(Z/q);if($===void 0)$=a8;else B($,void 0,"info");let R=new Uint8Array(J*q),z=g.create(Q,X),U=z._cloneInto(),j=new Uint8Array(z.outputLen);for(let N=0;N<J;N++)M8[0]=N+1,U.update(N===0?a8:j).update($).update(M8).digestInto(j),R.set(j,q*N),z._cloneInto(U);return z.destroy(),U.destroy(),V(j,M8),R.slice(0,Z)}var e8=(Q,X,$,Z,q)=>C0(Q,b0(Q,X,$),Z,q);function c(Q){if(typeof Q==="string")return new TextEncoder().encode(Q);return Q}function E0(Q){return z8(c(Q))}function V8(Q,X){return g(z8,c(Q),c(X))}function r0(Q,X,{salt:$,info:Z}={}){let q=$?c($):new Uint8Array(32),J=c(Q),R=Z?c(Z):new Uint8Array(0);return e8(z8,J,q,R,X)}var t8="0123456789ABCDEFGHJKMNPQRSTVWXYZ";function a0(Q){let X=0,$=0,Z="";for(let q=0;q<Q.length;q++){$=$<<8|Q[q],X+=8;while(X>=5)Z+=t8[$>>>X-5&31],X-=5}if(X>0)Z+=t8[$<<5-X&31];return Z}function I8(Q,X){let $=Math.ceil(X/8),Z=new Uint8Array($),q=Math.min($,Q.length);Z.set(Q.subarray(0,q));let J=$*8-X;if(J>0){let R=255<<J;Z[$-1]=Z[$-1]&R}return Z}function T8(Q,X){if(Q.length===0)throw Error("digestToDigits: empty digest");let $="",Z=Q[Q.length-1]&15;for(let q=0;$.length<X;q++){let J=(Z+q*4)%Math.max(1,Q.length-4),U=(((Q[J]&127)<<24|Q[J+1]<<16|Q[J+2]<<8|Q[J+3])%1e9).toString().padStart(9,"0");$+=U}return $.slice(0,X)}function o8(Q){let X=E0(Q);return Array.from(X).map(($)=>$.toString(16).padStart(2,"0")).join("")}var t0=1,o0="actioncodes",QQ="actioncodes-revoke";function H(Q){let X=JSON.stringify({id:"actioncodes",ver:1,pubkey:Q.pubkey,windowStart:Q.windowStart});return new TextEncoder().encode(X)}function x8(Q){let X=JSON.stringify({id:"actioncodes-revoke",ver:1,pubkey:Q.pubkey,codeHash:Q.codeHash,windowStart:Q.windowStart});return new TextEncoder().encode(X)}function e(Q){return H({pubkey:Q,windowStart:Date.now()})}function b8(Q){let X=JSON.stringify({walletPubkey:Q.walletPubkey,delegatedPubkey:Q.delegatedPubkey,expiresAt:Q.expiresAt,chain:Q.chain});return new TextEncoder().encode(X)}var C8="NFC",t=256,E8=6,y8=24,$Q=8,ZQ="0123456789",qQ=["solana"];var m8="actioncodes:";function B8(Q){let X=Q0(Q);if(X.int!=null)U8(X.int);let $=[`ver=${X.ver}`,`id=${encodeURIComponent(X.id)}`,`int=${encodeURIComponent(X.int)}`];if(X.p!=null&&Object.keys(X.p).length>0){let q=JSON.stringify(X.p);U8(q),$.push(`p=${encodeURIComponent(q)}`)}let Z=m8+$.join("&");return X0(Z),Z}function j8(Q){if(!Q.startsWith(m8))throw Error("protocol meta must start with actioncodes:");let $=Q.slice(m8.length).split("&").filter(Boolean),Z=new Map;for(let O of $){let[w,D]=O.split("=",2);if(!w)continue;let M=D!=null?decodeURIComponent(D):"";Z.set(w,M)}let q=Z.get("ver"),J=Z.get("id"),R=Z.get("int"),z=Z.get("p");if(q==null||J==null||R==null)throw Error("protocol meta missing required fields ver or id or int");let U=Number(q);if(!Number.isInteger(U)||U<=0)throw Error("protocol meta ver must be positive integer");let j;if(z!=null&&z!=="")try{if(j=JSON.parse(z),typeof j!=="object"||j===null||Array.isArray(j))throw Error("protocol meta p must be a JSON object")}catch{throw Error("protocol meta p must be valid JSON")}let N=Q0({ver:U,id:J,int:R,p:j});if(N.int!=null)U8(N.int);if(N.p!=null)U8(JSON.stringify(N.p));if([...Z.keys()].filter((O)=>O!=="ver"&&O!=="id"&&O!=="int"&&O!=="p").length>0)throw Error("protocol meta contains unsupported keys");return X0(B8(N)),N}function YQ(Q){try{return j8(Q),{ok:!0}}catch(X){return{ok:!1,reason:String(X)}}}function Q0(Q){let X=Q.id.normalize(C8).trim(),$={ver:Q.ver,id:X,int:Q.int};if(Q.int!=null)$.int=Q.int.normalize(C8).trim();if(Q.p!=null)$.p=Q.p;return $}function X0(Q){if(new TextEncoder().encode(Q).length>t)throw Error(`protocol meta exceeds ${t} bytes`)}function U8(Q){if(new TextEncoder().encode(Q).length>t)throw Error(`protocol meta params exceed ${t} bytes`)}var y0;((W)=>{W.EXPIRED_CODE="EXPIRED_CODE";W.INVALID_CODE="INVALID_CODE";W.INVALID_CODE_FORMAT="INVALID_CODE_FORMAT";W.INVALID_SIGNATURE="INVALID_SIGNATURE";W.MISSING_META="MISSING_META";W.INVALID_META_FORMAT="INVALID_META_FORMAT";W.META_MISMATCH="META_MISMATCH";W.META_TOO_LARGE="META_TOO_LARGE";W.TRANSACTION_NOT_SIGNED_BY_INTENDED_OWNER="TRANSACTION_NOT_SIGNED_BY_INTENDED_OWNER";W.INVALID_TRANSACTION_FORMAT="INVALID_TRANSACTION_FORMAT";W.INVALID_PUBKEY_FORMAT="INVALID_PUBKEY_FORMAT";W.INVALID_INPUT="INVALID_INPUT";W.MISSING_REQUIRED_FIELD="MISSING_REQUIRED_FIELD";W.CRYPTO_ERROR="CRYPTO_ERROR";W.INVALID_DIGEST="INVALID_DIGEST";W.INVALID_ADAPTER="INVALID_ADAPTER"})(y0||={});class Y extends Error{code;details;constructor(Q,X,$){super(X);this.code=Q;this.details=$;this.name="ProtocolError"}static expiredCode(Q,X,$){return new $0(Q,X,$)}static invalidCode(){return new Y("INVALID_CODE","Invalid code provided",{})}static invalidCodeFormat(Q,X){return new N0(Q,X)}static invalidSignature(Q){return new Y0(Q)}static missingMeta(){return new Z0}static invalidMetaFormat(Q){return new Y("INVALID_META_FORMAT",`Invalid protocol meta format: ${Q}`,{reason:Q})}static metaMismatch(Q,X,$){return new q0(Q,X,$)}static metaTooLarge(Q,X){return new Y("META_TOO_LARGE",`Protocol meta too large: ${X} bytes (max: ${Q})`,{maxBytes:Q,actualBytes:X})}static transactionNotSignedByIntendedOwner(Q,X){return new J0(Q,X)}static invalidTransactionFormat(Q){return new Y("INVALID_TRANSACTION_FORMAT",`Invalid transaction format: ${Q}`,{reason:Q})}static invalidPubkeyFormat(Q,X){return new R0(Q,X)}static invalidInput(Q,X,$){return new Y("INVALID_INPUT",`Invalid ${Q}: ${$}`,{field:Q,value:X,reason:$})}static missingRequiredField(Q){return new Y("MISSING_REQUIRED_FIELD",`Missing required field: ${Q}`,{field:Q})}static cryptoError(Q,X){return new Y("CRYPTO_ERROR",`Crypto error in ${Q}: ${X}`,{operation:Q,reason:X})}static invalidDigest(Q){return new Y("INVALID_DIGEST",`Invalid digest: ${Q}`,{reason:Q})}static invalidAdapter(Q){return new z0(Q)}static create(Q,X,$){return new Y(Q,X,$)}}class $0 extends Y{constructor(Q,X,$){super("EXPIRED_CODE",`Action code '${Q}' expired at ${X}, current time: ${$}`,{code:Q,expiresAt:X,currentTime:$});this.name="ExpiredCodeError"}}class Z0 extends Y{constructor(){super("MISSING_META","Transaction does not contain valid protocol meta");this.name="MissingMetaError"}}class q0 extends Y{constructor(Q,X,$){super("META_MISMATCH",`Meta ${$} mismatch: expected '${Q}', got '${X}'`,{expected:Q,actual:X,field:$});this.name="MetaMismatchError"}}class J0 extends Y{constructor(Q,X){super("TRANSACTION_NOT_SIGNED_BY_INTENDED_OWNER",`Transaction not signed by intended owner '${Q}'. Actual signers: [${X.join(", ")}]`,{intended:Q,actualSigners:X});this.name="TransactionNotSignedByIntendedOwnerError"}}class R0 extends Y{constructor(Q,X){super("INVALID_PUBKEY_FORMAT",`Invalid public key format '${Q}': ${X}`,{pubkey:Q,reason:X});this.name="InvalidPubkeyFormatError"}}class Y0 extends Y{constructor(Q){super("INVALID_SIGNATURE",`Invalid signature: ${Q}`,{reason:Q});this.name="InvalidSignatureError"}}class N0 extends Y{constructor(Q,X){super("INVALID_CODE_FORMAT",`Invalid code format '${Q}': ${X}`,{code:Q,reason:X});this.name="InvalidCodeFormatError"}}class z0 extends Y{constructor(Q){super("INVALID_ADAPTER",`Invalid adapter: ${Q}`,{adapter:Q});this.name="InvalidAdapterError"}}import U0 from"bs58";class o{config;constructor(Q){this.config=Q}generateCode(Q,X){let $=Q,Z=JSON.parse(new TextDecoder().decode($)),q=Z.pubkey,J=Z.windowStart,R;try{R=U0.decode(X)}catch{throw Y.invalidSignature("Invalid Base58 signature format")}let z=V8(R,$),U=Math.max(E8,Math.min(y8,this.config.codeLength)),j=8*Math.ceil(U/2),N=I8(z,j);return{actionCode:{code:T8(N,U),pubkey:q,timestamp:J,expiresAt:J+this.config.ttlMs,signature:X},canonicalMessage:$}}validateCode(Q){let X=Date.now();if(X>Q.expiresAt+(this.config.clockSkewMs??0))throw Y.expiredCode(Q.code,Q.expiresAt,X);let $=H({pubkey:Q.pubkey,windowStart:Q.timestamp});if(!Q.signature)throw Y.missingRequiredField("signature");let Z;try{Z=U0.decode(Q.signature)}catch{throw Y.invalidSignature("Invalid Base58 signature format")}let q=V8(Z,$),J=Math.max(E8,Math.min(y8,this.config.codeLength)),R=I8(q,8*Math.ceil(J/2));if(T8(R,J)!==Q.code)throw Y.invalidCode()}getCanonicalMessageParts(Q){return e(Q)}}import{PublicKey as j0}from"@solana/web3.js";import K0 from"tweetnacl";import O0 from"bs58";class P8{walletStrategy;config;constructor(Q){this.config=Q,this.walletStrategy=new o(Q)}generateDelegatedCode(Q,X){this.validateDelegationProof(Q);let $=e(Q.delegatedPubkey);return{actionCode:{...this.walletStrategy.generateCode($,X).actionCode,pubkey:Q.walletPubkey,delegationProof:Q}}}validateDelegatedCode(Q,X){let $=Date.now();if($>Q.expiresAt+(this.config.clockSkewMs??0))throw Y.expiredCode(Q.code,Q.expiresAt,$);if(this.validateDelegationProof(X),Q.pubkey!==X.walletPubkey||Q.pubkey!==Q.delegationProof.walletPubkey)throw Y.invalidInput("walletPubkey",Q.delegationProof.walletPubkey,"Action code wallet pubkey does not match delegation proof");if(Q.delegationProof.delegatedPubkey!==X.delegatedPubkey)throw Y.invalidInput("delegatedPubkey",Q.delegationProof.delegatedPubkey,"Invalid delegatedPubkey: Action code delegated pubkey does not match delegation proof");if(Q.delegationProof.expiresAt!==X.expiresAt)throw Y.invalidInput("expiresAt",Q.delegationProof.expiresAt,"Action code delegation expiration does not match delegation proof");if(!Q.delegationProof.signature)throw Y.missingRequiredField("delegationProof.signature");if(Q.delegationProof.signature!==X.signature)throw Y.invalidInput("signature",Q.delegationProof.signature,"Invalid signature: Action code delegation signature does not match delegation proof");let Z=H({pubkey:X.delegatedPubkey,windowStart:Q.timestamp}),q;try{q=O0.decode(Q.signature??"")}catch{throw Y.invalidSignature("Invalid Base58 delegated signature format")}let J=O0.decode(X.delegatedPubkey);if(!K0.sign.detached.verify(Z,q,J))throw Y.invalidSignature("Delegated signature verification failed")}validateDelegationProof(Q){if(!Q.walletPubkey||typeof Q.walletPubkey!=="string")throw Y.invalidInput("walletPubkey",Q.walletPubkey,"Wallet pubkey is required and must be a string");try{new j0(Q.walletPubkey)}catch{throw Y.invalidInput("walletPubkey",Q.walletPubkey,"Invalid wallet pubkey format")}if(!Q.delegatedPubkey||typeof Q.delegatedPubkey!=="string")throw Y.invalidInput("delegatedPubkey",Q.delegatedPubkey,"Delegated pubkey is required and must be a string");try{new j0(Q.delegatedPubkey)}catch{throw Y.invalidInput("delegatedPubkey",Q.delegatedPubkey,"Invalid delegated pubkey format")}if(!Q.chain||typeof Q.chain!=="string")throw Y.invalidInput("chain",Q.chain,"Chain is required and must be a string");if(Q.chain.length===0||Q.chain.length>50)throw Y.invalidInput("chain",Q.chain,"Chain must be between 1 and 50 characters");if(!/^[a-z0-9-]+$/.test(Q.chain))throw Y.invalidInput("chain",Q.chain,"Chain contains invalid characters (only lowercase letters, numbers, and hyphens allowed)");if(typeof Q.expiresAt!=="number"||!Number.isInteger(Q.expiresAt))throw Y.invalidInput("expiresAt",Q.expiresAt,"Expiration time must be a valid integer timestamp");if(Q.expiresAt<=0)throw Y.invalidInput("expiresAt",Q.expiresAt,"Expiration time must be positive");let X=Date.now(),$=31536000000;if(Q.expiresAt>X+$)throw Y.invalidInput("expiresAt",Q.expiresAt,"Expiration time is too far in the future");if(Q.expiresAt<X)throw Y.expiredCode("Delegation proof has expired",Q.expiresAt,X);if(!Q.signature||typeof Q.signature!=="string")throw Y.invalidInput("signature",Q.signature,"Delegation signature is required and must be a string");if(Q.signature.length===0||Q.signature.length>200)throw Y.invalidInput("signature",Q.signature,"Delegation signature must be between 1 and 200 characters")}getCanonicalMessageParts(Q){return e(Q)}}import f from"tweetnacl";import h from"bs58";import{PublicKey as v0,Transaction as d,VersionedTransaction as K8,TransactionInstruction as m0,MessageV0 as Q8}from"@solana/web3.js";import{createMemoInstruction as B0,MEMO_PROGRAM_ID as X8}from"@solana/spl-memo";var n="solana";class $8 extends G8{normalizePubkey(Q){if(typeof Q==="string")return new v0(Q);return Q}verifyWithWallet(Q){if(Q.chain!==n)return!1;if(!Q.message||!Q.message.pubkey||!Q.walletSignature)return!1;try{let X=H(Q.message),$=this.normalizePubkey(Q.message.pubkey),Z=h.decode(Q.walletSignature),q=$.toBytes();if(Z.length!==64||q.length!==32)return!1;return f.sign.detached.verify(X,Z,q)}catch{return!1}}verifyWithDelegation(Q){if(Q.chain!==n)return!1;if(!Q.message.pubkey||!Q.delegatedSignature||!Q.delegationProof)return!1;let X=Q.delegationProof;if(!X.walletPubkey||!X.delegatedPubkey||!X.chain||!X.expiresAt||!X.signature)return!1;if(X.chain!==n)return!1;if(X.delegatedPubkey!==Q.message.pubkey)return!1;if(X.expiresAt<Date.now())return!1;try{let $=b8(X),Z=this.normalizePubkey(X.walletPubkey),q=h.decode(X.signature),J=Z.toBytes(),R=H(Q.message),z=this.normalizePubkey(X.delegatedPubkey),U=h.decode(Q.delegatedSignature),j=z.toBytes();if(q.length!==64||J.length!==32)return!1;if(U.length!==64||j.length!==32)return!1;let N=f.sign.detached.verify($,q,J),K=f.sign.detached.verify(R,U,j);return N&&K}catch{return!1}}verifyRevokeWithWallet(Q){if(Q.chain!==n)return!1;if(!Q.message||!Q.message.pubkey||!Q.walletSignature)return!1;try{let X=x8(Q.message),$=this.normalizePubkey(Q.message.pubkey),Z=h.decode(Q.walletSignature),q=$.toBytes();if(Z.length!==64||q.length!==32)return!1;return f.sign.detached.verify(X,Z,q)}catch{return!1}}verifyRevokeWithDelegation(Q){if(Q.chain!==n)return!1;if(!Q.message||!Q.message.pubkey||!Q.delegatedSignature||!Q.delegationProof)return!1;let X=Q.delegationProof;if(!X.walletPubkey||!X.delegatedPubkey||!X.chain||!X.expiresAt||!X.signature)return!1;if(X.chain!==n)return!1;if(X.delegatedPubkey!==Q.message.pubkey)return!1;if(X.expiresAt<Date.now())return!1;try{let $=b8(X),Z=this.normalizePubkey(X.walletPubkey),q=h.decode(X.signature),J=Z.toBytes();if(q.length!==64||J.length!==32)return!1;if(!f.sign.detached.verify($,q,J))return!1;let z=x8(Q.message),U=this.normalizePubkey(X.delegatedPubkey),j=h.decode(Q.delegatedSignature),N=U.toBytes();if(j.length!==64||N.length!==32)return!1;return f.sign.detached.verify(z,j,N)}catch{return!1}}static createProtocolMetaIx(Q){let X=B8(Q);return B0(X)}getProtocolMeta(Q){try{let X=this.deserializeTransaction(Q);for(let $ of this.getMemoInstructions(X)){let Z=$.data;try{let q=new TextDecoder().decode(Z);if(j8(q))return q}catch{}}return null}catch{return null}}deserializeTransaction(Q){try{let X=K8.deserialize(Buffer.from(Q,"base64"));if(X.message instanceof Q8)return X;else return d.from(Buffer.from(Q,"base64"))}catch{try{return d.from(Buffer.from(Q,"base64"))}catch{throw Y.invalidTransactionFormat("Invalid base64 transaction format")}}}parseMeta(Q){let X=this.getProtocolMeta(Q);if(!X)return null;return j8(X)}getMemoInstructions(Q){if(Q instanceof d)return Q.instructions.filter((X)=>X.programId.equals(X8));else{let $=Q.message;if($ instanceof Q8){let Z=[];for(let q of $.compiledInstructions){let J=$.staticAccountKeys[q.programIdIndex];if(J&&J.equals(X8)){let R=q.accountKeyIndexes.map((z)=>({pubkey:$.staticAccountKeys[z],isSigner:!1,isWritable:!1}));Z.push(new m0({keys:R,programId:J,data:q.data}))}}return Z}return[]}}verifyTransactionMatchesCode(Q,X){let $=Date.now();if($>Q.expiresAt)throw Y.expiredCode(Q.code,Q.expiresAt,$);let Z=this.parseMeta(X);if(!Z)throw Y.missingMeta();if(Z.ver!==2)throw Y.metaMismatch("2",String(Z.ver),"ver");let q=o8(Q.code);if(Z.id!==q)throw Y.metaMismatch(q,Z.id,"id");if(Z.int!==Q.pubkey)throw Y.metaMismatch(Q.pubkey,Z.int,"int")}verifyTransactionSignedByIntentOwner(Q){let X=this.parseMeta(Q);if(!X)throw Y.missingMeta();let $=X.int;if(!$)throw Y.invalidMetaFormat("Missing 'int' (intendedFor) field");let Z;try{Z=new v0($)}catch{throw Y.invalidPubkeyFormat($,"Invalid public key format")}let q=this.deserializeTransaction(Q),J=[];if(q instanceof d){if(!q.signatures.some((z)=>{if(!z.signature)return!1;return J.push(z.publicKey.toString()),z.publicKey.equals(Z)}))throw Y.transactionNotSignedByIntendedOwner($,J);return}if(q instanceof K8){let R=q.message;if(R instanceof Q8){let z=R.header.numRequiredSignatures;for(let U=0;U<z;U++){let j=R.staticAccountKeys[U];if(j){if(J.push(j.toString()),j.equals(Z))return}}throw Y.transactionNotSignedByIntendedOwner($,J)}}throw Y.invalidTransactionFormat("Unsupported transaction format")}static attachProtocolMeta(Q,X){if(new $8().getProtocolMeta(Q))throw Y.invalidTransactionFormat("Transaction already contains protocol meta. Cannot attach additional protocol meta.");let q=$8.createProtocolMetaIx(X);try{let J=K8.deserialize(Buffer.from(Q,"base64"));if(J.message instanceof Q8){let R=J.message,z=[...R.staticAccountKeys];if(!z.some((O)=>O.equals(X8)))z.push(X8);let j={programIdIndex:z.findIndex((O)=>O.equals(X8)),accountKeyIndexes:[],data:q.data},N=new Q8({header:R.header,staticAccountKeys:z,recentBlockhash:R.recentBlockhash,compiledInstructions:[...R.compiledInstructions,j],addressTableLookups:R.addressTableLookups}),K=new K8(N);return K.signatures=J.signatures,Buffer.from(K.serialize()).toString("base64")}else{let R=d.from(Buffer.from(Q,"base64"));return R.add(q),Buffer.from(R.serialize({requireAllSignatures:!1})).toString("base64")}}catch{try{let J=d.from(Buffer.from(Q,"base64"));return J.add(q),Buffer.from(J.serialize({requireAllSignatures:!1})).toString("base64")}catch{throw Y.invalidTransactionFormat("Invalid base64 transaction format")}}}}class P0{config;adapters={};_walletStrategy;_delegationStrategy;constructor(Q){this.config=Q;this.adapters.solana=new $8,this._walletStrategy=new o(Q),this._delegationStrategy=new P8(Q)}getConfig(){return this.config}registerAdapter(Q,X){this.adapters[Q]=X}getAdapter(Q){return this.adapters[Q]}get adapter(){return{solana:this.adapters.solana}}get walletStrategy(){return this._walletStrategy}get delegationStrategy(){return this._delegationStrategy}generateCode(Q,X,$){if(Q==="wallet"){if(!$)throw Y.invalidSignature("Missing signature over canonical message");return this.walletStrategy.generateCode(X,$)}else{if(!$)throw Y.invalidSignature("Missing delegated signature");return this.delegationStrategy.generateDelegatedCode(X,$)}}validateCode(Q,X,$){if(Q==="wallet"){if(this.walletStrategy.validateCode(X),!$)return;let Z=$,q=this.getAdapter(Z.chain);if(!q)throw Y.invalidAdapter(Z.chain);if(!q.verifyWithWallet({...Z,message:{pubkey:X.pubkey,windowStart:X.timestamp}}))throw Y.invalidSignature("Wallet signature verification failed")}else{let Z=$;this.delegationStrategy.validateDelegatedCode(X,Z.delegationProof);let q=this.getAdapter(Z.chain);if(!q)throw Y.invalidAdapter(Z.chain);if(!q.verifyWithDelegation({...Z,message:{pubkey:Z.delegationProof.delegatedPubkey,windowStart:X.timestamp}}))throw Y.invalidSignature("Delegation signature verification failed")}}}export{YQ as validateProtocolMetaFormat,I8 as truncateBits,E0 as sha256,b8 as serializeDelegationProof,x8 as serializeCanonicalRevoke,H as serializeCanonical,j8 as parseProtocolMeta,V8 as hmacSha256,r0 as hkdfSha256,e as getCanonicalMessageParts,T8 as digestToDigits,o8 as codeHash,B8 as buildProtocolMeta,a0 as base32EncodeCrockford,o as WalletStrategy,J0 as TransactionNotSignedByIntendedOwnerError,$8 as SolanaAdapter,qQ as SUPPORTED_CHAINS,m8 as SCHEME,y0 as ProtocolErrorCode,Y as ProtocolError,C8 as PROTOCOL_NORMALIZATION,t as PROTOCOL_META_MAX_BYTES,Z0 as MissingMetaError,q0 as MetaMismatchError,Y0 as InvalidSignatureError,R0 as InvalidPubkeyFormatError,N0 as InvalidCodeFormatError,z0 as InvalidAdapterError,$0 as ExpiredCodeError,P8 as DelegationStrategy,E8 as CODE_MIN_LENGTH,y8 as CODE_MAX_LENGTH,$Q as CODE_DEFAULT_LENGTH,ZQ as CODE_CHARSET_DIGITS,QQ as CANONICAL_REVOKE_MESSAGE_PREFIX,t0 as CANONICAL_MESSAGE_VERSION,o0 as CANONICAL_MESSAGE_PREFIX,G8 as BaseChainAdapter,P0 as ActionCodesProtocol,n as ADAPTER_CHAIN_NAME};
2
2
 
3
- //# debugId=07E36190E16FB78B64756E2164756E21
3
+ //# debugId=735D358405976EF364756E2164756E21
package/dist/index.js.map CHANGED
@@ -10,16 +10,16 @@
10
10
  "/**\n * HMAC: RFC2104 message authentication code.\n * @module\n */\nimport { abytes, aexists, ahash, clean } from \"./utils.js\";\n/** Internal class for HMAC. */\nexport class _HMAC {\n oHash;\n iHash;\n blockLen;\n outputLen;\n finished = false;\n destroyed = false;\n constructor(hash, key) {\n ahash(hash);\n abytes(key, undefined, 'key');\n this.iHash = hash.create();\n if (typeof this.iHash.update !== 'function')\n throw new Error('Expected instance of class which extends utils.Hash');\n this.blockLen = this.iHash.blockLen;\n this.outputLen = this.iHash.outputLen;\n const blockLen = this.blockLen;\n const pad = new Uint8Array(blockLen);\n // blockLen can be bigger than outputLen\n pad.set(key.length > blockLen ? hash.create().update(key).digest() : key);\n for (let i = 0; i < pad.length; i++)\n pad[i] ^= 0x36;\n this.iHash.update(pad);\n // By doing update (processing of first block) of outer hash here we can re-use it between multiple calls via clone\n this.oHash = hash.create();\n // Undo internal XOR && apply outer XOR\n for (let i = 0; i < pad.length; i++)\n pad[i] ^= 0x36 ^ 0x5c;\n this.oHash.update(pad);\n clean(pad);\n }\n update(buf) {\n aexists(this);\n this.iHash.update(buf);\n return this;\n }\n digestInto(out) {\n aexists(this);\n abytes(out, this.outputLen, 'output');\n this.finished = true;\n this.iHash.digestInto(out);\n this.oHash.update(out);\n this.oHash.digestInto(out);\n this.destroy();\n }\n digest() {\n const out = new Uint8Array(this.oHash.outputLen);\n this.digestInto(out);\n return out;\n }\n _cloneInto(to) {\n // Create new instance without calling constructor since key already in state and we don't know it.\n to ||= Object.create(Object.getPrototypeOf(this), {});\n const { oHash, iHash, finished, destroyed, blockLen, outputLen } = this;\n to = to;\n to.finished = finished;\n to.destroyed = destroyed;\n to.blockLen = blockLen;\n to.outputLen = outputLen;\n to.oHash = oHash._cloneInto(to.oHash);\n to.iHash = iHash._cloneInto(to.iHash);\n return to;\n }\n clone() {\n return this._cloneInto();\n }\n destroy() {\n this.destroyed = true;\n this.oHash.destroy();\n this.iHash.destroy();\n }\n}\n/**\n * HMAC: RFC2104 message authentication code.\n * @param hash - function that would be used e.g. sha256\n * @param key - message key\n * @param message - message data\n * @example\n * import { hmac } from '@noble/hashes/hmac';\n * import { sha256 } from '@noble/hashes/sha2';\n * const mac1 = hmac(sha256, 'key', 'message');\n */\nexport const hmac = (hash, key, message) => new _HMAC(hash, key).update(message).digest();\nhmac.create = (hash, key) => new _HMAC(hash, key);\n//# sourceMappingURL=hmac.js.map",
11
11
  "/**\n * HKDF (RFC 5869): extract + expand in one step.\n * See https://soatok.blog/2021/11/17/understanding-hkdf/.\n * @module\n */\nimport { hmac } from \"./hmac.js\";\nimport { abytes, ahash, anumber, clean } from \"./utils.js\";\n/**\n * HKDF-extract from spec. Less important part. `HKDF-Extract(IKM, salt) -> PRK`\n * Arguments position differs from spec (IKM is first one, since it is not optional)\n * @param hash - hash function that would be used (e.g. sha256)\n * @param ikm - input keying material, the initial key\n * @param salt - optional salt value (a non-secret random value)\n */\nexport function extract(hash, ikm, salt) {\n ahash(hash);\n // NOTE: some libraries treat zero-length array as 'not provided';\n // we don't, since we have undefined as 'not provided'\n // https://github.com/RustCrypto/KDFs/issues/15\n if (salt === undefined)\n salt = new Uint8Array(hash.outputLen);\n return hmac(hash, salt, ikm);\n}\nconst HKDF_COUNTER = /* @__PURE__ */ Uint8Array.of(0);\nconst EMPTY_BUFFER = /* @__PURE__ */ Uint8Array.of();\n/**\n * HKDF-expand from the spec. The most important part. `HKDF-Expand(PRK, info, L) -> OKM`\n * @param hash - hash function that would be used (e.g. sha256)\n * @param prk - a pseudorandom key of at least HashLen octets (usually, the output from the extract step)\n * @param info - optional context and application specific information (can be a zero-length string)\n * @param length - length of output keying material in bytes\n */\nexport function expand(hash, prk, info, length = 32) {\n ahash(hash);\n anumber(length, 'length');\n const olen = hash.outputLen;\n if (length > 255 * olen)\n throw new Error('Length must be <= 255*HashLen');\n const blocks = Math.ceil(length / olen);\n if (info === undefined)\n info = EMPTY_BUFFER;\n else\n abytes(info, undefined, 'info');\n // first L(ength) octets of T\n const okm = new Uint8Array(blocks * olen);\n // Re-use HMAC instance between blocks\n const HMAC = hmac.create(hash, prk);\n const HMACTmp = HMAC._cloneInto();\n const T = new Uint8Array(HMAC.outputLen);\n for (let counter = 0; counter < blocks; counter++) {\n HKDF_COUNTER[0] = counter + 1;\n // T(0) = empty string (zero length)\n // T(N) = HMAC-Hash(PRK, T(N-1) | info | N)\n HMACTmp.update(counter === 0 ? EMPTY_BUFFER : T)\n .update(info)\n .update(HKDF_COUNTER)\n .digestInto(T);\n okm.set(T, olen * counter);\n HMAC._cloneInto(HMACTmp);\n }\n HMAC.destroy();\n HMACTmp.destroy();\n clean(T, HKDF_COUNTER);\n return okm.slice(0, length);\n}\n/**\n * HKDF (RFC 5869): derive keys from an initial input.\n * Combines hkdf_extract + hkdf_expand in one step\n * @param hash - hash function that would be used (e.g. sha256)\n * @param ikm - input keying material, the initial key\n * @param salt - optional salt value (a non-secret random value)\n * @param info - optional context and application specific information (can be a zero-length string)\n * @param length - length of output keying material in bytes\n * @example\n * import { hkdf } from '@noble/hashes/hkdf';\n * import { sha256 } from '@noble/hashes/sha2';\n * import { randomBytes } from '@noble/hashes/utils';\n * const inputKey = randomBytes(32);\n * const salt = randomBytes(32);\n * const info = 'application-key';\n * const hk1 = hkdf(sha256, inputKey, salt, info, 32);\n */\nexport const hkdf = (hash, ikm, salt, info, length) => expand(hash, extract(hash, ikm, salt), info, length);\n//# sourceMappingURL=hkdf.js.map",
12
12
  "import { sha256 as nobleSha256 } from \"@noble/hashes/sha2.js\";\nimport { hmac } from \"@noble/hashes/hmac.js\";\nimport { hkdf } from \"@noble/hashes/hkdf.js\";\n\nfunction toBytes(input: Uint8Array | string): Uint8Array {\n if (typeof input === \"string\") return new TextEncoder().encode(input);\n return input;\n}\n\nexport function sha256(data: Uint8Array | string): Uint8Array {\n return nobleSha256(toBytes(data));\n}\n\nexport function hmacSha256(\n key: Uint8Array | string,\n data: Uint8Array | string\n): Uint8Array {\n return hmac(nobleSha256, toBytes(key), toBytes(data));\n}\n\n// HKDF implementation using @noble/hashes\nexport function hkdfSha256(\n ikm: Uint8Array | string,\n length: number,\n {\n salt,\n info,\n }: { salt?: Uint8Array | string; info?: Uint8Array | string } = {}\n): Uint8Array {\n const saltBuf = salt ? toBytes(salt) : new Uint8Array(32);\n const ikmBuf = toBytes(ikm);\n const infoBuf = info ? toBytes(info) : new Uint8Array(0);\n\n return hkdf(nobleSha256, ikmBuf, saltBuf, infoBuf, length);\n}\n\n// Crockford Base32 without lookalikes (I L O U mapped) – output uppercase\nconst CROCKFORD_ALPHABET = \"0123456789ABCDEFGHJKMNPQRSTVWXYZ\";\n\nexport function base32EncodeCrockford(data: Uint8Array): string {\n let bits = 0;\n let value = 0;\n let output = \"\";\n for (let i = 0; i < data.length; i++) {\n value = (value << 8) | data[i]!;\n bits += 8;\n while (bits >= 5) {\n output += CROCKFORD_ALPHABET[(value >>> (bits - 5)) & 31];\n bits -= 5;\n }\n }\n if (bits > 0) {\n output += CROCKFORD_ALPHABET[(value << (5 - bits)) & 31];\n }\n return output;\n}\n\nexport function truncateBits(input: Uint8Array, totalBits: number): Uint8Array {\n const totalBytes = Math.ceil(totalBits / 8);\n const out = new Uint8Array(totalBytes);\n const copyBytes = Math.min(totalBytes, input.length);\n out.set(input.subarray(0, copyBytes));\n // If not byte-aligned, mask the last byte\n const extraBits = totalBytes * 8 - totalBits;\n if (extraBits > 0) {\n const mask = 0xff << extraBits;\n out[totalBytes - 1] = out[totalBytes - 1]! & mask;\n }\n return out;\n}\n\n// Derive digits-only code from a digest using modulo bias-reduction (HOTP-style per-digit)\nexport function digestToDigits(digest: Uint8Array, length: number): string {\n if (digest.length === 0) throw new Error(\"digestToDigits: empty digest\");\n // HOTP-like dynamic truncation for unbiased decimal extraction\n // Process 4 bytes windows to produce digits\n let out = \"\";\n const offset = digest[digest.length - 1]! & 0x0f;\n for (let i = 0; out.length < length; i++) {\n const idx = (offset + i * 4) % Math.max(1, digest.length - 4);\n const p =\n ((digest[idx]! & 0x7f) << 24) |\n (digest[idx + 1]! << 16) |\n (digest[idx + 2]! << 8) |\n digest[idx + 3]!;\n const num = p % 1000000000; // up to 9 digits\n const chunk = num.toString().padStart(9, \"0\");\n out += chunk;\n }\n return out.slice(0, length);\n}\n\n// Generate a SHA256 hash of a code string for use as a unique identifier\nexport function codeHash(code: string): string {\n const hash = sha256(code);\n return Array.from(hash)\n .map((b) => b.toString(16).padStart(2, \"0\"))\n .join(\"\");\n}\n",
13
- "import type {\n CanonicalMessageParts,\n CanonicalRevokeMessageParts,\n DelegationProof,\n} from \"../types\";\n\nexport const CANONICAL_MESSAGE_VERSION = 1;\nexport const CANONICAL_MESSAGE_PREFIX = \"actioncodes\";\nexport const CANONICAL_REVOKE_MESSAGE_PREFIX = \"actioncodes-revoke\";\n\nexport function serializeCanonical(parts: CanonicalMessageParts): Uint8Array {\n const json = JSON.stringify({\n id: CANONICAL_MESSAGE_PREFIX,\n ver: CANONICAL_MESSAGE_VERSION,\n pubkey: parts.pubkey,\n windowStart: parts.windowStart,\n });\n return new TextEncoder().encode(json);\n}\n\nexport function serializeCanonicalRevoke(\n parts: CanonicalRevokeMessageParts\n): Uint8Array {\n const json = JSON.stringify({\n id: CANONICAL_REVOKE_MESSAGE_PREFIX,\n ver: CANONICAL_MESSAGE_VERSION,\n pubkey: parts.pubkey,\n codeHash: parts.codeHash,\n windowStart: parts.windowStart,\n });\n return new TextEncoder().encode(json);\n}\n\nexport function getCanonicalMessageParts(\n pubkey: string,\n ttlMs: number\n): Uint8Array {\n const windowStart = Math.floor(Date.now() / ttlMs) * ttlMs;\n return serializeCanonical({ pubkey, windowStart });\n}\n\nexport function serializeDelegationProof(proof: Omit<DelegationProof, 'signature'>): Uint8Array {\n const json = JSON.stringify({\n walletPubkey: proof.walletPubkey,\n delegatedPubkey: proof.delegatedPubkey,\n expiresAt: proof.expiresAt,\n chain: proof.chain,\n });\n return new TextEncoder().encode(json);\n}\n",
13
+ "import type {\n CanonicalMessageParts,\n CanonicalRevokeMessageParts,\n DelegationProof,\n} from \"../types\";\n\nexport const CANONICAL_MESSAGE_VERSION = 1;\nexport const CANONICAL_MESSAGE_PREFIX = \"actioncodes\";\nexport const CANONICAL_REVOKE_MESSAGE_PREFIX = \"actioncodes-revoke\";\n\nexport function serializeCanonical(parts: CanonicalMessageParts): Uint8Array {\n const json = JSON.stringify({\n id: CANONICAL_MESSAGE_PREFIX,\n ver: CANONICAL_MESSAGE_VERSION,\n pubkey: parts.pubkey,\n windowStart: parts.windowStart,\n });\n return new TextEncoder().encode(json);\n}\n\nexport function serializeCanonicalRevoke(\n parts: CanonicalRevokeMessageParts\n): Uint8Array {\n const json = JSON.stringify({\n id: CANONICAL_REVOKE_MESSAGE_PREFIX,\n ver: CANONICAL_MESSAGE_VERSION,\n pubkey: parts.pubkey,\n codeHash: parts.codeHash,\n windowStart: parts.windowStart,\n });\n return new TextEncoder().encode(json);\n}\n\nexport function getCanonicalMessageParts(pubkey: string): Uint8Array {\n return serializeCanonical({ pubkey, windowStart: Date.now() });\n}\n\nexport function serializeDelegationProof(\n proof: Omit<DelegationProof, \"signature\">\n): Uint8Array {\n const json = JSON.stringify({\n walletPubkey: proof.walletPubkey,\n delegatedPubkey: proof.delegatedPubkey,\n expiresAt: proof.expiresAt,\n chain: proof.chain,\n });\n return new TextEncoder().encode(json);\n}\n",
14
14
  "// Protocol-wide constants\n\nexport const PROTOCOL_NORMALIZATION = \"NFC\";\nexport const PROTOCOL_META_MAX_BYTES = 256; // UTF-8 bytes\n\nexport const CODE_MIN_LENGTH = 6;\nexport const CODE_MAX_LENGTH = 24;\nexport const CODE_DEFAULT_LENGTH = 8;\n\n// Digits-only codes (0-9)\nexport const CODE_CHARSET_DIGITS = \"0123456789\";\n\nexport const SUPPORTED_CHAINS = [\"solana\"] as const;\n\n\n",
15
15
  "import { PROTOCOL_META_MAX_BYTES, PROTOCOL_NORMALIZATION } from \"../constants\";\n\n// v2 protocol meta\nexport interface ProtocolMetaFields {\n ver: 2;\n id: string; // code id (usually hex/hash)\n int: string; // intent owner who created the code\n p?: Record<string, unknown>; // optional parameters as JSON object\n}\n\nexport const SCHEME = \"actioncodes:\";\n\nexport function buildProtocolMeta(fields: ProtocolMetaFields): string {\n const norm = normalizeFields(fields);\n if (norm.int != null) guardParamSize(norm.int);\n \n const parts = [\n `ver=${norm.ver}`,\n `id=${encodeURIComponent(norm.id)}`,\n `int=${encodeURIComponent(norm.int)}`,\n ];\n\n if (norm.p != null && Object.keys(norm.p).length > 0) {\n const paramsJson = JSON.stringify(norm.p);\n guardParamSize(paramsJson);\n parts.push(`p=${encodeURIComponent(paramsJson)}`);\n }\n \n const out = SCHEME + parts.join(\"&\");\n guardSize(out);\n return out;\n}\n\nexport function parseProtocolMeta(input: string): ProtocolMetaFields {\n if (!input.startsWith(SCHEME)) throw new Error(\"protocol meta must start with actioncodes:\");\n const q = input.slice(SCHEME.length);\n const pairs = q.split(\"&\").filter(Boolean);\n const map = new Map<string, string>();\n for (const pair of pairs) {\n const [k, vRaw] = pair.split(\"=\", 2);\n if (!k) continue;\n const v = vRaw != null ? decodeURIComponent(vRaw) : \"\";\n map.set(k, v);\n }\n const verStr = map.get(\"ver\");\n const id = map.get(\"id\");\n const int = map.get(\"int\");\n const pStr = map.get(\"p\");\n if (verStr == null || id == null || int == null) throw new Error(\"protocol meta missing required fields ver or id or int\");\n const ver = Number(verStr);\n if (!Number.isInteger(ver) || ver <= 0) throw new Error(\"protocol meta ver must be positive integer\");\n \n let p: Record<string, unknown> | undefined;\n if (pStr != null && pStr !== \"\") {\n try {\n p = JSON.parse(pStr);\n if (typeof p !== \"object\" || p === null || Array.isArray(p)) {\n throw new Error(\"protocol meta p must be a JSON object\");\n }\n } catch {\n throw new Error(\"protocol meta p must be valid JSON\");\n }\n }\n \n const norm = normalizeFields({ ver: ver as 2, id, int, p });\n if (norm.int != null) guardParamSize(norm.int);\n if (norm.p != null) guardParamSize(JSON.stringify(norm.p));\n const unknownKeys = [...map.keys()].filter((k) => k !== \"ver\" && k !== \"id\" && k !== \"int\" && k !== \"p\");\n if (unknownKeys.length > 0) throw new Error(\"protocol meta contains unsupported keys\");\n guardSize(buildProtocolMeta(norm));\n return norm;\n}\n\nexport function validateProtocolMetaFormat(input: string): { ok: true } | { ok: false; reason: string } {\n try {\n parseProtocolMeta(input);\n return { ok: true };\n } catch (e: unknown) {\n return { ok: false, reason: String(e) };\n }\n}\n\nfunction normalizeFields(fields: ProtocolMetaFields): ProtocolMetaFields {\n const id = fields.id.normalize(PROTOCOL_NORMALIZATION).trim();\n const out: ProtocolMetaFields = { ver: fields.ver, id, int: fields.int };\n if (fields.int != null) out.int = fields.int.normalize(PROTOCOL_NORMALIZATION).trim();\n if (fields.p != null) {\n // For JSON objects, we don't normalize the object itself, just ensure it's valid\n out.p = fields.p;\n }\n return out;\n}\n\nfunction guardSize(s: string): void {\n const bytes = new TextEncoder().encode(s);\n if (bytes.length > PROTOCOL_META_MAX_BYTES) throw new Error(`protocol meta exceeds ${PROTOCOL_META_MAX_BYTES} bytes`);\n}\n\nfunction guardParamSize(value: string): void {\n const bytes = new TextEncoder().encode(value);\n if (bytes.length > PROTOCOL_META_MAX_BYTES) throw new Error(`protocol meta params exceed ${PROTOCOL_META_MAX_BYTES} bytes`);\n}\n\n\n",
16
16
  "export enum ProtocolErrorCode {\n // Code validation errors\n EXPIRED_CODE = \"EXPIRED_CODE\",\n INVALID_CODE = \"INVALID_CODE\",\n INVALID_CODE_FORMAT = \"INVALID_CODE_FORMAT\",\n INVALID_SIGNATURE = \"INVALID_SIGNATURE\",\n\n // Meta validation errors\n MISSING_META = \"MISSING_META\",\n INVALID_META_FORMAT = \"INVALID_META_FORMAT\",\n META_MISMATCH = \"META_MISMATCH\",\n META_TOO_LARGE = \"META_TOO_LARGE\",\n\n // Transaction errors\n TRANSACTION_NOT_SIGNED_BY_INTENDED_OWNER = \"TRANSACTION_NOT_SIGNED_BY_INTENDED_OWNER\",\n INVALID_TRANSACTION_FORMAT = \"INVALID_TRANSACTION_FORMAT\",\n INVALID_PUBKEY_FORMAT = \"INVALID_PUBKEY_FORMAT\",\n\n // Input validation errors\n INVALID_INPUT = \"INVALID_INPUT\",\n MISSING_REQUIRED_FIELD = \"MISSING_REQUIRED_FIELD\",\n\n // Crypto errors\n CRYPTO_ERROR = \"CRYPTO_ERROR\",\n INVALID_DIGEST = \"INVALID_DIGEST\",\n\n // Adapter errors\n INVALID_ADAPTER = \"INVALID_ADAPTER\",\n}\n\nexport class ProtocolError extends Error {\n constructor(\n public readonly code: ProtocolErrorCode,\n message: string,\n public readonly details?: Record<string, unknown>\n ) {\n super(message);\n this.name = \"ProtocolError\";\n }\n\n // Code validation errors\n static expiredCode(code: string, expiresAt: number, currentTime: number): ExpiredCodeError {\n return new ExpiredCodeError(code, expiresAt, currentTime);\n }\n\n static invalidCode(): ProtocolError {\n return new ProtocolError(\n ProtocolErrorCode.INVALID_CODE,\n \"Invalid code provided\",\n {}\n );\n }\n\n static invalidCodeFormat(code: string, reason: string): InvalidCodeFormatError {\n return new InvalidCodeFormatError(code, reason);\n }\n\n static invalidSignature(reason: string): InvalidSignatureError {\n return new InvalidSignatureError(reason);\n }\n\n // Meta validation errors\n static missingMeta(): MissingMetaError {\n return new MissingMetaError();\n }\n\n static invalidMetaFormat(reason: string): ProtocolError {\n return new ProtocolError(\n ProtocolErrorCode.INVALID_META_FORMAT,\n `Invalid protocol meta format: ${reason}`,\n { reason }\n );\n }\n\n static metaMismatch(expected: string, actual: string, field: string): MetaMismatchError {\n return new MetaMismatchError(expected, actual, field);\n }\n\n static metaTooLarge(maxBytes: number, actualBytes: number): ProtocolError {\n return new ProtocolError(\n ProtocolErrorCode.META_TOO_LARGE,\n `Protocol meta too large: ${actualBytes} bytes (max: ${maxBytes})`,\n { maxBytes, actualBytes }\n );\n }\n\n // Transaction errors\n static transactionNotSignedByIntendedOwner(intended: string, actualSigners: string[]): TransactionNotSignedByIntendedOwnerError {\n return new TransactionNotSignedByIntendedOwnerError(intended, actualSigners);\n }\n\n static invalidTransactionFormat(reason: string): ProtocolError {\n return new ProtocolError(\n ProtocolErrorCode.INVALID_TRANSACTION_FORMAT,\n `Invalid transaction format: ${reason}`,\n { reason }\n );\n }\n\n static invalidPubkeyFormat(pubkey: string, reason: string): InvalidPubkeyFormatError {\n return new InvalidPubkeyFormatError(pubkey, reason);\n }\n\n // Input validation errors\n static invalidInput(field: string, value: unknown, reason: string): ProtocolError {\n return new ProtocolError(\n ProtocolErrorCode.INVALID_INPUT,\n `Invalid ${field}: ${reason}`,\n { field, value, reason }\n );\n }\n\n static missingRequiredField(field: string): ProtocolError {\n return new ProtocolError(\n ProtocolErrorCode.MISSING_REQUIRED_FIELD,\n `Missing required field: ${field}`,\n { field }\n );\n }\n\n // Crypto errors\n static cryptoError(operation: string, reason: string): ProtocolError {\n return new ProtocolError(\n ProtocolErrorCode.CRYPTO_ERROR,\n `Crypto error in ${operation}: ${reason}`,\n { operation, reason }\n );\n }\n\n static invalidDigest(reason: string): ProtocolError {\n return new ProtocolError(\n ProtocolErrorCode.INVALID_DIGEST,\n `Invalid digest: ${reason}`,\n { reason }\n );\n }\n\n // Adapter errors\n static invalidAdapter(adapter: string): InvalidAdapterError {\n return new InvalidAdapterError(adapter);\n }\n\n // Generic error creator\n static create(code: ProtocolErrorCode, message: string, details?: Record<string, unknown>): ProtocolError {\n return new ProtocolError(code, message, details);\n }\n}\n\n// Specific error classes for instanceof checks\nexport class ExpiredCodeError extends ProtocolError {\n constructor(code: string, expiresAt: number, currentTime: number) {\n super(\n ProtocolErrorCode.EXPIRED_CODE,\n `Action code '${code}' expired at ${expiresAt}, current time: ${currentTime}`,\n { code, expiresAt, currentTime }\n );\n this.name = \"ExpiredCodeError\";\n }\n}\n\nexport class MissingMetaError extends ProtocolError {\n constructor() {\n super(\n ProtocolErrorCode.MISSING_META,\n \"Transaction does not contain valid protocol meta\"\n );\n this.name = \"MissingMetaError\";\n }\n}\n\nexport class MetaMismatchError extends ProtocolError {\n constructor(expected: string, actual: string, field: string) {\n super(\n ProtocolErrorCode.META_MISMATCH,\n `Meta ${field} mismatch: expected '${expected}', got '${actual}'`,\n { expected, actual, field }\n );\n this.name = \"MetaMismatchError\";\n }\n}\n\nexport class TransactionNotSignedByIntendedOwnerError extends ProtocolError {\n constructor(intended: string, actualSigners: string[]) {\n super(\n ProtocolErrorCode.TRANSACTION_NOT_SIGNED_BY_INTENDED_OWNER,\n `Transaction not signed by intended owner '${intended}'. Actual signers: [${actualSigners.join(\n \", \"\n )}]`,\n { intended, actualSigners }\n );\n this.name = \"TransactionNotSignedByIntendedOwnerError\";\n }\n}\n\nexport class InvalidPubkeyFormatError extends ProtocolError {\n constructor(pubkey: string, reason: string) {\n super(\n ProtocolErrorCode.INVALID_PUBKEY_FORMAT,\n `Invalid public key format '${pubkey}': ${reason}`,\n { pubkey, reason }\n );\n this.name = \"InvalidPubkeyFormatError\";\n }\n}\n\nexport class InvalidSignatureError extends ProtocolError {\n constructor(reason: string) {\n super(ProtocolErrorCode.INVALID_SIGNATURE, `Invalid signature: ${reason}`, {\n reason,\n });\n this.name = \"InvalidSignatureError\";\n }\n}\n\nexport class InvalidCodeFormatError extends ProtocolError {\n constructor(code: string, reason: string) {\n super(\n ProtocolErrorCode.INVALID_CODE_FORMAT,\n `Invalid code format '${code}': ${reason}`,\n { code, reason }\n );\n this.name = \"InvalidCodeFormatError\";\n }\n}\n\nexport class InvalidAdapterError extends ProtocolError {\n constructor(adapter: string) {\n super(ProtocolErrorCode.INVALID_ADAPTER, `Invalid adapter: ${adapter}`, { adapter });\n this.name = \"InvalidAdapterError\";\n }\n}",
17
- "import type {\n ActionCode,\n CodeGenerationConfig,\n WalletStrategyCodeGenerationResult,\n} from \"../types\";\nimport {\n hmacSha256,\n truncateBits,\n digestToDigits,\n} from \"../utils/crypto\";\nimport { CODE_MAX_LENGTH, CODE_MIN_LENGTH } from \"../constants\";\nimport {\n serializeCanonical,\n getCanonicalMessageParts,\n} from \"../utils/canonical\";\nimport { ProtocolError } from \"../errors\";\nimport bs58 from \"bs58\";\n\nexport class WalletStrategy {\n constructor(private config: CodeGenerationConfig) {}\n\n generateCode(\n canonicalMessage: Uint8Array,\n signature: string\n ): WalletStrategyCodeGenerationResult {\n const canonical = canonicalMessage;\n\n // Parse pubkey and windowStart from canonical message\n const decoded = JSON.parse(new TextDecoder().decode(canonical));\n const pubkey = decoded.pubkey;\n const windowStart = decoded.windowStart;\n\n // Use signature as the primary entropy source\n // Decode Base58 signature to bytes\n let signatureBytes: Uint8Array;\n try {\n signatureBytes = bs58.decode(signature);\n } catch {\n throw ProtocolError.invalidSignature(\"Invalid Base58 signature format\");\n }\n const digest = hmacSha256(signatureBytes, canonical);\n\n const clamped = Math.max(\n CODE_MIN_LENGTH,\n Math.min(CODE_MAX_LENGTH, this.config.codeLength)\n );\n const bitsNeeded = 8 * Math.ceil(clamped / 2);\n const truncated = truncateBits(digest, bitsNeeded);\n const code = digestToDigits(truncated, clamped);\n\n const actionCode: ActionCode = {\n code,\n pubkey,\n timestamp: windowStart,\n expiresAt: windowStart + this.config.ttlMs,\n signature,\n };\n\n return { actionCode, canonicalMessage: canonical };\n }\n\n validateCode(actionCode: ActionCode): void {\n const currentTime = Date.now();\n if (currentTime > actionCode.expiresAt + (this.config.clockSkewMs ?? 0)) {\n throw ProtocolError.expiredCode(\n actionCode.code,\n actionCode.expiresAt,\n currentTime\n );\n }\n\n const canonical = serializeCanonical({\n pubkey: actionCode.pubkey,\n windowStart: actionCode.timestamp,\n });\n\n // Use same digest method as generation\n if (!actionCode.signature) {\n throw ProtocolError.missingRequiredField(\"signature\");\n }\n \n // Use signature as the primary entropy source\n // Decode Base58 signature to bytes\n let signatureBytes: Uint8Array;\n try {\n signatureBytes = bs58.decode(actionCode.signature);\n } catch {\n throw ProtocolError.invalidSignature(\"Invalid Base58 signature format\");\n }\n const digest = hmacSha256(signatureBytes, canonical);\n\n const clamped = Math.max(\n CODE_MIN_LENGTH,\n Math.min(CODE_MAX_LENGTH, this.config.codeLength)\n );\n const truncated = truncateBits(digest, 8 * Math.ceil(clamped / 2));\n const expected = digestToDigits(truncated, clamped);\n\n if (expected !== actionCode.code) {\n throw ProtocolError.invalidCode();\n }\n }\n\n // Instance method for accessing canonical functions\n getCanonicalMessageParts(pubkey: string): Uint8Array {\n return getCanonicalMessageParts(pubkey, this.config.ttlMs);\n }\n}\n",
18
- "import { WalletStrategy } from \"./WalletStrategy\";\nimport {\n getCanonicalMessageParts,\n serializeCanonical,\n} from \"../utils/canonical\";\nimport { ProtocolError } from \"../errors\";\nimport { PublicKey } from \"@solana/web3.js\";\nimport nacl from \"tweetnacl\";\nimport bs58 from \"bs58\";\n\nimport type {\n DelegationProof,\n DelegatedActionCode,\n CodeGenerationConfig,\n DelegationStrategyCodeGenerationResult,\n} from \"../types\";\n\nexport class DelegationStrategy {\n private walletStrategy: WalletStrategy;\n private config: CodeGenerationConfig;\n\n constructor(config: CodeGenerationConfig) {\n this.config = config;\n this.walletStrategy = new WalletStrategy(config);\n }\n\n /**\n * Generate a delegated action code using a delegation proof and signature over message to generate code via delegated keypair\n */\n generateDelegatedCode(\n delegationProof: DelegationProof,\n signature: string // this is the signature over message to generate code via delegated keypair\n ): DelegationStrategyCodeGenerationResult {\n // Validate delegation proof format and expiration\n this.validateDelegationProof(delegationProof);\n\n // Generate canonical message using the delegated pubkey (the signer)\n const canonicalMessage = getCanonicalMessageParts(\n delegationProof.delegatedPubkey,\n this.config.ttlMs\n );\n\n // Generate code using existing WalletStrategy with canonical message\n const result = this.walletStrategy.generateCode(\n canonicalMessage,\n signature // Use signature\n );\n\n // Create delegated action code\n const delegatedActionCode: DelegatedActionCode = {\n ...result.actionCode,\n pubkey: delegationProof.walletPubkey, // Code belongs to the user who delegated\n delegationProof: delegationProof,\n };\n\n return {\n actionCode: delegatedActionCode,\n };\n }\n\n /**\n * Validate a delegated action code\n */\n validateDelegatedCode(\n actionCode: DelegatedActionCode,\n delegationProof: DelegationProof\n ): void {\n // Basic validation checks (similar to WalletStrategy.validateCode)\n const currentTime = Date.now();\n if (currentTime > actionCode.expiresAt + (this.config.clockSkewMs ?? 0)) {\n throw ProtocolError.expiredCode(\n actionCode.code,\n actionCode.expiresAt,\n currentTime\n );\n }\n\n // Verify delegation proof is still valid\n this.validateDelegationProof(delegationProof);\n\n // Verify the delegation proof matches the action code\n if (\n actionCode.pubkey !== delegationProof.walletPubkey || actionCode.pubkey !== actionCode.delegationProof.walletPubkey\n ) {\n throw ProtocolError.invalidInput(\n \"walletPubkey\",\n actionCode.delegationProof.walletPubkey,\n \"Action code wallet pubkey does not match delegation proof\"\n );\n }\n\n if (\n actionCode.delegationProof.delegatedPubkey !==\n delegationProof.delegatedPubkey\n ) {\n throw ProtocolError.invalidInput(\n \"delegatedPubkey\",\n actionCode.delegationProof.delegatedPubkey,\n \"Invalid delegatedPubkey: Action code delegated pubkey does not match delegation proof\"\n );\n }\n\n if (actionCode.delegationProof.expiresAt !== delegationProof.expiresAt) {\n throw ProtocolError.invalidInput(\n \"expiresAt\",\n actionCode.delegationProof.expiresAt,\n \"Action code delegation expiration does not match delegation proof\"\n );\n }\n\n // Verify delegated signature is present\n if (!actionCode.delegationProof.signature) {\n throw ProtocolError.missingRequiredField(\"delegationProof.signature\");\n }\n\n if (actionCode.delegationProof.signature !== delegationProof.signature) {\n throw ProtocolError.invalidInput(\n \"signature\",\n actionCode.delegationProof.signature,\n \"Invalid signature: Action code delegation signature does not match delegation proof\"\n );\n }\n\n // Finally, verify the delegated signature against the canonical message\n // Use the original timestamp from the action code, not the current time\n const canonicalMessage = serializeCanonical({\n pubkey: delegationProof.delegatedPubkey,\n windowStart: actionCode.timestamp,\n });\n\n // Decode and verify the delegated signature\n let signatureBytes: Uint8Array;\n try {\n signatureBytes = bs58.decode(actionCode.signature ?? \"\");\n } catch {\n throw ProtocolError.invalidSignature(\n \"Invalid Base58 delegated signature format\"\n );\n }\n\n // Verify the signature using the delegated keypair's public key\n const delegatedPubkeyBytes = bs58.decode(delegationProof.delegatedPubkey);\n const isValidSignature = nacl.sign.detached.verify(\n canonicalMessage,\n signatureBytes,\n delegatedPubkeyBytes\n );\n\n if (!isValidSignature) {\n throw ProtocolError.invalidSignature(\n \"Delegated signature verification failed\"\n );\n }\n }\n\n /**\n * Validate a delegation proof with comprehensive input validation\n */\n private validateDelegationProof(delegationProof: DelegationProof): void {\n // Validate walletPubkey using Solana's PublicKey constructor\n if (\n !delegationProof.walletPubkey ||\n typeof delegationProof.walletPubkey !== \"string\"\n ) {\n throw ProtocolError.invalidInput(\n \"walletPubkey\",\n delegationProof.walletPubkey,\n \"Wallet pubkey is required and must be a string\"\n );\n }\n try {\n new PublicKey(delegationProof.walletPubkey);\n } catch {\n throw ProtocolError.invalidInput(\n \"walletPubkey\",\n delegationProof.walletPubkey,\n \"Invalid wallet pubkey format\"\n );\n }\n\n // Validate delegatedPubkey using Solana's PublicKey constructor\n if (\n !delegationProof.delegatedPubkey ||\n typeof delegationProof.delegatedPubkey !== \"string\"\n ) {\n throw ProtocolError.invalidInput(\n \"delegatedPubkey\",\n delegationProof.delegatedPubkey,\n \"Delegated pubkey is required and must be a string\"\n );\n }\n try {\n new PublicKey(delegationProof.delegatedPubkey);\n } catch {\n throw ProtocolError.invalidInput(\n \"delegatedPubkey\",\n delegationProof.delegatedPubkey,\n \"Invalid delegated pubkey format\"\n );\n }\n\n // Validate chain\n if (!delegationProof.chain || typeof delegationProof.chain !== \"string\") {\n throw ProtocolError.invalidInput(\n \"chain\",\n delegationProof.chain,\n \"Chain is required and must be a string\"\n );\n }\n if (\n delegationProof.chain.length === 0 ||\n delegationProof.chain.length > 50\n ) {\n throw ProtocolError.invalidInput(\n \"chain\",\n delegationProof.chain,\n \"Chain must be between 1 and 50 characters\"\n );\n }\n if (!/^[a-z0-9-]+$/.test(delegationProof.chain)) {\n throw ProtocolError.invalidInput(\n \"chain\",\n delegationProof.chain,\n \"Chain contains invalid characters (only lowercase letters, numbers, and hyphens allowed)\"\n );\n }\n\n // Validate expiresAt\n if (\n typeof delegationProof.expiresAt !== \"number\" ||\n !Number.isInteger(delegationProof.expiresAt)\n ) {\n throw ProtocolError.invalidInput(\n \"expiresAt\",\n delegationProof.expiresAt,\n \"Expiration time must be a valid integer timestamp\"\n );\n }\n if (delegationProof.expiresAt <= 0) {\n throw ProtocolError.invalidInput(\n \"expiresAt\",\n delegationProof.expiresAt,\n \"Expiration time must be positive\"\n );\n }\n\n // Check for reasonable expiration bounds (not too far in the future)\n const now = Date.now();\n const maxFuture = 365 * 24 * 60 * 60 * 1000; // 1 year from now\n\n if (delegationProof.expiresAt > now + maxFuture) {\n throw ProtocolError.invalidInput(\n \"expiresAt\",\n delegationProof.expiresAt,\n \"Expiration time is too far in the future\"\n );\n }\n\n // Check if delegation has expired\n if (delegationProof.expiresAt < now) {\n throw ProtocolError.expiredCode(\n \"Delegation proof has expired\",\n delegationProof.expiresAt,\n now\n );\n }\n\n // Validate signature\n if (\n !delegationProof.signature ||\n typeof delegationProof.signature !== \"string\"\n ) {\n throw ProtocolError.invalidInput(\n \"signature\",\n delegationProof.signature,\n \"Delegation signature is required and must be a string\"\n );\n }\n if (\n delegationProof.signature.length === 0 ||\n delegationProof.signature.length > 200\n ) {\n throw ProtocolError.invalidInput(\n \"signature\",\n delegationProof.signature,\n \"Delegation signature must be between 1 and 200 characters\"\n );\n }\n // Note: Signature format validation will be done during actual verification\n }\n\n /**\n * Get canonical message parts for delegation\n */\n getCanonicalMessageParts(pubkey: string): Uint8Array {\n return getCanonicalMessageParts(pubkey, this.config.ttlMs);\n }\n}\n",
17
+ "import type {\n ActionCode,\n CodeGenerationConfig,\n WalletStrategyCodeGenerationResult,\n} from \"../types\";\nimport {\n hmacSha256,\n truncateBits,\n digestToDigits,\n} from \"../utils/crypto\";\nimport { CODE_MAX_LENGTH, CODE_MIN_LENGTH } from \"../constants\";\nimport {\n serializeCanonical,\n getCanonicalMessageParts,\n} from \"../utils/canonical\";\nimport { ProtocolError } from \"../errors\";\nimport bs58 from \"bs58\";\n\nexport class WalletStrategy {\n constructor(private config: CodeGenerationConfig) {}\n\n generateCode(\n canonicalMessage: Uint8Array,\n signature: string\n ): WalletStrategyCodeGenerationResult {\n const canonical = canonicalMessage;\n\n // Parse pubkey and windowStart from canonical message\n const decoded = JSON.parse(new TextDecoder().decode(canonical));\n const pubkey = decoded.pubkey;\n const windowStart = decoded.windowStart;\n\n // Use signature as the primary entropy source\n // Decode Base58 signature to bytes\n let signatureBytes: Uint8Array;\n try {\n signatureBytes = bs58.decode(signature);\n } catch {\n throw ProtocolError.invalidSignature(\"Invalid Base58 signature format\");\n }\n const digest = hmacSha256(signatureBytes, canonical);\n\n const clamped = Math.max(\n CODE_MIN_LENGTH,\n Math.min(CODE_MAX_LENGTH, this.config.codeLength)\n );\n const bitsNeeded = 8 * Math.ceil(clamped / 2);\n const truncated = truncateBits(digest, bitsNeeded);\n const code = digestToDigits(truncated, clamped);\n\n const actionCode: ActionCode = {\n code,\n pubkey,\n timestamp: windowStart,\n expiresAt: windowStart + this.config.ttlMs,\n signature,\n };\n\n return { actionCode, canonicalMessage: canonical };\n }\n\n validateCode(actionCode: ActionCode): void {\n const currentTime = Date.now();\n if (currentTime > actionCode.expiresAt + (this.config.clockSkewMs ?? 0)) {\n throw ProtocolError.expiredCode(\n actionCode.code,\n actionCode.expiresAt,\n currentTime\n );\n }\n\n const canonical = serializeCanonical({\n pubkey: actionCode.pubkey,\n windowStart: actionCode.timestamp,\n });\n\n // Use same digest method as generation\n if (!actionCode.signature) {\n throw ProtocolError.missingRequiredField(\"signature\");\n }\n \n // Use signature as the primary entropy source\n // Decode Base58 signature to bytes\n let signatureBytes: Uint8Array;\n try {\n signatureBytes = bs58.decode(actionCode.signature);\n } catch {\n throw ProtocolError.invalidSignature(\"Invalid Base58 signature format\");\n }\n const digest = hmacSha256(signatureBytes, canonical);\n\n const clamped = Math.max(\n CODE_MIN_LENGTH,\n Math.min(CODE_MAX_LENGTH, this.config.codeLength)\n );\n const truncated = truncateBits(digest, 8 * Math.ceil(clamped / 2));\n const expected = digestToDigits(truncated, clamped);\n\n if (expected !== actionCode.code) {\n throw ProtocolError.invalidCode();\n }\n }\n\n // Instance method for accessing canonical functions\n getCanonicalMessageParts(pubkey: string): Uint8Array {\n return getCanonicalMessageParts(pubkey);\n }\n}\n",
18
+ "import { WalletStrategy } from \"./WalletStrategy\";\nimport {\n getCanonicalMessageParts,\n serializeCanonical,\n} from \"../utils/canonical\";\nimport { ProtocolError } from \"../errors\";\nimport { PublicKey } from \"@solana/web3.js\";\nimport nacl from \"tweetnacl\";\nimport bs58 from \"bs58\";\n\nimport type {\n DelegationProof,\n DelegatedActionCode,\n CodeGenerationConfig,\n DelegationStrategyCodeGenerationResult,\n} from \"../types\";\n\nexport class DelegationStrategy {\n private walletStrategy: WalletStrategy;\n private config: CodeGenerationConfig;\n\n constructor(config: CodeGenerationConfig) {\n this.config = config;\n this.walletStrategy = new WalletStrategy(config);\n }\n\n /**\n * Generate a delegated action code using a delegation proof and signature over message to generate code via delegated keypair\n */\n generateDelegatedCode(\n delegationProof: DelegationProof,\n signature: string // this is the signature over message to generate code via delegated keypair\n ): DelegationStrategyCodeGenerationResult {\n // Validate delegation proof format and expiration\n this.validateDelegationProof(delegationProof);\n\n // Generate canonical message using the delegated pubkey (the signer)\n const canonicalMessage = getCanonicalMessageParts(delegationProof.delegatedPubkey);\n \n // Generate code using existing WalletStrategy with canonical message\n const result = this.walletStrategy.generateCode(\n canonicalMessage,\n signature // Use signature\n );\n\n // Create delegated action code\n const delegatedActionCode: DelegatedActionCode = {\n ...result.actionCode,\n pubkey: delegationProof.walletPubkey, // Code belongs to the user who delegated\n delegationProof: delegationProof,\n };\n\n return {\n actionCode: delegatedActionCode,\n };\n }\n\n /**\n * Validate a delegated action code\n */\n validateDelegatedCode(\n actionCode: DelegatedActionCode,\n delegationProof: DelegationProof\n ): void {\n // Basic validation checks (similar to WalletStrategy.validateCode)\n const currentTime = Date.now();\n if (currentTime > actionCode.expiresAt + (this.config.clockSkewMs ?? 0)) {\n throw ProtocolError.expiredCode(\n actionCode.code,\n actionCode.expiresAt,\n currentTime\n );\n }\n\n // Verify delegation proof is still valid\n this.validateDelegationProof(delegationProof);\n\n // Verify the delegation proof matches the action code\n if (\n actionCode.pubkey !== delegationProof.walletPubkey ||\n actionCode.pubkey !== actionCode.delegationProof.walletPubkey\n ) {\n throw ProtocolError.invalidInput(\n \"walletPubkey\",\n actionCode.delegationProof.walletPubkey,\n \"Action code wallet pubkey does not match delegation proof\"\n );\n }\n\n if (\n actionCode.delegationProof.delegatedPubkey !==\n delegationProof.delegatedPubkey\n ) {\n throw ProtocolError.invalidInput(\n \"delegatedPubkey\",\n actionCode.delegationProof.delegatedPubkey,\n \"Invalid delegatedPubkey: Action code delegated pubkey does not match delegation proof\"\n );\n }\n\n if (actionCode.delegationProof.expiresAt !== delegationProof.expiresAt) {\n throw ProtocolError.invalidInput(\n \"expiresAt\",\n actionCode.delegationProof.expiresAt,\n \"Action code delegation expiration does not match delegation proof\"\n );\n }\n\n // Verify delegated signature is present\n if (!actionCode.delegationProof.signature) {\n throw ProtocolError.missingRequiredField(\"delegationProof.signature\");\n }\n\n if (actionCode.delegationProof.signature !== delegationProof.signature) {\n throw ProtocolError.invalidInput(\n \"signature\",\n actionCode.delegationProof.signature,\n \"Invalid signature: Action code delegation signature does not match delegation proof\"\n );\n }\n\n // Finally, verify the delegated signature against the canonical message\n // Use the original timestamp from the action code, not the current time\n const canonicalMessage = serializeCanonical({\n pubkey: delegationProof.delegatedPubkey,\n windowStart: actionCode.timestamp,\n });\n\n // Decode and verify the delegated signature\n let signatureBytes: Uint8Array;\n try {\n signatureBytes = bs58.decode(actionCode.signature ?? \"\");\n } catch {\n throw ProtocolError.invalidSignature(\n \"Invalid Base58 delegated signature format\"\n );\n }\n\n // Verify the signature using the delegated keypair's public key\n const delegatedPubkeyBytes = bs58.decode(delegationProof.delegatedPubkey);\n const isValidSignature = nacl.sign.detached.verify(\n canonicalMessage,\n signatureBytes,\n delegatedPubkeyBytes\n );\n\n if (!isValidSignature) {\n throw ProtocolError.invalidSignature(\n \"Delegated signature verification failed\"\n );\n }\n }\n\n /**\n * Validate a delegation proof with comprehensive input validation\n */\n private validateDelegationProof(delegationProof: DelegationProof): void {\n // Validate walletPubkey using Solana's PublicKey constructor\n if (\n !delegationProof.walletPubkey ||\n typeof delegationProof.walletPubkey !== \"string\"\n ) {\n throw ProtocolError.invalidInput(\n \"walletPubkey\",\n delegationProof.walletPubkey,\n \"Wallet pubkey is required and must be a string\"\n );\n }\n try {\n new PublicKey(delegationProof.walletPubkey);\n } catch {\n throw ProtocolError.invalidInput(\n \"walletPubkey\",\n delegationProof.walletPubkey,\n \"Invalid wallet pubkey format\"\n );\n }\n\n // Validate delegatedPubkey using Solana's PublicKey constructor\n if (\n !delegationProof.delegatedPubkey ||\n typeof delegationProof.delegatedPubkey !== \"string\"\n ) {\n throw ProtocolError.invalidInput(\n \"delegatedPubkey\",\n delegationProof.delegatedPubkey,\n \"Delegated pubkey is required and must be a string\"\n );\n }\n try {\n new PublicKey(delegationProof.delegatedPubkey);\n } catch {\n throw ProtocolError.invalidInput(\n \"delegatedPubkey\",\n delegationProof.delegatedPubkey,\n \"Invalid delegated pubkey format\"\n );\n }\n\n // Validate chain\n if (!delegationProof.chain || typeof delegationProof.chain !== \"string\") {\n throw ProtocolError.invalidInput(\n \"chain\",\n delegationProof.chain,\n \"Chain is required and must be a string\"\n );\n }\n if (\n delegationProof.chain.length === 0 ||\n delegationProof.chain.length > 50\n ) {\n throw ProtocolError.invalidInput(\n \"chain\",\n delegationProof.chain,\n \"Chain must be between 1 and 50 characters\"\n );\n }\n if (!/^[a-z0-9-]+$/.test(delegationProof.chain)) {\n throw ProtocolError.invalidInput(\n \"chain\",\n delegationProof.chain,\n \"Chain contains invalid characters (only lowercase letters, numbers, and hyphens allowed)\"\n );\n }\n\n // Validate expiresAt\n if (\n typeof delegationProof.expiresAt !== \"number\" ||\n !Number.isInteger(delegationProof.expiresAt)\n ) {\n throw ProtocolError.invalidInput(\n \"expiresAt\",\n delegationProof.expiresAt,\n \"Expiration time must be a valid integer timestamp\"\n );\n }\n if (delegationProof.expiresAt <= 0) {\n throw ProtocolError.invalidInput(\n \"expiresAt\",\n delegationProof.expiresAt,\n \"Expiration time must be positive\"\n );\n }\n\n // Check for reasonable expiration bounds (not too far in the future)\n const now = Date.now();\n const maxFuture = 365 * 24 * 60 * 60 * 1000; // 1 year from now\n\n if (delegationProof.expiresAt > now + maxFuture) {\n throw ProtocolError.invalidInput(\n \"expiresAt\",\n delegationProof.expiresAt,\n \"Expiration time is too far in the future\"\n );\n }\n\n // Check if delegation has expired\n if (delegationProof.expiresAt < now) {\n throw ProtocolError.expiredCode(\n \"Delegation proof has expired\",\n delegationProof.expiresAt,\n now\n );\n }\n\n // Validate signature\n if (\n !delegationProof.signature ||\n typeof delegationProof.signature !== \"string\"\n ) {\n throw ProtocolError.invalidInput(\n \"signature\",\n delegationProof.signature,\n \"Delegation signature is required and must be a string\"\n );\n }\n if (\n delegationProof.signature.length === 0 ||\n delegationProof.signature.length > 200\n ) {\n throw ProtocolError.invalidInput(\n \"signature\",\n delegationProof.signature,\n \"Delegation signature must be between 1 and 200 characters\"\n );\n }\n // Note: Signature format validation will be done during actual verification\n }\n\n /**\n * Get canonical message parts for delegation\n */\n getCanonicalMessageParts(pubkey: string): Uint8Array {\n return getCanonicalMessageParts(pubkey);\n }\n}\n",
19
19
  "import nacl from \"tweetnacl\";\nimport bs58 from \"bs58\";\nimport {\n PublicKey,\n Transaction,\n VersionedTransaction,\n TransactionInstruction,\n MessageV0,\n} from \"@solana/web3.js\";\nimport { createMemoInstruction, MEMO_PROGRAM_ID } from \"@solana/spl-memo\";\nimport {\n BaseChainAdapter,\n type WalletContext,\n type WalletRevokeContext,\n type DelegatedContext,\n type DelegatedRevokeContext,\n} from \"./BaseChainAdapter\";\nimport {\n buildProtocolMeta,\n parseProtocolMeta,\n type ProtocolMetaFields,\n} from \"../utils/protocolMeta\";\nimport { codeHash } from \"../utils/crypto\";\nimport type { ActionCode } from \"../types\";\nimport { ProtocolError } from \"../errors\";\nimport {\n serializeCanonical,\n serializeCanonicalRevoke,\n serializeDelegationProof,\n} from \"../utils/canonical\";\n\nexport const ADAPTER_CHAIN_NAME = \"solana\" as const;\nexport type SolanaWalletContext = WalletContext<{\n chain: typeof ADAPTER_CHAIN_NAME;\n}>;\nexport type SolanaDelegatedContext = DelegatedContext<{\n chain: typeof ADAPTER_CHAIN_NAME;\n}>;\nexport type SolanaWalletRevokeContext = WalletRevokeContext<{\n chain: typeof ADAPTER_CHAIN_NAME;\n}>;\nexport type SolanaDelegatedRevokeContext = DelegatedRevokeContext<{\n chain: typeof ADAPTER_CHAIN_NAME;\n}>;\n\n/** Union of supported Solana txn types */\nexport type SolanaTransaction = Transaction | VersionedTransaction;\n\nexport class SolanaAdapter extends BaseChainAdapter<\n SolanaWalletContext,\n SolanaDelegatedContext,\n SolanaWalletRevokeContext,\n SolanaDelegatedRevokeContext\n> {\n /** Normalize pubkey input to PublicKey */\n private normalizePubkey(input: string | PublicKey): PublicKey {\n if (typeof input === \"string\") {\n return new PublicKey(input);\n }\n return input;\n }\n\n /** Verify the signature over canonical message (protocol-level) */\n verifyWithWallet(context: SolanaWalletContext): boolean {\n // Early validation checks - these are fast and don't leak timing info\n if (context.chain !== ADAPTER_CHAIN_NAME) return false;\n if (!context.message || !context.message.pubkey || !context.walletSignature)\n return false;\n\n // Perform all operations in a single try-catch to ensure consistent timing\n try {\n const message = serializeCanonical(context.message);\n const pub = this.normalizePubkey(context.message.pubkey);\n const sigBytes = bs58.decode(context.walletSignature);\n const pubBytes = pub.toBytes();\n\n // Validate lengths\n if (sigBytes.length !== 64 || pubBytes.length !== 32) {\n return false;\n }\n\n // Perform signature verification\n return nacl.sign.detached.verify(message, sigBytes, pubBytes);\n } catch {\n // All errors result in false with consistent timing\n return false;\n }\n }\n\n /** Verify delegation proof signature */\n verifyWithDelegation(context: SolanaDelegatedContext): boolean {\n // Early validation checks - these are fast and don't leak timing info\n if (context.chain !== ADAPTER_CHAIN_NAME) return false;\n if (\n !context.message.pubkey ||\n !context.delegatedSignature ||\n !context.delegationProof\n )\n return false;\n\n const proof = context.delegationProof;\n\n // Basic validation\n if (\n !proof.walletPubkey ||\n !proof.delegatedPubkey ||\n !proof.chain ||\n !proof.expiresAt ||\n !proof.signature\n ) {\n return false;\n }\n\n // Validate chain matches adapter\n if (proof.chain !== ADAPTER_CHAIN_NAME) {\n return false;\n }\n\n // The revoke/message pubkey for delegated flow must be the delegated pubkey\n if (proof.delegatedPubkey !== context.message.pubkey) return false;\n\n // Check if delegation has expired\n if (proof.expiresAt < Date.now()) return false;\n\n // Perform all operations in a single try-catch to ensure consistent timing\n try {\n const delegationMessage = serializeDelegationProof(proof);\n const walletPub = this.normalizePubkey(proof.walletPubkey);\n const walletSigBytes = bs58.decode(proof.signature);\n const walletPubBytes = walletPub.toBytes();\n \n const canonicalMessage = serializeCanonical(context.message);\n const delegatedPub = this.normalizePubkey(proof.delegatedPubkey);\n const delegatedSigBytes = bs58.decode(context.delegatedSignature);\n const delegatedPubBytes = delegatedPub.toBytes();\n \n // Validate lengths first to prevent timing attacks\n if (walletSigBytes.length !== 64 || walletPubBytes.length !== 32) {\n return false;\n }\n if (delegatedSigBytes.length !== 64 || delegatedPubBytes.length !== 32) {\n return false;\n }\n \n // Perform both signature verifications regardless of first result\n // This prevents timing attacks that could leak information about which signature failed\n const walletOk = nacl.sign.detached.verify(\n delegationMessage,\n walletSigBytes,\n walletPubBytes\n );\n \n const delegatedOk = nacl.sign.detached.verify(\n canonicalMessage,\n delegatedSigBytes,\n delegatedPubBytes\n );\n \n // Return result only after both operations complete\n return walletOk && delegatedOk;\n } catch {\n // All errors result in false with consistent timing\n return false;\n }\n }\n\n /** Verify the signature over canonical revoke message (protocol-level) */\n verifyRevokeWithWallet(context: SolanaWalletRevokeContext): boolean {\n // Early validation checks - these are fast and don't leak timing info\n if (context.chain !== ADAPTER_CHAIN_NAME) return false;\n if (!context.message || !context.message.pubkey || !context.walletSignature)\n return false;\n\n // Perform all operations in a single try-catch to ensure consistent timing\n try {\n const message = serializeCanonicalRevoke(context.message);\n const pub = this.normalizePubkey(context.message.pubkey);\n const sigBytes = bs58.decode(context.walletSignature);\n const pubBytes = pub.toBytes();\n\n // Validate lengths\n if (sigBytes.length !== 64 || pubBytes.length !== 32) {\n return false;\n }\n\n // Perform signature verification\n return nacl.sign.detached.verify(message, sigBytes, pubBytes);\n } catch {\n // All errors result in false with consistent timing\n return false;\n }\n }\n\n verifyRevokeWithDelegation(context: SolanaDelegatedRevokeContext): boolean {\n // Early validation checks - these are fast and don't leak timing info\n if (context.chain !== ADAPTER_CHAIN_NAME) return false;\n if (\n !context.message ||\n !context.message.pubkey ||\n !context.delegatedSignature ||\n !context.delegationProof\n )\n return false;\n\n const proof = context.delegationProof;\n\n // Basic validation\n if (\n !proof.walletPubkey ||\n !proof.delegatedPubkey ||\n !proof.chain ||\n !proof.expiresAt ||\n !proof.signature\n ) {\n return false;\n }\n\n // Validate chain matches adapter\n if (proof.chain !== ADAPTER_CHAIN_NAME) {\n return false;\n }\n\n // The revoke/message pubkey for delegated flow must be the delegated pubkey\n if (proof.delegatedPubkey !== context.message.pubkey) return false;\n\n // Check if delegation has expired\n if (proof.expiresAt < Date.now()) return false;\n\n try {\n const delegationMessage = serializeDelegationProof(proof);\n const walletPub = this.normalizePubkey(proof.walletPubkey);\n const walletSigBytes = bs58.decode(proof.signature);\n const walletPubBytes = walletPub.toBytes();\n if (walletSigBytes.length !== 64 || walletPubBytes.length !== 32) {\n return false;\n }\n const walletOk = nacl.sign.detached.verify(\n delegationMessage,\n walletSigBytes,\n walletPubBytes\n );\n if (!walletOk) return false;\n\n const revokeMessage = serializeCanonicalRevoke(context.message);\n const delegatedPub = this.normalizePubkey(proof.delegatedPubkey);\n const delegatedSigBytes = bs58.decode(context.delegatedSignature);\n const delegatedPubBytes = delegatedPub.toBytes();\n if (delegatedSigBytes.length !== 64 || delegatedPubBytes.length !== 32) {\n return false;\n }\n return nacl.sign.detached.verify(\n revokeMessage,\n delegatedSigBytes,\n delegatedPubBytes\n );\n } catch {\n // All errors result in false with consistent timing\n return false;\n }\n }\n\n /** Create a Solana memo instruction carrying protocol meta (for SDK/clients) */\n static createProtocolMetaIx(\n meta: ProtocolMetaFields\n ): TransactionInstruction {\n const metaString = buildProtocolMeta(meta);\n return createMemoInstruction(metaString);\n }\n\n /** Extract protocol metadata string (memo) from a base64-encoded transaction, or null */\n getProtocolMeta(txString: string): string | null {\n try {\n const tx = this.deserializeTransaction(txString);\n for (const ix of this.getMemoInstructions(tx)) {\n const data = ix.data;\n try {\n const s = new TextDecoder().decode(data);\n // Optionally: test parse\n const parsed = parseProtocolMeta(s);\n if (parsed) return s;\n } catch {\n // ignore\n }\n }\n return null;\n } catch {\n return null;\n }\n }\n\n /** Deserialize a base64-encoded transaction string to SolanaTransaction */\n private deserializeTransaction(txString: string): SolanaTransaction {\n try {\n // Try versioned first (most common now)\n const versionedTx = VersionedTransaction.deserialize(\n Buffer.from(txString, \"base64\")\n );\n\n // Check if this is actually a versioned transaction by checking if it has a MessageV0\n if (versionedTx.message instanceof MessageV0) {\n return versionedTx;\n } else {\n // This is likely a legacy transaction that was incorrectly deserialized as versioned\n // Fall back to legacy deserialization\n return Transaction.from(Buffer.from(txString, \"base64\"));\n }\n } catch {\n try {\n // Fallback to legacy\n return Transaction.from(Buffer.from(txString, \"base64\"));\n } catch {\n throw ProtocolError.invalidTransactionFormat(\n \"Invalid base64 transaction format\"\n );\n }\n }\n }\n\n /** Get parsed ProtocolMeta object from base64-encoded transaction, or null if none or invalid */\n parseMeta(txString: string): ProtocolMetaFields | null {\n const s = this.getProtocolMeta(txString);\n if (!s) return null;\n return parseProtocolMeta(s);\n }\n\n /** List memo instructions from the transaction (legacy & versioned) */\n private getMemoInstructions(tx: SolanaTransaction): TransactionInstruction[] {\n if (tx instanceof Transaction) {\n return tx.instructions.filter((ix) =>\n ix.programId.equals(MEMO_PROGRAM_ID)\n );\n } else {\n // VersionedTransaction: inspect `message.compiledInstructions` / static keys\n const vtx = tx as VersionedTransaction;\n const msg = vtx.message;\n if (msg instanceof MessageV0) {\n const memos: TransactionInstruction[] = [];\n for (const ix of msg.compiledInstructions) {\n const pid = msg.staticAccountKeys[ix.programIdIndex];\n if (pid && pid.equals(MEMO_PROGRAM_ID)) {\n // reconstruct a TransactionInstruction for inspection\n const keys = ix.accountKeyIndexes.map((i) => ({\n pubkey: msg.staticAccountKeys[i]!,\n isSigner: false,\n isWritable: false,\n }));\n memos.push(\n new TransactionInstruction({\n keys,\n programId: pid,\n data: ix.data as Buffer,\n })\n );\n }\n }\n return memos;\n }\n return [];\n }\n }\n\n /**\n * Validate that a base64-encoded transaction's memo meta aligns with the bound `actionCode`.\n * Throws ProtocolError if validation fails.\n */\n verifyTransactionMatchesCode(actionCode: ActionCode, txString: string): void {\n // Check expiration first\n const currentTime = Date.now();\n if (currentTime > actionCode.expiresAt) {\n throw ProtocolError.expiredCode(\n actionCode.code,\n actionCode.expiresAt,\n currentTime\n );\n }\n\n const meta = this.parseMeta(txString);\n if (!meta) {\n throw ProtocolError.missingMeta();\n }\n\n // Check version\n if (meta.ver !== 2) {\n throw ProtocolError.metaMismatch(\"2\", String(meta.ver), \"ver\");\n }\n\n // Check code ID - should be codeHash of the code, not the code itself\n const expectedCodeHash = codeHash(actionCode.code);\n if (meta.id !== expectedCodeHash) {\n throw ProtocolError.metaMismatch(expectedCodeHash, meta.id, \"id\");\n }\n\n // Check intended pubkey\n if (meta.int !== actionCode.pubkey) {\n throw ProtocolError.metaMismatch(actionCode.pubkey, meta.int, \"int\");\n }\n }\n\n /**\n * Verify that the base64-encoded transaction is signed by the \"intendedFor\" pubkey\n * as declared in the protocol meta of the transaction.\n * Throws ProtocolError if validation fails.\n */\n verifyTransactionSignedByIntentOwner(txString: string): void {\n const meta = this.parseMeta(txString);\n if (!meta) {\n throw ProtocolError.missingMeta();\n }\n\n const intended = meta.int;\n if (!intended) {\n throw ProtocolError.invalidMetaFormat(\n \"Missing 'int' (intendedFor) field\"\n );\n }\n\n let pubkey: PublicKey;\n try {\n pubkey = new PublicKey(intended);\n } catch {\n throw ProtocolError.invalidPubkeyFormat(\n intended,\n \"Invalid public key format\"\n );\n }\n\n const tx = this.deserializeTransaction(txString);\n const actualSigners: string[] = [];\n\n // For legacy Transaction\n if (tx instanceof Transaction) {\n const isSigned = tx.signatures.some((sig) => {\n if (!sig.signature) return false;\n actualSigners.push(sig.publicKey.toString());\n return sig.publicKey.equals(pubkey);\n });\n\n if (!isSigned) {\n throw ProtocolError.transactionNotSignedByIntendedOwner(\n intended,\n actualSigners\n );\n }\n return;\n }\n\n // For VersionedTransaction (MessageV0)\n if (tx instanceof VersionedTransaction) {\n const msg = tx.message;\n if (msg instanceof MessageV0) {\n const signerCount = msg.header.numRequiredSignatures;\n for (let i = 0; i < signerCount; i++) {\n const key = msg.staticAccountKeys[i];\n if (key) {\n actualSigners.push(key.toString());\n if (key.equals(pubkey)) {\n return; // Found the intended signer\n }\n }\n }\n throw ProtocolError.transactionNotSignedByIntendedOwner(\n intended,\n actualSigners\n );\n }\n }\n\n throw ProtocolError.invalidTransactionFormat(\n \"Unsupported transaction format\"\n );\n }\n\n /**\n * Attach protocol meta into a base64-encoded transaction and return the modified transaction as base64.\n * Throws ProtocolError if the transaction already contains protocol meta.\n */\n static attachProtocolMeta(\n txString: string,\n meta: ProtocolMetaFields\n ): string {\n // Check if transaction already has protocol meta\n const adapter = new SolanaAdapter();\n const existingMeta = adapter.getProtocolMeta(txString);\n if (existingMeta) {\n throw ProtocolError.invalidTransactionFormat(\n \"Transaction already contains protocol meta. Cannot attach additional protocol meta.\"\n );\n }\n\n const metaIx = SolanaAdapter.createProtocolMetaIx(meta);\n\n try {\n // Try to deserialize as versioned first\n const versionedTx = VersionedTransaction.deserialize(\n Buffer.from(txString, \"base64\")\n );\n\n // Check if this is actually a versioned transaction by checking if it has a MessageV0\n if (versionedTx.message instanceof MessageV0) {\n const msg = versionedTx.message;\n\n // Extend static account keys with programId if missing\n const newStaticKeys = [...msg.staticAccountKeys];\n if (!newStaticKeys.some((k) => k.equals(MEMO_PROGRAM_ID))) {\n newStaticKeys.push(MEMO_PROGRAM_ID);\n }\n\n // Program ID index\n const programIdIndex = newStaticKeys.findIndex((k) =>\n k.equals(MEMO_PROGRAM_ID)\n );\n\n // Memo instruction as compiled instruction\n const compiledIx = {\n programIdIndex,\n accountKeyIndexes: [],\n data: metaIx.data,\n };\n\n const newMsg = new MessageV0({\n header: msg.header,\n staticAccountKeys: newStaticKeys,\n recentBlockhash: msg.recentBlockhash,\n compiledInstructions: [...msg.compiledInstructions, compiledIx],\n addressTableLookups: msg.addressTableLookups,\n });\n\n // Re-wrap in VersionedTransaction\n const newTx = new VersionedTransaction(newMsg);\n // Preserve existing signatures if any\n newTx.signatures = versionedTx.signatures;\n\n return Buffer.from(newTx.serialize()).toString(\"base64\");\n } else {\n // This is likely a legacy transaction that was incorrectly deserialized as versioned\n // Fall back to legacy deserialization\n const legacyTx = Transaction.from(Buffer.from(txString, \"base64\"));\n\n // Legacy tx: just push memo instruction\n legacyTx.add(metaIx);\n\n return Buffer.from(\n legacyTx.serialize({ requireAllSignatures: false })\n ).toString(\"base64\");\n }\n } catch {\n try {\n // Fallback to legacy transaction\n const legacyTx = Transaction.from(Buffer.from(txString, \"base64\"));\n\n // Legacy tx: just push memo instruction\n legacyTx.add(metaIx);\n\n return Buffer.from(\n legacyTx.serialize({ requireAllSignatures: false })\n ).toString(\"base64\");\n } catch {\n throw ProtocolError.invalidTransactionFormat(\n \"Invalid base64 transaction format\"\n );\n }\n }\n }\n}\n",
20
- "import type {\n ActionCode,\n CodeGenerationConfig,\n DelegationProof,\n DelegatedActionCode,\n} from \"./types\";\nimport type {\n ChainAdapter,\n WalletContext,\n DelegatedContext,\n} from \"./adapters/BaseChainAdapter\";\nimport { WalletStrategy } from \"./strategy/WalletStrategy\";\nimport { DelegationStrategy } from \"./strategy/DelegationStrategy\";\nimport { SolanaAdapter } from \"./adapters/SolanaAdapter\";\nimport { ProtocolError } from \"./errors\";\n\nexport class ActionCodesProtocol {\n private adapters: Record<string, ChainAdapter> = {};\n private _walletStrategy: WalletStrategy;\n private _delegationStrategy: DelegationStrategy;\n\n constructor(private readonly config: CodeGenerationConfig) {\n // Register default adapters\n this.adapters.solana = new SolanaAdapter() as unknown as ChainAdapter;\n\n // Initialize strategies\n this._walletStrategy = new WalletStrategy(config);\n this._delegationStrategy = new DelegationStrategy(config);\n }\n\n public getConfig(): CodeGenerationConfig {\n return this.config;\n }\n\n /** Register a chain adapter */\n registerAdapter(chain: string, adapter: ChainAdapter): void {\n this.adapters[chain] = adapter;\n }\n\n /** Get a registered adapter */\n getAdapter(chain: string): ChainAdapter | undefined {\n return this.adapters[chain];\n }\n\n /** Typed access to specific adapters */\n get adapter() {\n return {\n solana: this.adapters.solana as unknown as SolanaAdapter,\n };\n }\n\n /** Access to strategies */\n get walletStrategy() {\n return this._walletStrategy;\n }\n\n get delegationStrategy() {\n return this._delegationStrategy;\n }\n\n // Generate code\n generateCode(\n strategy: \"wallet\",\n canonicalMessage: Uint8Array,\n signature: string\n ): {\n actionCode: ActionCode;\n canonicalMessage: Uint8Array;\n };\n generateCode(\n strategy: \"delegation\",\n delegationProof: DelegationProof,\n signature: string\n ): {\n actionCode: DelegatedActionCode;\n };\n generateCode(\n strategy: \"wallet\" | \"delegation\",\n param1: Uint8Array | DelegationProof,\n signature?: string\n ): {\n actionCode: ActionCode | DelegatedActionCode;\n canonicalMessage?: Uint8Array;\n } {\n if (strategy === \"wallet\") {\n // Here param1 must be Uint8Array (canonical message)\n if (!signature) {\n throw ProtocolError.invalidSignature(\n \"Missing signature over canonical message\"\n );\n }\n return this.walletStrategy.generateCode(param1 as Uint8Array, signature);\n } else {\n // Here param1 must be DelegationProof\n if (!signature) {\n throw ProtocolError.invalidSignature(\"Missing delegated signature\");\n }\n return this.delegationStrategy.generateDelegatedCode(\n param1 as DelegationProof,\n signature\n );\n }\n }\n\n // Overloaded validateCode methods with strategy parameter\n validateCode(\n strategy: \"wallet\",\n actionCode: ActionCode,\n context?: WalletContext<unknown>\n ): void;\n validateCode(\n strategy: \"delegation\",\n actionCode: DelegatedActionCode,\n context?: DelegatedContext<unknown>\n ): void;\n validateCode(\n strategy: \"wallet\" | \"delegation\",\n actionCode: ActionCode | DelegatedActionCode,\n param2?: WalletContext<unknown> | DelegatedContext<unknown>\n ): void {\n if (strategy === \"wallet\") {\n // This will throw if validation fails\n this.walletStrategy.validateCode(actionCode as ActionCode);\n\n if (!param2) return;\n\n const context = param2 as Omit<WalletContext<unknown>, \"message\">;\n const adapter = this.getAdapter(context.chain);\n if (!adapter) throw ProtocolError.invalidAdapter(context.chain);\n\n const ok = adapter.verifyWithWallet({\n ...(context as Record<string, unknown>),\n message: {\n pubkey: (actionCode as ActionCode).pubkey,\n windowStart: (actionCode as ActionCode).timestamp,\n },\n } as unknown as WalletContext<unknown>);\n\n if (!ok) {\n throw ProtocolError.invalidSignature(\n \"Wallet signature verification failed\"\n );\n }\n } else {\n const context = param2 as Omit<DelegatedContext<unknown>, \"message\">;\n\n // CRITICAL: First validate the delegated action code\n // This ensures the code was actually generated from this delegation proof\n this.delegationStrategy.validateDelegatedCode(\n actionCode as DelegatedActionCode,\n context.delegationProof\n );\n\n // Then verify the delegation proof signature\n const adapter = this.getAdapter(context.chain);\n if (!adapter) throw ProtocolError.invalidAdapter(context.chain);\n\n const ok = adapter.verifyWithDelegation({\n ...(context as Record<string, unknown>),\n message: {\n pubkey: (actionCode as ActionCode).pubkey,\n windowStart: (actionCode as ActionCode).timestamp,\n },\n } as unknown as DelegatedContext<unknown>);\n\n if (!ok) {\n throw ProtocolError.invalidSignature(\n \"Delegation signature verification failed\"\n );\n }\n }\n }\n}\n"
20
+ "import type {\n ActionCode,\n CodeGenerationConfig,\n DelegationProof,\n DelegatedActionCode,\n} from \"./types\";\nimport type {\n ChainAdapter,\n WalletContext,\n DelegatedContext,\n} from \"./adapters/BaseChainAdapter\";\nimport { WalletStrategy } from \"./strategy/WalletStrategy\";\nimport { DelegationStrategy } from \"./strategy/DelegationStrategy\";\nimport { SolanaAdapter } from \"./adapters/SolanaAdapter\";\nimport { ProtocolError } from \"./errors\";\n\nexport class ActionCodesProtocol {\n private adapters: Record<string, ChainAdapter> = {};\n private _walletStrategy: WalletStrategy;\n private _delegationStrategy: DelegationStrategy;\n\n constructor(private readonly config: CodeGenerationConfig) {\n // Register default adapters\n this.adapters.solana = new SolanaAdapter() as unknown as ChainAdapter;\n\n // Initialize strategies\n this._walletStrategy = new WalletStrategy(config);\n this._delegationStrategy = new DelegationStrategy(config);\n }\n\n public getConfig(): CodeGenerationConfig {\n return this.config;\n }\n\n /** Register a chain adapter */\n registerAdapter(chain: string, adapter: ChainAdapter): void {\n this.adapters[chain] = adapter;\n }\n\n /** Get a registered adapter */\n getAdapter(chain: string): ChainAdapter | undefined {\n return this.adapters[chain];\n }\n\n /** Typed access to specific adapters */\n get adapter() {\n return {\n solana: this.adapters.solana as unknown as SolanaAdapter,\n };\n }\n\n /** Access to strategies */\n get walletStrategy() {\n return this._walletStrategy;\n }\n\n get delegationStrategy() {\n return this._delegationStrategy;\n }\n\n // Generate code\n generateCode(\n strategy: \"wallet\",\n canonicalMessage: Uint8Array,\n signature: string\n ): {\n actionCode: ActionCode;\n canonicalMessage: Uint8Array;\n };\n generateCode(\n strategy: \"delegation\",\n delegationProof: DelegationProof,\n signature: string\n ): {\n actionCode: DelegatedActionCode;\n };\n generateCode(\n strategy: \"wallet\" | \"delegation\",\n param1: Uint8Array | DelegationProof,\n signature?: string\n ): {\n actionCode: ActionCode | DelegatedActionCode;\n canonicalMessage?: Uint8Array;\n } {\n if (strategy === \"wallet\") {\n // Here param1 must be Uint8Array (canonical message)\n if (!signature) {\n throw ProtocolError.invalidSignature(\n \"Missing signature over canonical message\"\n );\n }\n return this.walletStrategy.generateCode(param1 as Uint8Array, signature);\n } else {\n // Here param1 must be DelegationProof\n if (!signature) {\n throw ProtocolError.invalidSignature(\"Missing delegated signature\");\n }\n return this.delegationStrategy.generateDelegatedCode(\n param1 as DelegationProof,\n signature\n );\n }\n }\n\n // Overloaded validateCode methods with strategy parameter\n validateCode(\n strategy: \"wallet\",\n actionCode: ActionCode,\n context?: WalletContext<unknown>\n ): void;\n validateCode(\n strategy: \"delegation\",\n actionCode: DelegatedActionCode,\n context?: DelegatedContext<unknown>\n ): void;\n validateCode(\n strategy: \"wallet\" | \"delegation\",\n actionCode: ActionCode | DelegatedActionCode,\n param2?: WalletContext<unknown> | DelegatedContext<unknown>\n ): void {\n if (strategy === \"wallet\") {\n // This will throw if validation fails\n this.walletStrategy.validateCode(actionCode as ActionCode);\n\n if (!param2) return;\n\n const context = param2 as Omit<WalletContext<unknown>, \"message\">;\n const adapter = this.getAdapter(context.chain);\n if (!adapter) throw ProtocolError.invalidAdapter(context.chain);\n\n const ok = adapter.verifyWithWallet({\n ...(context as Record<string, unknown>),\n message: {\n pubkey: (actionCode as ActionCode).pubkey,\n windowStart: (actionCode as ActionCode).timestamp,\n },\n } as unknown as WalletContext<unknown>);\n\n if (!ok) {\n throw ProtocolError.invalidSignature(\n \"Wallet signature verification failed\"\n );\n }\n } else {\n const context = param2 as Omit<DelegatedContext<unknown>, \"message\">;\n\n // CRITICAL: First validate the delegated action code\n // This ensures the code was actually generated from this delegation proof\n this.delegationStrategy.validateDelegatedCode(\n actionCode as DelegatedActionCode,\n context.delegationProof\n );\n\n // Then verify the delegation proof signature\n const adapter = this.getAdapter(context.chain);\n if (!adapter) throw ProtocolError.invalidAdapter(context.chain);\n\n const ok = adapter.verifyWithDelegation({\n ...(context as Record<string, unknown>),\n message: {\n pubkey: context.delegationProof.delegatedPubkey,\n windowStart: (actionCode as ActionCode).timestamp,\n },\n } as unknown as DelegatedContext<unknown>);\n\n if (!ok) {\n throw ProtocolError.invalidSignature(\n \"Delegation signature verification failed\"\n );\n }\n }\n }\n}\n"
21
21
  ],
22
- "mappings": "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",
23
- "debugId": "07E36190E16FB78B64756E2164756E21",
22
+ "mappings": "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",
23
+ "debugId": "735D358405976EF364756E2164756E21",
24
24
  "names": []
25
25
  }
@@ -1 +1 @@
1
- {"version":3,"file":"DelegationStrategy.d.ts","sourceRoot":"","sources":["../../src/strategy/DelegationStrategy.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EACV,eAAe,EACf,mBAAmB,EACnB,oBAAoB,EACpB,sCAAsC,EACvC,MAAM,UAAU,CAAC;AAElB,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,MAAM,CAAuB;gBAEzB,MAAM,EAAE,oBAAoB;IAKxC;;OAEG;IACH,qBAAqB,CACnB,eAAe,EAAE,eAAe,EAChC,SAAS,EAAE,MAAM,GAChB,sCAAsC;IA4BzC;;OAEG;IACH,qBAAqB,CACnB,UAAU,EAAE,mBAAmB,EAC/B,eAAe,EAAE,eAAe,GAC/B,IAAI;IAyFP;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAqI/B;;OAEG;IACH,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU;CAGrD"}
1
+ {"version":3,"file":"DelegationStrategy.d.ts","sourceRoot":"","sources":["../../src/strategy/DelegationStrategy.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EACV,eAAe,EACf,mBAAmB,EACnB,oBAAoB,EACpB,sCAAsC,EACvC,MAAM,UAAU,CAAC;AAElB,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,MAAM,CAAuB;gBAEzB,MAAM,EAAE,oBAAoB;IAKxC;;OAEG;IACH,qBAAqB,CACnB,eAAe,EAAE,eAAe,EAChC,SAAS,EAAE,MAAM,GAChB,sCAAsC;IAyBzC;;OAEG;IACH,qBAAqB,CACnB,UAAU,EAAE,mBAAmB,EAC/B,eAAe,EAAE,eAAe,GAC/B,IAAI;IA0FP;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAqI/B;;OAEG;IACH,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU;CAGrD"}
@@ -4,6 +4,6 @@ export declare const CANONICAL_MESSAGE_PREFIX = "actioncodes";
4
4
  export declare const CANONICAL_REVOKE_MESSAGE_PREFIX = "actioncodes-revoke";
5
5
  export declare function serializeCanonical(parts: CanonicalMessageParts): Uint8Array;
6
6
  export declare function serializeCanonicalRevoke(parts: CanonicalRevokeMessageParts): Uint8Array;
7
- export declare function getCanonicalMessageParts(pubkey: string, ttlMs: number): Uint8Array;
8
- export declare function serializeDelegationProof(proof: Omit<DelegationProof, 'signature'>): Uint8Array;
7
+ export declare function getCanonicalMessageParts(pubkey: string): Uint8Array;
8
+ export declare function serializeDelegationProof(proof: Omit<DelegationProof, "signature">): Uint8Array;
9
9
  //# sourceMappingURL=canonical.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"canonical.d.ts","sourceRoot":"","sources":["../../src/utils/canonical.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,qBAAqB,EACrB,2BAA2B,EAC3B,eAAe,EAChB,MAAM,UAAU,CAAC;AAElB,eAAO,MAAM,yBAAyB,IAAI,CAAC;AAC3C,eAAO,MAAM,wBAAwB,gBAAgB,CAAC;AACtD,eAAO,MAAM,+BAA+B,uBAAuB,CAAC;AAEpE,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,qBAAqB,GAAG,UAAU,CAQ3E;AAED,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,2BAA2B,GACjC,UAAU,CASZ;AAED,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,GACZ,UAAU,CAGZ;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,IAAI,CAAC,eAAe,EAAE,WAAW,CAAC,GAAG,UAAU,CAQ9F"}
1
+ {"version":3,"file":"canonical.d.ts","sourceRoot":"","sources":["../../src/utils/canonical.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,qBAAqB,EACrB,2BAA2B,EAC3B,eAAe,EAChB,MAAM,UAAU,CAAC;AAElB,eAAO,MAAM,yBAAyB,IAAI,CAAC;AAC3C,eAAO,MAAM,wBAAwB,gBAAgB,CAAC;AACtD,eAAO,MAAM,+BAA+B,uBAAuB,CAAC;AAEpE,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,qBAAqB,GAAG,UAAU,CAQ3E;AAED,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,2BAA2B,GACjC,UAAU,CASZ;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAEnE;AAED,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,IAAI,CAAC,eAAe,EAAE,WAAW,CAAC,GACxC,UAAU,CAQZ"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@actioncodes/protocol",
3
- "version": "2.0.16",
3
+ "version": "2.0.18",
4
4
  "module": "index.ts",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",