@bitgo-beta/sdk-coin-icp 1.0.1-beta.575 → 1.0.1-beta.577

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 (46) hide show
  1. package/package.json +7 -7
  2. package/dist/src/icp.d.ts +0 -92
  3. package/dist/src/icp.d.ts.map +0 -1
  4. package/dist/src/icp.js +0 -377
  5. package/dist/src/index.d.ts +0 -5
  6. package/dist/src/index.d.ts.map +0 -1
  7. package/dist/src/index.js +0 -21
  8. package/dist/src/lib/icpAgent.d.ts +0 -34
  9. package/dist/src/lib/icpAgent.d.ts.map +0 -1
  10. package/dist/src/lib/icpAgent.js +0 -87
  11. package/dist/src/lib/iface.d.ts +0 -187
  12. package/dist/src/lib/iface.d.ts.map +0 -1
  13. package/dist/src/lib/iface.js +0 -39
  14. package/dist/src/lib/index.d.ts +0 -9
  15. package/dist/src/lib/index.d.ts.map +0 -1
  16. package/dist/src/lib/index.js +0 -53
  17. package/dist/src/lib/keyPair.d.ts +0 -18
  18. package/dist/src/lib/keyPair.d.ts.map +0 -1
  19. package/dist/src/lib/keyPair.js +0 -60
  20. package/dist/src/lib/signedTransactionBuilder.d.ts +0 -9
  21. package/dist/src/lib/signedTransactionBuilder.d.ts.map +0 -1
  22. package/dist/src/lib/signedTransactionBuilder.js +0 -64
  23. package/dist/src/lib/transaction.d.ts +0 -54
  24. package/dist/src/lib/transaction.d.ts.map +0 -1
  25. package/dist/src/lib/transaction.js +0 -255
  26. package/dist/src/lib/transactionBuilder.d.ts +0 -78
  27. package/dist/src/lib/transactionBuilder.d.ts.map +0 -1
  28. package/dist/src/lib/transactionBuilder.js +0 -164
  29. package/dist/src/lib/transactionBuilderFactory.d.ts +0 -25
  30. package/dist/src/lib/transactionBuilderFactory.d.ts.map +0 -1
  31. package/dist/src/lib/transactionBuilderFactory.js +0 -61
  32. package/dist/src/lib/transferBuilder.d.ts +0 -19
  33. package/dist/src/lib/transferBuilder.d.ts.map +0 -1
  34. package/dist/src/lib/transferBuilder.js +0 -109
  35. package/dist/src/lib/unsignedTransactionBuilder.d.ts +0 -11
  36. package/dist/src/lib/unsignedTransactionBuilder.d.ts.map +0 -1
  37. package/dist/src/lib/unsignedTransactionBuilder.js +0 -87
  38. package/dist/src/lib/utils.d.ts +0 -304
  39. package/dist/src/lib/utils.d.ts.map +0 -1
  40. package/dist/src/lib/utils.js +0 -725
  41. package/dist/src/register.d.ts +0 -3
  42. package/dist/src/register.d.ts.map +0 -1
  43. package/dist/src/register.js +0 -11
  44. package/dist/src/ticp.d.ts +0 -25
  45. package/dist/src/ticp.d.ts.map +0 -1
  46. package/dist/src/ticp.js +0 -37
@@ -1,25 +0,0 @@
1
- import { BaseTransactionBuilderFactory } from '@bitgo-beta/sdk-core';
2
- import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
3
- import { Transaction } from './transaction';
4
- import { TransactionBuilder } from './transactionBuilder';
5
- import { TransferBuilder } from './transferBuilder';
6
- import { ParsedTransaction } from './iface';
7
- export declare class TransactionBuilderFactory extends BaseTransactionBuilderFactory {
8
- constructor(_coinConfig: Readonly<CoinConfig>);
9
- /** @inheritdoc */
10
- from(rawTransaction: string): Promise<TransactionBuilder>;
11
- /**
12
- * Initialize the builder with the given transaction
13
- *
14
- * @param {Transaction | undefined} tx - the transaction used to initialize the builder
15
- * @param {TransactionBuilder} builder - the builder to be initialized
16
- * @returns {TransactionBuilder} the builder initialized
17
- */
18
- private static initializeBuilder;
19
- /** @inheritdoc */
20
- getTransferBuilder(tx?: Transaction): TransferBuilder;
21
- parseTransaction(rawTransaction: string, isSigned: boolean): Promise<ParsedTransaction>;
22
- /** @inheritdoc */
23
- getWalletInitializationBuilder(): void;
24
- }
25
- //# sourceMappingURL=transactionBuilderFactory.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"transactionBuilderFactory.d.ts","sourceRoot":"","sources":["../../../src/lib/transactionBuilderFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAsD,MAAM,sBAAsB,CAAC;AACzH,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAiB,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAE3D,qBAAa,yBAA0B,SAAQ,6BAA6B;gBAC9D,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,kBAAkB;IACZ,IAAI,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAe/D;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAOhC,kBAAkB;IAClB,kBAAkB,CAAC,EAAE,CAAC,EAAE,WAAW,GAAG,eAAe;IAIrD,gBAAgB,CAAC,cAAc,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAWvF,kBAAkB;IAClB,8BAA8B,IAAI,IAAI;CAGvC"}
@@ -1,61 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TransactionBuilderFactory = void 0;
4
- const sdk_core_1 = require("@bitgo-beta/sdk-core");
5
- const transaction_1 = require("./transaction");
6
- const transferBuilder_1 = require("./transferBuilder");
7
- const iface_1 = require("./iface");
8
- class TransactionBuilderFactory extends sdk_core_1.BaseTransactionBuilderFactory {
9
- constructor(_coinConfig) {
10
- super(_coinConfig);
11
- }
12
- /** @inheritdoc */
13
- async from(rawTransaction) {
14
- const transaction = new transaction_1.Transaction(this._coinConfig);
15
- await transaction.fromRawTransaction(rawTransaction);
16
- try {
17
- switch (transaction.icpTransactionData.transactionType) {
18
- case iface_1.OperationType.TRANSACTION:
19
- return this.getTransferBuilder(transaction);
20
- default:
21
- throw new sdk_core_1.InvalidTransactionError('Invalid transaction');
22
- }
23
- }
24
- catch (e) {
25
- throw new sdk_core_1.InvalidTransactionError('Invalid transaction: ' + e.message);
26
- }
27
- }
28
- /**
29
- * Initialize the builder with the given transaction
30
- *
31
- * @param {Transaction | undefined} tx - the transaction used to initialize the builder
32
- * @param {TransactionBuilder} builder - the builder to be initialized
33
- * @returns {TransactionBuilder} the builder initialized
34
- */
35
- static initializeBuilder(tx, builder) {
36
- if (tx) {
37
- builder.initBuilder(tx);
38
- }
39
- return builder;
40
- }
41
- /** @inheritdoc */
42
- getTransferBuilder(tx) {
43
- return TransactionBuilderFactory.initializeBuilder(tx, new transferBuilder_1.TransferBuilder(this._coinConfig));
44
- }
45
- parseTransaction(rawTransaction, isSigned) {
46
- if (!rawTransaction) {
47
- throw new sdk_core_1.InvalidTransactionError('Transaction is empty');
48
- }
49
- const transaction = new transaction_1.Transaction(this._coinConfig);
50
- if (isSigned) {
51
- return transaction.parseSignedTransaction(rawTransaction);
52
- }
53
- return transaction.parseUnsignedTransaction(rawTransaction);
54
- }
55
- /** @inheritdoc */
56
- getWalletInitializationBuilder() {
57
- throw new sdk_core_1.MethodNotImplementedError();
58
- }
59
- }
60
- exports.TransactionBuilderFactory = TransactionBuilderFactory;
61
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtREFBeUg7QUFFekgsK0NBQTRDO0FBRTVDLHVEQUFvRDtBQUNwRCxtQ0FBMkQ7QUFFM0QsTUFBYSx5QkFBMEIsU0FBUSx3Q0FBNkI7SUFDMUUsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixLQUFLLENBQUMsSUFBSSxDQUFDLGNBQXNCO1FBQy9CLE1BQU0sV0FBVyxHQUFHLElBQUkseUJBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDdEQsTUFBTSxXQUFXLENBQUMsa0JBQWtCLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDckQsSUFBSSxDQUFDO1lBQ0gsUUFBUSxXQUFXLENBQUMsa0JBQWtCLENBQUMsZUFBZSxFQUFFLENBQUM7Z0JBQ3ZELEtBQUsscUJBQWEsQ0FBQyxXQUFXO29CQUM1QixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDOUM7b0JBQ0UsTUFBTSxJQUFJLGtDQUF1QixDQUFDLHFCQUFxQixDQUFDLENBQUM7WUFDN0QsQ0FBQztRQUNILENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1gsTUFBTSxJQUFJLGtDQUF1QixDQUFDLHVCQUF1QixHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN6RSxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNLLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBK0IsRUFBMkIsRUFBRSxPQUFVO1FBQ3BHLElBQUksRUFBRSxFQUFFLENBQUM7WUFDUCxPQUFPLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzFCLENBQUM7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLGtCQUFrQixDQUFDLEVBQWdCO1FBQ2pDLE9BQU8seUJBQXlCLENBQUMsaUJBQWlCLENBQUMsRUFBRSxFQUFFLElBQUksaUNBQWUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUNoRyxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsY0FBc0IsRUFBRSxRQUFpQjtRQUN4RCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDcEIsTUFBTSxJQUFJLGtDQUF1QixDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFDNUQsQ0FBQztRQUNELE1BQU0sV0FBVyxHQUFHLElBQUkseUJBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDdEQsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNiLE9BQU8sV0FBVyxDQUFDLHNCQUFzQixDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzVELENBQUM7UUFDRCxPQUFPLFdBQVcsQ0FBQyx3QkFBd0IsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLDhCQUE4QjtRQUM1QixNQUFNLElBQUksb0NBQXlCLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0NBQ0Y7QUF2REQsOERBdURDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZVRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksIEludmFsaWRUcmFuc2FjdGlvbkVycm9yLCBNZXRob2ROb3RJbXBsZW1lbnRlZEVycm9yIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyJztcbmltcG9ydCB7IFRyYW5zZmVyQnVpbGRlciB9IGZyb20gJy4vdHJhbnNmZXJCdWlsZGVyJztcbmltcG9ydCB7IE9wZXJhdGlvblR5cGUsIFBhcnNlZFRyYW5zYWN0aW9uIH0gZnJvbSAnLi9pZmFjZSc7XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5IGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uQnVpbGRlckZhY3Rvcnkge1xuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgYXN5bmMgZnJvbShyYXdUcmFuc2FjdGlvbjogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbkJ1aWxkZXI+IHtcbiAgICBjb25zdCB0cmFuc2FjdGlvbiA9IG5ldyBUcmFuc2FjdGlvbih0aGlzLl9jb2luQ29uZmlnKTtcbiAgICBhd2FpdCB0cmFuc2FjdGlvbi5mcm9tUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb24pO1xuICAgIHRyeSB7XG4gICAgICBzd2l0Y2ggKHRyYW5zYWN0aW9uLmljcFRyYW5zYWN0aW9uRGF0YS50cmFuc2FjdGlvblR5cGUpIHtcbiAgICAgICAgY2FzZSBPcGVyYXRpb25UeXBlLlRSQU5TQUNUSU9OOlxuICAgICAgICAgIHJldHVybiB0aGlzLmdldFRyYW5zZmVyQnVpbGRlcih0cmFuc2FjdGlvbik7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uJyk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uOiAnICsgZS5tZXNzYWdlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZSB0aGUgYnVpbGRlciB3aXRoIHRoZSBnaXZlbiB0cmFuc2FjdGlvblxuICAgKlxuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9uIHwgdW5kZWZpbmVkfSB0eCAtIHRoZSB0cmFuc2FjdGlvbiB1c2VkIHRvIGluaXRpYWxpemUgdGhlIGJ1aWxkZXJcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvbkJ1aWxkZXJ9IGJ1aWxkZXIgLSB0aGUgYnVpbGRlciB0byBiZSBpbml0aWFsaXplZFxuICAgKiBAcmV0dXJucyB7VHJhbnNhY3Rpb25CdWlsZGVyfSB0aGUgYnVpbGRlciBpbml0aWFsaXplZFxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgaW5pdGlhbGl6ZUJ1aWxkZXI8VCBleHRlbmRzIFRyYW5zYWN0aW9uQnVpbGRlcj4odHg6IFRyYW5zYWN0aW9uIHwgdW5kZWZpbmVkLCBidWlsZGVyOiBUKTogVCB7XG4gICAgaWYgKHR4KSB7XG4gICAgICBidWlsZGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICB9XG4gICAgcmV0dXJuIGJ1aWxkZXI7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgZ2V0VHJhbnNmZXJCdWlsZGVyKHR4PzogVHJhbnNhY3Rpb24pOiBUcmFuc2ZlckJ1aWxkZXIge1xuICAgIHJldHVybiBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LmluaXRpYWxpemVCdWlsZGVyKHR4LCBuZXcgVHJhbnNmZXJCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpKTtcbiAgfVxuXG4gIHBhcnNlVHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb246IHN0cmluZywgaXNTaWduZWQ6IGJvb2xlYW4pOiBQcm9taXNlPFBhcnNlZFRyYW5zYWN0aW9uPiB7XG4gICAgaWYgKCFyYXdUcmFuc2FjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdUcmFuc2FjdGlvbiBpcyBlbXB0eScpO1xuICAgIH1cbiAgICBjb25zdCB0cmFuc2FjdGlvbiA9IG5ldyBUcmFuc2FjdGlvbih0aGlzLl9jb2luQ29uZmlnKTtcbiAgICBpZiAoaXNTaWduZWQpIHtcbiAgICAgIHJldHVybiB0cmFuc2FjdGlvbi5wYXJzZVNpZ25lZFRyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uKTtcbiAgICB9XG4gICAgcmV0dXJuIHRyYW5zYWN0aW9uLnBhcnNlVW5zaWduZWRUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbik7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgZ2V0V2FsbGV0SW5pdGlhbGl6YXRpb25CdWlsZGVyKCk6IHZvaWQge1xuICAgIHRocm93IG5ldyBNZXRob2ROb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gIH1cbn1cbiJdfQ==
@@ -1,19 +0,0 @@
1
- import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
2
- import { TransactionBuilder } from './transactionBuilder';
3
- import { BaseTransaction, BaseKey } from '@bitgo-beta/sdk-core';
4
- import { Transaction } from './transaction';
5
- export declare class TransferBuilder extends TransactionBuilder {
6
- constructor(_coinConfig: Readonly<CoinConfig>);
7
- /**
8
- * Initialize the transaction builder fields using the decoded transaction data
9
- *
10
- * @param {Transaction} tx the transaction data
11
- */
12
- initBuilder(tx: Transaction): void;
13
- /** @inheritdoc */
14
- protected buildImplementation(): Promise<Transaction>;
15
- protected buildIcpTransactionData(): void;
16
- /** @inheritdoc */
17
- protected signImplementation(key: BaseKey): BaseTransaction;
18
- }
19
- //# sourceMappingURL=transferBuilder.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"transferBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/transferBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAyB,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAEvF,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAa5C,qBAAa,eAAgB,SAAQ,kBAAkB;gBACzC,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C;;;;OAIG;IACH,WAAW,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IAIlC,kBAAkB;cACF,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;IAc3D,SAAS,CAAC,uBAAuB,IAAI,IAAI;IAsEzC,kBAAkB;IAClB,SAAS,CAAC,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,eAAe;CAK5D"}
@@ -1,109 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.TransferBuilder = void 0;
7
- const transactionBuilder_1 = require("./transactionBuilder");
8
- const sdk_core_1 = require("@bitgo-beta/sdk-core");
9
- const utils_1 = __importDefault(require("./utils"));
10
- const unsignedTransactionBuilder_1 = require("./unsignedTransactionBuilder");
11
- const iface_1 = require("./iface");
12
- const assert_1 = __importDefault(require("assert"));
13
- class TransferBuilder extends transactionBuilder_1.TransactionBuilder {
14
- constructor(_coinConfig) {
15
- super(_coinConfig);
16
- }
17
- /**
18
- * Initialize the transaction builder fields using the decoded transaction data
19
- *
20
- * @param {Transaction} tx the transaction data
21
- */
22
- initBuilder(tx) {
23
- super.initBuilder(tx);
24
- }
25
- /** @inheritdoc */
26
- async buildImplementation() {
27
- // The ICP chain sets a memo field with a default value of 0. This ensures compatibility
28
- // by setting the memo to 0 if it's not explicitly provided.
29
- if (!this._memo || this._memo === undefined || this._memo === null) {
30
- this._memo = iface_1.DEFAULT_MEMO;
31
- }
32
- this.validateTransaction(this._transaction);
33
- this.buildIcpTransactionData();
34
- const unsignedTransactionBuilder = new unsignedTransactionBuilder_1.UnsignedTransactionBuilder(this._transaction.icpTransaction);
35
- const payloadsData = await unsignedTransactionBuilder.getUnsignedTransaction();
36
- this._transaction.payloadsData = payloadsData;
37
- return this._transaction;
38
- }
39
- buildIcpTransactionData() {
40
- (0, assert_1.default)(this._sender, new sdk_core_1.BuildTransactionError('sender is required before building'));
41
- (0, assert_1.default)(this._publicKey, new sdk_core_1.BuildTransactionError('sender public key is required before building'));
42
- (0, assert_1.default)(this._amount, new sdk_core_1.BuildTransactionError('amount is required before building'));
43
- (0, assert_1.default)(this._receiverId, new sdk_core_1.BuildTransactionError('receiver is required before building'));
44
- const publicKey = {
45
- hex_bytes: this._publicKey,
46
- curve_type: iface_1.CurveType.SECP256K1,
47
- };
48
- const senderOperation = {
49
- type: iface_1.OperationType.TRANSACTION,
50
- account: { address: this._sender },
51
- amount: {
52
- value: `-${this._amount}`,
53
- currency: {
54
- symbol: this._coinConfig.family,
55
- decimals: this._coinConfig.decimalPlaces,
56
- },
57
- },
58
- };
59
- const receiverOperation = {
60
- type: iface_1.OperationType.TRANSACTION,
61
- account: { address: this._receiverId },
62
- amount: {
63
- value: this._amount,
64
- currency: {
65
- symbol: this._coinConfig.family,
66
- decimals: this._coinConfig.decimalPlaces,
67
- },
68
- },
69
- };
70
- const feeOperation = {
71
- type: iface_1.OperationType.FEE,
72
- account: { address: this._sender },
73
- amount: {
74
- value: utils_1.default.feeData(),
75
- currency: {
76
- symbol: this._coinConfig.family,
77
- decimals: this._coinConfig.decimalPlaces,
78
- },
79
- },
80
- };
81
- const createdTimestamp = this._transaction.createdTimestamp;
82
- const { metaData, ingressEndTime } = utils_1.default.getMetaData(this._memo, createdTimestamp, this._ingressEnd);
83
- const icpTransaction = {
84
- public_keys: [publicKey],
85
- operations: [senderOperation, receiverOperation, feeOperation],
86
- metadata: metaData,
87
- };
88
- const icpTransactionData = {
89
- senderAddress: this._sender,
90
- receiverAddress: this._receiverId,
91
- amount: this._amount,
92
- fee: utils_1.default.feeData(),
93
- senderPublicKeyHex: this._publicKey,
94
- transactionType: iface_1.OperationType.TRANSACTION,
95
- expiryTime: ingressEndTime,
96
- memo: this._memo,
97
- };
98
- this._transaction.icpTransactionData = icpTransactionData;
99
- this._transaction.icpTransaction = icpTransaction;
100
- }
101
- /** @inheritdoc */
102
- signImplementation(key) {
103
- const signatures = utils_1.default.getSignatures(this._transaction.payloadsData, this._publicKey, key.key);
104
- this._transaction.addSignature(signatures);
105
- return this._transaction;
106
- }
107
- }
108
- exports.TransferBuilder = TransferBuilder;
109
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXJCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90cmFuc2ZlckJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0EsNkRBQTBEO0FBQzFELG1EQUF1RjtBQUN2RixvREFBNEI7QUFFNUIsNkVBQTBFO0FBQzFFLG1DQVFpQjtBQUNqQixvREFBNEI7QUFFNUIsTUFBYSxlQUFnQixTQUFRLHVDQUFrQjtJQUNyRCxZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFdBQVcsQ0FBQyxFQUFlO1FBQ3pCLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUVELGtCQUFrQjtJQUNSLEtBQUssQ0FBQyxtQkFBbUI7UUFDakMsd0ZBQXdGO1FBQ3hGLDREQUE0RDtRQUM1RCxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLFNBQVMsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLElBQUksRUFBRSxDQUFDO1lBQ25FLElBQUksQ0FBQyxLQUFLLEdBQUcsb0JBQVksQ0FBQztRQUM1QixDQUFDO1FBQ0QsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUM1QyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztRQUMvQixNQUFNLDBCQUEwQixHQUFHLElBQUksdURBQTBCLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNwRyxNQUFNLFlBQVksR0FBRyxNQUFNLDBCQUEwQixDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDL0UsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO1FBQzlDLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0lB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QUFVLEVBQUUsY0FBYztZQUMxQixJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUs7U0FDakIsQ0FBQztRQUVGLElBQUksQ0FBQyxZQUFZLENBQUMsa0JBQWtCLEdBQUcsa0JBQWtCLENBQUM7UUFDMUQsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDO0lBQ3BELENBQUM7SUFFRCxrQkFBa0I7SUFDUixrQkFBa0IsQ0FBQyxHQUFZO1FBQ3ZDLE1BQU0sVUFBVSxHQUFHLGVBQUssQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDakcsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDM0MsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7Q0FDRjtBQXpHRCwwQ0F5R0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQgeyBCYXNlVHJhbnNhY3Rpb24sIEJ1aWxkVHJhbnNhY3Rpb25FcnJvciwgQmFzZUtleSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB1dGlscyBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5pbXBvcnQgeyBVbnNpZ25lZFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vdW5zaWduZWRUcmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHtcbiAgQ3VydmVUeXBlLFxuICBJY3BPcGVyYXRpb24sXG4gIEljcFB1YmxpY0tleSxcbiAgSWNwVHJhbnNhY3Rpb24sXG4gIEljcFRyYW5zYWN0aW9uRGF0YSxcbiAgT3BlcmF0aW9uVHlwZSxcbiAgREVGQVVMVF9NRU1PLFxufSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcblxuZXhwb3J0IGNsYXNzIFRyYW5zZmVyQnVpbGRlciBleHRlbmRzIFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplIHRoZSB0cmFuc2FjdGlvbiBidWlsZGVyIGZpZWxkcyB1c2luZyB0aGUgZGVjb2RlZCB0cmFuc2FjdGlvbiBkYXRhXG4gICAqXG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb259IHR4IHRoZSB0cmFuc2FjdGlvbiBkYXRhXG4gICAqL1xuICBpbml0QnVpbGRlcih0eDogVHJhbnNhY3Rpb24pOiB2b2lkIHtcbiAgICBzdXBlci5pbml0QnVpbGRlcih0eCk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGJ1aWxkSW1wbGVtZW50YXRpb24oKTogUHJvbWlzZTxUcmFuc2FjdGlvbj4ge1xuICAgIC8vIFRoZSBJQ1AgY2hhaW4gc2V0cyBhIG1lbW8gZmllbGQgd2l0aCBhIGRlZmF1bHQgdmFsdWUgb2YgMC4gVGhpcyBlbnN1cmVzIGNvbXBhdGliaWxpdHlcbiAgICAvLyBieSBzZXR0aW5nIHRoZSBtZW1vIHRvIDAgaWYgaXQncyBub3QgZXhwbGljaXRseSBwcm92aWRlZC5cbiAgICBpZiAoIXRoaXMuX21lbW8gfHwgdGhpcy5fbWVtbyA9PT0gdW5kZWZpbmVkIHx8IHRoaXMuX21lbW8gPT09IG51bGwpIHtcbiAgICAgIHRoaXMuX21lbW8gPSBERUZBVUxUX01FTU87XG4gICAgfVxuICAgIHRoaXMudmFsaWRhdGVUcmFuc2FjdGlvbih0aGlzLl90cmFuc2FjdGlvbik7XG4gICAgdGhpcy5idWlsZEljcFRyYW5zYWN0aW9uRGF0YSgpO1xuICAgIGNvbnN0IHVuc2lnbmVkVHJhbnNhY3Rpb25CdWlsZGVyID0gbmV3IFVuc2lnbmVkVHJhbnNhY3Rpb25CdWlsZGVyKHRoaXMuX3RyYW5zYWN0aW9uLmljcFRyYW5zYWN0aW9uKTtcbiAgICBjb25zdCBwYXlsb2Fkc0RhdGEgPSBhd2FpdCB1bnNpZ25lZFRyYW5zYWN0aW9uQnVpbGRlci5nZXRVbnNpZ25lZFRyYW5zYWN0aW9uKCk7XG4gICAgdGhpcy5fdHJhbnNhY3Rpb24ucGF5bG9hZHNEYXRhID0gcGF5bG9hZHNEYXRhO1xuICAgIHJldHVybiB0aGlzLl90cmFuc2FjdGlvbjtcbiAgfVxuXG4gIHByb3RlY3RlZCBidWlsZEljcFRyYW5zYWN0aW9uRGF0YSgpOiB2b2lkIHtcbiAgICBhc3NlcnQodGhpcy5fc2VuZGVyLCBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdzZW5kZXIgaXMgcmVxdWlyZWQgYmVmb3JlIGJ1aWxkaW5nJykpO1xuICAgIGFzc2VydCh0aGlzLl9wdWJsaWNLZXksIG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ3NlbmRlciBwdWJsaWMga2V5IGlzIHJlcXVpcmVkIGJlZm9yZSBidWlsZGluZycpKTtcbiAgICBhc3NlcnQodGhpcy5fYW1vdW50LCBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdhbW91bnQgaXMgcmVxdWlyZWQgYmVmb3JlIGJ1aWxkaW5nJykpO1xuICAgIGFzc2VydCh0aGlzLl9yZWNlaXZlcklkLCBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdyZWNlaXZlciBpcyByZXF1aXJlZCBiZWZvcmUgYnVpbGRpbmcnKSk7XG5cbiAgICBjb25zdCBwdWJsaWNLZXk6IEljcFB1YmxpY0tleSA9IHtcbiAgICAgIGhleF9ieXRlczogdGhpcy5fcHVibGljS2V5LFxuICAgICAgY3VydmVfdHlwZTogQ3VydmVUeXBlLlNFQ1AyNTZLMSxcbiAgICB9O1xuXG4gICAgY29uc3Qgc2VuZGVyT3BlcmF0aW9uOiBJY3BPcGVyYXRpb24gPSB7XG4gICAgICB0eXBlOiBPcGVyYXRpb25UeXBlLlRSQU5TQUNUSU9OLFxuICAgICAgYWNjb3VudDogeyBhZGRyZXNzOiB0aGlzLl9zZW5kZXIgfSxcbiAgICAgIGFtb3VudDoge1xuICAgICAgICB2YWx1ZTogYC0ke3RoaXMuX2Ftb3VudH1gLFxuICAgICAgICBjdXJyZW5jeToge1xuICAgICAgICAgIHN5bWJvbDogdGhpcy5fY29pbkNvbmZpZy5mYW1pbHksXG4gICAgICAgICAgZGVjaW1hbHM6IHRoaXMuX2NvaW5Db25maWcuZGVjaW1hbFBsYWNlcyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIGNvbnN0IHJlY2VpdmVyT3BlcmF0aW9uOiBJY3BPcGVyYXRpb24gPSB7XG4gICAgICB0eXBlOiBPcGVyYXRpb25UeXBlLlRSQU5TQUNUSU9OLFxuICAgICAgYWNjb3VudDogeyBhZGRyZXNzOiB0aGlzLl9yZWNlaXZlcklkIH0sXG4gICAgICBhbW91bnQ6IHtcbiAgICAgICAgdmFsdWU6IHRoaXMuX2Ftb3VudCxcbiAgICAgICAgY3VycmVuY3k6IHtcbiAgICAgICAgICBzeW1ib2w6IHRoaXMuX2NvaW5Db25maWcuZmFtaWx5LFxuICAgICAgICAgIGRlY2ltYWxzOiB0aGlzLl9jb2luQ29uZmlnLmRlY2ltYWxQbGFjZXMsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG5cbiAgICBjb25zdCBmZWVPcGVyYXRpb246IEljcE9wZXJhdGlvbiA9IHtcbiAgICAgIHR5cGU6IE9wZXJhdGlvblR5cGUuRkVFLFxuICAgICAgYWNjb3VudDogeyBhZGRyZXNzOiB0aGlzLl9zZW5kZXIgfSxcbiAgICAgIGFtb3VudDoge1xuICAgICAgICB2YWx1ZTogdXRpbHMuZmVlRGF0YSgpLFxuICAgICAgICBjdXJyZW5jeToge1xuICAgICAgICAgIHN5bWJvbDogdGhpcy5fY29pbkNvbmZpZy5mYW1pbHksXG4gICAgICAgICAgZGVjaW1hbHM6IHRoaXMuX2NvaW5Db25maWcuZGVjaW1hbFBsYWNlcyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIGNvbnN0IGNyZWF0ZWRUaW1lc3RhbXAgPSB0aGlzLl90cmFuc2FjdGlvbi5jcmVhdGVkVGltZXN0YW1wO1xuICAgIGNvbnN0IHsgbWV0YURhdGEsIGluZ3Jlc3NFbmRUaW1lIH0gPSB1dGlscy5nZXRNZXRhRGF0YSh0aGlzLl9tZW1vLCBjcmVhdGVkVGltZXN0YW1wLCB0aGlzLl9pbmdyZXNzRW5kKTtcblxuICAgIGNvbnN0IGljcFRyYW5zYWN0aW9uOiBJY3BUcmFuc2FjdGlvbiA9IHtcbiAgICAgIHB1YmxpY19rZXlzOiBbcHVibGljS2V5XSxcbiAgICAgIG9wZXJhdGlvbnM6IFtzZW5kZXJPcGVyYXRpb24sIHJlY2VpdmVyT3BlcmF0aW9uLCBmZWVPcGVyYXRpb25dLFxuICAgICAgbWV0YWRhdGE6IG1ldGFEYXRhLFxuICAgIH07XG4gICAgY29uc3QgaWNwVHJhbnNhY3Rpb25EYXRhOiBJY3BUcmFuc2FjdGlvbkRhdGEgPSB7XG4gICAgICBzZW5kZXJBZGRyZXNzOiB0aGlzLl9zZW5kZXIsXG4gICAgICByZWNlaXZlckFkZHJlc3M6IHRoaXMuX3JlY2VpdmVySWQsXG4gICAgICBhbW91bnQ6IHRoaXMuX2Ftb3VudCxcbiAgICAgIGZlZTogdXRpbHMuZmVlRGF0YSgpLFxuICAgICAgc2VuZGVyUHVibGljS2V5SGV4OiB0aGlzLl9wdWJsaWNLZXksXG4gICAgICB0cmFuc2FjdGlvblR5cGU6IE9wZXJhdGlvblR5cGUuVFJBTlNBQ1RJT04sXG4gICAgICBleHBpcnlUaW1lOiBpbmdyZXNzRW5kVGltZSxcbiAgICAgIG1lbW86IHRoaXMuX21lbW8sXG4gICAgfTtcblxuICAgIHRoaXMuX3RyYW5zYWN0aW9uLmljcFRyYW5zYWN0aW9uRGF0YSA9IGljcFRyYW5zYWN0aW9uRGF0YTtcbiAgICB0aGlzLl90cmFuc2FjdGlvbi5pY3BUcmFuc2FjdGlvbiA9IGljcFRyYW5zYWN0aW9uO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBzaWduSW1wbGVtZW50YXRpb24oa2V5OiBCYXNlS2V5KTogQmFzZVRyYW5zYWN0aW9uIHtcbiAgICBjb25zdCBzaWduYXR1cmVzID0gdXRpbHMuZ2V0U2lnbmF0dXJlcyh0aGlzLl90cmFuc2FjdGlvbi5wYXlsb2Fkc0RhdGEsIHRoaXMuX3B1YmxpY0tleSwga2V5LmtleSk7XG4gICAgdGhpcy5fdHJhbnNhY3Rpb24uYWRkU2lnbmF0dXJlKHNpZ25hdHVyZXMpO1xuICAgIHJldHVybiB0aGlzLl90cmFuc2FjdGlvbjtcbiAgfVxufVxuIl19
@@ -1,11 +0,0 @@
1
- import { IcpTransaction, SendArgs, HttpCanisterUpdate, SigningPayload, PayloadsData } from './iface';
2
- export declare class UnsignedTransactionBuilder {
3
- private _icpTransactionPayload;
4
- constructor(icpTransactionPayload: IcpTransaction);
5
- getUnsignedTransaction(): Promise<PayloadsData>;
6
- getPayloads(payloads: SigningPayload[], ingressExpiries: bigint[], accountAddress: string, update: HttpCanisterUpdate): SigningPayload[];
7
- getIngressExpiries(ingressStartTime: number | BigInt, ingressEndTime: number | BigInt, interval: number): bigint[];
8
- getSendArgs(memo: number | BigInt, created_at_time: number, amount: string, fee: string, receiver: string): SendArgs;
9
- getUpdate(sendArgs: SendArgs, publicKeyHex: string): Promise<HttpCanisterUpdate>;
10
- }
11
- //# sourceMappingURL=unsignedTransactionBuilder.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"unsignedTransactionBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/unsignedTransactionBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,QAAQ,EACR,kBAAkB,EAClB,cAAc,EACd,YAAY,EAOb,MAAM,SAAS,CAAC;AAGjB,qBAAa,0BAA0B;IACrC,OAAO,CAAC,sBAAsB,CAAiB;gBACnC,qBAAqB,EAAE,cAAc;IAI3C,sBAAsB,IAAI,OAAO,CAAC,YAAY,CAAC;IA+BrD,WAAW,CACT,QAAQ,EAAE,cAAc,EAAE,EAC1B,eAAe,EAAE,MAAM,EAAE,EACzB,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,kBAAkB,GACzB,cAAc,EAAE;IAuBnB,kBAAkB,CAAC,gBAAgB,EAAE,MAAM,GAAG,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE;IAWlH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ;IAY9G,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;CAcvF"}
@@ -1,87 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.UnsignedTransactionBuilder = void 0;
7
- const iface_1 = require("./iface");
8
- const utils_1 = __importDefault(require("./utils"));
9
- class UnsignedTransactionBuilder {
10
- constructor(icpTransactionPayload) {
11
- this._icpTransactionPayload = icpTransactionPayload;
12
- }
13
- async getUnsignedTransaction() {
14
- // interval value can be altered here to change the count of ingressExpiries which eventually changes the number of interval value can be altered here to change the count of ingressExpiries which eventually changes the number of payloads that needs to be signed
15
- const interval = Number(this._icpTransactionPayload.metadata.ingress_end) -
16
- Number(this._icpTransactionPayload.metadata.ingress_start); // 300s in nanoseconds
17
- const ingressExpiries = this.getIngressExpiries(this._icpTransactionPayload.metadata.ingress_start, this._icpTransactionPayload.metadata.ingress_end, interval);
18
- const sendArgs = this.getSendArgs(this._icpTransactionPayload.metadata.memo, this._icpTransactionPayload.metadata.created_at_time, this._icpTransactionPayload.operations[1].amount.value, this._icpTransactionPayload.operations[2].amount.value, this._icpTransactionPayload.operations[1].account.address);
19
- const update = await this.getUpdate(sendArgs, this._icpTransactionPayload.public_keys[0].hex_bytes);
20
- const updates = [];
21
- updates.push([iface_1.OperationType.TRANSACTION, update]);
22
- const txn = { updates: updates, ingress_expiries: ingressExpiries };
23
- const unsignedTransaction = utils_1.default.cborEncode(txn);
24
- const payloads = [];
25
- this.getPayloads(payloads, ingressExpiries, this._icpTransactionPayload.operations[0].account.address, update);
26
- const payloadsData = {
27
- payloads: payloads,
28
- unsigned_transaction: unsignedTransaction,
29
- };
30
- return payloadsData;
31
- }
32
- getPayloads(payloads, ingressExpiries, accountAddress, update) {
33
- if (ingressExpiries.length != 1) {
34
- throw new Error('ingress expiry can have only one entry');
35
- }
36
- const ingressExpiry = ingressExpiries[0];
37
- const clonedUpdate = {
38
- canister_id: Buffer.from(update.canister_id),
39
- method_name: update.method_name,
40
- arg: update.arg,
41
- sender: update.sender,
42
- ingress_expiry: ingressExpiry,
43
- };
44
- const representationIndependentHash = utils_1.default.HttpCanisterUpdateRepresentationIndependentHash(clonedUpdate);
45
- const transactionPayload = {
46
- hex_bytes: utils_1.default.blobToHex(utils_1.default.makeSignatureData(representationIndependentHash)),
47
- account_identifier: { address: accountAddress },
48
- signature_type: iface_1.SignatureType.ECDSA,
49
- };
50
- payloads.push(transactionPayload);
51
- return payloads;
52
- }
53
- getIngressExpiries(ingressStartTime, ingressEndTime, interval) {
54
- const ingressExpiries = [];
55
- for (let now = Number(ingressStartTime); now < Number(ingressEndTime); now += interval) {
56
- const ingressExpiry = BigInt(now + (iface_1.MAX_INGRESS_TTL - iface_1.PERMITTED_DRIFT));
57
- ingressExpiries.push(ingressExpiry);
58
- }
59
- return ingressExpiries;
60
- }
61
- getSendArgs(memo, created_at_time, amount, fee, receiver) {
62
- const sendArgs = {
63
- payment: { receiverGets: { e8s: Number(amount) } },
64
- maxFee: { e8s: -Number(fee) },
65
- to: { hash: Buffer.from(receiver, 'hex') },
66
- createdAtTime: { timestampNanos: Number(created_at_time) },
67
- memo: { memo: memo },
68
- };
69
- return sendArgs;
70
- }
71
- async getUpdate(sendArgs, publicKeyHex) {
72
- const principalId = utils_1.default.getPrincipalIdFromPublicKey(publicKeyHex).toUint8Array();
73
- const senderBlob = Buffer.from(principalId);
74
- const canisterIdBuffer = Buffer.from(iface_1.LEDGER_CANISTER_ID);
75
- const args = await utils_1.default.toArg(sendArgs);
76
- const update = {
77
- canister_id: canisterIdBuffer,
78
- method_name: iface_1.MethodName.SEND_PB,
79
- arg: args,
80
- sender: senderBlob,
81
- ingress_expiry: 0n,
82
- };
83
- return update;
84
- }
85
- }
86
- exports.UnsignedTransactionBuilder = UnsignedTransactionBuilder;
87
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5zaWduZWRUcmFuc2FjdGlvbkJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3Vuc2lnbmVkVHJhbnNhY3Rpb25CdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG1DQVlpQjtBQUNqQixvREFBNEI7QUFFNUIsTUFBYSwwQkFBMEI7SUFFckMsWUFBWSxxQkFBcUM7UUFDL0MsSUFBSSxDQUFDLHNCQUFzQixHQUFHLHFCQUFxQixDQUFDO0lBQ3RELENBQUM7SUFFRCxLQUFLLENBQUMsc0JBQXNCO1FBQzFCLHFRQUFxUTtRQUNyUSxNQUFNLFFBQVEsR0FDWixNQUFNLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUM7WUFDeEQsTUFBTSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxzQkFBc0I7UUFDcEYsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUM3QyxJQUFJLENBQUMsc0JBQXNCLENBQUMsUUFBUSxDQUFDLGFBQWMsRUFDbkQsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxXQUFZLEVBQ2pELFFBQVEsQ0FDVCxDQUFDO1FBQ0YsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FDL0IsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQ3pDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsZUFBZSxFQUNwRCxJQUFJLENBQUMsc0JBQXNCLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQ3RELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssRUFDdEQsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFVBQVUsQ0FBQyxDQUFDLENB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bixcbiAgU2VuZEFyZ3MsXG4gIEh0dHBDYW5pc3RlclVwZGF0ZSxcbiAgU2lnbmluZ1BheWxvYWQsXG4gIFBheWxvYWRzRGF0YSxcbiAgU2lnbmF0dXJlVHlwZSxcbiAgT3BlcmF0aW9uVHlwZSxcbiAgTWV0aG9kTmFtZSxcbiAgTUFYX0lOR1JFU1NfVFRMLFxuICBQRVJNSVRURURfRFJJRlQsXG4gIExFREdFUl9DQU5JU1RFUl9JRCxcbn0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgdXRpbHMgZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCBjbGFzcyBVbnNpZ25lZFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIHByaXZhdGUgX2ljcFRyYW5zYWN0aW9uUGF5bG9hZDogSWNwVHJhbnNhY3Rpb247XG4gIGNvbnN0cnVjdG9yKGljcFRyYW5zYWN0aW9uUGF5bG9hZDogSWNwVHJhbnNhY3Rpb24pIHtcbiAgICB0aGlzLl9pY3BUcmFuc2FjdGlvblBheWxvYWQgPSBpY3BUcmFuc2FjdGlvblBheWxvYWQ7XG4gIH1cblxuICBhc3luYyBnZXRVbnNpZ25lZFRyYW5zYWN0aW9uKCk6IFByb21pc2U8UGF5bG9hZHNEYXRhPiB7XG4gICAgLy8gaW50ZXJ2YWwgdmFsdWUgY2FuIGJlIGFsdGVyZWQgaGVyZSB0byBjaGFuZ2UgdGhlIGNvdW50IG9mIGluZ3Jlc3NFeHBpcmllcyB3aGljaCBldmVudHVhbGx5IGNoYW5nZXMgdGhlIG51bWJlciBvZiBpbnRlcnZhbCB2YWx1ZSBjYW4gYmUgYWx0ZXJlZCBoZXJlIHRvIGNoYW5nZSB0aGUgY291bnQgb2YgaW5ncmVzc0V4cGlyaWVzIHdoaWNoIGV2ZW50dWFsbHkgY2hhbmdlcyB0aGUgbnVtYmVyIG9mIHBheWxvYWRzIHRoYXQgbmVlZHMgdG8gYmUgc2lnbmVkXG4gICAgY29uc3QgaW50ZXJ2YWwgPVxuICAgICAgTnVtYmVyKHRoaXMuX2ljcFRyYW5zYWN0aW9uUGF5bG9hZC5tZXRhZGF0YS5pbmdyZXNzX2VuZCkgLVxuICAgICAgTnVtYmVyKHRoaXMuX2ljcFRyYW5zYWN0aW9uUGF5bG9hZC5tZXRhZGF0YS5pbmdyZXNzX3N0YXJ0KTsgLy8gMzAwcyBpbiBuYW5vc2Vjb25kc1xuICAgIGNvbnN0IGluZ3Jlc3NFeHBpcmllcyA9IHRoaXMuZ2V0SW5ncmVzc0V4cGlyaWVzKFxuICAgICAgdGhpcy5faWNwVHJhbnNhY3Rpb25QYXlsb2FkLm1ldGFkYXRhLmluZ3Jlc3Nfc3RhcnQhLFxuICAgICAgdGhpcy5faWNwVHJhbnNhY3Rpb25QYXlsb2FkLm1ldGFkYXRhLmluZ3Jlc3NfZW5kISxcbiAgICAgIGludGVydmFsXG4gICAgKTtcbiAgICBjb25zdCBzZW5kQXJncyA9IHRoaXMuZ2V0U2VuZEFyZ3MoXG4gICAgICB0aGlzLl9pY3BUcmFuc2FjdGlvblBheWxvYWQubWV0YWRhdGEubWVtbyxcbiAgICAgIHRoaXMuX2ljcFRyYW5zYWN0aW9uUGF5bG9hZC5tZXRhZGF0YS5jcmVhdGVkX2F0X3RpbWUsXG4gICAgICB0aGlzLl9pY3BUcmFuc2FjdGlvblBheWxvYWQub3BlcmF0aW9uc1sxXS5hbW91bnQudmFsdWUsXG4gICAgICB0aGlzLl9pY3BUcmFuc2FjdGlvblBheWxvYWQub3BlcmF0aW9uc1syXS5hbW91bnQudmFsdWUsXG4gICAgICB0aGlzLl9pY3BUcmFuc2FjdGlvblBheWxvYWQub3BlcmF0aW9uc1sxXS5hY2NvdW50LmFkZHJlc3NcbiAgICApO1xuICAgIGNvbnN0IHVwZGF0ZSA9IGF3YWl0IHRoaXMuZ2V0VXBkYXRlKHNlbmRBcmdzLCB0aGlzLl9pY3BUcmFuc2FjdGlvblBheWxvYWQucHVibGljX2tleXNbMF0uaGV4X2J5dGVzKTtcbiAgICBjb25zdCB1cGRhdGVzOiBbc3RyaW5nLCBIdHRwQ2FuaXN0ZXJVcGRhdGVdW10gPSBbXTtcbiAgICB1cGRhdGVzLnB1c2goW09wZXJhdGlvblR5cGUuVFJBTlNBQ1RJT04sIHVwZGF0ZV0pO1xuICAgIGNvbnN0IHR4biA9IHsgdXBkYXRlczogdXBkYXRlcywgaW5ncmVzc19leHBpcmllczogaW5ncmVzc0V4cGlyaWVzIH07XG4gICAgY29uc3QgdW5zaWduZWRUcmFuc2FjdGlvbiA9IHV0aWxzLmNib3JFbmNvZGUodHhuKTtcbiAgICBjb25zdCBwYXlsb2FkczogU2lnbmluZ1BheWxvYWRbXSA9IFtdO1xuICAgIHRoaXMuZ2V0UGF5bG9hZHMocGF5bG9hZHMsIGluZ3Jlc3NFeHBpcmllcywgdGhpcy5faWNwVHJhbnNhY3Rpb25QYXlsb2FkLm9wZXJhdGlvbnNbMF0uYWNjb3VudC5hZGRyZXNzLCB1cGRhdGUpO1xuICAgIGNvbnN0IHBheWxvYWRzRGF0YSA9IHtcbiAgICAgIHBheWxvYWRzOiBwYXlsb2FkcyxcbiAgICAgIHVuc2lnbmVkX3RyYW5zYWN0aW9uOiB1bnNpZ25lZFRyYW5zYWN0aW9uLFxuICAgIH07XG4gICAgcmV0dXJuIHBheWxvYWRzRGF0YTtcbiAgfVxuXG4gIGdldFBheWxvYWRzKFxuICAgIHBheWxvYWRzOiBTaWduaW5nUGF5bG9hZFtdLFxuICAgIGluZ3Jlc3NFeHBpcmllczogYmlnaW50W10sXG4gICAgYWNjb3VudEFkZHJlc3M6IHN0cmluZyxcbiAgICB1cGRhdGU6IEh0dHBDYW5pc3RlclVwZGF0ZVxuICApOiBTaWduaW5nUGF5bG9hZFtdIHtcbiAgICBpZiAoaW5ncmVzc0V4cGlyaWVzLmxlbmd0aCAhPSAxKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2luZ3Jlc3MgZXhwaXJ5IGNhbiBoYXZlIG9ubHkgb25lIGVudHJ5Jyk7XG4gICAgfVxuICAgIGNvbnN0IGluZ3Jlc3NFeHBpcnkgPSBpbmdyZXNzRXhwaXJpZXNbMF07XG4gICAgY29uc3QgY2xvbmVkVXBkYXRlOiBIdHRwQ2FuaXN0ZXJVcGRhdGUgPSB7XG4gICAgICBjYW5pc3Rlcl9pZDogQnVmZmVyLmZyb20odXBkYXRlLmNhbmlzdGVyX2lkKSxcbiAgICAgIG1ldGhvZF9uYW1lOiB1cGRhdGUubWV0aG9kX25hbWUsXG4gICAgICBhcmc6IHVwZGF0ZS5hcmcsXG4gICAgICBzZW5kZXI6IHVwZGF0ZS5zZW5kZXIsXG4gICAgICBpbmdyZXNzX2V4cGlyeTogaW5ncmVzc0V4cGlyeSxcbiAgICB9O1xuXG4gICAgY29uc3QgcmVwcmVzZW50YXRpb25JbmRlcGVuZGVudEhhc2ggPSB1dGlscy5IdHRwQ2FuaXN0ZXJVcGRhdGVSZXByZXNlbnRhdGlvbkluZGVwZW5kZW50SGFzaChjbG9uZWRVcGRhdGUpO1xuICAgIGNvbnN0IHRyYW5zYWN0aW9uUGF5bG9hZDogU2lnbmluZ1BheWxvYWQgPSB7XG4gICAgICBoZXhfYnl0ZXM6IHV0aWxzLmJsb2JUb0hleCh1dGlscy5tYWtlU2lnbmF0dXJlRGF0YShyZXByZXNlbnRhdGlvbkluZGVwZW5kZW50SGFzaCkpLFxuICAgICAgYWNjb3VudF9pZGVudGlmaWVyOiB7IGFkZHJlc3M6IGFjY291bnRBZGRyZXNzIH0sXG4gICAgICBzaWduYXR1cmVfdHlwZTogU2lnbmF0dXJlVHlwZS5FQ0RTQSxcbiAgICB9O1xuICAgIHBheWxvYWRzLnB1c2godHJhbnNhY3Rpb25QYXlsb2FkKTtcbiAgICByZXR1cm4gcGF5bG9hZHM7XG4gIH1cblxuICBnZXRJbmdyZXNzRXhwaXJpZXMoaW5ncmVzc1N0YXJ0VGltZTogbnVtYmVyIHwgQmlnSW50LCBpbmdyZXNzRW5kVGltZTogbnVtYmVyIHwgQmlnSW50LCBpbnRlcnZhbDogbnVtYmVyKTogYmlnaW50W10ge1xuICAgIGNvbnN0IGluZ3Jlc3NFeHBpcmllczogYmlnaW50W10gPSBbXTtcblxuICAgIGZvciAobGV0IG5vdyA9IE51bWJlcihpbmdyZXNzU3RhcnRUaW1lKTsgbm93IDwgTnVtYmVyKGluZ3Jlc3NFbmRUaW1lKTsgbm93ICs9IGludGVydmFsKSB7XG4gICAgICBjb25zdCBpbmdyZXNzRXhwaXJ5ID0gQmlnSW50KG5vdyArIChNQVhfSU5HUkVTU19UVEwgLSBQRVJNSVRURURfRFJJRlQpKTtcbiAgICAgIGluZ3Jlc3NFeHBpcmllcy5wdXNoKGluZ3Jlc3NFeHBpcnkpO1xuICAgIH1cblxuICAgIHJldHVybiBpbmdyZXNzRXhwaXJpZXM7XG4gIH1cblxuICBnZXRTZW5kQXJncyhtZW1vOiBudW1iZXIgfCBCaWdJbnQsIGNyZWF0ZWRfYXRfdGltZTogbnVtYmVyLCBhbW91bnQ6IHN0cmluZywgZmVlOiBzdHJpbmcsIHJlY2VpdmVyOiBzdHJpbmcpOiBTZW5kQXJncyB7XG4gICAgY29uc3Qgc2VuZEFyZ3M6IFNlbmRBcmdzID0ge1xuICAgICAgcGF5bWVudDogeyByZWNlaXZlckdldHM6IHsgZThzOiBOdW1iZXIoYW1vdW50KSB9IH0sXG4gICAgICBtYXhGZWU6IHsgZThzOiAtTnVtYmVyKGZlZSkgfSxcbiAgICAgIHRvOiB7IGhhc2g6IEJ1ZmZlci5mcm9tKHJlY2VpdmVyLCAnaGV4JykgfSxcbiAgICAgIGNyZWF0ZWRBdFRpbWU6IHsgdGltZXN0YW1wTmFub3M6IE51bWJlcihjcmVhdGVkX2F0X3RpbWUpIH0sXG4gICAgICBtZW1vOiB7IG1lbW86IG1lbW8gfSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHNlbmRBcmdzO1xuICB9XG5cbiAgYXN5bmMgZ2V0VXBkYXRlKHNlbmRBcmdzOiBTZW5kQXJncywgcHVibGljS2V5SGV4OiBzdHJpbmcpOiBQcm9taXNlPEh0dHBDYW5pc3RlclVwZGF0ZT4ge1xuICAgIGNvbnN0IHByaW5jaXBhbElkID0gdXRpbHMuZ2V0UHJpbmNpcGFsSWRGcm9tUHVibGljS2V5KHB1YmxpY0tleUhleCkudG9VaW50OEFycmF5KCk7XG4gICAgY29uc3Qgc2VuZGVyQmxvYiA9IEJ1ZmZlci5mcm9tKHByaW5jaXBhbElkKTtcbiAgICBjb25zdCBjYW5pc3RlcklkQnVmZmVyID0gQnVmZmVyLmZyb20oTEVER0VSX0NBTklTVEVSX0lEKTtcbiAgICBjb25zdCBhcmdzID0gYXdhaXQgdXRpbHMudG9Bcmcoc2VuZEFyZ3MpO1xuICAgIGNvbnN0IHVwZGF0ZTogSHR0cENhbmlzdGVyVXBkYXRlID0ge1xuICAgICAgY2FuaXN0ZXJfaWQ6IGNhbmlzdGVySWRCdWZmZXIsXG4gICAgICBtZXRob2RfbmFtZTogTWV0aG9kTmFtZS5TRU5EX1BCLFxuICAgICAgYXJnOiBhcmdzLFxuICAgICAgc2VuZGVyOiBzZW5kZXJCbG9iLFxuICAgICAgaW5ncmVzc19leHBpcnk6IDBuLFxuICAgIH07XG4gICAgcmV0dXJuIHVwZGF0ZTtcbiAgfVxufVxuIl19