@metamask-previews/assets-controllers 109.2.2-preview-1bd5239bf → 109.2.2-preview-e82188855
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 +0 -4
- package/dist/MultichainAssetsController/MultichainAssetsController.cjs +6 -23
- package/dist/MultichainAssetsController/MultichainAssetsController.cjs.map +1 -1
- package/dist/MultichainAssetsController/MultichainAssetsController.d.cts +1 -16
- package/dist/MultichainAssetsController/MultichainAssetsController.d.cts.map +1 -1
- package/dist/MultichainAssetsController/MultichainAssetsController.d.mts +1 -16
- package/dist/MultichainAssetsController/MultichainAssetsController.d.mts.map +1 -1
- package/dist/MultichainAssetsController/MultichainAssetsController.mjs +6 -23
- package/dist/MultichainAssetsController/MultichainAssetsController.mjs.map +1 -1
- package/dist/MultichainBalancesController/MultichainBalancesController.cjs +16 -62
- package/dist/MultichainBalancesController/MultichainBalancesController.cjs.map +1 -1
- package/dist/MultichainBalancesController/MultichainBalancesController.d.cts +5 -3
- package/dist/MultichainBalancesController/MultichainBalancesController.d.cts.map +1 -1
- package/dist/MultichainBalancesController/MultichainBalancesController.d.mts +5 -3
- package/dist/MultichainBalancesController/MultichainBalancesController.d.mts.map +1 -1
- package/dist/MultichainBalancesController/MultichainBalancesController.mjs +16 -62
- package/dist/MultichainBalancesController/MultichainBalancesController.mjs.map +1 -1
- package/dist/MultichainBalancesController/index.cjs.map +1 -1
- package/dist/MultichainBalancesController/index.d.cts +1 -1
- package/dist/MultichainBalancesController/index.d.cts.map +1 -1
- package/dist/MultichainBalancesController/index.d.mts +1 -1
- package/dist/MultichainBalancesController/index.d.mts.map +1 -1
- package/dist/MultichainBalancesController/index.mjs.map +1 -1
- package/dist/selectors/token-selectors.cjs +0 -3
- package/dist/selectors/token-selectors.cjs.map +1 -1
- package/dist/selectors/token-selectors.d.cts +25 -10
- package/dist/selectors/token-selectors.d.cts.map +1 -1
- package/dist/selectors/token-selectors.d.mts +25 -10
- package/dist/selectors/token-selectors.d.mts.map +1 -1
- package/dist/selectors/token-selectors.mjs +0 -3
- package/dist/selectors/token-selectors.mjs.map +1 -1
- package/package.json +1 -1
- package/dist/MultichainBalancesController/account-asset-info.cjs +0 -118
- package/dist/MultichainBalancesController/account-asset-info.cjs.map +0 -1
- package/dist/MultichainBalancesController/account-asset-info.d.cts +0 -82
- package/dist/MultichainBalancesController/account-asset-info.d.cts.map +0 -1
- package/dist/MultichainBalancesController/account-asset-info.d.mts +0 -82
- package/dist/MultichainBalancesController/account-asset-info.d.mts.map +0 -1
- package/dist/MultichainBalancesController/account-asset-info.mjs +0 -110
- package/dist/MultichainBalancesController/account-asset-info.mjs.map +0 -1
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
import { HandlerType } from "@metamask/snaps-utils";
|
|
2
|
-
import { parseCaipAssetType } from "@metamask/utils";
|
|
3
|
-
/** Snap clientRequest method for per-(account, asset) enrichment data. */
|
|
4
|
-
export const GET_ACCOUNT_ASSET_INFO_CLIENT_METHOD = 'getAccountAssetInfo';
|
|
5
|
-
/**
|
|
6
|
-
* Chains whose wallet snap implements {@link GET_ACCOUNT_ASSET_INFO_CLIENT_METHOD}.
|
|
7
|
-
*/
|
|
8
|
-
export const ACCOUNT_ASSET_INFO_ENRICHMENT_BY_CHAIN = {
|
|
9
|
-
'stellar:pubnet': true,
|
|
10
|
-
'stellar:testnet': true,
|
|
11
|
-
};
|
|
12
|
-
/**
|
|
13
|
-
* Returns whether the given chain supports snap account-asset enrichment.
|
|
14
|
-
*
|
|
15
|
-
* @param chainId - CAIP-2 chain identifier.
|
|
16
|
-
* @returns True when enrichment is configured for the chain.
|
|
17
|
-
*/
|
|
18
|
-
export function isAccountAssetInfoEnrichmentAvailable(chainId) {
|
|
19
|
-
return ACCOUNT_ASSET_INFO_ENRICHMENT_BY_CHAIN[chainId] === true;
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Filters asset ids to those on a chain that supports account-asset enrichment.
|
|
23
|
-
*
|
|
24
|
-
* @param assetIds - CAIP-19 asset types to filter.
|
|
25
|
-
* @param chainId - Expected chain for enrichment (caller-provided scope).
|
|
26
|
-
* @returns Asset ids on the given chain when enrichment is available.
|
|
27
|
-
*/
|
|
28
|
-
export function filterAssetsForAccountAssetEnrichment(assetIds, chainId) {
|
|
29
|
-
if (!isAccountAssetInfoEnrichmentAvailable(chainId)) {
|
|
30
|
-
return [];
|
|
31
|
-
}
|
|
32
|
-
return assetIds.filter((assetId) => {
|
|
33
|
-
try {
|
|
34
|
-
return parseCaipAssetType(assetId).chainId === chainId;
|
|
35
|
-
}
|
|
36
|
-
catch {
|
|
37
|
-
return false;
|
|
38
|
-
}
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* Builds a snap client request for `getAccountAssetInfo`.
|
|
43
|
-
*
|
|
44
|
-
* @param snapId - Wallet snap id.
|
|
45
|
-
* @param params - Account, chain scope, and assets to resolve.
|
|
46
|
-
* @param params.accountId - Account id passed to the snap client request.
|
|
47
|
-
* @param params.scope - CAIP-2 chain id for enrichment.
|
|
48
|
-
* @param params.assets - CAIP-19 assets to resolve.
|
|
49
|
-
* @returns Payload for `SnapController:handleRequest`.
|
|
50
|
-
*/
|
|
51
|
-
export function createGetAccountAssetInfoClientRequest(snapId, params) {
|
|
52
|
-
return {
|
|
53
|
-
snapId,
|
|
54
|
-
origin: 'metamask',
|
|
55
|
-
handler: HandlerType.OnClientRequest,
|
|
56
|
-
request: {
|
|
57
|
-
jsonrpc: '2.0',
|
|
58
|
-
method: GET_ACCOUNT_ASSET_INFO_CLIENT_METHOD,
|
|
59
|
-
params,
|
|
60
|
-
},
|
|
61
|
-
};
|
|
62
|
-
}
|
|
63
|
-
/**
|
|
64
|
-
* Calls the snap `getAccountAssetInfo` client request handler.
|
|
65
|
-
*
|
|
66
|
-
* @param handleSnapRequest - SnapController handleRequest messenger action.
|
|
67
|
-
* @param options - Request parameters.
|
|
68
|
-
* @param options.accountId - Account id.
|
|
69
|
-
* @param options.snapId - Wallet snap id.
|
|
70
|
-
* @param options.chainId - CAIP-2 chain id.
|
|
71
|
-
* @param options.assets - CAIP-19 assets to resolve.
|
|
72
|
-
* @returns Per-asset enrichment fields, or undefined on failure.
|
|
73
|
-
*/
|
|
74
|
-
export async function fetchAccountAssetInfoFromSnap(handleSnapRequest, { accountId, snapId, chainId, assets, }) {
|
|
75
|
-
if (assets.length === 0) {
|
|
76
|
-
return undefined;
|
|
77
|
-
}
|
|
78
|
-
try {
|
|
79
|
-
return (await handleSnapRequest(createGetAccountAssetInfoClientRequest(snapId, {
|
|
80
|
-
accountId,
|
|
81
|
-
scope: chainId,
|
|
82
|
-
assets,
|
|
83
|
-
})));
|
|
84
|
-
}
|
|
85
|
-
catch {
|
|
86
|
-
return undefined;
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
/**
|
|
90
|
-
* Combines snap balance rows with optional per-asset enrichment fields.
|
|
91
|
-
*
|
|
92
|
-
* @param assetIds - Assets to include in the result.
|
|
93
|
-
* @param balances - Balance rows keyed by asset id.
|
|
94
|
-
* @param enrichment - Optional snap enrichment keyed by asset id.
|
|
95
|
-
* @returns Per-asset balance rows with merged `accountAssetInfo` when present.
|
|
96
|
-
*/
|
|
97
|
-
export function buildBalanceRowsWithAccountAssetInfo(assetIds, balances, enrichment) {
|
|
98
|
-
return Object.fromEntries(assetIds.map((assetId) => {
|
|
99
|
-
const balance = balances[assetId] ?? { amount: '0', unit: '' };
|
|
100
|
-
const accountAssetInfo = enrichment?.[assetId];
|
|
101
|
-
return [
|
|
102
|
-
assetId,
|
|
103
|
-
{
|
|
104
|
-
...balance,
|
|
105
|
-
...(accountAssetInfo === undefined ? {} : { accountAssetInfo }),
|
|
106
|
-
},
|
|
107
|
-
];
|
|
108
|
-
}));
|
|
109
|
-
}
|
|
110
|
-
//# sourceMappingURL=account-asset-info.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"account-asset-info.mjs","sourceRoot":"","sources":["../../src/MultichainBalancesController/account-asset-info.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,8BAA8B;AAEpD,OAAO,EAAE,kBAAkB,EAAE,wBAAwB;AAErD,0EAA0E;AAC1E,MAAM,CAAC,MAAM,oCAAoC,GAC/C,qBAA8B,CAAC;AAqBjC;;GAEG;AACH,MAAM,CAAC,MAAM,sCAAsC,GAE/C;IACF,gBAAgB,EAAE,IAAI;IACtB,iBAAiB,EAAE,IAAI;CACxB,CAAC;AAOF;;;;;GAKG;AACH,MAAM,UAAU,qCAAqC,CACnD,OAAoB;IAEpB,OAAO,sCAAsC,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;AAClE,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,qCAAqC,CACnD,QAAyB,EACzB,OAAoB;IAEpB,IAAI,CAAC,qCAAqC,CAAC,OAAO,CAAC,EAAE,CAAC;QACpD,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;QACjC,IAAI,CAAC;YACH,OAAO,kBAAkB,CAAC,OAAO,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC;QACzD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,sCAAsC,CACpD,MAAc,EACd,MAIC;IAED,OAAO;QACL,MAAM;QACN,MAAM,EAAE,UAAU;QAClB,OAAO,EAAE,WAAW,CAAC,eAAe;QACpC,OAAO,EAAE;YACP,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,oCAAoC;YAC5C,MAAM;SACP;KACF,CAAC;AACJ,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,6BAA6B,CACjD,iBAA0C,EAC1C,EACE,SAAS,EACT,MAAM,EACN,OAAO,EACP,MAAM,GAMP;IAED,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,CAAC;QACH,OAAO,CAAC,MAAM,iBAAiB,CAC7B,sCAAsC,CAAC,MAAM,EAAE;YAC7C,SAAS;YACT,KAAK,EAAE,OAAO;YACd,MAAM;SACP,CAAC,CACH,CAAgC,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,oCAAoC,CAClD,QAAyB,EACzB,QAAwC,EACxC,UAAwC;IAExC,OAAO,MAAM,CAAC,WAAW,CACvB,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;QACvB,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;QAC/D,MAAM,gBAAgB,GAAG,UAAU,EAAE,CAAC,OAAO,CAAC,CAAC;QAE/C,OAAO;YACL,OAAO;YACP;gBACE,GAAG,OAAO;gBACV,GAAG,CAAC,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAAC;aAChE;SACF,CAAC;IACJ,CAAC,CAAC,CACH,CAAC;AACJ,CAAC","sourcesContent":["import type { Balance } from '@metamask/keyring-api';\nimport type { SnapController } from '@metamask/snaps-controllers';\nimport type { SnapId } from '@metamask/snaps-sdk';\nimport { HandlerType } from '@metamask/snaps-utils';\nimport type { CaipAssetType, CaipChainId } from '@metamask/utils';\nimport { parseCaipAssetType } from '@metamask/utils';\n\n/** Snap clientRequest method for per-(account, asset) enrichment data. */\nexport const GET_ACCOUNT_ASSET_INFO_CLIENT_METHOD =\n 'getAccountAssetInfo' as const;\n\n/** Optional per-asset fields returned by snap enrichment (chain-specific semantics). */\nexport type AccountAssetInfo = {\n limit?: string;\n authorized?: boolean;\n sponsored?: boolean;\n};\n\nexport type GetAccountAssetInfoResponse = Record<\n CaipAssetType,\n AccountAssetInfo\n>;\n\n/** Per-asset balance row; `accountAssetInfo` carries chain-specific snap enrichment fields. */\nexport type MultichainAccountBalance = {\n amount: string;\n unit: string;\n accountAssetInfo?: AccountAssetInfo;\n};\n\n/**\n * Chains whose wallet snap implements {@link GET_ACCOUNT_ASSET_INFO_CLIENT_METHOD}.\n */\nexport const ACCOUNT_ASSET_INFO_ENRICHMENT_BY_CHAIN: Partial<\n Record<CaipChainId, boolean>\n> = {\n 'stellar:pubnet': true,\n 'stellar:testnet': true,\n};\n\n/** Caller shape for `SnapController:handleRequest`. */\nexport type SnapHandleRequestCaller = (\n params: Parameters<SnapController['handleRequest']>[0],\n) => Promise<unknown>;\n\n/**\n * Returns whether the given chain supports snap account-asset enrichment.\n *\n * @param chainId - CAIP-2 chain identifier.\n * @returns True when enrichment is configured for the chain.\n */\nexport function isAccountAssetInfoEnrichmentAvailable(\n chainId: CaipChainId,\n): boolean {\n return ACCOUNT_ASSET_INFO_ENRICHMENT_BY_CHAIN[chainId] === true;\n}\n\n/**\n * Filters asset ids to those on a chain that supports account-asset enrichment.\n *\n * @param assetIds - CAIP-19 asset types to filter.\n * @param chainId - Expected chain for enrichment (caller-provided scope).\n * @returns Asset ids on the given chain when enrichment is available.\n */\nexport function filterAssetsForAccountAssetEnrichment(\n assetIds: CaipAssetType[],\n chainId: CaipChainId,\n): CaipAssetType[] {\n if (!isAccountAssetInfoEnrichmentAvailable(chainId)) {\n return [];\n }\n return assetIds.filter((assetId) => {\n try {\n return parseCaipAssetType(assetId).chainId === chainId;\n } catch {\n return false;\n }\n });\n}\n\n/**\n * Builds a snap client request for `getAccountAssetInfo`.\n *\n * @param snapId - Wallet snap id.\n * @param params - Account, chain scope, and assets to resolve.\n * @param params.accountId - Account id passed to the snap client request.\n * @param params.scope - CAIP-2 chain id for enrichment.\n * @param params.assets - CAIP-19 assets to resolve.\n * @returns Payload for `SnapController:handleRequest`.\n */\nexport function createGetAccountAssetInfoClientRequest(\n snapId: SnapId,\n params: {\n accountId: string;\n scope: CaipChainId;\n assets: CaipAssetType[];\n },\n): Parameters<SnapController['handleRequest']>[0] {\n return {\n snapId,\n origin: 'metamask',\n handler: HandlerType.OnClientRequest,\n request: {\n jsonrpc: '2.0',\n method: GET_ACCOUNT_ASSET_INFO_CLIENT_METHOD,\n params,\n },\n };\n}\n\n/**\n * Calls the snap `getAccountAssetInfo` client request handler.\n *\n * @param handleSnapRequest - SnapController handleRequest messenger action.\n * @param options - Request parameters.\n * @param options.accountId - Account id.\n * @param options.snapId - Wallet snap id.\n * @param options.chainId - CAIP-2 chain id.\n * @param options.assets - CAIP-19 assets to resolve.\n * @returns Per-asset enrichment fields, or undefined on failure.\n */\nexport async function fetchAccountAssetInfoFromSnap(\n handleSnapRequest: SnapHandleRequestCaller,\n {\n accountId,\n snapId,\n chainId,\n assets,\n }: {\n accountId: string;\n snapId: SnapId;\n chainId: CaipChainId;\n assets: CaipAssetType[];\n },\n): Promise<GetAccountAssetInfoResponse | undefined> {\n if (assets.length === 0) {\n return undefined;\n }\n\n try {\n return (await handleSnapRequest(\n createGetAccountAssetInfoClientRequest(snapId, {\n accountId,\n scope: chainId,\n assets,\n }),\n )) as GetAccountAssetInfoResponse;\n } catch {\n return undefined;\n }\n}\n\n/**\n * Combines snap balance rows with optional per-asset enrichment fields.\n *\n * @param assetIds - Assets to include in the result.\n * @param balances - Balance rows keyed by asset id.\n * @param enrichment - Optional snap enrichment keyed by asset id.\n * @returns Per-asset balance rows with merged `accountAssetInfo` when present.\n */\nexport function buildBalanceRowsWithAccountAssetInfo(\n assetIds: CaipAssetType[],\n balances: Record<CaipAssetType, Balance>,\n enrichment?: GetAccountAssetInfoResponse,\n): Record<string, MultichainAccountBalance> {\n return Object.fromEntries(\n assetIds.map((assetId) => {\n const balance = balances[assetId] ?? { amount: '0', unit: '' };\n const accountAssetInfo = enrichment?.[assetId];\n\n return [\n assetId,\n {\n ...balance,\n ...(accountAssetInfo === undefined ? {} : { accountAssetInfo }),\n },\n ];\n }),\n );\n}\n"]}
|