@bitgo-beta/sdk-coin-iota 1.0.1-beta.44 → 1.0.1-beta.441

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 (69) hide show
  1. package/README.md +1 -1
  2. package/dist/src/iota.d.ts +134 -23
  3. package/dist/src/iota.d.ts.map +1 -1
  4. package/dist/src/iota.js +286 -46
  5. package/dist/src/lib/constants.d.ts +59 -6
  6. package/dist/src/lib/constants.d.ts.map +1 -1
  7. package/dist/src/lib/constants.js +76 -8
  8. package/dist/src/lib/iface.d.ts +174 -2
  9. package/dist/src/lib/iface.d.ts.map +1 -1
  10. package/dist/src/lib/iface.js +1 -1
  11. package/dist/src/lib/index.d.ts +1 -0
  12. package/dist/src/lib/index.d.ts.map +1 -1
  13. package/dist/src/lib/index.js +4 -2
  14. package/dist/src/lib/keyPair.d.ts +100 -6
  15. package/dist/src/lib/keyPair.d.ts.map +1 -1
  16. package/dist/src/lib/keyPair.js +103 -10
  17. package/dist/src/lib/transaction.d.ts +175 -5
  18. package/dist/src/lib/transaction.d.ts.map +1 -1
  19. package/dist/src/lib/transaction.js +390 -6
  20. package/dist/src/lib/transactionBuilder.d.ts +109 -9
  21. package/dist/src/lib/transactionBuilder.d.ts.map +1 -1
  22. package/dist/src/lib/transactionBuilder.js +200 -14
  23. package/dist/src/lib/transactionBuilderFactory.d.ts +98 -2
  24. package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
  25. package/dist/src/lib/transactionBuilderFactory.js +132 -5
  26. package/dist/src/lib/transferBuilder.d.ts +52 -2
  27. package/dist/src/lib/transferBuilder.d.ts.map +1 -1
  28. package/dist/src/lib/transferBuilder.js +86 -3
  29. package/dist/src/lib/transferTransaction.d.ts +124 -0
  30. package/dist/src/lib/transferTransaction.d.ts.map +1 -0
  31. package/dist/src/lib/transferTransaction.js +341 -0
  32. package/dist/src/lib/utils.d.ts +108 -7
  33. package/dist/src/lib/utils.d.ts.map +1 -1
  34. package/dist/src/lib/utils.js +146 -11
  35. package/dist/test/resources/iota.d.ts +35 -0
  36. package/dist/test/resources/iota.d.ts.map +1 -0
  37. package/dist/test/resources/iota.js +93 -0
  38. package/dist/test/unit/helpers/testHelpers.d.ts +57 -0
  39. package/dist/test/unit/helpers/testHelpers.d.ts.map +1 -0
  40. package/dist/test/unit/helpers/testHelpers.js +176 -0
  41. package/dist/test/unit/index.d.ts +2 -0
  42. package/dist/test/unit/index.d.ts.map +1 -0
  43. package/dist/test/unit/index.js +16 -0
  44. package/dist/test/unit/iota.d.ts +2 -0
  45. package/dist/test/unit/iota.d.ts.map +1 -0
  46. package/dist/test/unit/iota.js +501 -0
  47. package/dist/test/unit/keyPair.d.ts +2 -0
  48. package/dist/test/unit/keyPair.d.ts.map +1 -0
  49. package/dist/test/unit/keyPair.js +108 -0
  50. package/dist/test/unit/transactionBuilder/transactionBuilder.d.ts +2 -0
  51. package/dist/test/unit/transactionBuilder/transactionBuilder.d.ts.map +1 -0
  52. package/dist/test/unit/transactionBuilder/transactionBuilder.js +188 -0
  53. package/dist/test/unit/transactionBuilder/transactionBuilderFactory.d.ts +2 -0
  54. package/dist/test/unit/transactionBuilder/transactionBuilderFactory.d.ts.map +1 -0
  55. package/dist/test/unit/transactionBuilder/transactionBuilderFactory.js +178 -0
  56. package/dist/test/unit/transactionBuilder/transferBuilder.d.ts +2 -0
  57. package/dist/test/unit/transactionBuilder/transferBuilder.d.ts.map +1 -0
  58. package/dist/test/unit/transactionBuilder/transferBuilder.js +438 -0
  59. package/dist/test/unit/transferTransaction.d.ts +2 -0
  60. package/dist/test/unit/transferTransaction.d.ts.map +1 -0
  61. package/dist/test/unit/transferTransaction.js +218 -0
  62. package/dist/test/unit/utils.d.ts +2 -0
  63. package/dist/test/unit/utils.d.ts.map +1 -0
  64. package/dist/test/unit/utils.js +252 -0
  65. package/dist/tsconfig.tsbuildinfo +1 -0
  66. package/package.json +17 -11
  67. package/.eslintignore +0 -5
  68. package/.mocharc.yml +0 -8
  69. package/CHANGELOG.md +0 -28
@@ -1,17 +1,144 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.TransactionBuilderFactory = void 0;
4
7
  const sdk_core_1 = require("@bitgo-beta/sdk-core");
8
+ const transferBuilder_1 = require("./transferBuilder");
9
+ const constants_1 = require("./constants");
10
+ const utils_1 = __importDefault(require("./utils"));
11
+ const transactions_1 = require("@iota/iota-sdk/transactions");
12
+ /**
13
+ * Factory class for creating IOTA transaction builders.
14
+ *
15
+ * This factory provides methods to create transaction builders for different
16
+ * transaction types and to reconstruct transactions from raw transaction data.
17
+ *
18
+ * @example
19
+ * ```typescript
20
+ * const factory = new TransactionBuilderFactory(coins.get('tiota'));
21
+ *
22
+ * // Create a new transfer builder
23
+ * const builder = factory.getTransferBuilder();
24
+ *
25
+ * // Rebuild from raw transaction
26
+ * const rebuiltBuilder = factory.from(rawTxHex);
27
+ * ```
28
+ */
5
29
  class TransactionBuilderFactory extends sdk_core_1.BaseTransactionBuilderFactory {
30
+ constructor(coinConfig) {
31
+ super(coinConfig);
32
+ }
33
+ /**
34
+ * Wallet initialization is not implemented for IOTA.
35
+ * IOTA wallets are initialized through the TSS flow.
36
+ *
37
+ * @throws Error always - not implemented
38
+ */
6
39
  getWalletInitializationBuilder() {
7
40
  throw new Error('Method not implemented.');
8
41
  }
9
- getTransferBuilder() {
10
- throw new Error('Method not implemented.');
42
+ /**
43
+ * Creates a transfer transaction builder.
44
+ * Optionally initializes the builder with data from an existing transaction.
45
+ *
46
+ * @param tx - Optional existing transaction to initialize the builder
47
+ * @returns A new TransferBuilder instance
48
+ *
49
+ * @example
50
+ * ```typescript
51
+ * // Create a new transfer builder
52
+ * const builder = factory.getTransferBuilder();
53
+ *
54
+ * // Initialize from existing transaction
55
+ * const existingTx = await builder.build();
56
+ * const newBuilder = factory.getTransferBuilder(existingTx);
57
+ * ```
58
+ */
59
+ getTransferBuilder(tx) {
60
+ return this.initializeBuilder(tx, new transferBuilder_1.TransferBuilder(this._coinConfig));
11
61
  }
12
- from(raw) {
13
- throw new Error('Method not implemented.');
62
+ /**
63
+ * Reconstructs a transaction builder from raw transaction data.
64
+ * Automatically identifies the transaction type and creates the appropriate builder.
65
+ *
66
+ * @param rawTx - Raw transaction data (hex string or Uint8Array)
67
+ * @returns TransactionBuilder appropriate for the transaction type
68
+ * @throws InvalidTransactionError if the transaction type is not supported
69
+ *
70
+ * @example
71
+ * ```typescript
72
+ * // From hex string
73
+ * const builder = factory.from('0x1234...');
74
+ *
75
+ * // From Uint8Array
76
+ * const builder = factory.from(new Uint8Array([...]));
77
+ *
78
+ * // Rebuild and access the transaction
79
+ * const tx = await builder.build();
80
+ * ```
81
+ */
82
+ from(rawTx) {
83
+ const rawTxBase64 = utils_1.default.getBase64String(rawTx);
84
+ const transactionType = this.identifyTransactionType(rawTxBase64);
85
+ switch (transactionType) {
86
+ case sdk_core_1.TransactionType.Send:
87
+ return this.createTransferBuilderFromRawTx(rawTxBase64);
88
+ default:
89
+ throw new sdk_core_1.InvalidTransactionError(`Unsupported transaction type: ${transactionType}`);
90
+ }
91
+ }
92
+ /**
93
+ * Identifies the transaction type by analyzing its commands.
94
+ * Currently supports transfer transactions (Send type).
95
+ *
96
+ * @param rawTx - Raw transaction in base64 format
97
+ * @returns The identified transaction type
98
+ * @throws InvalidTransactionError if transaction contains unsupported commands
99
+ */
100
+ identifyTransactionType(rawTx) {
101
+ const txData = transactions_1.Transaction.from(rawTx).getData();
102
+ if (this.isTransferTransaction(txData)) {
103
+ return sdk_core_1.TransactionType.Send;
104
+ }
105
+ throw new sdk_core_1.InvalidTransactionError('Transaction contains unsupported commands');
106
+ }
107
+ /**
108
+ * Checks if a transaction is a transfer transaction by validating its commands.
109
+ * Transfer transactions only contain: SplitCoins, MergeCoins, and TransferObjects commands.
110
+ *
111
+ * @param txData - The parsed transaction data
112
+ * @returns true if all commands are valid transfer commands
113
+ */
114
+ isTransferTransaction(txData) {
115
+ return txData.commands.every((command) => constants_1.TRANSFER_TRANSACTION_COMMANDS.includes(command.$kind));
116
+ }
117
+ /**
118
+ * Creates a TransferBuilder from raw transaction data.
119
+ *
120
+ * @param rawTxBase64 - Raw transaction in base64 format
121
+ * @returns Initialized TransferBuilder
122
+ */
123
+ createTransferBuilderFromRawTx(rawTxBase64) {
124
+ const builder = new transferBuilder_1.TransferBuilder(this._coinConfig);
125
+ builder.fromImplementation(rawTxBase64);
126
+ return builder;
127
+ }
128
+ /**
129
+ * Initializes a builder with data from an existing transaction.
130
+ * If no transaction is provided, returns the builder as-is.
131
+ *
132
+ * @param tx - Optional transaction to initialize from
133
+ * @param builder - The builder to initialize
134
+ * @returns The initialized builder
135
+ */
136
+ initializeBuilder(tx, builder) {
137
+ if (tx) {
138
+ builder.initBuilder(tx);
139
+ }
140
+ return builder;
14
141
  }
15
142
  }
16
143
  exports.TransactionBuilderFactory = TransactionBuilderFactory;
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtREFBcUU7QUFJckUsTUFBYSx5QkFBMEIsU0FBUSx3Q0FBNkI7SUFDbkUsOEJBQThCO1FBQ25DLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBQ00sa0JBQWtCO1FBQ3ZCLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBQ00sSUFBSSxDQUFDLEdBQXdCO1FBQ2xDLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUM3QyxDQUFDO0NBQ0Y7QUFWRCw4REFVQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5IH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHsgVHJhbnNmZXJCdWlsZGVyIH0gZnJvbSAnLi90cmFuc2ZlckJ1aWxkZXInO1xuXG5leHBvcnQgY2xhc3MgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSBleHRlbmRzIEJhc2VUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5IHtcbiAgcHVibGljIGdldFdhbGxldEluaXRpYWxpemF0aW9uQnVpbGRlcigpOiB2b2lkIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cbiAgcHVibGljIGdldFRyYW5zZmVyQnVpbGRlcigpOiBUcmFuc2ZlckJ1aWxkZXIge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuICBwdWJsaWMgZnJvbShyYXc6IHN0cmluZyB8IFVpbnQ4QXJyYXkpOiBUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxufVxuIl19
144
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxtREFBK0c7QUFFL0csdURBQW9EO0FBRXBELDJDQUE0RDtBQUM1RCxvREFBNEI7QUFDNUIsOERBQTZFO0FBRzdFOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0FBQ0gsTUFBYSx5QkFBMEIsU0FBUSx3Q0FBNkI7SUFDMUUsWUFBWSxVQUFnQztRQUMxQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDcEIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksOEJBQThCO1FBQ25DLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7T0FnQkc7SUFDSCxrQkFBa0IsQ0FBQyxFQUFnQjtRQUNqQyxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsSUFBSSxpQ0FBZSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQW1CRztJQUNILElBQUksQ0FBQyxLQUEwQjtRQUM3QixNQUFNLFdBQVcsR0FBRyxlQUFLLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pELE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUVsRSxRQUFRLGVBQWUsRUFBRSxDQUFDO1lBQ3hCLEtBQUssMEJBQWUsQ0FBQyxJQUFJO2dCQUN2QixPQUFPLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUMxRDtnQkFDRSxNQUFNLElBQUksa0NBQXVCLENBQUMsaUNBQWlDLGVBQWUsRUFBRSxDQUFDLENBQUM7UUFDMUYsQ0FBQztJQUNILENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0ssdUJBQXVCLENBQUMsS0FBMEI7UUFDeEQsTUFBTSxNQUFNLEdBQUcsMEJBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFckQsSUFBSSxJQUFJLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUN2QyxPQUFPLDBCQUFlLENBQUMsSUFBSSxDQUFDO1FBQzlCLENBQUM7UUFFRCxNQUFNLElBQUksa0NBQXVCLENBQUMsMkNBQTJDLENBQUMsQ0FBQztJQUNqRixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0sscUJBQXFCLENBQUMsTUFBOEM7UUFDMUUsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMseUNBQTZCLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ25HLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNLLDhCQUE4QixDQUFDLFdBQW1CO1FBQ3hELE1BQU0sT0FBTyxHQUFHLElBQUksaUNBQWUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDdEQsT0FBTyxDQUFDLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3hDLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0ssaUJBQWlCLENBQStCLEVBQTJCLEVBQUUsT0FBVTtRQUM3RixJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQ1AsT0FBTyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMxQixDQUFDO1FBQ0QsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztDQUNGO0FBM0hELDhEQTJIQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LCBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvciwgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHsgVHJhbnNmZXJCdWlsZGVyIH0gZnJvbSAnLi90cmFuc2ZlckJ1aWxkZXInO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcbmltcG9ydCB7IFRSQU5TRkVSX1RSQU5TQUNUSU9OX0NPTU1BTkRTIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gYXMgSW90YVRyYW5zYWN0aW9uIH0gZnJvbSAnQGlvdGEvaW90YS1zZGsvdHJhbnNhY3Rpb25zJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcblxuLyoqXG4gKiBGYWN0b3J5IGNsYXNzIGZvciBjcmVhdGluZyBJT1RBIHRyYW5zYWN0aW9uIGJ1aWxkZXJzLlxuICpcbiAqIFRoaXMgZmFjdG9yeSBwcm92aWRlcyBtZXRob2RzIHRvIGNyZWF0ZSB0cmFuc2FjdGlvbiBidWlsZGVycyBmb3IgZGlmZmVyZW50XG4gKiB0cmFuc2FjdGlvbiB0eXBlcyBhbmQgdG8gcmVjb25zdHJ1Y3QgdHJhbnNhY3Rpb25zIGZyb20gcmF3IHRyYW5zYWN0aW9uIGRhdGEuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGZhY3RvcnkgPSBuZXcgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeShjb2lucy5nZXQoJ3Rpb3RhJykpO1xuICpcbiAqIC8vIENyZWF0ZSBhIG5ldyB0cmFuc2ZlciBidWlsZGVyXG4gKiBjb25zdCBidWlsZGVyID0gZmFjdG9yeS5nZXRUcmFuc2ZlckJ1aWxkZXIoKTtcbiAqXG4gKiAvLyBSZWJ1aWxkIGZyb20gcmF3IHRyYW5zYWN0aW9uXG4gKiBjb25zdCByZWJ1aWx0QnVpbGRlciA9IGZhY3RvcnkuZnJvbShyYXdUeEhleCk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNsYXNzIFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkgZXh0ZW5kcyBCYXNlVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSB7XG4gIGNvbnN0cnVjdG9yKGNvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoY29pbkNvbmZpZyk7XG4gIH1cblxuICAvKipcbiAgICogV2FsbGV0IGluaXRpYWxpemF0aW9uIGlzIG5vdCBpbXBsZW1lbnRlZCBmb3IgSU9UQS5cbiAgICogSU9UQSB3YWxsZXRzIGFyZSBpbml0aWFsaXplZCB0aHJvdWdoIHRoZSBUU1MgZmxvdy5cbiAgICpcbiAgICogQHRocm93cyBFcnJvciBhbHdheXMgLSBub3QgaW1wbGVtZW50ZWRcbiAgICovXG4gIHB1YmxpYyBnZXRXYWxsZXRJbml0aWFsaXphdGlvbkJ1aWxkZXIoKTogdm9pZCB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSB0cmFuc2ZlciB0cmFuc2FjdGlvbiBidWlsZGVyLlxuICAgKiBPcHRpb25hbGx5IGluaXRpYWxpemVzIHRoZSBidWlsZGVyIHdpdGggZGF0YSBmcm9tIGFuIGV4aXN0aW5nIHRyYW5zYWN0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gdHggLSBPcHRpb25hbCBleGlzdGluZyB0cmFuc2FjdGlvbiB0byBpbml0aWFsaXplIHRoZSBidWlsZGVyXG4gICAqIEByZXR1cm5zIEEgbmV3IFRyYW5zZmVyQnVpbGRlciBpbnN0YW5jZVxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIC8vIENyZWF0ZSBhIG5ldyB0cmFuc2ZlciBidWlsZGVyXG4gICAqIGNvbnN0IGJ1aWxkZXIgPSBmYWN0b3J5LmdldFRyYW5zZmVyQnVpbGRlcigpO1xuICAgKlxuICAgKiAvLyBJbml0aWFsaXplIGZyb20gZXhpc3RpbmcgdHJhbnNhY3Rpb25cbiAgICogY29uc3QgZXhpc3RpbmdUeCA9IGF3YWl0IGJ1aWxkZXIuYnVpbGQoKTtcbiAgICogY29uc3QgbmV3QnVpbGRlciA9IGZhY3RvcnkuZ2V0VHJhbnNmZXJCdWlsZGVyKGV4aXN0aW5nVHgpO1xuICAgKiBgYGBcbiAgICovXG4gIGdldFRyYW5zZmVyQnVpbGRlcih0eD86IFRyYW5zYWN0aW9uKTogVHJhbnNmZXJCdWlsZGVyIHtcbiAgICByZXR1cm4gdGhpcy5pbml0aWFsaXplQnVpbGRlcih0eCwgbmV3IFRyYW5zZmVyQnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKSk7XG4gIH1cblxuICAvKipcbiAgICogUmVjb25zdHJ1Y3RzIGEgdHJhbnNhY3Rpb24gYnVpbGRlciBmcm9tIHJhdyB0cmFuc2FjdGlvbiBkYXRhLlxuICAgKiBBdXRvbWF0aWNhbGx5IGlkZW50aWZpZXMgdGhlIHRyYW5zYWN0aW9uIHR5cGUgYW5kIGNyZWF0ZXMgdGhlIGFwcHJvcHJpYXRlIGJ1aWxkZXIuXG4gICAqXG4gICAqIEBwYXJhbSByYXdUeCAtIFJhdyB0cmFuc2FjdGlvbiBkYXRhIChoZXggc3RyaW5nIG9yIFVpbnQ4QXJyYXkpXG4gICAqIEByZXR1cm5zIFRyYW5zYWN0aW9uQnVpbGRlciBhcHByb3ByaWF0ZSBmb3IgdGhlIHRyYW5zYWN0aW9uIHR5cGVcbiAgICogQHRocm93cyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvciBpZiB0aGUgdHJhbnNhY3Rpb24gdHlwZSBpcyBub3Qgc3VwcG9ydGVkXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogLy8gRnJvbSBoZXggc3RyaW5nXG4gICAqIGNvbnN0IGJ1aWxkZXIgPSBmYWN0b3J5LmZyb20oJzB4MTIzNC4uLicpO1xuICAgKlxuICAgKiAvLyBGcm9tIFVpbnQ4QXJyYXlcbiAgICogY29uc3QgYnVpbGRlciA9IGZhY3RvcnkuZnJvbShuZXcgVWludDhBcnJheShbLi4uXSkpO1xuICAgKlxuICAgKiAvLyBSZWJ1aWxkIGFuZCBhY2Nlc3MgdGhlIHRyYW5zYWN0aW9uXG4gICAqIGNvbnN0IHR4ID0gYXdhaXQgYnVpbGRlci5idWlsZCgpO1xuICAgKiBgYGBcbiAgICovXG4gIGZyb20ocmF3VHg6IHN0cmluZyB8IFVpbnQ4QXJyYXkpOiBUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICAgIGNvbnN0IHJhd1R4QmFzZTY0ID0gdXRpbHMuZ2V0QmFzZTY0U3RyaW5nKHJhd1R4KTtcbiAgICBjb25zdCB0cmFuc2FjdGlvblR5cGUgPSB0aGlzLmlkZW50aWZ5VHJhbnNhY3Rpb25UeXBlKHJhd1R4QmFzZTY0KTtcblxuICAgIHN3aXRjaCAodHJhbnNhY3Rpb25UeXBlKSB7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TZW5kOlxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVUcmFuc2ZlckJ1aWxkZXJGcm9tUmF3VHgocmF3VHhCYXNlNjQpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKGBVbnN1cHBvcnRlZCB0cmFuc2FjdGlvbiB0eXBlOiAke3RyYW5zYWN0aW9uVHlwZX1gKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSWRlbnRpZmllcyB0aGUgdHJhbnNhY3Rpb24gdHlwZSBieSBhbmFseXppbmcgaXRzIGNvbW1hbmRzLlxuICAgKiBDdXJyZW50bHkgc3VwcG9ydHMgdHJhbnNmZXIgdHJhbnNhY3Rpb25zIChTZW5kIHR5cGUpLlxuICAgKlxuICAgKiBAcGFyYW0gcmF3VHggLSBSYXcgdHJhbnNhY3Rpb24gaW4gYmFzZTY0IGZvcm1hdFxuICAgKiBAcmV0dXJucyBUaGUgaWRlbnRpZmllZCB0cmFuc2FjdGlvbiB0eXBlXG4gICAqIEB0aHJvd3MgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IgaWYgdHJhbnNhY3Rpb24gY29udGFpbnMgdW5zdXBwb3J0ZWQgY29tbWFuZHNcbiAgICovXG4gIHByaXZhdGUgaWRlbnRpZnlUcmFuc2FjdGlvblR5cGUocmF3VHg6IHN0cmluZyB8IFVpbnQ4QXJyYXkpOiBUcmFuc2FjdGlvblR5cGUge1xuICAgIGNvbnN0IHR4RGF0YSA9IElvdGFUcmFuc2FjdGlvbi5mcm9tKHJhd1R4KS5nZXREYXRhKCk7XG5cbiAgICBpZiAodGhpcy5pc1RyYW5zZmVyVHJhbnNhY3Rpb24odHhEYXRhKSkge1xuICAgICAgcmV0dXJuIFRyYW5zYWN0aW9uVHlwZS5TZW5kO1xuICAgIH1cblxuICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignVHJhbnNhY3Rpb24gY29udGFpbnMgdW5zdXBwb3J0ZWQgY29tbWFuZHMnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgYSB0cmFuc2FjdGlvbiBpcyBhIHRyYW5zZmVyIHRyYW5zYWN0aW9uIGJ5IHZhbGlkYXRpbmcgaXRzIGNvbW1hbmRzLlxuICAgKiBUcmFuc2ZlciB0cmFuc2FjdGlvbnMgb25seSBjb250YWluOiBTcGxpdENvaW5zLCBNZXJnZUNvaW5zLCBhbmQgVHJhbnNmZXJPYmplY3RzIGNvbW1hbmRzLlxuICAgKlxuICAgKiBAcGFyYW0gdHhEYXRhIC0gVGhlIHBhcnNlZCB0cmFuc2FjdGlvbiBkYXRhXG4gICAqIEByZXR1cm5zIHRydWUgaWYgYWxsIGNvbW1hbmRzIGFyZSB2YWxpZCB0cmFuc2ZlciBjb21tYW5kc1xuICAgKi9cbiAgcHJpdmF0ZSBpc1RyYW5zZmVyVHJhbnNhY3Rpb24odHhEYXRhOiBSZXR1cm5UeXBlPElvdGFUcmFuc2FjdGlvblsnZ2V0RGF0YSddPik6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0eERhdGEuY29tbWFuZHMuZXZlcnkoKGNvbW1hbmQpID0+IFRSQU5TRkVSX1RSQU5TQUNUSU9OX0NPTU1BTkRTLmluY2x1ZGVzKGNvbW1hbmQuJGtpbmQpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgVHJhbnNmZXJCdWlsZGVyIGZyb20gcmF3IHRyYW5zYWN0aW9uIGRhdGEuXG4gICAqXG4gICAqIEBwYXJhbSByYXdUeEJhc2U2NCAtIFJhdyB0cmFuc2FjdGlvbiBpbiBiYXNlNjQgZm9ybWF0XG4gICAqIEByZXR1cm5zIEluaXRpYWxpemVkIFRyYW5zZmVyQnVpbGRlclxuICAgKi9cbiAgcHJpdmF0ZSBjcmVhdGVUcmFuc2ZlckJ1aWxkZXJGcm9tUmF3VHgocmF3VHhCYXNlNjQ6IHN0cmluZyk6IFRyYW5zZmVyQnVpbGRlciB7XG4gICAgY29uc3QgYnVpbGRlciA9IG5ldyBUcmFuc2ZlckJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZyk7XG4gICAgYnVpbGRlci5mcm9tSW1wbGVtZW50YXRpb24ocmF3VHhCYXNlNjQpO1xuICAgIHJldHVybiBidWlsZGVyO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemVzIGEgYnVpbGRlciB3aXRoIGRhdGEgZnJvbSBhbiBleGlzdGluZyB0cmFuc2FjdGlvbi5cbiAgICogSWYgbm8gdHJhbnNhY3Rpb24gaXMgcHJvdmlkZWQsIHJldHVybnMgdGhlIGJ1aWxkZXIgYXMtaXMuXG4gICAqXG4gICAqIEBwYXJhbSB0eCAtIE9wdGlvbmFsIHRyYW5zYWN0aW9uIHRvIGluaXRpYWxpemUgZnJvbVxuICAgKiBAcGFyYW0gYnVpbGRlciAtIFRoZSBidWlsZGVyIHRvIGluaXRpYWxpemVcbiAgICogQHJldHVybnMgVGhlIGluaXRpYWxpemVkIGJ1aWxkZXJcbiAgICovXG4gIHByaXZhdGUgaW5pdGlhbGl6ZUJ1aWxkZXI8VCBleHRlbmRzIFRyYW5zYWN0aW9uQnVpbGRlcj4odHg6IFRyYW5zYWN0aW9uIHwgdW5kZWZpbmVkLCBidWlsZGVyOiBUKTogVCB7XG4gICAgaWYgKHR4KSB7XG4gICAgICBidWlsZGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICB9XG4gICAgcmV0dXJuIGJ1aWxkZXI7XG4gIH1cbn1cbiJdfQ==
@@ -1,8 +1,58 @@
1
1
  import { TransactionBuilder } from './transactionBuilder';
2
2
  import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
3
- import { TransactionType } from '@bitgo-beta/sdk-core';
3
+ import { TransferTransaction } from './transferTransaction';
4
+ import { TransactionRecipient } from '@bitgo-beta/sdk-core';
5
+ import { Transaction } from './transaction';
6
+ import { TransactionObjectInput } from './iface';
7
+ /**
8
+ * Builder for IOTA transfer transactions.
9
+ * Handles transactions that transfer IOTA tokens from the sender to one or more recipients.
10
+ */
4
11
  export declare class TransferBuilder extends TransactionBuilder {
5
12
  constructor(_coinConfig: Readonly<CoinConfig>);
6
- protected get transactionType(): TransactionType;
13
+ /**
14
+ * Sets the recipients for this transfer transaction.
15
+ * @param recipients - Array of recipients with their addresses and amounts
16
+ * @returns This builder for method chaining
17
+ * @throws BuildTransactionError if any recipient is invalid
18
+ */
19
+ recipients(recipients: TransactionRecipient[]): this;
20
+ /**
21
+ * Sets the payment objects (coin objects) to be used for this transfer.
22
+ * These are the source coins that will be split and transferred to recipients.
23
+ * @param paymentObjects - Array of IOTA coin objects to use for payment
24
+ * @returns This builder for method chaining
25
+ */
26
+ paymentObjects(paymentObjects: TransactionObjectInput[]): this;
27
+ /**
28
+ * Initializes the builder with data from an existing transfer transaction.
29
+ * @param tx - The source transaction to copy data from
30
+ * @throws BuildTransactionError if transaction is not a TransferTransaction
31
+ */
32
+ initBuilder(tx: Transaction): void;
33
+ /**
34
+ * Validates that the transaction is of the correct type (TransferTransaction).
35
+ */
36
+ private validateTransactionType;
37
+ /**
38
+ * Copies transfer-specific data from source transaction.
39
+ */
40
+ private copyTransferData;
41
+ /**
42
+ * Validates a complete transfer transaction.
43
+ * @param transaction - The transaction to validate
44
+ * @throws BuildTransactionError if transaction is invalid or not a TransferTransaction
45
+ */
46
+ validateTransaction(transaction?: Transaction): void;
47
+ /**
48
+ * Returns the transaction as a TransferTransaction type.
49
+ */
50
+ protected get transferTransaction(): TransferTransaction;
51
+ /**
52
+ * Validates all recipients have valid addresses and amounts.
53
+ * @param recipients - Array of recipients to validate
54
+ * @throws BuildTransactionError if any recipient has invalid address or amount
55
+ */
56
+ private validateRecipients;
7
57
  }
8
58
  //# sourceMappingURL=transferBuilder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"transferBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/transferBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,qBAAa,eAAgB,SAAQ,kBAAkB;gBACzC,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;CACF"}
1
+ {"version":3,"file":"transferBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/transferBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAyB,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAEnF,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAEjD;;;GAGG;AACH,qBAAa,eAAgB,SAAQ,kBAAkB;gBACzC,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAK7C;;;;;OAKG;IACH,UAAU,CAAC,UAAU,EAAE,oBAAoB,EAAE,GAAG,IAAI;IAMpD;;;;;OAKG;IACH,cAAc,CAAC,cAAc,EAAE,sBAAsB,EAAE,GAAG,IAAI;IAK9D;;;;OAIG;IACH,WAAW,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IAMlC;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAM/B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAKxB;;;;OAIG;IACH,mBAAmB,CAAC,WAAW,CAAC,EAAE,WAAW,GAAG,IAAI;IAUpD;;OAEG;IACH,SAAS,KAAK,mBAAmB,IAAI,mBAAmB,CAEvD;IAED;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;CAM3B"}
@@ -1,15 +1,98 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.TransferBuilder = void 0;
4
7
  const transactionBuilder_1 = require("./transactionBuilder");
8
+ const transferTransaction_1 = require("./transferTransaction");
5
9
  const sdk_core_1 = require("@bitgo-beta/sdk-core");
10
+ const bignumber_js_1 = __importDefault(require("bignumber.js"));
11
+ /**
12
+ * Builder for IOTA transfer transactions.
13
+ * Handles transactions that transfer IOTA tokens from the sender to one or more recipients.
14
+ */
6
15
  class TransferBuilder extends transactionBuilder_1.TransactionBuilder {
7
16
  constructor(_coinConfig) {
8
17
  super(_coinConfig);
18
+ this._transaction = new transferTransaction_1.TransferTransaction(_coinConfig);
9
19
  }
10
- get transactionType() {
11
- return sdk_core_1.TransactionType.Send;
20
+ /**
21
+ * Sets the recipients for this transfer transaction.
22
+ * @param recipients - Array of recipients with their addresses and amounts
23
+ * @returns This builder for method chaining
24
+ * @throws BuildTransactionError if any recipient is invalid
25
+ */
26
+ recipients(recipients) {
27
+ this.validateRecipients(recipients);
28
+ this.transferTransaction.recipients = recipients;
29
+ return this;
30
+ }
31
+ /**
32
+ * Sets the payment objects (coin objects) to be used for this transfer.
33
+ * These are the source coins that will be split and transferred to recipients.
34
+ * @param paymentObjects - Array of IOTA coin objects to use for payment
35
+ * @returns This builder for method chaining
36
+ */
37
+ paymentObjects(paymentObjects) {
38
+ this.transferTransaction.paymentObjects = paymentObjects;
39
+ return this;
40
+ }
41
+ /**
42
+ * Initializes the builder with data from an existing transfer transaction.
43
+ * @param tx - The source transaction to copy data from
44
+ * @throws BuildTransactionError if transaction is not a TransferTransaction
45
+ */
46
+ initBuilder(tx) {
47
+ this.validateTransactionType(tx);
48
+ super.initBuilder(tx);
49
+ this.copyTransferData(tx);
50
+ }
51
+ /**
52
+ * Validates that the transaction is of the correct type (TransferTransaction).
53
+ */
54
+ validateTransactionType(tx) {
55
+ if (!(tx instanceof transferTransaction_1.TransferTransaction)) {
56
+ throw new sdk_core_1.BuildTransactionError('Transaction must be of type TransferTransaction');
57
+ }
58
+ }
59
+ /**
60
+ * Copies transfer-specific data from source transaction.
61
+ */
62
+ copyTransferData(tx) {
63
+ this.transferTransaction.recipients = tx.recipients;
64
+ this.transferTransaction.paymentObjects = tx.paymentObjects;
65
+ }
66
+ /**
67
+ * Validates a complete transfer transaction.
68
+ * @param transaction - The transaction to validate
69
+ * @throws BuildTransactionError if transaction is invalid or not a TransferTransaction
70
+ */
71
+ validateTransaction(transaction) {
72
+ if (!transaction) {
73
+ throw new sdk_core_1.BuildTransactionError('Transaction is required for validation');
74
+ }
75
+ this.validateTransactionType(transaction);
76
+ super.validateTransaction(transaction);
77
+ this.validateRecipients(transaction.recipients);
78
+ }
79
+ /**
80
+ * Returns the transaction as a TransferTransaction type.
81
+ */
82
+ get transferTransaction() {
83
+ return this._transaction;
84
+ }
85
+ /**
86
+ * Validates all recipients have valid addresses and amounts.
87
+ * @param recipients - Array of recipients to validate
88
+ * @throws BuildTransactionError if any recipient has invalid address or amount
89
+ */
90
+ validateRecipients(recipients) {
91
+ recipients.forEach((recipient) => {
92
+ this.validateAddress({ address: recipient.address });
93
+ this.validateValue(new bignumber_js_1.default(recipient.amount));
94
+ });
12
95
  }
13
96
  }
14
97
  exports.TransferBuilder = TransferBuilder;
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXJCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90cmFuc2ZlckJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkRBQTBEO0FBRTFELG1EQUF1RDtBQUV2RCxNQUFhLGVBQWdCLFNBQVEsdUNBQWtCO0lBQ3JELFlBQVksV0FBaUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxJQUFjLGVBQWU7UUFDM0IsT0FBTywwQkFBZSxDQUFDLElBQUksQ0FBQztJQUM5QixDQUFDO0NBQ0Y7QUFSRCwwQ0FRQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcblxuZXhwb3J0IGNsYXNzIFRyYW5zZmVyQnVpbGRlciBleHRlbmRzIFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgdHJhbnNhY3Rpb25UeXBlKCk6IFRyYW5zYWN0aW9uVHlwZSB7XG4gICAgcmV0dXJuIFRyYW5zYWN0aW9uVHlwZS5TZW5kO1xuICB9XG59XG4iXX0=
98
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXJCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90cmFuc2ZlckJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsNkRBQTBEO0FBRTFELCtEQUE0RDtBQUM1RCxtREFBbUY7QUFDbkYsZ0VBQXFDO0FBSXJDOzs7R0FHRztBQUNILE1BQWEsZUFBZ0IsU0FBUSx1Q0FBa0I7SUFDckQsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbkIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLHlDQUFtQixDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILFVBQVUsQ0FBQyxVQUFrQztRQUMzQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDcEMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDakQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxjQUFjLENBQUMsY0FBd0M7UUFDckQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUM7UUFDekQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFdBQVcsQ0FBQyxFQUFlO1FBQ3pCLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNqQyxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUF5QixDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVEOztPQUVHO0lBQ0ssdUJBQXVCLENBQUMsRUFBZTtRQUM3QyxJQUFJLENBQUMsQ0FBQyxFQUFFLFlBQVkseUNBQW1CLENBQUMsRUFBRSxDQUFDO1lBQ3pDLE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQyxpREFBaUQsQ0FBQyxDQUFDO1FBQ3JGLENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSyxnQkFBZ0IsQ0FBQyxFQUF1QjtRQUM5QyxJQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUM7UUFDcEQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGNBQWMsR0FBRyxFQUFFLENBQUMsY0FBYyxDQUFDO0lBQzlELENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsbUJBQW1CLENBQUMsV0FBeUI7UUFDM0MsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2pCLE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFDO1FBQzVFLENBQUM7UUFFRCxJQUFJLENBQUMsdUJBQXVCLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDMUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxrQkFBa0IsQ0FBRSxXQUFtQyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFRDs7T0FFRztJQUNILElBQWMsbUJBQW1CO1FBQy9CLE9BQU8sSUFBSSxDQUFDLFlBQW1DLENBQUM7SUFDbEQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxrQkFBa0IsQ0FBQyxVQUFrQztRQUMzRCxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDL0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztZQUNyRCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksc0JBQVMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUN0RCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQTFGRCwwQ0EwRkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBUcmFuc2ZlclRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2ZlclRyYW5zYWN0aW9uJztcbmltcG9ydCB7IEJ1aWxkVHJhbnNhY3Rpb25FcnJvciwgVHJhbnNhY3Rpb25SZWNpcGllbnQgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgQmlnTnVtYmVyIGZyb20gJ2JpZ251bWJlci5qcyc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25PYmplY3RJbnB1dCB9IGZyb20gJy4vaWZhY2UnO1xuXG4vKipcbiAqIEJ1aWxkZXIgZm9yIElPVEEgdHJhbnNmZXIgdHJhbnNhY3Rpb25zLlxuICogSGFuZGxlcyB0cmFuc2FjdGlvbnMgdGhhdCB0cmFuc2ZlciBJT1RBIHRva2VucyBmcm9tIHRoZSBzZW5kZXIgdG8gb25lIG9yIG1vcmUgcmVjaXBpZW50cy5cbiAqL1xuZXhwb3J0IGNsYXNzIFRyYW5zZmVyQnVpbGRlciBleHRlbmRzIFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgICB0aGlzLl90cmFuc2FjdGlvbiA9IG5ldyBUcmFuc2ZlclRyYW5zYWN0aW9uKF9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSByZWNpcGllbnRzIGZvciB0aGlzIHRyYW5zZmVyIHRyYW5zYWN0aW9uLlxuICAgKiBAcGFyYW0gcmVjaXBpZW50cyAtIEFycmF5IG9mIHJlY2lwaWVudHMgd2l0aCB0aGVpciBhZGRyZXNzZXMgYW5kIGFtb3VudHNcbiAgICogQHJldHVybnMgVGhpcyBidWlsZGVyIGZvciBtZXRob2QgY2hhaW5pbmdcbiAgICogQHRocm93cyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IgaWYgYW55IHJlY2lwaWVudCBpcyBpbnZhbGlkXG4gICAqL1xuICByZWNpcGllbnRzKHJlY2lwaWVudHM6IFRyYW5zYWN0aW9uUmVjaXBpZW50W10pOiB0aGlzIHtcbiAgICB0aGlzLnZhbGlkYXRlUmVjaXBpZW50cyhyZWNpcGllbnRzKTtcbiAgICB0aGlzLnRyYW5zZmVyVHJhbnNhY3Rpb24ucmVjaXBpZW50cyA9IHJlY2lwaWVudHM7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgcGF5bWVudCBvYmplY3RzIChjb2luIG9iamVjdHMpIHRvIGJlIHVzZWQgZm9yIHRoaXMgdHJhbnNmZXIuXG4gICAqIFRoZXNlIGFyZSB0aGUgc291cmNlIGNvaW5zIHRoYXQgd2lsbCBiZSBzcGxpdCBhbmQgdHJhbnNmZXJyZWQgdG8gcmVjaXBpZW50cy5cbiAgICogQHBhcmFtIHBheW1lbnRPYmplY3RzIC0gQXJyYXkgb2YgSU9UQSBjb2luIG9iamVjdHMgdG8gdXNlIGZvciBwYXltZW50XG4gICAqIEByZXR1cm5zIFRoaXMgYnVpbGRlciBmb3IgbWV0aG9kIGNoYWluaW5nXG4gICAqL1xuICBwYXltZW50T2JqZWN0cyhwYXltZW50T2JqZWN0czogVHJhbnNhY3Rpb25PYmplY3RJbnB1dFtdKTogdGhpcyB7XG4gICAgdGhpcy50cmFuc2ZlclRyYW5zYWN0aW9uLnBheW1lbnRPYmplY3RzID0gcGF5bWVudE9iamVjdHM7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZXMgdGhlIGJ1aWxkZXIgd2l0aCBkYXRhIGZyb20gYW4gZXhpc3RpbmcgdHJhbnNmZXIgdHJhbnNhY3Rpb24uXG4gICAqIEBwYXJhbSB0eCAtIFRoZSBzb3VyY2UgdHJhbnNhY3Rpb24gdG8gY29weSBkYXRhIGZyb21cbiAgICogQHRocm93cyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IgaWYgdHJhbnNhY3Rpb24gaXMgbm90IGEgVHJhbnNmZXJUcmFuc2FjdGlvblxuICAgKi9cbiAgaW5pdEJ1aWxkZXIodHg6IFRyYW5zYWN0aW9uKTogdm9pZCB7XG4gICAgdGhpcy52YWxpZGF0ZVRyYW5zYWN0aW9uVHlwZSh0eCk7XG4gICAgc3VwZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgIHRoaXMuY29weVRyYW5zZmVyRGF0YSh0eCBhcyBUcmFuc2ZlclRyYW5zYWN0aW9uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhhdCB0aGUgdHJhbnNhY3Rpb24gaXMgb2YgdGhlIGNvcnJlY3QgdHlwZSAoVHJhbnNmZXJUcmFuc2FjdGlvbikuXG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlVHJhbnNhY3Rpb25UeXBlKHR4OiBUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIGlmICghKHR4IGluc3RhbmNlb2YgVHJhbnNmZXJUcmFuc2FjdGlvbikpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ1RyYW5zYWN0aW9uIG11c3QgYmUgb2YgdHlwZSBUcmFuc2ZlclRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENvcGllcyB0cmFuc2Zlci1zcGVjaWZpYyBkYXRhIGZyb20gc291cmNlIHRyYW5zYWN0aW9uLlxuICAgKi9cbiAgcHJpdmF0ZSBjb3B5VHJhbnNmZXJEYXRhKHR4OiBUcmFuc2ZlclRyYW5zYWN0aW9uKTogdm9pZCB7XG4gICAgdGhpcy50cmFuc2ZlclRyYW5zYWN0aW9uLnJlY2lwaWVudHMgPSB0eC5yZWNpcGllbnRzO1xuICAgIHRoaXMudHJhbnNmZXJUcmFuc2FjdGlvbi5wYXltZW50T2JqZWN0cyA9IHR4LnBheW1lbnRPYmplY3RzO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyBhIGNvbXBsZXRlIHRyYW5zZmVyIHRyYW5zYWN0aW9uLlxuICAgKiBAcGFyYW0gdHJhbnNhY3Rpb24gLSBUaGUgdHJhbnNhY3Rpb24gdG8gdmFsaWRhdGVcbiAgICogQHRocm93cyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IgaWYgdHJhbnNhY3Rpb24gaXMgaW52YWxpZCBvciBub3QgYSBUcmFuc2ZlclRyYW5zYWN0aW9uXG4gICAqL1xuICB2YWxpZGF0ZVRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uPzogVHJhbnNhY3Rpb24pOiB2b2lkIHtcbiAgICBpZiAoIXRyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdUcmFuc2FjdGlvbiBpcyByZXF1aXJlZCBmb3IgdmFsaWRhdGlvbicpO1xuICAgIH1cblxuICAgIHRoaXMudmFsaWRhdGVUcmFuc2FjdGlvblR5cGUodHJhbnNhY3Rpb24pO1xuICAgIHN1cGVyLnZhbGlkYXRlVHJhbnNhY3Rpb24odHJhbnNhY3Rpb24pO1xuICAgIHRoaXMudmFsaWRhdGVSZWNpcGllbnRzKCh0cmFuc2FjdGlvbiBhcyBUcmFuc2ZlclRyYW5zYWN0aW9uKS5yZWNpcGllbnRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSB0cmFuc2FjdGlvbiBhcyBhIFRyYW5zZmVyVHJhbnNhY3Rpb24gdHlwZS5cbiAgICovXG4gIHByb3RlY3RlZCBnZXQgdHJhbnNmZXJUcmFuc2FjdGlvbigpOiBUcmFuc2ZlclRyYW5zYWN0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5fdHJhbnNhY3Rpb24gYXMgVHJhbnNmZXJUcmFuc2FjdGlvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgYWxsIHJlY2lwaWVudHMgaGF2ZSB2YWxpZCBhZGRyZXNzZXMgYW5kIGFtb3VudHMuXG4gICAqIEBwYXJhbSByZWNpcGllbnRzIC0gQXJyYXkgb2YgcmVjaXBpZW50cyB0byB2YWxpZGF0ZVxuICAgKiBAdGhyb3dzIEJ1aWxkVHJhbnNhY3Rpb25FcnJvciBpZiBhbnkgcmVjaXBpZW50IGhhcyBpbnZhbGlkIGFkZHJlc3Mgb3IgYW1vdW50XG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlUmVjaXBpZW50cyhyZWNpcGllbnRzOiBUcmFuc2FjdGlvblJlY2lwaWVudFtdKTogdm9pZCB7XG4gICAgcmVjaXBpZW50cy5mb3JFYWNoKChyZWNpcGllbnQpID0+IHtcbiAgICAgIHRoaXMudmFsaWRhdGVBZGRyZXNzKHsgYWRkcmVzczogcmVjaXBpZW50LmFkZHJlc3MgfSk7XG4gICAgICB0aGlzLnZhbGlkYXRlVmFsdWUobmV3IEJpZ051bWJlcihyZWNpcGllbnQuYW1vdW50KSk7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,124 @@
1
+ import { TransactionRecipient } from '@bitgo-beta/sdk-core';
2
+ import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
3
+ import { Transaction } from './transaction';
4
+ import { TransactionExplanation, TransactionObjectInput, TransferTxData, TxData } from './iface';
5
+ export declare class TransferTransaction extends Transaction {
6
+ private _recipients;
7
+ private _paymentObjects?;
8
+ constructor(coinConfig: Readonly<CoinConfig>);
9
+ get recipients(): TransactionRecipient[];
10
+ set recipients(value: TransactionRecipient[]);
11
+ get paymentObjects(): TransactionObjectInput[] | undefined;
12
+ set paymentObjects(value: TransactionObjectInput[] | undefined);
13
+ /**
14
+ * @inheritDoc
15
+ */
16
+ addInputsAndOutputs(): void;
17
+ toJson(): TransferTxData;
18
+ parseFromJSON(txData: TransferTxData): void;
19
+ /**
20
+ * Parses a transfer transaction from its broadcast format (base64 or raw bytes).
21
+ * Extracts recipients, amounts, and payment objects from the transaction data.
22
+ */
23
+ parseFromBroadcastTx(tx: string | Uint8Array): void;
24
+ /**
25
+ * Validates that the transaction only contains supported transfer commands.
26
+ */
27
+ private validateTransferCommands;
28
+ /**
29
+ * Parses transaction inputs to extract objects, amounts, and receiver addresses.
30
+ */
31
+ private parseTransactionInputs;
32
+ /**
33
+ * Validates that the number of amounts matches the number of receivers.
34
+ */
35
+ private validateAmountsMatchReceivers;
36
+ /**
37
+ * Assigns parsed input objects to either gas payment objects or payment objects.
38
+ * If no gas objects exist and sender pays own gas, objects become gas objects.
39
+ * Otherwise, they become payment objects.
40
+ */
41
+ private assignParsedObjects;
42
+ /**
43
+ * Creates and assigns recipients from parsed addresses and amounts.
44
+ */
45
+ private assignRecipients;
46
+ protected messageWithIntent(message: Uint8Array): Uint8Array;
47
+ /**
48
+ * Populates the IOTA transaction with inputs and commands for the transfer.
49
+ * This determines which objects to use for payment (either payment objects or gas objects),
50
+ * consolidates them into a single coin, and then splits/transfers to recipients.
51
+ */
52
+ protected populateTxInputsAndCommands(): void;
53
+ /**
54
+ * Determines which objects to use as the payment source and consolidates them.
55
+ * If payment objects are provided, use those. Otherwise, if the sender is paying
56
+ * their own gas, use the gas objects for payment.
57
+ */
58
+ private getConsolidatedSourceCoin;
59
+ /**
60
+ * Checks if payment objects exist and if gas objects should be used instead.
61
+ * Gas objects are used when: no payment objects exist AND sender pays their own gas.
62
+ */
63
+ private hasPaymentObjects;
64
+ /**
65
+ * Consolidates payment objects into a single coin object.
66
+ * If multiple payment objects exist, they are merged in batches.
67
+ */
68
+ private consolidatePaymentObjects;
69
+ /**
70
+ * Consolidates gas payment objects into a single coin object.
71
+ * If the number of gas objects exceeds the maximum, they are merged in batches.
72
+ */
73
+ private consolidateGasObjects;
74
+ /**
75
+ * Merges multiple coin objects into a target coin in batches.
76
+ * This is necessary because IOTA has limits on the number of objects per merge command.
77
+ *
78
+ * @param targetCoin - The coin to merge into
79
+ * @param objectsToMerge - Array of objects to merge
80
+ * @param batchSize - Maximum number of objects to merge per batch
81
+ * @returns The consolidated coin object
82
+ */
83
+ private mergeObjectsInBatches;
84
+ /**
85
+ * Splits the source coin into the amounts needed for each recipient and transfers them.
86
+ * This creates split coin commands for all recipient amounts, then transfer commands
87
+ * to send each split coin to the corresponding recipient.
88
+ */
89
+ private splitAndTransferToRecipients;
90
+ /**
91
+ * Validates all transfer transaction data before building.
92
+ * Checks recipients, payment objects, and ensures no duplicate object IDs.
93
+ */
94
+ protected validateTxDataImplementation(): void;
95
+ /**
96
+ * Validates that recipients exist and don't exceed the maximum allowed.
97
+ */
98
+ private validateRecipientsList;
99
+ /**
100
+ * Validates that either payment objects or gas objects exist for funding the transfer.
101
+ * When a gas sponsor is used, payment objects are required.
102
+ * Otherwise, either payment objects or gas objects can be used.
103
+ */
104
+ private validatePaymentObjectsExist;
105
+ /**
106
+ * Validates that there are no duplicate object IDs within payment objects,
107
+ * gas payment objects, or between the two groups.
108
+ */
109
+ private validateNoDuplicateObjects;
110
+ /**
111
+ * Helper to check for duplicate IDs in an array.
112
+ */
113
+ private checkForDuplicateIds;
114
+ /**
115
+ * @inheritDoc
116
+ * Provides a human-readable explanation of the transfer transaction.
117
+ */
118
+ protected explainTransactionImplementation(_json: TxData, explanationResult: TransactionExplanation): TransactionExplanation;
119
+ /**
120
+ * Calculates the total amount being transferred to all recipients.
121
+ */
122
+ private calculateTotalOutputAmount;
123
+ }
124
+ //# sourceMappingURL=transferTransaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transferTransaction.d.ts","sourceRoot":"","sources":["../../../src/lib/transferTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkC,oBAAoB,EAAmB,MAAM,sBAAsB,CAAC;AAC7G,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAajG,qBAAa,mBAAoB,SAAQ,WAAW;IAClD,OAAO,CAAC,WAAW,CAAyB;IAC5C,OAAO,CAAC,eAAe,CAAC,CAA2B;gBAEvC,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC;IAO5C,IAAI,UAAU,IAAI,oBAAoB,EAAE,CAEvC;IAED,IAAI,UAAU,CAAC,KAAK,EAAE,oBAAoB,EAAE,EAG3C;IAED,IAAI,cAAc,IAAI,sBAAsB,EAAE,GAAG,SAAS,CAEzD;IAED,IAAI,cAAc,CAAC,KAAK,EAAE,sBAAsB,EAAE,GAAG,SAAS,EAG7D;IAED;;OAEG;IACH,mBAAmB,IAAI,IAAI;IAmB3B,MAAM,IAAI,cAAc;IAQxB,aAAa,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;IAO3C;;;OAGG;IACH,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAanD;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAUhC;;OAEG;IACH,OAAO,CAAC,sBAAsB;IA6B9B;;OAEG;IACH,OAAO,CAAC,6BAA6B;IAMrC;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;IAe3B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAOxB,SAAS,CAAC,iBAAiB,CAAC,OAAO,EAAE,UAAU,GAAG,UAAU;IAI5D;;;;OAIG;IACH,SAAS,CAAC,2BAA2B,IAAI,IAAI;IAK7C;;;;OAIG;IACH,OAAO,CAAC,yBAAyB;IAOjC;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAWzB;;;OAGG;IACH,OAAO,CAAC,yBAAyB;IAgBjC;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAe7B;;;;;;;;OAQG;IACH,OAAO,CAAC,qBAAqB;IAa7B;;;;OAIG;IACH,OAAO,CAAC,4BAA4B;IASpC;;;OAGG;IACH,SAAS,CAAC,4BAA4B,IAAI,IAAI;IAM9C;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAY9B;;;;OAIG;IACH,OAAO,CAAC,2BAA2B;IAmBnC;;;OAGG;IACH,OAAO,CAAC,0BAA0B;IAwBlC;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAO5B;;;OAGG;IACH,SAAS,CAAC,gCAAgC,CACxC,KAAK,EAAE,MAAM,EACb,iBAAiB,EAAE,sBAAsB,GACxC,sBAAsB;IAWzB;;OAEG;IACH,OAAO,CAAC,0BAA0B;CAKnC"}