@bitgo-beta/sdk-coin-tempo 1.0.0-alpha.2 → 1.0.0-alpha.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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 +70 -0
  17. package/dist/src/lib/transaction.d.ts.map +1 -0
  18. package/dist/src/lib/transaction.js +73 -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 +35 -44
  32. package/dist/src/tempo.d.ts.map +1 -1
  33. package/dist/src/tempo.js +51 -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 +9 -6
@@ -3,9 +3,34 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.register = void 0;
4
4
  const tempo_1 = require("./tempo");
5
5
  const ttempo_1 = require("./ttempo");
6
+ const tip20Token_1 = require("./tip20Token");
7
+ /**
8
+ * Register Tempo and TIP20 tokens with the SDK
9
+ * @param sdk - BitGo SDK instance
10
+ */
6
11
  const register = (sdk) => {
12
+ // Register base Tempo coins
7
13
  sdk.register('tempo', tempo_1.Tempo.createInstance);
8
14
  sdk.register('ttempo', ttempo_1.Ttempo.createInstance);
15
+ // Register TIP20 tokens (skeleton)
16
+ // TODO: Add actual token configurations from @bitgo-beta/statics
17
+ // For now, this creates an empty array which can be populated progressively
18
+ const tip20Tokens = tip20Token_1.Tip20Token.createTokenConstructors([
19
+ // TODO: Add TIP20 token configurations here
20
+ // Example:
21
+ // {
22
+ // type: 'tempo:usdc',
23
+ // coin: 'tempo',
24
+ // network: 'Mainnet',
25
+ // name: 'USD Coin on Tempo',
26
+ // tokenContractAddress: '0x...',
27
+ // decimalPlaces: 6,
28
+ // },
29
+ ]);
30
+ // Register each TIP20 token with the SDK
31
+ tip20Tokens.forEach(({ name, coinConstructor }) => {
32
+ sdk.register(name, coinConstructor);
33
+ });
9
34
  };
10
35
  exports.register = register;
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcmVnaXN0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsbUNBQWdDO0FBQ2hDLHFDQUFrQztBQUUzQixNQUFNLFFBQVEsR0FBRyxDQUFDLEdBQWMsRUFBUSxFQUFFO0lBQy9DLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLGFBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUM1QyxHQUFHLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxlQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7QUFDaEQsQ0FBQyxDQUFDO0FBSFcsUUFBQSxRQUFRLFlBR25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQml0R29CYXNlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgVGVtcG8gfSBmcm9tICcuL3RlbXBvJztcbmltcG9ydCB7IFR0ZW1wbyB9IGZyb20gJy4vdHRlbXBvJztcblxuZXhwb3J0IGNvbnN0IHJlZ2lzdGVyID0gKHNkazogQml0R29CYXNlKTogdm9pZCA9PiB7XG4gIHNkay5yZWdpc3RlcigndGVtcG8nLCBUZW1wby5jcmVhdGVJbnN0YW5jZSk7XG4gIHNkay5yZWdpc3RlcigndHRlbXBvJywgVHRlbXBvLmNyZWF0ZUluc3RhbmNlKTtcbn07XG4iXX0=
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcmVnaXN0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsbUNBQWdDO0FBQ2hDLHFDQUFrQztBQUNsQyw2Q0FBMEM7QUFFMUM7OztHQUdHO0FBQ0ksTUFBTSxRQUFRLEdBQUcsQ0FBQyxHQUFjLEVBQVEsRUFBRTtJQUMvQyw0QkFBNEI7SUFDNUIsR0FBRyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsYUFBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQzVDLEdBQUcsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLGVBQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUU5QyxtQ0FBbUM7SUFDbkMsaUVBQWlFO0lBQ2pFLDRFQUE0RTtJQUM1RSxNQUFNLFdBQVcsR0FBRyx1QkFBVSxDQUFDLHVCQUF1QixDQUFDO0lBQ3JELDRDQUE0QztJQUM1QyxXQUFXO0lBQ1gsSUFBSTtJQUNKLHdCQUF3QjtJQUN4QixtQkFBbUI7SUFDbkIsd0JBQXdCO0lBQ3hCLCtCQUErQjtJQUMvQixtQ0FBbUM7SUFDbkMsc0JBQXNCO0lBQ3RCLEtBQUs7S0FDTixDQUFDLENBQUM7SUFFSCx5Q0FBeUM7SUFDekMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRSxFQUFFLEVBQUU7UUFDaEQsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFDdEMsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUM7QUF6QlcsUUFBQSxRQUFRLFlBeUJuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJpdEdvQmFzZSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IFRlbXBvIH0gZnJvbSAnLi90ZW1wbyc7XG5pbXBvcnQgeyBUdGVtcG8gfSBmcm9tICcuL3R0ZW1wbyc7XG5pbXBvcnQgeyBUaXAyMFRva2VuIH0gZnJvbSAnLi90aXAyMFRva2VuJztcblxuLyoqXG4gKiBSZWdpc3RlciBUZW1wbyBhbmQgVElQMjAgdG9rZW5zIHdpdGggdGhlIFNES1xuICogQHBhcmFtIHNkayAtIEJpdEdvIFNESyBpbnN0YW5jZVxuICovXG5leHBvcnQgY29uc3QgcmVnaXN0ZXIgPSAoc2RrOiBCaXRHb0Jhc2UpOiB2b2lkID0+IHtcbiAgLy8gUmVnaXN0ZXIgYmFzZSBUZW1wbyBjb2luc1xuICBzZGsucmVnaXN0ZXIoJ3RlbXBvJywgVGVtcG8uY3JlYXRlSW5zdGFuY2UpO1xuICBzZGsucmVnaXN0ZXIoJ3R0ZW1wbycsIFR0ZW1wby5jcmVhdGVJbnN0YW5jZSk7XG5cbiAgLy8gUmVnaXN0ZXIgVElQMjAgdG9rZW5zIChza2VsZXRvbilcbiAgLy8gVE9ETzogQWRkIGFjdHVhbCB0b2tlbiBjb25maWd1cmF0aW9ucyBmcm9tIEBiaXRnby1iZXRhL3N0YXRpY3NcbiAgLy8gRm9yIG5vdywgdGhpcyBjcmVhdGVzIGFuIGVtcHR5IGFycmF5IHdoaWNoIGNhbiBiZSBwb3B1bGF0ZWQgcHJvZ3Jlc3NpdmVseVxuICBjb25zdCB0aXAyMFRva2VucyA9IFRpcDIwVG9rZW4uY3JlYXRlVG9rZW5Db25zdHJ1Y3RvcnMoW1xuICAgIC8vIFRPRE86IEFkZCBUSVAyMCB0b2tlbiBjb25maWd1cmF0aW9ucyBoZXJlXG4gICAgLy8gRXhhbXBsZTpcbiAgICAvLyB7XG4gICAgLy8gICB0eXBlOiAndGVtcG86dXNkYycsXG4gICAgLy8gICBjb2luOiAndGVtcG8nLFxuICAgIC8vICAgbmV0d29yazogJ01haW5uZXQnLFxuICAgIC8vICAgbmFtZTogJ1VTRCBDb2luIG9uIFRlbXBvJyxcbiAgICAvLyAgIHRva2VuQ29udHJhY3RBZGRyZXNzOiAnMHguLi4nLFxuICAgIC8vICAgZGVjaW1hbFBsYWNlczogNixcbiAgICAvLyB9LFxuICBdKTtcblxuICAvLyBSZWdpc3RlciBlYWNoIFRJUDIwIHRva2VuIHdpdGggdGhlIFNES1xuICB0aXAyMFRva2Vucy5mb3JFYWNoKCh7IG5hbWUsIGNvaW5Db25zdHJ1Y3RvciB9KSA9PiB7XG4gICAgc2RrLnJlZ2lzdGVyKG5hbWUsIGNvaW5Db25zdHJ1Y3Rvcik7XG4gIH0pO1xufTtcbiJdfQ==
@@ -1,72 +1,63 @@
1
- import { AuditDecryptedKeyParams, BaseCoin, BitGoBase, KeyPair, ParsedTransaction, ParseTransactionOptions, SignedTransaction, SignTransactionOptions, VerifyAddressOptions, VerifyTransactionOptions, TransactionExplanation } from '@bitgo-beta/sdk-core';
1
+ /**
2
+ * @prettier
3
+ */
4
+ import { AbstractEthLikeNewCoins, RecoverOptions, OfflineVaultTxInfo, UnsignedSweepTxMPCv2, TransactionBuilder } from '@bitgo-beta/abstract-eth';
5
+ import { BaseCoin, BitGoBase, MPCAlgorithm } from '@bitgo-beta/sdk-core';
2
6
  import { BaseCoin as StaticsBaseCoin } from '@bitgo-beta/statics';
3
- export declare class Tempo extends BaseCoin {
4
- protected readonly _staticsCoin: Readonly<StaticsBaseCoin>;
7
+ export declare class Tempo extends AbstractEthLikeNewCoins {
5
8
  protected constructor(bitgo: BitGoBase, staticsCoin?: Readonly<StaticsBaseCoin>);
9
+ /**
10
+ * Factory method to create Tempo instance
11
+ */
6
12
  static createInstance(bitgo: BitGoBase, staticsCoin?: Readonly<StaticsBaseCoin>): BaseCoin;
7
13
  /**
8
- * Factor between the coin's base unit and its smallest subdivision
14
+ * Get the chain identifier
9
15
  */
10
- getBaseFactor(): number;
11
16
  getChain(): string;
12
- getFamily(): string;
13
- getFullName(): string;
14
17
  /**
15
- * Flag for sending value of 0
16
- * @returns {boolean} True if okay to send 0 value, false otherwise
18
+ * Get the full chain name
17
19
  */
18
- valuelessTransferAllowed(): boolean;
20
+ getFullName(): string;
19
21
  /**
20
- * Checks if this is a valid base58 or hex address
21
- * @param address
22
+ * Get the base factor (1 TEMPO = 1e18 wei, like Ethereum)
22
23
  */
23
- isValidAddress(address: string): boolean;
24
+ getBaseFactor(): number;
24
25
  /**
25
- * Generate ed25519 key pair
26
- *
27
- * @param seed
28
- * @returns {Object} object with generated pub, prv
26
+ * Check if value-less transfers are allowed
27
+ * TODO: Update based on Tempo requirements
29
28
  */
30
- generateKeyPair(seed?: Buffer): KeyPair;
29
+ valuelessTransferAllowed(): boolean;
31
30
  /**
32
- * Return boolean indicating whether input is valid public key for the coin.
33
- *
34
- * @param {String} pub the pub to be checked
35
- * @returns {Boolean} is it valid?
31
+ * Check if TSS is supported
36
32
  */
37
- isValidPub(pub: string): boolean;
33
+ supportsTss(): boolean;
38
34
  /**
39
- * Verify that a transaction prebuild complies with the original intention
40
- * @param params
41
- * @param params.txPrebuild
42
- * @param params.txParams
43
- * @returns {boolean}
35
+ * Get the MPC algorithm (ECDSA for EVM chains)
44
36
  */
45
- verifyTransaction(params: VerifyTransactionOptions): Promise<boolean>;
37
+ getMPCAlgorithm(): MPCAlgorithm;
46
38
  /**
47
- * Check if address is a wallet address
48
- * @param params
39
+ * Check if message signing is supported
49
40
  */
50
- isWalletAddress(params: VerifyAddressOptions): Promise<boolean>;
41
+ supportsMessageSigning(): boolean;
51
42
  /**
52
- * Audit a decrypted private key for security purposes
53
- * @param params
43
+ * Check if typed data signing is supported (EIP-712)
54
44
  */
55
- auditDecryptedKey(params: AuditDecryptedKeyParams): Promise<void>;
45
+ supportsSigningTypedData(): boolean;
56
46
  /**
57
- * Parse a transaction from the raw transaction hex
58
- * @param params
47
+ * Build unsigned sweep transaction for TSS
48
+ * TODO: Implement sweep transaction logic
59
49
  */
60
- parseTransaction(params: ParseTransactionOptions): Promise<ParsedTransaction>;
50
+ protected buildUnsignedSweepTxnTSS(params: RecoverOptions): Promise<OfflineVaultTxInfo | UnsignedSweepTxMPCv2>;
61
51
  /**
62
- * Explain a transaction
63
- * @param params
52
+ * Query block explorer for recovery information
53
+ * TODO: Implement when Tempo block explorer is available
64
54
  */
65
- explainTransaction(params: Record<string, unknown>): Promise<TransactionExplanation>;
55
+ recoveryBlockchainExplorerQuery(query: Record<string, string>, apiKey?: string): Promise<Record<string, unknown>>;
66
56
  /**
67
- * Sign a transaction
68
- * @param params
57
+ * Get transaction builder for Tempo
58
+ * TODO: Implement TransactionBuilder for Tempo
59
+ * @protected
69
60
  */
70
- signTransaction(params: SignTransactionOptions): Promise<SignedTransaction>;
61
+ protected getTransactionBuilder(): TransactionBuilder;
71
62
  }
72
63
  //# sourceMappingURL=tempo.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tempo.d.ts","sourceRoot":"","sources":["../../src/tempo.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,QAAQ,EACR,SAAS,EACT,OAAO,EACP,iBAAiB,EACjB,uBAAuB,EACvB,iBAAiB,EACjB,sBAAsB,EACtB,oBAAoB,EACpB,wBAAwB,EACxB,sBAAsB,EACvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,QAAQ,IAAI,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAIlE,qBAAa,KAAM,SAAQ,QAAQ;IACjC,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC;IAE3D,SAAS,aAAa,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC;IAU/E,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC,GAAG,QAAQ;IAI1F;;OAEG;IACI,aAAa,IAAI,MAAM;IAIvB,QAAQ,IAAI,MAAM;IAIlB,SAAS,IAAI,MAAM;IAInB,WAAW,IAAI,MAAM;IAI5B;;;OAGG;IACH,wBAAwB,IAAI,OAAO;IAInC;;;OAGG;IACH,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIxC;;;;;OAKG;IACH,eAAe,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO;IAcvC;;;;;OAKG;IACH,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIhC;;;;;;OAMG;IACG,iBAAiB,CAAC,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,OAAO,CAAC;IAK3E;;;OAGG;IACG,eAAe,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC;IAKrE;;;OAGG;IACG,iBAAiB,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;IAMvE;;;OAGG;IACG,gBAAgB,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAKnF;;;OAGG;IACG,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAK1F;;;OAGG;IACG,eAAe,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,iBAAiB,CAAC;CAIlF"}
1
+ {"version":3,"file":"tempo.d.ts","sourceRoot":"","sources":["../../src/tempo.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EACL,uBAAuB,EACvB,cAAc,EACd,kBAAkB,EAClB,oBAAoB,EACpB,kBAAkB,EACnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzE,OAAO,EAAE,QAAQ,IAAI,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAElE,qBAAa,KAAM,SAAQ,uBAAuB;IAChD,SAAS,aAAa,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC;IAI/E;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC,GAAG,QAAQ;IAI1F;;OAEG;IACH,QAAQ,IAAI,MAAM;IAIlB;;OAEG;IACH,WAAW,IAAI,MAAM;IAIrB;;OAEG;IACH,aAAa,IAAI,MAAM;IAIvB;;;OAGG;IACH,wBAAwB,IAAI,OAAO;IAInC;;OAEG;IACH,WAAW,IAAI,OAAO;IAItB;;OAEG;IACH,eAAe,IAAI,YAAY;IAI/B;;OAEG;IACH,sBAAsB,IAAI,OAAO;IAIjC;;OAEG;IACH,wBAAwB,IAAI,OAAO;IAInC;;;OAGG;cACa,wBAAwB,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,kBAAkB,GAAG,oBAAoB,CAAC;IAMpH;;;OAGG;IACG,+BAA+B,CACnC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC7B,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAMnC;;;;OAIG;IACH,SAAS,CAAC,qBAAqB,IAAI,kBAAkB;CAKtD"}
package/dist/src/tempo.js CHANGED
@@ -1,130 +1,97 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
3
  exports.Tempo = void 0;
7
- const sdk_core_1 = require("@bitgo-beta/sdk-core");
8
- const keyPair_1 = require("./lib/keyPair");
9
- const utils_1 = __importDefault(require("./lib/utils"));
10
- class Tempo extends sdk_core_1.BaseCoin {
4
+ /**
5
+ * @prettier
6
+ */
7
+ const abstract_eth_1 = require("@bitgo-beta/abstract-eth");
8
+ class Tempo extends abstract_eth_1.AbstractEthLikeNewCoins {
11
9
  constructor(bitgo, staticsCoin) {
12
- super(bitgo);
13
- if (!staticsCoin) {
14
- throw new Error('missing required constructor parameter staticsCoin');
15
- }
16
- this._staticsCoin = staticsCoin;
10
+ super(bitgo, staticsCoin);
17
11
  }
12
+ /**
13
+ * Factory method to create Tempo instance
14
+ */
18
15
  static createInstance(bitgo, staticsCoin) {
19
16
  return new Tempo(bitgo, staticsCoin);
20
17
  }
21
18
  /**
22
- * Factor between the coin's base unit and its smallest subdivision
19
+ * Get the chain identifier
23
20
  */
24
- getBaseFactor() {
25
- return 1e18;
26
- }
27
21
  getChain() {
28
- return 'tempo';
29
- }
30
- getFamily() {
31
- return 'tempo';
32
- }
33
- getFullName() {
34
- return 'Tempo';
22
+ return this._staticsCoin?.name || 'tempo';
35
23
  }
36
24
  /**
37
- * Flag for sending value of 0
38
- * @returns {boolean} True if okay to send 0 value, false otherwise
25
+ * Get the full chain name
39
26
  */
40
- valuelessTransferAllowed() {
41
- return false;
27
+ getFullName() {
28
+ return 'Tempo';
42
29
  }
43
30
  /**
44
- * Checks if this is a valid base58 or hex address
45
- * @param address
31
+ * Get the base factor (1 TEMPO = 1e18 wei, like Ethereum)
46
32
  */
47
- isValidAddress(address) {
48
- return utils_1.default.isValidAddress(address);
33
+ getBaseFactor() {
34
+ return 1e18;
49
35
  }
50
36
  /**
51
- * Generate ed25519 key pair
52
- *
53
- * @param seed
54
- * @returns {Object} object with generated pub, prv
37
+ * Check if value-less transfers are allowed
38
+ * TODO: Update based on Tempo requirements
55
39
  */
56
- generateKeyPair(seed) {
57
- const keyPair = seed ? new keyPair_1.KeyPair({ seed }) : new keyPair_1.KeyPair();
58
- const keys = keyPair.getKeys();
59
- if (!keys.prv) {
60
- throw new Error('Missing prv in key generation.');
61
- }
62
- return {
63
- pub: keys.pub,
64
- prv: keys.prv,
65
- };
40
+ valuelessTransferAllowed() {
41
+ return false;
66
42
  }
67
43
  /**
68
- * Return boolean indicating whether input is valid public key for the coin.
69
- *
70
- * @param {String} pub the pub to be checked
71
- * @returns {Boolean} is it valid?
44
+ * Check if TSS is supported
72
45
  */
73
- isValidPub(pub) {
74
- return utils_1.default.isValidPublicKey(pub);
46
+ supportsTss() {
47
+ return true;
75
48
  }
76
49
  /**
77
- * Verify that a transaction prebuild complies with the original intention
78
- * @param params
79
- * @param params.txPrebuild
80
- * @param params.txParams
81
- * @returns {boolean}
50
+ * Get the MPC algorithm (ECDSA for EVM chains)
82
51
  */
83
- async verifyTransaction(params) {
84
- // TODO: Implement transaction verification
85
- return false;
52
+ getMPCAlgorithm() {
53
+ return 'ecdsa';
86
54
  }
87
55
  /**
88
- * Check if address is a wallet address
89
- * @param params
56
+ * Check if message signing is supported
90
57
  */
91
- async isWalletAddress(params) {
92
- // TODO: Implement address verification
93
- return false;
58
+ supportsMessageSigning() {
59
+ return true;
94
60
  }
95
61
  /**
96
- * Audit a decrypted private key for security purposes
97
- * @param params
62
+ * Check if typed data signing is supported (EIP-712)
98
63
  */
99
- async auditDecryptedKey(params) {
100
- // TODO: Implement key auditing logic if needed
101
- // This method is typically used for security compliance
102
- return Promise.resolve();
64
+ supportsSigningTypedData() {
65
+ return true;
103
66
  }
104
67
  /**
105
- * Parse a transaction from the raw transaction hex
106
- * @param params
68
+ * Build unsigned sweep transaction for TSS
69
+ * TODO: Implement sweep transaction logic
107
70
  */
108
- async parseTransaction(params) {
109
- // TODO: Implement transaction parsing
71
+ async buildUnsignedSweepTxnTSS(params) {
72
+ // TODO: Implement when recovery logic is needed
73
+ // Return dummy value to prevent downstream services from breaking
110
74
  return {};
111
75
  }
112
76
  /**
113
- * Explain a transaction
114
- * @param params
77
+ * Query block explorer for recovery information
78
+ * TODO: Implement when Tempo block explorer is available
115
79
  */
116
- async explainTransaction(params) {
117
- // TODO: Implement transaction explanation
80
+ async recoveryBlockchainExplorerQuery(query, apiKey) {
81
+ // TODO: Implement with Tempo block explorer API
82
+ // Return empty object to prevent downstream services from breaking
118
83
  return {};
119
84
  }
120
85
  /**
121
- * Sign a transaction
122
- * @param params
86
+ * Get transaction builder for Tempo
87
+ * TODO: Implement TransactionBuilder for Tempo
88
+ * @protected
123
89
  */
124
- async signTransaction(params) {
125
- // TODO: Implement transaction signing
126
- return {};
90
+ getTransactionBuilder() {
91
+ // TODO: Create and return TransactionBuilder instance
92
+ // Return undefined cast as TransactionBuilder to prevent downstream services from breaking
93
+ return undefined;
127
94
  }
128
95
  }
129
96
  exports.Tempo = Tempo;
130
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcG8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVtcG8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsbURBWThCO0FBRTlCLDJDQUF3RDtBQUN4RCx3REFBZ0M7QUFFaEMsTUFBYSxLQUFNLFNBQVEsbUJBQVE7SUFHakMsWUFBc0IsS0FBZ0IsRUFBRSxXQUF1QztRQUM3RSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFYixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDakIsTUFBTSxJQUFJLEtBQUssQ0FBQyxvREFBb0QsQ0FBQyxDQUFDO1FBQ3hFLENBQUM7UUFFRCxJQUFJLENBQUMsWUFBWSxHQUFHLFdBQVcsQ0FBQztJQUNsQyxDQUFDO0lBRUQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFnQixFQUFFLFdBQXVDO1FBQzdFLE9BQU8sSUFBSSxLQUFLLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRDs7T0FFRztJQUNJLGFBQWE7UUFDbEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU0sUUFBUTtRQUNiLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFTSxTQUFTO1FBQ2QsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVNLFdBQVc7UUFDaEIsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVEOzs7T0FHRztJQUNILHdCQUF3QjtRQUN0QixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRDs7O09BR0c7SUFDSCxjQUFjLENBQUMsT0FBZTtRQUM1QixPQUFPLGVBQUssQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsZUFBZSxDQUFDLElBQWE7UUFDM0IsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLGlCQUFZLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLGlCQUFZLEVBQUUsQ0FBQztRQUN2RSxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFL0IsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNkLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztRQUNwRCxDQUFDO1FBRUQsT0FBTztZQUNMLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRztZQUNiLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRztTQUNkLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxVQUFVLENBQUMsR0FBVztRQUNwQixPQUFPLGVBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsS0FBSyxDQUFDLGlCQUFpQixDQUFDLE1BQWdDO1FBQ3RELDJDQUEyQztRQUMzQyxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsZUFBZSxDQUFDLE1BQTRCO1FBQ2hELHVDQUF1QztRQUN2QyxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsaUJBQWlCLENBQUMsTUFBK0I7UUFDckQsK0NBQStDO1FBQy9DLHdEQUF3RDtRQUN4RCxPQUFPLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLGdCQUFnQixDQUFDLE1BQStCO1FBQ3BELHNDQUFzQztRQUN0QyxPQUFPLEVBQXVCLENBQUM7SUFDakMsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxNQUErQjtRQUN0RCwwQ0FBMEM7UUFDMUMsT0FBTyxFQUE0QixDQUFDO0lBQ3RDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsZUFBZSxDQUFDLE1BQThCO1FBQ2xELHNDQUFzQztRQUN0QyxPQUFPLEVBQXVCLENBQUM7SUFDakMsQ0FBQztDQUNGO0FBM0lELHNCQTJJQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEF1ZGl0RGVjcnlwdGVkS2V5UGFyYW1zLFxuICBCYXNlQ29pbixcbiAgQml0R29CYXNlLFxuICBLZXlQYWlyLFxuICBQYXJzZWRUcmFuc2FjdGlvbixcbiAgUGFyc2VUcmFuc2FjdGlvbk9wdGlvbnMsXG4gIFNpZ25lZFRyYW5zYWN0aW9uLFxuICBTaWduVHJhbnNhY3Rpb25PcHRpb25zLFxuICBWZXJpZnlBZGRyZXNzT3B0aW9ucyxcbiAgVmVyaWZ5VHJhbnNhY3Rpb25PcHRpb25zLFxuICBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uLFxufSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBTdGF0aWNzQmFzZUNvaW4gfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7IEtleVBhaXIgYXMgVGVtcG9LZXlQYWlyIH0gZnJvbSAnLi9saWIva2V5UGFpcic7XG5pbXBvcnQgdXRpbHMgZnJvbSAnLi9saWIvdXRpbHMnO1xuXG5leHBvcnQgY2xhc3MgVGVtcG8gZXh0ZW5kcyBCYXNlQ29pbiB7XG4gIHByb3RlY3RlZCByZWFkb25seSBfc3RhdGljc0NvaW46IFJlYWRvbmx5PFN0YXRpY3NCYXNlQ29pbj47XG5cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKGJpdGdvOiBCaXRHb0Jhc2UsIHN0YXRpY3NDb2luPzogUmVhZG9ubHk8U3RhdGljc0Jhc2VDb2luPikge1xuICAgIHN1cGVyKGJpdGdvKTtcblxuICAgIGlmICghc3RhdGljc0NvaW4pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignbWlzc2luZyByZXF1aXJlZCBjb25zdHJ1Y3RvciBwYXJhbWV0ZXIgc3RhdGljc0NvaW4nKTtcbiAgICB9XG5cbiAgICB0aGlzLl9zdGF0aWNzQ29pbiA9IHN0YXRpY3NDb2luO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZUluc3RhbmNlKGJpdGdvOiBCaXRHb0Jhc2UsIHN0YXRpY3NDb2luPzogUmVhZG9ubHk8U3RhdGljc0Jhc2VDb2luPik6IEJhc2VDb2luIHtcbiAgICByZXR1cm4gbmV3IFRlbXBvKGJpdGdvLCBzdGF0aWNzQ29pbik7XG4gIH1cblxuICAvKipcbiAgICogRmFjdG9yIGJldHdlZW4gdGhlIGNvaW4ncyBiYXNlIHVuaXQgYW5kIGl0cyBzbWFsbGVzdCBzdWJkaXZpc2lvblxuICAgKi9cbiAgcHVibGljIGdldEJhc2VGYWN0b3IoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gMWUxODtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDaGFpbigpOiBzdHJpbmcge1xuICAgIHJldHVybiAndGVtcG8nO1xuICB9XG5cbiAgcHVibGljIGdldEZhbWlseSgpOiBzdHJpbmcge1xuICAgIHJldHVybiAndGVtcG8nO1xuICB9XG5cbiAgcHVibGljIGdldEZ1bGxOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdUZW1wbyc7XG4gIH1cblxuICAvKipcbiAgICogRmxhZyBmb3Igc2VuZGluZyB2YWx1ZSBvZiAwXG4gICAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIG9rYXkgdG8gc2VuZCAwIHZhbHVlLCBmYWxzZSBvdGhlcndpc2VcbiAgICovXG4gIHZhbHVlbGVzc1RyYW5zZmVyQWxsb3dlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoaXMgaXMgYSB2YWxpZCBiYXNlNTggb3IgaGV4IGFkZHJlc3NcbiAgICogQHBhcmFtIGFkZHJlc3NcbiAgICovXG4gIGlzVmFsaWRBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB1dGlscy5pc1ZhbGlkQWRkcmVzcyhhZGRyZXNzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZSBlZDI1NTE5IGtleSBwYWlyXG4gICAqXG4gICAqIEBwYXJhbSBzZWVkXG4gICAqIEByZXR1cm5zIHtPYmplY3R9IG9iamVjdCB3aXRoIGdlbmVyYXRlZCBwdWIsIHBydlxuICAgKi9cbiAgZ2VuZXJhdGVLZXlQYWlyKHNlZWQ/OiBCdWZmZXIpOiBLZXlQYWlyIHtcbiAgICBjb25zdCBrZXlQYWlyID0gc2VlZCA/IG5ldyBUZW1wb0tleVBhaXIoeyBzZWVkIH0pIDogbmV3IFRlbXBvS2V5UGFpcigpO1xuICAgIGNvbnN0IGtleXMgPSBrZXlQYWlyLmdldEtleXMoKTtcblxuICAgIGlmICgha2V5cy5wcnYpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTWlzc2luZyBwcnYgaW4ga2V5IGdlbmVyYXRpb24uJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHB1Yjoga2V5cy5wdWIsXG4gICAgICBwcnY6IGtleXMucHJ2LFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIGlucHV0IGlzIHZhbGlkIHB1YmxpYyBrZXkgZm9yIHRoZSBjb2luLlxuICAgKlxuICAgKiBAcGFyYW0ge1N0cmluZ30gcHViIHRoZSBwdWIgdG8gYmUgY2hlY2tlZFxuICAgKiBAcmV0dXJucyB7Qm9vbGVhbn0gaXMgaXQgdmFsaWQ/XG4gICAqL1xuICBpc1ZhbGlkUHViKHB1Yjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHV0aWxzLmlzVmFsaWRQdWJsaWNLZXkocHViKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWZXJpZnkgdGhhdCBhIHRyYW5zYWN0aW9uIHByZWJ1aWxkIGNvbXBsaWVzIHdpdGggdGhlIG9yaWdpbmFsIGludGVudGlvblxuICAgKiBAcGFyYW0gcGFyYW1zXG4gICAqIEBwYXJhbSBwYXJhbXMudHhQcmVidWlsZFxuICAgKiBAcGFyYW0gcGFyYW1zLnR4UGFyYW1zXG4gICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgKi9cbiAgYXN5bmMgdmVyaWZ5VHJhbnNhY3Rpb24ocGFyYW1zOiBWZXJpZnlUcmFuc2FjdGlvbk9wdGlvbnMpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAvLyBUT0RPOiBJbXBsZW1lbnQgdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGFkZHJlc3MgaXMgYSB3YWxsZXQgYWRkcmVzc1xuICAgKiBAcGFyYW0gcGFyYW1zXG4gICAqL1xuICBhc3luYyBpc1dhbGxldEFkZHJlc3MocGFyYW1zOiBWZXJpZnlBZGRyZXNzT3B0aW9ucyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIC8vIFRPRE86IEltcGxlbWVudCBhZGRyZXNzIHZlcmlmaWNhdGlvblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBdWRpdCBhIGRlY3J5cHRlZCBwcml2YXRlIGtleSBmb3Igc2VjdXJpdHkgcHVycG9zZXNcbiAgICogQHBhcmFtIHBhcmFtc1xuICAgKi9cbiAgYXN5bmMgYXVkaXREZWNyeXB0ZWRLZXkocGFyYW1zOiBBdWRpdERlY3J5cHRlZEtleVBhcmFtcyk6IFByb21pc2U8dm9pZD4ge1xuICAgIC8vIFRPRE86IEltcGxlbWVudCBrZXkgYXVkaXRpbmcgbG9naWMgaWYgbmVlZGVkXG4gICAgLy8gVGhpcyBtZXRob2QgaXMgdHlwaWNhbGx5IHVzZWQgZm9yIHNlY3VyaXR5IGNvbXBsaWFuY2VcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gIH1cblxuICAvKipcbiAgICogUGFyc2UgYSB0cmFuc2FjdGlvbiBmcm9tIHRoZSByYXcgdHJhbnNhY3Rpb24gaGV4XG4gICAqIEBwYXJhbSBwYXJhbXNcbiAgICovXG4gIGFzeW5jIHBhcnNlVHJhbnNhY3Rpb24ocGFyYW1zOiBQYXJzZVRyYW5zYWN0aW9uT3B0aW9ucyk6IFByb21pc2U8UGFyc2VkVHJhbnNhY3Rpb24+IHtcbiAgICAvLyBUT0RPOiBJbXBsZW1lbnQgdHJhbnNhY3Rpb24gcGFyc2luZ1xuICAgIHJldHVybiB7fSBhcyBQYXJzZWRUcmFuc2FjdGlvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeHBsYWluIGEgdHJhbnNhY3Rpb25cbiAgICogQHBhcmFtIHBhcmFtc1xuICAgKi9cbiAgYXN5bmMgZXhwbGFpblRyYW5zYWN0aW9uKHBhcmFtczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiBQcm9taXNlPFRyYW5zYWN0aW9uRXhwbGFuYXRpb24+IHtcbiAgICAvLyBUT0RPOiBJbXBsZW1lbnQgdHJhbnNhY3Rpb24gZXhwbGFuYXRpb25cbiAgICByZXR1cm4ge30gYXMgVHJhbnNhY3Rpb25FeHBsYW5hdGlvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBTaWduIGEgdHJhbnNhY3Rpb25cbiAgICogQHBhcmFtIHBhcmFtc1xuICAgKi9cbiAgYXN5bmMgc2lnblRyYW5zYWN0aW9uKHBhcmFtczogU2lnblRyYW5zYWN0aW9uT3B0aW9ucyk6IFByb21pc2U8U2lnbmVkVHJhbnNhY3Rpb24+IHtcbiAgICAvLyBUT0RPOiBJbXBsZW1lbnQgdHJhbnNhY3Rpb24gc2lnbmluZ1xuICAgIHJldHVybiB7fSBhcyBTaWduZWRUcmFuc2FjdGlvbjtcbiAgfVxufVxuIl19
97
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcG8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVtcG8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7O0dBRUc7QUFDSCwyREFNa0M7QUFJbEMsTUFBYSxLQUFNLFNBQVEsc0NBQXVCO0lBQ2hELFlBQXNCLEtBQWdCLEVBQUUsV0FBdUM7UUFDN0UsS0FBSyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQWdCLEVBQUUsV0FBdUM7UUFDN0UsT0FBTyxJQUFJLEtBQUssQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsUUFBUTtRQUNOLE9BQU8sSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLElBQUksT0FBTyxDQUFDO0lBQzVDLENBQUM7SUFFRDs7T0FFRztJQUNILFdBQVc7UUFDVCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxhQUFhO1FBQ1gsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsd0JBQXdCO1FBQ3RCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVEOztPQUVHO0lBQ0gsV0FBVztRQUNULE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOztPQUVHO0lBQ0gsZUFBZTtRQUNiLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFRDs7T0FFRztJQUNILHNCQUFzQjtRQUNwQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7T0FFRztJQUNILHdCQUF3QjtRQUN0QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7O09BR0c7SUFDTyxLQUFLLENBQUMsd0JBQXdCLENBQUMsTUFBc0I7UUFDN0QsZ0RBQWdEO1FBQ2hELGtFQUFrRTtRQUNsRSxPQUFPLEVBQXdCLENBQUM7SUFDbEMsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQywrQkFBK0IsQ0FDbkMsS0FBNkIsRUFDN0IsTUFBZTtRQUVmLGdEQUFnRDtRQUNoRCxtRUFBbUU7UUFDbkUsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNPLHFCQUFxQjtRQUM3QixzREFBc0Q7UUFDdEQsMkZBQTJGO1FBQzNGLE9BQU8sU0FBMEMsQ0FBQztJQUNwRCxDQUFDO0NBQ0Y7QUF0R0Qsc0JBc0dDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAcHJldHRpZXJcbiAqL1xuaW1wb3J0IHtcbiAgQWJzdHJhY3RFdGhMaWtlTmV3Q29pbnMsXG4gIFJlY292ZXJPcHRpb25zLFxuICBPZmZsaW5lVmF1bHRUeEluZm8sXG4gIFVuc2lnbmVkU3dlZXBUeE1QQ3YyLFxuICBUcmFuc2FjdGlvbkJ1aWxkZXIsXG59IGZyb20gJ0BiaXRnby1iZXRhL2Fic3RyYWN0LWV0aCc7XG5pbXBvcnQgeyBCYXNlQ29pbiwgQml0R29CYXNlLCBNUENBbGdvcml0aG0gfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBTdGF0aWNzQmFzZUNvaW4gfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcblxuZXhwb3J0IGNsYXNzIFRlbXBvIGV4dGVuZHMgQWJzdHJhY3RFdGhMaWtlTmV3Q29pbnMge1xuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoYml0Z286IEJpdEdvQmFzZSwgc3RhdGljc0NvaW4/OiBSZWFkb25seTxTdGF0aWNzQmFzZUNvaW4+KSB7XG4gICAgc3VwZXIoYml0Z28sIHN0YXRpY3NDb2luKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGYWN0b3J5IG1ldGhvZCB0byBjcmVhdGUgVGVtcG8gaW5zdGFuY2VcbiAgICovXG4gIHN0YXRpYyBjcmVhdGVJbnN0YW5jZShiaXRnbzogQml0R29CYXNlLCBzdGF0aWNzQ29pbj86IFJlYWRvbmx5PFN0YXRpY3NCYXNlQ29pbj4pOiBCYXNlQ29pbiB7XG4gICAgcmV0dXJuIG5ldyBUZW1wbyhiaXRnbywgc3RhdGljc0NvaW4pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgY2hhaW4gaWRlbnRpZmllclxuICAgKi9cbiAgZ2V0Q2hhaW4oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdGljc0NvaW4/Lm5hbWUgfHwgJ3RlbXBvJztcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGZ1bGwgY2hhaW4gbmFtZVxuICAgKi9cbiAgZ2V0RnVsbE5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ1RlbXBvJztcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGJhc2UgZmFjdG9yICgxIFRFTVBPID0gMWUxOCB3ZWksIGxpa2UgRXRoZXJldW0pXG4gICAqL1xuICBnZXRCYXNlRmFjdG9yKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIDFlMTg7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgdmFsdWUtbGVzcyB0cmFuc2ZlcnMgYXJlIGFsbG93ZWRcbiAgICogVE9ETzogVXBkYXRlIGJhc2VkIG9uIFRlbXBvIHJlcXVpcmVtZW50c1xuICAgKi9cbiAgdmFsdWVsZXNzVHJhbnNmZXJBbGxvd2VkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBUU1MgaXMgc3VwcG9ydGVkXG4gICAqL1xuICBzdXBwb3J0c1RzcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIE1QQyBhbGdvcml0aG0gKEVDRFNBIGZvciBFVk0gY2hhaW5zKVxuICAgKi9cbiAgZ2V0TVBDQWxnb3JpdGhtKCk6IE1QQ0FsZ29yaXRobSB7XG4gICAgcmV0dXJuICdlY2RzYSc7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgbWVzc2FnZSBzaWduaW5nIGlzIHN1cHBvcnRlZFxuICAgKi9cbiAgc3VwcG9ydHNNZXNzYWdlU2lnbmluZygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiB0eXBlZCBkYXRhIHNpZ25pbmcgaXMgc3VwcG9ydGVkIChFSVAtNzEyKVxuICAgKi9cbiAgc3VwcG9ydHNTaWduaW5nVHlwZWREYXRhKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIHVuc2lnbmVkIHN3ZWVwIHRyYW5zYWN0aW9uIGZvciBUU1NcbiAgICogVE9ETzogSW1wbGVtZW50IHN3ZWVwIHRyYW5zYWN0aW9uIGxvZ2ljXG4gICAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgYnVpbGRVbnNpZ25lZFN3ZWVwVHhuVFNTKHBhcmFtczogUmVjb3Zlck9wdGlvbnMpOiBQcm9taXNlPE9mZmxpbmVWYXVsdFR4SW5mbyB8IFVuc2lnbmVkU3dlZXBUeE1QQ3YyPiB7XG4gICAgLy8gVE9ETzogSW1wbGVtZW50IHdoZW4gcmVjb3ZlcnkgbG9naWMgaXMgbmVlZGVkXG4gICAgLy8gUmV0dXJuIGR1bW15IHZhbHVlIHRvIHByZXZlbnQgZG93bnN0cmVhbSBzZXJ2aWNlcyBmcm9tIGJyZWFraW5nXG4gICAgcmV0dXJuIHt9IGFzIE9mZmxpbmVWYXVsdFR4SW5mbztcbiAgfVxuXG4gIC8qKlxuICAgKiBRdWVyeSBibG9jayBleHBsb3JlciBmb3IgcmVjb3ZlcnkgaW5mb3JtYXRpb25cbiAgICogVE9ETzogSW1wbGVtZW50IHdoZW4gVGVtcG8gYmxvY2sgZXhwbG9yZXIgaXMgYXZhaWxhYmxlXG4gICAqL1xuICBhc3luYyByZWNvdmVyeUJsb2NrY2hhaW5FeHBsb3JlclF1ZXJ5KFxuICAgIHF1ZXJ5OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LFxuICAgIGFwaUtleT86IHN0cmluZ1xuICApOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIHVua25vd24+PiB7XG4gICAgLy8gVE9ETzogSW1wbGVtZW50IHdpdGggVGVtcG8gYmxvY2sgZXhwbG9yZXIgQVBJXG4gICAgLy8gUmV0dXJuIGVtcHR5IG9iamVjdCB0byBwcmV2ZW50IGRvd25zdHJlYW0gc2VydmljZXMgZnJvbSBicmVha2luZ1xuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdHJhbnNhY3Rpb24gYnVpbGRlciBmb3IgVGVtcG9cbiAgICogVE9ETzogSW1wbGVtZW50IFRyYW5zYWN0aW9uQnVpbGRlciBmb3IgVGVtcG9cbiAgICogQHByb3RlY3RlZFxuICAgKi9cbiAgcHJvdGVjdGVkIGdldFRyYW5zYWN0aW9uQnVpbGRlcigpOiBUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICAgIC8vIFRPRE86IENyZWF0ZSBhbmQgcmV0dXJuIFRyYW5zYWN0aW9uQnVpbGRlciBpbnN0YW5jZVxuICAgIC8vIFJldHVybiB1bmRlZmluZWQgY2FzdCBhcyBUcmFuc2FjdGlvbkJ1aWxkZXIgdG8gcHJldmVudCBkb3duc3RyZWFtIHNlcnZpY2VzIGZyb20gYnJlYWtpbmdcbiAgICByZXR1cm4gdW5kZWZpbmVkIGFzIHVua25vd24gYXMgVHJhbnNhY3Rpb25CdWlsZGVyO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,89 @@
1
+ /**
2
+ * @prettier
3
+ */
4
+ import { BitGoBase, CoinConstructor, MPCAlgorithm, NamedCoinConstructor } from '@bitgo-beta/sdk-core';
5
+ import { GetSendMethodArgsOptions, SendMethodArgs } from '@bitgo-beta/abstract-eth';
6
+ import { Tempo } from './tempo';
7
+ /**
8
+ * TIP20 Token Configuration Interface
9
+ */
10
+ export interface Tip20TokenConfig {
11
+ type: string;
12
+ coin: string;
13
+ network: 'Mainnet' | 'Testnet';
14
+ name: string;
15
+ tokenContractAddress: string;
16
+ decimalPlaces: number;
17
+ }
18
+ /**
19
+ * TIP20 Token Implementation (Skeleton)
20
+ *
21
+ * This is a minimal skeleton for TIP20 tokens on Tempo blockchain.
22
+ *
23
+ * TODO: All methods will be implemented progressively
24
+ */
25
+ export declare class Tip20Token extends Tempo {
26
+ readonly tokenConfig: Tip20TokenConfig;
27
+ constructor(bitgo: BitGoBase, tokenConfig: Tip20TokenConfig);
28
+ /**
29
+ * Create a coin constructor for a specific token
30
+ */
31
+ static createTokenConstructor(config: Tip20TokenConfig): CoinConstructor;
32
+ /**
33
+ * Create token constructors for all TIP20 tokens
34
+ * @param tokenConfigs - Array of token configurations (optional)
35
+ */
36
+ static createTokenConstructors(tokenConfigs?: Tip20TokenConfig[]): NamedCoinConstructor[];
37
+ /** Get the token type */
38
+ get type(): string;
39
+ /** Get the token name */
40
+ get name(): string;
41
+ /** Get the base coin */
42
+ get coin(): string;
43
+ /** Get the network */
44
+ get network(): 'Mainnet' | 'Testnet';
45
+ /** Get the token contract address */
46
+ get tokenContractAddress(): string;
47
+ /** Get token decimal places */
48
+ get decimalPlaces(): number;
49
+ /** @inheritDoc */
50
+ getChain(): string;
51
+ /** @inheritDoc */
52
+ getFullName(): string;
53
+ /** @inheritDoc */
54
+ getBaseFactor(): number;
55
+ /** @inheritDoc */
56
+ valuelessTransferAllowed(): boolean;
57
+ /** @inheritDoc */
58
+ supportsTss(): boolean;
59
+ /** @inheritDoc */
60
+ getMPCAlgorithm(): MPCAlgorithm;
61
+ /**
62
+ * Verify that the transaction coin/token matches this token
63
+ * @param txPrebuild - Transaction prebuild object
64
+ * @returns true if valid, false otherwise
65
+ */
66
+ verifyCoin(txPrebuild: {
67
+ coin?: string;
68
+ token?: string;
69
+ }): boolean;
70
+ /**
71
+ * Get send method arguments for TIP-20 token transfer with memo
72
+ * @param txInfo - Transaction information including recipient and amount
73
+ * @returns Array of send method arguments for ABI encoding
74
+ */
75
+ getSendMethodArgs(txInfo: GetSendMethodArgsOptions): SendMethodArgs[];
76
+ /**
77
+ * Get operation object for TIP-20 token transfer (for batch transactions)
78
+ * @param recipient - Recipient information with address, amount, and optional memo
79
+ * @param expireTime - Transaction expiration time
80
+ * @param contractSequenceId - Contract sequence ID
81
+ * @returns Operation array for ABI encoding
82
+ */
83
+ getOperation(recipient: {
84
+ address: string;
85
+ amount: string;
86
+ memo?: string;
87
+ }, expireTime: number, contractSequenceId: number): (string | Buffer)[][];
88
+ }
89
+ //# sourceMappingURL=tip20Token.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tip20Token.d.ts","sourceRoot":"","sources":["../../src/tip20Token.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAEtG,OAAO,EAAE,wBAAwB,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAEpF,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAGhC;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,SAAS,GAAG,SAAS,CAAC;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,oBAAoB,EAAE,MAAM,CAAC;IAC7B,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;GAMG;AACH,qBAAa,UAAW,SAAQ,KAAK;IACnC,SAAgB,WAAW,EAAE,gBAAgB,CAAC;gBAElC,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,gBAAgB;IAO3D;;OAEG;IACH,MAAM,CAAC,sBAAsB,CAAC,MAAM,EAAE,gBAAgB,GAAG,eAAe;IAIxE;;;OAGG;IACH,MAAM,CAAC,uBAAuB,CAAC,YAAY,CAAC,EAAE,gBAAgB,EAAE,GAAG,oBAAoB,EAAE;IAezF,yBAAyB;IACzB,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,yBAAyB;IACzB,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,wBAAwB;IACxB,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,sBAAsB;IACtB,IAAI,OAAO,IAAI,SAAS,GAAG,SAAS,CAEnC;IAED,qCAAqC;IACrC,IAAI,oBAAoB,IAAI,MAAM,CAEjC;IAED,+BAA+B;IAC/B,IAAI,aAAa,IAAI,MAAM,CAE1B;IAED,kBAAkB;IAClB,QAAQ,IAAI,MAAM;IAIlB,kBAAkB;IAClB,WAAW,IAAI,MAAM;IAIrB,kBAAkB;IAClB,aAAa,IAAI,MAAM;IAIvB,kBAAkB;IAClB,wBAAwB,IAAI,OAAO;IAInC,kBAAkB;IAClB,WAAW,IAAI,OAAO;IAItB,kBAAkB;IAClB,eAAe,IAAI,YAAY;IAI/B;;;;OAIG;IACH,UAAU,CAAC,UAAU,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO;IAelE;;;;OAIG;IACH,iBAAiB,CAAC,MAAM,EAAE,wBAAwB,GAAG,cAAc,EAAE;IA+DrE;;;;;;OAMG;IACH,YAAY,CACV,SAAS,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,EAC7D,UAAU,EAAE,MAAM,EAClB,kBAAkB,EAAE,MAAM,GACzB,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,EAAE;CA0BzB"}