@actioncodes/protocol 2.0.6 → 2.0.7

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.
@@ -1,4 +1,4 @@
1
- import type { CanonicalMessageParts, DelegationCertificate } from "../types";
1
+ import type { CanonicalMessageParts, CanonicalRevokeMessageParts, DelegationCertificate } from "../types";
2
2
  export interface BaseWalletStrategyContext {
3
3
  chain: string;
4
4
  canonicalMessageParts: CanonicalMessageParts;
@@ -9,14 +9,21 @@ export interface BaseDelegationContext {
9
9
  signature: string;
10
10
  certificate: DelegationCertificate;
11
11
  }
12
+ export interface BaseWalletStrategyRevokeContext {
13
+ chain: string;
14
+ canonicalRevokeMessageParts: CanonicalRevokeMessageParts;
15
+ }
12
16
  export type ChainWalletStrategyContext<T> = BaseWalletStrategyContext & T;
17
+ export type ChainWalletStrategyRevokeContext<T> = BaseWalletStrategyRevokeContext & T;
13
18
  export type ChainDelegationStrategyContext<T> = BaseDelegationContext & T;
14
- export interface ChainAdapter<TCtx = unknown, DCtx = unknown> {
19
+ export interface ChainAdapter<TCtx = unknown, DCtx = unknown, RCtx = unknown> {
15
20
  verifyWithWallet(context: ChainWalletStrategyContext<TCtx>): boolean;
16
21
  verifyWithDelegation(context: ChainDelegationStrategyContext<DCtx>): boolean;
22
+ verifyRevokeWithWallet(context: ChainWalletStrategyRevokeContext<RCtx>): boolean;
17
23
  }
18
- export declare abstract class BaseChainAdapter<TCtx, DCtx> implements ChainAdapter<TCtx, DCtx> {
24
+ export declare abstract class BaseChainAdapter<TCtx, DCtx, RCtx> implements ChainAdapter<TCtx, DCtx, RCtx> {
19
25
  abstract verifyWithWallet(context: ChainWalletStrategyContext<TCtx>): boolean;
20
26
  abstract verifyWithDelegation(context: ChainDelegationStrategyContext<DCtx>): boolean;
27
+ abstract verifyRevokeWithWallet(context: ChainWalletStrategyRevokeContext<RCtx>): boolean;
21
28
  }
22
29
  //# sourceMappingURL=BaseChainAdapter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"BaseChainAdapter.d.ts","sourceRoot":"","sources":["../../src/adapters/BaseChainAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAG7E,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,MAAM,CAAC;IAEd,qBAAqB,EAAE,qBAAqB,CAAC;CAC9C;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,qBAAqB,CAAC;CACpC;AAED,MAAM,MAAM,0BAA0B,CAAC,CAAC,IAAI,yBAAyB,GAAG,CAAC,CAAC;AAC1E,MAAM,MAAM,8BAA8B,CAAC,CAAC,IAAI,qBAAqB,GAAG,CAAC,CAAC;AAC1E,MAAM,WAAW,YAAY,CAAC,IAAI,GAAG,OAAO,EAAE,IAAI,GAAG,OAAO;IAC1D,gBAAgB,CAAC,OAAO,EAAE,0BAA0B,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;IACrE,oBAAoB,CAAC,OAAO,EAAE,8BAA8B,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;CAC9E;AAED,8BAAsB,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAE,YAAW,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC;IACpF,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,0BAA0B,CAAC,IAAI,CAAC,GAAG,OAAO;IAC7E,QAAQ,CAAC,oBAAoB,CAAC,OAAO,EAAE,8BAA8B,CAAC,IAAI,CAAC,GAAG,OAAO;CACtF"}
1
+ {"version":3,"file":"BaseChainAdapter.d.ts","sourceRoot":"","sources":["../../src/adapters/BaseChainAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,2BAA2B,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAG1G,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,MAAM,CAAC;IAEd,qBAAqB,EAAE,qBAAqB,CAAC;CAC9C;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,qBAAqB,CAAC;CACpC;AAED,MAAM,WAAW,+BAA+B;IAC9C,KAAK,EAAE,MAAM,CAAC;IAEd,2BAA2B,EAAE,2BAA2B,CAAC;CAC1D;AAED,MAAM,MAAM,0BAA0B,CAAC,CAAC,IAAI,yBAAyB,GAAG,CAAC,CAAC;AAC1E,MAAM,MAAM,gCAAgC,CAAC,CAAC,IAAI,+BAA+B,GAAG,CAAC,CAAC;AACtF,MAAM,MAAM,8BAA8B,CAAC,CAAC,IAAI,qBAAqB,GAAG,CAAC,CAAC;AAC1E,MAAM,WAAW,YAAY,CAAC,IAAI,GAAG,OAAO,EAAE,IAAI,GAAG,OAAO,EAAE,IAAI,GAAG,OAAO;IAC1E,gBAAgB,CAAC,OAAO,EAAE,0BAA0B,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;IACrE,oBAAoB,CAAC,OAAO,EAAE,8BAA8B,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;IAC7E,sBAAsB,CAAC,OAAO,EAAE,gCAAgC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;CAClF;AAED,8BAAsB,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAE,YAAW,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;IAChG,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,0BAA0B,CAAC,IAAI,CAAC,GAAG,OAAO;IAC7E,QAAQ,CAAC,oBAAoB,CAAC,OAAO,EAAE,8BAA8B,CAAC,IAAI,CAAC,GAAG,OAAO;IACrF,QAAQ,CAAC,sBAAsB,CAAC,OAAO,EAAE,gCAAgC,CAAC,IAAI,CAAC,GAAG,OAAO;CAC1F"}
@@ -1,5 +1,5 @@
1
1
  import { PublicKey, Transaction, VersionedTransaction, TransactionInstruction } from "@solana/web3.js";
2
- import { BaseChainAdapter, type ChainWalletStrategyContext, type ChainDelegationStrategyContext } from "./BaseChainAdapter";
2
+ import { BaseChainAdapter, type ChainWalletStrategyContext, type ChainWalletStrategyRevokeContext, type ChainDelegationStrategyContext } from "./BaseChainAdapter";
3
3
  import { type ProtocolMetaFields } from "../utils/protocolMeta";
4
4
  import type { ActionCode } from "../types";
5
5
  export type SolanaContext = {
@@ -8,13 +8,15 @@ export type SolanaContext = {
8
8
  };
9
9
  /** Union of supported Solana txn types */
10
10
  export type SolanaTransaction = Transaction | VersionedTransaction;
11
- export declare class SolanaAdapter extends BaseChainAdapter<SolanaContext, SolanaContext> {
11
+ export declare class SolanaAdapter extends BaseChainAdapter<SolanaContext, SolanaContext, SolanaContext> {
12
12
  /** Normalize pubkey input to PublicKey */
13
13
  private normalizePubkey;
14
14
  /** Verify the signature over canonical message (protocol-level) */
15
15
  verifyWithWallet(context: ChainWalletStrategyContext<SolanaContext>): boolean;
16
16
  /** Verify delegation certificate signature */
17
17
  verifyWithDelegation(context: ChainDelegationStrategyContext<SolanaContext>): boolean;
18
+ /** Verify the signature over canonical revoke message (protocol-level) */
19
+ verifyRevokeWithWallet(context: ChainWalletStrategyRevokeContext<SolanaContext>): boolean;
18
20
  /** Create a Solana memo instruction carrying protocol meta (for SDK/clients) */
19
21
  static createProtocolMetaIx(meta: ProtocolMetaFields): TransactionInstruction;
20
22
  /** Extract protocol metadata string (memo) from a base64-encoded transaction, or null */
@@ -1 +1 @@
1
- {"version":3,"file":"SolanaAdapter.d.ts","sourceRoot":"","sources":["../../src/adapters/SolanaAdapter.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,SAAS,EACT,WAAW,EACX,oBAAoB,EACpB,sBAAsB,EAEvB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,gBAAgB,EAAE,KAAK,0BAA0B,EAAE,KAAK,8BAA8B,EAAE,MAAM,oBAAoB,CAAC;AAC5H,OAAO,EAGL,KAAK,kBAAkB,EACxB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAK3C,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,0CAA0C;AAC1C,MAAM,MAAM,iBAAiB,GAAG,WAAW,GAAG,oBAAoB,CAAC;AAEnE,qBAAa,aAAc,SAAQ,gBAAgB,CAAC,aAAa,EAAE,aAAa,CAAC;IAC/E,0CAA0C;IAC1C,OAAO,CAAC,eAAe;IAOvB,mEAAmE;IACnE,gBAAgB,CAAC,OAAO,EAAE,0BAA0B,CAAC,aAAa,CAAC,GAAG,OAAO;IA0B7E,8CAA8C;IAC9C,oBAAoB,CAAC,OAAO,EAAE,8BAA8B,CAAC,aAAa,CAAC,GAAG,OAAO;IAiDrF,gFAAgF;IAChF,MAAM,CAAC,oBAAoB,CACzB,IAAI,EAAE,kBAAkB,GACvB,sBAAsB;IAKzB,yFAAyF;IACzF,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAoBhD,2EAA2E;IAC3E,OAAO,CAAC,sBAAsB;IAuB9B,iGAAiG;IACjG,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI;IAMtD,uEAAuE;IACvE,OAAO,CAAC,mBAAmB;IAmC3B;;;OAGG;IACH,4BAA4B,CAC1B,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,MAAM,GACf,IAAI;IAiCP;;;;OAIG;IACH,oCAAoC,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAqE5D;;;OAGG;IACH,MAAM,CAAC,kBAAkB,CACvB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,kBAAkB,GACvB,MAAM;CA4EV"}
1
+ {"version":3,"file":"SolanaAdapter.d.ts","sourceRoot":"","sources":["../../src/adapters/SolanaAdapter.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,SAAS,EACT,WAAW,EACX,oBAAoB,EACpB,sBAAsB,EAEvB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,gBAAgB,EAChB,KAAK,0BAA0B,EAC/B,KAAK,gCAAgC,EACrC,KAAK,8BAA8B,EACpC,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAGL,KAAK,kBAAkB,EACxB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAQ3C,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,0CAA0C;AAC1C,MAAM,MAAM,iBAAiB,GAAG,WAAW,GAAG,oBAAoB,CAAC;AAEnE,qBAAa,aAAc,SAAQ,gBAAgB,CACjD,aAAa,EACb,aAAa,EACb,aAAa,CACd;IACC,0CAA0C;IAC1C,OAAO,CAAC,eAAe;IAOvB,mEAAmE;IACnE,gBAAgB,CACd,OAAO,EAAE,0BAA0B,CAAC,aAAa,CAAC,GACjD,OAAO;IA0BV,8CAA8C;IAC9C,oBAAoB,CAClB,OAAO,EAAE,8BAA8B,CAAC,aAAa,CAAC,GACrD,OAAO;IAkDV,0EAA0E;IAC1E,sBAAsB,CACpB,OAAO,EAAE,gCAAgC,CAAC,aAAa,CAAC,GACvD,OAAO;IAgCV,gFAAgF;IAChF,MAAM,CAAC,oBAAoB,CACzB,IAAI,EAAE,kBAAkB,GACvB,sBAAsB;IAKzB,yFAAyF;IACzF,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAoBhD,2EAA2E;IAC3E,OAAO,CAAC,sBAAsB;IA2B9B,iGAAiG;IACjG,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI;IAMtD,uEAAuE;IACvE,OAAO,CAAC,mBAAmB;IAmC3B;;;OAGG;IACH,4BAA4B,CAAC,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAiC5E;;;;OAIG;IACH,oCAAoC,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAqE5D;;;OAGG;IACH,MAAM,CAAC,kBAAkB,CACvB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,kBAAkB,GACvB,MAAM;CAoFV"}
package/dist/index.cjs CHANGED
@@ -1,3 +1,3 @@
1
- var F0=Object.create;var{getPrototypeOf:P0,defineProperty:a,getOwnPropertyNames:l8,getOwnPropertyDescriptor:v0}=Object,c8=Object.prototype.hasOwnProperty;var k8=(Q,$,q)=>{q=Q!=null?F0(P0(Q)):{};let Z=$||!Q||!Q.__esModule?a(q,"default",{value:Q,enumerable:!0}):q;for(let X of l8(Q))if(!c8.call(Z,X))a(Z,X,{get:()=>Q[X],enumerable:!0});return Z},h8=new WeakMap,D0=(Q)=>{var $=h8.get(Q),q;if($)return $;if($=a({},"__esModule",{value:!0}),Q&&typeof Q==="object"||typeof Q==="function")l8(Q).map((Z)=>!c8.call($,Z)&&a($,Z,{get:()=>Q[Z],enumerable:!(q=v0(Q,Z))||q.enumerable}));return h8.set(Q,$),$};var W0=(Q,$)=>{for(var q in $)a(Q,q,{get:$[q],enumerable:!0,configurable:!0,set:(Z)=>$[q]=()=>Z})};var d0={};W0(d0,{validateProtocolMetaFormat:()=>u0,truncateBits:()=>K8,sha256:()=>d,serializeCanonical:()=>m,parseProtocolMeta:()=>Z8,hmacSha256:()=>n,hkdfSha256:()=>y0,generateRandomSecret:()=>p0,generateNonce:()=>B8,digestToDigits:()=>R8,codeHash:()=>b8,buildProtocolMeta:()=>D8,base32EncodeCrockford:()=>f0,WalletStrategy:()=>o,TransactionNotSignedByIntendedOwnerError:()=>f8,SolanaAdapter:()=>r,SUPPORTED_CHAINS:()=>g0,SCHEME:()=>P8,ProtocolErrorCode:()=>R0,ProtocolError:()=>j,PROTOCOL_NORMALIZATION:()=>G8,PROTOCOL_META_MAX_BYTES:()=>s,MissingMetaError:()=>m8,MetaMismatchError:()=>y8,InvalidSignatureError:()=>H8,InvalidPubkeyFormatError:()=>p8,InvalidCodeFormatError:()=>_8,InvalidAdapterError:()=>A8,ExpiredCodeError:()=>C8,DelegationStrategy:()=>I,CODE_MIN_LENGTH:()=>O8,CODE_MAX_LENGTH:()=>F8,CODE_DEFAULT_LENGTH:()=>A0,CODE_CHARSET_DIGITS:()=>S0,CANONICAL_MESSAGE_VERSION:()=>H0,CANONICAL_MESSAGE_PREFIX:()=>_0,BaseChainAdapter:()=>e,ActionCodesProtocol:()=>G0});module.exports=D0(d0);class e{}/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */function w0(Q){return Q instanceof Uint8Array||ArrayBuffer.isView(Q)&&Q.constructor.name==="Uint8Array"}function Y8(Q,$=""){if(!Number.isSafeInteger(Q)||Q<0){let q=$&&`"${$}" `;throw Error(`${q}expected integer >= 0, got ${Q}`)}}function p(Q,$,q=""){let Z=w0(Q),X=Q?.length,J=$!==void 0;if(!Z||J&&X!==$){let Y=q&&`"${q}" `,N=J?` of length ${$}`:"",U=Z?`length=${X}`:`type=${typeof Q}`;throw Error(Y+"expected Uint8Array"+N+", got "+U)}return Q}function t(Q){if(typeof Q!=="function"||typeof Q.create!=="function")throw Error("Hash must wrapped by utils.createHasher");Y8(Q.outputLen),Y8(Q.blockLen)}function h(Q,$=!0){if(Q.destroyed)throw Error("Hash instance has been destroyed");if($&&Q.finished)throw Error("Hash#digest() has already been called")}function n8(Q,$){p(Q,void 0,"digestInto() output");let q=$.outputLen;if(Q.length<q)throw Error('"digestInto() output" expected to be of length >='+q)}function V(...Q){for(let $=0;$<Q.length;$++)Q[$].fill(0)}function N8(Q){return new DataView(Q.buffer,Q.byteOffset,Q.byteLength)}function T(Q,$){return Q<<32-$|Q>>>$}function s8(Q,$={}){let q=(X,J)=>Q(J).update(X).digest(),Z=Q(void 0);return q.outputLen=Z.outputLen,q.blockLen=Z.blockLen,q.create=(X)=>Q(X),Object.assign(q,$),Object.freeze(q)}var o8=(Q)=>({oid:Uint8Array.from([6,9,96,134,72,1,101,3,4,2,Q])});function r8(Q,$,q){return Q&$^~Q&q}function i8(Q,$,q){return Q&$^Q&q^$&q}class z8{blockLen;outputLen;padOffset;isLE;buffer;view;finished=!1;length=0;pos=0;destroyed=!1;constructor(Q,$,q,Z){this.blockLen=Q,this.outputLen=$,this.padOffset=q,this.isLE=Z,this.buffer=new Uint8Array(Q),this.view=N8(this.buffer)}update(Q){h(this),p(Q);let{view:$,buffer:q,blockLen:Z}=this,X=Q.length;for(let J=0;J<X;){let Y=Math.min(Z-this.pos,X-J);if(Y===Z){let N=N8(Q);for(;Z<=X-J;J+=Z)this.process(N,J);continue}if(q.set(Q.subarray(J,J+Y),this.pos),this.pos+=Y,J+=Y,this.pos===Z)this.process($,0),this.pos=0}return this.length+=Q.length,this.roundClean(),this}digestInto(Q){h(this),n8(Q,this),this.finished=!0;let{buffer:$,view:q,blockLen:Z,isLE:X}=this,{pos:J}=this;if($[J++]=128,V(this.buffer.subarray(J)),this.padOffset>Z-J)this.process(q,0),J=0;for(let z=J;z<Z;z++)$[z]=0;q.setBigUint64(Z-8,BigInt(this.length*8),X),this.process(q,0);let Y=N8(Q),N=this.outputLen;if(N%4)throw Error("_sha2: outputLen must be aligned to 32bit");let U=N/4,K=this.get();if(U>K.length)throw Error("_sha2: outputLen bigger than state");for(let z=0;z<U;z++)Y.setUint32(4*z,K[z],X)}digest(){let{buffer:Q,outputLen:$}=this;this.digestInto(Q);let q=Q.slice(0,$);return this.destroy(),q}_cloneInto(Q){Q||=new this.constructor,Q.set(...this.get());let{blockLen:$,buffer:q,length:Z,finished:X,destroyed:J,pos:Y}=this;if(Q.destroyed=J,Q.finished=X,Q.length=Z,Q.pos=Y,Z%$)Q.buffer.set(q);return Q}clone(){return this._cloneInto()}}var B=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),C=Uint32Array.from([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428]),W=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 U8=BigInt(4294967295),a8=BigInt(32);function L0(Q,$=!1){if($)return{h:Number(Q&U8),l:Number(Q>>a8&U8)};return{h:Number(Q>>a8&U8)|0,l:Number(Q&U8)|0}}function e8(Q,$=!1){let q=Q.length,Z=new Uint32Array(q),X=new Uint32Array(q);for(let J=0;J<q;J++){let{h:Y,l:N}=L0(Q[J],$);[Z[J],X[J]]=[Y,N]}return[Z,X]}var V8=(Q,$,q)=>Q>>>q,T8=(Q,$,q)=>Q<<32-q|$>>>q,g=(Q,$,q)=>Q>>>q|$<<32-q,u=(Q,$,q)=>Q<<32-q|$>>>q,Q8=(Q,$,q)=>Q<<64-q|$>>>q-32,$8=(Q,$,q)=>Q>>>q-32|$<<64-q;function E(Q,$,q,Z){let X=($>>>0)+(Z>>>0);return{h:Q+q+(X/4294967296|0)|0,l:X|0}}var t8=(Q,$,q)=>(Q>>>0)+($>>>0)+(q>>>0),Q0=(Q,$,q,Z)=>$+q+Z+(Q/4294967296|0)|0,$0=(Q,$,q,Z)=>(Q>>>0)+($>>>0)+(q>>>0)+(Z>>>0),q0=(Q,$,q,Z,X)=>$+q+Z+X+(Q/4294967296|0)|0,Z0=(Q,$,q,Z,X)=>(Q>>>0)+($>>>0)+(q>>>0)+(Z>>>0)+(X>>>0),X0=(Q,$,q,Z,X,J)=>$+q+Z+X+J+(Q/4294967296|0)|0;var k0=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]),H=new Uint32Array(64);class I8 extends z8{constructor(Q){super(64,Q,8,!1)}get(){let{A:Q,B:$,C:q,D:Z,E:X,F:J,G:Y,H:N}=this;return[Q,$,q,Z,X,J,Y,N]}set(Q,$,q,Z,X,J,Y,N){this.A=Q|0,this.B=$|0,this.C=q|0,this.D=Z|0,this.E=X|0,this.F=J|0,this.G=Y|0,this.H=N|0}process(Q,$){for(let z=0;z<16;z++,$+=4)H[z]=Q.getUint32($,!1);for(let z=16;z<64;z++){let R=H[z-15],G=H[z-2],D=T(R,7)^T(R,18)^R>>>3,v=T(G,17)^T(G,19)^G>>>10;H[z]=v+H[z-7]+D+H[z-16]|0}let{A:q,B:Z,C:X,D:J,E:Y,F:N,G:U,H:K}=this;for(let z=0;z<64;z++){let R=T(Y,6)^T(Y,11)^T(Y,25),G=K+R+r8(Y,N,U)+k0[z]+H[z]|0,v=(T(q,2)^T(q,13)^T(q,22))+i8(q,Z,X)|0;K=U,U=N,N=Y,Y=J+G|0,J=X,X=Z,Z=q,q=G+v|0}q=q+this.A|0,Z=Z+this.B|0,X=X+this.C|0,J=J+this.D|0,Y=Y+this.E|0,N=N+this.F|0,U=U+this.G|0,K=K+this.H|0,this.set(q,Z,X,J,Y,N,U,K)}roundClean(){V(H)}destroy(){this.set(0,0,0,0,0,0,0,0),V(this.buffer)}}class J0 extends I8{A=B[0]|0;B=B[1]|0;C=B[2]|0;D=B[3]|0;E=B[4]|0;F=B[5]|0;G=B[6]|0;H=B[7]|0;constructor(){super(32)}}class V0 extends I8{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 Y0=(()=>e8(["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))))(),T0=(()=>Y0[0])(),I0=(()=>Y0[1])(),_=new Uint32Array(80),A=new Uint32Array(80);class q8 extends z8{constructor(Q){super(128,Q,16,!1)}get(){let{Ah:Q,Al:$,Bh:q,Bl:Z,Ch:X,Cl:J,Dh:Y,Dl:N,Eh:U,El:K,Fh:z,Fl:R,Gh:G,Gl:D,Hh:v,Hl:k}=this;return[Q,$,q,Z,X,J,Y,N,U,K,z,R,G,D,v,k]}set(Q,$,q,Z,X,J,Y,N,U,K,z,R,G,D,v,k){this.Ah=Q|0,this.Al=$|0,this.Bh=q|0,this.Bl=Z|0,this.Ch=X|0,this.Cl=J|0,this.Dh=Y|0,this.Dl=N|0,this.Eh=U|0,this.El=K|0,this.Fh=z|0,this.Fl=R|0,this.Gh=G|0,this.Gl=D|0,this.Hh=v|0,this.Hl=k|0}process(Q,$){for(let O=0;O<16;O++,$+=4)_[O]=Q.getUint32($),A[O]=Q.getUint32($+=4);for(let O=16;O<80;O++){let y=_[O-15]|0,f=A[O-15]|0,W8=g(y,f,1)^g(y,f,8)^V8(y,f,7),w8=u(y,f,1)^u(y,f,8)^T8(y,f,7),x=_[O-2]|0,b=A[O-2]|0,X8=g(x,b,19)^Q8(x,b,61)^V8(x,b,6),L8=u(x,b,19)^$8(x,b,61)^T8(x,b,6),J8=$0(w8,L8,A[O-7],A[O-16]),M8=q0(J8,W8,X8,_[O-7],_[O-16]);_[O]=M8|0,A[O]=J8|0}let{Ah:q,Al:Z,Bh:X,Bl:J,Ch:Y,Cl:N,Dh:U,Dl:K,Eh:z,El:R,Fh:G,Fl:D,Gh:v,Gl:k,Hh:P,Hl:i}=this;for(let O=0;O<80;O++){let y=g(z,R,14)^g(z,R,18)^Q8(z,R,41),f=u(z,R,14)^u(z,R,18)^$8(z,R,41),W8=z&G^~z&v,w8=R&D^~R&k,x=Z0(i,f,w8,I0[O],A[O]),b=X0(x,P,y,W8,T0[O],_[O]),X8=x|0,L8=g(q,Z,28)^Q8(q,Z,34)^Q8(q,Z,39),J8=u(q,Z,28)^$8(q,Z,34)^$8(q,Z,39),M8=q&X^q&Y^X&Y,O0=Z&J^Z&N^J&N;P=v|0,i=k|0,v=G|0,k=D|0,G=z|0,D=R|0,{h:z,l:R}=E(U|0,K|0,b|0,X8|0),U=Y|0,K=N|0,Y=X|0,N=J|0,X=q|0,J=Z|0;let d8=t8(X8,J8,O0);q=Q0(d8,b,L8,M8),Z=d8|0}({h:q,l:Z}=E(this.Ah|0,this.Al|0,q|0,Z|0)),{h:X,l:J}=E(this.Bh|0,this.Bl|0,X|0,J|0),{h:Y,l:N}=E(this.Ch|0,this.Cl|0,Y|0,N|0),{h:U,l:K}=E(this.Dh|0,this.Dl|0,U|0,K|0),{h:z,l:R}=E(this.Eh|0,this.El|0,z|0,R|0),{h:G,l:D}=E(this.Fh|0,this.Fl|0,G|0,D|0),{h:v,l:k}=E(this.Gh|0,this.Gl|0,v|0,k|0),{h:P,l:i}=E(this.Hh|0,this.Hl|0,P|0,i|0),this.set(q,Z,X,J,Y,N,U,K,z,R,G,D,v,k,P,i)}roundClean(){V(_,A)}destroy(){V(this.buffer),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}}class E0 extends q8{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 x0 extends q8{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(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 b0 extends q8{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 B0 extends q8{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 j8=s8(()=>new J0,o8(1));class E8{oHash;iHash;blockLen;outputLen;finished=!1;destroyed=!1;constructor(Q,$){if(t(Q),p($,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 q=this.blockLen,Z=new Uint8Array(q);Z.set($.length>q?Q.create().update($).digest():$);for(let X=0;X<Z.length;X++)Z[X]^=54;this.iHash.update(Z),this.oHash=Q.create();for(let X=0;X<Z.length;X++)Z[X]^=106;this.oHash.update(Z),V(Z)}update(Q){return h(this),this.iHash.update(Q),this}digestInto(Q){h(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:$,iHash:q,finished:Z,destroyed:X,blockLen:J,outputLen:Y}=this;return Q=Q,Q.finished=Z,Q.destroyed=X,Q.blockLen=J,Q.outputLen=Y,Q.oHash=$._cloneInto(Q.oHash),Q.iHash=q._cloneInto(Q.iHash),Q}clone(){return this._cloneInto()}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}}var l=(Q,$,q)=>new E8(Q,$).update(q).digest();l.create=(Q,$)=>new E8(Q,$);function C0(Q,$,q){if(t(Q),q===void 0)q=new Uint8Array(Q.outputLen);return l(Q,q,$)}var x8=Uint8Array.of(0),N0=Uint8Array.of();function m0(Q,$,q,Z=32){t(Q),Y8(Z,"length");let X=Q.outputLen;if(Z>255*X)throw Error("Length must be <= 255*HashLen");let J=Math.ceil(Z/X);if(q===void 0)q=N0;else p(q,void 0,"info");let Y=new Uint8Array(J*X),N=l.create(Q,$),U=N._cloneInto(),K=new Uint8Array(N.outputLen);for(let z=0;z<J;z++)x8[0]=z+1,U.update(z===0?N0:K).update(q).update(x8).digestInto(K),Y.set(K,X*z),N._cloneInto(U);return N.destroy(),U.destroy(),V(K,x8),Y.slice(0,Z)}var z0=(Q,$,q,Z,X)=>m0(Q,C0(Q,$,q),Z,X);function c(Q){if(typeof Q==="string")return new TextEncoder().encode(Q);return Q}function d(Q){return j8(c(Q))}function n(Q,$){return l(j8,c(Q),c($))}function y0(Q,$,{salt:q,info:Z}={}){let X=q?c(q):new Uint8Array(32),J=c(Q),Y=Z?c(Z):new Uint8Array(0);return z0(j8,J,X,Y,$)}var U0="0123456789ABCDEFGHJKMNPQRSTVWXYZ";function f0(Q){let $=0,q=0,Z="";for(let X=0;X<Q.length;X++){q=q<<8|Q[X],$+=8;while($>=5)Z+=U0[q>>>$-5&31],$-=5}if($>0)Z+=U0[q<<5-$&31];return Z}function K8(Q,$){let q=Math.ceil($/8),Z=new Uint8Array(q),X=Math.min(q,Q.length);Z.set(Q.subarray(0,X));let J=q*8-$;if(J>0){let Y=255<<J;Z[q-1]=Z[q-1]&Y}return Z}function R8(Q,$){if(Q.length===0)throw Error("digestToDigits: empty digest");let q="",Z=Q[Q.length-1]&15;for(let X=0;q.length<$;X++){let J=(Z+X*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");q+=U}return q.slice(0,$)}function b8(Q){let $=d(Q);return Array.from($).map((q)=>q.toString(16).padStart(2,"0")).join("")}function p0(){let Q=new Uint8Array(32);return crypto.getRandomValues(Q),btoa(String.fromCharCode(...Q))}function B8(){let Q=new Uint8Array(32);return crypto.getRandomValues(Q),btoa(String.fromCharCode(...Q))}var H0=1,_0="actioncodes";function m(Q){let $=JSON.stringify({id:"actioncodes",ver:1,pubkey:Q.pubkey,windowStart:Q.windowStart,...Q.secret&&{secret:Q.secret}});return new TextEncoder().encode($)}var G8="NFC",s=256,O8=6,F8=24,A0=8,S0="0123456789",g0=["solana"];var P8="actioncodes:";function D8(Q){let $=j0(Q);if($.int!=null)v8($.int);let q=[`ver=${$.ver}`,`id=${encodeURIComponent($.id)}`,`int=${encodeURIComponent($.int)}`];if($.p!=null&&Object.keys($.p).length>0){let X=JSON.stringify($.p);v8(X),q.push(`p=${encodeURIComponent(X)}`)}let Z=P8+q.join("&");return K0(Z),Z}function Z8(Q){if(!Q.startsWith(P8))throw Error("protocol meta must start with actioncodes:");let q=Q.slice(P8.length).split("&").filter(Boolean),Z=new Map;for(let G of q){let[D,v]=G.split("=",2);if(!D)continue;let k=v!=null?decodeURIComponent(v):"";Z.set(D,k)}let X=Z.get("ver"),J=Z.get("id"),Y=Z.get("int"),N=Z.get("p");if(X==null||J==null||Y==null)throw Error("protocol meta missing required fields ver or id or int");let U=Number(X);if(!Number.isInteger(U)||U<=0)throw Error("protocol meta ver must be positive integer");let K;if(N!=null&&N!=="")try{if(K=JSON.parse(N),typeof K!=="object"||K===null||Array.isArray(K))throw Error("protocol meta p must be a JSON object")}catch{throw Error("protocol meta p must be valid JSON")}let z=j0({ver:U,id:J,int:Y,p:K});if(z.int!=null)v8(z.int);if(z.p!=null)v8(JSON.stringify(z.p));if([...Z.keys()].filter((G)=>G!=="ver"&&G!=="id"&&G!=="int"&&G!=="p").length>0)throw Error("protocol meta contains unsupported keys");return K0(D8(z)),z}function u0(Q){try{return Z8(Q),{ok:!0}}catch($){return{ok:!1,reason:String($)}}}function j0(Q){let $=Q.id.normalize(G8).trim(),q={ver:Q.ver,id:$,int:Q.int};if(Q.int!=null)q.int=Q.int.normalize(G8).trim();if(Q.p!=null)q.p=Q.p;return q}function K0(Q){if(new TextEncoder().encode(Q).length>s)throw Error(`protocol meta exceeds ${s} bytes`)}function v8(Q){if(new TextEncoder().encode(Q).length>s)throw Error(`protocol meta params exceed ${s} bytes`)}var R0;((P)=>{P.EXPIRED_CODE="EXPIRED_CODE";P.INVALID_CODE="INVALID_CODE";P.INVALID_CODE_FORMAT="INVALID_CODE_FORMAT";P.INVALID_SIGNATURE="INVALID_SIGNATURE";P.MISSING_META="MISSING_META";P.INVALID_META_FORMAT="INVALID_META_FORMAT";P.META_MISMATCH="META_MISMATCH";P.META_TOO_LARGE="META_TOO_LARGE";P.TRANSACTION_NOT_SIGNED_BY_INTENDED_OWNER="TRANSACTION_NOT_SIGNED_BY_INTENDED_OWNER";P.INVALID_TRANSACTION_FORMAT="INVALID_TRANSACTION_FORMAT";P.INVALID_PUBKEY_FORMAT="INVALID_PUBKEY_FORMAT";P.INVALID_INPUT="INVALID_INPUT";P.MISSING_REQUIRED_FIELD="MISSING_REQUIRED_FIELD";P.CRYPTO_ERROR="CRYPTO_ERROR";P.INVALID_DIGEST="INVALID_DIGEST";P.INVALID_ADAPTER="INVALID_ADAPTER"})(R0||={});class j extends Error{code;details;constructor(Q,$,q){super($);this.code=Q;this.details=q;this.name="ProtocolError"}static expiredCode(Q,$,q){return new C8(Q,$,q)}static invalidCode(Q,$){return new j("INVALID_CODE",`Invalid code: expected '${Q}', got '${$}'`,{expected:Q,actual:$})}static invalidCodeFormat(Q,$){return new _8(Q,$)}static invalidSignature(Q){return new H8(Q)}static missingMeta(){return new m8}static invalidMetaFormat(Q){return new j("INVALID_META_FORMAT",`Invalid protocol meta format: ${Q}`,{reason:Q})}static metaMismatch(Q,$,q){return new y8(Q,$,q)}static metaTooLarge(Q,$){return new j("META_TOO_LARGE",`Protocol meta too large: ${$} bytes (max: ${Q})`,{maxBytes:Q,actualBytes:$})}static transactionNotSignedByIntendedOwner(Q,$){return new f8(Q,$)}static invalidTransactionFormat(Q){return new j("INVALID_TRANSACTION_FORMAT",`Invalid transaction format: ${Q}`,{reason:Q})}static invalidPubkeyFormat(Q,$){return new p8(Q,$)}static invalidInput(Q,$,q){return new j("INVALID_INPUT",`Invalid ${Q}: ${q}`,{field:Q,value:$,reason:q})}static missingRequiredField(Q){return new j("MISSING_REQUIRED_FIELD",`Missing required field: ${Q}`,{field:Q})}static cryptoError(Q,$){return new j("CRYPTO_ERROR",`Crypto error in ${Q}: ${$}`,{operation:Q,reason:$})}static invalidDigest(Q){return new j("INVALID_DIGEST",`Invalid digest: ${Q}`,{reason:Q})}static invalidAdapter(Q){return new A8(Q)}static create(Q,$,q){return new j(Q,$,q)}}class C8 extends j{constructor(Q,$,q){super("EXPIRED_CODE",`Action code '${Q}' expired at ${$}, current time: ${q}`,{code:Q,expiresAt:$,currentTime:q});this.name="ExpiredCodeError"}}class m8 extends j{constructor(){super("MISSING_META","Transaction does not contain valid protocol meta");this.name="MissingMetaError"}}class y8 extends j{constructor(Q,$,q){super("META_MISMATCH",`Meta ${q} mismatch: expected '${Q}', got '${$}'`,{expected:Q,actual:$,field:q});this.name="MetaMismatchError"}}class f8 extends j{constructor(Q,$){super("TRANSACTION_NOT_SIGNED_BY_INTENDED_OWNER",`Transaction not signed by intended owner '${Q}'. Actual signers: [${$.join(", ")}]`,{intended:Q,actualSigners:$});this.name="TransactionNotSignedByIntendedOwnerError"}}class p8 extends j{constructor(Q,$){super("INVALID_PUBKEY_FORMAT",`Invalid public key format '${Q}': ${$}`,{pubkey:Q,reason:$});this.name="InvalidPubkeyFormatError"}}class H8 extends j{constructor(Q){super("INVALID_SIGNATURE",`Invalid signature: ${Q}`,{reason:Q});this.name="InvalidSignatureError"}}class _8 extends j{constructor(Q,$){super("INVALID_CODE_FORMAT",`Invalid code format '${Q}': ${$}`,{code:Q,reason:$});this.name="InvalidCodeFormatError"}}class A8 extends j{constructor(Q){super("INVALID_ADAPTER",`Invalid adapter: ${Q}`,{adapter:Q});this.name="InvalidAdapterError"}}var S8=k8(require("bs58"));class o{config;constructor(Q){this.config=Q}generateCode(Q,$,q){let Z=Q,X=JSON.parse(new TextDecoder().decode(Z)),J=X.pubkey,Y=X.windowStart,N=q,U;if($){let v=S8.default.decode($);U=n(v,Z)}else if(N)U=n(N,Z);else U=d(Z);let K=Math.max(O8,Math.min(F8,this.config.codeLength)),z=8*Math.ceil(K/2),R=K8(U,z);return{actionCode:{code:R8(R,K),pubkey:J,timestamp:Y,expiresAt:Y+this.config.ttlMs,...$&&{signature:$},...N&&{secret:N}},canonicalMessage:Z}}validateCode(Q){let $=Date.now();if($>Q.expiresAt+(this.config.clockSkewMs??0))throw j.expiredCode(Q.code,Q.expiresAt,$);let q=m({pubkey:Q.pubkey,windowStart:Q.timestamp,secret:Q.secret}),Z;if(Q.signature){let N=S8.default.decode(Q.signature);Z=n(N,q)}else if(Q.secret)Z=n(Q.secret,q);else Z=d(q);let X=Math.max(O8,Math.min(F8,this.config.codeLength)),J=K8(Z,8*Math.ceil(X/2)),Y=R8(J,X);if(Y!==Q.code)throw j.invalidCode(Y,Q.code)}}class I{walletStrategy;config;constructor(Q){this.config=Q,this.walletStrategy=new o(Q)}static createDelegationCertificateTemplate(Q,$=3600000,q="solana"){let Z=Date.now();return{version:"1.0",delegator:Q,issuedAt:Z,expiresAt:Z+$,nonce:B8(),chain:q}}generateDelegatedCode(Q){if(!this.validateCertificate(Q))throw Error("Invalid delegation certificate");let $=I.hashCertificate(Q),q=Math.floor(Date.now()/this.config.ttlMs)*this.config.ttlMs,Z=m({pubkey:Q.delegator,windowStart:q,secret:$});return{actionCode:{...this.walletStrategy.generateCode(Z,"",$).actionCode,delegationId:I.hashCertificate(Q),delegatedBy:Q.delegator}}}validateDelegatedCode(Q,$){if(this.walletStrategy.validateCode(Q),!this.validateCertificate($))throw Error("Delegation certificate expired or invalid");if(Q.delegationId!==I.hashCertificate($))throw Error("Action code does not match delegation certificate");if(Q.delegatedBy!==$.delegator)throw Error("Action code delegator does not match certificate")}validateCertificate(Q){if(Date.now()>Q.expiresAt)return!1;if(Date.now()<Q.issuedAt)return!1;if(!Q.version||!Q.delegator||!Q.issuedAt||!Q.expiresAt||!Q.nonce||!Q.chain||!Q.signature)return!1;if(Q.version!=="1.0")return!1;return!0}static serializeCertificate(Q){let $=JSON.stringify({version:Q.version,delegator:Q.delegator,issuedAt:Q.issuedAt,expiresAt:Q.expiresAt,nonce:Q.nonce,chain:Q.chain});return new TextEncoder().encode($)}static hashCertificate(Q){let $=this.serializeCertificate(Q),q=new TextEncoder().encode(Q.signature),Z=new Uint8Array($.length+q.length);Z.set($,0),Z.set(q,$.length);let X=d(Z);return Array.from(X).map((J)=>J.toString(16).padStart(2,"0")).join("")}static validateCertificateStructure(Q){if(!Q.version||!Q.delegator||!Q.issuedAt||!Q.expiresAt||!Q.nonce||!Q.chain||!Q.signature)return!1;if(Q.version!=="1.0")return!1;if(Date.now()>Q.expiresAt)return!1;if(Date.now()<Q.issuedAt)return!1;return!0}getWalletStrategy(){return this.walletStrategy}}var g8=k8(require("tweetnacl")),u8=k8(require("bs58")),F=require("@solana/web3.js"),S=require("@solana/spl-memo");class r extends e{normalizePubkey(Q){if(typeof Q==="string")return new F.PublicKey(Q);return Q}verifyWithWallet(Q){if(Q.chain!=="solana")return!1;if(!Q.pubkey||!Q.signature||!Q.canonicalMessageParts)return!1;try{let $=m(Q.canonicalMessageParts),q=this.normalizePubkey(Q.pubkey),Z=u8.default.decode(Q.signature),X=q.toBytes();if(Z.length!==64||X.length!==32)return!1;return g8.default.sign.detached.verify($,Z,X)}catch{return!1}}verifyWithDelegation(Q){if(Q.chain!=="solana")return!1;if(!Q.pubkey||!Q.signature||!Q.certificate)return!1;let $=Q.certificate;if(!I.validateCertificateStructure($))return!1;if($.delegator!==Q.pubkey)return!1;if($.chain!==Q.chain)return!1;try{let q={version:$.version,delegator:$.delegator,issuedAt:$.issuedAt,expiresAt:$.expiresAt,nonce:$.nonce,chain:$.chain},Z=I.serializeCertificate(q),X=this.normalizePubkey(Q.pubkey),J=u8.default.decode(Q.signature),Y=X.toBytes();if(J.length!==64||Y.length!==32)return!1;return g8.default.sign.detached.verify(Z,J,Y)}catch{return!1}}static createProtocolMetaIx(Q){let $=D8(Q);return S.createMemoInstruction($)}getProtocolMeta(Q){try{let $=this.deserializeTransaction(Q);for(let q of this.getMemoInstructions($)){let Z=q.data;try{let X=new TextDecoder().decode(Z);if(Z8(X))return X}catch{}}return null}catch{return null}}deserializeTransaction(Q){try{let $=F.VersionedTransaction.deserialize(Buffer.from(Q,"base64"));if($.message instanceof F.MessageV0)return $;else return F.Transaction.from(Buffer.from(Q,"base64"))}catch{try{return F.Transaction.from(Buffer.from(Q,"base64"))}catch{throw j.invalidTransactionFormat("Invalid base64 transaction format")}}}parseMeta(Q){let $=this.getProtocolMeta(Q);if(!$)return null;return Z8($)}getMemoInstructions(Q){if(Q instanceof F.Transaction)return Q.instructions.filter(($)=>$.programId.equals(S.MEMO_PROGRAM_ID));else{let q=Q.message;if(q instanceof F.MessageV0){let Z=[];for(let X of q.compiledInstructions){let J=q.staticAccountKeys[X.programIdIndex];if(J&&J.equals(S.MEMO_PROGRAM_ID)){let Y=X.accountKeyIndexes.map((N)=>({pubkey:q.staticAccountKeys[N],isSigner:!1,isWritable:!1}));Z.push(new F.TransactionInstruction({keys:Y,programId:J,data:X.data}))}}return Z}return[]}}verifyTransactionMatchesCode(Q,$){let q=Date.now();if(q>Q.expiresAt)throw j.expiredCode(Q.code,Q.expiresAt,q);let Z=this.parseMeta($);if(!Z)throw j.missingMeta();if(Z.ver!==2)throw j.metaMismatch("2",String(Z.ver),"ver");let X=b8(Q.code);if(Z.id!==X)throw j.metaMismatch(X,Z.id,"id");if(Z.int!==Q.pubkey)throw j.metaMismatch(Q.pubkey,Z.int,"int")}verifyTransactionSignedByIntentOwner(Q){let $=this.parseMeta(Q);if(!$)throw j.missingMeta();let q=$.int;if(!q)throw j.invalidMetaFormat("Missing 'int' (intendedFor) field");let Z;try{Z=new F.PublicKey(q)}catch{throw j.invalidPubkeyFormat(q,"Invalid public key format")}let X=this.deserializeTransaction(Q),J=[];if(X instanceof F.Transaction){if(!X.signatures.some((N)=>{if(!N.signature)return!1;return J.push(N.publicKey.toString()),N.publicKey.equals(Z)}))throw j.transactionNotSignedByIntendedOwner(q,J);return}if(X instanceof F.VersionedTransaction){let Y=X.message;if(Y instanceof F.MessageV0){let N=Y.header.numRequiredSignatures;for(let U=0;U<N;U++){let K=Y.staticAccountKeys[U];if(K){if(J.push(K.toString()),K.equals(Z))return}}throw j.transactionNotSignedByIntendedOwner(q,J)}}throw j.invalidTransactionFormat("Unsupported transaction format")}static attachProtocolMeta(Q,$){if(new r().getProtocolMeta(Q))throw j.invalidTransactionFormat("Transaction already contains protocol meta. Cannot attach additional protocol meta.");let X=r.createProtocolMetaIx($);try{let J=F.VersionedTransaction.deserialize(Buffer.from(Q,"base64"));if(J.message instanceof F.MessageV0){let Y=J.message,N=[...Y.staticAccountKeys];if(!N.some((G)=>G.equals(S.MEMO_PROGRAM_ID)))N.push(S.MEMO_PROGRAM_ID);let K={programIdIndex:N.findIndex((G)=>G.equals(S.MEMO_PROGRAM_ID)),accountKeyIndexes:[],data:X.data},z=new F.MessageV0({header:Y.header,staticAccountKeys:N,recentBlockhash:Y.recentBlockhash,compiledInstructions:[...Y.compiledInstructions,K],addressTableLookups:Y.addressTableLookups}),R=new F.VersionedTransaction(z);return R.signatures=J.signatures,Buffer.from(R.serialize()).toString("base64")}else{let Y=F.Transaction.from(Buffer.from(Q,"base64"));return Y.add(X),Buffer.from(Y.serialize({requireAllSignatures:!1})).toString("base64")}}catch{try{let J=F.Transaction.from(Buffer.from(Q,"base64"));return J.add(X),Buffer.from(J.serialize({requireAllSignatures:!1})).toString("base64")}catch{throw j.invalidTransactionFormat("Invalid base64 transaction format")}}}}class G0{config;adapters={};_walletStrategy;_delegationStrategy;constructor(Q){this.config=Q;this.adapters.solana=new r,this._walletStrategy=new o(Q),this._delegationStrategy=new I(Q)}getConfig(){return this.config}registerAdapter(Q,$){this.adapters[Q]=$}getAdapter(Q){return this.adapters[Q]}get adapter(){return{solana:this.adapters.solana}}get walletStrategy(){return this._walletStrategy}getCanonicalMessageParts(Q,$){let q=Math.floor(Date.now()/this.config.ttlMs)*this.config.ttlMs;return m({pubkey:Q,windowStart:q,secret:$})}get delegationStrategy(){return this._delegationStrategy}createDelegationCertificateTemplate(Q,$=3600000,q="solana"){return I.createDelegationCertificateTemplate(Q,$,q)}generateCode(Q,$,q,Z){if(Q==="wallet"){if(!q)throw j.invalidSignature("Missing signature over canonical message");return this.walletStrategy.generateCode($,q,Z)}else return this.delegationStrategy.generateDelegatedCode($)}validateCode(Q,$,q){if(Q==="wallet"){if(this.walletStrategy.validateCode($),!q)return;let Z=q,X=this.getAdapter(Z.chain);if(!X)throw j.invalidAdapter(Z.chain);if(!X.verifyWithWallet({...Z,canonicalMessageParts:{pubkey:$.pubkey,windowStart:$.timestamp}}))throw Error("Signature verification failed")}else{let Z=q;this.delegationStrategy.validateDelegatedCode($,Z);let X=this.getAdapter(Z.chain);if(!X)throw j.invalidAdapter(Z.chain);if(!X.verifyWithDelegation({chain:Z.chain,pubkey:Z.delegator,signature:Z.signature,certificate:Z}))throw Error("Signature verification failed")}}}
1
+ var P0=Object.create;var{getPrototypeOf:D0,defineProperty:a,getOwnPropertyNames:c8,getOwnPropertyDescriptor:v0}=Object,n8=Object.prototype.hasOwnProperty;var T8=(Q,$,q)=>{q=Q!=null?P0(D0(Q)):{};let Z=$||!Q||!Q.__esModule?a(q,"default",{value:Q,enumerable:!0}):q;for(let X of c8(Q))if(!n8.call(Z,X))a(Z,X,{get:()=>Q[X],enumerable:!0});return Z},l8=new WeakMap,W0=(Q)=>{var $=l8.get(Q),q;if($)return $;if($=a({},"__esModule",{value:!0}),Q&&typeof Q==="object"||typeof Q==="function")c8(Q).map((Z)=>!n8.call($,Z)&&a($,Z,{get:()=>Q[Z],enumerable:!(q=v0(Q,Z))||q.enumerable}));return l8.set(Q,$),$};var w0=(Q,$)=>{for(var q in $)a(Q,q,{get:$[q],enumerable:!0,configurable:!0,set:(Z)=>$[q]=()=>Z})};var l0={};w0(l0,{validateProtocolMetaFormat:()=>h0,truncateBits:()=>j8,sha256:()=>d,serializeCanonicalRevoke:()=>y8,serializeCanonical:()=>m,parseProtocolMeta:()=>Z8,hmacSha256:()=>n,hkdfSha256:()=>f0,generateRandomSecret:()=>p0,generateNonce:()=>m8,digestToDigits:()=>R8,codeHash:()=>C8,buildProtocolMeta:()=>v8,base32EncodeCrockford:()=>H0,WalletStrategy:()=>o,TransactionNotSignedByIntendedOwnerError:()=>_8,SolanaAdapter:()=>r,SUPPORTED_CHAINS:()=>d0,SCHEME:()=>P8,ProtocolErrorCode:()=>G0,ProtocolError:()=>K,PROTOCOL_NORMALIZATION:()=>G8,PROTOCOL_META_MAX_BYTES:()=>s,MissingMetaError:()=>H8,MetaMismatchError:()=>p8,InvalidSignatureError:()=>S8,InvalidPubkeyFormatError:()=>A8,InvalidCodeFormatError:()=>g8,InvalidAdapterError:()=>u8,ExpiredCodeError:()=>f8,DelegationStrategy:()=>I,CODE_MIN_LENGTH:()=>O8,CODE_MAX_LENGTH:()=>F8,CODE_DEFAULT_LENGTH:()=>g0,CODE_CHARSET_DIGITS:()=>u0,CANONICAL_REVOKE_MESSAGE_PREFIX:()=>S0,CANONICAL_MESSAGE_VERSION:()=>_0,CANONICAL_MESSAGE_PREFIX:()=>A0,BaseChainAdapter:()=>e,ActionCodesProtocol:()=>O0});module.exports=W0(l0);class e{}/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */function L0(Q){return Q instanceof Uint8Array||ArrayBuffer.isView(Q)&&Q.constructor.name==="Uint8Array"}function Y8(Q,$=""){if(!Number.isSafeInteger(Q)||Q<0){let q=$&&`"${$}" `;throw Error(`${q}expected integer >= 0, got ${Q}`)}}function H(Q,$,q=""){let Z=L0(Q),X=Q?.length,J=$!==void 0;if(!Z||J&&X!==$){let Y=q&&`"${q}" `,N=J?` of length ${$}`:"",U=Z?`length=${X}`:`type=${typeof Q}`;throw Error(Y+"expected Uint8Array"+N+", got "+U)}return Q}function t(Q){if(typeof Q!=="function"||typeof Q.create!=="function")throw Error("Hash must wrapped by utils.createHasher");Y8(Q.outputLen),Y8(Q.blockLen)}function h(Q,$=!0){if(Q.destroyed)throw Error("Hash instance has been destroyed");if($&&Q.finished)throw Error("Hash#digest() has already been called")}function s8(Q,$){H(Q,void 0,"digestInto() output");let q=$.outputLen;if(Q.length<q)throw Error('"digestInto() output" expected to be of length >='+q)}function V(...Q){for(let $=0;$<Q.length;$++)Q[$].fill(0)}function N8(Q){return new DataView(Q.buffer,Q.byteOffset,Q.byteLength)}function T(Q,$){return Q<<32-$|Q>>>$}function o8(Q,$={}){let q=(X,J)=>Q(J).update(X).digest(),Z=Q(void 0);return q.outputLen=Z.outputLen,q.blockLen=Z.blockLen,q.create=(X)=>Q(X),Object.assign(q,$),Object.freeze(q)}var r8=(Q)=>({oid:Uint8Array.from([6,9,96,134,72,1,101,3,4,2,Q])});function i8(Q,$,q){return Q&$^~Q&q}function a8(Q,$,q){return Q&$^Q&q^$&q}class z8{blockLen;outputLen;padOffset;isLE;buffer;view;finished=!1;length=0;pos=0;destroyed=!1;constructor(Q,$,q,Z){this.blockLen=Q,this.outputLen=$,this.padOffset=q,this.isLE=Z,this.buffer=new Uint8Array(Q),this.view=N8(this.buffer)}update(Q){h(this),H(Q);let{view:$,buffer:q,blockLen:Z}=this,X=Q.length;for(let J=0;J<X;){let Y=Math.min(Z-this.pos,X-J);if(Y===Z){let N=N8(Q);for(;Z<=X-J;J+=Z)this.process(N,J);continue}if(q.set(Q.subarray(J,J+Y),this.pos),this.pos+=Y,J+=Y,this.pos===Z)this.process($,0),this.pos=0}return this.length+=Q.length,this.roundClean(),this}digestInto(Q){h(this),s8(Q,this),this.finished=!0;let{buffer:$,view:q,blockLen:Z,isLE:X}=this,{pos:J}=this;if($[J++]=128,V(this.buffer.subarray(J)),this.padOffset>Z-J)this.process(q,0),J=0;for(let z=J;z<Z;z++)$[z]=0;q.setBigUint64(Z-8,BigInt(this.length*8),X),this.process(q,0);let Y=N8(Q),N=this.outputLen;if(N%4)throw Error("_sha2: outputLen must be aligned to 32bit");let U=N/4,j=this.get();if(U>j.length)throw Error("_sha2: outputLen bigger than state");for(let z=0;z<U;z++)Y.setUint32(4*z,j[z],X)}digest(){let{buffer:Q,outputLen:$}=this;this.digestInto(Q);let q=Q.slice(0,$);return this.destroy(),q}_cloneInto(Q){Q||=new this.constructor,Q.set(...this.get());let{blockLen:$,buffer:q,length:Z,finished:X,destroyed:J,pos:Y}=this;if(Q.destroyed=J,Q.finished=X,Q.length=Z,Q.pos=Y,Z%$)Q.buffer.set(q);return Q}clone(){return this._cloneInto()}}var B=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),C=Uint32Array.from([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428]),W=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 U8=BigInt(4294967295),e8=BigInt(32);function M0(Q,$=!1){if($)return{h:Number(Q&U8),l:Number(Q>>e8&U8)};return{h:Number(Q>>e8&U8)|0,l:Number(Q&U8)|0}}function t8(Q,$=!1){let q=Q.length,Z=new Uint32Array(q),X=new Uint32Array(q);for(let J=0;J<q;J++){let{h:Y,l:N}=M0(Q[J],$);[Z[J],X[J]]=[Y,N]}return[Z,X]}var I8=(Q,$,q)=>Q>>>q,E8=(Q,$,q)=>Q<<32-q|$>>>q,g=(Q,$,q)=>Q>>>q|$<<32-q,u=(Q,$,q)=>Q<<32-q|$>>>q,Q8=(Q,$,q)=>Q<<64-q|$>>>q-32,$8=(Q,$,q)=>Q>>>q-32|$<<64-q;function E(Q,$,q,Z){let X=($>>>0)+(Z>>>0);return{h:Q+q+(X/4294967296|0)|0,l:X|0}}var Q0=(Q,$,q)=>(Q>>>0)+($>>>0)+(q>>>0),$0=(Q,$,q,Z)=>$+q+Z+(Q/4294967296|0)|0,q0=(Q,$,q,Z)=>(Q>>>0)+($>>>0)+(q>>>0)+(Z>>>0),Z0=(Q,$,q,Z,X)=>$+q+Z+X+(Q/4294967296|0)|0,X0=(Q,$,q,Z,X)=>(Q>>>0)+($>>>0)+(q>>>0)+(Z>>>0)+(X>>>0),J0=(Q,$,q,Z,X,J)=>$+q+Z+X+J+(Q/4294967296|0)|0;var V0=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 b8 extends z8{constructor(Q){super(64,Q,8,!1)}get(){let{A:Q,B:$,C:q,D:Z,E:X,F:J,G:Y,H:N}=this;return[Q,$,q,Z,X,J,Y,N]}set(Q,$,q,Z,X,J,Y,N){this.A=Q|0,this.B=$|0,this.C=q|0,this.D=Z|0,this.E=X|0,this.F=J|0,this.G=Y|0,this.H=N|0}process(Q,$){for(let z=0;z<16;z++,$+=4)p[z]=Q.getUint32($,!1);for(let z=16;z<64;z++){let R=p[z-15],G=p[z-2],v=T(R,7)^T(R,18)^R>>>3,D=T(G,17)^T(G,19)^G>>>10;p[z]=D+p[z-7]+v+p[z-16]|0}let{A:q,B:Z,C:X,D:J,E:Y,F:N,G:U,H:j}=this;for(let z=0;z<64;z++){let R=T(Y,6)^T(Y,11)^T(Y,25),G=j+R+i8(Y,N,U)+V0[z]+p[z]|0,D=(T(q,2)^T(q,13)^T(q,22))+a8(q,Z,X)|0;j=U,U=N,N=Y,Y=J+G|0,J=X,X=Z,Z=q,q=G+D|0}q=q+this.A|0,Z=Z+this.B|0,X=X+this.C|0,J=J+this.D|0,Y=Y+this.E|0,N=N+this.F|0,U=U+this.G|0,j=j+this.H|0,this.set(q,Z,X,J,Y,N,U,j)}roundClean(){V(p)}destroy(){this.set(0,0,0,0,0,0,0,0),V(this.buffer)}}class Y0 extends b8{A=B[0]|0;B=B[1]|0;C=B[2]|0;D=B[3]|0;E=B[4]|0;F=B[5]|0;G=B[6]|0;H=B[7]|0;constructor(){super(32)}}class T0 extends b8{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 N0=(()=>t8(["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))))(),I0=(()=>N0[0])(),E0=(()=>N0[1])(),_=new Uint32Array(80),A=new Uint32Array(80);class q8 extends z8{constructor(Q){super(128,Q,16,!1)}get(){let{Ah:Q,Al:$,Bh:q,Bl:Z,Ch:X,Cl:J,Dh:Y,Dl:N,Eh:U,El:j,Fh:z,Fl:R,Gh:G,Gl:v,Hh:D,Hl:k}=this;return[Q,$,q,Z,X,J,Y,N,U,j,z,R,G,v,D,k]}set(Q,$,q,Z,X,J,Y,N,U,j,z,R,G,v,D,k){this.Ah=Q|0,this.Al=$|0,this.Bh=q|0,this.Bl=Z|0,this.Ch=X|0,this.Cl=J|0,this.Dh=Y|0,this.Dl=N|0,this.Eh=U|0,this.El=j|0,this.Fh=z|0,this.Fl=R|0,this.Gh=G|0,this.Gl=v|0,this.Hh=D|0,this.Hl=k|0}process(Q,$){for(let O=0;O<16;O++,$+=4)_[O]=Q.getUint32($),A[O]=Q.getUint32($+=4);for(let O=16;O<80;O++){let y=_[O-15]|0,f=A[O-15]|0,L8=g(y,f,1)^g(y,f,8)^I8(y,f,7),M8=u(y,f,1)^u(y,f,8)^E8(y,f,7),b=_[O-2]|0,x=A[O-2]|0,X8=g(b,x,19)^Q8(b,x,61)^I8(b,x,6),k8=u(b,x,19)^$8(b,x,61)^E8(b,x,6),J8=q0(M8,k8,A[O-7],A[O-16]),V8=Z0(J8,L8,X8,_[O-7],_[O-16]);_[O]=V8|0,A[O]=J8|0}let{Ah:q,Al:Z,Bh:X,Bl:J,Ch:Y,Cl:N,Dh:U,Dl:j,Eh:z,El:R,Fh:G,Fl:v,Gh:D,Gl:k,Hh:P,Hl:i}=this;for(let O=0;O<80;O++){let y=g(z,R,14)^g(z,R,18)^Q8(z,R,41),f=u(z,R,14)^u(z,R,18)^$8(z,R,41),L8=z&G^~z&D,M8=R&v^~R&k,b=X0(i,f,M8,E0[O],A[O]),x=J0(b,P,y,L8,I0[O],_[O]),X8=b|0,k8=g(q,Z,28)^Q8(q,Z,34)^Q8(q,Z,39),J8=u(q,Z,28)^$8(q,Z,34)^$8(q,Z,39),V8=q&X^q&Y^X&Y,F0=Z&J^Z&N^J&N;P=D|0,i=k|0,D=G|0,k=v|0,G=z|0,v=R|0,{h:z,l:R}=E(U|0,j|0,x|0,X8|0),U=Y|0,j=N|0,Y=X|0,N=J|0,X=q|0,J=Z|0;let h8=Q0(X8,J8,F0);q=$0(h8,x,k8,V8),Z=h8|0}({h:q,l:Z}=E(this.Ah|0,this.Al|0,q|0,Z|0)),{h:X,l:J}=E(this.Bh|0,this.Bl|0,X|0,J|0),{h:Y,l:N}=E(this.Ch|0,this.Cl|0,Y|0,N|0),{h:U,l:j}=E(this.Dh|0,this.Dl|0,U|0,j|0),{h:z,l:R}=E(this.Eh|0,this.El|0,z|0,R|0),{h:G,l:v}=E(this.Fh|0,this.Fl|0,G|0,v|0),{h:D,l:k}=E(this.Gh|0,this.Gl|0,D|0,k|0),{h:P,l:i}=E(this.Hh|0,this.Hl|0,P|0,i|0),this.set(q,Z,X,J,Y,N,U,j,z,R,G,v,D,k,P,i)}roundClean(){V(_,A)}destroy(){V(this.buffer),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}}class b0 extends q8{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 x0 extends q8{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(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 B0 extends q8{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 C0 extends q8{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=o8(()=>new Y0,r8(1));class x8{oHash;iHash;blockLen;outputLen;finished=!1;destroyed=!1;constructor(Q,$){if(t(Q),H($,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 q=this.blockLen,Z=new Uint8Array(q);Z.set($.length>q?Q.create().update($).digest():$);for(let X=0;X<Z.length;X++)Z[X]^=54;this.iHash.update(Z),this.oHash=Q.create();for(let X=0;X<Z.length;X++)Z[X]^=106;this.oHash.update(Z),V(Z)}update(Q){return h(this),this.iHash.update(Q),this}digestInto(Q){h(this),H(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:$,iHash:q,finished:Z,destroyed:X,blockLen:J,outputLen:Y}=this;return Q=Q,Q.finished=Z,Q.destroyed=X,Q.blockLen=J,Q.outputLen=Y,Q.oHash=$._cloneInto(Q.oHash),Q.iHash=q._cloneInto(Q.iHash),Q}clone(){return this._cloneInto()}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}}var l=(Q,$,q)=>new x8(Q,$).update(q).digest();l.create=(Q,$)=>new x8(Q,$);function m0(Q,$,q){if(t(Q),q===void 0)q=new Uint8Array(Q.outputLen);return l(Q,q,$)}var B8=Uint8Array.of(0),z0=Uint8Array.of();function y0(Q,$,q,Z=32){t(Q),Y8(Z,"length");let X=Q.outputLen;if(Z>255*X)throw Error("Length must be <= 255*HashLen");let J=Math.ceil(Z/X);if(q===void 0)q=z0;else H(q,void 0,"info");let Y=new Uint8Array(J*X),N=l.create(Q,$),U=N._cloneInto(),j=new Uint8Array(N.outputLen);for(let z=0;z<J;z++)B8[0]=z+1,U.update(z===0?z0:j).update(q).update(B8).digestInto(j),Y.set(j,X*z),N._cloneInto(U);return N.destroy(),U.destroy(),V(j,B8),Y.slice(0,Z)}var U0=(Q,$,q,Z,X)=>y0(Q,m0(Q,$,q),Z,X);function c(Q){if(typeof Q==="string")return new TextEncoder().encode(Q);return Q}function d(Q){return K8(c(Q))}function n(Q,$){return l(K8,c(Q),c($))}function f0(Q,$,{salt:q,info:Z}={}){let X=q?c(q):new Uint8Array(32),J=c(Q),Y=Z?c(Z):new Uint8Array(0);return U0(K8,J,X,Y,$)}var K0="0123456789ABCDEFGHJKMNPQRSTVWXYZ";function H0(Q){let $=0,q=0,Z="";for(let X=0;X<Q.length;X++){q=q<<8|Q[X],$+=8;while($>=5)Z+=K0[q>>>$-5&31],$-=5}if($>0)Z+=K0[q<<5-$&31];return Z}function j8(Q,$){let q=Math.ceil($/8),Z=new Uint8Array(q),X=Math.min(q,Q.length);Z.set(Q.subarray(0,X));let J=q*8-$;if(J>0){let Y=255<<J;Z[q-1]=Z[q-1]&Y}return Z}function R8(Q,$){if(Q.length===0)throw Error("digestToDigits: empty digest");let q="",Z=Q[Q.length-1]&15;for(let X=0;q.length<$;X++){let J=(Z+X*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");q+=U}return q.slice(0,$)}function C8(Q){let $=d(Q);return Array.from($).map((q)=>q.toString(16).padStart(2,"0")).join("")}function p0(){let Q=new Uint8Array(32);return crypto.getRandomValues(Q),btoa(String.fromCharCode(...Q))}function m8(){let Q=new Uint8Array(32);return crypto.getRandomValues(Q),btoa(String.fromCharCode(...Q))}var _0=1,A0="actioncodes",S0="actioncodes-revoke";function m(Q){let $=JSON.stringify({id:"actioncodes",ver:1,pubkey:Q.pubkey,windowStart:Q.windowStart,...Q.secret&&{secret:Q.secret}});return new TextEncoder().encode($)}function y8(Q){let $=JSON.stringify({id:"actioncodes-revoke",ver:1,pubkey:Q.pubkey,codeHash:Q.codeHash,windowStart:Q.windowStart});return new TextEncoder().encode($)}var G8="NFC",s=256,O8=6,F8=24,g0=8,u0="0123456789",d0=["solana"];var P8="actioncodes:";function v8(Q){let $=j0(Q);if($.int!=null)D8($.int);let q=[`ver=${$.ver}`,`id=${encodeURIComponent($.id)}`,`int=${encodeURIComponent($.int)}`];if($.p!=null&&Object.keys($.p).length>0){let X=JSON.stringify($.p);D8(X),q.push(`p=${encodeURIComponent(X)}`)}let Z=P8+q.join("&");return R0(Z),Z}function Z8(Q){if(!Q.startsWith(P8))throw Error("protocol meta must start with actioncodes:");let q=Q.slice(P8.length).split("&").filter(Boolean),Z=new Map;for(let G of q){let[v,D]=G.split("=",2);if(!v)continue;let k=D!=null?decodeURIComponent(D):"";Z.set(v,k)}let X=Z.get("ver"),J=Z.get("id"),Y=Z.get("int"),N=Z.get("p");if(X==null||J==null||Y==null)throw Error("protocol meta missing required fields ver or id or int");let U=Number(X);if(!Number.isInteger(U)||U<=0)throw Error("protocol meta ver must be positive integer");let j;if(N!=null&&N!=="")try{if(j=JSON.parse(N),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 z=j0({ver:U,id:J,int:Y,p:j});if(z.int!=null)D8(z.int);if(z.p!=null)D8(JSON.stringify(z.p));if([...Z.keys()].filter((G)=>G!=="ver"&&G!=="id"&&G!=="int"&&G!=="p").length>0)throw Error("protocol meta contains unsupported keys");return R0(v8(z)),z}function h0(Q){try{return Z8(Q),{ok:!0}}catch($){return{ok:!1,reason:String($)}}}function j0(Q){let $=Q.id.normalize(G8).trim(),q={ver:Q.ver,id:$,int:Q.int};if(Q.int!=null)q.int=Q.int.normalize(G8).trim();if(Q.p!=null)q.p=Q.p;return q}function R0(Q){if(new TextEncoder().encode(Q).length>s)throw Error(`protocol meta exceeds ${s} bytes`)}function D8(Q){if(new TextEncoder().encode(Q).length>s)throw Error(`protocol meta params exceed ${s} bytes`)}var G0;((P)=>{P.EXPIRED_CODE="EXPIRED_CODE";P.INVALID_CODE="INVALID_CODE";P.INVALID_CODE_FORMAT="INVALID_CODE_FORMAT";P.INVALID_SIGNATURE="INVALID_SIGNATURE";P.MISSING_META="MISSING_META";P.INVALID_META_FORMAT="INVALID_META_FORMAT";P.META_MISMATCH="META_MISMATCH";P.META_TOO_LARGE="META_TOO_LARGE";P.TRANSACTION_NOT_SIGNED_BY_INTENDED_OWNER="TRANSACTION_NOT_SIGNED_BY_INTENDED_OWNER";P.INVALID_TRANSACTION_FORMAT="INVALID_TRANSACTION_FORMAT";P.INVALID_PUBKEY_FORMAT="INVALID_PUBKEY_FORMAT";P.INVALID_INPUT="INVALID_INPUT";P.MISSING_REQUIRED_FIELD="MISSING_REQUIRED_FIELD";P.CRYPTO_ERROR="CRYPTO_ERROR";P.INVALID_DIGEST="INVALID_DIGEST";P.INVALID_ADAPTER="INVALID_ADAPTER"})(G0||={});class K extends Error{code;details;constructor(Q,$,q){super($);this.code=Q;this.details=q;this.name="ProtocolError"}static expiredCode(Q,$,q){return new f8(Q,$,q)}static invalidCode(Q,$){return new K("INVALID_CODE",`Invalid code: expected '${Q}', got '${$}'`,{expected:Q,actual:$})}static invalidCodeFormat(Q,$){return new g8(Q,$)}static invalidSignature(Q){return new S8(Q)}static missingMeta(){return new H8}static invalidMetaFormat(Q){return new K("INVALID_META_FORMAT",`Invalid protocol meta format: ${Q}`,{reason:Q})}static metaMismatch(Q,$,q){return new p8(Q,$,q)}static metaTooLarge(Q,$){return new K("META_TOO_LARGE",`Protocol meta too large: ${$} bytes (max: ${Q})`,{maxBytes:Q,actualBytes:$})}static transactionNotSignedByIntendedOwner(Q,$){return new _8(Q,$)}static invalidTransactionFormat(Q){return new K("INVALID_TRANSACTION_FORMAT",`Invalid transaction format: ${Q}`,{reason:Q})}static invalidPubkeyFormat(Q,$){return new A8(Q,$)}static invalidInput(Q,$,q){return new K("INVALID_INPUT",`Invalid ${Q}: ${q}`,{field:Q,value:$,reason:q})}static missingRequiredField(Q){return new K("MISSING_REQUIRED_FIELD",`Missing required field: ${Q}`,{field:Q})}static cryptoError(Q,$){return new K("CRYPTO_ERROR",`Crypto error in ${Q}: ${$}`,{operation:Q,reason:$})}static invalidDigest(Q){return new K("INVALID_DIGEST",`Invalid digest: ${Q}`,{reason:Q})}static invalidAdapter(Q){return new u8(Q)}static create(Q,$,q){return new K(Q,$,q)}}class f8 extends K{constructor(Q,$,q){super("EXPIRED_CODE",`Action code '${Q}' expired at ${$}, current time: ${q}`,{code:Q,expiresAt:$,currentTime:q});this.name="ExpiredCodeError"}}class H8 extends K{constructor(){super("MISSING_META","Transaction does not contain valid protocol meta");this.name="MissingMetaError"}}class p8 extends K{constructor(Q,$,q){super("META_MISMATCH",`Meta ${q} mismatch: expected '${Q}', got '${$}'`,{expected:Q,actual:$,field:q});this.name="MetaMismatchError"}}class _8 extends K{constructor(Q,$){super("TRANSACTION_NOT_SIGNED_BY_INTENDED_OWNER",`Transaction not signed by intended owner '${Q}'. Actual signers: [${$.join(", ")}]`,{intended:Q,actualSigners:$});this.name="TransactionNotSignedByIntendedOwnerError"}}class A8 extends K{constructor(Q,$){super("INVALID_PUBKEY_FORMAT",`Invalid public key format '${Q}': ${$}`,{pubkey:Q,reason:$});this.name="InvalidPubkeyFormatError"}}class S8 extends K{constructor(Q){super("INVALID_SIGNATURE",`Invalid signature: ${Q}`,{reason:Q});this.name="InvalidSignatureError"}}class g8 extends K{constructor(Q,$){super("INVALID_CODE_FORMAT",`Invalid code format '${Q}': ${$}`,{code:Q,reason:$});this.name="InvalidCodeFormatError"}}class u8 extends K{constructor(Q){super("INVALID_ADAPTER",`Invalid adapter: ${Q}`,{adapter:Q});this.name="InvalidAdapterError"}}var d8=T8(require("bs58"));class o{config;constructor(Q){this.config=Q}generateCode(Q,$,q){let Z=Q,X=JSON.parse(new TextDecoder().decode(Z)),J=X.pubkey,Y=X.windowStart,N=q,U;if($){let D=d8.default.decode($);U=n(D,Z)}else if(N)U=n(N,Z);else U=d(Z);let j=Math.max(O8,Math.min(F8,this.config.codeLength)),z=8*Math.ceil(j/2),R=j8(U,z);return{actionCode:{code:R8(R,j),pubkey:J,timestamp:Y,expiresAt:Y+this.config.ttlMs,...$&&{signature:$},...N&&{secret:N}},canonicalMessage:Z}}validateCode(Q){let $=Date.now();if($>Q.expiresAt+(this.config.clockSkewMs??0))throw K.expiredCode(Q.code,Q.expiresAt,$);let q=m({pubkey:Q.pubkey,windowStart:Q.timestamp,secret:Q.secret}),Z;if(Q.signature){let N=d8.default.decode(Q.signature);Z=n(N,q)}else if(Q.secret)Z=n(Q.secret,q);else Z=d(q);let X=Math.max(O8,Math.min(F8,this.config.codeLength)),J=j8(Z,8*Math.ceil(X/2)),Y=R8(J,X);if(Y!==Q.code)throw K.invalidCode(Y,Q.code)}}class I{walletStrategy;config;constructor(Q){this.config=Q,this.walletStrategy=new o(Q)}static createDelegationCertificateTemplate(Q,$=3600000,q="solana"){let Z=Date.now();return{version:"1.0",delegator:Q,issuedAt:Z,expiresAt:Z+$,nonce:m8(),chain:q}}generateDelegatedCode(Q){if(!this.validateCertificate(Q))throw Error("Invalid delegation certificate");let $=I.hashCertificate(Q),q=Math.floor(Date.now()/this.config.ttlMs)*this.config.ttlMs,Z=m({pubkey:Q.delegator,windowStart:q,secret:$});return{actionCode:{...this.walletStrategy.generateCode(Z,"",$).actionCode,delegationId:I.hashCertificate(Q),delegatedBy:Q.delegator}}}validateDelegatedCode(Q,$){if(this.walletStrategy.validateCode(Q),!this.validateCertificate($))throw Error("Delegation certificate expired or invalid");if(Q.delegationId!==I.hashCertificate($))throw Error("Action code does not match delegation certificate");if(Q.delegatedBy!==$.delegator)throw Error("Action code delegator does not match certificate")}validateCertificate(Q){if(Date.now()>Q.expiresAt)return!1;if(Date.now()<Q.issuedAt)return!1;if(!Q.version||!Q.delegator||!Q.issuedAt||!Q.expiresAt||!Q.nonce||!Q.chain||!Q.signature)return!1;if(Q.version!=="1.0")return!1;return!0}static serializeCertificate(Q){let $=JSON.stringify({version:Q.version,delegator:Q.delegator,issuedAt:Q.issuedAt,expiresAt:Q.expiresAt,nonce:Q.nonce,chain:Q.chain});return new TextEncoder().encode($)}static hashCertificate(Q){let $=this.serializeCertificate(Q),q=new TextEncoder().encode(Q.signature),Z=new Uint8Array($.length+q.length);Z.set($,0),Z.set(q,$.length);let X=d(Z);return Array.from(X).map((J)=>J.toString(16).padStart(2,"0")).join("")}static validateCertificateStructure(Q){if(!Q.version||!Q.delegator||!Q.issuedAt||!Q.expiresAt||!Q.nonce||!Q.chain||!Q.signature)return!1;if(Q.version!=="1.0")return!1;if(Date.now()>Q.expiresAt)return!1;if(Date.now()<Q.issuedAt)return!1;return!0}getWalletStrategy(){return this.walletStrategy}}var W8=T8(require("tweetnacl")),w8=T8(require("bs58")),F=require("@solana/web3.js"),S=require("@solana/spl-memo");class r extends e{normalizePubkey(Q){if(typeof Q==="string")return new F.PublicKey(Q);return Q}verifyWithWallet(Q){if(Q.chain!=="solana")return!1;if(!Q.pubkey||!Q.signature||!Q.canonicalMessageParts)return!1;try{let $=m(Q.canonicalMessageParts),q=this.normalizePubkey(Q.pubkey),Z=w8.default.decode(Q.signature),X=q.toBytes();if(Z.length!==64||X.length!==32)return!1;return W8.default.sign.detached.verify($,Z,X)}catch{return!1}}verifyWithDelegation(Q){if(Q.chain!=="solana")return!1;if(!Q.pubkey||!Q.signature||!Q.certificate)return!1;let $=Q.certificate;if(!I.validateCertificateStructure($))return!1;if($.delegator!==Q.pubkey)return!1;if($.chain!==Q.chain)return!1;try{let q={version:$.version,delegator:$.delegator,issuedAt:$.issuedAt,expiresAt:$.expiresAt,nonce:$.nonce,chain:$.chain},Z=I.serializeCertificate(q),X=this.normalizePubkey(Q.pubkey),J=w8.default.decode(Q.signature),Y=X.toBytes();if(J.length!==64||Y.length!==32)return!1;return W8.default.sign.detached.verify(Z,J,Y)}catch{return!1}}verifyRevokeWithWallet(Q){if(Q.chain!=="solana")return!1;if(!Q.pubkey||!Q.signature||!Q.canonicalRevokeMessageParts)return!1;try{let $=y8(Q.canonicalRevokeMessageParts),q=this.normalizePubkey(Q.pubkey),Z=w8.default.decode(Q.signature),X=q.toBytes();if(Z.length!==64||X.length!==32)return!1;return W8.default.sign.detached.verify($,Z,X)}catch{return!1}}static createProtocolMetaIx(Q){let $=v8(Q);return S.createMemoInstruction($)}getProtocolMeta(Q){try{let $=this.deserializeTransaction(Q);for(let q of this.getMemoInstructions($)){let Z=q.data;try{let X=new TextDecoder().decode(Z);if(Z8(X))return X}catch{}}return null}catch{return null}}deserializeTransaction(Q){try{let $=F.VersionedTransaction.deserialize(Buffer.from(Q,"base64"));if($.message instanceof F.MessageV0)return $;else return F.Transaction.from(Buffer.from(Q,"base64"))}catch{try{return F.Transaction.from(Buffer.from(Q,"base64"))}catch{throw K.invalidTransactionFormat("Invalid base64 transaction format")}}}parseMeta(Q){let $=this.getProtocolMeta(Q);if(!$)return null;return Z8($)}getMemoInstructions(Q){if(Q instanceof F.Transaction)return Q.instructions.filter(($)=>$.programId.equals(S.MEMO_PROGRAM_ID));else{let q=Q.message;if(q instanceof F.MessageV0){let Z=[];for(let X of q.compiledInstructions){let J=q.staticAccountKeys[X.programIdIndex];if(J&&J.equals(S.MEMO_PROGRAM_ID)){let Y=X.accountKeyIndexes.map((N)=>({pubkey:q.staticAccountKeys[N],isSigner:!1,isWritable:!1}));Z.push(new F.TransactionInstruction({keys:Y,programId:J,data:X.data}))}}return Z}return[]}}verifyTransactionMatchesCode(Q,$){let q=Date.now();if(q>Q.expiresAt)throw K.expiredCode(Q.code,Q.expiresAt,q);let Z=this.parseMeta($);if(!Z)throw K.missingMeta();if(Z.ver!==2)throw K.metaMismatch("2",String(Z.ver),"ver");let X=C8(Q.code);if(Z.id!==X)throw K.metaMismatch(X,Z.id,"id");if(Z.int!==Q.pubkey)throw K.metaMismatch(Q.pubkey,Z.int,"int")}verifyTransactionSignedByIntentOwner(Q){let $=this.parseMeta(Q);if(!$)throw K.missingMeta();let q=$.int;if(!q)throw K.invalidMetaFormat("Missing 'int' (intendedFor) field");let Z;try{Z=new F.PublicKey(q)}catch{throw K.invalidPubkeyFormat(q,"Invalid public key format")}let X=this.deserializeTransaction(Q),J=[];if(X instanceof F.Transaction){if(!X.signatures.some((N)=>{if(!N.signature)return!1;return J.push(N.publicKey.toString()),N.publicKey.equals(Z)}))throw K.transactionNotSignedByIntendedOwner(q,J);return}if(X instanceof F.VersionedTransaction){let Y=X.message;if(Y instanceof F.MessageV0){let N=Y.header.numRequiredSignatures;for(let U=0;U<N;U++){let j=Y.staticAccountKeys[U];if(j){if(J.push(j.toString()),j.equals(Z))return}}throw K.transactionNotSignedByIntendedOwner(q,J)}}throw K.invalidTransactionFormat("Unsupported transaction format")}static attachProtocolMeta(Q,$){if(new r().getProtocolMeta(Q))throw K.invalidTransactionFormat("Transaction already contains protocol meta. Cannot attach additional protocol meta.");let X=r.createProtocolMetaIx($);try{let J=F.VersionedTransaction.deserialize(Buffer.from(Q,"base64"));if(J.message instanceof F.MessageV0){let Y=J.message,N=[...Y.staticAccountKeys];if(!N.some((G)=>G.equals(S.MEMO_PROGRAM_ID)))N.push(S.MEMO_PROGRAM_ID);let j={programIdIndex:N.findIndex((G)=>G.equals(S.MEMO_PROGRAM_ID)),accountKeyIndexes:[],data:X.data},z=new F.MessageV0({header:Y.header,staticAccountKeys:N,recentBlockhash:Y.recentBlockhash,compiledInstructions:[...Y.compiledInstructions,j],addressTableLookups:Y.addressTableLookups}),R=new F.VersionedTransaction(z);return R.signatures=J.signatures,Buffer.from(R.serialize()).toString("base64")}else{let Y=F.Transaction.from(Buffer.from(Q,"base64"));return Y.add(X),Buffer.from(Y.serialize({requireAllSignatures:!1})).toString("base64")}}catch{try{let J=F.Transaction.from(Buffer.from(Q,"base64"));return J.add(X),Buffer.from(J.serialize({requireAllSignatures:!1})).toString("base64")}catch{throw K.invalidTransactionFormat("Invalid base64 transaction format")}}}}class O0{config;adapters={};_walletStrategy;_delegationStrategy;constructor(Q){this.config=Q;this.adapters.solana=new r,this._walletStrategy=new o(Q),this._delegationStrategy=new I(Q)}getConfig(){return this.config}registerAdapter(Q,$){this.adapters[Q]=$}getAdapter(Q){return this.adapters[Q]}get adapter(){return{solana:this.adapters.solana}}get walletStrategy(){return this._walletStrategy}getCanonicalMessageParts(Q,$){let q=Math.floor(Date.now()/this.config.ttlMs)*this.config.ttlMs;return m({pubkey:Q,windowStart:q,secret:$})}get delegationStrategy(){return this._delegationStrategy}createDelegationCertificateTemplate(Q,$=3600000,q="solana"){return I.createDelegationCertificateTemplate(Q,$,q)}generateCode(Q,$,q,Z){if(Q==="wallet"){if(!q)throw K.invalidSignature("Missing signature over canonical message");return this.walletStrategy.generateCode($,q,Z)}else return this.delegationStrategy.generateDelegatedCode($)}validateCode(Q,$,q){if(Q==="wallet"){if(this.walletStrategy.validateCode($),!q)return;let Z=q,X=this.getAdapter(Z.chain);if(!X)throw K.invalidAdapter(Z.chain);if(!X.verifyWithWallet({...Z,canonicalMessageParts:{pubkey:$.pubkey,windowStart:$.timestamp}}))throw Error("Signature verification failed")}else{let Z=q;this.delegationStrategy.validateDelegatedCode($,Z);let X=this.getAdapter(Z.chain);if(!X)throw K.invalidAdapter(Z.chain);if(!X.verifyWithDelegation({chain:Z.chain,pubkey:Z.delegator,signature:Z.signature,certificate:Z}))throw Error("Signature verification failed")}}}
2
2
 
3
- //# debugId=56DBE91FA0C2446E64756E2164756E21
3
+ //# debugId=37F2D1E8903258BF64756E2164756E21