{"version":3,"file":"utils.cjs","sources":["../../../../src/wallet/utils.ts"],"sourcesContent":["import { getSDKHeaders } from \"../http\";\n\n/**\n * Base URL for Wallet API endpoints\n */\nexport const BASE_URL = \"https://api.helius.xyz/v1/wallet\";\n\n/**\n * Build a query string from parameters, filtering out undefined and null values\n *\n * @param params - Object with query parameters\n * @returns Query string with leading '?' or empty string\n *\n * @example\n * ```ts\n * buildQueryString({ \"api-key\": \"test\", page: 1, unused: undefined })\n * // Returns: \"?api-key=test&page=1\"\n * ```\n */\nexport const buildQueryString = (params: Record<string, unknown>): string => {\n  const filtered = Object.entries(params)\n    .filter(([, v]) => v !== undefined && v !== null)\n    .map(\n      ([k, v]) => `${encodeURIComponent(k)}=${encodeURIComponent(String(v))}`\n    )\n    .join(\"&\");\n\n  return filtered ? `?${filtered}` : \"\";\n};\n\n/**\n * Handle fetch response with error checking\n *\n * Checks for HTTP errors and API-level errors in the response body.\n * Throws an error if either is found, otherwise returns the parsed JSON.\n *\n * @param res - Fetch Response object\n * @returns Parsed JSON response\n * @throws Error if HTTP error or API error\n *\n * @example\n * ```ts\n * const response = await fetch(url);\n * const data = await handleResponse<MyType>(response);\n * ```\n */\nexport const handleResponse = async <T>(res: Response): Promise<T> => {\n  if (!res.ok) {\n    const errorText = await res.text();\n    throw new Error(`HTTP error! status: ${res.status} - ${errorText}`);\n  }\n\n  const data = await res.json();\n\n  if (data.error) {\n    throw new Error(`Helius error: ${JSON.stringify(data.error)}`);\n  }\n\n  return data as T;\n};\n\n/**\n * Get standard headers for Wallet API requests\n *\n * @param includeContentType - Whether to include Content-Type header (for POST requests)\n * @returns Headers object\n *\n * @example\n * ```ts\n * // For GET requests\n * const headers = getHeaders();\n *\n * // For POST requests\n * const headers = getHeaders(true);\n * ```\n */\nexport const getHeaders = (\n  includeContentType = false,\n  userAgent?: string\n): Record<string, string> => {\n  const headers: Record<string, string> = {\n    ...getSDKHeaders(userAgent),\n  };\n\n  if (includeContentType) {\n    headers[\"Content-Type\"] = \"application/json\";\n  }\n\n  return headers;\n};\n"],"names":["getSDKHeaders"],"mappings":";;;;AAEA;;AAEG;AACI,MAAM,QAAQ,GAAG;AAExB;;;;;;;;;;;AAWG;AACI,MAAM,gBAAgB,GAAG,CAAC,MAA+B,KAAY;AAC1E,IAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM;AACnC,SAAA,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI;SAC/C,GAAG,CACF,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAA,EAAG,kBAAkB,CAAC,CAAC,CAAC,CAAA,CAAA,EAAI,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA,CAAE;SAExE,IAAI,CAAC,GAAG,CAAC;IAEZ,OAAO,QAAQ,GAAG,CAAA,CAAA,EAAI,QAAQ,CAAA,CAAE,GAAG,EAAE;AACvC;AAEA;;;;;;;;;;;;;;;AAeG;MACU,cAAc,GAAG,OAAU,GAAa,KAAgB;AACnE,IAAA,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE;AACX,QAAA,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE;QAClC,MAAM,IAAI,KAAK,CAAC,CAAA,oBAAA,EAAuB,GAAG,CAAC,MAAM,CAAA,GAAA,EAAM,SAAS,CAAA,CAAE,CAAC;IACrE;AAEA,IAAA,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE;AAE7B,IAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,QAAA,MAAM,IAAI,KAAK,CAAC,CAAA,cAAA,EAAiB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA,CAAE,CAAC;IAChE;AAEA,IAAA,OAAO,IAAS;AAClB;AAEA;;;;;;;;;;;;;;AAcG;AACI,MAAM,UAAU,GAAG,CACxB,kBAAkB,GAAG,KAAK,EAC1B,SAAkB,KACQ;AAC1B,IAAA,MAAM,OAAO,GAA2B;QACtC,GAAGA,kBAAa,CAAC,SAAS,CAAC;KAC5B;IAED,IAAI,kBAAkB,EAAE;AACtB,QAAA,OAAO,CAAC,cAAc,CAAC,GAAG,kBAAkB;IAC9C;AAEA,IAAA,OAAO,OAAO;AAChB;;;;;;;"}