{"version":3,"file":"AssetsProvider.cjs","sourceRoot":"","sources":["../../../src/providers/assets/AssetsProvider.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAWA;;GAEG;AACU,QAAA,oBAAoB,GAAG,gBAAyB,CAAC;AAiB9D,MAAa,cAAc;IAGzB,YAAY,EAAE,SAAS,EAA0C;QAFxD,4CAAoC;QAG3C,uBAAA,IAAI,6BAAc,SAAS,MAAA,CAAC;IAC9B,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,mBAAmB,CACvB,SAAoB,EACpB,OAAsB;QAEtB,OAAO,uBAAA,IAAI,iCAAW,CAAC,IAAI,CACzB,sCAAsC,EACtC,SAAS,EACT,OAAO,CACR,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,qBAAqB,CACzB,SAAoB,EACpB,QAAyB;QAIzB,OAAO,uBAAA,IAAI,iCAAW,CAAC,IAAI,CACzB,wCAAwC,EACxC,SAAS,EACT,QAAQ,CACT,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,uBAAuB,CAC3B,KAAkB,EAClB,SAAoB;QAIpB,OAAO,uBAAA,IAAI,iCAAW,CAAC,IAAI,CACzB,0CAA0C,EAC1C,SAAS,EACT,KAAK,CACN,CAAC;IACJ,CAAC;CACF;AAhED,wCAgEC","sourcesContent":["import type {\n  AccountId,\n  AssetsControllerGetAccountAssetByIDAction,\n  AssetsControllerGetAccountAssetsByIDsAction,\n  AssetsControllerGetAccountAssetsByScopeAction,\n  Caip19AssetId,\n} from '@metamask/assets-controller';\nimport type { Messenger } from '@metamask/messenger';\nimport { AsyncMessenger } from '@metamask/snaps-sdk';\nimport type { CaipChainId } from '@metamask/utils';\n\n/**\n * Namespace for the {@link AssetsProvider} messenger.\n */\nexport const ASSETS_PROVIDER_NAME = 'AssetsProvider' as const;\n\n/**\n * Actions from other messengers that {@link AssetsProvider} calls.\n */\nexport type AssetsProviderAllowedActions =\n  | AssetsControllerGetAccountAssetByIDAction\n  | AssetsControllerGetAccountAssetsByIDsAction\n  | AssetsControllerGetAccountAssetsByScopeAction;\n\n/**\n * Messenger restricted to actions consumed by {@link AssetsProvider}.\n */\nexport type AssetsProviderMessenger = AsyncMessenger<\n  Messenger<typeof ASSETS_PROVIDER_NAME, AssetsProviderAllowedActions>\n>;\n\nexport class AssetsProvider {\n  readonly #messenger: AssetsProviderMessenger;\n\n  constructor({ messenger }: { messenger: AssetsProviderMessenger }) {\n    this.#messenger = messenger;\n  }\n\n  /**\n   * Returns a single account asset by CAIP-19 ID, or `undefined` if missing.\n   *\n   * @param accountId - Keyring account ID.\n   * @param assetId - CAIP-19 asset ID.\n   * @returns Controller asset, or `undefined`.\n   */\n  async getAccountAssetByID(\n    accountId: AccountId,\n    assetId: Caip19AssetId,\n  ): Promise<ReturnType<AssetsControllerGetAccountAssetByIDAction['handler']>> {\n    return this.#messenger.call(\n      'AssetsController:getAccountAssetByID',\n      accountId,\n      assetId,\n    );\n  }\n\n  /**\n   * Returns account assets for the given CAIP-19 IDs, keyed by asset ID.\n   *\n   * @param accountId - Keyring account ID.\n   * @param assetIds - CAIP-19 asset IDs to resolve.\n   * @returns Map of asset ID → controller asset.\n   */\n  async getAccountAssetsByIDs(\n    accountId: AccountId,\n    assetIds: Caip19AssetId[],\n  ): Promise<\n    ReturnType<AssetsControllerGetAccountAssetsByIDsAction['handler']>\n  > {\n    return this.#messenger.call(\n      'AssetsController:getAccountAssetsByIDs',\n      accountId,\n      assetIds,\n    );\n  }\n\n  /**\n   * Returns controller-backed assets for an account on a chain.\n   *\n   * @param scope - CAIP-2 chain ID to filter controller results.\n   * @param accountId - Keyring account ID.\n   * @returns Controller assets keyed by CAIP-19 asset ID.\n   */\n  async getAccountAssetsByScope(\n    scope: CaipChainId,\n    accountId: AccountId,\n  ): Promise<\n    ReturnType<AssetsControllerGetAccountAssetsByScopeAction['handler']>\n  > {\n    return this.#messenger.call(\n      'AssetsController:getAccountAssetsByScope',\n      accountId,\n      scope,\n    );\n  }\n}\n"]}