{"version":3,"sources":["../../src/lib/client.ts"],"sourcesContent":["import { createPublicClient, http, type PublicClient } from 'viem';\nimport type { ChainId } from '../api/vault-config';\nimport { getChainFromConfig } from '../utils/chain-utils';\n\n// Cache to store PublicClient instances for different chains\nconst clients: Map<ChainId, PublicClient> = new Map();\n\n/**\n * Gets or creates a PublicClient instance for the specified blockchain\n * @param chainId - The blockchain ID\n * @returns A PublicClient instance for interacting with the specified chain\n */\nconst getClient = async (chainId: ChainId): Promise<PublicClient> => {\n  if (!chainId) {\n    throw new Error('Chain ID is required');\n  }\n\n  if (!clients.has(chainId)) {\n    const chain = await getChainFromConfig(chainId);\n    const client = createPublicClient({\n      chain,\n      transport: http(chain.rpcUrls.default.http[0]),\n    });\n    clients.set(chainId, client);\n  }\n\n  const client = clients.get(chainId);\n  if (!client) {\n    throw new Error(`Client not found for chain ID ${chainId}`);\n  }\n  return client;\n};\n\nexport { getClient };\n"],"mappings":"AAAA,SAAS,oBAAoB,YAA+B;AAE5D,SAAS,0BAA0B;AAGnC,MAAM,UAAsC,oBAAI,IAAI;AAOpD,MAAM,YAAY,OAAO,YAA4C;AACnE,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,sBAAsB;AAAA,EACxC;AAEA,MAAI,CAAC,QAAQ,IAAI,OAAO,GAAG;AACzB,UAAM,QAAQ,MAAM,mBAAmB,OAAO;AAC9C,UAAMA,UAAS,mBAAmB;AAAA,MAChC;AAAA,MACA,WAAW,KAAK,MAAM,QAAQ,QAAQ,KAAK,CAAC,CAAC;AAAA,IAC/C,CAAC;AACD,YAAQ,IAAI,SAASA,OAAM;AAAA,EAC7B;AAEA,QAAM,SAAS,QAAQ,IAAI,OAAO;AAClC,MAAI,CAAC,QAAQ;AACX,UAAM,IAAI,MAAM,iCAAiC,OAAO,EAAE;AAAA,EAC5D;AACA,SAAO;AACT;","names":["client"]}