@bitgo-beta/sdk-coin-evm 1.0.1-beta.8 → 1.0.1-beta.800

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.
@@ -0,0 +1,20 @@
1
+ /**
2
+ * @prettier
3
+ */
4
+ import { EthLikeTokenConfig } from '@bitgo-beta/statics';
5
+ import { BitGoBase, CoinConstructor, MPCAlgorithm, NamedCoinConstructor } from '@bitgo-beta/sdk-core';
6
+ import { CoinNames, EthLikeToken } from '@bitgo-beta/abstract-eth';
7
+ import { TransactionBuilder } from './lib';
8
+ export declare class EthLikeErc20Token extends EthLikeToken {
9
+ readonly tokenConfig: EthLikeTokenConfig;
10
+ private readonly coinNames;
11
+ constructor(bitgo: BitGoBase, tokenConfig: EthLikeTokenConfig, coinNames: CoinNames);
12
+ static createTokenConstructor(config: EthLikeTokenConfig, coinNames: CoinNames): CoinConstructor;
13
+ static createTokenConstructors(coinNames: CoinNames): NamedCoinConstructor[];
14
+ protected getTransactionBuilder(): TransactionBuilder;
15
+ getMPCAlgorithm(): MPCAlgorithm;
16
+ supportsTss(): boolean;
17
+ recoveryBlockchainExplorerQuery(query: Record<string, string>): Promise<Record<string, unknown>>;
18
+ getFullName(): string;
19
+ }
20
+ //# sourceMappingURL=ethLikeErc20Token.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ethLikeErc20Token.d.ts","sourceRoot":"","sources":["../../src/ethLikeErc20Token.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAS,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,eAAe,EAAU,YAAY,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC9G,OAAO,EAAE,SAAS,EAAE,YAAY,EAAmC,MAAM,0BAA0B,CAAC;AACpG,OAAO,EAAE,kBAAkB,EAAE,MAAM,OAAO,CAAC;AAG3C,qBAAa,iBAAkB,SAAQ,YAAY;IACjD,SAAgB,WAAW,EAAE,kBAAkB,CAAC;IAChD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;gBAE1B,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,kBAAkB,EAAE,SAAS,EAAE,SAAS;IAKnF,MAAM,CAAC,sBAAsB,CAAC,MAAM,EAAE,kBAAkB,EAAE,SAAS,EAAE,SAAS,GAAG,eAAe;IAIhG,MAAM,CAAC,uBAAuB,CAAC,SAAS,EAAE,SAAS,GAAG,oBAAoB,EAAE;IAI5E,SAAS,CAAC,qBAAqB,IAAI,kBAAkB;IAIrD,eAAe,IAAI,YAAY;IAI/B,WAAW,IAAI,OAAO;IAIhB,+BAA+B,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAatG,WAAW,IAAI,MAAM;CAGtB"}
@@ -0,0 +1,49 @@
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.EthLikeErc20Token = void 0;
7
+ /**
8
+ * @prettier
9
+ */
10
+ const statics_1 = require("@bitgo-beta/statics");
11
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
12
+ const abstract_eth_1 = require("@bitgo-beta/abstract-eth");
13
+ const lib_1 = require("./lib");
14
+ const assert_1 = __importDefault(require("assert"));
15
+ class EthLikeErc20Token extends abstract_eth_1.EthLikeToken {
16
+ constructor(bitgo, tokenConfig, coinNames) {
17
+ super(bitgo, tokenConfig, coinNames);
18
+ this.coinNames = coinNames;
19
+ }
20
+ static createTokenConstructor(config, coinNames) {
21
+ return (bitgo) => new this(bitgo, config, coinNames);
22
+ }
23
+ static createTokenConstructors(coinNames) {
24
+ return super.createTokenConstructors(coinNames);
25
+ }
26
+ getTransactionBuilder() {
27
+ return new lib_1.TransactionBuilder(statics_1.coins.get(this.getBaseChain()));
28
+ }
29
+ getMPCAlgorithm() {
30
+ return 'ecdsa';
31
+ }
32
+ supportsTss() {
33
+ return true;
34
+ }
35
+ async recoveryBlockchainExplorerQuery(query) {
36
+ const family = this.getFamily();
37
+ const evmConfig = sdk_core_1.common.Environments[this.bitgo.getEnv()].evm;
38
+ (0, assert_1.default)(evmConfig && this.getFamily() in evmConfig, `env config is missing for ${this.getFamily()} in ${this.bitgo.getEnv()}`);
39
+ const explorerUrl = evmConfig[family].baseUrl;
40
+ const apiToken = evmConfig[family].apiToken;
41
+ return await (0, abstract_eth_1.recoveryBlockchainExplorerQuery)(query, explorerUrl, apiToken);
42
+ }
43
+ //TODO: implement a way to return the coin family name or coin name instead of standard ERC20 Token.
44
+ getFullName() {
45
+ return 'ERC20 Token';
46
+ }
47
+ }
48
+ exports.EthLikeErc20Token = EthLikeErc20Token;
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXRoTGlrZUVyYzIwVG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZXRoTGlrZUVyYzIwVG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7O0dBRUc7QUFDSCxpREFBZ0U7QUFDaEUsbURBQThHO0FBQzlHLDJEQUFvRztBQUNwRywrQkFBMkM7QUFDM0Msb0RBQTRCO0FBRTVCLE1BQWEsaUJBQWtCLFNBQVEsMkJBQVk7SUFJakQsWUFBWSxLQUFnQixFQUFFLFdBQStCLEVBQUUsU0FBb0I7UUFDakYsS0FBSyxDQUFDLEtBQUssRUFBRSxXQUFXLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7SUFDN0IsQ0FBQztJQUVELE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxNQUEwQixFQUFFLFNBQW9CO1FBQzVFLE9BQU8sQ0FBQyxLQUFnQixFQUFFLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFRCxNQUFNLENBQUMsdUJBQXVCLENBQUMsU0FBb0I7UUFDakQsT0FBTyxLQUFLLENBQUMsdUJBQXVCLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVTLHFCQUFxQjtRQUM3QixPQUFPLElBQUksd0JBQWtCLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRCxlQUFlO1FBQ2IsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVELFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxLQUFLLENBQUMsK0JBQStCLENBQUMsS0FBNkI7UUFDakUsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2hDLE1BQU0sU0FBUyxHQUFHLGlCQUFNLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUM7UUFDL0QsSUFBQSxnQkFBTSxFQUNKLFNBQVMsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksU0FBUyxFQUMxQyw2QkFBNkIsSUFBSSxDQUFDLFNBQVMsRUFBRSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FDMUUsQ0FBQztRQUNGLE1BQU0sV0FBVyxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUM7UUFDOUMsTUFBTSxRQUFRLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQztRQUM1QyxPQUFPLE1BQU0sSUFBQSw4Q0FBK0IsRUFBQyxLQUFLLEVBQUUsV0FBcUIsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUN2RixDQUFDO0lBRUQsb0dBQW9HO0lBQ3BHLFdBQVc7UUFDVCxPQUFPLGFBQWEsQ0FBQztJQUN2QixDQUFDO0NBQ0Y7QUE3Q0QsOENBNkNDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAcHJldHRpZXJcbiAqL1xuaW1wb3J0IHsgY29pbnMsIEV0aExpa2VUb2tlbkNvbmZpZyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHsgQml0R29CYXNlLCBDb2luQ29uc3RydWN0b3IsIGNvbW1vbiwgTVBDQWxnb3JpdGhtLCBOYW1lZENvaW5Db25zdHJ1Y3RvciB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IENvaW5OYW1lcywgRXRoTGlrZVRva2VuLCByZWNvdmVyeUJsb2NrY2hhaW5FeHBsb3JlclF1ZXJ5IH0gZnJvbSAnQGJpdGdvLWJldGEvYWJzdHJhY3QtZXRoJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vbGliJztcbmltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcblxuZXhwb3J0IGNsYXNzIEV0aExpa2VFcmMyMFRva2VuIGV4dGVuZHMgRXRoTGlrZVRva2VuIHtcbiAgcHVibGljIHJlYWRvbmx5IHRva2VuQ29uZmlnOiBFdGhMaWtlVG9rZW5Db25maWc7XG4gIHByaXZhdGUgcmVhZG9ubHkgY29pbk5hbWVzOiBDb2luTmFtZXM7XG5cbiAgY29uc3RydWN0b3IoYml0Z286IEJpdEdvQmFzZSwgdG9rZW5Db25maWc6IEV0aExpa2VUb2tlbkNvbmZpZywgY29pbk5hbWVzOiBDb2luTmFtZXMpIHtcbiAgICBzdXBlcihiaXRnbywgdG9rZW5Db25maWcsIGNvaW5OYW1lcyk7XG4gICAgdGhpcy5jb2luTmFtZXMgPSBjb2luTmFtZXM7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlVG9rZW5Db25zdHJ1Y3Rvcihjb25maWc6IEV0aExpa2VUb2tlbkNvbmZpZywgY29pbk5hbWVzOiBDb2luTmFtZXMpOiBDb2luQ29uc3RydWN0b3Ige1xuICAgIHJldHVybiAoYml0Z286IEJpdEdvQmFzZSkgPT4gbmV3IHRoaXMoYml0Z28sIGNvbmZpZywgY29pbk5hbWVzKTtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVUb2tlbkNvbnN0cnVjdG9ycyhjb2luTmFtZXM6IENvaW5OYW1lcyk6IE5hbWVkQ29pbkNvbnN0cnVjdG9yW10ge1xuICAgIHJldHVybiBzdXBlci5jcmVhdGVUb2tlbkNvbnN0cnVjdG9ycyhjb2luTmFtZXMpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldFRyYW5zYWN0aW9uQnVpbGRlcigpOiBUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICAgIHJldHVybiBuZXcgVHJhbnNhY3Rpb25CdWlsZGVyKGNvaW5zLmdldCh0aGlzLmdldEJhc2VDaGFpbigpKSk7XG4gIH1cblxuICBnZXRNUENBbGdvcml0aG0oKTogTVBDQWxnb3JpdGhtIHtcbiAgICByZXR1cm4gJ2VjZHNhJztcbiAgfVxuXG4gIHN1cHBvcnRzVHNzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgYXN5bmMgcmVjb3ZlcnlCbG9ja2NoYWluRXhwbG9yZXJRdWVyeShxdWVyeTogUmVjb3JkPHN0cmluZywgc3RyaW5nPik6IFByb21pc2U8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+IHtcbiAgICBjb25zdCBmYW1pbHkgPSB0aGlzLmdldEZhbWlseSgpO1xuICAgIGNvbnN0IGV2bUNvbmZpZyA9IGNvbW1vbi5FbnZpcm9ubWVudHNbdGhpcy5iaXRnby5nZXRFbnYoKV0uZXZtO1xuICAgIGFzc2VydChcbiAgICAgIGV2bUNvbmZpZyAmJiB0aGlzLmdldEZhbWlseSgpIGluIGV2bUNvbmZpZyxcbiAgICAgIGBlbnYgY29uZmlnIGlzIG1pc3NpbmcgZm9yICR7dGhpcy5nZXRGYW1pbHkoKX0gaW4gJHt0aGlzLmJpdGdvLmdldEVudigpfWBcbiAgICApO1xuICAgIGNvbnN0IGV4cGxvcmVyVXJsID0gZXZtQ29uZmlnW2ZhbWlseV0uYmFzZVVybDtcbiAgICBjb25zdCBhcGlUb2tlbiA9IGV2bUNvbmZpZ1tmYW1pbHldLmFwaVRva2VuO1xuICAgIHJldHVybiBhd2FpdCByZWNvdmVyeUJsb2NrY2hhaW5FeHBsb3JlclF1ZXJ5KHF1ZXJ5LCBleHBsb3JlclVybCBhcyBzdHJpbmcsIGFwaVRva2VuKTtcbiAgfVxuXG4gIC8vVE9ETzogaW1wbGVtZW50IGEgd2F5IHRvIHJldHVybiB0aGUgY29pbiBmYW1pbHkgbmFtZSBvciBjb2luIG5hbWUgaW5zdGVhZCBvZiBzdGFuZGFyZCBFUkMyMCBUb2tlbi5cbiAgZ2V0RnVsbE5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ0VSQzIwIFRva2VuJztcbiAgfVxufVxuIl19
@@ -0,0 +1,20 @@
1
+ /**
2
+ * @prettier
3
+ */
4
+ import { EthLikeTokenConfig } from '@bitgo-beta/statics';
5
+ import { BitGoBase, CoinConstructor, MPCAlgorithm, NamedCoinConstructor } from '@bitgo-beta/sdk-core';
6
+ import { CoinNames, EthLikeToken } from '@bitgo-beta/abstract-eth';
7
+ import { TransactionBuilder } from './lib';
8
+ export declare class EthLikeErc721Token extends EthLikeToken {
9
+ readonly tokenConfig: EthLikeTokenConfig;
10
+ private readonly coinNames;
11
+ constructor(bitgo: BitGoBase, tokenConfig: EthLikeTokenConfig, coinNames: CoinNames);
12
+ static createTokenConstructor(config: EthLikeTokenConfig, coinNames: CoinNames): CoinConstructor;
13
+ static createTokenConstructors(coinNames: CoinNames): NamedCoinConstructor[];
14
+ protected getTransactionBuilder(): TransactionBuilder;
15
+ getMPCAlgorithm(): MPCAlgorithm;
16
+ supportsTss(): boolean;
17
+ recoveryBlockchainExplorerQuery(query: Record<string, string>): Promise<Record<string, unknown>>;
18
+ getFullName(): string;
19
+ }
20
+ //# sourceMappingURL=ethLikeErc721Token.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ethLikeErc721Token.d.ts","sourceRoot":"","sources":["../../src/ethLikeErc721Token.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAS,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,eAAe,EAAU,YAAY,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC9G,OAAO,EAAE,SAAS,EAAE,YAAY,EAAmC,MAAM,0BAA0B,CAAC;AACpG,OAAO,EAAE,kBAAkB,EAAE,MAAM,OAAO,CAAC;AAG3C,qBAAa,kBAAmB,SAAQ,YAAY;IAClD,SAAgB,WAAW,EAAE,kBAAkB,CAAC;IAChD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;gBAE1B,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,kBAAkB,EAAE,SAAS,EAAE,SAAS;IAKnF,MAAM,CAAC,sBAAsB,CAAC,MAAM,EAAE,kBAAkB,EAAE,SAAS,EAAE,SAAS,GAAG,eAAe;IAIhG,MAAM,CAAC,uBAAuB,CAAC,SAAS,EAAE,SAAS,GAAG,oBAAoB,EAAE;IAI5E,SAAS,CAAC,qBAAqB,IAAI,kBAAkB;IAIrD,eAAe,IAAI,YAAY;IAI/B,WAAW,IAAI,OAAO;IAIhB,+BAA+B,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAYtG,WAAW,IAAI,MAAM;CAGtB"}
@@ -0,0 +1,48 @@
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.EthLikeErc721Token = void 0;
7
+ /**
8
+ * @prettier
9
+ */
10
+ const statics_1 = require("@bitgo-beta/statics");
11
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
12
+ const abstract_eth_1 = require("@bitgo-beta/abstract-eth");
13
+ const lib_1 = require("./lib");
14
+ const assert_1 = __importDefault(require("assert"));
15
+ class EthLikeErc721Token extends abstract_eth_1.EthLikeToken {
16
+ constructor(bitgo, tokenConfig, coinNames) {
17
+ super(bitgo, tokenConfig, coinNames);
18
+ this.coinNames = coinNames;
19
+ }
20
+ static createTokenConstructor(config, coinNames) {
21
+ return (bitgo) => new this(bitgo, config, coinNames);
22
+ }
23
+ static createTokenConstructors(coinNames) {
24
+ return super.createTokenConstructors(coinNames);
25
+ }
26
+ getTransactionBuilder() {
27
+ return new lib_1.TransactionBuilder(statics_1.coins.get(this.getBaseChain()));
28
+ }
29
+ getMPCAlgorithm() {
30
+ return 'ecdsa';
31
+ }
32
+ supportsTss() {
33
+ return true;
34
+ }
35
+ async recoveryBlockchainExplorerQuery(query) {
36
+ const family = this.getFamily();
37
+ const evmConfig = sdk_core_1.common.Environments[this.bitgo.getEnv()].evm;
38
+ (0, assert_1.default)(evmConfig && this.getFamily() in evmConfig, `env config is missing for ${this.getFamily()} in ${this.bitgo.getEnv()}`);
39
+ const explorerUrl = evmConfig[family].baseUrl;
40
+ const apiToken = evmConfig[family].apiToken;
41
+ return await (0, abstract_eth_1.recoveryBlockchainExplorerQuery)(query, explorerUrl, apiToken);
42
+ }
43
+ getFullName() {
44
+ return 'ERC721 Token';
45
+ }
46
+ }
47
+ exports.EthLikeErc721Token = EthLikeErc721Token;
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXRoTGlrZUVyYzcyMVRva2VuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2V0aExpa2VFcmM3MjFUb2tlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTs7R0FFRztBQUNILGlEQUFnRTtBQUNoRSxtREFBOEc7QUFDOUcsMkRBQW9HO0FBQ3BHLCtCQUEyQztBQUMzQyxvREFBNEI7QUFFNUIsTUFBYSxrQkFBbUIsU0FBUSwyQkFBWTtJQUlsRCxZQUFZLEtBQWdCLEVBQUUsV0FBK0IsRUFBRSxTQUFvQjtRQUNqRixLQUFLLENBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztJQUM3QixDQUFDO0lBRUQsTUFBTSxDQUFDLHNCQUFzQixDQUFDLE1BQTBCLEVBQUUsU0FBb0I7UUFDNUUsT0FBTyxDQUFDLEtBQWdCLEVBQUUsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVELE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxTQUFvQjtRQUNqRCxPQUFPLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRVMscUJBQXFCO1FBQzdCLE9BQU8sSUFBSSx3QkFBa0IsQ0FBQyxlQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVELGVBQWU7UUFDYixPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQsV0FBVztRQUNULE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELEtBQUssQ0FBQywrQkFBK0IsQ0FBQyxLQUE2QjtRQUNqRSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDaEMsTUFBTSxTQUFTLEdBQUcsaUJBQU0sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQztRQUMvRCxJQUFBLGdCQUFNLEVBQ0osU0FBUyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxTQUFTLEVBQzFDLDZCQUE2QixJQUFJLENBQUMsU0FBUyxFQUFFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUMxRSxDQUFDO1FBQ0YsTUFBTSxXQUFXLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQztRQUM5QyxNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDO1FBQzVDLE9BQU8sTUFBTSxJQUFBLDhDQUErQixFQUFDLEtBQUssRUFBRSxXQUFxQixFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3ZGLENBQUM7SUFFRCxXQUFXO1FBQ1QsT0FBTyxjQUFjLENBQUM7SUFDeEIsQ0FBQztDQUNGO0FBNUNELGdEQTRDQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHByZXR0aWVyXG4gKi9cbmltcG9ydCB7IGNvaW5zLCBFdGhMaWtlVG9rZW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7IEJpdEdvQmFzZSwgQ29pbkNvbnN0cnVjdG9yLCBjb21tb24sIE1QQ0FsZ29yaXRobSwgTmFtZWRDb2luQ29uc3RydWN0b3IgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBDb2luTmFtZXMsIEV0aExpa2VUb2tlbiwgcmVjb3ZlcnlCbG9ja2NoYWluRXhwbG9yZXJRdWVyeSB9IGZyb20gJ0BiaXRnby1iZXRhL2Fic3RyYWN0LWV0aCc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL2xpYic7XG5pbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5cbmV4cG9ydCBjbGFzcyBFdGhMaWtlRXJjNzIxVG9rZW4gZXh0ZW5kcyBFdGhMaWtlVG9rZW4ge1xuICBwdWJsaWMgcmVhZG9ubHkgdG9rZW5Db25maWc6IEV0aExpa2VUb2tlbkNvbmZpZztcbiAgcHJpdmF0ZSByZWFkb25seSBjb2luTmFtZXM6IENvaW5OYW1lcztcblxuICBjb25zdHJ1Y3RvcihiaXRnbzogQml0R29CYXNlLCB0b2tlbkNvbmZpZzogRXRoTGlrZVRva2VuQ29uZmlnLCBjb2luTmFtZXM6IENvaW5OYW1lcykge1xuICAgIHN1cGVyKGJpdGdvLCB0b2tlbkNvbmZpZywgY29pbk5hbWVzKTtcbiAgICB0aGlzLmNvaW5OYW1lcyA9IGNvaW5OYW1lcztcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVUb2tlbkNvbnN0cnVjdG9yKGNvbmZpZzogRXRoTGlrZVRva2VuQ29uZmlnLCBjb2luTmFtZXM6IENvaW5OYW1lcyk6IENvaW5Db25zdHJ1Y3RvciB7XG4gICAgcmV0dXJuIChiaXRnbzogQml0R29CYXNlKSA9PiBuZXcgdGhpcyhiaXRnbywgY29uZmlnLCBjb2luTmFtZXMpO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZVRva2VuQ29uc3RydWN0b3JzKGNvaW5OYW1lczogQ29pbk5hbWVzKTogTmFtZWRDb2luQ29uc3RydWN0b3JbXSB7XG4gICAgcmV0dXJuIHN1cGVyLmNyZWF0ZVRva2VuQ29uc3RydWN0b3JzKGNvaW5OYW1lcyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0VHJhbnNhY3Rpb25CdWlsZGVyKCk6IFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gICAgcmV0dXJuIG5ldyBUcmFuc2FjdGlvbkJ1aWxkZXIoY29pbnMuZ2V0KHRoaXMuZ2V0QmFzZUNoYWluKCkpKTtcbiAgfVxuXG4gIGdldE1QQ0FsZ29yaXRobSgpOiBNUENBbGdvcml0aG0ge1xuICAgIHJldHVybiAnZWNkc2EnO1xuICB9XG5cbiAgc3VwcG9ydHNUc3MoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBhc3luYyByZWNvdmVyeUJsb2NrY2hhaW5FeHBsb3JlclF1ZXJ5KHF1ZXJ5OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4ge1xuICAgIGNvbnN0IGZhbWlseSA9IHRoaXMuZ2V0RmFtaWx5KCk7XG4gICAgY29uc3QgZXZtQ29uZmlnID0gY29tbW9uLkVudmlyb25tZW50c1t0aGlzLmJpdGdvLmdldEVudigpXS5ldm07XG4gICAgYXNzZXJ0KFxuICAgICAgZXZtQ29uZmlnICYmIHRoaXMuZ2V0RmFtaWx5KCkgaW4gZXZtQ29uZmlnLFxuICAgICAgYGVudiBjb25maWcgaXMgbWlzc2luZyBmb3IgJHt0aGlzLmdldEZhbWlseSgpfSBpbiAke3RoaXMuYml0Z28uZ2V0RW52KCl9YFxuICAgICk7XG4gICAgY29uc3QgZXhwbG9yZXJVcmwgPSBldm1Db25maWdbZmFtaWx5XS5iYXNlVXJsO1xuICAgIGNvbnN0IGFwaVRva2VuID0gZXZtQ29uZmlnW2ZhbWlseV0uYXBpVG9rZW47XG4gICAgcmV0dXJuIGF3YWl0IHJlY292ZXJ5QmxvY2tjaGFpbkV4cGxvcmVyUXVlcnkocXVlcnksIGV4cGxvcmVyVXJsIGFzIHN0cmluZywgYXBpVG9rZW4pO1xuICB9XG5cbiAgZ2V0RnVsbE5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ0VSQzcyMSBUb2tlbic7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,36 @@
1
+ /**
2
+ * @prettier
3
+ */
4
+ import { BaseCoin, BitGoBase, BuildNftTransferDataOptions, MPCAlgorithm, MultisigType } from '@bitgo-beta/sdk-core';
5
+ import { BaseCoin as StaticsBaseCoin } from '@bitgo-beta/statics';
6
+ import { AbstractEthLikeNewCoins, OfflineVaultTxInfo, RecoverOptions, TransactionBuilder as EthLikeTransactionBuilder, UnsignedSweepTxMPCv2, VerifyEthTransactionOptions } from '@bitgo-beta/abstract-eth';
7
+ export declare class EvmCoin extends AbstractEthLikeNewCoins {
8
+ protected constructor(bitgo: BitGoBase, staticsCoin?: Readonly<StaticsBaseCoin>);
9
+ static createInstance(bitgo: BitGoBase, staticsCoin?: Readonly<StaticsBaseCoin>): BaseCoin;
10
+ protected getTransactionBuilder(): EthLikeTransactionBuilder;
11
+ /** @inheritDoc */
12
+ supportsTss(): boolean;
13
+ /** inherited doc */
14
+ getDefaultMultisigType(): MultisigType;
15
+ /** @inheritDoc */
16
+ getMPCAlgorithm(): MPCAlgorithm;
17
+ protected buildUnsignedSweepTxnTSS(params: RecoverOptions): Promise<OfflineVaultTxInfo | UnsignedSweepTxMPCv2>;
18
+ /**
19
+ * Make a query to chain explorer for information such as balance, token balance, solidity calls
20
+ * @param {Object} query key-value pairs of parameters to append after /api
21
+ * @param {string} apiKey optional API key to use for the query falls back to EVM config if not provided
22
+ * @returns {Promise<Object>} response from chain explorer
23
+ */
24
+ recoveryBlockchainExplorerQuery(query: Record<string, string>, apiKey?: string): Promise<Record<string, unknown>>;
25
+ /** @inheritDoc */
26
+ verifyTssTransaction(params: VerifyEthTransactionOptions): Promise<boolean>;
27
+ /**
28
+ * Verifies legacy (non-EIP-1559) TSS transactions with basic validation.
29
+ */
30
+ private verifyLegacyTssTransaction;
31
+ /** @inheritDoc */
32
+ isValidAddress(address: string, isAlternateAddress?: boolean): boolean;
33
+ /** @inheritDoc */
34
+ buildNftTransferData(params: BuildNftTransferDataOptions): string;
35
+ }
36
+ //# sourceMappingURL=evmCoin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evmCoin.d.ts","sourceRoot":"","sources":["../../src/evmCoin.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EACL,QAAQ,EACR,SAAS,EACT,2BAA2B,EAE3B,YAAY,EACZ,YAAY,EAEb,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,QAAQ,IAAI,eAAe,EAAkC,MAAM,qBAAqB,CAAC;AAClG,OAAO,EACL,uBAAuB,EAEvB,kBAAkB,EAClB,cAAc,EAEd,kBAAkB,IAAI,yBAAyB,EAC/C,oBAAoB,EACpB,2BAA2B,EAC5B,MAAM,0BAA0B,CAAC;AAKlC,qBAAa,OAAQ,SAAQ,uBAAuB;IAClD,SAAS,aAAa,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC;IAI/E,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC,GAAG,QAAQ;IAI1F,SAAS,CAAC,qBAAqB,IAAI,yBAAyB;IAI5D,kBAAkB;IAClB,WAAW,IAAI,OAAO;IAItB,oBAAoB;IACpB,sBAAsB,IAAI,YAAY;IAItC,kBAAkB;IAClB,eAAe,IAAI,YAAY;cAIf,wBAAwB,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,kBAAkB,GAAG,oBAAoB,CAAC;IAOpH;;;;;OAKG;IACG,+BAA+B,CACnC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC7B,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IA2BnC,kBAAkB;IACZ,oBAAoB,CAAC,MAAM,EAAE,2BAA2B,GAAG,OAAO,CAAC,OAAO,CAAC;IASjF;;OAEG;YACW,0BAA0B;IA2BxC,kBAAkB;IAClB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,kBAAkB,CAAC,EAAE,OAAO,GAAG,OAAO;IAQtE,kBAAkB;IAClB,oBAAoB,CAAC,MAAM,EAAE,2BAA2B,GAAG,MAAM;CAWlE"}
@@ -0,0 +1,117 @@
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.EvmCoin = void 0;
7
+ /**
8
+ * @prettier
9
+ */
10
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
11
+ const statics_1 = require("@bitgo-beta/statics");
12
+ const abstract_eth_1 = require("@bitgo-beta/abstract-eth");
13
+ const lib_1 = require("./lib");
14
+ const utils_1 = require("./lib/utils");
15
+ const assert_1 = __importDefault(require("assert"));
16
+ class EvmCoin extends abstract_eth_1.AbstractEthLikeNewCoins {
17
+ constructor(bitgo, staticsCoin) {
18
+ super(bitgo, staticsCoin);
19
+ }
20
+ static createInstance(bitgo, staticsCoin) {
21
+ return new EvmCoin(bitgo, staticsCoin);
22
+ }
23
+ getTransactionBuilder() {
24
+ return new lib_1.TransactionBuilder(statics_1.coins.get(this.getBaseChain()));
25
+ }
26
+ /** @inheritDoc */
27
+ supportsTss() {
28
+ return this.staticsCoin?.features.includes(statics_1.CoinFeature.TSS) ?? false;
29
+ }
30
+ /** inherited doc */
31
+ getDefaultMultisigType() {
32
+ return this.staticsCoin?.features.includes(statics_1.CoinFeature.TSS) ? sdk_core_1.multisigTypes.tss : sdk_core_1.multisigTypes.onchain;
33
+ }
34
+ /** @inheritDoc */
35
+ getMPCAlgorithm() {
36
+ return 'ecdsa';
37
+ }
38
+ async buildUnsignedSweepTxnTSS(params) {
39
+ if (this.staticsCoin?.features.includes(statics_1.CoinFeature.MPCV2)) {
40
+ return this.buildUnsignedSweepTxnMPCv2(params);
41
+ }
42
+ return super.buildUnsignedSweepTxnTSS(params);
43
+ }
44
+ /**
45
+ * Make a query to chain explorer for information such as balance, token balance, solidity calls
46
+ * @param {Object} query key-value pairs of parameters to append after /api
47
+ * @param {string} apiKey optional API key to use for the query falls back to EVM config if not provided
48
+ * @returns {Promise<Object>} response from chain explorer
49
+ */
50
+ async recoveryBlockchainExplorerQuery(query, apiKey) {
51
+ const evmConfig = sdk_core_1.common.Environments[this.bitgo.getEnv()].evm;
52
+ (0, assert_1.default)(evmConfig && this.getFamily() in evmConfig, `env config is missing for ${this.getFamily()} in ${this.bitgo.getEnv()}`);
53
+ const apiToken = apiKey || evmConfig[this.getFamily()].apiToken;
54
+ const explorerUrl = evmConfig[this.getFamily()].baseUrl;
55
+ switch (this.getFamily()) {
56
+ case statics_1.CoinFamily.HBAREVM:
57
+ (0, assert_1.default)(evmConfig[this.getFamily()].rpcUrl, `rpc url config is missing for ${this.getFamily()} in ${this.bitgo.getEnv()}`);
58
+ const rpcUrl = evmConfig[this.getFamily()].rpcUrl;
59
+ return await (0, utils_1.recovery_HBAREVM_BlockchainExplorerQuery)(query, rpcUrl, explorerUrl, apiToken);
60
+ default:
61
+ return await (0, abstract_eth_1.recoveryBlockchainExplorerQuery)(query, explorerUrl, apiToken);
62
+ }
63
+ }
64
+ /** @inheritDoc */
65
+ async verifyTssTransaction(params) {
66
+ const supportsEIP1559 = this.staticsCoin?.features?.includes(statics_1.CoinFeature.EIP1559);
67
+ if (supportsEIP1559) {
68
+ return await super.verifyTssTransaction(params);
69
+ }
70
+ else {
71
+ return await this.verifyLegacyTssTransaction(params);
72
+ }
73
+ }
74
+ /**
75
+ * Verifies legacy (non-EIP-1559) TSS transactions with basic validation.
76
+ */
77
+ async verifyLegacyTssTransaction(params) {
78
+ const { txParams, txPrebuild, wallet } = params;
79
+ // Basic validation for legacy transactions only
80
+ if (!txParams?.recipients &&
81
+ !(txParams.prebuildTx?.consolidateId ||
82
+ (txParams.type &&
83
+ ['acceleration', 'fillNonce', 'transferToken', 'tokenApproval', 'bridgeFunds'].includes(txParams.type)))) {
84
+ throw new Error(`missing txParams`);
85
+ }
86
+ if (!wallet || !txPrebuild) {
87
+ throw new Error(`missing params`);
88
+ }
89
+ if (txParams.hop && txParams.recipients && txParams.recipients.length > 1) {
90
+ throw new Error(`tx cannot be both a batch and hop transaction`);
91
+ }
92
+ // If validation passes, consider it verified
93
+ return true;
94
+ }
95
+ /** @inheritDoc */
96
+ isValidAddress(address, isAlternateAddress) {
97
+ if (isAlternateAddress && this.getFamily() === statics_1.CoinFamily.HBAREVM) {
98
+ const { valid } = (0, utils_1.validateHederaAccountId)(address);
99
+ return valid;
100
+ }
101
+ return super.isValidAddress(address);
102
+ }
103
+ /** @inheritDoc */
104
+ buildNftTransferData(params) {
105
+ if (params.type === 'ERC721' && (0, utils_1.isHtsEvmAddress)(params.tokenContractAddress)) {
106
+ return new abstract_eth_1.ERC721TransferBuilder()
107
+ .tokenContractAddress(params.tokenContractAddress)
108
+ .to(params.recipientAddress)
109
+ .from(params.fromAddress)
110
+ .tokenId(params.tokenId)
111
+ .buildTransferFrom();
112
+ }
113
+ return super.buildNftTransferData(params);
114
+ }
115
+ }
116
+ exports.EvmCoin = EvmCoin;
117
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZtQ29pbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ldm1Db2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBOztHQUVHO0FBQ0gsbURBUThCO0FBQzlCLGlEQUFrRztBQUNsRywyREFTa0M7QUFDbEMsK0JBQTJDO0FBQzNDLHVDQUFpSDtBQUNqSCxvREFBNEI7QUFFNUIsTUFBYSxPQUFRLFNBQVEsc0NBQXVCO0lBQ2xELFlBQXNCLEtBQWdCLEVBQUUsV0FBdUM7UUFDN0UsS0FBSyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFnQixFQUFFLFdBQXVDO1FBQzdFLE9BQU8sSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFUyxxQkFBcUI7UUFDN0IsT0FBTyxJQUFJLHdCQUFrQixDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQyxXQUFXLEVBQUUsUUFBUSxDQUFDLFFBQVEsQ0FBQyxxQkFBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssQ0FBQztJQUN2RSxDQUFDO0lBRUQsb0JBQW9CO0lBQ3BCLHNCQUFzQjtRQUNwQixPQUFPLElBQUksQ0FBQyxXQUFXLEVBQUUsUUFBUSxDQUFDLFFBQVEsQ0FBQyxxQkFBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyx3QkFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsd0JBQWEsQ0FBQyxPQUFPLENBQUM7SUFDMUcsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixlQUFlO1FBQ2IsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVTLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxNQUFz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Q0FBQztRQUN6QixDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDNUMsQ0FBQztDQUNGO0FBcElELDBCQW9JQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHByZXR0aWVyXG4gKi9cbmltcG9ydCB7XG4gIEJhc2VDb2luLFxuICBCaXRHb0Jhc2UsXG4gIEJ1aWxkTmZ0VHJhbnNmZXJEYXRhT3B0aW9ucyxcbiAgY29tbW9uLFxuICBNUENBbGdvcml0aG0sXG4gIE11bHRpc2lnVHlwZSxcbiAgbXVsdGlzaWdUeXBlcyxcbn0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgU3RhdGljc0Jhc2VDb2luLCBDb2luRmVhdHVyZSwgY29pbnMsIENvaW5GYW1pbHkgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7XG4gIEFic3RyYWN0RXRoTGlrZU5ld0NvaW5zLFxuICBFUkM3MjFUcmFuc2ZlckJ1aWxkZXIsXG4gIE9mZmxpbmVWYXVsdFR4SW5mbyxcbiAgUmVjb3Zlck9wdGlvbnMsXG4gIHJlY292ZXJ5QmxvY2tjaGFpbkV4cGxvcmVyUXVlcnksXG4gIFRyYW5zYWN0aW9uQnVpbGRlciBhcyBFdGhMaWtlVHJhbnNhY3Rpb25CdWlsZGVyLFxuICBVbnNpZ25lZFN3ZWVwVHhNUEN2MixcbiAgVmVyaWZ5RXRoVHJhbnNhY3Rpb25PcHRpb25zLFxufSBmcm9tICdAYml0Z28tYmV0YS9hYnN0cmFjdC1ldGgnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi9saWInO1xuaW1wb3J0IHsgaXNIdHNFdm1BZGRyZXNzLCByZWNvdmVyeV9IQkFSRVZNX0Jsb2NrY2hhaW5FeHBsb3JlclF1ZXJ5LCB2YWxpZGF0ZUhlZGVyYUFjY291bnRJZCB9IGZyb20gJy4vbGliL3V0aWxzJztcbmltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcblxuZXhwb3J0IGNsYXNzIEV2bUNvaW4gZXh0ZW5kcyBBYnN0cmFjdEV0aExpa2VOZXdDb2lucyB7XG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihiaXRnbzogQml0R29CYXNlLCBzdGF0aWNzQ29pbj86IFJlYWRvbmx5PFN0YXRpY3NCYXNlQ29pbj4pIHtcbiAgICBzdXBlcihiaXRnbywgc3RhdGljc0NvaW4pO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZUluc3RhbmNlKGJpdGdvOiBCaXRHb0Jhc2UsIHN0YXRpY3NDb2luPzogUmVhZG9ubHk8U3RhdGljc0Jhc2VDb2luPik6IEJhc2VDb2luIHtcbiAgICByZXR1cm4gbmV3IEV2bUNvaW4oYml0Z28sIHN0YXRpY3NDb2luKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRUcmFuc2FjdGlvbkJ1aWxkZXIoKTogRXRoTGlrZVRyYW5zYWN0aW9uQnVpbGRlciB7XG4gICAgcmV0dXJuIG5ldyBUcmFuc2FjdGlvbkJ1aWxkZXIoY29pbnMuZ2V0KHRoaXMuZ2V0QmFzZUNoYWluKCkpKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBzdXBwb3J0c1RzcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0aWNzQ29pbj8uZmVhdHVyZXMuaW5jbHVkZXMoQ29pbkZlYXR1cmUuVFNTKSA/PyBmYWxzZTtcbiAgfVxuXG4gIC8qKiBpbmhlcml0ZWQgZG9jICovXG4gIGdldERlZmF1bHRNdWx0aXNpZ1R5cGUoKTogTXVsdGlzaWdUeXBlIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0aWNzQ29pbj8uZmVhdHVyZXMuaW5jbHVkZXMoQ29pbkZlYXR1cmUuVFNTKSA/IG11bHRpc2lnVHlwZXMudHNzIDogbXVsdGlzaWdUeXBlcy5vbmNoYWluO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIGdldE1QQ0FsZ29yaXRobSgpOiBNUENBbGdvcml0aG0ge1xuICAgIHJldHVybiAnZWNkc2EnO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGJ1aWxkVW5zaWduZWRTd2VlcFR4blRTUyhwYXJhbXM6IFJlY292ZXJPcHRpb25zKTogUHJvbWlzZTxPZmZsaW5lVmF1bHRUeEluZm8gfCBVbnNpZ25lZFN3ZWVwVHhNUEN2Mj4ge1xuICAgIGlmICh0aGlzLnN0YXRpY3NDb2luPy5mZWF0dXJlcy5pbmNsdWRlcyhDb2luRmVhdHVyZS5NUENWMikpIHtcbiAgICAgIHJldHVybiB0aGlzLmJ1aWxkVW5zaWduZWRTd2VlcFR4bk1QQ3YyKHBhcmFtcyk7XG4gICAgfVxuICAgIHJldHVybiBzdXBlci5idWlsZFVuc2lnbmVkU3dlZXBUeG5UU1MocGFyYW1zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYWtlIGEgcXVlcnkgdG8gY2hhaW4gZXhwbG9yZXIgZm9yIGluZm9ybWF0aW9uIHN1Y2ggYXMgYmFsYW5jZSwgdG9rZW4gYmFsYW5jZSwgc29saWRpdHkgY2FsbHNcbiAgICogQHBhcmFtIHtPYmplY3R9IHF1ZXJ5IGtleS12YWx1ZSBwYWlycyBvZiBwYXJhbWV0ZXJzIHRvIGFwcGVuZCBhZnRlciAvYXBpXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhcGlLZXkgb3B0aW9uYWwgQVBJIGtleSB0byB1c2UgZm9yIHRoZSBxdWVyeSBmYWxscyBiYWNrIHRvIEVWTSBjb25maWcgaWYgbm90IHByb3ZpZGVkXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPE9iamVjdD59IHJlc3BvbnNlIGZyb20gY2hhaW4gZXhwbG9yZXJcbiAgICovXG4gIGFzeW5jIHJlY292ZXJ5QmxvY2tjaGFpbkV4cGxvcmVyUXVlcnkoXG4gICAgcXVlcnk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4sXG4gICAgYXBpS2V5Pzogc3RyaW5nXG4gICk6IFByb21pc2U8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+IHtcbiAgICBjb25zdCBldm1Db25maWcgPSBjb21tb24uRW52aXJvbm1lbnRzW3RoaXMuYml0Z28uZ2V0RW52KCldLmV2bTtcbiAgICBhc3NlcnQoXG4gICAgICBldm1Db25maWcgJiYgdGhpcy5nZXRGYW1pbHkoKSBpbiBldm1Db25maWcsXG4gICAgICBgZW52IGNvbmZpZyBpcyBtaXNzaW5nIGZvciAke3RoaXMuZ2V0RmFtaWx5KCl9IGluICR7dGhpcy5iaXRnby5nZXRFbnYoKX1gXG4gICAgKTtcblxuICAgIGNvbnN0IGFwaVRva2VuID0gYXBpS2V5IHx8IGV2bUNvbmZpZ1t0aGlzLmdldEZhbWlseSgpXS5hcGlUb2tlbjtcbiAgICBjb25zdCBleHBsb3JlclVybCA9IGV2bUNvbmZpZ1t0aGlzLmdldEZhbWlseSgpXS5iYXNlVXJsO1xuICAgIHN3aXRjaCAodGhpcy5nZXRGYW1pbHkoKSkge1xuICAgICAgY2FzZSBDb2luRmFtaWx5LkhCQVJFVk06XG4gICAgICAgIGFzc2VydChcbiAgICAgICAgICBldm1Db25maWdbdGhpcy5nZXRGYW1pbHkoKV0ucnBjVXJsLFxuICAgICAgICAgIGBycGMgdXJsIGNvbmZpZyBpcyBtaXNzaW5nIGZvciAke3RoaXMuZ2V0RmFtaWx5KCl9IGluICR7dGhpcy5iaXRnby5nZXRFbnYoKX1gXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IHJwY1VybCA9IGV2bUNvbmZpZ1t0aGlzLmdldEZhbWlseSgpXS5ycGNVcmw7XG4gICAgICAgIHJldHVybiBhd2FpdCByZWNvdmVyeV9IQkFSRVZNX0Jsb2NrY2hhaW5FeHBsb3JlclF1ZXJ5KFxuICAgICAgICAgIHF1ZXJ5LFxuICAgICAgICAgIHJwY1VybCBhcyBzdHJpbmcsXG4gICAgICAgICAgZXhwbG9yZXJVcmwgYXMgc3RyaW5nLFxuICAgICAgICAgIGFwaVRva2VuIGFzIHN0cmluZ1xuICAgICAgICApO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGF3YWl0IHJlY292ZXJ5QmxvY2tjaGFpbkV4cGxvcmVyUXVlcnkocXVlcnksIGV4cGxvcmVyVXJsIGFzIHN0cmluZywgYXBpVG9rZW4gYXMgc3RyaW5nKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgYXN5bmMgdmVyaWZ5VHNzVHJhbnNhY3Rpb24ocGFyYW1zOiBWZXJpZnlFdGhUcmFuc2FjdGlvbk9wdGlvbnMpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCBzdXBwb3J0c0VJUDE1NTkgPSB0aGlzLnN0YXRpY3NDb2luPy5mZWF0dXJlcz8uaW5jbHVkZXMoQ29pbkZlYXR1cmUuRUlQMTU1OSk7XG4gICAgaWYgKHN1cHBvcnRzRUlQMTU1OSkge1xuICAgICAgcmV0dXJuIGF3YWl0IHN1cGVyLnZlcmlmeVRzc1RyYW5zYWN0aW9uKHBhcmFtcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLnZlcmlmeUxlZ2FjeVRzc1RyYW5zYWN0aW9uKHBhcmFtcyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFZlcmlmaWVzIGxlZ2FjeSAobm9uLUVJUC0xNTU5KSBUU1MgdHJhbnNhY3Rpb25zIHdpdGggYmFzaWMgdmFsaWRhdGlvbi5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgdmVyaWZ5TGVnYWN5VHNzVHJhbnNhY3Rpb24ocGFyYW1zOiBWZXJpZnlFdGhUcmFuc2FjdGlvbk9wdGlvbnMpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCB7IHR4UGFyYW1zLCB0eFByZWJ1aWxkLCB3YWxsZXQgfSA9IHBhcmFtcztcblxuICAgIC8vIEJhc2ljIHZhbGlkYXRpb24gZm9yIGxlZ2FjeSB0cmFuc2FjdGlvbnMgb25seVxuICAgIGlmIChcbiAgICAgICF0eFBhcmFtcz8ucmVjaXBpZW50cyAmJlxuICAgICAgIShcbiAgICAgICAgdHhQYXJhbXMucHJlYnVpbGRUeD8uY29uc29saWRhdGVJZCB8fFxuICAgICAgICAodHhQYXJhbXMudHlwZSAmJlxuICAgICAgICAgIFsnYWNjZWxlcmF0aW9uJywgJ2ZpbGxOb25jZScsICd0cmFuc2ZlclRva2VuJywgJ3Rva2VuQXBwcm92YWwnLCAnYnJpZGdlRnVuZHMnXS5pbmNsdWRlcyh0eFBhcmFtcy50eXBlKSlcbiAgICAgIClcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgbWlzc2luZyB0eFBhcmFtc2ApO1xuICAgIH1cblxuICAgIGlmICghd2FsbGV0IHx8ICF0eFByZWJ1aWxkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYG1pc3NpbmcgcGFyYW1zYCk7XG4gICAgfVxuXG4gICAgaWYgKHR4UGFyYW1zLmhvcCAmJiB0eFBhcmFtcy5yZWNpcGllbnRzICYmIHR4UGFyYW1zLnJlY2lwaWVudHMubGVuZ3RoID4gMSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGB0eCBjYW5ub3QgYmUgYm90aCBhIGJhdGNoIGFuZCBob3AgdHJhbnNhY3Rpb25gKTtcbiAgICB9XG5cbiAgICAvLyBJZiB2YWxpZGF0aW9uIHBhc3NlcywgY29uc2lkZXIgaXQgdmVyaWZpZWRcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBpc1ZhbGlkQWRkcmVzcyhhZGRyZXNzOiBzdHJpbmcsIGlzQWx0ZXJuYXRlQWRkcmVzcz86IGJvb2xlYW4pOiBib29sZWFuIHtcbiAgICBpZiAoaXNBbHRlcm5hdGVBZGRyZXNzICYmIHRoaXMuZ2V0RmFtaWx5KCkgPT09IENvaW5GYW1pbHkuSEJBUkVWTSkge1xuICAgICAgY29uc3QgeyB2YWxpZCB9ID0gdmFsaWRhdGVIZWRlcmFBY2NvdW50SWQoYWRkcmVzcyk7XG4gICAgICByZXR1cm4gdmFsaWQ7XG4gICAgfVxuICAgIHJldHVybiBzdXBlci5pc1ZhbGlkQWRkcmVzcyhhZGRyZXNzKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBidWlsZE5mdFRyYW5zZmVyRGF0YShwYXJhbXM6IEJ1aWxkTmZ0VHJhbnNmZXJEYXRhT3B0aW9ucyk6IHN0cmluZyB7XG4gICAgaWYgKHBhcmFtcy50eXBlID09PSAnRVJDNzIxJyAmJiBpc0h0c0V2bUFkZHJlc3MocGFyYW1zLnRva2VuQ29udHJhY3RBZGRyZXNzKSkge1xuICAgICAgcmV0dXJuIG5ldyBFUkM3MjFUcmFuc2ZlckJ1aWxkZXIoKVxuICAgICAgICAudG9rZW5Db250cmFjdEFkZHJlc3MocGFyYW1zLnRva2VuQ29udHJhY3RBZGRyZXNzKVxuICAgICAgICAudG8ocGFyYW1zLnJlY2lwaWVudEFkZHJlc3MpXG4gICAgICAgIC5mcm9tKHBhcmFtcy5mcm9tQWRkcmVzcylcbiAgICAgICAgLnRva2VuSWQocGFyYW1zLnRva2VuSWQpXG4gICAgICAgIC5idWlsZFRyYW5zZmVyRnJvbSgpO1xuICAgIH1cbiAgICByZXR1cm4gc3VwZXIuYnVpbGROZnRUcmFuc2ZlckRhdGEocGFyYW1zKTtcbiAgfVxufVxuIl19
@@ -1 +1,6 @@
1
+ export * from './evmCoin';
2
+ export * from './lib';
3
+ export * from './register';
4
+ export * from './ethLikeErc20Token';
5
+ export * from './ethLikeErc721Token';
1
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,OAAO,CAAC;AACtB,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC"}
package/dist/src/index.js CHANGED
@@ -1 +1,22 @@
1
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIiJdfQ==
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./evmCoin"), exports);
18
+ __exportStar(require("./lib"), exports);
19
+ __exportStar(require("./register"), exports);
20
+ __exportStar(require("./ethLikeErc20Token"), exports);
21
+ __exportStar(require("./ethLikeErc721Token"), exports);
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDRDQUEwQjtBQUMxQix3Q0FBc0I7QUFDdEIsNkNBQTJCO0FBQzNCLHNEQUFvQztBQUNwQyx1REFBcUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2V2bUNvaW4nO1xuZXhwb3J0ICogZnJvbSAnLi9saWInO1xuZXhwb3J0ICogZnJvbSAnLi9yZWdpc3Rlcic7XG5leHBvcnQgKiBmcm9tICcuL2V0aExpa2VFcmMyMFRva2VuJztcbmV4cG9ydCAqIGZyb20gJy4vZXRoTGlrZUVyYzcyMVRva2VuJztcbiJdfQ==
@@ -0,0 +1,6 @@
1
+ import * as Utils from './utils';
2
+ export { TransactionBuilder } from './transactionBuilder';
3
+ export { TransferBuilder } from './transferBuilder';
4
+ export { Transaction, KeyPair } from '@bitgo-beta/abstract-eth';
5
+ export { 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,KAAK,KAAK,MAAM,SAAS,CAAC;AAEjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,KAAK,EAAE,CAAC"}
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.Utils = exports.KeyPair = exports.Transaction = exports.TransferBuilder = exports.TransactionBuilder = void 0;
37
+ const Utils = __importStar(require("./utils"));
38
+ exports.Utils = Utils;
39
+ var transactionBuilder_1 = require("./transactionBuilder");
40
+ Object.defineProperty(exports, "TransactionBuilder", { enumerable: true, get: function () { return transactionBuilder_1.TransactionBuilder; } });
41
+ var transferBuilder_1 = require("./transferBuilder");
42
+ Object.defineProperty(exports, "TransferBuilder", { enumerable: true, get: function () { return transferBuilder_1.TransferBuilder; } });
43
+ var abstract_eth_1 = require("@bitgo-beta/abstract-eth");
44
+ Object.defineProperty(exports, "Transaction", { enumerable: true, get: function () { return abstract_eth_1.Transaction; } });
45
+ Object.defineProperty(exports, "KeyPair", { enumerable: true, get: function () { return abstract_eth_1.KeyPair; } });
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtDQUFpQztBQUt4QixzQkFBSztBQUhkLDJEQUEwRDtBQUFqRCx3SEFBQSxrQkFBa0IsT0FBQTtBQUMzQixxREFBb0Q7QUFBM0Msa0hBQUEsZUFBZSxPQUFBO0FBQ3hCLHlEQUFnRTtBQUF2RCwyR0FBQSxXQUFXLE9BQUE7QUFBRSx1R0FBQSxPQUFPLE9BQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBVdGlscyBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXInO1xuZXhwb3J0IHsgVHJhbnNmZXJCdWlsZGVyIH0gZnJvbSAnLi90cmFuc2ZlckJ1aWxkZXInO1xuZXhwb3J0IHsgVHJhbnNhY3Rpb24sIEtleVBhaXIgfSBmcm9tICdAYml0Z28tYmV0YS9hYnN0cmFjdC1ldGgnO1xuZXhwb3J0IHsgVXRpbHMgfTtcbiJdfQ==
@@ -0,0 +1,13 @@
1
+ import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
2
+ import { TransactionBuilder as AbstractTransactionBuilder } from '@bitgo-beta/abstract-eth';
3
+ import { TransferBuilder } from './transferBuilder';
4
+ export declare class TransactionBuilder extends AbstractTransactionBuilder {
5
+ protected _transfer: TransferBuilder;
6
+ private _signatures;
7
+ constructor(_coinConfig: Readonly<CoinConfig>);
8
+ /** @inheritdoc */
9
+ transfer(data?: string): TransferBuilder;
10
+ addSignature(publicKey: any, signature: any): void;
11
+ protected getContractData(addresses: string[]): string;
12
+ }
13
+ //# sourceMappingURL=transactionBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transactionBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/transactionBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAE7D,OAAO,EAAE,kBAAkB,IAAI,0BAA0B,EAAe,MAAM,0BAA0B,CAAC;AAEzG,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,qBAAa,kBAAmB,SAAQ,0BAA0B;IAChE,SAAS,CAAC,SAAS,EAAE,eAAe,CAAC;IACrC,OAAO,CAAC,WAAW,CAAM;gBAEb,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAM7C,kBAAkB;IAClB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,eAAe;IAUxC,YAAY,CAAC,SAAS,KAAA,EAAE,SAAS,KAAA;IAKjC,SAAS,CAAC,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,MAAM;CAGvD"}
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TransactionBuilder = void 0;
4
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
5
+ const abstract_eth_1 = require("@bitgo-beta/abstract-eth");
6
+ const utils_1 = require("./utils");
7
+ const transferBuilder_1 = require("./transferBuilder");
8
+ class TransactionBuilder extends abstract_eth_1.TransactionBuilder {
9
+ constructor(_coinConfig) {
10
+ super(_coinConfig);
11
+ this._common = (0, utils_1.getCommon)(this._coinConfig);
12
+ this.transaction = new abstract_eth_1.Transaction(this._coinConfig, this._common);
13
+ }
14
+ /** @inheritdoc */
15
+ transfer(data) {
16
+ if (this._type !== sdk_core_1.TransactionType.Send) {
17
+ throw new sdk_core_1.BuildTransactionError('Transfers can only be set for send transactions');
18
+ }
19
+ if (!this._transfer) {
20
+ this._transfer = new transferBuilder_1.TransferBuilder(data);
21
+ }
22
+ return this._transfer;
23
+ }
24
+ addSignature(publicKey, signature) {
25
+ this._signatures = [];
26
+ this._signatures.push({ publicKey, signature });
27
+ }
28
+ getContractData(addresses) {
29
+ throw new Error('Method not implemented.');
30
+ }
31
+ }
32
+ exports.TransactionBuilder = TransactionBuilder;
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90cmFuc2FjdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsbURBQThFO0FBQzlFLDJEQUF5RztBQUN6RyxtQ0FBb0M7QUFDcEMsdURBQW9EO0FBRXBELE1BQWEsa0JBQW1CLFNBQVEsaUNBQTBCO0lBSWhFLFlBQVksV0FBaUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ25CLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBQSxpQkFBUyxFQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksMEJBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLFFBQVEsQ0FBQyxJQUFhO1FBQ3BCLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSywwQkFBZSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3hDLE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQyxpREFBaUQsQ0FBQyxDQUFDO1FBQ3JGLENBQUM7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxpQ0FBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdDLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUVELFlBQVksQ0FBQyxTQUFTLEVBQUUsU0FBUztRQUMvQixJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFUyxlQUFlLENBQUMsU0FBbUI7UUFDM0MsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQzdDLENBQUM7Q0FDRjtBQTdCRCxnREE2QkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IsIFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlciBhcyBBYnN0cmFjdFRyYW5zYWN0aW9uQnVpbGRlciwgVHJhbnNhY3Rpb24gfSBmcm9tICdAYml0Z28tYmV0YS9hYnN0cmFjdC1ldGgnO1xuaW1wb3J0IHsgZ2V0Q29tbW9uIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBUcmFuc2ZlckJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zZmVyQnVpbGRlcic7XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2FjdGlvbkJ1aWxkZXIgZXh0ZW5kcyBBYnN0cmFjdFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIHByb3RlY3RlZCBfdHJhbnNmZXI6IFRyYW5zZmVyQnVpbGRlcjtcbiAgcHJpdmF0ZSBfc2lnbmF0dXJlczogYW55O1xuXG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgICB0aGlzLl9jb21tb24gPSBnZXRDb21tb24odGhpcy5fY29pbkNvbmZpZyk7XG4gICAgdGhpcy50cmFuc2FjdGlvbiA9IG5ldyBUcmFuc2FjdGlvbih0aGlzLl9jb2luQ29uZmlnLCB0aGlzLl9jb21tb24pO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHRyYW5zZmVyKGRhdGE/OiBzdHJpbmcpOiBUcmFuc2ZlckJ1aWxkZXIge1xuICAgIGlmICh0aGlzLl90eXBlICE9PSBUcmFuc2FjdGlvblR5cGUuU2VuZCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignVHJhbnNmZXJzIGNhbiBvbmx5IGJlIHNldCBmb3Igc2VuZCB0cmFuc2FjdGlvbnMnKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLl90cmFuc2Zlcikge1xuICAgICAgdGhpcy5fdHJhbnNmZXIgPSBuZXcgVHJhbnNmZXJCdWlsZGVyKGRhdGEpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fdHJhbnNmZXI7XG4gIH1cblxuICBhZGRTaWduYXR1cmUocHVibGljS2V5LCBzaWduYXR1cmUpIHtcbiAgICB0aGlzLl9zaWduYXR1cmVzID0gW107XG4gICAgdGhpcy5fc2lnbmF0dXJlcy5wdXNoKHsgcHVibGljS2V5LCBzaWduYXR1cmUgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0Q29udHJhY3REYXRhKGFkZHJlc3Nlczogc3RyaW5nW10pOiBzdHJpbmcge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,2 @@
1
+ export { TransferBuilder } from '@bitgo-beta/abstract-eth';
2
+ //# sourceMappingURL=transferBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transferBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/transferBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TransferBuilder = void 0;
4
+ var abstract_eth_1 = require("@bitgo-beta/abstract-eth");
5
+ Object.defineProperty(exports, "TransferBuilder", { enumerable: true, get: function () { return abstract_eth_1.TransferBuilder; } });
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXJCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90cmFuc2ZlckJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseURBQTJEO0FBQWxELCtHQUFBLGVBQWUsT0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IFRyYW5zZmVyQnVpbGRlciB9IGZyb20gJ0BiaXRnby1iZXRhL2Fic3RyYWN0LWV0aCc7XG4iXX0=
@@ -0,0 +1,28 @@
1
+ import { BaseCoin } from '@bitgo-beta/statics';
2
+ import EthereumCommon from '@ethereumjs/common';
3
+ /**
4
+ * @param {NetworkType} network either mainnet or testnet
5
+ * @returns {EthereumCommon} Ethereum common configuration object
6
+ */
7
+ export declare function getCommon(coin: Readonly<BaseCoin>): EthereumCommon;
8
+ /**
9
+ *
10
+ * @param query - etherscan query parameters for the API call
11
+ * @param rpcUrl - RPC URL of the Hedera network
12
+ * @param explorerUrl - base URL of the Hedera Mirror Node API
13
+ * @param token - optional API key to use for the query
14
+ * @returns
15
+ */
16
+ export declare function recovery_HBAREVM_BlockchainExplorerQuery(query: Record<string, string>, rpcUrl: string, explorerUrl: string, token?: string): Promise<Record<string, unknown>>;
17
+ /**
18
+ * Check if an EVM address is an HTS (Hedera Token Service) native address.
19
+ * HTS entities on Hedera EVM use "long-zero" addresses where the first 12 bytes are all zeros
20
+ * and the entity number occupies the last 8 bytes (e.g. 0x00000000000000000000000000000000007ac203).
21
+ * Standard Solidity contracts have normal EVM addresses derived from public key hashes.
22
+ */
23
+ export declare function isHtsEvmAddress(address: string): boolean;
24
+ export declare function validateHederaAccountId(address: string): {
25
+ valid: boolean;
26
+ error: string | null;
27
+ };
28
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,QAAQ,EAAmB,MAAM,qBAAqB,CAAC;AAC1F,OAAO,cAAc,MAAM,oBAAoB,CAAC;AAIhD;;;GAGG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,cAAc,CAgBlE;AAQD;;;;;;;GAOG;AACH,wBAAsB,wCAAwC,CAC5D,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC7B,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAiClC;AAmJD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAIxD;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CA+CjG"}
@@ -0,0 +1,230 @@
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.getCommon = getCommon;
7
+ exports.recovery_HBAREVM_BlockchainExplorerQuery = recovery_HBAREVM_BlockchainExplorerQuery;
8
+ exports.isHtsEvmAddress = isHtsEvmAddress;
9
+ exports.validateHederaAccountId = validateHederaAccountId;
10
+ const statics_1 = require("@bitgo-beta/statics");
11
+ const common_1 = __importDefault(require("@ethereumjs/common"));
12
+ const superagent_1 = __importDefault(require("superagent"));
13
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
14
+ /**
15
+ * @param {NetworkType} network either mainnet or testnet
16
+ * @returns {EthereumCommon} Ethereum common configuration object
17
+ */
18
+ function getCommon(coin) {
19
+ if (!coin.features.includes(statics_1.CoinFeature.SHARED_EVM_SDK)) {
20
+ throw new sdk_core_1.InvalidTransactionError(`Cannot use common sdk module for the coin ${coin.name}`);
21
+ }
22
+ return common_1.default.custom({
23
+ name: coin.network.name,
24
+ networkId: coin.network.chainId,
25
+ chainId: coin.network.chainId,
26
+ }, {
27
+ baseChain: coin.network.type === statics_1.NetworkType.MAINNET ? 'mainnet' : 'sepolia',
28
+ hardfork: coin.features.includes(statics_1.CoinFeature.EIP1559) ? 'london' : undefined,
29
+ eips: coin.features.includes(statics_1.CoinFeature.EIP1559) ? [1559] : undefined,
30
+ });
31
+ }
32
+ function tinybarsToWei(tinybars) {
33
+ // Convert from tinybars to wei (1 HBAR = 10^8 tinybars, 1 HBAR = 10^18 wei)
34
+ // So: wei = tinybars * 10^10
35
+ return (BigInt(tinybars) * BigInt('10000000000')).toString();
36
+ }
37
+ /**
38
+ *
39
+ * @param query - etherscan query parameters for the API call
40
+ * @param rpcUrl - RPC URL of the Hedera network
41
+ * @param explorerUrl - base URL of the Hedera Mirror Node API
42
+ * @param token - optional API key to use for the query
43
+ * @returns
44
+ */
45
+ async function recovery_HBAREVM_BlockchainExplorerQuery(query, rpcUrl, explorerUrl, token) {
46
+ // Hedera Mirror Node API does not use API keys, but we keep this for compatibility
47
+ if (token) {
48
+ query.apikey = token;
49
+ }
50
+ const { module, action } = query;
51
+ // Remove trailing slash from explorerUrl if present
52
+ const baseUrl = explorerUrl.replace(/\/$/, '');
53
+ switch (`${module}.${action}`) {
54
+ case 'account.balance':
55
+ return await queryAddressBalanceHedera(query, baseUrl);
56
+ case 'account.txlist':
57
+ return await getAddressNonceHedera(query, baseUrl);
58
+ case 'account.tokenbalance':
59
+ return await queryTokenBalanceHedera(query, baseUrl);
60
+ case 'proxy.eth_gasPrice':
61
+ return await getGasPriceFromRPC(query, rpcUrl);
62
+ case 'proxy.eth_estimateGas':
63
+ return await getGasLimitFromRPC(query, rpcUrl);
64
+ case 'proxy.eth_call':
65
+ return await querySequenceIdFromRPC(query, rpcUrl);
66
+ default:
67
+ throw new Error(`Unsupported API call: ${module}.${action}`);
68
+ }
69
+ }
70
+ /**
71
+ * 1. Gets address balance using Hedera Mirror Node API
72
+ */
73
+ async function queryAddressBalanceHedera(query, baseUrl) {
74
+ const address = query.address;
75
+ const url = `${baseUrl}/accounts/${address}?transactions=false`;
76
+ const response = await superagent_1.default.get(url).send();
77
+ if (!response.ok) {
78
+ throw new Error('could not reach explorer');
79
+ }
80
+ const balance = response.body.balance?.balance || '0';
81
+ const balanceInWei = tinybarsToWei(balance);
82
+ return { result: balanceInWei };
83
+ }
84
+ /**
85
+ * 2. Gets nonce using Hedera Mirror Node API
86
+ */
87
+ async function getAddressNonceHedera(query, baseUrl) {
88
+ const address = query.address;
89
+ const accountUrl = `${baseUrl}/accounts/${address}?transactions=false`;
90
+ const response = await superagent_1.default.get(accountUrl).send();
91
+ if (!response.ok) {
92
+ throw new Error('could not reach explorer');
93
+ }
94
+ const nonce = response.body.ethereum_nonce || 0;
95
+ return { nonce: nonce };
96
+ }
97
+ /**
98
+ * 3. Gets token balance using Hedera Mirror Node API
99
+ */
100
+ async function queryTokenBalanceHedera(query, baseUrl) {
101
+ const contractAddress = query.contractaddress;
102
+ const address = query.address;
103
+ // Get token balances for the account
104
+ const url = `${baseUrl}/accounts/${address}/tokens`;
105
+ const response = await superagent_1.default.get(url).send();
106
+ if (!response.ok) {
107
+ throw new Error('could not reach explorer');
108
+ }
109
+ // Find the specific token balance
110
+ const tokens = response.body.tokens || [];
111
+ const tokenBalance = tokens.find((token) => token.token_id === contractAddress || token.contract_address === contractAddress);
112
+ const balance = tokenBalance && tokenBalance.balance !== null ? tokenBalance.balance.toString() : '0';
113
+ const balanceInWei = tinybarsToWei(balance);
114
+ return { result: balanceInWei };
115
+ }
116
+ /**
117
+ * 4. Gets sequence ID using RPC call
118
+ */
119
+ async function querySequenceIdFromRPC(query, rpcUrl) {
120
+ const { to, data } = query;
121
+ const requestBody = {
122
+ jsonrpc: '2.0',
123
+ method: 'eth_call',
124
+ params: [
125
+ {
126
+ to: to,
127
+ data: data,
128
+ },
129
+ ],
130
+ id: 1,
131
+ };
132
+ const response = await superagent_1.default.post(rpcUrl).send(requestBody).set('Content-Type', 'application/json');
133
+ if (!response.ok) {
134
+ throw new Error('could not fetch sequence ID from RPC');
135
+ }
136
+ return response.body;
137
+ }
138
+ /**
139
+ * 5. getGasPriceFromRPC - Gets gas price using Hedera Mirror Node API
140
+ */
141
+ async function getGasPriceFromRPC(query, rpcUrl) {
142
+ const requestBody = {
143
+ jsonrpc: '2.0',
144
+ method: 'eth_gasPrice',
145
+ params: [],
146
+ id: 1,
147
+ };
148
+ const response = await superagent_1.default.post(rpcUrl).send(requestBody).set('Content-Type', 'application/json');
149
+ if (!response.ok) {
150
+ throw new Error('could not fetch gas price from RPC');
151
+ }
152
+ return response.body;
153
+ }
154
+ /**
155
+ * 6. getGasLimitFromRPC - Gets gas limit estimate using RPC call.
156
+ */
157
+ async function getGasLimitFromRPC(query, rpcUrl) {
158
+ const { from, to, data } = query;
159
+ const requestBody = {
160
+ jsonrpc: '2.0',
161
+ method: 'eth_estimateGas',
162
+ params: [
163
+ {
164
+ from,
165
+ to,
166
+ data,
167
+ },
168
+ ],
169
+ id: 1,
170
+ };
171
+ const response = await superagent_1.default.post(rpcUrl).send(requestBody).set('Content-Type', 'application/json');
172
+ if (!response.ok) {
173
+ throw new Error('could not estimate gas limit from RPC');
174
+ }
175
+ return response.body;
176
+ }
177
+ /**
178
+ * Check if an EVM address is an HTS (Hedera Token Service) native address.
179
+ * HTS entities on Hedera EVM use "long-zero" addresses where the first 12 bytes are all zeros
180
+ * and the entity number occupies the last 8 bytes (e.g. 0x00000000000000000000000000000000007ac203).
181
+ * Standard Solidity contracts have normal EVM addresses derived from public key hashes.
182
+ */
183
+ function isHtsEvmAddress(address) {
184
+ const normalized = address.toLowerCase();
185
+ // First 12 bytes (24 hex chars) after '0x' prefix are all zeros
186
+ return /^0x0{24}[0-9a-f]{16}$/.test(normalized);
187
+ }
188
+ function validateHederaAccountId(address) {
189
+ const parts = address.split('.');
190
+ if (parts.length !== 3) {
191
+ return {
192
+ valid: false,
193
+ error: 'Invalid Hedera Account ID format. Use format: 0.0.12345',
194
+ };
195
+ }
196
+ const [shardStr, realmStr, accountStr] = parts;
197
+ if (!shardStr || !realmStr || !accountStr) {
198
+ return {
199
+ valid: false,
200
+ error: 'Invalid Hedera Account ID. All parts are required.',
201
+ };
202
+ }
203
+ const shard = Number(shardStr);
204
+ const realm = Number(realmStr);
205
+ const account = Number(accountStr);
206
+ // Validate all parts are valid non-negative integers within safe range
207
+ if (!Number.isInteger(shard) ||
208
+ !Number.isInteger(realm) ||
209
+ !Number.isInteger(account) ||
210
+ shard < 0 ||
211
+ realm < 0 ||
212
+ account < 0) {
213
+ return {
214
+ valid: false,
215
+ error: 'Invalid Hedera Account ID. All parts must be non-negative integers.',
216
+ };
217
+ }
218
+ // Check for JavaScript safe integer limits (prevents precision loss)
219
+ if (!Number.isSafeInteger(shard) || !Number.isSafeInteger(realm) || !Number.isSafeInteger(account)) {
220
+ return {
221
+ valid: false,
222
+ error: 'Invalid Hedera Account ID. Values are too large.',
223
+ };
224
+ }
225
+ return {
226
+ valid: true,
227
+ error: null,
228
+ };
229
+ }
230
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBU0EsOEJBZ0JDO0FBZ0JELDRGQXNDQztBQXlKRCwwQ0FJQztBQUVELDBEQStDQztBQTdSRCxpREFBMEY7QUFDMUYsZ0VBQWdEO0FBQ2hELDREQUFpQztBQUNqQyxtREFBK0Q7QUFFL0Q7OztHQUdHO0FBQ0gsU0FBZ0IsU0FBUyxDQUFDLElBQXdCO0lBQ2hELElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxxQkFBVyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7UUFDeEQsTUFBTSxJQUFJLGtDQUF1QixDQUFDLDZDQUE2QyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUM5RixDQUFDO0lBQ0QsT0FBTyxnQkFBYyxDQUFDLE1BQU0sQ0FDMUI7UUFDRSxJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJO1FBQ3ZCLFNBQVMsRUFBRyxJQUFJLENBQUMsT0FBMkIsQ0FBQyxPQUFPO1FBQ3BELE9BQU8sRUFBRyxJQUFJLENBQUMsT0FBMkIsQ0FBQyxPQUFPO0tBQ25ELEVBQ0Q7UUFDRSxTQUFTLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEtBQUsscUJBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUztRQUM1RSxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMscUJBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTO1FBQzVFLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxxQkFBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFT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S0FBSztZQUNaLEtBQUssRUFBRSxrREFBa0Q7U0FDMUQsQ0FBQztJQUNKLENBQUM7SUFFRCxPQUFPO1FBQ0wsS0FBSyxFQUFFLElBQUk7UUFDWCxLQUFLLEVBQUUsSUFBSTtLQUNaLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29pbkZlYXR1cmUsIE5ldHdvcmtUeXBlLCBCYXNlQ29pbiwgRXRoZXJldW1OZXR3b3JrIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgRXRoZXJldW1Db21tb24gZnJvbSAnQGV0aGVyZXVtanMvY29tbW9uJztcbmltcG9ydCByZXF1ZXN0IGZyb20gJ3N1cGVyYWdlbnQnO1xuaW1wb3J0IHsgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5cbi8qKlxuICogQHBhcmFtIHtOZXR3b3JrVHlwZX0gbmV0d29yayBlaXRoZXIgbWFpbm5ldCBvciB0ZXN0bmV0XG4gKiBAcmV0dXJucyB7RXRoZXJldW1Db21tb259IEV0aGVyZXVtIGNvbW1vbiBjb25maWd1cmF0aW9uIG9iamVjdFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29tbW9uKGNvaW46IFJlYWRvbmx5PEJhc2VDb2luPik6IEV0aGVyZXVtQ29tbW9uIHtcbiAgaWYgKCFjb2luLmZlYXR1cmVzLmluY2x1ZGVzKENvaW5GZWF0dXJlLlNIQVJFRF9FVk1fU0RLKSkge1xuICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcihgQ2Fubm90IHVzZSBjb21tb24gc2RrIG1vZHVsZSBmb3IgdGhlIGNvaW4gJHtjb2luLm5hbWV9YCk7XG4gIH1cbiAgcmV0dXJuIEV0aGVyZXVtQ29tbW9uLmN1c3RvbShcbiAgICB7XG4gICAgICBuYW1lOiBjb2luLm5ldHdvcmsubmFtZSxcbiAgICAgIG5ldHdvcmtJZDogKGNvaW4ubmV0d29yayBhcyBFdGhlcmV1bU5ldHdvcmspLmNoYWluSWQsXG4gICAgICBjaGFpbklkOiAoY29pbi5uZXR3b3JrIGFzIEV0aGVyZXVtTmV0d29yaykuY2hhaW5JZCxcbiAgICB9LFxuICAgIHtcbiAgICAgIGJhc2VDaGFpbjogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAnbWFpbm5ldCcgOiAnc2Vwb2xpYScsXG4gICAgICBoYXJkZm9yazogY29pbi5mZWF0dXJlcy5pbmNsdWRlcyhDb2luRmVhdHVyZS5FSVAxNTU5KSA/ICdsb25kb24nIDogdW5kZWZpbmVkLFxuICAgICAgZWlwczogY29pbi5mZWF0dXJlcy5pbmNsdWRlcyhDb2luRmVhdHVyZS5FSVAxNTU5KSA/IFsxNTU5XSA6IHVuZGVmaW5lZCxcbiAgICB9XG4gICk7XG59XG5cbmZ1bmN0aW9uIHRpbnliYXJzVG9XZWkodGlueWJhcnM6IHN0cmluZyk6IHN0cmluZyB7XG4gIC8vIENvbnZlcnQgZnJvbSB0aW55YmFycyB0byB3ZWkgKDEgSEJBUiA9IDEwXjggdGlueWJhcnMsIDEgSEJBUiA9IDEwXjE4IHdlaSlcbiAgLy8gU286IHdlaSA9IHRpbnliYXJzICogMTBeMTBcbiAgcmV0dXJuIChCaWdJbnQodGlueWJhcnMpICogQmlnSW50KCcxMDAwMDAwMDAwMCcpKS50b1N0cmluZygpO1xufVxuXG4vKipcbiAqXG4gKiBAcGFyYW0gcXVlcnkgLSBldGhlcnNjYW4gcXVlcnkgcGFyYW1ldGVycyBmb3IgdGhlIEFQSSBjYWxsXG4gKiBAcGFyYW0gcnBjVXJsIC0gUlBDIFVSTCBvZiB0aGUgSGVkZXJhIG5ldHdvcmtcbiAqIEBwYXJhbSBleHBsb3JlclVybCAtIGJhc2UgVVJMIG9mIHRoZSBIZWRlcmEgTWlycm9yIE5vZGUgQVBJXG4gKiBAcGFyYW0gdG9rZW4gLSBvcHRpb25hbCBBUEkga2V5IHRvIHVzZSBmb3IgdGhlIHF1ZXJ5XG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVjb3ZlcnlfSEJBUkVWTV9CbG9ja2NoYWluRXhwbG9yZXJRdWVyeShcbiAgcXVlcnk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4sXG4gIHJwY1VybDogc3RyaW5nLFxuICBleHBsb3JlclVybDogc3RyaW5nLFxuICB0b2tlbj86IHN0cmluZ1xuKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4ge1xuICAvLyBIZWRlcmEgTWlycm9yIE5vZGUgQVBJIGRvZXMgbm90IHVzZSBBUEkga2V5cywgYnV0IHdlIGtlZXAgdGhpcyBmb3IgY29tcGF0aWJpbGl0eVxuICBpZiAodG9rZW4pIHtcbiAgICBxdWVyeS5hcGlrZXkgPSB0b2tlbjtcbiAgfVxuXG4gIGNvbnN0IHsgbW9kdWxlLCBhY3Rpb24gfSA9IHF1ZXJ5O1xuXG4gIC8vIFJlbW92ZSB0cmFpbGluZyBzbGFzaCBmcm9tIGV4cGxvcmVyVXJsIGlmIHByZXNlbnRcbiAgY29uc3QgYmFzZVVybCA9IGV4cGxvcmVyVXJsLnJlcGxhY2UoL1xcLyQvLCAnJyk7XG5cbiAgc3dpdGNoIChgJHttb2R1bGV9LiR7YWN0aW9ufWApIHtcbiAgICBjYXNlICdhY2NvdW50LmJhbGFuY2UnOlxuICAgICAgcmV0dXJuIGF3YWl0IHF1ZXJ5QWRkcmVzc0JhbGFuY2VIZWRlcmEocXVlcnksIGJhc2VVcmwpO1xuXG4gICAgY2FzZSAnYWNjb3VudC50eGxpc3QnOlxuICAgICAgcmV0dXJuIGF3YWl0IGdldEFkZHJlc3NOb25jZUhlZGVyYShxdWVyeSwgYmFzZVVybCk7XG5cbiAgICBjYXNlICdhY2NvdW50LnRva2VuYmFsYW5jZSc6XG4gICAgICByZXR1cm4gYXdhaXQgcXVlcnlUb2tlbkJhbGFuY2VIZWRlcmEocXVlcnksIGJhc2VVcmwpO1xuXG4gICAgY2FzZSAncHJveHkuZXRoX2dhc1ByaWNlJzpcbiAgICAgIHJldHVybiBhd2FpdCBnZXRHYXNQcmljZUZyb21SUEMocXVlcnksIHJwY1VybCk7XG5cbiAgICBjYXNlICdwcm94eS5ldGhfZXN0aW1hdGVHYXMnOlxuICAgICAgcmV0dXJuIGF3YWl0IGdldEdhc0xpbWl0RnJvbVJQQyhxdWVyeSwgcnBjVXJsKTtcblxuICAgIGNhc2UgJ3Byb3h5LmV0aF9jYWxsJzpcbiAgICAgIHJldHVybiBhd2FpdCBxdWVyeVNlcXVlbmNlSWRGcm9tUlBDKHF1ZXJ5LCBycGNVcmwpO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgQVBJIGNhbGw6ICR7bW9kdWxlfS4ke2FjdGlvbn1gKTtcbiAgfVxufVxuXG4vKipcbiAqIDEuIEdldHMgYWRkcmVzcyBiYWxhbmNlIHVzaW5nIEhlZGVyYSBNaXJyb3IgTm9kZSBBUElcbiAqL1xuYXN5bmMgZnVuY3Rpb24gcXVlcnlBZGRyZXNzQmFsYW5jZUhlZGVyYShcbiAgcXVlcnk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4sXG4gIGJhc2VVcmw6IHN0cmluZ1xuKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4ge1xuICBjb25zdCBhZGRyZXNzID0gcXVlcnkuYWRkcmVzcztcbiAgY29uc3QgdXJsID0gYCR7YmFzZVVybH0vYWNjb3VudHMvJHthZGRyZXNzfT90cmFuc2FjdGlvbnM9ZmFsc2VgO1xuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHJlcXVlc3QuZ2V0KHVybCkuc2VuZCgpO1xuXG4gIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2NvdWxkIG5vdCByZWFjaCBleHBsb3JlcicpO1xuICB9XG5cbiAgY29uc3QgYmFsYW5jZSA9IHJlc3BvbnNlLmJvZHkuYmFsYW5jZT8uYmFsYW5jZSB8fCAnMCc7XG5cbiAgY29uc3QgYmFsYW5jZUluV2VpID0gdGlueWJhcnNUb1dlaShiYWxhbmNlKTtcblxuICByZXR1cm4geyByZXN1bHQ6IGJhbGFuY2VJbldlaSB9O1xufVxuXG4vKipcbiAqIDIuIEdldHMgbm9uY2UgdXNpbmcgSGVkZXJhIE1pcnJvciBOb2RlIEFQSVxuICovXG5hc3luYyBmdW5jdGlvbiBnZXRBZGRyZXNzTm9uY2VIZWRlcmEocXVlcnk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4sIGJhc2VVcmw6IHN0cmluZyk6IFByb21pc2U8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+IHtcbiAgY29uc3QgYWRkcmVzcyA9IHF1ZXJ5LmFkZHJlc3M7XG4gIGNvbnN0IGFjY291bnRVcmwgPSBgJHtiYXNlVXJsfS9hY2NvdW50cy8ke2FkZHJlc3N9P3RyYW5zYWN0aW9ucz1mYWxzZWA7XG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgcmVxdWVzdC5nZXQoYWNjb3VudFVybCkuc2VuZCgpO1xuXG4gIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2NvdWxkIG5vdCByZWFjaCBleHBsb3JlcicpO1xuICB9XG5cbiAgY29uc3Qgbm9uY2UgPSByZXNwb25zZS5ib2R5LmV0aGVyZXVtX25vbmNlIHx8IDA7XG5cbiAgcmV0dXJuIHsgbm9uY2U6IG5vbmNlIH07XG59XG5cbi8qKlxuICogMy4gR2V0cyB0b2tlbiBiYWxhbmNlIHVzaW5nIEhlZGVyYSBNaXJyb3IgTm9kZSBBUElcbiAqL1xuYXN5bmMgZnVuY3Rpb24gcXVlcnlUb2tlbkJhbGFuY2VIZWRlcmEoXG4gIHF1ZXJ5OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LFxuICBiYXNlVXJsOiBzdHJpbmdcbik6IFByb21pc2U8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+IHtcbiAgY29uc3QgY29udHJhY3RBZGRyZXNzID0gcXVlcnkuY29udHJhY3RhZGRyZXNzO1xuICBjb25zdCBhZGRyZXNzID0gcXVlcnkuYWRkcmVzcztcblxuICAvLyBHZXQgdG9rZW4gYmFsYW5jZXMgZm9yIHRoZSBhY2NvdW50XG4gIGNvbnN0IHVybCA9IGAke2Jhc2VVcmx9L2FjY291bnRzLyR7YWRkcmVzc30vdG9rZW5zYDtcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCByZXF1ZXN0LmdldCh1cmwpLnNlbmQoKTtcblxuICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdjb3VsZCBub3QgcmVhY2ggZXhwbG9yZXInKTtcbiAgfVxuXG4gIC8vIEZpbmQgdGhlIHNwZWNpZmljIHRva2VuIGJhbGFuY2VcbiAgY29uc3QgdG9rZW5zID0gcmVzcG9uc2UuYm9keS50b2tlbnMgfHwgW107XG4gIGNvbnN0IHRva2VuQmFsYW5jZSA9IHRva2Vucy5maW5kKFxuICAgICh0b2tlbjogeyB0b2tlbl9pZDogc3RyaW5nOyBjb250cmFjdF9hZGRyZXNzOiBzdHJpbmc7IGJhbGFuY2U6IG51bWJlciB9KSA9PlxuICAgICAgdG9rZW4udG9rZW5faWQgPT09IGNvbnRyYWN0QWRkcmVzcyB8fCB0b2tlbi5jb250cmFjdF9hZGRyZXNzID09PSBjb250cmFjdEFkZHJlc3NcbiAgKTtcblxuICBjb25zdCBiYWxhbmNlID0gdG9rZW5CYWxhbmNlICYmIHRva2VuQmFsYW5jZS5iYWxhbmNlICE9PSBudWxsID8gdG9rZW5CYWxhbmNlLmJhbGFuY2UudG9TdHJpbmcoKSA6ICcwJztcblxuICBjb25zdCBiYWxhbmNlSW5XZWkgPSB0aW55YmFyc1RvV2VpKGJhbGFuY2UpO1xuXG4gIHJldHVybiB7IHJlc3VsdDogYmFsYW5jZUluV2VpIH07XG59XG5cbi8qKlxuICogNC4gR2V0cyBzZXF1ZW5jZSBJRCB1c2luZyBSUEMgY2FsbFxuICovXG5hc3luYyBmdW5jdGlvbiBxdWVyeVNlcXVlbmNlSWRGcm9tUlBDKHF1ZXJ5OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LCBycGNVcmw6IHN0cmluZyk6IFByb21pc2U8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+IHtcbiAgY29uc3QgeyB0bywgZGF0YSB9ID0gcXVlcnk7XG5cbiAgY29uc3QgcmVxdWVzdEJvZHkgPSB7XG4gICAganNvbnJwYzogJzIuMCcsXG4gICAgbWV0aG9kOiAnZXRoX2NhbGwnLFxuICAgIHBhcmFtczogW1xuICAgICAge1xuICAgICAgICB0bzogdG8sXG4gICAgICAgIGRhdGE6IGRhdGEsXG4gICAgICB9LFxuICAgIF0sXG4gICAgaWQ6IDEsXG4gIH07XG5cbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCByZXF1ZXN0LnBvc3QocnBjVXJsKS5zZW5kKHJlcXVlc3RCb2R5KS5zZXQoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XG5cbiAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgIHRocm93IG5ldyBFcnJvcignY291bGQgbm90IGZldGNoIHNlcXVlbmNlIElEIGZyb20gUlBDJyk7XG4gIH1cblxuICByZXR1cm4gcmVzcG9uc2UuYm9keTtcbn1cblxuLyoqXG4gKiA1LiBnZXRHYXNQcmljZUZyb21SUEMgLSBHZXRzIGdhcyBwcmljZSB1c2luZyBIZWRlcmEgTWlycm9yIE5vZGUgQVBJXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGdldEdhc1ByaWNlRnJvbVJQQyhxdWVyeTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiwgcnBjVXJsOiBzdHJpbmcpOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIHVua25vd24+PiB7XG4gIGNvbnN0IHJlcXVlc3RCb2R5ID0ge1xuICAgIGpzb25ycGM6ICcyLjAnLFxuICAgIG1ldGhvZDogJ2V0aF9nYXNQcmljZScsXG4gICAgcGFyYW1zOiBbXSxcbiAgICBpZDogMSxcbiAgfTtcblxuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHJlcXVlc3QucG9zdChycGNVcmwpLnNlbmQocmVxdWVzdEJvZHkpLnNldCgnQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcblxuICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdjb3VsZCBub3QgZmV0Y2ggZ2FzIHByaWNlIGZyb20gUlBDJyk7XG4gIH1cblxuICByZXR1cm4gcmVzcG9uc2UuYm9keTtcbn1cblxuLyoqXG4gKiA2LiBnZXRHYXNMaW1pdEZyb21SUEMgLSBHZXRzIGdhcyBsaW1pdCBlc3RpbWF0ZSB1c2luZyBSUEMgY2FsbC5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0R2FzTGltaXRGcm9tUlBDKHF1ZXJ5OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LCBycGNVcmw6IHN0cmluZyk6IFByb21pc2U8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+IHtcbiAgY29uc3QgeyBmcm9tLCB0bywgZGF0YSB9ID0gcXVlcnk7XG5cbiAgY29uc3QgcmVxdWVzdEJvZHkgPSB7XG4gICAganNvbnJwYzogJzIuMCcsXG4gICAgbWV0aG9kOiAnZXRoX2VzdGltYXRlR2FzJyxcbiAgICBwYXJhbXM6IFtcbiAgICAgIHtcbiAgICAgICAgZnJvbSxcbiAgICAgICAgdG8sXG4gICAgICAgIGRhdGEsXG4gICAgICB9LFxuICAgIF0sXG4gICAgaWQ6IDEsXG4gIH07XG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgcmVxdWVzdC5wb3N0KHJwY1VybCkuc2VuZChyZXF1ZXN0Qm9keSkuc2V0KCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xuXG4gIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2NvdWxkIG5vdCBlc3RpbWF0ZSBnYXMgbGltaXQgZnJvbSBSUEMnKTtcbiAgfVxuXG4gIHJldHVybiByZXNwb25zZS5ib2R5O1xufVxuXG4vKipcbiAqIENoZWNrIGlmIGFuIEVWTSBhZGRyZXNzIGlzIGFuIEhUUyAoSGVkZXJhIFRva2VuIFNlcnZpY2UpIG5hdGl2ZSBhZGRyZXNzLlxuICogSFRTIGVudGl0aWVzIG9uIEhlZGVyYSBFVk0gdXNlIFwibG9uZy16ZXJvXCIgYWRkcmVzc2VzIHdoZXJlIHRoZSBmaXJzdCAxMiBieXRlcyBhcmUgYWxsIHplcm9zXG4gKiBhbmQgdGhlIGVudGl0eSBudW1iZXIgb2NjdXBpZXMgdGhlIGxhc3QgOCBieXRlcyAoZS5nLiAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA3YWMyMDMpLlxuICogU3RhbmRhcmQgU29saWRpdHkgY29udHJhY3RzIGhhdmUgbm9ybWFsIEVWTSBhZGRyZXNzZXMgZGVyaXZlZCBmcm9tIHB1YmxpYyBrZXkgaGFzaGVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNIdHNFdm1BZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBjb25zdCBub3JtYWxpemVkID0gYWRkcmVzcy50b0xvd2VyQ2FzZSgpO1xuICAvLyBGaXJzdCAxMiBieXRlcyAoMjQgaGV4IGNoYXJzKSBhZnRlciAnMHgnIHByZWZpeCBhcmUgYWxsIHplcm9zXG4gIHJldHVybiAvXjB4MHsyNH1bMC05YS1mXXsxNn0kLy50ZXN0KG5vcm1hbGl6ZWQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVIZWRlcmFBY2NvdW50SWQoYWRkcmVzczogc3RyaW5nKTogeyB2YWxpZDogYm9vbGVhbjsgZXJyb3I6IHN0cmluZyB8IG51bGwgfSB7XG4gIGNvbnN0IHBhcnRzID0gYWRkcmVzcy5zcGxpdCgnLicpO1xuICBpZiAocGFydHMubGVuZ3RoICE9PSAzKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHZhbGlkOiBmYWxzZSxcbiAgICAgIGVycm9yOiAnSW52YWxpZCBIZWRlcmEgQWNjb3VudCBJRCBmb3JtYXQuIFVzZSBmb3JtYXQ6IDAuMC4xMjM0NScsXG4gICAgfTtcbiAgfVxuICBjb25zdCBbc2hhcmRTdHIsIHJlYWxtU3RyLCBhY2NvdW50U3RyXSA9IHBhcnRzO1xuICBpZiAoIXNoYXJkU3RyIHx8ICFyZWFsbVN0ciB8fCAhYWNjb3VudFN0cikge1xuICAgIHJldHVybiB7XG4gICAgICB2YWxpZDogZmFsc2UsXG4gICAgICBlcnJvcjogJ0ludmFsaWQgSGVkZXJhIEFjY291bnQgSUQuIEFsbCBwYXJ0cyBhcmUgcmVxdWlyZWQuJyxcbiAgICB9O1xuICB9XG5cbiAgY29uc3Qgc2hhcmQgPSBOdW1iZXIoc2hhcmRTdHIpO1xuICBjb25zdCByZWFsbSA9IE51bWJlcihyZWFsbVN0cik7XG4gIGNvbnN0IGFjY291bnQgPSBOdW1iZXIoYWNjb3VudFN0cik7XG5cbiAgLy8gVmFsaWRhdGUgYWxsIHBhcnRzIGFyZSB2YWxpZCBub24tbmVnYXRpdmUgaW50ZWdlcnMgd2l0aGluIHNhZmUgcmFuZ2VcbiAgaWYgKFxuICAgICFOdW1iZXIuaXNJbnRlZ2VyKHNoYXJkKSB8fFxuICAgICFOdW1iZXIuaXNJbnRlZ2VyKHJlYWxtKSB8fFxuICAgICFOdW1iZXIuaXNJbnRlZ2VyKGFjY291bnQpIHx8XG4gICAgc2hhcmQgPCAwIHx8XG4gICAgcmVhbG0gPCAwIHx8XG4gICAgYWNjb3VudCA8IDBcbiAgKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHZhbGlkOiBmYWxzZSxcbiAgICAgIGVycm9yOiAnSW52YWxpZCBIZWRlcmEgQWNjb3VudCBJRC4gQWxsIHBhcnRzIG11c3QgYmUgbm9uLW5lZ2F0aXZlIGludGVnZXJzLicsXG4gICAgfTtcbiAgfVxuXG4gIC8vIENoZWNrIGZvciBKYXZhU2NyaXB0IHNhZmUgaW50ZWdlciBsaW1pdHMgKHByZXZlbnRzIHByZWNpc2lvbiBsb3NzKVxuICBpZiAoIU51bWJlci5pc1NhZmVJbnRlZ2VyKHNoYXJkKSB8fCAhTnVtYmVyLmlzU2FmZUludGVnZXIocmVhbG0pIHx8ICFOdW1iZXIuaXNTYWZlSW50ZWdlcihhY2NvdW50KSkge1xuICAgIHJldHVybiB7XG4gICAgICB2YWxpZDogZmFsc2UsXG4gICAgICBlcnJvcjogJ0ludmFsaWQgSGVkZXJhIEFjY291bnQgSUQuIFZhbHVlcyBhcmUgdG9vIGxhcmdlLicsXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgdmFsaWQ6IHRydWUsXG4gICAgZXJyb3I6IG51bGwsXG4gIH07XG59XG4iXX0=
@@ -0,0 +1,4 @@
1
+ import { BitGoBase } from '@bitgo-beta/sdk-core';
2
+ export declare const registerAll: (sdk: BitGoBase) => void;
3
+ export declare const register: (coinFamily: string, sdk: BitGoBase) => void;
4
+ //# sourceMappingURL=register.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../src/register.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAMjD,eAAO,MAAM,WAAW,QAAS,SAAS,KAAG,IAS5C,CAAC;AAEF,eAAO,MAAM,QAAQ,eAAgB,MAAM,OAAO,SAAS,KAAG,IAkC7D,CAAC"}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.register = exports.registerAll = void 0;
4
+ const statics_1 = require("@bitgo-beta/statics");
5
+ const evmCoin_1 = require("./evmCoin");
6
+ const ethLikeErc20Token_1 = require("./ethLikeErc20Token");
7
+ const ethLikeErc721Token_1 = require("./ethLikeErc721Token");
8
+ const registerAll = (sdk) => {
9
+ statics_1.coins
10
+ .filter((coin) => coin.features.includes(statics_1.CoinFeature.SHARED_EVM_SDK) && coin.network.type === statics_1.NetworkType.MAINNET && !coin.isToken)
11
+ .forEach((coin) => {
12
+ (0, exports.register)(coin.family, sdk);
13
+ });
14
+ };
15
+ exports.registerAll = registerAll;
16
+ const register = (coinFamily, sdk) => {
17
+ const coinFeatures = statics_1.coins.get(coinFamily).features;
18
+ statics_1.coins
19
+ .filter((coin) => coin.family === coinFamily && !coin.isToken)
20
+ .forEach((coin) => {
21
+ // Handle SHARED_EVM_SDK registration
22
+ if (coinFeatures.includes(statics_1.CoinFeature.SHARED_EVM_SDK)) {
23
+ sdk.register(coin.name, evmCoin_1.EvmCoin.createInstance);
24
+ }
25
+ // Handle SUPPORTS_ERC20 registration
26
+ if (coinFeatures.includes(statics_1.CoinFeature.SUPPORTS_ERC20)) {
27
+ const coinNames = {
28
+ Mainnet: `${coin.name}`,
29
+ Testnet: `${coin.name}`,
30
+ };
31
+ ethLikeErc20Token_1.EthLikeErc20Token.createTokenConstructors(coinNames).forEach(({ name, coinConstructor }) => {
32
+ sdk.register(name, coinConstructor);
33
+ });
34
+ }
35
+ // Handle SUPPORTS_ERC721 registration
36
+ if (coinFeatures.includes(statics_1.CoinFeature.SUPPORTS_ERC721)) {
37
+ const coinNames = {
38
+ Mainnet: `${coin.name}`,
39
+ Testnet: `${coin.name}`,
40
+ };
41
+ ethLikeErc721Token_1.EthLikeErc721Token.createTokenConstructors(coinNames).forEach(({ name, coinConstructor }) => {
42
+ sdk.register(name, coinConstructor);
43
+ });
44
+ }
45
+ });
46
+ };
47
+ exports.register = register;
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcmVnaXN0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsaURBQXNFO0FBQ3RFLHVDQUFvQztBQUNwQywyREFBd0Q7QUFDeEQsNkRBQTBEO0FBRW5ELE1BQU0sV0FBVyxHQUFHLENBQUMsR0FBYyxFQUFRLEVBQUU7SUFDbEQsZUFBSztTQUNGLE1BQU0sQ0FDTCxDQUFDLElBQUksRUFBRSxFQUFFLENBQ1AsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMscUJBQVcsQ0FBQyxjQUFjLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksS0FBSyxxQkFBVyxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQ25IO1NBQ0EsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7UUFDaEIsSUFBQSxnQkFBUSxFQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDN0IsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDLENBQUM7QUFUVyxRQUFBLFdBQVcsZUFTdEI7QUFFSyxNQUFNLFFBQVEsR0FBRyxDQUFDLFVBQWtCLEVBQUUsR0FBYyxFQUFRLEVBQUU7SUFDbkUsTUFBTSxZQUFZLEdBQUcsZUFBSyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxRQUFRLENBQUM7SUFDcEQsZUFBSztTQUNGLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxVQUFVLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO1NBQzdELE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1FBQ2hCLHFDQUFxQztRQUNyQyxJQUFJLFlBQVksQ0FBQyxRQUFRLENBQUMscUJBQVcsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDO1lBQ3RELEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxpQkFBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ2xELENBQUM7UUFFRCxxQ0FBcUM7UUFDckMsSUFBSSxZQUFZLENBQUMsUUFBUSxDQUFDLHFCQUFXLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQztZQUN0RCxNQUFNLFNBQVMsR0FBRztnQkFDaEIsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRTtnQkFDdkIsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRTthQUN4QixDQUFDO1lBRUYscUNBQWlCLENBQUMsdUJBQXVCLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLEVBQUUsRUFBRTtnQkFDekYsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsZUFBZSxDQUFDLENBQUM7WUFDdEMsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQsc0NBQXNDO1FBQ3RDLElBQUksWUFBWSxDQUFDLFFBQVEsQ0FBQyxxQkFBVyxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUM7WUFDdkQsTUFBTSxTQUFTLEdBQUc7Z0JBQ2hCLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUU7Z0JBQ3ZCLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUU7YUFDeEIsQ0FBQztZQUVGLHVDQUFrQixDQUFDLHVCQUF1QixDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRSxFQUFFLEVBQUU7Z0JBQzFGLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLGVBQWUsQ0FBQyxDQUFDO1lBQ3RDLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyxDQUFDO0FBbENXLFFBQUEsUUFBUSxZQWtDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCaXRHb0Jhc2UgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBDb2luRmVhdHVyZSwgY29pbnMsIE5ldHdvcmtUeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBFdm1Db2luIH0gZnJvbSAnLi9ldm1Db2luJztcbmltcG9ydCB7IEV0aExpa2VFcmMyMFRva2VuIH0gZnJvbSAnLi9ldGhMaWtlRXJjMjBUb2tlbic7XG5pbXBvcnQgeyBFdGhMaWtlRXJjNzIxVG9rZW4gfSBmcm9tICcuL2V0aExpa2VFcmM3MjFUb2tlbic7XG5cbmV4cG9ydCBjb25zdCByZWdpc3RlckFsbCA9IChzZGs6IEJpdEdvQmFzZSk6IHZvaWQgPT4ge1xuICBjb2luc1xuICAgIC5maWx0ZXIoXG4gICAgICAoY29pbikgPT5cbiAgICAgICAgY29pbi5mZWF0dXJlcy5pbmNsdWRlcyhDb2luRmVhdHVyZS5TSEFSRURfRVZNX1NESykgJiYgY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgJiYgIWNvaW4uaXNUb2tlblxuICAgIClcbiAgICAuZm9yRWFjaCgoY29pbikgPT4ge1xuICAgICAgcmVnaXN0ZXIoY29pbi5mYW1pbHksIHNkayk7XG4gICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVnaXN0ZXIgPSAoY29pbkZhbWlseTogc3RyaW5nLCBzZGs6IEJpdEdvQmFzZSk6IHZvaWQgPT4ge1xuICBjb25zdCBjb2luRmVhdHVyZXMgPSBjb2lucy5nZXQoY29pbkZhbWlseSkuZmVhdHVyZXM7XG4gIGNvaW5zXG4gICAgLmZpbHRlcigoY29pbikgPT4gY29pbi5mYW1pbHkgPT09IGNvaW5GYW1pbHkgJiYgIWNvaW4uaXNUb2tlbilcbiAgICAuZm9yRWFjaCgoY29pbikgPT4ge1xuICAgICAgLy8gSGFuZGxlIFNIQVJFRF9FVk1fU0RLIHJlZ2lzdHJhdGlvblxuICAgICAgaWYgKGNvaW5GZWF0dXJlcy5pbmNsdWRlcyhDb2luRmVhdHVyZS5TSEFSRURfRVZNX1NESykpIHtcbiAgICAgICAgc2RrLnJlZ2lzdGVyKGNvaW4ubmFtZSwgRXZtQ29pbi5jcmVhdGVJbnN0YW5jZSk7XG4gICAgICB9XG5cbiAgICAgIC8vIEhhbmRsZSBTVVBQT1JUU19FUkMyMCByZWdpc3RyYXRpb25cbiAgICAgIGlmIChjb2luRmVhdHVyZXMuaW5jbHVkZXMoQ29pbkZlYXR1cmUuU1VQUE9SVFNfRVJDMjApKSB7XG4gICAgICAgIGNvbnN0IGNvaW5OYW1lcyA9IHtcbiAgICAgICAgICBNYWlubmV0OiBgJHtjb2luLm5hbWV9YCxcbiAgICAgICAgICBUZXN0bmV0OiBgJHtjb2luLm5hbWV9YCxcbiAgICAgICAgfTtcblxuICAgICAgICBFdGhMaWtlRXJjMjBUb2tlbi5jcmVhdGVUb2tlbkNvbnN0cnVjdG9ycyhjb2luTmFtZXMpLmZvckVhY2goKHsgbmFtZSwgY29pbkNvbnN0cnVjdG9yIH0pID0+IHtcbiAgICAgICAgICBzZGsucmVnaXN0ZXIobmFtZSwgY29pbkNvbnN0cnVjdG9yKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIC8vIEhhbmRsZSBTVVBQT1JUU19FUkM3MjEgcmVnaXN0cmF0aW9uXG4gICAgICBpZiAoY29pbkZlYXR1cmVzLmluY2x1ZGVzKENvaW5GZWF0dXJlLlNVUFBPUlRTX0VSQzcyMSkpIHtcbiAgICAgICAgY29uc3QgY29pbk5hbWVzID0ge1xuICAgICAgICAgIE1haW5uZXQ6IGAke2NvaW4ubmFtZX1gLFxuICAgICAgICAgIFRlc3RuZXQ6IGAke2NvaW4ubmFtZX1gLFxuICAgICAgICB9O1xuXG4gICAgICAgIEV0aExpa2VFcmM3MjFUb2tlbi5jcmVhdGVUb2tlbkNvbnN0cnVjdG9ycyhjb2luTmFtZXMpLmZvckVhY2goKHsgbmFtZSwgY29pbkNvbnN0cnVjdG9yIH0pID0+IHtcbiAgICAgICAgICBzZGsucmVnaXN0ZXIobmFtZSwgY29pbkNvbnN0cnVjdG9yKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG59O1xuIl19
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@bitgo-beta/sdk-coin-evm",
3
- "version": "1.0.1-beta.8",
3
+ "version": "1.0.1-beta.800",
4
4
  "description": "Configurable common module for EVM assets, using @bitgo-beta/abstract-eth for reduced coin integration boilerplate.",
5
5
  "main": "./dist/src/index.js",
6
6
  "types": "./dist/src/index.d.ts",
7
7
  "scripts": {
8
8
  "build": "yarn tsc --build --incremental --verbose .",
9
9
  "fmt": "prettier --write .",
10
- "check-fmt": "prettier --check .",
10
+ "check-fmt": "prettier --check '**/*.{ts,js,json}'",
11
11
  "clean": "rm -r ./dist",
12
12
  "lint": "eslint --quiet .",
13
13
  "test": "npm run coverage",
@@ -15,6 +15,17 @@
15
15
  "unit-test": "mocha",
16
16
  "prepare": "npm run build"
17
17
  },
18
+ "dependencies": {
19
+ "@bitgo-beta/abstract-eth": "1.0.2-beta.1972",
20
+ "@bitgo-beta/sdk-core": "8.2.1-beta.1742",
21
+ "@bitgo-beta/statics": "15.1.1-beta.1748",
22
+ "@ethereumjs/common": "^2.6.5",
23
+ "superagent": "^9.0.1"
24
+ },
25
+ "devDependencies": {
26
+ "@bitgo-beta/sdk-api": "1.10.1-beta.1741",
27
+ "@bitgo-beta/sdk-test": "^9.1.42"
28
+ },
18
29
  "author": "BitGo SDK Team <sdkteam@bitgo.com>",
19
30
  "license": "MIT",
20
31
  "repository": {
@@ -39,5 +50,5 @@
39
50
  ".ts"
40
51
  ]
41
52
  },
42
- "gitHead": "c422456817dfd35cd2c81357f1d70fab586256f9"
53
+ "gitHead": "3ae6db88c2b7f646b4ce5a04c123423ca49ef071"
43
54
  }