@bitgo-beta/sdk-coin-xdc 1.0.1-beta.89 → 1.0.1-beta.890
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/dist/src/index.d.ts +1 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +2 -1
- package/dist/src/lib/XDCValidatorABI.json +431 -0
- package/dist/src/lib/index.d.ts +2 -0
- package/dist/src/lib/index.d.ts.map +1 -1
- package/dist/src/lib/index.js +9 -2
- package/dist/src/lib/transactionBuilder.d.ts +23 -1
- package/dist/src/lib/transactionBuilder.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilder.js +53 -1
- package/dist/src/lib/uploadKycBuilder.d.ts +73 -0
- package/dist/src/lib/uploadKycBuilder.d.ts.map +1 -0
- package/dist/src/lib/uploadKycBuilder.js +110 -0
- package/dist/src/lib/validatorContract.d.ts +136 -0
- package/dist/src/lib/validatorContract.d.ts.map +1 -0
- package/dist/src/lib/validatorContract.js +62 -0
- package/dist/src/register.d.ts.map +1 -1
- package/dist/src/register.js +5 -1
- package/dist/src/xdc.d.ts +15 -2
- package/dist/src/xdc.d.ts.map +1 -1
- package/dist/src/xdc.js +32 -1
- package/dist/src/xdcToken.d.ts +37 -0
- package/dist/src/xdcToken.d.ts.map +1 -0
- package/dist/src/xdcToken.js +74 -0
- package/dist/test/resources.d.ts +45 -0
- package/dist/test/resources.d.ts.map +1 -0
- package/dist/test/resources.js +107 -0
- package/dist/test/unit/getBuilder.d.ts +3 -0
- package/dist/test/unit/getBuilder.d.ts.map +1 -0
- package/dist/test/unit/getBuilder.js +10 -0
- package/dist/test/unit/transactionBuilder/send.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/send.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/send.js +19 -0
- package/dist/test/unit/transactionBuilder/uploadKyc.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/uploadKyc.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/uploadKyc.js +215 -0
- package/dist/test/unit/utils.d.ts +2 -0
- package/dist/test/unit/utils.d.ts.map +1 -0
- package/dist/test/unit/utils.js +27 -0
- package/dist/test/unit/xdc.d.ts +2 -0
- package/dist/test/unit/xdc.d.ts.map +1 -0
- package/dist/test/unit/xdc.js +172 -0
- package/dist/test/unit/xdcToken.d.ts +2 -0
- package/dist/test/unit/xdcToken.d.ts.map +1 -0
- package/dist/test/unit/xdcToken.js +228 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +14 -10
- package/.eslintignore +0 -5
- package/.mocharc.yml +0 -8
- package/CHANGELOG.md +0 -48
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @prettier
|
|
3
|
+
*/
|
|
4
|
+
import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
|
|
5
|
+
import { ContractCall } from '@bitgo-beta/abstract-eth';
|
|
6
|
+
/**
|
|
7
|
+
* Represents an XDC uploadKYC contract call
|
|
8
|
+
* This is used to submit KYC document hashes (IPFS hashes) to the XDC Validator contract
|
|
9
|
+
*/
|
|
10
|
+
export declare class UploadKycCall extends ContractCall {
|
|
11
|
+
readonly contractAddress: string;
|
|
12
|
+
readonly ipfsHash: string;
|
|
13
|
+
constructor(contractAddress: string, ipfsHash: string);
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Builder for XDC uploadKYC transactions
|
|
17
|
+
*
|
|
18
|
+
* This builder creates transactions that upload KYC document hashes to the XDC Validator contract.
|
|
19
|
+
* The flow is:
|
|
20
|
+
* 1. Upload KYC document to IPFS → get IPFS hash (e.g., "Qm...")
|
|
21
|
+
* 2. Use this builder to create a transaction that submits the hash to the validator contract
|
|
22
|
+
* 3. The transaction is signed using TSS/MPC
|
|
23
|
+
* 4. After successful upload, the address can propose a validator candidate
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* ```typescript
|
|
27
|
+
* const builder = new UploadKycBuilder(coinConfig);
|
|
28
|
+
* const call = builder
|
|
29
|
+
* .ipfsHash('QmRealIPFSHash...')
|
|
30
|
+
* .build();
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
export declare class UploadKycBuilder {
|
|
34
|
+
private _ipfsHash?;
|
|
35
|
+
private _contractAddress?;
|
|
36
|
+
private readonly _coinConfig;
|
|
37
|
+
constructor(coinConfig: Readonly<CoinConfig>);
|
|
38
|
+
/**
|
|
39
|
+
* Set the IPFS hash of the uploaded KYC document
|
|
40
|
+
*
|
|
41
|
+
* @param {string} hash - The IPFS hash (e.g., "QmRealIPFSHash...")
|
|
42
|
+
* @returns {UploadKycBuilder} this builder instance
|
|
43
|
+
* @throws {InvalidParameterValueError} if the hash is invalid
|
|
44
|
+
*/
|
|
45
|
+
ipfsHash(hash: string): this;
|
|
46
|
+
/**
|
|
47
|
+
* Set a custom validator contract address
|
|
48
|
+
* If not set, the default address for the network will be used
|
|
49
|
+
*
|
|
50
|
+
* @param {string} address - The validator contract address
|
|
51
|
+
* @returns {UploadKycBuilder} this builder instance
|
|
52
|
+
* @throws {InvalidParameterValueError} if the address is invalid
|
|
53
|
+
*/
|
|
54
|
+
contractAddress(address: string): this;
|
|
55
|
+
/**
|
|
56
|
+
* Build the uploadKYC contract call
|
|
57
|
+
*
|
|
58
|
+
* @returns {UploadKycCall} the constructed contract call
|
|
59
|
+
* @throws {BuildTransactionError} if required fields are missing
|
|
60
|
+
*/
|
|
61
|
+
build(): UploadKycCall;
|
|
62
|
+
/**
|
|
63
|
+
* Validate that all mandatory fields are set
|
|
64
|
+
* @private
|
|
65
|
+
*/
|
|
66
|
+
private validateMandatoryFields;
|
|
67
|
+
/**
|
|
68
|
+
* Get the default validator contract address for the current network
|
|
69
|
+
* @private
|
|
70
|
+
*/
|
|
71
|
+
private getDefaultContractAddress;
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=uploadKycBuilder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uploadKycBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/uploadKycBuilder.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAE7D,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAGxD;;;GAGG;AACH,qBAAa,aAAc,SAAQ,YAAY;IAC7C,SAAgB,eAAe,EAAE,MAAM,CAAC;IACxC,SAAgB,QAAQ,EAAE,MAAM,CAAC;gBAErB,eAAe,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;CAMtD;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,SAAS,CAAC,CAAS;IAC3B,OAAO,CAAC,gBAAgB,CAAC,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAuB;gBAEvC,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI5C;;;;;;OAMG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAgB5B;;;;;;;OAOG;IACH,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IActC;;;;;OAKG;IACH,KAAK,IAAI,aAAa;IAOtB;;;OAGG;IACH,OAAO,CAAC,uBAAuB;IAM/B;;;OAGG;IACH,OAAO,CAAC,yBAAyB;CAIlC"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.UploadKycBuilder = exports.UploadKycCall = void 0;
|
|
4
|
+
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
5
|
+
const abstract_eth_1 = require("@bitgo-beta/abstract-eth");
|
|
6
|
+
const validatorContract_1 = require("./validatorContract");
|
|
7
|
+
/**
|
|
8
|
+
* Represents an XDC uploadKYC contract call
|
|
9
|
+
* This is used to submit KYC document hashes (IPFS hashes) to the XDC Validator contract
|
|
10
|
+
*/
|
|
11
|
+
class UploadKycCall extends abstract_eth_1.ContractCall {
|
|
12
|
+
constructor(contractAddress, ipfsHash) {
|
|
13
|
+
// uploadKYC(string) - takes a single string parameter (the IPFS hash)
|
|
14
|
+
super(validatorContract_1.UPLOAD_KYC_METHOD_ID, ['string'], [ipfsHash]);
|
|
15
|
+
this.contractAddress = contractAddress;
|
|
16
|
+
this.ipfsHash = ipfsHash;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
exports.UploadKycCall = UploadKycCall;
|
|
20
|
+
/**
|
|
21
|
+
* Builder for XDC uploadKYC transactions
|
|
22
|
+
*
|
|
23
|
+
* This builder creates transactions that upload KYC document hashes to the XDC Validator contract.
|
|
24
|
+
* The flow is:
|
|
25
|
+
* 1. Upload KYC document to IPFS → get IPFS hash (e.g., "Qm...")
|
|
26
|
+
* 2. Use this builder to create a transaction that submits the hash to the validator contract
|
|
27
|
+
* 3. The transaction is signed using TSS/MPC
|
|
28
|
+
* 4. After successful upload, the address can propose a validator candidate
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* ```typescript
|
|
32
|
+
* const builder = new UploadKycBuilder(coinConfig);
|
|
33
|
+
* const call = builder
|
|
34
|
+
* .ipfsHash('QmRealIPFSHash...')
|
|
35
|
+
* .build();
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
class UploadKycBuilder {
|
|
39
|
+
constructor(coinConfig) {
|
|
40
|
+
this._coinConfig = coinConfig;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Set the IPFS hash of the uploaded KYC document
|
|
44
|
+
*
|
|
45
|
+
* @param {string} hash - The IPFS hash (e.g., "QmRealIPFSHash...")
|
|
46
|
+
* @returns {UploadKycBuilder} this builder instance
|
|
47
|
+
* @throws {InvalidParameterValueError} if the hash is invalid
|
|
48
|
+
*/
|
|
49
|
+
ipfsHash(hash) {
|
|
50
|
+
if (!hash || hash.trim().length === 0) {
|
|
51
|
+
throw new sdk_core_1.InvalidParameterValueError('IPFS hash cannot be empty');
|
|
52
|
+
}
|
|
53
|
+
// Basic IPFS hash validation (should start with 'Qm' for v0 or 'b' for v1)
|
|
54
|
+
if (!hash.startsWith('Qm') && !hash.startsWith('b')) {
|
|
55
|
+
throw new sdk_core_1.InvalidParameterValueError('Invalid IPFS hash format. Expected hash starting with "Qm" (v0) or "b" (v1)');
|
|
56
|
+
}
|
|
57
|
+
this._ipfsHash = hash;
|
|
58
|
+
return this;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Set a custom validator contract address
|
|
62
|
+
* If not set, the default address for the network will be used
|
|
63
|
+
*
|
|
64
|
+
* @param {string} address - The validator contract address
|
|
65
|
+
* @returns {UploadKycBuilder} this builder instance
|
|
66
|
+
* @throws {InvalidParameterValueError} if the address is invalid
|
|
67
|
+
*/
|
|
68
|
+
contractAddress(address) {
|
|
69
|
+
if (!address || address.trim().length === 0) {
|
|
70
|
+
throw new sdk_core_1.InvalidParameterValueError('Contract address cannot be empty');
|
|
71
|
+
}
|
|
72
|
+
// Basic Ethereum address validation
|
|
73
|
+
if (!/^(0x)?[0-9a-fA-F]{40}$/.test(address)) {
|
|
74
|
+
throw new sdk_core_1.InvalidParameterValueError('Invalid contract address format');
|
|
75
|
+
}
|
|
76
|
+
this._contractAddress = address.toLowerCase().startsWith('0x') ? address : `0x${address}`;
|
|
77
|
+
return this;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Build the uploadKYC contract call
|
|
81
|
+
*
|
|
82
|
+
* @returns {UploadKycCall} the constructed contract call
|
|
83
|
+
* @throws {BuildTransactionError} if required fields are missing
|
|
84
|
+
*/
|
|
85
|
+
build() {
|
|
86
|
+
this.validateMandatoryFields();
|
|
87
|
+
const contractAddress = this._contractAddress || this.getDefaultContractAddress();
|
|
88
|
+
const ipfsHash = this._ipfsHash; // validated by validateMandatoryFields
|
|
89
|
+
return new UploadKycCall(contractAddress, ipfsHash);
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Validate that all mandatory fields are set
|
|
93
|
+
* @private
|
|
94
|
+
*/
|
|
95
|
+
validateMandatoryFields() {
|
|
96
|
+
if (!this._ipfsHash) {
|
|
97
|
+
throw new sdk_core_1.BuildTransactionError('Missing IPFS hash for uploadKYC transaction');
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Get the default validator contract address for the current network
|
|
102
|
+
* @private
|
|
103
|
+
*/
|
|
104
|
+
getDefaultContractAddress() {
|
|
105
|
+
const isTestnet = this._coinConfig.name === 'txdc';
|
|
106
|
+
return (0, validatorContract_1.getValidatorContractAddress)(isTestnet);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
exports.UploadKycBuilder = UploadKycBuilder;
|
|
110
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkS3ljQnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdXBsb2FkS3ljQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFJQSxtREFBeUY7QUFDekYsMkRBQXdEO0FBQ3hELDJEQUF3RjtBQUV4Rjs7O0dBR0c7QUFDSCxNQUFhLGFBQWMsU0FBUSwyQkFBWTtJQUk3QyxZQUFZLGVBQXVCLEVBQUUsUUFBZ0I7UUFDbkQsc0VBQXNFO1FBQ3RFLEtBQUssQ0FBQyx3Q0FBb0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsZUFBZSxHQUFHLGVBQWUsQ0FBQztRQUN2QyxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUMzQixDQUFDO0NBQ0Y7QUFWRCxzQ0FVQztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7OztHQWlCRztBQUNILE1BQWEsZ0JBQWdCO0lBSzNCLFlBQVksVUFBZ0M7UUFDMUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUM7SUFDaEMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILFFBQVEsQ0FBQyxJQUFZO1FBQ25CLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN0QyxNQUFNLElBQUkscUNBQTBCLENBQUMsMkJBQTJCLENBQUMsQ0FBQztRQUNwRSxDQUFDO1FBRUQsMkVBQTJFO1FBQzNFLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3BELE1BQU0sSUFBSSxxQ0FBMEIsQ0FDbEMsNkVBQTZFLENBQzlFLENBQUM7UUFDSixDQUFDO1FBRUQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDdEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILGVBQWUsQ0FBQyxPQUFlO1FBQzdCLElBQUksQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUM1QyxNQUFNLElBQUkscUNBQTBCLENBQUMsa0NBQWtDLENBQUMsQ0FBQztRQUMzRSxDQUFDO1FBRUQsb0NBQW9DO1FBQ3BDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUM1QyxNQUFNLElBQUkscUNBQTBCLENBQUMsaUNBQWlDLENBQUMsQ0FBQztRQUMxRSxDQUFDO1FBRUQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxPQUFPLEVBQUUsQ0FBQztRQUMxRixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILEtBQUs7UUFDSCxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztRQUMvQixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLElBQUksSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7UUFDbEYsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQW1CLENBQUMsQ0FBQyx1Q0FBdUM7UUFDbEYsT0FBTyxJQUFJLGFBQWEsQ0FBQyxlQUFlLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVEOzs7T0FHRztJQUNLLHVCQUF1QjtRQUM3QixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3BCLE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQyw2Q0FBNkMsQ0FBQyxDQUFDO1FBQ2pGLENBQUM7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0sseUJBQXlCO1FBQy9CLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FBQztRQUNuRCxPQUFPLElBQUEsK0NBQTJCLEVBQUMsU0FBUyxDQUFDLENBQUM7SUFDaEQsQ0FBQztDQUNGO0FBckZELDRDQXFGQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHByZXR0aWVyXG4gKi9cbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7IEJ1aWxkVHJhbnNhY3Rpb25FcnJvciwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBDb250cmFjdENhbGwgfSBmcm9tICdAYml0Z28tYmV0YS9hYnN0cmFjdC1ldGgnO1xuaW1wb3J0IHsgVVBMT0FEX0tZQ19NRVRIT0RfSUQsIGdldFZhbGlkYXRvckNvbnRyYWN0QWRkcmVzcyB9IGZyb20gJy4vdmFsaWRhdG9yQ29udHJhY3QnO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYW4gWERDIHVwbG9hZEtZQyBjb250cmFjdCBjYWxsXG4gKiBUaGlzIGlzIHVzZWQgdG8gc3VibWl0IEtZQyBkb2N1bWVudCBoYXNoZXMgKElQRlMgaGFzaGVzKSB0byB0aGUgWERDIFZhbGlkYXRvciBjb250cmFjdFxuICovXG5leHBvcnQgY2xhc3MgVXBsb2FkS3ljQ2FsbCBleHRlbmRzIENvbnRyYWN0Q2FsbCB7XG4gIHB1YmxpYyByZWFkb25seSBjb250cmFjdEFkZHJlc3M6IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IGlwZnNIYXNoOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoY29udHJhY3RBZGRyZXNzOiBzdHJpbmcsIGlwZnNIYXNoOiBzdHJpbmcpIHtcbiAgICAvLyB1cGxvYWRLWUMoc3RyaW5nKSAtIHRha2VzIGEgc2luZ2xlIHN0cmluZyBwYXJhbWV0ZXIgKHRoZSBJUEZTIGhhc2gpXG4gICAgc3VwZXIoVVBMT0FEX0tZQ19NRVRIT0RfSUQsIFsnc3RyaW5nJ10sIFtpcGZzSGFzaF0pO1xuICAgIHRoaXMuY29udHJhY3RBZGRyZXNzID0gY29udHJhY3RBZGRyZXNzO1xuICAgIHRoaXMuaXBmc0hhc2ggPSBpcGZzSGFzaDtcbiAgfVxufVxuXG4vKipcbiAqIEJ1aWxkZXIgZm9yIFhEQyB1cGxvYWRLWUMgdHJhbnNhY3Rpb25zXG4gKlxuICogVGhpcyBidWlsZGVyIGNyZWF0ZXMgdHJhbnNhY3Rpb25zIHRoYXQgdXBsb2FkIEtZQyBkb2N1bWVudCBoYXNoZXMgdG8gdGhlIFhEQyBWYWxpZGF0b3IgY29udHJhY3QuXG4gKiBUaGUgZmxvdyBpczpcbiAqIDEuIFVwbG9hZCBLWUMgZG9jdW1lbnQgdG8gSVBGUyDihpIgZ2V0IElQRlMgaGFzaCAoZS5nLiwgXCJRbS4uLlwiKVxuICogMi4gVXNlIHRoaXMgYnVpbGRlciB0byBjcmVhdGUgYSB0cmFuc2FjdGlvbiB0aGF0IHN1Ym1pdHMgdGhlIGhhc2ggdG8gdGhlIHZhbGlkYXRvciBjb250cmFjdFxuICogMy4gVGhlIHRyYW5zYWN0aW9uIGlzIHNpZ25lZCB1c2luZyBUU1MvTVBDXG4gKiA0LiBBZnRlciBzdWNjZXNzZnVsIHVwbG9hZCwgdGhlIGFkZHJlc3MgY2FuIHByb3Bvc2UgYSB2YWxpZGF0b3IgY2FuZGlkYXRlXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGJ1aWxkZXIgPSBuZXcgVXBsb2FkS3ljQnVpbGRlcihjb2luQ29uZmlnKTtcbiAqIGNvbnN0IGNhbGwgPSBidWlsZGVyXG4gKiAgIC5pcGZzSGFzaCgnUW1SZWFsSVBGU0hhc2guLi4nKVxuICogICAuYnVpbGQoKTtcbiAqIGBgYFxuICovXG5leHBvcnQgY2xhc3MgVXBsb2FkS3ljQnVpbGRlciB7XG4gIHByaXZhdGUgX2lwZnNIYXNoPzogc3RyaW5nO1xuICBwcml2YXRlIF9jb250cmFjdEFkZHJlc3M/OiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+O1xuXG4gIGNvbnN0cnVjdG9yKGNvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgdGhpcy5fY29pbkNvbmZpZyA9IGNvaW5Db25maWc7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBJUEZTIGhhc2ggb2YgdGhlIHVwbG9hZGVkIEtZQyBkb2N1bWVudFxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gaGFzaCAtIFRoZSBJUEZTIGhhc2ggKGUuZy4sIFwiUW1SZWFsSVBGU0hhc2guLi5cIilcbiAgICogQHJldHVybnMge1VwbG9hZEt5Y0J1aWxkZXJ9IHRoaXMgYnVpbGRlciBpbnN0YW5jZVxuICAgKiBAdGhyb3dzIHtJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvcn0gaWYgdGhlIGhhc2ggaXMgaW52YWxpZFxuICAgKi9cbiAgaXBmc0hhc2goaGFzaDogc3RyaW5nKTogdGhpcyB7XG4gICAgaWYgKCFoYXNoIHx8IGhhc2gudHJpbSgpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yKCdJUEZTIGhhc2ggY2Fubm90IGJlIGVtcHR5Jyk7XG4gICAgfVxuXG4gICAgLy8gQmFzaWMgSVBGUyBoYXNoIHZhbGlkYXRpb24gKHNob3VsZCBzdGFydCB3aXRoICdRbScgZm9yIHYwIG9yICdiJyBmb3IgdjEpXG4gICAgaWYgKCFoYXNoLnN0YXJ0c1dpdGgoJ1FtJykgJiYgIWhhc2guc3RhcnRzV2l0aCgnYicpKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IoXG4gICAgICAgICdJbnZhbGlkIElQRlMgaGFzaCBmb3JtYXQuIEV4cGVjdGVkIGhhc2ggc3RhcnRpbmcgd2l0aCBcIlFtXCIgKHYwKSBvciBcImJcIiAodjEpJ1xuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLl9pcGZzSGFzaCA9IGhhc2g7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0IGEgY3VzdG9tIHZhbGlkYXRvciBjb250cmFjdCBhZGRyZXNzXG4gICAqIElmIG5vdCBzZXQsIHRoZSBkZWZhdWx0IGFkZHJlc3MgZm9yIHRoZSBuZXR3b3JrIHdpbGwgYmUgdXNlZFxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYWRkcmVzcyAtIFRoZSB2YWxpZGF0b3IgY29udHJhY3QgYWRkcmVzc1xuICAgKiBAcmV0dXJucyB7VXBsb2FkS3ljQnVpbGRlcn0gdGhpcyBidWlsZGVyIGluc3RhbmNlXG4gICAqIEB0aHJvd3Mge0ludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yfSBpZiB0aGUgYWRkcmVzcyBpcyBpbnZhbGlkXG4gICAqL1xuICBjb250cmFjdEFkZHJlc3MoYWRkcmVzczogc3RyaW5nKTogdGhpcyB7XG4gICAgaWYgKCFhZGRyZXNzIHx8IGFkZHJlc3MudHJpbSgpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yKCdDb250cmFjdCBhZGRyZXNzIGNhbm5vdCBiZSBlbXB0eScpO1xuICAgIH1cblxuICAgIC8vIEJhc2ljIEV0aGVyZXVtIGFkZHJlc3MgdmFsaWRhdGlvblxuICAgIGlmICghL14oMHgpP1swLTlhLWZBLUZdezQwfSQvLnRlc3QoYWRkcmVzcykpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvcignSW52YWxpZCBjb250cmFjdCBhZGRyZXNzIGZvcm1hdCcpO1xuICAgIH1cblxuICAgIHRoaXMuX2NvbnRyYWN0QWRkcmVzcyA9IGFkZHJlc3MudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKCcweCcpID8gYWRkcmVzcyA6IGAweCR7YWRkcmVzc31gO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIHRoZSB1cGxvYWRLWUMgY29udHJhY3QgY2FsbFxuICAgKlxuICAgKiBAcmV0dXJucyB7VXBsb2FkS3ljQ2FsbH0gdGhlIGNvbnN0cnVjdGVkIGNvbnRyYWN0IGNhbGxcbiAgICogQHRocm93cyB7QnVpbGRUcmFuc2FjdGlvbkVycm9yfSBpZiByZXF1aXJlZCBmaWVsZHMgYXJlIG1pc3NpbmdcbiAgICovXG4gIGJ1aWxkKCk6IFVwbG9hZEt5Y0NhbGwge1xuICAgIHRoaXMudmFsaWRhdGVNYW5kYXRvcnlGaWVsZHMoKTtcbiAgICBjb25zdCBjb250cmFjdEFkZHJlc3MgPSB0aGlzLl9jb250cmFjdEFkZHJlc3MgfHwgdGhpcy5nZXREZWZhdWx0Q29udHJhY3RBZGRyZXNzKCk7XG4gICAgY29uc3QgaXBmc0hhc2ggPSB0aGlzLl9pcGZzSGFzaCBhcyBzdHJpbmc7IC8vIHZhbGlkYXRlZCBieSB2YWxpZGF0ZU1hbmRhdG9yeUZpZWxkc1xuICAgIHJldHVybiBuZXcgVXBsb2FkS3ljQ2FsbChjb250cmFjdEFkZHJlc3MsIGlwZnNIYXNoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZSB0aGF0IGFsbCBtYW5kYXRvcnkgZmllbGRzIGFyZSBzZXRcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgdmFsaWRhdGVNYW5kYXRvcnlGaWVsZHMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9pcGZzSGFzaCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignTWlzc2luZyBJUEZTIGhhc2ggZm9yIHVwbG9hZEtZQyB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGRlZmF1bHQgdmFsaWRhdG9yIGNvbnRyYWN0IGFkZHJlc3MgZm9yIHRoZSBjdXJyZW50IG5ldHdvcmtcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgZ2V0RGVmYXVsdENvbnRyYWN0QWRkcmVzcygpOiBzdHJpbmcge1xuICAgIGNvbnN0IGlzVGVzdG5ldCA9IHRoaXMuX2NvaW5Db25maWcubmFtZSA9PT0gJ3R4ZGMnO1xuICAgIHJldHVybiBnZXRWYWxpZGF0b3JDb250cmFjdEFkZHJlc3MoaXNUZXN0bmV0KTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* XDC Validator Contract Constants and ABI
|
|
3
|
+
*
|
|
4
|
+
* This file contains the contract address and ABI for the XDC Validator contract
|
|
5
|
+
* which handles KYC uploads and validator staking operations.
|
|
6
|
+
*
|
|
7
|
+
* Contract Address: 0x0000000000000000000000000000000000000088 (System Contract)
|
|
8
|
+
* Source: XDC Network Validator Contract
|
|
9
|
+
* Reference: https://github.com/XinFinOrg/XDPoSChain
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* XDC Validator Contract Address (Testnet)
|
|
13
|
+
* This is the deployed contract address on XDC Apothem testnet (chainId: 51)
|
|
14
|
+
*/
|
|
15
|
+
export declare const XDC_VALIDATOR_CONTRACT_ADDRESS_TESTNET = "0x0000000000000000000000000000000000000088";
|
|
16
|
+
/**
|
|
17
|
+
* XDC Validator Contract Address (Mainnet)
|
|
18
|
+
* This is the deployed contract address on XDC mainnet (chainId: 50)
|
|
19
|
+
*/
|
|
20
|
+
export declare const XDC_VALIDATOR_CONTRACT_ADDRESS_MAINNET = "0x0000000000000000000000000000000000000088";
|
|
21
|
+
/**
|
|
22
|
+
* uploadKYC method ID
|
|
23
|
+
* keccak256("uploadKYC(string)") = 0xf5c95125
|
|
24
|
+
*/
|
|
25
|
+
export declare const UPLOAD_KYC_METHOD_ID = "0xf5c95125";
|
|
26
|
+
/**
|
|
27
|
+
* propose method ID
|
|
28
|
+
* keccak256("propose(address)") = 0x01267951
|
|
29
|
+
*/
|
|
30
|
+
export declare const PROPOSE_METHOD_ID = "0x01267951";
|
|
31
|
+
/**
|
|
32
|
+
* Full XDC Validator Contract ABI
|
|
33
|
+
* Imported from JSON file for easy use with Web3/XDC3
|
|
34
|
+
*/
|
|
35
|
+
export declare const XDC_VALIDATOR_ABI: ({
|
|
36
|
+
constant: boolean;
|
|
37
|
+
inputs: {
|
|
38
|
+
name: string;
|
|
39
|
+
type: string;
|
|
40
|
+
}[];
|
|
41
|
+
name: string;
|
|
42
|
+
outputs: {
|
|
43
|
+
name: string;
|
|
44
|
+
type: string;
|
|
45
|
+
}[];
|
|
46
|
+
payable: boolean;
|
|
47
|
+
stateMutability: string;
|
|
48
|
+
type: string;
|
|
49
|
+
anonymous?: undefined;
|
|
50
|
+
} | {
|
|
51
|
+
anonymous: boolean;
|
|
52
|
+
inputs: {
|
|
53
|
+
indexed: boolean;
|
|
54
|
+
name: string;
|
|
55
|
+
type: string;
|
|
56
|
+
}[];
|
|
57
|
+
name: string;
|
|
58
|
+
type: string;
|
|
59
|
+
constant?: undefined;
|
|
60
|
+
outputs?: undefined;
|
|
61
|
+
payable?: undefined;
|
|
62
|
+
stateMutability?: undefined;
|
|
63
|
+
})[];
|
|
64
|
+
/**
|
|
65
|
+
* Get the uploadKYC function ABI
|
|
66
|
+
* Useful for encoding function calls
|
|
67
|
+
*/
|
|
68
|
+
export declare const UPLOAD_KYC_ABI: {
|
|
69
|
+
constant: boolean;
|
|
70
|
+
inputs: {
|
|
71
|
+
name: string;
|
|
72
|
+
type: string;
|
|
73
|
+
}[];
|
|
74
|
+
name: string;
|
|
75
|
+
outputs: {
|
|
76
|
+
name: string;
|
|
77
|
+
type: string;
|
|
78
|
+
}[];
|
|
79
|
+
payable: boolean;
|
|
80
|
+
stateMutability: string;
|
|
81
|
+
type: string;
|
|
82
|
+
anonymous?: undefined;
|
|
83
|
+
} | {
|
|
84
|
+
anonymous: boolean;
|
|
85
|
+
inputs: {
|
|
86
|
+
indexed: boolean;
|
|
87
|
+
name: string;
|
|
88
|
+
type: string;
|
|
89
|
+
}[];
|
|
90
|
+
name: string;
|
|
91
|
+
type: string;
|
|
92
|
+
constant?: undefined;
|
|
93
|
+
outputs?: undefined;
|
|
94
|
+
payable?: undefined;
|
|
95
|
+
stateMutability?: undefined;
|
|
96
|
+
} | undefined;
|
|
97
|
+
/**
|
|
98
|
+
* Get the propose function ABI
|
|
99
|
+
* Useful for encoding function calls
|
|
100
|
+
*/
|
|
101
|
+
export declare const PROPOSE_ABI: {
|
|
102
|
+
constant: boolean;
|
|
103
|
+
inputs: {
|
|
104
|
+
name: string;
|
|
105
|
+
type: string;
|
|
106
|
+
}[];
|
|
107
|
+
name: string;
|
|
108
|
+
outputs: {
|
|
109
|
+
name: string;
|
|
110
|
+
type: string;
|
|
111
|
+
}[];
|
|
112
|
+
payable: boolean;
|
|
113
|
+
stateMutability: string;
|
|
114
|
+
type: string;
|
|
115
|
+
anonymous?: undefined;
|
|
116
|
+
} | {
|
|
117
|
+
anonymous: boolean;
|
|
118
|
+
inputs: {
|
|
119
|
+
indexed: boolean;
|
|
120
|
+
name: string;
|
|
121
|
+
type: string;
|
|
122
|
+
}[];
|
|
123
|
+
name: string;
|
|
124
|
+
type: string;
|
|
125
|
+
constant?: undefined;
|
|
126
|
+
outputs?: undefined;
|
|
127
|
+
payable?: undefined;
|
|
128
|
+
stateMutability?: undefined;
|
|
129
|
+
} | undefined;
|
|
130
|
+
/**
|
|
131
|
+
* Get the validator contract address for the given network
|
|
132
|
+
* @param isTestnet - whether to use testnet or mainnet
|
|
133
|
+
* @returns the validator contract address
|
|
134
|
+
*/
|
|
135
|
+
export declare function getValidatorContractAddress(isTestnet: boolean): string;
|
|
136
|
+
//# sourceMappingURL=validatorContract.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validatorContract.d.ts","sourceRoot":"","sources":["../../../src/lib/validatorContract.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH;;;GAGG;AACH,eAAO,MAAM,sCAAsC,+CAA+C,CAAC;AAEnG;;;GAGG;AACH,eAAO,MAAM,sCAAsC,+CAA+C,CAAC;AAEnG;;;GAGG;AACH,eAAO,MAAM,oBAAoB,eAAe,CAAC;AAEjD;;;GAGG;AACH,eAAO,MAAM,iBAAiB,eAAe,CAAC;AAE9C;;;GAGG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAAkB,CAAC;AAEjD;;;GAGG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAA4D,CAAC;AAExF;;;GAGG;AACH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAA0D,CAAC;AAEnF;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,SAAS,EAAE,OAAO,GAAG,MAAM,CAEtE"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* XDC Validator Contract Constants and ABI
|
|
4
|
+
*
|
|
5
|
+
* This file contains the contract address and ABI for the XDC Validator contract
|
|
6
|
+
* which handles KYC uploads and validator staking operations.
|
|
7
|
+
*
|
|
8
|
+
* Contract Address: 0x0000000000000000000000000000000000000088 (System Contract)
|
|
9
|
+
* Source: XDC Network Validator Contract
|
|
10
|
+
* Reference: https://github.com/XinFinOrg/XDPoSChain
|
|
11
|
+
*/
|
|
12
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
13
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
14
|
+
};
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
exports.PROPOSE_ABI = exports.UPLOAD_KYC_ABI = exports.XDC_VALIDATOR_ABI = exports.PROPOSE_METHOD_ID = exports.UPLOAD_KYC_METHOD_ID = exports.XDC_VALIDATOR_CONTRACT_ADDRESS_MAINNET = exports.XDC_VALIDATOR_CONTRACT_ADDRESS_TESTNET = void 0;
|
|
17
|
+
exports.getValidatorContractAddress = getValidatorContractAddress;
|
|
18
|
+
const XDCValidatorABI_json_1 = __importDefault(require("./XDCValidatorABI.json"));
|
|
19
|
+
/**
|
|
20
|
+
* XDC Validator Contract Address (Testnet)
|
|
21
|
+
* This is the deployed contract address on XDC Apothem testnet (chainId: 51)
|
|
22
|
+
*/
|
|
23
|
+
exports.XDC_VALIDATOR_CONTRACT_ADDRESS_TESTNET = '0x0000000000000000000000000000000000000088';
|
|
24
|
+
/**
|
|
25
|
+
* XDC Validator Contract Address (Mainnet)
|
|
26
|
+
* This is the deployed contract address on XDC mainnet (chainId: 50)
|
|
27
|
+
*/
|
|
28
|
+
exports.XDC_VALIDATOR_CONTRACT_ADDRESS_MAINNET = '0x0000000000000000000000000000000000000088';
|
|
29
|
+
/**
|
|
30
|
+
* uploadKYC method ID
|
|
31
|
+
* keccak256("uploadKYC(string)") = 0xf5c95125
|
|
32
|
+
*/
|
|
33
|
+
exports.UPLOAD_KYC_METHOD_ID = '0xf5c95125';
|
|
34
|
+
/**
|
|
35
|
+
* propose method ID
|
|
36
|
+
* keccak256("propose(address)") = 0x01267951
|
|
37
|
+
*/
|
|
38
|
+
exports.PROPOSE_METHOD_ID = '0x01267951';
|
|
39
|
+
/**
|
|
40
|
+
* Full XDC Validator Contract ABI
|
|
41
|
+
* Imported from JSON file for easy use with Web3/XDC3
|
|
42
|
+
*/
|
|
43
|
+
exports.XDC_VALIDATOR_ABI = XDCValidatorABI_json_1.default;
|
|
44
|
+
/**
|
|
45
|
+
* Get the uploadKYC function ABI
|
|
46
|
+
* Useful for encoding function calls
|
|
47
|
+
*/
|
|
48
|
+
exports.UPLOAD_KYC_ABI = XDCValidatorABI_json_1.default.find((item) => item.name === 'uploadKYC');
|
|
49
|
+
/**
|
|
50
|
+
* Get the propose function ABI
|
|
51
|
+
* Useful for encoding function calls
|
|
52
|
+
*/
|
|
53
|
+
exports.PROPOSE_ABI = XDCValidatorABI_json_1.default.find((item) => item.name === 'propose');
|
|
54
|
+
/**
|
|
55
|
+
* Get the validator contract address for the given network
|
|
56
|
+
* @param isTestnet - whether to use testnet or mainnet
|
|
57
|
+
* @returns the validator contract address
|
|
58
|
+
*/
|
|
59
|
+
function getValidatorContractAddress(isTestnet) {
|
|
60
|
+
return isTestnet ? exports.XDC_VALIDATOR_CONTRACT_ADDRESS_TESTNET : exports.XDC_VALIDATOR_CONTRACT_ADDRESS_MAINNET;
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9yQ29udHJhY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3ZhbGlkYXRvckNvbnRyYWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7O0dBU0c7Ozs7OztBQW1ESCxrRUFFQztBQW5ERCxrRkFBcUQ7QUFFckQ7OztHQUdHO0FBQ1UsUUFBQSxzQ0FBc0MsR0FBRyw0Q0FBNEMsQ0FBQztBQUVuRzs7O0dBR0c7QUFDVSxRQUFBLHNDQUFzQyxHQUFHLDRDQUE0QyxDQUFDO0FBRW5HOzs7R0FHRztBQUNVLFFBQUEsb0JBQW9CLEdBQUcsWUFBWSxDQUFDO0FBRWpEOzs7R0FHRztBQUNVLFFBQUEsaUJBQWlCLEdBQUcsWUFBWSxDQUFDO0FBRTlDOzs7R0FHRztBQUNVLFFBQUEsaUJBQWlCLEdBQUcsOEJBQWUsQ0FBQztBQUVqRDs7O0dBR0c7QUFDVSxRQUFBLGNBQWMsR0FBRyw4QkFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxXQUFXLENBQUMsQ0FBQztBQUV4Rjs7O0dBR0c7QUFDVSxRQUFBLFdBQVcsR0FBRyw4QkFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxTQUFTLENBQUMsQ0FBQztBQUVuRjs7OztHQUlHO0FBQ0gsU0FBZ0IsMkJBQTJCLENBQUMsU0FBa0I7SUFDNUQsT0FBTyxTQUFTLENBQUMsQ0FBQyxDQUFDLDhDQUFzQyxDQUFDLENBQUMsQ0FBQyw4Q0FBc0MsQ0FBQztBQUNyRyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBYREMgVmFsaWRhdG9yIENvbnRyYWN0IENvbnN0YW50cyBhbmQgQUJJXG4gKlxuICogVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBjb250cmFjdCBhZGRyZXNzIGFuZCBBQkkgZm9yIHRoZSBYREMgVmFsaWRhdG9yIGNvbnRyYWN0XG4gKiB3aGljaCBoYW5kbGVzIEtZQyB1cGxvYWRzIGFuZCB2YWxpZGF0b3Igc3Rha2luZyBvcGVyYXRpb25zLlxuICpcbiAqIENvbnRyYWN0IEFkZHJlc3M6IDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA4OCAoU3lzdGVtIENvbnRyYWN0KVxuICogU291cmNlOiBYREMgTmV0d29yayBWYWxpZGF0b3IgQ29udHJhY3RcbiAqIFJlZmVyZW5jZTogaHR0cHM6Ly9naXRodWIuY29tL1hpbkZpbk9yZy9YRFBvU0NoYWluXG4gKi9cblxuaW1wb3J0IFhEQ1ZhbGlkYXRvckFCSSBmcm9tICcuL1hEQ1ZhbGlkYXRvckFCSS5qc29uJztcblxuLyoqXG4gKiBYREMgVmFsaWRhdG9yIENvbnRyYWN0IEFkZHJlc3MgKFRlc3RuZXQpXG4gKiBUaGlzIGlzIHRoZSBkZXBsb3llZCBjb250cmFjdCBhZGRyZXNzIG9uIFhEQyBBcG90aGVtIHRlc3RuZXQgKGNoYWluSWQ6IDUxKVxuICovXG5leHBvcnQgY29uc3QgWERDX1ZBTElEQVRPUl9DT05UUkFDVF9BRERSRVNTX1RFU1RORVQgPSAnMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDg4JztcblxuLyoqXG4gKiBYREMgVmFsaWRhdG9yIENvbnRyYWN0IEFkZHJlc3MgKE1haW5uZXQpXG4gKiBUaGlzIGlzIHRoZSBkZXBsb3llZCBjb250cmFjdCBhZGRyZXNzIG9uIFhEQyBtYWlubmV0IChjaGFpbklkOiA1MClcbiAqL1xuZXhwb3J0IGNvbnN0IFhEQ19WQUxJREFUT1JfQ09OVFJBQ1RfQUREUkVTU19NQUlOTkVUID0gJzB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA4OCc7XG5cbi8qKlxuICogdXBsb2FkS1lDIG1ldGhvZCBJRFxuICoga2VjY2FrMjU2KFwidXBsb2FkS1lDKHN0cmluZylcIikgPSAweGY1Yzk1MTI1XG4gKi9cbmV4cG9ydCBjb25zdCBVUExPQURfS1lDX01FVEhPRF9JRCA9ICcweGY1Yzk1MTI1JztcblxuLyoqXG4gKiBwcm9wb3NlIG1ldGhvZCBJRFxuICoga2VjY2FrMjU2KFwicHJvcG9zZShhZGRyZXNzKVwiKSA9IDB4MDEyNjc5NTFcbiAqL1xuZXhwb3J0IGNvbnN0IFBST1BPU0VfTUVUSE9EX0lEID0gJzB4MDEyNjc5NTEnO1xuXG4vKipcbiAqIEZ1bGwgWERDIFZhbGlkYXRvciBDb250cmFjdCBBQklcbiAqIEltcG9ydGVkIGZyb20gSlNPTiBmaWxlIGZvciBlYXN5IHVzZSB3aXRoIFdlYjMvWERDM1xuICovXG5leHBvcnQgY29uc3QgWERDX1ZBTElEQVRPUl9BQkkgPSBYRENWYWxpZGF0b3JBQkk7XG5cbi8qKlxuICogR2V0IHRoZSB1cGxvYWRLWUMgZnVuY3Rpb24gQUJJXG4gKiBVc2VmdWwgZm9yIGVuY29kaW5nIGZ1bmN0aW9uIGNhbGxzXG4gKi9cbmV4cG9ydCBjb25zdCBVUExPQURfS1lDX0FCSSA9IFhEQ1ZhbGlkYXRvckFCSS5maW5kKChpdGVtKSA9PiBpdGVtLm5hbWUgPT09ICd1cGxvYWRLWUMnKTtcblxuLyoqXG4gKiBHZXQgdGhlIHByb3Bvc2UgZnVuY3Rpb24gQUJJXG4gKiBVc2VmdWwgZm9yIGVuY29kaW5nIGZ1bmN0aW9uIGNhbGxzXG4gKi9cbmV4cG9ydCBjb25zdCBQUk9QT1NFX0FCSSA9IFhEQ1ZhbGlkYXRvckFCSS5maW5kKChpdGVtKSA9PiBpdGVtLm5hbWUgPT09ICdwcm9wb3NlJyk7XG5cbi8qKlxuICogR2V0IHRoZSB2YWxpZGF0b3IgY29udHJhY3QgYWRkcmVzcyBmb3IgdGhlIGdpdmVuIG5ldHdvcmtcbiAqIEBwYXJhbSBpc1Rlc3RuZXQgLSB3aGV0aGVyIHRvIHVzZSB0ZXN0bmV0IG9yIG1haW5uZXRcbiAqIEByZXR1cm5zIHRoZSB2YWxpZGF0b3IgY29udHJhY3QgYWRkcmVzc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VmFsaWRhdG9yQ29udHJhY3RBZGRyZXNzKGlzVGVzdG5ldDogYm9vbGVhbik6IHN0cmluZyB7XG4gIHJldHVybiBpc1Rlc3RuZXQgPyBYRENfVkFMSURBVE9SX0NPTlRSQUNUX0FERFJFU1NfVEVTVE5FVCA6IFhEQ19WQUxJREFUT1JfQ09OVFJBQ1RfQUREUkVTU19NQUlOTkVUO1xufVxuIl19
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../src/register.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../src/register.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAKjD,eAAO,MAAM,QAAQ,QAAS,SAAS,KAAG,IAMzC,CAAC"}
|
package/dist/src/register.js
CHANGED
|
@@ -3,9 +3,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.register = void 0;
|
|
4
4
|
const xdc_1 = require("./xdc");
|
|
5
5
|
const txdc_1 = require("./txdc");
|
|
6
|
+
const xdcToken_1 = require("./xdcToken");
|
|
6
7
|
const register = (sdk) => {
|
|
7
8
|
sdk.register('xdc', xdc_1.Xdc.createInstance);
|
|
8
9
|
sdk.register('txdc', txdc_1.Txdc.createInstance);
|
|
10
|
+
xdcToken_1.XdcToken.createTokenConstructors().forEach(({ name, coinConstructor }) => {
|
|
11
|
+
sdk.register(name, coinConstructor);
|
|
12
|
+
});
|
|
9
13
|
};
|
|
10
14
|
exports.register = register;
|
|
11
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcmVnaXN0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsK0JBQTRCO0FBQzVCLGlDQUE4QjtBQUM5Qix5Q0FBc0M7QUFFL0IsTUFBTSxRQUFRLEdBQUcsQ0FBQyxHQUFjLEVBQVEsRUFBRTtJQUMvQyxHQUFHLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxTQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDeEMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsV0FBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQzFDLG1CQUFRLENBQUMsdUJBQXVCLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsRUFBRSxFQUFFO1FBQ3ZFLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLGVBQWUsQ0FBQyxDQUFDO0lBQ3RDLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBTlcsUUFBQSxRQUFRLFlBTW5CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQml0R29CYXNlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgWGRjIH0gZnJvbSAnLi94ZGMnO1xuaW1wb3J0IHsgVHhkYyB9IGZyb20gJy4vdHhkYyc7XG5pbXBvcnQgeyBYZGNUb2tlbiB9IGZyb20gJy4veGRjVG9rZW4nO1xuXG5leHBvcnQgY29uc3QgcmVnaXN0ZXIgPSAoc2RrOiBCaXRHb0Jhc2UpOiB2b2lkID0+IHtcbiAgc2RrLnJlZ2lzdGVyKCd4ZGMnLCBYZGMuY3JlYXRlSW5zdGFuY2UpO1xuICBzZGsucmVnaXN0ZXIoJ3R4ZGMnLCBUeGRjLmNyZWF0ZUluc3RhbmNlKTtcbiAgWGRjVG9rZW4uY3JlYXRlVG9rZW5Db25zdHJ1Y3RvcnMoKS5mb3JFYWNoKCh7IG5hbWUsIGNvaW5Db25zdHJ1Y3RvciB9KSA9PiB7XG4gICAgc2RrLnJlZ2lzdGVyKG5hbWUsIGNvaW5Db25zdHJ1Y3Rvcik7XG4gIH0pO1xufTtcbiJdfQ==
|
package/dist/src/xdc.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { BaseCoin, BitGoBase, MPCAlgorithm } from '@bitgo-beta/sdk-core';
|
|
1
|
+
import { BaseCoin, BitGoBase, MPCAlgorithm, MultisigType } from '@bitgo-beta/sdk-core';
|
|
2
2
|
import { BaseCoin as StaticsBaseCoin } from '@bitgo-beta/statics';
|
|
3
|
-
import { AbstractEthLikeNewCoins } from '@bitgo-beta/abstract-eth';
|
|
3
|
+
import { AbstractEthLikeNewCoins, UnsignedSweepTxMPCv2, RecoverOptions, OfflineVaultTxInfo, VerifyEthTransactionOptions } from '@bitgo-beta/abstract-eth';
|
|
4
4
|
import { TransactionBuilder } from './lib';
|
|
5
5
|
export declare class Xdc extends AbstractEthLikeNewCoins {
|
|
6
6
|
protected constructor(bitgo: BitGoBase, staticsCoin?: Readonly<StaticsBaseCoin>);
|
|
@@ -8,8 +8,21 @@ export declare class Xdc extends AbstractEthLikeNewCoins {
|
|
|
8
8
|
protected getTransactionBuilder(): TransactionBuilder;
|
|
9
9
|
/** @inheritDoc */
|
|
10
10
|
supportsTss(): boolean;
|
|
11
|
+
/** inherited doc */
|
|
12
|
+
getDefaultMultisigType(): MultisigType;
|
|
11
13
|
/** @inheritDoc */
|
|
12
14
|
getMPCAlgorithm(): MPCAlgorithm;
|
|
15
|
+
protected buildUnsignedSweepTxnTSS(params: RecoverOptions): Promise<OfflineVaultTxInfo | UnsignedSweepTxMPCv2>;
|
|
13
16
|
recoveryBlockchainExplorerQuery(query: Record<string, string>): Promise<Record<string, unknown>>;
|
|
17
|
+
/**
|
|
18
|
+
* Verify if a tss transaction is valid
|
|
19
|
+
*
|
|
20
|
+
* @param {VerifyEthTransactionOptions} params
|
|
21
|
+
* @param {TransactionParams} params.txParams - params object passed to send
|
|
22
|
+
* @param {TransactionPrebuild} params.txPrebuild - prebuild object returned by server
|
|
23
|
+
* @param {Wallet} params.wallet - Wallet object to obtain keys to verify against
|
|
24
|
+
* @returns {boolean}
|
|
25
|
+
*/
|
|
26
|
+
verifyTssTransaction(params: VerifyEthTransactionOptions): Promise<boolean>;
|
|
14
27
|
}
|
|
15
28
|
//# sourceMappingURL=xdc.d.ts.map
|
package/dist/src/xdc.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xdc.d.ts","sourceRoot":"","sources":["../../src/xdc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAU,YAAY,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"xdc.d.ts","sourceRoot":"","sources":["../../src/xdc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAU,YAAY,EAAE,YAAY,EAAiB,MAAM,sBAAsB,CAAC;AAC9G,OAAO,EAAE,QAAQ,IAAI,eAAe,EAAS,MAAM,qBAAqB,CAAC;AACzE,OAAO,EACL,uBAAuB,EAEvB,oBAAoB,EACpB,cAAc,EACd,kBAAkB,EAClB,2BAA2B,EAC5B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,kBAAkB,EAAE,MAAM,OAAO,CAAC;AAE3C,qBAAa,GAAI,SAAQ,uBAAuB;IAC9C,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,kBAAkB;IAIrD,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;IAI9G,+BAA+B,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAKtG;;;;;;;;OAQG;IACG,oBAAoB,CAAC,MAAM,EAAE,2BAA2B,GAAG,OAAO,CAAC,OAAO,CAAC;CAoBlF"}
|
package/dist/src/xdc.js
CHANGED
|
@@ -19,15 +19,46 @@ class Xdc extends abstract_eth_1.AbstractEthLikeNewCoins {
|
|
|
19
19
|
supportsTss() {
|
|
20
20
|
return true;
|
|
21
21
|
}
|
|
22
|
+
/** inherited doc */
|
|
23
|
+
getDefaultMultisigType() {
|
|
24
|
+
return sdk_core_1.multisigTypes.tss;
|
|
25
|
+
}
|
|
22
26
|
/** @inheritDoc */
|
|
23
27
|
getMPCAlgorithm() {
|
|
24
28
|
return 'ecdsa';
|
|
25
29
|
}
|
|
30
|
+
async buildUnsignedSweepTxnTSS(params) {
|
|
31
|
+
return this.buildUnsignedSweepTxnMPCv2(params);
|
|
32
|
+
}
|
|
26
33
|
async recoveryBlockchainExplorerQuery(query) {
|
|
27
34
|
const apiToken = sdk_core_1.common.Environments[this.bitgo.getEnv()].xdcExplorerApiToken;
|
|
28
35
|
const explorerUrl = sdk_core_1.common.Environments[this.bitgo.getEnv()].xdcExplorerBaseUrl;
|
|
29
36
|
return await (0, abstract_eth_1.recoveryBlockchainExplorerQuery)(query, explorerUrl, apiToken);
|
|
30
37
|
}
|
|
38
|
+
/**
|
|
39
|
+
* Verify if a tss transaction is valid
|
|
40
|
+
*
|
|
41
|
+
* @param {VerifyEthTransactionOptions} params
|
|
42
|
+
* @param {TransactionParams} params.txParams - params object passed to send
|
|
43
|
+
* @param {TransactionPrebuild} params.txPrebuild - prebuild object returned by server
|
|
44
|
+
* @param {Wallet} params.wallet - Wallet object to obtain keys to verify against
|
|
45
|
+
* @returns {boolean}
|
|
46
|
+
*/
|
|
47
|
+
async verifyTssTransaction(params) {
|
|
48
|
+
const { txParams, txPrebuild, wallet } = params;
|
|
49
|
+
if (!txParams?.recipients &&
|
|
50
|
+
!(txParams.prebuildTx?.consolidateId ||
|
|
51
|
+
(txParams.type && ['acceleration', 'fillNonce', 'transferToken'].includes(txParams.type)))) {
|
|
52
|
+
throw new Error(`missing txParams`);
|
|
53
|
+
}
|
|
54
|
+
if (!wallet || !txPrebuild) {
|
|
55
|
+
throw new Error(`missing params`);
|
|
56
|
+
}
|
|
57
|
+
if (txParams.hop && txParams.recipients && txParams.recipients.length > 1) {
|
|
58
|
+
throw new Error(`tx cannot be both a batch and hop transaction`);
|
|
59
|
+
}
|
|
60
|
+
return true;
|
|
61
|
+
}
|
|
31
62
|
}
|
|
32
63
|
exports.Xdc = Xdc;
|
|
33
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
64
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieGRjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3hkYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtREFBOEc7QUFDOUcsaURBQXlFO0FBQ3pFLDJEQU9rQztBQUNsQywrQkFBMkM7QUFFM0MsTUFBYSxHQUFJLFNBQVEsc0NBQXVCO0lBQzlDLFlBQXNCLEtBQWdCLEVBQUUsV0FBdUM7UUFDN0UsS0FBSyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFnQixFQUFFLFdBQXVDO1FBQzdFLE9BQU8sSUFBSSxHQUFHLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFUyxxQkFBcUI7UUFDN0IsT0FBTyxJQUFJLHdCQUFrQixDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxvQkFBb0I7SUFDcEIsc0JBQXNCO1FBQ3BCLE9BQU8sd0JBQWEsQ0FBQyxHQUFHLENBQUM7SUFDM0IsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixlQUFlO1FBQ2IsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVTLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxNQUFzQjtRQUM3RCxPQUFPLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQsS0FBSyxDQUFDLCtCQUErQixDQUFDLEtBQTZCO1FBQ2pFLE1BQU0sUUFBUSxHQUFHLGlCQUFNLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQztRQUM5RSxNQUFNLFdBQVcsR0FBRyxpQkFBTSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsa0JBQWtCLENBQUM7UUFDaEYsT0FBTyxNQUFNLElBQUEsOENBQStCLEVBQUMsS0FBSyxFQUFFLFdBQXFCLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDdkYsQ0FBQztJQUNEOzs7Ozs7OztPQVFHO0lBQ0gsS0FBSyxDQUFDLG9CQUFvQixDQUFDLE1BQW1DO1FBQzVELE1BQU0sRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQztRQUNoRCxJQUNFLENBQUMsUUFBUSxFQUFFLFVBQVU7WUFDckIsQ0FBQyxDQUNDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsYUFBYTtnQkFDbEMsQ0FBQyxRQUFRLENBQUMsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLFdBQVcsRUFBRSxlQUFlLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQzFGLEVBQ0QsQ0FBQztZQUNELE1BQU0sSUFBSSxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUN0QyxDQUFDO1FBQ0QsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQzNCLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNwQyxDQUFDO1FBQ0QsSUFBSSxRQUFRLENBQUMsR0FBRyxJQUFJLFFBQVEsQ0FBQyxVQUFVLElBQUksUUFBUSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDMUUsTUFBTSxJQUFJLEtBQUssQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDO1FBQ25FLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7Q0FDRjtBQWxFRCxrQkFrRUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlQ29pbiwgQml0R29CYXNlLCBjb21tb24sIE1QQ0FsZ29yaXRobSwgTXVsdGlzaWdUeXBlLCBtdWx0aXNpZ1R5cGVzIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgU3RhdGljc0Jhc2VDb2luLCBjb2lucyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHtcbiAgQWJzdHJhY3RFdGhMaWtlTmV3Q29pbnMsXG4gIHJlY292ZXJ5QmxvY2tjaGFpbkV4cGxvcmVyUXVlcnksXG4gIFVuc2lnbmVkU3dlZXBUeE1QQ3YyLFxuICBSZWNvdmVyT3B0aW9ucyxcbiAgT2ZmbGluZVZhdWx0VHhJbmZvLFxuICBWZXJpZnlFdGhUcmFuc2FjdGlvbk9wdGlvbnMsXG59IGZyb20gJ0BiaXRnby1iZXRhL2Fic3RyYWN0LWV0aCc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL2xpYic7XG5cbmV4cG9ydCBjbGFzcyBYZGMgZXh0ZW5kcyBBYnN0cmFjdEV0aExpa2VOZXdDb2lucyB7XG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihiaXRnbzogQml0R29CYXNlLCBzdGF0aWNzQ29pbj86IFJlYWRvbmx5PFN0YXRpY3NCYXNlQ29pbj4pIHtcbiAgICBzdXBlcihiaXRnbywgc3RhdGljc0NvaW4pO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZUluc3RhbmNlKGJpdGdvOiBCaXRHb0Jhc2UsIHN0YXRpY3NDb2luPzogUmVhZG9ubHk8U3RhdGljc0Jhc2VDb2luPik6IEJhc2VDb2luIHtcbiAgICByZXR1cm4gbmV3IFhkYyhiaXRnbywgc3RhdGljc0NvaW4pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldFRyYW5zYWN0aW9uQnVpbGRlcigpOiBUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICAgIHJldHVybiBuZXcgVHJhbnNhY3Rpb25CdWlsZGVyKGNvaW5zLmdldCh0aGlzLmdldEJhc2VDaGFpbigpKSk7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgc3VwcG9ydHNUc3MoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKiogaW5oZXJpdGVkIGRvYyAqL1xuICBnZXREZWZhdWx0TXVsdGlzaWdUeXBlKCk6IE11bHRpc2lnVHlwZSB7XG4gICAgcmV0dXJuIG11bHRpc2lnVHlwZXMudHNzO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIGdldE1QQ0FsZ29yaXRobSgpOiBNUENBbGdvcml0aG0ge1xuICAgIHJldHVybiAnZWNkc2EnO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGJ1aWxkVW5zaWduZWRTd2VlcFR4blRTUyhwYXJhbXM6IFJlY292ZXJPcHRpb25zKTogUHJvbWlzZTxPZmZsaW5lVmF1bHRUeEluZm8gfCBVbnNpZ25lZFN3ZWVwVHhNUEN2Mj4ge1xuICAgIHJldHVybiB0aGlzLmJ1aWxkVW5zaWduZWRTd2VlcFR4bk1QQ3YyKHBhcmFtcyk7XG4gIH1cblxuICBhc3luYyByZWNvdmVyeUJsb2NrY2hhaW5FeHBsb3JlclF1ZXJ5KHF1ZXJ5OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4ge1xuICAgIGNvbnN0IGFwaVRva2VuID0gY29tbW9uLkVudmlyb25tZW50c1t0aGlzLmJpdGdvLmdldEVudigpXS54ZGNFeHBsb3JlckFwaVRva2VuO1xuICAgIGNvbnN0IGV4cGxvcmVyVXJsID0gY29tbW9uLkVudmlyb25tZW50c1t0aGlzLmJpdGdvLmdldEVudigpXS54ZGNFeHBsb3JlckJhc2VVcmw7XG4gICAgcmV0dXJuIGF3YWl0IHJlY292ZXJ5QmxvY2tjaGFpbkV4cGxvcmVyUXVlcnkocXVlcnksIGV4cGxvcmVyVXJsIGFzIHN0cmluZywgYXBpVG9rZW4pO1xuICB9XG4gIC8qKlxuICAgKiBWZXJpZnkgaWYgYSB0c3MgdHJhbnNhY3Rpb24gaXMgdmFsaWRcbiAgICpcbiAgICogQHBhcmFtIHtWZXJpZnlFdGhUcmFuc2FjdGlvbk9wdGlvbnN9IHBhcmFtc1xuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9uUGFyYW1zfSBwYXJhbXMudHhQYXJhbXMgLSBwYXJhbXMgb2JqZWN0IHBhc3NlZCB0byBzZW5kXG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb25QcmVidWlsZH0gcGFyYW1zLnR4UHJlYnVpbGQgLSBwcmVidWlsZCBvYmplY3QgcmV0dXJuZWQgYnkgc2VydmVyXG4gICAqIEBwYXJhbSB7V2FsbGV0fSBwYXJhbXMud2FsbGV0IC0gV2FsbGV0IG9iamVjdCB0byBvYnRhaW4ga2V5cyB0byB2ZXJpZnkgYWdhaW5zdFxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAgICovXG4gIGFzeW5jIHZlcmlmeVRzc1RyYW5zYWN0aW9uKHBhcmFtczogVmVyaWZ5RXRoVHJhbnNhY3Rpb25PcHRpb25zKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgeyB0eFBhcmFtcywgdHhQcmVidWlsZCwgd2FsbGV0IH0gPSBwYXJhbXM7XG4gICAgaWYgKFxuICAgICAgIXR4UGFyYW1zPy5yZWNpcGllbnRzICYmXG4gICAgICAhKFxuICAgICAgICB0eFBhcmFtcy5wcmVidWlsZFR4Py5jb25zb2xpZGF0ZUlkIHx8XG4gICAgICAgICh0eFBhcmFtcy50eXBlICYmIFsnYWNjZWxlcmF0aW9uJywgJ2ZpbGxOb25jZScsICd0cmFuc2ZlclRva2VuJ10uaW5jbHVkZXModHhQYXJhbXMudHlwZSkpXG4gICAgICApXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYG1pc3NpbmcgdHhQYXJhbXNgKTtcbiAgICB9XG4gICAgaWYgKCF3YWxsZXQgfHwgIXR4UHJlYnVpbGQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgbWlzc2luZyBwYXJhbXNgKTtcbiAgICB9XG4gICAgaWYgKHR4UGFyYW1zLmhvcCAmJiB0eFBhcmFtcy5yZWNpcGllbnRzICYmIHR4UGFyYW1zLnJlY2lwaWVudHMubGVuZ3RoID4gMSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGB0eCBjYW5ub3QgYmUgYm90aCBhIGJhdGNoIGFuZCBob3AgdHJhbnNhY3Rpb25gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @prettier
|
|
3
|
+
*/
|
|
4
|
+
import { EthLikeTokenConfig } from '@bitgo-beta/statics';
|
|
5
|
+
import { BitGoBase, CoinConstructor, NamedCoinConstructor, MPCAlgorithm } from '@bitgo-beta/sdk-core';
|
|
6
|
+
import { CoinNames, EthLikeToken, VerifyEthTransactionOptions } from '@bitgo-beta/abstract-eth';
|
|
7
|
+
import { TransactionBuilder } from './lib';
|
|
8
|
+
export { EthLikeTokenConfig };
|
|
9
|
+
export declare class XdcToken extends EthLikeToken {
|
|
10
|
+
readonly tokenConfig: EthLikeTokenConfig;
|
|
11
|
+
static coinNames: CoinNames;
|
|
12
|
+
constructor(bitgo: BitGoBase, tokenConfig: EthLikeTokenConfig);
|
|
13
|
+
static createTokenConstructor(config: EthLikeTokenConfig): CoinConstructor;
|
|
14
|
+
static createTokenConstructors(): NamedCoinConstructor[];
|
|
15
|
+
protected getTransactionBuilder(): TransactionBuilder;
|
|
16
|
+
/**
|
|
17
|
+
* Make a query to XDC Etherscan for information such as balance, token balance, solidity calls
|
|
18
|
+
* @param {Object} query key-value pairs of parameters to append after /api
|
|
19
|
+
* @returns {Promise<Object>} response from XDC Etherscan
|
|
20
|
+
*/
|
|
21
|
+
recoveryBlockchainExplorerQuery(query: Record<string, string>): Promise<Record<string, unknown>>;
|
|
22
|
+
getFullName(): string;
|
|
23
|
+
supportsTss(): boolean;
|
|
24
|
+
/** @inheritDoc */
|
|
25
|
+
getMPCAlgorithm(): MPCAlgorithm;
|
|
26
|
+
/**
|
|
27
|
+
* Verify if a tss transaction is valid
|
|
28
|
+
*
|
|
29
|
+
* @param {VerifyEthTransactionOptions} params
|
|
30
|
+
* @param {TransactionParams} params.txParams - params object passed to send
|
|
31
|
+
* @param {TransactionPrebuild} params.txPrebuild - prebuild object returned by server
|
|
32
|
+
* @param {Wallet} params.wallet - Wallet object to obtain keys to verify against
|
|
33
|
+
* @returns {boolean}
|
|
34
|
+
*/
|
|
35
|
+
verifyTssTransaction(params: VerifyEthTransactionOptions): Promise<boolean>;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=xdcToken.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"xdcToken.d.ts","sourceRoot":"","sources":["../../src/xdcToken.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,kBAAkB,EAAS,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,oBAAoB,EAAU,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC9G,OAAO,EACL,SAAS,EACT,YAAY,EAEZ,2BAA2B,EAC5B,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,kBAAkB,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,CAAC;AAE9B,qBAAa,QAAS,SAAQ,YAAY;IACxC,SAAgB,WAAW,EAAE,kBAAkB,CAAC;IAChD,MAAM,CAAC,SAAS,EAAE,SAAS,CAGzB;gBACU,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,kBAAkB;IAG7D,MAAM,CAAC,sBAAsB,CAAC,MAAM,EAAE,kBAAkB,GAAG,eAAe;IAI1E,MAAM,CAAC,uBAAuB,IAAI,oBAAoB,EAAE;IAIxD,SAAS,CAAC,qBAAqB,IAAI,kBAAkB;IAIrD;;;;OAIG;IACG,+BAA+B,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAMtG,WAAW,IAAI,MAAM;IAIrB,WAAW,IAAI,OAAO;IAItB,kBAAkB;IAClB,eAAe,IAAI,YAAY;IAI/B;;;;;;;;OAQG;IACG,oBAAoB,CAAC,MAAM,EAAE,2BAA2B,GAAG,OAAO,CAAC,OAAO,CAAC;CAoBlF"}
|