@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.
- package/.eslintignore +5 -0
- package/.mocharc.yml +8 -0
- package/CHANGELOG.md +11 -0
- package/LICENSE +191 -0
- package/README.md +30 -0
- package/dist/src/index.d.ts +5 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +30 -0
- package/dist/src/lib/abstractContractBuilder.d.ts +19 -0
- package/dist/src/lib/abstractContractBuilder.d.ts.map +1 -0
- package/dist/src/lib/abstractContractBuilder.js +70 -0
- package/dist/src/lib/constants.d.ts +8 -0
- package/dist/src/lib/constants.d.ts.map +1 -0
- package/dist/src/lib/constants.js +19 -0
- package/dist/src/lib/contractBuilder.d.ts +33 -0
- package/dist/src/lib/contractBuilder.d.ts.map +1 -0
- package/dist/src/lib/contractBuilder.js +116 -0
- package/dist/src/lib/iface.d.ts +48 -0
- package/dist/src/lib/iface.d.ts.map +1 -0
- package/dist/src/lib/iface.js +3 -0
- package/dist/src/lib/index.d.ts +6 -0
- package/dist/src/lib/index.d.ts.map +1 -0
- package/dist/src/lib/index.js +33 -0
- package/dist/src/lib/keyPair.d.ts +55 -0
- package/dist/src/lib/keyPair.d.ts.map +1 -0
- package/dist/src/lib/keyPair.js +140 -0
- package/dist/src/lib/sendmanyBuilder.d.ts +23 -0
- package/dist/src/lib/sendmanyBuilder.d.ts.map +1 -0
- package/dist/src/lib/sendmanyBuilder.js +75 -0
- package/dist/src/lib/transaction.d.ts +49 -0
- package/dist/src/lib/transaction.d.ts.map +1 -0
- package/dist/src/lib/transaction.js +225 -0
- package/dist/src/lib/transactionBuilder.d.ts +86 -0
- package/dist/src/lib/transactionBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder.js +263 -0
- package/dist/src/lib/transactionBuilderFactory.d.ts +30 -0
- package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilderFactory.js +81 -0
- package/dist/src/lib/transferBuilder.d.ts +30 -0
- package/dist/src/lib/transferBuilder.d.ts.map +1 -0
- package/dist/src/lib/transferBuilder.js +99 -0
- package/dist/src/lib/utils.d.ts +207 -0
- package/dist/src/lib/utils.d.ts.map +1 -0
- package/dist/src/lib/utils.js +503 -0
- package/dist/src/stx.d.ts +56 -0
- package/dist/src/stx.d.ts.map +1 -0
- package/dist/src/stx.js +196 -0
- package/dist/src/tstx.d.ts +16 -0
- package/dist/src/tstx.d.ts.map +1 -0
- package/dist/src/tstx.js +24 -0
- package/dist/src/types.d.ts +34 -0
- package/dist/src/types.d.ts.map +1 -0
- package/dist/src/types.js +3 -0
- 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 @@
|
|
|
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"}
|