@bitgo-beta/sdk-coin-tempo 1.0.1-beta.6 → 1.0.1-beta.60

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.
Files changed (45) hide show
  1. package/dist/src/index.d.ts +1 -0
  2. package/dist/src/index.d.ts.map +1 -1
  3. package/dist/src/index.js +2 -1
  4. package/dist/src/lib/constants.d.ts +17 -1
  5. package/dist/src/lib/constants.d.ts.map +1 -1
  6. package/dist/src/lib/constants.js +22 -5
  7. package/dist/src/lib/index.d.ts +4 -0
  8. package/dist/src/lib/index.d.ts.map +1 -1
  9. package/dist/src/lib/index.js +5 -1
  10. package/dist/src/lib/keyPair.d.ts +8 -18
  11. package/dist/src/lib/keyPair.d.ts.map +1 -1
  12. package/dist/src/lib/keyPair.js +18 -84
  13. package/dist/src/lib/tip20Abi.d.ts +98 -0
  14. package/dist/src/lib/tip20Abi.d.ts.map +1 -0
  15. package/dist/src/lib/tip20Abi.js +62 -0
  16. package/dist/src/lib/transaction.d.ts +112 -0
  17. package/dist/src/lib/transaction.d.ts.map +1 -0
  18. package/dist/src/lib/transaction.js +164 -0
  19. package/dist/src/lib/transactionBuilder.d.ts +100 -0
  20. package/dist/src/lib/transactionBuilder.d.ts.map +1 -0
  21. package/dist/src/lib/transactionBuilder.js +204 -0
  22. package/dist/src/lib/types.d.ts +17 -0
  23. package/dist/src/lib/types.d.ts.map +1 -0
  24. package/dist/src/lib/types.js +3 -0
  25. package/dist/src/lib/utils.d.ts +54 -7
  26. package/dist/src/lib/utils.d.ts.map +1 -1
  27. package/dist/src/lib/utils.js +122 -16
  28. package/dist/src/register.d.ts +4 -0
  29. package/dist/src/register.d.ts.map +1 -1
  30. package/dist/src/register.js +26 -1
  31. package/dist/src/tempo.d.ts +37 -44
  32. package/dist/src/tempo.d.ts.map +1 -1
  33. package/dist/src/tempo.js +52 -84
  34. package/dist/src/tip20Token.d.ts +89 -0
  35. package/dist/src/tip20Token.d.ts.map +1 -0
  36. package/dist/src/tip20Token.js +198 -0
  37. package/dist/test/integration/tip20.d.ts +2 -0
  38. package/dist/test/integration/tip20.d.ts.map +1 -0
  39. package/dist/test/integration/tip20.js +115 -0
  40. package/dist/test/unit/transactionBuilder.d.ts +2 -0
  41. package/dist/test/unit/transactionBuilder.d.ts.map +1 -0
  42. package/dist/test/unit/transactionBuilder.js +252 -0
  43. package/dist/test/unit/utils.js +6 -5
  44. package/dist/tsconfig.tsbuildinfo +1 -1
  45. package/package.json +10 -6
@@ -1,5 +1,6 @@
1
1
  export * from './lib';
2
2
  export * from './tempo';
3
3
  export * from './ttempo';
4
+ export * from './tip20Token';
4
5
  export * from './register';
5
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAC;AACtB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAC;AACtB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC"}
package/dist/src/index.js CHANGED
@@ -17,5 +17,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./lib"), exports);
18
18
  __exportStar(require("./tempo"), exports);
19
19
  __exportStar(require("./ttempo"), exports);
20
+ __exportStar(require("./tip20Token"), exports);
20
21
  __exportStar(require("./register"), exports);
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHdDQUFzQjtBQUN0QiwwQ0FBd0I7QUFDeEIsMkNBQXlCO0FBQ3pCLDZDQUEyQiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliJztcbmV4cG9ydCAqIGZyb20gJy4vdGVtcG8nO1xuZXhwb3J0ICogZnJvbSAnLi90dGVtcG8nO1xuZXhwb3J0ICogZnJvbSAnLi9yZWdpc3Rlcic7XG4iXX0=
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHdDQUFzQjtBQUN0QiwwQ0FBd0I7QUFDeEIsMkNBQXlCO0FBQ3pCLCtDQUE2QjtBQUM3Qiw2Q0FBMkIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2xpYic7XG5leHBvcnQgKiBmcm9tICcuL3RlbXBvJztcbmV4cG9ydCAqIGZyb20gJy4vdHRlbXBvJztcbmV4cG9ydCAqIGZyb20gJy4vdGlwMjBUb2tlbic7XG5leHBvcnQgKiBmcm9tICcuL3JlZ2lzdGVyJztcbiJdfQ==
@@ -1,8 +1,24 @@
1
1
  /**
2
- * Constants for Tempo
2
+ * Constants for Tempo blockchain (EVM-compatible)
3
3
  */
4
4
  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"}
@@ -1,11 +1,28 @@
1
1
  "use strict";
2
2
  /**
3
- * Constants for Tempo
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOztHQUVHOzs7QUFFVSxRQUFBLFlBQVksR0FBRyxPQUFPLENBQUM7QUFDdkIsUUFBQSxZQUFZLEdBQUcsUUFBUSxDQUFDO0FBRXhCLFFBQUEsbUJBQW1CLEdBQUcsZ0JBQWdCLENBQUMsQ0FBQyxvQ0FBb0M7QUFDNUUsUUFBQSxzQkFBc0IsR0FBRyxtQkFBbUIsQ0FBQyxDQUFDLHVDQUF1QyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29uc3RhbnRzIGZvciBUZW1wb1xuICovXG5cbmV4cG9ydCBjb25zdCBNQUlOTkVUX0NPSU4gPSAndGVtcG8nO1xuZXhwb3J0IGNvbnN0IFRFU1RORVRfQ09JTiA9ICd0dGVtcG8nO1xuXG5leHBvcnQgY29uc3QgVkFMSURfQUREUkVTU19SRUdFWCA9IC9eW0EtWmEtejAtOV0rJC87IC8vIFVwZGF0ZSB3aXRoIGFjdHVhbCBhZGRyZXNzIGZvcm1hdFxuZXhwb3J0IGNvbnN0IFZBTElEX1BVQkxJQ19LRVlfUkVHRVggPSAvXltBLUZhLWYwLTldezY0fSQvOyAvLyBVcGRhdGUgd2l0aCBhY3R1YWwgcHVibGljIGtleSBmb3JtYXRcbiJdfQ==
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=
@@ -2,4 +2,8 @@ export * from './keyPair';
2
2
  export * from './utils';
3
3
  export * from './constants';
4
4
  export * from './iface';
5
+ export * from './tip20Abi';
6
+ export * from './types';
7
+ export * from './transactionBuilder';
8
+ export * from './transaction';
5
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"}
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"}
@@ -18,4 +18,8 @@ __exportStar(require("./keyPair"), exports);
18
18
  __exportStar(require("./utils"), exports);
19
19
  __exportStar(require("./constants"), exports);
20
20
  __exportStar(require("./iface"), exports);
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw0Q0FBMEI7QUFDMUIsMENBQXdCO0FBQ3hCLDhDQUE0QjtBQUM1QiwwQ0FBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2tleVBhaXInO1xuZXhwb3J0ICogZnJvbSAnLi91dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0YW50cyc7XG5leHBvcnQgKiBmcm9tICcuL2lmYWNlJztcbiJdfQ==
21
+ __exportStar(require("./tip20Abi"), exports);
22
+ __exportStar(require("./types"), exports);
23
+ __exportStar(require("./transactionBuilder"), exports);
24
+ __exportStar(require("./transaction"), exports);
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw0Q0FBMEI7QUFDMUIsMENBQXdCO0FBQ3hCLDhDQUE0QjtBQUM1QiwwQ0FBd0I7QUFDeEIsNkNBQTJCO0FBQzNCLDBDQUF3QjtBQUN4Qix1REFBcUM7QUFDckMsZ0RBQThCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9rZXlQYWlyJztcbmV4cG9ydCAqIGZyb20gJy4vdXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdGFudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9pZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL3RpcDIwQWJpJztcbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXInO1xuZXhwb3J0ICogZnJvbSAnLi90cmFuc2FjdGlvbic7XG4iXX0=
@@ -1,28 +1,18 @@
1
+ /**
2
+ * Tempo KeyPair - Reuses Ethereum KeyPair Implementation
3
+ *
4
+ * Since Tempo is EVM-compatible and uses the same cryptography (ECDSA/secp256k1)
5
+ * as Ethereum, we can directly reuse the Ethereum KeyPair implementation.
6
+ */
1
7
  import { DefaultKeys, KeyPairOptions } from '@bitgo-beta/sdk-core';
2
8
  /**
3
- * Tempo keys and address management
9
+ * Tempo KeyPair class
10
+ * Uses same key derivation as Ethereum (BIP32 + secp256k1)
4
11
  */
5
12
  export declare class KeyPair {
6
13
  private keyPair;
7
- /**
8
- * Public constructor. By default, creates a key pair with a random master seed.
9
- *
10
- * @param { KeyPairOptions } source Either a master seed, a private key, or a public key
11
- */
12
14
  constructor(source?: KeyPairOptions);
13
- /**
14
- * Generate a keypair from a seed
15
- * @param seed
16
- * @private
17
- */
18
- private generateKeyPairFromSeed;
19
- /**
20
- * Get the public key
21
- */
22
15
  getKeys(): DefaultKeys;
23
- /**
24
- * Get the address
25
- */
26
16
  getAddress(): string;
27
17
  }
28
18
  //# sourceMappingURL=keyPair.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"keyPair.d.ts","sourceRoot":"","sources":["../../../src/lib/keyPair.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAqC,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGtG;;GAEG;AACH,qBAAa,OAAO;IAClB,OAAO,CAAC,OAAO,CAAc;IAE7B;;;;OAIG;gBACS,MAAM,CAAC,EAAE,cAAc;IAqBnC;;;;OAIG;IACH,OAAO,CAAC,uBAAuB;IAY/B;;OAEG;IACH,OAAO,IAAI,WAAW;IAItB;;OAEG;IACH,UAAU,IAAI,MAAM;CAIrB"}
1
+ {"version":3,"file":"keyPair.d.ts","sourceRoot":"","sources":["../../../src/lib/keyPair.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEnE;;;GAGG;AACH,qBAAa,OAAO;IAClB,OAAO,CAAC,OAAO,CAAc;gBAEjB,MAAM,CAAC,EAAE,cAAc;IAWnC,OAAO,IAAI,WAAW;IAItB,UAAU,IAAI,MAAM;CAIrB"}
@@ -1,100 +1,34 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
2
+ /**
3
+ * Tempo KeyPair - Reuses Ethereum KeyPair Implementation
4
+ *
5
+ * Since Tempo is EVM-compatible and uses the same cryptography (ECDSA/secp256k1)
6
+ * as Ethereum, we can directly reuse the Ethereum KeyPair implementation.
7
+ */
35
8
  Object.defineProperty(exports, "__esModule", { value: true });
36
9
  exports.KeyPair = void 0;
37
- const sdk_core_1 = require("@bitgo-beta/sdk-core");
38
- const crypto = __importStar(require("crypto"));
10
+ const secp256k1_1 = require("@bitgo-beta/secp256k1");
39
11
  /**
40
- * Tempo keys and address management
12
+ * Tempo KeyPair class
13
+ * Uses same key derivation as Ethereum (BIP32 + secp256k1)
41
14
  */
42
15
  class KeyPair {
43
- /**
44
- * Public constructor. By default, creates a key pair with a random master seed.
45
- *
46
- * @param { KeyPairOptions } source Either a master seed, a private key, or a public key
47
- */
48
16
  constructor(source) {
49
- let seed;
50
- if (!source) {
51
- seed = crypto.randomBytes(32);
52
- }
53
- else if ((0, sdk_core_1.isSeed)(source)) {
54
- seed = source.seed;
55
- }
56
- else if ((0, sdk_core_1.isPrivateKey)(source)) {
57
- // TODO: Implement private key to keypair conversion
58
- throw new Error('Private key import not yet implemented');
59
- }
60
- else if ((0, sdk_core_1.isPublicKey)(source)) {
61
- // TODO: Implement public key import
62
- throw new Error('Public key import not yet implemented');
63
- }
64
- else {
65
- throw new Error('Invalid key pair options');
66
- }
67
- // TODO: Generate actual keypair from seed based on the coin's key derivation
68
- this.keyPair = this.generateKeyPairFromSeed(seed);
69
- }
70
- /**
71
- * Generate a keypair from a seed
72
- * @param seed
73
- * @private
74
- */
75
- generateKeyPairFromSeed(seed) {
76
- // TODO: Implement actual key generation for Tempo
77
- // This is a placeholder implementation
78
- const prv = seed.toString('hex');
79
- const pub = crypto.createHash('sha256').update(seed).digest('hex');
80
- return {
81
- prv,
82
- pub,
17
+ // TODO: Implement proper key generation when needed
18
+ const seed = Buffer.alloc(64);
19
+ const hdNode = secp256k1_1.bip32.fromSeed(seed);
20
+ this.keyPair = {
21
+ prv: hdNode.toBase58(),
22
+ pub: hdNode.neutered().toBase58(),
83
23
  };
84
24
  }
85
- /**
86
- * Get the public key
87
- */
88
25
  getKeys() {
89
26
  return this.keyPair;
90
27
  }
91
- /**
92
- * Get the address
93
- */
94
28
  getAddress() {
95
- // TODO: Implement address derivation from public key
96
- return this.keyPair.pub;
29
+ // TODO: Implement Ethereum-style address derivation
30
+ return '0x0000000000000000000000000000000000000000';
97
31
  }
98
32
  }
99
33
  exports.KeyPair = KeyPair;
100
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5UGFpci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIva2V5UGFpci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxtREFBc0c7QUFDdEcsK0NBQWlDO0FBRWpDOztHQUVHO0FBQ0gsTUFBYSxPQUFPO0lBR2xCOzs7O09BSUc7SUFDSCxZQUFZLE1BQXVCO1FBQ2pDLElBQUksSUFBWSxDQUFDO1FBRWpCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNaLElBQUksR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2hDLENBQUM7YUFBTSxJQUFJLElBQUEsaUJBQU0sRUFBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQzFCLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDO1FBQ3JCLENBQUM7YUFBTSxJQUFJLElBQUEsdUJBQVksRUFBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQ2hDLG9EQUFvRDtZQUNwRCxNQUFNLElBQUksS0FBSyxDQUFDLHdDQUF3QyxDQUFDLENBQUM7UUFDNUQsQ0FBQzthQUFNLElBQUksSUFBQSxzQkFBVyxFQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDL0Isb0NBQW9DO1lBQ3BDLE1BQU0sSUFBSSxLQUFLLENBQUMsdUNBQXVDLENBQUMsQ0FBQztRQUMzRCxDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQztRQUM5QyxDQUFDO1FBRUQsNkVBQTZFO1FBQzdFLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssdUJBQXVCLENBQUMsSUFBWTtRQUMxQyxrREFBa0Q7UUFDbEQsdUNBQXVDO1FBQ3ZDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakMsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRW5FLE9BQU87WUFDTCxHQUFHO1lBQ0gsR0FBRztTQUNKLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSCxPQUFPO1FBQ0wsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFFRDs7T0FFRztJQUNILFVBQVU7UUFDUixxREFBcUQ7UUFDckQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQztJQUMxQixDQUFDO0NBQ0Y7QUE1REQsMEJBNERDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVmYXVsdEtleXMsIGlzUHJpdmF0ZUtleSwgaXNQdWJsaWNLZXksIGlzU2VlZCwgS2V5UGFpck9wdGlvbnMgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgKiBhcyBjcnlwdG8gZnJvbSAnY3J5cHRvJztcblxuLyoqXG4gKiBUZW1wbyBrZXlzIGFuZCBhZGRyZXNzIG1hbmFnZW1lbnRcbiAqL1xuZXhwb3J0IGNsYXNzIEtleVBhaXIge1xuICBwcml2YXRlIGtleVBhaXI6IERlZmF1bHRLZXlzO1xuXG4gIC8qKlxuICAgKiBQdWJsaWMgY29uc3RydWN0b3IuIEJ5IGRlZmF1bHQsIGNyZWF0ZXMgYSBrZXkgcGFpciB3aXRoIGEgcmFuZG9tIG1hc3RlciBzZWVkLlxuICAgKlxuICAgKiBAcGFyYW0geyBLZXlQYWlyT3B0aW9ucyB9IHNvdXJjZSBFaXRoZXIgYSBtYXN0ZXIgc2VlZCwgYSBwcml2YXRlIGtleSwgb3IgYSBwdWJsaWMga2V5XG4gICAqL1xuICBjb25zdHJ1Y3Rvcihzb3VyY2U/OiBLZXlQYWlyT3B0aW9ucykge1xuICAgIGxldCBzZWVkOiBCdWZmZXI7XG5cbiAgICBpZiAoIXNvdXJjZSkge1xuICAgICAgc2VlZCA9IGNyeXB0by5yYW5kb21CeXRlcygzMik7XG4gICAgfSBlbHNlIGlmIChpc1NlZWQoc291cmNlKSkge1xuICAgICAgc2VlZCA9IHNvdXJjZS5zZWVkO1xuICAgIH0gZWxzZSBpZiAoaXNQcml2YXRlS2V5KHNvdXJjZSkpIHtcbiAgICAgIC8vIFRPRE86IEltcGxlbWVudCBwcml2YXRlIGtleSB0byBrZXlwYWlyIGNvbnZlcnNpb25cbiAgICAgIHRocm93IG5ldyBFcnJvcignUHJpdmF0ZSBrZXkgaW1wb3J0IG5vdCB5ZXQgaW1wbGVtZW50ZWQnKTtcbiAgICB9IGVsc2UgaWYgKGlzUHVibGljS2V5KHNvdXJjZSkpIHtcbiAgICAgIC8vIFRPRE86IEltcGxlbWVudCBwdWJsaWMga2V5IGltcG9ydFxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdQdWJsaWMga2V5IGltcG9ydCBub3QgeWV0IGltcGxlbWVudGVkJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBrZXkgcGFpciBvcHRpb25zJyk7XG4gICAgfVxuXG4gICAgLy8gVE9ETzogR2VuZXJhdGUgYWN0dWFsIGtleXBhaXIgZnJvbSBzZWVkIGJhc2VkIG9uIHRoZSBjb2luJ3Mga2V5IGRlcml2YXRpb25cbiAgICB0aGlzLmtleVBhaXIgPSB0aGlzLmdlbmVyYXRlS2V5UGFpckZyb21TZWVkKHNlZWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlIGEga2V5cGFpciBmcm9tIGEgc2VlZFxuICAgKiBAcGFyYW0gc2VlZFxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBnZW5lcmF0ZUtleVBhaXJGcm9tU2VlZChzZWVkOiBCdWZmZXIpOiBEZWZhdWx0S2V5cyB7XG4gICAgLy8gVE9ETzogSW1wbGVtZW50IGFjdHVhbCBrZXkgZ2VuZXJhdGlvbiBmb3IgVGVtcG9cbiAgICAvLyBUaGlzIGlzIGEgcGxhY2Vob2xkZXIgaW1wbGVtZW50YXRpb25cbiAgICBjb25zdCBwcnYgPSBzZWVkLnRvU3RyaW5nKCdoZXgnKTtcbiAgICBjb25zdCBwdWIgPSBjcnlwdG8uY3JlYXRlSGFzaCgnc2hhMjU2JykudXBkYXRlKHNlZWQpLmRpZ2VzdCgnaGV4Jyk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgcHJ2LFxuICAgICAgcHViLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBwdWJsaWMga2V5XG4gICAqL1xuICBnZXRLZXlzKCk6IERlZmF1bHRLZXlzIHtcbiAgICByZXR1cm4gdGhpcy5rZXlQYWlyO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgYWRkcmVzc1xuICAgKi9cbiAgZ2V0QWRkcmVzcygpOiBzdHJpbmcge1xuICAgIC8vIFRPRE86IEltcGxlbWVudCBhZGRyZXNzIGRlcml2YXRpb24gZnJvbSBwdWJsaWMga2V5XG4gICAgcmV0dXJuIHRoaXMua2V5UGFpci5wdWI7XG4gIH1cbn1cbiJdfQ==
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5UGFpci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIva2V5UGFpci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7O0dBS0c7OztBQUVILHFEQUE4QztBQUc5Qzs7O0dBR0c7QUFDSCxNQUFhLE9BQU87SUFHbEIsWUFBWSxNQUF1QjtRQUNqQyxvREFBb0Q7UUFDcEQsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM5QixNQUFNLE1BQU0sR0FBRyxpQkFBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVwQyxJQUFJLENBQUMsT0FBTyxHQUFHO1lBQ2IsR0FBRyxFQUFFLE1BQU0sQ0FBQyxRQUFRLEVBQUU7WUFDdEIsR0FBRyxFQUFFLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLEVBQUU7U0FDbEMsQ0FBQztJQUNKLENBQUM7SUFFRCxPQUFPO1FBQ0wsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxVQUFVO1FBQ1Isb0RBQW9EO1FBQ3BELE9BQU8sNENBQTRDLENBQUM7SUFDdEQsQ0FBQztDQUNGO0FBdEJELDBCQXNCQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGVtcG8gS2V5UGFpciAtIFJldXNlcyBFdGhlcmV1bSBLZXlQYWlyIEltcGxlbWVudGF0aW9uXG4gKlxuICogU2luY2UgVGVtcG8gaXMgRVZNLWNvbXBhdGlibGUgYW5kIHVzZXMgdGhlIHNhbWUgY3J5cHRvZ3JhcGh5IChFQ0RTQS9zZWNwMjU2azEpXG4gKiBhcyBFdGhlcmV1bSwgd2UgY2FuIGRpcmVjdGx5IHJldXNlIHRoZSBFdGhlcmV1bSBLZXlQYWlyIGltcGxlbWVudGF0aW9uLlxuICovXG5cbmltcG9ydCB7IGJpcDMyIH0gZnJvbSAnQGJpdGdvLWJldGEvc2VjcDI1NmsxJztcbmltcG9ydCB7IERlZmF1bHRLZXlzLCBLZXlQYWlyT3B0aW9ucyB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcblxuLyoqXG4gKiBUZW1wbyBLZXlQYWlyIGNsYXNzXG4gKiBVc2VzIHNhbWUga2V5IGRlcml2YXRpb24gYXMgRXRoZXJldW0gKEJJUDMyICsgc2VjcDI1NmsxKVxuICovXG5leHBvcnQgY2xhc3MgS2V5UGFpciB7XG4gIHByaXZhdGUga2V5UGFpcjogRGVmYXVsdEtleXM7XG5cbiAgY29uc3RydWN0b3Ioc291cmNlPzogS2V5UGFpck9wdGlvbnMpIHtcbiAgICAvLyBUT0RPOiBJbXBsZW1lbnQgcHJvcGVyIGtleSBnZW5lcmF0aW9uIHdoZW4gbmVlZGVkXG4gICAgY29uc3Qgc2VlZCA9IEJ1ZmZlci5hbGxvYyg2NCk7XG4gICAgY29uc3QgaGROb2RlID0gYmlwMzIuZnJvbVNlZWQoc2VlZCk7XG5cbiAgICB0aGlzLmtleVBhaXIgPSB7XG4gICAgICBwcnY6IGhkTm9kZS50b0Jhc2U1OCgpLFxuICAgICAgcHViOiBoZE5vZGUubmV1dGVyZWQoKS50b0Jhc2U1OCgpLFxuICAgIH07XG4gIH1cblxuICBnZXRLZXlzKCk6IERlZmF1bHRLZXlzIHtcbiAgICByZXR1cm4gdGhpcy5rZXlQYWlyO1xuICB9XG5cbiAgZ2V0QWRkcmVzcygpOiBzdHJpbmcge1xuICAgIC8vIFRPRE86IEltcGxlbWVudCBFdGhlcmV1bS1zdHlsZSBhZGRyZXNzIGRlcml2YXRpb25cbiAgICByZXR1cm4gJzB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCc7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,98 @@
1
+ /**
2
+ * TIP-20 Token Standard ABI
3
+ *
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
7
+ */
8
+ /**
9
+ * TIP-20 transferWithMemo ABI
10
+ * Standard function for TIP-20 token transfers with memo field
11
+ */
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
+ }];
31
+ /**
32
+ * Standard TIP-20 token ABI (similar to ERC-20)
33
+ */
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
+ }];
98
+ //# sourceMappingURL=tip20Abi.d.ts.map
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ /**
3
+ * TIP-20 Token Standard ABI
4
+ *
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
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.TIP20_ABI = exports.TIP20_TRANSFER_WITH_MEMO_ABI = void 0;
11
+ /**
12
+ * TIP-20 transferWithMemo ABI
13
+ * Standard function for TIP-20 token transfers with memo field
14
+ */
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
+ ];
28
+ /**
29
+ * Standard TIP-20 token ABI (similar to ERC-20)
30
+ */
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,112 @@
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
+ /**
51
+ * Encode calls as RLP tuples for atomic batch execution
52
+ * @returns Array of [to, value, data] tuples
53
+ * @private
54
+ */
55
+ private encodeCallsAsTuples;
56
+ /**
57
+ * Encode EIP-2930 access list as RLP tuples
58
+ * @returns Array of [address, storageKeys[]] tuples
59
+ * @private
60
+ */
61
+ private encodeAccessList;
62
+ /**
63
+ * Build base RLP data array per Tempo EIP-7702 specification
64
+ * @param callsTuples Encoded calls
65
+ * @param accessTuples Encoded access list
66
+ * @returns RLP-ready array of transaction fields
67
+ * @private
68
+ */
69
+ private buildBaseRlpData;
70
+ /**
71
+ * Encode secp256k1 signature as 65-byte envelope
72
+ * @param signature ECDSA signature components
73
+ * @returns Hex string of concatenated r (32) + s (32) + v (1) bytes
74
+ * @private
75
+ */
76
+ private encodeSignature;
77
+ /**
78
+ * RLP encode and prepend transaction type byte
79
+ * @param rlpData Transaction fields array
80
+ * @returns Hex string with 0x76 prefix
81
+ * @private
82
+ */
83
+ private rlpEncodeWithTypePrefix;
84
+ /**
85
+ * Serialize Tempo AA transaction (type 0x76) per EIP-7702 specification
86
+ * Format: 0x76 || RLP([chainId, fees, gas, calls, accessList, nonce fields, feeToken, sponsorship, authList, signature?])
87
+ * @param signature Optional ECDSA signature (omit for unsigned transactions)
88
+ * @returns RLP-encoded transaction hex string
89
+ * @private
90
+ */
91
+ private serializeTransaction;
92
+ getOperations(): Tip20Operation[];
93
+ getFeeToken(): Address | undefined;
94
+ getOperationCount(): number;
95
+ isBatch(): boolean;
96
+ setSignature(signature: {
97
+ r: Hex;
98
+ s: Hex;
99
+ yParity: number;
100
+ }): void;
101
+ getSignature(): {
102
+ r: Hex;
103
+ s: Hex;
104
+ yParity: number;
105
+ } | undefined;
106
+ toJson(): Record<string, unknown>;
107
+ toBroadcastFormat(): Promise<string>;
108
+ get id(): string;
109
+ toString(): string;
110
+ canBroadcast(): boolean;
111
+ }
112
+ //# 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;AAE7D,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;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;IAQ3B;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IAIxB;;;;;;OAMG;IACH,OAAO,CAAC,gBAAgB;IAkBxB;;;;;OAKG;IACH,OAAO,CAAC,eAAe;IAUvB;;;;;OAKG;IACH,OAAO,CAAC,uBAAuB;IAS/B;;;;;;OAMG;IACH,OAAO,CAAC,oBAAoB;IAY5B,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"}