@ritbit/v4-client-js 2.5.0 → 2.5.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 (54) hide show
  1. package/build/cjs/src/clients/composite-client.js +21 -15
  2. package/build/cjs/src/clients/helpers/asset-registry.js +90 -0
  3. package/build/cjs/src/clients/helpers/collateral.js +69 -0
  4. package/build/cjs/src/clients/lib/accounts.js +38 -0
  5. package/build/cjs/src/clients/modules/get.js +24 -3
  6. package/build/cjs/src/clients/modules/post.js +1 -1
  7. package/build/cjs/src/clients/modules/proto-includes.js +3 -2
  8. package/build/cjs/src/clients/modules/signer.js +7 -2
  9. package/build/cjs/src/clients/native.js +3 -3
  10. package/build/cjs/src/clients/types.js +1 -1
  11. package/build/cjs/src/clients/validator-client.js +42 -1
  12. package/build/cjs/src/index.js +4 -1
  13. package/build/cjs/src/lib/validation.js +10 -5
  14. package/build/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  15. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/assets/query.d.ts.map +1 -1
  16. package/build/esm/src/clients/composite-client.d.ts +14 -8
  17. package/build/esm/src/clients/composite-client.d.ts.map +1 -1
  18. package/build/esm/src/clients/composite-client.js +21 -15
  19. package/build/esm/src/clients/helpers/asset-registry.d.ts +50 -0
  20. package/build/esm/src/clients/helpers/asset-registry.d.ts.map +1 -0
  21. package/build/esm/src/clients/helpers/asset-registry.js +86 -0
  22. package/build/esm/src/clients/helpers/collateral.d.ts +41 -0
  23. package/build/esm/src/clients/helpers/collateral.d.ts.map +1 -0
  24. package/build/esm/src/clients/helpers/collateral.js +59 -0
  25. package/build/esm/src/clients/lib/accounts.d.ts +28 -0
  26. package/build/esm/src/clients/lib/accounts.d.ts.map +1 -0
  27. package/build/esm/src/clients/lib/accounts.js +35 -0
  28. package/build/esm/src/clients/modules/get.d.ts +16 -2
  29. package/build/esm/src/clients/modules/get.d.ts.map +1 -1
  30. package/build/esm/src/clients/modules/get.js +24 -3
  31. package/build/esm/src/clients/modules/post.d.ts +2 -1
  32. package/build/esm/src/clients/modules/post.d.ts.map +1 -1
  33. package/build/esm/src/clients/modules/post.js +1 -1
  34. package/build/esm/src/clients/modules/proto-includes.d.ts +1 -0
  35. package/build/esm/src/clients/modules/proto-includes.d.ts.map +1 -1
  36. package/build/esm/src/clients/modules/proto-includes.js +2 -1
  37. package/build/esm/src/clients/modules/signer.d.ts.map +1 -1
  38. package/build/esm/src/clients/modules/signer.js +7 -2
  39. package/build/esm/src/clients/native.d.ts.map +1 -1
  40. package/build/esm/src/clients/native.js +2 -2
  41. package/build/esm/src/clients/types.d.ts +1 -1
  42. package/build/esm/src/clients/types.d.ts.map +1 -1
  43. package/build/esm/src/clients/types.js +1 -1
  44. package/build/esm/src/clients/validator-client.d.ts +17 -0
  45. package/build/esm/src/clients/validator-client.d.ts.map +1 -1
  46. package/build/esm/src/clients/validator-client.js +42 -1
  47. package/build/esm/src/index.d.ts +2 -0
  48. package/build/esm/src/index.d.ts.map +1 -1
  49. package/build/esm/src/index.js +4 -1
  50. package/build/esm/src/lib/validation.d.ts +6 -2
  51. package/build/esm/src/lib/validation.d.ts.map +1 -1
  52. package/build/esm/src/lib/validation.js +10 -5
  53. package/build/esm/tsconfig.esm.tsbuildinfo +1 -1
  54. package/package.json +1 -1
@@ -75,17 +75,22 @@ export function validateBatchCancelOrderMessage(subaccountNumber, orders) {
75
75
  }
76
76
  /**
77
77
  * @describe validateTransferMessage validates that a transfer to place has fields that would be
78
- * valid on-chain.
78
+ * valid on-chain. The asset is validated against the on-chain asset registry
79
+ * (fetched via `getAllAssets` and exposed as `validatorClient.assetRegistry`), so any
80
+ * registered collateral asset (e.g. USDC id 0, RUB1 id 2) is accepted and unknown
81
+ * asset ids are rejected. Final collateral-eligibility is enforced on-chain (ante).
79
82
  */
80
- export function validateTransferMessage(transfer) {
83
+ export function validateTransferMessage(transfer, assetRegistry) {
81
84
  if (!verifySubaccountNumber(transfer.sender.number || 0)) {
82
85
  return new UserError(`senderSubaccountNumber: ${transfer.sender.number || 0} cannot be < 0 or > ${MAX_SUBACCOUNT_NUMBER}`);
83
86
  }
84
87
  if (!verifySubaccountNumber(transfer.recipient.number || 0)) {
85
88
  return new UserError(`recipientSubaccountNumber: ${transfer.recipient.number || 0} cannot be < 0 or > ${MAX_SUBACCOUNT_NUMBER}`);
86
89
  }
87
- if (transfer.assetId !== 0) {
88
- return new UserError(`asset id: ${transfer.assetId} not supported`);
90
+ // The asset must be a registered chain asset (fetched into the registry from
91
+ // getAllAssets). Collateral eligibility itself is enforced on-chain (ante decorator).
92
+ if (assetRegistry.get(transfer.assetId) === undefined) {
93
+ return new UserError(`asset id: ${transfer.assetId} is not a registered chain asset`);
89
94
  }
90
95
  if (transfer.amount.lessThanOrEqual(Long.ZERO)) {
91
96
  return new UserError(`amount: ${transfer.amount} cannot be <= 0`);
@@ -135,4 +140,4 @@ export function isValidAddress(address) {
135
140
  // An address is valid if it starts with the BECH32 prefix and is Bech32 format.
136
141
  return address.startsWith(BECH32_PREFIX + '1') && verifyIsBech32(address) === undefined;
137
142
  }
138
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdmFsaWRhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ2hDLE9BQU8sSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUV4QixPQUFPLEVBQUUsYUFBYSxFQUFFLHFCQUFxQixFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pGLE9BQU8sRUFFTCxVQUFVLEdBSVgsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRXJDOzs7R0FHRztBQUNILE1BQU0sVUFBVSx5QkFBeUIsQ0FDdkMsZ0JBQXdCLEVBQ3hCLEtBQWtCO0lBRWxCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztRQUMxQyxPQUFPLElBQUksU0FBUyxDQUFDLGFBQWEsS0FBSyxDQUFDLFFBQVEsd0JBQXdCLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBQ0QsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUM5QyxPQUFPLElBQUksU0FBUyxDQUFDLGFBQWEsS0FBSyxDQUFDLFFBQVEsaUJBQWlCLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBQ0QsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUM5QyxPQUFPLElBQUksU0FBUyxDQUFDLGFBQWEsS0FBSyxDQUFDLFFBQVEsaUJBQWlCLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBQ0QsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQztRQUM5QyxPQUFPLElBQUksU0FBUyxDQUNsQixx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
143
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdmFsaWRhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ2hDLE9BQU8sSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUV4QixPQUFPLEVBQUUsYUFBYSxFQUFFLHFCQUFxQixFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXpGLE9BQU8sRUFFTCxVQUFVLEdBSVgsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRXJDOzs7R0FHRztBQUNILE1BQU0sVUFBVSx5QkFBeUIsQ0FDdkMsZ0JBQXdCLEVBQ3hCLEtBQWtCO0lBRWxCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztRQUMxQyxPQUFPLElBQUksU0FBUyxDQUFDLGFBQWEsS0FBSyxDQUFDLFFBQVEsd0JBQXdCLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBQ0QsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUM5QyxPQUFPLElBQUksU0FBUyxDQUFDLGFBQWEsS0FBSyxDQUFDLFFBQVEsaUJBQWlCLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBQ0QsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUM5QyxPQUFPLElBQUksU0FBUyxDQUFDLGFBQWEsS0FBSyxDQUFDLFFBQVEsaUJBQWlCLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBQ0QsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQztRQUM5QyxPQUFPLElBQUksU0FBUyxDQUNsQixx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