@bitgo/sdk-coin-stx 1.1.0-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/.eslintignore +5 -0
  2. package/.mocharc.yml +8 -0
  3. package/CHANGELOG.md +11 -0
  4. package/LICENSE +191 -0
  5. package/README.md +30 -0
  6. package/dist/src/index.d.ts +5 -0
  7. package/dist/src/index.d.ts.map +1 -0
  8. package/dist/src/index.js +30 -0
  9. package/dist/src/lib/abstractContractBuilder.d.ts +19 -0
  10. package/dist/src/lib/abstractContractBuilder.d.ts.map +1 -0
  11. package/dist/src/lib/abstractContractBuilder.js +70 -0
  12. package/dist/src/lib/constants.d.ts +8 -0
  13. package/dist/src/lib/constants.d.ts.map +1 -0
  14. package/dist/src/lib/constants.js +19 -0
  15. package/dist/src/lib/contractBuilder.d.ts +33 -0
  16. package/dist/src/lib/contractBuilder.d.ts.map +1 -0
  17. package/dist/src/lib/contractBuilder.js +116 -0
  18. package/dist/src/lib/iface.d.ts +48 -0
  19. package/dist/src/lib/iface.d.ts.map +1 -0
  20. package/dist/src/lib/iface.js +3 -0
  21. package/dist/src/lib/index.d.ts +6 -0
  22. package/dist/src/lib/index.d.ts.map +1 -0
  23. package/dist/src/lib/index.js +33 -0
  24. package/dist/src/lib/keyPair.d.ts +55 -0
  25. package/dist/src/lib/keyPair.d.ts.map +1 -0
  26. package/dist/src/lib/keyPair.js +140 -0
  27. package/dist/src/lib/sendmanyBuilder.d.ts +23 -0
  28. package/dist/src/lib/sendmanyBuilder.d.ts.map +1 -0
  29. package/dist/src/lib/sendmanyBuilder.js +75 -0
  30. package/dist/src/lib/transaction.d.ts +49 -0
  31. package/dist/src/lib/transaction.d.ts.map +1 -0
  32. package/dist/src/lib/transaction.js +225 -0
  33. package/dist/src/lib/transactionBuilder.d.ts +86 -0
  34. package/dist/src/lib/transactionBuilder.d.ts.map +1 -0
  35. package/dist/src/lib/transactionBuilder.js +263 -0
  36. package/dist/src/lib/transactionBuilderFactory.d.ts +30 -0
  37. package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -0
  38. package/dist/src/lib/transactionBuilderFactory.js +81 -0
  39. package/dist/src/lib/transferBuilder.d.ts +30 -0
  40. package/dist/src/lib/transferBuilder.d.ts.map +1 -0
  41. package/dist/src/lib/transferBuilder.js +99 -0
  42. package/dist/src/lib/utils.d.ts +207 -0
  43. package/dist/src/lib/utils.d.ts.map +1 -0
  44. package/dist/src/lib/utils.js +503 -0
  45. package/dist/src/stx.d.ts +56 -0
  46. package/dist/src/stx.d.ts.map +1 -0
  47. package/dist/src/stx.js +196 -0
  48. package/dist/src/tstx.d.ts +16 -0
  49. package/dist/src/tstx.d.ts.map +1 -0
  50. package/dist/src/tstx.js +24 -0
  51. package/dist/src/types.d.ts +34 -0
  52. package/dist/src/types.d.ts.map +1 -0
  53. package/dist/src/types.js +3 -0
  54. package/package.json +62 -0
@@ -0,0 +1,48 @@
1
+ import { ClarityValue, PayloadType } from '@stacks/transactions';
2
+ export interface TxData {
3
+ id: string;
4
+ from: string;
5
+ fee: string;
6
+ nonce: number;
7
+ payload: StacksTransactionPayload | StacksContractPayload;
8
+ }
9
+ export interface SignatureData {
10
+ type: number;
11
+ data: string;
12
+ index: number;
13
+ sigHash: string;
14
+ }
15
+ export interface StacksTransactionPayload {
16
+ readonly payloadType: PayloadType.TokenTransfer;
17
+ memo?: string;
18
+ to: string;
19
+ amount: string;
20
+ }
21
+ export interface StacksContractPayload {
22
+ readonly payloadType: PayloadType.ContractCall;
23
+ contractAddress: string;
24
+ contractName: string;
25
+ functionName: string;
26
+ functionArgs: ClarityValue[];
27
+ }
28
+ export interface ClarityValueJson {
29
+ type: string;
30
+ val?: any | TupleData[] | ClarityValueJson;
31
+ }
32
+ export interface TupleData extends ClarityValueJson {
33
+ key: string;
34
+ }
35
+ export interface SignResponse {
36
+ signature: string;
37
+ recid: number;
38
+ }
39
+ export interface AddressDetails {
40
+ address: string;
41
+ memoId?: string;
42
+ }
43
+ export interface SendParams {
44
+ address: string;
45
+ amount: string;
46
+ memo?: string;
47
+ }
48
+ //# sourceMappingURL=iface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iface.d.ts","sourceRoot":"","sources":["../../../src/lib/iface.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEjE,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,wBAAwB,GAAG,qBAAqB,CAAC;CAC3D;AACD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,aAAa,CAAC;IAChD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,YAAY,CAAC;IAC/C,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,YAAY,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,GAAG,GAAG,SAAS,EAAE,GAAG,gBAAgB,CAAC;CAC5C;AAED,MAAM,WAAW,SAAU,SAAQ,gBAAgB;IACjD,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2lmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyBDbGFyaXR5VmFsdWUsIFBheWxvYWRUeXBlIH0gZnJvbSAnQHN0YWNrcy90cmFuc2FjdGlvbnMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFR4RGF0YSB7XG4gIGlkOiBzdHJpbmc7XG4gIGZyb206IHN0cmluZztcbiAgZmVlOiBzdHJpbmc7XG4gIG5vbmNlOiBudW1iZXI7XG4gIHBheWxvYWQ6IFN0YWNrc1RyYW5zYWN0aW9uUGF5bG9hZCB8IFN0YWNrc0NvbnRyYWN0UGF5bG9hZDtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgU2lnbmF0dXJlRGF0YSB7XG4gIHR5cGU6IG51bWJlcjtcbiAgZGF0YTogc3RyaW5nO1xuICBpbmRleDogbnVtYmVyO1xuICBzaWdIYXNoOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RhY2tzVHJhbnNhY3Rpb25QYXlsb2FkIHtcbiAgcmVhZG9ubHkgcGF5bG9hZFR5cGU6IFBheWxvYWRUeXBlLlRva2VuVHJhbnNmZXI7XG4gIG1lbW8/OiBzdHJpbmc7XG4gIHRvOiBzdHJpbmc7XG4gIGFtb3VudDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN0YWNrc0NvbnRyYWN0UGF5bG9hZCB7XG4gIHJlYWRvbmx5IHBheWxvYWRUeXBlOiBQYXlsb2FkVHlwZS5Db250cmFjdENhbGw7XG4gIGNvbnRyYWN0QWRkcmVzczogc3RyaW5nO1xuICBjb250cmFjdE5hbWU6IHN0cmluZztcbiAgZnVuY3Rpb25OYW1lOiBzdHJpbmc7XG4gIGZ1bmN0aW9uQXJnczogQ2xhcml0eVZhbHVlW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2xhcml0eVZhbHVlSnNvbiB7XG4gIHR5cGU6IHN0cmluZztcbiAgdmFsPzogYW55IHwgVHVwbGVEYXRhW10gfCBDbGFyaXR5VmFsdWVKc29uO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFR1cGxlRGF0YSBleHRlbmRzIENsYXJpdHlWYWx1ZUpzb24ge1xuICBrZXk6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTaWduUmVzcG9uc2Uge1xuICBzaWduYXR1cmU6IHN0cmluZztcbiAgcmVjaWQ6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBZGRyZXNzRGV0YWlscyB7XG4gIGFkZHJlc3M6IHN0cmluZztcbiAgbWVtb0lkPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNlbmRQYXJhbXMge1xuICBhZGRyZXNzOiBzdHJpbmc7XG4gIGFtb3VudDogc3RyaW5nO1xuICBtZW1vPzogc3RyaW5nO1xufVxuIl19
@@ -0,0 +1,6 @@
1
+ export { AddressVersion, AddressHashMode } from '@stacks/transactions';
2
+ export * from './keyPair';
3
+ export * from './transaction';
4
+ export * from './transactionBuilderFactory';
5
+ export * as Utils from './utils';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvE,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,6BAA6B,CAAC;AAC5C,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC"}
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
16
+ };
17
+ var __importStar = (this && this.__importStar) || function (mod) {
18
+ if (mod && mod.__esModule) return mod;
19
+ var result = {};
20
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
21
+ __setModuleDefault(result, mod);
22
+ return result;
23
+ };
24
+ Object.defineProperty(exports, "__esModule", { value: true });
25
+ exports.Utils = exports.AddressHashMode = exports.AddressVersion = void 0;
26
+ var transactions_1 = require("@stacks/transactions");
27
+ Object.defineProperty(exports, "AddressVersion", { enumerable: true, get: function () { return transactions_1.AddressVersion; } });
28
+ Object.defineProperty(exports, "AddressHashMode", { enumerable: true, get: function () { return transactions_1.AddressHashMode; } });
29
+ __exportStar(require("./keyPair"), exports);
30
+ __exportStar(require("./transaction"), exports);
31
+ __exportStar(require("./transactionBuilderFactory"), exports);
32
+ exports.Utils = __importStar(require("./utils"));
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxxREFBdUU7QUFBOUQsOEdBQUEsY0FBYyxPQUFBO0FBQUUsK0dBQUEsZUFBZSxPQUFBO0FBQ3hDLDRDQUEwQjtBQUMxQixnREFBOEI7QUFDOUIsOERBQTRDO0FBQzVDLGlEQUFpQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IEFkZHJlc3NWZXJzaW9uLCBBZGRyZXNzSGFzaE1vZGUgfSBmcm9tICdAc3RhY2tzL3RyYW5zYWN0aW9ucyc7XG5leHBvcnQgKiBmcm9tICcuL2tleVBhaXInO1xuZXhwb3J0ICogZnJvbSAnLi90cmFuc2FjdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnknO1xuZXhwb3J0ICogYXMgVXRpbHMgZnJvbSAnLi91dGlscyc7XG4iXX0=
@@ -0,0 +1,55 @@
1
+ import { TransactionVersion } from '@stacks/transactions';
2
+ import { DefaultKeys, KeyPairOptions, Secp256k1ExtendedKeyPair } from '@bitgo/sdk-core';
3
+ export declare class KeyPair extends Secp256k1ExtendedKeyPair {
4
+ /**
5
+ * Public constructor. By default, creates a key pair with a random master seed.
6
+ *
7
+ * @param { KeyPairOptions } source Either a master seed, a private key, or a public key
8
+ */
9
+ constructor(source?: KeyPairOptions);
10
+ /**
11
+ * Build a keypair from a protocol private key or extended private key.
12
+ *
13
+ * The protocol private key is either 32 or 33 bytes long (64 or 66
14
+ * characters hex). If it is 32 bytes long, set the keypair's "compressed"
15
+ * field to false to later generate uncompressed public keys (the default).
16
+ * A 33 byte key has 0x01 as the last byte.
17
+ *
18
+ * @param {string} prv A raw private key
19
+ */
20
+ recordKeysFromPrivateKey(prv: string): void;
21
+ /**
22
+ * Build an ECPair from a protocol public key or extended public key.
23
+ *
24
+ * The protocol public key is either 32 bytes or 64 bytes long, with a
25
+ * one-byte prefix (a total of 66 or 130 characters in hex). If the
26
+ * prefix is 0x02 or 0x03, it is a compressed public key. A prefix of 0x04
27
+ * denotes an uncompressed public key.
28
+ *
29
+ * @param {string} pub A raw public key
30
+ */
31
+ recordKeysFromPublicKey(pub: string): void;
32
+ /**
33
+ * Stacks default keys format is raw private and uncompressed public key
34
+ *
35
+ * @param {boolean} compressed - Compress public key (defaults to false)
36
+ * @returns {DefaultKeys} The keys in the protocol default key format
37
+ */
38
+ getKeys(compressed?: boolean): DefaultKeys;
39
+ getCompressed(): boolean;
40
+ /**
41
+ * Get a public address of an uncompressed public key.
42
+ *
43
+ * @returns {string} The public address
44
+ */
45
+ getAddress(): string;
46
+ /**
47
+ * Get a public address of an uncompressed public key.
48
+ *
49
+ * @param {boolean} compressed - Compress public key (defaults to false)
50
+ * @param {TransactionVersion} network - select Mainnet or Testnet for the address
51
+ * @returns {string} The public address
52
+ */
53
+ getSTXAddress(compressed?: boolean, network?: TransactionVersion): string;
54
+ }
55
+ //# sourceMappingURL=keyPair.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyPair.d.ts","sourceRoot":"","sources":["../../../src/lib/keyPair.ts"],"names":[],"mappings":"AAGA,OAAO,EAA2B,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACnF,OAAO,EACL,WAAW,EAMX,cAAc,EACd,wBAAwB,EACzB,MAAM,iBAAiB,CAAC;AAIzB,qBAAa,OAAQ,SAAQ,wBAAwB;IACnD;;;;OAIG;gBACS,MAAM,CAAC,EAAE,cAAc;IAoBnC;;;;;;;;;OASG;IACH,wBAAwB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAY3C;;;;;;;;;OASG;IACH,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAY1C;;;;;OAKG;IACH,OAAO,CAAC,UAAU,UAAQ,GAAG,WAAW;IAYxC,aAAa,IAAI,OAAO;IAIxB;;;;OAIG;IACH,UAAU,IAAI,MAAM;IAIpB;;;;;;OAMG;IACH,aAAa,CAAC,UAAU,UAAQ,EAAE,OAAO,GAAE,kBAA+C,GAAG,MAAM;CAGpG"}
@@ -0,0 +1,140 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
21
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ exports.KeyPair = void 0;
23
+ const crypto_1 = require("crypto");
24
+ const bip32 = __importStar(require("bip32"));
25
+ const bitcoinjs_lib_1 = require("bitcoinjs-lib");
26
+ const transactions_1 = require("@stacks/transactions");
27
+ const sdk_core_1 = require("@bitgo/sdk-core");
28
+ const utils_1 = require("./utils");
29
+ const constants_1 = require("./constants");
30
+ class KeyPair extends sdk_core_1.Secp256k1ExtendedKeyPair {
31
+ /**
32
+ * Public constructor. By default, creates a key pair with a random master seed.
33
+ *
34
+ * @param { KeyPairOptions } source Either a master seed, a private key, or a public key
35
+ */
36
+ constructor(source) {
37
+ super(source);
38
+ if (!source) {
39
+ const seed = crypto_1.randomBytes(constants_1.DEFAULT_SEED_SIZE_BYTES);
40
+ this.hdNode = bip32.fromSeed(seed);
41
+ }
42
+ else if (sdk_core_1.isSeed(source)) {
43
+ this.hdNode = bip32.fromSeed(source.seed);
44
+ }
45
+ else if (sdk_core_1.isPrivateKey(source)) {
46
+ this.recordKeysFromPrivateKey(source.prv);
47
+ }
48
+ else if (sdk_core_1.isPublicKey(source)) {
49
+ this.recordKeysFromPublicKey(source.pub);
50
+ }
51
+ else {
52
+ throw new Error('Invalid key pair options');
53
+ }
54
+ if (this.hdNode) {
55
+ this.keyPair = sdk_core_1.Secp256k1ExtendedKeyPair.toKeyPair(this.hdNode);
56
+ }
57
+ }
58
+ /**
59
+ * Build a keypair from a protocol private key or extended private key.
60
+ *
61
+ * The protocol private key is either 32 or 33 bytes long (64 or 66
62
+ * characters hex). If it is 32 bytes long, set the keypair's "compressed"
63
+ * field to false to later generate uncompressed public keys (the default).
64
+ * A 33 byte key has 0x01 as the last byte.
65
+ *
66
+ * @param {string} prv A raw private key
67
+ */
68
+ recordKeysFromPrivateKey(prv) {
69
+ if (!utils_1.isValidPrivateKey(prv)) {
70
+ throw new Error('Unsupported private key');
71
+ }
72
+ if (sdk_core_1.isValidXprv(prv)) {
73
+ this.hdNode = bip32.fromBase58(prv);
74
+ }
75
+ else {
76
+ this.keyPair = bitcoinjs_lib_1.ECPair.fromPrivateKey(Buffer.from(prv.slice(0, 64), 'hex'));
77
+ }
78
+ }
79
+ /**
80
+ * Build an ECPair from a protocol public key or extended public key.
81
+ *
82
+ * The protocol public key is either 32 bytes or 64 bytes long, with a
83
+ * one-byte prefix (a total of 66 or 130 characters in hex). If the
84
+ * prefix is 0x02 or 0x03, it is a compressed public key. A prefix of 0x04
85
+ * denotes an uncompressed public key.
86
+ *
87
+ * @param {string} pub A raw public key
88
+ */
89
+ recordKeysFromPublicKey(pub) {
90
+ if (!utils_1.isValidPublicKey(pub)) {
91
+ throw new Error('Unsupported public key');
92
+ }
93
+ if (sdk_core_1.isValidXpub(pub)) {
94
+ this.hdNode = bip32.fromBase58(pub);
95
+ }
96
+ else {
97
+ this.keyPair = bitcoinjs_lib_1.ECPair.fromPublicKey(Buffer.from(pub, 'hex'));
98
+ }
99
+ }
100
+ /**
101
+ * Stacks default keys format is raw private and uncompressed public key
102
+ *
103
+ * @param {boolean} compressed - Compress public key (defaults to false)
104
+ * @returns {DefaultKeys} The keys in the protocol default key format
105
+ */
106
+ getKeys(compressed = false) {
107
+ var _a;
108
+ let prv = (_a = this.getPrivateKey()) === null || _a === void 0 ? void 0 : _a.toString('hex');
109
+ if (prv && compressed) {
110
+ prv += '01';
111
+ }
112
+ return {
113
+ pub: this.getPublicKey({ compressed }).toString('hex'),
114
+ prv,
115
+ };
116
+ }
117
+ getCompressed() {
118
+ return this.keyPair.compressed;
119
+ }
120
+ /**
121
+ * Get a public address of an uncompressed public key.
122
+ *
123
+ * @returns {string} The public address
124
+ */
125
+ getAddress() {
126
+ return this.getSTXAddress(false, transactions_1.TransactionVersion.Mainnet);
127
+ }
128
+ /**
129
+ * Get a public address of an uncompressed public key.
130
+ *
131
+ * @param {boolean} compressed - Compress public key (defaults to false)
132
+ * @param {TransactionVersion} network - select Mainnet or Testnet for the address
133
+ * @returns {string} The public address
134
+ */
135
+ getSTXAddress(compressed = false, network = transactions_1.TransactionVersion.Mainnet) {
136
+ return transactions_1.getAddressFromPublicKey(this.getKeys(compressed).pub, network);
137
+ }
138
+ }
139
+ exports.KeyPair = KeyPair;
140
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5UGFpci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIva2V5UGFpci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsbUNBQXFDO0FBQ3JDLDZDQUErQjtBQUMvQixpREFBdUM7QUFDdkMsdURBQW1GO0FBQ25GLDhDQVN5QjtBQUN6QixtQ0FBOEQ7QUFDOUQsMkNBQXNEO0FBRXRELE1BQWEsT0FBUSxTQUFRLG1DQUF3QjtJQUNuRDs7OztPQUlHO0lBQ0gsWUFBWSxNQUF1QjtRQUNqQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDZCxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1gsTUFBTSxJQUFJLEdBQUcsb0JBQVcsQ0FBQyxtQ0FBdUIsQ0FBQyxDQUFDO1lBQ2xELElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNwQzthQUFNLElBQUksaUJBQU0sQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUN6QixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzNDO2FBQU0sSUFBSSx1QkFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQy9CLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDM0M7YUFBTSxJQUFJLHNCQUFXLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDOUIsSUFBSSxDQUFDLHVCQUF1QixDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUMxQzthQUFNO1lBQ0wsTUFBTSxJQUFJLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1NBQzdDO1FBRUQsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2YsSUFBSSxDQUFDLE9BQU8sR0FBRyxtQ0FBd0IsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ2hFO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNILHdCQUF3QixDQUFDLEdBQVc7UUFDbEMsSUFBSSxDQUFDLHlCQUFpQixDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQzNCLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztTQUM1QztRQUVELElBQUksc0JBQVcsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNwQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDckM7YUFBTTtZQUNMLElBQUksQ0FBQyxPQUFPLEdBQUcsc0JBQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1NBQzVFO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNILHVCQUF1QixDQUFDLEdBQVc7UUFDakMsSUFBSSxDQUFDLHdCQUFnQixDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQzFCLE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLENBQUMsQ0FBQztTQUMzQztRQUVELElBQUksc0JBQVcsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNwQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDckM7YUFBTTtZQUNMLElBQUksQ0FBQyxPQUFPLEdBQUcsc0JBQU0sQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztTQUM5RDtJQUNILENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILE9BQU8sQ0FBQyxVQUFVLEdBQUcsS0FBSzs7UUFDeEIsSUFBSSxHQUFHLEdBQUcsTUFBQSxJQUFJLENBQUMsYUFBYSxFQUFFLDBDQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNoRCxJQUFJLEdBQUcsSUFBSSxVQUFVLEVBQUU7WUFDckIsR0FBRyxJQUFJLElBQUksQ0FBQztTQUNiO1FBRUQsT0FBTztZQUNMLEdBQUcsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO1lBQ3RELEdBQUc7U0FDSixDQUFDO0lBQ0osQ0FBQztJQUVELGFBQWE7UUFDWCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDO0lBQ2pDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsVUFBVTtRQUNSLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsaUNBQWtCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILGFBQWEsQ0FBQyxVQUFVLEdBQUcsS0FBSyxFQUFFLFVBQThCLGlDQUFrQixDQUFDLE9BQU87UUFDeEYsT0FBTyxzQ0FBdUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN4RSxDQUFDO0NBQ0Y7QUEvR0QsMEJBK0dDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmFuZG9tQnl0ZXMgfSBmcm9tICdjcnlwdG8nO1xuaW1wb3J0ICogYXMgYmlwMzIgZnJvbSAnYmlwMzInO1xuaW1wb3J0IHsgRUNQYWlyIH0gZnJvbSAnYml0Y29pbmpzLWxpYic7XG5pbXBvcnQgeyBnZXRBZGRyZXNzRnJvbVB1YmxpY0tleSwgVHJhbnNhY3Rpb25WZXJzaW9uIH0gZnJvbSAnQHN0YWNrcy90cmFuc2FjdGlvbnMnO1xuaW1wb3J0IHtcbiAgRGVmYXVsdEtleXMsXG4gIGlzUHJpdmF0ZUtleSxcbiAgaXNQdWJsaWNLZXksXG4gIGlzU2VlZCxcbiAgaXNWYWxpZFhwcnYsXG4gIGlzVmFsaWRYcHViLFxuICBLZXlQYWlyT3B0aW9ucyxcbiAgU2VjcDI1NmsxRXh0ZW5kZWRLZXlQYWlyLFxufSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHsgaXNWYWxpZFByaXZhdGVLZXksIGlzVmFsaWRQdWJsaWNLZXkgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IERFRkFVTFRfU0VFRF9TSVpFX0JZVEVTIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuXG5leHBvcnQgY2xhc3MgS2V5UGFpciBleHRlbmRzIFNlY3AyNTZrMUV4dGVuZGVkS2V5UGFpciB7XG4gIC8qKlxuICAgKiBQdWJsaWMgY29uc3RydWN0b3IuIEJ5IGRlZmF1bHQsIGNyZWF0ZXMgYSBrZXkgcGFpciB3aXRoIGEgcmFuZG9tIG1hc3RlciBzZWVkLlxuICAgKlxuICAgKiBAcGFyYW0geyBLZXlQYWlyT3B0aW9ucyB9IHNvdXJjZSBFaXRoZXIgYSBtYXN0ZXIgc2VlZCwgYSBwcml2YXRlIGtleSwgb3IgYSBwdWJsaWMga2V5XG4gICAqL1xuICBjb25zdHJ1Y3Rvcihzb3VyY2U/OiBLZXlQYWlyT3B0aW9ucykge1xuICAgIHN1cGVyKHNvdXJjZSk7XG4gICAgaWYgKCFzb3VyY2UpIHtcbiAgICAgIGNvbnN0IHNlZWQgPSByYW5kb21CeXRlcyhERUZBVUxUX1NFRURfU0laRV9CWVRFUyk7XG4gICAgICB0aGlzLmhkTm9kZSA9IGJpcDMyLmZyb21TZWVkKHNlZWQpO1xuICAgIH0gZWxzZSBpZiAoaXNTZWVkKHNvdXJjZSkpIHtcbiAgICAgIHRoaXMuaGROb2RlID0gYmlwMzIuZnJvbVNlZWQoc291cmNlLnNlZWQpO1xuICAgIH0gZWxzZSBpZiAoaXNQcml2YXRlS2V5KHNvdXJjZSkpIHtcbiAgICAgIHRoaXMucmVjb3JkS2V5c0Zyb21Qcml2YXRlS2V5KHNvdXJjZS5wcnYpO1xuICAgIH0gZWxzZSBpZiAoaXNQdWJsaWNLZXkoc291cmNlKSkge1xuICAgICAgdGhpcy5yZWNvcmRLZXlzRnJvbVB1YmxpY0tleShzb3VyY2UucHViKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGtleSBwYWlyIG9wdGlvbnMnKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5oZE5vZGUpIHtcbiAgICAgIHRoaXMua2V5UGFpciA9IFNlY3AyNTZrMUV4dGVuZGVkS2V5UGFpci50b0tleVBhaXIodGhpcy5oZE5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCBhIGtleXBhaXIgZnJvbSBhIHByb3RvY29sIHByaXZhdGUga2V5IG9yIGV4dGVuZGVkIHByaXZhdGUga2V5LlxuICAgKlxuICAgKiBUaGUgcHJvdG9jb2wgcHJpdmF0ZSBrZXkgaXMgZWl0aGVyIDMyIG9yIDMzIGJ5dGVzIGxvbmcgKDY0IG9yIDY2XG4gICAqIGNoYXJhY3RlcnMgaGV4KS4gIElmIGl0IGlzIDMyIGJ5dGVzIGxvbmcsIHNldCB0aGUga2V5cGFpcidzIFwiY29tcHJlc3NlZFwiXG4gICAqIGZpZWxkIHRvIGZhbHNlIHRvIGxhdGVyIGdlbmVyYXRlIHVuY29tcHJlc3NlZCBwdWJsaWMga2V5cyAodGhlIGRlZmF1bHQpLlxuICAgKiBBIDMzIGJ5dGUga2V5IGhhcyAweDAxIGFzIHRoZSBsYXN0IGJ5dGUuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwcnYgQSByYXcgcHJpdmF0ZSBrZXlcbiAgICovXG4gIHJlY29yZEtleXNGcm9tUHJpdmF0ZUtleShwcnY6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICghaXNWYWxpZFByaXZhdGVLZXkocHJ2KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCBwcml2YXRlIGtleScpO1xuICAgIH1cblxuICAgIGlmIChpc1ZhbGlkWHBydihwcnYpKSB7XG4gICAgICB0aGlzLmhkTm9kZSA9IGJpcDMyLmZyb21CYXNlNTgocHJ2KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5rZXlQYWlyID0gRUNQYWlyLmZyb21Qcml2YXRlS2V5KEJ1ZmZlci5mcm9tKHBydi5zbGljZSgwLCA2NCksICdoZXgnKSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGFuIEVDUGFpciBmcm9tIGEgcHJvdG9jb2wgcHVibGljIGtleSBvciBleHRlbmRlZCBwdWJsaWMga2V5LlxuICAgKlxuICAgKiBUaGUgcHJvdG9jb2wgcHVibGljIGtleSBpcyBlaXRoZXIgMzIgYnl0ZXMgb3IgNjQgYnl0ZXMgbG9uZywgd2l0aCBhXG4gICAqIG9uZS1ieXRlIHByZWZpeCAoYSB0b3RhbCBvZiA2NiBvciAxMzAgY2hhcmFjdGVycyBpbiBoZXgpLiAgSWYgdGhlXG4gICAqIHByZWZpeCBpcyAweDAyIG9yIDB4MDMsIGl0IGlzIGEgY29tcHJlc3NlZCBwdWJsaWMga2V5LiAgQSBwcmVmaXggb2YgMHgwNFxuICAgKiBkZW5vdGVzIGFuIHVuY29tcHJlc3NlZCBwdWJsaWMga2V5LlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcHViIEEgcmF3IHB1YmxpYyBrZXlcbiAgICovXG4gIHJlY29yZEtleXNGcm9tUHVibGljS2V5KHB1Yjogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCFpc1ZhbGlkUHVibGljS2V5KHB1YikpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgcHVibGljIGtleScpO1xuICAgIH1cblxuICAgIGlmIChpc1ZhbGlkWHB1YihwdWIpKSB7XG4gICAgICB0aGlzLmhkTm9kZSA9IGJpcDMyLmZyb21CYXNlNTgocHViKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5rZXlQYWlyID0gRUNQYWlyLmZyb21QdWJsaWNLZXkoQnVmZmVyLmZyb20ocHViLCAnaGV4JykpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTdGFja3MgZGVmYXVsdCBrZXlzIGZvcm1hdCBpcyByYXcgcHJpdmF0ZSBhbmQgdW5jb21wcmVzc2VkIHB1YmxpYyBrZXlcbiAgICpcbiAgICogQHBhcmFtIHtib29sZWFufSBjb21wcmVzc2VkIC0gQ29tcHJlc3MgcHVibGljIGtleSAoZGVmYXVsdHMgdG8gZmFsc2UpXG4gICAqIEByZXR1cm5zIHtEZWZhdWx0S2V5c30gVGhlIGtleXMgaW4gdGhlIHByb3RvY29sIGRlZmF1bHQga2V5IGZvcm1hdFxuICAgKi9cbiAgZ2V0S2V5cyhjb21wcmVzc2VkID0gZmFsc2UpOiBEZWZhdWx0S2V5cyB7XG4gICAgbGV0IHBydiA9IHRoaXMuZ2V0UHJpdmF0ZUtleSgpPy50b1N0cmluZygnaGV4Jyk7XG4gICAgaWYgKHBydiAmJiBjb21wcmVzc2VkKSB7XG4gICAgICBwcnYgKz0gJzAxJztcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgcHViOiB0aGlzLmdldFB1YmxpY0tleSh7IGNvbXByZXNzZWQgfSkudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgcHJ2LFxuICAgIH07XG4gIH1cblxuICBnZXRDb21wcmVzc2VkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmtleVBhaXIuY29tcHJlc3NlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYSBwdWJsaWMgYWRkcmVzcyBvZiBhbiB1bmNvbXByZXNzZWQgcHVibGljIGtleS5cbiAgICpcbiAgICogQHJldHVybnMge3N0cmluZ30gVGhlIHB1YmxpYyBhZGRyZXNzXG4gICAqL1xuICBnZXRBZGRyZXNzKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0U1RYQWRkcmVzcyhmYWxzZSwgVHJhbnNhY3Rpb25WZXJzaW9uLk1haW5uZXQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhIHB1YmxpYyBhZGRyZXNzIG9mIGFuIHVuY29tcHJlc3NlZCBwdWJsaWMga2V5LlxuICAgKlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGNvbXByZXNzZWQgLSBDb21wcmVzcyBwdWJsaWMga2V5IChkZWZhdWx0cyB0byBmYWxzZSlcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvblZlcnNpb259IG5ldHdvcmsgLSBzZWxlY3QgTWFpbm5ldCBvciBUZXN0bmV0IGZvciB0aGUgYWRkcmVzc1xuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgcHVibGljIGFkZHJlc3NcbiAgICovXG4gIGdldFNUWEFkZHJlc3MoY29tcHJlc3NlZCA9IGZhbHNlLCBuZXR3b3JrOiBUcmFuc2FjdGlvblZlcnNpb24gPSBUcmFuc2FjdGlvblZlcnNpb24uTWFpbm5ldCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGdldEFkZHJlc3NGcm9tUHVibGljS2V5KHRoaXMuZ2V0S2V5cyhjb21wcmVzc2VkKS5wdWIsIG5ldHdvcmspO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,23 @@
1
+ import { BaseCoin as CoinConfig } from '@bitgo/statics';
2
+ import { Transaction } from './transaction';
3
+ import { SendParams } from './iface';
4
+ import { ContractCallPayload } from '@stacks/transactions/dist/payload';
5
+ import { AbstractContractBuilder } from './abstractContractBuilder';
6
+ export declare class SendmanyBuilder extends AbstractContractBuilder {
7
+ private _sendParams;
8
+ constructor(_coinConfig: Readonly<CoinConfig>);
9
+ static isValidContractCall(coinConfig: Readonly<CoinConfig>, payload: ContractCallPayload): boolean;
10
+ private sendParamsToFunctionArgs;
11
+ private sendParamsToPostcondition;
12
+ initBuilder(tx: Transaction): void;
13
+ /**
14
+ * Set a transfer
15
+ *
16
+ * @param {SendParams} sendParams - the sender address
17
+ * @returns {TransactionBuilder} This transaction builder
18
+ */
19
+ send({ address, amount, memo }: SendParams): this;
20
+ /** @inheritdoc */
21
+ protected buildImplementation(): Promise<Transaction>;
22
+ }
23
+ //# sourceMappingURL=sendmanyBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sendmanyBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/sendmanyBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAoD,MAAM,gBAAgB,CAAC;AAkB1G,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAQ5C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,qBAAa,eAAgB,SAAQ,uBAAuB;IAC1D,OAAO,CAAC,WAAW,CAAoB;gBAE3B,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;WAI/B,mBAAmB,CAAC,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO;IAS1G,OAAO,CAAC,wBAAwB,CAU9B;IAEF,OAAO,CAAC,yBAAyB;IAkBjC,WAAW,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IAKlC;;;;;OAKG;IACH,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,UAAU,GAAG,IAAI;IAejD,kBAAkB;cACF,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;CAS5D"}
@@ -0,0 +1,75 @@
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.SendmanyBuilder = void 0;
7
+ const statics_1 = require("@bitgo/statics");
8
+ const bn_js_1 = __importDefault(require("bn.js"));
9
+ const transactions_1 = require("@stacks/transactions");
10
+ const sdk_core_1 = require("@bitgo/sdk-core");
11
+ const utils_1 = require("./utils");
12
+ const constants_1 = require("./constants");
13
+ const abstractContractBuilder_1 = require("./abstractContractBuilder");
14
+ class SendmanyBuilder extends abstractContractBuilder_1.AbstractContractBuilder {
15
+ constructor(_coinConfig) {
16
+ super(_coinConfig);
17
+ this._sendParams = [];
18
+ this.sendParamsToFunctionArgs = (sendParams) => [
19
+ transactions_1.listCV(sendParams.map((recipient) => transactions_1.tupleCV({
20
+ to: transactions_1.standardPrincipalCV(recipient.address),
21
+ ustx: transactions_1.uintCV(recipient.amount),
22
+ memo: transactions_1.bufferCVFromString(recipient.memo || ''),
23
+ }))),
24
+ ];
25
+ }
26
+ static isValidContractCall(coinConfig, payload) {
27
+ return (coinConfig.network.sendmanymemoContractAddress ===
28
+ transactions_1.addressToString(payload.contractAddress) &&
29
+ constants_1.CONTRACT_NAME_SENDMANY === payload.contractName.content &&
30
+ constants_1.FUNCTION_NAME_SENDMANY === payload.functionName.content);
31
+ }
32
+ sendParamsToPostcondition(sendParams) {
33
+ const sum = sendParams.reduce((current, next) => current.add(new bn_js_1.default(next.amount)), new bn_js_1.default(0));
34
+ return [
35
+ transactions_1.makeStandardSTXPostCondition(utils_1.getSTXAddressFromPubKeys(this._fromPubKeys, this._coinConfig.network.type === statics_1.NetworkType.MAINNET
36
+ ? transactions_1.AddressVersion.MainnetMultiSig
37
+ : transactions_1.AddressVersion.TestnetMultiSig, this._fromPubKeys.length > 1 ? transactions_1.AddressHashMode.SerializeP2SH : transactions_1.AddressHashMode.SerializeP2PKH, this._numberSignatures).address, transactions_1.FungibleConditionCode.Equal, sum),
38
+ ];
39
+ }
40
+ initBuilder(tx) {
41
+ super.initBuilder(tx);
42
+ this._sendParams = utils_1.functionArgsToSendParams(tx.stxTransaction.payload.functionArgs);
43
+ }
44
+ /**
45
+ * Set a transfer
46
+ *
47
+ * @param {SendParams} sendParams - the sender address
48
+ * @returns {TransactionBuilder} This transaction builder
49
+ */
50
+ send({ address, amount, memo }) {
51
+ if (!address || !utils_1.isValidAddress(address)) {
52
+ throw new sdk_core_1.BuildTransactionError('Invalid or missing address, got: ' + address);
53
+ }
54
+ if (!amount || !utils_1.isValidAmount(amount)) {
55
+ throw new sdk_core_1.BuildTransactionError('Invalid or missing amount, got: ' + amount);
56
+ }
57
+ if (!!memo && !utils_1.isValidMemo(memo)) {
58
+ throw new sdk_core_1.BuildTransactionError('Invalid memo, got: ' + memo);
59
+ }
60
+ this._sendParams.push({ address, amount, memo });
61
+ return this;
62
+ }
63
+ /** @inheritdoc */
64
+ async buildImplementation() {
65
+ this._contractAddress = this._coinConfig.network.sendmanymemoContractAddress;
66
+ this._contractName = constants_1.CONTRACT_NAME_SENDMANY;
67
+ this._functionName = constants_1.FUNCTION_NAME_SENDMANY;
68
+ this._functionArgs = this.sendParamsToFunctionArgs(this._sendParams);
69
+ this._postConditionMode = transactions_1.PostConditionMode.Deny;
70
+ this._postConditions = this.sendParamsToPostcondition(this._sendParams);
71
+ return await super.buildImplementation();
72
+ }
73
+ }
74
+ exports.SendmanyBuilder = SendmanyBuilder;
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VuZG1hbnlCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9zZW5kbWFueUJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsNENBQTBHO0FBQzFHLGtEQUEyQjtBQUMzQix1REFjOEI7QUFDOUIsOENBQXdEO0FBRXhELG1DQU1pQjtBQUVqQiwyQ0FBNkU7QUFFN0UsdUVBQW9FO0FBRXBFLE1BQWEsZUFBZ0IsU0FBUSxpREFBdUI7SUFHMUQsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFIYixnQkFBVyxHQUFpQixFQUFFLENBQUM7UUFlL0IsNkJBQXdCLEdBQUcsQ0FBQyxVQUF3QixFQUFrQixFQUFFLENBQUM7WUFDL0UscUJBQU0sQ0FDSixVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FDM0Isc0JBQU8sQ0FBQztnQkFDTixFQUFFLEVBQUUsa0NBQW1CLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQztnQkFDMUMsSUFBSSxFQUFFLHFCQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQztnQkFDOUIsSUFBSSxFQUFFLGlDQUFrQixDQUFDLFNBQVMsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDO2FBQy9DLENBQUMsQ0FDSCxDQUNGO1NBQ0YsQ0FBQztJQXJCRixDQUFDO0lBRU0sTUFBTSxDQUFDLG1CQUFtQixDQUFDLFVBQWdDLEVBQUUsT0FBNEI7UUFDOUYsT0FBTyxDQUNKLFVBQVUsQ0FBQyxPQUE4QixDQUFDLDJCQUEyQjtZQUNwRSw4QkFBZSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUM7WUFDMUMsa0NBQXNCLEtBQUssT0FBTyxDQUFDLFlBQVksQ0FBQyxPQUFPO1lBQ3ZELGtDQUFzQixLQUFLLE9BQU8sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUN4RCxDQUFDO0lBQ0osQ0FBQztJQWNPLHlCQUF5QixDQUFDLFVBQXdCO1FBQ3hELE1BQU0sR0FBRyxHQUFXLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksZUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLElBQUksZUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUcsT0FBTztZQUNMLDJDQUE0QixDQUMxQixnQ0FBd0IsQ0FDdEIsSUFBSSxDQUFDLFlBQVksRUFDakIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxLQUFLLHFCQUFXLENBQUMsT0FBTztnQkFDbkQsQ0FBQyxDQUFDLDZCQUFjLENBQUMsZUFBZTtnQkFDaEMsQ0FBQyxDQUFDLDZCQUFjLENBQUMsZUFBZSxFQUNsQyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLDhCQUFlLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyw4QkFBZSxDQUFDLGNBQWMsRUFDN0YsSUFBSSxDQUFDLGlCQUFpQixDQUN2QixDQUFDLE9BQU8sRUFDVCxvQ0FBcUIsQ0FBQyxLQUFLLEVBQzNCLEdBQUcsQ0FDSjtTQUNGLENBQUM7SUFDSixDQUFDO0lBRUQsV0FBVyxDQUFDLEVBQWU7UUFDekIsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN0QixJQUFJLENBQUMsV0FBVyxHQUFHLGdDQUF3QixDQUFFLEVBQUUsQ0FBQyxjQUFjLENBQUMsT0FBK0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUMvRyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxJQUFJLENBQUMsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBYztRQUN4QyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsc0JBQWMsQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUN4QyxNQUFNLElBQUksZ0NBQXFCLENBQUMsbUNBQW1DLEdBQUcsT0FBTyxDQUFDLENBQUM7U0FDaEY7UUFDRCxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMscUJBQWEsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNyQyxNQUFNLElBQUksZ0NBQXFCLENBQUMsa0NBQWtDLEdBQUcsTUFBTSxDQUFDLENBQUM7U0FDOUU7UUFDRCxJQUFJLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxtQkFBVyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ2hDLE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsQ0FBQztTQUMvRDtRQUVELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ2pELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELGtCQUFrQjtJQUNSLEtBQUssQ0FBQyxtQkFBbUI7UUFDakMsSUFBSSxDQUFDLGdCQUFnQixHQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBOEIsQ0FBQywyQkFBMkIsQ0FBQztRQUNyRyxJQUFJLENBQUMsYUFBYSxHQUFHLGtDQUFzQixDQUFDO1FBQzVDLElBQUksQ0FBQyxhQUFhLEdBQUcsa0NBQXNCLENBQUM7UUFDNUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3JFLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxnQ0FBaUIsQ0FBQyxJQUFJLENBQUM7UUFDakQsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3hFLE9BQU8sTUFBTSxLQUFLLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUMzQyxDQUFDO0NBQ0Y7QUFsRkQsMENBa0ZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZywgTmV0d29ya1R5cGUsIFN0YWNrc05ldHdvcmsgYXMgQml0Z29TdGFja3NOZXR3b3JrIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IEJpZ051bSBmcm9tICdibi5qcyc7XG5pbXBvcnQge1xuICBBZGRyZXNzSGFzaE1vZGUsXG4gIGFkZHJlc3NUb1N0cmluZyxcbiAgQWRkcmVzc1ZlcnNpb24sXG4gIGJ1ZmZlckNWRnJvbVN0cmluZyxcbiAgQ2xhcml0eVZhbHVlLFxuICBGdW5naWJsZUNvbmRpdGlvbkNvZGUsXG4gIGxpc3RDVixcbiAgbWFrZVN0YW5kYXJkU1RYUG9zdENvbmRpdGlvbixcbiAgUG9zdENvbmRpdGlvbixcbiAgUG9zdENvbmRpdGlvbk1vZGUsXG4gIHN0YW5kYXJkUHJpbmNpcGFsQ1YsXG4gIHR1cGxlQ1YsXG4gIHVpbnRDVixcbn0gZnJvbSAnQHN0YWNrcy90cmFuc2FjdGlvbnMnO1xuaW1wb3J0IHsgQnVpbGRUcmFuc2FjdGlvbkVycm9yIH0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5pbXBvcnQge1xuICBmdW5jdGlvbkFyZ3NUb1NlbmRQYXJhbXMsXG4gIGdldFNUWEFkZHJlc3NGcm9tUHViS2V5cyxcbiAgaXNWYWxpZEFkZHJlc3MsXG4gIGlzVmFsaWRBbW91bnQsXG4gIGlzVmFsaWRNZW1vLFxufSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IFNlbmRQYXJhbXMgfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB7IENPTlRSQUNUX05BTUVfU0VORE1BTlksIEZVTkNUSU9OX05BTUVfU0VORE1BTlkgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBDb250cmFjdENhbGxQYXlsb2FkIH0gZnJvbSAnQHN0YWNrcy90cmFuc2FjdGlvbnMvZGlzdC9wYXlsb2FkJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJhY3RCdWlsZGVyIH0gZnJvbSAnLi9hYnN0cmFjdENvbnRyYWN0QnVpbGRlcic7XG5cbmV4cG9ydCBjbGFzcyBTZW5kbWFueUJ1aWxkZXIgZXh0ZW5kcyBBYnN0cmFjdENvbnRyYWN0QnVpbGRlciB7XG4gIHByaXZhdGUgX3NlbmRQYXJhbXM6IFNlbmRQYXJhbXNbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgaXNWYWxpZENvbnRyYWN0Q2FsbChjb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPiwgcGF5bG9hZDogQ29udHJhY3RDYWxsUGF5bG9hZCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICAoY29pbkNvbmZpZy5uZXR3b3JrIGFzIEJpdGdvU3RhY2tzTmV0d29yaykuc2VuZG1hbnltZW1vQ29udHJhY3RBZGRyZXNzID09PVxuICAgICAgICBhZGRyZXNzVG9TdHJpbmcocGF5bG9hZC5jb250cmFjdEFkZHJlc3MpICYmXG4gICAgICBDT05UUkFDVF9OQU1FX1NFTkRNQU5ZID09PSBwYXlsb2FkLmNvbnRyYWN0TmFtZS5jb250ZW50ICYmXG4gICAgICBGVU5DVElPTl9OQU1FX1NFTkRNQU5ZID09PSBwYXlsb2FkLmZ1bmN0aW9uTmFtZS5jb250ZW50XG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgc2VuZFBhcmFtc1RvRnVuY3Rpb25BcmdzID0gKHNlbmRQYXJhbXM6IFNlbmRQYXJhbXNbXSk6IENsYXJpdHlWYWx1ZVtdID0+IFtcbiAgICBsaXN0Q1YoXG4gICAgICBzZW5kUGFyYW1zLm1hcCgocmVjaXBpZW50KSA9PlxuICAgICAgICB0dXBsZUNWKHtcbiAgICAgICAgICB0bzogc3RhbmRhcmRQcmluY2lwYWxDVihyZWNpcGllbnQuYWRkcmVzcyksXG4gICAgICAgICAgdXN0eDogdWludENWKHJlY2lwaWVudC5hbW91bnQpLFxuICAgICAgICAgIG1lbW86IGJ1ZmZlckNWRnJvbVN0cmluZyhyZWNpcGllbnQubWVtbyB8fCAnJyksXG4gICAgICAgIH0pXG4gICAgICApXG4gICAgKSxcbiAgXTtcblxuICBwcml2YXRlIHNlbmRQYXJhbXNUb1Bvc3Rjb25kaXRpb24oc2VuZFBhcmFtczogU2VuZFBhcmFtc1tdKTogUG9zdENvbmRpdGlvbltdIHtcbiAgICBjb25zdCBzdW06IEJpZ051bSA9IHNlbmRQYXJhbXMucmVkdWNlKChjdXJyZW50LCBuZXh0KSA9PiBjdXJyZW50LmFkZChuZXcgQmlnTnVtKG5leHQuYW1vdW50KSksIG5ldyBCaWdOdW0oMCkpO1xuICAgIHJldHVybiBbXG4gICAgICBtYWtlU3RhbmRhcmRTVFhQb3N0Q29uZGl0aW9uKFxuICAgICAgICBnZXRTVFhBZGRyZXNzRnJvbVB1YktleXMoXG4gICAgICAgICAgdGhpcy5fZnJvbVB1YktleXMsXG4gICAgICAgICAgdGhpcy5fY29pbkNvbmZpZy5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVRcbiAgICAgICAgICAgID8gQWRkcmVzc1ZlcnNpb24uTWFpbm5ldE11bHRpU2lnXG4gICAgICAgICAgICA6IEFkZHJlc3NWZXJzaW9uLlRlc3RuZXRNdWx0aVNpZyxcbiAgICAgICAgICB0aGlzLl9mcm9tUHViS2V5cy5sZW5ndGggPiAxID8gQWRkcmVzc0hhc2hNb2RlLlNlcmlhbGl6ZVAyU0ggOiBBZGRyZXNzSGFzaE1vZGUuU2VyaWFsaXplUDJQS0gsXG4gICAgICAgICAgdGhpcy5fbnVtYmVyU2lnbmF0dXJlc1xuICAgICAgICApLmFkZHJlc3MsXG4gICAgICAgIEZ1bmdpYmxlQ29uZGl0aW9uQ29kZS5FcXVhbCxcbiAgICAgICAgc3VtXG4gICAgICApLFxuICAgIF07XG4gIH1cblxuICBpbml0QnVpbGRlcih0eDogVHJhbnNhY3Rpb24pOiB2b2lkIHtcbiAgICBzdXBlci5pbml0QnVpbGRlcih0eCk7XG4gICAgdGhpcy5fc2VuZFBhcmFtcyA9IGZ1bmN0aW9uQXJnc1RvU2VuZFBhcmFtcygodHguc3R4VHJhbnNhY3Rpb24ucGF5bG9hZCBhcyBDb250cmFjdENhbGxQYXlsb2FkKS5mdW5jdGlvbkFyZ3MpO1xuICB9XG5cbiAgLyoqXG4gICAqICBTZXQgYSB0cmFuc2ZlclxuICAgKlxuICAgKiBAcGFyYW0ge1NlbmRQYXJhbXN9IHNlbmRQYXJhbXMgLSB0aGUgc2VuZGVyIGFkZHJlc3NcbiAgICogQHJldHVybnMge1RyYW5zYWN0aW9uQnVpbGRlcn0gVGhpcyB0cmFuc2FjdGlvbiBidWlsZGVyXG4gICAqL1xuICBzZW5kKHsgYWRkcmVzcywgYW1vdW50LCBtZW1vIH06IFNlbmRQYXJhbXMpOiB0aGlzIHtcbiAgICBpZiAoIWFkZHJlc3MgfHwgIWlzVmFsaWRBZGRyZXNzKGFkZHJlc3MpKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIG9yIG1pc3NpbmcgYWRkcmVzcywgZ290OiAnICsgYWRkcmVzcyk7XG4gICAgfVxuICAgIGlmICghYW1vdW50IHx8ICFpc1ZhbGlkQW1vdW50KGFtb3VudCkpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgb3IgbWlzc2luZyBhbW91bnQsIGdvdDogJyArIGFtb3VudCk7XG4gICAgfVxuICAgIGlmICghIW1lbW8gJiYgIWlzVmFsaWRNZW1vKG1lbW8pKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIG1lbW8sIGdvdDogJyArIG1lbW8pO1xuICAgIH1cblxuICAgIHRoaXMuX3NlbmRQYXJhbXMucHVzaCh7IGFkZHJlc3MsIGFtb3VudCwgbWVtbyB9KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgYnVpbGRJbXBsZW1lbnRhdGlvbigpOiBQcm9taXNlPFRyYW5zYWN0aW9uPiB7XG4gICAgdGhpcy5fY29udHJhY3RBZGRyZXNzID0gKHRoaXMuX2NvaW5Db25maWcubmV0d29yayBhcyBCaXRnb1N0YWNrc05ldHdvcmspLnNlbmRtYW55bWVtb0NvbnRyYWN0QWRkcmVzcztcbiAgICB0aGlzLl9jb250cmFjdE5hbWUgPSBDT05UUkFDVF9OQU1FX1NFTkRNQU5ZO1xuICAgIHRoaXMuX2Z1bmN0aW9uTmFtZSA9IEZVTkNUSU9OX05BTUVfU0VORE1BTlk7XG4gICAgdGhpcy5fZnVuY3Rpb25BcmdzID0gdGhpcy5zZW5kUGFyYW1zVG9GdW5jdGlvbkFyZ3ModGhpcy5fc2VuZFBhcmFtcyk7XG4gICAgdGhpcy5fcG9zdENvbmRpdGlvbk1vZGUgPSBQb3N0Q29uZGl0aW9uTW9kZS5EZW55O1xuICAgIHRoaXMuX3Bvc3RDb25kaXRpb25zID0gdGhpcy5zZW5kUGFyYW1zVG9Qb3N0Y29uZGl0aW9uKHRoaXMuX3NlbmRQYXJhbXMpO1xuICAgIHJldHVybiBhd2FpdCBzdXBlci5idWlsZEltcGxlbWVudGF0aW9uKCk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,49 @@
1
+ import { StacksTransaction } from '@stacks/transactions';
2
+ import { BaseCoin as CoinConfig } from '@bitgo/statics';
3
+ import { BaseKey, BaseTransaction, TransactionType } from '@bitgo/sdk-core';
4
+ import { SignatureData, TxData } from './iface';
5
+ import { KeyPair } from './keyPair';
6
+ export declare class Transaction extends BaseTransaction {
7
+ private _stxTransaction;
8
+ protected _type: TransactionType;
9
+ private _sigHash;
10
+ constructor(_coinConfig: Readonly<CoinConfig>);
11
+ /** @inheritdoc */
12
+ canSign(key: BaseKey): boolean;
13
+ sign(keyPair: KeyPair[] | KeyPair, sigHash?: string): Promise<void>;
14
+ appendOrigin(pubKeyString: string[] | string): Promise<void>;
15
+ signWithSignatures(signature: SignatureData[] | SignatureData, isMultiSig: boolean): Promise<void>;
16
+ get signature(): string[];
17
+ /** @inheritdoc */
18
+ toJson(): TxData;
19
+ private getPayloadData;
20
+ /**
21
+ * Return the length of a transaction. This is needed to calculate
22
+ * the transaction fee.
23
+ *
24
+ * @returns {number} size in bytes of the serialized transaction
25
+ */
26
+ transactionSize(): number;
27
+ toBroadcastFormat(): string;
28
+ get stxTransaction(): StacksTransaction;
29
+ set stxTransaction(t: StacksTransaction);
30
+ private getNonce;
31
+ /**
32
+ * Sets this transaction payload
33
+ *
34
+ * @param rawTransaction
35
+ */
36
+ fromRawTransaction(rawTransaction: string): void;
37
+ /**
38
+ * Set the transaction type
39
+ *
40
+ * @param {TransactionType} transactionType The transaction type to be set
41
+ */
42
+ setTransactionType(transactionType: TransactionType): void;
43
+ /**
44
+ * Load the input and output data on this transaction using the transaction json
45
+ * if there are outputs.
46
+ */
47
+ loadInputsAndOutputs(): void;
48
+ }
49
+ //# sourceMappingURL=transaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../src/lib/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAYL,iBAAiB,EAElB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAiB,MAAM,gBAAgB,CAAC;AACvE,OAAO,EACL,OAAO,EACP,eAAe,EAKf,eAAe,EAChB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,aAAa,EAAmD,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjG,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,qBAAa,WAAY,SAAQ,eAAe;IAC9C,OAAO,CAAC,eAAe,CAAoB;IAC3C,SAAS,CAAC,KAAK,EAAE,eAAe,CAAC;IACjC,OAAO,CAAC,QAAQ,CAAS;gBAEb,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,kBAAkB;IAClB,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO;IAIxB,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBnE,YAAY,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ5D,kBAAkB,CAAC,SAAS,EAAE,aAAa,EAAE,GAAG,aAAa,EAAE,UAAU,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBxG,IAAI,SAAS,IAAI,MAAM,EAAE,CAexB;IAED,kBAAkB;IAClB,MAAM,IAAI,MAAM;IAchB,OAAO,CAAC,cAAc;IA+BtB;;;;;OAKG;IACH,eAAe,IAAI,MAAM;IAIzB,iBAAiB,IAAI,MAAM;IAO3B,IAAI,cAAc,IAAI,iBAAiB,CAEtC;IAED,IAAI,cAAc,CAAC,CAAC,EAAE,iBAAiB,EAEtC;IAED,OAAO,CAAC,QAAQ;IAQhB;;;;OAIG;IACH,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAUhD;;;;OAIG;IACH,kBAAkB,CAAC,eAAe,EAAE,eAAe,GAAG,IAAI;IAI1D;;;OAGG;IACH,oBAAoB,IAAI,IAAI;CA8C7B"}