ox 1.8.5 → 1.8.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +37 -0
- package/dist/tempo/{MultisigConfig.d.ts → AccountConfig.d.ts} +116 -63
- package/dist/tempo/AccountConfig.d.ts.map +1 -0
- package/dist/tempo/{MultisigConfig.js → AccountConfig.js} +109 -55
- package/dist/tempo/AccountConfig.js.map +1 -0
- package/dist/tempo/{MultisigOperation.d.ts → AccountOperation.d.ts} +62 -62
- package/dist/tempo/AccountOperation.d.ts.map +1 -0
- package/dist/tempo/{MultisigOperation.js → AccountOperation.js} +64 -64
- package/dist/tempo/AccountOperation.js.map +1 -0
- package/dist/tempo/{MultisigSimulation.d.ts → AccountSimulation.d.ts} +21 -21
- package/dist/tempo/AccountSimulation.d.ts.map +1 -0
- package/dist/tempo/{MultisigSimulation.js → AccountSimulation.js} +20 -20
- package/dist/tempo/AccountSimulation.js.map +1 -0
- package/dist/tempo/KeyAuthorization.d.ts +37 -27
- package/dist/tempo/KeyAuthorization.d.ts.map +1 -1
- package/dist/tempo/KeyAuthorization.js +17 -19
- package/dist/tempo/KeyAuthorization.js.map +1 -1
- package/dist/tempo/RpcSchemaTempo.d.ts +13 -13
- package/dist/tempo/RpcSchemaTempo.d.ts.map +1 -1
- package/dist/tempo/SignatureEnvelope.d.ts +36 -33
- package/dist/tempo/SignatureEnvelope.d.ts.map +1 -1
- package/dist/tempo/SignatureEnvelope.js +77 -77
- package/dist/tempo/SignatureEnvelope.js.map +1 -1
- package/dist/tempo/TokenRole.d.ts +4 -2
- package/dist/tempo/TokenRole.d.ts.map +1 -1
- package/dist/tempo/TokenRole.js +4 -1
- package/dist/tempo/TokenRole.js.map +1 -1
- package/dist/tempo/TransactionRequest.d.ts +11 -9
- package/dist/tempo/TransactionRequest.d.ts.map +1 -1
- package/dist/tempo/TransactionRequest.js +14 -10
- package/dist/tempo/TransactionRequest.js.map +1 -1
- package/dist/tempo/index.d.ts +56 -54
- package/dist/tempo/index.d.ts.map +1 -1
- package/dist/tempo/index.js +56 -54
- package/dist/tempo/index.js.map +1 -1
- package/dist/zod/tempo/{MultisigConfig.d.ts → AccountConfig.d.ts} +6 -6
- package/dist/zod/tempo/AccountConfig.d.ts.map +1 -0
- package/dist/zod/tempo/{MultisigConfig.js → AccountConfig.js} +12 -12
- package/dist/zod/tempo/AccountConfig.js.map +1 -0
- package/dist/zod/tempo/{MultisigOperation.d.ts → AccountOperation.d.ts} +5 -5
- package/dist/zod/tempo/AccountOperation.d.ts.map +1 -0
- package/dist/zod/tempo/{MultisigOperation.js → AccountOperation.js} +10 -10
- package/dist/zod/tempo/AccountOperation.js.map +1 -0
- package/dist/zod/tempo/{MultisigSimulation.d.ts → AccountSimulation.d.ts} +5 -5
- package/dist/zod/tempo/AccountSimulation.d.ts.map +1 -0
- package/dist/zod/tempo/AccountSimulation.js +44 -0
- package/dist/zod/tempo/AccountSimulation.js.map +1 -0
- package/dist/zod/tempo/AuthorizationTempo.d.ts +10 -10
- package/dist/zod/tempo/KeyAuthorization.d.ts +12 -12
- package/dist/zod/tempo/KeyAuthorization.js +6 -6
- package/dist/zod/tempo/KeyAuthorization.js.map +1 -1
- package/dist/zod/tempo/RpcSchemaTempo.d.ts +59 -59
- package/dist/zod/tempo/RpcSchemaTempo.d.ts.map +1 -1
- package/dist/zod/tempo/RpcSchemaTempo.js +28 -28
- package/dist/zod/tempo/RpcSchemaTempo.js.map +1 -1
- package/dist/zod/tempo/SignatureEnvelope.d.ts +7 -7
- package/dist/zod/tempo/SignatureEnvelope.d.ts.map +1 -1
- package/dist/zod/tempo/SignatureEnvelope.js +22 -16
- package/dist/zod/tempo/SignatureEnvelope.js.map +1 -1
- package/dist/zod/tempo/TokenRole.d.ts +1 -1
- package/dist/zod/tempo/TokenRole.d.ts.map +1 -1
- package/dist/zod/tempo/Transaction.d.ts +24 -24
- package/dist/zod/tempo/TransactionRequest.d.ts +84 -84
- package/dist/zod/tempo/TransactionRequest.d.ts.map +1 -1
- package/dist/zod/tempo/TransactionRequest.js +26 -17
- package/dist/zod/tempo/TransactionRequest.js.map +1 -1
- package/dist/zod/tempo/TxEnvelopeTempo.d.ts +12 -12
- package/dist/zod/tempo/ZoneRpcAuthentication.d.ts +3 -3
- package/dist/zod/tempo/z.d.ts +3 -3
- package/dist/zod/tempo/z.d.ts.map +1 -1
- package/dist/zod/tempo/z.js +3 -3
- package/dist/zod/tempo/z.js.map +1 -1
- package/package.json +31 -31
- package/src/tempo/{MultisigConfig.test-d.ts → AccountConfig.test-d.ts} +22 -12
- package/src/tempo/{MultisigConfig.test.ts → AccountConfig.test.ts} +155 -37
- package/src/tempo/{MultisigConfig.ts → AccountConfig.ts} +138 -66
- package/src/tempo/AccountOperation.test-d.ts +79 -0
- package/src/tempo/{MultisigOperation.test.ts → AccountOperation.test.ts} +97 -97
- package/src/tempo/{MultisigOperation.ts → AccountOperation.ts} +95 -97
- package/src/tempo/{MultisigSimulation.test-d.ts → AccountSimulation.test-d.ts} +7 -9
- package/src/tempo/{MultisigSimulation.test.ts → AccountSimulation.test.ts} +28 -28
- package/src/tempo/{MultisigSimulation.ts → AccountSimulation.ts} +28 -30
- package/src/tempo/KeyAuthorization.test-d.ts +15 -6
- package/src/tempo/KeyAuthorization.test.ts +117 -37
- package/src/tempo/KeyAuthorization.ts +68 -59
- package/src/tempo/RpcSchemaTempo.test-d.ts +19 -19
- package/src/tempo/RpcSchemaTempo.ts +13 -13
- package/src/tempo/SignatureEnvelope.test-d.ts +7 -7
- package/src/tempo/SignatureEnvelope.test.ts +34 -34
- package/src/tempo/SignatureEnvelope.ts +112 -108
- package/src/tempo/TokenRole.ts +4 -1
- package/src/tempo/Transaction.test.ts +4 -4
- package/src/tempo/TransactionRequest.test-d.ts +17 -6
- package/src/tempo/TransactionRequest.test.ts +32 -17
- package/src/tempo/TransactionRequest.ts +27 -19
- package/src/tempo/{multisig.e2e.test.ts → configurableAccounts.e2e.test.ts} +16 -16
- package/src/tempo/e2e.test.ts +32 -20
- package/src/tempo/index.ts +56 -54
- package/src/version.ts +1 -1
- package/src/zod/tempo/{MultisigConfig.ts → AccountConfig.ts} +12 -12
- package/src/zod/tempo/{MultisigOperation.ts → AccountOperation.ts} +9 -9
- package/src/zod/tempo/AccountSimulation.ts +53 -0
- package/src/zod/tempo/KeyAuthorization.ts +8 -8
- package/src/zod/tempo/RpcSchemaTempo.ts +28 -28
- package/src/zod/tempo/SignatureEnvelope.ts +23 -17
- package/src/zod/tempo/TransactionRequest.ts +29 -18
- package/src/zod/tempo/_test/AccountConfig.test-d.ts +13 -0
- package/src/zod/tempo/_test/{MultisigConfig.test.ts → AccountConfig.test.ts} +7 -7
- package/src/zod/tempo/_test/AccountOperation.test-d.ts +27 -0
- package/src/zod/tempo/_test/{MultisigOperation.test.ts → AccountOperation.test.ts} +9 -9
- package/src/zod/tempo/_test/AccountSimulation.test-d.ts +13 -0
- package/src/zod/tempo/_test/{MultisigSimulation.test.ts → AccountSimulation.test.ts} +13 -13
- package/src/zod/tempo/_test/KeyAuthorization.test.ts +9 -9
- package/src/zod/tempo/_test/RpcSchemaTempo.test-d.ts +27 -27
- package/src/zod/tempo/_test/RpcSchemaTempo.test.ts +16 -18
- package/src/zod/tempo/_test/SignatureEnvelope.test-d.ts +5 -5
- package/src/zod/tempo/_test/SignatureEnvelope.test.ts +12 -9
- package/src/zod/tempo/_test/TransactionRequest.test.ts +28 -8
- package/src/zod/tempo/z.ts +3 -3
- package/dist/tempo/MultisigConfig.d.ts.map +0 -1
- package/dist/tempo/MultisigConfig.js.map +0 -1
- package/dist/tempo/MultisigOperation.d.ts.map +0 -1
- package/dist/tempo/MultisigOperation.js.map +0 -1
- package/dist/tempo/MultisigSimulation.d.ts.map +0 -1
- package/dist/tempo/MultisigSimulation.js.map +0 -1
- package/dist/zod/tempo/MultisigConfig.d.ts.map +0 -1
- package/dist/zod/tempo/MultisigConfig.js.map +0 -1
- package/dist/zod/tempo/MultisigOperation.d.ts.map +0 -1
- package/dist/zod/tempo/MultisigOperation.js.map +0 -1
- package/dist/zod/tempo/MultisigSimulation.d.ts.map +0 -1
- package/dist/zod/tempo/MultisigSimulation.js +0 -44
- package/dist/zod/tempo/MultisigSimulation.js.map +0 -1
- package/src/tempo/MultisigOperation.test-d.ts +0 -79
- package/src/zod/tempo/MultisigSimulation.ts +0 -53
- package/src/zod/tempo/_test/MultisigConfig.test-d.ts +0 -13
- package/src/zod/tempo/_test/MultisigOperation.test-d.ts +0 -27
- package/src/zod/tempo/_test/MultisigSimulation.test-d.ts +0 -13
|
@@ -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,15 +75,15 @@ 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
85
|
* const authorization =
|
|
86
|
-
*
|
|
86
|
+
* AccountOperation.serializeKeyAuthorization(
|
|
87
87
|
* keyAuthorization,
|
|
88
88
|
* {
|
|
89
89
|
* account,
|
|
@@ -94,7 +94,7 @@ export async function selectApprovals(options) {
|
|
|
94
94
|
* ```
|
|
95
95
|
*
|
|
96
96
|
* @param keyAuthorization - Canonical serialized unsigned key authorization.
|
|
97
|
-
* @param options -
|
|
97
|
+
* @param options - Configurable account, config, and selected approvals.
|
|
98
98
|
* @returns The signed serialized key authorization.
|
|
99
99
|
*/
|
|
100
100
|
export function serializeKeyAuthorization(keyAuthorization, options) {
|
|
@@ -108,8 +108,8 @@ export function serializeKeyAuthorization(keyAuthorization, options) {
|
|
|
108
108
|
throw new InvalidOperationError({
|
|
109
109
|
reason: 'keyAuthorization is not canonically serialized',
|
|
110
110
|
});
|
|
111
|
-
const config =
|
|
112
|
-
const signatures = SignatureEnvelope.
|
|
111
|
+
const config = AccountConfig.from(options.config);
|
|
112
|
+
const signatures = SignatureEnvelope.sortApprovals({
|
|
113
113
|
account: options.account,
|
|
114
114
|
config,
|
|
115
115
|
payload: KeyAuthorization_.getSignPayload(authorization),
|
|
@@ -124,14 +124,14 @@ export function serializeKeyAuthorization(keyAuthorization, options) {
|
|
|
124
124
|
}));
|
|
125
125
|
}
|
|
126
126
|
/**
|
|
127
|
-
* Serializes
|
|
127
|
+
* Serializes an account transaction operation with selected owner approvals.
|
|
128
128
|
*
|
|
129
129
|
* @example
|
|
130
130
|
* ```ts twoslash
|
|
131
131
|
* // @noErrors
|
|
132
|
-
* import {
|
|
132
|
+
* import { AccountOperation } from 'ox/tempo'
|
|
133
133
|
*
|
|
134
|
-
* const transaction =
|
|
134
|
+
* const transaction = AccountOperation.serializeTransaction(
|
|
135
135
|
* operation,
|
|
136
136
|
* {
|
|
137
137
|
* approvals: selection.selectedApprovals
|
|
@@ -139,7 +139,7 @@ export function serializeKeyAuthorization(keyAuthorization, options) {
|
|
|
139
139
|
* )
|
|
140
140
|
* ```
|
|
141
141
|
*
|
|
142
|
-
* @param operation -
|
|
142
|
+
* @param operation - Account transaction operation.
|
|
143
143
|
* @param options - Transaction serialization options.
|
|
144
144
|
* @returns The signed serialized Tempo transaction.
|
|
145
145
|
*/
|
|
@@ -148,7 +148,7 @@ export function serializeTransaction(operation, options) {
|
|
|
148
148
|
const envelope = TxEnvelopeTempo.deserialize(value.transaction);
|
|
149
149
|
const approvals = options.approvals.map((approval) => assertApproval(value.account, approval, value.config));
|
|
150
150
|
assertRetainedApprovals(value, approvals);
|
|
151
|
-
const signatures = SignatureEnvelope.
|
|
151
|
+
const signatures = SignatureEnvelope.sortApprovals({
|
|
152
152
|
account: value.account,
|
|
153
153
|
config: value.config,
|
|
154
154
|
payload: TxEnvelopeTempo.getSignPayload(envelope),
|
|
@@ -168,22 +168,22 @@ export function serializeTransaction(operation, options) {
|
|
|
168
168
|
: { signature });
|
|
169
169
|
}
|
|
170
170
|
/**
|
|
171
|
-
* Validates and normalizes
|
|
171
|
+
* Validates and normalizes an account operation.
|
|
172
172
|
*
|
|
173
173
|
* @example
|
|
174
174
|
* ```ts twoslash
|
|
175
175
|
* // @noErrors
|
|
176
|
-
* import {
|
|
176
|
+
* import { AccountOperation } from 'ox/tempo'
|
|
177
177
|
*
|
|
178
|
-
* const operation =
|
|
178
|
+
* const operation = AccountOperation.from(value)
|
|
179
179
|
* ```
|
|
180
180
|
*
|
|
181
|
-
* @param operation -
|
|
181
|
+
* @param operation - Account operation.
|
|
182
182
|
* @returns The validated operation.
|
|
183
183
|
*/
|
|
184
184
|
export function from(operation) {
|
|
185
185
|
try {
|
|
186
|
-
const config =
|
|
186
|
+
const config = AccountConfig.from(operation.config);
|
|
187
187
|
if (typeof config.threshold !== 'number' ||
|
|
188
188
|
config.owners.some((owner) => typeof owner.weight !== 'number'))
|
|
189
189
|
throw new InvalidOperationError({
|
|
@@ -206,17 +206,17 @@ export function from(operation) {
|
|
|
206
206
|
}
|
|
207
207
|
}
|
|
208
208
|
/**
|
|
209
|
-
* Converts a JSON-RPC
|
|
209
|
+
* Converts a JSON-RPC account operation to its domain representation.
|
|
210
210
|
*
|
|
211
211
|
* @example
|
|
212
212
|
* ```ts twoslash
|
|
213
213
|
* // @noErrors
|
|
214
|
-
* import {
|
|
214
|
+
* import { AccountOperation } from 'ox/tempo'
|
|
215
215
|
*
|
|
216
|
-
* const operation =
|
|
216
|
+
* const operation = AccountOperation.fromRpc(value)
|
|
217
217
|
* ```
|
|
218
218
|
*
|
|
219
|
-
* @param operation - JSON-RPC
|
|
219
|
+
* @param operation - JSON-RPC account operation.
|
|
220
220
|
* @returns The validated operation.
|
|
221
221
|
*/
|
|
222
222
|
export function fromRpc(operation) {
|
|
@@ -233,7 +233,7 @@ export function fromRpc(operation) {
|
|
|
233
233
|
});
|
|
234
234
|
return from({
|
|
235
235
|
...operation,
|
|
236
|
-
config:
|
|
236
|
+
config: AccountConfig.fromRpc(operation.config),
|
|
237
237
|
});
|
|
238
238
|
}
|
|
239
239
|
catch (cause) {
|
|
@@ -243,24 +243,24 @@ export function fromRpc(operation) {
|
|
|
243
243
|
}
|
|
244
244
|
}
|
|
245
245
|
/**
|
|
246
|
-
* Converts
|
|
246
|
+
* Converts an account operation to its JSON-RPC representation.
|
|
247
247
|
*
|
|
248
248
|
* @example
|
|
249
249
|
* ```ts twoslash
|
|
250
250
|
* // @noErrors
|
|
251
|
-
* import {
|
|
251
|
+
* import { AccountOperation } from 'ox/tempo'
|
|
252
252
|
*
|
|
253
|
-
* const operationRpc =
|
|
253
|
+
* const operationRpc = AccountOperation.toRpc(operation)
|
|
254
254
|
* ```
|
|
255
255
|
*
|
|
256
|
-
* @param operation -
|
|
256
|
+
* @param operation - Account operation.
|
|
257
257
|
* @returns The JSON-RPC operation.
|
|
258
258
|
*/
|
|
259
259
|
export function toRpc(operation) {
|
|
260
260
|
const value = from(operation);
|
|
261
261
|
return {
|
|
262
262
|
...value,
|
|
263
|
-
config:
|
|
263
|
+
config: AccountConfig.toRpc(value.config),
|
|
264
264
|
};
|
|
265
265
|
}
|
|
266
266
|
/**
|
|
@@ -276,9 +276,9 @@ async function selectApprovals_internal(options) {
|
|
|
276
276
|
const groups = new Map();
|
|
277
277
|
for (const serialized of options.approvals) {
|
|
278
278
|
const signature = SignatureEnvelope.from(serialized);
|
|
279
|
-
if (signature.type === 'keychain' || signature.type === '
|
|
279
|
+
if (signature.type === 'keychain' || signature.type === 'configurable')
|
|
280
280
|
throw new InvalidApprovalError({
|
|
281
|
-
reason: 'only primitive signatures can approve
|
|
281
|
+
reason: 'only primitive signatures can approve an account operation',
|
|
282
282
|
});
|
|
283
283
|
const address = SignatureEnvelope.extractAddress({
|
|
284
284
|
payload: options.hash,
|
|
@@ -324,7 +324,7 @@ async function selectApprovals_internal(options) {
|
|
|
324
324
|
const ranked = valid.sort((a, b) => b.weight - a.weight || compareApprovalAddress(a, b));
|
|
325
325
|
const selected = [];
|
|
326
326
|
let weight = 0;
|
|
327
|
-
for (const approval of ranked.slice(0,
|
|
327
|
+
for (const approval of ranked.slice(0, AccountConfig.maxSignatures)) {
|
|
328
328
|
if (weight >= Number(options.config.threshold))
|
|
329
329
|
break;
|
|
330
330
|
selected.push(approval);
|
|
@@ -388,7 +388,7 @@ function assertBase(operation, config) {
|
|
|
388
388
|
});
|
|
389
389
|
if (operation.weight > 0xff)
|
|
390
390
|
throw new InvalidOperationError({ reason: 'weight exceeds u8 max' });
|
|
391
|
-
if (operation.signatureCount >
|
|
391
|
+
if (operation.signatureCount > AccountConfig.maxSignatures)
|
|
392
392
|
throw new InvalidOperationError({ reason: 'too many selected signatures' });
|
|
393
393
|
if (!Array.isArray(operation.approvals))
|
|
394
394
|
throw new InvalidOperationError({ reason: 'approvals must be an array' });
|
|
@@ -552,9 +552,9 @@ function assertKeyAuthorization(operation, config) {
|
|
|
552
552
|
reason: 'pending key authorizations must be unsigned',
|
|
553
553
|
});
|
|
554
554
|
if (operation.status === 'success') {
|
|
555
|
-
if (signature?.type !== '
|
|
555
|
+
if (signature?.type !== 'configurable')
|
|
556
556
|
throw new InvalidOperationError({
|
|
557
|
-
reason: 'successful key authorizations require a
|
|
557
|
+
reason: 'successful key authorizations require a configurable account signature',
|
|
558
558
|
});
|
|
559
559
|
if (signature.account.toLowerCase() !== operation.account.toLowerCase())
|
|
560
560
|
throw new InvalidOperationError({
|
|
@@ -584,7 +584,7 @@ function assertKeyAuthorization(operation, config) {
|
|
|
584
584
|
*/
|
|
585
585
|
function assertApproval(account, serialized, config) {
|
|
586
586
|
const approval = SignatureEnvelope.deserialize(serialized);
|
|
587
|
-
if (approval.type === 'keychain' || approval.type === '
|
|
587
|
+
if (approval.type === 'keychain' || approval.type === 'configurable')
|
|
588
588
|
throw new InvalidOperationError({
|
|
589
589
|
reason: 'only primitive owner approvals are allowed',
|
|
590
590
|
});
|
|
@@ -592,7 +592,7 @@ function assertApproval(account, serialized, config) {
|
|
|
592
592
|
account,
|
|
593
593
|
config,
|
|
594
594
|
signatures: [approval],
|
|
595
|
-
type: '
|
|
595
|
+
type: 'configurable',
|
|
596
596
|
});
|
|
597
597
|
if (SignatureEnvelope.serialize(approval).toLowerCase() !==
|
|
598
598
|
serialized.toLowerCase())
|
|
@@ -632,7 +632,7 @@ function assertSelectedApprovals(operation, selected, authorization) {
|
|
|
632
632
|
});
|
|
633
633
|
retained.splice(index, 1);
|
|
634
634
|
}
|
|
635
|
-
const digest =
|
|
635
|
+
const digest = AccountConfig.getSignPayload({
|
|
636
636
|
account: operation.account,
|
|
637
637
|
config: operation.config,
|
|
638
638
|
payload: KeyAuthorization_.getSignPayload(authorization),
|
|
@@ -671,7 +671,7 @@ function isWeightReachable(weights, signatureCount, weight) {
|
|
|
671
671
|
* @internal
|
|
672
672
|
*/
|
|
673
673
|
function assertOperationHash(operation, payload) {
|
|
674
|
-
const hash =
|
|
674
|
+
const hash = AccountConfig.getSignPayload({
|
|
675
675
|
account: operation.account,
|
|
676
676
|
config: operation.config,
|
|
677
677
|
payload,
|
|
@@ -693,14 +693,14 @@ function assertInteger(value, field) {
|
|
|
693
693
|
});
|
|
694
694
|
}
|
|
695
695
|
/**
|
|
696
|
-
* Compares normalized
|
|
696
|
+
* Compares normalized account configurations.
|
|
697
697
|
*
|
|
698
698
|
* @internal
|
|
699
699
|
*/
|
|
700
700
|
function sameConfig(a, b) {
|
|
701
|
-
const configA =
|
|
702
|
-
const configB =
|
|
703
|
-
return (Hex.isEqual(configA.salt ??
|
|
701
|
+
const configA = AccountConfig.from(a);
|
|
702
|
+
const configB = AccountConfig.from(b);
|
|
703
|
+
return (Hex.isEqual(configA.salt ?? AccountConfig.zeroSalt, configB.salt ?? AccountConfig.zeroSalt) &&
|
|
704
704
|
configA.threshold === configB.threshold &&
|
|
705
705
|
configA.version === configB.version &&
|
|
706
706
|
configA.owners.length === configB.owners.length &&
|
|
@@ -710,17 +710,17 @@ function sameConfig(a, b) {
|
|
|
710
710
|
owner.weight === other.weight);
|
|
711
711
|
}));
|
|
712
712
|
}
|
|
713
|
-
/** Thrown when
|
|
713
|
+
/** Thrown when an account operation owner approval is invalid. */
|
|
714
714
|
export class InvalidApprovalError extends Errors.BaseError {
|
|
715
|
-
name = '
|
|
715
|
+
name = 'AccountOperation.InvalidApprovalError';
|
|
716
716
|
/**
|
|
717
|
-
* Creates an invalid
|
|
717
|
+
* Creates an invalid operation approval error.
|
|
718
718
|
*
|
|
719
719
|
* @example
|
|
720
720
|
* ```ts twoslash
|
|
721
|
-
* import {
|
|
721
|
+
* import { AccountOperation } from 'ox/tempo'
|
|
722
722
|
*
|
|
723
|
-
* throw new
|
|
723
|
+
* throw new AccountOperation.InvalidApprovalError({
|
|
724
724
|
* reason: 'signature is from a non-owner'
|
|
725
725
|
* })
|
|
726
726
|
* ```
|
|
@@ -729,21 +729,21 @@ export class InvalidApprovalError extends Errors.BaseError {
|
|
|
729
729
|
*/
|
|
730
730
|
constructor(options = {}) {
|
|
731
731
|
super(options.reason
|
|
732
|
-
? `Invalid
|
|
733
|
-
: 'Invalid
|
|
732
|
+
? `Invalid operation approval: ${options.reason}.`
|
|
733
|
+
: 'Invalid operation approval.', { cause: options.cause });
|
|
734
734
|
}
|
|
735
735
|
}
|
|
736
|
-
/** Thrown when
|
|
736
|
+
/** Thrown when an account operation is malformed or internally inconsistent. */
|
|
737
737
|
export class InvalidOperationError extends Errors.BaseError {
|
|
738
|
-
name = '
|
|
738
|
+
name = 'AccountOperation.InvalidOperationError';
|
|
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,8 +752,8 @@ 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
|
}
|
|
758
758
|
}
|
|
759
|
-
//# sourceMappingURL=
|
|
759
|
+
//# sourceMappingURL=AccountOperation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AccountOperation.js","sourceRoot":"","sources":["../../src/tempo/AccountOperation.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,11 +3,11 @@ import * as Errors from '../core/Errors.js';
|
|
|
3
3
|
import * as Hex from '../core/Hex.js';
|
|
4
4
|
import type { Compute } from '../core/internal/types.js';
|
|
5
5
|
import * as Rlp from '../core/Rlp.js';
|
|
6
|
-
import * as
|
|
6
|
+
import * as AccountConfig from './AccountConfig.js';
|
|
7
7
|
import type * as SignatureEnvelope from './SignatureEnvelope.js';
|
|
8
|
-
/**
|
|
8
|
+
/** Configurable account owner approval used for RPC simulation. */
|
|
9
9
|
export type Approval = PrimitiveApproval;
|
|
10
|
-
/** JSON-RPC
|
|
10
|
+
/** JSON-RPC configurable account owner approval used for RPC simulation. */
|
|
11
11
|
export type ApprovalRpc = PrimitiveApproval;
|
|
12
12
|
/** Primitive owner approval used for RPC simulation. */
|
|
13
13
|
export type PrimitiveApproval = {
|
|
@@ -18,61 +18,61 @@ export type PrimitiveApproval = {
|
|
|
18
18
|
/** Configured owner address. */
|
|
19
19
|
owner: Address.Address;
|
|
20
20
|
};
|
|
21
|
-
/** JSON-RPC representation of
|
|
21
|
+
/** JSON-RPC representation of an account simulation spec. */
|
|
22
22
|
export type Rpc = Compute<{
|
|
23
23
|
/** Owner approvals to model. */
|
|
24
24
|
approvals: readonly ApprovalRpc[];
|
|
25
25
|
/** Canonical RLP-encoded applicable configuration. */
|
|
26
26
|
config: Hex.Hex;
|
|
27
27
|
}>;
|
|
28
|
-
/**
|
|
28
|
+
/** Account simulation spec used to construct an RPC simulation signature. */
|
|
29
29
|
export type Spec = Compute<{
|
|
30
30
|
/** Owner approvals to model. */
|
|
31
31
|
approvals: readonly Approval[];
|
|
32
32
|
/** Complete applicable configuration. */
|
|
33
|
-
config:
|
|
33
|
+
config: AccountConfig.Config;
|
|
34
34
|
}>;
|
|
35
35
|
/**
|
|
36
|
-
* Converts a JSON-RPC
|
|
36
|
+
* Converts a JSON-RPC account simulation spec to its domain representation.
|
|
37
37
|
*
|
|
38
38
|
* @example
|
|
39
39
|
* ```ts twoslash
|
|
40
40
|
* // @noErrors
|
|
41
|
-
* import {
|
|
41
|
+
* import { AccountSimulation } from 'ox/tempo'
|
|
42
42
|
*
|
|
43
|
-
* const spec =
|
|
43
|
+
* const spec = AccountSimulation.fromRpc(specRpc)
|
|
44
44
|
* ```
|
|
45
45
|
*
|
|
46
|
-
* @param spec - JSON-RPC
|
|
47
|
-
* @returns The
|
|
46
|
+
* @param spec - JSON-RPC account simulation spec.
|
|
47
|
+
* @returns The account simulation spec with decoded configurations.
|
|
48
48
|
*/
|
|
49
49
|
export declare function fromRpc(spec: Rpc): Spec;
|
|
50
50
|
export declare namespace fromRpc {
|
|
51
51
|
/** Error type for `fromRpc`. */
|
|
52
|
-
type ErrorType = Hex.isEqual.ErrorType | InvalidSimulationError |
|
|
52
|
+
type ErrorType = Hex.isEqual.ErrorType | InvalidSimulationError | AccountConfig.assert.ErrorType | Rlp.fromHex.ErrorType | Rlp.toHex.ErrorType | Errors.GlobalErrorType;
|
|
53
53
|
}
|
|
54
54
|
/**
|
|
55
|
-
* Converts
|
|
55
|
+
* Converts an account simulation spec to its JSON-RPC representation.
|
|
56
56
|
*
|
|
57
57
|
* @example
|
|
58
58
|
* ```ts twoslash
|
|
59
59
|
* // @noErrors
|
|
60
|
-
* import {
|
|
60
|
+
* import { AccountSimulation } from 'ox/tempo'
|
|
61
61
|
*
|
|
62
|
-
* const specRpc =
|
|
62
|
+
* const specRpc = AccountSimulation.toRpc(spec)
|
|
63
63
|
* ```
|
|
64
64
|
*
|
|
65
|
-
* @param spec -
|
|
66
|
-
* @returns The JSON-RPC
|
|
65
|
+
* @param spec - Account simulation spec.
|
|
66
|
+
* @returns The JSON-RPC account simulation spec with encoded configurations.
|
|
67
67
|
*/
|
|
68
68
|
export declare function toRpc(spec: Spec): Rpc;
|
|
69
69
|
export declare namespace toRpc {
|
|
70
70
|
/** Error type for `toRpc`. */
|
|
71
|
-
type ErrorType = Hex.fromNumber.ErrorType | InvalidSimulationError |
|
|
71
|
+
type ErrorType = Hex.fromNumber.ErrorType | InvalidSimulationError | AccountConfig.assert.ErrorType | Rlp.fromHex.ErrorType | Errors.GlobalErrorType;
|
|
72
72
|
}
|
|
73
|
-
/** Thrown when
|
|
73
|
+
/** Thrown when an account simulation spec is invalid. */
|
|
74
74
|
export declare class InvalidSimulationError extends Errors.BaseError {
|
|
75
|
-
readonly name = "
|
|
75
|
+
readonly name = "AccountSimulation.InvalidSimulationError";
|
|
76
76
|
constructor(options: InvalidSimulationError.Options);
|
|
77
77
|
}
|
|
78
78
|
export declare namespace InvalidSimulationError {
|
|
@@ -82,4 +82,4 @@ export declare namespace InvalidSimulationError {
|
|
|
82
82
|
reason: string;
|
|
83
83
|
};
|
|
84
84
|
}
|
|
85
|
-
//# sourceMappingURL=
|
|
85
|
+
//# sourceMappingURL=AccountSimulation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AccountSimulation.d.ts","sourceRoot":"","sources":["../../src/tempo/AccountSimulation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,oBAAoB,CAAA;AAC7C,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAC3C,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAA;AACrC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAA;AACrC,OAAO,KAAK,aAAa,MAAM,oBAAoB,CAAA;AACnD,OAAO,KAAK,KAAK,iBAAiB,MAAM,wBAAwB,CAAA;AAEhE,mEAAmE;AACnE,MAAM,MAAM,QAAQ,GAAG,iBAAiB,CAAA;AAExC,4EAA4E;AAC5E,MAAM,MAAM,WAAW,GAAG,iBAAiB,CAAA;AAE3C,wDAAwD;AACxD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,uDAAuD;IACvD,OAAO,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,SAAS,CAAA;IAC7B,gFAAgF;IAChF,OAAO,CAAC,EAAE,iBAAiB,CAAC,IAAI,GAAG,SAAS,CAAA;IAC5C,gCAAgC;IAChC,KAAK,EAAE,OAAO,CAAC,OAAO,CAAA;CACvB,CAAA;AAED,6DAA6D;AAC7D,MAAM,MAAM,GAAG,GAAG,OAAO,CAAC;IACxB,gCAAgC;IAChC,SAAS,EAAE,SAAS,WAAW,EAAE,CAAA;IACjC,sDAAsD;IACtD,MAAM,EAAE,GAAG,CAAC,GAAG,CAAA;CAChB,CAAC,CAAA;AAEF,6EAA6E;AAC7E,MAAM,MAAM,IAAI,GAAG,OAAO,CAAC;IACzB,gCAAgC;IAChC,SAAS,EAAE,SAAS,QAAQ,EAAE,CAAA;IAC9B,yCAAyC;IACzC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAA;CAC7B,CAAC,CAAA;AAEF;;;;;;;;;;;;;GAaG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI,CAIvC;AAED,MAAM,CAAC,OAAO,WAAW,OAAO,CAAC;IAC/B,gCAAgC;IAChC,KAAY,SAAS,GACjB,GAAG,CAAC,OAAO,CAAC,SAAS,GACrB,sBAAsB,GACtB,aAAa,CAAC,MAAM,CAAC,SAAS,GAC9B,GAAG,CAAC,OAAO,CAAC,SAAS,GACrB,GAAG,CAAC,KAAK,CAAC,SAAS,GACnB,MAAM,CAAC,eAAe,CAAA;CAC3B;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,KAAK,CAAC,IAAI,EAAE,IAAI,GAAG,GAAG,CAWrC;AAED,MAAM,CAAC,OAAO,WAAW,KAAK,CAAC;IAC7B,8BAA8B;IAC9B,KAAY,SAAS,GACjB,GAAG,CAAC,UAAU,CAAC,SAAS,GACxB,sBAAsB,GACtB,aAAa,CAAC,MAAM,CAAC,SAAS,GAC9B,GAAG,CAAC,OAAO,CAAC,SAAS,GACrB,MAAM,CAAC,eAAe,CAAA;CAC3B;AAqED,yDAAyD;AACzD,qBAAa,sBAAuB,SAAQ,MAAM,CAAC,SAAS;IAC1D,SAAkB,IAAI,8CAA6C;gBACvD,OAAO,EAAE,sBAAsB,CAAC,OAAO;CAGpD;AAED,MAAM,CAAC,OAAO,WAAW,sBAAsB,CAAC;IAC9C,kCAAkC;IAClC,KAAY,OAAO,GAAG;QACpB,0BAA0B;QAC1B,MAAM,EAAE,MAAM,CAAA;KACf,CAAA;CACF"}
|
|
@@ -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,11 +102,11 @@ 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
|
-
name = '
|
|
107
|
+
name = 'AccountSimulation.InvalidSimulationError';
|
|
108
108
|
constructor(options) {
|
|
109
|
-
super(`Invalid
|
|
109
|
+
super(`Invalid account simulation: ${options.reason}.`);
|
|
110
110
|
}
|
|
111
111
|
}
|
|
112
|
-
//# sourceMappingURL=
|
|
112
|
+
//# sourceMappingURL=AccountSimulation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AccountSimulation.js","sourceRoot":"","sources":["../../src/tempo/AccountSimulation.ts"],"names":[],"mappings":"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"}
|