@bitgo-beta/sdk-coin-tao 1.0.1-alpha.12 → 1.0.1-alpha.14

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/CHANGELOG.md +10 -0
  2. package/dist/src/lib/errors.d.ts +8 -0
  3. package/dist/src/lib/errors.d.ts.map +1 -0
  4. package/dist/src/lib/errors.js +19 -0
  5. package/dist/src/lib/iface_utils.d.ts +59 -0
  6. package/dist/src/lib/iface_utils.d.ts.map +1 -0
  7. package/dist/src/lib/iface_utils.js +92 -0
  8. package/dist/src/lib/index.d.ts +2 -0
  9. package/dist/src/lib/index.d.ts.map +1 -1
  10. package/dist/src/lib/index.js +6 -2
  11. package/dist/src/lib/nativeTransferBuilder.d.ts +84 -0
  12. package/dist/src/lib/nativeTransferBuilder.d.ts.map +1 -0
  13. package/dist/src/lib/nativeTransferBuilder.js +219 -0
  14. package/dist/src/lib/singletonRegistry.d.ts +7 -0
  15. package/dist/src/lib/singletonRegistry.d.ts.map +1 -0
  16. package/dist/src/lib/singletonRegistry.js +20 -0
  17. package/dist/src/lib/transaction.d.ts +78 -3
  18. package/dist/src/lib/transaction.d.ts.map +1 -1
  19. package/dist/src/lib/transaction.js +599 -6
  20. package/dist/src/lib/transactionBuilder.d.ts +108 -20
  21. package/dist/src/lib/transactionBuilder.d.ts.map +1 -1
  22. package/dist/src/lib/transactionBuilder.js +305 -32
  23. package/dist/src/lib/transactionBuilderFactory.d.ts +8 -5
  24. package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
  25. package/dist/src/lib/transactionBuilderFactory.js +39 -8
  26. package/dist/src/lib/transferBuilder.d.ts +7 -4
  27. package/dist/src/lib/transferBuilder.d.ts.map +1 -1
  28. package/dist/src/lib/transferBuilder.js +3 -7
  29. package/dist/src/lib/txnSchema.d.ts +15 -0
  30. package/dist/src/lib/txnSchema.d.ts.map +1 -0
  31. package/dist/src/lib/txnSchema.js +117 -0
  32. package/dist/src/lib/utils.d.ts +11 -1
  33. package/dist/src/lib/utils.d.ts.map +1 -1
  34. package/dist/src/lib/utils.js +26 -1
  35. package/dist/src/resources/index.d.ts +3 -0
  36. package/dist/src/resources/index.d.ts.map +1 -0
  37. package/dist/src/resources/index.js +19 -0
  38. package/dist/src/resources/mainnet.d.ts +2 -0
  39. package/dist/src/resources/mainnet.d.ts.map +1 -0
  40. package/dist/src/resources/mainnet.js +5 -0
  41. package/dist/src/resources/westend.d.ts +2 -0
  42. package/dist/src/resources/westend.d.ts.map +1 -0
  43. package/dist/src/resources/westend.js +5 -0
  44. package/package.json +8 -7
package/CHANGELOG.md CHANGED
@@ -3,6 +3,16 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [1.1.0](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-tao@1.0.4...@bitgo/sdk-coin-tao@1.1.0) (2025-01-28)
7
+
8
+ ### Bug Fixes
9
+
10
+ - fix utils ([53b9621](https://github.com/BitGo/BitGoJS/commit/53b9621171fbed7a2514c7c6d12ba8c917780eba))
11
+
12
+ ### Features
13
+
14
+ - implement tao specific functions ([67e658e](https://github.com/BitGo/BitGoJS/commit/67e658e03cb3e47959d9bbb18285cbb8cd19943b))
15
+
6
16
  ## [1.0.4](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-tao@1.0.3...@bitgo/sdk-coin-tao@1.0.4) (2025-01-23)
7
17
 
8
18
  **Note:** Version bump only for package @bitgo/sdk-coin-tao
@@ -0,0 +1,8 @@
1
+ import { BuildTransactionError } from '@bitgo-beta/sdk-core';
2
+ export declare class AddressValidationError extends BuildTransactionError {
3
+ constructor(malformedAddress: string);
4
+ }
5
+ export declare class InvalidFeeError extends BuildTransactionError {
6
+ constructor(type?: string, expectedType?: string);
7
+ }
8
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/lib/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,qBAAa,sBAAuB,SAAQ,qBAAqB;gBACnD,gBAAgB,EAAE,MAAM;CAIrC;AAED,qBAAa,eAAgB,SAAQ,qBAAqB;gBAC5C,IAAI,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM;CAIjD"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InvalidFeeError = exports.AddressValidationError = void 0;
4
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
5
+ class AddressValidationError extends sdk_core_1.BuildTransactionError {
6
+ constructor(malformedAddress) {
7
+ super(`The address '${malformedAddress}' is not a well-formed dot address`);
8
+ this.name = AddressValidationError.name;
9
+ }
10
+ }
11
+ exports.AddressValidationError = AddressValidationError;
12
+ class InvalidFeeError extends sdk_core_1.BuildTransactionError {
13
+ constructor(type, expectedType) {
14
+ super(`The specified type: "${type}" is not valid. Please provide the type: "${expectedType}"`);
15
+ this.name = InvalidFeeError.name;
16
+ }
17
+ }
18
+ exports.InvalidFeeError = InvalidFeeError;
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9lcnJvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbURBQTZEO0FBRTdELE1BQWEsc0JBQXVCLFNBQVEsZ0NBQXFCO0lBQy9ELFlBQVksZ0JBQXdCO1FBQ2xDLEtBQUssQ0FBQyxnQkFBZ0IsZ0JBQWdCLG9DQUFvQyxDQUFDLENBQUM7UUFDNUUsSUFBSSxDQUFDLElBQUksR0FBRyxzQkFBc0IsQ0FBQyxJQUFJLENBQUM7SUFDMUMsQ0FBQztDQUNGO0FBTEQsd0RBS0M7QUFFRCxNQUFhLGVBQWdCLFNBQVEsZ0NBQXFCO0lBQ3hELFlBQVksSUFBYSxFQUFFLFlBQXFCO1FBQzlDLEtBQUssQ0FBQyx3QkFBd0IsSUFBSSw2Q0FBNkMsWUFBWSxHQUFHLENBQUMsQ0FBQztRQUNoRyxJQUFJLENBQUMsSUFBSSxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUM7SUFDbkMsQ0FBQztDQUNGO0FBTEQsMENBS0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5cbmV4cG9ydCBjbGFzcyBBZGRyZXNzVmFsaWRhdGlvbkVycm9yIGV4dGVuZHMgQnVpbGRUcmFuc2FjdGlvbkVycm9yIHtcbiAgY29uc3RydWN0b3IobWFsZm9ybWVkQWRkcmVzczogc3RyaW5nKSB7XG4gICAgc3VwZXIoYFRoZSBhZGRyZXNzICcke21hbGZvcm1lZEFkZHJlc3N9JyBpcyBub3QgYSB3ZWxsLWZvcm1lZCBkb3QgYWRkcmVzc2ApO1xuICAgIHRoaXMubmFtZSA9IEFkZHJlc3NWYWxpZGF0aW9uRXJyb3IubmFtZTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgSW52YWxpZEZlZUVycm9yIGV4dGVuZHMgQnVpbGRUcmFuc2FjdGlvbkVycm9yIHtcbiAgY29uc3RydWN0b3IodHlwZT86IHN0cmluZywgZXhwZWN0ZWRUeXBlPzogc3RyaW5nKSB7XG4gICAgc3VwZXIoYFRoZSBzcGVjaWZpZWQgdHlwZTogXCIke3R5cGV9XCIgaXMgbm90IHZhbGlkLiBQbGVhc2UgcHJvdmlkZSB0aGUgdHlwZTogXCIke2V4cGVjdGVkVHlwZX1cImApO1xuICAgIHRoaXMubmFtZSA9IEludmFsaWRGZWVFcnJvci5uYW1lO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,59 @@
1
+ import { AccountId, AddProxyArgs, AddProxyBatchCallArgs, StakeBatchCallPayee, StakeBatchCallPayeeAccount, StakeBatchCallPayeeController, StakeBatchCallPayeeStaked, StakeBatchCallPayeeStash, ProxyArgs } from './iface';
2
+ /**
3
+ * Returns true if value is of type AccountId, false otherwise.
4
+ *
5
+ * @param value The object to test.
6
+ *
7
+ * @return true if value is of type AccountId, false otherwise.
8
+ */
9
+ export declare function isAccountId(value: string | AccountId): value is AccountId;
10
+ /**
11
+ * Extracts the proxy address being added from an add proxy batch call or an add proxy call.
12
+
13
+ * @param call A batched add proxy call or an add proxy call from which to extract the proxy
14
+ * address.
15
+ *
16
+ * @return the proxy address being added from an add proxy batch call or an add proxy call.
17
+ */
18
+ export declare function getDelegateAddress(call: AddProxyBatchCallArgs | AddProxyArgs): string;
19
+ /**
20
+ * Returns true if value is of type StakeBatchCallPayeeStaked, false otherwise.
21
+ *
22
+ * @param value The object to test.
23
+ *
24
+ * @return true if value is of type StakeBatchCallPayeeStaked, false otherwise.
25
+ */
26
+ export declare function isStakeBatchCallPayeeStaked(value: StakeBatchCallPayee): value is StakeBatchCallPayeeStaked;
27
+ /**
28
+ * Returns true if value is of type StakeBatchCallPayeeStash, false otherwise.
29
+ *
30
+ * @param value The object to test.
31
+ *
32
+ * @return true if value is of type StakeBatchCallPayeeStash, false otherwise.
33
+ */
34
+ export declare function isStakeBatchCallPayeeStash(value: StakeBatchCallPayee): value is StakeBatchCallPayeeStash;
35
+ /**
36
+ * Returns true if value is of type StakeBatchCallPayeeController, false otherwise.
37
+ *
38
+ * @param value The object to test.
39
+ *
40
+ * @return true if value is of type StakeBatchCallPayeeController, false otherwise.
41
+ */
42
+ export declare function isStakeBatchCallPayeeController(value: StakeBatchCallPayee): value is StakeBatchCallPayeeController;
43
+ /**
44
+ * Returns true if value is of type StakeBatchCallPayeeAccount, false otherwise.
45
+ *
46
+ * @param value The object to test.
47
+ *
48
+ * @return true if value is of type StakeBatchCallPayeeAccount, false otherwise.
49
+ */
50
+ export declare function isStakeBatchCallPayeeAccount(value: StakeBatchCallPayee): value is StakeBatchCallPayeeAccount;
51
+ /**
52
+ * Extracts the proxy address being added from ProxyArgs.
53
+
54
+ * @param args the ProxyArgs object from which to extract the proxy address.
55
+ *
56
+ * @return the proxy address being added.
57
+ */
58
+ export declare function getAddress(args: ProxyArgs): string;
59
+ //# sourceMappingURL=iface_utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iface_utils.d.ts","sourceRoot":"","sources":["../../../src/lib/iface_utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,YAAY,EACZ,qBAAqB,EACrB,mBAAmB,EACnB,0BAA0B,EAC1B,6BAA6B,EAC7B,yBAAyB,EACzB,wBAAwB,EACxB,SAAS,EACV,MAAM,SAAS,CAAC;AAEjB;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,KAAK,IAAI,SAAS,CAEzE;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,qBAAqB,GAAG,YAAY,GAAG,MAAM,CAMrF;AAED;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,mBAAmB,GAAG,KAAK,IAAI,yBAAyB,CAE1G;AAED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,mBAAmB,GAAG,KAAK,IAAI,wBAAwB,CAExG;AAED;;;;;;GAMG;AACH,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,mBAAmB,GAAG,KAAK,IAAI,6BAA6B,CAElH;AAED;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,mBAAmB,GAAG,KAAK,IAAI,0BAA0B,CAK5G;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CAMlD"}
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isAccountId = isAccountId;
4
+ exports.getDelegateAddress = getDelegateAddress;
5
+ exports.isStakeBatchCallPayeeStaked = isStakeBatchCallPayeeStaked;
6
+ exports.isStakeBatchCallPayeeStash = isStakeBatchCallPayeeStash;
7
+ exports.isStakeBatchCallPayeeController = isStakeBatchCallPayeeController;
8
+ exports.isStakeBatchCallPayeeAccount = isStakeBatchCallPayeeAccount;
9
+ exports.getAddress = getAddress;
10
+ /**
11
+ * Returns true if value is of type AccountId, false otherwise.
12
+ *
13
+ * @param value The object to test.
14
+ *
15
+ * @return true if value is of type AccountId, false otherwise.
16
+ */
17
+ function isAccountId(value) {
18
+ return value.hasOwnProperty('id');
19
+ }
20
+ /**
21
+ * Extracts the proxy address being added from an add proxy batch call or an add proxy call.
22
+
23
+ * @param call A batched add proxy call or an add proxy call from which to extract the proxy
24
+ * address.
25
+ *
26
+ * @return the proxy address being added from an add proxy batch call or an add proxy call.
27
+ */
28
+ function getDelegateAddress(call) {
29
+ if (isAccountId(call.delegate)) {
30
+ return call.delegate.id;
31
+ }
32
+ else {
33
+ return call.delegate;
34
+ }
35
+ }
36
+ /**
37
+ * Returns true if value is of type StakeBatchCallPayeeStaked, false otherwise.
38
+ *
39
+ * @param value The object to test.
40
+ *
41
+ * @return true if value is of type StakeBatchCallPayeeStaked, false otherwise.
42
+ */
43
+ function isStakeBatchCallPayeeStaked(value) {
44
+ return value.hasOwnProperty('staked');
45
+ }
46
+ /**
47
+ * Returns true if value is of type StakeBatchCallPayeeStash, false otherwise.
48
+ *
49
+ * @param value The object to test.
50
+ *
51
+ * @return true if value is of type StakeBatchCallPayeeStash, false otherwise.
52
+ */
53
+ function isStakeBatchCallPayeeStash(value) {
54
+ return value.hasOwnProperty('stash');
55
+ }
56
+ /**
57
+ * Returns true if value is of type StakeBatchCallPayeeController, false otherwise.
58
+ *
59
+ * @param value The object to test.
60
+ *
61
+ * @return true if value is of type StakeBatchCallPayeeController, false otherwise.
62
+ */
63
+ function isStakeBatchCallPayeeController(value) {
64
+ return value.hasOwnProperty('controller');
65
+ }
66
+ /**
67
+ * Returns true if value is of type StakeBatchCallPayeeAccount, false otherwise.
68
+ *
69
+ * @param value The object to test.
70
+ *
71
+ * @return true if value is of type StakeBatchCallPayeeAccount, false otherwise.
72
+ */
73
+ function isStakeBatchCallPayeeAccount(value) {
74
+ return (value.account !== undefined &&
75
+ value.account !== null);
76
+ }
77
+ /**
78
+ * Extracts the proxy address being added from ProxyArgs.
79
+
80
+ * @param args the ProxyArgs object from which to extract the proxy address.
81
+ *
82
+ * @return the proxy address being added.
83
+ */
84
+ function getAddress(args) {
85
+ if (isAccountId(args.real)) {
86
+ return args.real.id;
87
+ }
88
+ else {
89
+ return args.real;
90
+ }
91
+ }
92
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWZhY2VfdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2lmYWNlX3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBbUJBLGtDQUVDO0FBVUQsZ0RBTUM7QUFTRCxrRUFFQztBQVNELGdFQUVDO0FBU0QsMEVBRUM7QUFTRCxvRUFLQztBQVNELGdDQU1DO0FBdkZEOzs7Ozs7R0FNRztBQUNILFNBQWdCLFdBQVcsQ0FBQyxLQUF5QjtJQUNuRCxPQUFPLEtBQUssQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDcEMsQ0FBQztBQUVEOzs7Ozs7O0dBT0c7QUFDSCxTQUFnQixrQkFBa0IsQ0FBQyxJQUEwQztJQUMzRSxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztRQUMvQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO0lBQzFCLENBQUM7U0FBTSxDQUFDO1FBQ04sT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7QUFDSCxDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsU0FBZ0IsMkJBQTJCLENBQUMsS0FBMEI7SUFDcEUsT0FBUSxLQUFtQyxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUN2RSxDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsU0FBZ0IsMEJBQTBCLENBQUMsS0FBMEI7SUFDbkUsT0FBUSxLQUFrQyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNyRSxDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsU0FBZ0IsK0JBQStCLENBQUMsS0FBMEI7SUFDeEUsT0FBUSxLQUF1QyxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUMvRSxDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsU0FBZ0IsNEJBQTRCLENBQUMsS0FBMEI7SUFDckUsT0FBTyxDQUNKLEtBQW9DLENBQUMsT0FBTyxLQUFLLFNBQVM7UUFDMUQsS0FBb0MsQ0FBQyxPQUFPLEtBQUssSUFBSSxDQUN2RCxDQUFDO0FBQ0osQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILFNBQWdCLFVBQVUsQ0FBQyxJQUFlO0lBQ3hDLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQzNCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7SUFDdEIsQ0FBQztTQUFNLENBQUM7UUFDTixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDbkIsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBY2NvdW50SWQsXG4gIEFkZFByb3h5QXJncyxcbiAgQWRkUHJveHlCYXRjaENhbGxBcmdzLFxuICBTdGFrZUJhdGNoQ2FsbFBheWVlLFxuICBTdGFrZUJhdGNoQ2FsbFBheWVlQWNjb3VudCxcbiAgU3Rha2VCYXRjaENhbGxQYXllZUNvbnRyb2xsZXIsXG4gIFN0YWtlQmF0Y2hDYWxsUGF5ZWVTdGFrZWQsXG4gIFN0YWtlQmF0Y2hDYWxsUGF5ZWVTdGFzaCxcbiAgUHJveHlBcmdzLFxufSBmcm9tICcuL2lmYWNlJztcblxuLyoqXG4gKiBSZXR1cm5zIHRydWUgaWYgdmFsdWUgaXMgb2YgdHlwZSBBY2NvdW50SWQsIGZhbHNlIG90aGVyd2lzZS5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgVGhlIG9iamVjdCB0byB0ZXN0LlxuICpcbiAqIEByZXR1cm4gdHJ1ZSBpZiB2YWx1ZSBpcyBvZiB0eXBlIEFjY291bnRJZCwgZmFsc2Ugb3RoZXJ3aXNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNBY2NvdW50SWQodmFsdWU6IHN0cmluZyB8IEFjY291bnRJZCk6IHZhbHVlIGlzIEFjY291bnRJZCB7XG4gIHJldHVybiB2YWx1ZS5oYXNPd25Qcm9wZXJ0eSgnaWQnKTtcbn1cblxuLyoqXG4gKiBFeHRyYWN0cyB0aGUgcHJveHkgYWRkcmVzcyBiZWluZyBhZGRlZCBmcm9tIGFuIGFkZCBwcm94eSBiYXRjaCBjYWxsIG9yIGFuIGFkZCBwcm94eSBjYWxsLlxuXG4gKiBAcGFyYW0gY2FsbCBBIGJhdGNoZWQgYWRkIHByb3h5IGNhbGwgb3IgYW4gYWRkIHByb3h5IGNhbGwgZnJvbSB3aGljaCB0byBleHRyYWN0IHRoZSBwcm94eVxuICogYWRkcmVzcy5cbiAqXG4gKiBAcmV0dXJuIHRoZSBwcm94eSBhZGRyZXNzIGJlaW5nIGFkZGVkIGZyb20gYW4gYWRkIHByb3h5IGJhdGNoIGNhbGwgb3IgYW4gYWRkIHByb3h5IGNhbGwuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXREZWxlZ2F0ZUFkZHJlc3MoY2FsbDogQWRkUHJveHlCYXRjaENhbGxBcmdzIHwgQWRkUHJveHlBcmdzKTogc3RyaW5nIHtcbiAgaWYgKGlzQWNjb3VudElkKGNhbGwuZGVsZWdhdGUpKSB7XG4gICAgcmV0dXJuIGNhbGwuZGVsZWdhdGUuaWQ7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGNhbGwuZGVsZWdhdGU7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRydWUgaWYgdmFsdWUgaXMgb2YgdHlwZSBTdGFrZUJhdGNoQ2FsbFBheWVlU3Rha2VkLCBmYWxzZSBvdGhlcndpc2UuXG4gKlxuICogQHBhcmFtIHZhbHVlIFRoZSBvYmplY3QgdG8gdGVzdC5cbiAqXG4gKiBAcmV0dXJuIHRydWUgaWYgdmFsdWUgaXMgb2YgdHlwZSBTdGFrZUJhdGNoQ2FsbFBheWVlU3Rha2VkLCBmYWxzZSBvdGhlcndpc2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1N0YWtlQmF0Y2hDYWxsUGF5ZWVTdGFrZWQodmFsdWU6IFN0YWtlQmF0Y2hDYWxsUGF5ZWUpOiB2YWx1ZSBpcyBTdGFrZUJhdGNoQ2FsbFBheWVlU3Rha2VkIHtcbiAgcmV0dXJuICh2YWx1ZSBhcyBTdGFrZUJhdGNoQ2FsbFBheWVlU3Rha2VkKS5oYXNPd25Qcm9wZXJ0eSgnc3Rha2VkJyk7XG59XG5cbi8qKlxuICogUmV0dXJucyB0cnVlIGlmIHZhbHVlIGlzIG9mIHR5cGUgU3Rha2VCYXRjaENhbGxQYXllZVN0YXNoLCBmYWxzZSBvdGhlcndpc2UuXG4gKlxuICogQHBhcmFtIHZhbHVlIFRoZSBvYmplY3QgdG8gdGVzdC5cbiAqXG4gKiBAcmV0dXJuIHRydWUgaWYgdmFsdWUgaXMgb2YgdHlwZSBTdGFrZUJhdGNoQ2FsbFBheWVlU3Rhc2gsIGZhbHNlIG90aGVyd2lzZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzU3Rha2VCYXRjaENhbGxQYXllZVN0YXNoKHZhbHVlOiBTdGFrZUJhdGNoQ2FsbFBheWVlKTogdmFsdWUgaXMgU3Rha2VCYXRjaENhbGxQYXllZVN0YXNoIHtcbiAgcmV0dXJuICh2YWx1ZSBhcyBTdGFrZUJhdGNoQ2FsbFBheWVlU3Rhc2gpLmhhc093blByb3BlcnR5KCdzdGFzaCcpO1xufVxuXG4vKipcbiAqIFJldHVybnMgdHJ1ZSBpZiB2YWx1ZSBpcyBvZiB0eXBlIFN0YWtlQmF0Y2hDYWxsUGF5ZWVDb250cm9sbGVyLCBmYWxzZSBvdGhlcndpc2UuXG4gKlxuICogQHBhcmFtIHZhbHVlIFRoZSBvYmplY3QgdG8gdGVzdC5cbiAqXG4gKiBAcmV0dXJuIHRydWUgaWYgdmFsdWUgaXMgb2YgdHlwZSBTdGFrZUJhdGNoQ2FsbFBheWVlQ29udHJvbGxlciwgZmFsc2Ugb3RoZXJ3aXNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNTdGFrZUJhdGNoQ2FsbFBheWVlQ29udHJvbGxlcih2YWx1ZTogU3Rha2VCYXRjaENhbGxQYXllZSk6IHZhbHVlIGlzIFN0YWtlQmF0Y2hDYWxsUGF5ZWVDb250cm9sbGVyIHtcbiAgcmV0dXJuICh2YWx1ZSBhcyBTdGFrZUJhdGNoQ2FsbFBheWVlQ29udHJvbGxlcikuaGFzT3duUHJvcGVydHkoJ2NvbnRyb2xsZXInKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRydWUgaWYgdmFsdWUgaXMgb2YgdHlwZSBTdGFrZUJhdGNoQ2FsbFBheWVlQWNjb3VudCwgZmFsc2Ugb3RoZXJ3aXNlLlxuICpcbiAqIEBwYXJhbSB2YWx1ZSBUaGUgb2JqZWN0IHRvIHRlc3QuXG4gKlxuICogQHJldHVybiB0cnVlIGlmIHZhbHVlIGlzIG9mIHR5cGUgU3Rha2VCYXRjaENhbGxQYXllZUFjY291bnQsIGZhbHNlIG90aGVyd2lzZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzU3Rha2VCYXRjaENhbGxQYXllZUFjY291bnQodmFsdWU6IFN0YWtlQmF0Y2hDYWxsUGF5ZWUpOiB2YWx1ZSBpcyBTdGFrZUJhdGNoQ2FsbFBheWVlQWNjb3VudCB7XG4gIHJldHVybiAoXG4gICAgKHZhbHVlIGFzIFN0YWtlQmF0Y2hDYWxsUGF5ZWVBY2NvdW50KS5hY2NvdW50ICE9PSB1bmRlZmluZWQgJiZcbiAgICAodmFsdWUgYXMgU3Rha2VCYXRjaENhbGxQYXllZUFjY291bnQpLmFjY291bnQgIT09IG51bGxcbiAgKTtcbn1cblxuLyoqXG4gKiBFeHRyYWN0cyB0aGUgcHJveHkgYWRkcmVzcyBiZWluZyBhZGRlZCBmcm9tIFByb3h5QXJncy5cblxuICogQHBhcmFtIGFyZ3MgdGhlIFByb3h5QXJncyBvYmplY3QgZnJvbSB3aGljaCB0byBleHRyYWN0IHRoZSBwcm94eSBhZGRyZXNzLlxuICpcbiAqIEByZXR1cm4gdGhlIHByb3h5IGFkZHJlc3MgYmVpbmcgYWRkZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRBZGRyZXNzKGFyZ3M6IFByb3h5QXJncyk6IHN0cmluZyB7XG4gIGlmIChpc0FjY291bnRJZChhcmdzLnJlYWwpKSB7XG4gICAgcmV0dXJuIGFyZ3MucmVhbC5pZDtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gYXJncy5yZWFsO1xuICB9XG59XG4iXX0=
@@ -5,5 +5,7 @@ export { Transaction } from './transaction';
5
5
  export { TransactionBuilder } from './transactionBuilder';
6
6
  export { TransferBuilder } from './transferBuilder';
7
7
  export { TransactionBuilderFactory } from './transactionBuilderFactory';
8
+ export { SingletonRegistry } from './singletonRegistry';
9
+ export { NativeTransferBuilder } from './nativeTransferBuilder';
8
10
  export { Interface, Utils };
9
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,SAAS,MAAM,SAAS,CAAC;AAErC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,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,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,SAAS,MAAM,SAAS,CAAC;AAErC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,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,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC"}
@@ -33,7 +33,7 @@ var __importStar = (this && this.__importStar) || (function () {
33
33
  };
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.Utils = exports.Interface = exports.TransactionBuilderFactory = exports.TransferBuilder = exports.TransactionBuilder = exports.Transaction = exports.KeyPair = void 0;
36
+ exports.Utils = exports.Interface = exports.NativeTransferBuilder = exports.SingletonRegistry = exports.TransactionBuilderFactory = exports.TransferBuilder = exports.TransactionBuilder = exports.Transaction = exports.KeyPair = void 0;
37
37
  const Utils = __importStar(require("./utils"));
38
38
  exports.Utils = Utils;
39
39
  const Interface = __importStar(require("./iface"));
@@ -48,4 +48,8 @@ var transferBuilder_1 = require("./transferBuilder");
48
48
  Object.defineProperty(exports, "TransferBuilder", { enumerable: true, get: function () { return transferBuilder_1.TransferBuilder; } });
49
49
  var transactionBuilderFactory_1 = require("./transactionBuilderFactory");
50
50
  Object.defineProperty(exports, "TransactionBuilderFactory", { enumerable: true, get: function () { return transactionBuilderFactory_1.TransactionBuilderFactory; } });
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtDQUFpQztBQVFiLHNCQUFLO0FBUHpCLG1EQUFxQztBQU81Qiw4QkFBUztBQUxsQixxQ0FBb0M7QUFBM0Isa0dBQUEsT0FBTyxPQUFBO0FBQ2hCLDZDQUE0QztBQUFuQywwR0FBQSxXQUFXLE9BQUE7QUFDcEIsMkRBQTBEO0FBQWpELHdIQUFBLGtCQUFrQixPQUFBO0FBQzNCLHFEQUFvRDtBQUEzQyxrSEFBQSxlQUFlLE9BQUE7QUFDeEIseUVBQXdFO0FBQS9ELHNJQUFBLHlCQUF5QixPQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgVXRpbHMgZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgKiBhcyBJbnRlcmZhY2UgZnJvbSAnLi9pZmFjZSc7XG5cbmV4cG9ydCB7IEtleVBhaXIgfSBmcm9tICcuL2tleVBhaXInO1xuZXhwb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcbmV4cG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyJztcbmV4cG9ydCB7IFRyYW5zZmVyQnVpbGRlciB9IGZyb20gJy4vdHJhbnNmZXJCdWlsZGVyJztcbmV4cG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkgfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnknO1xuZXhwb3J0IHsgSW50ZXJmYWNlLCBVdGlscyB9O1xuIl19
51
+ var singletonRegistry_1 = require("./singletonRegistry");
52
+ Object.defineProperty(exports, "SingletonRegistry", { enumerable: true, get: function () { return singletonRegistry_1.SingletonRegistry; } });
53
+ var nativeTransferBuilder_1 = require("./nativeTransferBuilder");
54
+ Object.defineProperty(exports, "NativeTransferBuilder", { enumerable: true, get: function () { return nativeTransferBuilder_1.NativeTransferBuilder; } });
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtDQUFpQztBQVViLHNCQUFLO0FBVHpCLG1EQUFxQztBQVM1Qiw4QkFBUztBQVBsQixxQ0FBb0M7QUFBM0Isa0dBQUEsT0FBTyxPQUFBO0FBQ2hCLDZDQUE0QztBQUFuQywwR0FBQSxXQUFXLE9BQUE7QUFDcEIsMkRBQTBEO0FBQWpELHdIQUFBLGtCQUFrQixPQUFBO0FBQzNCLHFEQUFvRDtBQUEzQyxrSEFBQSxlQUFlLE9BQUE7QUFDeEIseUVBQXdFO0FBQS9ELHNJQUFBLHlCQUF5QixPQUFBO0FBQ2xDLHlEQUF3RDtBQUEvQyxzSEFBQSxpQkFBaUIsT0FBQTtBQUMxQixpRUFBZ0U7QUFBdkQsOEhBQUEscUJBQXFCLE9BQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBVdGlscyBmcm9tICcuL3V0aWxzJztcbmltcG9ydCAqIGFzIEludGVyZmFjZSBmcm9tICcuL2lmYWNlJztcblxuZXhwb3J0IHsgS2V5UGFpciB9IGZyb20gJy4va2V5UGFpcic7XG5leHBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuZXhwb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXInO1xuZXhwb3J0IHsgVHJhbnNmZXJCdWlsZGVyIH0gZnJvbSAnLi90cmFuc2ZlckJ1aWxkZXInO1xuZXhwb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSc7XG5leHBvcnQgeyBTaW5nbGV0b25SZWdpc3RyeSB9IGZyb20gJy4vc2luZ2xldG9uUmVnaXN0cnknO1xuZXhwb3J0IHsgTmF0aXZlVHJhbnNmZXJCdWlsZGVyIH0gZnJvbSAnLi9uYXRpdmVUcmFuc2ZlckJ1aWxkZXInO1xuZXhwb3J0IHsgSW50ZXJmYWNlLCBVdGlscyB9O1xuIl19
@@ -0,0 +1,84 @@
1
+ import { BaseAddress, TransactionType } from '@bitgo-beta/sdk-core';
2
+ import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
3
+ import { DecodedSignedTx, DecodedSigningPayload, UnsignedTransaction } from '@substrate/txwrapper-core';
4
+ import { ProxyType } from './iface';
5
+ import { Transaction } from './transaction';
6
+ import { TransactionBuilder } from './transactionBuilder';
7
+ export declare abstract class NativeTransferBuilder extends TransactionBuilder {
8
+ protected _sweepFreeBalance: boolean;
9
+ protected _keepAddressAlive: boolean;
10
+ protected _amount: string;
11
+ protected _to: string;
12
+ protected _owner: string;
13
+ protected _forceProxyType: ProxyType;
14
+ constructor(_coinConfig: Readonly<CoinConfig>);
15
+ /**
16
+ *
17
+ * Dispatch the given call from an account that the sender is authorised for through add_proxy.
18
+ *
19
+ * @returns {UnsignedTransaction} an unsigned Dot transaction
20
+ *
21
+ * @see https://polkadot.js.org/docs/substrate/extrinsics/#proxy
22
+ */
23
+ protected buildTransaction(): UnsignedTransaction;
24
+ protected get transactionType(): TransactionType;
25
+ /**
26
+ *
27
+ * Set this to be a sweep transaction, using TransferAll with keepAlive set to true by default.
28
+ * If keepAlive is false, the entire address will be swept (including the 1 DOT minimum).
29
+ *
30
+ * @param {boolean} keepAlive - keep the address alive after this sweep
31
+ * @returns {TransferBuilder} This transfer builder.
32
+ *
33
+ * @see https://github.com/paritytech/txwrapper-core/blob/main/docs/modules/txwrapper_substrate_src.methods.balances.md#transferall
34
+ */
35
+ sweep(keepAlive?: boolean): this;
36
+ /**
37
+ *
38
+ * The amount for transfer transaction.
39
+ *
40
+ * @param {string} amount
41
+ * @returns {TransferBuilder} This transfer builder.
42
+ *
43
+ * @see https://wiki.polkadot.network/docs/build-protocol-info
44
+ */
45
+ amount(amount: string): this;
46
+ /**
47
+ *
48
+ * The destination address for transfer transaction.
49
+ *
50
+ * @param {string} dest
51
+ * @returns {TransferBuilder} This transfer builder.
52
+ *
53
+ * @see https://wiki.polkadot.network/docs/build-protocol-info
54
+ */
55
+ to({ address }: BaseAddress): this;
56
+ /**
57
+ *
58
+ * The real address of the original tx
59
+ *
60
+ * @param {BaseAddress} real
61
+ * @returns {TransferBuilder} This builder.
62
+ *
63
+ * @see https://wiki.polkadot.network/docs/learn-proxies#why-use-a-proxy
64
+ */
65
+ owner(owner: BaseAddress): this;
66
+ /**
67
+ *
68
+ * The proxy type to execute
69
+ *
70
+ * @param {proxyType} forceProxyType
71
+ * @returns {TransferBuilder} This builder.
72
+ *
73
+ * @see https://wiki.polkadot.network/docs/learn-proxies#proxy-types
74
+ */
75
+ forceProxyType(forceProxyType: ProxyType): this;
76
+ /** @inheritdoc */
77
+ validateDecodedTransaction(decodedTxn: DecodedSigningPayload | DecodedSignedTx, rawTransaction: string): void;
78
+ /** @inheritdoc */
79
+ protected fromImplementation(rawTransaction: string): Transaction;
80
+ /** @inheritdoc */
81
+ validateTransaction(_: Transaction): void;
82
+ private validateFields;
83
+ }
84
+ //# sourceMappingURL=nativeTransferBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nativeTransferBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/nativeTransferBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAA0C,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5G,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAE7D,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAExG,OAAO,EAA0B,SAAS,EAAiC,MAAM,SAAS,CAAC;AAG3F,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAI1D,8BAAsB,qBAAsB,SAAQ,kBAAkB;IACpE,SAAS,CAAC,iBAAiB,UAAS;IACpC,SAAS,CAAC,iBAAiB,UAAQ;IACnC,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,eAAe,EAAE,SAAS,CAAC;gBAEzB,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C;;;;;;;OAOG;IACH,SAAS,CAAC,gBAAgB,IAAI,mBAAmB;IAqCjD,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,SAAS,CAAC,EAAE,OAAO,GAAG,IAAI;IAQhC;;;;;;;;OAQG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAM5B;;;;;;;;OAQG;IACH,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,WAAW,GAAG,IAAI;IAMlC;;;;;;;;OAQG;IACH,KAAK,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IAM/B;;;;;;;;OAQG;IACH,cAAc,CAAC,cAAc,EAAE,SAAS,GAAG,IAAI;IAK/C,kBAAkB;IAClB,0BAA0B,CAAC,UAAU,EAAE,qBAAqB,GAAG,eAAe,EAAE,cAAc,EAAE,MAAM,GAAG,IAAI;IA0B7G,kBAAkB;IAClB,SAAS,CAAC,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,WAAW;IAsDjE,kBAAkB;IAClB,mBAAmB,CAAC,CAAC,EAAE,WAAW,GAAG,IAAI;IAKzC,OAAO,CAAC,cAAc;CAgBvB"}
@@ -0,0 +1,219 @@
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.NativeTransferBuilder = void 0;
7
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
8
+ const txwrapper_polkadot_1 = require("@substrate/txwrapper-polkadot");
9
+ const bignumber_js_1 = __importDefault(require("bignumber.js"));
10
+ const iface_1 = require("./iface");
11
+ const iface_utils_1 = require("./iface_utils");
12
+ const singletonRegistry_1 = require("./singletonRegistry");
13
+ const transactionBuilder_1 = require("./transactionBuilder");
14
+ const txnSchema_1 = require("./txnSchema");
15
+ const utils_1 = __importDefault(require("./utils"));
16
+ class NativeTransferBuilder extends transactionBuilder_1.TransactionBuilder {
17
+ constructor(_coinConfig) {
18
+ super(_coinConfig);
19
+ this._sweepFreeBalance = false;
20
+ this._keepAddressAlive = true;
21
+ }
22
+ /**
23
+ *
24
+ * Dispatch the given call from an account that the sender is authorised for through add_proxy.
25
+ *
26
+ * @returns {UnsignedTransaction} an unsigned Dot transaction
27
+ *
28
+ * @see https://polkadot.js.org/docs/substrate/extrinsics/#proxy
29
+ */
30
+ buildTransaction() {
31
+ const baseTxInfo = this.createBaseTxInfo();
32
+ let transferTx;
33
+ if (this._sweepFreeBalance) {
34
+ transferTx = txwrapper_polkadot_1.methods.balances.transferAll({
35
+ dest: { id: this._to },
36
+ keepAlive: this._keepAddressAlive,
37
+ }, baseTxInfo.baseTxInfo, baseTxInfo.options);
38
+ }
39
+ else {
40
+ transferTx = txwrapper_polkadot_1.methods.balances.transferKeepAlive({
41
+ value: this._amount,
42
+ dest: { id: this._to },
43
+ }, baseTxInfo.baseTxInfo, baseTxInfo.options);
44
+ }
45
+ if (!this._owner) {
46
+ return transferTx;
47
+ }
48
+ return txwrapper_polkadot_1.methods.proxy.proxy({
49
+ real: this._owner,
50
+ forceProxyType: this._forceProxyType,
51
+ call: transferTx.method,
52
+ }, baseTxInfo.baseTxInfo, baseTxInfo.options);
53
+ }
54
+ get transactionType() {
55
+ return sdk_core_1.TransactionType.Send;
56
+ }
57
+ /**
58
+ *
59
+ * Set this to be a sweep transaction, using TransferAll with keepAlive set to true by default.
60
+ * If keepAlive is false, the entire address will be swept (including the 1 DOT minimum).
61
+ *
62
+ * @param {boolean} keepAlive - keep the address alive after this sweep
63
+ * @returns {TransferBuilder} This transfer builder.
64
+ *
65
+ * @see https://github.com/paritytech/txwrapper-core/blob/main/docs/modules/txwrapper_substrate_src.methods.balances.md#transferall
66
+ */
67
+ sweep(keepAlive) {
68
+ this._sweepFreeBalance = true;
69
+ if (keepAlive !== undefined) {
70
+ this._keepAddressAlive = keepAlive;
71
+ }
72
+ return this;
73
+ }
74
+ /**
75
+ *
76
+ * The amount for transfer transaction.
77
+ *
78
+ * @param {string} amount
79
+ * @returns {TransferBuilder} This transfer builder.
80
+ *
81
+ * @see https://wiki.polkadot.network/docs/build-protocol-info
82
+ */
83
+ amount(amount) {
84
+ this.validateValue(new bignumber_js_1.default(amount));
85
+ this._amount = amount;
86
+ return this;
87
+ }
88
+ /**
89
+ *
90
+ * The destination address for transfer transaction.
91
+ *
92
+ * @param {string} dest
93
+ * @returns {TransferBuilder} This transfer builder.
94
+ *
95
+ * @see https://wiki.polkadot.network/docs/build-protocol-info
96
+ */
97
+ to({ address }) {
98
+ this.validateAddress({ address });
99
+ this._to = address;
100
+ return this;
101
+ }
102
+ /**
103
+ *
104
+ * The real address of the original tx
105
+ *
106
+ * @param {BaseAddress} real
107
+ * @returns {TransferBuilder} This builder.
108
+ *
109
+ * @see https://wiki.polkadot.network/docs/learn-proxies#why-use-a-proxy
110
+ */
111
+ owner(owner) {
112
+ this.validateAddress({ address: owner.address });
113
+ this._owner = owner.address;
114
+ return this;
115
+ }
116
+ /**
117
+ *
118
+ * The proxy type to execute
119
+ *
120
+ * @param {proxyType} forceProxyType
121
+ * @returns {TransferBuilder} This builder.
122
+ *
123
+ * @see https://wiki.polkadot.network/docs/learn-proxies#proxy-types
124
+ */
125
+ forceProxyType(forceProxyType) {
126
+ this._forceProxyType = forceProxyType;
127
+ return this;
128
+ }
129
+ /** @inheritdoc */
130
+ validateDecodedTransaction(decodedTxn, rawTransaction) {
131
+ if (decodedTxn.method?.name === iface_1.MethodNames.TransferKeepAlive) {
132
+ const txMethod = decodedTxn.method.args;
133
+ const amount = `${txMethod.value}`;
134
+ const to = txMethod.dest.id;
135
+ const validationResult = txnSchema_1.TransferTransactionSchema.validate({ amount, to });
136
+ if (validationResult.error) {
137
+ throw new sdk_core_1.InvalidTransactionError(`Transfer Transaction validation failed: ${validationResult.error.message}`);
138
+ }
139
+ }
140
+ else if (decodedTxn.method?.name === iface_1.MethodNames.Proxy) {
141
+ const txMethod = decodedTxn.method.args;
142
+ const real = (0, iface_utils_1.getAddress)(txMethod);
143
+ const forceProxyType = txMethod.forceProxyType;
144
+ const decodedCall = utils_1.default.decodeCallMethod(rawTransaction, {
145
+ registry: singletonRegistry_1.SingletonRegistry.getInstance(this._material),
146
+ metadataRpc: this._material.metadata,
147
+ });
148
+ const amount = `${decodedCall.value}`;
149
+ const to = decodedCall.dest.id;
150
+ const validationResult = txnSchema_1.ProxyTransactionSchema.validate({ real, forceProxyType, amount, to });
151
+ if (validationResult.error) {
152
+ throw new sdk_core_1.InvalidTransactionError(`Proxy Transaction validation failed: ${validationResult.error.message}`);
153
+ }
154
+ }
155
+ }
156
+ /** @inheritdoc */
157
+ fromImplementation(rawTransaction) {
158
+ const tx = super.fromImplementation(rawTransaction);
159
+ if (this._method?.name === iface_1.MethodNames.TransferKeepAlive) {
160
+ const txMethod = this._method.args;
161
+ this.amount(txMethod.value);
162
+ this.to({
163
+ address: utils_1.default.decodeDotAddress(txMethod.dest.id, utils_1.default.getAddressFormat(this._coinConfig.name)),
164
+ });
165
+ }
166
+ else if (this._method?.name === iface_1.MethodNames.TransferAll) {
167
+ this._sweepFreeBalance = true;
168
+ const txMethod = this._method.args;
169
+ this.sweep(txMethod.keepAlive);
170
+ this.to({
171
+ address: utils_1.default.decodeDotAddress(txMethod.dest.id, utils_1.default.getAddressFormat(this._coinConfig.name)),
172
+ });
173
+ }
174
+ else if (this._method?.name === iface_1.MethodNames.Proxy) {
175
+ const txMethod = this._method.args;
176
+ this.owner({
177
+ address: utils_1.default.decodeDotAddress((0, iface_utils_1.getAddress)(txMethod), utils_1.default.getAddressFormat(this._coinConfig.name)),
178
+ });
179
+ this.forceProxyType(txMethod.forceProxyType);
180
+ const decodedCall = utils_1.default.decodeCallMethod(rawTransaction, {
181
+ registry: singletonRegistry_1.SingletonRegistry.getInstance(this._material),
182
+ metadataRpc: this._material.metadata,
183
+ });
184
+ if (!decodedCall.value || !decodedCall.dest) {
185
+ throw new sdk_core_1.InvalidTransactionError(`Invalid Proxy Transaction Method: ${this._method?.name}. Expected transferKeepAlive`);
186
+ }
187
+ this.amount(`${decodedCall.value}`);
188
+ this.to({
189
+ address: utils_1.default.decodeDotAddress(decodedCall.dest.id, utils_1.default.getAddressFormat(this._coinConfig.name)),
190
+ });
191
+ }
192
+ else {
193
+ throw new sdk_core_1.InvalidTransactionError(`Invalid Transaction Type: ${this._method?.name}. Expected a transferKeepAlive or a proxy transferKeepAlive transaction`);
194
+ }
195
+ return tx;
196
+ }
197
+ /** @inheritdoc */
198
+ validateTransaction(_) {
199
+ super.validateTransaction(_);
200
+ this.validateFields(this._to, this._amount, this._owner, this._forceProxyType);
201
+ }
202
+ validateFields(to, amount, real, forceProxyType) {
203
+ let validationResult;
204
+ if (forceProxyType) {
205
+ validationResult = txnSchema_1.ProxyTransactionSchema.validate({ to, amount, real, forceProxyType });
206
+ }
207
+ else if (this._sweepFreeBalance) {
208
+ validationResult = txnSchema_1.TransferAllTransactionSchema.validate({ to });
209
+ }
210
+ else {
211
+ validationResult = txnSchema_1.TransferTransactionSchema.validate({ amount, to });
212
+ }
213
+ if (validationResult.error) {
214
+ throw new sdk_core_1.InvalidTransactionError(`Proxy/TransferAll/TransferKeepAlive Transaction validation failed: ${validationResult.error.message}`);
215
+ }
216
+ }
217
+ }
218
+ exports.NativeTransferBuilder = NativeTransferBuilder;
219
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF0aXZlVHJhbnNmZXJCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9uYXRpdmVUcmFuc2ZlckJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsbURBQTRHO0FBRTVHLHNFQUF3RDtBQUV4RCxnRUFBcUM7QUFDckMsbUNBQTJGO0FBQzNGLCtDQUEyQztBQUMzQywyREFBd0Q7QUFFeEQsNkRBQTBEO0FBQzFELDJDQUE4RztBQUM5RyxvREFBNEI7QUFFNUIsTUFBc0IscUJBQXNCLFNBQVEsdUNBQWtCO0lBUXBFLFlBQVksV0FBaUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBUlgsc0JBQWlCLEdBQUcsS0FBSyxDQUFDO1FBQzFCLHNCQUFpQixHQUFHLElBQUksQ0FBQztJQVFuQyxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNPLGdCQUFnQjtRQUN4QixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUMzQyxJQUFJLFVBQVUsQ0FBQztRQUNmLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDM0IsVUFBVSxHQUFHLDRCQUFPLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FDdkM7Z0JBQ0UsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUU7Z0JBQ3RCLFNBQVMsRUFBRSxJQUFJLENBQUMsaUJBQWlCO2FBQ2xDLEVBQ0QsVUFBVSxDQUFDLFVBQVUsRUFDckIsVUFBVSxDQUFDLE9BQU8sQ0FDbkIsQ0FBQztRQUNKLENBQUM7YUFBTSxDQUFDO1lBQ04sVUFBVSxHQUFHLDRCQUFPLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUM3QztnQkFDRSxLQUFLLEVBQUUsSUFBSSxDQUFDLE9BQU87Z0JBQ25CLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFO2FBQ3ZCLEVBQ0QsVUFB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RUFBRSxNQUFjLEVBQUUsSUFBYSxFQUFFLGNBQXVCO1FBQ3ZGLElBQUksZ0JBQWdCLENBQUM7UUFDckIsSUFBSSxjQUFjLEVBQUUsQ0FBQztZQUNuQixnQkFBZ0IsR0FBRyxrQ0FBc0IsQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsQ0FBQyxDQUFDO1FBQzNGLENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ2xDLGdCQUFnQixHQUFHLHdDQUE0QixDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDbkUsQ0FBQzthQUFNLENBQUM7WUFDTixnQkFBZ0IsR0FBRyxxQ0FBeUIsQ0FBQyxRQUFRLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN4RSxDQUFDO1FBRUQsSUFBSSxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUMzQixNQUFNLElBQUksa0NBQXVCLENBQy9CLHNFQUFzRSxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQ3ZHLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBbFBELHNEQWtQQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VBZGRyZXNzLCBEb3RBc3NldFR5cGVzLCBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvciwgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHsgbWV0aG9kcyB9IGZyb20gJ0BzdWJzdHJhdGUvdHh3cmFwcGVyLXBvbGthZG90JztcbmltcG9ydCB7IERlY29kZWRTaWduZWRUeCwgRGVjb2RlZFNpZ25pbmdQYXlsb2FkLCBVbnNpZ25lZFRyYW5zYWN0aW9uIH0gZnJvbSAnQHN1YnN0cmF0ZS90eHdyYXBwZXItY29yZSc7XG5pbXBvcnQgQmlnTnVtYmVyIGZyb20gJ2JpZ251bWJlci5qcyc7XG5pbXBvcnQgeyBNZXRob2ROYW1lcywgUHJveHlBcmdzLCBQcm94eVR5cGUsIFRyYW5zZmVyQWxsQXJncywgVHJhbnNmZXJBcmdzIH0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyBnZXRBZGRyZXNzIH0gZnJvbSAnLi9pZmFjZV91dGlscyc7XG5pbXBvcnQgeyBTaW5nbGV0b25SZWdpc3RyeSB9IGZyb20gJy4vc2luZ2xldG9uUmVnaXN0cnknO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyJztcbmltcG9ydCB7IFByb3h5VHJhbnNhY3Rpb25TY2hlbWEsIFRyYW5zZmVyQWxsVHJhbnNhY3Rpb25TY2hlbWEsIFRyYW5zZmVyVHJhbnNhY3Rpb25TY2hlbWEgfSBmcm9tICcuL3R4blNjaGVtYSc7XG5pbXBvcnQgdXRpbHMgZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBOYXRpdmVUcmFuc2ZlckJ1aWxkZXIgZXh0ZW5kcyBUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICBwcm90ZWN0ZWQgX3N3ZWVwRnJlZUJhbGFuY2UgPSBmYWxzZTtcbiAgcHJvdGVjdGVkIF9rZWVwQWRkcmVzc0FsaXZlID0gdHJ1ZTtcbiAgcHJvdGVjdGVkIF9hbW91bnQ6IHN0cmluZztcbiAgcHJvdGVjdGVkIF90bzogc3RyaW5nO1xuICBwcm90ZWN0ZWQgX293bmVyOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBfZm9yY2VQcm94eVR5cGU6IFByb3h5VHlwZTtcblxuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogRGlzcGF0Y2ggdGhlIGdpdmVuIGNhbGwgZnJvbSBhbiBhY2NvdW50IHRoYXQgdGhlIHNlbmRlciBpcyBhdXRob3Jpc2VkIGZvciB0aHJvdWdoIGFkZF9wcm94eS5cbiAgICpcbiAgICogQHJldHVybnMge1Vuc2lnbmVkVHJhbnNhY3Rpb259IGFuIHVuc2lnbmVkIERvdCB0cmFuc2FjdGlvblxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vcG9sa2Fkb3QuanMub3JnL2RvY3Mvc3Vic3RyYXRlL2V4dHJpbnNpY3MvI3Byb3h5XG4gICAqL1xuICBwcm90ZWN0ZWQgYnVpbGRUcmFuc2FjdGlvbigpOiBVbnNpZ25lZFRyYW5zYWN0aW9uIHtcbiAgICBjb25zdCBiYXNlVHhJbmZvID0gdGhpcy5jcmVhdGVCYXNlVHhJbmZvKCk7XG4gICAgbGV0IHRyYW5zZmVyVHg7XG4gICAgaWYgKHRoaXMuX3N3ZWVwRnJlZUJhbGFuY2UpIHtcbiAgICAgIHRyYW5zZmVyVHggPSBtZXRob2RzLmJhbGFuY2VzLnRyYW5zZmVyQWxsKFxuICAgICAgICB7XG4gICAgICAgICAgZGVzdDogeyBpZDogdGhpcy5fdG8gfSxcbiAgICAgICAgICBrZWVwQWxpdmU6IHRoaXMuX2tlZXBBZGRyZXNzQWxpdmUsXG4gICAgICAgIH0sXG4gICAgICAgIGJhc2VUeEluZm8uYmFzZVR4SW5mbyxcbiAgICAgICAgYmFzZVR4SW5mby5vcHRpb25zXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0cmFuc2ZlclR4ID0gbWV0aG9kcy5iYWxhbmNlcy50cmFuc2ZlcktlZXBBbGl2ZShcbiAgICAgICAge1xuICAgICAgICAgIHZhbHVlOiB0aGlzLl9hbW91bnQsXG4gICAgICAgICAgZGVzdDogeyBpZDogdGhpcy5fdG8gfSxcbiAgICAgICAgfSxcbiAgICAgICAgYmFzZVR4SW5mby5iYXNlVHhJbmZvLFxuICAgICAgICBiYXNlVHhJbmZvLm9wdGlvbnNcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLl9vd25lcikge1xuICAgICAgcmV0dXJuIHRyYW5zZmVyVHg7XG4gICAgfVxuICAgIHJldHVybiBtZXRob2RzLnByb3h5LnByb3h5KFxuICAgICAge1xuICAgICAgICByZWFsOiB0aGlzLl9vd25lcixcbiAgICAgICAgZm9yY2VQcm94eVR5cGU6IHRoaXMuX2ZvcmNlUHJveHlUeXBlLFxuICAgICAgICBjYWxsOiB0cmFuc2ZlclR4Lm1ldGhvZCxcbiAgICAgIH0sXG4gICAgICBiYXNlVHhJbmZvLmJhc2VUeEluZm8sXG4gICAgICBiYXNlVHhJbmZvLm9wdGlvbnNcbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldCB0cmFuc2FjdGlvblR5cGUoKTogVHJhbnNhY3Rpb25UeXBlIHtcbiAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlLlNlbmQ7XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogU2V0IHRoaXMgdG8gYmUgYSBzd2VlcCB0cmFuc2FjdGlvbiwgdXNpbmcgVHJhbnNmZXJBbGwgd2l0aCBrZWVwQWxpdmUgc2V0IHRvIHRydWUgYnkgZGVmYXVsdC5cbiAgICogSWYga2VlcEFsaXZlIGlzIGZhbHNlLCB0aGUgZW50aXJlIGFkZHJlc3Mgd2lsbCBiZSBzd2VwdCAoaW5jbHVkaW5nIHRoZSAxIERPVCBtaW5pbXVtKS5cbiAgICpcbiAgICogQHBhcmFtIHtib29sZWFufSBrZWVwQWxpdmUgLSBrZWVwIHRoZSBhZGRyZXNzIGFsaXZlIGFmdGVyIHRoaXMgc3dlZXBcbiAgICogQHJldHVybnMge1RyYW5zZmVyQnVpbGRlcn0gVGhpcyB0cmFuc2ZlciBidWlsZGVyLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3R4d3JhcHBlci1jb3JlL2Jsb2IvbWFpbi9kb2NzL21vZHVsZXMvdHh3cmFwcGVyX3N1YnN0cmF0ZV9zcmMubWV0aG9kcy5iYWxhbmNlcy5tZCN0cmFuc2ZlcmFsbFxuICAgKi9cbiAgc3dlZXAoa2VlcEFsaXZlPzogYm9vbGVhbik6IHRoaXMge1xuICAgIHRoaXMuX3N3ZWVwRnJlZUJhbGFuY2UgPSB0cnVlO1xuICAgIGlmIChrZWVwQWxpdmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5fa2VlcEFkZHJlc3NBbGl2ZSA9IGtlZXBBbGl2ZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogVGhlIGFtb3VudCBmb3IgdHJhbnNmZXIgdHJhbnNhY3Rpb24uXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhbW91bnRcbiAgICogQHJldHVybnMge1RyYW5zZmVyQnVpbGRlcn0gVGhpcyB0cmFuc2ZlciBidWlsZGVyLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vd2lraS5wb2xrYWRvdC5uZXR3b3JrL2RvY3MvYnVpbGQtcHJvdG9jb2wtaW5mb1xuICAgKi9cbiAgYW1vdW50KGFtb3VudDogc3RyaW5nKTogdGhpcyB7XG4gICAgdGhpcy52YWxpZGF0ZVZhbHVlKG5ldyBCaWdOdW1iZXIoYW1vdW50KSk7XG4gICAgdGhpcy5fYW1vdW50ID0gYW1vdW50O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIFRoZSBkZXN0aW5hdGlvbiBhZGRyZXNzIGZvciB0cmFuc2ZlciB0cmFuc2FjdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGRlc3RcbiAgICogQHJldHVybnMge1RyYW5zZmVyQnVpbGRlcn0gVGhpcyB0cmFuc2ZlciBidWlsZGVyLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vd2lraS5wb2xrYWRvdC5uZXR3b3JrL2RvY3MvYnVpbGQtcHJvdG9jb2wtaW5mb1xuICAgKi9cbiAgdG8oeyBhZGRyZXNzIH06IEJhc2VBZGRyZXNzKTogdGhpcyB7XG4gICAgdGhpcy52YWxpZGF0ZUFkZHJlc3MoeyBhZGRyZXNzIH0pO1xuICAgIHRoaXMuX3RvID0gYWRkcmVzcztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBUaGUgcmVhbCBhZGRyZXNzIG9mIHRoZSBvcmlnaW5hbCB0eFxuICAgKlxuICAgKiBAcGFyYW0ge0Jhc2VBZGRyZXNzfSByZWFsXG4gICAqIEByZXR1cm5zIHtUcmFuc2ZlckJ1aWxkZXJ9IFRoaXMgYnVpbGRlci5cbiAgICpcbiAgICogQHNlZSBodHRwczovL3dpa2kucG9sa2Fkb3QubmV0d29yay9kb2NzL2xlYXJuLXByb3hpZXMjd2h5LXVzZS1hLXByb3h5XG4gICAqL1xuICBvd25lcihvd25lcjogQmFzZUFkZHJlc3MpOiB0aGlzIHtcbiAgICB0aGlzLnZhbGlkYXRlQWRkcmVzcyh7IGFkZHJlc3M6IG93bmVyLmFkZHJlc3MgfSk7XG4gICAgdGhpcy5fb3duZXIgPSBvd25lci5hZGRyZXNzO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIFRoZSBwcm94eSB0eXBlIHRvIGV4ZWN1dGVcbiAgICpcbiAgICogQHBhcmFtIHtwcm94eVR5cGV9IGZvcmNlUHJveHlUeXBlXG4gICAqIEByZXR1cm5zIHtUcmFuc2ZlckJ1aWxkZXJ9IFRoaXMgYnVpbGRlci5cbiAgICpcbiAgICogQHNlZSBodHRwczovL3dpa2kucG9sa2Fkb3QubmV0d29yay9kb2NzL2xlYXJuLXByb3hpZXMjcHJveHktdHlwZXNcbiAgICovXG4gIGZvcmNlUHJveHlUeXBlKGZvcmNlUHJveHlUeXBlOiBQcm94eVR5cGUpOiB0aGlzIHtcbiAgICB0aGlzLl9mb3JjZVByb3h5VHlwZSA9IGZvcmNlUHJveHlUeXBlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlRGVjb2RlZFRyYW5zYWN0aW9uKGRlY29kZWRUeG46IERlY29kZWRTaWduaW5nUGF5bG9hZCB8IERlY29kZWRTaWduZWRUeCwgcmF3VHJhbnNhY3Rpb246IHN0cmluZyk6IHZvaWQge1xuICAgIGlmIChkZWNvZGVkVHhuLm1ldGhvZD8ubmFtZSA9PT0gTWV0aG9kTmFtZXMuVHJhbnNmZXJLZWVwQWxpdmUpIHtcbiAgICAgIGNvbnN0IHR4TWV0aG9kID0gZGVjb2RlZFR4bi5tZXRob2QuYXJncyBhcyB1bmtub3duIGFzIFRyYW5zZmVyQXJncztcbiAgICAgIGNvbnN0IGFtb3VudCA9IGAke3R4TWV0aG9kLnZhbHVlfWA7XG4gICAgICBjb25zdCB0byA9IHR4TWV0aG9kLmRlc3QuaWQ7XG4gICAgICBjb25zdCB2YWxpZGF0aW9uUmVzdWx0ID0gVHJhbnNmZXJUcmFuc2FjdGlvblNjaGVtYS52YWxpZGF0ZSh7IGFtb3VudCwgdG8gfSk7XG4gICAgICBpZiAodmFsaWRhdGlvblJlc3VsdC5lcnJvcikge1xuICAgICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoYFRyYW5zZmVyIFRyYW5zYWN0aW9uIHZhbGlkYXRpb24gZmFpbGVkOiAke3ZhbGlkYXRpb25SZXN1bHQuZXJyb3IubWVzc2FnZX1gKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGRlY29kZWRUeG4ubWV0aG9kPy5uYW1lID09PSBNZXRob2ROYW1lcy5Qcm94eSkge1xuICAgICAgY29uc3QgdHhNZXRob2QgPSBkZWNvZGVkVHhuLm1ldGhvZC5hcmdzIGFzIHVua25vd24gYXMgUHJveHlBcmdzO1xuICAgICAgY29uc3QgcmVhbCA9IGdldEFkZHJlc3ModHhNZXRob2QpO1xuICAgICAgY29uc3QgZm9yY2VQcm94eVR5cGUgPSB0eE1ldGhvZC5mb3JjZVByb3h5VHlwZTtcbiAgICAgIGNvbnN0IGRlY29kZWRDYWxsID0gdXRpbHMuZGVjb2RlQ2FsbE1ldGhvZChyYXdUcmFuc2FjdGlvbiwge1xuICAgICAgICByZWdpc3RyeTogU2luZ2xldG9uUmVnaXN0cnkuZ2V0SW5zdGFuY2UodGhpcy5fbWF0ZXJpYWwpLFxuICAgICAgICBtZXRhZGF0YVJwYzogdGhpcy5fbWF0ZXJpYWwubWV0YWRhdGEsXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IGFtb3VudCA9IGAke2RlY29kZWRDYWxsLnZhbHVlfWA7XG4gICAgICBjb25zdCB0byA9IGRlY29kZWRDYWxsLmRlc3QuaWQ7XG4gICAgICBjb25zdCB2YWxpZGF0aW9uUmVzdWx0ID0gUHJveHlUcmFuc2FjdGlvblNjaGVtYS52YWxpZGF0ZSh7IHJlYWwsIGZvcmNlUHJveHlUeXBlLCBhbW91bnQsIHRvIH0pO1xuICAgICAgaWYgKHZhbGlkYXRpb25SZXN1bHQuZXJyb3IpIHtcbiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKGBQcm94eSBUcmFuc2FjdGlvbiB2YWxpZGF0aW9uIGZhaWxlZDogJHt2YWxpZGF0aW9uUmVzdWx0LmVycm9yLm1lc3NhZ2V9YCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBmcm9tSW1wbGVtZW50YXRpb24ocmF3VHJhbnNhY3Rpb246IHN0cmluZyk6IFRyYW5zYWN0aW9uIHtcbiAgICBjb25zdCB0eCA9IHN1cGVyLmZyb21JbXBsZW1lbnRhdGlvbihyYXdUcmFuc2FjdGlvbik7XG4gICAgaWYgKHRoaXMuX21ldGhvZD8ubmFtZSA9PT0gTWV0aG9kTmFtZXMuVHJhbnNmZXJLZWVwQWxpdmUpIHtcbiAgICAgIGNvbnN0IHR4TWV0aG9kID0gdGhpcy5fbWV0aG9kLmFyZ3MgYXMgVHJhbnNmZXJBcmdzO1xuICAgICAgdGhpcy5hbW91bnQodHhNZXRob2QudmFsdWUpO1xuICAgICAgdGhpcy50byh7XG4gICAgICAgIGFkZHJlc3M6IHV0aWxzLmRlY29kZURvdEFkZHJlc3MoXG4gICAgICAgICAgdHhNZXRob2QuZGVzdC5pZCxcbiAgICAgICAgICB1dGlscy5nZXRBZGRyZXNzRm9ybWF0KHRoaXMuX2NvaW5Db25maWcubmFtZSBhcyBEb3RBc3NldFR5cGVzKVxuICAgICAgICApLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLl9tZXRob2Q/Lm5hbWUgPT09IE1ldGhvZE5hbWVzLlRyYW5zZmVyQWxsKSB7XG4gICAgICB0aGlzLl9zd2VlcEZyZWVCYWxhbmNlID0gdHJ1ZTtcbiAgICAgIGNvbnN0IHR4TWV0aG9kID0gdGhpcy5fbWV0aG9kLmFyZ3MgYXMgVHJhbnNmZXJBbGxBcmdzO1xuICAgICAgdGhpcy5zd2VlcCh0eE1ldGhvZC5rZWVwQWxpdmUpO1xuICAgICAgdGhpcy50byh7XG4gICAgICAgIGFkZHJlc3M6IHV0aWxzLmRlY29kZURvdEFkZHJlc3MoXG4gICAgICAgICAgdHhNZXRob2QuZGVzdC5pZCxcbiAgICAgICAgICB1dGlscy5nZXRBZGRyZXNzRm9ybWF0KHRoaXMuX2NvaW5Db25maWcubmFtZSBhcyBEb3RBc3NldFR5cGVzKVxuICAgICAgICApLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLl9tZXRob2Q/Lm5hbWUgPT09IE1ldGhvZE5hbWVzLlByb3h5KSB7XG4gICAgICBjb25zdCB0eE1ldGhvZCA9IHRoaXMuX21ldGhvZC5hcmdzIGFzIFByb3h5QXJncztcbiAgICAgIHRoaXMub3duZXIoe1xuICAgICAgICBhZGRyZXNzOiB1dGlscy5kZWNvZGVEb3RBZGRyZXNzKFxuICAgICAgICAgIGdldEFkZHJlc3ModHhNZXRob2QpLFxuICAgICAgICAgIHV0aWxzLmdldEFkZHJlc3NGb3JtYXQodGhpcy5fY29pbkNvbmZpZy5uYW1lIGFzIERvdEFzc2V0VHlwZXMpXG4gICAgICAgICksXG4gICAgICB9KTtcbiAgICAgIHRoaXMuZm9yY2VQcm94eVR5cGUodHhNZXRob2QuZm9yY2VQcm94eVR5cGUpO1xuICAgICAgY29uc3QgZGVjb2RlZENhbGwgPSB1dGlscy5kZWNvZGVDYWxsTWV0aG9kKHJhd1RyYW5zYWN0aW9uLCB7XG4gICAgICAgIHJlZ2lzdHJ5OiBTaW5nbGV0b25SZWdpc3RyeS5nZXRJbnN0YW5jZSh0aGlzLl9tYXRlcmlhbCksXG4gICAgICAgIG1ldGFkYXRhUnBjOiB0aGlzLl9tYXRlcmlhbC5tZXRhZGF0YSxcbiAgICAgIH0pO1xuICAgICAgaWYgKCFkZWNvZGVkQ2FsbC52YWx1ZSB8fCAhZGVjb2RlZENhbGwuZGVzdCkge1xuICAgICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoXG4gICAgICAgICAgYEludmFsaWQgUHJveHkgVHJhbnNhY3Rpb24gTWV0aG9kOiAke3RoaXMuX21ldGhvZD8ubmFtZX0uIEV4cGVjdGVkIHRyYW5zZmVyS2VlcEFsaXZlYFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgdGhpcy5hbW91bnQoYCR7ZGVjb2RlZENhbGwudmFsdWV9YCk7XG4gICAgICB0aGlzLnRvKHtcbiAgICAgICAgYWRkcmVzczogdXRpbHMuZGVjb2RlRG90QWRkcmVzcyhcbiAgICAgICAgICBkZWNvZGVkQ2FsbC5kZXN0LmlkLFxuICAgICAgICAgIHV0aWxzLmdldEFkZHJlc3NGb3JtYXQodGhpcy5fY29pbkNvbmZpZy5uYW1lIGFzIERvdEFzc2V0VHlwZXMpXG4gICAgICAgICksXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKFxuICAgICAgICBgSW52YWxpZCBUcmFuc2FjdGlvbiBUeXBlOiAke3RoaXMuX21ldGhvZD8ubmFtZX0uIEV4cGVjdGVkIGEgdHJhbnNmZXJLZWVwQWxpdmUgb3IgYSBwcm94eSB0cmFuc2ZlcktlZXBBbGl2ZSB0cmFuc2FjdGlvbmBcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB0eDtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZVRyYW5zYWN0aW9uKF86IFRyYW5zYWN0aW9uKTogdm9pZCB7XG4gICAgc3VwZXIudmFsaWRhdGVUcmFuc2FjdGlvbihfKTtcbiAgICB0aGlzLnZhbGlkYXRlRmllbGRzKHRoaXMuX3RvLCB0aGlzLl9hbW91bnQsIHRoaXMuX293bmVyLCB0aGlzLl9mb3JjZVByb3h5VHlwZSk7XG4gIH1cblxuICBwcml2YXRlIHZhbGlkYXRlRmllbGRzKHRvOiBzdHJpbmcsIGFtb3VudDogc3RyaW5nLCByZWFsPzogc3RyaW5nLCBmb3JjZVByb3h5VHlwZT86IHN0cmluZyk6IHZvaWQge1xuICAgIGxldCB2YWxpZGF0aW9uUmVzdWx0O1xuICAgIGlmIChmb3JjZVByb3h5VHlwZSkge1xuICAgICAgdmFsaWRhdGlvblJlc3VsdCA9IFByb3h5VHJhbnNhY3Rpb25TY2hlbWEudmFsaWRhdGUoeyB0bywgYW1vdW50LCByZWFsLCBmb3JjZVByb3h5VHlwZSB9KTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuX3N3ZWVwRnJlZUJhbGFuY2UpIHtcbiAgICAgIHZhbGlkYXRpb25SZXN1bHQgPSBUcmFuc2ZlckFsbFRyYW5zYWN0aW9uU2NoZW1hLnZhbGlkYXRlKHsgdG8gfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhbGlkYXRpb25SZXN1bHQgPSBUcmFuc2ZlclRyYW5zYWN0aW9uU2NoZW1hLnZhbGlkYXRlKHsgYW1vdW50LCB0byB9KTtcbiAgICB9XG5cbiAgICBpZiAodmFsaWRhdGlvblJlc3VsdC5lcnJvcikge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKFxuICAgICAgICBgUHJveHkvVHJhbnNmZXJBbGwvVHJhbnNmZXJLZWVwQWxpdmUgVHJhbnNhY3Rpb24gdmFsaWRhdGlvbiBmYWlsZWQ6ICR7dmFsaWRhdGlvblJlc3VsdC5lcnJvci5tZXNzYWdlfWBcbiAgICAgICk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -0,0 +1,7 @@
1
+ import { TypeRegistry } from '@substrate/txwrapper-core/lib/types';
2
+ export declare class SingletonRegistry {
3
+ private static instance;
4
+ private static material;
5
+ static getInstance(material: any): TypeRegistry;
6
+ }
7
+ //# sourceMappingURL=singletonRegistry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"singletonRegistry.d.ts","sourceRoot":"","sources":["../../../src/lib/singletonRegistry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAInE,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAe;IACtC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAW;IAElC,MAAM,CAAC,WAAW,CAAC,QAAQ,KAAA,GAAG,YAAY;CAY3C"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SingletonRegistry = void 0;
4
+ const txwrapper_polkadot_1 = require("@substrate/txwrapper-polkadot");
5
+ class SingletonRegistry {
6
+ static getInstance(material) {
7
+ if (material !== SingletonRegistry.material) {
8
+ SingletonRegistry.material = material;
9
+ SingletonRegistry.instance = (0, txwrapper_polkadot_1.getRegistry)({
10
+ chainName: material.chainName,
11
+ specName: material.specName,
12
+ specVersion: material.specVersion,
13
+ metadataRpc: material.metadata,
14
+ });
15
+ }
16
+ return SingletonRegistry.instance;
17
+ }
18
+ }
19
+ exports.SingletonRegistry = SingletonRegistry;
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2luZ2xldG9uUmVnaXN0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3NpbmdsZXRvblJlZ2lzdHJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLHNFQUE0RDtBQUc1RCxNQUFhLGlCQUFpQjtJQUk1QixNQUFNLENBQUMsV0FBVyxDQUFDLFFBQVE7UUFDekIsSUFBSSxRQUFRLEtBQUssaUJBQWlCLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDNUMsaUJBQWlCLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztZQUN0QyxpQkFBaUIsQ0FBQyxRQUFRLEdBQUcsSUFBQSxnQ0FBVyxFQUFDO2dCQUN2QyxTQUFTLEVBQUUsUUFBUSxDQUFDLFNBQVM7Z0JBQzdCLFFBQVEsRUFBRSxRQUFRLENBQUMsUUFBZ0M7Z0JBQ25ELFdBQVcsRUFBRSxRQUFRLENBQUMsV0FBVztnQkFDakMsV0FBVyxFQUFFLFFBQVEsQ0FBQyxRQUF5QjthQUNoRCxDQUFDLENBQUM7UUFDTCxDQUFDO1FBQ0QsT0FBTyxpQkFBaUIsQ0FBQyxRQUFRLENBQUM7SUFDcEMsQ0FBQztDQUNGO0FBaEJELDhDQWdCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBvbGthZG90U3BlY05hbWVUeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBUeXBlUmVnaXN0cnkgfSBmcm9tICdAc3Vic3RyYXRlL3R4d3JhcHBlci1jb3JlL2xpYi90eXBlcyc7XG5pbXBvcnQgeyBnZXRSZWdpc3RyeSB9IGZyb20gJ0BzdWJzdHJhdGUvdHh3cmFwcGVyLXBvbGthZG90JztcbmltcG9ydCB7IE1hdGVyaWFsIH0gZnJvbSAnLi9pZmFjZSc7XG5cbmV4cG9ydCBjbGFzcyBTaW5nbGV0b25SZWdpc3RyeSB7XG4gIHByaXZhdGUgc3RhdGljIGluc3RhbmNlOiBUeXBlUmVnaXN0cnk7XG4gIHByaXZhdGUgc3RhdGljIG1hdGVyaWFsOiBNYXRlcmlhbDtcblxuICBzdGF0aWMgZ2V0SW5zdGFuY2UobWF0ZXJpYWwpOiBUeXBlUmVnaXN0cnkge1xuICAgIGlmIChtYXRlcmlhbCAhPT0gU2luZ2xldG9uUmVnaXN0cnkubWF0ZXJpYWwpIHtcbiAgICAgIFNpbmdsZXRvblJlZ2lzdHJ5Lm1hdGVyaWFsID0gbWF0ZXJpYWw7XG4gICAgICBTaW5nbGV0b25SZWdpc3RyeS5pbnN0YW5jZSA9IGdldFJlZ2lzdHJ5KHtcbiAgICAgICAgY2hhaW5OYW1lOiBtYXRlcmlhbC5jaGFpbk5hbWUsXG4gICAgICAgIHNwZWNOYW1lOiBtYXRlcmlhbC5zcGVjTmFtZSBhcyBQb2xrYWRvdFNwZWNOYW1lVHlwZSxcbiAgICAgICAgc3BlY1ZlcnNpb246IG1hdGVyaWFsLnNwZWNWZXJzaW9uLFxuICAgICAgICBtZXRhZGF0YVJwYzogbWF0ZXJpYWwubWV0YWRhdGEgYXMgYDB4JHtzdHJpbmd9YCxcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gU2luZ2xldG9uUmVnaXN0cnkuaW5zdGFuY2U7XG4gIH1cbn1cbiJdfQ==