@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 +9 -11
- package/dist/EOAauthentication.d.ts +3 -4
- package/dist/authentication.d.ts +50 -35
- package/dist/ephemeralAuthentication.d.ts +10 -5
- package/dist/index.cjs.js +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.esm.js +1 -1
- package/dist/networkSigner.d.ts +87 -23
- package/dist/passkeyAuthentication.d.ts +6 -9
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/validator.d.ts +3 -0
- package/dist/viemSigner.d.ts +4 -3
- package/dist/walletProviderServiceClient.d.ts +12 -7
- package/dist/walletProviderServiceClientInterface.d.ts +14 -6
- package/package.json +9 -7
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 =
|
|
80
|
-
ephSK = sk;
|
|
79
|
+
const sk = generateEphPrivateKey();
|
|
81
80
|
// Derive public part epk from esk
|
|
82
|
-
ephPK =
|
|
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 [
|
|
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.
|
|
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 =
|
|
136
|
-
ephSK = sk;
|
|
134
|
+
const sk = generateEphPrivateKey();
|
|
137
135
|
// Derive public part epk from esk
|
|
138
|
-
ephPK =
|
|
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 [
|
|
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.
|
|
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.
|
|
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,
|
|
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
|
-
|
|
57
|
-
lifetime: number;
|
|
56
|
+
ephClaim: EphClaim;
|
|
58
57
|
}): Promise<UserAuthentication>;
|
package/dist/authentication.d.ts
CHANGED
|
@@ -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:
|
|
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
|
|
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
|
|
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
|
|
38
|
-
|
|
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
|
|
62
|
-
/**
|
|
63
|
-
|
|
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
|
|
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
|
|
83
|
-
/**
|
|
84
|
-
|
|
85
|
-
/**
|
|
86
|
-
|
|
87
|
-
/**
|
|
88
|
-
|
|
89
|
-
/**
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
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
|
|
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,
|
|
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
|
-
|
|
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};
|
package/dist/networkSigner.d.ts
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
60
|
-
|
|
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
|
|
66
|
-
/**
|
|
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
|
-
|
|
74
|
-
|
|
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
|
-
/**
|
|
102
|
-
* Uses `authModule` to
|
|
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
|
-
|
|
110
|
-
/** Generate a signature
|
|
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 `
|
|
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
|
-
|
|
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,
|
|
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
|
-
|
|
23
|
-
lifetime: number;
|
|
22
|
+
ephClaim: EphClaim;
|
|
24
23
|
}): Promise<UserAuthentication>;
|
|
25
|
-
export declare function passkeyLogin({
|
|
26
|
-
ephId: string;
|
|
24
|
+
export declare function passkeyLogin({ challenge, allowCredentialId, rpConfig, ephClaim, }: {
|
|
27
25
|
challenge: string;
|
|
28
|
-
|
|
26
|
+
allowCredentialId: string | null;
|
|
29
27
|
rpConfig: RelyingPartyConfig;
|
|
30
|
-
|
|
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"}
|
package/dist/viemSigner.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import
|
|
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):
|
|
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):
|
|
16
|
+
export declare function computeAddress(publicKey: string): Address;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { type
|
|
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,
|
|
19
|
+
startKeygen({ setup, authModule, }: {
|
|
19
20
|
setup: KeygenSetupOpts;
|
|
20
|
-
|
|
21
|
+
authModule: AuthModule;
|
|
21
22
|
}): Promise<KeygenResponse>;
|
|
22
|
-
startSigngen({ setup,
|
|
23
|
+
startSigngen({ setup, authModule }: {
|
|
23
24
|
setup: SignSetupOpts;
|
|
24
|
-
|
|
25
|
+
authModule: AuthModule;
|
|
25
26
|
}): Promise<SignResponse>;
|
|
26
|
-
|
|
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,
|
|
27
|
+
startKeygen({ setup, authModule }: {
|
|
28
28
|
setup: KeygenSetupOpts;
|
|
29
|
-
|
|
29
|
+
authModule: AuthModule;
|
|
30
30
|
}): Promise<KeygenResponse>;
|
|
31
|
-
startSigngen({ setup,
|
|
31
|
+
startSigngen({ setup, authModule }: {
|
|
32
32
|
setup: SignSetupOpts;
|
|
33
|
-
|
|
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.
|
|
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": "
|
|
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
|
-
"
|
|
35
|
-
"esbuild
|
|
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": "
|
|
43
|
+
"typescript": "5.6.3",
|
|
42
44
|
"typescript-eslint": "^7.11.0"
|
|
43
45
|
},
|
|
44
46
|
"dependencies": {
|
|
45
|
-
"@noble/curves": "^1.
|
|
47
|
+
"@noble/curves": "^1.6.0",
|
|
46
48
|
"js-base64": "^3.7.7",
|
|
47
|
-
"viem": "
|
|
49
|
+
"viem": "2.21.32"
|
|
48
50
|
}
|
|
49
51
|
}
|