@metamask/assets-controllers 45.1.1 → 46.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +35 -1
- package/dist/AccountTrackerController.d.cts +2 -2
- package/dist/AccountTrackerController.d.mts +2 -2
- package/dist/CurrencyRateController.d.cts +2 -2
- package/dist/CurrencyRateController.d.mts +2 -2
- package/dist/MultichainBalancesController/BalancesTracker.cjs +122 -0
- package/dist/MultichainBalancesController/BalancesTracker.cjs.map +1 -0
- package/dist/MultichainBalancesController/BalancesTracker.d.cts +54 -0
- package/dist/MultichainBalancesController/BalancesTracker.d.cts.map +1 -0
- package/dist/MultichainBalancesController/BalancesTracker.d.mts +54 -0
- package/dist/MultichainBalancesController/BalancesTracker.d.mts.map +1 -0
- package/dist/MultichainBalancesController/BalancesTracker.mjs +118 -0
- package/dist/MultichainBalancesController/BalancesTracker.mjs.map +1 -0
- package/dist/MultichainBalancesController/MultichainBalancesController.cjs +194 -0
- package/dist/MultichainBalancesController/MultichainBalancesController.cjs.map +1 -0
- package/dist/MultichainBalancesController/MultichainBalancesController.d.cts +94 -0
- package/dist/MultichainBalancesController/MultichainBalancesController.d.cts.map +1 -0
- package/dist/MultichainBalancesController/MultichainBalancesController.d.mts +94 -0
- package/dist/MultichainBalancesController/MultichainBalancesController.d.mts.map +1 -0
- package/dist/MultichainBalancesController/MultichainBalancesController.mjs +189 -0
- package/dist/MultichainBalancesController/MultichainBalancesController.mjs.map +1 -0
- package/dist/MultichainBalancesController/Poller.cjs +45 -0
- package/dist/MultichainBalancesController/Poller.cjs.map +1 -0
- package/dist/MultichainBalancesController/Poller.d.cts +7 -0
- package/dist/MultichainBalancesController/Poller.d.cts.map +1 -0
- package/dist/MultichainBalancesController/Poller.d.mts +7 -0
- package/dist/MultichainBalancesController/Poller.d.mts.map +1 -0
- package/dist/MultichainBalancesController/Poller.mjs +41 -0
- package/dist/MultichainBalancesController/Poller.mjs.map +1 -0
- package/dist/MultichainBalancesController/constants.cjs +45 -0
- package/dist/MultichainBalancesController/constants.cjs.map +1 -0
- package/dist/MultichainBalancesController/constants.d.cts +29 -0
- package/dist/MultichainBalancesController/constants.d.cts.map +1 -0
- package/dist/MultichainBalancesController/constants.d.mts +29 -0
- package/dist/MultichainBalancesController/constants.d.mts.map +1 -0
- package/dist/MultichainBalancesController/constants.mjs +42 -0
- package/dist/MultichainBalancesController/constants.mjs.map +1 -0
- package/dist/MultichainBalancesController/error.cjs +18 -0
- package/dist/MultichainBalancesController/error.cjs.map +1 -0
- package/dist/MultichainBalancesController/error.d.cts +7 -0
- package/dist/MultichainBalancesController/error.d.cts.map +1 -0
- package/dist/MultichainBalancesController/error.d.mts +7 -0
- package/dist/MultichainBalancesController/error.d.mts.map +1 -0
- package/dist/MultichainBalancesController/error.mjs +13 -0
- package/dist/MultichainBalancesController/error.mjs.map +1 -0
- package/dist/MultichainBalancesController/index.cjs +13 -0
- package/dist/MultichainBalancesController/index.cjs.map +1 -0
- package/dist/MultichainBalancesController/index.d.cts +5 -0
- package/dist/MultichainBalancesController/index.d.cts.map +1 -0
- package/dist/MultichainBalancesController/index.d.mts +5 -0
- package/dist/MultichainBalancesController/index.d.mts.map +1 -0
- package/dist/MultichainBalancesController/index.mjs +4 -0
- package/dist/MultichainBalancesController/index.mjs.map +1 -0
- package/dist/MultichainBalancesController/utils.cjs +73 -0
- package/dist/MultichainBalancesController/utils.cjs.map +1 -0
- package/dist/MultichainBalancesController/utils.d.cts +36 -0
- package/dist/MultichainBalancesController/utils.d.cts.map +1 -0
- package/dist/MultichainBalancesController/utils.d.mts +36 -0
- package/dist/MultichainBalancesController/utils.d.mts.map +1 -0
- package/dist/MultichainBalancesController/utils.mjs +66 -0
- package/dist/MultichainBalancesController/utils.mjs.map +1 -0
- package/dist/NftController.cjs.map +1 -1
- package/dist/NftController.mjs.map +1 -1
- package/dist/TokenBalancesController.d.cts +2 -2
- package/dist/TokenBalancesController.d.mts +2 -2
- package/dist/TokenDetectionController.d.cts +2 -2
- package/dist/TokenDetectionController.d.mts +2 -2
- package/dist/TokenListController.d.cts +2 -2
- package/dist/TokenListController.d.mts +2 -2
- package/dist/TokenRatesController.cjs.map +1 -1
- package/dist/TokenRatesController.d.cts +2 -2
- package/dist/TokenRatesController.d.mts +2 -2
- package/dist/TokenRatesController.mjs.map +1 -1
- package/dist/TokensController.cjs +6 -4
- package/dist/TokensController.cjs.map +1 -1
- package/dist/TokensController.d.cts.map +1 -1
- package/dist/TokensController.d.mts.map +1 -1
- package/dist/TokensController.mjs +6 -4
- package/dist/TokensController.mjs.map +1 -1
- package/dist/assetsUtil.cjs +16 -1
- package/dist/assetsUtil.cjs.map +1 -1
- package/dist/assetsUtil.d.cts +7 -0
- package/dist/assetsUtil.d.cts.map +1 -1
- package/dist/assetsUtil.d.mts +7 -0
- package/dist/assetsUtil.d.mts.map +1 -1
- package/dist/assetsUtil.mjs +14 -0
- package/dist/assetsUtil.mjs.map +1 -1
- package/dist/crypto-compare-service/crypto-compare.cjs +5 -2
- package/dist/crypto-compare-service/crypto-compare.cjs.map +1 -1
- package/dist/crypto-compare-service/crypto-compare.d.cts.map +1 -1
- package/dist/crypto-compare-service/crypto-compare.d.mts.map +1 -1
- package/dist/crypto-compare-service/crypto-compare.mjs +5 -2
- package/dist/crypto-compare-service/crypto-compare.mjs.map +1 -1
- package/dist/index.cjs +10 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3 -1
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +3 -1
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +4 -1
- package/dist/index.mjs.map +1 -1
- package/dist/multicall.cjs +16 -3
- package/dist/multicall.cjs.map +1 -1
- package/dist/multicall.d.cts.map +1 -1
- package/dist/multicall.d.mts.map +1 -1
- package/dist/multicall.mjs +16 -3
- package/dist/multicall.mjs.map +1 -1
- package/package.json +17 -11
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MultichainBalancesController.mjs","sourceRoot":"","sources":["../../src/MultichainBalancesController/MultichainBalancesController.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n AccountsControllerAccountAddedEvent,\n AccountsControllerAccountRemovedEvent,\n AccountsControllerListMultichainAccountsAction,\n} from '@metamask/accounts-controller';\nimport {\n BaseController,\n type ControllerGetStateAction,\n type ControllerStateChangeEvent,\n type RestrictedControllerMessenger,\n} from '@metamask/base-controller';\nimport { isEvmAccountType } from '@metamask/keyring-api';\nimport type { Balance, CaipAssetType } from '@metamask/keyring-api';\nimport type { InternalAccount } from '@metamask/keyring-internal-api';\nimport { KeyringClient } from '@metamask/keyring-snap-client';\nimport type { HandleSnapRequest } from '@metamask/snaps-controllers';\nimport type { SnapId } from '@metamask/snaps-sdk';\nimport { HandlerType } from '@metamask/snaps-utils';\nimport type { Json, JsonRpcRequest } from '@metamask/utils';\nimport type { Draft } from 'immer';\n\nimport { BalancesTracker, NETWORK_ASSETS_MAP } from '.';\nimport { getScopeForAccount, getBlockTimeForAccount } from './utils';\n\nconst controllerName = 'MultichainBalancesController';\n\n/**\n * State used by the {@link MultichainBalancesController} to cache account balances.\n */\nexport type MultichainBalancesControllerState = {\n balances: {\n [account: string]: {\n [asset: string]: {\n amount: string;\n unit: string;\n };\n };\n };\n};\n\n/**\n * Constructs the default {@link MultichainBalancesController} state. This allows\n * consumers to provide a partial state object when initializing the controller\n * and also helps in constructing complete state objects for this controller in\n * tests.\n *\n * @returns The default {@link MultichainBalancesController} state.\n */\nexport function getDefaultMultichainBalancesControllerState(): MultichainBalancesControllerState {\n return { balances: {} };\n}\n\n/**\n * Returns the state of the {@link MultichainBalancesController}.\n */\nexport type MultichainBalancesControllerGetStateAction =\n ControllerGetStateAction<\n typeof controllerName,\n MultichainBalancesControllerState\n >;\n\n/**\n * Updates the balances of all supported accounts.\n */\nexport type MultichainBalancesControllerUpdateBalancesAction = {\n type: `${typeof controllerName}:updateBalances`;\n handler: MultichainBalancesController['updateBalances'];\n};\n\n/**\n * Event emitted when the state of the {@link MultichainBalancesController} changes.\n */\nexport type MultichainBalancesControllerStateChange =\n ControllerStateChangeEvent<\n typeof controllerName,\n MultichainBalancesControllerState\n >;\n\n/**\n * Actions exposed by the {@link MultichainBalancesController}.\n */\nexport type MultichainBalancesControllerActions =\n | MultichainBalancesControllerGetStateAction\n | MultichainBalancesControllerUpdateBalancesAction;\n\n/**\n * Events emitted by {@link MultichainBalancesController}.\n */\nexport type MultichainBalancesControllerEvents =\n MultichainBalancesControllerStateChange;\n\n/**\n * Actions that this controller is allowed to call.\n */\ntype AllowedActions =\n | HandleSnapRequest\n | AccountsControllerListMultichainAccountsAction;\n\n/**\n * Events that this controller is allowed to subscribe.\n */\ntype AllowedEvents =\n | AccountsControllerAccountAddedEvent\n | AccountsControllerAccountRemovedEvent;\n\n/**\n * Messenger type for the MultichainBalancesController.\n */\nexport type MultichainBalancesControllerMessenger =\n RestrictedControllerMessenger<\n typeof controllerName,\n MultichainBalancesControllerActions | AllowedActions,\n MultichainBalancesControllerEvents | AllowedEvents,\n AllowedActions['type'],\n AllowedEvents['type']\n >;\n\n/**\n * {@link MultichainBalancesController}'s metadata.\n *\n * This allows us to choose if fields of the state should be persisted or not\n * using the `persist` flag; and if they can be sent to Sentry or not, using\n * the `anonymous` flag.\n */\nconst balancesControllerMetadata = {\n balances: {\n persist: true,\n anonymous: false,\n },\n};\n\n/**\n * The MultichainBalancesController is responsible for fetching and caching account\n * balances.\n */\nexport class MultichainBalancesController extends BaseController<\n typeof controllerName,\n MultichainBalancesControllerState,\n MultichainBalancesControllerMessenger\n> {\n #tracker: BalancesTracker;\n\n constructor({\n messenger,\n state = {},\n }: {\n messenger: MultichainBalancesControllerMessenger;\n state?: Partial<MultichainBalancesControllerState>;\n }) {\n super({\n messenger,\n name: controllerName,\n metadata: balancesControllerMetadata,\n state: {\n ...getDefaultMultichainBalancesControllerState(),\n ...state,\n },\n });\n\n this.#tracker = new BalancesTracker(\n async (accountId: string) => await this.#updateBalance(accountId),\n );\n\n // Register all non-EVM accounts into the tracker\n for (const account of this.#listAccounts()) {\n if (this.#isNonEvmAccount(account)) {\n this.#tracker.track(account.id, getBlockTimeForAccount(account.type));\n }\n }\n\n this.messagingSystem.subscribe(\n 'AccountsController:accountAdded',\n (account) => this.#handleOnAccountAdded(account),\n );\n this.messagingSystem.subscribe(\n 'AccountsController:accountRemoved',\n (account) => this.#handleOnAccountRemoved(account),\n );\n }\n\n /**\n * Starts the polling process.\n */\n start(): void {\n this.#tracker.start();\n }\n\n /**\n * Stops the polling process.\n */\n stop(): void {\n this.#tracker.stop();\n }\n\n /**\n * Updates the balances of one account. This method doesn't return\n * anything, but it updates the state of the controller.\n *\n * @param accountId - The account ID.\n */\n async updateBalance(accountId: string): Promise<void> {\n // NOTE: No need to track the account here, since we start tracking those when\n // the \"AccountsController:accountAdded\" is fired.\n await this.#tracker.updateBalance(accountId);\n }\n\n /**\n * Updates the balances of all supported accounts. This method doesn't return\n * anything, but it updates the state of the controller.\n */\n async updateBalances(): Promise<void> {\n await this.#tracker.updateBalances();\n }\n\n /**\n * Lists the multichain accounts coming from the `AccountsController`.\n *\n * @returns A list of multichain accounts.\n */\n #listMultichainAccounts(): InternalAccount[] {\n return this.messagingSystem.call(\n 'AccountsController:listMultichainAccounts',\n );\n }\n\n /**\n * Lists the accounts that we should get balances for.\n *\n * @returns A list of accounts that we should get balances for.\n */\n #listAccounts(): InternalAccount[] {\n const accounts = this.#listMultichainAccounts();\n\n return accounts.filter((account) => this.#isNonEvmAccount(account));\n }\n\n /**\n * Get a non-EVM account from its ID.\n *\n * @param accountId - The account ID.\n * @returns The non-EVM account.\n */\n #getAccount(accountId: string): InternalAccount {\n const account: InternalAccount | undefined = this.#listAccounts().find(\n (multichainAccount) => multichainAccount.id === accountId,\n );\n\n if (!account) {\n throw new Error(`Unknown account: ${accountId}`);\n }\n\n return account;\n }\n\n /**\n * Updates the balances of one account. This method doesn't return\n * anything, but it updates the state of the controller.\n *\n * @param accountId - The account ID.\n */\n\n async #updateBalance(accountId: string) {\n const account = this.#getAccount(accountId);\n\n if (account.metadata.snap) {\n const scope = getScopeForAccount(account);\n const assetTypes = NETWORK_ASSETS_MAP[scope];\n\n const accountBalance = await this.#getBalances(\n account.id,\n account.metadata.snap.id,\n assetTypes,\n );\n\n this.update((state: Draft<MultichainBalancesControllerState>) => {\n state.balances[accountId] = accountBalance;\n });\n }\n }\n\n /**\n * Checks for non-EVM accounts.\n *\n * @param account - The new account to be checked.\n * @returns True if the account is a non-EVM account, false otherwise.\n */\n #isNonEvmAccount(account: InternalAccount): boolean {\n return (\n !isEvmAccountType(account.type) &&\n // Non-EVM accounts are backed by a Snap for now\n account.metadata.snap !== undefined\n );\n }\n\n /**\n * Handles changes when a new account has been added.\n *\n * @param account - The new account being added.\n */\n async #handleOnAccountAdded(account: InternalAccount): Promise<void> {\n if (!this.#isNonEvmAccount(account)) {\n // Nothing to do here for EVM accounts\n return;\n }\n\n this.#tracker.track(account.id, getBlockTimeForAccount(account.type));\n // NOTE: Unfortunately, we cannot update the balance right away here, because\n // messenger's events are running synchronously and fetching the balance is\n // asynchronous.\n // Updating the balance here would resume at some point but the event emitter\n // will not `await` this (so we have no real control \"when\" the balance will\n // really be updated), see:\n // - https://github.com/MetaMask/core/blob/v213.0.0/packages/accounts-controller/src/AccountsController.ts#L1036-L1039\n }\n\n /**\n * Handles changes when a new account has been removed.\n *\n * @param accountId - The account ID being removed.\n */\n async #handleOnAccountRemoved(accountId: string): Promise<void> {\n if (this.#tracker.isTracked(accountId)) {\n this.#tracker.untrack(accountId);\n }\n\n if (accountId in this.state.balances) {\n this.update((state: Draft<MultichainBalancesControllerState>) => {\n delete state.balances[accountId];\n });\n }\n }\n\n /**\n * Get the balances for an account.\n *\n * @param accountId - ID of the account to get balances for.\n * @param snapId - ID of the Snap which manages the account.\n * @param assetTypes - Array of asset types to get balances for.\n * @returns A map of asset types to balances.\n */\n async #getBalances(\n accountId: string,\n snapId: string,\n assetTypes: CaipAssetType[],\n ): Promise<Record<CaipAssetType, Balance>> {\n return await this.#getClient(snapId).getAccountBalances(\n accountId,\n assetTypes,\n );\n }\n\n /**\n * Gets a `KeyringClient` for a Snap.\n *\n * @param snapId - ID of the Snap to get the client for.\n * @returns A `KeyringClient` for the Snap.\n */\n #getClient(snapId: string): KeyringClient {\n return new KeyringClient({\n send: async (request: JsonRpcRequest) =>\n (await this.messagingSystem.call('SnapController:handleRequest', {\n snapId: snapId as SnapId,\n origin: 'metamask',\n handler: HandlerType.OnKeyringRequest,\n request,\n })) as Promise<Json>,\n });\n }\n}\n"]}
|
|
@@ -0,0 +1,45 @@
|
|
|
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
|
+
const error_1 = require("./error.cjs");
|
|
17
|
+
class Poller {
|
|
18
|
+
constructor(callback, interval) {
|
|
19
|
+
_Poller_interval.set(this, void 0);
|
|
20
|
+
_Poller_callback.set(this, void 0);
|
|
21
|
+
_Poller_handle.set(this, undefined);
|
|
22
|
+
__classPrivateFieldSet(this, _Poller_interval, interval, "f");
|
|
23
|
+
__classPrivateFieldSet(this, _Poller_callback, callback, "f");
|
|
24
|
+
}
|
|
25
|
+
start() {
|
|
26
|
+
if (__classPrivateFieldGet(this, _Poller_handle, "f")) {
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
__classPrivateFieldSet(this, _Poller_handle, setInterval(() => {
|
|
30
|
+
__classPrivateFieldGet(this, _Poller_callback, "f").call(this).catch((err) => {
|
|
31
|
+
console.error(new error_1.PollerError(err.message));
|
|
32
|
+
});
|
|
33
|
+
}, __classPrivateFieldGet(this, _Poller_interval, "f")), "f");
|
|
34
|
+
}
|
|
35
|
+
stop() {
|
|
36
|
+
if (!__classPrivateFieldGet(this, _Poller_handle, "f")) {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
clearInterval(__classPrivateFieldGet(this, _Poller_handle, "f"));
|
|
40
|
+
__classPrivateFieldSet(this, _Poller_handle, undefined, "f");
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
exports.Poller = Poller;
|
|
44
|
+
_Poller_interval = new WeakMap(), _Poller_callback = new WeakMap(), _Poller_handle = new WeakMap();
|
|
45
|
+
//# sourceMappingURL=Poller.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Poller.cjs","sourceRoot":"","sources":["../../src/MultichainBalancesController/Poller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,uCAAsC;AAEtC,MAAa,MAAM;IAOjB,YAAY,QAA6B,EAAE,QAAgB;QAN3D,mCAAkB;QAElB,mCAA+B;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,GAAG,EAAE;YAC9B,uBAAA,IAAI,wBAAU,MAAd,IAAI,CAAY,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBAC7B,OAAO,CAAC,KAAK,CAAC,IAAI,mBAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;YAC9C,CAAC,CAAC,CAAC;QACL,CAAC,EAAE,uBAAA,IAAI,wBAAU,CAAC,MAAA,CAAC;IACrB,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;AA/BD,wBA+BC","sourcesContent":["import { PollerError } from './error';\n\nexport class Poller {\n #interval: number;\n\n #callback: () => Promise<void>;\n\n #handle: NodeJS.Timeout | undefined = undefined;\n\n constructor(callback: () => Promise<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(() => {\n this.#callback().catch((err) => {\n console.error(new PollerError(err.message));\n });\n }, 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 @@
|
|
|
1
|
+
{"version":3,"file":"Poller.d.cts","sourceRoot":"","sources":["../../src/MultichainBalancesController/Poller.ts"],"names":[],"mappings":"AAEA,qBAAa,MAAM;;gBAOL,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM;IAK3D,KAAK;IAYL,IAAI;CAOL"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Poller.d.mts","sourceRoot":"","sources":["../../src/MultichainBalancesController/Poller.ts"],"names":[],"mappings":"AAEA,qBAAa,MAAM;;gBAOL,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM;IAK3D,KAAK;IAYL,IAAI;CAOL"}
|
|
@@ -0,0 +1,41 @@
|
|
|
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
|
+
import { PollerError } from "./error.mjs";
|
|
14
|
+
export class Poller {
|
|
15
|
+
constructor(callback, interval) {
|
|
16
|
+
_Poller_interval.set(this, void 0);
|
|
17
|
+
_Poller_callback.set(this, void 0);
|
|
18
|
+
_Poller_handle.set(this, undefined);
|
|
19
|
+
__classPrivateFieldSet(this, _Poller_interval, interval, "f");
|
|
20
|
+
__classPrivateFieldSet(this, _Poller_callback, callback, "f");
|
|
21
|
+
}
|
|
22
|
+
start() {
|
|
23
|
+
if (__classPrivateFieldGet(this, _Poller_handle, "f")) {
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
__classPrivateFieldSet(this, _Poller_handle, setInterval(() => {
|
|
27
|
+
__classPrivateFieldGet(this, _Poller_callback, "f").call(this).catch((err) => {
|
|
28
|
+
console.error(new PollerError(err.message));
|
|
29
|
+
});
|
|
30
|
+
}, __classPrivateFieldGet(this, _Poller_interval, "f")), "f");
|
|
31
|
+
}
|
|
32
|
+
stop() {
|
|
33
|
+
if (!__classPrivateFieldGet(this, _Poller_handle, "f")) {
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
clearInterval(__classPrivateFieldGet(this, _Poller_handle, "f"));
|
|
37
|
+
__classPrivateFieldSet(this, _Poller_handle, undefined, "f");
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
_Poller_interval = new WeakMap(), _Poller_callback = new WeakMap(), _Poller_handle = new WeakMap();
|
|
41
|
+
//# sourceMappingURL=Poller.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Poller.mjs","sourceRoot":"","sources":["../../src/MultichainBalancesController/Poller.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,WAAW,EAAE,oBAAgB;AAEtC,MAAM,OAAO,MAAM;IAOjB,YAAY,QAA6B,EAAE,QAAgB;QAN3D,mCAAkB;QAElB,mCAA+B;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,GAAG,EAAE;YAC9B,uBAAA,IAAI,wBAAU,MAAd,IAAI,CAAY,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBAC7B,OAAO,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;YAC9C,CAAC,CAAC,CAAC;QACL,CAAC,EAAE,uBAAA,IAAI,wBAAU,CAAC,MAAA,CAAC;IACrB,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":["import { PollerError } from './error';\n\nexport class Poller {\n #interval: number;\n\n #callback: () => Promise<void>;\n\n #handle: NodeJS.Timeout | undefined = undefined;\n\n constructor(callback: () => Promise<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(() => {\n this.#callback().catch((err) => {\n console.error(new PollerError(err.message));\n });\n }, 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,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NETWORK_ASSETS_MAP = exports.BALANCE_UPDATE_INTERVALS = exports.MultichainNativeAssets = exports.MultichainNetworks = void 0;
|
|
4
|
+
const keyring_api_1 = require("@metamask/keyring-api");
|
|
5
|
+
/**
|
|
6
|
+
* The network identifiers for supported networks in CAIP-2 format.
|
|
7
|
+
* Note: This is a temporary workaround until we have a more robust
|
|
8
|
+
* solution for network identifiers.
|
|
9
|
+
*/
|
|
10
|
+
var MultichainNetworks;
|
|
11
|
+
(function (MultichainNetworks) {
|
|
12
|
+
MultichainNetworks["Bitcoin"] = "bip122:000000000019d6689c085ae165831e93";
|
|
13
|
+
MultichainNetworks["BitcoinTestnet"] = "bip122:000000000933ea01ad0ee984209779ba";
|
|
14
|
+
MultichainNetworks["Solana"] = "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp";
|
|
15
|
+
MultichainNetworks["SolanaDevnet"] = "solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1";
|
|
16
|
+
MultichainNetworks["SolanaTestnet"] = "solana:4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z";
|
|
17
|
+
})(MultichainNetworks || (exports.MultichainNetworks = MultichainNetworks = {}));
|
|
18
|
+
var MultichainNativeAssets;
|
|
19
|
+
(function (MultichainNativeAssets) {
|
|
20
|
+
MultichainNativeAssets["Bitcoin"] = "bip122:000000000019d6689c085ae165831e93/slip44:0";
|
|
21
|
+
MultichainNativeAssets["BitcoinTestnet"] = "bip122:000000000933ea01ad0ee984209779ba/slip44:0";
|
|
22
|
+
MultichainNativeAssets["Solana"] = "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/slip44:501";
|
|
23
|
+
MultichainNativeAssets["SolanaDevnet"] = "solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1/slip44:501";
|
|
24
|
+
MultichainNativeAssets["SolanaTestnet"] = "solana:4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z/slip44:501";
|
|
25
|
+
})(MultichainNativeAssets || (exports.MultichainNativeAssets = MultichainNativeAssets = {}));
|
|
26
|
+
const BITCOIN_AVG_BLOCK_TIME = 10 * 60 * 1000; // 10 minutes in milliseconds
|
|
27
|
+
const SOLANA_AVG_BLOCK_TIME = 400; // 400 milliseconds
|
|
28
|
+
exports.BALANCE_UPDATE_INTERVALS = {
|
|
29
|
+
// NOTE: We set an interval of half the average block time for bitcoin
|
|
30
|
+
// to mitigate when our interval is de-synchronized with the actual block time.
|
|
31
|
+
[keyring_api_1.BtcAccountType.P2wpkh]: BITCOIN_AVG_BLOCK_TIME / 2,
|
|
32
|
+
[keyring_api_1.SolAccountType.DataAccount]: SOLANA_AVG_BLOCK_TIME,
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* Maps network identifiers to their corresponding native asset types.
|
|
36
|
+
* Each network is mapped to an array containing its native asset for consistency.
|
|
37
|
+
*/
|
|
38
|
+
exports.NETWORK_ASSETS_MAP = {
|
|
39
|
+
[MultichainNetworks.Solana]: [MultichainNativeAssets.Solana],
|
|
40
|
+
[MultichainNetworks.SolanaTestnet]: [MultichainNativeAssets.SolanaTestnet],
|
|
41
|
+
[MultichainNetworks.SolanaDevnet]: [MultichainNativeAssets.SolanaDevnet],
|
|
42
|
+
[MultichainNetworks.Bitcoin]: [MultichainNativeAssets.Bitcoin],
|
|
43
|
+
[MultichainNetworks.BitcoinTestnet]: [MultichainNativeAssets.BitcoinTestnet],
|
|
44
|
+
};
|
|
45
|
+
//# sourceMappingURL=constants.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.cjs","sourceRoot":"","sources":["../../src/MultichainBalancesController/constants.ts"],"names":[],"mappings":";;;AAAA,uDAAuE;AAEvE;;;;GAIG;AACH,IAAY,kBAMX;AAND,WAAY,kBAAkB;IAC5B,yEAAmD,CAAA;IACnD,gFAA0D,CAAA;IAC1D,wEAAkD,CAAA;IAClD,8EAAwD,CAAA;IACxD,+EAAyD,CAAA;AAC3D,CAAC,EANW,kBAAkB,kCAAlB,kBAAkB,QAM7B;AAED,IAAY,sBAMX;AAND,WAAY,sBAAsB;IAChC,sFAAkD,CAAA;IAClD,6FAAgE,CAAA;IAChE,uFAAkD,CAAA;IAClD,6FAA8D,CAAA;IAC9D,8FAAgE,CAAA;AAClE,CAAC,EANW,sBAAsB,sCAAtB,sBAAsB,QAMjC;AAED,MAAM,sBAAsB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,6BAA6B;AAC5E,MAAM,qBAAqB,GAAG,GAAG,CAAC,CAAC,mBAAmB;AAEzC,QAAA,wBAAwB,GAAG;IACtC,sEAAsE;IACtE,+EAA+E;IAC/E,CAAC,4BAAc,CAAC,MAAM,CAAC,EAAE,sBAAsB,GAAG,CAAC;IACnD,CAAC,4BAAc,CAAC,WAAW,CAAC,EAAE,qBAAqB;CACpD,CAAC;AAEF;;;GAGG;AACU,QAAA,kBAAkB,GAA6C;IAC1E,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC,sBAAsB,CAAC,MAAM,CAAC;IAC5D,CAAC,kBAAkB,CAAC,aAAa,CAAC,EAAE,CAAC,sBAAsB,CAAC,aAAa,CAAC;IAC1E,CAAC,kBAAkB,CAAC,YAAY,CAAC,EAAE,CAAC,sBAAsB,CAAC,YAAY,CAAC;IACxE,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC,sBAAsB,CAAC,OAAO,CAAC;IAC9D,CAAC,kBAAkB,CAAC,cAAc,CAAC,EAAE,CAAC,sBAAsB,CAAC,cAAc,CAAC;CAC7E,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 MultichainNetworks {\n Bitcoin = 'bip122:000000000019d6689c085ae165831e93',\n BitcoinTestnet = 'bip122:000000000933ea01ad0ee984209779ba',\n Solana = 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp',\n SolanaDevnet = 'solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1',\n SolanaTestnet = 'solana:4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z',\n}\n\nexport enum MultichainNativeAssets {\n Bitcoin = `${MultichainNetworks.Bitcoin}/slip44:0`,\n BitcoinTestnet = `${MultichainNetworks.BitcoinTestnet}/slip44:0`,\n Solana = `${MultichainNetworks.Solana}/slip44:501`,\n SolanaDevnet = `${MultichainNetworks.SolanaDevnet}/slip44:501`,\n SolanaTestnet = `${MultichainNetworks.SolanaTestnet}/slip44:501`,\n}\n\nconst BITCOIN_AVG_BLOCK_TIME = 10 * 60 * 1000; // 10 minutes in milliseconds\nconst SOLANA_AVG_BLOCK_TIME = 400; // 400 milliseconds\n\nexport const BALANCE_UPDATE_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]: BITCOIN_AVG_BLOCK_TIME / 2,\n [SolAccountType.DataAccount]: SOLANA_AVG_BLOCK_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, MultichainNativeAssets[]> = {\n [MultichainNetworks.Solana]: [MultichainNativeAssets.Solana],\n [MultichainNetworks.SolanaTestnet]: [MultichainNativeAssets.SolanaTestnet],\n [MultichainNetworks.SolanaDevnet]: [MultichainNativeAssets.SolanaDevnet],\n [MultichainNetworks.Bitcoin]: [MultichainNativeAssets.Bitcoin],\n [MultichainNetworks.BitcoinTestnet]: [MultichainNativeAssets.BitcoinTestnet],\n};\n"]}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The network identifiers for supported networks in CAIP-2 format.
|
|
3
|
+
* Note: This is a temporary workaround until we have a more robust
|
|
4
|
+
* solution for network identifiers.
|
|
5
|
+
*/
|
|
6
|
+
export declare enum MultichainNetworks {
|
|
7
|
+
Bitcoin = "bip122:000000000019d6689c085ae165831e93",
|
|
8
|
+
BitcoinTestnet = "bip122:000000000933ea01ad0ee984209779ba",
|
|
9
|
+
Solana = "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",
|
|
10
|
+
SolanaDevnet = "solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1",
|
|
11
|
+
SolanaTestnet = "solana:4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z"
|
|
12
|
+
}
|
|
13
|
+
export declare enum MultichainNativeAssets {
|
|
14
|
+
Bitcoin = "bip122:000000000019d6689c085ae165831e93/slip44:0",
|
|
15
|
+
BitcoinTestnet = "bip122:000000000933ea01ad0ee984209779ba/slip44:0",
|
|
16
|
+
Solana = "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/slip44:501",
|
|
17
|
+
SolanaDevnet = "solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1/slip44:501",
|
|
18
|
+
SolanaTestnet = "solana:4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z/slip44:501"
|
|
19
|
+
}
|
|
20
|
+
export declare const BALANCE_UPDATE_INTERVALS: {
|
|
21
|
+
"bip122:p2wpkh": number;
|
|
22
|
+
"solana:data-account": number;
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* Maps network identifiers to their corresponding native asset types.
|
|
26
|
+
* Each network is mapped to an array containing its native asset for consistency.
|
|
27
|
+
*/
|
|
28
|
+
export declare const NETWORK_ASSETS_MAP: Record<string, MultichainNativeAssets[]>;
|
|
29
|
+
//# sourceMappingURL=constants.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.cts","sourceRoot":"","sources":["../../src/MultichainBalancesController/constants.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,oBAAY,kBAAkB;IAC5B,OAAO,4CAA4C;IACnD,cAAc,4CAA4C;IAC1D,MAAM,4CAA4C;IAClD,YAAY,4CAA4C;IACxD,aAAa,4CAA4C;CAC1D;AAED,oBAAY,sBAAsB;IAChC,OAAO,qDAA2C;IAClD,cAAc,qDAAkD;IAChE,MAAM,uDAA4C;IAClD,YAAY,uDAAkD;IAC9D,aAAa,uDAAmD;CACjE;AAKD,eAAO,MAAM,wBAAwB;;;CAKpC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,EAAE,CAMvE,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The network identifiers for supported networks in CAIP-2 format.
|
|
3
|
+
* Note: This is a temporary workaround until we have a more robust
|
|
4
|
+
* solution for network identifiers.
|
|
5
|
+
*/
|
|
6
|
+
export declare enum MultichainNetworks {
|
|
7
|
+
Bitcoin = "bip122:000000000019d6689c085ae165831e93",
|
|
8
|
+
BitcoinTestnet = "bip122:000000000933ea01ad0ee984209779ba",
|
|
9
|
+
Solana = "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",
|
|
10
|
+
SolanaDevnet = "solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1",
|
|
11
|
+
SolanaTestnet = "solana:4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z"
|
|
12
|
+
}
|
|
13
|
+
export declare enum MultichainNativeAssets {
|
|
14
|
+
Bitcoin = "bip122:000000000019d6689c085ae165831e93/slip44:0",
|
|
15
|
+
BitcoinTestnet = "bip122:000000000933ea01ad0ee984209779ba/slip44:0",
|
|
16
|
+
Solana = "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/slip44:501",
|
|
17
|
+
SolanaDevnet = "solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1/slip44:501",
|
|
18
|
+
SolanaTestnet = "solana:4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z/slip44:501"
|
|
19
|
+
}
|
|
20
|
+
export declare const BALANCE_UPDATE_INTERVALS: {
|
|
21
|
+
"bip122:p2wpkh": number;
|
|
22
|
+
"solana:data-account": number;
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* Maps network identifiers to their corresponding native asset types.
|
|
26
|
+
* Each network is mapped to an array containing its native asset for consistency.
|
|
27
|
+
*/
|
|
28
|
+
export declare const NETWORK_ASSETS_MAP: Record<string, MultichainNativeAssets[]>;
|
|
29
|
+
//# sourceMappingURL=constants.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.mts","sourceRoot":"","sources":["../../src/MultichainBalancesController/constants.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,oBAAY,kBAAkB;IAC5B,OAAO,4CAA4C;IACnD,cAAc,4CAA4C;IAC1D,MAAM,4CAA4C;IAClD,YAAY,4CAA4C;IACxD,aAAa,4CAA4C;CAC1D;AAED,oBAAY,sBAAsB;IAChC,OAAO,qDAA2C;IAClD,cAAc,qDAAkD;IAChE,MAAM,uDAA4C;IAClD,YAAY,uDAAkD;IAC9D,aAAa,uDAAmD;CACjE;AAKD,eAAO,MAAM,wBAAwB;;;CAKpC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,EAAE,CAMvE,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { BtcAccountType, SolAccountType } from "@metamask/keyring-api";
|
|
2
|
+
/**
|
|
3
|
+
* The network identifiers for supported networks in CAIP-2 format.
|
|
4
|
+
* Note: This is a temporary workaround until we have a more robust
|
|
5
|
+
* solution for network identifiers.
|
|
6
|
+
*/
|
|
7
|
+
export var MultichainNetworks;
|
|
8
|
+
(function (MultichainNetworks) {
|
|
9
|
+
MultichainNetworks["Bitcoin"] = "bip122:000000000019d6689c085ae165831e93";
|
|
10
|
+
MultichainNetworks["BitcoinTestnet"] = "bip122:000000000933ea01ad0ee984209779ba";
|
|
11
|
+
MultichainNetworks["Solana"] = "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp";
|
|
12
|
+
MultichainNetworks["SolanaDevnet"] = "solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1";
|
|
13
|
+
MultichainNetworks["SolanaTestnet"] = "solana:4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z";
|
|
14
|
+
})(MultichainNetworks || (MultichainNetworks = {}));
|
|
15
|
+
export var MultichainNativeAssets;
|
|
16
|
+
(function (MultichainNativeAssets) {
|
|
17
|
+
MultichainNativeAssets["Bitcoin"] = "bip122:000000000019d6689c085ae165831e93/slip44:0";
|
|
18
|
+
MultichainNativeAssets["BitcoinTestnet"] = "bip122:000000000933ea01ad0ee984209779ba/slip44:0";
|
|
19
|
+
MultichainNativeAssets["Solana"] = "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/slip44:501";
|
|
20
|
+
MultichainNativeAssets["SolanaDevnet"] = "solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1/slip44:501";
|
|
21
|
+
MultichainNativeAssets["SolanaTestnet"] = "solana:4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z/slip44:501";
|
|
22
|
+
})(MultichainNativeAssets || (MultichainNativeAssets = {}));
|
|
23
|
+
const BITCOIN_AVG_BLOCK_TIME = 10 * 60 * 1000; // 10 minutes in milliseconds
|
|
24
|
+
const SOLANA_AVG_BLOCK_TIME = 400; // 400 milliseconds
|
|
25
|
+
export const BALANCE_UPDATE_INTERVALS = {
|
|
26
|
+
// NOTE: We set an interval of half the average block time for bitcoin
|
|
27
|
+
// to mitigate when our interval is de-synchronized with the actual block time.
|
|
28
|
+
[BtcAccountType.P2wpkh]: BITCOIN_AVG_BLOCK_TIME / 2,
|
|
29
|
+
[SolAccountType.DataAccount]: SOLANA_AVG_BLOCK_TIME,
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* Maps network identifiers to their corresponding native asset types.
|
|
33
|
+
* Each network is mapped to an array containing its native asset for consistency.
|
|
34
|
+
*/
|
|
35
|
+
export const NETWORK_ASSETS_MAP = {
|
|
36
|
+
[MultichainNetworks.Solana]: [MultichainNativeAssets.Solana],
|
|
37
|
+
[MultichainNetworks.SolanaTestnet]: [MultichainNativeAssets.SolanaTestnet],
|
|
38
|
+
[MultichainNetworks.SolanaDevnet]: [MultichainNativeAssets.SolanaDevnet],
|
|
39
|
+
[MultichainNetworks.Bitcoin]: [MultichainNativeAssets.Bitcoin],
|
|
40
|
+
[MultichainNetworks.BitcoinTestnet]: [MultichainNativeAssets.BitcoinTestnet],
|
|
41
|
+
};
|
|
42
|
+
//# sourceMappingURL=constants.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.mjs","sourceRoot":"","sources":["../../src/MultichainBalancesController/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,8BAA8B;AAEvE;;;;GAIG;AACH,MAAM,CAAN,IAAY,kBAMX;AAND,WAAY,kBAAkB;IAC5B,yEAAmD,CAAA;IACnD,gFAA0D,CAAA;IAC1D,wEAAkD,CAAA;IAClD,8EAAwD,CAAA;IACxD,+EAAyD,CAAA;AAC3D,CAAC,EANW,kBAAkB,KAAlB,kBAAkB,QAM7B;AAED,MAAM,CAAN,IAAY,sBAMX;AAND,WAAY,sBAAsB;IAChC,sFAAkD,CAAA;IAClD,6FAAgE,CAAA;IAChE,uFAAkD,CAAA;IAClD,6FAA8D,CAAA;IAC9D,8FAAgE,CAAA;AAClE,CAAC,EANW,sBAAsB,KAAtB,sBAAsB,QAMjC;AAED,MAAM,sBAAsB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,6BAA6B;AAC5E,MAAM,qBAAqB,GAAG,GAAG,CAAC,CAAC,mBAAmB;AAEtD,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,sEAAsE;IACtE,+EAA+E;IAC/E,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,sBAAsB,GAAG,CAAC;IACnD,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,qBAAqB;CACpD,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAA6C;IAC1E,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC,sBAAsB,CAAC,MAAM,CAAC;IAC5D,CAAC,kBAAkB,CAAC,aAAa,CAAC,EAAE,CAAC,sBAAsB,CAAC,aAAa,CAAC;IAC1E,CAAC,kBAAkB,CAAC,YAAY,CAAC,EAAE,CAAC,sBAAsB,CAAC,YAAY,CAAC;IACxE,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC,sBAAsB,CAAC,OAAO,CAAC;IAC9D,CAAC,kBAAkB,CAAC,cAAc,CAAC,EAAE,CAAC,sBAAsB,CAAC,cAAc,CAAC;CAC7E,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 MultichainNetworks {\n Bitcoin = 'bip122:000000000019d6689c085ae165831e93',\n BitcoinTestnet = 'bip122:000000000933ea01ad0ee984209779ba',\n Solana = 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp',\n SolanaDevnet = 'solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1',\n SolanaTestnet = 'solana:4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z',\n}\n\nexport enum MultichainNativeAssets {\n Bitcoin = `${MultichainNetworks.Bitcoin}/slip44:0`,\n BitcoinTestnet = `${MultichainNetworks.BitcoinTestnet}/slip44:0`,\n Solana = `${MultichainNetworks.Solana}/slip44:501`,\n SolanaDevnet = `${MultichainNetworks.SolanaDevnet}/slip44:501`,\n SolanaTestnet = `${MultichainNetworks.SolanaTestnet}/slip44:501`,\n}\n\nconst BITCOIN_AVG_BLOCK_TIME = 10 * 60 * 1000; // 10 minutes in milliseconds\nconst SOLANA_AVG_BLOCK_TIME = 400; // 400 milliseconds\n\nexport const BALANCE_UPDATE_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]: BITCOIN_AVG_BLOCK_TIME / 2,\n [SolAccountType.DataAccount]: SOLANA_AVG_BLOCK_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, MultichainNativeAssets[]> = {\n [MultichainNetworks.Solana]: [MultichainNativeAssets.Solana],\n [MultichainNetworks.SolanaTestnet]: [MultichainNativeAssets.SolanaTestnet],\n [MultichainNetworks.SolanaDevnet]: [MultichainNativeAssets.SolanaDevnet],\n [MultichainNetworks.Bitcoin]: [MultichainNativeAssets.Bitcoin],\n [MultichainNetworks.BitcoinTestnet]: [MultichainNativeAssets.BitcoinTestnet],\n};\n"]}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PollerError = exports.BalancesTrackerError = void 0;
|
|
4
|
+
class BalancesTrackerError extends Error {
|
|
5
|
+
constructor(message) {
|
|
6
|
+
super(message);
|
|
7
|
+
this.name = 'BalancesTrackerError';
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
exports.BalancesTrackerError = BalancesTrackerError;
|
|
11
|
+
class PollerError extends Error {
|
|
12
|
+
constructor(message) {
|
|
13
|
+
super(message);
|
|
14
|
+
this.name = 'PollerError';
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
exports.PollerError = PollerError;
|
|
18
|
+
//# sourceMappingURL=error.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error.cjs","sourceRoot":"","sources":["../../src/MultichainBalancesController/error.ts"],"names":[],"mappings":";;;AAAA,MAAa,oBAAqB,SAAQ,KAAK;IAC7C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;IACrC,CAAC;CACF;AALD,oDAKC;AAED,MAAa,WAAY,SAAQ,KAAK;IACpC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;IAC5B,CAAC;CACF;AALD,kCAKC","sourcesContent":["export class BalancesTrackerError extends Error {\n constructor(message: string) {\n super(message);\n this.name = 'BalancesTrackerError';\n }\n}\n\nexport class PollerError extends Error {\n constructor(message: string) {\n super(message);\n this.name = 'PollerError';\n }\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error.d.cts","sourceRoot":"","sources":["../../src/MultichainBalancesController/error.ts"],"names":[],"mappings":"AAAA,qBAAa,oBAAqB,SAAQ,KAAK;gBACjC,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,WAAY,SAAQ,KAAK;gBACxB,OAAO,EAAE,MAAM;CAI5B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error.d.mts","sourceRoot":"","sources":["../../src/MultichainBalancesController/error.ts"],"names":[],"mappings":"AAAA,qBAAa,oBAAqB,SAAQ,KAAK;gBACjC,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,WAAY,SAAQ,KAAK;gBACxB,OAAO,EAAE,MAAM;CAI5B"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export class BalancesTrackerError extends Error {
|
|
2
|
+
constructor(message) {
|
|
3
|
+
super(message);
|
|
4
|
+
this.name = 'BalancesTrackerError';
|
|
5
|
+
}
|
|
6
|
+
}
|
|
7
|
+
export class PollerError extends Error {
|
|
8
|
+
constructor(message) {
|
|
9
|
+
super(message);
|
|
10
|
+
this.name = 'PollerError';
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=error.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error.mjs","sourceRoot":"","sources":["../../src/MultichainBalancesController/error.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAC7C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;IACrC,CAAC;CACF;AAED,MAAM,OAAO,WAAY,SAAQ,KAAK;IACpC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;IAC5B,CAAC;CACF","sourcesContent":["export class BalancesTrackerError extends Error {\n constructor(message: string) {\n super(message);\n this.name = 'BalancesTrackerError';\n }\n}\n\nexport class PollerError extends Error {\n constructor(message: string) {\n super(message);\n this.name = 'PollerError';\n }\n}\n"]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MultichainNativeAssets = exports.MultichainNetworks = exports.NETWORK_ASSETS_MAP = exports.BALANCE_UPDATE_INTERVALS = exports.MultichainBalancesController = exports.BalancesTracker = void 0;
|
|
4
|
+
var BalancesTracker_1 = require("./BalancesTracker.cjs");
|
|
5
|
+
Object.defineProperty(exports, "BalancesTracker", { enumerable: true, get: function () { return BalancesTracker_1.BalancesTracker; } });
|
|
6
|
+
var MultichainBalancesController_1 = require("./MultichainBalancesController.cjs");
|
|
7
|
+
Object.defineProperty(exports, "MultichainBalancesController", { enumerable: true, get: function () { return MultichainBalancesController_1.MultichainBalancesController; } });
|
|
8
|
+
var constants_1 = require("./constants.cjs");
|
|
9
|
+
Object.defineProperty(exports, "BALANCE_UPDATE_INTERVALS", { enumerable: true, get: function () { return constants_1.BALANCE_UPDATE_INTERVALS; } });
|
|
10
|
+
Object.defineProperty(exports, "NETWORK_ASSETS_MAP", { enumerable: true, get: function () { return constants_1.NETWORK_ASSETS_MAP; } });
|
|
11
|
+
Object.defineProperty(exports, "MultichainNetworks", { enumerable: true, get: function () { return constants_1.MultichainNetworks; } });
|
|
12
|
+
Object.defineProperty(exports, "MultichainNativeAssets", { enumerable: true, get: function () { return constants_1.MultichainNativeAssets; } });
|
|
13
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sourceRoot":"","sources":["../../src/MultichainBalancesController/index.ts"],"names":[],"mappings":";;;AAAA,yDAAoD;AAA3C,kHAAA,eAAe,OAAA;AACxB,mFAA8E;AAArE,4IAAA,4BAA4B,OAAA;AACrC,6CAKqB;AAJnB,qHAAA,wBAAwB,OAAA;AACxB,+GAAA,kBAAkB,OAAA;AAClB,+GAAA,kBAAkB,OAAA;AAClB,mHAAA,sBAAsB,OAAA","sourcesContent":["export { BalancesTracker } from './BalancesTracker';\nexport { MultichainBalancesController } from './MultichainBalancesController';\nexport {\n BALANCE_UPDATE_INTERVALS,\n NETWORK_ASSETS_MAP,\n MultichainNetworks,\n MultichainNativeAssets,\n} from './constants';\nexport type {\n MultichainBalancesControllerState,\n MultichainBalancesControllerGetStateAction,\n MultichainBalancesControllerUpdateBalancesAction,\n MultichainBalancesControllerStateChange,\n MultichainBalancesControllerActions,\n MultichainBalancesControllerEvents,\n MultichainBalancesControllerMessenger,\n} from './MultichainBalancesController';\n"]}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { BalancesTracker } from "./BalancesTracker.cjs";
|
|
2
|
+
export { MultichainBalancesController } from "./MultichainBalancesController.cjs";
|
|
3
|
+
export { BALANCE_UPDATE_INTERVALS, NETWORK_ASSETS_MAP, MultichainNetworks, MultichainNativeAssets, } from "./constants.cjs";
|
|
4
|
+
export type { MultichainBalancesControllerState, MultichainBalancesControllerGetStateAction, MultichainBalancesControllerUpdateBalancesAction, MultichainBalancesControllerStateChange, MultichainBalancesControllerActions, MultichainBalancesControllerEvents, MultichainBalancesControllerMessenger, } from "./MultichainBalancesController.cjs";
|
|
5
|
+
//# sourceMappingURL=index.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../../src/MultichainBalancesController/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,8BAA0B;AACpD,OAAO,EAAE,4BAA4B,EAAE,2CAAuC;AAC9E,OAAO,EACL,wBAAwB,EACxB,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,GACvB,wBAAoB;AACrB,YAAY,EACV,iCAAiC,EACjC,0CAA0C,EAC1C,gDAAgD,EAChD,uCAAuC,EACvC,mCAAmC,EACnC,kCAAkC,EAClC,qCAAqC,GACtC,2CAAuC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { BalancesTracker } from "./BalancesTracker.mjs";
|
|
2
|
+
export { MultichainBalancesController } from "./MultichainBalancesController.mjs";
|
|
3
|
+
export { BALANCE_UPDATE_INTERVALS, NETWORK_ASSETS_MAP, MultichainNetworks, MultichainNativeAssets, } from "./constants.mjs";
|
|
4
|
+
export type { MultichainBalancesControllerState, MultichainBalancesControllerGetStateAction, MultichainBalancesControllerUpdateBalancesAction, MultichainBalancesControllerStateChange, MultichainBalancesControllerActions, MultichainBalancesControllerEvents, MultichainBalancesControllerMessenger, } from "./MultichainBalancesController.mjs";
|
|
5
|
+
//# sourceMappingURL=index.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../src/MultichainBalancesController/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,8BAA0B;AACpD,OAAO,EAAE,4BAA4B,EAAE,2CAAuC;AAC9E,OAAO,EACL,wBAAwB,EACxB,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,GACvB,wBAAoB;AACrB,YAAY,EACV,iCAAiC,EACjC,0CAA0C,EAC1C,gDAAgD,EAChD,uCAAuC,EACvC,mCAAmC,EACnC,kCAAkC,EAClC,qCAAqC,GACtC,2CAAuC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { BalancesTracker } from "./BalancesTracker.mjs";
|
|
2
|
+
export { MultichainBalancesController } from "./MultichainBalancesController.mjs";
|
|
3
|
+
export { BALANCE_UPDATE_INTERVALS, NETWORK_ASSETS_MAP, MultichainNetworks, MultichainNativeAssets } from "./constants.mjs";
|
|
4
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../src/MultichainBalancesController/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,8BAA0B;AACpD,OAAO,EAAE,4BAA4B,EAAE,2CAAuC;AAC9E,OAAO,EACL,wBAAwB,EACxB,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,EACvB,wBAAoB","sourcesContent":["export { BalancesTracker } from './BalancesTracker';\nexport { MultichainBalancesController } from './MultichainBalancesController';\nexport {\n BALANCE_UPDATE_INTERVALS,\n NETWORK_ASSETS_MAP,\n MultichainNetworks,\n MultichainNativeAssets,\n} from './constants';\nexport type {\n MultichainBalancesControllerState,\n MultichainBalancesControllerGetStateAction,\n MultichainBalancesControllerUpdateBalancesAction,\n MultichainBalancesControllerStateChange,\n MultichainBalancesControllerActions,\n MultichainBalancesControllerEvents,\n MultichainBalancesControllerMessenger,\n} from './MultichainBalancesController';\n"]}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getBlockTimeForAccount = exports.getScopeForAccount = exports.getScopeForSolAddress = exports.getScopeForBtcAddress = void 0;
|
|
4
|
+
const keyring_api_1 = require("@metamask/keyring-api");
|
|
5
|
+
const bitcoin_address_validation_1 = require("bitcoin-address-validation");
|
|
6
|
+
const constants_1 = require("./constants.cjs");
|
|
7
|
+
/**
|
|
8
|
+
* Gets the scope for a specific and supported Bitcoin account.
|
|
9
|
+
* Note: This is a temporary method and will be replaced by a more robust solution
|
|
10
|
+
* once the new `account.scopes` is available in the `@metamask/keyring-api` module.
|
|
11
|
+
*
|
|
12
|
+
* @param account - Bitcoin account
|
|
13
|
+
* @returns The scope for the given account.
|
|
14
|
+
*/
|
|
15
|
+
const getScopeForBtcAddress = (account) => {
|
|
16
|
+
if ((0, bitcoin_address_validation_1.validate)(account.address, bitcoin_address_validation_1.Network.mainnet)) {
|
|
17
|
+
return constants_1.MultichainNetworks.Bitcoin;
|
|
18
|
+
}
|
|
19
|
+
if ((0, bitcoin_address_validation_1.validate)(account.address, bitcoin_address_validation_1.Network.testnet)) {
|
|
20
|
+
return constants_1.MultichainNetworks.BitcoinTestnet;
|
|
21
|
+
}
|
|
22
|
+
throw new Error(`Invalid Bitcoin address: ${account.address}`);
|
|
23
|
+
};
|
|
24
|
+
exports.getScopeForBtcAddress = getScopeForBtcAddress;
|
|
25
|
+
/**
|
|
26
|
+
* Gets the scope for a specific and supported Solana account.
|
|
27
|
+
* Note: This is a temporary method and will be replaced by a more robust solution
|
|
28
|
+
* once the new `account.scopes` is available in the `keyring-api`.
|
|
29
|
+
*
|
|
30
|
+
* @param account - Solana account
|
|
31
|
+
* @returns The scope for the given account.
|
|
32
|
+
*/
|
|
33
|
+
const getScopeForSolAddress = (account) => {
|
|
34
|
+
// For Solana accounts, we know we have a `scope` on the account's `options` bag.
|
|
35
|
+
if (!account.options.scope) {
|
|
36
|
+
throw new Error('Solana account scope is undefined');
|
|
37
|
+
}
|
|
38
|
+
return account.options.scope;
|
|
39
|
+
};
|
|
40
|
+
exports.getScopeForSolAddress = getScopeForSolAddress;
|
|
41
|
+
/**
|
|
42
|
+
* Get the scope for a given address.
|
|
43
|
+
* Note: This is a temporary method and will be replaced by a more robust solution
|
|
44
|
+
* once the new `account.scopes` is available in the `keyring-api`.
|
|
45
|
+
*
|
|
46
|
+
* @param account - The account to get the scope for.
|
|
47
|
+
* @returns The scope for the given account.
|
|
48
|
+
*/
|
|
49
|
+
const getScopeForAccount = (account) => {
|
|
50
|
+
switch (account.type) {
|
|
51
|
+
case keyring_api_1.BtcAccountType.P2wpkh:
|
|
52
|
+
return (0, exports.getScopeForBtcAddress)(account);
|
|
53
|
+
case keyring_api_1.SolAccountType.DataAccount:
|
|
54
|
+
return (0, exports.getScopeForSolAddress)(account);
|
|
55
|
+
default:
|
|
56
|
+
throw new Error(`Unsupported non-EVM account type: ${account.type}`);
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
exports.getScopeForAccount = getScopeForAccount;
|
|
60
|
+
/**
|
|
61
|
+
* Gets the block time for a given account.
|
|
62
|
+
*
|
|
63
|
+
* @param accountType - The account type to get the block time for.
|
|
64
|
+
* @returns The block time for the account.
|
|
65
|
+
*/
|
|
66
|
+
const getBlockTimeForAccount = (accountType) => {
|
|
67
|
+
if (accountType in constants_1.BALANCE_UPDATE_INTERVALS) {
|
|
68
|
+
return constants_1.BALANCE_UPDATE_INTERVALS[accountType];
|
|
69
|
+
}
|
|
70
|
+
throw new Error(`Unsupported account type for balance tracking: ${accountType}`);
|
|
71
|
+
};
|
|
72
|
+
exports.getBlockTimeForAccount = getBlockTimeForAccount;
|
|
73
|
+
//# sourceMappingURL=utils.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.cjs","sourceRoot":"","sources":["../../src/MultichainBalancesController/utils.ts"],"names":[],"mappings":";;;AAAA,uDAAuE;AAEvE,2EAA+D;AAE/D,+CAA2E;AAE3E;;;;;;;GAOG;AACI,MAAM,qBAAqB,GAAG,CAAC,OAAwB,EAAU,EAAE;IACxE,IAAI,IAAA,qCAAQ,EAAC,OAAO,CAAC,OAAO,EAAE,oCAAO,CAAC,OAAO,CAAC,EAAE;QAC9C,OAAO,8BAAkB,CAAC,OAAO,CAAC;KACnC;IAED,IAAI,IAAA,qCAAQ,EAAC,OAAO,CAAC,OAAO,EAAE,oCAAO,CAAC,OAAO,CAAC,EAAE;QAC9C,OAAO,8BAAkB,CAAC,cAAc,CAAC;KAC1C;IAED,MAAM,IAAI,KAAK,CAAC,4BAA4B,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;AACjE,CAAC,CAAC;AAVW,QAAA,qBAAqB,yBAUhC;AAEF;;;;;;;GAOG;AACI,MAAM,qBAAqB,GAAG,CAAC,OAAwB,EAAU,EAAE;IACxE,iFAAiF;IACjF,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE;QAC1B,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;KACtD;IACD,OAAO,OAAO,CAAC,OAAO,CAAC,KAAe,CAAC;AACzC,CAAC,CAAC;AANW,QAAA,qBAAqB,yBAMhC;AAEF;;;;;;;GAOG;AACI,MAAM,kBAAkB,GAAG,CAAC,OAAwB,EAAU,EAAE;IACrE,QAAQ,OAAO,CAAC,IAAI,EAAE;QACpB,KAAK,4BAAc,CAAC,MAAM;YACxB,OAAO,IAAA,6BAAqB,EAAC,OAAO,CAAC,CAAC;QACxC,KAAK,4BAAc,CAAC,WAAW;YAC7B,OAAO,IAAA,6BAAqB,EAAC,OAAO,CAAC,CAAC;QACxC;YACE,MAAM,IAAI,KAAK,CAAC,qCAAqC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;KACxE;AACH,CAAC,CAAC;AATW,QAAA,kBAAkB,sBAS7B;AAEF;;;;;GAKG;AACI,MAAM,sBAAsB,GAAG,CAAC,WAAmB,EAAU,EAAE;IACpE,IAAI,WAAW,IAAI,oCAAwB,EAAE;QAC3C,OAAO,oCAAwB,CAC7B,WAAoD,CACrD,CAAC;KACH;IACD,MAAM,IAAI,KAAK,CACb,kDAAkD,WAAW,EAAE,CAChE,CAAC;AACJ,CAAC,CAAC;AATW,QAAA,sBAAsB,0BASjC","sourcesContent":["import { BtcAccountType, SolAccountType } from '@metamask/keyring-api';\nimport type { InternalAccount } from '@metamask/keyring-internal-api';\nimport { validate, Network } from 'bitcoin-address-validation';\n\nimport { MultichainNetworks, BALANCE_UPDATE_INTERVALS } from './constants';\n\n/**\n * Gets the scope for a specific and supported Bitcoin account.\n * Note: This is a temporary method and will be replaced by a more robust solution\n * once the new `account.scopes` is available in the `@metamask/keyring-api` module.\n *\n * @param account - Bitcoin account\n * @returns The scope for the given account.\n */\nexport const getScopeForBtcAddress = (account: InternalAccount): string => {\n if (validate(account.address, Network.mainnet)) {\n return MultichainNetworks.Bitcoin;\n }\n\n if (validate(account.address, Network.testnet)) {\n return MultichainNetworks.BitcoinTestnet;\n }\n\n throw new Error(`Invalid Bitcoin address: ${account.address}`);\n};\n\n/**\n * Gets the scope for a specific and supported Solana account.\n * Note: This is a temporary method and will be replaced by a more robust solution\n * once the new `account.scopes` is available in the `keyring-api`.\n *\n * @param account - Solana account\n * @returns The scope for the given account.\n */\nexport const getScopeForSolAddress = (account: InternalAccount): string => {\n // For Solana accounts, we know we have a `scope` on the account's `options` bag.\n if (!account.options.scope) {\n throw new Error('Solana account scope is undefined');\n }\n return account.options.scope as string;\n};\n\n/**\n * Get the scope for a given address.\n * Note: This is a temporary method and will be replaced by a more robust solution\n * once the new `account.scopes` is available in the `keyring-api`.\n *\n * @param account - The account to get the scope for.\n * @returns The scope for the given account.\n */\nexport const getScopeForAccount = (account: InternalAccount): string => {\n switch (account.type) {\n case BtcAccountType.P2wpkh:\n return getScopeForBtcAddress(account);\n case SolAccountType.DataAccount:\n return getScopeForSolAddress(account);\n default:\n throw new Error(`Unsupported non-EVM account type: ${account.type}`);\n }\n};\n\n/**\n * Gets the block time for a given account.\n *\n * @param accountType - The account type to get the block time for.\n * @returns The block time for the account.\n */\nexport const getBlockTimeForAccount = (accountType: string): number => {\n if (accountType in BALANCE_UPDATE_INTERVALS) {\n return BALANCE_UPDATE_INTERVALS[\n accountType as keyof typeof BALANCE_UPDATE_INTERVALS\n ];\n }\n throw new Error(\n `Unsupported account type for balance tracking: ${accountType}`,\n );\n};\n"]}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { InternalAccount } from "@metamask/keyring-internal-api";
|
|
2
|
+
/**
|
|
3
|
+
* Gets the scope for a specific and supported Bitcoin account.
|
|
4
|
+
* Note: This is a temporary method and will be replaced by a more robust solution
|
|
5
|
+
* once the new `account.scopes` is available in the `@metamask/keyring-api` module.
|
|
6
|
+
*
|
|
7
|
+
* @param account - Bitcoin account
|
|
8
|
+
* @returns The scope for the given account.
|
|
9
|
+
*/
|
|
10
|
+
export declare const getScopeForBtcAddress: (account: InternalAccount) => string;
|
|
11
|
+
/**
|
|
12
|
+
* Gets the scope for a specific and supported Solana account.
|
|
13
|
+
* Note: This is a temporary method and will be replaced by a more robust solution
|
|
14
|
+
* once the new `account.scopes` is available in the `keyring-api`.
|
|
15
|
+
*
|
|
16
|
+
* @param account - Solana account
|
|
17
|
+
* @returns The scope for the given account.
|
|
18
|
+
*/
|
|
19
|
+
export declare const getScopeForSolAddress: (account: InternalAccount) => string;
|
|
20
|
+
/**
|
|
21
|
+
* Get the scope for a given address.
|
|
22
|
+
* Note: This is a temporary method and will be replaced by a more robust solution
|
|
23
|
+
* once the new `account.scopes` is available in the `keyring-api`.
|
|
24
|
+
*
|
|
25
|
+
* @param account - The account to get the scope for.
|
|
26
|
+
* @returns The scope for the given account.
|
|
27
|
+
*/
|
|
28
|
+
export declare const getScopeForAccount: (account: InternalAccount) => string;
|
|
29
|
+
/**
|
|
30
|
+
* Gets the block time for a given account.
|
|
31
|
+
*
|
|
32
|
+
* @param accountType - The account type to get the block time for.
|
|
33
|
+
* @returns The block time for the account.
|
|
34
|
+
*/
|
|
35
|
+
export declare const getBlockTimeForAccount: (accountType: string) => number;
|
|
36
|
+
//# sourceMappingURL=utils.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.cts","sourceRoot":"","sources":["../../src/MultichainBalancesController/utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,uCAAuC;AAKtE;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB,YAAa,eAAe,KAAG,MAUhE,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB,YAAa,eAAe,KAAG,MAMhE,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,YAAa,eAAe,KAAG,MAS7D,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,gBAAiB,MAAM,KAAG,MAS5D,CAAC"}
|