@bitgo-beta/sdk-coin-tempo 1.0.1-beta.4 → 1.0.1-beta.40
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/constants.d.ts +1 -1
- package/dist/src/lib/constants.js +2 -2
- package/dist/src/lib/index.d.ts +1 -0
- package/dist/src/lib/index.d.ts.map +1 -1
- package/dist/src/lib/index.js +2 -1
- package/dist/src/lib/keyPair.d.ts +8 -18
- package/dist/src/lib/keyPair.d.ts.map +1 -1
- package/dist/src/lib/keyPair.js +18 -84
- package/dist/src/lib/tip20Abi.d.ts +25 -0
- package/dist/src/lib/tip20Abi.d.ts.map +1 -0
- package/dist/src/lib/tip20Abi.js +34 -0
- package/dist/src/lib/utils.d.ts +10 -7
- package/dist/src/lib/utils.d.ts.map +1 -1
- package/dist/src/lib/utils.js +37 -15
- package/dist/src/register.d.ts +4 -0
- package/dist/src/register.d.ts.map +1 -1
- package/dist/src/register.js +26 -1
- package/dist/src/tempo.d.ts +35 -44
- package/dist/src/tempo.d.ts.map +1 -1
- package/dist/src/tempo.js +51 -84
- package/dist/src/tip20Token.d.ts +85 -0
- package/dist/src/tip20Token.d.ts.map +1 -0
- package/dist/src/tip20Token.js +126 -0
- package/dist/test/unit/utils.js +3 -3
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +8 -6
package/dist/src/tempo.js
CHANGED
|
@@ -1,130 +1,97 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.Tempo = void 0;
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
4
|
+
/**
|
|
5
|
+
* @prettier
|
|
6
|
+
*/
|
|
7
|
+
const abstract_eth_1 = require("@bitgo-beta/abstract-eth");
|
|
8
|
+
class Tempo extends abstract_eth_1.AbstractEthLikeNewCoins {
|
|
11
9
|
constructor(bitgo, staticsCoin) {
|
|
12
|
-
super(bitgo);
|
|
13
|
-
if (!staticsCoin) {
|
|
14
|
-
throw new Error('missing required constructor parameter staticsCoin');
|
|
15
|
-
}
|
|
16
|
-
this._staticsCoin = staticsCoin;
|
|
10
|
+
super(bitgo, staticsCoin);
|
|
17
11
|
}
|
|
12
|
+
/**
|
|
13
|
+
* Factory method to create Tempo instance
|
|
14
|
+
*/
|
|
18
15
|
static createInstance(bitgo, staticsCoin) {
|
|
19
16
|
return new Tempo(bitgo, staticsCoin);
|
|
20
17
|
}
|
|
21
18
|
/**
|
|
22
|
-
*
|
|
19
|
+
* Get the chain identifier
|
|
23
20
|
*/
|
|
24
|
-
getBaseFactor() {
|
|
25
|
-
return 1e18;
|
|
26
|
-
}
|
|
27
21
|
getChain() {
|
|
28
|
-
return 'tempo';
|
|
29
|
-
}
|
|
30
|
-
getFamily() {
|
|
31
|
-
return 'tempo';
|
|
32
|
-
}
|
|
33
|
-
getFullName() {
|
|
34
|
-
return 'Tempo';
|
|
22
|
+
return this._staticsCoin?.name || 'tempo';
|
|
35
23
|
}
|
|
36
24
|
/**
|
|
37
|
-
*
|
|
38
|
-
* @returns {boolean} True if okay to send 0 value, false otherwise
|
|
25
|
+
* Get the full chain name
|
|
39
26
|
*/
|
|
40
|
-
|
|
41
|
-
return
|
|
27
|
+
getFullName() {
|
|
28
|
+
return 'Tempo';
|
|
42
29
|
}
|
|
43
30
|
/**
|
|
44
|
-
*
|
|
45
|
-
* @param address
|
|
31
|
+
* Get the base factor (1 TEMPO = 1e18 wei, like Ethereum)
|
|
46
32
|
*/
|
|
47
|
-
|
|
48
|
-
return
|
|
33
|
+
getBaseFactor() {
|
|
34
|
+
return 1e18;
|
|
49
35
|
}
|
|
50
36
|
/**
|
|
51
|
-
*
|
|
52
|
-
*
|
|
53
|
-
* @param seed
|
|
54
|
-
* @returns {Object} object with generated pub, prv
|
|
37
|
+
* Check if value-less transfers are allowed
|
|
38
|
+
* TODO: Update based on Tempo requirements
|
|
55
39
|
*/
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
const keys = keyPair.getKeys();
|
|
59
|
-
if (!keys.prv) {
|
|
60
|
-
throw new Error('Missing prv in key generation.');
|
|
61
|
-
}
|
|
62
|
-
return {
|
|
63
|
-
pub: keys.pub,
|
|
64
|
-
prv: keys.prv,
|
|
65
|
-
};
|
|
40
|
+
valuelessTransferAllowed() {
|
|
41
|
+
return false;
|
|
66
42
|
}
|
|
67
43
|
/**
|
|
68
|
-
*
|
|
69
|
-
*
|
|
70
|
-
* @param {String} pub the pub to be checked
|
|
71
|
-
* @returns {Boolean} is it valid?
|
|
44
|
+
* Check if TSS is supported
|
|
72
45
|
*/
|
|
73
|
-
|
|
74
|
-
return
|
|
46
|
+
supportsTss() {
|
|
47
|
+
return true;
|
|
75
48
|
}
|
|
76
49
|
/**
|
|
77
|
-
*
|
|
78
|
-
* @param params
|
|
79
|
-
* @param params.txPrebuild
|
|
80
|
-
* @param params.txParams
|
|
81
|
-
* @returns {boolean}
|
|
50
|
+
* Get the MPC algorithm (ECDSA for EVM chains)
|
|
82
51
|
*/
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
return false;
|
|
52
|
+
getMPCAlgorithm() {
|
|
53
|
+
return 'ecdsa';
|
|
86
54
|
}
|
|
87
55
|
/**
|
|
88
|
-
* Check if
|
|
89
|
-
* @param params
|
|
56
|
+
* Check if message signing is supported
|
|
90
57
|
*/
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
return false;
|
|
58
|
+
supportsMessageSigning() {
|
|
59
|
+
return true;
|
|
94
60
|
}
|
|
95
61
|
/**
|
|
96
|
-
*
|
|
97
|
-
* @param params
|
|
62
|
+
* Check if typed data signing is supported (EIP-712)
|
|
98
63
|
*/
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
// This method is typically used for security compliance
|
|
102
|
-
return Promise.resolve();
|
|
64
|
+
supportsSigningTypedData() {
|
|
65
|
+
return true;
|
|
103
66
|
}
|
|
104
67
|
/**
|
|
105
|
-
*
|
|
106
|
-
*
|
|
68
|
+
* Build unsigned sweep transaction for TSS
|
|
69
|
+
* TODO: Implement sweep transaction logic
|
|
107
70
|
*/
|
|
108
|
-
async
|
|
109
|
-
// TODO: Implement
|
|
71
|
+
async buildUnsignedSweepTxnTSS(params) {
|
|
72
|
+
// TODO: Implement when recovery logic is needed
|
|
73
|
+
// Return dummy value to prevent downstream services from breaking
|
|
110
74
|
return {};
|
|
111
75
|
}
|
|
112
76
|
/**
|
|
113
|
-
*
|
|
114
|
-
*
|
|
77
|
+
* Query block explorer for recovery information
|
|
78
|
+
* TODO: Implement when Tempo block explorer is available
|
|
115
79
|
*/
|
|
116
|
-
async
|
|
117
|
-
// TODO: Implement
|
|
80
|
+
async recoveryBlockchainExplorerQuery(query, apiKey) {
|
|
81
|
+
// TODO: Implement with Tempo block explorer API
|
|
82
|
+
// Return empty object to prevent downstream services from breaking
|
|
118
83
|
return {};
|
|
119
84
|
}
|
|
120
85
|
/**
|
|
121
|
-
*
|
|
122
|
-
*
|
|
86
|
+
* Get transaction builder for Tempo
|
|
87
|
+
* TODO: Implement TransactionBuilder for Tempo
|
|
88
|
+
* @protected
|
|
123
89
|
*/
|
|
124
|
-
|
|
125
|
-
// TODO:
|
|
126
|
-
|
|
90
|
+
getTransactionBuilder() {
|
|
91
|
+
// TODO: Create and return TransactionBuilder instance
|
|
92
|
+
// Return undefined cast as TransactionBuilder to prevent downstream services from breaking
|
|
93
|
+
return undefined;
|
|
127
94
|
}
|
|
128
95
|
}
|
|
129
96
|
exports.Tempo = Tempo;
|
|
130
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcG8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVtcG8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7O0dBRUc7QUFDSCwyREFNa0M7QUFJbEMsTUFBYSxLQUFNLFNBQVEsc0NBQXVCO0lBQ2hELFlBQXNCLEtBQWdCLEVBQUUsV0FBdUM7UUFDN0UsS0FBSyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQWdCLEVBQUUsV0FBdUM7UUFDN0UsT0FBTyxJQUFJLEtBQUssQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsUUFBUTtRQUNOLE9BQU8sSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLElBQUksT0FBTyxDQUFDO0lBQzVDLENBQUM7SUFFRDs7T0FFRztJQUNILFdBQVc7UUFDVCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxhQUFhO1FBQ1gsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsd0JBQXdCO1FBQ3RCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVEOztPQUVHO0lBQ0gsV0FBVztRQUNULE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOztPQUVHO0lBQ0gsZUFBZTtRQUNiLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFRDs7T0FFRztJQUNILHNCQUFzQjtRQUNwQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7T0FFRztJQUNILHdCQUF3QjtRQUN0QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7O09BR0c7SUFDTyxLQUFLLENBQUMsd0JBQXdCLENBQUMsTUFBc0I7UUFDN0QsZ0RBQWdEO1FBQ2hELGtFQUFrRTtRQUNsRSxPQUFPLEVBQXdCLENBQUM7SUFDbEMsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQywrQkFBK0IsQ0FDbkMsS0FBNkIsRUFDN0IsTUFBZTtRQUVmLGdEQUFnRDtRQUNoRCxtRUFBbUU7UUFDbkUsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNPLHFCQUFxQjtRQUM3QixzREFBc0Q7UUFDdEQsMkZBQTJGO1FBQzNGLE9BQU8sU0FBMEMsQ0FBQztJQUNwRCxDQUFDO0NBQ0Y7QUF0R0Qsc0JBc0dDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAcHJldHRpZXJcbiAqL1xuaW1wb3J0IHtcbiAgQWJzdHJhY3RFdGhMaWtlTmV3Q29pbnMsXG4gIFJlY292ZXJPcHRpb25zLFxuICBPZmZsaW5lVmF1bHRUeEluZm8sXG4gIFVuc2lnbmVkU3dlZXBUeE1QQ3YyLFxuICBUcmFuc2FjdGlvbkJ1aWxkZXIsXG59IGZyb20gJ0BiaXRnby1iZXRhL2Fic3RyYWN0LWV0aCc7XG5pbXBvcnQgeyBCYXNlQ29pbiwgQml0R29CYXNlLCBNUENBbGdvcml0aG0gfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBTdGF0aWNzQmFzZUNvaW4gfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcblxuZXhwb3J0IGNsYXNzIFRlbXBvIGV4dGVuZHMgQWJzdHJhY3RFdGhMaWtlTmV3Q29pbnMge1xuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoYml0Z286IEJpdEdvQmFzZSwgc3RhdGljc0NvaW4/OiBSZWFkb25seTxTdGF0aWNzQmFzZUNvaW4+KSB7XG4gICAgc3VwZXIoYml0Z28sIHN0YXRpY3NDb2luKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGYWN0b3J5IG1ldGhvZCB0byBjcmVhdGUgVGVtcG8gaW5zdGFuY2VcbiAgICovXG4gIHN0YXRpYyBjcmVhdGVJbnN0YW5jZShiaXRnbzogQml0R29CYXNlLCBzdGF0aWNzQ29pbj86IFJlYWRvbmx5PFN0YXRpY3NCYXNlQ29pbj4pOiBCYXNlQ29pbiB7XG4gICAgcmV0dXJuIG5ldyBUZW1wbyhiaXRnbywgc3RhdGljc0NvaW4pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgY2hhaW4gaWRlbnRpZmllclxuICAgKi9cbiAgZ2V0Q2hhaW4oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdGljc0NvaW4/Lm5hbWUgfHwgJ3RlbXBvJztcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGZ1bGwgY2hhaW4gbmFtZVxuICAgKi9cbiAgZ2V0RnVsbE5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ1RlbXBvJztcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGJhc2UgZmFjdG9yICgxIFRFTVBPID0gMWUxOCB3ZWksIGxpa2UgRXRoZXJldW0pXG4gICAqL1xuICBnZXRCYXNlRmFjdG9yKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIDFlMTg7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgdmFsdWUtbGVzcyB0cmFuc2ZlcnMgYXJlIGFsbG93ZWRcbiAgICogVE9ETzogVXBkYXRlIGJhc2VkIG9uIFRlbXBvIHJlcXVpcmVtZW50c1xuICAgKi9cbiAgdmFsdWVsZXNzVHJhbnNmZXJBbGxvd2VkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBUU1MgaXMgc3VwcG9ydGVkXG4gICAqL1xuICBzdXBwb3J0c1RzcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIE1QQyBhbGdvcml0aG0gKEVDRFNBIGZvciBFVk0gY2hhaW5zKVxuICAgKi9cbiAgZ2V0TVBDQWxnb3JpdGhtKCk6IE1QQ0FsZ29yaXRobSB7XG4gICAgcmV0dXJuICdlY2RzYSc7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgbWVzc2FnZSBzaWduaW5nIGlzIHN1cHBvcnRlZFxuICAgKi9cbiAgc3VwcG9ydHNNZXNzYWdlU2lnbmluZygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiB0eXBlZCBkYXRhIHNpZ25pbmcgaXMgc3VwcG9ydGVkIChFSVAtNzEyKVxuICAgKi9cbiAgc3VwcG9ydHNTaWduaW5nVHlwZWREYXRhKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIHVuc2lnbmVkIHN3ZWVwIHRyYW5zYWN0aW9uIGZvciBUU1NcbiAgICogVE9ETzogSW1wbGVtZW50IHN3ZWVwIHRyYW5zYWN0aW9uIGxvZ2ljXG4gICAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgYnVpbGRVbnNpZ25lZFN3ZWVwVHhuVFNTKHBhcmFtczogUmVjb3Zlck9wdGlvbnMpOiBQcm9taXNlPE9mZmxpbmVWYXVsdFR4SW5mbyB8IFVuc2lnbmVkU3dlZXBUeE1QQ3YyPiB7XG4gICAgLy8gVE9ETzogSW1wbGVtZW50IHdoZW4gcmVjb3ZlcnkgbG9naWMgaXMgbmVlZGVkXG4gICAgLy8gUmV0dXJuIGR1bW15IHZhbHVlIHRvIHByZXZlbnQgZG93bnN0cmVhbSBzZXJ2aWNlcyBmcm9tIGJyZWFraW5nXG4gICAgcmV0dXJuIHt9IGFzIE9mZmxpbmVWYXVsdFR4SW5mbztcbiAgfVxuXG4gIC8qKlxuICAgKiBRdWVyeSBibG9jayBleHBsb3JlciBmb3IgcmVjb3ZlcnkgaW5mb3JtYXRpb25cbiAgICogVE9ETzogSW1wbGVtZW50IHdoZW4gVGVtcG8gYmxvY2sgZXhwbG9yZXIgaXMgYXZhaWxhYmxlXG4gICAqL1xuICBhc3luYyByZWNvdmVyeUJsb2NrY2hhaW5FeHBsb3JlclF1ZXJ5KFxuICAgIHF1ZXJ5OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LFxuICAgIGFwaUtleT86IHN0cmluZ1xuICApOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIHVua25vd24+PiB7XG4gICAgLy8gVE9ETzogSW1wbGVtZW50IHdpdGggVGVtcG8gYmxvY2sgZXhwbG9yZXIgQVBJXG4gICAgLy8gUmV0dXJuIGVtcHR5IG9iamVjdCB0byBwcmV2ZW50IGRvd25zdHJlYW0gc2VydmljZXMgZnJvbSBicmVha2luZ1xuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdHJhbnNhY3Rpb24gYnVpbGRlciBmb3IgVGVtcG9cbiAgICogVE9ETzogSW1wbGVtZW50IFRyYW5zYWN0aW9uQnVpbGRlciBmb3IgVGVtcG9cbiAgICogQHByb3RlY3RlZFxuICAgKi9cbiAgcHJvdGVjdGVkIGdldFRyYW5zYWN0aW9uQnVpbGRlcigpOiBUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICAgIC8vIFRPRE86IENyZWF0ZSBhbmQgcmV0dXJuIFRyYW5zYWN0aW9uQnVpbGRlciBpbnN0YW5jZVxuICAgIC8vIFJldHVybiB1bmRlZmluZWQgY2FzdCBhcyBUcmFuc2FjdGlvbkJ1aWxkZXIgdG8gcHJldmVudCBkb3duc3RyZWFtIHNlcnZpY2VzIGZyb20gYnJlYWtpbmdcbiAgICByZXR1cm4gdW5kZWZpbmVkIGFzIHVua25vd24gYXMgVHJhbnNhY3Rpb25CdWlsZGVyO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @prettier
|
|
3
|
+
*/
|
|
4
|
+
import { BitGoBase, CoinConstructor, MPCAlgorithm, NamedCoinConstructor } from '@bitgo-beta/sdk-core';
|
|
5
|
+
import { GetSendMethodArgsOptions, SendMethodArgs } from '@bitgo-beta/abstract-eth';
|
|
6
|
+
import { Tempo } from './tempo';
|
|
7
|
+
/**
|
|
8
|
+
* TIP20 Token Configuration Interface
|
|
9
|
+
*/
|
|
10
|
+
export interface Tip20TokenConfig {
|
|
11
|
+
type: string;
|
|
12
|
+
coin: string;
|
|
13
|
+
network: 'Mainnet' | 'Testnet';
|
|
14
|
+
name: string;
|
|
15
|
+
tokenContractAddress: string;
|
|
16
|
+
decimalPlaces: number;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* TIP20 Token Implementation (Skeleton)
|
|
20
|
+
*
|
|
21
|
+
* This is a minimal skeleton for TIP20 tokens on Tempo blockchain.
|
|
22
|
+
*
|
|
23
|
+
* TODO: All methods will be implemented progressively
|
|
24
|
+
*/
|
|
25
|
+
export declare class Tip20Token extends Tempo {
|
|
26
|
+
readonly tokenConfig: Tip20TokenConfig;
|
|
27
|
+
constructor(bitgo: BitGoBase, tokenConfig: Tip20TokenConfig);
|
|
28
|
+
/**
|
|
29
|
+
* Create a coin constructor for a specific token
|
|
30
|
+
*/
|
|
31
|
+
static createTokenConstructor(config: Tip20TokenConfig): CoinConstructor;
|
|
32
|
+
/**
|
|
33
|
+
* Create token constructors for all TIP20 tokens
|
|
34
|
+
* @param tokenConfigs - Array of token configurations (optional)
|
|
35
|
+
*/
|
|
36
|
+
static createTokenConstructors(tokenConfigs?: Tip20TokenConfig[]): NamedCoinConstructor[];
|
|
37
|
+
/** Get the token type */
|
|
38
|
+
get type(): string;
|
|
39
|
+
/** Get the token name */
|
|
40
|
+
get name(): string;
|
|
41
|
+
/** Get the base coin */
|
|
42
|
+
get coin(): string;
|
|
43
|
+
/** Get the network */
|
|
44
|
+
get network(): 'Mainnet' | 'Testnet';
|
|
45
|
+
/** Get the token contract address */
|
|
46
|
+
get tokenContractAddress(): string;
|
|
47
|
+
/** Get token decimal places */
|
|
48
|
+
get decimalPlaces(): number;
|
|
49
|
+
/** @inheritDoc */
|
|
50
|
+
getChain(): string;
|
|
51
|
+
/** @inheritDoc */
|
|
52
|
+
getFullName(): string;
|
|
53
|
+
/** @inheritDoc */
|
|
54
|
+
getBaseFactor(): number;
|
|
55
|
+
/** @inheritDoc */
|
|
56
|
+
valuelessTransferAllowed(): boolean;
|
|
57
|
+
/** @inheritDoc */
|
|
58
|
+
supportsTss(): boolean;
|
|
59
|
+
/** @inheritDoc */
|
|
60
|
+
getMPCAlgorithm(): MPCAlgorithm;
|
|
61
|
+
/**
|
|
62
|
+
* Placeholder: Verify coin and token match
|
|
63
|
+
* TODO: Implement when transaction logic is added
|
|
64
|
+
*/
|
|
65
|
+
verifyCoin(txPrebuild: unknown): boolean;
|
|
66
|
+
/**
|
|
67
|
+
* Placeholder: Get send method arguments
|
|
68
|
+
* TODO: Implement for token transfers
|
|
69
|
+
*/
|
|
70
|
+
getSendMethodArgs(txInfo: GetSendMethodArgsOptions): SendMethodArgs[];
|
|
71
|
+
/**
|
|
72
|
+
* Placeholder: Get operation for token transfer
|
|
73
|
+
* TODO: Implement for token transfers
|
|
74
|
+
*/
|
|
75
|
+
getOperation(recipient: {
|
|
76
|
+
address: string;
|
|
77
|
+
amount: string;
|
|
78
|
+
}, expireTime: number, contractSequenceId: number): (string | Buffer)[][];
|
|
79
|
+
/**
|
|
80
|
+
* Placeholder: Query token balance
|
|
81
|
+
* TODO: Implement using Tempo block explorer or RPC
|
|
82
|
+
*/
|
|
83
|
+
queryAddressTokenBalance(tokenContractAddress: string, walletAddress: string, apiKey?: string): Promise<string>;
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=tip20Token.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tip20Token.d.ts","sourceRoot":"","sources":["../../src/tip20Token.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAEtG,OAAO,EAAE,wBAAwB,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AACpF,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,SAAS,GAAG,SAAS,CAAC;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,oBAAoB,EAAE,MAAM,CAAC;IAC7B,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;GAMG;AACH,qBAAa,UAAW,SAAQ,KAAK;IACnC,SAAgB,WAAW,EAAE,gBAAgB,CAAC;gBAElC,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,gBAAgB;IAO3D;;OAEG;IACH,MAAM,CAAC,sBAAsB,CAAC,MAAM,EAAE,gBAAgB,GAAG,eAAe;IAIxE;;;OAGG;IACH,MAAM,CAAC,uBAAuB,CAAC,YAAY,CAAC,EAAE,gBAAgB,EAAE,GAAG,oBAAoB,EAAE;IAezF,yBAAyB;IACzB,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,yBAAyB;IACzB,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,wBAAwB;IACxB,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,sBAAsB;IACtB,IAAI,OAAO,IAAI,SAAS,GAAG,SAAS,CAEnC;IAED,qCAAqC;IACrC,IAAI,oBAAoB,IAAI,MAAM,CAEjC;IAED,+BAA+B;IAC/B,IAAI,aAAa,IAAI,MAAM,CAE1B;IAED,kBAAkB;IAClB,QAAQ,IAAI,MAAM;IAIlB,kBAAkB;IAClB,WAAW,IAAI,MAAM;IAIrB,kBAAkB;IAClB,aAAa,IAAI,MAAM;IAIvB,kBAAkB;IAClB,wBAAwB,IAAI,OAAO;IAInC,kBAAkB;IAClB,WAAW,IAAI,OAAO;IAItB,kBAAkB;IAClB,eAAe,IAAI,YAAY;IAI/B;;;OAGG;IACH,UAAU,CAAC,UAAU,EAAE,OAAO,GAAG,OAAO;IAIxC;;;OAGG;IACH,iBAAiB,CAAC,MAAM,EAAE,wBAAwB,GAAG,cAAc,EAAE;IAMrE;;;OAGG;IACH,YAAY,CACV,SAAS,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAC9C,UAAU,EAAE,MAAM,EAClB,kBAAkB,EAAE,MAAM,GACzB,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,EAAE;IAMxB;;;OAGG;IACG,wBAAwB,CAC5B,oBAAoB,EAAE,MAAM,EAC5B,aAAa,EAAE,MAAM,EACrB,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC;CAKnB"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Tip20Token = void 0;
|
|
4
|
+
const statics_1 = require("@bitgo-beta/statics");
|
|
5
|
+
const tempo_1 = require("./tempo");
|
|
6
|
+
/**
|
|
7
|
+
* TIP20 Token Implementation (Skeleton)
|
|
8
|
+
*
|
|
9
|
+
* This is a minimal skeleton for TIP20 tokens on Tempo blockchain.
|
|
10
|
+
*
|
|
11
|
+
* TODO: All methods will be implemented progressively
|
|
12
|
+
*/
|
|
13
|
+
class Tip20Token extends tempo_1.Tempo {
|
|
14
|
+
constructor(bitgo, tokenConfig) {
|
|
15
|
+
const coinName = tokenConfig.network === 'Mainnet' ? 'tempo' : 'ttempo';
|
|
16
|
+
const staticsCoin = statics_1.coins.get(coinName);
|
|
17
|
+
super(bitgo, staticsCoin);
|
|
18
|
+
this.tokenConfig = tokenConfig;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Create a coin constructor for a specific token
|
|
22
|
+
*/
|
|
23
|
+
static createTokenConstructor(config) {
|
|
24
|
+
return (bitgo) => new Tip20Token(bitgo, config);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Create token constructors for all TIP20 tokens
|
|
28
|
+
* @param tokenConfigs - Array of token configurations (optional)
|
|
29
|
+
*/
|
|
30
|
+
static createTokenConstructors(tokenConfigs) {
|
|
31
|
+
const configs = tokenConfigs || [];
|
|
32
|
+
const tokensCtors = [];
|
|
33
|
+
for (const token of configs) {
|
|
34
|
+
const tokenConstructor = Tip20Token.createTokenConstructor(token);
|
|
35
|
+
// Register by token type
|
|
36
|
+
tokensCtors.push({ name: token.type, coinConstructor: tokenConstructor });
|
|
37
|
+
// Also register by contract address for lookups
|
|
38
|
+
tokensCtors.push({ name: token.tokenContractAddress, coinConstructor: tokenConstructor });
|
|
39
|
+
}
|
|
40
|
+
return tokensCtors;
|
|
41
|
+
}
|
|
42
|
+
/** Get the token type */
|
|
43
|
+
get type() {
|
|
44
|
+
return this.tokenConfig.type;
|
|
45
|
+
}
|
|
46
|
+
/** Get the token name */
|
|
47
|
+
get name() {
|
|
48
|
+
return this.tokenConfig.name;
|
|
49
|
+
}
|
|
50
|
+
/** Get the base coin */
|
|
51
|
+
get coin() {
|
|
52
|
+
return this.tokenConfig.coin;
|
|
53
|
+
}
|
|
54
|
+
/** Get the network */
|
|
55
|
+
get network() {
|
|
56
|
+
return this.tokenConfig.network;
|
|
57
|
+
}
|
|
58
|
+
/** Get the token contract address */
|
|
59
|
+
get tokenContractAddress() {
|
|
60
|
+
return this.tokenConfig.tokenContractAddress;
|
|
61
|
+
}
|
|
62
|
+
/** Get token decimal places */
|
|
63
|
+
get decimalPlaces() {
|
|
64
|
+
return this.tokenConfig.decimalPlaces;
|
|
65
|
+
}
|
|
66
|
+
/** @inheritDoc */
|
|
67
|
+
getChain() {
|
|
68
|
+
return this.tokenConfig.type;
|
|
69
|
+
}
|
|
70
|
+
/** @inheritDoc */
|
|
71
|
+
getFullName() {
|
|
72
|
+
return 'TIP20 Token';
|
|
73
|
+
}
|
|
74
|
+
/** @inheritDoc */
|
|
75
|
+
getBaseFactor() {
|
|
76
|
+
return Math.pow(10, this.tokenConfig.decimalPlaces);
|
|
77
|
+
}
|
|
78
|
+
/** @inheritDoc */
|
|
79
|
+
valuelessTransferAllowed() {
|
|
80
|
+
return false;
|
|
81
|
+
}
|
|
82
|
+
/** @inheritDoc */
|
|
83
|
+
supportsTss() {
|
|
84
|
+
return true;
|
|
85
|
+
}
|
|
86
|
+
/** @inheritDoc */
|
|
87
|
+
getMPCAlgorithm() {
|
|
88
|
+
return 'ecdsa';
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Placeholder: Verify coin and token match
|
|
92
|
+
* TODO: Implement when transaction logic is added
|
|
93
|
+
*/
|
|
94
|
+
verifyCoin(txPrebuild) {
|
|
95
|
+
return true;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Placeholder: Get send method arguments
|
|
99
|
+
* TODO: Implement for token transfers
|
|
100
|
+
*/
|
|
101
|
+
getSendMethodArgs(txInfo) {
|
|
102
|
+
// TODO: Implement for token transfers
|
|
103
|
+
// Return empty array to prevent downstream services from breaking
|
|
104
|
+
return [];
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Placeholder: Get operation for token transfer
|
|
108
|
+
* TODO: Implement for token transfers
|
|
109
|
+
*/
|
|
110
|
+
getOperation(recipient, expireTime, contractSequenceId) {
|
|
111
|
+
// TODO: Implement for token transfers
|
|
112
|
+
// Return empty array to prevent downstream services from breaking
|
|
113
|
+
return [];
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Placeholder: Query token balance
|
|
117
|
+
* TODO: Implement using Tempo block explorer or RPC
|
|
118
|
+
*/
|
|
119
|
+
async queryAddressTokenBalance(tokenContractAddress, walletAddress, apiKey) {
|
|
120
|
+
// TODO: Implement using Tempo block explorer or RPC
|
|
121
|
+
// Return 0 balance to prevent downstream services from breaking
|
|
122
|
+
return '0';
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
exports.Tip20Token = Tip20Token;
|
|
126
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlwMjBUb2tlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90aXAyMFRva2VuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUlBLGlEQUE0QztBQUU1QyxtQ0FBZ0M7QUFjaEM7Ozs7OztHQU1HO0FBQ0gsTUFBYSxVQUFXLFNBQVEsYUFBSztJQUduQyxZQUFZLEtBQWdCLEVBQUUsV0FBNkI7UUFDekQsTUFBTSxRQUFRLEdBQUcsV0FBVyxDQUFDLE9BQU8sS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO1FBQ3hFLE1BQU0sV0FBVyxHQUFHLGVBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDeEMsS0FBSyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQztRQUMxQixJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztJQUNqQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNLENBQUMsc0JBQXNCLENBQUMsTUFBd0I7UUFDcEQsT0FBTyxDQUFDLEtBQWdCLEVBQUUsRUFBRSxDQUFDLElBQUksVUFBVSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLHVCQUF1QixDQUFDLFlBQWlDO1FBQzlELE1BQU0sT0FBTyxHQUFHLFlBQVksSUFBSSxFQUFFLENBQUM7UUFDbkMsTUFBTSxXQUFXLEdBQTJCLEVBQUUsQ0FBQztRQUUvQyxLQUFLLE1BQU0sS0FBSyxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQzVCLE1BQU0sZ0JBQWdCLEdBQUcsVUFBVSxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2xFLHlCQUF5QjtZQUN6QixXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLENBQUMsQ0FBQztZQUMxRSxnREFBZ0Q7WUFDaEQsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsb0JBQW9CLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLENBQUMsQ0FBQztRQUM1RixDQUFDO1FBRUQsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJQUVELHlCQUF5QjtJQUN6QixJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO0lBQy9CLENBQUM7SUFFRCx5QkFBeUI7SUFDekIsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztJQUMvQixDQUFDO0lBRUQsd0JBQXdCO0lBQ3hCLElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7SUFDL0IsQ0FBQztJQUVELHNCQUFzQjtJQUN0QixJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxxQ0FBcUM7SUFDckMsSUFBSSxvQkFBb0I7UUFDdEIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLG9CQUFvQixDQUFDO0lBQy9DLENBQUM7SUFFRCwrQkFBK0I7SUFDL0IsSUFBSSxhQUFhO1FBQ2YsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQztJQUN4QyxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLFFBQVE7UUFDTixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO0lBQy9CLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsV0FBVztRQUNULE9BQU8sYUFBYSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsYUFBYTtRQUNYLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLHdCQUF3QjtRQUN0QixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsV0FBVztRQUNULE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixlQUFlO1FBQ2IsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVEOzs7T0FHRztJQUNILFVBQVUsQ0FBQyxVQUFtQjtRQUM1QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7O09BR0c7SUFDSCxpQkFBaUIsQ0FBQyxNQUFnQztRQUNoRCxzQ0FBc0M7UUFDdEMsa0VBQWtFO1FBQ2xFLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVEOzs7T0FHRztJQUNILFlBQVksQ0FDVixTQUE4QyxFQUM5QyxVQUFrQixFQUNsQixrQkFBMEI7UUFFMUIsc0NBQXNDO1FBQ3RDLGtFQUFrRTtRQUNsRSxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsd0JBQXdCLENBQzVCLG9CQUE0QixFQUM1QixhQUFxQixFQUNyQixNQUFlO1FBRWYsb0RBQW9EO1FBQ3BELGdFQUFnRTtRQUNoRSxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7Q0FDRjtBQTdJRCxnQ0E2SUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBwcmV0dGllclxuICovXG5pbXBvcnQgeyBCaXRHb0Jhc2UsIENvaW5Db25zdHJ1Y3RvciwgTVBDQWxnb3JpdGhtLCBOYW1lZENvaW5Db25zdHJ1Y3RvciB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IGNvaW5zIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBHZXRTZW5kTWV0aG9kQXJnc09wdGlvbnMsIFNlbmRNZXRob2RBcmdzIH0gZnJvbSAnQGJpdGdvLWJldGEvYWJzdHJhY3QtZXRoJztcbmltcG9ydCB7IFRlbXBvIH0gZnJvbSAnLi90ZW1wbyc7XG5cbi8qKlxuICogVElQMjAgVG9rZW4gQ29uZmlndXJhdGlvbiBJbnRlcmZhY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUaXAyMFRva2VuQ29uZmlnIHtcbiAgdHlwZTogc3RyaW5nOyAvLyBUb2tlbiBpZGVudGlmaWVyIChlLmcuLCAndGVtcG86dXNkYycpXG4gIGNvaW46IHN0cmluZzsgLy8gQmFzZSBjb2luIChlLmcuLCAndGVtcG8nIG9yICd0dGVtcG8nKVxuICBuZXR3b3JrOiAnTWFpbm5ldCcgfCAnVGVzdG5ldCc7XG4gIG5hbWU6IHN0cmluZzsgLy8gVG9rZW4gZnVsbCBuYW1lXG4gIHRva2VuQ29udHJhY3RBZGRyZXNzOiBzdHJpbmc7IC8vIFNtYXJ0IGNvbnRyYWN0IGFkZHJlc3MgKDB4Li4uKVxuICBkZWNpbWFsUGxhY2VzOiBudW1iZXI7IC8vIFRva2VuIGRlY2ltYWwgcGxhY2VzXG59XG5cbi8qKlxuICogVElQMjAgVG9rZW4gSW1wbGVtZW50YXRpb24gKFNrZWxldG9uKVxuICpcbiAqIFRoaXMgaXMgYSBtaW5pbWFsIHNrZWxldG9uIGZvciBUSVAyMCB0b2tlbnMgb24gVGVtcG8gYmxvY2tjaGFpbi5cbiAqXG4gKiBUT0RPOiBBbGwgbWV0aG9kcyB3aWxsIGJlIGltcGxlbWVudGVkIHByb2dyZXNzaXZlbHlcbiAqL1xuZXhwb3J0IGNsYXNzIFRpcDIwVG9rZW4gZXh0ZW5kcyBUZW1wbyB7XG4gIHB1YmxpYyByZWFkb25seSB0b2tlbkNvbmZpZzogVGlwMjBUb2tlbkNvbmZpZztcblxuICBjb25zdHJ1Y3RvcihiaXRnbzogQml0R29CYXNlLCB0b2tlbkNvbmZpZzogVGlwMjBUb2tlbkNvbmZpZykge1xuICAgIGNvbnN0IGNvaW5OYW1lID0gdG9rZW5Db25maWcubmV0d29yayA9PT0gJ01haW5uZXQnID8gJ3RlbXBvJyA6ICd0dGVtcG8nO1xuICAgIGNvbnN0IHN0YXRpY3NDb2luID0gY29pbnMuZ2V0KGNvaW5OYW1lKTtcbiAgICBzdXBlcihiaXRnbywgc3RhdGljc0NvaW4pO1xuICAgIHRoaXMudG9rZW5Db25maWcgPSB0b2tlbkNvbmZpZztcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBjb2luIGNvbnN0cnVjdG9yIGZvciBhIHNwZWNpZmljIHRva2VuXG4gICAqL1xuICBzdGF0aWMgY3JlYXRlVG9rZW5Db25zdHJ1Y3Rvcihjb25maWc6IFRpcDIwVG9rZW5Db25maWcpOiBDb2luQ29uc3RydWN0b3Ige1xuICAgIHJldHVybiAoYml0Z286IEJpdEdvQmFzZSkgPT4gbmV3IFRpcDIwVG9rZW4oYml0Z28sIGNvbmZpZyk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIHRva2VuIGNvbnN0cnVjdG9ycyBmb3IgYWxsIFRJUDIwIHRva2Vuc1xuICAgKiBAcGFyYW0gdG9rZW5Db25maWdzIC0gQXJyYXkgb2YgdG9rZW4gY29uZmlndXJhdGlvbnMgKG9wdGlvbmFsKVxuICAgKi9cbiAgc3RhdGljIGNyZWF0ZVRva2VuQ29uc3RydWN0b3JzKHRva2VuQ29uZmlncz86IFRpcDIwVG9rZW5Db25maWdbXSk6IE5hbWVkQ29pbkNvbnN0cnVjdG9yW10ge1xuICAgIGNvbnN0IGNvbmZpZ3MgPSB0b2tlbkNvbmZpZ3MgfHwgW107XG4gICAgY29uc3QgdG9rZW5zQ3RvcnM6IE5hbWVkQ29pbkNvbnN0cnVjdG9yW10gPSBbXTtcblxuICAgIGZvciAoY29uc3QgdG9rZW4gb2YgY29uZmlncykge1xuICAgICAgY29uc3QgdG9rZW5Db25zdHJ1Y3RvciA9IFRpcDIwVG9rZW4uY3JlYXRlVG9rZW5Db25zdHJ1Y3Rvcih0b2tlbik7XG4gICAgICAvLyBSZWdpc3RlciBieSB0b2tlbiB0eXBlXG4gICAgICB0b2tlbnNDdG9ycy5wdXNoKHsgbmFtZTogdG9rZW4udHlwZSwgY29pbkNvbnN0cnVjdG9yOiB0b2tlbkNvbnN0cnVjdG9yIH0pO1xuICAgICAgLy8gQWxzbyByZWdpc3RlciBieSBjb250cmFjdCBhZGRyZXNzIGZvciBsb29rdXBzXG4gICAgICB0b2tlbnNDdG9ycy5wdXNoKHsgbmFtZTogdG9rZW4udG9rZW5Db250cmFjdEFkZHJlc3MsIGNvaW5Db25zdHJ1Y3RvcjogdG9rZW5Db25zdHJ1Y3RvciB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdG9rZW5zQ3RvcnM7XG4gIH1cblxuICAvKiogR2V0IHRoZSB0b2tlbiB0eXBlICovXG4gIGdldCB0eXBlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudG9rZW5Db25maWcudHlwZTtcbiAgfVxuXG4gIC8qKiBHZXQgdGhlIHRva2VuIG5hbWUgKi9cbiAgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy50b2tlbkNvbmZpZy5uYW1lO1xuICB9XG5cbiAgLyoqIEdldCB0aGUgYmFzZSBjb2luICovXG4gIGdldCBjb2luKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudG9rZW5Db25maWcuY29pbjtcbiAgfVxuXG4gIC8qKiBHZXQgdGhlIG5ldHdvcmsgKi9cbiAgZ2V0IG5ldHdvcmsoKTogJ01haW5uZXQnIHwgJ1Rlc3RuZXQnIHtcbiAgICByZXR1cm4gdGhpcy50b2tlbkNvbmZpZy5uZXR3b3JrO1xuICB9XG5cbiAgLyoqIEdldCB0aGUgdG9rZW4gY29udHJhY3QgYWRkcmVzcyAqL1xuICBnZXQgdG9rZW5Db250cmFjdEFkZHJlc3MoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy50b2tlbkNvbmZpZy50b2tlbkNvbnRyYWN0QWRkcmVzcztcbiAgfVxuXG4gIC8qKiBHZXQgdG9rZW4gZGVjaW1hbCBwbGFjZXMgKi9cbiAgZ2V0IGRlY2ltYWxQbGFjZXMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy50b2tlbkNvbmZpZy5kZWNpbWFsUGxhY2VzO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIGdldENoYWluKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudG9rZW5Db25maWcudHlwZTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBnZXRGdWxsTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiAnVElQMjAgVG9rZW4nO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIGdldEJhc2VGYWN0b3IoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gTWF0aC5wb3coMTAsIHRoaXMudG9rZW5Db25maWcuZGVjaW1hbFBsYWNlcyk7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgdmFsdWVsZXNzVHJhbnNmZXJBbGxvd2VkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBzdXBwb3J0c1RzcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBnZXRNUENBbGdvcml0aG0oKTogTVBDQWxnb3JpdGhtIHtcbiAgICByZXR1cm4gJ2VjZHNhJztcbiAgfVxuXG4gIC8qKlxuICAgKiBQbGFjZWhvbGRlcjogVmVyaWZ5IGNvaW4gYW5kIHRva2VuIG1hdGNoXG4gICAqIFRPRE86IEltcGxlbWVudCB3aGVuIHRyYW5zYWN0aW9uIGxvZ2ljIGlzIGFkZGVkXG4gICAqL1xuICB2ZXJpZnlDb2luKHR4UHJlYnVpbGQ6IHVua25vd24pOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQbGFjZWhvbGRlcjogR2V0IHNlbmQgbWV0aG9kIGFyZ3VtZW50c1xuICAgKiBUT0RPOiBJbXBsZW1lbnQgZm9yIHRva2VuIHRyYW5zZmVyc1xuICAgKi9cbiAgZ2V0U2VuZE1ldGhvZEFyZ3ModHhJbmZvOiBHZXRTZW5kTWV0aG9kQXJnc09wdGlvbnMpOiBTZW5kTWV0aG9kQXJnc1tdIHtcbiAgICAvLyBUT0RPOiBJbXBsZW1lbnQgZm9yIHRva2VuIHRyYW5zZmVyc1xuICAgIC8vIFJldHVybiBlbXB0eSBhcnJheSB0byBwcmV2ZW50IGRvd25zdHJlYW0gc2VydmljZXMgZnJvbSBicmVha2luZ1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQbGFjZWhvbGRlcjogR2V0IG9wZXJhdGlvbiBmb3IgdG9rZW4gdHJhbnNmZXJcbiAgICogVE9ETzogSW1wbGVtZW50IGZvciB0b2tlbiB0cmFuc2ZlcnNcbiAgICovXG4gIGdldE9wZXJhdGlvbihcbiAgICByZWNpcGllbnQ6IHsgYWRkcmVzczogc3RyaW5nOyBhbW91bnQ6IHN0cmluZyB9LFxuICAgIGV4cGlyZVRpbWU6IG51bWJlcixcbiAgICBjb250cmFjdFNlcXVlbmNlSWQ6IG51bWJlclxuICApOiAoc3RyaW5nIHwgQnVmZmVyKVtdW10ge1xuICAgIC8vIFRPRE86IEltcGxlbWVudCBmb3IgdG9rZW4gdHJhbnNmZXJzXG4gICAgLy8gUmV0dXJuIGVtcHR5IGFycmF5IHRvIHByZXZlbnQgZG93bnN0cmVhbSBzZXJ2aWNlcyBmcm9tIGJyZWFraW5nXG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgLyoqXG4gICAqIFBsYWNlaG9sZGVyOiBRdWVyeSB0b2tlbiBiYWxhbmNlXG4gICAqIFRPRE86IEltcGxlbWVudCB1c2luZyBUZW1wbyBibG9jayBleHBsb3JlciBvciBSUENcbiAgICovXG4gIGFzeW5jIHF1ZXJ5QWRkcmVzc1Rva2VuQmFsYW5jZShcbiAgICB0b2tlbkNvbnRyYWN0QWRkcmVzczogc3RyaW5nLFxuICAgIHdhbGxldEFkZHJlc3M6IHN0cmluZyxcbiAgICBhcGlLZXk/OiBzdHJpbmdcbiAgKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAvLyBUT0RPOiBJbXBsZW1lbnQgdXNpbmcgVGVtcG8gYmxvY2sgZXhwbG9yZXIgb3IgUlBDXG4gICAgLy8gUmV0dXJuIDAgYmFsYW5jZSB0byBwcmV2ZW50IGRvd25zdHJlYW0gc2VydmljZXMgZnJvbSBicmVha2luZ1xuICAgIHJldHVybiAnMCc7XG4gIH1cbn1cbiJdfQ==
|
package/dist/test/unit/utils.js
CHANGED
|
@@ -23,7 +23,7 @@ describe('Tempo Utils', function () {
|
|
|
23
23
|
it('should validate a valid public key', function () {
|
|
24
24
|
// TODO: Add valid public key examples for Tempo
|
|
25
25
|
const validPubKey = '0'.repeat(64);
|
|
26
|
-
utils_1.default.isValidPublicKey(validPubKey).should.be.
|
|
26
|
+
utils_1.default.isValidPublicKey(validPubKey).should.be.false();
|
|
27
27
|
});
|
|
28
28
|
it('should invalidate an invalid public key', function () {
|
|
29
29
|
const invalidPubKey = 'notahexstring';
|
|
@@ -37,7 +37,7 @@ describe('Tempo Utils', function () {
|
|
|
37
37
|
describe('Private Key Validation', function () {
|
|
38
38
|
it('should validate a valid private key', function () {
|
|
39
39
|
const validPrvKey = '0'.repeat(64);
|
|
40
|
-
utils_1.default.isValidPrivateKey(validPrvKey).should.be.
|
|
40
|
+
utils_1.default.isValidPrivateKey(validPrvKey).should.be.false();
|
|
41
41
|
});
|
|
42
42
|
it('should invalidate an invalid private key', function () {
|
|
43
43
|
const invalidPrvKey = 'notahexstring';
|
|
@@ -49,4 +49,4 @@ describe('Tempo Utils', function () {
|
|
|
49
49
|
});
|
|
50
50
|
});
|
|
51
51
|
});
|
|
52
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90ZXN0L3VuaXQvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxnRUFBd0M7QUFFeEMsUUFBUSxDQUFDLGFBQWEsRUFBRTtJQUN0QixRQUFRLENBQUMsb0JBQW9CLEVBQUU7UUFDN0IsRUFBRSxDQUFDLGlDQUFpQyxFQUFFO1lBQ3BDLDZDQUE2QztZQUM3QyxNQUFNLFlBQVksR0FBRyxpQkFBaUIsQ0FBQztZQUN2QyxlQUFLLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdEQsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsc0NBQXNDLEVBQUU7WUFDekMsTUFBTSxjQUFjLEdBQUcsYUFBYSxDQUFDO1lBQ3JDLGVBQUssQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN6RCxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxvQ0FBb0MsRUFBRTtZQUN2QyxlQUFLLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDN0MsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyx1QkFBdUIsRUFBRTtRQUNoQyxFQUFFLENBQUMsb0NBQW9DLEVBQUU7WUFDdkMsZ0RBQWdEO1lBQ2hELE1BQU0sV0FBVyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDbkMsZUFBSyxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDeEQsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMseUNBQXlDLEVBQUU7WUFDNUMsTUFBTSxhQUFhLEdBQUcsZUFBZSxDQUFDO1lBQ3RDLGVBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzFELENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLGtEQUFrRCxFQUFFO1lBQ3JELE1BQU0saUJBQWlCLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUN6QyxlQUFLLENBQUMsZ0JBQWdCLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzlELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsd0JBQXdCLEVBQUU7UUFDakMsRUFBRSxDQUFDLHFDQUFxQyxFQUFFO1lBQ3hDLE1BQU0sV0FBVyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDbkMsZUFBSyxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDekQsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsMENBQTBDLEVBQUU7WUFDN0MsTUFBTSxhQUFhLEdBQUcsZUFBZSxDQUFDO1lBQ3RDLGVBQUssQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzNELENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLG1EQUFtRCxFQUFFO1lBQ3RELE1BQU0saUJBQWlCLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUN6QyxlQUFLLENBQUMsaUJBQWlCLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQy9ELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB1dGlscyBmcm9tICcuLi8uLi9zcmMvbGliL3V0aWxzJztcblxuZGVzY3JpYmUoJ1RlbXBvIFV0aWxzJywgZnVuY3Rpb24gKCkge1xuICBkZXNjcmliZSgnQWRkcmVzcyBWYWxpZGF0aW9uJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdzaG91bGQgdmFsaWRhdGUgYSB2YWxpZCBhZGRyZXNzJywgZnVuY3Rpb24gKCkge1xuICAgICAgLy8gVE9ETzogQWRkIHZhbGlkIGFkZHJlc3MgZXhhbXBsZXMgZm9yIFRlbXBvXG4gICAgICBjb25zdCB2YWxpZEFkZHJlc3MgPSAndmFsaWRBZGRyZXNzMTIzJztcbiAgICAgIHV0aWxzLmlzVmFsaWRBZGRyZXNzKHZhbGlkQWRkcmVzcykuc2hvdWxkLmJlLnRydWUoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgaW52YWxpZGF0ZSBhbiBpbnZhbGlkIGFkZHJlc3MnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBpbnZhbGlkQWRkcmVzcyA9ICdpbnZhbGlkIUAjJCc7XG4gICAgICB1dGlscy5pc1ZhbGlkQWRkcmVzcyhpbnZhbGlkQWRkcmVzcykuc2hvdWxkLmJlLmZhbHNlKCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGludmFsaWRhdGUgYW4gZW1wdHkgYWRkcmVzcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHV0aWxzLmlzVmFsaWRBZGRyZXNzKCcnKS5zaG91bGQuYmUuZmFsc2UoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ1B1YmxpYyBLZXkgVmFsaWRhdGlvbicsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIGEgdmFsaWQgcHVibGljIGtleScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIFRPRE86IEFkZCB2YWxpZCBwdWJsaWMga2V5IGV4YW1wbGVzIGZvciBUZW1wb1xuICAgICAgY29uc3QgdmFsaWRQdWJLZXkgPSAnMCcucmVwZWF0KDY0KTtcbiAgICAgIHV0aWxzLmlzVmFsaWRQdWJsaWNLZXkodmFsaWRQdWJLZXkpLnNob3VsZC5iZS5mYWxzZSgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBpbnZhbGlkYXRlIGFuIGludmFsaWQgcHVibGljIGtleScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGludmFsaWRQdWJLZXkgPSAnbm90YWhleHN0cmluZyc7XG4gICAgICB1dGlscy5pc1ZhbGlkUHVibGljS2V5KGludmFsaWRQdWJLZXkpLnNob3VsZC5iZS5mYWxzZSgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBpbnZhbGlkYXRlIGEgcHVibGljIGtleSB3aXRoIHdyb25nIGxlbmd0aCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHdyb25nTGVuZ3RoUHViS2V5ID0gJzAnLnJlcGVhdCgzMik7XG4gICAgICB1dGlscy5pc1ZhbGlkUHVibGljS2V5KHdyb25nTGVuZ3RoUHViS2V5KS5zaG91bGQuYmUuZmFsc2UoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ1ByaXZhdGUgS2V5IFZhbGlkYXRpb24nLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSBhIHZhbGlkIHByaXZhdGUga2V5JywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdmFsaWRQcnZLZXkgPSAnMCcucmVwZWF0KDY0KTtcbiAgICAgIHV0aWxzLmlzVmFsaWRQcml2YXRlS2V5KHZhbGlkUHJ2S2V5KS5zaG91bGQuYmUuZmFsc2UoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgaW52YWxpZGF0ZSBhbiBpbnZhbGlkIHByaXZhdGUga2V5JywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgaW52YWxpZFBydktleSA9ICdub3RhaGV4c3RyaW5nJztcbiAgICAgIHV0aWxzLmlzVmFsaWRQcml2YXRlS2V5KGludmFsaWRQcnZLZXkpLnNob3VsZC5iZS5mYWxzZSgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBpbnZhbGlkYXRlIGEgcHJpdmF0ZSBrZXkgd2l0aCB3cm9uZyBsZW5ndGgnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB3cm9uZ0xlbmd0aFBydktleSA9ICcwJy5yZXBlYXQoMzIpO1xuICAgICAgdXRpbHMuaXNWYWxpZFByaXZhdGVLZXkod3JvbmdMZW5ndGhQcnZLZXkpLnNob3VsZC5iZS5mYWxzZSgpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
|