@bitgo-beta/sdk-coin-tempo 1.0.1-beta.31 → 1.0.1-beta.310
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 +21 -1
- package/dist/src/lib/constants.d.ts.map +1 -1
- package/dist/src/lib/constants.js +25 -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 +5 -25
- package/dist/src/lib/keyPair.d.ts.map +1 -1
- package/dist/src/lib/keyPair.js +9 -97
- 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 +144 -0
- package/dist/src/lib/transaction.d.ts.map +1 -0
- package/dist/src/lib/transaction.js +216 -0
- package/dist/src/lib/transactionBuilder.d.ts +139 -0
- package/dist/src/lib/transactionBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder.js +408 -0
- package/dist/src/lib/types.d.ts +27 -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 +70 -7
- package/dist/src/lib/utils.d.ts.map +1 -1
- package/dist/src/lib/utils.js +148 -16
- package/dist/src/register.d.ts.map +1 -1
- package/dist/src/register.js +5 -1
- package/dist/src/tempo.d.ts +95 -41
- package/dist/src/tempo.d.ts.map +1 -1
- package/dist/src/tempo.js +447 -76
- package/dist/src/tip20Token.d.ts +83 -0
- package/dist/src/tip20Token.d.ts.map +1 -0
- package/dist/src/tip20Token.js +202 -0
- package/dist/test/integration/tip20.d.ts +7 -0
- package/dist/test/integration/tip20.d.ts.map +1 -0
- package/dist/test/integration/tip20.js +178 -0
- package/dist/test/resources/tempo.d.ts +61 -0
- package/dist/test/resources/tempo.d.ts.map +1 -0
- package/dist/test/resources/tempo.js +79 -0
- package/dist/test/unit/index.js +172 -3
- package/dist/test/unit/tempo.d.ts +2 -0
- package/dist/test/unit/tempo.d.ts.map +1 -0
- package/dist/test/unit/tempo.js +207 -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 +858 -0
- package/dist/test/unit/utils.js +6 -5
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +12 -7
package/dist/src/lib/utils.js
CHANGED
|
@@ -1,40 +1,172 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Tempo Utility Functions
|
|
4
|
+
*
|
|
5
|
+
* Since Tempo is EVM-compatible, we can reuse Ethereum utilities
|
|
6
|
+
*/
|
|
2
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
8
|
exports.isValidAddress = isValidAddress;
|
|
4
9
|
exports.isValidPublicKey = isValidPublicKey;
|
|
5
10
|
exports.isValidPrivateKey = isValidPrivateKey;
|
|
11
|
+
exports.amountToTip20Units = amountToTip20Units;
|
|
12
|
+
exports.tip20UnitsToAmount = tip20UnitsToAmount;
|
|
13
|
+
exports.stringToBytes32 = stringToBytes32;
|
|
14
|
+
exports.encodeTip20TransferWithMemo = encodeTip20TransferWithMemo;
|
|
15
|
+
exports.isValidTip20Amount = isValidTip20Amount;
|
|
16
|
+
exports.isTip20Transaction = isTip20Transaction;
|
|
17
|
+
exports.isValidMemoId = isValidMemoId;
|
|
18
|
+
exports.isValidHexData = isValidHexData;
|
|
19
|
+
const secp256k1_1 = require("@bitgo-beta/secp256k1");
|
|
20
|
+
const ethers_1 = require("ethers");
|
|
6
21
|
const constants_1 = require("./constants");
|
|
22
|
+
const tip20Abi_1 = require("./tip20Abi");
|
|
23
|
+
const AA_TX_HEX_REGEX = new RegExp(`^${constants_1.AA_TRANSACTION_TYPE}[0-9a-f]*$`, 'i');
|
|
7
24
|
/**
|
|
8
|
-
*
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* Check if the address is valid
|
|
12
|
-
* @param address
|
|
25
|
+
* Check if address is valid Ethereum-style address
|
|
26
|
+
* Uses ethers.js isAddress for proper validation including checksum
|
|
13
27
|
*/
|
|
14
28
|
function isValidAddress(address) {
|
|
15
|
-
|
|
16
|
-
|
|
29
|
+
if (typeof address !== 'string') {
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
return ethers_1.ethers.utils.isAddress(address);
|
|
17
33
|
}
|
|
18
34
|
/**
|
|
19
|
-
* Check if
|
|
20
|
-
*
|
|
35
|
+
* Check if public key is valid (BIP32 xpub format)
|
|
36
|
+
* TODO: Replace with ETH utils when implementing
|
|
21
37
|
*/
|
|
22
38
|
function isValidPublicKey(publicKey) {
|
|
23
|
-
|
|
24
|
-
|
|
39
|
+
if (typeof publicKey !== 'string') {
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
try {
|
|
43
|
+
const hdNode = secp256k1_1.bip32.fromBase58(publicKey);
|
|
44
|
+
return hdNode.isNeutered();
|
|
45
|
+
}
|
|
46
|
+
catch (e) {
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
25
49
|
}
|
|
26
50
|
/**
|
|
27
|
-
* Check if
|
|
28
|
-
*
|
|
51
|
+
* Check if private key is valid (BIP32 xprv format)
|
|
52
|
+
* TODO: Replace with ETH utils when implementing
|
|
29
53
|
*/
|
|
30
54
|
function isValidPrivateKey(privateKey) {
|
|
31
|
-
|
|
32
|
-
|
|
55
|
+
if (typeof privateKey !== 'string') {
|
|
56
|
+
return false;
|
|
57
|
+
}
|
|
58
|
+
try {
|
|
59
|
+
const hdNode = secp256k1_1.bip32.fromBase58(privateKey);
|
|
60
|
+
return !hdNode.isNeutered();
|
|
61
|
+
}
|
|
62
|
+
catch (e) {
|
|
63
|
+
return false;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* TIP-20 Utility Functions
|
|
68
|
+
*/
|
|
69
|
+
/**
|
|
70
|
+
* Convert human-readable amount to TIP-20 units (6 decimals)
|
|
71
|
+
* @param amount - Human-readable amount (e.g., "1.5")
|
|
72
|
+
* @returns Amount in TIP-20 smallest units as bigint
|
|
73
|
+
* @example amountToTip20Units("1.5") => 1500000n
|
|
74
|
+
*/
|
|
75
|
+
function amountToTip20Units(amount) {
|
|
76
|
+
try {
|
|
77
|
+
return BigInt(ethers_1.ethers.utils.parseUnits(amount, constants_1.TIP20_DECIMALS).toString());
|
|
78
|
+
}
|
|
79
|
+
catch (error) {
|
|
80
|
+
throw new Error(`Invalid amount format: ${amount}. Expected decimal string.`);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Convert TIP-20 units (6 decimals) to human-readable amount
|
|
85
|
+
* @param units - Amount in TIP-20 smallest units
|
|
86
|
+
* @returns Human-readable amount string
|
|
87
|
+
* @example tip20UnitsToAmount(1500000n) => "1.5"
|
|
88
|
+
*/
|
|
89
|
+
function tip20UnitsToAmount(units) {
|
|
90
|
+
return ethers_1.ethers.utils.formatUnits(units.toString(), constants_1.TIP20_DECIMALS);
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Convert string to bytes32 for memo field
|
|
94
|
+
* @param memo - Memo string to encode
|
|
95
|
+
* @returns Hex-encoded bytes32 value
|
|
96
|
+
* @example stringToBytes32("INVOICE-001") => "0x494e564f4943452d30303100..."
|
|
97
|
+
*/
|
|
98
|
+
function stringToBytes32(memo) {
|
|
99
|
+
const memoByteLength = new TextEncoder().encode(memo).length;
|
|
100
|
+
if (memoByteLength > 32) {
|
|
101
|
+
throw new Error(`Memo too long: ${memoByteLength} bytes. Maximum 32 bytes.`);
|
|
102
|
+
}
|
|
103
|
+
const hexString = ethers_1.ethers.utils.hexlify(ethers_1.ethers.utils.toUtf8Bytes(memo));
|
|
104
|
+
return ethers_1.ethers.utils.hexZeroPad(hexString, 32);
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Encode TIP-20 transferWithMemo function call using ethers.js
|
|
108
|
+
* @param to - Recipient address
|
|
109
|
+
* @param amount - Amount in TIP-20 units (bigint)
|
|
110
|
+
* @param memo - Optional memo string
|
|
111
|
+
* @returns Encoded function call data
|
|
112
|
+
*/
|
|
113
|
+
function encodeTip20TransferWithMemo(to, amount, memo) {
|
|
114
|
+
const memoBytes = memo ? stringToBytes32(memo) : ethers_1.ethers.utils.hexZeroPad('0x', 32);
|
|
115
|
+
const iface = new ethers_1.ethers.utils.Interface(tip20Abi_1.TIP20_TRANSFER_WITH_MEMO_ABI);
|
|
116
|
+
return iface.encodeFunctionData('transferWithMemo', [to, amount, memoBytes]);
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Validate TIP-20 amount format
|
|
120
|
+
* @param amount - Amount string to validate
|
|
121
|
+
* @returns true if valid, false otherwise
|
|
122
|
+
*/
|
|
123
|
+
function isValidTip20Amount(amount) {
|
|
124
|
+
if (typeof amount !== 'string' || amount.trim() === '') {
|
|
125
|
+
return false;
|
|
126
|
+
}
|
|
127
|
+
// Check for negative amounts before parsing
|
|
128
|
+
if (amount.startsWith('-')) {
|
|
129
|
+
return false;
|
|
130
|
+
}
|
|
131
|
+
try {
|
|
132
|
+
const parsed = ethers_1.ethers.utils.parseUnits(amount, constants_1.TIP20_DECIMALS);
|
|
133
|
+
return parsed.gte(0);
|
|
134
|
+
}
|
|
135
|
+
catch {
|
|
136
|
+
return false;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Check if a raw transaction string is a Tempo AA transaction (type 0x76)
|
|
141
|
+
*/
|
|
142
|
+
function isTip20Transaction(raw) {
|
|
143
|
+
return AA_TX_HEX_REGEX.test(raw);
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Validate that a memoId is a valid non-negative integer string
|
|
147
|
+
*/
|
|
148
|
+
function isValidMemoId(memoId) {
|
|
149
|
+
return typeof memoId === 'string' && /^(0|[1-9]\d*)$/.test(memoId);
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Validate that a string is a non-empty 0x-prefixed hex string
|
|
153
|
+
* Used to validate pre-encoded calldata for raw contract calls
|
|
154
|
+
*/
|
|
155
|
+
function isValidHexData(data) {
|
|
156
|
+
return typeof data === 'string' && /^0x[0-9a-fA-F]+$/.test(data) && data.length > 2 && data.length % 2 === 0;
|
|
33
157
|
}
|
|
34
158
|
const utils = {
|
|
35
159
|
isValidAddress,
|
|
36
160
|
isValidPublicKey,
|
|
37
161
|
isValidPrivateKey,
|
|
162
|
+
amountToTip20Units,
|
|
163
|
+
tip20UnitsToAmount,
|
|
164
|
+
stringToBytes32,
|
|
165
|
+
encodeTip20TransferWithMemo,
|
|
166
|
+
isValidTip20Amount,
|
|
167
|
+
isTip20Transaction,
|
|
168
|
+
isValidMemoId,
|
|
169
|
+
isValidHexData,
|
|
38
170
|
};
|
|
39
171
|
exports.default = utils;
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBVUEsd0NBR0M7QUFNRCw0Q0FHQztBQU1ELDhDQUdDO0FBL0JELDJDQUEwRTtBQUUxRTs7R0FFRztBQUVIOzs7R0FHRztBQUNILFNBQWdCLGNBQWMsQ0FBQyxPQUFlO0lBQzVDLHNEQUFzRDtJQUN0RCxPQUFPLCtCQUFtQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUMzQyxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBZ0IsZ0JBQWdCLENBQUMsU0FBaUI7SUFDaEQseURBQXlEO0lBQ3pELE9BQU8sa0NBQXNCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ2hELENBQUM7QUFFRDs7O0dBR0c7QUFDSCxTQUFnQixpQkFBaUIsQ0FBQyxVQUFrQjtJQUNsRCwwREFBMEQ7SUFDMUQsT0FBTyxVQUFVLENBQUMsTUFBTSxLQUFLLEVBQUUsQ0FBQztBQUNsQyxDQUFDO0FBRUQsTUFBTSxLQUFLLEdBQUc7SUFDWixjQUFjO0lBQ2QsZ0JBQWdCO0lBQ2hCLGlCQUFpQjtDQUNsQixDQUFDO0FBRUYsa0JBQWUsS0FBSyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVkFMSURfQUREUkVTU19SRUdFWCwgVkFMSURfUFVCTElDX0tFWV9SRUdFWCB9IGZyb20gJy4vY29uc3RhbnRzJztcblxuLyoqXG4gKiBVdGlsaXR5IGZ1bmN0aW9ucyBmb3IgVGVtcG9cbiAqL1xuXG4vKipcbiAqIENoZWNrIGlmIHRoZSBhZGRyZXNzIGlzIHZhbGlkXG4gKiBAcGFyYW0gYWRkcmVzc1xuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZEFkZHJlc3MoYWRkcmVzczogc3RyaW5nKTogYm9vbGVhbiB7XG4gIC8vIFRPRE86IEltcGxlbWVudCBwcm9wZXIgYWRkcmVzcyB2YWxpZGF0aW9uIGZvciBUZW1wb1xuICByZXR1cm4gVkFMSURfQUREUkVTU19SRUdFWC50ZXN0KGFkZHJlc3MpO1xufVxuXG4vKipcbiAqIENoZWNrIGlmIHRoZSBwdWJsaWMga2V5IGlzIHZhbGlkXG4gKiBAcGFyYW0gcHVibGljS2V5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkUHVibGljS2V5KHB1YmxpY0tleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIC8vIFRPRE86IEltcGxlbWVudCBwcm9wZXIgcHVibGljIGtleSB2YWxpZGF0aW9uIGZvciBUZW1wb1xuICByZXR1cm4gVkFMSURfUFVCTElDX0tFWV9SRUdFWC50ZXN0KHB1YmxpY0tleSk7XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgdGhlIHByaXZhdGUga2V5IGlzIHZhbGlkXG4gKiBAcGFyYW0gcHJpdmF0ZUtleVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZFByaXZhdGVLZXkocHJpdmF0ZUtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIC8vIFRPRE86IEltcGxlbWVudCBwcm9wZXIgcHJpdmF0ZSBrZXkgdmFsaWRhdGlvbiBmb3IgVGVtcG9cbiAgcmV0dXJuIHByaXZhdGVLZXkubGVuZ3RoID09PSA2NDtcbn1cblxuY29uc3QgdXRpbHMgPSB7XG4gIGlzVmFsaWRBZGRyZXNzLFxuICBpc1ZhbGlkUHVibGljS2V5LFxuICBpc1ZhbGlkUHJpdmF0ZUtleSxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHV0aWxzO1xuIl19
|
|
172
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7OztHQUlHOztBQWdCSCx3Q0FLQztBQU1ELDRDQVVDO0FBTUQsOENBVUM7QUFZRCxnREFNQztBQVFELGdEQUVDO0FBUUQsMENBT0M7QUFTRCxrRUFLQztBQU9ELGdEQWNDO0FBS0QsZ0RBRUM7QUFLRCxzQ0FFQztBQU1ELHdDQUVDO0FBdkpELHFEQUE4QztBQUM5QyxtQ0FBZ0M7QUFDaEMsMkNBQWtFO0FBQ2xFLHlDQUEwRDtBQUUxRCxNQUFNLGVBQWUsR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLCtCQUFtQixZQUFZLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFLN0U7OztHQUdHO0FBQ0gsU0FBZ0IsY0FBYyxDQUFDLE9BQWU7SUFDNUMsSUFBSSxPQUFPLE9BQU8sS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUNoQyxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFDRCxPQUFPLGVBQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3pDLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxTQUFnQixnQkFBZ0IsQ0FBQyxTQUFpQjtJQUNoRCxJQUFJLE9BQU8sU0FBUyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQ2xDLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUNELElBQUksQ0FBQztRQUNILE1BQU0sTUFBTSxHQUFHLGlCQUFLLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzNDLE9BQU8sTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ1gsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0FBQ0gsQ0FBQztBQUVEOzs7R0FHRztBQUNILFNBQWdCLGlCQUFpQixDQUFDLFVBQWtCO0lBQ2xELElBQUksT0FB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QUN2QixDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0FBQ0gsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0Isa0JBQWtCLENBQUMsR0FBVztJQUM1QyxPQUFPLGVBQWUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDbkMsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsYUFBYSxDQUFDLE1BQWM7SUFDMUMsT0FBTyxPQUFPLE1BQU0sS0FBSyxRQUFRLElBQUksZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3JFLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxTQUFnQixjQUFjLENBQUMsSUFBWTtJQUN6QyxPQUFPLE9BQU8sSUFBSSxLQUFLLFFBQVEsSUFBSSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQy9HLENBQUM7QUFFRCxNQUFNLEtBQUssR0FBRztJQUNaLGNBQWM7SUFDZCxnQkFBZ0I7SUFDaEIsaUJBQWlCO0lBQ2pCLGtCQUFrQjtJQUNsQixrQkFBa0I7SUFDbEIsZUFBZTtJQUNmLDJCQUEyQjtJQUMzQixrQkFBa0I7SUFDbEIsa0JBQWtCO0lBQ2xCLGFBQWE7SUFDYixjQUFjO0NBQ2YsQ0FBQztBQUVGLGtCQUFlLEtBQUssQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGVtcG8gVXRpbGl0eSBGdW5jdGlvbnNcbiAqXG4gKiBTaW5jZSBUZW1wbyBpcyBFVk0tY29tcGF0aWJsZSwgd2UgY2FuIHJldXNlIEV0aGVyZXVtIHV0aWxpdGllc1xuICovXG5cbmltcG9ydCB7IGJpcDMyIH0gZnJvbSAnQGJpdGdvLWJldGEvc2VjcDI1NmsxJztcbmltcG9ydCB7IGV0aGVycyB9IGZyb20gJ2V0aGVycyc7XG5pbXBvcnQgeyBBQV9UUkFOU0FDVElPTl9UWVBFLCBUSVAyMF9ERUNJTUFMUyB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IFRJUDIwX1RSQU5TRkVSX1dJVEhfTUVNT19BQkkgfSBmcm9tICcuL3RpcDIwQWJpJztcblxuY29uc3QgQUFfVFhfSEVYX1JFR0VYID0gbmV3IFJlZ0V4cChgXiR7QUFfVFJBTlNBQ1RJT05fVFlQRX1bMC05YS1mXSokYCwgJ2knKTtcblxudHlwZSBBZGRyZXNzID0gc3RyaW5nO1xudHlwZSBIZXggPSBzdHJpbmc7XG5cbi8qKlxuICogQ2hlY2sgaWYgYWRkcmVzcyBpcyB2YWxpZCBFdGhlcmV1bS1zdHlsZSBhZGRyZXNzXG4gKiBVc2VzIGV0aGVycy5qcyBpc0FkZHJlc3MgZm9yIHByb3BlciB2YWxpZGF0aW9uIGluY2x1ZGluZyBjaGVja3N1bVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZEFkZHJlc3MoYWRkcmVzczogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGlmICh0eXBlb2YgYWRkcmVzcyAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIGV0aGVycy51dGlscy5pc0FkZHJlc3MoYWRkcmVzcyk7XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgcHVibGljIGtleSBpcyB2YWxpZCAoQklQMzIgeHB1YiBmb3JtYXQpXG4gKiBUT0RPOiBSZXBsYWNlIHdpdGggRVRIIHV0aWxzIHdoZW4gaW1wbGVtZW50aW5nXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkUHVibGljS2V5KHB1YmxpY0tleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGlmICh0eXBlb2YgcHVibGljS2V5ICE9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB0cnkge1xuICAgIGNvbnN0IGhkTm9kZSA9IGJpcDMyLmZyb21CYXNlNTgocHVibGljS2V5KTtcbiAgICByZXR1cm4gaGROb2RlLmlzTmV1dGVyZWQoKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vKipcbiAqIENoZWNrIGlmIHByaXZhdGUga2V5IGlzIHZhbGlkIChCSVAzMiB4cHJ2IGZvcm1hdClcbiAqIFRPRE86IFJlcGxhY2Ugd2l0aCBFVEggdXRpbHMgd2hlbiBpbXBsZW1lbnRpbmdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRQcml2YXRlS2V5KHByaXZhdGVLZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBpZiAodHlwZW9mIHByaXZhdGVLZXkgIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHRyeSB7XG4gICAgY29uc3QgaGROb2RlID0gYmlwMzIuZnJvbUJhc2U1OChwcml2YXRlS2V5KTtcbiAgICByZXR1cm4gIWhkTm9kZS5pc05ldXRlcmVkKCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLyoqXG4gKiBUSVAtMjAgVXRpbGl0eSBGdW5jdGlvbnNcbiAqL1xuXG4vKipcbiAqIENvbnZlcnQgaHVtYW4tcmVhZGFibGUgYW1vdW50IHRvIFRJUC0yMCB1bml0cyAoNiBkZWNpbWFscylcbiAqIEBwYXJhbSBhbW91bnQgLSBIdW1hbi1yZWFkYWJsZSBhbW91bnQgKGUuZy4sIFwiMS41XCIpXG4gKiBAcmV0dXJucyBBbW91bnQgaW4gVElQLTIwIHNtYWxsZXN0IHVuaXRzIGFzIGJpZ2ludFxuICogQGV4YW1wbGUgYW1vdW50VG9UaXAyMFVuaXRzKFwiMS41XCIpID0+IDE1MDAwMDBuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhbW91bnRUb1RpcDIwVW5pdHMoYW1vdW50OiBzdHJpbmcpOiBiaWdpbnQge1xuICB0cnkge1xuICAgIHJldHVybiBCaWdJbnQoZXRoZXJzLnV0aWxzLnBhcnNlVW5pdHMoYW1vdW50LCBUSVAyMF9ERUNJTUFMUykudG9TdHJpbmcoKSk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGFtb3VudCBmb3JtYXQ6ICR7YW1vdW50fS4gRXhwZWN0ZWQgZGVjaW1hbCBzdHJpbmcuYCk7XG4gIH1cbn1cblxuLyoqXG4gKiBDb252ZXJ0IFRJUC0yMCB1bml0cyAoNiBkZWNpbWFscykgdG8gaHVtYW4tcmVhZGFibGUgYW1vdW50XG4gKiBAcGFyYW0gdW5pdHMgLSBBbW91bnQgaW4gVElQLTIwIHNtYWxsZXN0IHVuaXRzXG4gKiBAcmV0dXJucyBIdW1hbi1yZWFkYWJsZSBhbW91bnQgc3RyaW5nXG4gKiBAZXhhbXBsZSB0aXAyMFVuaXRzVG9BbW91bnQoMTUwMDAwMG4pID0+IFwiMS41XCJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRpcDIwVW5pdHNUb0Ftb3VudCh1bml0czogYmlnaW50KTogc3RyaW5nIHtcbiAgcmV0dXJuIGV0aGVycy51dGlscy5mb3JtYXRVbml0cyh1bml0cy50b1N0cmluZygpLCBUSVAyMF9ERUNJTUFMUyk7XG59XG5cbi8qKlxuICogQ29udmVydCBzdHJpbmcgdG8gYnl0ZXMzMiBmb3IgbWVtbyBmaWVsZFxuICogQHBhcmFtIG1lbW8gLSBNZW1vIHN0cmluZyB0byBlbmNvZGVcbiAqIEByZXR1cm5zIEhleC1lbmNvZGVkIGJ5dGVzMzIgdmFsdWVcbiAqIEBleGFtcGxlIHN0cmluZ1RvQnl0ZXMzMihcIklOVk9JQ0UtMDAxXCIpID0+IFwiMHg0OTRlNTY0ZjQ5NDM0NTJkMzAzMDMxMDAuLi5cIlxuICovXG5leHBvcnQgZnVuY3Rpb24gc3RyaW5nVG9CeXRlczMyKG1lbW86IHN0cmluZyk6IEhleCB7XG4gIGNvbnN0IG1lbW9CeXRlTGVuZ3RoID0gbmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKG1lbW8pLmxlbmd0aDtcbiAgaWYgKG1lbW9CeXRlTGVuZ3RoID4gMzIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYE1lbW8gdG9vIGxvbmc6ICR7bWVtb0J5dGVMZW5ndGh9IGJ5dGVzLiBNYXhpbXVtIDMyIGJ5dGVzLmApO1xuICB9XG4gIGNvbnN0IGhleFN0cmluZyA9IGV0aGVycy51dGlscy5oZXhsaWZ5KGV0aGVycy51dGlscy50b1V0ZjhCeXRlcyhtZW1vKSk7XG4gIHJldHVybiBldGhlcnMudXRpbHMuaGV4WmVyb1BhZChoZXhTdHJpbmcsIDMyKTtcbn1cblxuLyoqXG4gKiBFbmNvZGUgVElQLTIwIHRyYW5zZmVyV2l0aE1lbW8gZnVuY3Rpb24gY2FsbCB1c2luZyBldGhlcnMuanNcbiAqIEBwYXJhbSB0byAtIFJlY2lwaWVudCBhZGRyZXNzXG4gKiBAcGFyYW0gYW1vdW50IC0gQW1vdW50IGluIFRJUC0yMCB1bml0cyAoYmlnaW50KVxuICogQHBhcmFtIG1lbW8gLSBPcHRpb25hbCBtZW1vIHN0cmluZ1xuICogQHJldHVybnMgRW5jb2RlZCBmdW5jdGlvbiBjYWxsIGRhdGFcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVuY29kZVRpcDIwVHJhbnNmZXJXaXRoTWVtbyh0bzogQWRkcmVzcywgYW1vdW50OiBiaWdpbnQsIG1lbW8/OiBzdHJpbmcpOiBIZXgge1xuICBjb25zdCBtZW1vQnl0ZXMgPSBtZW1vID8gc3RyaW5nVG9CeXRlczMyKG1lbW8pIDogZXRoZXJzLnV0aWxzLmhleFplcm9QYWQoJzB4JywgMzIpO1xuXG4gIGNvbnN0IGlmYWNlID0gbmV3IGV0aGVycy51dGlscy5JbnRlcmZhY2UoVElQMjBfVFJBTlNGRVJfV0lUSF9NRU1PX0FCSSk7XG4gIHJldHVybiBpZmFjZS5lbmNvZGVGdW5jdGlvbkRhdGEoJ3RyYW5zZmVyV2l0aE1lbW8nLCBbdG8sIGFtb3VudCwgbWVtb0J5dGVzXSk7XG59XG5cbi8qKlxuICogVmFsaWRhdGUgVElQLTIwIGFtb3VudCBmb3JtYXRcbiAqIEBwYXJhbSBhbW91bnQgLSBBbW91bnQgc3RyaW5nIHRvIHZhbGlkYXRlXG4gKiBAcmV0dXJucyB0cnVlIGlmIHZhbGlkLCBmYWxzZSBvdGhlcndpc2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRUaXAyMEFtb3VudChhbW91bnQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBpZiAodHlwZW9mIGFtb3VudCAhPT0gJ3N0cmluZycgfHwgYW1vdW50LnRyaW0oKSA9PT0gJycpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgLy8gQ2hlY2sgZm9yIG5lZ2F0aXZlIGFtb3VudHMgYmVmb3JlIHBhcnNpbmdcbiAgaWYgKGFtb3VudC5zdGFydHNXaXRoKCctJykpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdHJ5IHtcbiAgICBjb25zdCBwYXJzZWQgPSBldGhlcnMudXRpbHMucGFyc2VVbml0cyhhbW91bnQsIFRJUDIwX0RFQ0lNQUxTKTtcbiAgICByZXR1cm4gcGFyc2VkLmd0ZSgwKTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgYSByYXcgdHJhbnNhY3Rpb24gc3RyaW5nIGlzIGEgVGVtcG8gQUEgdHJhbnNhY3Rpb24gKHR5cGUgMHg3NilcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVGlwMjBUcmFuc2FjdGlvbihyYXc6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gQUFfVFhfSEVYX1JFR0VYLnRlc3QocmF3KTtcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZSB0aGF0IGEgbWVtb0lkIGlzIGEgdmFsaWQgbm9uLW5lZ2F0aXZlIGludGVnZXIgc3RyaW5nXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkTWVtb0lkKG1lbW9JZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiB0eXBlb2YgbWVtb0lkID09PSAnc3RyaW5nJyAmJiAvXigwfFsxLTldXFxkKikkLy50ZXN0KG1lbW9JZCk7XG59XG5cbi8qKlxuICogVmFsaWRhdGUgdGhhdCBhIHN0cmluZyBpcyBhIG5vbi1lbXB0eSAweC1wcmVmaXhlZCBoZXggc3RyaW5nXG4gKiBVc2VkIHRvIHZhbGlkYXRlIHByZS1lbmNvZGVkIGNhbGxkYXRhIGZvciByYXcgY29udHJhY3QgY2FsbHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRIZXhEYXRhKGRhdGE6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gdHlwZW9mIGRhdGEgPT09ICdzdHJpbmcnICYmIC9eMHhbMC05YS1mQS1GXSskLy50ZXN0KGRhdGEpICYmIGRhdGEubGVuZ3RoID4gMiAmJiBkYXRhLmxlbmd0aCAlIDIgPT09IDA7XG59XG5cbmNvbnN0IHV0aWxzID0ge1xuICBpc1ZhbGlkQWRkcmVzcyxcbiAgaXNWYWxpZFB1YmxpY0tleSxcbiAgaXNWYWxpZFByaXZhdGVLZXksXG4gIGFtb3VudFRvVGlwMjBVbml0cyxcbiAgdGlwMjBVbml0c1RvQW1vdW50LFxuICBzdHJpbmdUb0J5dGVzMzIsXG4gIGVuY29kZVRpcDIwVHJhbnNmZXJXaXRoTWVtbyxcbiAgaXNWYWxpZFRpcDIwQW1vdW50LFxuICBpc1RpcDIwVHJhbnNhY3Rpb24sXG4gIGlzVmFsaWRNZW1vSWQsXG4gIGlzVmFsaWRIZXhEYXRhLFxufTtcblxuZXhwb3J0IGRlZmF1bHQgdXRpbHM7XG4iXX0=
|
|
@@ -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 tempo_1 = require("./tempo");
|
|
5
5
|
const ttempo_1 = require("./ttempo");
|
|
6
|
+
const tip20Token_1 = require("./tip20Token");
|
|
6
7
|
const register = (sdk) => {
|
|
7
8
|
sdk.register('tempo', tempo_1.Tempo.createInstance);
|
|
8
9
|
sdk.register('ttempo', ttempo_1.Ttempo.createInstance);
|
|
10
|
+
tip20Token_1.Tip20Token.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcmVnaXN0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsbUNBQWdDO0FBQ2hDLHFDQUFrQztBQUNsQyw2Q0FBMEM7QUFFbkMsTUFBTSxRQUFRLEdBQUcsQ0FBQyxHQUFjLEVBQVEsRUFBRTtJQUMvQyxHQUFHLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxhQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDNUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsZUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQzlDLHVCQUFVLENBQUMsdUJBQXVCLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsRUFBRSxFQUFFO1FBQ3pFLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLGVBQWUsQ0FBQyxDQUFDO0lBQ3RDLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBTlcsUUFBQSxRQUFRLFlBTW5CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQml0R29CYXNlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgVGVtcG8gfSBmcm9tICcuL3RlbXBvJztcbmltcG9ydCB7IFR0ZW1wbyB9IGZyb20gJy4vdHRlbXBvJztcbmltcG9ydCB7IFRpcDIwVG9rZW4gfSBmcm9tICcuL3RpcDIwVG9rZW4nO1xuXG5leHBvcnQgY29uc3QgcmVnaXN0ZXIgPSAoc2RrOiBCaXRHb0Jhc2UpOiB2b2lkID0+IHtcbiAgc2RrLnJlZ2lzdGVyKCd0ZW1wbycsIFRlbXBvLmNyZWF0ZUluc3RhbmNlKTtcbiAgc2RrLnJlZ2lzdGVyKCd0dGVtcG8nLCBUdGVtcG8uY3JlYXRlSW5zdGFuY2UpO1xuICBUaXAyMFRva2VuLmNyZWF0ZVRva2VuQ29uc3RydWN0b3JzKCkuZm9yRWFjaCgoeyBuYW1lLCBjb2luQ29uc3RydWN0b3IgfSkgPT4ge1xuICAgIHNkay5yZWdpc3RlcihuYW1lLCBjb2luQ29uc3RydWN0b3IpO1xuICB9KTtcbn07XG4iXX0=
|
package/dist/src/tempo.d.ts
CHANGED
|
@@ -1,72 +1,126 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* @prettier
|
|
3
|
+
*/
|
|
4
|
+
import { AbstractEthLikeNewCoins, RecoverOptions, OfflineVaultTxInfo, UnsignedSweepTxMPCv2, RecoveryInfo, TransactionBuilder, VerifyEthTransactionOptions, VerifyEthAddressOptions, TssVerifyEthAddressOptions } from '@bitgo-beta/abstract-eth';
|
|
5
|
+
import type * as EthLikeCommon from '@ethereumjs/common';
|
|
6
|
+
import { BaseCoin, BitGoBase, MPCAlgorithm, ParseTransactionOptions, ParsedTransaction, PopulatedIntent, PrebuildTransactionWithIntentOptions } from '@bitgo-beta/sdk-core';
|
|
2
7
|
import { BaseCoin as StaticsBaseCoin } from '@bitgo-beta/statics';
|
|
3
|
-
export declare class Tempo extends
|
|
4
|
-
protected readonly _staticsCoin: Readonly<StaticsBaseCoin>;
|
|
8
|
+
export declare class Tempo extends AbstractEthLikeNewCoins {
|
|
5
9
|
protected constructor(bitgo: BitGoBase, staticsCoin?: Readonly<StaticsBaseCoin>);
|
|
10
|
+
/**
|
|
11
|
+
* Factory method to create Tempo instance
|
|
12
|
+
*/
|
|
6
13
|
static createInstance(bitgo: BitGoBase, staticsCoin?: Readonly<StaticsBaseCoin>): BaseCoin;
|
|
7
14
|
/**
|
|
8
|
-
*
|
|
15
|
+
* Get the chain identifier
|
|
9
16
|
*/
|
|
10
|
-
getBaseFactor(): number;
|
|
11
17
|
getChain(): string;
|
|
12
|
-
|
|
18
|
+
/**
|
|
19
|
+
* Get the full chain name
|
|
20
|
+
*/
|
|
13
21
|
getFullName(): string;
|
|
22
|
+
/** @inheritdoc */
|
|
23
|
+
getBaseFactor(): number;
|
|
14
24
|
/**
|
|
15
|
-
*
|
|
16
|
-
*
|
|
25
|
+
* Check if value-less transfers are allowed
|
|
26
|
+
* EVM-based chains allow zero-value transfers for smart contract interactions
|
|
17
27
|
*/
|
|
18
28
|
valuelessTransferAllowed(): boolean;
|
|
19
29
|
/**
|
|
20
|
-
*
|
|
21
|
-
* @param address
|
|
30
|
+
* Check if TSS is supported
|
|
22
31
|
*/
|
|
23
|
-
|
|
32
|
+
supportsTss(): boolean;
|
|
24
33
|
/**
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
* @param seed
|
|
28
|
-
* @returns {Object} object with generated pub, prv
|
|
34
|
+
* Get the MPC algorithm (ECDSA for EVM chains)
|
|
29
35
|
*/
|
|
30
|
-
|
|
36
|
+
getMPCAlgorithm(): MPCAlgorithm;
|
|
31
37
|
/**
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
* @param
|
|
35
|
-
* @returns
|
|
38
|
+
* Evaluates whether an address string is valid for Tempo
|
|
39
|
+
* Supports addresses with optional memoId query parameter (e.g., 0x...?memoId=123)
|
|
40
|
+
* @param address - The address to validate
|
|
41
|
+
* @returns true if address is valid
|
|
36
42
|
*/
|
|
37
|
-
|
|
43
|
+
isValidAddress(address: string): boolean;
|
|
38
44
|
/**
|
|
39
|
-
*
|
|
40
|
-
*
|
|
41
|
-
* @param
|
|
42
|
-
* @
|
|
43
|
-
* @
|
|
45
|
+
* Parse address into base address and optional memoId
|
|
46
|
+
* Throws InvalidAddressError for invalid address formats
|
|
47
|
+
* @param address - Address string, potentially with ?memoId=X suffix
|
|
48
|
+
* @returns Object containing address, baseAddress, and memoId (null if not present)
|
|
49
|
+
* @throws InvalidAddressError if address format is invalid
|
|
44
50
|
*/
|
|
45
|
-
|
|
51
|
+
getAddressDetails(address: string): {
|
|
52
|
+
address: string;
|
|
53
|
+
baseAddress: string;
|
|
54
|
+
memoId: string | null;
|
|
55
|
+
};
|
|
46
56
|
/**
|
|
47
|
-
*
|
|
48
|
-
* @param
|
|
57
|
+
* Validate that a memoId is a valid non-negative integer string
|
|
58
|
+
* @param memoId - The memoId to validate
|
|
59
|
+
* @returns true if valid
|
|
49
60
|
*/
|
|
50
|
-
|
|
61
|
+
isValidMemoId(memoId: string): boolean;
|
|
51
62
|
/**
|
|
52
|
-
*
|
|
53
|
-
*
|
|
63
|
+
* Tempo uses memoId-based addresses rather than forwarder contracts.
|
|
64
|
+
* Verify that the address belongs to this wallet by checking that the
|
|
65
|
+
* base (EVM) portion matches the wallet's base address.
|
|
54
66
|
*/
|
|
55
|
-
|
|
67
|
+
isWalletAddress(params: VerifyEthAddressOptions | TssVerifyEthAddressOptions): Promise<boolean>;
|
|
56
68
|
/**
|
|
57
|
-
* Parse a transaction
|
|
58
|
-
* @
|
|
69
|
+
* Parse a serialised Tempo transaction and return its operations as SDK outputs.
|
|
70
|
+
* @inheritdoc
|
|
59
71
|
*/
|
|
60
72
|
parseTransaction(params: ParseTransactionOptions): Promise<ParsedTransaction>;
|
|
61
73
|
/**
|
|
62
|
-
*
|
|
63
|
-
* @
|
|
74
|
+
* Verify that a Tempo transaction matches the intended recipients and amounts.
|
|
75
|
+
* @inheritdoc
|
|
76
|
+
*/
|
|
77
|
+
verifyTransaction(params: VerifyEthTransactionOptions): Promise<boolean>;
|
|
78
|
+
/**
|
|
79
|
+
* Set coin-specific fields in the intent for Tempo TSS transactions.
|
|
80
|
+
* Ensures feeToken is properly wired through the intent for Tempo transactions.
|
|
81
|
+
* @param intent - The populated intent to modify
|
|
82
|
+
* @param params - The parameters containing feeToken
|
|
83
|
+
*/
|
|
84
|
+
setCoinSpecificFieldsInIntent(intent: PopulatedIntent, params: PrebuildTransactionWithIntentOptions): void;
|
|
85
|
+
/**
|
|
86
|
+
* Query the Tempo Alchemy RPC for recovery balance/nonce information.
|
|
87
|
+
* Routes through queryTempoRpc using the URL from environments.ts.
|
|
88
|
+
*/
|
|
89
|
+
recoveryBlockchainExplorerQuery(query: Record<string, string>, apiKey?: string): Promise<Record<string, unknown>>;
|
|
90
|
+
/**
|
|
91
|
+
* Translates Etherscan-style recovery queries into Tempo Alchemy JSON-RPC calls.
|
|
92
|
+
*
|
|
93
|
+
* Supported:
|
|
94
|
+
* account/balance → returns { result: '0' } (no native coin on Tempo)
|
|
95
|
+
* account/tokenbalance → eth_call (balanceOf selector 0x70a08231) → { result: decimalString }
|
|
96
|
+
* account/txlist → eth_getTransactionCount → { nonce: number }
|
|
97
|
+
*/
|
|
98
|
+
private queryTempoRpc;
|
|
99
|
+
/**
|
|
100
|
+
* Shared helper: queries the token balance, computes sweep amount, and builds
|
|
101
|
+
* an unsigned TIP-20 transfer transaction. Used by both recovery paths.
|
|
102
|
+
*
|
|
103
|
+
* - tokenContractAddress: the token to sweep (defaults to pathUSD)
|
|
104
|
+
* - feeToken: always pathUSD
|
|
105
|
+
* - If sweeping pathUSD itself, reserves gasLimit × maxFeePerGas / 10^12 pathUSD units for fees.
|
|
106
|
+
*/
|
|
107
|
+
private buildTempoSweepTx;
|
|
108
|
+
/**
|
|
109
|
+
* Overrides the base-class recoverTSS to use TIP-20 transactions instead of standard ETH.
|
|
110
|
+
*
|
|
111
|
+
* Two paths:
|
|
112
|
+
* - Unsigned sweep (plain public key shares): delegates to buildUnsignedSweepTxnTSS
|
|
113
|
+
* - Signed sweep (encrypted keys + passphrase): builds and signs a TIP-20 tx via MPC
|
|
114
|
+
*/
|
|
115
|
+
protected recoverTSS(params: RecoverOptions): Promise<RecoveryInfo | OfflineVaultTxInfo | UnsignedSweepTxMPCv2>;
|
|
116
|
+
/**
|
|
117
|
+
* Builds an unsigned TIP-20 sweep transaction for the offline vault (unsigned sweep path).
|
|
118
|
+
* Called by recoverTSS when plain public key shares are provided.
|
|
64
119
|
*/
|
|
65
|
-
|
|
120
|
+
protected buildUnsignedSweepTxnTSS(params: RecoverOptions): Promise<OfflineVaultTxInfo | UnsignedSweepTxMPCv2>;
|
|
66
121
|
/**
|
|
67
|
-
*
|
|
68
|
-
* @param params
|
|
122
|
+
* Get transaction builder for Tempo.
|
|
69
123
|
*/
|
|
70
|
-
|
|
124
|
+
protected getTransactionBuilder(common?: EthLikeCommon.default): TransactionBuilder;
|
|
71
125
|
}
|
|
72
126
|
//# 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,YAAY,EACZ,kBAAkB,EAClB,2BAA2B,EAC3B,uBAAuB,EACvB,0BAA0B,EAG3B,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,KAAK,aAAa,MAAM,oBAAoB,CAAC;AACzD,OAAO,EACL,QAAQ,EACR,SAAS,EAGT,YAAY,EACZ,uBAAuB,EACvB,iBAAiB,EAEjB,eAAe,EACf,oCAAoC,EAKrC,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,QAAQ,IAAI,eAAe,EAAS,MAAM,qBAAqB,CAAC;AAazE,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,kBAAkB;IAClB,aAAa,IAAI,MAAM;IAIvB;;;OAGG;IACH,wBAAwB,IAAI,OAAO;IAInC;;OAEG;IACH,WAAW,IAAI,OAAO;IAItB;;OAEG;IACH,eAAe,IAAI,YAAY;IAI/B;;;;;OAKG;IACH,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAaxC;;;;;;OAMG;IACH,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE;IAsDnG;;;;OAIG;IACH,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAItC;;;;OAIG;IACG,eAAe,CAAC,MAAM,EAAE,uBAAuB,GAAG,0BAA0B,GAAG,OAAO,CAAC,OAAO,CAAC;IA4BrG;;;OAGG;IACG,gBAAgB,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAyBnF;;;OAGG;IACG,iBAAiB,CAAC,MAAM,EAAE,2BAA2B,GAAG,OAAO,CAAC,OAAO,CAAC;IAyE9E;;;;;OAKG;IACH,6BAA6B,CAAC,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,oCAAoC,GAAG,IAAI;IAQ1G;;;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;IAWnC;;;;;;;OAOG;YACW,aAAa;IAkD3B;;;;;;;OAOG;YACW,iBAAiB;IA8C/B;;;;;;OAMG;cACa,UAAU,CACxB,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,YAAY,GAAG,kBAAkB,GAAG,oBAAoB,CAAC;IA0CpE;;;OAGG;cACa,wBAAwB,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,kBAAkB,GAAG,oBAAoB,CAAC;IAkDpH;;OAEG;IACH,SAAS,CAAC,qBAAqB,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC,OAAO,GAAG,kBAAkB;CAGpF"}
|