@florent-uzio/custody 2.2.0 → 2.4.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.
Files changed (44) hide show
  1. package/dist/index.d.ts +2 -1
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +2 -0
  4. package/dist/index.js.map +1 -1
  5. package/dist/models/custody-types.d.ts +565 -338
  6. package/dist/models/custody-types.d.ts.map +1 -1
  7. package/dist/ripple-custody.d.ts +55 -10
  8. package/dist/ripple-custody.d.ts.map +1 -1
  9. package/dist/ripple-custody.js +54 -21
  10. package/dist/ripple-custody.js.map +1 -1
  11. package/dist/services/xrpl/index.d.ts +2 -0
  12. package/dist/services/xrpl/index.d.ts.map +1 -1
  13. package/dist/services/xrpl/index.js +2 -4
  14. package/dist/services/xrpl/index.js.map +1 -1
  15. package/dist/services/xrpl/xrpl.adapters.d.ts +23 -5
  16. package/dist/services/xrpl/xrpl.adapters.d.ts.map +1 -1
  17. package/dist/services/xrpl/xrpl.adapters.js +244 -161
  18. package/dist/services/xrpl/xrpl.adapters.js.map +1 -1
  19. package/dist/services/xrpl/xrpl.builders.d.ts +22 -0
  20. package/dist/services/xrpl/xrpl.builders.d.ts.map +1 -0
  21. package/dist/services/xrpl/xrpl.builders.js +109 -0
  22. package/dist/services/xrpl/xrpl.builders.js.map +1 -0
  23. package/dist/services/xrpl/xrpl.crypto.d.ts +6 -0
  24. package/dist/services/xrpl/xrpl.crypto.d.ts.map +1 -0
  25. package/dist/services/xrpl/xrpl.crypto.js +19 -0
  26. package/dist/services/xrpl/xrpl.crypto.js.map +1 -0
  27. package/dist/services/xrpl/xrpl.http-adapters.d.ts.map +1 -1
  28. package/dist/services/xrpl/xrpl.http-adapters.js +5 -0
  29. package/dist/services/xrpl/xrpl.http-adapters.js.map +1 -1
  30. package/dist/services/xrpl/xrpl.ports.d.ts +7 -1
  31. package/dist/services/xrpl/xrpl.ports.d.ts.map +1 -1
  32. package/dist/services/xrpl/xrpl.service.d.ts +79 -36
  33. package/dist/services/xrpl/xrpl.service.d.ts.map +1 -1
  34. package/dist/services/xrpl/xrpl.service.js +182 -182
  35. package/dist/services/xrpl/xrpl.service.js.map +1 -1
  36. package/dist/services/xrpl/xrpl.types.d.ts +112 -7
  37. package/dist/services/xrpl/xrpl.types.d.ts.map +1 -1
  38. package/dist/services/xrpl/xrpl.types.js +0 -28
  39. package/dist/services/xrpl/xrpl.types.js.map +1 -1
  40. package/dist/services/xrpl/xrpl.validators.d.ts +23 -0
  41. package/dist/services/xrpl/xrpl.validators.d.ts.map +1 -0
  42. package/dist/services/xrpl/xrpl.validators.js +43 -0
  43. package/dist/services/xrpl/xrpl.validators.js.map +1 -0
  44. package/package.json +1 -1
@@ -1,10 +1,12 @@
1
- import { createPublicKey } from "crypto";
2
1
  import dayjs from "dayjs";
3
2
  import { v7 as uuidv7 } from "uuid";
4
- import { encodeForSigning, encodeForSigningBatch, hashes, isValidAddress, } from "xrpl";
3
+ import { encodeForSigning, isValidAddress } from "xrpl";
5
4
  import { sleep } from "../../helpers/async/async.js";
6
5
  import { isUndefined } from "../../helpers/index.js";
7
6
  import { CustodyError } from "../../models/index.js";
7
+ import { buildBatchOperation, buildDryRunBody, buildSignBatchPayloadResult, buildTransactionIntent, } from "./xrpl.builders.js";
8
+ import { compressPublicKey } from "./xrpl.crypto.js";
9
+ import { validateBatchSequencing } from "./xrpl.validators.js";
8
10
  export class XrplService {
9
11
  ports;
10
12
  constructor(ports) {
@@ -30,7 +32,7 @@ export class XrplService {
30
32
  domainId: options.domainId,
31
33
  ledgerId: options.ledgerId,
32
34
  });
33
- const intent = this.buildTransactionIntent({
35
+ const intent = buildTransactionIntent({
34
36
  operation: params.operation,
35
37
  context,
36
38
  options,
@@ -115,137 +117,167 @@ export class XrplService {
115
117
  };
116
118
  }
117
119
  /**
118
- * Proposes a raw sign intent for a Batch transaction envelope for a single
119
- * inner account. The batch envelope (`flags` + all inner transaction hashes)
120
- * is encoded using `encodeForSigningBatch` and signed with the key of the
121
- * specified `signerAddress`.
120
+ * Step 1 of the XLS-56 Batch flow — dry-runs a Batch transaction order and
121
+ * returns the canonical signing data. Each participant must sign
122
+ * `signingPayload` with their own XRPL key; collect those signatures and pass
123
+ * them to `proposeBatch` (Step 3).
122
124
  *
123
- * All signers sign the same envelope data. Call this once per inner account
124
- * that is managed by this custody instance.
125
+ * Use `signBatchPayloadAndWait` to sign for inner accounts managed by this
126
+ * custody instance.
125
127
  *
126
- * @param batch - The autofilled Batch transaction (with all inner transactions)
127
- * @param signerAddress - The XRPL address of the inner account to sign for
128
- * @param options - Optional configuration for the raw sign intent
129
- * @returns The proposed intent response
130
- * @throws {CustodyError} If signerAddress is not in the batch, or the account is not found
128
+ * @param payload - Submitter address, execution mode, and inner entries
129
+ * @param options - Optional configuration for the dry-run intent
130
+ * @returns The batch signing data (`signingPayload`, `signingPayloadHash`, resolved transactions)
131
+ * @throws {CustodyError} If the dry run fails or does not return batch signing data
131
132
  */
132
- // public async rawSignInnerBatch(
133
- // batch: Batch,
134
- // signerAddress: string,
135
- // options: RawSignInnerBatchOptions = {},
136
- // ): Promise<Core_IntentResponse> {
137
- // this.validateBatchSigner(batch, signerAddress)
138
- // const context = await this.resolveInnerBatchContext(signerAddress, options)
139
- // const base64Encoded = this.encodeBatchForSigning(batch)
140
- // const { intentResponse } = await this.proposeRawSignIntent(base64Encoded, context, options)
141
- // return intentResponse
142
- // }
133
+ async dryRunBatch(payload, options = {}) {
134
+ validateBatchSequencing(payload);
135
+ const context = await this.ports.resolveContext(payload.Account, {
136
+ domainId: options.domainId,
137
+ });
138
+ const operation = buildBatchOperation(payload, []);
139
+ const body = buildDryRunBody(operation, context, options);
140
+ const response = await this.ports.dryRunIntent(body);
141
+ if (response.type !== "v0_CreateTransactionOrder") {
142
+ throw new CustodyError({
143
+ reason: `Unexpected dry-run response type: ${response.type}`,
144
+ });
145
+ }
146
+ if (!response.success) {
147
+ throw new CustodyError({
148
+ reason: `Batch dry run failed: ${response.errors?.join(", ") ?? "unknown error"}`,
149
+ });
150
+ }
151
+ if (response.estimate.type !== "XRPL" || !response.estimate.batchSigningData) {
152
+ throw new CustodyError({
153
+ reason: "Dry run did not return batchSigningData — confirm the operation type is Batch",
154
+ });
155
+ }
156
+ return response.estimate.batchSigningData;
157
+ }
143
158
  /**
144
- * Signs a Batch transaction envelope for a single inner account and waits
145
- * for the manifest signature.
159
+ * Step 2 of the XLS-56 Batch flow signs the `signingPayload` returned by
160
+ * `dryRunBatch` for a single inner account managed by this custody instance,
161
+ * and waits for the manifest signature.
146
162
  *
147
- * All signers sign the same envelope (`flags` + all inner transaction hashes).
148
- * Call this method once per inner account managed by this custody instance.
149
- * Inner accounts on other custody instances sign independently with their own SDK.
163
+ * Inner accounts on other custody instances (or non-custody participants)
164
+ * sign independently with their own keys.
150
165
  *
151
- * @param batch - The autofilled Batch transaction (with all inner transactions)
152
- * @param signerAddress - The XRPL address of the inner account to sign for
166
+ * @param signingPayload - Hex-encoded `signingPayload` from `dryRunBatch` response
167
+ * @param signerAddress - XRPL address of the inner account to sign for
153
168
  * @param options - Optional configuration for the raw sign intent and polling
154
- * @returns The signature and signing public key in uppercase hex
155
- * @throws {CustodyError} If signerAddress is not in the batch, the account is not found,
156
- * or the manifest signature is not available after maximum retries
169
+ * @returns The signature, signing public key, and pre-built BatchSigner shapes
170
+ * @throws {CustodyError} If the signer account is not found, or the signature is not
171
+ * available after maximum retries
157
172
  */
158
- // public async rawSignInnerBatchAndWait(
159
- // batch: Batch,
160
- // signerAddress: string,
161
- // options: RawSignInnerBatchOptions = {},
162
- // ): Promise<RawSignInnerBatchAndWaitResult> {
163
- // this.validateBatchSigner(batch, signerAddress)
164
- // const context = await this.resolveInnerBatchContext(signerAddress, options)
165
- // const signingPubKey = await this.getPublicKey({
166
- // domainId: context.domainId,
167
- // accountId: context.accountId,
168
- // })
169
- // const base64Encoded = this.encodeBatchForSigning(batch)
170
- // const { payloadId } = await this.proposeRawSignIntent(base64Encoded, context, options)
171
- // const signature = await this.waitForManifestSignature(
172
- // context.domainId,
173
- // context.accountId,
174
- // payloadId,
175
- // options.polling,
176
- // )
177
- // return {
178
- // signature,
179
- // signingPubKey,
180
- // batchSigner: {
181
- // BatchSigner: {
182
- // Account: signerAddress,
183
- // SigningPubKey: signingPubKey,
184
- // TxnSignature: signature,
185
- // },
186
- // },
187
- // custodyBatchSigner: {
188
- // account: signerAddress,
189
- // signingPubKey,
190
- // txnSignature: signature,
191
- // },
192
- // }
193
- // }
173
+ async signBatchPayloadAndWait(signingPayload, signerAddress, options = {}) {
174
+ const handle = await this.signBatchPayload(signingPayload, signerAddress, options);
175
+ const signature = await this.waitForManifestSignature(handle.domainId, handle.accountId, handle.payloadId, options.polling);
176
+ return buildSignBatchPayloadResult(handle, signature);
177
+ }
194
178
  /**
195
- * Resolves the intent context for an inner batch signer.
196
- * When `accountId` and `ledgerId` are provided in options, skips the address lookup.
197
- * @private
179
+ * Step 2 of the XLS-56 Batch flow (non-blocking variant) proposes the raw
180
+ * sign intent for the `signingPayload` returned by `dryRunBatch` for a single
181
+ * inner account managed by this custody instance, then returns immediately
182
+ * without waiting for the manifest signature.
183
+ *
184
+ * Use this when the custody instance operator approves signatures
185
+ * out-of-band: persist the returned `SignBatchPayloadHandle` and pass it to
186
+ * `getBatchSignature` later (possibly from another process) to fetch the
187
+ * signature once it is available.
188
+ *
189
+ * @param signingPayload - Hex-encoded `signingPayload` from `dryRunBatch` response
190
+ * @param signerAddress - XRPL address of the inner account to sign for
191
+ * @param options - Optional configuration for the raw sign intent
192
+ * @returns A handle with the manifest ID and the fields needed to retrieve the signature
193
+ * @throws {CustodyError} If the signer account is not found
198
194
  */
199
- // private async resolveInnerBatchContext(
200
- // signerAddress: string,
201
- // options: RawSignInnerBatchOptions,
202
- // ): Promise<IntentContext> {
203
- // if (options.accountId && options.ledgerId) {
204
- // const fullContext = await this.ports.resolveContext(signerAddress, {
205
- // domainId: options.domainId,
206
- // ledgerId: options.ledgerId,
207
- // })
208
- // return {
209
- // domainId: fullContext.domainId,
210
- // userId: fullContext.userId,
211
- // accountId: options.accountId,
212
- // ledgerId: options.ledgerId,
213
- // address: signerAddress,
214
- // }
215
- // }
216
- // return this.ports.resolveContext(signerAddress, {
217
- // domainId: options.domainId,
218
- // ledgerId: options.ledgerId,
219
- // })
220
- // }
195
+ async signBatchPayload(signingPayload, signerAddress, options = {}) {
196
+ if (!isValidAddress(signerAddress)) {
197
+ throw new CustodyError({ reason: `Invalid signerAddress: ${signerAddress}` });
198
+ }
199
+ const context = await this.resolveSignerContext(signerAddress, options);
200
+ const signingPubKey = await this.getPublicKey({
201
+ domainId: context.domainId,
202
+ accountId: context.accountId,
203
+ });
204
+ const base64Encoded = Buffer.from(signingPayload, "hex").toString("base64");
205
+ const { intentResponse, payloadId } = await this.proposeRawSignIntent(base64Encoded, context, options);
206
+ return {
207
+ payloadId,
208
+ domainId: context.domainId,
209
+ accountId: context.accountId,
210
+ signerAddress,
211
+ signingPubKey,
212
+ intentResponse,
213
+ };
214
+ }
221
215
  /**
222
- * Validates that the signer address is involved in at least one inner transaction.
223
- * @private
216
+ * Retrieves the signature for a payload proposed via `signBatchPayload`,
217
+ * building the BatchSigner shapes when it is available.
218
+ *
219
+ * Performs a single fetch by default (`maxRetries: 1`); the operator may not
220
+ * have approved the signature yet, in which case `undefined` is returned and
221
+ * the caller decides when to retry. Pass `maxRetries`/`intervalMs` to opt into
222
+ * light polling.
223
+ *
224
+ * @param params - Fields from the `SignBatchPayloadHandle` (a handle may be passed directly)
225
+ * @param options - Optional polling configuration (defaults to a single attempt)
226
+ * @returns The signature and BatchSigner shapes, or `undefined` if not yet signed
227
+ * @throws {CustodyError} On any non-404 error fetching the manifest
224
228
  */
225
- validateBatchSigner(batch, signerAddress) {
226
- const involvedAccounts = new Set(batch.RawTransactions.map((rawTx) => rawTx.RawTransaction.Account));
227
- if (!involvedAccounts.has(signerAddress)) {
228
- throw new CustodyError({
229
- reason: `Address ${signerAddress} is not involved in any inner transaction of the Batch`,
230
- });
229
+ async getBatchSignature(params, options = {}) {
230
+ const signature = await this.pollManifestSignature(params.domainId, params.accountId, params.payloadId, { maxRetries: 1, ...options });
231
+ if (isUndefined(signature)) {
232
+ return undefined;
231
233
  }
234
+ return buildSignBatchPayloadResult(params, signature);
232
235
  }
233
236
  /**
234
- * Encodes a Batch transaction envelope for signing.
235
- * Computes txIDs from inner transactions and encodes with `encodeForSigningBatch`.
236
- * @private
237
+ * Step 3 of the XLS-56 Batch flow submits the Batch as a real intent with
238
+ * collected `batchSigners`. The payload must match the one used for
239
+ * `dryRunBatch`; reuse `options.payloadId` and `options.requestId` if you
240
+ * need referential identity with the dry-run.
241
+ *
242
+ * @param payload - Same submitter, execution mode, and entries as the dry-run
243
+ * @param batchSigners - Signatures collected in Step 2 (one per participant)
244
+ * @param options - Optional configuration for the intent
245
+ * @returns The proposed intent response
246
+ * @throws {CustodyError} If validation fails or the submitter account is not found
237
247
  */
238
- encodeBatchForSigning(batch) {
239
- const txIDs = batch.RawTransactions.map((rawTx) => hashes.hashSignedTx(rawTx.RawTransaction));
240
- const batchEncodedHex = encodeForSigningBatch({
241
- flags: batch.Flags,
242
- txIDs,
248
+ async proposeBatch(payload, batchSigners, options = {}) {
249
+ validateBatchSequencing(payload);
250
+ const context = await this.ports.resolveContext(payload.Account, {
251
+ domainId: options.domainId,
252
+ ledgerId: options.ledgerId,
243
253
  });
244
- return Buffer.from(batchEncodedHex, "hex").toString("base64");
254
+ const operation = buildBatchOperation(payload, batchSigners);
255
+ const body = buildTransactionIntent({ operation, context, options });
256
+ return this.ports.submitIntent(body);
257
+ }
258
+ /**
259
+ * Resolves the intent context for an inner-batch signer. Skips the address
260
+ * lookup when `accountId` and `ledgerId` are provided.
261
+ * @private
262
+ */
263
+ async resolveSignerContext(signerAddress, options) {
264
+ if (options.accountId && options.ledgerId) {
265
+ const fullContext = await this.ports.resolveContext(signerAddress, {
266
+ domainId: options.domainId,
267
+ });
268
+ return {
269
+ domainId: fullContext.domainId,
270
+ userId: fullContext.userId,
271
+ accountId: options.accountId,
272
+ ledgerId: options.ledgerId,
273
+ address: signerAddress,
274
+ };
275
+ }
276
+ return this.ports.resolveContext(signerAddress, { domainId: options.domainId });
245
277
  }
246
278
  /**
247
279
  * Proposes a raw sign intent with base64-encoded bytes.
248
- * Shared by rawSign, rawSignAndWait, and signBytesAndWait.
280
+ * Shared by rawSign, rawSignAndWait, and signBatchPayloadAndWait.
249
281
  * @private
250
282
  */
251
283
  async proposeRawSignIntent(base64Bytes, context, options) {
@@ -262,6 +294,7 @@ export class XrplService {
262
294
  .toISOString(),
263
295
  targetDomainId: context.domainId,
264
296
  id: requestId,
297
+ ...(!isUndefined(options.description) && { description: options.description }),
265
298
  customProperties: options.requestCustomProperties ?? {},
266
299
  payload: {
267
300
  id: payloadId,
@@ -282,89 +315,56 @@ export class XrplService {
282
315
  }
283
316
  /**
284
317
  * Polls the manifest until a signature is available, then returns it as uppercase hex.
285
- * Handles both the manifest not existing yet (404) and the manifest existing
286
- * but not yet having a signature.
318
+ * Throws if the signature is still unavailable after the maximum retries.
287
319
  * @private
288
320
  */
289
321
  async waitForManifestSignature(domainId, accountId, manifestId, options = {}) {
322
+ const signature = await this.pollManifestSignature(domainId, accountId, manifestId, options);
323
+ if (isUndefined(signature)) {
324
+ throw new CustodyError({
325
+ reason: "Manifest signature not available after maximum retries",
326
+ });
327
+ }
328
+ return signature;
329
+ }
330
+ /**
331
+ * Polls the manifest for a signature, returning it as uppercase hex once
332
+ * available, or `undefined` if still unavailable after the maximum retries.
333
+ * @private
334
+ */
335
+ async pollManifestSignature(domainId, accountId, manifestId, options = {}) {
290
336
  const { maxRetries = 3, intervalMs = 3000, onAttempt } = options;
291
337
  for (let attempt = 1; attempt <= maxRetries; attempt++) {
292
338
  onAttempt?.(attempt);
293
- try {
294
- const manifest = await this.ports.getManifest(domainId, accountId, manifestId);
295
- const { value } = manifest.data;
296
- if (value && value.type === "Unsafe") {
297
- return Buffer.from(value.signature, "base64").toString("hex").toUpperCase();
298
- }
299
- }
300
- catch (error) {
301
- if (!(error instanceof CustodyError && error.statusCode === 404)) {
302
- throw error;
303
- }
339
+ const signature = await this.fetchManifestSignature(domainId, accountId, manifestId);
340
+ if (!isUndefined(signature)) {
341
+ return signature;
304
342
  }
305
343
  if (attempt < maxRetries) {
306
344
  await sleep(intervalMs);
307
345
  }
308
346
  }
309
- throw new CustodyError({
310
- reason: "Manifest signature not available after maximum retries",
311
- });
347
+ return undefined;
312
348
  }
313
349
  /**
314
- * Builds an XRPL intent body.
350
+ * Fetches the manifest once and returns its signature as uppercase hex, or
351
+ * `undefined` if the manifest does not exist yet (404) or has no signature.
315
352
  * @private
316
353
  */
317
- buildTransactionIntent({ operation, context, options, }) {
318
- const feePriority = options.feePriority ?? "Low";
319
- const expiryDays = options.expiryDays ?? 1;
320
- const requestId = options.requestId ?? uuidv7();
321
- const payloadId = options.payloadId ?? uuidv7();
322
- return {
323
- request: {
324
- author: {
325
- domainId: context.domainId,
326
- id: context.userId,
327
- },
328
- customProperties: options.requestCustomProperties ?? {},
329
- expiryAt: dayjs().add(expiryDays, "day").toISOString(),
330
- id: requestId,
331
- payload: {
332
- accountId: context.accountId,
333
- customProperties: options.payloadCustomProperties ?? {},
334
- id: payloadId,
335
- ledgerId: context.ledgerId,
336
- parameters: {
337
- feeStrategy: {
338
- priority: feePriority,
339
- type: "Priority",
340
- },
341
- memos: [],
342
- operation,
343
- type: "XRPL",
344
- },
345
- type: "v0_CreateTransactionOrder",
346
- },
347
- targetDomainId: context.domainId,
348
- type: "Propose",
349
- },
350
- };
354
+ async fetchManifestSignature(domainId, accountId, manifestId) {
355
+ try {
356
+ const manifest = await this.ports.getManifest(domainId, accountId, manifestId);
357
+ const { value } = manifest.data;
358
+ if (value && value.type === "Unsafe") {
359
+ return Buffer.from(value.signature, "base64").toString("hex").toUpperCase();
360
+ }
361
+ }
362
+ catch (error) {
363
+ if (!(error instanceof CustodyError && error.statusCode === 404)) {
364
+ throw error;
365
+ }
366
+ }
367
+ return undefined;
351
368
  }
352
369
  }
353
- /**
354
- * Compresses a base64-encoded SPKI/DER secp256k1 public key to its compressed hex form.
355
- * Uses Node.js built-in crypto via JWK export to extract the raw EC point coordinates.
356
- */
357
- function compressPublicKey(base64PublicKey) {
358
- const publicKey = createPublicKey({
359
- key: Buffer.from(base64PublicKey, "base64"),
360
- format: "der",
361
- type: "spki",
362
- });
363
- const jwk = publicKey.export({ format: "jwk" });
364
- const x = Buffer.from(jwk.x, "base64url");
365
- const y = Buffer.from(jwk.y, "base64url");
366
- const lastByte = y[y.length - 1];
367
- const prefix = lastByte % 2 === 0 ? "02" : "03";
368
- return (prefix + x.toString("hex")).toUpperCase();
369
- }
370
370
  //# sourceMappingURL=xrpl.service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"xrpl.service.js","sourceRoot":"","sources":["../../../src/services/xrpl/xrpl.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"xrpl.service.js","sourceRoot":"","sources":["../../../src/services/xrpl/xrpl.service.ts"],"names":[],"mappings":"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"}