@bitgo-beta/sdk-coin-stx 1.4.3-alpha.401 → 1.4.3-alpha.403

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 (95) hide show
  1. package/dist/src/index.d.ts +7 -0
  2. package/dist/src/index.d.ts.map +1 -0
  3. package/dist/src/index.js +46 -0
  4. package/dist/src/lib/abstractContractBuilder.d.ts +19 -0
  5. package/dist/src/lib/abstractContractBuilder.d.ts.map +1 -0
  6. package/dist/src/lib/abstractContractBuilder.js +70 -0
  7. package/dist/src/lib/constants.d.ts +9 -0
  8. package/dist/src/lib/constants.d.ts.map +1 -0
  9. package/dist/src/lib/constants.js +21 -0
  10. package/dist/src/lib/contractBuilder.d.ts +33 -0
  11. package/dist/src/lib/contractBuilder.d.ts.map +1 -0
  12. package/dist/src/lib/contractBuilder.js +116 -0
  13. package/dist/src/lib/fungibleTokenTransferBuilder.d.ts +62 -0
  14. package/dist/src/lib/fungibleTokenTransferBuilder.d.ts.map +1 -0
  15. package/dist/src/lib/fungibleTokenTransferBuilder.js +131 -0
  16. package/dist/src/lib/iface.d.ts +104 -0
  17. package/dist/src/lib/iface.d.ts.map +1 -0
  18. package/dist/src/lib/iface.js +3 -0
  19. package/dist/src/lib/index.d.ts +6 -0
  20. package/dist/src/lib/index.d.ts.map +1 -0
  21. package/dist/src/lib/index.js +47 -0
  22. package/dist/src/lib/keyPair.d.ts +55 -0
  23. package/dist/src/lib/keyPair.d.ts.map +1 -0
  24. package/dist/src/lib/keyPair.js +119 -0
  25. package/dist/src/lib/sendmanyBuilder.d.ts +23 -0
  26. package/dist/src/lib/sendmanyBuilder.d.ts.map +1 -0
  27. package/dist/src/lib/sendmanyBuilder.js +75 -0
  28. package/dist/src/lib/transaction.d.ts +49 -0
  29. package/dist/src/lib/transaction.d.ts.map +1 -0
  30. package/dist/src/lib/transaction.js +241 -0
  31. package/dist/src/lib/transactionBuilder.d.ts +86 -0
  32. package/dist/src/lib/transactionBuilder.d.ts.map +1 -0
  33. package/dist/src/lib/transactionBuilder.js +263 -0
  34. package/dist/src/lib/transactionBuilderFactory.d.ts +32 -0
  35. package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -0
  36. package/dist/src/lib/transactionBuilderFactory.js +88 -0
  37. package/dist/src/lib/transferBuilder.d.ts +30 -0
  38. package/dist/src/lib/transferBuilder.d.ts.map +1 -0
  39. package/dist/src/lib/transferBuilder.js +99 -0
  40. package/dist/src/lib/utils.d.ts +230 -0
  41. package/dist/src/lib/utils.d.ts.map +1 -0
  42. package/dist/src/lib/utils.js +582 -0
  43. package/dist/src/register.d.ts +3 -0
  44. package/dist/src/register.d.ts.map +1 -0
  45. package/dist/src/register.js +15 -0
  46. package/dist/src/sip10Token.d.ts +22 -0
  47. package/dist/src/sip10Token.d.ts.map +1 -0
  48. package/dist/src/sip10Token.js +128 -0
  49. package/dist/src/stx.d.ts +200 -0
  50. package/dist/src/stx.d.ts.map +1 -0
  51. package/dist/src/stx.js +605 -0
  52. package/dist/src/tstx.d.ts +16 -0
  53. package/dist/src/tstx.d.ts.map +1 -0
  54. package/dist/src/tstx.js +24 -0
  55. package/dist/src/types.d.ts +34 -0
  56. package/dist/src/types.d.ts.map +1 -0
  57. package/dist/src/types.js +3 -0
  58. package/dist/test/fixtures.d.ts +119 -0
  59. package/dist/test/fixtures.d.ts.map +1 -0
  60. package/dist/test/fixtures.js +147 -0
  61. package/dist/test/unit/keyPair.d.ts +2 -0
  62. package/dist/test/unit/keyPair.d.ts.map +1 -0
  63. package/dist/test/unit/keyPair.js +144 -0
  64. package/dist/test/unit/resources.d.ts +97 -0
  65. package/dist/test/unit/resources.d.ts.map +1 -0
  66. package/dist/test/unit/resources.js +144 -0
  67. package/dist/test/unit/sip10Token.d.ts +2 -0
  68. package/dist/test/unit/sip10Token.d.ts.map +1 -0
  69. package/dist/test/unit/sip10Token.js +374 -0
  70. package/dist/test/unit/stx.d.ts +2 -0
  71. package/dist/test/unit/stx.d.ts.map +1 -0
  72. package/dist/test/unit/stx.js +470 -0
  73. package/dist/test/unit/transaction.d.ts +2 -0
  74. package/dist/test/unit/transaction.d.ts.map +1 -0
  75. package/dist/test/unit/transaction.js +83 -0
  76. package/dist/test/unit/transactionBuilder/contractBuilder.d.ts +2 -0
  77. package/dist/test/unit/transactionBuilder/contractBuilder.d.ts.map +1 -0
  78. package/dist/test/unit/transactionBuilder/contractBuilder.js +421 -0
  79. package/dist/test/unit/transactionBuilder/fungibleTokenTransferBuilder.d.ts +2 -0
  80. package/dist/test/unit/transactionBuilder/fungibleTokenTransferBuilder.d.ts.map +1 -0
  81. package/dist/test/unit/transactionBuilder/fungibleTokenTransferBuilder.js +187 -0
  82. package/dist/test/unit/transactionBuilder/sendmanyBuilder.d.ts +2 -0
  83. package/dist/test/unit/transactionBuilder/sendmanyBuilder.d.ts.map +1 -0
  84. package/dist/test/unit/transactionBuilder/sendmanyBuilder.js +140 -0
  85. package/dist/test/unit/transactionBuilder/transferBuilder.d.ts +2 -0
  86. package/dist/test/unit/transactionBuilder/transferBuilder.d.ts.map +1 -0
  87. package/dist/test/unit/transactionBuilder/transferBuilder.js +347 -0
  88. package/dist/test/unit/util.d.ts +2 -0
  89. package/dist/test/unit/util.d.ts.map +1 -0
  90. package/dist/test/unit/util.js +326 -0
  91. package/dist/tsconfig.tsbuildinfo +1 -0
  92. package/package.json +9 -6
  93. package/.eslintignore +0 -5
  94. package/.mocharc.yml +0 -8
  95. package/CHANGELOG.md +0 -835
@@ -0,0 +1,7 @@
1
+ export * as StxLib from './lib';
2
+ export * from './stx';
3
+ export * from './tstx';
4
+ export * from './types';
5
+ export * from './register';
6
+ export * from './sip10Token';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,OAAO,CAAC;AAChC,cAAc,OAAO,CAAC;AACtB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC"}
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
36
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.StxLib = void 0;
40
+ exports.StxLib = __importStar(require("./lib"));
41
+ __exportStar(require("./stx"), exports);
42
+ __exportStar(require("./tstx"), exports);
43
+ __exportStar(require("./types"), exports);
44
+ __exportStar(require("./register"), exports);
45
+ __exportStar(require("./sip10Token"), exports);
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsZ0RBQWdDO0FBQ2hDLHdDQUFzQjtBQUN0Qix5Q0FBdUI7QUFDdkIsMENBQXdCO0FBQ3hCLDZDQUEyQjtBQUMzQiwrQ0FBNkIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBhcyBTdHhMaWIgZnJvbSAnLi9saWInO1xuZXhwb3J0ICogZnJvbSAnLi9zdHgnO1xuZXhwb3J0ICogZnJvbSAnLi90c3R4JztcbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9yZWdpc3Rlcic7XG5leHBvcnQgKiBmcm9tICcuL3NpcDEwVG9rZW4nO1xuIl19
@@ -0,0 +1,19 @@
1
+ import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
2
+ import { ClarityValue, PostCondition, PostConditionMode } from '@stacks/transactions';
3
+ import { Transaction } from './transaction';
4
+ import { TransactionBuilder } from './transactionBuilder';
5
+ export declare abstract class AbstractContractBuilder extends TransactionBuilder {
6
+ private _options;
7
+ protected _contractAddress: string;
8
+ protected _contractName: string;
9
+ protected _functionName: string;
10
+ protected _postConditionMode?: PostConditionMode;
11
+ protected _postConditions?: PostCondition[];
12
+ protected _functionArgs: ClarityValue[];
13
+ constructor(_coinConfig: Readonly<CoinConfig>);
14
+ initBuilder(tx: Transaction): void;
15
+ /** @inheritdoc */
16
+ protected buildImplementation(): Promise<Transaction>;
17
+ private buildContractCallOptions;
18
+ }
19
+ //# sourceMappingURL=abstractContractBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"abstractContractBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/abstractContractBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAE7D,OAAO,EACL,YAAY,EAIZ,aAAa,EACb,iBAAiB,EAGlB,MAAM,sBAAsB,CAAC;AAO9B,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,8BAAsB,uBAAwB,SAAQ,kBAAkB;IACtE,OAAO,CAAC,QAAQ,CAAoE;IACpF,SAAS,CAAC,gBAAgB,EAAE,MAAM,CAAC;IACnC,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC;IAChC,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC;IAChC,SAAS,CAAC,kBAAkB,CAAC,EAAE,iBAAiB,CAAC;IACjD,SAAS,CAAC,eAAe,CAAC,EAAE,aAAa,EAAE,CAAC;IAC5C,SAAS,CAAC,aAAa,EAAE,YAAY,EAAE,CAAC;gBAE5B,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,WAAW,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IAgBlC,kBAAkB;cACF,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;IAO3D,OAAO,CAAC,wBAAwB;CA4BjC"}
@@ -0,0 +1,70 @@
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.AbstractContractBuilder = void 0;
7
+ const bn_js_1 = __importDefault(require("bn.js"));
8
+ const transactions_1 = require("@stacks/transactions");
9
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
10
+ const transactionBuilder_1 = require("./transactionBuilder");
11
+ class AbstractContractBuilder extends transactionBuilder_1.TransactionBuilder {
12
+ constructor(_coinConfig) {
13
+ super(_coinConfig);
14
+ }
15
+ initBuilder(tx) {
16
+ const txData = tx.toJson();
17
+ if (txData.payload === undefined) {
18
+ throw new sdk_core_1.InvalidTransactionError('payload must not be undefined');
19
+ }
20
+ if (txData.payload.payloadType === transactions_1.PayloadType.ContractCall) {
21
+ this._contractAddress = txData.payload.contractAddress;
22
+ this._contractName = txData.payload.contractName;
23
+ this._functionName = txData.payload.functionName;
24
+ this._functionArgs = txData.payload.functionArgs;
25
+ super.initBuilder(tx);
26
+ }
27
+ else {
28
+ throw new sdk_core_1.BuildTransactionError('Transaction should be contract call');
29
+ }
30
+ }
31
+ /** @inheritdoc */
32
+ async buildImplementation() {
33
+ this._options = this.buildContractCallOptions();
34
+ this.transaction.setTransactionType(sdk_core_1.TransactionType.ContractCall);
35
+ this.transaction.stxTransaction = await (0, transactions_1.makeUnsignedContractCall)(this._options);
36
+ return await super.buildImplementation();
37
+ }
38
+ buildContractCallOptions() {
39
+ const defaultOpts = {
40
+ contractAddress: this._contractAddress,
41
+ contractName: this._contractName,
42
+ functionName: this._functionName,
43
+ functionArgs: this._functionArgs,
44
+ postConditionMode: this._postConditionMode,
45
+ postConditions: this._postConditions,
46
+ anchorMode: this._anchorMode,
47
+ network: this._network,
48
+ fee: new bn_js_1.default(this._fee.fee),
49
+ nonce: new bn_js_1.default(this._nonce),
50
+ };
51
+ if (this._fromPubKeys.length === 1) {
52
+ return {
53
+ ...defaultOpts,
54
+ publicKey: this._fromPubKeys[0],
55
+ };
56
+ }
57
+ else if (this._fromPubKeys.length > 1) {
58
+ return {
59
+ ...defaultOpts,
60
+ publicKeys: this._fromPubKeys,
61
+ numSignatures: this._numberSignatures,
62
+ };
63
+ }
64
+ else {
65
+ throw new sdk_core_1.InvalidParameterValueError('supply at least 1 public key');
66
+ }
67
+ }
68
+ }
69
+ exports.AbstractContractBuilder = AbstractContractBuilder;
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3RDb250cmFjdEJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2Fic3RyYWN0Q29udHJhY3RCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBLGtEQUEyQjtBQUMzQix1REFTOEI7QUFDOUIsbURBSzhCO0FBRTlCLDZEQUEwRDtBQUUxRCxNQUFzQix1QkFBd0IsU0FBUSx1Q0FBa0I7SUFTdEUsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUVELFdBQVcsQ0FBQyxFQUFlO1FBQ3pCLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUMzQixJQUFJLE1BQU0sQ0FBQyxPQUFPLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDakMsTUFBTSxJQUFJLGtDQUF1QixDQUFDLCtCQUErQixDQUFDLENBQUM7UUFDckUsQ0FBQztRQUNELElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEtBQUssMEJBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUM1RCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUM7WUFDdkQsSUFBSSxDQUFDLGFBQWEsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQztZQUNqRCxJQUFJLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDO1lBQ2pELElBQUksQ0FBQyxhQUFhLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUM7WUFDakQsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN4QixDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDO1FBQ3pFLENBQUM7SUFDSCxDQUFDO0lBRUQsa0JBQWtCO0lBQ1IsS0FBSyxDQUFDLG1CQUFtQjtRQUNqQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1FBQ2hELElBQUksQ0FBQyxXQUFXLENBQUMsa0JBQWtCLENBQUMsMEJBQWUsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNsRSxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsR0FBRyxNQUFNLElBQUEsdUNBQXdCLEVBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2hGLE9BQU8sTUFBTSxLQUFLLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUMzQyxDQUFDO0lBRU8sd0JBQXdCO1FBQzlCLE1BQU0sV0FBVyxHQUF3QjtZQUN2QyxlQUFlLEVBQUUsSUFBSSxDQUFDLGdCQUFnQjtZQUN0QyxZQUFZLEVBQUUsSUFBSSxDQUFDLGFBQWE7WUFDaEMsWUFBWSxFQUFFLElBQUksQ0FBQyxhQUFhO1lBQ2hDLFlBQVksRUFBRSxJQUFJLENBQUMsYUFBYTtZQUNoQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsa0JBQWtCO1lBQzFDLGNBQWMsRUFBRSxJQUFJLENBQUMsZUFBZTtZQUNwQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFdBQVc7WUFDNUIsT0FBTyxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3RCLEdBQUcsRUFBRSxJQUFJLGVBQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztZQUM5QixLQUFLLEVBQUUsSUFBSSxlQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztTQUMvQixDQUFDO1FBQ0YsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNuQyxPQUFPO2dCQUNMLEdBQUcsV0FBVztnQkFDZCxTQUFTLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7YUFDaEMsQ0FBQztRQUNKLENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3hDLE9BQU87Z0JBQ0wsR0FBRyxXQUFXO2dCQUNkLFVBQVUsRUFBRSxJQUFJLENBQUMsWUFBWTtnQkFDN0IsYUFBYSxFQUFFLElBQUksQ0FBQyxpQkFBaUI7YUFDdEMsQ0FBQztRQUNKLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxJQUFJLHFDQUEwQixDQUFDLDhCQUE4QixDQUFDLENBQUM7UUFDdkUsQ0FBQztJQUNILENBQUM7Q0FDRjtBQWpFRCwwREFpRUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgQmlnTnVtIGZyb20gJ2JuLmpzJztcbmltcG9ydCB7XG4gIENsYXJpdHlWYWx1ZSxcbiAgQ29udHJhY3RDYWxsT3B0aW9ucyxcbiAgbWFrZVVuc2lnbmVkQ29udHJhY3RDYWxsLFxuICBQYXlsb2FkVHlwZSxcbiAgUG9zdENvbmRpdGlvbixcbiAgUG9zdENvbmRpdGlvbk1vZGUsXG4gIFVuc2lnbmVkQ29udHJhY3RDYWxsT3B0aW9ucyxcbiAgVW5zaWduZWRNdWx0aVNpZ0NvbnRyYWN0Q2FsbE9wdGlvbnMsXG59IGZyb20gJ0BzdGFja3MvdHJhbnNhY3Rpb25zJztcbmltcG9ydCB7XG4gIEJ1aWxkVHJhbnNhY3Rpb25FcnJvcixcbiAgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IsXG4gIEludmFsaWRUcmFuc2FjdGlvbkVycm9yLFxuICBUcmFuc2FjdGlvblR5cGUsXG59IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlcic7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdENvbnRyYWN0QnVpbGRlciBleHRlbmRzIFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIHByaXZhdGUgX29wdGlvbnM6IFVuc2lnbmVkQ29udHJhY3RDYWxsT3B0aW9ucyB8IFVuc2lnbmVkTXVsdGlTaWdDb250cmFjdENhbGxPcHRpb25zO1xuICBwcm90ZWN0ZWQgX2NvbnRyYWN0QWRkcmVzczogc3RyaW5nO1xuICBwcm90ZWN0ZWQgX2NvbnRyYWN0TmFtZTogc3RyaW5nO1xuICBwcm90ZWN0ZWQgX2Z1bmN0aW9uTmFtZTogc3RyaW5nO1xuICBwcm90ZWN0ZWQgX3Bvc3RDb25kaXRpb25Nb2RlPzogUG9zdENvbmRpdGlvbk1vZGU7XG4gIHByb3RlY3RlZCBfcG9zdENvbmRpdGlvbnM/OiBQb3N0Q29uZGl0aW9uW107XG4gIHByb3RlY3RlZCBfZnVuY3Rpb25BcmdzOiBDbGFyaXR5VmFsdWVbXTtcblxuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gIH1cblxuICBpbml0QnVpbGRlcih0eDogVHJhbnNhY3Rpb24pOiB2b2lkIHtcbiAgICBjb25zdCB0eERhdGEgPSB0eC50b0pzb24oKTtcbiAgICBpZiAodHhEYXRhLnBheWxvYWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdwYXlsb2FkIG11c3Qgbm90IGJlIHVuZGVmaW5lZCcpO1xuICAgIH1cbiAgICBpZiAodHhEYXRhLnBheWxvYWQucGF5bG9hZFR5cGUgPT09IFBheWxvYWRUeXBlLkNvbnRyYWN0Q2FsbCkge1xuICAgICAgdGhpcy5fY29udHJhY3RBZGRyZXNzID0gdHhEYXRhLnBheWxvYWQuY29udHJhY3RBZGRyZXNzO1xuICAgICAgdGhpcy5fY29udHJhY3ROYW1lID0gdHhEYXRhLnBheWxvYWQuY29udHJhY3ROYW1lO1xuICAgICAgdGhpcy5fZnVuY3Rpb25OYW1lID0gdHhEYXRhLnBheWxvYWQuZnVuY3Rpb25OYW1lO1xuICAgICAgdGhpcy5fZnVuY3Rpb25BcmdzID0gdHhEYXRhLnBheWxvYWQuZnVuY3Rpb25BcmdzO1xuICAgICAgc3VwZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdUcmFuc2FjdGlvbiBzaG91bGQgYmUgY29udHJhY3QgY2FsbCcpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgYnVpbGRJbXBsZW1lbnRhdGlvbigpOiBQcm9taXNlPFRyYW5zYWN0aW9uPiB7XG4gICAgdGhpcy5fb3B0aW9ucyA9IHRoaXMuYnVpbGRDb250cmFjdENhbGxPcHRpb25zKCk7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5zZXRUcmFuc2FjdGlvblR5cGUoVHJhbnNhY3Rpb25UeXBlLkNvbnRyYWN0Q2FsbCk7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5zdHhUcmFuc2FjdGlvbiA9IGF3YWl0IG1ha2VVbnNpZ25lZENvbnRyYWN0Q2FsbCh0aGlzLl9vcHRpb25zKTtcbiAgICByZXR1cm4gYXdhaXQgc3VwZXIuYnVpbGRJbXBsZW1lbnRhdGlvbigpO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZENvbnRyYWN0Q2FsbE9wdGlvbnMoKTogVW5zaWduZWRDb250cmFjdENhbGxPcHRpb25zIHwgVW5zaWduZWRNdWx0aVNpZ0NvbnRyYWN0Q2FsbE9wdGlvbnMge1xuICAgIGNvbnN0IGRlZmF1bHRPcHRzOiBDb250cmFjdENhbGxPcHRpb25zID0ge1xuICAgICAgY29udHJhY3RBZGRyZXNzOiB0aGlzLl9jb250cmFjdEFkZHJlc3MsXG4gICAgICBjb250cmFjdE5hbWU6IHRoaXMuX2NvbnRyYWN0TmFtZSxcbiAgICAgIGZ1bmN0aW9uTmFtZTogdGhpcy5fZnVuY3Rpb25OYW1lLFxuICAgICAgZnVuY3Rpb25BcmdzOiB0aGlzLl9mdW5jdGlvbkFyZ3MsXG4gICAgICBwb3N0Q29uZGl0aW9uTW9kZTogdGhpcy5fcG9zdENvbmRpdGlvbk1vZGUsXG4gICAgICBwb3N0Q29uZGl0aW9uczogdGhpcy5fcG9zdENvbmRpdGlvbnMsXG4gICAgICBhbmNob3JNb2RlOiB0aGlzLl9hbmNob3JNb2RlLFxuICAgICAgbmV0d29yazogdGhpcy5fbmV0d29yayxcbiAgICAgIGZlZTogbmV3IEJpZ051bSh0aGlzLl9mZWUuZmVlKSxcbiAgICAgIG5vbmNlOiBuZXcgQmlnTnVtKHRoaXMuX25vbmNlKSxcbiAgICB9O1xuICAgIGlmICh0aGlzLl9mcm9tUHViS2V5cy5sZW5ndGggPT09IDEpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmRlZmF1bHRPcHRzLFxuICAgICAgICBwdWJsaWNLZXk6IHRoaXMuX2Zyb21QdWJLZXlzWzBdLFxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuX2Zyb21QdWJLZXlzLmxlbmd0aCA+IDEpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmRlZmF1bHRPcHRzLFxuICAgICAgICBwdWJsaWNLZXlzOiB0aGlzLl9mcm9tUHViS2V5cyxcbiAgICAgICAgbnVtU2lnbmF0dXJlczogdGhpcy5fbnVtYmVyU2lnbmF0dXJlcyxcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvcignc3VwcGx5IGF0IGxlYXN0IDEgcHVibGljIGtleScpO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -0,0 +1,9 @@
1
+ export declare const FUNCTION_NAME_SENDMANY = "send-many";
2
+ export declare const CONTRACT_NAME_SENDMANY = "send-many-memo";
3
+ export declare const CONTRACT_NAME_STAKING = "pox-4";
4
+ export declare const FUNCTION_NAME_TRANSFER = "transfer";
5
+ export declare const VALID_CONTRACT_FUNCTION_NAMES: string[];
6
+ export declare const DEFAULT_SEED_SIZE_BYTES = 64;
7
+ export declare const ANCHOR_MODE = 3;
8
+ export declare const DEFAULT_MULTISIG_SIG_NUMBER = 2;
9
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/lib/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,sBAAsB,cAAc,CAAC;AAClD,eAAO,MAAM,sBAAsB,mBAAmB,CAAC;AACvD,eAAO,MAAM,qBAAqB,UAAU,CAAC;AAC7C,eAAO,MAAM,sBAAsB,aAAa,CAAC;AAEjD,eAAO,MAAM,6BAA6B,UAQzC,CAAC;AAEF,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAG1C,eAAO,MAAM,WAAW,IAAI,CAAC;AAC7B,eAAO,MAAM,2BAA2B,IAAI,CAAC"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DEFAULT_MULTISIG_SIG_NUMBER = exports.ANCHOR_MODE = exports.DEFAULT_SEED_SIZE_BYTES = exports.VALID_CONTRACT_FUNCTION_NAMES = exports.FUNCTION_NAME_TRANSFER = exports.CONTRACT_NAME_STAKING = exports.CONTRACT_NAME_SENDMANY = exports.FUNCTION_NAME_SENDMANY = void 0;
4
+ exports.FUNCTION_NAME_SENDMANY = 'send-many';
5
+ exports.CONTRACT_NAME_SENDMANY = 'send-many-memo';
6
+ exports.CONTRACT_NAME_STAKING = 'pox-4';
7
+ exports.FUNCTION_NAME_TRANSFER = 'transfer';
8
+ exports.VALID_CONTRACT_FUNCTION_NAMES = [
9
+ 'stack-stx',
10
+ 'delegate-stx',
11
+ 'delegate-stack-stx',
12
+ 'stack-aggregation-commit',
13
+ 'revoke-delegate-stx',
14
+ 'send-many',
15
+ 'transfer',
16
+ ];
17
+ exports.DEFAULT_SEED_SIZE_BYTES = 64;
18
+ // https://github.com/stacksgov/sips/blob/main/sips/sip-005/sip-005-blocks-and-transactions.md#transaction-encoding
19
+ exports.ANCHOR_MODE = 3;
20
+ exports.DEFAULT_MULTISIG_SIG_NUMBER = 2;
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQWEsUUFBQSxzQkFBc0IsR0FBRyxXQUFXLENBQUM7QUFDckMsUUFBQSxzQkFBc0IsR0FBRyxnQkFBZ0IsQ0FBQztBQUMxQyxRQUFBLHFCQUFxQixHQUFHLE9BQU8sQ0FBQztBQUNoQyxRQUFBLHNCQUFzQixHQUFHLFVBQVUsQ0FBQztBQUVwQyxRQUFBLDZCQUE2QixHQUFHO0lBQzNDLFdBQVc7SUFDWCxjQUFjO0lBQ2Qsb0JBQW9CO0lBQ3BCLDBCQUEwQjtJQUMxQixxQkFBcUI7SUFDckIsV0FBVztJQUNYLFVBQVU7Q0FDWCxDQUFDO0FBRVcsUUFBQSx1QkFBdUIsR0FBRyxFQUFFLENBQUM7QUFFMUMsbUhBQW1IO0FBQ3RHLFFBQUEsV0FBVyxHQUFHLENBQUMsQ0FBQztBQUNoQixRQUFBLDJCQUEyQixHQUFHLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBGVU5DVElPTl9OQU1FX1NFTkRNQU5ZID0gJ3NlbmQtbWFueSc7XG5leHBvcnQgY29uc3QgQ09OVFJBQ1RfTkFNRV9TRU5ETUFOWSA9ICdzZW5kLW1hbnktbWVtbyc7XG5leHBvcnQgY29uc3QgQ09OVFJBQ1RfTkFNRV9TVEFLSU5HID0gJ3BveC00JztcbmV4cG9ydCBjb25zdCBGVU5DVElPTl9OQU1FX1RSQU5TRkVSID0gJ3RyYW5zZmVyJztcblxuZXhwb3J0IGNvbnN0IFZBTElEX0NPTlRSQUNUX0ZVTkNUSU9OX05BTUVTID0gW1xuICAnc3RhY2stc3R4JyxcbiAgJ2RlbGVnYXRlLXN0eCcsXG4gICdkZWxlZ2F0ZS1zdGFjay1zdHgnLFxuICAnc3RhY2stYWdncmVnYXRpb24tY29tbWl0JyxcbiAgJ3Jldm9rZS1kZWxlZ2F0ZS1zdHgnLFxuICAnc2VuZC1tYW55JyxcbiAgJ3RyYW5zZmVyJyxcbl07XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX1NFRURfU0laRV9CWVRFUyA9IDY0O1xuXG4vLyBodHRwczovL2dpdGh1Yi5jb20vc3RhY2tzZ292L3NpcHMvYmxvYi9tYWluL3NpcHMvc2lwLTAwNS9zaXAtMDA1LWJsb2Nrcy1hbmQtdHJhbnNhY3Rpb25zLm1kI3RyYW5zYWN0aW9uLWVuY29kaW5nXG5leHBvcnQgY29uc3QgQU5DSE9SX01PREUgPSAzO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfTVVMVElTSUdfU0lHX05VTUJFUiA9IDI7XG4iXX0=
@@ -0,0 +1,33 @@
1
+ import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
2
+ import { ClarityValue } from '@stacks/transactions';
3
+ import { Transaction } from './transaction';
4
+ import { ClarityValueJson } from './iface';
5
+ import { AbstractContractBuilder } from './abstractContractBuilder';
6
+ export declare class ContractBuilder extends AbstractContractBuilder {
7
+ constructor(_coinConfig: Readonly<CoinConfig>);
8
+ initBuilder(tx: Transaction): void;
9
+ /**
10
+ * Set the contract address
11
+ *
12
+ * @param {string} address the address deployed the contract
13
+ * @returns {ContractBuilder} the builder with the new parameter set
14
+ */
15
+ contractAddress(address: string): this;
16
+ /**
17
+ * Set the contract name
18
+ *
19
+ * @param {string} name name of contract
20
+ * @returns {ContractBuilder} the builder with the new parameter set
21
+ */
22
+ contractName(name: string): this;
23
+ /**
24
+ * Set the function name in contract
25
+ *
26
+ * @param {string} name name of function
27
+ * @returns {ContractBuilder} the builder with the new parameter set
28
+ */
29
+ functionName(name: string): this;
30
+ functionArgs(args: ClarityValueJson[] | ClarityValue[]): this;
31
+ private parseCv;
32
+ }
33
+ //# sourceMappingURL=contractBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contractBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/contractBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAuC,MAAM,qBAAqB,CAAC;AAClG,OAAO,EAKL,YAAY,EAKb,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAG3C,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,qBAAa,eAAgB,SAAQ,uBAAuB;gBAC9C,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,WAAW,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IAUlC;;;;;OAKG;IACH,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAWtC;;;;;OAKG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAWhC;;;;;OAKG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAWhC,YAAY,CAAC,IAAI,EAAE,gBAAgB,EAAE,GAAG,YAAY,EAAE,GAAG,IAAI;IAY7D,OAAO,CAAC,OAAO;CA8BhB"}
@@ -0,0 +1,116 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ContractBuilder = void 0;
4
+ const transactions_1 = require("@stacks/transactions");
5
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
6
+ const utils_1 = require("./utils");
7
+ const _1 = require(".");
8
+ const constants_1 = require("./constants");
9
+ const abstractContractBuilder_1 = require("./abstractContractBuilder");
10
+ class ContractBuilder extends abstractContractBuilder_1.AbstractContractBuilder {
11
+ constructor(_coinConfig) {
12
+ super(_coinConfig);
13
+ }
14
+ initBuilder(tx) {
15
+ super.initBuilder(tx);
16
+ // Retro compatibility, checks parameters.
17
+ this.contractAddress(this._contractAddress);
18
+ this.contractName(this._contractName);
19
+ this.functionName(this._functionName);
20
+ this.functionArgs(this._functionArgs);
21
+ }
22
+ // region Contract fields
23
+ /**
24
+ * Set the contract address
25
+ *
26
+ * @param {string} address the address deployed the contract
27
+ * @returns {ContractBuilder} the builder with the new parameter set
28
+ */
29
+ contractAddress(address) {
30
+ if (!(0, utils_1.isValidAddress)(address)) {
31
+ throw new sdk_core_1.InvalidParameterValueError('Invalid address');
32
+ }
33
+ if (!_1.Utils.isValidContractAddress(address, this._coinConfig.network)) {
34
+ throw new sdk_core_1.InvalidParameterValueError('Invalid contract address');
35
+ }
36
+ this._contractAddress = address;
37
+ return this;
38
+ }
39
+ /**
40
+ * Set the contract name
41
+ *
42
+ * @param {string} name name of contract
43
+ * @returns {ContractBuilder} the builder with the new parameter set
44
+ */
45
+ contractName(name) {
46
+ if (name.length === 0) {
47
+ throw new sdk_core_1.InvalidParameterValueError('Invalid name');
48
+ }
49
+ if (name !== constants_1.CONTRACT_NAME_STAKING && name !== constants_1.CONTRACT_NAME_SENDMANY) {
50
+ throw new sdk_core_1.InvalidParameterValueError('Only pox-4 and send-many-memo contracts supported');
51
+ }
52
+ this._contractName = name;
53
+ return this;
54
+ }
55
+ /**
56
+ * Set the function name in contract
57
+ *
58
+ * @param {string} name name of function
59
+ * @returns {ContractBuilder} the builder with the new parameter set
60
+ */
61
+ functionName(name) {
62
+ if (name.length === 0) {
63
+ throw new sdk_core_1.InvalidParameterValueError('Invalid name');
64
+ }
65
+ if (!_1.Utils.isValidContractFunctionName(name)) {
66
+ throw new sdk_core_1.InvalidParameterValueError(`${name} is not supported contract function name`);
67
+ }
68
+ this._functionName = name;
69
+ return this;
70
+ }
71
+ functionArgs(args) {
72
+ this._functionArgs = args.map((arg) => {
73
+ if (!transactions_1.ClarityType[arg.type]) {
74
+ return this.parseCv(arg);
75
+ }
76
+ else {
77
+ // got direct clarity value after deserialization in fromImplementation
78
+ return arg;
79
+ }
80
+ });
81
+ return this;
82
+ }
83
+ parseCv(arg) {
84
+ switch (arg.type) {
85
+ case 'optional':
86
+ if (arg.val === undefined) {
87
+ return (0, transactions_1.noneCV)();
88
+ }
89
+ else {
90
+ return (0, transactions_1.someCV)(this.parseCv(arg.val));
91
+ }
92
+ case 'tuple':
93
+ if (arg.val instanceof Array) {
94
+ const data = {};
95
+ arg.val.forEach((a) => {
96
+ data[a.key] = this.parseCv({ type: a.type, val: a.val });
97
+ });
98
+ return (0, transactions_1.tupleCV)(data);
99
+ }
100
+ throw new sdk_core_1.InvalidParameterValueError('tuple require Array val');
101
+ case 'buffer':
102
+ if (arg.val instanceof Buffer) {
103
+ return (0, transactions_1.bufferCV)(arg.val);
104
+ }
105
+ const nval = Number(arg.val);
106
+ if (nval) {
107
+ return (0, transactions_1.bufferCV)(Buffer.of(nval));
108
+ }
109
+ return (0, transactions_1.bufferCVFromString)(arg.val);
110
+ default:
111
+ return (0, transactions_1.encodeClarityValue)(arg.type, arg.val);
112
+ }
113
+ }
114
+ }
115
+ exports.ContractBuilder = ContractBuilder;
116
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJhY3RCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9jb250cmFjdEJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsdURBVThCO0FBQzlCLG1EQUFrRTtBQUVsRSxtQ0FBeUM7QUFFekMsd0JBQTBCO0FBQzFCLDJDQUE0RTtBQUM1RSx1RUFBb0U7QUFFcEUsTUFBYSxlQUFnQixTQUFRLGlEQUF1QjtJQUMxRCxZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRUQsV0FBVyxDQUFDLEVBQWU7UUFDekIsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN0QiwwQ0FBMEM7UUFDMUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUM1QyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQseUJBQXlCO0lBQ3pCOzs7OztPQUtHO0lBQ0gsZUFBZSxDQUFDLE9BQWU7UUFDN0IsSUFBSSxDQUFDLElBQUEsc0JBQWMsRUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQzdCLE1BQU0sSUFBSSxxQ0FBMEIsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQzFELENBQUM7UUFDRCxJQUFJLENBQUMsUUFBSyxDQUFDLHNCQUFzQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQTZCLENBQUMsRUFBRSxDQUFDO1lBQzNGLE1BQU0sSUFBSSxxQ0FBMEIsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1FBQ25FLENBQUM7UUFDRCxJQUFJLENB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O2dCQUNELE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQzdCLElBQUksSUFBSSxFQUFFLENBQUM7b0JBQ1QsT0FBTyxJQUFBLHVCQUFRLEVBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2dCQUNuQyxDQUFDO2dCQUNELE9BQU8sSUFBQSxpQ0FBa0IsRUFBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDckM7Z0JBQ0UsT0FBTyxJQUFBLGlDQUFrQixFQUFDLEdBQUcsQ0FBQyxJQUFzQixFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNuRSxDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBNUdELDBDQTRHQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcsIFN0YWNrc05ldHdvcmsgYXMgQml0Z29TdGFja3NOZXR3b3JrIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQge1xuICBidWZmZXJDVixcbiAgYnVmZmVyQ1ZGcm9tU3RyaW5nLFxuICBDbGFyaXR5QWJpVHlwZSxcbiAgQ2xhcml0eVR5cGUsXG4gIENsYXJpdHlWYWx1ZSxcbiAgZW5jb2RlQ2xhcml0eVZhbHVlLFxuICBub25lQ1YsXG4gIHNvbWVDVixcbiAgdHVwbGVDVixcbn0gZnJvbSAnQHN0YWNrcy90cmFuc2FjdGlvbnMnO1xuaW1wb3J0IHsgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgaXNWYWxpZEFkZHJlc3MgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IENsYXJpdHlWYWx1ZUpzb24gfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB7IFV0aWxzIH0gZnJvbSAnLic7XG5pbXBvcnQgeyBDT05UUkFDVF9OQU1FX1NFTkRNQU5ZLCBDT05UUkFDVF9OQU1FX1NUQUtJTkcgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyYWN0QnVpbGRlciB9IGZyb20gJy4vYWJzdHJhY3RDb250cmFjdEJ1aWxkZXInO1xuXG5leHBvcnQgY2xhc3MgQ29udHJhY3RCdWlsZGVyIGV4dGVuZHMgQWJzdHJhY3RDb250cmFjdEJ1aWxkZXIge1xuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gIH1cblxuICBpbml0QnVpbGRlcih0eDogVHJhbnNhY3Rpb24pOiB2b2lkIHtcbiAgICBzdXBlci5pbml0QnVpbGRlcih0eCk7XG4gICAgLy8gUmV0cm8gY29tcGF0aWJpbGl0eSwgY2hlY2tzIHBhcmFtZXRlcnMuXG4gICAgdGhpcy5jb250cmFjdEFkZHJlc3ModGhpcy5fY29udHJhY3RBZGRyZXNzKTtcbiAgICB0aGlzLmNvbnRyYWN0TmFtZSh0aGlzLl9jb250cmFjdE5hbWUpO1xuICAgIHRoaXMuZnVuY3Rpb25OYW1lKHRoaXMuX2Z1bmN0aW9uTmFtZSk7XG4gICAgdGhpcy5mdW5jdGlvbkFyZ3ModGhpcy5fZnVuY3Rpb25BcmdzKTtcbiAgfVxuXG4gIC8vIHJlZ2lvbiBDb250cmFjdCBmaWVsZHNcbiAgLyoqXG4gICAqIFNldCB0aGUgY29udHJhY3QgYWRkcmVzc1xuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYWRkcmVzcyB0aGUgYWRkcmVzcyBkZXBsb3llZCB0aGUgY29udHJhY3RcbiAgICogQHJldHVybnMge0NvbnRyYWN0QnVpbGRlcn0gdGhlIGJ1aWxkZXIgd2l0aCB0aGUgbmV3IHBhcmFtZXRlciBzZXRcbiAgICovXG4gIGNvbnRyYWN0QWRkcmVzcyhhZGRyZXNzOiBzdHJpbmcpOiB0aGlzIHtcbiAgICBpZiAoIWlzVmFsaWRBZGRyZXNzKGFkZHJlc3MpKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IoJ0ludmFsaWQgYWRkcmVzcycpO1xuICAgIH1cbiAgICBpZiAoIVV0aWxzLmlzVmFsaWRDb250cmFjdEFkZHJlc3MoYWRkcmVzcywgdGhpcy5fY29pbkNvbmZpZy5uZXR3b3JrIGFzIEJpdGdvU3RhY2tzTmV0d29yaykpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvcignSW52YWxpZCBjb250cmFjdCBhZGRyZXNzJyk7XG4gICAgfVxuICAgIHRoaXMuX2NvbnRyYWN0QWRkcmVzcyA9IGFkZHJlc3M7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBjb250cmFjdCBuYW1lXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIG5hbWUgb2YgY29udHJhY3RcbiAgICogQHJldHVybnMge0NvbnRyYWN0QnVpbGRlcn0gdGhlIGJ1aWxkZXIgd2l0aCB0aGUgbmV3IHBhcmFtZXRlciBzZXRcbiAgICovXG4gIGNvbnRyYWN0TmFtZShuYW1lOiBzdHJpbmcpOiB0aGlzIHtcbiAgICBpZiAobmFtZS5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvcignSW52YWxpZCBuYW1lJyk7XG4gICAgfVxuICAgIGlmIChuYW1lICE9PSBDT05UUkFDVF9OQU1FX1NUQUtJTkcgJiYgbmFtZSAhPT0gQ09OVFJBQ1RfTkFNRV9TRU5ETUFOWSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yKCdPbmx5IHBveC00IGFuZCBzZW5kLW1hbnktbWVtbyBjb250cmFjdHMgc3VwcG9ydGVkJyk7XG4gICAgfVxuICAgIHRoaXMuX2NvbnRyYWN0TmFtZSA9IG5hbWU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBmdW5jdGlvbiBuYW1lIGluIGNvbnRyYWN0XG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIG5hbWUgb2YgZnVuY3Rpb25cbiAgICogQHJldHVybnMge0NvbnRyYWN0QnVpbGRlcn0gdGhlIGJ1aWxkZXIgd2l0aCB0aGUgbmV3IHBhcmFtZXRlciBzZXRcbiAgICovXG4gIGZ1bmN0aW9uTmFtZShuYW1lOiBzdHJpbmcpOiB0aGlzIHtcbiAgICBpZiAobmFtZS5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvcignSW52YWxpZCBuYW1lJyk7XG4gICAgfVxuICAgIGlmICghVXRpbHMuaXNWYWxpZENvbnRyYWN0RnVuY3Rpb25OYW1lKG5hbWUpKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IoYCR7bmFtZX0gaXMgbm90IHN1cHBvcnRlZCBjb250cmFjdCBmdW5jdGlvbiBuYW1lYCk7XG4gICAgfVxuICAgIHRoaXMuX2Z1bmN0aW9uTmFtZSA9IG5hbWU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBmdW5jdGlvbkFyZ3MoYXJnczogQ2xhcml0eVZhbHVlSnNvbltdIHwgQ2xhcml0eVZhbHVlW10pOiB0aGlzIHtcbiAgICB0aGlzLl9mdW5jdGlvbkFyZ3MgPSBhcmdzLm1hcCgoYXJnKSA9PiB7XG4gICAgICBpZiAoIUNsYXJpdHlUeXBlW2FyZy50eXBlXSkge1xuICAgICAgICByZXR1cm4gdGhpcy5wYXJzZUN2KGFyZyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBnb3QgZGlyZWN0IGNsYXJpdHkgdmFsdWUgYWZ0ZXIgZGVzZXJpYWxpemF0aW9uIGluIGZyb21JbXBsZW1lbnRhdGlvblxuICAgICAgICByZXR1cm4gYXJnO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHJpdmF0ZSBwYXJzZUN2KGFyZzogQ2xhcml0eVZhbHVlSnNvbik6IENsYXJpdHlWYWx1ZSB7XG4gICAgc3dpdGNoIChhcmcudHlwZSkge1xuICAgICAgY2FzZSAnb3B0aW9uYWwnOlxuICAgICAgICBpZiAoYXJnLnZhbCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcmV0dXJuIG5vbmVDVigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBzb21lQ1YodGhpcy5wYXJzZUN2KGFyZy52YWwpKTtcbiAgICAgICAgfVxuICAgICAgY2FzZSAndHVwbGUnOlxuICAgICAgICBpZiAoYXJnLnZhbCBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgICAgY29uc3QgZGF0YSA9IHt9O1xuICAgICAgICAgIGFyZy52YWwuZm9yRWFjaCgoYSkgPT4ge1xuICAgICAgICAgICAgZGF0YVthLmtleV0gPSB0aGlzLnBhcnNlQ3YoeyB0eXBlOiBhLnR5cGUsIHZhbDogYS52YWwgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuIHR1cGxlQ1YoZGF0YSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yKCd0dXBsZSByZXF1aXJlIEFycmF5IHZhbCcpO1xuICAgICAgY2FzZSAnYnVmZmVyJzpcbiAgICAgICAgaWYgKGFyZy52YWwgaW5zdGFuY2VvZiBCdWZmZXIpIHtcbiAgICAgICAgICByZXR1cm4gYnVmZmVyQ1YoYXJnLnZhbCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbnZhbCA9IE51bWJlcihhcmcudmFsKTtcbiAgICAgICAgaWYgKG52YWwpIHtcbiAgICAgICAgICByZXR1cm4gYnVmZmVyQ1YoQnVmZmVyLm9mKG52YWwpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYnVmZmVyQ1ZGcm9tU3RyaW5nKGFyZy52YWwpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGVuY29kZUNsYXJpdHlWYWx1ZShhcmcudHlwZSBhcyBDbGFyaXR5QWJpVHlwZSwgYXJnLnZhbCk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -0,0 +1,62 @@
1
+ import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
2
+ import { ClarityValue, ContractCallPayload } from '@stacks/transactions';
3
+ import { AbstractContractBuilder } from './abstractContractBuilder';
4
+ import { Transaction } from './transaction';
5
+ export declare class FungibleTokenTransferBuilder extends AbstractContractBuilder {
6
+ private _fungibleTokenTransferParams;
7
+ private _tokenName;
8
+ constructor(_coinConfig: Readonly<CoinConfig>);
9
+ initBuilder(tx: Transaction): void;
10
+ /** @inheritdoc */
11
+ protected buildImplementation(): Promise<Transaction>;
12
+ /**
13
+ * Function to check if a transaction is a fungible token contract call
14
+ *
15
+ * @param {ContractCallPayload} payload
16
+ * @returns {Boolean}
17
+ */
18
+ static isFungibleTokenTransferContractCall(payload: ContractCallPayload): boolean;
19
+ /**
20
+ * Set the token name
21
+ *
22
+ * @param {String} tokenName name of the token (@define-fungible-token value)
23
+ * @returns {FungibleTokenTransferBuilder} This token transfer builder
24
+ */
25
+ tokenName(tokenName: string): this;
26
+ /**
27
+ * Validate contract address
28
+ *
29
+ * @param {String} address contract address
30
+ * @returns {FungibleTokenTransferBuilder} This token transfer builder
31
+ */
32
+ contractAddress(address: string): this;
33
+ /**
34
+ * Validate contract name
35
+ *
36
+ * @param {String} name contract name
37
+ * @returns {FungibleTokenTransferBuilder} This token transfer builder
38
+ */
39
+ contractName(name: string): this;
40
+ /**
41
+ * Validate function name
42
+ *
43
+ * @param {String} name function name
44
+ * @returns {FungibleTokenTransferBuilder} This token transfer builder
45
+ */
46
+ functionName(name: string): this;
47
+ /**
48
+ * Validate function arguments
49
+ *
50
+ * @param {ClarityValue[]} args array of clarity value as arguments
51
+ * @returns {FungibleTokenTransferBuilder} This token transfer builder
52
+ */
53
+ functionArgs(args: ClarityValue[]): this;
54
+ /**
55
+ * Function to convert token transfer params to post condition
56
+ *
57
+ * @param {TokenTransferParams} tokenTransferParams
58
+ * @returns {PostCondition[]} returns stx fungible post condition
59
+ */
60
+ private tokenTransferParamsToPostCondition;
61
+ }
62
+ //# sourceMappingURL=fungibleTokenTransferBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fungibleTokenTransferBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/fungibleTokenTransferBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAe,MAAM,qBAAqB,CAAC;AAE1E,OAAO,EAGL,YAAY,EACZ,mBAAmB,EAKpB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAW5C,qBAAa,4BAA6B,SAAQ,uBAAuB;IACvE,OAAO,CAAC,4BAA4B,CAAsB;IAC1D,OAAO,CAAC,UAAU,CAAS;gBACf,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,WAAW,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IAWlC,kBAAkB;cACF,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;IAQ3D;;;;;OAKG;WACW,mCAAmC,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO;IAIxF;;;;;OAKG;IACH,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAKlC;;;;;OAKG;IACH,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAQtC;;;;;OAKG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAQhC;;;;;OAKG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAWhC;;;;;OAKG;IACH,YAAY,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,IAAI;IASxC;;;;;OAKG;IACH,OAAO,CAAC,kCAAkC;CAwB3C"}
@@ -0,0 +1,131 @@
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.FungibleTokenTransferBuilder = void 0;
7
+ const statics_1 = require("@bitgo-beta/statics");
8
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
9
+ const transactions_1 = require("@stacks/transactions");
10
+ const bn_js_1 = __importDefault(require("bn.js"));
11
+ const abstractContractBuilder_1 = require("./abstractContractBuilder");
12
+ const utils_1 = require("./utils");
13
+ const constants_1 = require("./constants");
14
+ class FungibleTokenTransferBuilder extends abstractContractBuilder_1.AbstractContractBuilder {
15
+ constructor(_coinConfig) {
16
+ super(_coinConfig);
17
+ }
18
+ initBuilder(tx) {
19
+ super.initBuilder(tx);
20
+ this._fungibleTokenTransferParams = (0, utils_1.functionArgsToTokenTransferParams)(tx.stxTransaction.payload.functionArgs);
21
+ this.contractAddress(this._contractAddress);
22
+ this.contractName(this._contractName);
23
+ this.functionName(this._functionName);
24
+ this.functionArgs(this._functionArgs);
25
+ }
26
+ /** @inheritdoc */
27
+ async buildImplementation() {
28
+ this._postConditionMode = transactions_1.PostConditionMode.Deny;
29
+ this._postConditions = this.tokenTransferParamsToPostCondition(this._fungibleTokenTransferParams);
30
+ await super.buildImplementation();
31
+ this.transaction.setTransactionType(sdk_core_1.TransactionType.Send);
32
+ return this.transaction;
33
+ }
34
+ /**
35
+ * Function to check if a transaction is a fungible token contract call
36
+ *
37
+ * @param {ContractCallPayload} payload
38
+ * @returns {Boolean}
39
+ */
40
+ static isFungibleTokenTransferContractCall(payload) {
41
+ return constants_1.FUNCTION_NAME_TRANSFER === payload.functionName.content;
42
+ }
43
+ /**
44
+ * Set the token name
45
+ *
46
+ * @param {String} tokenName name of the token (@define-fungible-token value)
47
+ * @returns {FungibleTokenTransferBuilder} This token transfer builder
48
+ */
49
+ tokenName(tokenName) {
50
+ this._tokenName = tokenName;
51
+ return this;
52
+ }
53
+ /**
54
+ * Validate contract address
55
+ *
56
+ * @param {String} address contract address
57
+ * @returns {FungibleTokenTransferBuilder} This token transfer builder
58
+ */
59
+ contractAddress(address) {
60
+ if (!(0, utils_1.isValidAddress)(address)) {
61
+ throw new sdk_core_1.InvalidParameterValueError('Invalid address');
62
+ }
63
+ this._contractAddress = address;
64
+ return this;
65
+ }
66
+ /**
67
+ * Validate contract name
68
+ *
69
+ * @param {String} name contract name
70
+ * @returns {FungibleTokenTransferBuilder} This token transfer builder
71
+ */
72
+ contractName(name) {
73
+ if (name.length === 0) {
74
+ throw new sdk_core_1.InvalidParameterValueError('Invalid name');
75
+ }
76
+ this._contractName = name;
77
+ return this;
78
+ }
79
+ /**
80
+ * Validate function name
81
+ *
82
+ * @param {String} name function name
83
+ * @returns {FungibleTokenTransferBuilder} This token transfer builder
84
+ */
85
+ functionName(name) {
86
+ if (name.length === 0) {
87
+ throw new sdk_core_1.InvalidParameterValueError('Invalid name');
88
+ }
89
+ if (!(0, utils_1.isValidContractFunctionName)(name)) {
90
+ throw new sdk_core_1.InvalidParameterValueError(`${name} is not supported contract function name`);
91
+ }
92
+ this._functionName = name;
93
+ return this;
94
+ }
95
+ /**
96
+ * Validate function arguments
97
+ *
98
+ * @param {ClarityValue[]} args array of clarity value as arguments
99
+ * @returns {FungibleTokenTransferBuilder} This token transfer builder
100
+ */
101
+ functionArgs(args) {
102
+ if (args.length < 3) {
103
+ throw new sdk_core_1.InvalidParameterValueError('Invalid number of arguments');
104
+ }
105
+ this._functionArgs = args;
106
+ this._fungibleTokenTransferParams = (0, utils_1.functionArgsToTokenTransferParams)(this._functionArgs);
107
+ return this;
108
+ }
109
+ /**
110
+ * Function to convert token transfer params to post condition
111
+ *
112
+ * @param {TokenTransferParams} tokenTransferParams
113
+ * @returns {PostCondition[]} returns stx fungible post condition
114
+ */
115
+ tokenTransferParamsToPostCondition(tokenTransferParams) {
116
+ if (!this._tokenName) {
117
+ const contractTokenName = (0, utils_1.findContractTokenNameUsingContract)(this._contractAddress, this._contractName);
118
+ if (contractTokenName) {
119
+ this.tokenName(contractTokenName);
120
+ }
121
+ }
122
+ const amount = new bn_js_1.default(tokenTransferParams.amount);
123
+ return [
124
+ (0, transactions_1.makeStandardFungiblePostCondition)((0, utils_1.getSTXAddressFromPubKeys)(this._fromPubKeys, this._coinConfig.network.type === statics_1.NetworkType.MAINNET
125
+ ? transactions_1.AddressVersion.MainnetMultiSig
126
+ : transactions_1.AddressVersion.TestnetMultiSig, this._fromPubKeys.length > 1 ? transactions_1.AddressHashMode.SerializeP2SH : transactions_1.AddressHashMode.SerializeP2PKH, this._numberSignatures).address, transactions_1.FungibleConditionCode.Equal, amount, `${this._contractAddress}.${this._contractName}::${this._tokenName}`),
127
+ ];
128
+ }
129
+ }
130
+ exports.FungibleTokenTransferBuilder = FungibleTokenTransferBuilder;
131
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuZ2libGVUb2tlblRyYW5zZmVyQnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvZnVuZ2libGVUb2tlblRyYW5zZmVyQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxpREFBMEU7QUFDMUUsbURBQW1GO0FBQ25GLHVEQVM4QjtBQUM5QixrREFBMkI7QUFFM0IsdUVBQW9FO0FBRXBFLG1DQU1pQjtBQUVqQiwyQ0FBcUQ7QUFFckQsTUFBYSw0QkFBNkIsU0FBUSxpREFBdUI7SUFHdkUsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUVELFdBQVcsQ0FBQyxFQUFlO1FBQ3pCLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdEIsSUFBSSxDQUFDLDRCQUE0QixHQUFHLElBQUEseUNBQWlDLEVBQ2xFLEVBQUUsQ0FBQyxjQUFjLENBQUMsT0FBK0IsQ0FBQyxZQUFZLENBQ2hFLENBQUM7UUFDRixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzVDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxrQkFBa0I7SUFDUixLQUFLLENBQUMsbUJBQW1CO1FBQ2pDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxnQ0FBaUIsQ0FBQyxJQUFJLENBQUM7UUFDakQsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsa0NBQWtDLENBQUMsSUFBSSxDQUFDLDRCQUE0QixDQUFDLENBQUM7UUFDbEcsTUFBTSxLQUFLLENBQUMsbUJBQW1CLEVB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LENBQUMsZUFBZTtnQkFDaEMsQ0FBQyxDQUFDLDZCQUFjLENBQUMsZUFBZSxFQUNsQyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLDhCQUFlLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyw4QkFBZSxDQUFDLGNBQWMsRUFDN0YsSUFBSSxDQUFDLGlCQUFpQixDQUN2QixDQUFDLE9BQU8sRUFDVCxvQ0FBcUIsQ0FBQyxLQUFLLEVBQzNCLE1BQU0sRUFDTixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsYUFBYSxLQUFLLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FDckU7U0FDRixDQUFDO0lBQ0osQ0FBQztDQUNGO0FBMUlELG9FQTBJQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcsIE5ldHdvcmtUeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvciwgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHtcbiAgQWRkcmVzc0hhc2hNb2RlLFxuICBBZGRyZXNzVmVyc2lvbixcbiAgQ2xhcml0eVZhbHVlLFxuICBDb250cmFjdENhbGxQYXlsb2FkLFxuICBGdW5naWJsZUNvbmRpdGlvbkNvZGUsXG4gIG1ha2VTdGFuZGFyZEZ1bmdpYmxlUG9zdENvbmRpdGlvbixcbiAgUG9zdENvbmRpdGlvbixcbiAgUG9zdENvbmRpdGlvbk1vZGUsXG59IGZyb20gJ0BzdGFja3MvdHJhbnNhY3Rpb25zJztcbmltcG9ydCBCaWdOdW0gZnJvbSAnYm4uanMnO1xuXG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyYWN0QnVpbGRlciB9IGZyb20gJy4vYWJzdHJhY3RDb250cmFjdEJ1aWxkZXInO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcbmltcG9ydCB7XG4gIGZpbmRDb250cmFjdFRva2VuTmFtZVVzaW5nQ29udHJhY3QsXG4gIGZ1bmN0aW9uQXJnc1RvVG9rZW5UcmFuc2ZlclBhcmFtcyxcbiAgZ2V0U1RYQWRkcmVzc0Zyb21QdWJLZXlzLFxuICBpc1ZhbGlkQWRkcmVzcyxcbiAgaXNWYWxpZENvbnRyYWN0RnVuY3Rpb25OYW1lLFxufSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IFRva2VuVHJhbnNmZXJQYXJhbXMgfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB7IEZVTkNUSU9OX05BTUVfVFJBTlNGRVIgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5cbmV4cG9ydCBjbGFzcyBGdW5naWJsZVRva2VuVHJhbnNmZXJCdWlsZGVyIGV4dGVuZHMgQWJzdHJhY3RDb250cmFjdEJ1aWxkZXIge1xuICBwcml2YXRlIF9mdW5naWJsZVRva2VuVHJhbnNmZXJQYXJhbXM6IFRva2VuVHJhbnNmZXJQYXJhbXM7XG4gIHByaXZhdGUgX3Rva2VuTmFtZTogc3RyaW5nO1xuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gIH1cblxuICBpbml0QnVpbGRlcih0eDogVHJhbnNhY3Rpb24pOiB2b2lkIHtcbiAgICBzdXBlci5pbml0QnVpbGRlcih0eCk7XG4gICAgdGhpcy5fZnVuZ2libGVUb2tlblRyYW5zZmVyUGFyYW1zID0gZnVuY3Rpb25BcmdzVG9Ub2tlblRyYW5zZmVyUGFyYW1zKFxuICAgICAgKHR4LnN0eFRyYW5zYWN0aW9uLnBheWxvYWQgYXMgQ29udHJhY3RDYWxsUGF5bG9hZCkuZnVuY3Rpb25BcmdzXG4gICAgKTtcbiAgICB0aGlzLmNvbnRyYWN0QWRkcmVzcyh0aGlzLl9jb250cmFjdEFkZHJlc3MpO1xuICAgIHRoaXMuY29udHJhY3ROYW1lKHRoaXMuX2NvbnRyYWN0TmFtZSk7XG4gICAgdGhpcy5mdW5jdGlvbk5hbWUodGhpcy5fZnVuY3Rpb25OYW1lKTtcbiAgICB0aGlzLmZ1bmN0aW9uQXJncyh0aGlzLl9mdW5jdGlvbkFyZ3MpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBhc3luYyBidWlsZEltcGxlbWVudGF0aW9uKCk6IFByb21pc2U8VHJhbnNhY3Rpb24+IHtcbiAgICB0aGlzLl9wb3N0Q29uZGl0aW9uTW9kZSA9IFBvc3RDb25kaXRpb25Nb2RlLkRlbnk7XG4gICAgdGhpcy5fcG9zdENvbmRpdGlvbnMgPSB0aGlzLnRva2VuVHJhbnNmZXJQYXJhbXNUb1Bvc3RDb25kaXRpb24odGhpcy5fZnVuZ2libGVUb2tlblRyYW5zZmVyUGFyYW1zKTtcbiAgICBhd2FpdCBzdXBlci5idWlsZEltcGxlbWVudGF0aW9uKCk7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5zZXRUcmFuc2FjdGlvblR5cGUoVHJhbnNhY3Rpb25UeXBlLlNlbmQpO1xuICAgIHJldHVybiB0aGlzLnRyYW5zYWN0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIEZ1bmN0aW9uIHRvIGNoZWNrIGlmIGEgdHJhbnNhY3Rpb24gaXMgYSBmdW5naWJsZSB0b2tlbiBjb250cmFjdCBjYWxsXG4gICAqXG4gICAqIEBwYXJhbSB7Q29udHJhY3RDYWxsUGF5bG9hZH0gcGF5bG9hZFxuICAgKiBAcmV0dXJucyB7Qm9vbGVhbn1cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaXNGdW5naWJsZVRva2VuVHJhbnNmZXJDb250cmFjdENhbGwocGF5bG9hZDogQ29udHJhY3RDYWxsUGF5bG9hZCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBGVU5DVElPTl9OQU1FX1RSQU5TRkVSID09PSBwYXlsb2FkLmZ1bmN0aW9uTmFtZS5jb250ZW50O1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgdG9rZW4gbmFtZVxuICAgKlxuICAgKiBAcGFyYW0ge1N0cmluZ30gdG9rZW5OYW1lIG5hbWUgb2YgdGhlIHRva2VuIChAZGVmaW5lLWZ1bmdpYmxlLXRva2VuIHZhbHVlKVxuICAgKiBAcmV0dXJucyB7RnVuZ2libGVUb2tlblRyYW5zZmVyQnVpbGRlcn0gVGhpcyB0b2tlbiB0cmFuc2ZlciBidWlsZGVyXG4gICAqL1xuICB0b2tlbk5hbWUodG9rZW5OYW1lOiBzdHJpbmcpOiB0aGlzIHtcbiAgICB0aGlzLl90b2tlbk5hbWUgPSB0b2tlbk5hbWU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGUgY29udHJhY3QgYWRkcmVzc1xuICAgKlxuICAgKiBAcGFyYW0ge1N0cmluZ30gYWRkcmVzcyBjb250cmFjdCBhZGRyZXNzXG4gICAqIEByZXR1cm5zIHtGdW5naWJsZVRva2VuVHJhbnNmZXJCdWlsZGVyfSBUaGlzIHRva2VuIHRyYW5zZmVyIGJ1aWxkZXJcbiAgICovXG4gIGNvbnRyYWN0QWRkcmVzcyhhZGRyZXNzOiBzdHJpbmcpOiB0aGlzIHtcbiAgICBpZiAoIWlzVmFsaWRBZGRyZXNzKGFkZHJlc3MpKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IoJ0ludmFsaWQgYWRkcmVzcycpO1xuICAgIH1cbiAgICB0aGlzLl9jb250cmFjdEFkZHJlc3MgPSBhZGRyZXNzO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIGNvbnRyYWN0IG5hbWVcbiAgICpcbiAgICogQHBhcmFtIHtTdHJpbmd9IG5hbWUgY29udHJhY3QgbmFtZVxuICAgKiBAcmV0dXJucyB7RnVuZ2libGVUb2tlblRyYW5zZmVyQnVpbGRlcn0gVGhpcyB0b2tlbiB0cmFuc2ZlciBidWlsZGVyXG4gICAqL1xuICBjb250cmFjdE5hbWUobmFtZTogc3RyaW5nKTogdGhpcyB7XG4gICAgaWYgKG5hbWUubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IoJ0ludmFsaWQgbmFtZScpO1xuICAgIH1cbiAgICB0aGlzLl9jb250cmFjdE5hbWUgPSBuYW1lO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIGZ1bmN0aW9uIG5hbWVcbiAgICpcbiAgICogQHBhcmFtIHtTdHJpbmd9IG5hbWUgZnVuY3Rpb24gbmFtZVxuICAgKiBAcmV0dXJucyB7RnVuZ2libGVUb2tlblRyYW5zZmVyQnVpbGRlcn0gVGhpcyB0b2tlbiB0cmFuc2ZlciBidWlsZGVyXG4gICAqL1xuICBmdW5jdGlvbk5hbWUobmFtZTogc3RyaW5nKTogdGhpcyB7XG4gICAgaWYgKG5hbWUubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IoJ0ludmFsaWQgbmFtZScpO1xuICAgIH1cbiAgICBpZiAoIWlzVmFsaWRDb250cmFjdEZ1bmN0aW9uTmFtZShuYW1lKSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yKGAke25hbWV9IGlzIG5vdCBzdXBwb3J0ZWQgY29udHJhY3QgZnVuY3Rpb24gbmFtZWApO1xuICAgIH1cbiAgICB0aGlzLl9mdW5jdGlvbk5hbWUgPSBuYW1lO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIGZ1bmN0aW9uIGFyZ3VtZW50c1xuICAgKlxuICAgKiBAcGFyYW0ge0NsYXJpdHlWYWx1ZVtdfSBhcmdzIGFycmF5IG9mIGNsYXJpdHkgdmFsdWUgYXMgYXJndW1lbnRzXG4gICAqIEByZXR1cm5zIHtGdW5naWJsZVRva2VuVHJhbnNmZXJCdWlsZGVyfSBUaGlzIHRva2VuIHRyYW5zZmVyIGJ1aWxkZXJcbiAgICovXG4gIGZ1bmN0aW9uQXJncyhhcmdzOiBDbGFyaXR5VmFsdWVbXSk6IHRoaXMge1xuICAgIGlmIChhcmdzLmxlbmd0aCA8IDMpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvcignSW52YWxpZCBudW1iZXIgb2YgYXJndW1lbnRzJyk7XG4gICAgfVxuICAgIHRoaXMuX2Z1bmN0aW9uQXJncyA9IGFyZ3M7XG4gICAgdGhpcy5fZnVuZ2libGVUb2tlblRyYW5zZmVyUGFyYW1zID0gZnVuY3Rpb25BcmdzVG9Ub2tlblRyYW5zZmVyUGFyYW1zKHRoaXMuX2Z1bmN0aW9uQXJncyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogRnVuY3Rpb24gdG8gY29udmVydCB0b2tlbiB0cmFuc2ZlciBwYXJhbXMgdG8gcG9zdCBjb25kaXRpb25cbiAgICpcbiAgICogQHBhcmFtIHtUb2tlblRyYW5zZmVyUGFyYW1zfSB0b2tlblRyYW5zZmVyUGFyYW1zXG4gICAqIEByZXR1cm5zIHtQb3N0Q29uZGl0aW9uW119IHJldHVybnMgc3R4IGZ1bmdpYmxlIHBvc3QgY29uZGl0aW9uXG4gICAqL1xuICBwcml2YXRlIHRva2VuVHJhbnNmZXJQYXJhbXNUb1Bvc3RDb25kaXRpb24odG9rZW5UcmFuc2ZlclBhcmFtczogVG9rZW5UcmFuc2ZlclBhcmFtcyk6IFBvc3RDb25kaXRpb25bXSB7XG4gICAgaWYgKCF0aGlzLl90b2tlbk5hbWUpIHtcbiAgICAgIGNvbnN0IGNvbnRyYWN0VG9rZW5OYW1lID0gZmluZENvbnRyYWN0VG9rZW5OYW1lVXNpbmdDb250cmFjdCh0aGlzLl9jb250cmFjdEFkZHJlc3MsIHRoaXMuX2NvbnRyYWN0TmFtZSk7XG4gICAgICBpZiAoY29udHJhY3RUb2tlbk5hbWUpIHtcbiAgICAgICAgdGhpcy50b2tlbk5hbWUoY29udHJhY3RUb2tlbk5hbWUpO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBhbW91bnQ6IEJpZ051bSA9IG5ldyBCaWdOdW0odG9rZW5UcmFuc2ZlclBhcmFtcy5hbW91bnQpO1xuICAgIHJldHVybiBbXG4gICAgICBtYWtlU3RhbmRhcmRGdW5naWJsZVBvc3RDb25kaXRpb24oXG4gICAgICAgIGdldFNUWEFkZHJlc3NGcm9tUHViS2V5cyhcbiAgICAgICAgICB0aGlzLl9mcm9tUHViS2V5cyxcbiAgICAgICAgICB0aGlzLl9jb2luQ29uZmlnLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVFxuICAgICAgICAgICAgPyBBZGRyZXNzVmVyc2lvbi5NYWlubmV0TXVsdGlTaWdcbiAgICAgICAgICAgIDogQWRkcmVzc1ZlcnNpb24uVGVzdG5ldE11bHRpU2lnLFxuICAgICAgICAgIHRoaXMuX2Zyb21QdWJLZXlzLmxlbmd0aCA+IDEgPyBBZGRyZXNzSGFzaE1vZGUuU2VyaWFsaXplUDJTSCA6IEFkZHJlc3NIYXNoTW9kZS5TZXJpYWxpemVQMlBLSCxcbiAgICAgICAgICB0aGlzLl9udW1iZXJTaWduYXR1cmVzXG4gICAgICAgICkuYWRkcmVzcyxcbiAgICAgICAgRnVuZ2libGVDb25kaXRpb25Db2RlLkVxdWFsLFxuICAgICAgICBhbW91bnQsXG4gICAgICAgIGAke3RoaXMuX2NvbnRyYWN0QWRkcmVzc30uJHt0aGlzLl9jb250cmFjdE5hbWV9Ojoke3RoaXMuX3Rva2VuTmFtZX1gXG4gICAgICApLFxuICAgIF07XG4gIH1cbn1cbiJdfQ==