@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.
@@ -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,QAAmB,CAAC;AACpD,eAAO,MAAM,sBAAsB,QAAsB,CAAC"}
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 = /^[A-Za-z0-9]+$/; // Update with actual address format
10
- exports.VALID_PUBLIC_KEY_REGEX = /^[A-Fa-f0-9]{64}$/; // Update with actual public key format
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOztHQUVHOzs7QUFFVSxRQUFBLFlBQVksR0FBRyxPQUFPLENBQUM7QUFDdkIsUUFBQSxZQUFZLEdBQUcsUUFBUSxDQUFDO0FBRXhCLFFBQUEsbUJBQW1CLEdBQUcsZ0JBQWdCLENBQUMsQ0FBQyxvQ0FBb0M7QUFDNUUsUUFBQSxzQkFBc0IsR0FBRyxtQkFBbUIsQ0FBQyxDQUFDLHVDQUF1QyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29uc3RhbnRzIGZvciBUZW1wbyBibG9ja2NoYWluIChFVk0tY29tcGF0aWJsZSlcbiAqL1xuXG5leHBvcnQgY29uc3QgTUFJTk5FVF9DT0lOID0gJ3RlbXBvJztcbmV4cG9ydCBjb25zdCBURVNUTkVUX0NPSU4gPSAndHRlbXBvJztcblxuZXhwb3J0IGNvbnN0IFZBTElEX0FERFJFU1NfUkVHRVggPSAvXltBLVphLXowLTldKyQvOyAvLyBVcGRhdGUgd2l0aCBhY3R1YWwgYWRkcmVzcyBmb3JtYXRcbmV4cG9ydCBjb25zdCBWQUxJRF9QVUJMSUNfS0VZX1JFR0VYID0gL15bQS1GYS1mMC05XXs2NH0kLzsgLy8gVXBkYXRlIHdpdGggYWN0dWFsIHB1YmxpYyBrZXkgZm9ybWF0XG4iXX0=
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=
@@ -3,4 +3,7 @@ export * from './utils';
3
3
  export * from './constants';
4
4
  export * from './iface';
5
5
  export * from './tip20Abi';
6
+ export * from './types';
7
+ export * from './transactionBuilder';
8
+ export * from './transaction';
6
9
  //# sourceMappingURL=index.d.ts.map
@@ -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"}
@@ -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
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw0Q0FBMEI7QUFDMUIsMENBQXdCO0FBQ3hCLDhDQUE0QjtBQUM1QiwwQ0FBd0I7QUFDeEIsNkNBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9rZXlQYWlyJztcbmV4cG9ydCAqIGZyb20gJy4vdXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdGFudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9pZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL3RpcDIwQWJpJztcbiJdfQ==
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
- * TIP20 Token Standard ABI (Skeleton)
2
+ * TIP-20 Token Standard ABI
3
3
  *
4
- * TODO: Update this file when TIP20 ABI becomes available
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
- * Placeholder TIP20 ABI
8
- * This is an empty array that should be replaced with the actual ABI
9
+ * TIP-20 transferWithMemo ABI
10
+ * Standard function for TIP-20 token transfers with memo field
9
11
  */
10
- export declare const TIP20_ABI: readonly [];
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
- * Placeholder for TIP20 Factory ABI
32
+ * Standard TIP-20 token ABI (similar to ERC-20)
13
33
  */
14
- export declare const TIP20_FACTORY_ABI: readonly [];
15
- /**
16
- * Get the method signature for TIP20 transfer
17
- * TODO: Update with actual method name if different from ERC20
18
- */
19
- export declare function getTip20TransferSignature(): string;
20
- /**
21
- * Get the method signature for TIP20 transferFrom
22
- * TODO: Update with actual method name if different from ERC20
23
- */
24
- export declare function getTip20TransferFromSignature(): string;
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;;;;GAIG;AAEH;;;GAGG;AACH,eAAO,MAAM,SAAS,aAAc,CAAC;AAErC;;GAEG;AACH,eAAO,MAAM,iBAAiB,aAAc,CAAC;AAE7C;;;GAGG;AACH,wBAAgB,yBAAyB,IAAI,MAAM,CAElD;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,IAAI,MAAM,CAEtD"}
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"}
@@ -1,34 +1,62 @@
1
1
  "use strict";
2
2
  /**
3
- * TIP20 Token Standard ABI (Skeleton)
3
+ * TIP-20 Token Standard ABI
4
4
  *
5
- * TODO: Update this file when TIP20 ABI becomes available
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.TIP20_FACTORY_ABI = exports.TIP20_ABI = void 0;
9
- exports.getTip20TransferSignature = getTip20TransferSignature;
10
- exports.getTip20TransferFromSignature = getTip20TransferFromSignature;
10
+ exports.TIP20_ABI = exports.TIP20_TRANSFER_WITH_MEMO_ABI = void 0;
11
11
  /**
12
- * Placeholder TIP20 ABI
13
- * This is an empty array that should be replaced with the actual ABI
12
+ * TIP-20 transferWithMemo ABI
13
+ * Standard function for TIP-20 token transfers with memo field
14
14
  */
15
- exports.TIP20_ABI = [];
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
- * Placeholder for TIP20 Factory ABI
29
+ * Standard TIP-20 token ABI (similar to ERC-20)
18
30
  */
19
- exports.TIP20_FACTORY_ABI = [];
20
- /**
21
- * Get the method signature for TIP20 transfer
22
- * TODO: Update with actual method name if different from ERC20
23
- */
24
- function getTip20TransferSignature() {
25
- return 'transfer(address,uint256)';
26
- }
27
- /**
28
- * Get the method signature for TIP20 transferFrom
29
- * TODO: Update with actual method name if different from ERC20
30
- */
31
- function getTip20TransferFromSignature() {
32
- return 'transferFrom(address,address,uint256)';
33
- }
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlwMjBBYmkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3RpcDIwQWJpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7OztHQUlHOzs7QUFpQkgsOERBRUM7QUFNRCxzRUFFQztBQXpCRDs7O0dBR0c7QUFDVSxRQUFBLFNBQVMsR0FBRyxFQUFXLENBQUM7QUFFckM7O0dBRUc7QUFDVSxRQUFBLGlCQUFpQixHQUFHLEVBQVcsQ0FBQztBQUU3Qzs7O0dBR0c7QUFDSCxTQUFnQix5QkFBeUI7SUFDdkMsT0FBTywyQkFBMkIsQ0FBQztBQUNyQyxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBZ0IsNkJBQTZCO0lBQzNDLE9BQU8sdUNBQXVDLENBQUM7QUFDakQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVElQMjAgVG9rZW4gU3RhbmRhcmQgQUJJIChTa2VsZXRvbilcbiAqXG4gKiBUT0RPOiBVcGRhdGUgdGhpcyBmaWxlIHdoZW4gVElQMjAgQUJJIGJlY29tZXMgYXZhaWxhYmxlXG4gKi9cblxuLyoqXG4gKiBQbGFjZWhvbGRlciBUSVAyMCBBQklcbiAqIFRoaXMgaXMgYW4gZW1wdHkgYXJyYXkgdGhhdCBzaG91bGQgYmUgcmVwbGFjZWQgd2l0aCB0aGUgYWN0dWFsIEFCSVxuICovXG5leHBvcnQgY29uc3QgVElQMjBfQUJJID0gW10gYXMgY29uc3Q7XG5cbi8qKlxuICogUGxhY2Vob2xkZXIgZm9yIFRJUDIwIEZhY3RvcnkgQUJJXG4gKi9cbmV4cG9ydCBjb25zdCBUSVAyMF9GQUNUT1JZX0FCSSA9IFtdIGFzIGNvbnN0O1xuXG4vKipcbiAqIEdldCB0aGUgbWV0aG9kIHNpZ25hdHVyZSBmb3IgVElQMjAgdHJhbnNmZXJcbiAqIFRPRE86IFVwZGF0ZSB3aXRoIGFjdHVhbCBtZXRob2QgbmFtZSBpZiBkaWZmZXJlbnQgZnJvbSBFUkMyMFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGlwMjBUcmFuc2ZlclNpZ25hdHVyZSgpOiBzdHJpbmcge1xuICByZXR1cm4gJ3RyYW5zZmVyKGFkZHJlc3MsdWludDI1NiknO1xufVxuXG4vKipcbiAqIEdldCB0aGUgbWV0aG9kIHNpZ25hdHVyZSBmb3IgVElQMjAgdHJhbnNmZXJGcm9tXG4gKiBUT0RPOiBVcGRhdGUgd2l0aCBhY3R1YWwgbWV0aG9kIG5hbWUgaWYgZGlmZmVyZW50IGZyb20gRVJDMjBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRpcDIwVHJhbnNmZXJGcm9tU2lnbmF0dXJlKCk6IHN0cmluZyB7XG4gIHJldHVybiAndHJhbnNmZXJGcm9tKGFkZHJlc3MsYWRkcmVzcyx1aW50MjU2KSc7XG59XG4iXX0=
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"}