ox 1.7.1 → 1.7.2

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.
Files changed (121) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/dist/core/Hash.js +1 -1
  3. package/dist/core/Hash.js.map +1 -1
  4. package/dist/tempo/KeyAuthorization.d.ts +1 -1
  5. package/dist/tempo/KeyAuthorization.d.ts.map +1 -1
  6. package/dist/tempo/MultisigConfig.d.ts +151 -83
  7. package/dist/tempo/MultisigConfig.d.ts.map +1 -1
  8. package/dist/tempo/MultisigConfig.js +164 -86
  9. package/dist/tempo/MultisigConfig.js.map +1 -1
  10. package/dist/tempo/MultisigOperation.d.ts +324 -0
  11. package/dist/tempo/MultisigOperation.d.ts.map +1 -0
  12. package/dist/tempo/MultisigOperation.js +809 -0
  13. package/dist/tempo/MultisigOperation.js.map +1 -0
  14. package/dist/tempo/MultisigWitness.d.ts +106 -0
  15. package/dist/tempo/MultisigWitness.d.ts.map +1 -0
  16. package/dist/tempo/MultisigWitness.js +118 -0
  17. package/dist/tempo/MultisigWitness.js.map +1 -0
  18. package/dist/tempo/RpcSchemaTempo.d.ts +35 -0
  19. package/dist/tempo/RpcSchemaTempo.d.ts.map +1 -1
  20. package/dist/tempo/SignatureEnvelope.d.ts +60 -80
  21. package/dist/tempo/SignatureEnvelope.d.ts.map +1 -1
  22. package/dist/tempo/SignatureEnvelope.js +87 -146
  23. package/dist/tempo/SignatureEnvelope.js.map +1 -1
  24. package/dist/tempo/TransactionRequest.d.ts +9 -17
  25. package/dist/tempo/TransactionRequest.d.ts.map +1 -1
  26. package/dist/tempo/TransactionRequest.js +7 -7
  27. package/dist/tempo/TransactionRequest.js.map +1 -1
  28. package/dist/tempo/TxEnvelopeTempo.d.ts +3 -2
  29. package/dist/tempo/TxEnvelopeTempo.d.ts.map +1 -1
  30. package/dist/tempo/TxEnvelopeTempo.js +3 -2
  31. package/dist/tempo/TxEnvelopeTempo.js.map +1 -1
  32. package/dist/tempo/index.d.ts +22 -2
  33. package/dist/tempo/index.d.ts.map +1 -1
  34. package/dist/tempo/index.js +22 -2
  35. package/dist/tempo/index.js.map +1 -1
  36. package/dist/zod/tempo/AuthorizationTempo.d.ts +110 -110
  37. package/dist/zod/tempo/AuthorizationTempo.d.ts.map +1 -1
  38. package/dist/zod/tempo/KeyAuthorization.d.ts +90 -83
  39. package/dist/zod/tempo/KeyAuthorization.d.ts.map +1 -1
  40. package/dist/zod/tempo/MultisigConfig.d.ts +31 -2
  41. package/dist/zod/tempo/MultisigConfig.d.ts.map +1 -1
  42. package/dist/zod/tempo/MultisigConfig.js +26 -3
  43. package/dist/zod/tempo/MultisigConfig.js.map +1 -1
  44. package/dist/zod/tempo/MultisigOperation.d.ts +168 -0
  45. package/dist/zod/tempo/MultisigOperation.d.ts.map +1 -0
  46. package/dist/zod/tempo/MultisigOperation.js +65 -0
  47. package/dist/zod/tempo/MultisigOperation.js.map +1 -0
  48. package/dist/zod/tempo/MultisigWitness.d.ts +152 -0
  49. package/dist/zod/tempo/MultisigWitness.d.ts.map +1 -0
  50. package/dist/zod/tempo/MultisigWitness.js +76 -0
  51. package/dist/zod/tempo/MultisigWitness.js.map +1 -0
  52. package/dist/zod/tempo/RpcSchemaTempo.d.ts +607 -102
  53. package/dist/zod/tempo/RpcSchemaTempo.d.ts.map +1 -1
  54. package/dist/zod/tempo/RpcSchemaTempo.js +38 -0
  55. package/dist/zod/tempo/RpcSchemaTempo.js.map +1 -1
  56. package/dist/zod/tempo/SignatureEnvelope.d.ts +33 -33
  57. package/dist/zod/tempo/SignatureEnvelope.d.ts.map +1 -1
  58. package/dist/zod/tempo/SignatureEnvelope.js +9 -16
  59. package/dist/zod/tempo/SignatureEnvelope.js.map +1 -1
  60. package/dist/zod/tempo/Transaction.d.ts +228 -222
  61. package/dist/zod/tempo/Transaction.d.ts.map +1 -1
  62. package/dist/zod/tempo/TransactionRequest.d.ts +379 -176
  63. package/dist/zod/tempo/TransactionRequest.d.ts.map +1 -1
  64. package/dist/zod/tempo/TransactionRequest.js +11 -22
  65. package/dist/zod/tempo/TransactionRequest.js.map +1 -1
  66. package/dist/zod/tempo/TxEnvelopeTempo.d.ts +60 -48
  67. package/dist/zod/tempo/TxEnvelopeTempo.d.ts.map +1 -1
  68. package/dist/zod/tempo/ZoneRpcAuthentication.d.ts +15 -12
  69. package/dist/zod/tempo/ZoneRpcAuthentication.d.ts.map +1 -1
  70. package/dist/zod/tempo/z.d.ts +2 -0
  71. package/dist/zod/tempo/z.d.ts.map +1 -1
  72. package/dist/zod/tempo/z.js +2 -0
  73. package/dist/zod/tempo/z.js.map +1 -1
  74. package/package.json +21 -1
  75. package/src/core/Hash.ts +1 -1
  76. package/src/core/_test/Hash.test.ts +15 -0
  77. package/src/tempo/KeyAuthorization.test-d.ts +13 -1
  78. package/src/tempo/KeyAuthorization.test.ts +65 -0
  79. package/src/tempo/KeyAuthorization.ts +1 -1
  80. package/src/tempo/MultisigConfig.test-d.ts +52 -0
  81. package/src/tempo/MultisigConfig.test.ts +288 -227
  82. package/src/tempo/MultisigConfig.ts +275 -104
  83. package/src/tempo/MultisigOperation.test-d.ts +77 -0
  84. package/src/tempo/MultisigOperation.test.ts +1883 -0
  85. package/src/tempo/MultisigOperation.ts +1254 -0
  86. package/src/tempo/MultisigWitness.test-d.ts +42 -0
  87. package/src/tempo/MultisigWitness.test.ts +288 -0
  88. package/src/tempo/MultisigWitness.ts +210 -0
  89. package/src/tempo/RpcSchemaTempo.test-d.ts +56 -0
  90. package/src/tempo/RpcSchemaTempo.ts +37 -0
  91. package/src/tempo/SignatureEnvelope.test-d.ts +63 -46
  92. package/src/tempo/SignatureEnvelope.test.ts +523 -500
  93. package/src/tempo/SignatureEnvelope.ts +172 -242
  94. package/src/tempo/TransactionRequest.test-d.ts +11 -0
  95. package/src/tempo/TransactionRequest.test.ts +285 -33
  96. package/src/tempo/TransactionRequest.ts +15 -20
  97. package/src/tempo/TxEnvelopeTempo.test-d.ts +7 -0
  98. package/src/tempo/TxEnvelopeTempo.test.ts +25 -0
  99. package/src/tempo/TxEnvelopeTempo.ts +5 -3
  100. package/src/tempo/index.ts +22 -2
  101. package/src/tempo/multisig.e2e.test.ts +113 -86
  102. package/src/version.ts +1 -1
  103. package/src/zod/tempo/MultisigConfig.ts +29 -3
  104. package/src/zod/tempo/MultisigOperation.ts +69 -0
  105. package/src/zod/tempo/MultisigWitness.ts +101 -0
  106. package/src/zod/tempo/RpcSchemaTempo.ts +43 -0
  107. package/src/zod/tempo/SignatureEnvelope.ts +20 -38
  108. package/src/zod/tempo/TransactionRequest.ts +17 -26
  109. package/src/zod/tempo/_test/KeyAuthorization.test.ts +11 -0
  110. package/src/zod/tempo/_test/MultisigConfig.test-d.ts +13 -0
  111. package/src/zod/tempo/_test/MultisigConfig.test.ts +13 -2
  112. package/src/zod/tempo/_test/MultisigOperation.test-d.ts +27 -0
  113. package/src/zod/tempo/_test/MultisigOperation.test.ts +68 -0
  114. package/src/zod/tempo/_test/MultisigWitness.test-d.ts +13 -0
  115. package/src/zod/tempo/_test/MultisigWitness.test.ts +149 -0
  116. package/src/zod/tempo/_test/RpcSchemaTempo.test-d.ts +31 -0
  117. package/src/zod/tempo/_test/RpcSchemaTempo.test.ts +41 -0
  118. package/src/zod/tempo/_test/SignatureEnvelope.test-d.ts +1 -1
  119. package/src/zod/tempo/_test/SignatureEnvelope.test.ts +25 -34
  120. package/src/zod/tempo/_test/TransactionRequest.test.ts +176 -8
  121. package/src/zod/tempo/z.ts +2 -0
@@ -0,0 +1,324 @@
1
+ import * as Address from '../core/Address.js';
2
+ import * as Errors from '../core/Errors.js';
3
+ import * as Hex from '../core/Hex.js';
4
+ import * as KeyAuthorization_ from './KeyAuthorization.js';
5
+ import * as MultisigConfig from './MultisigConfig.js';
6
+ import * as SignatureEnvelope from './SignatureEnvelope.js';
7
+ import * as TxEnvelopeTempo from './TxEnvelopeTempo.js';
8
+ /** Fields shared by every multisig operation. */
9
+ export type Base<quantity = bigint> = {
10
+ /** Root multisig account. */
11
+ account: Address.Address;
12
+ /** Every retained serialized owner approval. */
13
+ approvals: readonly Hex.Hex[];
14
+ /** Root configuration used to verify approvals. */
15
+ config: MultisigConfig.Config<quantity>;
16
+ /** Root configuration version. */
17
+ configVersion: quantity;
18
+ /** Unix creation time in milliseconds. */
19
+ createdAt: number;
20
+ /** Deterministic multisig operation hash. */
21
+ hash: Hex.Hex;
22
+ /** Whether the operation initializes the root multisig account. */
23
+ init: boolean;
24
+ /** Number of approvals selected for quorum evaluation. */
25
+ signatureCount: number;
26
+ /** Required root owner weight. */
27
+ threshold: number;
28
+ /** Unix time of the last update in milliseconds. */
29
+ updatedAt: number;
30
+ /** Root owner weight reached by the selected approvals. */
31
+ weight: number;
32
+ };
33
+ /** Multisig transaction approval operation. */
34
+ export type TransactionOperation<quantity = bigint> = Base<quantity> & {
35
+ /** Time when another relay may reclaim the submission lease. */
36
+ expiresAt?: number | undefined;
37
+ /** Current operation state. */
38
+ status: 'pending' | 'submitting' | 'success';
39
+ /** Fencing token owned by the current submitter. */
40
+ submissionId?: Hex.Hex | undefined;
41
+ /** Canonical serialized Tempo envelope without its outer sender signature. */
42
+ transaction: Hex.Hex;
43
+ /** Hash returned after the downstream submitter accepts the transaction. */
44
+ transactionHash?: Hex.Hex | undefined;
45
+ /** Operation kind. */
46
+ type: 'transaction';
47
+ };
48
+ /** Multisig key authorization approval operation. */
49
+ export type KeyAuthorizationOperation<quantity = bigint> = Base<quantity> & {
50
+ /** Canonical serialized key authorization. */
51
+ keyAuthorization: Hex.Hex;
52
+ /** Current operation state. */
53
+ status: 'pending' | 'success';
54
+ /** Operation kind. */
55
+ type: 'keyAuthorization';
56
+ };
57
+ /** Transaction or key authorization multisig operation. */
58
+ export type Operation<quantity = bigint> = TransactionOperation<quantity> | KeyAuthorizationOperation<quantity>;
59
+ /** JSON-RPC multisig transaction operation. */
60
+ export type TransactionRpc = TransactionOperation<Hex.Hex>;
61
+ /** JSON-RPC multisig key authorization operation. */
62
+ export type KeyAuthorizationRpc = KeyAuthorizationOperation<Hex.Hex>;
63
+ /** JSON-RPC multisig operation. */
64
+ export type Rpc = Operation<Hex.Hex>;
65
+ /**
66
+ * Derives the deterministic hash for a multisig operation.
67
+ *
68
+ * @example
69
+ * ```ts twoslash
70
+ * // @noErrors
71
+ * import { MultisigOperation } from 'ox/tempo'
72
+ *
73
+ * const hash = MultisigOperation.getHash({
74
+ * account,
75
+ * configVersion: 1n,
76
+ * transaction,
77
+ * type: 'transaction'
78
+ * })
79
+ * ```
80
+ *
81
+ * @param options - Operation payload and multisig identity.
82
+ * @returns The operation hash signed by each owner.
83
+ */
84
+ export declare function getHash(options: getHash.Options): Hex.Hex;
85
+ export declare namespace getHash {
86
+ /** Parameters for `getHash`. */
87
+ type Options = {
88
+ /** Root multisig account. */
89
+ account: Address.Address;
90
+ /** Root configuration version. */
91
+ configVersion: bigint;
92
+ } & ({
93
+ /** Canonical serialized key authorization. */
94
+ keyAuthorization: Hex.Hex;
95
+ /** Operation kind. */
96
+ type: 'keyAuthorization';
97
+ } | {
98
+ /** Canonical serialized Tempo envelope without its outer sender signature. */
99
+ transaction: TxEnvelopeTempo.Serialized;
100
+ /** Operation kind. */
101
+ type: 'transaction';
102
+ });
103
+ /** Error type for `getHash`. */
104
+ type ErrorType = KeyAuthorization_.deserialize.ErrorType | KeyAuthorization_.getSignPayload.ErrorType | MultisigConfig.getSignPayload.ErrorType | TxEnvelopeTempo.deserialize.ErrorType | TxEnvelopeTempo.getSignPayload.ErrorType | Errors.GlobalErrorType;
105
+ }
106
+ /**
107
+ * Validates, deduplicates, and selects owner approvals for an operation.
108
+ *
109
+ * The function retains one canonical approval per owner. It selects the
110
+ * smallest deterministic quorum by owner weight, then orders the selected
111
+ * approvals by owner address for serialization.
112
+ *
113
+ * @example
114
+ * ```ts twoslash
115
+ * // @noErrors
116
+ * import { MultisigOperation } from 'ox/tempo'
117
+ *
118
+ * const selection = await MultisigOperation.selectApprovals({
119
+ * account,
120
+ * approvals,
121
+ * config,
122
+ * hash,
123
+ * resolveConfig
124
+ * })
125
+ * ```
126
+ *
127
+ * @param options - Approval selection parameters.
128
+ * @returns The retained approvals and deterministic quorum selection.
129
+ */
130
+ export declare function selectApprovals(options: selectApprovals.Options): Promise<selectApprovals.ReturnValue>;
131
+ export declare namespace selectApprovals {
132
+ /** Parameters for `selectApprovals`. */
133
+ type Options = {
134
+ /** Root multisig account. */
135
+ account: Address.Address;
136
+ /** Serialized primitive or nested owner approvals. */
137
+ approvals: readonly SignatureEnvelope.Serialized[];
138
+ /** Current root multisig configuration. */
139
+ config: MultisigConfig.Config;
140
+ /** Deterministic operation hash approved by root owners. */
141
+ hash: Hex.Hex;
142
+ /** Resolves the current configuration of a nested multisig owner. */
143
+ resolveConfig?: ResolveConfig | undefined;
144
+ };
145
+ /** Resolves an initialized nested multisig configuration. */
146
+ type ResolveConfig = (options: ResolveConfigOptions) => ResolvedConfig | Promise<ResolvedConfig>;
147
+ /** Nested multisig configuration lookup parameters. */
148
+ type ResolveConfigOptions = {
149
+ /** Nested multisig account. */
150
+ account: Address.Address;
151
+ };
152
+ /** Resolved nested multisig configuration. */
153
+ type ResolvedConfig = {
154
+ /** Current nested multisig configuration. */
155
+ config: MultisigConfig.Config;
156
+ /** Current nested multisig configuration version. */
157
+ version: bigint;
158
+ };
159
+ /** Result of validating and selecting approvals. */
160
+ type ReturnValue = {
161
+ /** Every retained approval, ordered by owner address. */
162
+ approvals: readonly SignatureEnvelope.Serialized[];
163
+ /** Number of approvals selected for quorum evaluation. */
164
+ signatureCount: number;
165
+ /** Approvals selected for serialization, ordered by owner address. */
166
+ selectedApprovals: readonly SignatureEnvelope.Serialized[];
167
+ /** Required owner weight. */
168
+ threshold: number;
169
+ /** Owner weight reached by the selected approvals. */
170
+ weight: number;
171
+ };
172
+ /** Error type for `selectApprovals`. */
173
+ type ErrorType = InvalidApprovalError | MultisigConfig.assert.ErrorType | MultisigConfig.getSignPayload.ErrorType | SignatureEnvelope.CoercionError | SignatureEnvelope.extractAddress.ErrorType | SignatureEnvelope.serialize.ErrorType | SignatureEnvelope.VerificationError | Errors.GlobalErrorType;
174
+ }
175
+ /**
176
+ * Serializes a multisig transaction operation with selected owner approvals.
177
+ *
178
+ * @example
179
+ * ```ts twoslash
180
+ * // @noErrors
181
+ * import { MultisigOperation } from 'ox/tempo'
182
+ *
183
+ * const transaction = MultisigOperation.serializeTransaction(
184
+ * operation,
185
+ * {
186
+ * approvals: selection.selectedApprovals
187
+ * }
188
+ * )
189
+ * ```
190
+ *
191
+ * @param operation - Multisig transaction operation.
192
+ * @param options - Transaction serialization options.
193
+ * @returns The signed serialized Tempo transaction.
194
+ */
195
+ export declare function serializeTransaction(operation: TransactionOperation, options: serializeTransaction.Options): TxEnvelopeTempo.Serialized;
196
+ export declare namespace serializeTransaction {
197
+ /** Options for `serializeTransaction`. */
198
+ type Options = {
199
+ /** Selected retained approvals to attach to the transaction. */
200
+ approvals: readonly SignatureEnvelope.Serialized[];
201
+ };
202
+ /** Error type for `serializeTransaction`. */
203
+ type ErrorType = from.ErrorType | InvalidOperationError | SignatureEnvelope.sortMultisigApprovals.ErrorType | TxEnvelopeTempo.deserialize.ErrorType | TxEnvelopeTempo.getSignPayload.ErrorType | TxEnvelopeTempo.serialize.ErrorType | Errors.GlobalErrorType;
204
+ }
205
+ /**
206
+ * Validates and normalizes a multisig operation.
207
+ *
208
+ * @example
209
+ * ```ts twoslash
210
+ * // @noErrors
211
+ * import { MultisigOperation } from 'ox/tempo'
212
+ *
213
+ * const operation = MultisigOperation.from(value)
214
+ * ```
215
+ *
216
+ * @param operation - Multisig operation.
217
+ * @returns The validated operation.
218
+ */
219
+ export declare function from<const operation extends Operation>(operation: operation): from.ReturnValue<operation>;
220
+ export declare namespace from {
221
+ /** Return type for `from`. */
222
+ type ReturnValue<operation extends Operation> = operation extends TransactionOperation ? TransactionOperation : KeyAuthorizationOperation;
223
+ /** Error type for `from`. */
224
+ type ErrorType = InvalidOperationError | Errors.GlobalErrorType;
225
+ }
226
+ /**
227
+ * Converts a JSON-RPC multisig operation to its domain representation.
228
+ *
229
+ * @example
230
+ * ```ts twoslash
231
+ * // @noErrors
232
+ * import { MultisigOperation } from 'ox/tempo'
233
+ *
234
+ * const operation = MultisigOperation.fromRpc(value)
235
+ * ```
236
+ *
237
+ * @param operation - JSON-RPC multisig operation.
238
+ * @returns The validated operation.
239
+ */
240
+ export declare function fromRpc<const operation extends Rpc>(operation: operation): fromRpc.ReturnValue<operation>;
241
+ export declare namespace fromRpc {
242
+ /** Return type for `fromRpc`. */
243
+ type ReturnValue<operation extends Rpc> = operation extends TransactionRpc ? TransactionOperation : KeyAuthorizationOperation;
244
+ /** Error type for `fromRpc`. */
245
+ type ErrorType = InvalidOperationError | Errors.GlobalErrorType;
246
+ }
247
+ /**
248
+ * Converts a multisig operation to its JSON-RPC representation.
249
+ *
250
+ * @example
251
+ * ```ts twoslash
252
+ * // @noErrors
253
+ * import { MultisigOperation } from 'ox/tempo'
254
+ *
255
+ * const operationRpc = MultisigOperation.toRpc(operation)
256
+ * ```
257
+ *
258
+ * @param operation - Multisig operation.
259
+ * @returns The JSON-RPC operation.
260
+ */
261
+ export declare function toRpc<const operation extends Operation>(operation: operation): toRpc.ReturnValue<operation>;
262
+ export declare namespace toRpc {
263
+ /** Return type for `toRpc`. */
264
+ type ReturnValue<operation extends Operation> = operation extends TransactionOperation ? TransactionRpc : KeyAuthorizationRpc;
265
+ /** Error type for `toRpc`. */
266
+ type ErrorType = from.ErrorType | Hex.fromNumber.ErrorType;
267
+ }
268
+ /** Thrown when a multisig owner approval is invalid. */
269
+ export declare class InvalidApprovalError extends Errors.BaseError<Error | undefined> {
270
+ readonly name = "MultisigOperation.InvalidApprovalError";
271
+ /**
272
+ * Creates an invalid multisig approval error.
273
+ *
274
+ * @example
275
+ * ```ts twoslash
276
+ * import { MultisigOperation } from 'ox/tempo'
277
+ *
278
+ * throw new MultisigOperation.InvalidApprovalError({
279
+ * reason: 'signature is from a non-owner'
280
+ * })
281
+ * ```
282
+ *
283
+ * @param options - Error options.
284
+ */
285
+ constructor(options?: InvalidApprovalError.Options);
286
+ }
287
+ export declare namespace InvalidApprovalError {
288
+ /** Error construction options. */
289
+ type Options = {
290
+ /** Underlying error. */
291
+ cause?: unknown | undefined;
292
+ /** Validation failure. */
293
+ reason?: string | undefined;
294
+ };
295
+ }
296
+ /** Thrown when a multisig operation is malformed or internally inconsistent. */
297
+ export declare class InvalidOperationError extends Errors.BaseError<Error | undefined> {
298
+ readonly name = "MultisigOperation.InvalidOperationError";
299
+ /**
300
+ * Creates an invalid multisig operation error.
301
+ *
302
+ * @example
303
+ * ```ts twoslash
304
+ * import { MultisigOperation } from 'ox/tempo'
305
+ *
306
+ * throw new MultisigOperation.InvalidOperationError({
307
+ * reason: 'hash does not match the operation payload'
308
+ * })
309
+ * ```
310
+ *
311
+ * @param options - Error options.
312
+ */
313
+ constructor(options?: InvalidOperationError.Options);
314
+ }
315
+ export declare namespace InvalidOperationError {
316
+ /** Error construction options. */
317
+ type Options = {
318
+ /** Underlying error. */
319
+ cause?: unknown | undefined;
320
+ /** Validation failure. */
321
+ reason?: string | undefined;
322
+ };
323
+ }
324
+ //# sourceMappingURL=MultisigOperation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MultisigOperation.d.ts","sourceRoot":"","sources":["../../src/tempo/MultisigOperation.ts"],"names":[],"mappings":"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"}