@bitgo-beta/sdk-coin-tempo 1.0.1-beta.46 → 1.0.1-beta.48
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/lib/constants.d.ts +16 -0
- package/dist/src/lib/constants.d.ts.map +1 -1
- package/dist/src/lib/constants.js +21 -4
- package/dist/src/lib/index.d.ts +3 -0
- package/dist/src/lib/index.d.ts.map +1 -1
- package/dist/src/lib/index.js +4 -1
- package/dist/src/lib/tip20Abi.d.ts +90 -17
- package/dist/src/lib/tip20Abi.d.ts.map +1 -1
- package/dist/src/lib/tip20Abi.js +53 -25
- 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 +46 -2
- package/dist/src/lib/utils.d.ts.map +1 -1
- package/dist/src/lib/utils.js +88 -4
- package/dist/src/tip20Token.d.ts +16 -12
- package/dist/src/tip20Token.d.ts.map +1 -1
- package/dist/src/tip20Token.js +95 -23
- 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 +4 -3
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +8 -7
|
@@ -5,4 +5,20 @@ export declare const MAINNET_COIN = "tempo";
|
|
|
5
5
|
export declare const TESTNET_COIN = "ttempo";
|
|
6
6
|
export declare const VALID_ADDRESS_REGEX: RegExp;
|
|
7
7
|
export declare const VALID_PUBLIC_KEY_REGEX: RegExp;
|
|
8
|
+
/**
|
|
9
|
+
* Tempo Chain IDs
|
|
10
|
+
*/
|
|
11
|
+
export declare const TEMPO_CHAIN_IDS: {
|
|
12
|
+
readonly TESTNET: 42429;
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* TIP-20 Token Standard
|
|
16
|
+
* TIP-20 uses 6 decimals (unlike ERC-20's standard 18 decimals)
|
|
17
|
+
*/
|
|
18
|
+
export declare const TIP20_DECIMALS = 6;
|
|
19
|
+
/**
|
|
20
|
+
* AA Transaction Type
|
|
21
|
+
* Tempo uses EIP-7702 Account Abstraction with transaction type 0x76
|
|
22
|
+
*/
|
|
23
|
+
export declare const AA_TRANSACTION_TYPE: "0x76";
|
|
8
24
|
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/lib/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,eAAO,MAAM,YAAY,UAAU,CAAC;AACpC,eAAO,MAAM,YAAY,WAAW,CAAC;AAErC,eAAO,MAAM,mBAAmB,
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/lib/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,eAAO,MAAM,YAAY,UAAU,CAAC;AACpC,eAAO,MAAM,YAAY,WAAW,CAAC;AAErC,eAAO,MAAM,mBAAmB,QAAwB,CAAC;AACzD,eAAO,MAAM,sBAAsB,QAAsB,CAAC;AAE1D;;GAEG;AACH,eAAO,MAAM,eAAe;;CAGlB,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,cAAc,IAAI,CAAC;AAEhC;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAAG,MAAe,CAAC"}
|
|
@@ -3,9 +3,26 @@
|
|
|
3
3
|
* Constants for Tempo blockchain (EVM-compatible)
|
|
4
4
|
*/
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.VALID_PUBLIC_KEY_REGEX = exports.VALID_ADDRESS_REGEX = exports.TESTNET_COIN = exports.MAINNET_COIN = void 0;
|
|
6
|
+
exports.AA_TRANSACTION_TYPE = exports.TIP20_DECIMALS = exports.TEMPO_CHAIN_IDS = exports.VALID_PUBLIC_KEY_REGEX = exports.VALID_ADDRESS_REGEX = exports.TESTNET_COIN = exports.MAINNET_COIN = void 0;
|
|
7
7
|
exports.MAINNET_COIN = 'tempo';
|
|
8
8
|
exports.TESTNET_COIN = 'ttempo';
|
|
9
|
-
exports.VALID_ADDRESS_REGEX = /^[
|
|
10
|
-
exports.VALID_PUBLIC_KEY_REGEX = /^[A-Fa-f0-9]{64}$/;
|
|
11
|
-
|
|
9
|
+
exports.VALID_ADDRESS_REGEX = /^0x[a-fA-F0-9]{40}$/;
|
|
10
|
+
exports.VALID_PUBLIC_KEY_REGEX = /^[A-Fa-f0-9]{64}$/;
|
|
11
|
+
/**
|
|
12
|
+
* Tempo Chain IDs
|
|
13
|
+
*/
|
|
14
|
+
exports.TEMPO_CHAIN_IDS = {
|
|
15
|
+
TESTNET: 42429, // Andantino testnet
|
|
16
|
+
// MAINNET: TBD
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* TIP-20 Token Standard
|
|
20
|
+
* TIP-20 uses 6 decimals (unlike ERC-20's standard 18 decimals)
|
|
21
|
+
*/
|
|
22
|
+
exports.TIP20_DECIMALS = 6;
|
|
23
|
+
/**
|
|
24
|
+
* AA Transaction Type
|
|
25
|
+
* Tempo uses EIP-7702 Account Abstraction with transaction type 0x76
|
|
26
|
+
*/
|
|
27
|
+
exports.AA_TRANSACTION_TYPE = '0x76';
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOztHQUVHOzs7QUFFVSxRQUFBLFlBQVksR0FBRyxPQUFPLENBQUM7QUFDdkIsUUFBQSxZQUFZLEdBQUcsUUFBUSxDQUFDO0FBRXhCLFFBQUEsbUJBQW1CLEdBQUcscUJBQXFCLENBQUM7QUFDNUMsUUFBQSxzQkFBc0IsR0FBRyxtQkFBbUIsQ0FBQztBQUUxRDs7R0FFRztBQUNVLFFBQUEsZUFBZSxHQUFHO0lBQzdCLE9BQU8sRUFBRSxLQUFLLEVBQUUsb0JBQW9CO0lBQ3BDLGVBQWU7Q0FDUCxDQUFDO0FBRVg7OztHQUdHO0FBQ1UsUUFBQSxjQUFjLEdBQUcsQ0FBQyxDQUFDO0FBRWhDOzs7R0FHRztBQUNVLFFBQUEsbUJBQW1CLEdBQUcsTUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb25zdGFudHMgZm9yIFRlbXBvIGJsb2NrY2hhaW4gKEVWTS1jb21wYXRpYmxlKVxuICovXG5cbmV4cG9ydCBjb25zdCBNQUlOTkVUX0NPSU4gPSAndGVtcG8nO1xuZXhwb3J0IGNvbnN0IFRFU1RORVRfQ09JTiA9ICd0dGVtcG8nO1xuXG5leHBvcnQgY29uc3QgVkFMSURfQUREUkVTU19SRUdFWCA9IC9eMHhbYS1mQS1GMC05XXs0MH0kLztcbmV4cG9ydCBjb25zdCBWQUxJRF9QVUJMSUNfS0VZX1JFR0VYID0gL15bQS1GYS1mMC05XXs2NH0kLztcblxuLyoqXG4gKiBUZW1wbyBDaGFpbiBJRHNcbiAqL1xuZXhwb3J0IGNvbnN0IFRFTVBPX0NIQUlOX0lEUyA9IHtcbiAgVEVTVE5FVDogNDI0MjksIC8vIEFuZGFudGlubyB0ZXN0bmV0XG4gIC8vIE1BSU5ORVQ6IFRCRFxufSBhcyBjb25zdDtcblxuLyoqXG4gKiBUSVAtMjAgVG9rZW4gU3RhbmRhcmRcbiAqIFRJUC0yMCB1c2VzIDYgZGVjaW1hbHMgKHVubGlrZSBFUkMtMjAncyBzdGFuZGFyZCAxOCBkZWNpbWFscylcbiAqL1xuZXhwb3J0IGNvbnN0IFRJUDIwX0RFQ0lNQUxTID0gNjtcblxuLyoqXG4gKiBBQSBUcmFuc2FjdGlvbiBUeXBlXG4gKiBUZW1wbyB1c2VzIEVJUC03NzAyIEFjY291bnQgQWJzdHJhY3Rpb24gd2l0aCB0cmFuc2FjdGlvbiB0eXBlIDB4NzZcbiAqL1xuZXhwb3J0IGNvbnN0IEFBX1RSQU5TQUNUSU9OX1RZUEUgPSAnMHg3NicgYXMgY29uc3Q7XG4iXX0=
|
package/dist/src/lib/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,sBAAsB,CAAC;AACrC,cAAc,eAAe,CAAC"}
|
package/dist/src/lib/index.js
CHANGED
|
@@ -19,4 +19,7 @@ __exportStar(require("./utils"), exports);
|
|
|
19
19
|
__exportStar(require("./constants"), exports);
|
|
20
20
|
__exportStar(require("./iface"), exports);
|
|
21
21
|
__exportStar(require("./tip20Abi"), exports);
|
|
22
|
-
|
|
22
|
+
__exportStar(require("./types"), exports);
|
|
23
|
+
__exportStar(require("./transactionBuilder"), exports);
|
|
24
|
+
__exportStar(require("./transaction"), exports);
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw0Q0FBMEI7QUFDMUIsMENBQXdCO0FBQ3hCLDhDQUE0QjtBQUM1QiwwQ0FBd0I7QUFDeEIsNkNBQTJCO0FBQzNCLDBDQUF3QjtBQUN4Qix1REFBcUM7QUFDckMsZ0RBQThCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9rZXlQYWlyJztcbmV4cG9ydCAqIGZyb20gJy4vdXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdGFudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9pZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL3RpcDIwQWJpJztcbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXInO1xuZXhwb3J0ICogZnJvbSAnLi90cmFuc2FjdGlvbic7XG4iXX0=
|
|
@@ -1,25 +1,98 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* TIP-20 Token Standard ABI
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* TIP-20 is Tempo's token standard, similar to ERC-20 but with:
|
|
5
|
+
* - 6 decimal places (instead of 18)
|
|
6
|
+
* - transferWithMemo function for attaching metadata
|
|
5
7
|
*/
|
|
6
8
|
/**
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
+
* TIP-20 transferWithMemo ABI
|
|
10
|
+
* Standard function for TIP-20 token transfers with memo field
|
|
9
11
|
*/
|
|
10
|
-
export declare const
|
|
12
|
+
export declare const TIP20_TRANSFER_WITH_MEMO_ABI: readonly [{
|
|
13
|
+
readonly type: "function";
|
|
14
|
+
readonly name: "transferWithMemo";
|
|
15
|
+
readonly inputs: readonly [{
|
|
16
|
+
readonly name: "to";
|
|
17
|
+
readonly type: "address";
|
|
18
|
+
}, {
|
|
19
|
+
readonly name: "amount";
|
|
20
|
+
readonly type: "uint256";
|
|
21
|
+
}, {
|
|
22
|
+
readonly name: "memo";
|
|
23
|
+
readonly type: "bytes32";
|
|
24
|
+
}];
|
|
25
|
+
readonly outputs: readonly [{
|
|
26
|
+
readonly name: "";
|
|
27
|
+
readonly type: "bool";
|
|
28
|
+
}];
|
|
29
|
+
readonly stateMutability: "nonpayable";
|
|
30
|
+
}];
|
|
11
31
|
/**
|
|
12
|
-
*
|
|
32
|
+
* Standard TIP-20 token ABI (similar to ERC-20)
|
|
13
33
|
*/
|
|
14
|
-
export declare const
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
34
|
+
export declare const TIP20_ABI: readonly [{
|
|
35
|
+
readonly type: "function";
|
|
36
|
+
readonly name: "balanceOf";
|
|
37
|
+
readonly inputs: readonly [{
|
|
38
|
+
readonly name: "account";
|
|
39
|
+
readonly type: "address";
|
|
40
|
+
}];
|
|
41
|
+
readonly outputs: readonly [{
|
|
42
|
+
readonly name: "";
|
|
43
|
+
readonly type: "uint256";
|
|
44
|
+
}];
|
|
45
|
+
readonly stateMutability: "view";
|
|
46
|
+
}, {
|
|
47
|
+
readonly type: "function";
|
|
48
|
+
readonly name: "transfer";
|
|
49
|
+
readonly inputs: readonly [{
|
|
50
|
+
readonly name: "to";
|
|
51
|
+
readonly type: "address";
|
|
52
|
+
}, {
|
|
53
|
+
readonly name: "amount";
|
|
54
|
+
readonly type: "uint256";
|
|
55
|
+
}];
|
|
56
|
+
readonly outputs: readonly [{
|
|
57
|
+
readonly name: "";
|
|
58
|
+
readonly type: "bool";
|
|
59
|
+
}];
|
|
60
|
+
readonly stateMutability: "nonpayable";
|
|
61
|
+
}, {
|
|
62
|
+
readonly type: "function";
|
|
63
|
+
readonly name: "transferFrom";
|
|
64
|
+
readonly inputs: readonly [{
|
|
65
|
+
readonly name: "from";
|
|
66
|
+
readonly type: "address";
|
|
67
|
+
}, {
|
|
68
|
+
readonly name: "to";
|
|
69
|
+
readonly type: "address";
|
|
70
|
+
}, {
|
|
71
|
+
readonly name: "amount";
|
|
72
|
+
readonly type: "uint256";
|
|
73
|
+
}];
|
|
74
|
+
readonly outputs: readonly [{
|
|
75
|
+
readonly name: "";
|
|
76
|
+
readonly type: "bool";
|
|
77
|
+
}];
|
|
78
|
+
readonly stateMutability: "nonpayable";
|
|
79
|
+
}, {
|
|
80
|
+
readonly type: "function";
|
|
81
|
+
readonly name: "transferWithMemo";
|
|
82
|
+
readonly inputs: readonly [{
|
|
83
|
+
readonly name: "to";
|
|
84
|
+
readonly type: "address";
|
|
85
|
+
}, {
|
|
86
|
+
readonly name: "amount";
|
|
87
|
+
readonly type: "uint256";
|
|
88
|
+
}, {
|
|
89
|
+
readonly name: "memo";
|
|
90
|
+
readonly type: "bytes32";
|
|
91
|
+
}];
|
|
92
|
+
readonly outputs: readonly [{
|
|
93
|
+
readonly name: "";
|
|
94
|
+
readonly type: "bool";
|
|
95
|
+
}];
|
|
96
|
+
readonly stateMutability: "nonpayable";
|
|
97
|
+
}];
|
|
25
98
|
//# sourceMappingURL=tip20Abi.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tip20Abi.d.ts","sourceRoot":"","sources":["../../../src/lib/tip20Abi.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"tip20Abi.d.ts","sourceRoot":"","sources":["../../../src/lib/tip20Abi.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;GAGG;AACH,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;EAY/B,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8BZ,CAAC"}
|
package/dist/src/lib/tip20Abi.js
CHANGED
|
@@ -1,34 +1,62 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* TIP-20 Token Standard ABI
|
|
4
4
|
*
|
|
5
|
-
*
|
|
5
|
+
* TIP-20 is Tempo's token standard, similar to ERC-20 but with:
|
|
6
|
+
* - 6 decimal places (instead of 18)
|
|
7
|
+
* - transferWithMemo function for attaching metadata
|
|
6
8
|
*/
|
|
7
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
-
exports.
|
|
9
|
-
exports.getTip20TransferSignature = getTip20TransferSignature;
|
|
10
|
-
exports.getTip20TransferFromSignature = getTip20TransferFromSignature;
|
|
10
|
+
exports.TIP20_ABI = exports.TIP20_TRANSFER_WITH_MEMO_ABI = void 0;
|
|
11
11
|
/**
|
|
12
|
-
*
|
|
13
|
-
*
|
|
12
|
+
* TIP-20 transferWithMemo ABI
|
|
13
|
+
* Standard function for TIP-20 token transfers with memo field
|
|
14
14
|
*/
|
|
15
|
-
exports.
|
|
15
|
+
exports.TIP20_TRANSFER_WITH_MEMO_ABI = [
|
|
16
|
+
{
|
|
17
|
+
type: 'function',
|
|
18
|
+
name: 'transferWithMemo',
|
|
19
|
+
inputs: [
|
|
20
|
+
{ name: 'to', type: 'address' },
|
|
21
|
+
{ name: 'amount', type: 'uint256' },
|
|
22
|
+
{ name: 'memo', type: 'bytes32' },
|
|
23
|
+
],
|
|
24
|
+
outputs: [{ name: '', type: 'bool' }],
|
|
25
|
+
stateMutability: 'nonpayable',
|
|
26
|
+
},
|
|
27
|
+
];
|
|
16
28
|
/**
|
|
17
|
-
*
|
|
29
|
+
* Standard TIP-20 token ABI (similar to ERC-20)
|
|
18
30
|
*/
|
|
19
|
-
exports.
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
31
|
+
exports.TIP20_ABI = [
|
|
32
|
+
{
|
|
33
|
+
type: 'function',
|
|
34
|
+
name: 'balanceOf',
|
|
35
|
+
inputs: [{ name: 'account', type: 'address' }],
|
|
36
|
+
outputs: [{ name: '', type: 'uint256' }],
|
|
37
|
+
stateMutability: 'view',
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
type: 'function',
|
|
41
|
+
name: 'transfer',
|
|
42
|
+
inputs: [
|
|
43
|
+
{ name: 'to', type: 'address' },
|
|
44
|
+
{ name: 'amount', type: 'uint256' },
|
|
45
|
+
],
|
|
46
|
+
outputs: [{ name: '', type: 'bool' }],
|
|
47
|
+
stateMutability: 'nonpayable',
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
type: 'function',
|
|
51
|
+
name: 'transferFrom',
|
|
52
|
+
inputs: [
|
|
53
|
+
{ name: 'from', type: 'address' },
|
|
54
|
+
{ name: 'to', type: 'address' },
|
|
55
|
+
{ name: 'amount', type: 'uint256' },
|
|
56
|
+
],
|
|
57
|
+
outputs: [{ name: '', type: 'bool' }],
|
|
58
|
+
stateMutability: 'nonpayable',
|
|
59
|
+
},
|
|
60
|
+
...exports.TIP20_TRANSFER_WITH_MEMO_ABI,
|
|
61
|
+
];
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlwMjBBYmkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3RpcDIwQWJpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7O0dBTUc7OztBQUVIOzs7R0FHRztBQUNVLFFBQUEsNEJBQTRCLEdBQUc7SUFDMUM7UUFDRSxJQUFJLEVBQUUsVUFBVTtRQUNoQixJQUFJLEVBQUUsa0JBQWtCO1FBQ3hCLE1BQU0sRUFBRTtZQUNOLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO1lBQy9CLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO1lBQ25DLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO1NBQ2xDO1FBQ0QsT0FBTyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQztRQUNyQyxlQUFlLEVBQUUsWUFBWTtLQUM5QjtDQUNPLENBQUM7QUFFWDs7R0FFRztBQUNVLFFBQUEsU0FBUyxHQUFHO0lBQ3ZCO1FBQ0UsSUFBSSxFQUFFLFVBQVU7UUFDaEIsSUFBSSxFQUFFLFdBQVc7UUFDakIsTUFBTSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQztRQUM5QyxPQUFPLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDO1FBQ3hDLGVBQWUsRUFBRSxNQUFNO0tBQ3hCO0lBQ0Q7UUFDRSxJQUFJLEVBQUUsVUFBVTtRQUNoQixJQUFJLEVBQUUsVUFBVTtRQUNoQixNQUFNLEVBQUU7WUFDTixFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRTtZQUMvQixFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRTtTQUNwQztRQUNELE9BQU8sRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFDckMsZUFBZSxFQUFFLFlBQVk7S0FDOUI7SUFDRDtRQUNFLElBQUksRUFBRSxVQUFVO1FBQ2hCLElBQUksRUFBRSxjQUFjO1FBQ3BCLE1BQU0sRUFBRTtZQUNOLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO1lBQ2pDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO1lBQy9CLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO1NBQ3BDO1FBQ0QsT0FBTyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQztRQUNyQyxlQUFlLEVBQUUsWUFBWTtLQUM5QjtJQUNELEdBQUcsb0NBQTRCO0NBQ3ZCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRJUC0yMCBUb2tlbiBTdGFuZGFyZCBBQklcbiAqXG4gKiBUSVAtMjAgaXMgVGVtcG8ncyB0b2tlbiBzdGFuZGFyZCwgc2ltaWxhciB0byBFUkMtMjAgYnV0IHdpdGg6XG4gKiAtIDYgZGVjaW1hbCBwbGFjZXMgKGluc3RlYWQgb2YgMTgpXG4gKiAtIHRyYW5zZmVyV2l0aE1lbW8gZnVuY3Rpb24gZm9yIGF0dGFjaGluZyBtZXRhZGF0YVxuICovXG5cbi8qKlxuICogVElQLTIwIHRyYW5zZmVyV2l0aE1lbW8gQUJJXG4gKiBTdGFuZGFyZCBmdW5jdGlvbiBmb3IgVElQLTIwIHRva2VuIHRyYW5zZmVycyB3aXRoIG1lbW8gZmllbGRcbiAqL1xuZXhwb3J0IGNvbnN0IFRJUDIwX1RSQU5TRkVSX1dJVEhfTUVNT19BQkkgPSBbXG4gIHtcbiAgICB0eXBlOiAnZnVuY3Rpb24nLFxuICAgIG5hbWU6ICd0cmFuc2ZlcldpdGhNZW1vJyxcbiAgICBpbnB1dHM6IFtcbiAgICAgIHsgbmFtZTogJ3RvJywgdHlwZTogJ2FkZHJlc3MnIH0sXG4gICAgICB7IG5hbWU6ICdhbW91bnQnLCB0eXBlOiAndWludDI1NicgfSxcbiAgICAgIHsgbmFtZTogJ21lbW8nLCB0eXBlOiAnYnl0ZXMzMicgfSxcbiAgICBdLFxuICAgIG91dHB1dHM6IFt7IG5hbWU6ICcnLCB0eXBlOiAnYm9vbCcgfV0sXG4gICAgc3RhdGVNdXRhYmlsaXR5OiAnbm9ucGF5YWJsZScsXG4gIH0sXG5dIGFzIGNvbnN0O1xuXG4vKipcbiAqIFN0YW5kYXJkIFRJUC0yMCB0b2tlbiBBQkkgKHNpbWlsYXIgdG8gRVJDLTIwKVxuICovXG5leHBvcnQgY29uc3QgVElQMjBfQUJJID0gW1xuICB7XG4gICAgdHlwZTogJ2Z1bmN0aW9uJyxcbiAgICBuYW1lOiAnYmFsYW5jZU9mJyxcbiAgICBpbnB1dHM6IFt7IG5hbWU6ICdhY2NvdW50JywgdHlwZTogJ2FkZHJlc3MnIH1dLFxuICAgIG91dHB1dHM6IFt7IG5hbWU6ICcnLCB0eXBlOiAndWludDI1NicgfV0sXG4gICAgc3RhdGVNdXRhYmlsaXR5OiAndmlldycsXG4gIH0sXG4gIHtcbiAgICB0eXBlOiAnZnVuY3Rpb24nLFxuICAgIG5hbWU6ICd0cmFuc2ZlcicsXG4gICAgaW5wdXRzOiBbXG4gICAgICB7IG5hbWU6ICd0bycsIHR5cGU6ICdhZGRyZXNzJyB9LFxuICAgICAgeyBuYW1lOiAnYW1vdW50JywgdHlwZTogJ3VpbnQyNTYnIH0sXG4gICAgXSxcbiAgICBvdXRwdXRzOiBbeyBuYW1lOiAnJywgdHlwZTogJ2Jvb2wnIH1dLFxuICAgIHN0YXRlTXV0YWJpbGl0eTogJ25vbnBheWFibGUnLFxuICB9LFxuICB7XG4gICAgdHlwZTogJ2Z1bmN0aW9uJyxcbiAgICBuYW1lOiAndHJhbnNmZXJGcm9tJyxcbiAgICBpbnB1dHM6IFtcbiAgICAgIHsgbmFtZTogJ2Zyb20nLCB0eXBlOiAnYWRkcmVzcycgfSxcbiAgICAgIHsgbmFtZTogJ3RvJywgdHlwZTogJ2FkZHJlc3MnIH0sXG4gICAgICB7IG5hbWU6ICdhbW91bnQnLCB0eXBlOiAndWludDI1NicgfSxcbiAgICBdLFxuICAgIG91dHB1dHM6IFt7IG5hbWU6ICcnLCB0eXBlOiAnYm9vbCcgfV0sXG4gICAgc3RhdGVNdXRhYmlsaXR5OiAnbm9ucGF5YWJsZScsXG4gIH0sXG4gIC4uLlRJUDIwX1RSQU5TRkVSX1dJVEhfTUVNT19BQkksXG5dIGFzIGNvbnN0O1xuIl19
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TIP-20 Transaction
|
|
3
|
+
*
|
|
4
|
+
* Represents a Tempo Account Abstraction (AA) transaction (type 0x76)
|
|
5
|
+
* Supports single or batch TIP-20 token transfers with memos
|
|
6
|
+
*/
|
|
7
|
+
import { BaseTransaction, TransactionType } from '@bitgo-beta/sdk-core';
|
|
8
|
+
import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
|
|
9
|
+
import { Address, Hex, Tip20Operation } from './types';
|
|
10
|
+
/**
|
|
11
|
+
* TIP-20 Transaction Request Structure
|
|
12
|
+
* Represents the raw transaction data for Tempo Account Abstraction (EIP-7702)
|
|
13
|
+
*/
|
|
14
|
+
export interface Tip20TransactionRequest {
|
|
15
|
+
/** Transaction type (0x76 for Tempo AA) */
|
|
16
|
+
type: number | string;
|
|
17
|
+
/** Chain ID for the Tempo network */
|
|
18
|
+
chainId: number;
|
|
19
|
+
/** Transaction nonce */
|
|
20
|
+
nonce: number;
|
|
21
|
+
/** Maximum fee per gas (EIP-1559) */
|
|
22
|
+
maxFeePerGas: bigint;
|
|
23
|
+
/** Maximum priority fee per gas (EIP-1559) */
|
|
24
|
+
maxPriorityFeePerGas: bigint;
|
|
25
|
+
/** Gas limit for the transaction */
|
|
26
|
+
gas: bigint;
|
|
27
|
+
/** Array of calls to execute in this transaction */
|
|
28
|
+
calls: {
|
|
29
|
+
to: Address;
|
|
30
|
+
data: Hex;
|
|
31
|
+
value: bigint;
|
|
32
|
+
}[];
|
|
33
|
+
/** Access list (optional, typically empty for TIP-20) */
|
|
34
|
+
accessList?: unknown[];
|
|
35
|
+
/** Optional TIP-20 token to use for paying fees */
|
|
36
|
+
feeToken?: Address;
|
|
37
|
+
}
|
|
38
|
+
export declare class Tip20Transaction extends BaseTransaction {
|
|
39
|
+
private txRequest;
|
|
40
|
+
private _operations;
|
|
41
|
+
private _signature?;
|
|
42
|
+
constructor(_coinConfig: Readonly<CoinConfig>, request: Tip20TransactionRequest, operations?: Tip20Operation[]);
|
|
43
|
+
get type(): TransactionType;
|
|
44
|
+
canSign(): boolean;
|
|
45
|
+
serialize(signature?: {
|
|
46
|
+
r: Hex;
|
|
47
|
+
s: Hex;
|
|
48
|
+
yParity: number;
|
|
49
|
+
}): Promise<Hex>;
|
|
50
|
+
getOperations(): Tip20Operation[];
|
|
51
|
+
getFeeToken(): Address | undefined;
|
|
52
|
+
getOperationCount(): number;
|
|
53
|
+
isBatch(): boolean;
|
|
54
|
+
setSignature(signature: {
|
|
55
|
+
r: Hex;
|
|
56
|
+
s: Hex;
|
|
57
|
+
yParity: number;
|
|
58
|
+
}): void;
|
|
59
|
+
getSignature(): {
|
|
60
|
+
r: Hex;
|
|
61
|
+
s: Hex;
|
|
62
|
+
yParity: number;
|
|
63
|
+
} | undefined;
|
|
64
|
+
toJson(): Record<string, unknown>;
|
|
65
|
+
toBroadcastFormat(): Promise<string>;
|
|
66
|
+
get id(): string;
|
|
67
|
+
toString(): string;
|
|
68
|
+
canBroadcast(): boolean;
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=transaction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../src/lib/transaction.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,eAAe,EAAyB,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC/F,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAEvD;;;GAGG;AACH,MAAM,WAAW,uBAAuB;IACtC,2CAA2C;IAC3C,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,qCAAqC;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,wBAAwB;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,qCAAqC;IACrC,YAAY,EAAE,MAAM,CAAC;IACrB,8CAA8C;IAC9C,oBAAoB,EAAE,MAAM,CAAC;IAC7B,oCAAoC;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,oDAAoD;IACpD,KAAK,EAAE;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,GAAG,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACnD,yDAAyD;IACzD,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC;IACvB,mDAAmD;IACnD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,qBAAa,gBAAiB,SAAQ,eAAe;IACnD,OAAO,CAAC,SAAS,CAA0B;IAC3C,OAAO,CAAC,WAAW,CAAmB;IACtC,OAAO,CAAC,UAAU,CAAC,CAAsC;gBAE7C,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,uBAAuB,EAAE,UAAU,GAAE,cAAc,EAAO;IAMlH,IAAI,IAAI,IAAI,eAAe,CAE1B;IAED,OAAO,IAAI,OAAO;IAIZ,SAAS,CAAC,SAAS,CAAC,EAAE;QAAE,CAAC,EAAE,GAAG,CAAC;QAAC,CAAC,EAAE,GAAG,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,GAAG,CAAC;IAK9E,aAAa,IAAI,cAAc,EAAE;IAIjC,WAAW,IAAI,OAAO,GAAG,SAAS;IAIlC,iBAAiB,IAAI,MAAM;IAI3B,OAAO,IAAI,OAAO;IAIlB,YAAY,CAAC,SAAS,EAAE;QAAE,CAAC,EAAE,GAAG,CAAC;QAAC,CAAC,EAAE,GAAG,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAIlE,YAAY,IAAI;QAAE,CAAC,EAAE,GAAG,CAAC;QAAC,CAAC,EAAE,GAAG,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS;IAI/D,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAe3B,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC;IAI1C,IAAI,EAAE,IAAI,MAAM,CAEf;IAED,QAAQ,IAAI,MAAM;IAIlB,YAAY,IAAI,OAAO;CAGxB"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* TIP-20 Transaction
|
|
4
|
+
*
|
|
5
|
+
* Represents a Tempo Account Abstraction (AA) transaction (type 0x76)
|
|
6
|
+
* Supports single or batch TIP-20 token transfers with memos
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.Tip20Transaction = void 0;
|
|
10
|
+
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
11
|
+
class Tip20Transaction extends sdk_core_1.BaseTransaction {
|
|
12
|
+
constructor(_coinConfig, request, operations = []) {
|
|
13
|
+
super(_coinConfig);
|
|
14
|
+
this.txRequest = request;
|
|
15
|
+
this._operations = operations;
|
|
16
|
+
}
|
|
17
|
+
get type() {
|
|
18
|
+
return sdk_core_1.TransactionType.Send;
|
|
19
|
+
}
|
|
20
|
+
canSign() {
|
|
21
|
+
return true;
|
|
22
|
+
}
|
|
23
|
+
async serialize(signature) {
|
|
24
|
+
// TODO: Implement EIP-7702 transaction serialization with ethers.js
|
|
25
|
+
throw new sdk_core_1.ParseTransactionError('Transaction serialization not yet implemented');
|
|
26
|
+
}
|
|
27
|
+
getOperations() {
|
|
28
|
+
return [...this._operations];
|
|
29
|
+
}
|
|
30
|
+
getFeeToken() {
|
|
31
|
+
return this.txRequest.feeToken;
|
|
32
|
+
}
|
|
33
|
+
getOperationCount() {
|
|
34
|
+
return this.txRequest.calls.length;
|
|
35
|
+
}
|
|
36
|
+
isBatch() {
|
|
37
|
+
return this.txRequest.calls.length > 1;
|
|
38
|
+
}
|
|
39
|
+
setSignature(signature) {
|
|
40
|
+
this._signature = signature;
|
|
41
|
+
}
|
|
42
|
+
getSignature() {
|
|
43
|
+
return this._signature;
|
|
44
|
+
}
|
|
45
|
+
toJson() {
|
|
46
|
+
return {
|
|
47
|
+
type: this.txRequest.type,
|
|
48
|
+
chainId: this.txRequest.chainId,
|
|
49
|
+
nonce: this.txRequest.nonce,
|
|
50
|
+
maxFeePerGas: this.txRequest.maxFeePerGas.toString(),
|
|
51
|
+
maxPriorityFeePerGas: this.txRequest.maxPriorityFeePerGas.toString(),
|
|
52
|
+
gas: this.txRequest.gas.toString(),
|
|
53
|
+
callCount: this.txRequest.calls.length,
|
|
54
|
+
feeToken: this.txRequest.feeToken,
|
|
55
|
+
operations: this._operations,
|
|
56
|
+
signature: this._signature,
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
async toBroadcastFormat() {
|
|
60
|
+
return await this.serialize(this._signature);
|
|
61
|
+
}
|
|
62
|
+
get id() {
|
|
63
|
+
return 'pending';
|
|
64
|
+
}
|
|
65
|
+
toString() {
|
|
66
|
+
return JSON.stringify(this.toJson(), null, 2);
|
|
67
|
+
}
|
|
68
|
+
canBroadcast() {
|
|
69
|
+
return this.txRequest.calls.length > 0 && this.txRequest.chainId > 0;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
exports.Tip20Transaction = Tip20Transaction;
|
|
73
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3RyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7R0FLRzs7O0FBRUgsbURBQStGO0FBNkIvRixNQUFhLGdCQUFpQixTQUFRLDBCQUFlO0lBS25ELFlBQVksV0FBaUMsRUFBRSxPQUFnQyxFQUFFLGFBQStCLEVBQUU7UUFDaEgsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ25CLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxJQUFJLElBQUk7UUFDTixPQUFPLDBCQUFlLENBQUMsSUFBSSxDQUFDO0lBQzlCLENBQUM7SUFFRCxPQUFPO1FBQ0wsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsS0FBSyxDQUFDLFNBQVMsQ0FBQyxTQUErQztRQUM3RCxvRUFBb0U7UUFDcEUsTUFBTSxJQUFJLGdDQUFxQixDQUFDLCtDQUErQyxDQUFDLENBQUM7SUFDbkYsQ0FBQztJQUVELGFBQWE7UUFDWCxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVELFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDO0lBQ2pDLENBQUM7SUFFRCxpQkFBaUI7UUFDZixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztJQUNyQyxDQUFDO0lBRUQsT0FBTztRQUNMLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsWUFBWSxDQUFDLFNBQThDO1FBQ3pELElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO0lBQzlCLENBQUM7SUFFRCxZQUFZO1FBQ1YsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxNQUFNO1FBQ0osT0FBTztZQUNMLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUk7WUFDekIsT0FBTyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTztZQUMvQixLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLO1lBQzNCLFlBQVksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUU7WUFDcEQsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLEVBQUU7WUFDcEUsR0FBRyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRTtZQUNsQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsTUFBTTtZQUN0QyxRQUFRLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRO1lBQ2pDLFVBQVUsRUFBRSxJQUFJLENBQUMsV0FBVztZQUM1QixTQUFTLEVBQUUsSUFBSSxDQUFDLFVBQVU7U0FDM0IsQ0FBQztJQUNKLENBQUM7SUFFRCxLQUFLLENBQUMsaUJBQWlCO1FBQ3JCLE9BQU8sTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsSUFBSSxFQUFFO1FBQ0osT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVELFFBQVE7UUFDTixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQsWUFBWTtRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUM7SUFDdkUsQ0FBQztDQUNGO0FBOUVELDRDQThFQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVElQLTIwIFRyYW5zYWN0aW9uXG4gKlxuICogUmVwcmVzZW50cyBhIFRlbXBvIEFjY291bnQgQWJzdHJhY3Rpb24gKEFBKSB0cmFuc2FjdGlvbiAodHlwZSAweDc2KVxuICogU3VwcG9ydHMgc2luZ2xlIG9yIGJhdGNoIFRJUC0yMCB0b2tlbiB0cmFuc2ZlcnMgd2l0aCBtZW1vc1xuICovXG5cbmltcG9ydCB7IEJhc2VUcmFuc2FjdGlvbiwgUGFyc2VUcmFuc2FjdGlvbkVycm9yLCBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBBZGRyZXNzLCBIZXgsIFRpcDIwT3BlcmF0aW9uIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogVElQLTIwIFRyYW5zYWN0aW9uIFJlcXVlc3QgU3RydWN0dXJlXG4gKiBSZXByZXNlbnRzIHRoZSByYXcgdHJhbnNhY3Rpb24gZGF0YSBmb3IgVGVtcG8gQWNjb3VudCBBYnN0cmFjdGlvbiAoRUlQLTc3MDIpXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGlwMjBUcmFuc2FjdGlvblJlcXVlc3Qge1xuICAvKiogVHJhbnNhY3Rpb24gdHlwZSAoMHg3NiBmb3IgVGVtcG8gQUEpICovXG4gIHR5cGU6IG51bWJlciB8IHN0cmluZztcbiAgLyoqIENoYWluIElEIGZvciB0aGUgVGVtcG8gbmV0d29yayAqL1xuICBjaGFpbklkOiBudW1iZXI7XG4gIC8qKiBUcmFuc2FjdGlvbiBub25jZSAqL1xuICBub25jZTogbnVtYmVyO1xuICAvKiogTWF4aW11bSBmZWUgcGVyIGdhcyAoRUlQLTE1NTkpICovXG4gIG1heEZlZVBlckdhczogYmlnaW50O1xuICAvKiogTWF4aW11bSBwcmlvcml0eSBmZWUgcGVyIGdhcyAoRUlQLTE1NTkpICovXG4gIG1heFByaW9yaXR5RmVlUGVyR2FzOiBiaWdpbnQ7XG4gIC8qKiBHYXMgbGltaXQgZm9yIHRoZSB0cmFuc2FjdGlvbiAqL1xuICBnYXM6IGJpZ2ludDtcbiAgLyoqIEFycmF5IG9mIGNhbGxzIHRvIGV4ZWN1dGUgaW4gdGhpcyB0cmFuc2FjdGlvbiAqL1xuICBjYWxsczogeyB0bzogQWRkcmVzczsgZGF0YTogSGV4OyB2YWx1ZTogYmlnaW50IH1bXTtcbiAgLyoqIEFjY2VzcyBsaXN0IChvcHRpb25hbCwgdHlwaWNhbGx5IGVtcHR5IGZvciBUSVAtMjApICovXG4gIGFjY2Vzc0xpc3Q/OiB1bmtub3duW107XG4gIC8qKiBPcHRpb25hbCBUSVAtMjAgdG9rZW4gdG8gdXNlIGZvciBwYXlpbmcgZmVlcyAqL1xuICBmZWVUb2tlbj86IEFkZHJlc3M7XG59XG5cbmV4cG9ydCBjbGFzcyBUaXAyMFRyYW5zYWN0aW9uIGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uIHtcbiAgcHJpdmF0ZSB0eFJlcXVlc3Q6IFRpcDIwVHJhbnNhY3Rpb25SZXF1ZXN0O1xuICBwcml2YXRlIF9vcGVyYXRpb25zOiBUaXAyME9wZXJhdGlvbltdO1xuICBwcml2YXRlIF9zaWduYXR1cmU/OiB7IHI6IEhleDsgczogSGV4OyB5UGFyaXR5OiBudW1iZXIgfTtcblxuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4sIHJlcXVlc3Q6IFRpcDIwVHJhbnNhY3Rpb25SZXF1ZXN0LCBvcGVyYXRpb25zOiBUaXAyME9wZXJhdGlvbltdID0gW10pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gICAgdGhpcy50eFJlcXVlc3QgPSByZXF1ZXN0O1xuICAgIHRoaXMuX29wZXJhdGlvbnMgPSBvcGVyYXRpb25zO1xuICB9XG5cbiAgZ2V0IHR5cGUoKTogVHJhbnNhY3Rpb25UeXBlIHtcbiAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlLlNlbmQ7XG4gIH1cblxuICBjYW5TaWduKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgYXN5bmMgc2VyaWFsaXplKHNpZ25hdHVyZT86IHsgcjogSGV4OyBzOiBIZXg7IHlQYXJpdHk6IG51bWJlciB9KTogUHJvbWlzZTxIZXg+IHtcbiAgICAvLyBUT0RPOiBJbXBsZW1lbnQgRUlQLTc3MDIgdHJhbnNhY3Rpb24gc2VyaWFsaXphdGlvbiB3aXRoIGV0aGVycy5qc1xuICAgIHRocm93IG5ldyBQYXJzZVRyYW5zYWN0aW9uRXJyb3IoJ1RyYW5zYWN0aW9uIHNlcmlhbGl6YXRpb24gbm90IHlldCBpbXBsZW1lbnRlZCcpO1xuICB9XG5cbiAgZ2V0T3BlcmF0aW9ucygpOiBUaXAyME9wZXJhdGlvbltdIHtcbiAgICByZXR1cm4gWy4uLnRoaXMuX29wZXJhdGlvbnNdO1xuICB9XG5cbiAgZ2V0RmVlVG9rZW4oKTogQWRkcmVzcyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMudHhSZXF1ZXN0LmZlZVRva2VuO1xuICB9XG5cbiAgZ2V0T3BlcmF0aW9uQ291bnQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy50eFJlcXVlc3QuY2FsbHMubGVuZ3RoO1xuICB9XG5cbiAgaXNCYXRjaCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy50eFJlcXVlc3QuY2FsbHMubGVuZ3RoID4gMTtcbiAgfVxuXG4gIHNldFNpZ25hdHVyZShzaWduYXR1cmU6IHsgcjogSGV4OyBzOiBIZXg7IHlQYXJpdHk6IG51bWJlciB9KTogdm9pZCB7XG4gICAgdGhpcy5fc2lnbmF0dXJlID0gc2lnbmF0dXJlO1xuICB9XG5cbiAgZ2V0U2lnbmF0dXJlKCk6IHsgcjogSGV4OyBzOiBIZXg7IHlQYXJpdHk6IG51bWJlciB9IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fc2lnbmF0dXJlO1xuICB9XG5cbiAgdG9Kc29uKCk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogdGhpcy50eFJlcXVlc3QudHlwZSxcbiAgICAgIGNoYWluSWQ6IHRoaXMudHhSZXF1ZXN0LmNoYWluSWQsXG4gICAgICBub25jZTogdGhpcy50eFJlcXVlc3Qubm9uY2UsXG4gICAgICBtYXhGZWVQZXJHYXM6IHRoaXMudHhSZXF1ZXN0Lm1heEZlZVBlckdhcy50b1N0cmluZygpLFxuICAgICAgbWF4UHJpb3JpdHlGZWVQZXJHYXM6IHRoaXMudHhSZXF1ZXN0Lm1heFByaW9yaXR5RmVlUGVyR2FzLnRvU3RyaW5nKCksXG4gICAgICBnYXM6IHRoaXMudHhSZXF1ZXN0Lmdhcy50b1N0cmluZygpLFxuICAgICAgY2FsbENvdW50OiB0aGlzLnR4UmVxdWVzdC5jYWxscy5sZW5ndGgsXG4gICAgICBmZWVUb2tlbjogdGhpcy50eFJlcXVlc3QuZmVlVG9rZW4sXG4gICAgICBvcGVyYXRpb25zOiB0aGlzLl9vcGVyYXRpb25zLFxuICAgICAgc2lnbmF0dXJlOiB0aGlzLl9zaWduYXR1cmUsXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIHRvQnJvYWRjYXN0Rm9ybWF0KCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuc2VyaWFsaXplKHRoaXMuX3NpZ25hdHVyZSk7XG4gIH1cblxuICBnZXQgaWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ3BlbmRpbmcnO1xuICB9XG5cbiAgdG9TdHJpbmcoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodGhpcy50b0pzb24oKSwgbnVsbCwgMik7XG4gIH1cblxuICBjYW5Ccm9hZGNhc3QoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudHhSZXF1ZXN0LmNhbGxzLmxlbmd0aCA+IDAgJiYgdGhpcy50eFJlcXVlc3QuY2hhaW5JZCA+IDA7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TIP-20 Transaction Builder
|
|
3
|
+
*
|
|
4
|
+
* Unified builder for TIP-20 transactions supporting:
|
|
5
|
+
* - Single or batch operations
|
|
6
|
+
* - Per-operation memos for tracking
|
|
7
|
+
* - Custom fee token selection
|
|
8
|
+
* - EIP-7702 Account Abstraction (type 0x76)
|
|
9
|
+
*/
|
|
10
|
+
import { TransactionBuilder as AbstractTransactionBuilder, TransferBuilder } from '@bitgo-beta/abstract-eth';
|
|
11
|
+
import { BaseTransaction } from '@bitgo-beta/sdk-core';
|
|
12
|
+
import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
|
|
13
|
+
import { Address, Tip20Operation } from './types';
|
|
14
|
+
/**
|
|
15
|
+
* Transaction Builder for TIP-20 tokens on Tempo blockchain
|
|
16
|
+
* Extends abstract-eth TransactionBuilder with Tempo-specific features
|
|
17
|
+
*/
|
|
18
|
+
export declare class Tip20TransactionBuilder extends AbstractTransactionBuilder {
|
|
19
|
+
private operations;
|
|
20
|
+
private _feeToken?;
|
|
21
|
+
private _nonce?;
|
|
22
|
+
private _gas?;
|
|
23
|
+
private _maxFeePerGas?;
|
|
24
|
+
private _maxPriorityFeePerGas?;
|
|
25
|
+
constructor(_coinConfig: Readonly<CoinConfig>);
|
|
26
|
+
/**
|
|
27
|
+
* Implement the transfer method from abstract class
|
|
28
|
+
* Note: For TIP-20 transactions, use addOperation() instead
|
|
29
|
+
*/
|
|
30
|
+
transfer(data?: string, isFirstSigner?: boolean): TransferBuilder;
|
|
31
|
+
/**
|
|
32
|
+
* Build the transaction from configured TIP-20 operations and transaction parameters
|
|
33
|
+
*/
|
|
34
|
+
protected buildImplementation(): Promise<BaseTransaction>;
|
|
35
|
+
/**
|
|
36
|
+
* Add a single operation to the transaction
|
|
37
|
+
* Can be called multiple times to create batch transactions
|
|
38
|
+
*
|
|
39
|
+
* @param operation - TIP-20 operation with token, recipient, amount, and optional memo
|
|
40
|
+
* @returns this builder instance for chaining
|
|
41
|
+
*/
|
|
42
|
+
addOperation(operation: Tip20Operation): this;
|
|
43
|
+
/**
|
|
44
|
+
* Set which TIP-20 token will be used to pay transaction fees
|
|
45
|
+
* This is a global setting for the entire transaction
|
|
46
|
+
*
|
|
47
|
+
* @param tokenAddress - Address of the TIP-20 token to use for fees
|
|
48
|
+
* @returns this builder instance for chaining
|
|
49
|
+
*/
|
|
50
|
+
feeToken(tokenAddress: string): this;
|
|
51
|
+
/**
|
|
52
|
+
* Set the transaction nonce
|
|
53
|
+
*
|
|
54
|
+
* @param nonce - Transaction nonce
|
|
55
|
+
* @returns this builder instance for chaining
|
|
56
|
+
*/
|
|
57
|
+
nonce(nonce: number): this;
|
|
58
|
+
/**
|
|
59
|
+
* Set the gas limit for the transaction
|
|
60
|
+
*
|
|
61
|
+
* @param gas - Gas limit
|
|
62
|
+
* @returns this builder instance for chaining
|
|
63
|
+
*/
|
|
64
|
+
gas(gas: string | bigint): this;
|
|
65
|
+
/**
|
|
66
|
+
* Set the maximum fee per gas (EIP-1559)
|
|
67
|
+
*
|
|
68
|
+
* @param maxFeePerGas - Maximum fee per gas in wei
|
|
69
|
+
* @returns this builder instance for chaining
|
|
70
|
+
*/
|
|
71
|
+
maxFeePerGas(maxFeePerGas: string | bigint): this;
|
|
72
|
+
/**
|
|
73
|
+
* Set the maximum priority fee per gas (EIP-1559)
|
|
74
|
+
*
|
|
75
|
+
* @param maxPriorityFeePerGas - Maximum priority fee per gas in wei
|
|
76
|
+
* @returns this builder instance for chaining
|
|
77
|
+
*/
|
|
78
|
+
maxPriorityFeePerGas(maxPriorityFeePerGas: string | bigint): this;
|
|
79
|
+
/**
|
|
80
|
+
* Get all operations in this transaction
|
|
81
|
+
* @returns Array of TIP-20 operations
|
|
82
|
+
*/
|
|
83
|
+
getOperations(): Tip20Operation[];
|
|
84
|
+
/**
|
|
85
|
+
* Get the fee token address if set
|
|
86
|
+
* @returns Fee token address or undefined
|
|
87
|
+
*/
|
|
88
|
+
getFeeToken(): Address | undefined;
|
|
89
|
+
/**
|
|
90
|
+
* Validate a single operation
|
|
91
|
+
* @param operation - Operation to validate
|
|
92
|
+
* @throws BuildTransactionError if invalid
|
|
93
|
+
*/
|
|
94
|
+
private validateOperation;
|
|
95
|
+
/**
|
|
96
|
+
* Convert a TIP-20 operation to an AA call
|
|
97
|
+
*/
|
|
98
|
+
private operationToCall;
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=transactionBuilder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transactionBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/transactionBuilder.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,kBAAkB,IAAI,0BAA0B,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC7G,OAAO,EAAE,eAAe,EAAyB,MAAM,sBAAsB,CAAC;AAC9E,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAO,cAAc,EAAE,MAAM,SAAS,CAAC;AAKvD;;;GAGG;AACH,qBAAa,uBAAwB,SAAQ,0BAA0B;IACrE,OAAO,CAAC,UAAU,CAAwB;IAC1C,OAAO,CAAC,SAAS,CAAC,CAAU;IAC5B,OAAO,CAAC,MAAM,CAAC,CAAS;IACxB,OAAO,CAAC,IAAI,CAAC,CAAS;IACtB,OAAO,CAAC,aAAa,CAAC,CAAS;IAC/B,OAAO,CAAC,qBAAqB,CAAC,CAAS;gBAE3B,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C;;;OAGG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,OAAO,GAAG,eAAe;IASjE;;OAEG;cACa,mBAAmB,IAAI,OAAO,CAAC,eAAe,CAAC;IAsC/D;;;;;;OAMG;IACH,YAAY,CAAC,SAAS,EAAE,cAAc,GAAG,IAAI;IAM7C;;;;;;OAMG;IACH,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IAQpC;;;;;OAKG;IACH,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAQ1B;;;;;OAKG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAS/B;;;;;OAKG;IACH,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IASjD;;;;;OAKG;IACH,oBAAoB,CAAC,oBAAoB,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IASjE;;;OAGG;IACH,aAAa,IAAI,cAAc,EAAE;IAIjC;;;OAGG;IACH,WAAW,IAAI,OAAO,GAAG,SAAS;IAIlC;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IAsBzB;;OAEG;IACH,OAAO,CAAC,eAAe;CAUxB"}
|