@metamask-previews/multichain-transactions-controller 0.1.0-preview-2a6578b3 → 0.1.0-preview-99939da3

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 (42) hide show
  1. package/CHANGELOG.md +0 -8
  2. package/dist/MultichainTransactionsController.cjs +76 -51
  3. package/dist/MultichainTransactionsController.cjs.map +1 -1
  4. package/dist/MultichainTransactionsController.d.cts +24 -5
  5. package/dist/MultichainTransactionsController.d.cts.map +1 -1
  6. package/dist/MultichainTransactionsController.d.mts +24 -5
  7. package/dist/MultichainTransactionsController.d.mts.map +1 -1
  8. package/dist/MultichainTransactionsController.mjs +77 -52
  9. package/dist/MultichainTransactionsController.mjs.map +1 -1
  10. package/dist/MultichainTransactionsTracker.cjs +124 -0
  11. package/dist/MultichainTransactionsTracker.cjs.map +1 -0
  12. package/dist/MultichainTransactionsTracker.d.cts +62 -0
  13. package/dist/MultichainTransactionsTracker.d.cts.map +1 -0
  14. package/dist/MultichainTransactionsTracker.d.mts +62 -0
  15. package/dist/MultichainTransactionsTracker.d.mts.map +1 -0
  16. package/dist/MultichainTransactionsTracker.mjs +120 -0
  17. package/dist/MultichainTransactionsTracker.mjs.map +1 -0
  18. package/dist/Poller.cjs +40 -0
  19. package/dist/Poller.cjs.map +1 -0
  20. package/dist/Poller.d.cts +7 -0
  21. package/dist/Poller.d.cts.map +1 -0
  22. package/dist/Poller.d.mts +7 -0
  23. package/dist/Poller.d.mts.map +1 -0
  24. package/dist/Poller.mjs +36 -0
  25. package/dist/Poller.mjs.map +1 -0
  26. package/dist/constants.cjs +11 -1
  27. package/dist/constants.cjs.map +1 -1
  28. package/dist/constants.d.cts +4 -0
  29. package/dist/constants.d.cts.map +1 -1
  30. package/dist/constants.d.mts +4 -0
  31. package/dist/constants.d.mts.map +1 -1
  32. package/dist/constants.mjs +10 -0
  33. package/dist/constants.mjs.map +1 -1
  34. package/dist/index.cjs +2 -1
  35. package/dist/index.cjs.map +1 -1
  36. package/dist/index.d.cts +1 -1
  37. package/dist/index.d.cts.map +1 -1
  38. package/dist/index.d.mts +1 -1
  39. package/dist/index.d.mts.map +1 -1
  40. package/dist/index.mjs +1 -1
  41. package/dist/index.mjs.map +1 -1
  42. package/package.json +6 -6
@@ -0,0 +1,120 @@
1
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
2
+ if (kind === "m") throw new TypeError("Private method is not writable");
3
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
4
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
5
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
6
+ };
7
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
8
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
9
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
10
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
+ };
12
+ var _MultichainTransactionsTracker_poller, _MultichainTransactionsTracker_updateTransactions, _MultichainTransactionsTracker_transactions;
13
+ import { Poller } from "./Poller.mjs";
14
+ // Every 5s in milliseconds.
15
+ const TRANSACTIONS_TRACKING_INTERVAL = 5 * 1000;
16
+ /**
17
+ * This class manages the tracking and periodic updating of transactions for multiple blockchain accounts.
18
+ *
19
+ * The tracker uses a polling mechanism to periodically check and update transactions
20
+ * for all tracked accounts, respecting each account's specific block time to determine
21
+ * when updates are needed.
22
+ */
23
+ export class MultichainTransactionsTracker {
24
+ constructor(updateTransactionsCallback) {
25
+ _MultichainTransactionsTracker_poller.set(this, void 0);
26
+ _MultichainTransactionsTracker_updateTransactions.set(this, void 0);
27
+ _MultichainTransactionsTracker_transactions.set(this, {});
28
+ __classPrivateFieldSet(this, _MultichainTransactionsTracker_updateTransactions, updateTransactionsCallback, "f");
29
+ __classPrivateFieldSet(this, _MultichainTransactionsTracker_poller, new Poller(() => {
30
+ this.updateTransactions().catch((error) => {
31
+ console.error('Failed to update transactions:', error);
32
+ });
33
+ }, TRANSACTIONS_TRACKING_INTERVAL), "f");
34
+ }
35
+ /**
36
+ * Starts the tracking process.
37
+ */
38
+ start() {
39
+ __classPrivateFieldGet(this, _MultichainTransactionsTracker_poller, "f").start();
40
+ }
41
+ /**
42
+ * Stops the tracking process.
43
+ */
44
+ stop() {
45
+ __classPrivateFieldGet(this, _MultichainTransactionsTracker_poller, "f").stop();
46
+ }
47
+ /**
48
+ * Checks if an account ID is being tracked.
49
+ *
50
+ * @param accountId - The account ID.
51
+ * @returns True if the account is being tracked, false otherwise.
52
+ */
53
+ isTracked(accountId) {
54
+ return accountId in __classPrivateFieldGet(this, _MultichainTransactionsTracker_transactions, "f");
55
+ }
56
+ /**
57
+ * Asserts that an account ID is being tracked.
58
+ *
59
+ * @param accountId - The account ID.
60
+ * @throws If the account ID is not being tracked.
61
+ */
62
+ assertBeingTracked(accountId) {
63
+ if (!this.isTracked(accountId)) {
64
+ throw new Error(`Account is not being tracked: ${accountId}`);
65
+ }
66
+ }
67
+ /**
68
+ * Starts tracking a new account ID. This method has no effect on already tracked
69
+ * accounts.
70
+ *
71
+ * @param accountId - The account ID.
72
+ * @param blockTime - The block time (used when refreshing the account transactions).
73
+ * @param pagination - Options for paginating transaction results. Defaults to { limit: 10 }.
74
+ */
75
+ track(accountId, blockTime, pagination = { limit: 10 }) {
76
+ if (!this.isTracked(accountId)) {
77
+ __classPrivateFieldGet(this, _MultichainTransactionsTracker_transactions, "f")[accountId] = {
78
+ lastUpdated: 0,
79
+ blockTime,
80
+ pagination,
81
+ };
82
+ }
83
+ }
84
+ /**
85
+ * Stops tracking a tracked account ID.
86
+ *
87
+ * @param accountId - The account ID.
88
+ * @throws If the account ID is not being tracked.
89
+ */
90
+ untrack(accountId) {
91
+ this.assertBeingTracked(accountId);
92
+ delete __classPrivateFieldGet(this, _MultichainTransactionsTracker_transactions, "f")[accountId];
93
+ }
94
+ /**
95
+ * Update the transactions for a tracked account ID.
96
+ *
97
+ * @param accountId - The account ID.
98
+ * @throws If the account ID is not being tracked.
99
+ */
100
+ async updateTransactionsForAccount(accountId) {
101
+ this.assertBeingTracked(accountId);
102
+ const info = __classPrivateFieldGet(this, _MultichainTransactionsTracker_transactions, "f")[accountId];
103
+ const isOutdated = Date.now() - info.lastUpdated >= info.blockTime;
104
+ const hasNoTransactionsYet = info.lastUpdated === 0;
105
+ if (hasNoTransactionsYet || isOutdated) {
106
+ await __classPrivateFieldGet(this, _MultichainTransactionsTracker_updateTransactions, "f").call(this, accountId, info.pagination);
107
+ __classPrivateFieldGet(this, _MultichainTransactionsTracker_transactions, "f")[accountId].lastUpdated = Date.now();
108
+ }
109
+ }
110
+ /**
111
+ * Update the transactions of all tracked accounts
112
+ */
113
+ async updateTransactions() {
114
+ await Promise.allSettled(Object.keys(__classPrivateFieldGet(this, _MultichainTransactionsTracker_transactions, "f")).map(async (accountId) => {
115
+ await this.updateTransactionsForAccount(accountId);
116
+ }));
117
+ }
118
+ }
119
+ _MultichainTransactionsTracker_poller = new WeakMap(), _MultichainTransactionsTracker_updateTransactions = new WeakMap(), _MultichainTransactionsTracker_transactions = new WeakMap();
120
+ //# sourceMappingURL=MultichainTransactionsTracker.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MultichainTransactionsTracker.mjs","sourceRoot":"","sources":["../src/MultichainTransactionsTracker.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,OAAO,EAAE,MAAM,EAAE,qBAAiB;AAQlC,4BAA4B;AAC5B,MAAM,8BAA8B,GAAG,CAAC,GAAG,IAAI,CAAC;AAEhD;;;;;;GAMG;AACH,MAAM,OAAO,6BAA6B;IAUxC,YACE,0BAGkB;QAbX,wDAAgB;QAEhB,oEAGU;QAEnB,sDAAiD,EAAE,EAAC;QAQlD,uBAAA,IAAI,qDAAuB,0BAA0B,MAAA,CAAC;QAEtD,uBAAA,IAAI,yCAAW,IAAI,MAAM,CAAC,GAAG,EAAE;YAC7B,IAAI,CAAC,kBAAkB,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACxC,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,KAAK,CAAC,CAAC;YACzD,CAAC,CAAC,CAAC;QACL,CAAC,EAAE,8BAA8B,CAAC,MAAA,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,KAAK;QACH,uBAAA,IAAI,6CAAQ,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,IAAI;QACF,uBAAA,IAAI,6CAAQ,CAAC,IAAI,EAAE,CAAC;IACtB,CAAC;IAED;;;;;OAKG;IACH,SAAS,CAAC,SAAiB;QACzB,OAAO,SAAS,IAAI,uBAAA,IAAI,mDAAc,CAAC;IACzC,CAAC;IAED;;;;;OAKG;IACH,kBAAkB,CAAC,SAAiB;QAClC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE;YAC9B,MAAM,IAAI,KAAK,CAAC,iCAAiC,SAAS,EAAE,CAAC,CAAC;SAC/D;IACH,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CACH,SAAiB,EACjB,SAAiB,EACjB,aAAgC,EAAE,KAAK,EAAE,EAAE,EAAE;QAE7C,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE;YAC9B,uBAAA,IAAI,mDAAc,CAAC,SAAS,CAAC,GAAG;gBAC9B,WAAW,EAAE,CAAC;gBACd,SAAS;gBACT,UAAU;aACX,CAAC;SACH;IACH,CAAC;IAED;;;;;OAKG;IACH,OAAO,CAAC,SAAiB;QACvB,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;QACnC,OAAO,uBAAA,IAAI,mDAAc,CAAC,SAAS,CAAC,CAAC;IACvC,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,4BAA4B,CAAC,SAAiB;QAClD,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;QAEnC,MAAM,IAAI,GAAG,uBAAA,IAAI,mDAAc,CAAC,SAAS,CAAC,CAAC;QAC3C,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,SAAS,CAAC;QACnE,MAAM,oBAAoB,GAAG,IAAI,CAAC,WAAW,KAAK,CAAC,CAAC;QAEpD,IAAI,oBAAoB,IAAI,UAAU,EAAE;YACtC,MAAM,uBAAA,IAAI,yDAAoB,MAAxB,IAAI,EAAqB,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YAC3D,uBAAA,IAAI,mDAAc,CAAC,SAAS,CAAC,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;SACxD;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,kBAAkB;QACtB,MAAM,OAAO,CAAC,UAAU,CACtB,MAAM,CAAC,IAAI,CAAC,uBAAA,IAAI,mDAAc,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE;YACtD,MAAM,IAAI,CAAC,4BAA4B,CAAC,SAAS,CAAC,CAAC;QACrD,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;CACF","sourcesContent":["import type { PaginationOptions } from './MultichainTransactionsController';\nimport { Poller } from './Poller';\n\ntype TransactionInfo = {\n lastUpdated: number;\n blockTime: number;\n pagination: PaginationOptions;\n};\n\n// Every 5s in milliseconds.\nconst TRANSACTIONS_TRACKING_INTERVAL = 5 * 1000;\n\n/**\n * This class manages the tracking and periodic updating of transactions for multiple blockchain accounts.\n *\n * The tracker uses a polling mechanism to periodically check and update transactions\n * for all tracked accounts, respecting each account's specific block time to determine\n * when updates are needed.\n */\nexport class MultichainTransactionsTracker {\n readonly #poller: Poller;\n\n readonly #updateTransactions: (\n accountId: string,\n pagination: PaginationOptions,\n ) => Promise<void>;\n\n #transactions: Record<string, TransactionInfo> = {};\n\n constructor(\n updateTransactionsCallback: (\n accountId: string,\n pagination: PaginationOptions,\n ) => Promise<void>,\n ) {\n this.#updateTransactions = updateTransactionsCallback;\n\n this.#poller = new Poller(() => {\n this.updateTransactions().catch((error) => {\n console.error('Failed to update transactions:', error);\n });\n }, TRANSACTIONS_TRACKING_INTERVAL);\n }\n\n /**\n * Starts the tracking process.\n */\n start(): void {\n this.#poller.start();\n }\n\n /**\n * Stops the tracking process.\n */\n stop(): void {\n this.#poller.stop();\n }\n\n /**\n * Checks if an account ID is being tracked.\n *\n * @param accountId - The account ID.\n * @returns True if the account is being tracked, false otherwise.\n */\n isTracked(accountId: string) {\n return accountId in this.#transactions;\n }\n\n /**\n * Asserts that an account ID is being tracked.\n *\n * @param accountId - The account ID.\n * @throws If the account ID is not being tracked.\n */\n assertBeingTracked(accountId: string) {\n if (!this.isTracked(accountId)) {\n throw new Error(`Account is not being tracked: ${accountId}`);\n }\n }\n\n /**\n * Starts tracking a new account ID. This method has no effect on already tracked\n * accounts.\n *\n * @param accountId - The account ID.\n * @param blockTime - The block time (used when refreshing the account transactions).\n * @param pagination - Options for paginating transaction results. Defaults to { limit: 10 }.\n */\n track(\n accountId: string,\n blockTime: number,\n pagination: PaginationOptions = { limit: 10 },\n ) {\n if (!this.isTracked(accountId)) {\n this.#transactions[accountId] = {\n lastUpdated: 0,\n blockTime,\n pagination,\n };\n }\n }\n\n /**\n * Stops tracking a tracked account ID.\n *\n * @param accountId - The account ID.\n * @throws If the account ID is not being tracked.\n */\n untrack(accountId: string) {\n this.assertBeingTracked(accountId);\n delete this.#transactions[accountId];\n }\n\n /**\n * Update the transactions for a tracked account ID.\n *\n * @param accountId - The account ID.\n * @throws If the account ID is not being tracked.\n */\n async updateTransactionsForAccount(accountId: string) {\n this.assertBeingTracked(accountId);\n\n const info = this.#transactions[accountId];\n const isOutdated = Date.now() - info.lastUpdated >= info.blockTime;\n const hasNoTransactionsYet = info.lastUpdated === 0;\n\n if (hasNoTransactionsYet || isOutdated) {\n await this.#updateTransactions(accountId, info.pagination);\n this.#transactions[accountId].lastUpdated = Date.now();\n }\n }\n\n /**\n * Update the transactions of all tracked accounts\n */\n async updateTransactions() {\n await Promise.allSettled(\n Object.keys(this.#transactions).map(async (accountId) => {\n await this.updateTransactionsForAccount(accountId);\n }),\n );\n }\n}\n"]}
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
3
+ if (kind === "m") throw new TypeError("Private method is not writable");
4
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
5
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
6
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
7
+ };
8
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
9
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
10
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
11
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
12
+ };
13
+ var _Poller_interval, _Poller_callback, _Poller_handle;
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.Poller = void 0;
16
+ class Poller {
17
+ constructor(callback, interval) {
18
+ _Poller_interval.set(this, void 0);
19
+ _Poller_callback.set(this, void 0);
20
+ _Poller_handle.set(this, undefined);
21
+ __classPrivateFieldSet(this, _Poller_interval, interval, "f");
22
+ __classPrivateFieldSet(this, _Poller_callback, callback, "f");
23
+ }
24
+ start() {
25
+ if (__classPrivateFieldGet(this, _Poller_handle, "f")) {
26
+ return;
27
+ }
28
+ __classPrivateFieldSet(this, _Poller_handle, setInterval(__classPrivateFieldGet(this, _Poller_callback, "f"), __classPrivateFieldGet(this, _Poller_interval, "f")), "f");
29
+ }
30
+ stop() {
31
+ if (!__classPrivateFieldGet(this, _Poller_handle, "f")) {
32
+ return;
33
+ }
34
+ clearInterval(__classPrivateFieldGet(this, _Poller_handle, "f"));
35
+ __classPrivateFieldSet(this, _Poller_handle, undefined, "f");
36
+ }
37
+ }
38
+ exports.Poller = Poller;
39
+ _Poller_interval = new WeakMap(), _Poller_callback = new WeakMap(), _Poller_handle = new WeakMap();
40
+ //# sourceMappingURL=Poller.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Poller.cjs","sourceRoot":"","sources":["../src/Poller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,MAAa,MAAM;IAOjB,YAAY,QAAoB,EAAE,QAAgB;QANzC,mCAAkB;QAElB,mCAAsB;QAE/B,yBAAsC,SAAS,EAAC;QAG9C,uBAAA,IAAI,oBAAa,QAAQ,MAAA,CAAC;QAC1B,uBAAA,IAAI,oBAAa,QAAQ,MAAA,CAAC;IAC5B,CAAC;IAED,KAAK;QACH,IAAI,uBAAA,IAAI,sBAAQ,EAAE;YAChB,OAAO;SACR;QAED,uBAAA,IAAI,kBAAW,WAAW,CAAC,uBAAA,IAAI,wBAAU,EAAE,uBAAA,IAAI,wBAAU,CAAC,MAAA,CAAC;IAC7D,CAAC;IAED,IAAI;QACF,IAAI,CAAC,uBAAA,IAAI,sBAAQ,EAAE;YACjB,OAAO;SACR;QACD,aAAa,CAAC,uBAAA,IAAI,sBAAQ,CAAC,CAAC;QAC5B,uBAAA,IAAI,kBAAW,SAAS,MAAA,CAAC;IAC3B,CAAC;CACF;AA3BD,wBA2BC","sourcesContent":["export class Poller {\n readonly #interval: number;\n\n readonly #callback: () => void;\n\n #handle: NodeJS.Timeout | undefined = undefined;\n\n constructor(callback: () => void, interval: number) {\n this.#interval = interval;\n this.#callback = callback;\n }\n\n start() {\n if (this.#handle) {\n return;\n }\n\n this.#handle = setInterval(this.#callback, this.#interval);\n }\n\n stop() {\n if (!this.#handle) {\n return;\n }\n clearInterval(this.#handle);\n this.#handle = undefined;\n }\n}\n"]}
@@ -0,0 +1,7 @@
1
+ export declare class Poller {
2
+ #private;
3
+ constructor(callback: () => void, interval: number);
4
+ start(): void;
5
+ stop(): void;
6
+ }
7
+ //# sourceMappingURL=Poller.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Poller.d.cts","sourceRoot":"","sources":["../src/Poller.ts"],"names":[],"mappings":"AAAA,qBAAa,MAAM;;gBAOL,QAAQ,EAAE,MAAM,IAAI,EAAE,QAAQ,EAAE,MAAM;IAKlD,KAAK;IAQL,IAAI;CAOL"}
@@ -0,0 +1,7 @@
1
+ export declare class Poller {
2
+ #private;
3
+ constructor(callback: () => void, interval: number);
4
+ start(): void;
5
+ stop(): void;
6
+ }
7
+ //# sourceMappingURL=Poller.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Poller.d.mts","sourceRoot":"","sources":["../src/Poller.ts"],"names":[],"mappings":"AAAA,qBAAa,MAAM;;gBAOL,QAAQ,EAAE,MAAM,IAAI,EAAE,QAAQ,EAAE,MAAM;IAKlD,KAAK;IAQL,IAAI;CAOL"}
@@ -0,0 +1,36 @@
1
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
2
+ if (kind === "m") throw new TypeError("Private method is not writable");
3
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
4
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
5
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
6
+ };
7
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
8
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
9
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
10
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
+ };
12
+ var _Poller_interval, _Poller_callback, _Poller_handle;
13
+ export class Poller {
14
+ constructor(callback, interval) {
15
+ _Poller_interval.set(this, void 0);
16
+ _Poller_callback.set(this, void 0);
17
+ _Poller_handle.set(this, undefined);
18
+ __classPrivateFieldSet(this, _Poller_interval, interval, "f");
19
+ __classPrivateFieldSet(this, _Poller_callback, callback, "f");
20
+ }
21
+ start() {
22
+ if (__classPrivateFieldGet(this, _Poller_handle, "f")) {
23
+ return;
24
+ }
25
+ __classPrivateFieldSet(this, _Poller_handle, setInterval(__classPrivateFieldGet(this, _Poller_callback, "f"), __classPrivateFieldGet(this, _Poller_interval, "f")), "f");
26
+ }
27
+ stop() {
28
+ if (!__classPrivateFieldGet(this, _Poller_handle, "f")) {
29
+ return;
30
+ }
31
+ clearInterval(__classPrivateFieldGet(this, _Poller_handle, "f"));
32
+ __classPrivateFieldSet(this, _Poller_handle, undefined, "f");
33
+ }
34
+ }
35
+ _Poller_interval = new WeakMap(), _Poller_callback = new WeakMap(), _Poller_handle = new WeakMap();
36
+ //# sourceMappingURL=Poller.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Poller.mjs","sourceRoot":"","sources":["../src/Poller.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,MAAM,OAAO,MAAM;IAOjB,YAAY,QAAoB,EAAE,QAAgB;QANzC,mCAAkB;QAElB,mCAAsB;QAE/B,yBAAsC,SAAS,EAAC;QAG9C,uBAAA,IAAI,oBAAa,QAAQ,MAAA,CAAC;QAC1B,uBAAA,IAAI,oBAAa,QAAQ,MAAA,CAAC;IAC5B,CAAC;IAED,KAAK;QACH,IAAI,uBAAA,IAAI,sBAAQ,EAAE;YAChB,OAAO;SACR;QAED,uBAAA,IAAI,kBAAW,WAAW,CAAC,uBAAA,IAAI,wBAAU,EAAE,uBAAA,IAAI,wBAAU,CAAC,MAAA,CAAC;IAC7D,CAAC;IAED,IAAI;QACF,IAAI,CAAC,uBAAA,IAAI,sBAAQ,EAAE;YACjB,OAAO;SACR;QACD,aAAa,CAAC,uBAAA,IAAI,sBAAQ,CAAC,CAAC;QAC5B,uBAAA,IAAI,kBAAW,SAAS,MAAA,CAAC;IAC3B,CAAC;CACF","sourcesContent":["export class Poller {\n readonly #interval: number;\n\n readonly #callback: () => void;\n\n #handle: NodeJS.Timeout | undefined = undefined;\n\n constructor(callback: () => void, interval: number) {\n this.#interval = interval;\n this.#callback = callback;\n }\n\n start() {\n if (this.#handle) {\n return;\n }\n\n this.#handle = setInterval(this.#callback, this.#interval);\n }\n\n stop() {\n if (!this.#handle) {\n return;\n }\n clearInterval(this.#handle);\n this.#handle = undefined;\n }\n}\n"]}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.NETWORK_ASSETS_MAP = exports.MultichainNativeAsset = exports.MultichainNetwork = void 0;
3
+ exports.NETWORK_ASSETS_MAP = exports.TRANSACTIONS_CHECK_INTERVALS = exports.MultichainNativeAsset = exports.MultichainNetwork = void 0;
4
+ const keyring_api_1 = require("@metamask/keyring-api");
4
5
  /**
5
6
  * The network identifiers for supported networks in CAIP-2 format.
6
7
  * Note: This is a temporary workaround until we have a more robust
@@ -22,6 +23,15 @@ var MultichainNativeAsset;
22
23
  MultichainNativeAsset["SolanaDevnet"] = "solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1/slip44:501";
23
24
  MultichainNativeAsset["SolanaTestnet"] = "solana:4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z/slip44:501";
24
25
  })(MultichainNativeAsset || (exports.MultichainNativeAsset = MultichainNativeAsset = {}));
26
+ const BITCOIN_AVG_BLOCK_TIME = 10 * 60 * 1000; // 10 minutes in milliseconds
27
+ const SOLANA_TRANSACTIONS_UPDATE_TIME = 7000; // 7 seconds
28
+ const BTC_TRANSACTIONS_UPDATE_TIME = BITCOIN_AVG_BLOCK_TIME / 2;
29
+ exports.TRANSACTIONS_CHECK_INTERVALS = {
30
+ // NOTE: We set an interval of half the average block time for bitcoin
31
+ // to mitigate when our interval is de-synchronized with the actual block time.
32
+ [keyring_api_1.BtcAccountType.P2wpkh]: BTC_TRANSACTIONS_UPDATE_TIME,
33
+ [keyring_api_1.SolAccountType.DataAccount]: SOLANA_TRANSACTIONS_UPDATE_TIME,
34
+ };
25
35
  /**
26
36
  * Maps network identifiers to their corresponding native asset types.
27
37
  * Each network is mapped to an array containing its native asset for consistency.
@@ -1 +1 @@
1
- {"version":3,"file":"constants.cjs","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAAA;;;;GAIG;AACH,IAAY,iBAMX;AAND,WAAY,iBAAiB;IAC3B,wEAAmD,CAAA;IACnD,+EAA0D,CAAA;IAC1D,uEAAkD,CAAA;IAClD,6EAAwD,CAAA;IACxD,8EAAyD,CAAA;AAC3D,CAAC,EANW,iBAAiB,iCAAjB,iBAAiB,QAM5B;AAED,IAAY,qBAMX;AAND,WAAY,qBAAqB;IAC/B,qFAAiD,CAAA;IACjD,4FAA+D,CAAA;IAC/D,sFAAiD,CAAA;IACjD,4FAA6D,CAAA;IAC7D,6FAA+D,CAAA;AACjE,CAAC,EANW,qBAAqB,qCAArB,qBAAqB,QAMhC;AAED;;;GAGG;AACU,QAAA,kBAAkB,GAA4C;IACzE,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC,qBAAqB,CAAC,MAAM,CAAC;IAC1D,CAAC,iBAAiB,CAAC,aAAa,CAAC,EAAE,CAAC,qBAAqB,CAAC,aAAa,CAAC;IACxE,CAAC,iBAAiB,CAAC,YAAY,CAAC,EAAE,CAAC,qBAAqB,CAAC,YAAY,CAAC;IACtE,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAAC,qBAAqB,CAAC,OAAO,CAAC;IAC5D,CAAC,iBAAiB,CAAC,cAAc,CAAC,EAAE,CAAC,qBAAqB,CAAC,cAAc,CAAC;CAC3E,CAAC","sourcesContent":["/**\n * The network identifiers for supported networks in CAIP-2 format.\n * Note: This is a temporary workaround until we have a more robust\n * solution for network identifiers.\n */\nexport enum MultichainNetwork {\n Bitcoin = 'bip122:000000000019d6689c085ae165831e93',\n BitcoinTestnet = 'bip122:000000000933ea01ad0ee984209779ba',\n Solana = 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp',\n SolanaDevnet = 'solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1',\n SolanaTestnet = 'solana:4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z',\n}\n\nexport enum MultichainNativeAsset {\n Bitcoin = `${MultichainNetwork.Bitcoin}/slip44:0`,\n BitcoinTestnet = `${MultichainNetwork.BitcoinTestnet}/slip44:0`,\n Solana = `${MultichainNetwork.Solana}/slip44:501`,\n SolanaDevnet = `${MultichainNetwork.SolanaDevnet}/slip44:501`,\n SolanaTestnet = `${MultichainNetwork.SolanaTestnet}/slip44:501`,\n}\n\n/**\n * Maps network identifiers to their corresponding native asset types.\n * Each network is mapped to an array containing its native asset for consistency.\n */\nexport const NETWORK_ASSETS_MAP: Record<string, MultichainNativeAsset[]> = {\n [MultichainNetwork.Solana]: [MultichainNativeAsset.Solana],\n [MultichainNetwork.SolanaTestnet]: [MultichainNativeAsset.SolanaTestnet],\n [MultichainNetwork.SolanaDevnet]: [MultichainNativeAsset.SolanaDevnet],\n [MultichainNetwork.Bitcoin]: [MultichainNativeAsset.Bitcoin],\n [MultichainNetwork.BitcoinTestnet]: [MultichainNativeAsset.BitcoinTestnet],\n};\n"]}
1
+ {"version":3,"file":"constants.cjs","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAAA,uDAAuE;AAEvE;;;;GAIG;AACH,IAAY,iBAMX;AAND,WAAY,iBAAiB;IAC3B,wEAAmD,CAAA;IACnD,+EAA0D,CAAA;IAC1D,uEAAkD,CAAA;IAClD,6EAAwD,CAAA;IACxD,8EAAyD,CAAA;AAC3D,CAAC,EANW,iBAAiB,iCAAjB,iBAAiB,QAM5B;AAED,IAAY,qBAMX;AAND,WAAY,qBAAqB;IAC/B,qFAAiD,CAAA;IACjD,4FAA+D,CAAA;IAC/D,sFAAiD,CAAA;IACjD,4FAA6D,CAAA;IAC7D,6FAA+D,CAAA;AACjE,CAAC,EANW,qBAAqB,qCAArB,qBAAqB,QAMhC;AAED,MAAM,sBAAsB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,6BAA6B;AAC5E,MAAM,+BAA+B,GAAG,IAAI,CAAC,CAAC,YAAY;AAC1D,MAAM,4BAA4B,GAAG,sBAAsB,GAAG,CAAC,CAAC;AAEnD,QAAA,4BAA4B,GAAG;IAC1C,sEAAsE;IACtE,+EAA+E;IAC/E,CAAC,4BAAc,CAAC,MAAM,CAAC,EAAE,4BAA4B;IACrD,CAAC,4BAAc,CAAC,WAAW,CAAC,EAAE,+BAA+B;CAC9D,CAAC;AAEF;;;GAGG;AACU,QAAA,kBAAkB,GAA4C;IACzE,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC,qBAAqB,CAAC,MAAM,CAAC;IAC1D,CAAC,iBAAiB,CAAC,aAAa,CAAC,EAAE,CAAC,qBAAqB,CAAC,aAAa,CAAC;IACxE,CAAC,iBAAiB,CAAC,YAAY,CAAC,EAAE,CAAC,qBAAqB,CAAC,YAAY,CAAC;IACtE,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAAC,qBAAqB,CAAC,OAAO,CAAC;IAC5D,CAAC,iBAAiB,CAAC,cAAc,CAAC,EAAE,CAAC,qBAAqB,CAAC,cAAc,CAAC;CAC3E,CAAC","sourcesContent":["import { BtcAccountType, SolAccountType } from '@metamask/keyring-api';\n\n/**\n * The network identifiers for supported networks in CAIP-2 format.\n * Note: This is a temporary workaround until we have a more robust\n * solution for network identifiers.\n */\nexport enum MultichainNetwork {\n Bitcoin = 'bip122:000000000019d6689c085ae165831e93',\n BitcoinTestnet = 'bip122:000000000933ea01ad0ee984209779ba',\n Solana = 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp',\n SolanaDevnet = 'solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1',\n SolanaTestnet = 'solana:4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z',\n}\n\nexport enum MultichainNativeAsset {\n Bitcoin = `${MultichainNetwork.Bitcoin}/slip44:0`,\n BitcoinTestnet = `${MultichainNetwork.BitcoinTestnet}/slip44:0`,\n Solana = `${MultichainNetwork.Solana}/slip44:501`,\n SolanaDevnet = `${MultichainNetwork.SolanaDevnet}/slip44:501`,\n SolanaTestnet = `${MultichainNetwork.SolanaTestnet}/slip44:501`,\n}\n\nconst BITCOIN_AVG_BLOCK_TIME = 10 * 60 * 1000; // 10 minutes in milliseconds\nconst SOLANA_TRANSACTIONS_UPDATE_TIME = 7000; // 7 seconds\nconst BTC_TRANSACTIONS_UPDATE_TIME = BITCOIN_AVG_BLOCK_TIME / 2;\n\nexport const TRANSACTIONS_CHECK_INTERVALS = {\n // NOTE: We set an interval of half the average block time for bitcoin\n // to mitigate when our interval is de-synchronized with the actual block time.\n [BtcAccountType.P2wpkh]: BTC_TRANSACTIONS_UPDATE_TIME,\n [SolAccountType.DataAccount]: SOLANA_TRANSACTIONS_UPDATE_TIME,\n};\n\n/**\n * Maps network identifiers to their corresponding native asset types.\n * Each network is mapped to an array containing its native asset for consistency.\n */\nexport const NETWORK_ASSETS_MAP: Record<string, MultichainNativeAsset[]> = {\n [MultichainNetwork.Solana]: [MultichainNativeAsset.Solana],\n [MultichainNetwork.SolanaTestnet]: [MultichainNativeAsset.SolanaTestnet],\n [MultichainNetwork.SolanaDevnet]: [MultichainNativeAsset.SolanaDevnet],\n [MultichainNetwork.Bitcoin]: [MultichainNativeAsset.Bitcoin],\n [MultichainNetwork.BitcoinTestnet]: [MultichainNativeAsset.BitcoinTestnet],\n};\n"]}
@@ -17,6 +17,10 @@ export declare enum MultichainNativeAsset {
17
17
  SolanaDevnet = "solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1/slip44:501",
18
18
  SolanaTestnet = "solana:4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z/slip44:501"
19
19
  }
20
+ export declare const TRANSACTIONS_CHECK_INTERVALS: {
21
+ "bip122:p2wpkh": number;
22
+ "solana:data-account": number;
23
+ };
20
24
  /**
21
25
  * Maps network identifiers to their corresponding native asset types.
22
26
  * Each network is mapped to an array containing its native asset for consistency.
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.cts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,oBAAY,iBAAiB;IAC3B,OAAO,4CAA4C;IACnD,cAAc,4CAA4C;IAC1D,MAAM,4CAA4C;IAClD,YAAY,4CAA4C;IACxD,aAAa,4CAA4C;CAC1D;AAED,oBAAY,qBAAqB;IAC/B,OAAO,qDAA0C;IACjD,cAAc,qDAAiD;IAC/D,MAAM,uDAA2C;IACjD,YAAY,uDAAiD;IAC7D,aAAa,uDAAkD;CAChE;AAED;;;GAGG;AACH,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,EAAE,CAMtE,CAAC"}
1
+ {"version":3,"file":"constants.d.cts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,oBAAY,iBAAiB;IAC3B,OAAO,4CAA4C;IACnD,cAAc,4CAA4C;IAC1D,MAAM,4CAA4C;IAClD,YAAY,4CAA4C;IACxD,aAAa,4CAA4C;CAC1D;AAED,oBAAY,qBAAqB;IAC/B,OAAO,qDAA0C;IACjD,cAAc,qDAAiD;IAC/D,MAAM,uDAA2C;IACjD,YAAY,uDAAiD;IAC7D,aAAa,uDAAkD;CAChE;AAMD,eAAO,MAAM,4BAA4B;;;CAKxC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,EAAE,CAMtE,CAAC"}
@@ -17,6 +17,10 @@ export declare enum MultichainNativeAsset {
17
17
  SolanaDevnet = "solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1/slip44:501",
18
18
  SolanaTestnet = "solana:4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z/slip44:501"
19
19
  }
20
+ export declare const TRANSACTIONS_CHECK_INTERVALS: {
21
+ "bip122:p2wpkh": number;
22
+ "solana:data-account": number;
23
+ };
20
24
  /**
21
25
  * Maps network identifiers to their corresponding native asset types.
22
26
  * Each network is mapped to an array containing its native asset for consistency.
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.mts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,oBAAY,iBAAiB;IAC3B,OAAO,4CAA4C;IACnD,cAAc,4CAA4C;IAC1D,MAAM,4CAA4C;IAClD,YAAY,4CAA4C;IACxD,aAAa,4CAA4C;CAC1D;AAED,oBAAY,qBAAqB;IAC/B,OAAO,qDAA0C;IACjD,cAAc,qDAAiD;IAC/D,MAAM,uDAA2C;IACjD,YAAY,uDAAiD;IAC7D,aAAa,uDAAkD;CAChE;AAED;;;GAGG;AACH,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,EAAE,CAMtE,CAAC"}
1
+ {"version":3,"file":"constants.d.mts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,oBAAY,iBAAiB;IAC3B,OAAO,4CAA4C;IACnD,cAAc,4CAA4C;IAC1D,MAAM,4CAA4C;IAClD,YAAY,4CAA4C;IACxD,aAAa,4CAA4C;CAC1D;AAED,oBAAY,qBAAqB;IAC/B,OAAO,qDAA0C;IACjD,cAAc,qDAAiD;IAC/D,MAAM,uDAA2C;IACjD,YAAY,uDAAiD;IAC7D,aAAa,uDAAkD;CAChE;AAMD,eAAO,MAAM,4BAA4B;;;CAKxC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,EAAE,CAMtE,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { BtcAccountType, SolAccountType } from "@metamask/keyring-api";
1
2
  /**
2
3
  * The network identifiers for supported networks in CAIP-2 format.
3
4
  * Note: This is a temporary workaround until we have a more robust
@@ -19,6 +20,15 @@ export var MultichainNativeAsset;
19
20
  MultichainNativeAsset["SolanaDevnet"] = "solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1/slip44:501";
20
21
  MultichainNativeAsset["SolanaTestnet"] = "solana:4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z/slip44:501";
21
22
  })(MultichainNativeAsset || (MultichainNativeAsset = {}));
23
+ const BITCOIN_AVG_BLOCK_TIME = 10 * 60 * 1000; // 10 minutes in milliseconds
24
+ const SOLANA_TRANSACTIONS_UPDATE_TIME = 7000; // 7 seconds
25
+ const BTC_TRANSACTIONS_UPDATE_TIME = BITCOIN_AVG_BLOCK_TIME / 2;
26
+ export const TRANSACTIONS_CHECK_INTERVALS = {
27
+ // NOTE: We set an interval of half the average block time for bitcoin
28
+ // to mitigate when our interval is de-synchronized with the actual block time.
29
+ [BtcAccountType.P2wpkh]: BTC_TRANSACTIONS_UPDATE_TIME,
30
+ [SolAccountType.DataAccount]: SOLANA_TRANSACTIONS_UPDATE_TIME,
31
+ };
22
32
  /**
23
33
  * Maps network identifiers to their corresponding native asset types.
24
34
  * Each network is mapped to an array containing its native asset for consistency.
@@ -1 +1 @@
1
- {"version":3,"file":"constants.mjs","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,CAAN,IAAY,iBAMX;AAND,WAAY,iBAAiB;IAC3B,wEAAmD,CAAA;IACnD,+EAA0D,CAAA;IAC1D,uEAAkD,CAAA;IAClD,6EAAwD,CAAA;IACxD,8EAAyD,CAAA;AAC3D,CAAC,EANW,iBAAiB,KAAjB,iBAAiB,QAM5B;AAED,MAAM,CAAN,IAAY,qBAMX;AAND,WAAY,qBAAqB;IAC/B,qFAAiD,CAAA;IACjD,4FAA+D,CAAA;IAC/D,sFAAiD,CAAA;IACjD,4FAA6D,CAAA;IAC7D,6FAA+D,CAAA;AACjE,CAAC,EANW,qBAAqB,KAArB,qBAAqB,QAMhC;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAA4C;IACzE,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC,qBAAqB,CAAC,MAAM,CAAC;IAC1D,CAAC,iBAAiB,CAAC,aAAa,CAAC,EAAE,CAAC,qBAAqB,CAAC,aAAa,CAAC;IACxE,CAAC,iBAAiB,CAAC,YAAY,CAAC,EAAE,CAAC,qBAAqB,CAAC,YAAY,CAAC;IACtE,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAAC,qBAAqB,CAAC,OAAO,CAAC;IAC5D,CAAC,iBAAiB,CAAC,cAAc,CAAC,EAAE,CAAC,qBAAqB,CAAC,cAAc,CAAC;CAC3E,CAAC","sourcesContent":["/**\n * The network identifiers for supported networks in CAIP-2 format.\n * Note: This is a temporary workaround until we have a more robust\n * solution for network identifiers.\n */\nexport enum MultichainNetwork {\n Bitcoin = 'bip122:000000000019d6689c085ae165831e93',\n BitcoinTestnet = 'bip122:000000000933ea01ad0ee984209779ba',\n Solana = 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp',\n SolanaDevnet = 'solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1',\n SolanaTestnet = 'solana:4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z',\n}\n\nexport enum MultichainNativeAsset {\n Bitcoin = `${MultichainNetwork.Bitcoin}/slip44:0`,\n BitcoinTestnet = `${MultichainNetwork.BitcoinTestnet}/slip44:0`,\n Solana = `${MultichainNetwork.Solana}/slip44:501`,\n SolanaDevnet = `${MultichainNetwork.SolanaDevnet}/slip44:501`,\n SolanaTestnet = `${MultichainNetwork.SolanaTestnet}/slip44:501`,\n}\n\n/**\n * Maps network identifiers to their corresponding native asset types.\n * Each network is mapped to an array containing its native asset for consistency.\n */\nexport const NETWORK_ASSETS_MAP: Record<string, MultichainNativeAsset[]> = {\n [MultichainNetwork.Solana]: [MultichainNativeAsset.Solana],\n [MultichainNetwork.SolanaTestnet]: [MultichainNativeAsset.SolanaTestnet],\n [MultichainNetwork.SolanaDevnet]: [MultichainNativeAsset.SolanaDevnet],\n [MultichainNetwork.Bitcoin]: [MultichainNativeAsset.Bitcoin],\n [MultichainNetwork.BitcoinTestnet]: [MultichainNativeAsset.BitcoinTestnet],\n};\n"]}
1
+ {"version":3,"file":"constants.mjs","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,8BAA8B;AAEvE;;;;GAIG;AACH,MAAM,CAAN,IAAY,iBAMX;AAND,WAAY,iBAAiB;IAC3B,wEAAmD,CAAA;IACnD,+EAA0D,CAAA;IAC1D,uEAAkD,CAAA;IAClD,6EAAwD,CAAA;IACxD,8EAAyD,CAAA;AAC3D,CAAC,EANW,iBAAiB,KAAjB,iBAAiB,QAM5B;AAED,MAAM,CAAN,IAAY,qBAMX;AAND,WAAY,qBAAqB;IAC/B,qFAAiD,CAAA;IACjD,4FAA+D,CAAA;IAC/D,sFAAiD,CAAA;IACjD,4FAA6D,CAAA;IAC7D,6FAA+D,CAAA;AACjE,CAAC,EANW,qBAAqB,KAArB,qBAAqB,QAMhC;AAED,MAAM,sBAAsB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,6BAA6B;AAC5E,MAAM,+BAA+B,GAAG,IAAI,CAAC,CAAC,YAAY;AAC1D,MAAM,4BAA4B,GAAG,sBAAsB,GAAG,CAAC,CAAC;AAEhE,MAAM,CAAC,MAAM,4BAA4B,GAAG;IAC1C,sEAAsE;IACtE,+EAA+E;IAC/E,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,4BAA4B;IACrD,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,+BAA+B;CAC9D,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAA4C;IACzE,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC,qBAAqB,CAAC,MAAM,CAAC;IAC1D,CAAC,iBAAiB,CAAC,aAAa,CAAC,EAAE,CAAC,qBAAqB,CAAC,aAAa,CAAC;IACxE,CAAC,iBAAiB,CAAC,YAAY,CAAC,EAAE,CAAC,qBAAqB,CAAC,YAAY,CAAC;IACtE,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAAC,qBAAqB,CAAC,OAAO,CAAC;IAC5D,CAAC,iBAAiB,CAAC,cAAc,CAAC,EAAE,CAAC,qBAAqB,CAAC,cAAc,CAAC;CAC3E,CAAC","sourcesContent":["import { BtcAccountType, SolAccountType } from '@metamask/keyring-api';\n\n/**\n * The network identifiers for supported networks in CAIP-2 format.\n * Note: This is a temporary workaround until we have a more robust\n * solution for network identifiers.\n */\nexport enum MultichainNetwork {\n Bitcoin = 'bip122:000000000019d6689c085ae165831e93',\n BitcoinTestnet = 'bip122:000000000933ea01ad0ee984209779ba',\n Solana = 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp',\n SolanaDevnet = 'solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1',\n SolanaTestnet = 'solana:4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z',\n}\n\nexport enum MultichainNativeAsset {\n Bitcoin = `${MultichainNetwork.Bitcoin}/slip44:0`,\n BitcoinTestnet = `${MultichainNetwork.BitcoinTestnet}/slip44:0`,\n Solana = `${MultichainNetwork.Solana}/slip44:501`,\n SolanaDevnet = `${MultichainNetwork.SolanaDevnet}/slip44:501`,\n SolanaTestnet = `${MultichainNetwork.SolanaTestnet}/slip44:501`,\n}\n\nconst BITCOIN_AVG_BLOCK_TIME = 10 * 60 * 1000; // 10 minutes in milliseconds\nconst SOLANA_TRANSACTIONS_UPDATE_TIME = 7000; // 7 seconds\nconst BTC_TRANSACTIONS_UPDATE_TIME = BITCOIN_AVG_BLOCK_TIME / 2;\n\nexport const TRANSACTIONS_CHECK_INTERVALS = {\n // NOTE: We set an interval of half the average block time for bitcoin\n // to mitigate when our interval is de-synchronized with the actual block time.\n [BtcAccountType.P2wpkh]: BTC_TRANSACTIONS_UPDATE_TIME,\n [SolAccountType.DataAccount]: SOLANA_TRANSACTIONS_UPDATE_TIME,\n};\n\n/**\n * Maps network identifiers to their corresponding native asset types.\n * Each network is mapped to an array containing its native asset for consistency.\n */\nexport const NETWORK_ASSETS_MAP: Record<string, MultichainNativeAsset[]> = {\n [MultichainNetwork.Solana]: [MultichainNativeAsset.Solana],\n [MultichainNetwork.SolanaTestnet]: [MultichainNativeAsset.SolanaTestnet],\n [MultichainNetwork.SolanaDevnet]: [MultichainNativeAsset.SolanaDevnet],\n [MultichainNetwork.Bitcoin]: [MultichainNativeAsset.Bitcoin],\n [MultichainNetwork.BitcoinTestnet]: [MultichainNativeAsset.BitcoinTestnet],\n};\n"]}
package/dist/index.cjs CHANGED
@@ -1,9 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MultichainNativeAsset = exports.MultichainNetwork = exports.NETWORK_ASSETS_MAP = exports.MultichainTransactionsController = void 0;
3
+ exports.MultichainNativeAsset = exports.MultichainNetwork = exports.NETWORK_ASSETS_MAP = exports.TRANSACTIONS_CHECK_INTERVALS = exports.MultichainTransactionsController = void 0;
4
4
  var MultichainTransactionsController_1 = require("./MultichainTransactionsController.cjs");
5
5
  Object.defineProperty(exports, "MultichainTransactionsController", { enumerable: true, get: function () { return MultichainTransactionsController_1.MultichainTransactionsController; } });
6
6
  var constants_1 = require("./constants.cjs");
7
+ Object.defineProperty(exports, "TRANSACTIONS_CHECK_INTERVALS", { enumerable: true, get: function () { return constants_1.TRANSACTIONS_CHECK_INTERVALS; } });
7
8
  Object.defineProperty(exports, "NETWORK_ASSETS_MAP", { enumerable: true, get: function () { return constants_1.NETWORK_ASSETS_MAP; } });
8
9
  Object.defineProperty(exports, "MultichainNetwork", { enumerable: true, get: function () { return constants_1.MultichainNetwork; } });
9
10
  Object.defineProperty(exports, "MultichainNativeAsset", { enumerable: true, get: function () { return constants_1.MultichainNativeAsset; } });
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,2FAAsF;AAA7E,oJAAA,gCAAgC,OAAA;AAMzC,6CAIqB;AAHnB,+GAAA,kBAAkB,OAAA;AAClB,8GAAA,iBAAiB,OAAA;AACjB,kHAAA,qBAAqB,OAAA","sourcesContent":["export { MultichainTransactionsController } from './MultichainTransactionsController';\nexport type {\n MultichainTransactionsControllerState,\n PaginationOptions,\n TransactionStateEntry,\n} from './MultichainTransactionsController';\nexport {\n NETWORK_ASSETS_MAP,\n MultichainNetwork,\n MultichainNativeAsset,\n} from './constants';\n"]}
1
+ {"version":3,"file":"index.cjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,2FAAsF;AAA7E,oJAAA,gCAAgC,OAAA;AAMzC,6CAKqB;AAJnB,yHAAA,4BAA4B,OAAA;AAC5B,+GAAA,kBAAkB,OAAA;AAClB,8GAAA,iBAAiB,OAAA;AACjB,kHAAA,qBAAqB,OAAA","sourcesContent":["export { MultichainTransactionsController } from './MultichainTransactionsController';\nexport type {\n MultichainTransactionsControllerState,\n PaginationOptions,\n TransactionStateEntry,\n} from './MultichainTransactionsController';\nexport {\n TRANSACTIONS_CHECK_INTERVALS,\n NETWORK_ASSETS_MAP,\n MultichainNetwork,\n MultichainNativeAsset,\n} from './constants';\n"]}
package/dist/index.d.cts CHANGED
@@ -1,4 +1,4 @@
1
1
  export { MultichainTransactionsController } from "./MultichainTransactionsController.cjs";
2
2
  export type { MultichainTransactionsControllerState, PaginationOptions, TransactionStateEntry, } from "./MultichainTransactionsController.cjs";
3
- export { NETWORK_ASSETS_MAP, MultichainNetwork, MultichainNativeAsset, } from "./constants.cjs";
3
+ export { TRANSACTIONS_CHECK_INTERVALS, NETWORK_ASSETS_MAP, MultichainNetwork, MultichainNativeAsset, } from "./constants.cjs";
4
4
  //# sourceMappingURL=index.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gCAAgC,EAAE,+CAA2C;AACtF,YAAY,EACV,qCAAqC,EACrC,iBAAiB,EACjB,qBAAqB,GACtB,+CAA2C;AAC5C,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,GACtB,wBAAoB"}
1
+ {"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gCAAgC,EAAE,+CAA2C;AACtF,YAAY,EACV,qCAAqC,EACrC,iBAAiB,EACjB,qBAAqB,GACtB,+CAA2C;AAC5C,OAAO,EACL,4BAA4B,EAC5B,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,GACtB,wBAAoB"}
package/dist/index.d.mts CHANGED
@@ -1,4 +1,4 @@
1
1
  export { MultichainTransactionsController } from "./MultichainTransactionsController.mjs";
2
2
  export type { MultichainTransactionsControllerState, PaginationOptions, TransactionStateEntry, } from "./MultichainTransactionsController.mjs";
3
- export { NETWORK_ASSETS_MAP, MultichainNetwork, MultichainNativeAsset, } from "./constants.mjs";
3
+ export { TRANSACTIONS_CHECK_INTERVALS, NETWORK_ASSETS_MAP, MultichainNetwork, MultichainNativeAsset, } from "./constants.mjs";
4
4
  //# sourceMappingURL=index.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gCAAgC,EAAE,+CAA2C;AACtF,YAAY,EACV,qCAAqC,EACrC,iBAAiB,EACjB,qBAAqB,GACtB,+CAA2C;AAC5C,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,GACtB,wBAAoB"}
1
+ {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gCAAgC,EAAE,+CAA2C;AACtF,YAAY,EACV,qCAAqC,EACrC,iBAAiB,EACjB,qBAAqB,GACtB,+CAA2C;AAC5C,OAAO,EACL,4BAA4B,EAC5B,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,GACtB,wBAAoB"}
package/dist/index.mjs CHANGED
@@ -1,3 +1,3 @@
1
1
  export { MultichainTransactionsController } from "./MultichainTransactionsController.mjs";
2
- export { NETWORK_ASSETS_MAP, MultichainNetwork, MultichainNativeAsset } from "./constants.mjs";
2
+ export { TRANSACTIONS_CHECK_INTERVALS, NETWORK_ASSETS_MAP, MultichainNetwork, MultichainNativeAsset } from "./constants.mjs";
3
3
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gCAAgC,EAAE,+CAA2C;AAMtF,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,EACtB,wBAAoB","sourcesContent":["export { MultichainTransactionsController } from './MultichainTransactionsController';\nexport type {\n MultichainTransactionsControllerState,\n PaginationOptions,\n TransactionStateEntry,\n} from './MultichainTransactionsController';\nexport {\n NETWORK_ASSETS_MAP,\n MultichainNetwork,\n MultichainNativeAsset,\n} from './constants';\n"]}
1
+ {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gCAAgC,EAAE,+CAA2C;AAMtF,OAAO,EACL,4BAA4B,EAC5B,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,EACtB,wBAAoB","sourcesContent":["export { MultichainTransactionsController } from './MultichainTransactionsController';\nexport type {\n MultichainTransactionsControllerState,\n PaginationOptions,\n TransactionStateEntry,\n} from './MultichainTransactionsController';\nexport {\n TRANSACTIONS_CHECK_INTERVALS,\n NETWORK_ASSETS_MAP,\n MultichainNetwork,\n MultichainNativeAsset,\n} from './constants';\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@metamask-previews/multichain-transactions-controller",
3
- "version": "0.1.0-preview-2a6578b3",
3
+ "version": "0.1.0-preview-99939da3",
4
4
  "description": "This package is responsible for getting transactions from our Bitcoin and Solana snaps",
5
5
  "keywords": [
6
6
  "MetaMask",
@@ -48,13 +48,13 @@
48
48
  },
49
49
  "dependencies": {
50
50
  "@metamask/base-controller": "^7.1.1",
51
- "@metamask/keyring-api": "^17.0.0",
51
+ "@metamask/keyring-api": "^16.1.0",
52
52
  "@metamask/keyring-internal-api": "^4.0.1",
53
53
  "@metamask/keyring-snap-client": "^3.0.3",
54
54
  "@metamask/polling-controller": "^12.0.2",
55
- "@metamask/snaps-controllers": "^9.19.0",
56
- "@metamask/snaps-sdk": "^6.17.1",
57
- "@metamask/snaps-utils": "^8.10.0",
55
+ "@metamask/snaps-controllers": "^9.10.0",
56
+ "@metamask/snaps-sdk": "^6.16.0",
57
+ "@metamask/snaps-utils": "^8.9.0",
58
58
  "@metamask/utils": "^11.1.0",
59
59
  "@types/uuid": "^8.3.0",
60
60
  "immer": "^9.0.6",
@@ -74,7 +74,7 @@
74
74
  },
75
75
  "peerDependencies": {
76
76
  "@metamask/accounts-controller": "^22.0.0",
77
- "@metamask/snaps-controllers": "^9.19.0"
77
+ "@metamask/snaps-controllers": "^9.10.0"
78
78
  },
79
79
  "engines": {
80
80
  "node": "^18.18 || >=20"