{"version":3,"file":"MultichainNetworkService.cjs","sourceRoot":"","sources":["../../src/MultichainNetworkService/MultichainNetworkService.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,uDAA+C;AAG/C,0DAM6B;AAE7B;;GAEG;AACH,MAAa,wBAAwB;IAGnC,YAAY,EAAE,KAAK,EAAE,aAAa,EAA2B;QAFpD,kDAAqB;QAG5B,uBAAA,IAAI,mCAAU,aAAa,MAAA,CAAC;IAC9B,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,oBAAoB,CACxB,UAA2B;QAE3B,IAAI;YACF,MAAM,GAAG,GAAG,IAAA,qCAAsB,EAAC,UAAU,CAAC,CAAC;YAE/C,MAAM,QAAQ,GAAG,MAAM,uBAAA,IAAI,uCAAO,MAAX,IAAI,EAAQ,GAAG,CAAC,QAAQ,EAAE,EAAE;gBACjD,MAAM,EAAE,KAAK;gBACb,OAAO,EAAE;oBACP,CAAC,gDAAiC,CAAC,EAAE,4CAA6B;oBAClE,MAAM,EAAE,kBAAkB;iBAC3B;aACF,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;gBAChB,MAAM,IAAI,KAAK,CAAC,uBAAuB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;aAC3D;YAED,MAAM,IAAI,GAAY,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YAE5C,IAAA,oBAAM,EAAC,IAAI,EAAE,2CAA4B,CAAC,CAAC;YAC3C,OAAO,IAAI,CAAC;SACb;QAAC,OAAO,KAAK,EAAE;YACd,IAAI,KAAK,YAAY,KAAK,EAAE;gBAC1B,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE;oBAC/B,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;iBACrE;gBACD,MAAM,KAAK,CAAC;aACb;YAED,MAAM,IAAI,KAAK,CAAC,oCAAoC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;SACtE;IACH,CAAC;CACF;AA/CD,4DA+CC","sourcesContent":["import { assert } from '@metamask/superstruct';\nimport type { CaipAccountId } from '@metamask/utils';\n\nimport {\n  type ActiveNetworksResponse,\n  ActiveNetworksResponseStruct,\n  buildActiveNetworksUrl,\n  MULTICHAIN_ACCOUNTS_CLIENT_HEADER,\n  MULTICHAIN_ACCOUNTS_CLIENT_ID,\n} from '../api/accounts-api';\n\n/**\n * Service responsible for fetching network activity data from the API.\n */\nexport class MultichainNetworkService {\n  readonly #fetch: typeof fetch;\n\n  constructor({ fetch: fetchFunction }: { fetch: typeof fetch }) {\n    this.#fetch = fetchFunction;\n  }\n\n  /**\n   * Fetches active networks for the given account IDs.\n   *\n   * @param accountIds - Array of CAIP-10 account IDs to fetch activity for.\n   * @returns Promise resolving to the active networks response.\n   * @throws Error if the response format is invalid or the request fails.\n   */\n  async fetchNetworkActivity(\n    accountIds: CaipAccountId[],\n  ): Promise<ActiveNetworksResponse> {\n    try {\n      const url = buildActiveNetworksUrl(accountIds);\n\n      const response = await this.#fetch(url.toString(), {\n        method: 'GET',\n        headers: {\n          [MULTICHAIN_ACCOUNTS_CLIENT_HEADER]: MULTICHAIN_ACCOUNTS_CLIENT_ID,\n          Accept: 'application/json',\n        },\n      });\n\n      if (!response.ok) {\n        throw new Error(`HTTP error! status: ${response.status}`);\n      }\n\n      const data: unknown = await response.json();\n\n      assert(data, ActiveNetworksResponseStruct);\n      return data;\n    } catch (error) {\n      if (error instanceof Error) {\n        if (error.name === 'AbortError') {\n          throw new Error('Request timeout: Failed to fetch active networks');\n        }\n        throw error;\n      }\n\n      throw new Error(`Failed to fetch active networks: ${String(error)}`);\n    }\n  }\n}\n"]}