{"version":3,"sources":["../src/walletapi-service.ts","../src/utils/errors.ts","../src/client/http-client.ts","../src/services/alkanes.ts","../src/services/bitcoin.ts","../src/services/brc20.ts","../src/services/cat.ts","../src/services/config.ts","../src/services/inscriptions.ts","../src/services/market.ts","../src/services/notification.ts","../src/services/runes.ts","../src/services/utility.ts","../src/services/domain.ts","../src/api-client.ts"],"names":[],"mappings":"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","sourcesContent":["import { PlatformEnv } from '@unisat/wallet-shared'\nimport { ProxyStorageAdapter } from '@unisat/wallet-storage'\nimport randomstring from 'randomstring'\nimport { UniSatApiClient } from './api-client'\nimport { BaseHttpClient } from './client/http-client'\n\ninterface WalletApiStore {\n  deviceId: string\n}\n\n// Service configuration\nexport interface WalletServiceConfig {\n  storage?: ProxyStorageAdapter\n  logger?: any\n  endpoint?: string\n  httpClient?: BaseHttpClient\n}\n\nexport class WalletApiService {\n  private store!: WalletApiStore\n  private storage: ProxyStorageAdapter = undefined as any\n  private client: UniSatApiClient = undefined as any\n  private clientAddress = ''\n  private currentEndpoint = ''\n  private storageKey: string = 'openapi'\n\n  constructor() {\n    this.currentEndpoint = 'https://wallet-api-fractal.unisat.space'\n  }\n\n  init = async (config: WalletServiceConfig) => {\n    if (config.httpClient) {\n      this.client = new UniSatApiClient(config.httpClient)\n    }\n\n    if (config.storage) {\n      this.storage = config.storage\n    }\n\n    if (config.endpoint) {\n      this.currentEndpoint = config.endpoint\n    }\n\n    if (!this.storage) {\n      throw new Error('WalletApiService: Storage adapter is required')\n    }\n\n    this.store = await this.storage.createPersistentProxy<WalletApiStore>(this.storageKey, {\n      deviceId: this.generateDeviceId(),\n    })\n\n    // Update client configuration\n    this.client.setBaseURL(this.currentEndpoint)\n\n    // Set common headers\n    this.updateHeaders()\n\n    if (!this.store.deviceId) {\n      this.store.deviceId = this.generateDeviceId()\n    }\n    PlatformEnv.UDID = this.store.deviceId\n  }\n\n  resetAllData = async () => {\n    const initialState: WalletApiStore = {\n      deviceId: this.generateDeviceId(),\n    }\n\n    await this.storage.set(this.storageKey, initialState)\n\n    this.store = await this.storage.createPersistentProxy<WalletApiStore>(\n      this.storageKey,\n      initialState\n    )\n\n    PlatformEnv.UDID = this.store.deviceId\n\n    this.setClientAddress('')\n  }\n\n  setEndpoint = async (endpoint: string) => {\n    this.currentEndpoint = endpoint\n    this.client.setBaseURL(this.currentEndpoint)\n    this.updateHeaders()\n  }\n\n  setClientAddress = async (address: string) => {\n    this.clientAddress = address\n    this.updateHeaders()\n  }\n\n  updateHeaders = () => {\n    const headers: Record<string, string> = {\n      'x-client': 'UniSat Wallet',\n      'x-version': PlatformEnv.VERSION,\n      'x-channel': PlatformEnv.CHANNEL,\n      'x-udid': PlatformEnv.UDID,\n      'x-udid2': PlatformEnv.UDID2,\n    }\n\n    if (this.clientAddress) {\n      headers['x-address'] = this.clientAddress\n    }\n\n    this.client.setHeaders(headers)\n  }\n\n  private generateDeviceId = (): string => {\n    return randomstring.generate(12)\n  }\n\n  // Expose the client for direct access to all API methods\n  getClient = (): UniSatApiClient => {\n    return this.client\n  }\n\n  // Proxy common methods for convenience\n  get bitcoin() {\n    return this.client.bitcoin\n  }\n  get inscriptions() {\n    return this.client.inscriptions\n  }\n  get brc20() {\n    return this.client.brc20\n  }\n  get runes() {\n    return this.client.runes\n  }\n  get alkanes() {\n    return this.client.alkanes\n  }\n  get cat() {\n    return this.client.cat\n  }\n  get market() {\n    return this.client.market\n  }\n  get domain() {\n    return this.client.domain as any\n  }\n  get utility() {\n    return this.client.utility\n  }\n  get config() {\n    return this.client.config\n  }\n\n  get notification() {\n    return this.client.notification\n  }\n}\n","/**\n * API error classes for UniSat API\n */\n\n// Remove unused import - ApiError interface not needed\n\n/**\n * Base API error class\n */\nexport class ApiClientError extends Error {\n  public readonly code: number\n  public readonly details?: any\n\n  constructor(message: string, code = -1, details?: any) {\n    super(message)\n    this.name = 'ApiClientError'\n    this.code = code\n    this.details = details\n  }\n\n  static fromApiError(error: { message: string; code: number; details?: any }): ApiClientError {\n    return new ApiClientError(error.message, error.code, error.details)\n  }\n}\n\n/**\n * Network-related errors\n */\nexport class NetworkError extends ApiClientError {\n  constructor(message: string, details?: any) {\n    super(message, -100, details)\n    this.name = 'NetworkError'\n  }\n}\n\n/**\n * HTTP status errors\n */\nexport class HttpError extends ApiClientError {\n  public readonly status: number\n  public readonly statusText: string\n\n  constructor(status: number, statusText: string, message?: string) {\n    super(message || `HTTP ${status}: ${statusText}`, -200, { status, statusText })\n    this.name = 'HttpError'\n    this.status = status\n    this.statusText = statusText\n  }\n}\n\n/**\n * Request timeout errors\n */\nexport class TimeoutError extends ApiClientError {\n  constructor(timeout: number) {\n    super(`Request timeout after ${timeout}ms`, -300, { timeout })\n    this.name = 'TimeoutError'\n  }\n}\n\n/**\n * Response parsing errors\n */\nexport class ParseError extends ApiClientError {\n  constructor(message: string, details?: any) {\n    super(message, -400, details)\n    this.name = 'ParseError'\n  }\n}\n\n/**\n * Rate limit errors\n */\nexport class RateLimitError extends ApiClientError {\n  public readonly retryAfter?: number\n\n  constructor(message: string, retryAfter?: number) {\n    super(message, -500, { retryAfter })\n    this.name = 'RateLimitError'\n    if (retryAfter !== undefined) {\n      this.retryAfter = retryAfter\n    }\n  }\n}\n\n/**\n * Authentication errors\n */\nexport class AuthError extends ApiClientError {\n  constructor(message: string) {\n    super(message, -600)\n    this.name = 'AuthError'\n  }\n}\n\n/**\n * Validation errors\n */\nexport class ValidationError extends ApiClientError {\n  public readonly field?: string\n\n  constructor(message: string, field?: string) {\n    super(message, -700, { field })\n    this.name = 'ValidationError'\n    if (field !== undefined) {\n      this.field = field\n    }\n  }\n}\n\n/**\n * Service unavailable errors\n */\nexport class ServiceUnavailableError extends ApiClientError {\n  constructor(message: string, details?: any) {\n    super(message, -800, details)\n    this.name = 'ServiceUnavailableError'\n  }\n}\n\n/**\n * Check if an error is retryable\n */\nexport function isRetryableError(error: Error): boolean {\n  if (error instanceof NetworkError) return true\n  if (error instanceof TimeoutError) return true\n  if (error instanceof ServiceUnavailableError) return true\n  if (error instanceof HttpError) {\n    // Retry on 5xx errors and 429 (rate limit)\n    return error.status >= 500 || error.status === 429\n  }\n  return false\n}\n\n/**\n * Extract retry delay from error\n */\nexport function getRetryDelay(error: Error, attempt: number): number {\n  if (error instanceof RateLimitError && error.retryAfter) {\n    return error.retryAfter * 1000 // Convert to milliseconds\n  }\n  \n  // Exponential backoff: 1s, 2s, 4s, 8s, etc.\n  return Math.min(1000 * Math.pow(2, attempt - 1), 30000)\n}","/**\n * HTTP client for UniSat API\n */\n\n/// <reference lib=\"dom\" />\n\nimport type { ApiResponse, ClientConfig, RequestConfig } from '../types'\nimport {\n  ApiClientError,\n  NetworkError,\n  HttpError,\n  TimeoutError,\n  ParseError,\n  RateLimitError,\n  ServiceUnavailableError,\n  isRetryableError,\n  getRetryDelay,\n} from '../utils/errors'\n\n/**\n * HTTP request options\n */\nexport interface RequestOptions extends RequestConfig {\n  method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH'\n  body?: any\n  query?: Record<string, any>\n}\n\nexport interface BaseHttpClient {\n  get<T = any>(url: string, options?: RequestOptions): Promise<T>\n  post<T = any>(url: string, body?: any, options?: RequestOptions): Promise<T>\n\n  setBaseURL(baseURL: string): void\n  setHeaders(headers: Record<string, string>): void\n}\n\n/**\n * HTTP client implementation\n */\nexport class HttpClient implements BaseHttpClient {\n  private readonly baseURL: string\n  private readonly defaultConfig: Required<Pick<ClientConfig, 'timeout' | 'retries'>>\n  private readonly defaultHeaders: Record<string, string>\n\n  constructor(config: ClientConfig = {}) {\n    this.baseURL = config.endpoint || 'https://api.unisat.io'\n    this.defaultConfig = {\n      timeout: config.timeout || 30000,\n      retries: config.retries || 3,\n    }\n\n    this.defaultHeaders = {\n      'Content-Type': 'application/json',\n      'User-Agent': config.userAgent || 'UniSat-API-Client/1.0',\n      'X-Client': 'UniSat Wallet',\n      ...config.headers,\n    }\n\n    if (config.apiKey) {\n      this.defaultHeaders['Authorization'] = `Bearer ${config.apiKey}`\n    }\n  }\n\n  /**\n   * Make an HTTP request\n   */\n  async request<T = any>(path: string, options: RequestOptions = {}): Promise<T> {\n    const {\n      method = 'GET',\n      body,\n      query,\n      timeout = this.defaultConfig.timeout,\n      retries = this.defaultConfig.retries,\n      headers = {},\n    } = options\n\n    const url = this.buildUrl(path, query)\n    const requestHeaders = { ...this.defaultHeaders, ...headers }\n\n    let lastError: Error\n\n    for (let attempt = 1; attempt <= retries + 1; attempt++) {\n      try {\n        const requestInit: RequestInit = {\n          method,\n          headers: requestHeaders,\n          signal: AbortSignal.timeout(timeout),\n        }\n\n        if (body) {\n          requestInit.body = JSON.stringify(body)\n        }\n\n        const response = await this.makeRequest(url, requestInit)\n\n        return await this.handleResponse<T>(response)\n      } catch (error) {\n        lastError = error as Error\n\n        // Don't retry on the last attempt or non-retryable errors\n        if (attempt === retries + 1 || !isRetryableError(lastError)) {\n          break\n        }\n\n        // Wait before retrying\n        const delay = getRetryDelay(lastError, attempt)\n        await this.sleep(delay)\n      }\n    }\n\n    throw lastError!\n  }\n\n  /**\n   * Make a GET request\n   */\n  async get<T = any>(\n    path: string,\n    options: Omit<RequestOptions, 'method' | 'body'> = {}\n  ): Promise<T> {\n    return this.request<T>(path, { ...options, method: 'GET' })\n  }\n\n  /**\n   * Make a POST request\n   */\n  async post<T = any>(\n    path: string,\n    body?: any,\n    options: Omit<RequestOptions, 'method' | 'body'> = {}\n  ): Promise<T> {\n    return this.request<T>(path, { ...options, method: 'POST', body })\n  }\n\n  /**\n   * Make a PUT request\n   */\n  async put<T = any>(\n    path: string,\n    body?: any,\n    options: Omit<RequestOptions, 'method' | 'body'> = {}\n  ): Promise<T> {\n    return this.request<T>(path, { ...options, method: 'PUT', body })\n  }\n\n  /**\n   * Make a DELETE request\n   */\n  async delete<T = any>(\n    path: string,\n    options: Omit<RequestOptions, 'method' | 'body'> = {}\n  ): Promise<T> {\n    return this.request<T>(path, { ...options, method: 'DELETE' })\n  }\n\n  /**\n   * Build URL with query parameters\n   */\n  private buildUrl(path: string, query?: Record<string, any>): string {\n    // Ensure baseURL ends with / and path doesn't start with /\n    const normalizedBaseURL = this.baseURL.endsWith('/') ? this.baseURL : this.baseURL + '/'\n    const normalizedPath = path.startsWith('/') ? path.slice(1) : path\n    const url = new URL(normalizedPath, normalizedBaseURL)\n\n    if (query) {\n      Object.entries(query).forEach(([key, value]) => {\n        if (value !== undefined && value !== null) {\n          url.searchParams.append(key, String(value))\n        }\n      })\n    }\n\n    return url.toString()\n  }\n\n  /**\n   * Make the actual HTTP request\n   */\n  private async makeRequest(url: string, init: RequestInit): Promise<Response> {\n    try {\n      const response = await fetch(url, init)\n      return response\n    } catch (error: any) {\n      if (error.name === 'AbortError') {\n        throw new TimeoutError(this.defaultConfig.timeout)\n      }\n      throw new NetworkError(`Network error: ${error.message}`, error)\n    }\n  }\n\n  /**\n   * Handle HTTP response\n   */\n  private async handleResponse<T>(response: Response): Promise<T> {\n    // Handle rate limiting\n    if (response.status === 429) {\n      const retryAfter = parseInt(response.headers.get('Retry-After') || '60')\n      throw new RateLimitError('Rate limit exceeded', retryAfter)\n    }\n\n    // Handle other HTTP errors\n    if (!response.ok) {\n      if (response.status >= 500) {\n        throw new ServiceUnavailableError(\n          `Service unavailable: ${response.status} ${response.statusText}`\n        )\n      }\n      throw new HttpError(response.status, response.statusText)\n    }\n\n    // Parse response\n    let data: any\n    try {\n      data = await response.json()\n    } catch (error) {\n      throw new ParseError('Failed to parse JSON response', error)\n    }\n\n    // Handle API-level errors\n    if (this.isApiResponse(data)) {\n      if (data.code !== 0) {\n        // Assuming 0 is success\n        throw new ApiClientError(data.msg || 'API error', data.code)\n      }\n      return data.data\n    }\n\n    return data\n  }\n\n  /**\n   * Check if response is in API format\n   */\n  private isApiResponse(data: any): data is ApiResponse {\n    return data && typeof data === 'object' && 'code' in data && 'msg' in data\n  }\n\n  /**\n   * Sleep utility for retries\n   */\n  private sleep(ms: number): Promise<void> {\n    return new Promise(resolve => setTimeout(resolve, ms))\n  }\n\n  /**\n   * Update base URL\n   */\n  setBaseURL(baseURL: string): void {\n    ;(this as any).baseURL = baseURL\n  }\n\n  /**\n   * Update default headers\n   */\n  setHeaders(headers: Record<string, string>): void {\n    Object.assign(this.defaultHeaders, headers)\n  }\n\n  /**\n   * Remove a header\n   */\n  removeHeader(name: string): void {\n    delete this.defaultHeaders[name]\n  }\n}\n","/**\n * Alkanes-related API methods - Fully compatible with openapi.ts\n */\n\nimport type { BaseHttpClient, HttpClient } from '../client/http-client'\nimport type {\n  AlkanesBalance,\n  AddressAlkanesTokenSummary,\n  UTXO,\n  UserToSignInput,\n  AlkanesInfo,\n  AlkanesCollection,\n} from '../types'\n\nexport class AlkanesService {\n  constructor(private readonly httpClient: BaseHttpClient) {}\n\n  // ========================================\n  // Alkanes related\n  // ========================================\n\n  /**\n   * Get address Alkanes list\n   */\n  async getAlkanesList(\n    address: string,\n    cursor: number,\n    size: number\n  ): Promise<{ list: AlkanesBalance[]; total: number }> {\n    return this.httpClient.get('/v5/alkanes/list', {\n      query: { address, cursor, size },\n    })\n  }\n\n  /**\n   * Get Alkanes UTXO\n   */\n  async getAlkanesUtxos(address: string, alkaneid: string): Promise<UTXO[]> {\n    return this.httpClient.get('/v5/alkanes/utxos', {\n      query: { address, alkaneid },\n    })\n  }\n\n  async getAddressAlkanesTokenSummary(\n    address: string,\n    alkaneid: string,\n    fetchAvailable?: boolean\n  ): Promise<AddressAlkanesTokenSummary> {\n    return this.httpClient.get(\n      `/v5/alkanes/token-summary?address=${address}&alkaneid=${alkaneid}&fetchAvailable=${\n        fetchAvailable ? true : false\n      }`,\n      {}\n    )\n  }\n\n  async getAlkanesCollectionList(\n    address: string,\n    cursor: number,\n    size: number\n  ): Promise<{ list: AlkanesCollection[]; total: number }> {\n    return this.httpClient.get('/v5/alkanes/collection/list', {\n      query: { address, cursor, size },\n    })\n  }\n\n  async getAlkanesCollectionItems(\n    address: string,\n    collectionId: string,\n    cursor: number,\n    size: number\n  ): Promise<{ list: AlkanesInfo[]; total: number }> {\n    return this.httpClient.get('/v5/alkanes/collection/items', {\n      query: { address, collectionId, cursor, size },\n    })\n  }\n\n  async createAlkanesSendTx({\n    userAddress,\n    userPubkey,\n    receiver,\n    alkaneid,\n    amount,\n    feeRate,\n    enableRBF = true,\n  }: {\n    userAddress: string\n    userPubkey: string\n    receiver: string\n    alkaneid: string\n    amount: string\n    feeRate: number\n    enableRBF?: boolean\n  }): Promise<{\n    orderId: string\n    psbtHex: string\n    toSignInputs: UserToSignInput[]\n  }> {\n    return this.httpClient.post('/v5/alkanes/create-send-tx', {\n      userAddress,\n      userPubkey,\n      receiver,\n      alkaneid,\n      amount,\n      feeRate,\n      enableRBF,\n    })\n  }\n}\n","/**\n * Bitcoin-related API methods - Fully compatible with openapi.ts\n */\n\nimport type { BaseHttpClient, HttpClient } from '../client/http-client'\nimport type {\n  AddressSummary,\n  BitcoinBalance,\n  BitcoinBalanceV2,\n  UTXO,\n  DecodedPsbt,\n  UtxoAssets,\n  WalletConfig,\n  FeeSummary,\n} from '../types'\n\nexport class BitcoinService {\n  constructor(private readonly httpClient: BaseHttpClient) {}\n\n  // ========================================\n  // Basic configuration and information\n  // ========================================\n\n  /**\n   * Get wallet configuration\n   */\n  async getWalletConfig(): Promise<WalletConfig> {\n    return this.httpClient.get('/v5/default/config')\n  }\n\n  /**\n   * Get address summary\n   */\n  async getAddressSummary(address: string): Promise<AddressSummary> {\n    return this.httpClient.get('/v5/address/summary', { query: { address } })\n  }\n\n  // ========================================\n  // Address balance related\n  // ========================================\n\n  /**\n   * Get address balance\n   */\n  async getAddressBalance(address: string): Promise<BitcoinBalance> {\n    return this.httpClient.get('/v5/address/balance', { query: { address } })\n  }\n\n  /**\n   * Get address balance V2\n   */\n  async getAddressBalanceV2(address: string): Promise<BitcoinBalanceV2> {\n    return this.httpClient.get('/v5/address/balance2', { query: { address } })\n  }\n\n  /**\n   * Get multi-address assets\n   */\n  async getMultiAddressAssets(addresses: string): Promise<AddressSummary[]> {\n    return this.httpClient.get('/v5/address/multi-assets', { query: { addresses } })\n  }\n\n  /**\n   * Get fee summary\n   */\n  async getFeeSummary(): Promise<FeeSummary> {\n    return this.httpClient.get('/v5/default/fee-summary')\n  }\n\n  async getLowFeeSummary(): Promise<FeeSummary> {\n    return this.httpClient.get('/v5/default/fee-summary?lowFee=true')\n  }\n\n  // ========================================\n  // UTXO related\n  // ========================================\n\n  /**\n   * Get available UTXOs (deprecated)\n   */\n  async getAvailableUtxos(address: string): Promise<UTXO[]> {\n    return this.httpClient.get('/v5/address/available-utxo', {\n      query: { address, ignoreAssets: true },\n    })\n  }\n\n  /**\n   * Get unavailable UTXOs (deprecated)\n   */\n  async getUnavailableUtxos(address: string): Promise<UTXO[]> {\n    return this.httpClient.get('/v5/address/unavailable-utxo', { query: { address } })\n  }\n\n  /**\n   * Get BTC UTXOs\n   */\n  async getBTCUtxos(address: string): Promise<UTXO[]> {\n    return this.httpClient.get('/v5/address/btc-utxo', { query: { address } })\n  }\n\n  // ========================================\n  // Transaction related\n  // ========================================\n\n  /**\n   * Broadcast transaction\n   */\n  async pushTx(rawtx: string): Promise<string> {\n    return this.httpClient.post('/v5/tx/broadcast', { rawtx })\n  }\n\n  /**\n   * Decode PSBT\n   */\n  async decodePsbt(psbtHex: string, website: string): Promise<DecodedPsbt> {\n    return this.httpClient.post('/v5/tx/decode2', { psbtHex, website })\n  }\n\n  // ========================================\n  // Transaction history\n  // ========================================\n\n  /**\n   * Get address recent history\n   */\n  async getAddressRecentHistory(params: { address: string; start: number; limit: number }) {\n    return this.httpClient.get('/v5/address/history', { query: params })\n  }\n\n  // ========================================\n  // Version information\n  // ========================================\n\n  // ========================================\n  // Create send BTC transaction (bypass head offsets)\n  // ========================================\n\n  /**\n   * Create send BTC transaction, bypassing head offsets\n   */\n  async createSendCoinBypassHeadOffsets(\n    address: string,\n    pubkey: string,\n    tos: { address: string; satoshis: number }[],\n    feeRate: number,\n    enableRBF = true\n  ) {\n    return this.httpClient.post('/v5/tx/create-send-btc', {\n      fromAddress: address,\n      fromPubkey: pubkey,\n      tos,\n      feeRate,\n      enableRBF,\n      bypassHeadOffsets: true,\n    })\n  }\n\n  /**\n   * Find group assets\n   */\n  async findGroupAssets(\n    groups: { type: number; address_arr: string[] }[]\n  ): Promise<{ type: number; address_arr: string[]; satoshis_arr: number[] }[]> {\n    return this.httpClient.post('/v5/address/find-group-assets', { groups })\n  }\n\n  /**\n   * Decode contracts\n   */\n  async decodeContracts(contracts: any[], account: any): Promise<any> {\n    return this.httpClient.post('/v5/contracts/decode', { contracts, account })\n  }\n\n  /**\n   * Batch fetch inscription/rune/alkane assets for a list of outpoints (txid:vout).\n   * Much smaller payload than sending full PSBT hex.\n   */\n  async getUtxoAssetsByOutpoints(outpoints: string[]): Promise<UtxoAssets[]> {\n    return this.httpClient.post('/v5/utxo/assets-by-outpoints', { outpoints })\n  }\n}\n","/**\n * BRC20-related API methods - Fully compatible with openapi.ts\n */\n\nimport type { BaseHttpClient } from '../client/http-client'\nimport type {\n  AddressTokenSummary,\n  BRC20HistoryItem,\n  InscribeOrder,\n  TickPriceItem,\n  TokenBalance,\n  TokenTransfer,\n  UserToSignInput,\n} from '../types'\n\nexport class BRC20Service {\n  constructor(private readonly httpClient: BaseHttpClient) {}\n\n  private resolveTicker(ticker: string, tickerHex?: string): string {\n    if (!tickerHex) {\n      return ticker\n    }\n    if (!/^[0-9a-fA-F]+$/.test(tickerHex) || tickerHex.length % 2 !== 0) {\n      return ticker\n    }\n    return Buffer.from(tickerHex, 'hex').toString('utf-8')\n  }\n\n  // ========================================\n  // BRC20 token list and balance\n  // ========================================\n\n  /**\n   * Get address BRC20 token list\n   */\n  async getBRC20List({\n    address,\n    cursor,\n    size,\n  }: {\n    address: string\n    cursor: number\n    size: number\n  }): Promise<{ list: TokenBalance[]; total: number }> {\n    return this.httpClient.get('/v5/brc20/list', {\n      query: { address, cursor, size },\n    })\n  }\n\n  /**\n   * Get address specific token summary\n   */\n  async getAddressTokenSummary({\n    address,\n    ticker,\n    tickerHex,\n  }: {\n    address: string\n    ticker: string\n    tickerHex?: string\n  }): Promise<AddressTokenSummary> {\n    const originTicker = this.resolveTicker(ticker, tickerHex)\n    const response: AddressTokenSummary = await this.httpClient.get('/v5/brc20/token-summary', {\n      query: {\n        address,\n        ticker: originTicker,\n      },\n    })\n    if (response && response.tokenBalance && !response.tokenBalance.tickerHex) {\n      response.tokenBalance.tickerHex = Buffer.from(response.tokenBalance.ticker, 'utf-8').toString(\n        'hex'\n      )\n    }\n    return response\n  }\n\n  // ========================================\n  // BRC20 token history\n  // ========================================\n\n  /**\n   * Get address token history list\n   */\n  async getAddressTokenHistoryList({\n    address,\n    ticker,\n    tickerHex,\n    cursor,\n    size,\n  }: {\n    address: string\n    ticker: string\n    tickerHex?: string\n    cursor: number\n    size: number\n  }): Promise<{ list: TokenTransfer[]; total: number }> {\n    const originTicker = this.resolveTicker(ticker, tickerHex)\n    return this.httpClient.get('/v5/address/brc20-history', {\n      query: {\n        address,\n        ticker: originTicker,\n        cursor,\n        size,\n      },\n    })\n  }\n\n  /**\n   * Get BRC20 recent history\n   */\n  async getBRC20RecentHistory(address: string, ticker: string): Promise<BRC20HistoryItem[]> {\n    return this.httpClient.get('/v5/brc20/recent-history', {\n      query: { address, ticker },\n    })\n  }\n\n  // ========================================\n  // BRC20 price related\n  // ========================================\n\n  /**\n   * Get token price\n   */\n  async getTickPrice(ticker: string): Promise<TickPriceItem> {\n    return this.httpClient.get('/v5/tick/price', {\n      query: { tick: ticker },\n    })\n  }\n\n  // ========================================\n  // BRC20 transfer related\n  // ========================================\n\n  /**\n   * Inscribe BRC20 transfer\n   */\n  async inscribeBRC20Transfer(\n    address: string,\n    tick: string,\n    amount: string,\n    feeRate: number,\n    outputValue?: number\n  ): Promise<InscribeOrder> {\n    return this.httpClient.post('/v5/brc20/inscribe-transfer', {\n      address,\n      tick,\n      amount,\n      feeRate,\n      outputValue,\n    })\n  }\n\n  /**\n   * Get inscription result\n   */\n  async getInscribeResult(orderId: string): Promise<TokenTransfer> {\n    return this.httpClient.get('/v5/brc20/order-result', {\n      query: { orderId },\n    })\n  }\n\n  async getTokenTransferableList({\n    address,\n    ticker,\n    tickerHex,\n    cursor,\n    size,\n  }: {\n    address: string\n    ticker: string\n    tickerHex?: string\n    cursor: number\n    size: number\n  }): Promise<{ list: TokenTransfer[]; total: number }> {\n    const originTicker = this.resolveTicker(ticker, tickerHex)\n    return this.httpClient.get('/v5/brc20/transferable-list', {\n      query: {\n        address,\n        ticker: originTicker,\n        cursor,\n        size,\n      },\n    })\n  }\n  // ========================================\n  // Single step transfer related\n  // ========================================\n\n  /**\n   * Single step transfer BRC20 - Step 1\n   */\n  async singleStepTransferBRC20Step1({\n    userAddress,\n    userPubkey,\n    receiver,\n    ticker,\n    amount,\n    feeRate,\n  }: {\n    userAddress: string\n    userPubkey: string\n    receiver: string\n    ticker: string\n    amount: string\n    feeRate: number\n  }): Promise<{\n    orderId: string\n    psbtHex: string\n    toSignInputs: UserToSignInput[]\n  }> {\n    return this.httpClient.post('/v5/brc20/single-step-transfer/request-commit', {\n      userAddress,\n      userPubkey,\n      receiver,\n      ticker,\n      amount,\n      feeRate,\n    })\n  }\n\n  async singleStepTransferBRC20Step2({\n    orderId,\n    psbt,\n  }: {\n    orderId: string\n    psbt: string\n  }): Promise<{\n    psbtHex: string\n    toSignInputs: UserToSignInput[]\n  }> {\n    return this.httpClient.post('/v5/brc20/single-step-transfer/sign-commit', {\n      orderId,\n      psbt,\n    })\n  }\n  /**\n   * Single step transfer BRC20 - Step 3\n   */\n  async singleStepTransferBRC20Step3(params: { orderId: string; psbt: string }): Promise<{\n    txid: string\n  }> {\n    return this.httpClient.post('/v5/brc20/single-step-transfer/sign-reveal', params)\n  }\n\n  async getBRC20ProgList({\n    address,\n    cursor,\n    size,\n  }: {\n    address: string\n    cursor: number\n    size: number\n  }): Promise<{ list: TokenBalance[]; total: number }> {\n    return this.httpClient.get('/v5/brc20-prog/list', { query: { address, cursor, size, type: 5 } })\n  }\n}\n","/**\n * CAT20/CAT721-related API methods - Fully compatible with openapi.ts\n */\n\nimport { CAT_VERSION, UserToSignInput } from '@unisat/wallet-shared'\nimport type { BaseHttpClient } from '../client/http-client'\nimport type { CAT20Balance, CAT721CollectionInfo } from '../types'\nexport class CATService {\n  constructor(private readonly httpClient: BaseHttpClient) {}\n\n  async getCAT20List(\n    version: CAT_VERSION,\n    address: string,\n    cursor: number,\n    size: number\n  ): Promise<{ list: CAT20Balance[]; total: number }> {\n    return this.httpClient.get('/v5/cat20/list', { query: { address, cursor, size, version } })\n  }\n\n  async getAddressCAT20TokenSummary(version: CAT_VERSION, address: string, tokenId: string) {\n    return this.httpClient.get(\n      `/v5/cat20/token-summary?address=${address}&tokenId=${tokenId}&version=${version}`,\n      {}\n    )\n  }\n\n  async getAddressCAT20UtxoSummary(version: CAT_VERSION, address: string, tokenId: string) {\n    return this.httpClient.get(\n      `/v5/cat20/utxo-summary?address=${address}&tokenId=${tokenId}&version=${version}`,\n      {}\n    )\n  }\n\n  async transferCAT20Step1(\n    version: CAT_VERSION,\n    address: string,\n    pubkey: string,\n    to: string,\n    tokenId: string,\n    amount: string,\n    feeRate: number\n  ) {\n    return this.httpClient.post<{\n      id: string\n      // base64 psbt\n      commitTx: string\n      toSignInputs: UserToSignInput[]\n      feeRate: number\n    }>('/v5/cat20/transfer-token-step1', {\n      version,\n      address,\n      pubkey,\n      to,\n      tokenId,\n      amount,\n      feeRate,\n    })\n  }\n\n  async transferCAT20Step2(version: CAT_VERSION, transferId: string, signedPsbt: string) {\n    return this.httpClient.post<{\n      revealTx: string\n      toSignInputs: UserToSignInput[]\n    }>('/v5/cat20/transfer-token-step2', {\n      id: transferId,\n      psbt: signedPsbt,\n      version,\n    })\n  }\n\n  async transferCAT20Step3(version: CAT_VERSION, transferId: string, signedPsbt: string) {\n    return this.httpClient.post<{\n      txid: string\n    }>('/v5/cat20/transfer-token-step3', {\n      id: transferId,\n      psbt: signedPsbt,\n      version,\n    })\n  }\n\n  async transferCAT20Step1ByMerge(version: CAT_VERSION, mergeId: string) {\n    return this.httpClient.post<{\n      id: string\n      // base64 psbt\n      commitTx: string\n      toSignInputs: UserToSignInput[]\n      feeRate: number\n    }>('/v5/cat20/transfer-token-step1-by-merge', {\n      mergeId,\n      version,\n    })\n  }\n\n  async mergeCAT20Prepare(\n    version: CAT_VERSION,\n    address: string,\n    pubkey: string,\n    tokenId: string,\n    utxoCount: number,\n    feeRate: number\n  ) {\n    return this.httpClient.post<{\n      id: string\n      senderAddress: string\n      senderPubkey: string\n      tokenId: string\n      feeRate: number\n      batchIndex: number\n      batchCount: number\n      ct: number\n      version?: string\n    }>('/v5/cat20/merge-token-prepare', {\n      version,\n      address,\n      pubkey,\n      tokenId,\n      utxoCount,\n      feeRate,\n    })\n  }\n\n  async getMergeCAT20Status(version: CAT_VERSION, mergeId: string) {\n    return this.httpClient.post<{\n      id: string\n      senderAddress: string\n      senderPubkey: string\n      tokenId: string\n      feeRate: number\n      batchIndex: number\n      batchCount: number\n      ct: number\n      version?: string\n    }>('/v5/cat20/merge-token-status', {\n      id: mergeId,\n      version,\n    })\n  }\n\n  async getCAT721CollectionList(\n    version: CAT_VERSION,\n    address: string,\n    cursor: number,\n    size: number\n  ): Promise<{ list: CAT721CollectionInfo[]; total: number }> {\n    return this.httpClient.get('/v5/cat721/collection/list', {\n      query: { address, cursor, size, version },\n    })\n  }\n\n  async getAddressCAT721CollectionSummary(\n    version: CAT_VERSION,\n    address: string,\n    collectionId: string\n  ) {\n    return this.httpClient.get(\n      `/v5/cat721/collection-summary?address=${address}&collectionId=${collectionId}&version=${version}`,\n      {}\n    )\n  }\n\n  async transferCAT721Step1(\n    version: CAT_VERSION,\n    address: string,\n    pubkey: string,\n    to: string,\n    collectionId: string,\n    localId: string,\n    feeRate: number\n  ) {\n    return this.httpClient.post<{\n      id: string\n      // base64 psbt\n      commitTx: string\n      toSignInputs: UserToSignInput[]\n      feeRate: number\n    }>('/v5/cat721/transfer-nft-step1', {\n      version,\n      address,\n      pubkey,\n      to,\n      collectionId,\n      localId,\n      feeRate,\n    })\n  }\n\n  async transferCAT721Step2(version: CAT_VERSION, transferId: string, signedPsbt: string) {\n    return this.httpClient.post<{\n      revealTx: string\n      toSignInputs: UserToSignInput[]\n    }>('/v5/cat721/transfer-nft-step2', {\n      id: transferId,\n      psbt: signedPsbt,\n      version,\n    })\n  }\n\n  async transferCAT721Step3(version: CAT_VERSION, transferId: string, signedPsbt: string) {\n    return this.httpClient.post<{\n      txid: string\n    }>('/v5/cat721/transfer-nft-step3', {\n      id: transferId,\n      psbt: signedPsbt,\n      version,\n    })\n  }\n}\n","/**\n * Configuration and utility API methods\n */\n\nimport type { BaseHttpClient, HttpClient } from '../client/http-client'\nimport type {\n  WalletConfig,\n  AppInfo,\n  AppSummary,\n  VersionDetail,\n  CoinPrice,\n  TickPriceItem,\n  PaginationParams,\n} from '../types'\n\nexport class ConfigService {\n  constructor(private readonly httpClient: BaseHttpClient) {}\n\n  /**\n   * Get wallet configuration\n   */\n  async getWalletConfig(): Promise<WalletConfig> {\n    return this.httpClient.get('/v5/default/config')\n  }\n\n  /**\n   * Get application list\n   */\n  async getAppList(): Promise<{\n    apps: AppSummary[]\n    featured: AppSummary[]\n    categories: Array<{\n      id: string\n      name: string\n      apps: AppSummary[]\n    }>\n  }> {\n    return this.httpClient.get('/v5/default/app-list')\n  }\n\n  /**\n   * Get banner list\n   */\n  async getBannerList(): Promise<\n    Array<{\n      id: string\n      title: string\n      description?: string\n      imageUrl: string\n      link?: string\n      startTime?: number\n      endTime?: number\n      priority: number\n      target: 'all' | 'mobile' | 'extension'\n    }>\n  > {\n    return this.httpClient.get('/v5/default/banner-list')\n  }\n\n  /**\n   * Get block activity information\n   */\n  async getBlockActiveInfo(): Promise<{\n    allTransactions: number\n    allAddrs: number\n    currentHeight: number\n    recentBlocks: Array<{\n      height: number\n      timestamp: number\n      txCount: number\n    }>\n  }> {\n    return this.httpClient.get('/v5/default/block-active-info')\n  }\n\n  /**\n   * Get version details\n   */\n  async getVersionDetail(version: string): Promise<VersionDetail> {\n    return this.httpClient.get('/v5/version/detail', { query: { version } })\n  }\n\n  /**\n   * Get Bitcoin price\n   */\n  async getBitcoinPrice(): Promise<CoinPrice> {\n    return this.httpClient.get('/v5/market/bitcoin/price')\n  }\n\n  /**\n   * Get tick prices\n   */\n  async getTickPrices(ticks: string[]): Promise<TickPriceItem[]> {\n    return this.httpClient.post('/v5/market/tick-prices', { ticks })\n  }\n\n  // ========================================\n  // Babylon related\n  // ========================================\n\n  /**\n   * Get Babylon configuration\n   */\n  async getBabylonConfig(): Promise<any> {\n    return this.httpClient.get('/v5/babylon/config')\n  }\n}\n","/**\n * Inscriptions-related API methods - Fully compatible with openapi.ts\n */\n\nimport type { BaseHttpClient, HttpClient } from '../client/http-client'\nimport type {\n  Inscription,\n  InscriptionSummary,\n  AppSummary,\n  UTXO,\n  UTXO_Detail,\n  PaginationParams,\n} from '../types'\n\nexport class InscriptionsService {\n  constructor(private readonly httpClient: BaseHttpClient) {}\n\n  // ========================================\n  // Inscription UTXO related\n  // ========================================\n\n  /**\n   * Get inscription UTXO\n   */\n  async getInscriptionUtxo(inscriptionId: string): Promise<UTXO> {\n    return this.httpClient.get('/v5/inscription/utxo', {\n      query: { inscriptionId },\n    })\n  }\n\n  /**\n   * Get inscription UTXO details\n   */\n  async getInscriptionUtxoDetail(inscriptionId: string): Promise<UTXO_Detail> {\n    return this.httpClient.get('/v5/inscription/utxo-detail', {\n      query: { inscriptionId },\n    })\n  }\n\n  /**\n   * Get UTXOs for multiple inscriptions\n   */\n  async getInscriptionUtxos(inscriptionIds: string[]): Promise<UTXO[]> {\n    return this.httpClient.post('/v5/inscription/utxos', { inscriptionIds })\n  }\n\n  // ========================================\n  // Inscription information related\n  // ========================================\n\n  /**\n   * Get inscription information\n   */\n  async getInscriptionInfo(inscriptionId: string): Promise<Inscription> {\n    return this.httpClient.get('/v5/inscription/info', {\n      query: { inscriptionId },\n    })\n  }\n\n  /**\n   * Get address inscription list\n   */\n  async getAddressInscriptions(\n    address: string,\n    cursor: number,\n    size: number\n  ): Promise<{ list: Inscription[]; total: number }> {\n    return this.httpClient.get('/v5/address/inscriptions', {\n      query: { address, cursor, size },\n    })\n  }\n\n  /**\n   * Get inscription summary\n   */\n  async getInscriptionSummary(): Promise<InscriptionSummary> {\n    return this.httpClient.get('/v5/default/inscription-summary')\n  }\n\n  /**\n   * Get application summary\n   */\n  async getAppSummary(): Promise<AppSummary> {\n    return this.httpClient.get('/v5/default/app-summary-v2')\n  }\n\n  // ========================================\n  // Ordinals related\n  // ========================================\n\n  /**\n   * Get Ordinals inscriptions\n   */\n  async getOrdinalsInscriptions(\n    address: string,\n    cursor: number,\n    size: number\n  ): Promise<{ list: Inscription[]; total: number }> {\n    return this.httpClient.get('/v5/ordinals/inscriptions', {\n      query: { address, cursor, size },\n    })\n  }\n}\n","/**\n * Market and pricing related API methods\n */\n\nimport type { BaseHttpClient, HttpClient } from '../client/http-client'\nimport type { CoinPrice, FeeSummary, TickPriceItem } from '../types'\n\nexport class MarketService {\n  constructor(private readonly httpClient: BaseHttpClient) {}\n\n  // ========================================\n  // Price related\n  // ========================================\n\n  /**\n   * Get coin price\n   */\n  async getCoinPrice(): Promise<CoinPrice> {\n    return this.httpClient.get('/v5/default/price')\n  }\n\n  async getBrc20sPrice(ticks: string[]): Promise<TickPriceItem> {\n    return this.httpClient.post('/v5/market/brc20/price', { ticks })\n  }\n\n  async getRunesPrice(ticks: string[]): Promise<TickPriceItem> {\n    return this.httpClient.post('/v5/market/runes/price', { ticks })\n  }\n\n  async getCAT20sPrice(ticks: string[]): Promise<TickPriceItem> {\n    return this.httpClient.post('/v5/market/cat20/price', { ticks })\n  }\n\n  async getAlkanesPrice(ticks: string[]): Promise<TickPriceItem> {\n    return this.httpClient.post('/v5/market/alkanes/price', { ticks })\n  }\n}\n","/**\n * Notification related API methods\n */\n\nimport { NotificationListItem } from '@unisat/wallet-shared'\nimport type { BaseHttpClient } from '../client/http-client'\n\nexport class NotificationService {\n  constructor(private readonly httpClient: BaseHttpClient) {}\n\n  // ========================================\n  // Notification related\n  // ========================================\n\n  /**\n   * Get notification list\n   */\n  async getList(): Promise<{\n    list: NotificationListItem[]\n    total: number\n  }> {\n    return this.httpClient.get('/v5/notification/list', {})\n  }\n\n  async read(notificationId: string): Promise<{\n    success: boolean\n  }> {\n    return this.httpClient.post('/v5/notification/read', { notificationId })\n  }\n\n  async readAll(notificationIds: string[]): Promise<{\n    success: boolean\n  }> {\n    return this.httpClient.post('/v5/notification/read-all', {\n      notificationIds,\n    })\n  }\n}\n","/**\n * Runes-related API methods - Fully compatible with openapi.ts\n */\n\nimport type { BaseHttpClient, HttpClient } from '../client/http-client'\nimport type { RuneBalance, AddressRunesTokenSummary, UTXO } from '../types'\n\nexport class RunesService {\n  constructor(private readonly httpClient: BaseHttpClient) {}\n\n  // ========================================\n  // Runes related\n  // ========================================\n\n  /**\n   * Get address Runes list\n   */\n  async getRunesList(\n    address: string,\n    cursor: number,\n    size: number\n  ): Promise<{ list: RuneBalance[]; total: number }> {\n    return this.httpClient.get('/v5/runes/list', {\n      query: { address, cursor, size },\n    })\n  }\n\n  /**\n   * Get Runes UTXO\n   */\n  async getRunesUtxos(address: string, runeid: string): Promise<UTXO[]> {\n    return this.httpClient.get('/v5/runes/utxos', {\n      query: { address, runeid },\n    })\n  }\n\n  /**\n   * Get address Runes token summary\n   */\n  async getAddressRunesTokenSummary(\n    address: string,\n    runeid: string\n  ): Promise<AddressRunesTokenSummary> {\n    return this.httpClient.get(`/v5/runes/token-summary?address=${address}&runeid=${runeid}`)\n  }\n}\n","/**\n * Utility and tool related API methods\n */\n\nimport type { BaseHttpClient } from '../client/http-client'\nimport { Announcement, AppExtra, AppSummary } from '../types'\n\nexport class UtilityService {\n  constructor(private readonly httpClient: BaseHttpClient) {}\n\n  // ========================================\n  // Website and domain related\n  // ========================================\n\n  /**\n   * Check website\n   */\n  async checkWebsite(website: string): Promise<{ isScammer: boolean; warning: string }> {\n    return this.httpClient.post('/v5/default/check-website', { website })\n  }\n\n  // ========================================\n  // Purchase related\n  // ========================================\n\n  /**\n   * Get buy coin channel list\n   */\n  async getBuyCoinChannelList(coin: 'BTC' | 'FB'): Promise<{ channel: string }[]> {\n    if (coin === 'BTC') {\n      return this.httpClient.get('/v5/buy-btc/channel-list')\n    } else {\n      return this.httpClient.get('/v5/buy-fb/channel-list')\n    }\n  }\n\n  /**\n   * Create buy coin payment URL\n   */\n  async createBuyCoinPaymentUrl(\n    coin: 'BTC' | 'FB',\n    address: string,\n    channel: string\n  ): Promise<string> {\n    if (coin === 'BTC') {\n      return this.httpClient.post('/v5/buy-btc/create', { address, channel })\n    } else {\n      return this.httpClient.post('/v5/buy-fb/create', { address, channel })\n    }\n  }\n\n  /**\n   * Get application list\n   */\n  async getAppList(): Promise<\n    {\n      tab: string\n      items: any[]\n    }[]\n  > {\n    return this.httpClient.get('/v5/discovery/app-list')\n  }\n\n  /**\n   * Get extra information for an application\n   */\n  async getAppExtra(id: string | number, locale?: string): Promise<AppExtra> {\n    return this.httpClient.get('/v5/discovery/app-extra', {\n      query: {\n        id,\n        ...(locale ? { locale } : {}),\n      },\n    })\n  }\n\n  /**\n   * Get banner list\n   */\n  async getBannerList(): Promise<\n    {\n      id: string\n      img: string\n      link: string\n    }[]\n  > {\n    return this.httpClient.get('/v5/discovery/banner-list')\n  }\n\n  /**\n   * Get application summary\n   */\n  async getAppSummary(): Promise<AppSummary> {\n    return this.httpClient.get('/v5/default/app-summary-v2')\n  }\n\n  /**\n   * Get block activity information\n   */\n  async getBlockActiveInfo(): Promise<{ allTransactions: number; allAddrs: number }> {\n    return this.httpClient.get('/v5/default/block-active-info')\n  }\n\n  async getAnnouncements(\n    cursor: number,\n    size: number\n  ): Promise<{ hasMore: boolean; list: Announcement[] }> {\n    return this.httpClient.get('/v5/announcement/list', {\n      query: {\n        cursor,\n        size,\n      },\n    })\n  }\n}\n","import { BaseHttpClient, HttpClient } from '../client/http-client'\n\nexport class DomainService {\n  constructor(private readonly httpClient: BaseHttpClient) {}\n\n  /**\n   * Get domain information\n   */\n  async getDomainInfo(domain: string) {\n    return this.httpClient.get('/v5/address/search', { query: { domain } })\n  }\n}\n","/**\n * UniSat Wallet API Client - Fully compatible with openapi.ts interface\n *\n * This client provides a fully compatible interface with openapi.ts from unisat-extension\n */\n\n// Export client\nexport { HttpClient } from './client/http-client'\n\n// Export all services\nexport * from './services'\n\n// Export all types\nexport * from './types'\n\n// Export main client class\nimport { BaseHttpClient } from './client/http-client'\nimport {\n  CATService,\n  ConfigService,\n  MarketService,\n  NotificationService,\n  UtilityService,\n} from './services'\nimport { AlkanesService } from './services/alkanes'\nimport { BitcoinService } from './services/bitcoin'\nimport { BRC20Service } from './services/brc20'\nimport { DomainService } from './services/domain'\nimport { InscriptionsService } from './services/inscriptions'\nimport { RunesService } from './services/runes'\n\n/**\n * Unified API Client - Matches all methods from openapi.ts\n */\nexport class UniSatApiClient {\n  public readonly bitcoin: BitcoinService\n  public readonly inscriptions: InscriptionsService\n  public readonly brc20: BRC20Service\n  public readonly runes: RunesService\n  public readonly alkanes: AlkanesService\n  public readonly cat: CATService\n  public readonly market: MarketService\n  public readonly domain: DomainService\n  public readonly utility: UtilityService\n  public readonly config: ConfigService\n  public readonly notification: NotificationService\n\n  private readonly httpClient: BaseHttpClient\n\n  constructor(httpClient: BaseHttpClient) {\n    this.httpClient = httpClient\n\n    // Initialize all services\n    this.bitcoin = new BitcoinService(this.httpClient)\n    this.inscriptions = new InscriptionsService(this.httpClient)\n    this.brc20 = new BRC20Service(this.httpClient)\n    this.runes = new RunesService(this.httpClient)\n    this.alkanes = new AlkanesService(this.httpClient)\n    this.cat = new CATService(this.httpClient)\n    this.market = new MarketService(this.httpClient)\n    this.domain = new DomainService(this.httpClient)\n    this.utility = new UtilityService(this.httpClient)\n    this.config = new ConfigService(this.httpClient)\n    this.notification = new NotificationService(this.httpClient)\n  }\n\n  // ========================================\n  // HTTP Client configuration methods\n  // ========================================\n\n  /**\n   * Set base URL\n   */\n  setBaseURL(baseURL: string): void {\n    this.httpClient.setBaseURL(baseURL)\n  }\n\n  /**\n   * Set request headers\n   */\n  setHeaders(headers: Record<string, string>): void {\n    this.httpClient.setHeaders(headers)\n  }\n\n  /**\n   * Get underlying HTTP client\n   */\n  getHttpClient(): BaseHttpClient {\n    return this.httpClient\n  }\n}\n"]}