ox 0.14.55 → 0.14.56
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 +29 -0
- package/_cjs/tempo/{MultisigConfig.js → AccountConfig.js} +16 -4
- package/_cjs/tempo/AccountConfig.js.map +1 -0
- package/_cjs/tempo/{MultisigOperation.js → AccountOperation.js} +29 -29
- package/_cjs/tempo/AccountOperation.js.map +1 -0
- package/_cjs/tempo/{MultisigSimulation.js → AccountSimulation.js} +9 -9
- package/_cjs/tempo/AccountSimulation.js.map +1 -0
- package/_cjs/tempo/KeyAuthorization.js +12 -11
- package/_cjs/tempo/KeyAuthorization.js.map +1 -1
- package/_cjs/tempo/SignatureEnvelope.js +64 -64
- package/_cjs/tempo/SignatureEnvelope.js.map +1 -1
- package/_cjs/tempo/TransactionRequest.js +12 -9
- package/_cjs/tempo/TransactionRequest.js.map +1 -1
- package/_cjs/tempo/index.js +4 -4
- package/_cjs/tempo/index.js.map +1 -1
- package/_cjs/version.js +1 -1
- package/_esm/tempo/{MultisigConfig.js → AccountConfig.js} +103 -55
- package/_esm/tempo/AccountConfig.js.map +1 -0
- package/_esm/tempo/{MultisigOperation.js → AccountOperation.js} +64 -64
- package/_esm/tempo/AccountOperation.js.map +1 -0
- package/_esm/tempo/{MultisigSimulation.js → AccountSimulation.js} +20 -20
- package/_esm/tempo/AccountSimulation.js.map +1 -0
- package/_esm/tempo/KeyAuthorization.js +13 -12
- package/_esm/tempo/KeyAuthorization.js.map +1 -1
- package/_esm/tempo/SignatureEnvelope.js +71 -71
- package/_esm/tempo/SignatureEnvelope.js.map +1 -1
- package/_esm/tempo/TransactionRequest.js +12 -9
- package/_esm/tempo/TransactionRequest.js.map +1 -1
- package/_esm/tempo/index.js +50 -48
- package/_esm/tempo/index.js.map +1 -1
- package/_esm/version.js +1 -1
- package/_types/tempo/{MultisigConfig.d.ts → AccountConfig.d.ts} +110 -63
- package/_types/tempo/AccountConfig.d.ts.map +1 -0
- package/_types/tempo/{MultisigOperation.d.ts → AccountOperation.d.ts} +62 -62
- package/_types/tempo/AccountOperation.d.ts.map +1 -0
- package/_types/tempo/{MultisigSimulation.d.ts → AccountSimulation.d.ts} +21 -21
- package/_types/tempo/AccountSimulation.d.ts.map +1 -0
- package/_types/tempo/KeyAuthorization.d.ts +14 -14
- package/_types/tempo/KeyAuthorization.d.ts.map +1 -1
- package/_types/tempo/RpcSchemaTempo.d.ts +13 -13
- package/_types/tempo/RpcSchemaTempo.d.ts.map +1 -1
- package/_types/tempo/SignatureEnvelope.d.ts +36 -33
- package/_types/tempo/SignatureEnvelope.d.ts.map +1 -1
- package/_types/tempo/TransactionRequest.d.ts +11 -9
- package/_types/tempo/TransactionRequest.d.ts.map +1 -1
- package/_types/tempo/index.d.ts +50 -48
- package/_types/tempo/index.d.ts.map +1 -1
- package/_types/version.d.ts +1 -1
- package/package.json +31 -31
- package/tempo/AccountConfig/package.json +6 -0
- package/tempo/AccountConfig.test-d/package.json +6 -0
- package/tempo/{MultisigConfig.test-d.ts → AccountConfig.test-d.ts} +22 -12
- package/tempo/{MultisigConfig.test.ts → AccountConfig.test.ts} +155 -37
- package/tempo/{MultisigConfig.ts → AccountConfig.ts} +132 -66
- package/tempo/AccountOperation/package.json +6 -0
- package/tempo/AccountOperation.test-d/package.json +6 -0
- package/tempo/AccountOperation.test-d.ts +71 -0
- package/tempo/{MultisigOperation.test.ts → AccountOperation.test.ts} +97 -97
- package/tempo/{MultisigOperation.ts → AccountOperation.ts} +95 -97
- package/tempo/AccountSimulation/package.json +6 -0
- package/tempo/AccountSimulation.test-d/package.json +6 -0
- package/tempo/{MultisigSimulation.test-d.ts → AccountSimulation.test-d.ts} +7 -9
- package/tempo/{MultisigSimulation.test.ts → AccountSimulation.test.ts} +29 -29
- package/tempo/{MultisigSimulation.ts → AccountSimulation.ts} +28 -30
- package/tempo/KeyAuthorization.test-d.ts +14 -14
- package/tempo/KeyAuthorization.test.ts +70 -49
- package/tempo/KeyAuthorization.ts +29 -27
- package/tempo/RpcSchemaTempo.test-d.ts +19 -19
- package/tempo/RpcSchemaTempo.ts +13 -13
- package/tempo/SignatureEnvelope.test-d.ts +7 -7
- package/tempo/SignatureEnvelope.test.ts +34 -34
- package/tempo/SignatureEnvelope.ts +107 -103
- package/tempo/Transaction.test.ts +4 -4
- package/tempo/TransactionRequest.test-d.ts +16 -7
- package/tempo/TransactionRequest.test.ts +25 -17
- package/tempo/TransactionRequest.ts +25 -18
- package/tempo/{multisig.e2e.test.ts → configurableAccounts.e2e.test.ts} +16 -16
- package/tempo/index.ts +50 -48
- package/version.ts +1 -1
- package/_cjs/tempo/MultisigConfig.js.map +0 -1
- package/_cjs/tempo/MultisigOperation.js.map +0 -1
- package/_cjs/tempo/MultisigSimulation.js.map +0 -1
- package/_esm/tempo/MultisigConfig.js.map +0 -1
- package/_esm/tempo/MultisigOperation.js.map +0 -1
- package/_esm/tempo/MultisigSimulation.js.map +0 -1
- package/_types/tempo/MultisigConfig.d.ts.map +0 -1
- package/_types/tempo/MultisigOperation.d.ts.map +0 -1
- package/_types/tempo/MultisigSimulation.d.ts.map +0 -1
- package/tempo/MultisigConfig/package.json +0 -6
- package/tempo/MultisigConfig.test-d/package.json +0 -6
- package/tempo/MultisigOperation/package.json +0 -6
- package/tempo/MultisigOperation.test-d/package.json +0 -6
- package/tempo/MultisigOperation.test-d.ts +0 -71
- package/tempo/MultisigSimulation/package.json +0 -6
- package/tempo/MultisigSimulation.test-d/package.json +0 -6
|
@@ -2,19 +2,19 @@ import * as Address from '../core/Address.js';
|
|
|
2
2
|
import * as Errors from '../core/Errors.js';
|
|
3
3
|
import * as Hash from '../core/Hash.js';
|
|
4
4
|
import * as Hex from '../core/Hex.js';
|
|
5
|
+
import * as AccountConfig from './AccountConfig.js';
|
|
5
6
|
import * as KeyAuthorization_ from './KeyAuthorization.js';
|
|
6
|
-
import * as MultisigConfig from './MultisigConfig.js';
|
|
7
7
|
import * as SignatureEnvelope from './SignatureEnvelope.js';
|
|
8
8
|
import * as TxEnvelopeTempo from './TxEnvelopeTempo.js';
|
|
9
9
|
/**
|
|
10
|
-
* Derives the deterministic hash for
|
|
10
|
+
* Derives the deterministic hash for an account operation.
|
|
11
11
|
*
|
|
12
12
|
* @example
|
|
13
13
|
* ```ts twoslash
|
|
14
14
|
* // @noErrors
|
|
15
|
-
* import {
|
|
15
|
+
* import { AccountOperation } from 'ox/tempo'
|
|
16
16
|
*
|
|
17
|
-
* const hash =
|
|
17
|
+
* const hash = AccountOperation.getHash({
|
|
18
18
|
* account,
|
|
19
19
|
* config,
|
|
20
20
|
* transaction,
|
|
@@ -22,7 +22,7 @@ import * as TxEnvelopeTempo from './TxEnvelopeTempo.js';
|
|
|
22
22
|
* })
|
|
23
23
|
* ```
|
|
24
24
|
*
|
|
25
|
-
* @param options - Operation payload and
|
|
25
|
+
* @param options - Operation payload and account identity.
|
|
26
26
|
* @returns The operation hash signed by each owner.
|
|
27
27
|
*/
|
|
28
28
|
export function getHash(options) {
|
|
@@ -30,7 +30,7 @@ export function getHash(options) {
|
|
|
30
30
|
const payload = options.type === 'transaction'
|
|
31
31
|
? TxEnvelopeTempo.getSignPayload(TxEnvelopeTempo.deserialize(options.transaction))
|
|
32
32
|
: KeyAuthorization_.getSignPayload(KeyAuthorization_.deserialize(options.keyAuthorization));
|
|
33
|
-
return
|
|
33
|
+
return AccountConfig.getSignPayload({
|
|
34
34
|
account,
|
|
35
35
|
config,
|
|
36
36
|
payload,
|
|
@@ -47,9 +47,9 @@ export function getHash(options) {
|
|
|
47
47
|
* @example
|
|
48
48
|
* ```ts twoslash
|
|
49
49
|
* // @noErrors
|
|
50
|
-
* import {
|
|
50
|
+
* import { AccountOperation } from 'ox/tempo'
|
|
51
51
|
*
|
|
52
|
-
* const selection = await
|
|
52
|
+
* const selection = await AccountOperation.selectApprovals({
|
|
53
53
|
* account,
|
|
54
54
|
* approvals,
|
|
55
55
|
* config,
|
|
@@ -66,7 +66,7 @@ export async function selectApprovals(options) {
|
|
|
66
66
|
throw new InvalidApprovalError({ reason: 'account is invalid' });
|
|
67
67
|
if (!Hash.validate(hash))
|
|
68
68
|
throw new InvalidApprovalError({ reason: 'hash is invalid' });
|
|
69
|
-
const config =
|
|
69
|
+
const config = AccountConfig.from(options.config);
|
|
70
70
|
return selectApprovals_internal({
|
|
71
71
|
account,
|
|
72
72
|
approvals,
|
|
@@ -75,14 +75,14 @@ export async function selectApprovals(options) {
|
|
|
75
75
|
});
|
|
76
76
|
}
|
|
77
77
|
/**
|
|
78
|
-
* Serializes a key authorization with selected
|
|
78
|
+
* Serializes a key authorization with selected owner approvals.
|
|
79
79
|
*
|
|
80
80
|
* @example
|
|
81
81
|
* ```ts twoslash
|
|
82
82
|
* // @noErrors
|
|
83
|
-
* import {
|
|
83
|
+
* import { AccountOperation } from 'ox/tempo'
|
|
84
84
|
*
|
|
85
|
-
* const authorization =
|
|
85
|
+
* const authorization = AccountOperation.serializeKeyAuthorization(
|
|
86
86
|
* keyAuthorization,
|
|
87
87
|
* {
|
|
88
88
|
* account,
|
|
@@ -93,7 +93,7 @@ export async function selectApprovals(options) {
|
|
|
93
93
|
* ```
|
|
94
94
|
*
|
|
95
95
|
* @param keyAuthorization - Canonical serialized unsigned key authorization.
|
|
96
|
-
* @param options -
|
|
96
|
+
* @param options - Configurable account, config, and selected approvals.
|
|
97
97
|
* @returns The signed serialized key authorization.
|
|
98
98
|
*/
|
|
99
99
|
export function serializeKeyAuthorization(keyAuthorization, options) {
|
|
@@ -107,8 +107,8 @@ export function serializeKeyAuthorization(keyAuthorization, options) {
|
|
|
107
107
|
throw new InvalidOperationError({
|
|
108
108
|
reason: 'keyAuthorization is not canonically serialized',
|
|
109
109
|
});
|
|
110
|
-
const config =
|
|
111
|
-
const signatures = SignatureEnvelope.
|
|
110
|
+
const config = AccountConfig.from(options.config);
|
|
111
|
+
const signatures = SignatureEnvelope.sortApprovals({
|
|
112
112
|
account: options.account,
|
|
113
113
|
config,
|
|
114
114
|
payload: KeyAuthorization_.getSignPayload(authorization),
|
|
@@ -123,19 +123,19 @@ export function serializeKeyAuthorization(keyAuthorization, options) {
|
|
|
123
123
|
}));
|
|
124
124
|
}
|
|
125
125
|
/**
|
|
126
|
-
* Serializes
|
|
126
|
+
* Serializes an account transaction operation with selected owner approvals.
|
|
127
127
|
*
|
|
128
128
|
* @example
|
|
129
129
|
* ```ts twoslash
|
|
130
130
|
* // @noErrors
|
|
131
|
-
* import {
|
|
131
|
+
* import { AccountOperation } from 'ox/tempo'
|
|
132
132
|
*
|
|
133
|
-
* const transaction =
|
|
133
|
+
* const transaction = AccountOperation.serializeTransaction(operation, {
|
|
134
134
|
* approvals: selection.selectedApprovals,
|
|
135
135
|
* })
|
|
136
136
|
* ```
|
|
137
137
|
*
|
|
138
|
-
* @param operation -
|
|
138
|
+
* @param operation - Account transaction operation.
|
|
139
139
|
* @param options - Transaction serialization options.
|
|
140
140
|
* @returns The signed serialized Tempo transaction.
|
|
141
141
|
*/
|
|
@@ -144,7 +144,7 @@ export function serializeTransaction(operation, options) {
|
|
|
144
144
|
const envelope = TxEnvelopeTempo.deserialize(value.transaction);
|
|
145
145
|
const approvals = options.approvals.map((approval) => assertApproval(value.account, approval, value.config));
|
|
146
146
|
assertRetainedApprovals(value, approvals);
|
|
147
|
-
const signatures = SignatureEnvelope.
|
|
147
|
+
const signatures = SignatureEnvelope.sortApprovals({
|
|
148
148
|
account: value.account,
|
|
149
149
|
config: value.config,
|
|
150
150
|
payload: TxEnvelopeTempo.getSignPayload(envelope),
|
|
@@ -164,22 +164,22 @@ export function serializeTransaction(operation, options) {
|
|
|
164
164
|
: { signature });
|
|
165
165
|
}
|
|
166
166
|
/**
|
|
167
|
-
* Validates and normalizes
|
|
167
|
+
* Validates and normalizes an account operation.
|
|
168
168
|
*
|
|
169
169
|
* @example
|
|
170
170
|
* ```ts twoslash
|
|
171
171
|
* // @noErrors
|
|
172
|
-
* import {
|
|
172
|
+
* import { AccountOperation } from 'ox/tempo'
|
|
173
173
|
*
|
|
174
|
-
* const operation =
|
|
174
|
+
* const operation = AccountOperation.from(value)
|
|
175
175
|
* ```
|
|
176
176
|
*
|
|
177
|
-
* @param operation -
|
|
177
|
+
* @param operation - Account operation.
|
|
178
178
|
* @returns The validated operation.
|
|
179
179
|
*/
|
|
180
180
|
export function from(operation) {
|
|
181
181
|
try {
|
|
182
|
-
const config =
|
|
182
|
+
const config = AccountConfig.from(operation.config);
|
|
183
183
|
if (typeof config.threshold !== 'number' ||
|
|
184
184
|
config.owners.some((owner) => typeof owner.weight !== 'number'))
|
|
185
185
|
throw new InvalidOperationError({
|
|
@@ -202,17 +202,17 @@ export function from(operation) {
|
|
|
202
202
|
}
|
|
203
203
|
}
|
|
204
204
|
/**
|
|
205
|
-
* Converts a JSON-RPC
|
|
205
|
+
* Converts a JSON-RPC account operation to its domain representation.
|
|
206
206
|
*
|
|
207
207
|
* @example
|
|
208
208
|
* ```ts twoslash
|
|
209
209
|
* // @noErrors
|
|
210
|
-
* import {
|
|
210
|
+
* import { AccountOperation } from 'ox/tempo'
|
|
211
211
|
*
|
|
212
|
-
* const operation =
|
|
212
|
+
* const operation = AccountOperation.fromRpc(value)
|
|
213
213
|
* ```
|
|
214
214
|
*
|
|
215
|
-
* @param operation - JSON-RPC
|
|
215
|
+
* @param operation - JSON-RPC account operation.
|
|
216
216
|
* @returns The validated operation.
|
|
217
217
|
*/
|
|
218
218
|
export function fromRpc(operation) {
|
|
@@ -229,7 +229,7 @@ export function fromRpc(operation) {
|
|
|
229
229
|
});
|
|
230
230
|
return from({
|
|
231
231
|
...operation,
|
|
232
|
-
config:
|
|
232
|
+
config: AccountConfig.fromRpc(operation.config),
|
|
233
233
|
});
|
|
234
234
|
}
|
|
235
235
|
catch (cause) {
|
|
@@ -239,24 +239,24 @@ export function fromRpc(operation) {
|
|
|
239
239
|
}
|
|
240
240
|
}
|
|
241
241
|
/**
|
|
242
|
-
* Converts
|
|
242
|
+
* Converts an account operation to its JSON-RPC representation.
|
|
243
243
|
*
|
|
244
244
|
* @example
|
|
245
245
|
* ```ts twoslash
|
|
246
246
|
* // @noErrors
|
|
247
|
-
* import {
|
|
247
|
+
* import { AccountOperation } from 'ox/tempo'
|
|
248
248
|
*
|
|
249
|
-
* const operationRpc =
|
|
249
|
+
* const operationRpc = AccountOperation.toRpc(operation)
|
|
250
250
|
* ```
|
|
251
251
|
*
|
|
252
|
-
* @param operation -
|
|
252
|
+
* @param operation - Account operation.
|
|
253
253
|
* @returns The JSON-RPC operation.
|
|
254
254
|
*/
|
|
255
255
|
export function toRpc(operation) {
|
|
256
256
|
const value = from(operation);
|
|
257
257
|
return {
|
|
258
258
|
...value,
|
|
259
|
-
config:
|
|
259
|
+
config: AccountConfig.toRpc(value.config),
|
|
260
260
|
};
|
|
261
261
|
}
|
|
262
262
|
/**
|
|
@@ -272,9 +272,9 @@ async function selectApprovals_internal(options) {
|
|
|
272
272
|
const groups = new Map();
|
|
273
273
|
for (const serialized of options.approvals) {
|
|
274
274
|
const signature = SignatureEnvelope.from(serialized);
|
|
275
|
-
if (signature.type === 'keychain' || signature.type === '
|
|
275
|
+
if (signature.type === 'keychain' || signature.type === 'configurable')
|
|
276
276
|
throw new InvalidApprovalError({
|
|
277
|
-
reason: 'only primitive signatures can approve
|
|
277
|
+
reason: 'only primitive signatures can approve an account operation',
|
|
278
278
|
});
|
|
279
279
|
const address = SignatureEnvelope.extractAddress({
|
|
280
280
|
payload: options.hash,
|
|
@@ -320,7 +320,7 @@ async function selectApprovals_internal(options) {
|
|
|
320
320
|
const ranked = valid.sort((a, b) => b.weight - a.weight || compareApprovalAddress(a, b));
|
|
321
321
|
const selected = [];
|
|
322
322
|
let weight = 0;
|
|
323
|
-
for (const approval of ranked.slice(0,
|
|
323
|
+
for (const approval of ranked.slice(0, AccountConfig.maxSignatures)) {
|
|
324
324
|
if (weight >= Number(options.config.threshold))
|
|
325
325
|
break;
|
|
326
326
|
selected.push(approval);
|
|
@@ -384,7 +384,7 @@ function assertBase(operation, config) {
|
|
|
384
384
|
});
|
|
385
385
|
if (operation.weight > 0xff)
|
|
386
386
|
throw new InvalidOperationError({ reason: 'weight exceeds u8 max' });
|
|
387
|
-
if (operation.signatureCount >
|
|
387
|
+
if (operation.signatureCount > AccountConfig.maxSignatures)
|
|
388
388
|
throw new InvalidOperationError({ reason: 'too many selected signatures' });
|
|
389
389
|
if (!Array.isArray(operation.approvals))
|
|
390
390
|
throw new InvalidOperationError({ reason: 'approvals must be an array' });
|
|
@@ -548,9 +548,9 @@ function assertKeyAuthorization(operation, config) {
|
|
|
548
548
|
reason: 'pending key authorizations must be unsigned',
|
|
549
549
|
});
|
|
550
550
|
if (operation.status === 'success') {
|
|
551
|
-
if (signature?.type !== '
|
|
551
|
+
if (signature?.type !== 'configurable')
|
|
552
552
|
throw new InvalidOperationError({
|
|
553
|
-
reason: 'successful key authorizations require a
|
|
553
|
+
reason: 'successful key authorizations require a configurable account signature',
|
|
554
554
|
});
|
|
555
555
|
if (signature.account.toLowerCase() !== operation.account.toLowerCase())
|
|
556
556
|
throw new InvalidOperationError({
|
|
@@ -580,7 +580,7 @@ function assertKeyAuthorization(operation, config) {
|
|
|
580
580
|
*/
|
|
581
581
|
function assertApproval(account, serialized, config) {
|
|
582
582
|
const approval = SignatureEnvelope.deserialize(serialized);
|
|
583
|
-
if (approval.type === 'keychain' || approval.type === '
|
|
583
|
+
if (approval.type === 'keychain' || approval.type === 'configurable')
|
|
584
584
|
throw new InvalidOperationError({
|
|
585
585
|
reason: 'only primitive owner approvals are allowed',
|
|
586
586
|
});
|
|
@@ -588,7 +588,7 @@ function assertApproval(account, serialized, config) {
|
|
|
588
588
|
account,
|
|
589
589
|
config,
|
|
590
590
|
signatures: [approval],
|
|
591
|
-
type: '
|
|
591
|
+
type: 'configurable',
|
|
592
592
|
});
|
|
593
593
|
if (SignatureEnvelope.serialize(approval).toLowerCase() !==
|
|
594
594
|
serialized.toLowerCase())
|
|
@@ -628,7 +628,7 @@ function assertSelectedApprovals(operation, selected, authorization) {
|
|
|
628
628
|
});
|
|
629
629
|
retained.splice(index, 1);
|
|
630
630
|
}
|
|
631
|
-
const digest =
|
|
631
|
+
const digest = AccountConfig.getSignPayload({
|
|
632
632
|
account: operation.account,
|
|
633
633
|
config: operation.config,
|
|
634
634
|
payload: KeyAuthorization_.getSignPayload(authorization),
|
|
@@ -667,7 +667,7 @@ function isWeightReachable(weights, signatureCount, weight) {
|
|
|
667
667
|
* @internal
|
|
668
668
|
*/
|
|
669
669
|
function assertOperationHash(operation, payload) {
|
|
670
|
-
const hash =
|
|
670
|
+
const hash = AccountConfig.getSignPayload({
|
|
671
671
|
account: operation.account,
|
|
672
672
|
config: operation.config,
|
|
673
673
|
payload,
|
|
@@ -689,14 +689,14 @@ function assertInteger(value, field) {
|
|
|
689
689
|
});
|
|
690
690
|
}
|
|
691
691
|
/**
|
|
692
|
-
* Compares normalized
|
|
692
|
+
* Compares normalized account configurations.
|
|
693
693
|
*
|
|
694
694
|
* @internal
|
|
695
695
|
*/
|
|
696
696
|
function sameConfig(a, b) {
|
|
697
|
-
const configA =
|
|
698
|
-
const configB =
|
|
699
|
-
return (Hex.isEqual(configA.salt ??
|
|
697
|
+
const configA = AccountConfig.from(a);
|
|
698
|
+
const configB = AccountConfig.from(b);
|
|
699
|
+
return (Hex.isEqual(configA.salt ?? AccountConfig.zeroSalt, configB.salt ?? AccountConfig.zeroSalt) &&
|
|
700
700
|
configA.threshold === configB.threshold &&
|
|
701
701
|
configA.version === configB.version &&
|
|
702
702
|
configA.owners.length === configB.owners.length &&
|
|
@@ -706,16 +706,16 @@ function sameConfig(a, b) {
|
|
|
706
706
|
owner.weight === other.weight);
|
|
707
707
|
}));
|
|
708
708
|
}
|
|
709
|
-
/** Thrown when
|
|
709
|
+
/** Thrown when an account operation owner approval is invalid. */
|
|
710
710
|
export class InvalidApprovalError extends Errors.BaseError {
|
|
711
711
|
/**
|
|
712
|
-
* Creates an invalid
|
|
712
|
+
* Creates an invalid operation approval error.
|
|
713
713
|
*
|
|
714
714
|
* @example
|
|
715
715
|
* ```ts twoslash
|
|
716
|
-
* import {
|
|
716
|
+
* import { AccountOperation } from 'ox/tempo'
|
|
717
717
|
*
|
|
718
|
-
* throw new
|
|
718
|
+
* throw new AccountOperation.InvalidApprovalError({
|
|
719
719
|
* reason: 'signature is from a non-owner',
|
|
720
720
|
* })
|
|
721
721
|
* ```
|
|
@@ -724,26 +724,26 @@ export class InvalidApprovalError extends Errors.BaseError {
|
|
|
724
724
|
*/
|
|
725
725
|
constructor(options = {}) {
|
|
726
726
|
super(options.reason
|
|
727
|
-
? `Invalid
|
|
728
|
-
: 'Invalid
|
|
727
|
+
? `Invalid operation approval: ${options.reason}.`
|
|
728
|
+
: 'Invalid operation approval.', { cause: options.cause });
|
|
729
729
|
Object.defineProperty(this, "name", {
|
|
730
730
|
enumerable: true,
|
|
731
731
|
configurable: true,
|
|
732
732
|
writable: true,
|
|
733
|
-
value: '
|
|
733
|
+
value: 'AccountOperation.InvalidApprovalError'
|
|
734
734
|
});
|
|
735
735
|
}
|
|
736
736
|
}
|
|
737
|
-
/** Thrown when
|
|
737
|
+
/** Thrown when an account operation is malformed or internally inconsistent. */
|
|
738
738
|
export class InvalidOperationError extends Errors.BaseError {
|
|
739
739
|
/**
|
|
740
|
-
* Creates an invalid
|
|
740
|
+
* Creates an invalid account operation error.
|
|
741
741
|
*
|
|
742
742
|
* @example
|
|
743
743
|
* ```ts twoslash
|
|
744
|
-
* import {
|
|
744
|
+
* import { AccountOperation } from 'ox/tempo'
|
|
745
745
|
*
|
|
746
|
-
* throw new
|
|
746
|
+
* throw new AccountOperation.InvalidOperationError({
|
|
747
747
|
* reason: 'hash does not match the operation payload',
|
|
748
748
|
* })
|
|
749
749
|
* ```
|
|
@@ -752,14 +752,14 @@ export class InvalidOperationError extends Errors.BaseError {
|
|
|
752
752
|
*/
|
|
753
753
|
constructor(options = {}) {
|
|
754
754
|
super(options.reason
|
|
755
|
-
? `Invalid
|
|
756
|
-
: 'Invalid
|
|
755
|
+
? `Invalid account operation: ${options.reason}.`
|
|
756
|
+
: 'Invalid account operation.', { cause: options.cause });
|
|
757
757
|
Object.defineProperty(this, "name", {
|
|
758
758
|
enumerable: true,
|
|
759
759
|
configurable: true,
|
|
760
760
|
writable: true,
|
|
761
|
-
value: '
|
|
761
|
+
value: 'AccountOperation.InvalidOperationError'
|
|
762
762
|
});
|
|
763
763
|
}
|
|
764
764
|
}
|
|
765
|
-
//# sourceMappingURL=
|
|
765
|
+
//# sourceMappingURL=AccountOperation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AccountOperation.js","sourceRoot":"","sources":["../../tempo/AccountOperation.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,20 +2,20 @@ import * as Address from '../core/Address.js';
|
|
|
2
2
|
import * as Errors from '../core/Errors.js';
|
|
3
3
|
import * as Hex from '../core/Hex.js';
|
|
4
4
|
import * as Rlp from '../core/Rlp.js';
|
|
5
|
-
import * as
|
|
5
|
+
import * as AccountConfig from './AccountConfig.js';
|
|
6
6
|
/**
|
|
7
|
-
* Converts a JSON-RPC
|
|
7
|
+
* Converts a JSON-RPC account simulation spec to its domain representation.
|
|
8
8
|
*
|
|
9
9
|
* @example
|
|
10
10
|
* ```ts twoslash
|
|
11
11
|
* // @noErrors
|
|
12
|
-
* import {
|
|
12
|
+
* import { AccountSimulation } from 'ox/tempo'
|
|
13
13
|
*
|
|
14
|
-
* const spec =
|
|
14
|
+
* const spec = AccountSimulation.fromRpc(specRpc)
|
|
15
15
|
* ```
|
|
16
16
|
*
|
|
17
|
-
* @param spec - JSON-RPC
|
|
18
|
-
* @returns The
|
|
17
|
+
* @param spec - JSON-RPC account simulation spec.
|
|
18
|
+
* @returns The account simulation spec with decoded configurations.
|
|
19
19
|
*/
|
|
20
20
|
export function fromRpc(spec) {
|
|
21
21
|
const { approvals, config } = spec;
|
|
@@ -23,18 +23,18 @@ export function fromRpc(spec) {
|
|
|
23
23
|
return { approvals, config: deserializeConfig(config) };
|
|
24
24
|
}
|
|
25
25
|
/**
|
|
26
|
-
* Converts
|
|
26
|
+
* Converts an account simulation spec to its JSON-RPC representation.
|
|
27
27
|
*
|
|
28
28
|
* @example
|
|
29
29
|
* ```ts twoslash
|
|
30
30
|
* // @noErrors
|
|
31
|
-
* import {
|
|
31
|
+
* import { AccountSimulation } from 'ox/tempo'
|
|
32
32
|
*
|
|
33
|
-
* const specRpc =
|
|
33
|
+
* const specRpc = AccountSimulation.toRpc(spec)
|
|
34
34
|
* ```
|
|
35
35
|
*
|
|
36
|
-
* @param spec -
|
|
37
|
-
* @returns The JSON-RPC
|
|
36
|
+
* @param spec - Account simulation spec.
|
|
37
|
+
* @returns The JSON-RPC account simulation spec with encoded configurations.
|
|
38
38
|
*/
|
|
39
39
|
export function toRpc(spec) {
|
|
40
40
|
const { approvals, config } = spec;
|
|
@@ -57,9 +57,9 @@ function assertApprovals(approvals) {
|
|
|
57
57
|
throw new InvalidSimulationError({
|
|
58
58
|
reason: 'only untagged primitive owner approvals are allowed',
|
|
59
59
|
});
|
|
60
|
-
if (approvals.length >
|
|
60
|
+
if (approvals.length > AccountConfig.maxSignatures)
|
|
61
61
|
throw new InvalidSimulationError({
|
|
62
|
-
reason: `approval count exceeds ${
|
|
62
|
+
reason: `approval count exceeds ${AccountConfig.maxSignatures}`,
|
|
63
63
|
});
|
|
64
64
|
}
|
|
65
65
|
/** @internal */
|
|
@@ -82,15 +82,15 @@ function deserializeConfig(config) {
|
|
|
82
82
|
!Address.validate(owner[0]) ||
|
|
83
83
|
Hex.size(owner[1]) > 1))
|
|
84
84
|
throw new InvalidSimulationError({ reason: 'invalid config encoding' });
|
|
85
|
-
const value =
|
|
86
|
-
|
|
85
|
+
const value = AccountConfig.fromTuple(tuple);
|
|
86
|
+
AccountConfig.assert(value);
|
|
87
87
|
if (!Hex.isEqual(config, serializeConfig(value)))
|
|
88
88
|
throw new InvalidSimulationError({ reason: 'noncanonical config encoding' });
|
|
89
89
|
return value;
|
|
90
90
|
}
|
|
91
91
|
/** @internal */
|
|
92
92
|
function serializeConfig(config) {
|
|
93
|
-
return Rlp.fromHex(
|
|
93
|
+
return Rlp.fromHex(AccountConfig.toTuple(config));
|
|
94
94
|
}
|
|
95
95
|
/**
|
|
96
96
|
* Shims long key data into the length hint accepted by Tempo's gas estimator.
|
|
@@ -102,16 +102,16 @@ function shimKeyData(data) {
|
|
|
102
102
|
return data;
|
|
103
103
|
return Hex.fromNumber(size, { size: 2 });
|
|
104
104
|
}
|
|
105
|
-
/** Thrown when
|
|
105
|
+
/** Thrown when an account simulation spec is invalid. */
|
|
106
106
|
export class InvalidSimulationError extends Errors.BaseError {
|
|
107
107
|
constructor(options) {
|
|
108
|
-
super(`Invalid
|
|
108
|
+
super(`Invalid account simulation: ${options.reason}.`);
|
|
109
109
|
Object.defineProperty(this, "name", {
|
|
110
110
|
enumerable: true,
|
|
111
111
|
configurable: true,
|
|
112
112
|
writable: true,
|
|
113
|
-
value: '
|
|
113
|
+
value: 'AccountSimulation.InvalidSimulationError'
|
|
114
114
|
});
|
|
115
115
|
}
|
|
116
116
|
}
|
|
117
|
-
//# sourceMappingURL=
|
|
117
|
+
//# sourceMappingURL=AccountSimulation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AccountSimulation.js","sourceRoot":"","sources":["../../tempo/AccountSimulation.ts"],"names":[],"mappings":"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"}
|
|
@@ -218,7 +218,8 @@ export function fromRpc(authorization) {
|
|
|
218
218
|
const witness = authorization.witness ?? undefined;
|
|
219
219
|
const isAdmin = authorization.isAdmin ?? undefined;
|
|
220
220
|
const account = authorization.account ?? undefined;
|
|
221
|
-
|
|
221
|
+
const type = keyType === 'multisig' ? 'configurable' : keyType;
|
|
222
|
+
assertAccountBinding(type, account);
|
|
222
223
|
const signature = SignatureEnvelope.fromRpc(authorization.signature);
|
|
223
224
|
assertSignature(signature);
|
|
224
225
|
if (witness !== undefined)
|
|
@@ -250,9 +251,7 @@ export function fromRpc(authorization) {
|
|
|
250
251
|
})),
|
|
251
252
|
...(scopes ? { scopes } : {}),
|
|
252
253
|
signature,
|
|
253
|
-
...(
|
|
254
|
-
? { account: account, type: keyType }
|
|
255
|
-
: { type: keyType }),
|
|
254
|
+
...(type === 'configurable' ? { account: account, type } : { type }),
|
|
256
255
|
...(witness !== undefined ? { witness } : {}),
|
|
257
256
|
...(account !== undefined ? { account } : {}),
|
|
258
257
|
...(isAdmin ? { isAdmin: true } : {}),
|
|
@@ -310,7 +309,7 @@ export function fromTuple(tuple) {
|
|
|
310
309
|
case '0x02':
|
|
311
310
|
return 'webAuthn';
|
|
312
311
|
case '0x03':
|
|
313
|
-
return '
|
|
312
|
+
return 'configurable';
|
|
314
313
|
default:
|
|
315
314
|
throw new Error(`Invalid key type: ${keyType_hex}`);
|
|
316
315
|
}
|
|
@@ -372,7 +371,7 @@ export function fromTuple(tuple) {
|
|
|
372
371
|
const args = {
|
|
373
372
|
address: keyId,
|
|
374
373
|
chainId: chainId === '0x' ? 0n : Hex.toBigInt(chainId),
|
|
375
|
-
...(keyType === '
|
|
374
|
+
...(keyType === 'configurable'
|
|
376
375
|
? { account: account, type: keyType }
|
|
377
376
|
: { type: keyType }),
|
|
378
377
|
...(expiry !== undefined ? { expiry } : {}),
|
|
@@ -579,7 +578,9 @@ export function toRpc(authorization) {
|
|
|
579
578
|
chainId: chainId === 0n ? '0x' : Hex.fromNumber(chainId),
|
|
580
579
|
expiry: typeof expiry === 'number' ? Hex.fromNumber(expiry) : null,
|
|
581
580
|
keyId: TempoAddress.resolve(address),
|
|
582
|
-
...(type === '
|
|
581
|
+
...(type === 'configurable'
|
|
582
|
+
? { account, keyType: 'multisig' }
|
|
583
|
+
: { keyType: type }),
|
|
583
584
|
limits: limits?.map(({ token, limit, period }) => ({
|
|
584
585
|
token,
|
|
585
586
|
limit: Hex.fromNumber(limit),
|
|
@@ -643,7 +644,7 @@ export function toTuple(authorization) {
|
|
|
643
644
|
return '0x01';
|
|
644
645
|
case 'webAuthn':
|
|
645
646
|
return '0x02';
|
|
646
|
-
case '
|
|
647
|
+
case 'configurable':
|
|
647
648
|
return '0x03';
|
|
648
649
|
default:
|
|
649
650
|
throw new Error(`Invalid key type: ${keyType}`);
|
|
@@ -747,7 +748,7 @@ function resolveSelector(selector) {
|
|
|
747
748
|
return AbiItem.getSelector(selector);
|
|
748
749
|
}
|
|
749
750
|
function assertAccountBinding(type, account) {
|
|
750
|
-
if (type === '
|
|
751
|
+
if (type === 'configurable' && account == null)
|
|
751
752
|
throw new MissingAccountError();
|
|
752
753
|
}
|
|
753
754
|
function assertWitness(witness) {
|
|
@@ -788,7 +789,7 @@ export class InvalidAdminMarkerError extends Error {
|
|
|
788
789
|
/** Thrown when a key authorization contains a keychain signature. */
|
|
789
790
|
export class InvalidSignatureTypeError extends Error {
|
|
790
791
|
constructor(type) {
|
|
791
|
-
super(`Signature type \`${type}\` is invalid for key authorizations; expected \`secp256k1\`, \`p256\`, \`webAuthn\`, or \`
|
|
792
|
+
super(`Signature type \`${type}\` is invalid for key authorizations; expected \`secp256k1\`, \`p256\`, \`webAuthn\`, or \`configurable\`.`);
|
|
792
793
|
Object.defineProperty(this, "name", {
|
|
793
794
|
enumerable: true,
|
|
794
795
|
configurable: true,
|
|
@@ -797,10 +798,10 @@ export class InvalidSignatureTypeError extends Error {
|
|
|
797
798
|
});
|
|
798
799
|
}
|
|
799
800
|
}
|
|
800
|
-
/** Thrown when a
|
|
801
|
+
/** Thrown when a configurable account key grant omits its parent account binding. */
|
|
801
802
|
export class MissingAccountError extends Error {
|
|
802
803
|
constructor() {
|
|
803
|
-
super('
|
|
804
|
+
super('Configurable account key grants require a parent account binding.');
|
|
804
805
|
Object.defineProperty(this, "name", {
|
|
805
806
|
enumerable: true,
|
|
806
807
|
configurable: true,
|