@bitgo-beta/sdk-coin-tempo 1.0.0-alpha.2 → 1.0.0-alpha.21
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 +17 -1
- package/dist/src/lib/constants.d.ts.map +1 -1
- package/dist/src/lib/constants.js +22 -5
- package/dist/src/lib/index.d.ts +4 -0
- package/dist/src/lib/index.d.ts.map +1 -1
- package/dist/src/lib/index.js +5 -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 +98 -0
- package/dist/src/lib/tip20Abi.d.ts.map +1 -0
- package/dist/src/lib/tip20Abi.js +62 -0
- package/dist/src/lib/transaction.d.ts +70 -0
- package/dist/src/lib/transaction.d.ts.map +1 -0
- package/dist/src/lib/transaction.js +73 -0
- package/dist/src/lib/transactionBuilder.d.ts +100 -0
- package/dist/src/lib/transactionBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder.js +204 -0
- package/dist/src/lib/types.d.ts +17 -0
- package/dist/src/lib/types.d.ts.map +1 -0
- package/dist/src/lib/types.js +3 -0
- package/dist/src/lib/utils.d.ts +54 -7
- package/dist/src/lib/utils.d.ts.map +1 -1
- package/dist/src/lib/utils.js +122 -16
- 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 +89 -0
- package/dist/src/tip20Token.d.ts.map +1 -0
- package/dist/src/tip20Token.js +198 -0
- package/dist/test/integration/tip20.d.ts +2 -0
- package/dist/test/integration/tip20.d.ts.map +1 -0
- package/dist/test/integration/tip20.js +115 -0
- package/dist/test/unit/transactionBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder.js +252 -0
- package/dist/test/unit/utils.js +6 -5
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +9 -6
package/dist/src/register.js
CHANGED
|
@@ -3,9 +3,34 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.register = void 0;
|
|
4
4
|
const tempo_1 = require("./tempo");
|
|
5
5
|
const ttempo_1 = require("./ttempo");
|
|
6
|
+
const tip20Token_1 = require("./tip20Token");
|
|
7
|
+
/**
|
|
8
|
+
* Register Tempo and TIP20 tokens with the SDK
|
|
9
|
+
* @param sdk - BitGo SDK instance
|
|
10
|
+
*/
|
|
6
11
|
const register = (sdk) => {
|
|
12
|
+
// Register base Tempo coins
|
|
7
13
|
sdk.register('tempo', tempo_1.Tempo.createInstance);
|
|
8
14
|
sdk.register('ttempo', ttempo_1.Ttempo.createInstance);
|
|
15
|
+
// Register TIP20 tokens (skeleton)
|
|
16
|
+
// TODO: Add actual token configurations from @bitgo-beta/statics
|
|
17
|
+
// For now, this creates an empty array which can be populated progressively
|
|
18
|
+
const tip20Tokens = tip20Token_1.Tip20Token.createTokenConstructors([
|
|
19
|
+
// TODO: Add TIP20 token configurations here
|
|
20
|
+
// Example:
|
|
21
|
+
// {
|
|
22
|
+
// type: 'tempo:usdc',
|
|
23
|
+
// coin: 'tempo',
|
|
24
|
+
// network: 'Mainnet',
|
|
25
|
+
// name: 'USD Coin on Tempo',
|
|
26
|
+
// tokenContractAddress: '0x...',
|
|
27
|
+
// decimalPlaces: 6,
|
|
28
|
+
// },
|
|
29
|
+
]);
|
|
30
|
+
// Register each TIP20 token with the SDK
|
|
31
|
+
tip20Tokens.forEach(({ name, coinConstructor }) => {
|
|
32
|
+
sdk.register(name, coinConstructor);
|
|
33
|
+
});
|
|
9
34
|
};
|
|
10
35
|
exports.register = register;
|
|
11
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcmVnaXN0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsbUNBQWdDO0FBQ2hDLHFDQUFrQztBQUNsQyw2Q0FBMEM7QUFFMUM7OztHQUdHO0FBQ0ksTUFBTSxRQUFRLEdBQUcsQ0FBQyxHQUFjLEVBQVEsRUFBRTtJQUMvQyw0QkFBNEI7SUFDNUIsR0FBRyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsYUFBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQzVDLEdBQUcsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLGVBQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUU5QyxtQ0FBbUM7SUFDbkMsaUVBQWlFO0lBQ2pFLDRFQUE0RTtJQUM1RSxNQUFNLFdBQVcsR0FBRyx1QkFBVSxDQUFDLHVCQUF1QixDQUFDO0lBQ3JELDRDQUE0QztJQUM1QyxXQUFXO0lBQ1gsSUFBSTtJQUNKLHdCQUF3QjtJQUN4QixtQkFBbUI7SUFDbkIsd0JBQXdCO0lBQ3hCLCtCQUErQjtJQUMvQixtQ0FBbUM7SUFDbkMsc0JBQXNCO0lBQ3RCLEtBQUs7S0FDTixDQUFDLENBQUM7SUFFSCx5Q0FBeUM7SUFDekMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRSxFQUFFLEVBQUU7UUFDaEQsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFDdEMsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUM7QUF6QlcsUUFBQSxRQUFRLFlBeUJuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJpdEdvQmFzZSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IFRlbXBvIH0gZnJvbSAnLi90ZW1wbyc7XG5pbXBvcnQgeyBUdGVtcG8gfSBmcm9tICcuL3R0ZW1wbyc7XG5pbXBvcnQgeyBUaXAyMFRva2VuIH0gZnJvbSAnLi90aXAyMFRva2VuJztcblxuLyoqXG4gKiBSZWdpc3RlciBUZW1wbyBhbmQgVElQMjAgdG9rZW5zIHdpdGggdGhlIFNES1xuICogQHBhcmFtIHNkayAtIEJpdEdvIFNESyBpbnN0YW5jZVxuICovXG5leHBvcnQgY29uc3QgcmVnaXN0ZXIgPSAoc2RrOiBCaXRHb0Jhc2UpOiB2b2lkID0+IHtcbiAgLy8gUmVnaXN0ZXIgYmFzZSBUZW1wbyBjb2luc1xuICBzZGsucmVnaXN0ZXIoJ3RlbXBvJywgVGVtcG8uY3JlYXRlSW5zdGFuY2UpO1xuICBzZGsucmVnaXN0ZXIoJ3R0ZW1wbycsIFR0ZW1wby5jcmVhdGVJbnN0YW5jZSk7XG5cbiAgLy8gUmVnaXN0ZXIgVElQMjAgdG9rZW5zIChza2VsZXRvbilcbiAgLy8gVE9ETzogQWRkIGFjdHVhbCB0b2tlbiBjb25maWd1cmF0aW9ucyBmcm9tIEBiaXRnby1iZXRhL3N0YXRpY3NcbiAgLy8gRm9yIG5vdywgdGhpcyBjcmVhdGVzIGFuIGVtcHR5IGFycmF5IHdoaWNoIGNhbiBiZSBwb3B1bGF0ZWQgcHJvZ3Jlc3NpdmVseVxuICBjb25zdCB0aXAyMFRva2VucyA9IFRpcDIwVG9rZW4uY3JlYXRlVG9rZW5Db25zdHJ1Y3RvcnMoW1xuICAgIC8vIFRPRE86IEFkZCBUSVAyMCB0b2tlbiBjb25maWd1cmF0aW9ucyBoZXJlXG4gICAgLy8gRXhhbXBsZTpcbiAgICAvLyB7XG4gICAgLy8gICB0eXBlOiAndGVtcG86dXNkYycsXG4gICAgLy8gICBjb2luOiAndGVtcG8nLFxuICAgIC8vICAgbmV0d29yazogJ01haW5uZXQnLFxuICAgIC8vICAgbmFtZTogJ1VTRCBDb2luIG9uIFRlbXBvJyxcbiAgICAvLyAgIHRva2VuQ29udHJhY3RBZGRyZXNzOiAnMHguLi4nLFxuICAgIC8vICAgZGVjaW1hbFBsYWNlczogNixcbiAgICAvLyB9LFxuICBdKTtcblxuICAvLyBSZWdpc3RlciBlYWNoIFRJUDIwIHRva2VuIHdpdGggdGhlIFNES1xuICB0aXAyMFRva2Vucy5mb3JFYWNoKCh7IG5hbWUsIGNvaW5Db25zdHJ1Y3RvciB9KSA9PiB7XG4gICAgc2RrLnJlZ2lzdGVyKG5hbWUsIGNvaW5Db25zdHJ1Y3Rvcik7XG4gIH0pO1xufTtcbiJdfQ==
|
package/dist/src/tempo.d.ts
CHANGED
|
@@ -1,72 +1,63 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* @prettier
|
|
3
|
+
*/
|
|
4
|
+
import { AbstractEthLikeNewCoins, RecoverOptions, OfflineVaultTxInfo, UnsignedSweepTxMPCv2, TransactionBuilder } from '@bitgo-beta/abstract-eth';
|
|
5
|
+
import { BaseCoin, BitGoBase, MPCAlgorithm } from '@bitgo-beta/sdk-core';
|
|
2
6
|
import { BaseCoin as StaticsBaseCoin } from '@bitgo-beta/statics';
|
|
3
|
-
export declare class Tempo extends
|
|
4
|
-
protected readonly _staticsCoin: Readonly<StaticsBaseCoin>;
|
|
7
|
+
export declare class Tempo extends AbstractEthLikeNewCoins {
|
|
5
8
|
protected constructor(bitgo: BitGoBase, staticsCoin?: Readonly<StaticsBaseCoin>);
|
|
9
|
+
/**
|
|
10
|
+
* Factory method to create Tempo instance
|
|
11
|
+
*/
|
|
6
12
|
static createInstance(bitgo: BitGoBase, staticsCoin?: Readonly<StaticsBaseCoin>): BaseCoin;
|
|
7
13
|
/**
|
|
8
|
-
*
|
|
14
|
+
* Get the chain identifier
|
|
9
15
|
*/
|
|
10
|
-
getBaseFactor(): number;
|
|
11
16
|
getChain(): string;
|
|
12
|
-
getFamily(): string;
|
|
13
|
-
getFullName(): string;
|
|
14
17
|
/**
|
|
15
|
-
*
|
|
16
|
-
* @returns {boolean} True if okay to send 0 value, false otherwise
|
|
18
|
+
* Get the full chain name
|
|
17
19
|
*/
|
|
18
|
-
|
|
20
|
+
getFullName(): string;
|
|
19
21
|
/**
|
|
20
|
-
*
|
|
21
|
-
* @param address
|
|
22
|
+
* Get the base factor (1 TEMPO = 1e18 wei, like Ethereum)
|
|
22
23
|
*/
|
|
23
|
-
|
|
24
|
+
getBaseFactor(): number;
|
|
24
25
|
/**
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
* @param seed
|
|
28
|
-
* @returns {Object} object with generated pub, prv
|
|
26
|
+
* Check if value-less transfers are allowed
|
|
27
|
+
* TODO: Update based on Tempo requirements
|
|
29
28
|
*/
|
|
30
|
-
|
|
29
|
+
valuelessTransferAllowed(): boolean;
|
|
31
30
|
/**
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
* @param {String} pub the pub to be checked
|
|
35
|
-
* @returns {Boolean} is it valid?
|
|
31
|
+
* Check if TSS is supported
|
|
36
32
|
*/
|
|
37
|
-
|
|
33
|
+
supportsTss(): boolean;
|
|
38
34
|
/**
|
|
39
|
-
*
|
|
40
|
-
* @param params
|
|
41
|
-
* @param params.txPrebuild
|
|
42
|
-
* @param params.txParams
|
|
43
|
-
* @returns {boolean}
|
|
35
|
+
* Get the MPC algorithm (ECDSA for EVM chains)
|
|
44
36
|
*/
|
|
45
|
-
|
|
37
|
+
getMPCAlgorithm(): MPCAlgorithm;
|
|
46
38
|
/**
|
|
47
|
-
* Check if
|
|
48
|
-
* @param params
|
|
39
|
+
* Check if message signing is supported
|
|
49
40
|
*/
|
|
50
|
-
|
|
41
|
+
supportsMessageSigning(): boolean;
|
|
51
42
|
/**
|
|
52
|
-
*
|
|
53
|
-
* @param params
|
|
43
|
+
* Check if typed data signing is supported (EIP-712)
|
|
54
44
|
*/
|
|
55
|
-
|
|
45
|
+
supportsSigningTypedData(): boolean;
|
|
56
46
|
/**
|
|
57
|
-
*
|
|
58
|
-
*
|
|
47
|
+
* Build unsigned sweep transaction for TSS
|
|
48
|
+
* TODO: Implement sweep transaction logic
|
|
59
49
|
*/
|
|
60
|
-
|
|
50
|
+
protected buildUnsignedSweepTxnTSS(params: RecoverOptions): Promise<OfflineVaultTxInfo | UnsignedSweepTxMPCv2>;
|
|
61
51
|
/**
|
|
62
|
-
*
|
|
63
|
-
*
|
|
52
|
+
* Query block explorer for recovery information
|
|
53
|
+
* TODO: Implement when Tempo block explorer is available
|
|
64
54
|
*/
|
|
65
|
-
|
|
55
|
+
recoveryBlockchainExplorerQuery(query: Record<string, string>, apiKey?: string): Promise<Record<string, unknown>>;
|
|
66
56
|
/**
|
|
67
|
-
*
|
|
68
|
-
*
|
|
57
|
+
* Get transaction builder for Tempo
|
|
58
|
+
* TODO: Implement TransactionBuilder for Tempo
|
|
59
|
+
* @protected
|
|
69
60
|
*/
|
|
70
|
-
|
|
61
|
+
protected getTransactionBuilder(): TransactionBuilder;
|
|
71
62
|
}
|
|
72
63
|
//# sourceMappingURL=tempo.d.ts.map
|
package/dist/src/tempo.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tempo.d.ts","sourceRoot":"","sources":["../../src/tempo.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,
|
|
1
|
+
{"version":3,"file":"tempo.d.ts","sourceRoot":"","sources":["../../src/tempo.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EACL,uBAAuB,EACvB,cAAc,EACd,kBAAkB,EAClB,oBAAoB,EACpB,kBAAkB,EACnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzE,OAAO,EAAE,QAAQ,IAAI,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAElE,qBAAa,KAAM,SAAQ,uBAAuB;IAChD,SAAS,aAAa,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC;IAI/E;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC,GAAG,QAAQ;IAI1F;;OAEG;IACH,QAAQ,IAAI,MAAM;IAIlB;;OAEG;IACH,WAAW,IAAI,MAAM;IAIrB;;OAEG;IACH,aAAa,IAAI,MAAM;IAIvB;;;OAGG;IACH,wBAAwB,IAAI,OAAO;IAInC;;OAEG;IACH,WAAW,IAAI,OAAO;IAItB;;OAEG;IACH,eAAe,IAAI,YAAY;IAI/B;;OAEG;IACH,sBAAsB,IAAI,OAAO;IAIjC;;OAEG;IACH,wBAAwB,IAAI,OAAO;IAInC;;;OAGG;cACa,wBAAwB,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,kBAAkB,GAAG,oBAAoB,CAAC;IAMpH;;;OAGG;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;IAMnC;;;;OAIG;IACH,SAAS,CAAC,qBAAqB,IAAI,kBAAkB;CAKtD"}
|
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,89 @@
|
|
|
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
|
+
* Verify that the transaction coin/token matches this token
|
|
63
|
+
* @param txPrebuild - Transaction prebuild object
|
|
64
|
+
* @returns true if valid, false otherwise
|
|
65
|
+
*/
|
|
66
|
+
verifyCoin(txPrebuild: {
|
|
67
|
+
coin?: string;
|
|
68
|
+
token?: string;
|
|
69
|
+
}): boolean;
|
|
70
|
+
/**
|
|
71
|
+
* Get send method arguments for TIP-20 token transfer with memo
|
|
72
|
+
* @param txInfo - Transaction information including recipient and amount
|
|
73
|
+
* @returns Array of send method arguments for ABI encoding
|
|
74
|
+
*/
|
|
75
|
+
getSendMethodArgs(txInfo: GetSendMethodArgsOptions): SendMethodArgs[];
|
|
76
|
+
/**
|
|
77
|
+
* Get operation object for TIP-20 token transfer (for batch transactions)
|
|
78
|
+
* @param recipient - Recipient information with address, amount, and optional memo
|
|
79
|
+
* @param expireTime - Transaction expiration time
|
|
80
|
+
* @param contractSequenceId - Contract sequence ID
|
|
81
|
+
* @returns Operation array for ABI encoding
|
|
82
|
+
*/
|
|
83
|
+
getOperation(recipient: {
|
|
84
|
+
address: string;
|
|
85
|
+
amount: string;
|
|
86
|
+
memo?: string;
|
|
87
|
+
}, expireTime: number, contractSequenceId: number): (string | Buffer)[][];
|
|
88
|
+
}
|
|
89
|
+
//# 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;AAEpF,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAGhC;;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;;;;OAIG;IACH,UAAU,CAAC,UAAU,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO;IAelE;;;;OAIG;IACH,iBAAiB,CAAC,MAAM,EAAE,wBAAwB,GAAG,cAAc,EAAE;IA+DrE;;;;;;OAMG;IACH,YAAY,CACV,SAAS,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,EAC7D,UAAU,EAAE,MAAM,EAClB,kBAAkB,EAAE,MAAM,GACzB,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,EAAE;CA0BzB"}
|