tempo.ts 0.11.1 → 0.12.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/CHANGELOG.md +61 -4
- package/README.md +3 -34
- package/dist/server/Handler.d.ts +14 -14
- package/dist/server/Handler.d.ts.map +1 -1
- package/dist/server/Handler.js +16 -17
- package/dist/server/Handler.js.map +1 -1
- package/dist/wagmi/Actions/amm.d.ts +51 -51
- package/dist/wagmi/Actions/amm.d.ts.map +1 -1
- package/dist/wagmi/Actions/amm.js +37 -37
- package/dist/wagmi/Actions/amm.js.map +1 -1
- package/dist/wagmi/Actions/dex.d.ts +129 -129
- package/dist/wagmi/Actions/dex.d.ts.map +1 -1
- package/dist/wagmi/Actions/dex.js +73 -73
- package/dist/wagmi/Actions/dex.js.map +1 -1
- package/dist/wagmi/Actions/faucet.d.ts +9 -9
- package/dist/wagmi/Actions/faucet.d.ts.map +1 -1
- package/dist/wagmi/Actions/faucet.js +7 -7
- package/dist/wagmi/Actions/faucet.js.map +1 -1
- package/dist/wagmi/Actions/fee.d.ts +17 -17
- package/dist/wagmi/Actions/fee.d.ts.map +1 -1
- package/dist/wagmi/Actions/fee.js +10 -10
- package/dist/wagmi/Actions/fee.js.map +1 -1
- package/dist/wagmi/Actions/nonce.d.ts +9 -79
- package/dist/wagmi/Actions/nonce.d.ts.map +1 -1
- package/dist/wagmi/Actions/nonce.js +7 -89
- package/dist/wagmi/Actions/nonce.js.map +1 -1
- package/dist/wagmi/Actions/policy.d.ts +69 -70
- package/dist/wagmi/Actions/policy.d.ts.map +1 -1
- package/dist/wagmi/Actions/policy.js +43 -43
- package/dist/wagmi/Actions/policy.js.map +1 -1
- package/dist/wagmi/Actions/reward.d.ts +51 -51
- package/dist/wagmi/Actions/reward.d.ts.map +1 -1
- package/dist/wagmi/Actions/reward.js +31 -31
- package/dist/wagmi/Actions/reward.js.map +1 -1
- package/dist/wagmi/Actions/token.d.ts +238 -238
- package/dist/wagmi/Actions/token.d.ts.map +1 -1
- package/dist/wagmi/Actions/token.js +136 -136
- package/dist/wagmi/Actions/token.js.map +1 -1
- package/dist/wagmi/Connector.d.ts +2 -1
- package/dist/wagmi/Connector.d.ts.map +1 -1
- package/dist/wagmi/Connector.js +83 -22
- package/dist/wagmi/Connector.js.map +1 -1
- package/dist/wagmi/Hooks/nonce.d.ts +1 -52
- package/dist/wagmi/Hooks/nonce.d.ts.map +1 -1
- package/dist/wagmi/Hooks/nonce.js +1 -70
- package/dist/wagmi/Hooks/nonce.js.map +1 -1
- package/dist/wagmi/Hooks/policy.d.ts +0 -1
- package/dist/wagmi/Hooks/policy.d.ts.map +1 -1
- package/dist/wagmi/Hooks/policy.js.map +1 -1
- package/dist/wagmi/KeyManager.d.ts +6 -3
- package/dist/wagmi/KeyManager.d.ts.map +1 -1
- package/dist/wagmi/KeyManager.js +9 -4
- package/dist/wagmi/KeyManager.js.map +1 -1
- package/package.json +2 -12
- package/src/server/Handler.test.ts +2 -2
- package/src/server/Handler.ts +16 -17
- package/src/wagmi/Actions/amm.ts +63 -63
- package/src/wagmi/Actions/dex.test.ts +1 -1
- package/src/wagmi/Actions/dex.ts +153 -153
- package/src/wagmi/Actions/faucet.ts +11 -11
- package/src/wagmi/Actions/fee.ts +20 -20
- package/src/wagmi/Actions/nonce.test.ts +1 -64
- package/src/wagmi/Actions/nonce.ts +10 -142
- package/src/wagmi/Actions/policy.ts +83 -85
- package/src/wagmi/Actions/reward.ts +64 -61
- package/src/wagmi/Actions/token.ts +287 -283
- package/src/wagmi/Connector.ts +105 -31
- package/src/wagmi/Hooks/dex.test.ts +1 -1
- package/src/wagmi/Hooks/fee.test.ts +0 -6
- package/src/wagmi/Hooks/nonce.test.ts +1 -66
- package/src/wagmi/Hooks/nonce.ts +1 -114
- package/src/wagmi/Hooks/policy.ts +0 -2
- package/src/wagmi/KeyManager.ts +18 -5
- package/dist/chains.d.ts +0 -73
- package/dist/chains.d.ts.map +0 -1
- package/dist/chains.js +0 -51
- package/dist/chains.js.map +0 -1
- package/dist/viem/Abis.d.ts +0 -2649
- package/dist/viem/Abis.d.ts.map +0 -1
- package/dist/viem/Abis.js +0 -1677
- package/dist/viem/Abis.js.map +0 -1
- package/dist/viem/Account.d.ts +0 -244
- package/dist/viem/Account.d.ts.map +0 -1
- package/dist/viem/Account.js +0 -382
- package/dist/viem/Account.js.map +0 -1
- package/dist/viem/Actions/account.d.ts +0 -40
- package/dist/viem/Actions/account.d.ts.map +0 -1
- package/dist/viem/Actions/account.js +0 -86
- package/dist/viem/Actions/account.js.map +0 -1
- package/dist/viem/Actions/amm.d.ts +0 -1991
- package/dist/viem/Actions/amm.d.ts.map +0 -1
- package/dist/viem/Actions/amm.js +0 -814
- package/dist/viem/Actions/amm.js.map +0 -1
- package/dist/viem/Actions/dex.d.ts +0 -3900
- package/dist/viem/Actions/dex.d.ts.map +0 -1
- package/dist/viem/Actions/dex.js +0 -1414
- package/dist/viem/Actions/dex.js.map +0 -1
- package/dist/viem/Actions/faucet.d.ts +0 -69
- package/dist/viem/Actions/faucet.d.ts.map +0 -1
- package/dist/viem/Actions/faucet.js +0 -73
- package/dist/viem/Actions/faucet.js.map +0 -1
- package/dist/viem/Actions/fee.d.ts +0 -360
- package/dist/viem/Actions/fee.d.ts.map +0 -1
- package/dist/viem/Actions/fee.js +0 -237
- package/dist/viem/Actions/fee.js.map +0 -1
- package/dist/viem/Actions/index.d.ts +0 -10
- package/dist/viem/Actions/index.d.ts.map +0 -1
- package/dist/viem/Actions/index.js +0 -10
- package/dist/viem/Actions/index.js.map +0 -1
- package/dist/viem/Actions/nonce.d.ts +0 -257
- package/dist/viem/Actions/nonce.d.ts.map +0 -1
- package/dist/viem/Actions/nonce.js +0 -228
- package/dist/viem/Actions/nonce.js.map +0 -1
- package/dist/viem/Actions/policy.d.ts +0 -1680
- package/dist/viem/Actions/policy.d.ts.map +0 -1
- package/dist/viem/Actions/policy.js +0 -875
- package/dist/viem/Actions/policy.js.map +0 -1
- package/dist/viem/Actions/reward.d.ts +0 -2422
- package/dist/viem/Actions/reward.d.ts.map +0 -1
- package/dist/viem/Actions/reward.js +0 -651
- package/dist/viem/Actions/reward.js.map +0 -1
- package/dist/viem/Actions/token.d.ts +0 -16007
- package/dist/viem/Actions/token.d.ts.map +0 -1
- package/dist/viem/Actions/token.js +0 -2936
- package/dist/viem/Actions/token.js.map +0 -1
- package/dist/viem/Addresses.d.ts +0 -9
- package/dist/viem/Addresses.d.ts.map +0 -1
- package/dist/viem/Addresses.js +0 -9
- package/dist/viem/Addresses.js.map +0 -1
- package/dist/viem/Chain.d.ts +0 -451
- package/dist/viem/Chain.d.ts.map +0 -1
- package/dist/viem/Chain.js +0 -96
- package/dist/viem/Chain.js.map +0 -1
- package/dist/viem/Decorator.d.ts +0 -2783
- package/dist/viem/Decorator.d.ts.map +0 -1
- package/dist/viem/Decorator.js +0 -137
- package/dist/viem/Decorator.js.map +0 -1
- package/dist/viem/Formatters.d.ts +0 -10
- package/dist/viem/Formatters.d.ts.map +0 -1
- package/dist/viem/Formatters.js +0 -104
- package/dist/viem/Formatters.js.map +0 -1
- package/dist/viem/P256.d.ts +0 -2
- package/dist/viem/P256.d.ts.map +0 -1
- package/dist/viem/P256.js +0 -2
- package/dist/viem/P256.js.map +0 -1
- package/dist/viem/Secp256k1.d.ts +0 -2
- package/dist/viem/Secp256k1.d.ts.map +0 -1
- package/dist/viem/Secp256k1.js +0 -2
- package/dist/viem/Secp256k1.js.map +0 -1
- package/dist/viem/Storage.d.ts +0 -24
- package/dist/viem/Storage.d.ts.map +0 -1
- package/dist/viem/Storage.js +0 -68
- package/dist/viem/Storage.js.map +0 -1
- package/dist/viem/TokenIds.d.ts +0 -2
- package/dist/viem/TokenIds.d.ts.map +0 -1
- package/dist/viem/TokenIds.js +0 -2
- package/dist/viem/TokenIds.js.map +0 -1
- package/dist/viem/Transaction.d.ts +0 -76
- package/dist/viem/Transaction.d.ts.map +0 -1
- package/dist/viem/Transaction.js +0 -176
- package/dist/viem/Transaction.js.map +0 -1
- package/dist/viem/Transport.d.ts +0 -33
- package/dist/viem/Transport.d.ts.map +0 -1
- package/dist/viem/Transport.js +0 -138
- package/dist/viem/Transport.js.map +0 -1
- package/dist/viem/WebAuthnP256.d.ts +0 -82
- package/dist/viem/WebAuthnP256.d.ts.map +0 -1
- package/dist/viem/WebAuthnP256.js +0 -97
- package/dist/viem/WebAuthnP256.js.map +0 -1
- package/dist/viem/WebCryptoP256.d.ts +0 -2
- package/dist/viem/WebCryptoP256.d.ts.map +0 -1
- package/dist/viem/WebCryptoP256.js +0 -2
- package/dist/viem/WebCryptoP256.js.map +0 -1
- package/dist/viem/index.d.ts +0 -26
- package/dist/viem/index.d.ts.map +0 -1
- package/dist/viem/index.js +0 -17
- package/dist/viem/index.js.map +0 -1
- package/dist/viem/internal/types.d.ts +0 -20
- package/dist/viem/internal/types.d.ts.map +0 -1
- package/dist/viem/internal/types.js +0 -2
- package/dist/viem/internal/types.js.map +0 -1
- package/dist/viem/internal/utils.d.ts +0 -14
- package/dist/viem/internal/utils.d.ts.map +0 -1
- package/dist/viem/internal/utils.js +0 -33
- package/dist/viem/internal/utils.js.map +0 -1
- package/src/chains.ts +0 -54
- package/src/viem/Abis.ts +0 -1688
- package/src/viem/Account.test.ts +0 -444
- package/src/viem/Account.ts +0 -601
- package/src/viem/Actions/account.test.ts +0 -414
- package/src/viem/Actions/account.ts +0 -106
- package/src/viem/Actions/amm.test.ts +0 -381
- package/src/viem/Actions/amm.ts +0 -1227
- package/src/viem/Actions/dex.test.ts +0 -1549
- package/src/viem/Actions/dex.ts +0 -2150
- package/src/viem/Actions/faucet.ts +0 -121
- package/src/viem/Actions/fee.test.ts +0 -259
- package/src/viem/Actions/fee.ts +0 -372
- package/src/viem/Actions/index.ts +0 -9
- package/src/viem/Actions/nonce.test.ts +0 -206
- package/src/viem/Actions/nonce.ts +0 -347
- package/src/viem/Actions/policy.test.ts +0 -534
- package/src/viem/Actions/policy.ts +0 -1335
- package/src/viem/Actions/reward.test.ts +0 -434
- package/src/viem/Actions/reward.ts +0 -944
- package/src/viem/Actions/token.test.ts +0 -3029
- package/src/viem/Actions/token.ts +0 -4458
- package/src/viem/Addresses.ts +0 -9
- package/src/viem/Chain.bench-d.ts +0 -12
- package/src/viem/Chain.test.ts +0 -168
- package/src/viem/Chain.ts +0 -157
- package/src/viem/Decorator.bench-d.ts +0 -11
- package/src/viem/Decorator.test.ts +0 -39
- package/src/viem/Decorator.ts +0 -3179
- package/src/viem/Formatters.ts +0 -164
- package/src/viem/P256.ts +0 -1
- package/src/viem/Secp256k1.ts +0 -1
- package/src/viem/Storage.ts +0 -110
- package/src/viem/TokenIds.ts +0 -1
- package/src/viem/Transaction.ts +0 -382
- package/src/viem/Transport.ts +0 -191
- package/src/viem/WebAuthnP256.ts +0 -146
- package/src/viem/WebCryptoP256.ts +0 -1
- package/src/viem/e2e.test.ts +0 -1602
- package/src/viem/index.ts +0 -30
- package/src/viem/internal/types.ts +0 -69
- package/src/viem/internal/utils.ts +0 -58
- package/src/wagmi/internal/types.ts +0 -16
package/dist/viem/Account.js
DELETED
|
@@ -1,382 +0,0 @@
|
|
|
1
|
-
import * as Address from 'ox/Address';
|
|
2
|
-
import * as Hex from 'ox/Hex';
|
|
3
|
-
import * as P256 from 'ox/P256';
|
|
4
|
-
import * as PublicKey from 'ox/PublicKey';
|
|
5
|
-
import * as Secp256k1 from 'ox/Secp256k1';
|
|
6
|
-
import * as Signature from 'ox/Signature';
|
|
7
|
-
import { KeyAuthorization, SignatureEnvelope } from 'ox/tempo';
|
|
8
|
-
import * as WebAuthnP256 from 'ox/WebAuthnP256';
|
|
9
|
-
import * as WebCryptoP256 from 'ox/WebCryptoP256';
|
|
10
|
-
import { hashAuthorization, hashMessage, hashTypedData, keccak256, parseAccount, } from 'viem/utils';
|
|
11
|
-
import * as Storage from './Storage.js';
|
|
12
|
-
import * as Transaction from './Transaction.js';
|
|
13
|
-
/**
|
|
14
|
-
* Instantiates an Account from a headless WebAuthn credential (P256 private key).
|
|
15
|
-
*
|
|
16
|
-
* @example
|
|
17
|
-
* ```ts
|
|
18
|
-
* import { Account } from 'tempo.ts/viem'
|
|
19
|
-
*
|
|
20
|
-
* const account = Account.fromHeadlessWebAuthn('0x...')
|
|
21
|
-
* ```
|
|
22
|
-
*
|
|
23
|
-
* @param privateKey P256 private key.
|
|
24
|
-
* @returns Account.
|
|
25
|
-
*/
|
|
26
|
-
export function fromHeadlessWebAuthn(privateKey, options) {
|
|
27
|
-
const { access, rpId, origin, storage } = options;
|
|
28
|
-
const publicKey = P256.getPublicKey({ privateKey });
|
|
29
|
-
return from({
|
|
30
|
-
access,
|
|
31
|
-
keyType: 'webAuthn',
|
|
32
|
-
publicKey,
|
|
33
|
-
async sign({ hash }) {
|
|
34
|
-
const { metadata, payload } = WebAuthnP256.getSignPayload({
|
|
35
|
-
...options,
|
|
36
|
-
challenge: hash,
|
|
37
|
-
rpId,
|
|
38
|
-
origin,
|
|
39
|
-
});
|
|
40
|
-
const signature = P256.sign({
|
|
41
|
-
payload,
|
|
42
|
-
privateKey,
|
|
43
|
-
hash: true,
|
|
44
|
-
});
|
|
45
|
-
return SignatureEnvelope.serialize({
|
|
46
|
-
metadata,
|
|
47
|
-
signature,
|
|
48
|
-
publicKey,
|
|
49
|
-
type: 'webAuthn',
|
|
50
|
-
});
|
|
51
|
-
},
|
|
52
|
-
storage,
|
|
53
|
-
});
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Instantiates an Account from a P256 private key.
|
|
57
|
-
*
|
|
58
|
-
* @example
|
|
59
|
-
* ```ts
|
|
60
|
-
* import { Account } from 'tempo.ts/viem'
|
|
61
|
-
*
|
|
62
|
-
* const account = Account.fromP256('0x...')
|
|
63
|
-
* ```
|
|
64
|
-
*
|
|
65
|
-
* @param privateKey P256 private key.
|
|
66
|
-
* @returns Account.
|
|
67
|
-
*/
|
|
68
|
-
export function fromP256(privateKey, options = {}) {
|
|
69
|
-
const { access, storage } = options;
|
|
70
|
-
const publicKey = P256.getPublicKey({ privateKey });
|
|
71
|
-
return from({
|
|
72
|
-
access,
|
|
73
|
-
keyType: 'p256',
|
|
74
|
-
publicKey,
|
|
75
|
-
async sign({ hash }) {
|
|
76
|
-
const signature = P256.sign({ payload: hash, privateKey });
|
|
77
|
-
return SignatureEnvelope.serialize({
|
|
78
|
-
signature,
|
|
79
|
-
publicKey,
|
|
80
|
-
type: 'p256',
|
|
81
|
-
});
|
|
82
|
-
},
|
|
83
|
-
storage,
|
|
84
|
-
});
|
|
85
|
-
}
|
|
86
|
-
/**
|
|
87
|
-
* Instantiates an Account from a Secp256k1 private key.
|
|
88
|
-
*
|
|
89
|
-
* @example
|
|
90
|
-
* ```ts
|
|
91
|
-
* import { Account } from 'tempo.ts/viem'
|
|
92
|
-
*
|
|
93
|
-
* const account = Account.fromSecp256k1('0x...')
|
|
94
|
-
* ```
|
|
95
|
-
*
|
|
96
|
-
* @param privateKey Secp256k1 private key.
|
|
97
|
-
* @returns Account.
|
|
98
|
-
*/
|
|
99
|
-
// TODO: this function will be redundant when Viem migrates to Ox.
|
|
100
|
-
export function fromSecp256k1(privateKey, options = {}) {
|
|
101
|
-
const { access, storage } = options;
|
|
102
|
-
const publicKey = Secp256k1.getPublicKey({ privateKey });
|
|
103
|
-
return from({
|
|
104
|
-
access,
|
|
105
|
-
keyType: 'secp256k1',
|
|
106
|
-
publicKey,
|
|
107
|
-
async sign(parameters) {
|
|
108
|
-
const { hash } = parameters;
|
|
109
|
-
const signature = Secp256k1.sign({ payload: hash, privateKey });
|
|
110
|
-
return Signature.toHex(signature);
|
|
111
|
-
},
|
|
112
|
-
storage,
|
|
113
|
-
});
|
|
114
|
-
}
|
|
115
|
-
/**
|
|
116
|
-
* Instantiates an Account from a WebAuthn credential.
|
|
117
|
-
*
|
|
118
|
-
* @example
|
|
119
|
-
*
|
|
120
|
-
* ### Create Passkey + Instantiate Account
|
|
121
|
-
*
|
|
122
|
-
* Create a credential with `WebAuthnP256.createCredential` and then instantiate
|
|
123
|
-
* a Viem Account with `Account.fromWebAuthnP256`.
|
|
124
|
-
*
|
|
125
|
-
* It is highly recommended to store the credential's public key in an external store
|
|
126
|
-
* for future use (ie. for future calls to `WebAuthnP256.getCredential`).
|
|
127
|
-
*
|
|
128
|
-
* ```ts
|
|
129
|
-
* import { Account, WebAuthnP256 } from 'tempo.ts/viem'
|
|
130
|
-
* import { publicKeyStore } from './store'
|
|
131
|
-
*
|
|
132
|
-
* // 1. Create credential
|
|
133
|
-
* const credential = await WebAuthnP256.createCredential({ name: 'Example' })
|
|
134
|
-
*
|
|
135
|
-
* // 2. Instantiate account
|
|
136
|
-
* const account = Account.fromWebAuthnP256(credential)
|
|
137
|
-
*
|
|
138
|
-
* // 3. Store public key
|
|
139
|
-
* await publicKeyStore.set(credential.id, credential.publicKey)
|
|
140
|
-
*
|
|
141
|
-
* ```
|
|
142
|
-
*
|
|
143
|
-
* @example
|
|
144
|
-
*
|
|
145
|
-
* ### Get Credential + Instantiate Account
|
|
146
|
-
*
|
|
147
|
-
* Gets a credential from `WebAuthnP256.getCredential` and then instantiates
|
|
148
|
-
* an account with `Account.fromWebAuthnP256`.
|
|
149
|
-
*
|
|
150
|
-
* The `getPublicKey` function is required to fetch the public key paired with the credential
|
|
151
|
-
* from an external store. The public key is required to derive the account's address.
|
|
152
|
-
*
|
|
153
|
-
* ```ts
|
|
154
|
-
* import { Account, WebAuthnP256 } from 'tempo.ts/viem'
|
|
155
|
-
* import { publicKeyStore } from './store'
|
|
156
|
-
*
|
|
157
|
-
* // 1. Get credential
|
|
158
|
-
* const credential = await WebAuthnP256.getCredential({
|
|
159
|
-
* async getPublicKey(credential) {
|
|
160
|
-
* // 2. Get public key from external store.
|
|
161
|
-
* return await publicKeyStore.get(credential.id)
|
|
162
|
-
* }
|
|
163
|
-
* })
|
|
164
|
-
*
|
|
165
|
-
* // 3. Instantiate account
|
|
166
|
-
* const account = Account.fromWebAuthnP256(credential)
|
|
167
|
-
* ```
|
|
168
|
-
*
|
|
169
|
-
* @param credential WebAuthnP256 credential.
|
|
170
|
-
* @returns Account.
|
|
171
|
-
*/
|
|
172
|
-
export function fromWebAuthnP256(credential, options = {}) {
|
|
173
|
-
const { id } = credential;
|
|
174
|
-
const { storage } = options;
|
|
175
|
-
const publicKey = PublicKey.fromHex(credential.publicKey);
|
|
176
|
-
return from({
|
|
177
|
-
keyType: 'webAuthn',
|
|
178
|
-
publicKey,
|
|
179
|
-
async sign({ hash }) {
|
|
180
|
-
const { metadata, signature } = await WebAuthnP256.sign({
|
|
181
|
-
...options,
|
|
182
|
-
challenge: hash,
|
|
183
|
-
credentialId: id,
|
|
184
|
-
});
|
|
185
|
-
return SignatureEnvelope.serialize({
|
|
186
|
-
publicKey,
|
|
187
|
-
metadata,
|
|
188
|
-
signature,
|
|
189
|
-
type: 'webAuthn',
|
|
190
|
-
});
|
|
191
|
-
},
|
|
192
|
-
storage,
|
|
193
|
-
});
|
|
194
|
-
}
|
|
195
|
-
/**
|
|
196
|
-
* Instantiates an Account from a P256 private key.
|
|
197
|
-
*
|
|
198
|
-
* @example
|
|
199
|
-
* ```ts
|
|
200
|
-
* import { Account } from 'tempo.ts/viem'
|
|
201
|
-
* import { WebCryptoP256 } from 'ox'
|
|
202
|
-
*
|
|
203
|
-
* const keyPair = await WebCryptoP256.createKeyPair()
|
|
204
|
-
*
|
|
205
|
-
* const account = Account.fromWebCryptoP256(keyPair)
|
|
206
|
-
* ```
|
|
207
|
-
*
|
|
208
|
-
* @param keyPair WebCryptoP256 key pair.
|
|
209
|
-
* @returns Account.
|
|
210
|
-
*/
|
|
211
|
-
export function fromWebCryptoP256(keyPair, options = {}) {
|
|
212
|
-
const { access, storage } = options;
|
|
213
|
-
const { publicKey, privateKey } = keyPair;
|
|
214
|
-
return from({
|
|
215
|
-
access,
|
|
216
|
-
keyType: 'p256',
|
|
217
|
-
publicKey,
|
|
218
|
-
async sign({ hash }) {
|
|
219
|
-
const signature = await WebCryptoP256.sign({ payload: hash, privateKey });
|
|
220
|
-
return SignatureEnvelope.serialize({
|
|
221
|
-
signature,
|
|
222
|
-
prehash: true,
|
|
223
|
-
publicKey,
|
|
224
|
-
type: 'p256',
|
|
225
|
-
});
|
|
226
|
-
},
|
|
227
|
-
storage,
|
|
228
|
-
});
|
|
229
|
-
}
|
|
230
|
-
export async function signKeyAuthorization(account, parameters) {
|
|
231
|
-
const { key, expiry, limits } = parameters;
|
|
232
|
-
const { accessKeyAddress, keyType: type } = key;
|
|
233
|
-
const signature = await account.sign({
|
|
234
|
-
hash: KeyAuthorization.getSignPayload({
|
|
235
|
-
address: accessKeyAddress,
|
|
236
|
-
expiry,
|
|
237
|
-
limits,
|
|
238
|
-
type,
|
|
239
|
-
}),
|
|
240
|
-
});
|
|
241
|
-
return KeyAuthorization.from({
|
|
242
|
-
address: accessKeyAddress,
|
|
243
|
-
expiry,
|
|
244
|
-
limits,
|
|
245
|
-
signature: SignatureEnvelope.from(signature),
|
|
246
|
-
type,
|
|
247
|
-
});
|
|
248
|
-
}
|
|
249
|
-
/** @internal */
|
|
250
|
-
// biome-ignore lint/correctness/noUnusedVariables: _
|
|
251
|
-
function fromBase(parameters) {
|
|
252
|
-
const { keyType = 'secp256k1', parentAddress, source = 'privateKey', } = parameters;
|
|
253
|
-
const address = parentAddress ?? Address.fromPublicKey(parameters.publicKey);
|
|
254
|
-
const publicKey = PublicKey.toHex(parameters.publicKey, {
|
|
255
|
-
includePrefix: false,
|
|
256
|
-
});
|
|
257
|
-
const storage = Storage.from(parameters.storage ?? Storage.memory(), { key: `tempo.ts:${address.toLowerCase()}` });
|
|
258
|
-
async function sign({ hash }) {
|
|
259
|
-
const signature = await parameters.sign({ hash });
|
|
260
|
-
if (parentAddress)
|
|
261
|
-
return SignatureEnvelope.serialize(SignatureEnvelope.from({
|
|
262
|
-
userAddress: parentAddress,
|
|
263
|
-
inner: SignatureEnvelope.from(signature),
|
|
264
|
-
type: 'keychain',
|
|
265
|
-
}));
|
|
266
|
-
return signature;
|
|
267
|
-
}
|
|
268
|
-
return {
|
|
269
|
-
address: Address.checksum(address),
|
|
270
|
-
keyType,
|
|
271
|
-
sign,
|
|
272
|
-
async signAuthorization(parameters) {
|
|
273
|
-
const { chainId, nonce } = parameters;
|
|
274
|
-
const address = parameters.contractAddress ?? parameters.address;
|
|
275
|
-
const signature = await sign({
|
|
276
|
-
hash: hashAuthorization({ address, chainId, nonce }),
|
|
277
|
-
});
|
|
278
|
-
const envelope = SignatureEnvelope.from(signature);
|
|
279
|
-
if (envelope.type !== 'secp256k1')
|
|
280
|
-
throw new Error('Unsupported signature type. Expected `secp256k1` but got `' +
|
|
281
|
-
envelope.type +
|
|
282
|
-
'`.');
|
|
283
|
-
const { r, s, yParity } = envelope.signature;
|
|
284
|
-
return {
|
|
285
|
-
address,
|
|
286
|
-
chainId,
|
|
287
|
-
nonce,
|
|
288
|
-
r: Hex.fromNumber(r, { size: 32 }),
|
|
289
|
-
s: Hex.fromNumber(s, { size: 32 }),
|
|
290
|
-
yParity,
|
|
291
|
-
};
|
|
292
|
-
},
|
|
293
|
-
async signMessage(parameters) {
|
|
294
|
-
const { message } = parameters;
|
|
295
|
-
const signature = await sign({ hash: hashMessage(message) });
|
|
296
|
-
const envelope = SignatureEnvelope.from(signature);
|
|
297
|
-
return SignatureEnvelope.serialize(envelope);
|
|
298
|
-
},
|
|
299
|
-
async signTransaction(transaction, options) {
|
|
300
|
-
const { serializer = Transaction.serialize } = options ?? {};
|
|
301
|
-
const keyAuthorization = (await storage?.getItem('pendingKeyAuthorization')) ?? undefined;
|
|
302
|
-
if (keyAuthorization && !transaction.keyAuthorization) {
|
|
303
|
-
;
|
|
304
|
-
transaction.keyAuthorization = keyAuthorization;
|
|
305
|
-
await storage.removeItem('pendingKeyAuthorization');
|
|
306
|
-
}
|
|
307
|
-
const signature = await sign({
|
|
308
|
-
hash: keccak256(await serializer(transaction)),
|
|
309
|
-
});
|
|
310
|
-
const envelope = SignatureEnvelope.from(signature);
|
|
311
|
-
return await serializer(transaction, envelope);
|
|
312
|
-
},
|
|
313
|
-
async signTypedData(typedData) {
|
|
314
|
-
const signature = await sign({ hash: hashTypedData(typedData) });
|
|
315
|
-
const envelope = SignatureEnvelope.from(signature);
|
|
316
|
-
return SignatureEnvelope.serialize(envelope);
|
|
317
|
-
},
|
|
318
|
-
publicKey,
|
|
319
|
-
source,
|
|
320
|
-
storage,
|
|
321
|
-
type: 'local',
|
|
322
|
-
};
|
|
323
|
-
}
|
|
324
|
-
/** @internal */
|
|
325
|
-
// biome-ignore lint/correctness/noUnusedVariables: _
|
|
326
|
-
function fromRoot(parameters) {
|
|
327
|
-
const account = fromBase(parameters);
|
|
328
|
-
return {
|
|
329
|
-
...account,
|
|
330
|
-
source: 'root',
|
|
331
|
-
async assignKeyAuthorization(keyAuthorization) {
|
|
332
|
-
account.storage.setItem('pendingKeyAuthorization', keyAuthorization);
|
|
333
|
-
},
|
|
334
|
-
async signKeyAuthorization(key, parameters = {}) {
|
|
335
|
-
const { expiry, limits } = parameters;
|
|
336
|
-
const { accessKeyAddress, keyType: type } = key;
|
|
337
|
-
const signature = await account.sign({
|
|
338
|
-
hash: KeyAuthorization.getSignPayload({
|
|
339
|
-
address: accessKeyAddress,
|
|
340
|
-
expiry,
|
|
341
|
-
limits,
|
|
342
|
-
type,
|
|
343
|
-
}),
|
|
344
|
-
});
|
|
345
|
-
const keyAuthorization = KeyAuthorization.from({
|
|
346
|
-
address: accessKeyAddress,
|
|
347
|
-
expiry,
|
|
348
|
-
limits,
|
|
349
|
-
signature: SignatureEnvelope.from(signature),
|
|
350
|
-
type,
|
|
351
|
-
});
|
|
352
|
-
return keyAuthorization;
|
|
353
|
-
},
|
|
354
|
-
};
|
|
355
|
-
}
|
|
356
|
-
// biome-ignore lint/correctness/noUnusedVariables: _
|
|
357
|
-
function fromAccessKey(parameters) {
|
|
358
|
-
const { access } = parameters;
|
|
359
|
-
const { address: parentAddress } = parseAccount(access);
|
|
360
|
-
const account = fromBase({ ...parameters, parentAddress });
|
|
361
|
-
return {
|
|
362
|
-
...account,
|
|
363
|
-
accessKeyAddress: Address.fromPublicKey(parameters.publicKey),
|
|
364
|
-
source: 'accessKey',
|
|
365
|
-
};
|
|
366
|
-
}
|
|
367
|
-
// biome-ignore lint/correctness/noUnusedVariables: _
|
|
368
|
-
function from(parameters) {
|
|
369
|
-
const { access } = parameters;
|
|
370
|
-
if (access)
|
|
371
|
-
return fromAccessKey(parameters);
|
|
372
|
-
return fromRoot(parameters);
|
|
373
|
-
}
|
|
374
|
-
// Export types required for inference.
|
|
375
|
-
export {
|
|
376
|
-
/** @deprecated */
|
|
377
|
-
KeyAuthorization as z_KeyAuthorization,
|
|
378
|
-
/** @deprecated */
|
|
379
|
-
SignatureEnvelope as z_SignatureEnvelope,
|
|
380
|
-
/** @deprecated */
|
|
381
|
-
TxEnvelopeTempo as z_TxEnvelopeTempo, } from 'ox/tempo';
|
|
382
|
-
//# sourceMappingURL=Account.js.map
|
package/dist/viem/Account.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Account.js","sourceRoot":"","sources":["../../src/viem/Account.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import type { Chain, Client, Transport } from 'viem';
|
|
2
|
-
import type { VerifyHashParameters, VerifyHashReturnType } from 'viem/actions';
|
|
3
|
-
import type { PartialBy } from '../../internal/types.js';
|
|
4
|
-
/**
|
|
5
|
-
* Verifies that a signature is valid for a given hash and address.
|
|
6
|
-
* Supports multiple signature types: Secp256k1, P256, WebCrypto P256, and WebAuthn P256.
|
|
7
|
-
*
|
|
8
|
-
* @example
|
|
9
|
-
* ```ts
|
|
10
|
-
* import { createClient, http } from 'viem'
|
|
11
|
-
* import { tempo } from 'tempo.ts/chains'
|
|
12
|
-
* import { Actions, Account, P256 } from 'tempo.ts/viem'
|
|
13
|
-
*
|
|
14
|
-
* const client = createClient({
|
|
15
|
-
* chain: tempo({ feeToken: '0x20c0000000000000000000000000000000000001' })
|
|
16
|
-
* transport: http(),
|
|
17
|
-
* })
|
|
18
|
-
*
|
|
19
|
-
* const privateKey = P256.randomPrivateKey()
|
|
20
|
-
* const account = Account.fromP256(privateKey)
|
|
21
|
-
*
|
|
22
|
-
* const hash = '0x...'
|
|
23
|
-
* const signature = await account.sign({ hash })
|
|
24
|
-
*
|
|
25
|
-
* const valid = await Actions.verifyHash(client, {
|
|
26
|
-
* hash,
|
|
27
|
-
* signature,
|
|
28
|
-
* })
|
|
29
|
-
* ```
|
|
30
|
-
*
|
|
31
|
-
* @param client - Client.
|
|
32
|
-
* @param parameters - Parameters.
|
|
33
|
-
* @returns Whether the signature is valid.
|
|
34
|
-
*/
|
|
35
|
-
export declare function verifyHash<chain extends Chain | undefined>(client: Client<Transport, chain>, parameters: verifyHash.Parameters): Promise<verifyHash.ReturnValue>;
|
|
36
|
-
export declare namespace verifyHash {
|
|
37
|
-
type Parameters = PartialBy<VerifyHashParameters, 'address'>;
|
|
38
|
-
type ReturnValue = VerifyHashReturnType;
|
|
39
|
-
}
|
|
40
|
-
//# sourceMappingURL=account.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"account.d.ts","sourceRoot":"","sources":["../../../src/viem/Actions/account.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,MAAM,CAAA;AACpD,OAAO,KAAK,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AAG9E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAExD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAsB,UAAU,CAAC,KAAK,SAAS,KAAK,GAAG,SAAS,EAC9D,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,EAChC,UAAU,EAAE,UAAU,CAAC,UAAU,GAChC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAsDjC;AAED,MAAM,CAAC,OAAO,WAAW,UAAU,CAAC;IAClC,KAAY,UAAU,GAAG,SAAS,CAAC,oBAAoB,EAAE,SAAS,CAAC,CAAA;IAEnE,KAAY,WAAW,GAAG,oBAAoB,CAAA;CAC/C"}
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
import { Secp256k1 } from 'ox';
|
|
2
|
-
import * as Hex from 'ox/Hex';
|
|
3
|
-
import * as P256 from 'ox/P256';
|
|
4
|
-
import { SignatureEnvelope } from 'ox/tempo';
|
|
5
|
-
import * as WebAuthnP256 from 'ox/WebAuthnP256';
|
|
6
|
-
import { verifyHash as viem_verifyHash } from 'viem/actions';
|
|
7
|
-
import { getAction } from 'viem/utils';
|
|
8
|
-
/**
|
|
9
|
-
* Verifies that a signature is valid for a given hash and address.
|
|
10
|
-
* Supports multiple signature types: Secp256k1, P256, WebCrypto P256, and WebAuthn P256.
|
|
11
|
-
*
|
|
12
|
-
* @example
|
|
13
|
-
* ```ts
|
|
14
|
-
* import { createClient, http } from 'viem'
|
|
15
|
-
* import { tempo } from 'tempo.ts/chains'
|
|
16
|
-
* import { Actions, Account, P256 } from 'tempo.ts/viem'
|
|
17
|
-
*
|
|
18
|
-
* const client = createClient({
|
|
19
|
-
* chain: tempo({ feeToken: '0x20c0000000000000000000000000000000000001' })
|
|
20
|
-
* transport: http(),
|
|
21
|
-
* })
|
|
22
|
-
*
|
|
23
|
-
* const privateKey = P256.randomPrivateKey()
|
|
24
|
-
* const account = Account.fromP256(privateKey)
|
|
25
|
-
*
|
|
26
|
-
* const hash = '0x...'
|
|
27
|
-
* const signature = await account.sign({ hash })
|
|
28
|
-
*
|
|
29
|
-
* const valid = await Actions.verifyHash(client, {
|
|
30
|
-
* hash,
|
|
31
|
-
* signature,
|
|
32
|
-
* })
|
|
33
|
-
* ```
|
|
34
|
-
*
|
|
35
|
-
* @param client - Client.
|
|
36
|
-
* @param parameters - Parameters.
|
|
37
|
-
* @returns Whether the signature is valid.
|
|
38
|
-
*/
|
|
39
|
-
export async function verifyHash(client, parameters) {
|
|
40
|
-
const { hash } = parameters;
|
|
41
|
-
const signature = (() => {
|
|
42
|
-
const signature = parameters.signature;
|
|
43
|
-
if (Hex.validate(signature))
|
|
44
|
-
return signature;
|
|
45
|
-
if (typeof signature === 'object' && 'r' in signature && 's' in signature)
|
|
46
|
-
return SignatureEnvelope.serialize({
|
|
47
|
-
type: 'secp256k1',
|
|
48
|
-
signature: {
|
|
49
|
-
r: BigInt(signature.r),
|
|
50
|
-
s: BigInt(signature.s),
|
|
51
|
-
yParity: signature.yParity,
|
|
52
|
-
},
|
|
53
|
-
});
|
|
54
|
-
return Hex.fromBytes(signature);
|
|
55
|
-
})();
|
|
56
|
-
const [envelope, userAddress] = (() => {
|
|
57
|
-
const envelope = SignatureEnvelope.from(signature);
|
|
58
|
-
if (envelope.type === 'keychain')
|
|
59
|
-
return [envelope.inner, envelope.userAddress];
|
|
60
|
-
return [envelope, undefined];
|
|
61
|
-
})();
|
|
62
|
-
if (envelope.type === 'p256')
|
|
63
|
-
return P256.verify({
|
|
64
|
-
payload: hash,
|
|
65
|
-
publicKey: envelope.publicKey,
|
|
66
|
-
signature: envelope.signature,
|
|
67
|
-
hash: envelope.prehash,
|
|
68
|
-
});
|
|
69
|
-
if (envelope.type === 'webAuthn')
|
|
70
|
-
return WebAuthnP256.verify({
|
|
71
|
-
challenge: hash,
|
|
72
|
-
metadata: envelope.metadata,
|
|
73
|
-
publicKey: envelope.publicKey,
|
|
74
|
-
signature: envelope.signature,
|
|
75
|
-
});
|
|
76
|
-
if (envelope.type === 'keychain')
|
|
77
|
-
throw new Error('not supported');
|
|
78
|
-
const address = parameters.address ??
|
|
79
|
-
userAddress ??
|
|
80
|
-
Secp256k1.recoverAddress({
|
|
81
|
-
payload: hash,
|
|
82
|
-
signature: envelope.signature,
|
|
83
|
-
});
|
|
84
|
-
return await getAction(client, viem_verifyHash, 'verifyHash')({ ...parameters, address });
|
|
85
|
-
}
|
|
86
|
-
//# sourceMappingURL=account.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"account.js","sourceRoot":"","sources":["../../../src/viem/Actions/account.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAA;AAC9B,OAAO,KAAK,GAAG,MAAM,QAAQ,CAAA;AAC7B,OAAO,KAAK,IAAI,MAAM,SAAS,CAAA;AAC/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAA;AAC5C,OAAO,KAAK,YAAY,MAAM,iBAAiB,CAAA;AAG/C,OAAO,EAAE,UAAU,IAAI,eAAe,EAAE,MAAM,cAAc,CAAA;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAGtC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,MAAgC,EAChC,UAAiC;IAEjC,MAAM,EAAE,IAAI,EAAE,GAAG,UAAU,CAAA;IAE3B,MAAM,SAAS,GAAG,CAAC,GAAG,EAAE;QACtB,MAAM,SAAS,GAAG,UAAU,CAAC,SAAS,CAAA;QACtC,IAAI,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC;YAAE,OAAO,SAAS,CAAA;QAC7C,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,GAAG,IAAI,SAAS,IAAI,GAAG,IAAI,SAAS;YACvE,OAAO,iBAAiB,CAAC,SAAS,CAAC;gBACjC,IAAI,EAAE,WAAW;gBACjB,SAAS,EAAE;oBACT,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;oBACtB,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;oBACtB,OAAO,EAAE,SAAS,CAAC,OAAQ;iBAC5B;aACF,CAAC,CAAA;QACJ,OAAO,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,CAAA;IACjC,CAAC,CAAC,EAAE,CAAA;IAEJ,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE;QACpC,MAAM,QAAQ,GAAG,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QAClD,IAAI,QAAQ,CAAC,IAAI,KAAK,UAAU;YAC9B,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAA;QAC/C,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;IAC9B,CAAC,CAAC,EAAE,CAAA;IAEJ,IAAI,QAAQ,CAAC,IAAI,KAAK,MAAM;QAC1B,OAAO,IAAI,CAAC,MAAM,CAAC;YACjB,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,QAAQ,CAAC,SAAS;YAC7B,SAAS,EAAE,QAAQ,CAAC,SAAS;YAC7B,IAAI,EAAE,QAAQ,CAAC,OAAO;SACvB,CAAC,CAAA;IACJ,IAAI,QAAQ,CAAC,IAAI,KAAK,UAAU;QAC9B,OAAO,YAAY,CAAC,MAAM,CAAC;YACzB,SAAS,EAAE,IAAI;YACf,QAAQ,EAAE,QAAQ,CAAC,QAAQ;YAC3B,SAAS,EAAE,QAAQ,CAAC,SAAS;YAC7B,SAAS,EAAE,QAAQ,CAAC,SAAS;SAC9B,CAAC,CAAA;IACJ,IAAI,QAAQ,CAAC,IAAI,KAAK,UAAU;QAAE,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAA;IAElE,MAAM,OAAO,GACX,UAAU,CAAC,OAAO;QAClB,WAAW;QACX,SAAS,CAAC,cAAc,CAAC;YACvB,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,QAAQ,CAAC,SAAS;SAC9B,CAAC,CAAA;IAEJ,OAAO,MAAM,SAAS,CACpB,MAAM,EACN,eAAe,EACf,YAAY,CACb,CAAC,EAAE,GAAG,UAAU,EAAE,OAAO,EAAW,CAAC,CAAA;AACxC,CAAC"}
|