@silencelaboratories/walletprovider-sdk 0.2.0 → 0.3.0

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/README.md CHANGED
@@ -76,10 +76,9 @@ We provide EOA authentication via [EOAAuth](./docs/walletprovider-sdk.eoaauth.md
76
76
 
77
77
  ```ts
78
78
  // Generate ephemeral secret key esk
79
- const sk = ed.utils.randomPrivateKey();
80
- ephSK = sk;
79
+ const sk = generateEphPrivateKey();
81
80
  // Derive public part epk from esk
82
- ephPK = await ed.getPublicKeyAsync(sk);
81
+ const ephPK = getEphPublicKey(sk);
83
82
  // Arbitrary ID to identify the ephemeral key
84
83
  const ephId = uuidv4();
85
84
  // Create a client that connects to the backend service
@@ -99,7 +98,7 @@ const eoaAuth = new EOAAuth(
99
98
  const sdk = new NetworkSigner(wpClient, threshold, partiesNumber, eoaAuth);
100
99
  ```
101
100
 
102
- Now you can generate a key, using the [authenticateAndCreateKey](./docs/walletprovider-sdk.networksigner.authenticateandcreatekey.md) method. The method accepts optional permissions. No permissions means _allow all operations_.
101
+ Now you can generate a key, using the [generateKey](./docs/walletprovider-sdk.networksigner.authenticateandcreatekey.md) method. The method accepts optional permissions. No permissions means _allow all operations_.
103
102
 
104
103
  ```ts
105
104
  const permissions = {
@@ -118,7 +117,7 @@ const permissions = {
118
117
  };
119
118
 
120
119
  // Generate a new key
121
- let resp: KeygenResponse = await sdk.authenticateAndCreateKey(JSON.stringify(permissions));
120
+ let resp: KeygenResponse = await sdk.generateKey(JSON.stringify(permissions));
122
121
  ```
123
122
 
124
123
  Calling this method will cause to the Browser Wallet window to pop up, requesting the User to sign the request.
@@ -132,10 +131,9 @@ We provide Passkey authentication via [PasskeyAuth](./docs/walletprovider-sdk.pa
132
131
 
133
132
  ```ts
134
133
  // Generate ephemeral secret key esk
135
- const sk = ed.utils.randomPrivateKey();
136
- ephSK = sk;
134
+ const sk = generateEphPrivateKey();
137
135
  // Derive public part epk from esk
138
- ephPK = await ed.getPublicKeyAsync(sk);
136
+ const ephPK = getEphPublicKey(sk);
139
137
  // Arbitrary ID to identify the ephemeral key
140
138
  const ephId = uuidv4();
141
139
  // Create a client that connects to the backend service
@@ -170,7 +168,7 @@ const passkeyAuth = new PasskeyAuth(
170
168
  const sdk = new NetworkSigner(wpClient, threshold, partiesNumber, passkeyAuth);
171
169
  ```
172
170
 
173
- Now you can generate a key like in the EOA example by calling the [authenticateAndCreateKey](./docs/walletprovider-sdk.networksigner.authenticateandcreatekey.md) method.
171
+ Now you can generate a key like in the EOA example by calling the [generateKey](./docs/walletprovider-sdk.networksigner.authenticateandcreatekey.md) method.
174
172
 
175
173
  Calling this method will prompt the browser to request Passkey User Verification. Once user verification is done, the [KeygenResponse](./docs/walletprovider-sdk.keygenresponse.md) is returned.
176
174
 
@@ -188,7 +186,7 @@ const sdk = new NetworkSigner(wpClient, threshold, partiesNumber, authModule);
188
186
  ```
189
187
 
190
188
 
191
- Use the [NetworkSigner.authenticateAndSign](./docs/walletprovider-sdk.networksigner.authenticateandsign.md) method in order to generate a signature.
189
+ Use the [NetworkSigner.signMessage](./docs/walletprovider-sdk.networksigner.authenticateandsign.md) method in order to generate a signature.
192
190
 
193
191
  ```ts
194
192
  let signMessage = JSON.stringify({
@@ -212,7 +210,7 @@ let signMessage = JSON.stringify({
212
210
  requestType: 'accountAbstractionTx',
213
211
  });
214
212
 
215
- let resp = await sdk.authenticateAndSign(selectedKeyId, signMessage);
213
+ let resp = await sdk.signMessage(selectedKeyId, signMessage);
216
214
  ```
217
215
 
218
216
  The [SignResponse](./docs/walletprovider-sdk.signresponse.md) contains the signature `sign` and the recovery ID `recid`.
@@ -4,6 +4,7 @@
4
4
  import { KeygenSetupOpts } from './networkSigner';
5
5
  import { type UserAuthentication } from './authentication';
6
6
  import { type TypedDataDomain } from 'viem';
7
+ import { EphClaim } from './ephemeralAuthentication';
7
8
  export type FieldDefinition = {
8
9
  name: string;
9
10
  type: string;
@@ -47,12 +48,10 @@ export interface IBrowserWallet {
47
48
  /** Present the request to the User using wallet UI, and ask for sign.
48
49
  * The signature is the authorization for keygen operation
49
50
  */
50
- export declare function authenticateUsingEOA({ setup, ephId, eoa, challenge, browserWallet, ephPK, lifetime, }: {
51
+ export declare function authenticateUsingEOA({ setup, eoa, challenge, browserWallet, ephClaim, }: {
51
52
  setup: KeygenSetupOpts;
52
- ephId: string;
53
53
  eoa: string;
54
54
  challenge: string;
55
55
  browserWallet: IBrowserWallet;
56
- ephPK: Uint8Array;
57
- lifetime: number;
56
+ ephClaim: EphClaim;
58
57
  }): Promise<UserAuthentication>;
@@ -1,41 +1,48 @@
1
- import { KeygenSetupOpts, SignSetupOpts } from './networkSigner';
1
+ import { AddEphemeralKeyOpts, KeygenSetupOpts, SignSetupOpts } from './networkSigner';
2
2
  import { IBrowserWallet } from './EOAauthentication';
3
3
  import { PasskeyUser, RelyingPartyConfig } from './passkeyAuthentication';
4
+ import { EphClaim } from './ephemeralAuthentication';
4
5
  /** Type of the request authentication
5
6
  * @alpha
6
7
  */
7
8
  export type UserCredentials = {
8
9
  id: string;
9
- method: string;
10
+ method: 'eoa' | 'ephemeral' | 'passkey';
10
11
  credentials: string;
11
- ephId?: string;
12
12
  };
13
13
  export type UserAuthentication = {
14
14
  credentials: UserCredentials;
15
15
  signature: string;
16
- passkeyCredentialId?: string;
17
16
  };
18
17
  export interface AuthModule {
19
18
  authenticate({ setup, challenge, }: {
20
- setup: KeygenSetupOpts | SignSetupOpts;
19
+ setup: KeygenSetupOpts | SignSetupOpts | AddEphemeralKeyOpts;
21
20
  challenge: string;
22
21
  }): Promise<UserAuthentication>;
23
22
  }
23
+ export interface DkgAuthModule extends AuthModule {
24
+ get ephClaim(): EphClaim;
25
+ }
24
26
  /** The `EOAAuth` implementing Externally Owned Account authentication.
25
27
  * @alpha
26
28
  */
27
- export declare class EOAAuth implements AuthModule {
28
- /** Ephemeral id identify ephemeral key */
29
- ephId: string;
29
+ export declare class EOAAuth implements DkgAuthModule {
30
30
  /** An interface to the wallet, like MetaMask, that is used to sign the requests */
31
- browserWallet: IBrowserWallet;
32
- /** Public key of the ephemeral key */
33
- ephPK: Uint8Array;
34
- /** Lifetime of the ephemeral key */
35
- lifetime: number;
31
+ private browserWallet;
36
32
  /** the ETH address that is used to do EOA authentication */
37
- eoa: string;
38
- constructor(ephId: string, eoa: string, browserWallet: IBrowserWallet, ephPK: Uint8Array, lifetime?: number);
33
+ private eoa;
34
+ /** Ephemeral key claim */
35
+ ephClaim: EphClaim;
36
+ /**
37
+ *
38
+ * @param ephId - Ephemeral key ID
39
+ * @param eoa - Ethereum address
40
+ * @param browserWallet - Interface to the wallet provider, like MetaMask, that is used to sign the requests
41
+ * @param ephPK - Ephemeral public key
42
+ * @param lifetime - Lifetime of the ephemeral key. Default is 1 hour
43
+ */
44
+ constructor(ephId: string, eoa: string, browserWallet: IBrowserWallet, ephPK: Uint8Array, lifetime: number);
45
+ private validateInputs;
39
46
  /**
40
47
  * Prepares a message to present on the Browser Wallet window and requests to sign it.
41
48
  * @param setup - Keygen setup options
@@ -55,12 +62,15 @@ export declare class EOAAuth implements AuthModule {
55
62
  * asking the user to sign the request each time.
56
63
  * */
57
64
  export declare class EphAuth implements AuthModule {
58
- /** Ephemeral id identify ephemeral key */
59
- ephId: string;
60
65
  /** Secret key of the ephemeral keypair */
61
- ephSK: Uint8Array;
62
- /** Public key of the ephemeral keypair */
63
- ephPK: Uint8Array;
66
+ private ephSK;
67
+ /** Ephemeral key claim */
68
+ private ephClaim;
69
+ /**
70
+ *
71
+ * @param ephId - Ephemeral key ID
72
+ * @param ephSK - Ephemeral secret key
73
+ */
64
74
  constructor(ephId: string, ephSK: Uint8Array);
65
75
  /**
66
76
  * Prepares a message to present on the Browser Wallet window and requests to sign it.
@@ -77,22 +87,27 @@ export declare class EphAuth implements AuthModule {
77
87
  /** The `AuthModule` implementing Passkey authentication.
78
88
  * @alpha
79
89
  */
80
- export declare class PasskeyAuth implements AuthModule {
90
+ export declare class PasskeyAuth implements DkgAuthModule {
81
91
  /** Replying party object. Read more: https://developer.mozilla.org/en-US/docs/Web/API/PublicKeyCredentialCreationOptions#rp */
82
- rpConfig: RelyingPartyConfig;
83
- /** Passkey user information. Read more: https://developer.mozilla.org/en-US/docs/Web/API/PublicKeyCredentialCreationOptions#user */
84
- user: PasskeyUser;
85
- /** Public key of the ephemeral key */
86
- ephPK: Uint8Array;
87
- /** Lifetime of the ephemeral key */
88
- lifetime: number;
89
- /** Ephemeral id identify ephemeral key */
90
- ephId: string;
91
- /** Credential id that user and authenticator acknowledges about */
92
- credentialId: string | null;
93
- constructor(rpConfig: RelyingPartyConfig, user: PasskeyUser, ephId: string, ephPK: Uint8Array, lifetime: number | undefined, credentialId: string | null);
94
- authenticate({ setup, challenge }: {
95
- setup: KeygenSetupOpts;
92
+ private rpConfig;
93
+ /** ID of the acceptable credential by user. App proves that user has passkey credential by passing the value of this field */
94
+ private allowCredentialId;
95
+ /** Passkey user information, only requires while registering. Read more: https://developer.mozilla.org/en-US/docs/Web/API/PublicKeyCredentialCreationOptions#user */
96
+ private user;
97
+ /** Ephemeral key claim */
98
+ ephClaim: EphClaim;
99
+ /**
100
+ *
101
+ * @param rpConfig - Passkey relying party configuration. Read more: https://developer.mozilla.org/en-US/docs/Web/API/PublicKeyCredentialCreationOptions#rp
102
+ * @param user - Passkey user information, only requires while registering. Read more: https://developer.mozilla.org/en-US/docs/Web/API/PublicKeyCredentialCreationOptions#user
103
+ * @param allowCredentialId - ID of the acceptable credential by user. App proves that user has passkey credential by passing the value of this field
104
+ * @param ephId - Ephemeral key ID
105
+ * @param ephPK - Ephemeral public key
106
+ * @param lifetime - Lifetime of the ephemeral key. Default is 1 hour
107
+ */
108
+ constructor(rpConfig: RelyingPartyConfig, user: PasskeyUser | null, allowCredentialId: string | null, ephId: string, ephPK: Uint8Array, lifetime: number);
109
+ authenticate({ setup, challenge, }: {
110
+ setup: KeygenSetupOpts | AddEphemeralKeyOpts;
96
111
  challenge: string;
97
112
  }): Promise<UserAuthentication>;
98
113
  }
@@ -1,16 +1,21 @@
1
1
  import { UserAuthentication } from './authentication';
2
2
  import { SignSetupOpts } from './networkSigner';
3
- export type EphClaim = {
3
+ export declare class EphClaim {
4
+ ephId: string;
4
5
  ephPK: string;
5
6
  expiry: number;
6
- };
7
+ constructor(ephId: string, ephPK: Uint8Array, lifetime?: number);
8
+ private validateInputs;
9
+ toJSON(): string;
10
+ }
7
11
  /** Locally sign the signature requests to network without asking the user, the ephSK is registered during keygen.
8
12
  * The signature is the authorization for signgen operation
9
13
  */
10
- export declare function authenticateUsingEphKey({ setup, ephId, challenge, ephSK, ephPK, }: {
14
+ export declare function authenticateUsingEphKey({ setup, challenge, ephSK, ephClaim, }: {
11
15
  setup: SignSetupOpts;
12
- ephId: string;
13
16
  challenge: string;
14
17
  ephSK: Uint8Array;
15
- ephPK: Uint8Array;
18
+ ephClaim: EphClaim;
16
19
  }): Promise<UserAuthentication>;
20
+ export declare function generateEphPrivateKey(): Uint8Array;
21
+ export declare function getEphPublicKey(ephSK: Uint8Array): Uint8Array;
package/dist/index.cjs.js CHANGED
@@ -1 +1 @@
1
- "use strict";var H=Object.create;var y=Object.defineProperty;var F=Object.getOwnPropertyDescriptor;var z=Object.getOwnPropertyNames;var L=Object.getPrototypeOf,V=Object.prototype.hasOwnProperty;var G=(t,e,n)=>e in t?y(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n;var Y=(t,e)=>{for(var n in e)y(t,n,{get:e[n],enumerable:!0})},v=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of z(e))!V.call(t,s)&&s!==n&&y(t,s,{get:()=>e[s],enumerable:!(r=F(e,s))||r.enumerable});return t};var j=(t,e,n)=>(n=t!=null?H(L(t)):{},v(e||!t||!t.__esModule?y(n,"default",{value:t,enumerable:!0}):n,t)),Q=t=>v(y({},"__esModule",{value:!0}),t);var a=(t,e,n)=>G(t,typeof e!="symbol"?e+"":e,n);var se={};Y(se,{EOAAuth:()=>w,EphAuth:()=>A,NetworkSigner:()=>P,PasskeyAuth:()=>I,WalletProviderServiceClient:()=>K,computeAddress:()=>M});module.exports=Q(se);var k=require("viem");var X=1,Z=2,f=class{constructor({t:e,n,ephPK:r,key_label:s,permissions:i}){a(this,"t");a(this,"n");a(this,"key_label");a(this,"metadata");this.t=e,this.n=n,this.key_label=s,this.metadata=[],this.metadata.push({tag:Z,value:r}),i&&this.metadata.push({tag:X,value:i})}};function u(t){return t.message!==void 0}var P=class{constructor(e,n,r,s){a(this,"authModule");a(this,"threshold");a(this,"totalNodes");a(this,"wp_client");if(n===0)throw new Error("Threshold cannot be 0");this.threshold=n,this.totalNodes=r,this.authModule=s,this.wp_client=e}async authenticateAndCreateKey(e,n){try{let r=new f({t:this.threshold,n:this.totalNodes,permissions:n,ephPK:(0,k.toHex)(e)}),s=p=>this.authModule.authenticate({setup:r,challenge:p}),i=await this.wp_client.startKeygen({setup:r,signer:s});return console.log("Keygen response:",i),i}catch(r){throw console.error(r),r}}async authenticateAndSign(e,n){let r={t:this.threshold,key_id:e,message:n},s=p=>this.authModule.authenticate({setup:r,challenge:p}),i=await this.wp_client.startSigngen({setup:r,signer:s});return console.log("Sign response:",i),i}};var b=require("viem"),ee=[{name:"tag",type:"uint16"},{name:"value",type:"string"}],te={Request:[{name:"setup",type:"KeygenSetupOpts"},{name:"challenge",type:"string"}],KeygenSetupOpts:[{name:"t",type:"uint32"},{name:"n",type:"uint32"},{name:"metadata",type:"TaggedValue[]"}],TaggedValue:ee},ne={name:"SilentShard authentication",version:"0.1.0"},ie=[{name:"name",type:"string"},{name:"version",type:"string"}];function re(t,e,n){console.log("EPHKEY",n);let r=new f({t:t.t,n:t.n,key_label:t.key_label,permissions:void 0,ephPK:(0,b.toHex)(n)});return{types:{EIP712Domain:ie,...te},domain:ne,primaryType:"Request",message:{setup:r,challenge:e}}}async function R({setup:t,ephId:e,eoa:n,challenge:r,browserWallet:s,ephPK:i,lifetime:p}){if(u(t))throw new Error("EOA auth cannot be used for Sign requests, please use EphAuth instead");let c=re(t,r,i),o=await s.signTypedData(n,c);console.log("User signed a request",o);let l={ephPK:(0,b.toHex)(i),expiry:Math.floor(Date.now()/1e3)+p};return{credentials:{credentials:JSON.stringify(l),method:"eoa",id:n,ephId:e},signature:o}}var B=require("@noble/curves/ed25519");var T=require("js-base64");var E=t=>btoa(String.fromCodePoint.apply(null,Array.from(t))),g=t=>T.Base64.fromUint8Array(new Uint8Array(t),!0);var O=require("js-base64"),d=require("viem");async function N({user:t,ephId:e,challenge:n,rpConfig:r,ephPK:s,lifetime:i}){let p=(0,d.hexToBytes)(`0x${n}`,{size:32}),c={publicKey:{authenticatorSelection:{authenticatorAttachment:void 0,residentKey:"preferred",requireResidentKey:!1,userVerification:"required"},challenge:p,excludeCredentials:[],pubKeyCredParams:[{type:"public-key",alg:-7},{type:"public-key",alg:-257}],rp:{name:r.rpName,id:r.rpId},user:{...t,id:O.Base64.toUint8Array(t.id)}}},o=await navigator.credentials.create(c);if(o===null)throw new Error("No credential returned");let l=g(o.response.attestationObject),S={rawCredential:JSON.stringify({authenticatorAttachment:o.authenticatorAttachment,id:o.id,rawId:g(o.rawId),response:{attestationObject:l,clientDataJSON:g(o.response.clientDataJSON)},type:o.type}),origin:r.rpName,rpId:r.rpId},x={ephPK:(0,d.toHex)(s),expiry:Math.floor(Date.now()/1e3)+i};return{credentials:{credentials:JSON.stringify(x),method:"passkey",id:o.id,ephId:e},signature:JSON.stringify(S),passkeyCredentialId:o.id}}async function D({ephId:t,challenge:e,credentialId:n,rpConfig:r,ephPK:s,lifetime:i}){let p=(0,d.hexToBytes)(`0x${e}`,{size:32}),c=[{type:"public-key",id:O.Base64.toUint8Array(n)}],o={publicKey:{userVerification:"required",challenge:p,allowCredentials:c}},l=await navigator.credentials.get(o);if(l===null)throw new Error("Failed to get navigator credentials");let m=l.response,S=m.userHandle;if(S===null)throw new Error("User handle cannot be null");let x=g(m.signature),_={rawCredential:JSON.stringify({authenticatorAttachment:l.authenticatorAttachment,id:l.id,rawId:g(l.rawId),response:{authenticatorData:g(m.authenticatorData),clientDataJSON:g(m.clientDataJSON),signature:x,userHandle:g(S)},type:l.type}),origin:r.rpName,rpId:r.rpId,credentialId:n},$={ephPK:(0,d.toHex)(s),expiry:Math.floor(Date.now()/1e3)+i};return{credentials:{credentials:JSON.stringify($),method:"passkey",id:l.id,ephId:t},signature:JSON.stringify(_),passkeyCredentialId:l.id}}var U=require("viem"),J=require("@noble/curves/ed25519");async function W({setup:t,ephId:e,challenge:n,ephSK:r,ephPK:s}){let i={setup:t,challenge:n},p=new TextEncoder,c=(0,U.toHex)(J.ed25519.sign(p.encode(JSON.stringify(i)),r));console.log("AUTH SIGNATURE by eph key",c);let o={ephPK:(0,U.toHex)(s),expiry:0};return{credentials:{credentials:JSON.stringify(o),method:"ephemeral",id:e},signature:c}}var w=class{constructor(e,n,r,s,i=3600){a(this,"ephId");a(this,"browserWallet");a(this,"ephPK");a(this,"lifetime");a(this,"eoa");this.ephId=e,this.browserWallet=r,this.ephPK=s,this.lifetime=i,this.eoa=n}async authenticate({setup:e,challenge:n}){return await R({setup:e,ephId:this.ephId,eoa:this.eoa,challenge:n,browserWallet:this.browserWallet,ephPK:this.ephPK,lifetime:this.lifetime})}},A=class{constructor(e,n){a(this,"ephId");a(this,"ephSK");a(this,"ephPK");this.ephId=e,this.ephSK=n,this.ephPK=B.ed25519.getPublicKey(this.ephSK)}async authenticate({setup:e,challenge:n}){return await W({setup:e,ephId:this.ephId,challenge:n,ephSK:this.ephSK,ephPK:this.ephPK})}},I=class{constructor(e,n,r,s,i=3600,p){a(this,"rpConfig");a(this,"user");a(this,"ephPK");a(this,"lifetime");a(this,"ephId");a(this,"credentialId");this.rpConfig=e,this.user=n,this.ephPK=s,this.lifetime=i,this.ephId=r,this.credentialId=p}async authenticate({setup:e,challenge:n}){if(u(e))throw new Error("Passkey auth cannot be used for Sign requests, please use EphAuth instead");return this.credentialId?await D({ephId:this.ephId,credentialId:this.credentialId,challenge:n,rpConfig:this.rpConfig,ephPK:this.ephPK,lifetime:this.lifetime}):await N({user:this.user,ephId:this.ephId,challenge:n,rpConfig:this.rpConfig,ephPK:this.ephPK,lifetime:this.lifetime})}};var K=class{constructor(e){a(this,"walletProviderId");a(this,"walletProviderUrl");a(this,"passkeyCredentialId");this.walletProviderId=e.walletProviderId,this.walletProviderUrl=e.walletProviderUrl}getWalletId(){return this.walletProviderId}async startKeygen({setup:e,signer:n}){return this.connect(e,n).then(r=>{let s=r.split(":"),i=s[0].split("=")[1];return{publicKey:s[1].split("=")[1],keyId:i,passkeyCredentialId:this.passkeyCredentialId}})}async startSigngen({setup:e,signer:n}){return this.connect(e,n).then(r=>{let s=r.split(":"),i=s[0].split("=")[1],p=s[1].split("=")[1];return{sign:i,recid:parseInt(p)}})}connect(e,n){return new Promise((r,s)=>{let i=0,p;u(e)?(p="signgen",e.message=E(new TextEncoder().encode(e.message))):p="keygen";let c=new WebSocket(`${this.walletProviderUrl}/${p}`);c.addEventListener("open",o=>{switch(console.log(`Connection opened in state ${i} with event ${JSON.stringify(o,void 0," ")}`),i){case 0:i=1,console.log(`Sending setup: ${JSON.stringify(e)}`),c.send(JSON.stringify(e));break;case 1:case 2:i=3,s("Incorrect protocol state");break;case 3:break}}),c.addEventListener("message",async o=>{switch(console.log(`Connection message in state ${i} with event ${JSON.stringify(o,void 0," ")}`),i){case 0:i=3,s("Incorrect protocol state");break;case 1:{i=2;let l=await n(o.data);l.credentials.method==="passkey"&&(this.passkeyCredentialId=l.passkeyCredentialId),console.log(`Sending signature: ${JSON.stringify(l)}`),c.send(JSON.stringify(l));break}case 2:i=3,c.close(),r(o.data);break;case 3:break}}),c.addEventListener("error",o=>{console.log(`Connection error in state ${i} with event ${JSON.stringify(o,void 0," ")}`),i!=3&&(i=3,s("Incorrect protocol state"))}),c.addEventListener("close",o=>{console.log(`Connection closed in state ${i} with event ${JSON.stringify(o,void 0," ")}`),i!=3&&(i=3,s("Incorrect protocol state"))})})}};var h=j(require("viem")),C=require("viem/accounts"),q=require("@noble/curves/secp256k1");function M(t){if(t.startsWith("0x")&&(t=t.slice(2)),t.startsWith("04"))return(0,C.publicKeyToAddress)(`0x${t} `);if(t.startsWith("02")||t.startsWith("03")){let e=q.secp256k1.ProjectivePoint.fromHex(t).toHex(!1);return(0,C.publicKeyToAddress)(`0x${e}`)}else throw new Error("Invalid public key")}0&&(module.exports={EOAAuth,EphAuth,NetworkSigner,PasskeyAuth,WalletProviderServiceClient,computeAddress});
1
+ "use strict";var S=Object.defineProperty;var Q=Object.getOwnPropertyDescriptor;var G=Object.getOwnPropertyNames;var z=Object.prototype.hasOwnProperty;var Y=(n,e,t)=>e in n?S(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t;var X=(n,e)=>{for(var t in e)S(n,t,{get:e[t],enumerable:!0})},Z=(n,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of G(e))!z.call(n,i)&&i!==t&&S(n,i,{get:()=>e[i],enumerable:!(r=Q(e,i))||r.enumerable});return n};var j=n=>Z(S({},"__esModule",{value:!0}),n);var s=(n,e,t)=>Y(n,typeof e!="symbol"?e+"":e,t);var se={};X(se,{EOAAuth:()=>I,EphAuth:()=>E,NetworkSigner:()=>C,PasskeyAuth:()=>K,WalletProviderServiceClient:()=>A,computeAddress:()=>V,generateEphPrivateKey:()=>q,getEphPublicKey:()=>B});module.exports=j(se);var U=require("js-base64");var R=n=>btoa(String.fromCodePoint.apply(null,Array.from(n))),c=n=>U.Base64.fromUint8Array(new Uint8Array(n),!0);var h=(n,e)=>{u(typeof e!="string",`${n} must be string`),u((e==null?void 0:e.trim().length)===0,`${n} cannot be empty`)},w=n=>{u(!(n instanceof Uint8Array),"key must be an Uint8Array"),u(n.length!==32,"ed25519: key length must be 32 bytes")},u=(n,e)=>{if(n)throw new Error(e)};var A=class{constructor(e){s(this,"walletProviderId");s(this,"walletProviderUrl");s(this,"passkeyCredentialId");this.walletProviderId=e.walletProviderId,this.walletProviderUrl=e.walletProviderUrl}getWalletId(){return this.walletProviderId}async startKeygen({setup:e,authModule:t}){return this.connect(e,t).then(r=>{var p,l;let i=r.split(":");u(i.length!==2,"Invalid keygen response from network");let a=(p=i[0])==null?void 0:p.split("=")[1];return{publicKey:(l=i[1])==null?void 0:l.split("=")[1],keyId:a,passkeyCredentialId:this.passkeyCredentialId}})}async startSigngen({setup:e,authModule:t}){return this.connect(e,t).then(r=>{var p,l;let i=r.split(":");u(i.length!==2,"Invalid signgen response from network");let a=(p=i[0])==null?void 0:p.split("=")[1],o=(l=i[1])==null?void 0:l.split("=")[1];if(a===void 0||o===void 0)throw new Error("Invalid signgen response from network");return{sign:a,recid:parseInt(o)}})}async addEphemeralKey({setup:e,authModule:t}){return this.connect(e,t).then(r=>({status:r}))}connect(e,t){return new Promise((r,i)=>{let a=0,o=e.queryPath;o==="signgen"&&(e.message=R(new TextEncoder().encode(e.message)));let p=new WebSocket(`${this.walletProviderUrl}/${o}`);p.addEventListener("open",l=>{switch(console.debug(`Connection opened in state ${a} with event ${JSON.stringify(l,void 0," ")}`),a){case 0:a=1,p.send(JSON.stringify(e));break;case 1:case 2:a=3,i("Incorrect protocol state");break;case 3:break}}),p.addEventListener("message",async l=>{switch(console.debug(`Connection message in state ${a} with event ${JSON.stringify(l,void 0," ")}`),a){case 0:a=3,i("Incorrect protocol state");break;case 1:{a=2;try{let d=await t.authenticate({setup:e,challenge:l.data});d.credentials.method==="passkey"&&(this.passkeyCredentialId=d.credentials.id),p.send(JSON.stringify(d))}catch(d){i(d)}break}case 2:a=3,p.close(),r(l.data);break;case 3:break}}),p.addEventListener("error",l=>{console.debug(`Connection error in state ${a} with event ${JSON.stringify(l,void 0," ")}`),a!=3&&(a=3,i("Incorrect protocol state"))}),p.addEventListener("close",l=>{console.debug(`Connection closed in state ${a} with event ${JSON.stringify(l,void 0," ")}`),a!=3&&(a=3,i("Incorrect protocol state"))})})}};var ee=1,T=2,te=3,M=[{name:"tag",type:"uint16"},{name:"value",type:"string"}],g=class{constructor({t:e,n:t,key_label:r,permissions:i}){s(this,"t");s(this,"n");s(this,"key_label");s(this,"metadata");this.t=e,this.n=t,r&&(this.key_label=r),this.metadata=[],i&&this.metadata.push({tag:ee,value:i})}set ephClaim(e){this.metadata.push({tag:T,value:e.toJSON()})}get queryPath(){return"keygen"}get requestSchema(){return{Request:[{name:"setup",type:"KeygenSetupOpts"},{name:"challenge",type:"string"}],KeygenSetupOpts:[{name:"t",type:"uint32"},{name:"n",type:"uint32"},{name:"metadata",type:"TaggedValue[]"}],TaggedValue:M}}},b=class{constructor({t:e,key_id:t,message:r}){s(this,"t");s(this,"key_id");s(this,"message");this.t=e,this.key_id=t,this.message=r}get queryPath(){return"signgen"}},f=class{constructor({n:e,key_id:t}){s(this,"n");s(this,"key_id");s(this,"metadata");this.n=e,this.key_id=t,this.metadata=[],this.metadata.push({tag:te,value:t})}set ephClaim(e){this.metadata.push({tag:T,value:e.toJSON()})}get queryPath(){return"addEphemeralKey"}get requestSchema(){return{Request:[{name:"setup",type:"AddEphemeralKeyOpts"},{name:"challenge",type:"string"}],AddEphemeralKeyOpts:[{name:"n",type:"uint32"},{name:"metadata",type:"TaggedValue[]"}],TaggedValue:M}}},C=class{constructor(e,t,r,i){s(this,"authModule");s(this,"threshold");s(this,"totalNodes");s(this,"wp_client");u(t<2,`Threshold = ${t} must be at least 2`),u(r<t,`Total nodes = ${r} must be greater or equal to threshold = ${t}`),this.threshold=t,this.totalNodes=r,this.authModule=i,this.wp_client=e}async generateKey(e){let t=new g({t:this.threshold,n:this.totalNodes,permissions:e,key_label:void 0});return this.setEphClaimOf(t),await this.wp_client.startKeygen({setup:t,authModule:this.authModule})}async signMessage(e,t){h("keyId",e),h("message",t);let r=new b({t:this.threshold,key_id:e,message:t});return await this.wp_client.startSigngen({setup:r,authModule:this.authModule})}async addEphemeralKey(e){h("keyId",e);let t=new f({n:this.totalNodes,key_id:e});return this.setEphClaimOf(t),await this.wp_client.addEphemeralKey({setup:t,authModule:this.authModule})}setEphClaimOf(e){e.ephClaim=this.authModule.ephClaim}};var ne={name:"SilentShard authentication",version:"0.1.0"},re=[{name:"name",type:"string"},{name:"version",type:"string"}];function ie(n,e,t){let r;return n instanceof g?r=new g({t:n.t,n:n.n,key_label:n.key_label,permissions:void 0}):r=new f({n:n.n,key_id:n.key_id}),r.ephClaim=t,{types:{EIP712Domain:re,...n.requestSchema},domain:ne,primaryType:"Request",message:{setup:r,challenge:e}}}async function N({setup:n,eoa:e,challenge:t,browserWallet:r,ephClaim:i}){let a=ie(n,t,i),o=await r.signTypedData(e,a);return{credentials:{credentials:i.toJSON(),method:"eoa",id:e},signature:o}}var W=require("@noble/curves/ed25519");var O=require("js-base64"),k=require("viem");async function D({user:n,challenge:e,rpConfig:t,ephClaim:r}){let i=(0,k.hexToBytes)(`0x${e}`,{size:32}),a={publicKey:{authenticatorSelection:{residentKey:"preferred",userVerification:"required"},challenge:i,excludeCredentials:[],pubKeyCredParams:[{type:"public-key",alg:-7},{type:"public-key",alg:-257}],rp:{name:t.rpName,id:t.rpId},user:{...n,id:O.Base64.toUint8Array(n.id)}}},o=await navigator.credentials.create(a);if(o===null)throw new Error("No credential returned");let p=c(o.response.attestationObject),d={rawCredential:JSON.stringify({authenticatorAttachment:o.authenticatorAttachment,id:o.id,rawId:c(o.rawId),response:{attestationObject:p,clientDataJSON:c(o.response.clientDataJSON)},type:o.type}),origin:t.rpName,rpId:t.rpId};return{credentials:{credentials:r.toJSON(),method:"passkey",id:o.id},signature:JSON.stringify(d)}}async function J({challenge:n,allowCredentialId:e,rpConfig:t,ephClaim:r}){let i=(0,k.hexToBytes)(`0x${n}`,{size:32}),a=e?[{type:"public-key",id:O.Base64.toUint8Array(e)}]:[],o={publicKey:{userVerification:"required",challenge:i,allowCredentials:a}},p=await navigator.credentials.get(o);if(p===null)throw new Error("Failed to get navigator credentials");let l=p.response,d=l.userHandle;if(d===null)throw new Error("User handle cannot be null");let H=c(l.signature),L={rawCredential:JSON.stringify({authenticatorAttachment:p.authenticatorAttachment,id:p.id,rawId:c(p.rawId),response:{authenticatorData:c(l.authenticatorData),clientDataJSON:c(l.clientDataJSON),signature:H,userHandle:c(d)},type:p.type}),origin:t.rpName,rpId:t.rpId};return{credentials:{credentials:r.toJSON(),method:"passkey",id:p.id},signature:JSON.stringify(L)}}var x=require("viem"),P=require("@noble/curves/ed25519");var m=class{constructor(e,t,r=3600){s(this,"ephId");s(this,"ephPK");s(this,"expiry");this.validateInputs(e,t,r),this.ephId=e,this.ephPK=(0,x.toHex)(t),this.expiry=Math.floor(Date.now()/1e3)+r}validateInputs(e,t,r){h("ephId",e),w(t),u(Number.isInteger(r)===!1,"lifetime must be an integer");let i=r>0&&r<=365*24*60*60;u(!i,"lifetime must be greater than 0 and less than or equal to 365 days")}toJSON(){return JSON.stringify({ephId:this.ephId,ephPK:this.ephPK,expiry:this.expiry})}};async function _({setup:n,challenge:e,ephSK:t,ephClaim:r}){let i={setup:n,challenge:e},a=new TextEncoder,o=(0,x.toHex)(P.ed25519.sign(a.encode(JSON.stringify(i)),t));return{credentials:{credentials:r.toJSON(),method:"ephemeral",id:r.ephId},signature:o}}function q(){return P.ed25519.utils.randomPrivateKey()}function B(n){return P.ed25519.getPublicKey(n)}var $=require("viem");var I=class{constructor(e,t,r,i,a){s(this,"browserWallet");s(this,"eoa");s(this,"ephClaim");this.validateInputs(t,r),this.ephClaim=new m(e,i,a),this.browserWallet=r,this.eoa=t}validateInputs(e,t){u(!(0,$.isAddress)(e),"invalid Ethereum address format"),u(!((t==null?void 0:t.signTypedData)instanceof Function),"invalid browserWallet")}async authenticate({setup:e,challenge:t}){return await N({setup:e,eoa:this.eoa,challenge:t,browserWallet:this.browserWallet,ephClaim:this.ephClaim})}},E=class{constructor(e,t){s(this,"ephSK");s(this,"ephClaim");w(t),this.ephSK=t;let r=W.ed25519.getPublicKey(this.ephSK);this.ephClaim=new m(e,r)}async authenticate({setup:e,challenge:t}){return await _({setup:e,challenge:t,ephSK:this.ephSK,ephClaim:this.ephClaim})}},K=class{constructor(e,t,r,i,a,o){s(this,"rpConfig");s(this,"allowCredentialId");s(this,"user");s(this,"ephClaim");this.ephClaim=new m(i,a,o),this.rpConfig=e,this.user=t,this.allowCredentialId=r}async authenticate({setup:e,challenge:t}){let r=e.queryPath==="addEphemeralKey";if(this.allowCredentialId||r)return await J({allowCredentialId:this.allowCredentialId,challenge:t,rpConfig:this.rpConfig,ephClaim:this.ephClaim});if(this.user)return await D({user:this.user,challenge:t,rpConfig:this.rpConfig,ephClaim:this.ephClaim});throw new Error("Invalid arguments for passkey authentication")}};var v=require("viem/accounts"),F=require("@noble/curves/secp256k1");var y=require("viem");function V(n){if(n.startsWith("0x")&&(n=n.slice(2)),n.startsWith("04"))return(0,v.publicKeyToAddress)(`0x${n} `);if(n.startsWith("02")||n.startsWith("03")){let e=F.secp256k1.ProjectivePoint.fromHex(n).toHex(!1);return(0,v.publicKeyToAddress)(`0x${e}`)}else throw new Error("Invalid public key")}0&&(module.exports={EOAAuth,EphAuth,NetworkSigner,PasskeyAuth,WalletProviderServiceClient,computeAddress,generateEphPrivateKey,getEphPublicKey});
package/dist/index.d.ts CHANGED
@@ -1,8 +1,9 @@
1
- export type { SignResponse, KeygenResponse } from './networkSigner';
1
+ export type { SignResponse, KeygenResponse, AddEphemeralKeyResponse } from './networkSigner';
2
2
  export type { IBrowserWallet, TypedData } from './EOAauthentication';
3
3
  export type { ClientConfig, IWalletProviderServiceClient } from './walletProviderServiceClientInterface';
4
4
  export type { PasskeyUser, RelyingPartyConfig } from './passkeyAuthentication';
5
+ export { WalletProviderServiceClient } from './walletProviderServiceClient';
5
6
  export { NetworkSigner } from './networkSigner';
6
7
  export { EOAAuth, EphAuth, PasskeyAuth } from './authentication';
7
- export { WalletProviderServiceClient } from './walletProviderServiceClient';
8
8
  export { computeAddress } from './viemSigner';
9
+ export { generateEphPrivateKey, getEphPublicKey } from './ephemeralAuthentication';
package/dist/index.esm.js CHANGED
@@ -1 +1 @@
1
- var M=Object.defineProperty,_=Object.defineProperties;var $=Object.getOwnPropertyDescriptors;var b=Object.getOwnPropertySymbols;var H=Object.prototype.hasOwnProperty,F=Object.prototype.propertyIsEnumerable;var P=(n,e,t)=>e in n?M(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,m=(n,e)=>{for(var t in e||(e={}))H.call(e,t)&&P(n,t,e[t]);if(b)for(var t of b(e))F.call(e,t)&&P(n,t,e[t]);return n},w=(n,e)=>_(n,$(e));var a=(n,e,t)=>P(n,typeof e!="symbol"?e+"":e,t);import{toHex as z}from"viem";var L=1,V=2,y=class{constructor({t:e,n:t,ephPK:r,key_label:s,permissions:i}){a(this,"t");a(this,"n");a(this,"key_label");a(this,"metadata");this.t=e,this.n=t,this.key_label=s,this.metadata=[],this.metadata.push({tag:V,value:r}),i&&this.metadata.push({tag:L,value:i})}};function u(n){return n.message!==void 0}var A=class{constructor(e,t,r,s){a(this,"authModule");a(this,"threshold");a(this,"totalNodes");a(this,"wp_client");if(t===0)throw new Error("Threshold cannot be 0");this.threshold=t,this.totalNodes=r,this.authModule=s,this.wp_client=e}async authenticateAndCreateKey(e,t){try{let r=new y({t:this.threshold,n:this.totalNodes,permissions:t,ephPK:z(e)}),s=p=>this.authModule.authenticate({setup:r,challenge:p}),i=await this.wp_client.startKeygen({setup:r,signer:s});return console.log("Keygen response:",i),i}catch(r){throw console.error(r),r}}async authenticateAndSign(e,t){let r={t:this.threshold,key_id:e,message:t},s=p=>this.authModule.authenticate({setup:r,challenge:p}),i=await this.wp_client.startSigngen({setup:r,signer:s});return console.log("Sign response:",i),i}};import{toHex as O}from"viem";var G=[{name:"tag",type:"uint16"},{name:"value",type:"string"}],Y={Request:[{name:"setup",type:"KeygenSetupOpts"},{name:"challenge",type:"string"}],KeygenSetupOpts:[{name:"t",type:"uint32"},{name:"n",type:"uint32"},{name:"metadata",type:"TaggedValue[]"}],TaggedValue:G},j={name:"SilentShard authentication",version:"0.1.0"},Q=[{name:"name",type:"string"},{name:"version",type:"string"}];function X(n,e,t){console.log("EPHKEY",t);let r=new y({t:n.t,n:n.n,key_label:n.key_label,permissions:void 0,ephPK:O(t)});return{types:m({EIP712Domain:Q},Y),domain:j,primaryType:"Request",message:{setup:r,challenge:e}}}async function U({setup:n,ephId:e,eoa:t,challenge:r,browserWallet:s,ephPK:i,lifetime:p}){if(u(n))throw new Error("EOA auth cannot be used for Sign requests, please use EphAuth instead");let c=X(n,r,i),o=await s.signTypedData(t,c);console.log("User signed a request",o);let l={ephPK:O(i),expiry:Math.floor(Date.now()/1e3)+p};return{credentials:{credentials:JSON.stringify(l),method:"eoa",id:t,ephId:e},signature:o}}import{ed25519 as te}from"@noble/curves/ed25519";import{Base64 as Z}from"js-base64";var v=n=>btoa(String.fromCodePoint.apply(null,Array.from(n))),g=n=>Z.fromUint8Array(new Uint8Array(n),!0);import{Base64 as k}from"js-base64";import{toHex as R,hexToBytes as T}from"viem";async function E({user:n,ephId:e,challenge:t,rpConfig:r,ephPK:s,lifetime:i}){let p=T("0x".concat(t),{size:32}),c={publicKey:{authenticatorSelection:{authenticatorAttachment:void 0,residentKey:"preferred",requireResidentKey:!1,userVerification:"required"},challenge:p,excludeCredentials:[],pubKeyCredParams:[{type:"public-key",alg:-7},{type:"public-key",alg:-257}],rp:{name:r.rpName,id:r.rpId},user:w(m({},n),{id:k.toUint8Array(n.id)})}},o=await navigator.credentials.create(c);if(o===null)throw new Error("No credential returned");let l=g(o.response.attestationObject),f={rawCredential:JSON.stringify({authenticatorAttachment:o.authenticatorAttachment,id:o.id,rawId:g(o.rawId),response:{attestationObject:l,clientDataJSON:g(o.response.clientDataJSON)},type:o.type}),origin:r.rpName,rpId:r.rpId},S={ephPK:R(s),expiry:Math.floor(Date.now()/1e3)+i};return{credentials:{credentials:JSON.stringify(S),method:"passkey",id:o.id,ephId:e},signature:JSON.stringify(f),passkeyCredentialId:o.id}}async function N({ephId:n,challenge:e,credentialId:t,rpConfig:r,ephPK:s,lifetime:i}){let p=T("0x".concat(e),{size:32}),c=[{type:"public-key",id:k.toUint8Array(t)}],o={publicKey:{userVerification:"required",challenge:p,allowCredentials:c}},l=await navigator.credentials.get(o);if(l===null)throw new Error("Failed to get navigator credentials");let h=l.response,f=h.userHandle;if(f===null)throw new Error("User handle cannot be null");let S=g(h.signature),B={rawCredential:JSON.stringify({authenticatorAttachment:l.authenticatorAttachment,id:l.id,rawId:g(l.rawId),response:{authenticatorData:g(h.authenticatorData),clientDataJSON:g(h.clientDataJSON),signature:S,userHandle:g(f)},type:l.type}),origin:r.rpName,rpId:r.rpId,credentialId:t},q={ephPK:R(s),expiry:Math.floor(Date.now()/1e3)+i};return{credentials:{credentials:JSON.stringify(q),method:"passkey",id:l.id,ephId:n},signature:JSON.stringify(B),passkeyCredentialId:l.id}}import{toHex as D}from"viem";import{ed25519 as ee}from"@noble/curves/ed25519";async function J({setup:n,ephId:e,challenge:t,ephSK:r,ephPK:s}){let i={setup:n,challenge:t},p=new TextEncoder,c=D(ee.sign(p.encode(JSON.stringify(i)),r));console.log("AUTH SIGNATURE by eph key",c);let o={ephPK:D(s),expiry:0};return{credentials:{credentials:JSON.stringify(o),method:"ephemeral",id:e},signature:c}}var I=class{constructor(e,t,r,s,i=3600){a(this,"ephId");a(this,"browserWallet");a(this,"ephPK");a(this,"lifetime");a(this,"eoa");this.ephId=e,this.browserWallet=r,this.ephPK=s,this.lifetime=i,this.eoa=t}async authenticate({setup:e,challenge:t}){return await U({setup:e,ephId:this.ephId,eoa:this.eoa,challenge:t,browserWallet:this.browserWallet,ephPK:this.ephPK,lifetime:this.lifetime})}},K=class{constructor(e,t){a(this,"ephId");a(this,"ephSK");a(this,"ephPK");this.ephId=e,this.ephSK=t,this.ephPK=te.getPublicKey(this.ephSK)}async authenticate({setup:e,challenge:t}){return await J({setup:e,ephId:this.ephId,challenge:t,ephSK:this.ephSK,ephPK:this.ephPK})}},C=class{constructor(e,t,r,s,i=3600,p){a(this,"rpConfig");a(this,"user");a(this,"ephPK");a(this,"lifetime");a(this,"ephId");a(this,"credentialId");this.rpConfig=e,this.user=t,this.ephPK=s,this.lifetime=i,this.ephId=r,this.credentialId=p}async authenticate({setup:e,challenge:t}){if(u(e))throw new Error("Passkey auth cannot be used for Sign requests, please use EphAuth instead");return this.credentialId?await N({ephId:this.ephId,credentialId:this.credentialId,challenge:t,rpConfig:this.rpConfig,ephPK:this.ephPK,lifetime:this.lifetime}):await E({user:this.user,ephId:this.ephId,challenge:t,rpConfig:this.rpConfig,ephPK:this.ephPK,lifetime:this.lifetime})}};var x=class{constructor(e){a(this,"walletProviderId");a(this,"walletProviderUrl");a(this,"passkeyCredentialId");this.walletProviderId=e.walletProviderId,this.walletProviderUrl=e.walletProviderUrl}getWalletId(){return this.walletProviderId}async startKeygen({setup:e,signer:t}){return this.connect(e,t).then(r=>{let s=r.split(":"),i=s[0].split("=")[1];return{publicKey:s[1].split("=")[1],keyId:i,passkeyCredentialId:this.passkeyCredentialId}})}async startSigngen({setup:e,signer:t}){return this.connect(e,t).then(r=>{let s=r.split(":"),i=s[0].split("=")[1],p=s[1].split("=")[1];return{sign:i,recid:parseInt(p)}})}connect(e,t){return new Promise((r,s)=>{let i=0,p;u(e)?(p="signgen",e.message=v(new TextEncoder().encode(e.message))):p="keygen";let c=new WebSocket("".concat(this.walletProviderUrl,"/").concat(p));c.addEventListener("open",o=>{switch(console.log("Connection opened in state ".concat(i," with event ").concat(JSON.stringify(o,void 0," "))),i){case 0:i=1,console.log("Sending setup: ".concat(JSON.stringify(e))),c.send(JSON.stringify(e));break;case 1:case 2:i=3,s("Incorrect protocol state");break;case 3:break}}),c.addEventListener("message",async o=>{switch(console.log("Connection message in state ".concat(i," with event ").concat(JSON.stringify(o,void 0," "))),i){case 0:i=3,s("Incorrect protocol state");break;case 1:{i=2;let l=await t(o.data);l.credentials.method==="passkey"&&(this.passkeyCredentialId=l.passkeyCredentialId),console.log("Sending signature: ".concat(JSON.stringify(l))),c.send(JSON.stringify(l));break}case 2:i=3,c.close(),r(o.data);break;case 3:break}}),c.addEventListener("error",o=>{console.log("Connection error in state ".concat(i," with event ").concat(JSON.stringify(o,void 0," "))),i!=3&&(i=3,s("Incorrect protocol state"))}),c.addEventListener("close",o=>{console.log("Connection closed in state ".concat(i," with event ").concat(JSON.stringify(o,void 0," "))),i!=3&&(i=3,s("Incorrect protocol state"))})})}};import*as d from"viem";import{publicKeyToAddress as W,toAccount as _e}from"viem/accounts";import{secp256k1 as ne}from"@noble/curves/secp256k1";function ie(n){if(n.startsWith("0x")&&(n=n.slice(2)),n.startsWith("04"))return W("0x".concat(n," "));if(n.startsWith("02")||n.startsWith("03")){let e=ne.ProjectivePoint.fromHex(n).toHex(!1);return W("0x".concat(e))}else throw new Error("Invalid public key")}export{I as EOAAuth,K as EphAuth,A as NetworkSigner,C as PasskeyAuth,x as WalletProviderServiceClient,ie as computeAddress};
1
+ var $=Object.defineProperty,F=Object.defineProperties;var V=Object.getOwnPropertyDescriptors;var O=Object.getOwnPropertySymbols;var H=Object.prototype.hasOwnProperty,L=Object.prototype.propertyIsEnumerable;var w=(n,e,t)=>e in n?$(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,y=(n,e)=>{for(var t in e||(e={}))H.call(e,t)&&w(n,t,e[t]);if(O)for(var t of O(e))L.call(e,t)&&w(n,t,e[t]);return n},A=(n,e)=>F(n,V(e));var s=(n,e,t)=>w(n,typeof e!="symbol"?e+"":e,t);import{Base64 as Q}from"js-base64";var k=n=>btoa(String.fromCodePoint.apply(null,Array.from(n))),c=n=>Q.fromUint8Array(new Uint8Array(n),!0);var h=(n,e)=>{u(typeof e!="string","".concat(n," must be string")),u((e==null?void 0:e.trim().length)===0,"".concat(n," cannot be empty"))},S=n=>{u(!(n instanceof Uint8Array),"key must be an Uint8Array"),u(n.length!==32,"ed25519: key length must be 32 bytes")},u=(n,e)=>{if(n)throw new Error(e)};var C=class{constructor(e){s(this,"walletProviderId");s(this,"walletProviderUrl");s(this,"passkeyCredentialId");this.walletProviderId=e.walletProviderId,this.walletProviderUrl=e.walletProviderUrl}getWalletId(){return this.walletProviderId}async startKeygen({setup:e,authModule:t}){return this.connect(e,t).then(r=>{var p,l;let i=r.split(":");u(i.length!==2,"Invalid keygen response from network");let a=(p=i[0])==null?void 0:p.split("=")[1];return{publicKey:(l=i[1])==null?void 0:l.split("=")[1],keyId:a,passkeyCredentialId:this.passkeyCredentialId}})}async startSigngen({setup:e,authModule:t}){return this.connect(e,t).then(r=>{var p,l;let i=r.split(":");u(i.length!==2,"Invalid signgen response from network");let a=(p=i[0])==null?void 0:p.split("=")[1],o=(l=i[1])==null?void 0:l.split("=")[1];if(a===void 0||o===void 0)throw new Error("Invalid signgen response from network");return{sign:a,recid:parseInt(o)}})}async addEphemeralKey({setup:e,authModule:t}){return this.connect(e,t).then(r=>({status:r}))}connect(e,t){return new Promise((r,i)=>{let a=0,o=e.queryPath;o==="signgen"&&(e.message=k(new TextEncoder().encode(e.message)));let p=new WebSocket("".concat(this.walletProviderUrl,"/").concat(o));p.addEventListener("open",l=>{switch(console.debug("Connection opened in state ".concat(a," with event ").concat(JSON.stringify(l,void 0," "))),a){case 0:a=1,p.send(JSON.stringify(e));break;case 1:case 2:a=3,i("Incorrect protocol state");break;case 3:break}}),p.addEventListener("message",async l=>{switch(console.debug("Connection message in state ".concat(a," with event ").concat(JSON.stringify(l,void 0," "))),a){case 0:a=3,i("Incorrect protocol state");break;case 1:{a=2;try{let d=await t.authenticate({setup:e,challenge:l.data});d.credentials.method==="passkey"&&(this.passkeyCredentialId=d.credentials.id),p.send(JSON.stringify(d))}catch(d){i(d)}break}case 2:a=3,p.close(),r(l.data);break;case 3:break}}),p.addEventListener("error",l=>{console.debug("Connection error in state ".concat(a," with event ").concat(JSON.stringify(l,void 0," "))),a!=3&&(a=3,i("Incorrect protocol state"))}),p.addEventListener("close",l=>{console.debug("Connection closed in state ".concat(a," with event ").concat(JSON.stringify(l,void 0," "))),a!=3&&(a=3,i("Incorrect protocol state"))})})}};var G=1,x=2,z=3,U=[{name:"tag",type:"uint16"},{name:"value",type:"string"}],g=class{constructor({t:e,n:t,key_label:r,permissions:i}){s(this,"t");s(this,"n");s(this,"key_label");s(this,"metadata");this.t=e,this.n=t,r&&(this.key_label=r),this.metadata=[],i&&this.metadata.push({tag:G,value:i})}set ephClaim(e){this.metadata.push({tag:x,value:e.toJSON()})}get queryPath(){return"keygen"}get requestSchema(){return{Request:[{name:"setup",type:"KeygenSetupOpts"},{name:"challenge",type:"string"}],KeygenSetupOpts:[{name:"t",type:"uint32"},{name:"n",type:"uint32"},{name:"metadata",type:"TaggedValue[]"}],TaggedValue:U}}},P=class{constructor({t:e,key_id:t,message:r}){s(this,"t");s(this,"key_id");s(this,"message");this.t=e,this.key_id=t,this.message=r}get queryPath(){return"signgen"}},f=class{constructor({n:e,key_id:t}){s(this,"n");s(this,"key_id");s(this,"metadata");this.n=e,this.key_id=t,this.metadata=[],this.metadata.push({tag:z,value:t})}set ephClaim(e){this.metadata.push({tag:x,value:e.toJSON()})}get queryPath(){return"addEphemeralKey"}get requestSchema(){return{Request:[{name:"setup",type:"AddEphemeralKeyOpts"},{name:"challenge",type:"string"}],AddEphemeralKeyOpts:[{name:"n",type:"uint32"},{name:"metadata",type:"TaggedValue[]"}],TaggedValue:U}}},I=class{constructor(e,t,r,i){s(this,"authModule");s(this,"threshold");s(this,"totalNodes");s(this,"wp_client");u(t<2,"Threshold = ".concat(t," must be at least 2")),u(r<t,"Total nodes = ".concat(r," must be greater or equal to threshold = ").concat(t)),this.threshold=t,this.totalNodes=r,this.authModule=i,this.wp_client=e}async generateKey(e){let t=new g({t:this.threshold,n:this.totalNodes,permissions:e,key_label:void 0});return this.setEphClaimOf(t),await this.wp_client.startKeygen({setup:t,authModule:this.authModule})}async signMessage(e,t){h("keyId",e),h("message",t);let r=new P({t:this.threshold,key_id:e,message:t});return await this.wp_client.startSigngen({setup:r,authModule:this.authModule})}async addEphemeralKey(e){h("keyId",e);let t=new f({n:this.totalNodes,key_id:e});return this.setEphClaimOf(t),await this.wp_client.addEphemeralKey({setup:t,authModule:this.authModule})}setEphClaimOf(e){e.ephClaim=this.authModule.ephClaim}};var Y={name:"SilentShard authentication",version:"0.1.0"},X=[{name:"name",type:"string"},{name:"version",type:"string"}];function Z(n,e,t){let r;return n instanceof g?r=new g({t:n.t,n:n.n,key_label:n.key_label,permissions:void 0}):r=new f({n:n.n,key_id:n.key_id}),r.ephClaim=t,{types:y({EIP712Domain:X},n.requestSchema),domain:Y,primaryType:"Request",message:{setup:r,challenge:e}}}async function R({setup:n,eoa:e,challenge:t,browserWallet:r,ephClaim:i}){let a=Z(n,t,i),o=await r.signTypedData(e,a);return{credentials:{credentials:i.toJSON(),method:"eoa",id:e},signature:o}}import{ed25519 as te}from"@noble/curves/ed25519";import{Base64 as T}from"js-base64";import{hexToBytes as M}from"viem";async function N({user:n,challenge:e,rpConfig:t,ephClaim:r}){let i=M("0x".concat(e),{size:32}),a={publicKey:{authenticatorSelection:{residentKey:"preferred",userVerification:"required"},challenge:i,excludeCredentials:[],pubKeyCredParams:[{type:"public-key",alg:-7},{type:"public-key",alg:-257}],rp:{name:t.rpName,id:t.rpId},user:A(y({},n),{id:T.toUint8Array(n.id)})}},o=await navigator.credentials.create(a);if(o===null)throw new Error("No credential returned");let p=c(o.response.attestationObject),d={rawCredential:JSON.stringify({authenticatorAttachment:o.authenticatorAttachment,id:o.id,rawId:c(o.rawId),response:{attestationObject:p,clientDataJSON:c(o.response.clientDataJSON)},type:o.type}),origin:t.rpName,rpId:t.rpId};return{credentials:{credentials:r.toJSON(),method:"passkey",id:o.id},signature:JSON.stringify(d)}}async function D({challenge:n,allowCredentialId:e,rpConfig:t,ephClaim:r}){let i=M("0x".concat(n),{size:32}),a=e?[{type:"public-key",id:T.toUint8Array(e)}]:[],o={publicKey:{userVerification:"required",challenge:i,allowCredentials:a}},p=await navigator.credentials.get(o);if(p===null)throw new Error("Failed to get navigator credentials");let l=p.response,d=l.userHandle;if(d===null)throw new Error("User handle cannot be null");let B=c(l.signature),W={rawCredential:JSON.stringify({authenticatorAttachment:p.authenticatorAttachment,id:p.id,rawId:c(p.rawId),response:{authenticatorData:c(l.authenticatorData),clientDataJSON:c(l.clientDataJSON),signature:B,userHandle:c(d)},type:p.type}),origin:t.rpName,rpId:t.rpId};return{credentials:{credentials:r.toJSON(),method:"passkey",id:p.id},signature:JSON.stringify(W)}}import{toHex as J}from"viem";import{ed25519 as E}from"@noble/curves/ed25519";var m=class{constructor(e,t,r=3600){s(this,"ephId");s(this,"ephPK");s(this,"expiry");this.validateInputs(e,t,r),this.ephId=e,this.ephPK=J(t),this.expiry=Math.floor(Date.now()/1e3)+r}validateInputs(e,t,r){h("ephId",e),S(t),u(Number.isInteger(r)===!1,"lifetime must be an integer");let i=r>0&&r<=365*24*60*60;u(!i,"lifetime must be greater than 0 and less than or equal to 365 days")}toJSON(){return JSON.stringify({ephId:this.ephId,ephPK:this.ephPK,expiry:this.expiry})}};async function _({setup:n,challenge:e,ephSK:t,ephClaim:r}){let i={setup:n,challenge:e},a=new TextEncoder,o=J(E.sign(a.encode(JSON.stringify(i)),t));return{credentials:{credentials:r.toJSON(),method:"ephemeral",id:r.ephId},signature:o}}function j(){return E.utils.randomPrivateKey()}function ee(n){return E.getPublicKey(n)}import{isAddress as ne}from"viem";var K=class{constructor(e,t,r,i,a){s(this,"browserWallet");s(this,"eoa");s(this,"ephClaim");this.validateInputs(t,r),this.ephClaim=new m(e,i,a),this.browserWallet=r,this.eoa=t}validateInputs(e,t){u(!ne(e),"invalid Ethereum address format"),u(!((t==null?void 0:t.signTypedData)instanceof Function),"invalid browserWallet")}async authenticate({setup:e,challenge:t}){return await R({setup:e,eoa:this.eoa,challenge:t,browserWallet:this.browserWallet,ephClaim:this.ephClaim})}},v=class{constructor(e,t){s(this,"ephSK");s(this,"ephClaim");S(t),this.ephSK=t;let r=te.getPublicKey(this.ephSK);this.ephClaim=new m(e,r)}async authenticate({setup:e,challenge:t}){return await _({setup:e,challenge:t,ephSK:this.ephSK,ephClaim:this.ephClaim})}},b=class{constructor(e,t,r,i,a,o){s(this,"rpConfig");s(this,"allowCredentialId");s(this,"user");s(this,"ephClaim");this.ephClaim=new m(i,a,o),this.rpConfig=e,this.user=t,this.allowCredentialId=r}async authenticate({setup:e,challenge:t}){let r=e.queryPath==="addEphemeralKey";if(this.allowCredentialId||r)return await D({allowCredentialId:this.allowCredentialId,challenge:t,rpConfig:this.rpConfig,ephClaim:this.ephClaim});if(this.user)return await N({user:this.user,challenge:t,rpConfig:this.rpConfig,ephClaim:this.ephClaim});throw new Error("Invalid arguments for passkey authentication")}};import{publicKeyToAddress as q,toAccount as Ve}from"viem/accounts";import{secp256k1 as re}from"@noble/curves/secp256k1";import{hashMessage as ze,hashTypedData as Ye,keccak256 as Xe,serializeSignature as Ze,serializeTransaction as je,toHex as tt}from"viem";function ie(n){if(n.startsWith("0x")&&(n=n.slice(2)),n.startsWith("04"))return q("0x".concat(n," "));if(n.startsWith("02")||n.startsWith("03")){let e=re.ProjectivePoint.fromHex(n).toHex(!1);return q("0x".concat(e))}else throw new Error("Invalid public key")}export{K as EOAAuth,v as EphAuth,I as NetworkSigner,b as PasskeyAuth,C as WalletProviderServiceClient,ie as computeAddress,j as generateEphPrivateKey,ee as getEphPublicKey};
@@ -1,5 +1,6 @@
1
1
  import { AuthModule, UserAuthentication } from './authentication';
2
- import { type IWalletProviderServiceClient } from './walletProviderServiceClientInterface';
2
+ import { GetQueryPath, QueryPath, type IWalletProviderServiceClient } from './walletProviderServiceClientInterface';
3
+ import { EphClaim } from './ephemeralAuthentication';
3
4
  /**
4
5
  * Response from the network for keygen requests
5
6
  * @alpha
@@ -20,7 +21,9 @@ export interface KeygenResponse {
20
21
  */
21
22
  publicKey: string;
22
23
  /**
23
- * Optional credential id used for passkey authentication
24
+ * Optional credential id used for passkey authentication.
25
+ *
26
+ * Returned by Authenticator.
24
27
  */
25
28
  passkeyCredentialId?: string;
26
29
  }
@@ -38,8 +41,15 @@ export interface SignResponse {
38
41
  */
39
42
  recid: number;
40
43
  }
44
+ /**
45
+ * Response from the network for adding ephemeral key request
46
+ * @alpha
47
+ */
48
+ export interface AddEphemeralKeyResponse {
49
+ status: string;
50
+ }
41
51
  /** Key parameters used during generation */
42
- export declare class KeygenSetupOpts {
52
+ export declare class KeygenSetupOpts implements GetQueryPath {
43
53
  /** Threshold, number of parties that needs to participate in a protocol in order to produce valid signature */
44
54
  t: number;
45
55
  /** Total number of nodes that participate in Key generation, must be greater or equal than `t` */
@@ -49,29 +59,75 @@ export declare class KeygenSetupOpts {
49
59
  /** Metadata for a key. Currently they store the permissions, can be set in a constructor of this class.
50
60
  If permissions are not set, all operations are allowed.
51
61
  */
52
- metadata: {
53
- tag: number;
54
- value: string;
55
- }[];
56
- constructor({ t, n, ephPK, key_label, permissions, }: {
62
+ private metadata;
63
+ constructor({ t, n, key_label, permissions, }: {
57
64
  t: number;
58
65
  n: number;
59
- ephPK: string;
60
- key_label?: string;
61
- permissions?: string;
66
+ key_label: string | undefined;
67
+ permissions: string | undefined;
62
68
  });
69
+ set ephClaim(ephClaim: EphClaim);
70
+ get queryPath(): QueryPath;
71
+ get requestSchema(): {
72
+ Request: {
73
+ name: string;
74
+ type: string;
75
+ }[];
76
+ KeygenSetupOpts: {
77
+ name: string;
78
+ type: string;
79
+ }[];
80
+ TaggedValue: {
81
+ name: string;
82
+ type: string;
83
+ }[];
84
+ };
63
85
  }
64
86
  /** Parameters used in Signature execution */
65
- export type SignSetupOpts = {
66
- /** Nymber of nodes that will participate in the signature execution */
87
+ export declare class SignSetupOpts implements GetQueryPath {
88
+ /** Number of nodes that will participate in the signature execution */
67
89
  t: number;
68
90
  /** Select the key using it's ID */
69
91
  key_id: string;
70
92
  /** The message to sign */
71
93
  message: string;
72
- };
73
- /** Verifies if passed `params` object is of type SignSetupOpts */
74
- export declare function isSignSetupOpts(params: KeygenSetupOpts | SignSetupOpts): params is SignSetupOpts;
94
+ constructor({ t, key_id, message }: {
95
+ t: number;
96
+ key_id: string;
97
+ message: string;
98
+ });
99
+ get queryPath(): QueryPath;
100
+ }
101
+ export declare class AddEphemeralKeyOpts implements GetQueryPath {
102
+ /** Total number of nodes that participate in Adding Ephemeral Key */
103
+ n: number;
104
+ /** Select the key using it's ID */
105
+ key_id: string;
106
+ /** Metadata for a key. Currently they store the permissions, can be set in a constructor of this class.
107
+ If permissions are not set, all operations are allowed.
108
+ */
109
+ private metadata;
110
+ constructor({ n, key_id }: {
111
+ n: number;
112
+ key_id: string;
113
+ });
114
+ set ephClaim(ephClaim: EphClaim);
115
+ get queryPath(): QueryPath;
116
+ get requestSchema(): {
117
+ Request: {
118
+ name: string;
119
+ type: string;
120
+ }[];
121
+ AddEphemeralKeyOpts: {
122
+ name: string;
123
+ type: string;
124
+ }[];
125
+ TaggedValue: {
126
+ name: string;
127
+ type: string;
128
+ }[];
129
+ };
130
+ }
75
131
  /** The `user_authentication` contains signature over the `setup` parameter. */
76
132
  export type UserAuthenticatedRequest<T> = {
77
133
  setup: T;
@@ -98,21 +154,29 @@ export declare class NetworkSigner {
98
154
  * @param authModule - Authentication module, used to get confirmation from the User before request execution
99
155
  */
100
156
  constructor(wpClient: IWalletProviderServiceClient, threshold: number, totalNodes: number, authModule: AuthModule);
101
- /** API to generate a distributed key that's generated by Silent Network.
102
- * Uses `authModule` to get authentication of the request from the User
103
- * @param ephKey - ephemeral key used to authenticate the user during the session.
157
+ /** Generate a distributed key that's generated by Silent Network.
158
+ * Uses `authModule` to authenticate the User with the Silent Network.
104
159
  * @param permissions - optional permissions that will be stored in the key metadata.
105
160
  * The permissions are validated during sign requests.
106
161
  * @returns {@link KeygenResponse} containing `keyId` and the `pubKey` public part of the key
107
162
  * @public
108
163
  */
109
- authenticateAndCreateKey(ephKey: Uint8Array, permissions?: string): Promise<KeygenResponse>;
110
- /** Generate a signature. Uses `authModule` to authenticate the sign request by the User.
164
+ generateKey(permissions?: string): Promise<KeygenResponse>;
165
+ /** Generate a signature by the distributed key of Silent Network.
166
+ * Uses `authModule` to authenticate the sign request by the User.
111
167
  * The network chooses `t` nodes to execute the protocol.
112
- * @param keyId - the key id returned from `authenticateAndCreateKey`
168
+ * @param keyId - the key id returned from `keygen`
113
169
  * @param message - the message to sign by the MPC network
114
170
  * @returns {@link SignResponse}
115
171
  * @public
116
172
  */
117
- authenticateAndSign(keyId: string, message: string): Promise<SignResponse>;
173
+ signMessage(keyId: string, message: string): Promise<SignResponse>;
174
+ /** Add new ephemeral key to an exist distributed key on the network.
175
+ * Uses `authModule` to authenticate the request by the User.
176
+ * @param keyId - the key id returned from `keygen`
177
+ * @returns {@link AddEphemeralKeyResponse}
178
+ * @public
179
+ */
180
+ addEphemeralKey(keyId: string): Promise<AddEphemeralKeyResponse>;
181
+ private setEphClaimOf;
118
182
  }
@@ -1,4 +1,5 @@
1
1
  import { UserAuthentication } from './authentication';
2
+ import { EphClaim } from './ephemeralAuthentication';
2
3
  /** Information about the user currently registering. Read more: https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptions-user
3
4
  * @alpha
4
5
  * */
@@ -14,19 +15,15 @@ export type RelyingPartyConfig = {
14
15
  rpName: string;
15
16
  rpId: string;
16
17
  };
17
- export declare function passkeyRegister({ user, ephId, challenge, rpConfig, ephPK, lifetime, }: {
18
+ export declare function passkeyRegister({ user, challenge, rpConfig, ephClaim, }: {
18
19
  user: PasskeyUser;
19
- ephId: string;
20
20
  challenge: string;
21
21
  rpConfig: RelyingPartyConfig;
22
- ephPK: Uint8Array;
23
- lifetime: number;
22
+ ephClaim: EphClaim;
24
23
  }): Promise<UserAuthentication>;
25
- export declare function passkeyLogin({ ephId, challenge, credentialId, rpConfig, ephPK, lifetime, }: {
26
- ephId: string;
24
+ export declare function passkeyLogin({ challenge, allowCredentialId, rpConfig, ephClaim, }: {
27
25
  challenge: string;
28
- credentialId: string;
26
+ allowCredentialId: string | null;
29
27
  rpConfig: RelyingPartyConfig;
30
- ephPK: Uint8Array;
31
- lifetime: number;
28
+ ephClaim: EphClaim;
32
29
  }): Promise<UserAuthentication>;
@@ -0,0 +1 @@
1
+ {"fileNames":["../node_modules/typescript/lib/lib.es5.d.ts","../node_modules/typescript/lib/lib.es2015.d.ts","../node_modules/typescript/lib/lib.es2016.d.ts","../node_modules/typescript/lib/lib.es2017.d.ts","../node_modules/typescript/lib/lib.es2018.d.ts","../node_modules/typescript/lib/lib.es2019.d.ts","../node_modules/typescript/lib/lib.es2020.d.ts","../node_modules/typescript/lib/lib.es2021.d.ts","../node_modules/typescript/lib/lib.es2022.d.ts","../node_modules/typescript/lib/lib.es2023.d.ts","../node_modules/typescript/lib/lib.esnext.d.ts","../node_modules/typescript/lib/lib.dom.d.ts","../node_modules/typescript/lib/lib.es2015.core.d.ts","../node_modules/typescript/lib/lib.es2015.collection.d.ts","../node_modules/typescript/lib/lib.es2015.generator.d.ts","../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../node_modules/typescript/lib/lib.es2015.promise.d.ts","../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../node_modules/typescript/lib/lib.es2016.intl.d.ts","../node_modules/typescript/lib/lib.es2017.date.d.ts","../node_modules/typescript/lib/lib.es2017.object.d.ts","../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2017.string.d.ts","../node_modules/typescript/lib/lib.es2017.intl.d.ts","../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../node_modules/typescript/lib/lib.es2018.intl.d.ts","../node_modules/typescript/lib/lib.es2018.promise.d.ts","../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../node_modules/typescript/lib/lib.es2019.array.d.ts","../node_modules/typescript/lib/lib.es2019.object.d.ts","../node_modules/typescript/lib/lib.es2019.string.d.ts","../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../node_modules/typescript/lib/lib.es2019.intl.d.ts","../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../node_modules/typescript/lib/lib.es2020.date.d.ts","../node_modules/typescript/lib/lib.es2020.promise.d.ts","../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2020.string.d.ts","../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2020.intl.d.ts","../node_modules/typescript/lib/lib.es2020.number.d.ts","../node_modules/typescript/lib/lib.es2021.promise.d.ts","../node_modules/typescript/lib/lib.es2021.string.d.ts","../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../node_modules/typescript/lib/lib.es2021.intl.d.ts","../node_modules/typescript/lib/lib.es2022.array.d.ts","../node_modules/typescript/lib/lib.es2022.error.d.ts","../node_modules/typescript/lib/lib.es2022.intl.d.ts","../node_modules/typescript/lib/lib.es2022.object.d.ts","../node_modules/typescript/lib/lib.es2022.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2022.string.d.ts","../node_modules/typescript/lib/lib.es2022.regexp.d.ts","../node_modules/typescript/lib/lib.es2023.array.d.ts","../node_modules/typescript/lib/lib.es2023.collection.d.ts","../node_modules/typescript/lib/lib.es2023.intl.d.ts","../node_modules/typescript/lib/lib.esnext.array.d.ts","../node_modules/typescript/lib/lib.esnext.collection.d.ts","../node_modules/typescript/lib/lib.esnext.intl.d.ts","../node_modules/typescript/lib/lib.esnext.disposable.d.ts","../node_modules/typescript/lib/lib.esnext.string.d.ts","../node_modules/typescript/lib/lib.esnext.promise.d.ts","../node_modules/typescript/lib/lib.esnext.decorators.d.ts","../node_modules/typescript/lib/lib.esnext.object.d.ts","../node_modules/typescript/lib/lib.esnext.regexp.d.ts","../node_modules/typescript/lib/lib.esnext.iterator.d.ts","../node_modules/typescript/lib/lib.decorators.d.ts","../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../node_modules/@noble/curves/abstract/modular.d.ts","../node_modules/@noble/curves/abstract/curve.d.ts","../node_modules/@noble/curves/abstract/utils.d.ts","../node_modules/@noble/curves/abstract/edwards.d.ts","../node_modules/@noble/curves/abstract/hash-to-curve.d.ts","../node_modules/@noble/curves/abstract/montgomery.d.ts","../node_modules/@noble/curves/ed25519.d.ts","../node_modules/js-base64/base64.d.ts","../src/encoding.ts","../node_modules/abitype/dist/types/register.d.ts","../node_modules/abitype/dist/types/types.d.ts","../node_modules/abitype/dist/types/abi.d.ts","../node_modules/abitype/dist/types/errors.d.ts","../node_modules/abitype/dist/types/narrow.d.ts","../node_modules/abitype/dist/types/utils.d.ts","../node_modules/abitype/dist/types/human-readable/types/signatures.d.ts","../node_modules/abitype/dist/types/human-readable/formatAbiParameter.d.ts","../node_modules/abitype/dist/types/human-readable/formatAbiParameters.d.ts","../node_modules/abitype/dist/types/human-readable/formatAbiItem.d.ts","../node_modules/abitype/dist/types/human-readable/formatAbi.d.ts","../node_modules/abitype/dist/types/human-readable/types/utils.d.ts","../node_modules/abitype/dist/types/human-readable/types/structs.d.ts","../node_modules/abitype/dist/types/human-readable/parseAbi.d.ts","../node_modules/abitype/dist/types/human-readable/parseAbiItem.d.ts","../node_modules/abitype/dist/types/human-readable/parseAbiParameter.d.ts","../node_modules/abitype/dist/types/human-readable/parseAbiParameters.d.ts","../node_modules/abitype/dist/types/human-readable/errors/abiItem.d.ts","../node_modules/abitype/dist/types/human-readable/errors/abiParameter.d.ts","../node_modules/abitype/dist/types/human-readable/errors/signature.d.ts","../node_modules/abitype/dist/types/human-readable/errors/splitParameters.d.ts","../node_modules/abitype/dist/types/human-readable/errors/struct.d.ts","../node_modules/abitype/dist/types/exports/index.d.ts","../node_modules/webauthn-p256/_types/types.d.ts","../node_modules/webauthn-p256/_types/credential.d.ts","../node_modules/webauthn-p256/_types/publicKey.d.ts","../node_modules/webauthn-p256/_types/sign.d.ts","../node_modules/webauthn-p256/_types/utils.d.ts","../node_modules/webauthn-p256/_types/verify.d.ts","../node_modules/webauthn-p256/_types/index.d.ts","../node_modules/viem/_types/errors/utils.d.ts","../node_modules/viem/_types/accounts/utils/parseAccount.d.ts","../node_modules/viem/_types/types/utils.d.ts","../node_modules/@scure/bip32/lib/index.d.ts","../node_modules/viem/_types/types/account.d.ts","../node_modules/viem/_types/types/misc.d.ts","../node_modules/viem/_types/account-abstraction/types/entryPointVersion.d.ts","../node_modules/viem/_types/experimental/eip7702/types/authorization.d.ts","../node_modules/viem/_types/types/eip4844.d.ts","../node_modules/viem/_types/types/fee.d.ts","../node_modules/viem/_types/types/kzg.d.ts","../node_modules/viem/_types/types/log.d.ts","../node_modules/viem/_types/types/transaction.d.ts","../node_modules/viem/_types/types/contract.d.ts","../node_modules/viem/_types/types/multicall.d.ts","../node_modules/viem/_types/account-abstraction/types/userOperation.d.ts","../node_modules/viem/_types/account-abstraction/types/rpc.d.ts","../node_modules/viem/_types/types/withdrawal.d.ts","../node_modules/viem/_types/types/block.d.ts","../node_modules/viem/_types/experimental/eip7702/types/rpc.d.ts","../node_modules/viem/_types/types/proof.d.ts","../node_modules/viem/_types/types/rpc.d.ts","../node_modules/viem/_types/types/eip1193.d.ts","../node_modules/viem/_types/clients/transports/createTransport.d.ts","../node_modules/viem/_types/errors/base.d.ts","../node_modules/viem/_types/errors/fee.d.ts","../node_modules/viem/_types/utils/signature/recoverAddress.d.ts","../node_modules/viem/_types/utils/data/concat.d.ts","../node_modules/viem/_types/utils/data/isHex.d.ts","../node_modules/viem/_types/errors/data.d.ts","../node_modules/viem/_types/utils/data/pad.d.ts","../node_modules/viem/_types/errors/encoding.d.ts","../node_modules/viem/_types/utils/data/size.d.ts","../node_modules/viem/_types/utils/data/trim.d.ts","../node_modules/viem/_types/utils/encoding/fromHex.d.ts","../node_modules/viem/_types/utils/encoding/toHex.d.ts","../node_modules/viem/_types/utils/encoding/toBytes.d.ts","../node_modules/viem/_types/errors/cursor.d.ts","../node_modules/viem/_types/utils/cursor.d.ts","../node_modules/viem/_types/utils/encoding/toRlp.d.ts","../node_modules/viem/_types/utils/hash/keccak256.d.ts","../node_modules/viem/_types/experimental/eip7702/utils/hashAuthorization.d.ts","../node_modules/viem/_types/experimental/eip7702/utils/recoverAuthorizationAddress.d.ts","../node_modules/viem/_types/types/stateOverride.d.ts","../node_modules/viem/_types/errors/request.d.ts","../node_modules/viem/_types/errors/rpc.d.ts","../node_modules/viem/_types/utils/promise/createBatchScheduler.d.ts","../node_modules/viem/_types/utils/promise/withRetry.d.ts","../node_modules/viem/_types/utils/rpc/socket.d.ts","../node_modules/viem/_types/utils/buildRequest.d.ts","../node_modules/viem/_types/errors/estimateGas.d.ts","../node_modules/viem/_types/errors/transaction.d.ts","../node_modules/viem/_types/utils/transaction/getTransactionType.d.ts","../node_modules/viem/_types/utils/blob/blobsToCommitments.d.ts","../node_modules/viem/_types/utils/blob/blobsToProofs.d.ts","../node_modules/viem/_types/utils/hash/sha256.d.ts","../node_modules/viem/_types/utils/blob/commitmentToVersionedHash.d.ts","../node_modules/viem/_types/utils/blob/commitmentsToVersionedHashes.d.ts","../node_modules/viem/_types/errors/blob.d.ts","../node_modules/viem/_types/utils/blob/toBlobs.d.ts","../node_modules/viem/_types/utils/blob/toBlobSidecars.d.ts","../node_modules/viem/_types/experimental/eip7702/utils/serializeAuthorizationList.d.ts","../node_modules/viem/_types/errors/address.d.ts","../node_modules/viem/_types/errors/chain.d.ts","../node_modules/viem/_types/errors/node.d.ts","../node_modules/viem/_types/utils/lru.d.ts","../node_modules/viem/_types/utils/address/isAddress.d.ts","../node_modules/viem/_types/utils/transaction/assertTransaction.d.ts","../node_modules/viem/_types/utils/transaction/serializeAccessList.d.ts","../node_modules/viem/_types/utils/transaction/serializeTransaction.d.ts","../node_modules/viem/_types/accounts/utils/sign.d.ts","../node_modules/viem/_types/accounts/utils/signTransaction.d.ts","../node_modules/viem/_types/errors/account.d.ts","../node_modules/viem/_types/utils/chain/assertCurrentChain.d.ts","../node_modules/viem/_types/utils/errors/getTransactionError.d.ts","../node_modules/viem/_types/utils/formatters/formatter.d.ts","../node_modules/viem/_types/utils/formatters/transactionRequest.d.ts","../node_modules/viem/_types/utils/transaction/assertRequest.d.ts","../node_modules/viem/_types/actions/public/getChainId.d.ts","../node_modules/viem/_types/actions/wallet/sendRawTransaction.d.ts","../node_modules/viem/_types/actions/wallet/sendTransaction.d.ts","../node_modules/viem/_types/utils/errors/getNodeError.d.ts","../node_modules/viem/_types/utils/errors/getEstimateGasError.d.ts","../node_modules/viem/_types/actions/public/estimateGas.d.ts","../node_modules/viem/_types/errors/block.d.ts","../node_modules/viem/_types/utils/formatters/transaction.d.ts","../node_modules/viem/_types/utils/formatters/block.d.ts","../node_modules/viem/_types/actions/public/getBlock.d.ts","../node_modules/viem/_types/actions/public/getTransactionCount.d.ts","../node_modules/viem/_types/utils/nonceManager.d.ts","../node_modules/viem/_types/actions/wallet/prepareTransactionRequest.d.ts","../node_modules/viem/_types/actions/public/getGasPrice.d.ts","../node_modules/viem/_types/actions/public/estimateMaxPriorityFeePerGas.d.ts","../node_modules/viem/_types/actions/public/estimateFeesPerGas.d.ts","../node_modules/viem/_types/types/chain.d.ts","../node_modules/viem/_types/errors/abi.d.ts","../node_modules/viem/_types/utils/data/slice.d.ts","../node_modules/viem/_types/utils/hash/hashSignature.d.ts","../node_modules/viem/_types/utils/hash/normalizeSignature.d.ts","../node_modules/viem/_types/utils/hash/toSignature.d.ts","../node_modules/viem/_types/utils/hash/toSignatureHash.d.ts","../node_modules/viem/_types/utils/hash/toFunctionSelector.d.ts","../node_modules/viem/_types/utils/address/getAddress.d.ts","../node_modules/viem/_types/utils/encoding/fromBytes.d.ts","../node_modules/viem/_types/utils/abi/decodeAbiParameters.d.ts","../node_modules/viem/_types/utils/abi/formatAbiItem.d.ts","../node_modules/viem/_types/utils/abi/decodeErrorResult.d.ts","../node_modules/viem/_types/errors/contract.d.ts","../node_modules/viem/_types/utils/abi/getAbiItem.d.ts","../node_modules/viem/_types/utils/abi/decodeFunctionResult.d.ts","../node_modules/viem/_types/utils/abi/encodeAbiParameters.d.ts","../node_modules/viem/_types/utils/abi/encodeDeployData.d.ts","../node_modules/viem/_types/utils/abi/encodeFunctionData.d.ts","../node_modules/viem/_types/utils/chain/getChainContractAddress.d.ts","../node_modules/viem/_types/utils/errors/getCallError.d.ts","../node_modules/viem/_types/errors/stateOverride.d.ts","../node_modules/viem/_types/utils/stateOverride.d.ts","../node_modules/viem/_types/actions/public/call.d.ts","../node_modules/viem/_types/errors/ccip.d.ts","../node_modules/viem/_types/utils/ccip.d.ts","../node_modules/viem/_types/utils/ens/encodedLabelToLabelhash.d.ts","../node_modules/viem/_types/utils/ens/namehash.d.ts","../node_modules/viem/_types/utils/ens/encodeLabelhash.d.ts","../node_modules/viem/_types/utils/ens/labelhash.d.ts","../node_modules/viem/_types/utils/ens/packetToBytes.d.ts","../node_modules/viem/_types/utils/errors/getContractError.d.ts","../node_modules/viem/_types/actions/public/readContract.d.ts","../node_modules/viem/_types/actions/ens/getEnsAddress.d.ts","../node_modules/viem/_types/types/ens.d.ts","../node_modules/viem/_types/errors/ens.d.ts","../node_modules/viem/_types/utils/ens/avatar/utils.d.ts","../node_modules/viem/_types/utils/ens/avatar/parseAvatarRecord.d.ts","../node_modules/viem/_types/actions/ens/getEnsText.d.ts","../node_modules/viem/_types/actions/ens/getEnsAvatar.d.ts","../node_modules/viem/_types/actions/ens/getEnsName.d.ts","../node_modules/viem/_types/actions/ens/getEnsResolver.d.ts","../node_modules/viem/_types/types/filter.d.ts","../node_modules/viem/_types/actions/public/createBlockFilter.d.ts","../node_modules/viem/_types/errors/log.d.ts","../node_modules/viem/_types/utils/hash/toEventSelector.d.ts","../node_modules/viem/_types/utils/abi/encodeEventTopics.d.ts","../node_modules/viem/_types/actions/public/createContractEventFilter.d.ts","../node_modules/viem/_types/actions/public/createEventFilter.d.ts","../node_modules/viem/_types/actions/public/createPendingTransactionFilter.d.ts","../node_modules/viem/_types/actions/public/estimateContractGas.d.ts","../node_modules/viem/_types/actions/public/getBalance.d.ts","../node_modules/viem/_types/actions/public/getBlobBaseFee.d.ts","../node_modules/viem/_types/utils/promise/withCache.d.ts","../node_modules/viem/_types/actions/public/getBlockNumber.d.ts","../node_modules/viem/_types/actions/public/getBlockTransactionCount.d.ts","../node_modules/viem/_types/actions/public/getCode.d.ts","../node_modules/viem/_types/utils/abi/decodeEventLog.d.ts","../node_modules/viem/_types/utils/formatters/log.d.ts","../node_modules/viem/_types/actions/public/getLogs.d.ts","../node_modules/viem/_types/actions/public/getContractEvents.d.ts","../node_modules/viem/_types/errors/eip712.d.ts","../node_modules/viem/_types/actions/public/getEip712Domain.d.ts","../node_modules/viem/_types/utils/formatters/feeHistory.d.ts","../node_modules/viem/_types/actions/public/getFeeHistory.d.ts","../node_modules/viem/_types/actions/public/getFilterChanges.d.ts","../node_modules/viem/_types/actions/public/getFilterLogs.d.ts","../node_modules/viem/_types/utils/formatters/proof.d.ts","../node_modules/viem/_types/actions/public/getProof.d.ts","../node_modules/viem/_types/actions/public/getStorageAt.d.ts","../node_modules/viem/_types/actions/public/getTransaction.d.ts","../node_modules/viem/_types/utils/formatters/transactionReceipt.d.ts","../node_modules/viem/_types/actions/public/getTransactionConfirmations.d.ts","../node_modules/viem/_types/actions/public/getTransactionReceipt.d.ts","../node_modules/viem/_types/actions/public/multicall.d.ts","../node_modules/viem/_types/actions/wallet/writeContract.d.ts","../node_modules/viem/_types/actions/public/simulateContract.d.ts","../node_modules/viem/_types/actions/public/uninstallFilter.d.ts","../node_modules/viem/_types/utils/signature/hashMessage.d.ts","../node_modules/viem/_types/actions/public/verifyHash.d.ts","../node_modules/viem/_types/actions/public/verifyMessage.d.ts","../node_modules/viem/_types/types/typedData.d.ts","../node_modules/viem/_types/utils/typedData.d.ts","../node_modules/viem/_types/utils/signature/hashTypedData.d.ts","../node_modules/viem/_types/actions/public/verifyTypedData.d.ts","../node_modules/viem/_types/utils/observe.d.ts","../node_modules/viem/_types/clients/transports/fallback.d.ts","../node_modules/viem/_types/types/transport.d.ts","../node_modules/viem/_types/utils/poll.d.ts","../node_modules/viem/_types/actions/public/watchBlockNumber.d.ts","../node_modules/viem/_types/actions/public/waitForTransactionReceipt.d.ts","../node_modules/viem/_types/utils/stringify.d.ts","../node_modules/viem/_types/actions/public/watchBlocks.d.ts","../node_modules/viem/_types/actions/public/watchContractEvent.d.ts","../node_modules/viem/_types/actions/public/watchEvent.d.ts","../node_modules/viem/_types/actions/public/watchPendingTransactions.d.ts","../node_modules/viem/_types/utils/siwe/types.d.ts","../node_modules/viem/_types/utils/siwe/validateSiweMessage.d.ts","../node_modules/viem/_types/actions/siwe/verifySiweMessage.d.ts","../node_modules/viem/_types/clients/decorators/public.d.ts","../node_modules/viem/_types/actions/wallet/addChain.d.ts","../node_modules/viem/_types/actions/wallet/deployContract.d.ts","../node_modules/viem/_types/actions/wallet/getAddresses.d.ts","../node_modules/viem/_types/actions/wallet/getPermissions.d.ts","../node_modules/viem/_types/actions/wallet/requestAddresses.d.ts","../node_modules/viem/_types/actions/wallet/requestPermissions.d.ts","../node_modules/viem/_types/accounts/utils/signMessage.d.ts","../node_modules/viem/_types/actions/wallet/signMessage.d.ts","../node_modules/viem/_types/actions/wallet/signTransaction.d.ts","../node_modules/viem/_types/accounts/utils/signTypedData.d.ts","../node_modules/viem/_types/actions/wallet/signTypedData.d.ts","../node_modules/viem/_types/actions/wallet/switchChain.d.ts","../node_modules/viem/_types/actions/wallet/watchAsset.d.ts","../node_modules/viem/_types/clients/decorators/wallet.d.ts","../node_modules/viem/_types/clients/createClient.d.ts","../node_modules/viem/_types/account-abstraction/accounts/types.d.ts","../node_modules/viem/_types/accounts/utils/signAuthorization.d.ts","../node_modules/viem/_types/accounts/types.d.ts","../node_modules/viem/_types/actions/getContract.d.ts","../node_modules/viem/_types/actions/test/dumpState.d.ts","../node_modules/viem/_types/actions/test/getAutomine.d.ts","../node_modules/viem/_types/actions/test/getTxpoolContent.d.ts","../node_modules/viem/_types/actions/test/getTxpoolStatus.d.ts","../node_modules/viem/_types/actions/test/impersonateAccount.d.ts","../node_modules/viem/_types/actions/test/increaseTime.d.ts","../node_modules/viem/_types/actions/test/inspectTxpool.d.ts","../node_modules/viem/_types/actions/test/loadState.d.ts","../node_modules/viem/_types/actions/test/mine.d.ts","../node_modules/viem/_types/actions/test/reset.d.ts","../node_modules/viem/_types/actions/test/revert.d.ts","../node_modules/viem/_types/actions/test/sendUnsignedTransaction.d.ts","../node_modules/viem/_types/actions/test/setBalance.d.ts","../node_modules/viem/_types/actions/test/setBlockGasLimit.d.ts","../node_modules/viem/_types/actions/test/setBlockTimestampInterval.d.ts","../node_modules/viem/_types/actions/test/setCode.d.ts","../node_modules/viem/_types/actions/test/setCoinbase.d.ts","../node_modules/viem/_types/actions/test/setIntervalMining.d.ts","../node_modules/viem/_types/actions/test/setMinGasPrice.d.ts","../node_modules/viem/_types/actions/test/setNextBlockBaseFeePerGas.d.ts","../node_modules/viem/_types/actions/test/setNextBlockTimestamp.d.ts","../node_modules/viem/_types/actions/test/setNonce.d.ts","../node_modules/viem/_types/actions/test/setStorageAt.d.ts","../node_modules/viem/_types/actions/test/stopImpersonatingAccount.d.ts","../node_modules/viem/_types/clients/decorators/test.d.ts","../node_modules/viem/_types/clients/createTestClient.d.ts","../node_modules/viem/_types/actions/test/dropTransaction.d.ts","../node_modules/viem/_types/actions/test/snapshot.d.ts","../node_modules/viem/_types/actions/test/removeBlockTimestampInterval.d.ts","../node_modules/viem/_types/actions/test/setAutomine.d.ts","../node_modules/viem/_types/actions/test/setLoggingEnabled.d.ts","../node_modules/viem/_types/actions/test/setRpcUrl.d.ts","../node_modules/viem/_types/clients/transports/custom.d.ts","../node_modules/viem/_types/errors/transport.d.ts","../node_modules/viem/_types/utils/promise/withTimeout.d.ts","../node_modules/viem/_types/utils/rpc/http.d.ts","../node_modules/viem/_types/clients/transports/http.d.ts","../node_modules/viem/_types/clients/createPublicClient.d.ts","../node_modules/viem/_types/clients/createWalletClient.d.ts","../node_modules/viem/_types/utils/rpc/webSocket.d.ts","../node_modules/viem/_types/clients/transports/webSocket.d.ts","../node_modules/viem/_types/constants/abis.d.ts","../node_modules/viem/_types/constants/address.d.ts","../node_modules/viem/_types/constants/contracts.d.ts","../node_modules/viem/_types/constants/unit.d.ts","../node_modules/viem/_types/constants/number.d.ts","../node_modules/viem/_types/constants/bytes.d.ts","../node_modules/viem/_types/constants/strings.d.ts","../node_modules/viem/_types/errors/unit.d.ts","../node_modules/viem/_types/errors/typedData.d.ts","../node_modules/viem/_types/utils/abi/decodeDeployData.d.ts","../node_modules/viem/_types/utils/abi/decodeFunctionData.d.ts","../node_modules/viem/_types/utils/abi/encodeErrorResult.d.ts","../node_modules/viem/_types/utils/abi/prepareEncodeFunctionData.d.ts","../node_modules/viem/_types/utils/abi/encodeFunctionResult.d.ts","../node_modules/viem/_types/utils/abi/parseEventLogs.d.ts","../node_modules/viem/_types/utils/data/isBytes.d.ts","../node_modules/viem/_types/utils/address/getContractAddress.d.ts","../node_modules/viem/_types/utils/transaction/getSerializedTransactionType.d.ts","../node_modules/viem/_types/utils/signature/compactSignatureToSignature.d.ts","../node_modules/viem/_types/utils/signature/parseCompactSignature.d.ts","../node_modules/viem/_types/utils/signature/parseSignature.d.ts","../node_modules/viem/_types/utils/signature/recoverMessageAddress.d.ts","../node_modules/viem/_types/utils/signature/recoverPublicKey.d.ts","../node_modules/viem/_types/utils/signature/serializeSignature.d.ts","../node_modules/viem/_types/utils/signature/recoverTransactionAddress.d.ts","../node_modules/viem/_types/utils/signature/recoverTypedDataAddress.d.ts","../node_modules/viem/_types/utils/signature/signatureToCompactSignature.d.ts","../node_modules/viem/_types/utils/signature/serializeCompactSignature.d.ts","../node_modules/viem/_types/utils/address/isAddressEqual.d.ts","../node_modules/viem/_types/utils/signature/verifyHash.d.ts","../node_modules/viem/_types/utils/signature/verifyMessage.d.ts","../node_modules/viem/_types/utils/signature/verifyTypedData.d.ts","../node_modules/viem/_types/utils/signature/isErc6492Signature.d.ts","../node_modules/viem/_types/utils/signature/parseErc6492Signature.d.ts","../node_modules/viem/_types/utils/signature/serializeErc6492Signature.d.ts","../node_modules/viem/_types/utils/blob/sidecarsToVersionedHashes.d.ts","../node_modules/viem/_types/utils/blob/fromBlobs.d.ts","../node_modules/viem/_types/utils/kzg/defineKzg.d.ts","../node_modules/viem/_types/utils/kzg/setupKzg.d.ts","../node_modules/viem/_types/utils/chain/defineChain.d.ts","../node_modules/viem/_types/utils/chain/extractChain.d.ts","../node_modules/viem/_types/utils/abi/encodePacked.d.ts","../node_modules/viem/_types/utils/unit/formatUnits.d.ts","../node_modules/viem/_types/utils/unit/formatEther.d.ts","../node_modules/viem/_types/utils/unit/formatGwei.d.ts","../node_modules/viem/_types/utils/encoding/fromRlp.d.ts","../node_modules/viem/_types/utils/hash/toEventSignature.d.ts","../node_modules/viem/_types/utils/hash/toFunctionSignature.d.ts","../node_modules/viem/_types/utils/hash/toEventHash.d.ts","../node_modules/viem/_types/utils/hash/toFunctionHash.d.ts","../node_modules/viem/_types/utils/signature/toPrefixedMessage.d.ts","../node_modules/viem/_types/utils/hash/isHash.d.ts","../node_modules/viem/_types/utils/hash/ripemd160.d.ts","../node_modules/viem/_types/utils/unit/parseUnits.d.ts","../node_modules/viem/_types/utils/unit/parseEther.d.ts","../node_modules/viem/_types/utils/unit/parseGwei.d.ts","../node_modules/viem/_types/utils/transaction/parseTransaction.d.ts","../node_modules/viem/_types/index.d.ts","../src/validator.ts","../src/ephemeralAuthentication.ts","../src/passkeyAuthentication.ts","../src/authentication.ts","../src/walletProviderServiceClientInterface.ts","../src/networkSigner.ts","../src/EOAauthentication.ts","../src/walletProviderServiceClient.ts","../node_modules/@scure/bip39/wordlists/czech.d.ts","../node_modules/@scure/bip39/wordlists/english.d.ts","../node_modules/@scure/bip39/wordlists/french.d.ts","../node_modules/@scure/bip39/wordlists/italian.d.ts","../node_modules/@scure/bip39/wordlists/japanese.d.ts","../node_modules/@scure/bip39/wordlists/korean.d.ts","../node_modules/@scure/bip39/wordlists/portuguese.d.ts","../node_modules/@scure/bip39/wordlists/simplified-chinese.d.ts","../node_modules/@scure/bip39/wordlists/spanish.d.ts","../node_modules/@scure/bip39/wordlists/traditional-chinese.d.ts","../node_modules/viem/_types/accounts/wordlists.d.ts","../node_modules/viem/_types/accounts/generateMnemonic.d.ts","../node_modules/viem/_types/accounts/generatePrivateKey.d.ts","../node_modules/viem/_types/accounts/toAccount.d.ts","../node_modules/viem/_types/accounts/utils/publicKeyToAddress.d.ts","../node_modules/viem/_types/accounts/privateKeyToAccount.d.ts","../node_modules/viem/_types/accounts/hdKeyToAccount.d.ts","../node_modules/viem/_types/accounts/mnemonicToAccount.d.ts","../node_modules/viem/_types/accounts/utils/privateKeyToAddress.d.ts","../node_modules/viem/_types/accounts/index.d.ts","../node_modules/@noble/curves/abstract/weierstrass.d.ts","../node_modules/@noble/curves/secp256k1.d.ts","../src/viemSigner.ts","../src/index.ts","../node_modules/@types/argparse/index.d.ts","../node_modules/@types/estree/index.d.ts","../node_modules/@types/json-schema/index.d.ts","../node_modules/@types/eslint/use-at-your-own-risk.d.ts","../node_modules/@types/eslint/index.d.ts","../node_modules/@types/eslint-plugin-security/index.d.ts","../node_modules/@types/triple-beam/index.d.ts"],"fileIdsList":[[74],[74,75,76],[75,76,77,78,79],[74,76,78,453],[461],[458,459,460],[83,84],[84],[83,85,86,87,88,90,91,92,93,96,97,98,99,100,101,102,103,104],[86],[85,86,89],[85,86],[85,92],[85,89,91],[84,85,89],[84,85,90],[84,85,89,94,95],[84,85,87,89,94,95],[84,85],[84,85,89,94],[83,84,85,89,95],[83,84,85],[105,112,115,118,119,128,202,288,321],[322],[118,119,128],[105,115,118,119,124,125,126,127],[113],[113,118,148],[113,117,148,324,448],[105,114,116,183,184,202,313,316,323,324,390,443,444,445,446,447,448,449,450,451],[113,324,449],[113,118,148,183,184,202,313,316,324,446,447],[105,113,175,179,324],[105,115,117,118,120,125,165,182,202,288,322,323],[105,113,324],[105,113,118,148,447],[105,113,118,153,215],[113,115,118,120,154,183],[113,118,183,285],[113,118,125,153,165,182,183],[105,113,118,183,288,290],[433,434,435,436,437,438,439,440,441,442],[105,113,115,136,146,148,207,222,225,226,234,237,239,321],[113,115,136,207,241,244,245,321],[105,113,115,136,148,207,226,237,239,321],[105,115,136,148,207,222,225,226,234,237,239,321],[105,113,115,126,136,207,239,254,257,267,282,283,300,321,324],[105,113,114,115,118,131,136,148,156,159,162,189,190,207,220,222,224,225,226,227,229,321,324],[113,136,162,207,249,321],[105,113,126,131,136,148,162,207,249,253,321],[105,113,115,126,131,136,148,162,207,249,253,321],[105,114,115,126,136,196,207,225,238,321,324],[113,117,122,131,136,138,203,204,205,207,321],[105,114,115,131,136,148,155,156,162,189,190,195,207,321,324],[113,117,131,136,138,147,162,200,203,204,207,321],[105,113,131,136,148,162,207,321],[113,136,162,207,321,324],[113,115,118,131,136,148,162,197,199,207,321,324],[113,136,162,207,260,321],[113,118,131,136,147,148,162,207,321],[113,136,147,162,207,321,324],[105,113,118,131,136,148,162,207,321],[105,113,118,124,126,131,136,207,221,266,321],[105,113,115,118,136,239,268,321],[122,131,136,148,162,207,270,321],[105,113,118,124,131,136,162,207,249,264,265,321],[105,113,124,131,136,162,207,249,264,265,321],[105,113,118,124,126,131,136,148,162,207,253,264,265,321],[105,113,118,131,133,136,148,162,207,274,321],[113,115,118,131,136,148,162,198,207,321],[113,118,136,207,261,277,278,321],[105,113,131,136,147,148,162,207,321,324],[113,118,136,162,164,207,278,321,424],[105,113,126,127,136,207,222,225,226,230,238,239,321],[105,115,126,136,207,222,225,230,238,321],[105,113,114,115,117,118,125,126,136,207,222,225,230,238,282,321],[105,113,115,118,136,141,144,148,207,224,230,321],[105,113,115,118,136,207,285,286,321],[105,113,118,136,207,286,288,290,321],[113,118,125,136,160,200,207,277,280,292,296,321],[113,136,207,261,294,295,321],[113,131,136,200,207,294,295,298,321],[105,113,124,126,131,136,207,292,294,298,321],[113,118,136,207,292,294,298,321],[113,115,118,136,207,285,286,304,321],[113,117,118,136,162,207,351],[113,117,136,162,207,351],[105,113,117,134,136,162,207,351],[105,113,117,136,162,207,351],[113,117,134,136,162,207,351],[113,117,118,136,162,189,207,351],[105,113,117,118,136,162,207,351],[113,136,148,162,207,321,324],[105,113,115,118,126,136,193,207,321,324],[105,113,136,162,207,215,321,324],[113,135,136,162,207,321,324],[105,114,115,117,123,125,136,165,185,189,190,196,200,201,202,206,207,321,324],[105,113,136,162,207,321,324],[113,115,135,136,162,207,321,324],[113,118,125,136,162,207,321],[105,113,114,115,117,118,123,136,155,162,184,185,186,187,189,190,191,192,203,207,321,324],[113,114,117,118,136,148,162,207,313,321,324],[113,114,115,117,123,125,136,148,162,165,184,186,189,190,191,207,321,324],[105,113,114,117,118,136,141,162,185,207,288,289,298,316,321,324],[105,113,114,115,117,118,126,136,185,189,193,207,225,238,283,321,324],[105,113,114,115,117,135,136,207,232,306,320,324],[105,113,115,117,135,136,207,306,321],[105,113,115,117,135,136,207,321,324,350],[105,113,115,117,135,136,207,320,321,324],[105,117,122,126,131,136,191,192,196,200,201,203,204,205,206,207,230,239,240,245,246,247,248,249,250,254,255,256,257,258,259,261,262,263,266,267,269,271,272,273,275,276,277,279,280,281,283,284,287,291,296,297,299,300,301,302,305,321],[117,134,136,207,321,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,351,352],[105,126,136,191,192,193,203,207,282,307,308,309,310,311,312,314,315,317,318,319,321,324],[113,135,207,321],[113,136],[113,136,207],[113,136,359,361],[113,118,134,136,161,359,365],[105,118,137],[137],[118,137],[137,207],[105,118,137,207,219,230],[105,137],[137,196,207,324],[115,137],[137,156],[118,125,131,137,193,207,324],[105],[105,115,118],[105,118],[113,118,120,140,148,149,152,153],[105,113,115,118,120,139,154],[113,120],[105,115,117,118,121,122,123,124,125,126,127,129,130,131,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,152,153,156,157,158,160,163,164,165,166,167,168,169,170,172,173,175,176,177,179,180,181,182,186,189,190,191,192,193,196,197,198,199,200,201,202,203,204,205,206,207,208,209,214,215,216,217,219,220,221,222,223,224,225,226,228,230,232,234,236,238,239,240,241,242,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,261,262,263,264,265,266,267,269,271,272,273,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,293,294,296,297,298,299,300,301,302,306,307,308,309,310,311,312,314,315,317,318,319,320,321,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,362,363,364,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423],[105,115,116,324],[105,118,125,130],[105,115,117,122,125,136,182,199,203,206,321],[105,115,118,125],[105,115,118,129,131,134],[118],[115],[105,115,118,126,131,135],[105,115,118,125,324],[105,118,126],[105,115,126],[105,115,118,122,124,125,131,132,133],[105,115,118,120,121,122,123,124],[115,136,293],[105,115],[105,113,118,145,146,148,149,151,208,209,215,216],[105,113,118,126,208,217],[105,113,115,118,126,208,214,217,218],[105,113,115,118,126,208,217,218,252],[105,113,115,118,126,208,209,214,217,218],[105,113,115,118,126,208,217,221],[105,113,118,140,143,145,148,175,179,208,209],[105,113,115,118,126,140,208,223],[105,113,115,118,126,140,214,218,221,223],[105,113,115,118,126,149,153,208,218,221,223,251,252],[105,113,115,118,126,140,208,214,218,221,223],[105,113,115,118,126,208,221,223],[105,113,118,140,143,148,175,179,208],[105,113,126,208],[105,113,115,118,126,141,179,208,214],[105,113,124,126,134,264],[105,113,115,118,126,140,208,214,218,221],[105,113,149,153,179],[105,113,118,140,143,149,152,153,209,215,382],[105,113,178],[105,113,175],[113,118,123,148,149],[113,118,148,168],[113,118,169],[113,118,148,149,151],[113,118,121,169],[113,115,118,121,123,166,167,172],[113,118,145,148,149,151,171],[113,135,157,158,159,160,161],[105,113,118,136,157,207,230,231,321],[113,176,207],[115,207],[113,207],[176,207],[113,118,150],[113,118],[113,118,142],[113,118,141],[113,118,141,142,145],[113,118,146,147,148],[113,118,144,145,146,149],[113,118,137,144,148,149,151,152],[113,118,141,143,147,148],[113,118,143,144,147],[113,136,207,241,243,321],[105,113,136,207,239,241,242,321],[113,148,149,153,233],[113,140,148,149,153,233],[113,118,149,235,236],[113,194,207,220,230],[105,113,220],[113,163,194,196,207,324],[115,137,177,193],[113,164,193,194,207,324],[113,115,118,131,134,188,198,207],[113,122,134],[113,115],[113,115,124,134],[113,115,133,134],[113,115,125,131,134,188,207],[113,115,125,134,188,207],[113,149,153],[113,118,141,145],[113,118,141,148,149],[213],[113,213],[212],[105,113,209,213],[105,113,211],[105,113,210,212],[113,123],[113,404],[105,115,321],[113,115,134,157,360],[113,134,159],[161],[113,118,148,149],[113,118,153],[105,113,118,148,153,223,288,289],[113,118,209],[105,113,115,118,217,399],[105,113,118],[105,113,118,139,285],[113,118,141,147],[105,113,118,125,139,153,182,390],[105,113,118,139,288,290],[113,118,147],[113,118,147,148],[113,118,140,148],[105,113,118,139,215,395],[105,113,118,215,388,395],[105,113,118,215,288,392,395],[105,115,303],[134,142,148,156,175,228],[113,114,115,164,175,177,193,207],[113,125,137,171,175,176,177,179],[113,115,125,147,164,209,424],[113,115,125,164,424],[113,115,118,125,141,143,147,152,164,175,179,180,384,412],[113,118,125,152,164,175,179],[113,115,118,125,140,148,152,164,165,166,167,170,173,174,180,181],[105,113,118,145,148,179,288,290],[409],[113,420],[106],[106,107,108,109,110,111],[424,426,428,430],[80,424,425,426,427,430,431],[81],[80,424,425,428,430],[426,427,428,429,430,431,432,455],[425,426,428,429],[81,82,424,426,428],[82,424,430,452,454],[82,425,428,429,430],[428,430]],"fileInfos":[{"version":"44e584d4f6444f58791784f1d530875970993129442a847597db702a073ca68c","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"9a68c0c07ae2fa71b44384a839b7b8d81662a236d4b9ac30916718f7510b1b2d","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"5514e54f17d6d74ecefedc73c504eadffdeda79c7ea205cf9febead32d45c4bc","impliedFormat":1},{"version":"27bdc30a0e32783366a5abeda841bc22757c1797de8681bbe81fbc735eeb1c10","impliedFormat":1},{"version":"abee51ebffafd50c07d76be5848a34abfe4d791b5745ef1e5648718722fab924","impliedFormat":1},{"version":"9e8ca8ed051c2697578c023d9c29d6df689a083561feba5c14aedee895853999","affectsGlobalScope":true,"impliedFormat":1},{"version":"6920e1448680767498a0b77c6a00a8e77d14d62c3da8967b171f1ddffa3c18e4","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"45d8ccb3dfd57355eb29749919142d4321a0aa4df6acdfc54e30433d7176600a","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"93495ff27b8746f55d19fcbcdbaccc99fd95f19d057aed1bd2c0cafe1335fbf0","affectsGlobalScope":true,"impliedFormat":1},{"version":"6fc23bb8c3965964be8c597310a2878b53a0306edb71d4b5a4dfe760186bcc01","affectsGlobalScope":true,"impliedFormat":1},{"version":"ea011c76963fb15ef1cdd7ce6a6808b46322c527de2077b6cfdf23ae6f5f9ec7","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"1a94697425a99354df73d9c8291e2ecd4dddd370aed4023c2d6dee6cccb32666","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"bf14a426dbbf1022d11bd08d6b8e709a2e9d246f0c6c1032f3b2edb9a902adbe","affectsGlobalScope":true,"impliedFormat":1},{"version":"e3f9fc0ec0b96a9e642f11eda09c0be83a61c7b336977f8b9fdb1e9788e925fe","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"479553e3779be7d4f68e9f40cdb82d038e5ef7592010100410723ceced22a0f7","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"d3d7b04b45033f57351c8434f60b6be1ea71a2dfec2d0a0c3c83badbb0e3e693","affectsGlobalScope":true,"impliedFormat":1},{"version":"956d27abdea9652e8368ce029bb1e0b9174e9678a273529f426df4b3d90abd60","affectsGlobalScope":true,"impliedFormat":1},{"version":"4fa6ed14e98aa80b91f61b9805c653ee82af3502dc21c9da5268d3857772ca05","affectsGlobalScope":true,"impliedFormat":1},{"version":"e6633e05da3ff36e6da2ec170d0d03ccf33de50ca4dc6f5aeecb572cedd162fb","affectsGlobalScope":true,"impliedFormat":1},{"version":"15c1c3d7b2e46e0025417ed6d5f03f419e57e6751f87925ca19dc88297053fe6","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"caccc56c72713969e1cfe5c3d44e5bab151544d9d2b373d7dbe5a1e4166652be","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"9d540251809289a05349b70ab5f4b7b99f922af66ab3c39ba56a475dcf95d5ff","affectsGlobalScope":true,"impliedFormat":1},{"version":"436aaf437562f276ec2ddbee2f2cdedac7664c1e4c1d2c36839ddd582eeb3d0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e3c06ea092138bf9fa5e874a1fdbc9d54805d074bee1de31b99a11e2fec239d","affectsGlobalScope":true,"impliedFormat":1},{"version":"0b11f3ca66aa33124202c80b70cd203219c3d4460cfc165e0707aa9ec710fc53","affectsGlobalScope":true,"impliedFormat":1},{"version":"6a3f5a0129cc80cf439ab71164334d649b47059a4f5afca90282362407d0c87f","affectsGlobalScope":true,"impliedFormat":1},{"version":"811c71eee4aa0ac5f7adf713323a5c41b0cf6c4e17367a34fbce379e12bbf0a4","affectsGlobalScope":true,"impliedFormat":1},{"version":"51ad4c928303041605b4d7ae32e0c1ee387d43a24cd6f1ebf4a2699e1076d4fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a6282c8827e4b9a95f4bf4f5c205673ada31b982f50572d27103df8ceb8013c","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac77cb3e8c6d3565793eb90a8373ee8033146315a3dbead3bde8db5eaf5e5ec6","affectsGlobalScope":true,"impliedFormat":1},{"version":"d4b1d2c51d058fc21ec2629fff7a76249dec2e36e12960ea056e3ef89174080f","affectsGlobalScope":true,"impliedFormat":1},{"version":"2fef54945a13095fdb9b84f705f2b5994597640c46afeb2ce78352fab4cb3279","affectsGlobalScope":true,"impliedFormat":1},{"version":"56e4ed5aab5f5920980066a9409bfaf53e6d21d3f8d020c17e4de584d29600ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"61d6a2092f48af66dbfb220e31eea8b10bc02b6932d6e529005fd2d7b3281290","affectsGlobalScope":true,"impliedFormat":1},{"version":"33358442698bb565130f52ba79bfd3d4d484ac85fe33f3cb1759c54d18201393","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"987339ae38c9341b0d90da7350e543c0d561d04b540f29a6912d387ffee30123","impliedFormat":1},{"version":"518e0fd89eddb50289b99dbed7d7ca0951deb4c68f320d66a211ae70c3cd4e19","impliedFormat":1},{"version":"d6add5a006175d8e4ac5067baa29854010ae2be9eec488f3b09f62e48fdcbc73","impliedFormat":1},{"version":"fd883585af80279b31ab2da3b0e4a3039e1f2f000b41bae5b68f53bdfa0381ed","impliedFormat":1},{"version":"44bebcbc4a93fea28f3564a7763dd12f0f3bdec624eb8a63e97afd007d1ff4bd","impliedFormat":1},{"version":"58ff317d61b47e8fc6688bd50e6770311691202553f119d1e1d79b64d864e200","impliedFormat":1},{"version":"2bcba968352e7a0ab44a841f38846bc1137b4f2dd389e174962d2ecfe17f1f83","impliedFormat":1},{"version":"b05f67fbf31701e85c3f299bd3ddf2a83d277eb616dcc1aad0f3c25c3fbf0da2","impliedFormat":1},{"version":"739fd063492c94c26fe75a05459e94826fe71f76147b315cf386992b6c011522","signature":"7adb4f9ddd5454d7afcc4dd35e1e3125e308ad1ecca686eaae081036393b4d64","impliedFormat":1},{"version":"b166e33cf8226ac8781899da244397e77e5b6528271339ce26ece0c2c7242d7f","impliedFormat":1},{"version":"a623d5cf7925e72dbf4602862499564389c7c3dc0ce049733cc0ec756a846667","impliedFormat":1},{"version":"9c1724d9b0cb3d7141dc25a44b0d18cf0b3b20a42e971c6898d4195ec6d4b8dd","impliedFormat":1},{"version":"63634c0855e639ea7f609613d799bbb0dc774ec9f3242bc272c5567dc5ccd485","impliedFormat":1},{"version":"592f06c425ab27b4bafec624ef5b153cbdde9ac58f7113100a2da1c4309d1309","impliedFormat":1},{"version":"19c8ab51b4b07c529d95cd4d5c8d100a68dca247ec83a5097d35106fd8a7acca","impliedFormat":1},{"version":"bec1d0ac62cee9b4d1ea8b64c4798c59c1726668b76d06b68a206e0cb0ac76a6","impliedFormat":1},{"version":"fb4f06b2af9ee4b2d2be8c964b0a8f6dd260be9048488ffcf04eb5c0fcb8bf61","impliedFormat":1},{"version":"f185055f36d76e2df5eeb87ae1148a25a125be2bff2095e1bd39c1c7ce85a640","impliedFormat":1},{"version":"948a56ec8bfbbf20ad2496f49f451cfeb878cfcd6156032c0769b603f3ed8f18","impliedFormat":1},{"version":"979fdebc12d30becce6a15e68d99bc8a2a470a8dcf0898ac9e2d241a7e531940","impliedFormat":1},{"version":"1824ad7d4259910646279d667e517334c0aa24d5c810e8ea6da756fc2e02372f","impliedFormat":1},{"version":"989e9060e220ff86025044ba3c867a83512a655b7cf6253b2bd682192debf390","impliedFormat":1},{"version":"8b1feb568c859feb59236e9723b7a86e2ff8f9a8f2012366ffd1798164dc2798","impliedFormat":1},{"version":"8fab988b0129e674afc0bc0e95329b4052cf027f5d5b5b3e6e92d055b5ba88ef","impliedFormat":1},{"version":"4fe56d524ab24c225668803c1792945053e648b4e8fa4e50fa35594495b56732","impliedFormat":1},{"version":"2652931b8f7dca9a57f21aeb25b5d46851dcf17e4d5ed54b9b57d5d26e647680","impliedFormat":1},{"version":"d364c8df7d52199f5d011b4ded96f36dd114b984f5ee2e50ffe7d30ac1ab4bba","impliedFormat":1},{"version":"408f9eb3c7a3533bf5f07e0cde110a5ee0702864795ee6727792520fe60320b6","impliedFormat":1},{"version":"ba79eb15c36ff23e352ef608ceb7f9f0f278b15ad42512c05eedbe78f228e0e4","impliedFormat":1},{"version":"4cd233c6af471432253a67ae4f3b43c85e58a71418d98c3e162a1dac975c68f6","impliedFormat":1},{"version":"aa77c7d8ddc961e8192bcaa92da140e1205f8aee78bfadead5f52b8844d7d05c","impliedFormat":1},{"version":"37e37d3a525a207efab5458069fd9a27a174d2dc3af729702c81729ca03a349f","impliedFormat":1},{"version":"592be78d9e29c468162ae5c0caacab93517a84b9e119fa43839d37c8a22c96d1","impliedFormat":99},{"version":"9fb7f17cc5582417ed2484bfc9f493ed8e9a7493e023f07d5486860c8acb5f6f","impliedFormat":99},{"version":"6ba794b0e290825b3869e05c4ce9e0efdc9d68eb34d8434d61b2aa798a224c4e","impliedFormat":99},{"version":"b979e09ceeae224e71344ca6258d8ebc93ffc28262678b21f3f872b6f613ae29","impliedFormat":99},{"version":"976cc1f58ff3f255fdb41bdaf18430246a1024f38741fc0d048edb30ad7f5099","impliedFormat":99},{"version":"4a82d200fce0dd902da81b36928ae5c3a366770bea8b52f39936f7f11432f879","impliedFormat":99},{"version":"46c1ab579dd5d88d2a6435859aa8439d27f3f249848a4a8ab650f77135ace7b6","impliedFormat":99},{"version":"a2e86477a12540ef9e439245b959b2d8b96d674d5215d154ff22ad26141f4cfb","impliedFormat":1},{"version":"29150e44771dac0aeb711badc04e08fccd01b46efc560bd6e01b96d746a3f26c","impliedFormat":1},{"version":"e09f096004d70d6e98f5e5fee165849b3944f706861cdeffce5339dfd8426db5","impliedFormat":1},{"version":"1ddd1ca692a6c656ade0a85c9a722b3679b3d0bf113b699908e0325cf3537dbe","impliedFormat":1},{"version":"8588b5e62eff0072477ec7fb47245882d41db7d1b8051089ea331d671af2cf0e","impliedFormat":1},{"version":"48c022acf7a664fc81a3296858f08e2f70fdd57404f2ccc88bb951dc94311939","impliedFormat":1},{"version":"7fbc4600e6ef98e81e3c44329fd0cf7c53eda75cf666b17a6e4666e93e1b0159","impliedFormat":1},{"version":"0a7c25930355abdf0926057044de0c8f910a3196af6126282dd2186898a7d13f","impliedFormat":1},{"version":"007dfb1f314277f6e211fec9c5f62fd182e3bb76f1fe1f165228a259ae0b91b8","impliedFormat":1},{"version":"a6aa3bd9c165acb07db158897587581d7b081ce4271579b720a94f95c8c487d5","impliedFormat":1},{"version":"904714e49891cc1e136cf104f4bc9adfc846be9bd28ac55e101145a0d8103b30","impliedFormat":1},{"version":"9b8ba907ff8c52756b1a0aeac192a22591ac9431ac688cddad8111c8fd5124a3","impliedFormat":1},{"version":"c8b56ebca7f7c08fb96a65b2dfcbc8a6efb10b9b9ff060eca55042428e25e570","impliedFormat":1},{"version":"3fede259ef5c9dd9a97e662da9f6774dbc82f390d29563319b658ebd7f958135","impliedFormat":1},{"version":"d74e6cdb7ac0a4d675d598a09c8deed53dcb11a4e32e344ad6a831663bfb60dd","impliedFormat":1},{"version":"269605a13c650dc3326bc1fa1c65fc05fd8507256c83710974d20e704b55c914","impliedFormat":1},{"version":"ed94531f5270503b60d1938fd4929ce0b719e402862c49fe624eb660f75cc901","impliedFormat":1},{"version":"b9c9c9352d6606fe440735ccad134563017fc5aff8dcd418c58f778437339f06","impliedFormat":1},{"version":"a77c74ba29ae0c5b355aa140686b95239f1e579e51cec743af252fe59a245563","impliedFormat":1},{"version":"fe6fc233bd0daead47deecc6903a5571edaa4a9539c7157c4580d26dcc37a48b","impliedFormat":1},{"version":"d09f6a6dab49823b554255030c4ee8d49a2a993bd02f2cff2e444b2627dffc5a","impliedFormat":1},{"version":"35c6081d0c246583d33f452afa7877652db95b9b9393520b2fc3753795a1bb8c","impliedFormat":1},{"version":"5f5186291de127ff03bc059587fc5d23ccc3e1cb0cd277d5ad5da2e0d6085887","impliedFormat":1},{"version":"1065c8e64bf4876e3f9caa626f4f71fe64b755edfd23db5ceca6accd9c313f1c","impliedFormat":1},{"version":"0717c1a24cd66da2d50833ba78f89d994d1ebe494e0105ac67caa1e1a32a298d","impliedFormat":1},{"version":"cf4bdd9324f9116bf29daf9add3fefe4e609be0dc3bdba1759cf1a6654047726","impliedFormat":1},{"version":"0b59bc43ab08b3bb00a8a4978683c872fe4c6c3206bc68316ff7a3cbe70d75b0","impliedFormat":1},{"version":"d3763a4abd763d825a766d636661ee3ec52fa8477eb63c243b8dcd033ba23789","impliedFormat":1},{"version":"f4377e81d50af3f689cc5dd2005be3b79dfbbcb3f5a0301c843e8daf1cc9ddda","impliedFormat":1},{"version":"ac1e8ae42e98e9a296d467169321f4cf8802643302f619b025117c4ed5a2d200","impliedFormat":1},{"version":"6641f18545bf0ce6aaa467607f6a19a2896c4a6965deffd9c8f586f00950f494","impliedFormat":1},{"version":"27c66f434db3a00fb5b286c88582f2da3a85a2108cdfafe9bf63fa6df206aa2a","impliedFormat":1},{"version":"e2ef2006aa0a9b806063cb510989bafad85e71f21cd7e25783b8876203594dc7","impliedFormat":1},{"version":"5683b6c327ab05195ba14856985488b486117687e3f1b94991e787b25fd6cbb0","impliedFormat":1},{"version":"32d08e56282b632a4ff2aabf97d8e2ca72c872e99453de231684f0347a46c41c","impliedFormat":1},{"version":"f26ba893d9cda649365c19c9929d53ba069d829caa98dea1ad3c90374704cf54","impliedFormat":1},{"version":"0f9bfdd25e2e13e6adf81d98a2909fe1a7ade6cdcd380bc7c9a259effaf3c295","impliedFormat":1},{"version":"4179d52fc45e3c72cab28cedf19d10a915522d5f3f83979e61213137bfc794e9","impliedFormat":1},{"version":"665222ab0b8547fa189b3b4bef8598ca271e552339f871fcd4d7e86f979b8145","impliedFormat":1},{"version":"2748451f1cb5d1594fec48577685ef0cdefea02fea292873b9ab74aa47ff57ad","impliedFormat":1},{"version":"cece3e0e89f3e9a526ce76bf9bf3aab41bf83a58d625558a671f9058b5e822e6","impliedFormat":1},{"version":"11854416213ad2da216b2c09af4a4b16129e051a25ed8f3148ac5e62814341bd","impliedFormat":1},{"version":"5f03bcd31cb6649a36edd547407ab86887ec3c41347c03f52179bc58017fda13","impliedFormat":1},{"version":"48ff4dab14889a41f5b0b94aacb853b96f8778888167625a42ba7a45250a15b7","impliedFormat":1},{"version":"92c35a5a8200e9d5a30c9e36eb7db062b3ca1e03309bd0ec3416714695cc6dca","impliedFormat":1},{"version":"657e5c36539693988464477fb47f7aedfa8a487fd95606671156d52adab81101","impliedFormat":1},{"version":"e3e20ed4715775989c0ee8c2be8e657503503ba75c03defe13b99dc317baf3e7","impliedFormat":1},{"version":"c2f1b0272966ba4ec45818b50813210e3abaa993664e26db5617df45672e49aa","impliedFormat":1},{"version":"6faca0f0e857cab15c7ec26f36dc28b73730b184ce942a25654bbcf4ece22f59","impliedFormat":1},{"version":"40273b09b5738abd52321b86f426893ef84f9da766f2206207c4d9bd6c5b7f35","impliedFormat":1},{"version":"4ab90837f0df1a6c8039689ea77d7d28a06eb1bbf2bc129c271e8a6c01a0f391","impliedFormat":1},{"version":"2c6fcafbedc3bf7e030fbda5acc875e0f2f98b253477105ef5cf0f674409b525","impliedFormat":1},{"version":"171f9f3da4589275b3ca1472e2ee0f32f4b16d5e2c41f79db8bb209433f30d67","impliedFormat":1},{"version":"0d7db9b74a017be10aa36509dd2ae4499260381aabc6772feef677fa16f3a1f4","impliedFormat":1},{"version":"e59ef219cec3c3faab54d5cb12222a04d3e095c84abf94088920c1584832ce43","impliedFormat":1},{"version":"786c15fcfa8b821410e278a740f9dc81c44546259d1cc0143646876a0c030cc0","impliedFormat":1},{"version":"99ea681335aa97ba7618ac3db69a2e2da87da7faf8a39f822030ec4db96ca023","impliedFormat":1},{"version":"d7169a2b449d5b8e309edd84624649d04b746be48fe93b2e69bb7a85653b1e97","impliedFormat":1},{"version":"c462479720ea1932e5adc0bd4808be8ee2c83488be1012bf48f4bbb532b63758","impliedFormat":1},{"version":"d72479ce8210c21451cadef350179fbf3729c0e29005aca2d7e0c6ad031a4afa","impliedFormat":1},{"version":"d0e0354d3d4ac41cb7a67c10ca59652f8cba9eeb0929fcc878e492691f73d02a","impliedFormat":1},{"version":"9e8cbec0dabed8a1d03ab57736738a202df26cfbe180db391347df78a0509fa4","impliedFormat":1},{"version":"fbe06770551602ccc8e240a24793a8268b1bce44de38c26a7710f7bf1702f9b5","impliedFormat":1},{"version":"e4859560e5d635efa084427db27d6e31780eb570c2a567e95ed12f3828199710","impliedFormat":1},{"version":"6f29c691b977d5fdebefbc109c896fa863e95ae4464d959cc1506f45ad01da8e","impliedFormat":1},{"version":"ddf805d002fbf463fe2e40e78a4c7d1773a62f18716ce452cc02ba185c6c9c0e","impliedFormat":1},{"version":"d7aeffb82f803488ad4f918929a3a980e387c64c395ea793f6167c9704d4502a","impliedFormat":1},{"version":"2ede90710bab4dcdef47b532a8b3a1d63b7c366b058e95c705e9d9634f29f445","impliedFormat":1},{"version":"887a73b0167b36d4aed6d2549b19c4bcc6f2f50248b20d4d10ee2a10ef0516e8","impliedFormat":1},{"version":"d5e5bec490256e96a14ee3ee62df234b39130673a78c7cc23cbbd62daa5bb09a","impliedFormat":1},{"version":"e1654470227365a820804931d846c6a63a7f51f89bca85d7e22612f43a6d2add","impliedFormat":1},{"version":"62c9a85d5dc9da38e54f1d802b7b62b82170f3a4571e3c992f1db09f60dce051","impliedFormat":1},{"version":"56e14052acc507ace03e94e8ec6cc22c84a65db751f11ca20349a4ea396f72ab","impliedFormat":1},{"version":"1c7dde9d6e45e71504fd8ba6a9c29db164e7a8040bc1782c2a80a3098d0a86c8","impliedFormat":1},{"version":"916e966405a9923eef3123175b1d31188945917edc14027ebe5df1c1f4ba0c70","impliedFormat":1},{"version":"d742f86f826cd1d46f45cc6c106cf34077b10239da02393fc2b6a6490bb4059a","impliedFormat":1},{"version":"e9ce8ab614cd43c203bdeedd6fb230c64d62dc240c7384d962fe39bdb0ed16d2","impliedFormat":1},{"version":"639e7fd024205c3c4af58bb193c1d7790618fcb8b70e9b15068c647ab729ee3a","impliedFormat":1},{"version":"2c26bbcb3898665e821d93f28d9c4b7d712ca23743d8a7a9d89e2aec794bdf40","impliedFormat":1},{"version":"c0e0fc040511ce5af4e546fabe949945c67507cf1f1bc7211448f2e6832bf0bc","impliedFormat":1},{"version":"63847d7133093860ab00f9de7dc1a316449acfdea95e48a01f8d4019ff875e8b","impliedFormat":1},{"version":"e6f70e3c94d2b1d7c5112ad6df2dd7c2ae5dc81bc89510bbdd4478614cf80594","impliedFormat":1},{"version":"146e5c86d78b4a7ff6dcaf9835b3a6a639dd414d21a30c69df5183bca5596d15","impliedFormat":1},{"version":"713472b1fbf211215a59f78d2b351a77b06d441d7bb7e69c45fe49f8d4784333","impliedFormat":1},{"version":"2e24d2d878e6b0e745d3814ccb2186520c6ffc6b3ee3facc329741c100ff42ae","impliedFormat":1},{"version":"b1dcb886b03955cb52ada9b74a8706b2038a3b028e1bd4b41343d6dec6cc9160","impliedFormat":1},{"version":"00b9f288c0a241fb4316737af41e0ff0e64be1c03c90640bc3a9f1449742ca9b","impliedFormat":1},{"version":"d9f5c7419d04f5b0682db3d10bd3cfb084ddf728f945bc735836ea7139ab3bea","impliedFormat":1},{"version":"7f70f7d51c3232d6e7546bc8f9d6b91df3a9e001de4c755771dd052d9fbc9a07","impliedFormat":1},{"version":"175cdf7e9b2d7178e5b73a4f3dea1f02abe320f6585ee8a6c16991c92e4220e8","impliedFormat":1},{"version":"ef6b222405d44c0dcdea4b8ab7d3aa2ac0258995520c3ad2efa0fe161137807d","impliedFormat":1},{"version":"c6c694fe37d60819f29e998c03d875609d07a2f3d2a280d096474823384bff70","impliedFormat":1},{"version":"1a176b3032ec0fab791c658844c3c1d3df8fbe985b194858c8b31d736781942a","impliedFormat":1},{"version":"82e5bb555d1f1b9344b367e2761eeca6609ff1bc69908d779660e0ddb1c192c3","impliedFormat":1},{"version":"37bd33bdc57f46ff75b573c30c162cf2d1b5e160c230225d349ab01501e3a9b2","impliedFormat":1},{"version":"ea87e08b2a990ff767bcdc40e99eff30028d98af8d401f14b08974223c58c06a","impliedFormat":1},{"version":"389a2c2135dd3de1844b996d661ef3a5ffb978356994841fca0f0a99b1728e28","impliedFormat":1},{"version":"a582c8844a6809984a681db3997068d5d8144bee3f889c5240c559c5502c165a","impliedFormat":1},{"version":"e0494aecf0482850786831665c0f976125882c17084022efc6f8a51443b3a7f4","impliedFormat":1},{"version":"ede7ecc62da0236596749292448b282d9c5e846c95e107d6e87720204b792250","impliedFormat":1},{"version":"557981373fbd676739d62fb4aa7b601a639bfb39f7b563ab2c9a2350aa5d7298","impliedFormat":1},{"version":"078045f76bc547eeae562dde79c81e2565be6fecbdbbc4bfbd03fd16cfcad523","impliedFormat":1},{"version":"04783d0830346173973d5283d10b91fd7d6c1c0aaacd93a95455ddedaac4fc0d","impliedFormat":1},{"version":"6185cad87bf4da80c49a2f7a06af8e3e47eab0bfb31a9bf49520989b1b86056d","impliedFormat":1},{"version":"c002bfb107918122bba26d8d0736f293b22866dadc501f9ce27def3230233be5","impliedFormat":1},{"version":"131906682a56016d19849546fc5f9e0076b4e35bc2c5af362d79a50998215d4d","impliedFormat":1},{"version":"ee0c30ecd200ed26166dc9f9ca3f502e5584d61912f894563c7db45292b5833b","impliedFormat":1},{"version":"64248331a3a1c684ca70489fb8a94e48c5ca8bf86a5fb99179341edda11370ad","impliedFormat":1},{"version":"fa2d827d435777dbfc4a41a70d836b6a401bea8f77903cc22f939425f9da0b8b","impliedFormat":1},{"version":"8a59602dc83ec951feaf5cb7125393d3ebe38914c921e07ca0383a63857435d8","impliedFormat":1},{"version":"0654c77e8427f5125066d551e5f7c273735a92f4e7a2be6f12daf46ffa92ec3c","impliedFormat":1},{"version":"6f2a826f77810913e18a6a5ac87e5783f600961d4d7bc20315db13f69e2280de","impliedFormat":1},{"version":"14e3d141c66a44d32beff51678ba0abd236e18c520b12678a73936e78955cae2","impliedFormat":1},{"version":"bcc4218ae8d2f99608412f5917a663c7c764da0dd63be12d01ec49bf0148fe70","impliedFormat":1},{"version":"4136928c1cc5825cd17ecce5ae4a1671cf0047679e452d4886cfb33e74fed5c7","impliedFormat":1},{"version":"21f4388f6d904f8b0d17565fb331eb25d0f2af0704ed7d6247af4cc9631f7c67","impliedFormat":1},{"version":"546b944e81166843668e7b7a1153ccd1e565834ffc29e1df38aa6d26de9e1c81","impliedFormat":1},{"version":"47babc7ab6a3990895b389d6651d1841a17d7c7a9a57f86c0d72fe8d9230230f","impliedFormat":1},{"version":"f8d0e96fe8f2cbb5e617eec5f198ab78e13ba2c66176ad202b287aa3cc667e23","impliedFormat":1},{"version":"1375b2b59bde71a963ff2cb306eceea05060ded0b7cbcdaf1206e4e8245e605a","impliedFormat":1},{"version":"f5dcef5516ecd8836256359ed4b9c6bb8c73fcce697d1c343b11ee8e7fd15a8a","impliedFormat":1},{"version":"e55a68bbc963c9520f0492892d642fa145d34a351d483cd144a11e3346c18cfb","impliedFormat":1},{"version":"da14f80dc904a20fe5a98009f117d8f977ad6d50fdab685e75d6b38322ea56cb","impliedFormat":1},{"version":"ca90e5e191954b9b8c43ed5d5bc787107c071315c4acaae515e7d918e8814e15","impliedFormat":1},{"version":"8ef0c5c7cba59cbccd0ac5e17ec42dc4a8250cd267f9cdb08a4dcb1a099068ad","impliedFormat":1},{"version":"63ed74c721b55f614bef2b233b03c7e56377b0e38ea16f1dc3fc57a06ce2ca8e","impliedFormat":1},{"version":"57b3caa3ba40034d9b19cfc8f24259745b58d7f50d091b5b7dfd6f4e820e5399","impliedFormat":1},{"version":"b30336ed279a38bc62e5678bf19efaf6f414bfbca31e4550932d59d810d654d5","impliedFormat":1},{"version":"1f142b1a6a8b7b29da43a88c8a5f6bbad28f7cf1b67457596ab6d71bed584e8a","impliedFormat":1},{"version":"a203895f2d4b51c8799af4a17e6d72657c6dfdc4a08ab338970e257e5e083d85","impliedFormat":1},{"version":"c67a3535fe218dac271adc4d9c91cabbcf99d09081dc3fe3567e3a354bf632e2","impliedFormat":1},{"version":"7670372101b08f0d0a2a8cf4d107d969df407a74cba20e9f3991b50d9d3c590c","impliedFormat":1},{"version":"324c0b50e53b8b0dd54dc0f50f0154e3e6fb17608df73de0803b5e9a532cf2e2","impliedFormat":1},{"version":"fe831d90ec6b5e04075ae831936f1e2049cce2473ad1aecf3d5ee37d66ea84cc","impliedFormat":1},{"version":"93b5102a702eb62880ae6fb3be2eb6910694ccf77a2e9063eb5d94bd0b2b32b2","impliedFormat":1},{"version":"0cb25d82f88175135d0827f552720abae64eb9863cba71e0b6ea6e76cf0da3d2","impliedFormat":1},{"version":"d0622e1a5d9ee2b4b8a1a6db2c0f02fc34f4f865d7ece6ec86800074210d2f4d","impliedFormat":1},{"version":"5300e082fe9398613c3b5a4975df67318951c46b4a033d159bbe082793ca2c3a","impliedFormat":1},{"version":"be05176f0f7347f4a9faed9a400c182f107b7499d79f4c6e67ec3d830ed6cde9","impliedFormat":1},{"version":"498b8e59b7659c0ce11ce3323bd0d23c923e21c7290e5bd96ce0f3ca639fb4fe","impliedFormat":1},{"version":"740bf9b794f8fcecb6c3761598372f16a7835dddb4c163a21ae0c7f472dc6bd3","impliedFormat":1},{"version":"12816e95a6bc1b4a98195c0e6747b33cfd178f0424579a3eb21b49911283f79a","impliedFormat":1},{"version":"ccc9e8f887951895386cafcff62aff2617397584ce48ca891646b901272b9d12","impliedFormat":1},{"version":"bffc26bac30d45f1e5fea885f17cafb6a943bcc21fd1122c71b9fe466ece8fdf","impliedFormat":1},{"version":"3f2a3b143fafe71c581c13fc479dba5b0b7ff34993f87b9085d87575b53fc993","impliedFormat":1},{"version":"81580d0db97bc8f13bcf79cc7a97e9606cca948df6f0b26e3084d5db0a41089e","impliedFormat":1},{"version":"fd4ddb3d82b68edf2f7dd1b10ca66c5b108007c46067d0dfac4167a4492577cb","impliedFormat":1},{"version":"8c5414d8170f8fca7d8cdf74dba186370e35cc895c3e25f10ce42fff3ef9b49d","impliedFormat":1},{"version":"2caa4ad00b1f3ca5b07ff3d84beab2d9a4a8d841b677aa1546b78054a890a902","impliedFormat":1},{"version":"c96415ec4a5ff2202c8f5db2b8163a605100b6b47435c5b31d8280e06233958e","impliedFormat":1},{"version":"93b1c61409fbf44c4e666937c0cacb36d006b9901a53a2750e520f6ba9b1fcc2","impliedFormat":1},{"version":"981af6a24b8e1531dd933ff6df096a7a50dfd79f24c5e5be1134b684465a807d","impliedFormat":1},{"version":"d3b51ab522194f5ffd145f57fc2b2017e35d11593a8a5468fd3da7767dba0d57","impliedFormat":1},{"version":"47bf53f3991735879e5f41d8cfab687cc424cb775a0022b1d0fd55c78ff415ea","impliedFormat":1},{"version":"7c682517ded1d1e4ce341feb36a731499ed7241ee93de83aa2010d4f7add0555","impliedFormat":1},{"version":"f68e3a3eba1a531a71c8cb53bedafae2c25c376c147e3bc6ec96613a5de9dc84","impliedFormat":1},{"version":"d34648e4d5c8ccbcb2f5ccb5fa039e3be364ec95b0ef3a3750891e204c4bc3cf","impliedFormat":1},{"version":"367ef08f1d0de5ec4d4786cb8a1b8a17abf395bb0c5f8d151ec10fb66a2ce50e","impliedFormat":1},{"version":"ede4a9299b475e71baffcfd20b9b5056f77b8da69e7c824692fa7601be181ce7","impliedFormat":1},{"version":"c92c476c4463a4a96da5ed77010afd4bfa94944e298359bbff940cdde33c5f16","impliedFormat":1},{"version":"a484890e7212977036ce5965e7ca7b49e53436a66906a29093f91d4e02260fdf","impliedFormat":1},{"version":"4ea2003d86a9c68928ef069ce548c3e6ae35cbcb34184a71f1c566dde2160cf8","impliedFormat":1},{"version":"f727d3e75bfc036625d6920c725a3e4cbc564eef78f47d6b68c6351bb480d799","impliedFormat":1},{"version":"a87fcc9011e8a5e244d6e9af4902c315670aa852fa75dc82ae7cb62f98233a1a","impliedFormat":1},{"version":"120b21a1468deb4be0874bb633c86a1ac4df8919947d22b4762a773d9682a668","impliedFormat":1},{"version":"90afaa269677aeb839cc0e7479e0c3152248e4c8b440954b66a0e13fff08d64b","impliedFormat":1},{"version":"458858857e06dc9112fe9faadfc3d8b3e2828f9070cf8f0dfb7150b6252f021a","impliedFormat":1},{"version":"fb1d37cbc97a4d199bdf61878f4fc9f9ed2141df5f63c6a09d42fa810be09fee","impliedFormat":1},{"version":"2b881659708008e1c27269e1eb8dc476af0c2ab2f1fbf50f6e5f8cb6758d8b1f","impliedFormat":1},{"version":"4734f28362c42ec30a21ac4b8e2ae9a6cac54313cf0190e5e3c44da88bc11298","impliedFormat":1},{"version":"d57b6b6e55782dd990869f766f3dd0b63f030fd3a424a06ed5e1f62bc37bb90b","impliedFormat":1},{"version":"8f8c6a79e620f8a63952de19f38927f7da119cd0a5408d7289532f68b8017d98","impliedFormat":1},{"version":"bdf518ed49e9ad6926ecaee24a183828a23a061a1dfac8788cfc09da02a0bf91","impliedFormat":1},{"version":"c83ae875a44933a76a37949bc96569a414f5fd74f4089edcb4caad0db6bd7e6c","impliedFormat":1},{"version":"69870c54caf722bc568fd348b5e813500e964d820c7482bdb82d94d5aa6f19ed","impliedFormat":1},{"version":"504ffacc3312189dad74385206715390bd98e424aff384f67b21331bd16cf7e3","impliedFormat":1},{"version":"1870eb1fe1a14d19041559a003bb79753347b6da6d87703548b6b20faef30e6e","impliedFormat":1},{"version":"ed93611af4d148d789edfc67fd414195505a89691438ee261fa65d55bd66da0c","impliedFormat":1},{"version":"58ed0a6574485bcf18d4d775084258ed49f7b92ac9f8735488d19ab14bc6db88","impliedFormat":1},{"version":"02aeaa95c9b6125f8b6e5bcc16fc6df7d8f2bf945801defb73e1c13e1fe57c51","impliedFormat":1},{"version":"e6a214b21397bc966e36b92e7ba2986f33d2f68c9c194935937b0455f3b71c29","impliedFormat":1},{"version":"fe995eb8b806358aebf1e963824ea181b2fa9cc52e2dc4022eec67730b742753","impliedFormat":1},{"version":"52db5fc6d8fa0809b2110d96434a06ad26776677e825a10f93fe133497f6c93b","impliedFormat":1},{"version":"7a604944e45b35dc79983b128a7087816a6e9ca6d9c5d02d4a31e88dd50b9c39","impliedFormat":1},{"version":"05685c6f88402fe3db6d60e4c05176e7027b3acfecfd08ef6ca3e5f4bbfd1c1b","impliedFormat":1},{"version":"204ef1918267feb2040caad874caebd9bbf4f018367517750eeae16d880b0698","impliedFormat":1},{"version":"336748521fda8616bfd62560b7d5f37e6158531bbe16f2252b76827c2c6cd9ff","impliedFormat":1},{"version":"c4117a326ced8cc18ed60273de14f4c5e78a53cf2c59092f6278a8afca8d9ced","impliedFormat":1},{"version":"34787d4cfe21491065b9e8c3038a66c78747dc97b171b1201ff3913f2181e5c8","impliedFormat":1},{"version":"fe4c08b22b011d68b3625c665cc302f77bb8aed4b35853a53e3efaf082bc8e83","impliedFormat":1},{"version":"743e3303fed6823026dba4b34833ee6b59779678fd7daf64e1e9049114016b1a","impliedFormat":1},{"version":"7caae0b58bdfbedfbdd1a2f5b41779a08cbf62d62f7be63cd70cc71fb97165a0","impliedFormat":1},{"version":"b611b2a0b82dc6e520bc8c6698c0bf4481aba89c4923450f0753c062e4754c7e","impliedFormat":1},{"version":"e61edd9cf6dd20c0bec59e9d85151fd928c9fcb170273a7924ff5eaeade6c8bf","impliedFormat":1},{"version":"dcbc3cecf73f68c9d63280f3c9747bc6140b1eb9d8b5e5f04de58ea67c564a70","impliedFormat":1},{"version":"b1ae559a876cc54bbf319cccb4de11341916f78d58b2a9a5fc605d9f73b5111e","impliedFormat":1},{"version":"7b86682a3abdade9ceed5cfb5503097496223b93fc257de6795c4736efa841c1","impliedFormat":1},{"version":"07afa56980800740ec44e0b2e08d37d31c3ba1bcff58417ab7c26478bc37e4ac","impliedFormat":1},{"version":"02b6175908b56ca273252e8f734cde6cbc88c298384f4b397e63e41240184dc9","impliedFormat":1},{"version":"59fdde76b9d1518ee3a6711b14dc0b7582b7f9cf702c0cb8acc0bda3aef9e1bd","impliedFormat":1},{"version":"0a20f875729ca5de76aa486ba9cbb1913e349ae2d7d1c2e1ad3b45e142ca815d","impliedFormat":1},{"version":"477b09f880a9f9364b68fe02e237f3779fbffb0761bfbc3f77fa895ca49c44ce","impliedFormat":1},{"version":"d85a0edc67a11fa750331746b55fd5af4b41f1bd11e550ff7090abc9e9f83ebc","impliedFormat":1},{"version":"666732d3b18e0ae093bc48e5cd08380a7fcc64c06b7d8d0b4899567c5de7f5cb","impliedFormat":1},{"version":"be789dbab62f36a20dcb50cf0e67d0ef6b3e3cac17bc0aa9bb30bbe51756ea63","impliedFormat":1},{"version":"202596f2a7cba63ba07d482e8af95b70ee54da4c177643afdeed07bf28c5997a","impliedFormat":1},{"version":"d1658de6ff4ccce2e9cfd8b11722a6279bd3524644d0b65e3e8fc6b69b5ca49a","impliedFormat":1},{"version":"26e9c5b617defeb1de0fedecd7267aa16ad5cab23d726451fabd534ca246eed2","impliedFormat":1},{"version":"4091c43b763549c33d662afe79d75c078622bef954d4a473eca6aef8c251c169","impliedFormat":1},{"version":"7b2d3172fd95b696a31b40ccc3df7c44445dd70a80a3bbb2467da27c78717b48","impliedFormat":1},{"version":"402c1b5455a8fa4f474bf64354f72af7c01e4ad9b1685e3063216b95167a3fdc","impliedFormat":1},{"version":"df38d6066bcf7ef916b9e971e9c92d3f54c12a21235fa5694062bb57f6a028c2","impliedFormat":1},{"version":"5990d3194dafd93fc7a9e51032d11a57756c31fdcd88fac3b9be08af303972c5","impliedFormat":1},{"version":"987562ea1c31f04677cd3b46cbd4cdc6363f6178dbfd4db2a0788fe22947b8a5","impliedFormat":1},{"version":"0de5e8597a103c005b774f8892352a5f123a5e272924fe967b7d82305113bc4d","impliedFormat":1},{"version":"16185bd9e115626e25bca46fb8238f9ef3706c22b62ce940ae66c4e4cfde0df9","impliedFormat":1},{"version":"5711b07fe1b6426486276dd67efdee7ec4e70bcfdcaf39c6626594bbd7d51c34","impliedFormat":1},{"version":"7f81c91c6febbd59728630098f6f2b1e4afeba6af9128645634520d5681096a1","impliedFormat":1},{"version":"269296ab0ca6cc30fad3ccb911b1ff589d4a2c6ea7077c26c7ea5fe650103d6e","impliedFormat":1},{"version":"a49ef7664e1afe51062e193f0008ed621d8a3af547d994123ca44dbbb68c75a2","impliedFormat":1},{"version":"165ee417439a725fbd0a04278830c1056354556188d6000e5dc8ecd12cd3cb10","impliedFormat":1},{"version":"9539893a03d2cf718e8c38adf1a845ec0183ab455c8b257c64cd6727f57b0e1c","impliedFormat":1},{"version":"5e0f0b5968cb81b81847619fb6643f364d0eeb630e575fd0029d22c1171b3a37","impliedFormat":1},{"version":"45fb63c6d3a608b091c3baaaafe97de027a061e2f10813aa97d003b654417ed9","impliedFormat":1},{"version":"9a1bce80c36643bbc3e66c7db014c849b81a1d2d3ebfa69000f03e64545566a0","impliedFormat":1},{"version":"f438823b9ca13c413beaee87829111be171b305995bcf71d67ddd941de6dd999","impliedFormat":1},{"version":"623e7ec6876645a7e93a1a67506f3852b8e5e79ba3cb4c9a90ff8a24d3377a12","impliedFormat":1},{"version":"0ddba574bf51b1e47c502caa07ff96528b0c49878c2521ceb322a94557a824ee","impliedFormat":1},{"version":"3111b876a50a391cac841049c1683d20bf7d83eb05d5ff10b0a49689ca0dc49c","impliedFormat":1},{"version":"de84187571b3fb57d7d47f3199fe75845d024fa2c4aeb0a8bca8a281e37e9b62","impliedFormat":1},{"version":"4e302b950595396f49e539c733b44c52b77a9d3b85cc7c6fd24fcc7df1e30031","impliedFormat":1},{"version":"668eb6f044ef3e07635b3da9b29413de381299f80fdeb90e3ba5bea910d9d588","impliedFormat":1},{"version":"f75b6da37adf4f4fcb1b3e6e30099d345bfcfcc2024dc304bf6eaf40ed477c5a","impliedFormat":1},{"version":"39701d3533318e98924f5e5a4fb0ea5b49527853ae63e78e26190955c1ba4d62","impliedFormat":1},{"version":"30cb04bc8d380ecb7053659c2b42b48f87ffd05af3abe9f7b4783e07777a8d96","impliedFormat":1},{"version":"96847849b0b8472d06b023c7f6fd630cb5cb3e6129bf16c6ce58a931084c1d04","impliedFormat":1},{"version":"f15bb0a6bb20f0a494969d93f68c02a8e8076717fe7dcda6db06ab9e31041c22","impliedFormat":1},{"version":"84e3928255909a8e580fca688a15fbedef5c190e5d1a8da1dcd99afb6a40e617","impliedFormat":1},{"version":"58b8d98c9e39b0a1bab10c9a19a61d9fcac111aba5a6ff47e86525c079ddcbbb","impliedFormat":1},{"version":"a69abca4388cc76962773b4c869d5d34781cf0be92853d7bec53eac7a2f75c60","impliedFormat":1},{"version":"471b5d5986eff907c7f4b7047b54c15648495f94e219a27fd8cc91f35fa0e970","impliedFormat":1},{"version":"75cc2a2e33c7d3fe1574d9c93712950b5556dd4af48a1d1e5a657c66ff2eedf9","impliedFormat":1},{"version":"05c44f2a752cfbef15a81e90bc63eb96efcd3d07dd9b378df5a150a06775a2fb","impliedFormat":1},{"version":"9699ff431424e42dfeeb6417ea7b4d1ed66fc6bfc530748dfedebd2683fcc1b6","impliedFormat":1},{"version":"496197b06b51aeae8323da87d042ed2224e654994a3d9b5e3350df9c9576dc50","impliedFormat":1},{"version":"9d744f7d5a08aa240bceb2755dc8c6ee681cad5e818009162e69ae915bba6b77","impliedFormat":1},{"version":"86b7e0f835e2d550541c27e03abf5270a42f5876e1e915568289142b317a0ffd","impliedFormat":1},{"version":"ac6990a9034baddaf28cb15200bd2f0a46efb118d08f4d341abc16669ad577a1","impliedFormat":1},{"version":"29faa0f1ab122161019ca07b328664d62b5b1ec742606fa5b34851603a49a77c","impliedFormat":1},{"version":"0e07fb22607b2eda1883d4521080a5a29ef90714c1ae598e53eae0b94bf1bd10","impliedFormat":1},{"version":"52cb5d5beedcff01d5b851653cfdbe9a8e8e953a8462a357e71d93eee3ed760b","impliedFormat":1},{"version":"ba6d810e67aef7d6ed15cdd8223d5a207a111077c88d99ce7af5fe959a079803","impliedFormat":1},{"version":"3e02766c76edcd0486eeecad81ca4982a532a80293d71a8d94973e89feb5be2b","impliedFormat":1},{"version":"34e45896ae4bd8f3b44772aae2989adf64febd060810a9e08fc72b07778e58bd","impliedFormat":1},{"version":"e9d1e246d3a0510d5ca97f6c154d00bed351359b868294905efe98052ec6bcda","impliedFormat":1},{"version":"5668bff27e260e0a51ee72b7e0f6e69bba542b8a69f553c30d86e124adf479dd","impliedFormat":1},{"version":"1b4262a15a86e72e78d7fdbb6a6d20e8794f7fa4aa7c54f0b18ac7270e4fab08","impliedFormat":1},{"version":"9334b283bedfcd488ccb33b3e942905c86fa163e919653a5379eb8f28a2d5f7d","impliedFormat":1},{"version":"f3f62eb4cf38d86cc7f56d0879b49656a21f2eef4fd0acef3936889327d7f256","impliedFormat":1},{"version":"e32c5cb1819686336a2101f31b91c2e8e06f8f8311abd1195c203b81b62247b0","impliedFormat":1},{"version":"683734687779547527b05fdcef60947f6fc51758185d788531e9ac7bde84fd6f","impliedFormat":1},{"version":"c418f31663f9aa18537f6443172821265c078de18427ff136a24c536e76b7fc4","impliedFormat":1},{"version":"d3db93b436babc8fcab37cacce55115c25b7898e5e2053bca400ff5348b1ad9e","impliedFormat":1},{"version":"1df375435c44c94f1bce343de4ff81b8c82e644d6b33a801bc6cf4beceb76b71","impliedFormat":1},{"version":"fed5b5c20508c5f84a929161f452dbf769cc2d2ee1371b94ddc2feb418a0cf70","impliedFormat":1},{"version":"76755db046290dad61362d95c03b440a0feaf507edfb5744304c7f98c81faccc","impliedFormat":1},{"version":"e16841ad044e21c48c6065627566a2ac216e067cc34b9ad3b47312d208d9a262","impliedFormat":1},{"version":"7150b4a18287da2e25c68a12bd0cff78f6141a2425a27431a10cd4a91cb9626b","impliedFormat":1},{"version":"214a581fbe6902059a64de2bd75c56b6030c6388c29de93c4296380a99c04e4a","impliedFormat":1},{"version":"78b758d401e53f5319bc143ebdc7714ebe0f1e94fc3906d5e93816e5736bf299","impliedFormat":1},{"version":"ce50872ae30242ed1ce2ddb9d9226c85f17098e901bc456cfc365887ab553127","impliedFormat":1},{"version":"cae86d70eabc661dff2f46f34018ff4840228f01709c8399a9c012711dfe5292","impliedFormat":1},{"version":"77b463688f41048f449fa30b45393b81fd6dfe3eb71f7734c1a6d580373b6a12","impliedFormat":1},{"version":"b6ccce9156aa85ca2e836bc572d4697800739ab008b0a6ae9bfa0361b8baa04c","impliedFormat":1},{"version":"07dcca6e9f155b79d087216735842ab1f7c020ce41f095507afdffecbac06a03","impliedFormat":1},{"version":"1fab3bc9db401033ed6ef6dca9114b3a0a875b475b6c1b2ce52efddf3c4fa130","impliedFormat":1},{"version":"269b37626ed3fc5d6aff2b3103bfecdb86ab69e5fe28933b63a17ac83a547ede","impliedFormat":1},{"version":"1ef3cc7b03643e330cf9bcaeb42257a19f573bfafdaf51e2e45e52c19e20c3ff","impliedFormat":1},{"version":"e05f14953944c6b7f9c8a51c5739cad11e7ea4e441fd5659cbc3a5ebdc28bcfb","impliedFormat":1},{"version":"98fe9a0d3adc98c4aadc97a5bcb8c9589525e16e82e6714333e0315d1ff40a12","impliedFormat":1},{"version":"941c51312144ba38e2d86c081d212bc1f22f64eeb1dc342a1c7aeaaece7a7770","impliedFormat":1},{"version":"8d204669e89ac66eb2fa93e17daf42dc9fa33b3d865158327819df72f4fa3f1f","impliedFormat":1},{"version":"4f66c595621f6dd5c693d12c122def1c9eac9c48ace86deeb7c1a0fe54d63c61","impliedFormat":1},{"version":"6b26f80f079695a24ca28f6b19bb074ddb70cd79bc837ae8437e54ac8727aa14","impliedFormat":1},{"version":"1686e8b2a3bca066aafbb9bea2ac249e7205af7e6b878955741c66b3a4eaba63","impliedFormat":1},{"version":"f974c4abba2e7ae62cc358c6c1589df489406ef517a48355cbcc5f09cf11d8a8","impliedFormat":1},{"version":"949ab063079fbbcbf8a96c093b9cc465f83fd2ce49f4558492d6f95065cb201d","impliedFormat":1},{"version":"2d1c8bc1708e58c9aa73d71f89dc69d45fd00ed42841d022bbffa467c88464f4","impliedFormat":1},{"version":"55c3e286e757f731c3b80c1e6d4a567bcc6d5d512438016240e7da573a554dc3","impliedFormat":1},{"version":"33cb723eea3ced280f163fa717045e233b801081a64509d4d59b47620fde9ef5","impliedFormat":1},{"version":"8c357660e14e4ae047c44211f7d024d48eacf3d5ad6ac805095a436a4d3e268c","impliedFormat":1},{"version":"e67731d353b0f48ec4c7b1cee2358e2b7b6ea56c86775f2f3c07029b73b8bf06","impliedFormat":1},{"version":"e2eccdc38e22cc3882939c7fca91570a8379112c03f6206986e0bd78afeed21c","impliedFormat":1},{"version":"58a60f1ff614a331f5de62b4a629b5f41066430f7b72f65ec27f0cf841403c9e","impliedFormat":1},{"version":"bade739298ee5cd485966b3f2812cd94ed23be0bd8991624bde84db9e41e4240","impliedFormat":1},{"version":"4289204445b85c740954797654b504406befd2168731ec18efffb3ea22674a5c","impliedFormat":1},{"version":"e8ac4073fe7b469e55e1fc7b1540363d5a99b507839135fc97cfe5f2d0e36595","impliedFormat":1},{"version":"0f45169be3f2e0eb418bb1d5d480aa8fca7375af0b6e51dfccc3afbf77d9ef12","impliedFormat":1},{"version":"25699fd6154aa1d8ad42dd7739ebe65e15277c0f44d15ce6826cc43bde4ea5bf","impliedFormat":1},{"version":"d4fabc6a3e3110ed60c84e9ec6712265afe268601f3462198b57aa4359745c33","impliedFormat":1},{"version":"802353808bbaf39f8ce455fc7c459d39f13a2fefcf6f18a78c9ea0c61be089eb","impliedFormat":1},{"version":"a057b62631a72f836a8faa37332f03324b9610bf1bd7781fd6f93be063cd10f5","impliedFormat":1},{"version":"76c5f9421476e8762a83f970028b5b7e9ac13fade254d40c04c188f87be8fd7b","impliedFormat":1},{"version":"6378e4cad97066c62bf7bdd7fb6e2310f6a43cdf7aba950a2d37b4b0772c0554","impliedFormat":1},{"version":"3b6fddf2afbdf36f7bb869ccdeaffac8d53759e527e3425a6b8df4dca616d1fd","impliedFormat":1},{"version":"e88588861f78985ee212de6a72e45b445e5e04286b4ce1eb1d28d72bb781e269","impliedFormat":1},{"version":"22b9f52673fc11b687471594d6080d4319999e4d98903679a4ba94d24b056426","impliedFormat":1},{"version":"3d594041401ac69433c4a2ee492d356db4706adddd4f8201e7e5f542e58173b2","impliedFormat":1},{"version":"806aa43416ea1f5265e1cf94168fd4902348762aa8114dc53c131cff9f87b5ec","impliedFormat":1},{"version":"f27757e22127417f5daddd0ad4be81d5a743c95576d8c957ce39ef02a6cc1ec0","impliedFormat":1},{"version":"383679ac9fe44ffb52057dc5ad7ee2e4a90a3f4abbe9a1cf186d9a2cee617965","impliedFormat":1},{"version":"95a55bb419a26b07ed2a30f5e29524fab09f325c8a42fa59e83fdc75b9e0a8a1","impliedFormat":1},{"version":"c603261cc9c84d60d180847c874203b916a56e17935d113c0fa417448ca5841a","signature":"d5484487f05e22df348f0aeace0bb6f8cc8e4d80b94c45b663ee7ef591691f54","impliedFormat":1},{"version":"5432f2a8809fd2afc466a4c5172bf7e4a98a3fd4a200a3e1170678c35d3fc437","signature":"18441b8e2275c0d2baf8e0fc30d82d2ea5e3f29e3e7f778e8f7900b89c9c44da","impliedFormat":1},{"version":"cbe45accc75f5f25d7e01fbf641cad65da3059aa882a787dfef71d4984c22040","signature":"9acee195019b6d28b71fa42de5d99d8b0a92f63547c945429d157836eec584d4","impliedFormat":1},{"version":"1f9940f664dc6b2225362e84ff43478a1d28af2d2368a629e946ec469903aeb0","signature":"8f61adf9ef64cd9fed4530ea56c6fb311715f62cb4b93e4d86afbac2becb8d71","impliedFormat":1},{"version":"8e451cf211409c09dc354c8b99888735142fd160ccc252156aa6b4a2cd18c058","signature":"a115f768d9165403a59a6668b6869a4f1859e2246177f9d866b6b8be866551ce","impliedFormat":1},{"version":"ba5bfacf839638196a322a3cf458ac71362f820b6b924a36e6c6154d36225413","signature":"19d968cca65ab78df411463effc1e2c9a1841a8779d48d3305f389efc1ef5dea","impliedFormat":1},{"version":"32bf1da909cc2d03da57355e80487d61023b28c6a16263208121f2bb430fa7c8","signature":"4de4f42fea791c490066d8d704b10a04ed3c6465007d80cca1cb90b2ea9f02b2","impliedFormat":1},{"version":"a0e57bd97ce7c561ee71fbc990bf4ef70830f0fa47f35f2de0ac663bbf013514","signature":"23424f11d81d11b2be0a3121ee1820b938b808d48b08e09f1ceeb568bfff587b","impliedFormat":1},{"version":"6a1197b37f8f406bfb74528ca1fb90659c6d1a251d472b1c65affb5c6a6ba5f8","impliedFormat":1},{"version":"6a1197b37f8f406bfb74528ca1fb90659c6d1a251d472b1c65affb5c6a6ba5f8","impliedFormat":1},{"version":"6a1197b37f8f406bfb74528ca1fb90659c6d1a251d472b1c65affb5c6a6ba5f8","impliedFormat":1},{"version":"6a1197b37f8f406bfb74528ca1fb90659c6d1a251d472b1c65affb5c6a6ba5f8","impliedFormat":1},{"version":"6a1197b37f8f406bfb74528ca1fb90659c6d1a251d472b1c65affb5c6a6ba5f8","impliedFormat":1},{"version":"6a1197b37f8f406bfb74528ca1fb90659c6d1a251d472b1c65affb5c6a6ba5f8","impliedFormat":1},{"version":"6a1197b37f8f406bfb74528ca1fb90659c6d1a251d472b1c65affb5c6a6ba5f8","impliedFormat":1},{"version":"6a1197b37f8f406bfb74528ca1fb90659c6d1a251d472b1c65affb5c6a6ba5f8","impliedFormat":1},{"version":"6a1197b37f8f406bfb74528ca1fb90659c6d1a251d472b1c65affb5c6a6ba5f8","impliedFormat":1},{"version":"6a1197b37f8f406bfb74528ca1fb90659c6d1a251d472b1c65affb5c6a6ba5f8","impliedFormat":1},{"version":"516c53364c6b242591c65afc8b0f0f0cee74ac8a04f52470a539fcb33da2e318","impliedFormat":1},{"version":"045fe6d9e971df69d53ed8f1551e60c4849b0529e407e5960b31096418fa8346","impliedFormat":1},{"version":"0974c0312c1fe25e56e8030b1830ce8bc071a973714ac6f2409894addc346fcd","impliedFormat":1},{"version":"d10db4f48a9957fba79c406fbc79af87d979d34a1bbf5e12ca4a53cef0f16cca","impliedFormat":1},{"version":"3493d3ac411c6977f391ab438a9940c3a8e06dc04b7e2d84e0571a30aa224314","impliedFormat":1},{"version":"2907069986d89f01c9151da8a01161545a283405369bf009dbad2e661c556703","impliedFormat":1},{"version":"0feee6a4ec2ca4ce1072d0bf3a9839094b5a651decd598b2fa79bcdee647fb16","impliedFormat":1},{"version":"5bac046f252b55e3b05035d5329e2ef15a944fe429d81ac7fe36a4cd8bb8ae7f","impliedFormat":1},{"version":"4e1949bcfbde9ae075bff5b15ce1d3a401624840cefdbabdd6516004b93b821d","impliedFormat":1},{"version":"c84036d7bec11b3300648aca39ea471bc970927c5b19339c0fe1d65863b42886","impliedFormat":1},{"version":"6d33d3edd8f95c1551880530aa7165c7a43576e1c25680ed51ef573072889f0a","impliedFormat":1},{"version":"e7bd54c49435fc3668d6124ec6c400da823e088d7791ea4edf9483d170e5402d","impliedFormat":1},{"version":"b7d3c28a10bfefcf5dc2390b1684dfa0792ba845c83a4077e2b8927c598d0cd0","signature":"ee6a6afa2c88293a7b920309fb113ee4bb642ee65966ccffcebc7a48bea07a7e","impliedFormat":1},{"version":"9f7d5e154a06af18e5741273a02448f7352099d34306f6902ecd0ab4a18f4db4","signature":"a4ee07710fcabe36bac2b1cb71a05622faa85716eba08f0e7ce1c8eebdce3ead","impliedFormat":1},{"version":"dc3b172ee27054dbcedcf5007b78c256021db936f6313a9ce9a3ecbb503fd646","impliedFormat":1},{"version":"785b9d575b49124ce01b46f5b9402157c7611e6532effa562ac6aebec0074dfc","impliedFormat":1},{"version":"f3d8c757e148ad968f0d98697987db363070abada5f503da3c06aefd9d4248c1","impliedFormat":1},{"version":"a4a39b5714adfcadd3bbea6698ca2e942606d833bde62ad5fb6ec55f5e438ff8","impliedFormat":1},{"version":"bbc1d029093135d7d9bfa4b38cbf8761db505026cc458b5e9c8b74f4000e5e75","impliedFormat":1},{"version":"26844826cb93d1cb95aa49dbaf3515600c53fd139a82c6e0acdbc4bd2c84953f","impliedFormat":1},{"version":"908217c4f2244ec402b73533ebfcc46d6dcd34fc1c807ff403d7f98702abb3bc","impliedFormat":1}],"root":[82,[425,432],455,456],"options":{"allowUnreachableCode":false,"allowUnusedLabels":false,"alwaysStrict":true,"declaration":true,"declarationDir":"./","declarationMap":false,"emitDeclarationOnly":true,"esModuleInterop":true,"exactOptionalPropertyTypes":true,"module":100,"noFallthroughCasesInSwitch":true,"noImplicitOverride":true,"noImplicitReturns":true,"noImplicitThis":true,"noPropertyAccessFromIndexSignature":true,"noUncheckedIndexedAccess":true,"noUnusedLocals":true,"noUnusedParameters":true,"outDir":"./","skipLibCheck":true,"strict":true,"strictBindCallApply":true,"strictFunctionTypes":true,"strictNullChecks":true,"strictPropertyInitialization":true,"useUnknownInCatchVariables":true},"referencedMap":[[75,1],[77,2],[78,2],[453,2],[80,3],[454,4],[462,5],[461,6],[460,5],[85,7],[86,8],[105,9],[100,10],[101,11],[102,12],[103,10],[104,10],[93,13],[92,14],[90,15],[91,16],[96,17],[97,18],[98,18],[99,18],[89,19],[95,20],[94,21],[88,22],[322,23],[119,24],[129,25],[128,26],[444,27],[445,28],[449,29],[452,30],[450,31],[448,32],[446,33],[324,34],[114,35],[451,36],[447,37],[183,28],[323,38],[313,39],[184,40],[316,41],[443,42],[240,43],[246,44],[247,45],[248,45],[245,46],[325,47],[230,48],[250,49],[254,50],[255,51],[256,49],[257,52],[206,53],[196,54],[205,55],[258,56],[259,57],[200,58],[261,59],[262,60],[191,61],[263,62],[267,63],[269,64],[271,65],[272,66],[273,67],[204,57],[266,68],[275,69],[276,62],[277,70],[279,71],[201,72],[280,73],[281,74],[239,75],[283,76],[284,49],[286,77],[287,78],[291,79],[297,80],[296,81],[299,82],[300,83],[301,83],[302,84],[305,85],[352,86],[326,86],[327,87],[328,88],[329,87],[330,89],[331,87],[332,89],[333,86],[334,87],[354,87],[335,87],[336,90],[337,91],[355,87],[338,89],[339,87],[340,87],[341,92],[342,89],[343,87],[356,87],[344,87],[345,87],[346,87],[347,89],[357,87],[348,92],[353,87],[349,89],[307,93],[308,94],[309,95],[310,96],[203,97],[311,98],[312,99],[192,100],[193,101],[314,102],[315,103],[317,104],[318,93],[319,96],[282,105],[321,106],[363,107],[351,108],[364,109],[306,110],[350,111],[320,112],[136,113],[358,114],[293,115],[362,116],[366,117],[208,118],[185,119],[175,119],[171,120],[197,120],[231,118],[176,121],[220,122],[150,119],[142,119],[268,123],[144,120],[242,119],[163,124],[138,119],[251,119],[177,119],[157,119],[158,125],[228,126],[164,127],[359,119],[375,119],[374,119],[113,128],[120,129],[132,130],[154,131],[155,132],[174,133],[424,134],[117,135],[131,136],[207,137],[126,138],[135,139],[121,140],[122,141],[249,142],[123,143],[124,144],[118,141],[127,145],[133,130],[134,146],[156,129],[125,147],[294,148],[288,149],[130,140],[217,150],[376,151],[219,152],[264,153],[377,154],[222,155],[223,156],[224,157],[378,158],[253,159],[225,160],[380,161],[408,162],[218,163],[221,164],[381,165],[379,166],[215,167],[383,168],[179,169],[395,170],[166,171],[167,171],[169,172],[170,173],[403,174],[402,175],[173,176],[172,177],[162,178],[232,179],[186,180],[406,181],[407,182],[226,183],[151,184],[140,185],[382,185],[141,185],[143,186],[145,187],[209,188],[146,185],[216,189],[147,190],[412,191],[149,192],[148,193],[152,174],[244,194],[243,195],[235,185],[233,187],[236,196],[234,197],[237,198],[227,199],[238,200],[195,201],[194,202],[187,203],[199,204],[270,205],[188,206],[265,207],[274,208],[198,209],[278,210],[189,210],[210,211],[418,212],[153,213],[211,27],[419,213],[168,213],[415,214],[252,215],[413,216],[416,214],[214,217],[414,216],[212,218],[213,219],[404,220],[405,221],[202,222],[292,206],[295,27],[159,27],[260,27],[160,27],[360,27],[361,223],[161,224],[365,225],[385,226],[285,227],[290,228],[399,229],[386,28],[400,230],[387,28],[139,231],[388,232],[389,233],[391,234],[392,235],[394,236],[401,231],[390,237],[393,226],[417,238],[396,239],[397,240],[398,241],[303,128],[304,242],[229,243],[298,27],[190,244],[180,245],[384,246],[165,247],[423,248],[181,249],[182,250],[289,251],[410,252],[411,252],[409,27],[421,253],[422,253],[420,27],[107,254],[112,255],[108,254],[109,254],[110,254],[111,254],[431,256],[428,257],[82,258],[426,259],[456,260],[430,261],[427,262],[455,263],[432,264],[429,265]],"version":"5.6.3"}
@@ -0,0 +1,3 @@
1
+ export declare const throwIfInvalidString: (key: string, value: string) => void;
2
+ export declare const throwIfInvalidEphKey: (ephKey: Uint8Array) => void;
3
+ export declare const throwIf: (condition: boolean, message: string) => void;
@@ -1,5 +1,6 @@
1
- import * as viem from 'viem';
1
+ import { LocalAccount } from 'viem/accounts';
2
2
  import { NetworkSigner } from './networkSigner';
3
+ import { Address } from 'viem';
3
4
  /**
4
5
  * Create a new viem custom account for signing transactions using
5
6
  * the MPC network.
@@ -8,8 +9,8 @@ import { NetworkSigner } from './networkSigner';
8
9
  * @param publicKey Associated public key of the selected Key ID.
9
10
  * @param threshold The threshold.
10
11
  */
11
- export declare function createViemAccount(networkSigner: NetworkSigner, keyId: string, publicKey: string): viem.LocalAccount;
12
+ export declare function createViemAccount(networkSigner: NetworkSigner, keyId: string, publicKey: string): LocalAccount;
12
13
  /** Computes ETH address from ECDSA `publicKey` returned by Silent Network
13
14
  * @public
14
15
  */
15
- export declare function computeAddress(publicKey: string): viem.Address;
16
+ export declare function computeAddress(publicKey: string): Address;
@@ -1,5 +1,6 @@
1
- import { type KeygenSetupOpts, type KeygenResponse, type SignSetupOpts, type SignResponse } from './networkSigner';
2
- import { type ClientConfig, IWalletProviderServiceClient, type Signer } from './walletProviderServiceClientInterface';
1
+ import { AuthModule } from './authentication';
2
+ import { type KeygenSetupOpts, type KeygenResponse, type SignSetupOpts, type SignResponse, AddEphemeralKeyOpts, AddEphemeralKeyResponse } from './networkSigner';
3
+ import { type ClientConfig, IWalletProviderServiceClient } from './walletProviderServiceClientInterface';
3
4
  /**
4
5
  * The Websocket client to the Wallet Provider backend service.
5
6
  * All requests are relayed by this entity to the MPC network.
@@ -15,13 +16,17 @@ export declare class WalletProviderServiceClient implements IWalletProviderServi
15
16
  */
16
17
  constructor(config: ClientConfig);
17
18
  getWalletId(): string;
18
- startKeygen({ setup, signer }: {
19
+ startKeygen({ setup, authModule, }: {
19
20
  setup: KeygenSetupOpts;
20
- signer: Signer;
21
+ authModule: AuthModule;
21
22
  }): Promise<KeygenResponse>;
22
- startSigngen({ setup, signer }: {
23
+ startSigngen({ setup, authModule }: {
23
24
  setup: SignSetupOpts;
24
- signer: Signer;
25
+ authModule: AuthModule;
25
26
  }): Promise<SignResponse>;
26
- connect(setupOpts: KeygenSetupOpts | SignSetupOpts, signer: Signer): Promise<string>;
27
+ addEphemeralKey({ setup, authModule, }: {
28
+ setup: AddEphemeralKeyOpts;
29
+ authModule: AuthModule;
30
+ }): Promise<AddEphemeralKeyResponse>;
31
+ connect(setupOpts: KeygenSetupOpts | SignSetupOpts | AddEphemeralKeyOpts, authModule: AuthModule): Promise<string>;
27
32
  }
@@ -1,5 +1,5 @@
1
- import { UserAuthentication } from './authentication';
2
- import { KeygenResponse, KeygenSetupOpts, SignResponse, SignSetupOpts } from './networkSigner';
1
+ import { AuthModule, UserAuthentication } from './authentication';
2
+ import { AddEphemeralKeyOpts, KeygenResponse, KeygenSetupOpts, SignResponse, SignSetupOpts, AddEphemeralKeyResponse } from './networkSigner';
3
3
  /**
4
4
  * The config used to create Wallet Provider Service backend client.
5
5
  * Please refer to {@link https://shipyard.rs/silencelaboratories/crates/wallet-provider-service | example backend service}
@@ -24,12 +24,20 @@ export type Signer = (challenge: string) => Promise<UserAuthentication>;
24
24
  */
25
25
  export interface IWalletProviderServiceClient {
26
26
  getWalletId(): string;
27
- startKeygen({ setup, signer }: {
27
+ startKeygen({ setup, authModule }: {
28
28
  setup: KeygenSetupOpts;
29
- signer: Signer;
29
+ authModule: AuthModule;
30
30
  }): Promise<KeygenResponse>;
31
- startSigngen({ setup, signer }: {
31
+ startSigngen({ setup, authModule }: {
32
32
  setup: SignSetupOpts;
33
- signer: Signer;
33
+ authModule: AuthModule;
34
34
  }): Promise<SignResponse>;
35
+ addEphemeralKey({ setup, authModule, }: {
36
+ setup: AddEphemeralKeyOpts;
37
+ authModule: AuthModule;
38
+ }): Promise<AddEphemeralKeyResponse>;
39
+ }
40
+ export type QueryPath = 'signgen' | 'keygen' | 'addEphemeralKey';
41
+ export interface GetQueryPath {
42
+ get queryPath(): QueryPath;
35
43
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@silencelaboratories/walletprovider-sdk",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "author": "Silence Laboratories",
5
5
  "description": "Frontend SDK for Wallet Providers",
6
6
  "main": "./dist/index.cjs.js",
@@ -21,7 +21,7 @@
21
21
  "formatcheck": "prettier --check --cache .",
22
22
  "lint": "eslint --cache ./src/**/*.ts",
23
23
  "typecheck": "tsc -p . --noEmit",
24
- "build": "npm run clean && node build.js && npm run build:declaration",
24
+ "build": "node build.js && npm run build:declaration",
25
25
  "build:declaration": "tsc -p . --emitDeclarationOnly",
26
26
  "clean": "rimraf dist",
27
27
  "prepack": "npm run clean && npm run build && npm run build:declaration",
@@ -31,19 +31,21 @@
31
31
  "@eslint/js": "^9.3.0",
32
32
  "@microsoft/api-documenter": "^7.25.2",
33
33
  "@microsoft/api-extractor": "^7.46.2",
34
- "esbuild": "^0.23.0",
35
- "esbuild-node-externals": "^1.14.0",
34
+ "@types/eslint-plugin-security": "^3.0.0",
35
+ "esbuild": "0.24.0",
36
+ "esbuild-node-externals": "^1.15.0",
36
37
  "eslint": "^8.x",
38
+ "eslint-plugin-security": "^3.0.1",
37
39
  "globals": "^15.3.0",
38
40
  "npm-dts": "^1.3.13",
39
41
  "prettier": "^3.2.5",
40
42
  "rimraf": "^6.0.1",
41
- "typescript": "^5.4.5",
43
+ "typescript": "5.6.3",
42
44
  "typescript-eslint": "^7.11.0"
43
45
  },
44
46
  "dependencies": {
45
- "@noble/curves": "^1.4.2",
47
+ "@noble/curves": "^1.6.0",
46
48
  "js-base64": "^3.7.7",
47
- "viem": "^2.11.1"
49
+ "viem": "2.21.32"
48
50
  }
49
51
  }