@pollar/core 0.5.2 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack:/freighterApi/webpack/universalModuleDefinition","webpack:/freighterApi/webpack/bootstrap","webpack:/freighterApi/src/Users/piyalbasu/Stellar/lyra/@shared/constants/services.ts","webpack:/freighterApi/webpack/runtime/define%20property%20getters","webpack:/freighterApi/webpack/runtime/hasOwnProperty%20shorthand","webpack:/freighterApi/webpack/runtime/make%20namespace%20object","webpack:/freighterApi/src/Users/piyalbasu/Stellar/lyra/@shared/api/helpers/extensionMessaging.ts","webpack:/freighterApi/src/Users/piyalbasu/Stellar/lyra/@stellar/freighter-api/src/getPublicKey.ts","webpack:/freighterApi/src/Users/piyalbasu/Stellar/lyra/@shared/api/external.ts","webpack:/freighterApi/src/Users/piyalbasu/Stellar/lyra/@stellar/freighter-api/src/signTransaction.ts","webpack:/freighterApi/src/Users/piyalbasu/Stellar/lyra/@stellar/freighter-api/src/signBlob.ts","webpack:/freighterApi/src/Users/piyalbasu/Stellar/lyra/@stellar/freighter-api/src/signAuthEntry.ts","webpack:/freighterApi/src/Users/piyalbasu/Stellar/lyra/@stellar/freighter-api/src/isConnected.ts","webpack:/freighterApi/src/Users/piyalbasu/Stellar/lyra/@stellar/freighter-api/src/getNetwork.ts","webpack:/freighterApi/src/Users/piyalbasu/Stellar/lyra/@stellar/freighter-api/src/getNetworkDetails.ts","webpack:/freighterApi/src/Users/piyalbasu/Stellar/lyra/@stellar/freighter-api/src/isAllowed.ts","webpack:/freighterApi/src/Users/piyalbasu/Stellar/lyra/@stellar/freighter-api/src/setAllowed.ts","webpack:/freighterApi/src/Users/piyalbasu/Stellar/lyra/@stellar/freighter-api/src/getUserInfo.ts","webpack:/freighterApi/src/Users/piyalbasu/Stellar/lyra/@stellar/freighter-api/src/requestAccess.ts","webpack:/freighterApi/src/Users/piyalbasu/Stellar/lyra/@stellar/freighter-api/src/index.ts","../../../node_modules/openapi-fetch/src/index.js","../src/api/client.ts","../src/api/endpoints/kyc.ts","../src/api/endpoints/ramps.ts","../src/stellar/StellarClient.ts","../src/types.ts","../src/wallets/FreighterAdapter.ts","../src/wallets/types.ts","../src/wallets/AlbedoAdapter.ts","../src/client/session.ts","../src/client/stream.ts","../src/client/auth/authenticate.ts","../src/client/auth/deps.ts","../src/client/auth/emailFlow.ts","../src/client/auth/oauthFlow.ts","../src/client/auth/walletFlow.ts","../src/client/client.ts"],"names":["root","factory","exports","module","define","amd","this","SERVICE_TYPES","EXTERNAL_SERVICE_TYPES","__webpack_require__","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","e","sendMessageToContentScript","msg","MESSAGE_ID","Date","now","Math","random","window","postMessage","source","messageId","location","origin","Promise","resolve","requestTimeout","type","REQUEST_CONNECTION_STATUS","REQUEST_PUBLIC_KEY","setTimeout","isConnected","publicKey","removeEventListener","messageListener","event","r","data","t","messagedId","clearTimeout","addEventListener","getPublicKey","isBrowser","async","response","error","console","requestPublicKey","signTransaction","transactionXdr","opts","accountToSign","network","_accountToSign","networkPassphrase","signedTransaction","SUBMIT_TRANSACTION","signBlob","blob","signedBlob","SUBMIT_BLOB","signAuthEntry","entryXdr","signedAuthEntry","SUBMIT_AUTH_ENTRY","freighter","requestConnectionStatus","getNetwork","REQUEST_NETWORK","requestNetwork","getNetworkDetails","networkDetails","networkName","networkUrl","sorobanRpcUrl","undefined","REQUEST_NETWORK_DETAILS","isAllowed","REQUEST_ALLOWED_STATUS","requestAllowedStatus","setAllowed","SET_ALLOWED_STATUS","setAllowedStatus","getUserInfo","userInfo","REQUEST_USER_INFO","requestUserInfo","REQUEST_ACCESS","requestAccess","fetch","final","joiner","WalletType"],"mappings":"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","file":"index.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"freighterApi\"] = factory();\n\telse\n\t\troot[\"freighterApi\"] = factory();\n})(this, () => {\nreturn ","// The require scope\nvar __webpack_require__ = {};\n\n","export enum SERVICE_TYPES {\n CREATE_ACCOUNT = \"CREATE_ACCOUNT\",\n FUND_ACCOUNT = \"FUND_ACCOUNT\",\n ADD_ACCOUNT = \"ADD_ACCOUNT\",\n IMPORT_ACCOUNT = \"IMPORT_ACCOUNT\",\n IMPORT_HARDWARE_WALLET = \"IMPORT_HARDWARE_WALLET\",\n LOAD_ACCOUNT = \"LOAD_ACCOUNT\",\n MAKE_ACCOUNT_ACTIVE = \"MAKE_ACCOUNT_ACTIVE\",\n UPDATE_ACCOUNT_NAME = \"UPDATE_ACCOUNT_NAME\",\n GET_MNEMONIC_PHRASE = \"GET_MNEMONIC_PHRASE\",\n CONFIRM_MNEMONIC_PHRASE = \"CONFIRM_MNEMONIC_PHRASE\",\n CONFIRM_MIGRATED_MNEMONIC_PHRASE = \"CONFIRM_MIGRATED_MNEMONIC_PHRASE\",\n RECOVER_ACCOUNT = \"RECOVER_ACCOUNT\",\n CONFIRM_PASSWORD = \"CONFIRM_PASSWORD\",\n REJECT_ACCESS = \"REJECT_ACCESS\",\n GRANT_ACCESS = \"GRANT_ACCESS\",\n SIGN_TRANSACTION = \"SIGN_TRANSACTION\",\n SIGN_BLOB = \"SIGN_BLOB\",\n SIGN_AUTH_ENTRY = \"SIGN_AUTH_ENTRY\",\n HANDLE_SIGNED_HW_TRANSACTION = \"HANDLE_SIGNED_HW_TRANSACTION\",\n REJECT_TRANSACTION = \"REJECT_TRANSACTION\",\n SIGN_FREIGHTER_TRANSACTION = \"SIGN_FREIGHTER_TRANSACTION\",\n SIGN_FREIGHTER_SOROBAN_TRANSACTION = \"SIGN_FREIGHTER_SOROBAN_TRANSACTION\",\n ADD_RECENT_ADDRESS = \"ADD_RECENT_ADDRESS\",\n LOAD_RECENT_ADDRESSES = \"LOAD_RECENT_ADDRESSES\",\n SIGN_OUT = \"SIGN_OUT\",\n SHOW_BACKUP_PHRASE = \"SHOW_BACKUP_PHRASE\",\n SAVE_ALLOWLIST = \"SAVE_ALLOWLIST\",\n SAVE_SETTINGS = \"SAVE_SETTINGS\",\n LOAD_SETTINGS = \"LOAD_SETTINGS\",\n GET_CACHED_ASSET_ICON = \"GET_CACHED_ASSET_ICON\",\n CACHE_ASSET_ICON = \"CACHE_ASSET_ICON\",\n GET_CACHED_ASSET_DOMAIN = \"GET_CACHED_ASSET_DOMAIN\",\n CACHE_ASSET_DOMAIN = \"CACHE_ASSET_DOMAIN\",\n GET_BLOCKED_ACCOUNTS = \"GET_BLOCKED_ACCOUNTS\",\n GET_BLOCKED_DOMAINS = \"GET_BLOCKED_DOMAINS\",\n ADD_CUSTOM_NETWORK = \"ADD_CUSTOM_NETWORK\",\n CHANGE_NETWORK = \"CHANGE_NETWORK\",\n REMOVE_CUSTOM_NETWORK = \"REMOVE_CUSTOM_NETWORK\",\n EDIT_CUSTOM_NETWORK = \"EDIT_CUSTOM_NETWORK\",\n RESET_EXP_DATA = \"RESET_EXP_DATA\",\n ADD_TOKEN_ID = \"ADD_TOKEN_ID\",\n GET_TOKEN_IDS = \"GET_TOKEN_IDS\",\n REMOVE_TOKEN_ID = \"REMOVE_TOKEN_ID\",\n GET_MIGRATABLE_ACCOUNTS = \"GET_MIGRATABLE_ACCOUNTS\",\n GET_MIGRATED_MNEMONIC_PHRASE = \"GET_MIGRATED_MNEMONIC_PHRASE\",\n MIGRATE_ACCOUNTS = \"MIGRATE_ACCOUNTS\",\n}\n\nexport enum EXTERNAL_SERVICE_TYPES {\n REQUEST_ACCESS = \"REQUEST_ACCESS\",\n REQUEST_PUBLIC_KEY = \"REQUEST_PUBLIC_KEY\",\n SUBMIT_TRANSACTION = \"SUBMIT_TRANSACTION\",\n SUBMIT_BLOB = \"SUBMIT_BLOB\",\n SUBMIT_AUTH_ENTRY = \"SUBMIT_AUTH_ENTRY\",\n REQUEST_NETWORK = \"REQUEST_NETWORK\",\n REQUEST_NETWORK_DETAILS = \"REQUEST_NETWORK_DETAILS\",\n REQUEST_CONNECTION_STATUS = \"REQUEST_CONNECTION_STATUS\",\n REQUEST_ALLOWED_STATUS = \"REQUEST_ALLOWED_STATUS\",\n SET_ALLOWED_STATUS = \"SET_ALLOWED_STATUS\",\n REQUEST_USER_INFO = \"REQUEST_USER_INFO\",\n}\n\nexport const EXTERNAL_MSG_REQUEST = \"FREIGHTER_EXTERNAL_MSG_REQUEST\";\nexport const EXTERNAL_MSG_RESPONSE = \"FREIGHTER_EXTERNAL_MSG_RESPONSE\";\n\ndeclare const DEV_SERVER: string;\nconst _DEV_SERVER = DEV_SERVER;\nexport { _DEV_SERVER as DEV_SERVER };\n\ndeclare const DEV_EXTENSION: string;\nconst _DEV_EXTENSION = DEV_EXTENSION;\nexport { _DEV_EXTENSION as DEV_EXTENSION };\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import browser from \"webextension-polyfill\";\nimport {\n DEV_SERVER,\n EXTERNAL_MSG_RESPONSE,\n EXTERNAL_MSG_REQUEST,\n EXTERNAL_SERVICE_TYPES,\n SERVICE_TYPES,\n} from \"../../constants/services\";\nimport { Response } from \"../types\";\n\ninterface Msg {\n [key: string]: any;\n type: EXTERNAL_SERVICE_TYPES | SERVICE_TYPES;\n}\n\nexport const sendMessageToContentScript = (msg: Msg): Promise<Response> => {\n /* \n In the case of multiple calls coming in sequentially, we use this MESSAGE_ID to make sure we're responding to\n the appropriate message sender. Otherwise, we can run into race conditions where we simply resolve all \n sent messages with the first thing that comes back.\n */\n const MESSAGE_ID = Date.now() + Math.random();\n\n window.postMessage(\n { source: EXTERNAL_MSG_REQUEST, messageId: MESSAGE_ID, ...msg },\n window.location.origin,\n );\n return new Promise((resolve) => {\n let requestTimeout = 0;\n\n /* \n In the case that Freighter is not installed at all, any messages to \n background from freighter-api will hang forever and not respond in any way. \n This is especially a problem for the isConnected method, because this is \n likely to be called in a situation where Freighter isn't installed.\n To prevent this, we add a timeout to automatically resolve in the event \n Freighter doesn't respond in a timely fashion to this method.\n */\n if (\n msg.type === EXTERNAL_SERVICE_TYPES.REQUEST_CONNECTION_STATUS ||\n msg.type === EXTERNAL_SERVICE_TYPES.REQUEST_PUBLIC_KEY\n ) {\n requestTimeout = setTimeout(() => {\n resolve({\n isConnected: false,\n publicKey: \"\",\n } as Response);\n window.removeEventListener(\"message\", messageListener);\n }, 2000);\n }\n\n const messageListener = (event: { source: any; data: Response }) => {\n // We only accept messages from ourselves\n if (event.source !== window) return;\n // Only respond to messages tagged as being from our content script\n if (event?.data?.source !== EXTERNAL_MSG_RESPONSE) return;\n // Only respond to messages that this instance of sendMessageToContentScript sent\n if (event?.data?.messagedId !== MESSAGE_ID) return;\n\n resolve(event.data);\n window.removeEventListener(\"message\", messageListener);\n clearTimeout(requestTimeout);\n };\n window.addEventListener(\"message\", messageListener, false);\n });\n};\n\nexport const sendMessageToBackground = async (msg: Msg): Promise<Response> => {\n let res;\n if (DEV_SERVER) {\n // treat this as an external call because we're making the call from the browser, not the popup\n res = await sendMessageToContentScript(msg);\n } else {\n res = await browser.runtime.sendMessage(msg);\n }\n\n return res;\n};\n","import { requestPublicKey } from \"@shared/api/external\";\nimport { isBrowser } from \".\";\n\nexport const getPublicKey = (): Promise<string> =>\n isBrowser ? requestPublicKey() : Promise.resolve(\"\");\n","import { EXTERNAL_SERVICE_TYPES } from \"../constants/services\";\nimport { NetworkDetails } from \"../constants/stellar\";\nimport { sendMessageToContentScript } from \"./helpers/extensionMessaging\";\nimport { UserInfo } from \"./types\";\n\nexport const requestAccess = async (): Promise<string> => {\n let response = { publicKey: \"\", error: \"\" };\n try {\n response = await sendMessageToContentScript({\n type: EXTERNAL_SERVICE_TYPES.REQUEST_ACCESS,\n });\n } catch (e) {\n console.error(e);\n }\n\n const { publicKey, error } = response;\n\n if (error) {\n throw error;\n }\n return publicKey;\n};\n\nexport const requestPublicKey = async (): Promise<string> => {\n let response = { publicKey: \"\", error: \"\" };\n try {\n response = await sendMessageToContentScript({\n type: EXTERNAL_SERVICE_TYPES.REQUEST_PUBLIC_KEY,\n });\n } catch (e) {\n console.error(e);\n }\n\n const { publicKey, error } = response;\n\n if (error) {\n throw error;\n }\n return publicKey;\n};\n\nexport const submitTransaction = async (\n transactionXdr: string,\n opts?:\n | string\n | {\n network?: string;\n accountToSign?: string;\n networkPassphrase?: string;\n },\n accountToSign?: string,\n): Promise<string> => {\n let network = \"\";\n let _accountToSign = \"\";\n let networkPassphrase = \"\";\n\n /* \n As of v1.3.0, this method now accepts an object as its second param. \n Previously, it accepted optional second and third string parameters.\n This logic maintains backwards compatibility for older versions\n */\n if (typeof opts === \"object\") {\n network = opts.network || \"\";\n _accountToSign = opts.accountToSign || \"\";\n networkPassphrase = opts.networkPassphrase || \"\";\n } else {\n network = opts || \"\";\n _accountToSign = accountToSign || \"\";\n }\n\n let response = { signedTransaction: \"\", error: \"\" };\n try {\n response = await sendMessageToContentScript({\n transactionXdr,\n network,\n networkPassphrase,\n accountToSign: _accountToSign,\n type: EXTERNAL_SERVICE_TYPES.SUBMIT_TRANSACTION,\n });\n } catch (e) {\n console.error(e);\n throw e;\n }\n const { signedTransaction, error } = response;\n\n if (error) {\n throw error;\n }\n return signedTransaction;\n};\n\nexport const submitBlob = async (\n blob: string,\n opts?: {\n accountToSign?: string;\n },\n): Promise<string> => {\n let response = { signedBlob: \"\", error: \"\" };\n const _opts = opts || {};\n const accountToSign = _opts.accountToSign || \"\";\n try {\n response = await sendMessageToContentScript({\n blob,\n accountToSign,\n type: EXTERNAL_SERVICE_TYPES.SUBMIT_BLOB,\n });\n } catch (e) {\n console.error(e);\n throw e;\n }\n const { signedBlob, error } = response;\n\n if (error) {\n throw error;\n }\n return signedBlob;\n};\n\nexport const submitAuthEntry = async (\n entryXdr: string,\n opts?: {\n accountToSign?: string;\n },\n): Promise<string> => {\n let response = { signedAuthEntry: \"\", error: \"\" };\n const _opts = opts || {};\n const accountToSign = _opts.accountToSign || \"\";\n try {\n response = await sendMessageToContentScript({\n entryXdr,\n accountToSign,\n type: EXTERNAL_SERVICE_TYPES.SUBMIT_AUTH_ENTRY,\n });\n } catch (e) {\n console.error(e);\n }\n const { signedAuthEntry, error } = response;\n\n if (error) {\n throw error;\n }\n return signedAuthEntry;\n};\n\nexport const requestNetwork = async (): Promise<string> => {\n let response = { network: \"\", error: \"\" };\n try {\n response = await sendMessageToContentScript({\n type: EXTERNAL_SERVICE_TYPES.REQUEST_NETWORK,\n });\n } catch (e) {\n console.error(e);\n }\n\n const { network, error } = response;\n\n if (error) {\n throw error;\n }\n return network;\n};\n\nexport const requestNetworkDetails = async (): Promise<{\n network: string;\n networkUrl: string;\n networkPassphrase: string;\n sorobanRpcUrl?: string;\n}> => {\n let response = {\n networkDetails: {\n network: \"\",\n networkName: \"\",\n networkUrl: \"\",\n networkPassphrase: \"\",\n sorobanRpcUrl: undefined,\n } as NetworkDetails,\n error: \"\",\n };\n try {\n response = await sendMessageToContentScript({\n type: EXTERNAL_SERVICE_TYPES.REQUEST_NETWORK_DETAILS,\n });\n } catch (e) {\n console.error(e);\n }\n\n const { networkDetails, error } = response;\n const {\n network,\n networkUrl,\n networkPassphrase,\n sorobanRpcUrl,\n } = networkDetails;\n\n if (error) {\n throw error;\n }\n return { network, networkUrl, networkPassphrase, sorobanRpcUrl };\n};\n\nexport const requestConnectionStatus = async (): Promise<boolean> => {\n let response = {\n isConnected: false,\n };\n\n try {\n response = await sendMessageToContentScript({\n type: EXTERNAL_SERVICE_TYPES.REQUEST_CONNECTION_STATUS,\n });\n } catch (e) {\n console.error(e);\n }\n\n return response.isConnected;\n};\n\nexport const requestAllowedStatus = async (): Promise<boolean> => {\n let response = {\n isAllowed: false,\n };\n\n try {\n response = await sendMessageToContentScript({\n type: EXTERNAL_SERVICE_TYPES.REQUEST_ALLOWED_STATUS,\n });\n } catch (e) {\n console.error(e);\n }\n\n return response.isAllowed;\n};\n\nexport const setAllowedStatus = async (): Promise<boolean> => {\n let response = {\n isAllowed: false,\n error: \"\",\n };\n\n try {\n response = await sendMessageToContentScript({\n type: EXTERNAL_SERVICE_TYPES.SET_ALLOWED_STATUS,\n });\n } catch (e) {\n console.error(e);\n }\n\n const { isAllowed, error } = response;\n\n if (error) {\n throw error;\n }\n return isAllowed;\n};\n\nexport const requestUserInfo = async (): Promise<UserInfo> => {\n let response = { userInfo: { publicKey: \"\" }, error: \"\" };\n try {\n response = await sendMessageToContentScript({\n type: EXTERNAL_SERVICE_TYPES.REQUEST_USER_INFO,\n });\n } catch (e) {\n console.error(e);\n }\n\n const { userInfo, error } = response;\n\n if (error) {\n throw error;\n }\n return userInfo;\n};\n","import { submitTransaction } from \"@shared/api/external\";\nimport { isBrowser } from \".\";\n\nexport const signTransaction = (\n transactionXdr: string,\n opts?: {\n network?: string;\n networkPassphrase?: string;\n accountToSign?: string;\n }\n): Promise<string> =>\n isBrowser ? submitTransaction(transactionXdr, opts) : Promise.resolve(\"\");\n","import { submitBlob } from \"@shared/api/external\";\nimport { isBrowser } from \".\";\n\nexport const signBlob = (\n blob: string,\n opts?: {\n accountToSign?: string;\n }\n): Promise<string> =>\n isBrowser ? submitBlob(blob, opts) : Promise.resolve(\"\");\n","import { submitAuthEntry } from \"@shared/api/external\";\nimport { isBrowser } from \".\";\n\nexport const signAuthEntry = (\n entryXdr: string,\n opts?: {\n accountToSign?: string;\n }\n): Promise<string> =>\n isBrowser ? submitAuthEntry(entryXdr, opts) : Promise.resolve(\"\");\n","import { requestConnectionStatus } from \"@shared/api/external\";\nimport { isBrowser } from \".\";\n\nexport const isConnected = (): Promise<boolean> => {\n if (!isBrowser) return Promise.resolve(false);\n\n if (window.freighter) {\n return Promise.resolve(window.freighter);\n }\n\n return requestConnectionStatus();\n};\n","import { requestNetwork } from \"@shared/api/external\";\nimport { isBrowser } from \".\";\n\nexport const getNetwork = (): Promise<string> =>\n isBrowser ? requestNetwork() : Promise.resolve(\"\");\n","import { requestNetworkDetails } from \"@shared/api/external\";\nimport { isBrowser } from \".\";\n\nexport const getNetworkDetails = (): Promise<{\n network: string;\n networkUrl: string;\n networkPassphrase: string;\n sorobanRpcUrl?: string;\n}> =>\n isBrowser\n ? requestNetworkDetails()\n : Promise.resolve({\n network: \"\",\n networkUrl: \"\",\n networkPassphrase: \"\",\n sorobanRpcUrl: \"\",\n });\n","import { requestAllowedStatus } from \"@shared/api/external\";\nimport { isBrowser } from \".\";\n\nexport const isAllowed = (): Promise<boolean> =>\n isBrowser ? requestAllowedStatus() : Promise.resolve(false);\n","import { setAllowedStatus } from \"@shared/api/external\";\nimport { isBrowser } from \".\";\n\nexport const setAllowed = (): Promise<boolean> =>\n isBrowser ? setAllowedStatus() : Promise.resolve(false);\n","import { requestUserInfo } from \"@shared/api/external\";\nimport { isBrowser } from \".\";\n\nexport const getUserInfo = (): Promise<{ publicKey: string }> =>\n isBrowser ? requestUserInfo() : Promise.resolve({ publicKey: \"\" });\n","import { requestAccess as requestAccessApi } from \"@shared/api/external\";\nimport { isBrowser } from \".\";\n\nexport const requestAccess = (): Promise<string> =>\n isBrowser ? requestAccessApi() : Promise.resolve(\"\");\n","import { getPublicKey } from \"./getPublicKey\";\nimport { signTransaction } from \"./signTransaction\";\nimport { signBlob } from \"./signBlob\";\nimport { signAuthEntry } from \"./signAuthEntry\";\nimport { isConnected } from \"./isConnected\";\nimport { getNetwork } from \"./getNetwork\";\nimport { getNetworkDetails } from \"./getNetworkDetails\";\nimport { isAllowed } from \"./isAllowed\";\nimport { setAllowed } from \"./setAllowed\";\nimport { getUserInfo } from \"./getUserInfo\";\nimport { requestAccess } from \"./requestAccess\";\n\nexport const isBrowser = typeof window !== \"undefined\";\n\nexport {\n getPublicKey,\n signTransaction,\n signBlob,\n signAuthEntry,\n isConnected,\n getNetwork,\n getNetworkDetails,\n isAllowed,\n setAllowed,\n getUserInfo,\n requestAccess,\n};\nexport default {\n getPublicKey,\n signTransaction,\n signBlob,\n signAuthEntry,\n isConnected,\n getNetwork,\n getNetworkDetails,\n isAllowed,\n setAllowed,\n getUserInfo,\n requestAccess,\n};\n","// settings & const\nconst PATH_PARAM_RE = /\\{[^{}]+\\}/g;\n\nconst supportsRequestInitExt = () => {\n return (\n typeof process === \"object\" &&\n Number.parseInt(process?.versions?.node?.substring(0, 2)) >= 18 &&\n process.versions.undici\n );\n};\n\n/**\n * Returns a cheap, non-cryptographically-secure random ID\n * Courtesy of @imranbarbhuiya (https://github.com/imranbarbhuiya)\n */\nexport function randomID() {\n return Math.random().toString(36).slice(2, 11);\n}\n\n/**\n * Create an openapi-fetch client.\n * @type {import(\"./index.js\").default}\n */\nexport default function createClient(clientOptions) {\n let {\n baseUrl = \"\",\n Request: CustomRequest = globalThis.Request,\n fetch: baseFetch = globalThis.fetch,\n querySerializer: globalQuerySerializer,\n bodySerializer: globalBodySerializer,\n pathSerializer: globalPathSerializer,\n headers: baseHeaders,\n requestInitExt = undefined,\n ...baseOptions\n } = { ...clientOptions };\n requestInitExt = supportsRequestInitExt() ? requestInitExt : undefined;\n baseUrl = removeTrailingSlash(baseUrl);\n const globalMiddlewares = [];\n\n /**\n * Per-request fetch (keeps settings created in createClient()\n * @param {T} url\n * @param {import('./index.js').FetchOptions<T>} fetchOptions\n */\n async function coreFetch(schemaPath, fetchOptions) {\n const {\n baseUrl: localBaseUrl,\n fetch = baseFetch,\n Request = CustomRequest,\n headers,\n params = {},\n parseAs = \"json\",\n querySerializer: requestQuerySerializer,\n bodySerializer = globalBodySerializer ?? defaultBodySerializer,\n pathSerializer: requestPathSerializer,\n body,\n middleware: requestMiddlewares = [],\n ...init\n } = fetchOptions || {};\n let finalBaseUrl = baseUrl;\n if (localBaseUrl) {\n finalBaseUrl = removeTrailingSlash(localBaseUrl) ?? baseUrl;\n }\n\n let querySerializer =\n typeof globalQuerySerializer === \"function\"\n ? globalQuerySerializer\n : createQuerySerializer(globalQuerySerializer);\n if (requestQuerySerializer) {\n querySerializer =\n typeof requestQuerySerializer === \"function\"\n ? requestQuerySerializer\n : createQuerySerializer({\n ...(typeof globalQuerySerializer === \"object\" ? globalQuerySerializer : {}),\n ...requestQuerySerializer,\n });\n }\n\n const pathSerializer = requestPathSerializer || globalPathSerializer || defaultPathSerializer;\n\n const serializedBody =\n body === undefined\n ? undefined\n : bodySerializer(\n body,\n // Note: we declare mergeHeaders() both here and below because it’s a bit of a chicken-or-egg situation:\n // bodySerializer() needs all headers so we aren’t dropping ones set by the user, however,\n // the result of this ALSO sets the lowest-priority content-type header. So we re-merge below,\n // setting the content-type at the very beginning to be overwritten.\n // Lastly, based on the way headers work, it’s not a simple “present-or-not” check becauase null intentionally un-sets headers.\n mergeHeaders(baseHeaders, headers, params.header),\n );\n const finalHeaders = mergeHeaders(\n // with no body, we should not to set Content-Type\n serializedBody === undefined ||\n // if serialized body is FormData; browser will correctly set Content-Type & boundary expression\n serializedBody instanceof FormData\n ? {}\n : {\n \"Content-Type\": \"application/json\",\n },\n baseHeaders,\n headers,\n params.header,\n );\n\n // Client level middleware take priority over request-level middleware\n const finalMiddlewares = [...globalMiddlewares, ...requestMiddlewares];\n\n const requestInit = {\n redirect: \"follow\",\n ...baseOptions,\n ...init,\n body: serializedBody,\n headers: finalHeaders,\n };\n\n let id;\n let options;\n let request = new Request(\n createFinalURL(schemaPath, { baseUrl: finalBaseUrl, params, querySerializer, pathSerializer }),\n requestInit,\n );\n let response;\n\n /** Add custom parameters to Request object */\n for (const key in init) {\n if (!(key in request)) {\n request[key] = init[key];\n }\n }\n\n if (finalMiddlewares.length) {\n id = randomID();\n\n // middleware (request)\n options = Object.freeze({\n baseUrl: finalBaseUrl,\n fetch,\n parseAs,\n querySerializer,\n bodySerializer,\n pathSerializer,\n });\n for (const m of finalMiddlewares) {\n if (m && typeof m === \"object\" && typeof m.onRequest === \"function\") {\n const result = await m.onRequest({\n request,\n schemaPath,\n params,\n options,\n id,\n });\n if (result) {\n if (result instanceof Request) {\n request = result;\n } else if (result instanceof Response) {\n response = result;\n break;\n } else {\n throw new Error(\"onRequest: must return new Request() or Response() when modifying the request\");\n }\n }\n }\n }\n }\n\n if (!response) {\n // fetch!\n try {\n response = await fetch(request, requestInitExt);\n } catch (error) {\n let errorAfterMiddleware = error;\n // middleware (error)\n // execute in reverse-array order (first priority gets last transform)\n if (finalMiddlewares.length) {\n for (let i = finalMiddlewares.length - 1; i >= 0; i--) {\n const m = finalMiddlewares[i];\n if (m && typeof m === \"object\" && typeof m.onError === \"function\") {\n const result = await m.onError({\n request,\n error: errorAfterMiddleware,\n schemaPath,\n params,\n options,\n id,\n });\n if (result) {\n // if error is handled by returning a response, skip remaining middleware\n if (result instanceof Response) {\n errorAfterMiddleware = undefined;\n response = result;\n break;\n }\n\n if (result instanceof Error) {\n errorAfterMiddleware = result;\n continue;\n }\n\n throw new Error(\"onError: must return new Response() or instance of Error\");\n }\n }\n }\n }\n\n // rethrow error if not handled by middleware\n if (errorAfterMiddleware) {\n throw errorAfterMiddleware;\n }\n }\n\n // middleware (response)\n // execute in reverse-array order (first priority gets last transform)\n if (finalMiddlewares.length) {\n for (let i = finalMiddlewares.length - 1; i >= 0; i--) {\n const m = finalMiddlewares[i];\n if (m && typeof m === \"object\" && typeof m.onResponse === \"function\") {\n const result = await m.onResponse({\n request,\n response,\n schemaPath,\n params,\n options,\n id,\n });\n if (result) {\n if (!(result instanceof Response)) {\n throw new Error(\"onResponse: must return new Response() when modifying the response\");\n }\n response = result;\n }\n }\n }\n }\n }\n\n const contentLength = response.headers.get(\"Content-Length\");\n // handle empty content\n if (\n response.status === 204 ||\n request.method === \"HEAD\" ||\n (contentLength === \"0\" && !response.headers.get(\"Transfer-Encoding\")?.includes(\"chunked\"))\n ) {\n return response.ok ? { data: undefined, response } : { error: undefined, response };\n }\n\n // parse response (falling back to .text() when necessary)\n if (response.ok) {\n const getResponseData = async () => {\n // if \"stream\", skip parsing entirely\n if (parseAs === \"stream\") {\n return response.body;\n }\n\n if (parseAs === \"json\" && !contentLength) {\n // use text() when no content-length is provided to avoid errors parsing empty bodies (200 with no content)\n const raw = await response.text();\n return raw ? JSON.parse(raw) : undefined;\n }\n\n return await response[parseAs]();\n };\n return { data: await getResponseData(), response };\n }\n\n // handle errors\n let error = await response.text();\n try {\n error = JSON.parse(error); // attempt to parse as JSON\n } catch {\n // noop\n }\n return { error, response };\n }\n\n return {\n request(method, url, init) {\n return coreFetch(url, { ...init, method: method.toUpperCase() });\n },\n /** Call a GET endpoint */\n GET(url, init) {\n return coreFetch(url, { ...init, method: \"GET\" });\n },\n /** Call a PUT endpoint */\n PUT(url, init) {\n return coreFetch(url, { ...init, method: \"PUT\" });\n },\n /** Call a POST endpoint */\n POST(url, init) {\n return coreFetch(url, { ...init, method: \"POST\" });\n },\n /** Call a DELETE endpoint */\n DELETE(url, init) {\n return coreFetch(url, { ...init, method: \"DELETE\" });\n },\n /** Call a OPTIONS endpoint */\n OPTIONS(url, init) {\n return coreFetch(url, { ...init, method: \"OPTIONS\" });\n },\n /** Call a HEAD endpoint */\n HEAD(url, init) {\n return coreFetch(url, { ...init, method: \"HEAD\" });\n },\n /** Call a PATCH endpoint */\n PATCH(url, init) {\n return coreFetch(url, { ...init, method: \"PATCH\" });\n },\n /** Call a TRACE endpoint */\n TRACE(url, init) {\n return coreFetch(url, { ...init, method: \"TRACE\" });\n },\n /** Register middleware */\n use(...middleware) {\n for (const m of middleware) {\n if (!m) {\n continue;\n }\n if (typeof m !== \"object\" || !(\"onRequest\" in m || \"onResponse\" in m || \"onError\" in m)) {\n throw new Error(\"Middleware must be an object with one of `onRequest()`, `onResponse() or `onError()`\");\n }\n globalMiddlewares.push(m);\n }\n },\n /** Unregister middleware */\n eject(...middleware) {\n for (const m of middleware) {\n const i = globalMiddlewares.indexOf(m);\n if (i !== -1) {\n globalMiddlewares.splice(i, 1);\n }\n }\n },\n };\n}\n\nclass PathCallForwarder {\n constructor(client, url) {\n this.client = client;\n this.url = url;\n }\n\n GET = (init) => {\n return this.client.GET(this.url, init);\n };\n PUT = (init) => {\n return this.client.PUT(this.url, init);\n };\n POST = (init) => {\n return this.client.POST(this.url, init);\n };\n DELETE = (init) => {\n return this.client.DELETE(this.url, init);\n };\n OPTIONS = (init) => {\n return this.client.OPTIONS(this.url, init);\n };\n HEAD = (init) => {\n return this.client.HEAD(this.url, init);\n };\n PATCH = (init) => {\n return this.client.PATCH(this.url, init);\n };\n TRACE = (init) => {\n return this.client.TRACE(this.url, init);\n };\n}\n\nclass PathClientProxyHandler {\n constructor() {\n this.client = null;\n }\n\n // Assume the property is an URL.\n get(coreClient, url) {\n const forwarder = new PathCallForwarder(coreClient, url);\n this.client[url] = forwarder;\n return forwarder;\n }\n}\n\n/**\n * Wrap openapi-fetch client to support a path based API.\n * @type {import(\"./index.js\").wrapAsPathBasedClient}\n */\nexport function wrapAsPathBasedClient(coreClient) {\n const handler = new PathClientProxyHandler();\n const proxy = new Proxy(coreClient, handler);\n\n // Put the proxy on the prototype chain of the actual client.\n // This means if we do not have a memoized PathCallForwarder,\n // we fall back to the proxy to synthesize it.\n // However, the proxy itself is not on the hot-path (if we fetch the same\n // endpoint multiple times, only the first call will hit the proxy).\n function Client() {}\n Client.prototype = proxy;\n\n const client = new Client();\n\n // Feed the client back to the proxy handler so it can store the generated\n // PathCallForwarder.\n handler.client = client;\n\n return client;\n}\n\n/**\n * Convenience method to an openapi-fetch path based client.\n * Strictly equivalent to `wrapAsPathBasedClient(createClient(...))`.\n * @type {import(\"./index.js\").createPathBasedClient}\n */\nexport function createPathBasedClient(clientOptions) {\n return wrapAsPathBasedClient(createClient(clientOptions));\n}\n\n// utils\n\n/**\n * Serialize primitive param values\n * @type {import(\"./index.js\").serializePrimitiveParam}\n */\nexport function serializePrimitiveParam(name, value, options) {\n if (value === undefined || value === null) {\n return \"\";\n }\n if (typeof value === \"object\") {\n throw new Error(\n \"Deeply-nested arrays/objects aren’t supported. Provide your own `querySerializer()` to handle these.\",\n );\n }\n return `${name}=${options?.allowReserved === true ? value : encodeURIComponent(value)}`;\n}\n\n/**\n * Serialize object param (shallow only)\n * @type {import(\"./index.js\").serializeObjectParam}\n */\nexport function serializeObjectParam(name, value, options) {\n if (!value || typeof value !== \"object\") {\n return \"\";\n }\n const values = [];\n const joiner =\n {\n simple: \",\",\n label: \".\",\n matrix: \";\",\n }[options.style] || \"&\";\n\n // explode: false\n if (options.style !== \"deepObject\" && options.explode === false) {\n for (const k in value) {\n values.push(k, options.allowReserved === true ? value[k] : encodeURIComponent(value[k]));\n }\n const final = values.join(\",\"); // note: values are always joined by comma in explode: false (but joiner can prefix)\n switch (options.style) {\n case \"form\": {\n return `${name}=${final}`;\n }\n case \"label\": {\n return `.${final}`;\n }\n case \"matrix\": {\n return `;${name}=${final}`;\n }\n default: {\n return final;\n }\n }\n }\n\n // explode: true\n for (const k in value) {\n const finalName = options.style === \"deepObject\" ? `${name}[${k}]` : k;\n values.push(serializePrimitiveParam(finalName, value[k], options));\n }\n const final = values.join(joiner);\n return options.style === \"label\" || options.style === \"matrix\" ? `${joiner}${final}` : final;\n}\n\n/**\n * Serialize array param (shallow only)\n * @type {import(\"./index.js\").serializeArrayParam}\n */\nexport function serializeArrayParam(name, value, options) {\n if (!Array.isArray(value)) {\n return \"\";\n }\n\n // explode: false\n if (options.explode === false) {\n const joiner = { form: \",\", spaceDelimited: \"%20\", pipeDelimited: \"|\" }[options.style] || \",\"; // note: for arrays, joiners vary wildly based on style + explode behavior\n const final = (options.allowReserved === true ? value : value.map((v) => encodeURIComponent(v))).join(joiner);\n switch (options.style) {\n case \"simple\": {\n return final;\n }\n case \"label\": {\n return `.${final}`;\n }\n case \"matrix\": {\n return `;${name}=${final}`;\n }\n // case \"spaceDelimited\":\n // case \"pipeDelimited\":\n default: {\n return `${name}=${final}`;\n }\n }\n }\n\n // explode: true\n const joiner = { simple: \",\", label: \".\", matrix: \";\" }[options.style] || \"&\";\n const values = [];\n for (const v of value) {\n if (options.style === \"simple\" || options.style === \"label\") {\n values.push(options.allowReserved === true ? v : encodeURIComponent(v));\n } else {\n values.push(serializePrimitiveParam(name, v, options));\n }\n }\n return options.style === \"label\" || options.style === \"matrix\"\n ? `${joiner}${values.join(joiner)}`\n : values.join(joiner);\n}\n\n/**\n * Serialize query params to string\n * @type {import(\"./index.js\").createQuerySerializer}\n */\nexport function createQuerySerializer(options) {\n return function querySerializer(queryParams) {\n const search = [];\n if (queryParams && typeof queryParams === \"object\") {\n for (const name in queryParams) {\n const value = queryParams[name];\n if (value === undefined || value === null) {\n continue;\n }\n if (Array.isArray(value)) {\n if (value.length === 0) {\n continue;\n }\n search.push(\n serializeArrayParam(name, value, {\n style: \"form\",\n explode: true,\n ...options?.array,\n allowReserved: options?.allowReserved || false,\n }),\n );\n continue;\n }\n if (typeof value === \"object\") {\n search.push(\n serializeObjectParam(name, value, {\n style: \"deepObject\",\n explode: true,\n ...options?.object,\n allowReserved: options?.allowReserved || false,\n }),\n );\n continue;\n }\n search.push(serializePrimitiveParam(name, value, options));\n }\n }\n return search.join(\"&\");\n };\n}\n\n/**\n * Handle different OpenAPI 3.x serialization styles\n * @type {import(\"./index.js\").defaultPathSerializer}\n * @see https://swagger.io/docs/specification/serialization/#path\n */\nexport function defaultPathSerializer(pathname, pathParams) {\n let nextURL = pathname;\n for (const match of pathname.match(PATH_PARAM_RE) ?? []) {\n let name = match.substring(1, match.length - 1);\n let explode = false;\n let style = \"simple\";\n if (name.endsWith(\"*\")) {\n explode = true;\n name = name.substring(0, name.length - 1);\n }\n if (name.startsWith(\".\")) {\n style = \"label\";\n name = name.substring(1);\n } else if (name.startsWith(\";\")) {\n style = \"matrix\";\n name = name.substring(1);\n }\n if (!pathParams || pathParams[name] === undefined || pathParams[name] === null) {\n continue;\n }\n const value = pathParams[name];\n if (Array.isArray(value)) {\n nextURL = nextURL.replace(match, serializeArrayParam(name, value, { style, explode }));\n continue;\n }\n if (typeof value === \"object\") {\n nextURL = nextURL.replace(match, serializeObjectParam(name, value, { style, explode }));\n continue;\n }\n if (style === \"matrix\") {\n nextURL = nextURL.replace(match, `;${serializePrimitiveParam(name, value)}`);\n continue;\n }\n nextURL = nextURL.replace(match, style === \"label\" ? `.${encodeURIComponent(value)}` : encodeURIComponent(value));\n }\n return nextURL;\n}\n\n/**\n * Serialize body object to string\n * @type {import(\"./index.js\").defaultBodySerializer}\n */\nexport function defaultBodySerializer(body, headers) {\n if (body instanceof FormData) {\n return body;\n }\n if (headers) {\n const contentType =\n headers.get instanceof Function\n ? (headers.get(\"Content-Type\") ?? headers.get(\"content-type\"))\n : (headers[\"Content-Type\"] ?? headers[\"content-type\"]);\n if (contentType === \"application/x-www-form-urlencoded\") {\n return new URLSearchParams(body).toString();\n }\n }\n return JSON.stringify(body);\n}\n\n/**\n * Construct URL string from baseUrl and handle path and query params\n * @type {import(\"./index.js\").createFinalURL}\n */\nexport function createFinalURL(pathname, options) {\n let finalURL = `${options.baseUrl}${pathname}`;\n if (options.params?.path) {\n finalURL = options.pathSerializer(finalURL, options.params.path);\n }\n let search = options.querySerializer(options.params.query ?? {});\n if (search.startsWith(\"?\")) {\n search = search.substring(1);\n }\n if (search) {\n finalURL += `?${search}`;\n }\n return finalURL;\n}\n\n/**\n * Merge headers a and b, with b taking priority\n * @type {import(\"./index.js\").mergeHeaders}\n */\nexport function mergeHeaders(...allHeaders) {\n const finalHeaders = new Headers();\n for (const h of allHeaders) {\n if (!h || typeof h !== \"object\") {\n continue;\n }\n const iterator = h instanceof Headers ? h.entries() : Object.entries(h);\n for (const [k, v] of iterator) {\n if (v === null) {\n finalHeaders.delete(k);\n } else if (Array.isArray(v)) {\n for (const v2 of v) {\n finalHeaders.append(k, v2);\n }\n } else if (v !== undefined) {\n finalHeaders.set(k, v);\n }\n }\n }\n return finalHeaders;\n}\n\n/**\n * Remove trailing slash from url\n * @type {import(\"./index.js\").removeTrailingSlash}\n */\nexport function removeTrailingSlash(url) {\n if (url.endsWith(\"/\")) {\n return url.substring(0, url.length - 1);\n }\n return url;\n}\n","import createClient from 'openapi-fetch';\nimport type { paths } from './schema';\n\nexport type PollarApiClient = ReturnType<typeof createApiClient>;\n\nexport function createApiClient(baseUrl: string) {\n return createClient<paths>({ baseUrl });\n}","import type { KycLevel, KycProvider, KycStartBody, KycStartResponse, KycStatus } from '../../types';\nimport type { PollarApiClient } from '../client';\n\n/**\n * GET /kyc/status\n * Returns the current user's KYC status for a given provider.\n * Requires a valid auth token in the API client.\n */\nexport async function getKycStatus(\n api: PollarApiClient,\n providerId?: string,\n): Promise<{ status: KycStatus; level?: KycLevel | undefined; providerId: string; expiresAt?: string }> {\n const { data, error } = await api.GET('/kyc/status', {\n params: { query: providerId ? { providerId } : {} },\n });\n if (!data?.content || error) {\n throw new Error((error as any)?.error ?? 'Failed to get KYC status');\n }\n return data.content;\n}\n\n/**\n * GET /kyc/providers\n * Returns available KYC providers for a given country.\n */\nexport async function getKycProviders(api: PollarApiClient, country: string): Promise<{ providers: KycProvider[] }> {\n const { data, error } = await api.GET('/kyc/providers', { params: { query: { country } } });\n if (!data?.content || error) throw new Error((error as any)?.error ?? 'Failed to get KYC providers');\n return data.content;\n}\n\n/**\n * POST /kyc/start\n * Starts a KYC session.\n * - flow=iframe/redirect: returns kycUrl to embed or redirect to\n * - flow=form: returns fields[] to render a custom form\n */\nexport async function startKyc(api: PollarApiClient, body: KycStartBody): Promise<KycStartResponse> {\n const { data, error } = await api.POST('/kyc/start', { body });\n if (!data?.content || error) throw new Error((error as any)?.error ?? 'Failed to start KYC');\n return data.content;\n}\n\n/**\n * Orchestrates the full KYC resolution flow:\n * 1. Checks current status\n * 2. If already approved, returns early\n * 3. Otherwise starts KYC and returns the session (kycUrl or fields)\n */\nexport async function resolveKyc(\n api: PollarApiClient,\n providerId: string,\n level: KycLevel = 'basic',\n): Promise<{ alreadyApproved: boolean } & Partial<KycStartResponse>> {\n const { status } = await getKycStatus(api, providerId);\n if (status === 'approved') return { alreadyApproved: true };\n const started = await startKyc(api, { providerId, level });\n return { alreadyApproved: false, ...started };\n}\n\n/**\n * Polls GET /kyc/status every intervalMs until status is 'approved' or 'rejected'.\n * Throws if timeoutMs is exceeded.\n */\nexport async function pollKycStatus(\n api: PollarApiClient,\n providerId: string,\n { intervalMs = 3000, timeoutMs = 300_000 }: { intervalMs?: number; timeoutMs?: number } = {},\n): Promise<KycStatus> {\n const deadline = Date.now() + timeoutMs;\n while (Date.now() < deadline) {\n const { status } = await getKycStatus(api, providerId);\n if (status === 'approved' || status === 'rejected') return status;\n await new Promise((r) => setTimeout(r, intervalMs));\n }\n throw new Error('KYC polling timed out');\n}\n","import type { PollarApiClient } from '../client';\nimport type {\n RampsOfframpBody,\n RampsOfframpResponse,\n RampsOnrampBody,\n RampsOnrampResponse,\n RampsQuoteQuery,\n RampsQuoteResponse,\n RampsTransactionResponse,\n RampTxStatus,\n} from '../../types';\n\n/**\n * GET /ramps/quote\n * Returns available quotes for an onramp or offramp.\n * The backend ranks providers by country, amount, fee and availability.\n * The first quote in the array is the recommended one.\n */\nexport async function getRampsQuote(api: PollarApiClient, query: RampsQuoteQuery): Promise<RampsQuoteResponse> {\n const { data, error } = await api.GET('/ramps/quote', { params: { query } });\n if (!data?.content || error) throw new Error((error as any)?.error ?? 'Failed to get ramp quotes');\n return data.content;\n}\n\n/**\n * POST /ramps/onramp\n * Creates an onramp transaction.\n * For custodial users: backend orchestrates the full SEP-24 flow and returns payment instructions.\n * For non-custodial: backend may return an unsigned XDR that the client must sign via a wallet adapter.\n */\nexport async function createOnRamp(api: PollarApiClient, body: RampsOnrampBody): Promise<RampsOnrampResponse> {\n const { data, error } = await api.POST('/ramps/onramp', { body });\n if (!data?.content || error) throw new Error((error as any)?.error ?? 'Failed to create onramp');\n return data.content;\n}\n\n/**\n * POST /ramps/offramp\n * Creates an offramp transaction.\n * Backend initiates the bank transfer once the Stellar transaction is confirmed.\n */\nexport async function createOffRamp(api: PollarApiClient, body: RampsOfframpBody): Promise<RampsOfframpResponse> {\n const { data, error } = await api.POST('/ramps/offramp', { body });\n if (!data?.content || error) throw new Error((error as any)?.error ?? 'Failed to create offramp');\n return data.content;\n}\n\n/**\n * GET /ramps/transaction/{txId}\n * Returns the current status of a ramp transaction.\n */\nexport async function getRampTransaction(api: PollarApiClient, txId: string): Promise<RampsTransactionResponse> {\n const { data, error } = await api.GET('/ramps/transaction/{txId}', { params: { path: { txId } } });\n if (!data?.content || error) throw new Error((error as any)?.error ?? 'Failed to get transaction');\n return data.content;\n}\n\n/**\n * Polls GET /ramps/transaction/{txId} every intervalMs until status is 'completed' or 'failed'.\n * Throws if timeoutMs is exceeded.\n */\nexport async function pollRampTransaction(\n api: PollarApiClient,\n txId: string,\n { intervalMs = 5000, timeoutMs = 600_000 }: { intervalMs?: number; timeoutMs?: number } = {},\n): Promise<RampTxStatus> {\n const deadline = Date.now() + timeoutMs;\n while (Date.now() < deadline) {\n const { status } = await getRampTransaction(api, txId);\n if (status === 'completed' || status === 'failed') return status;\n await new Promise((r) => setTimeout(r, intervalMs));\n }\n throw new Error('Ramp transaction polling timed out');\n}\n","export type StellarNetwork = 'mainnet' | 'testnet';\n\nconst HORIZON_URLS: Record<StellarNetwork, string> = {\n mainnet: 'https://horizon.stellar.org',\n testnet: 'https://horizon-testnet.stellar.org',\n};\n\nexport type StellarClientConfig = StellarNetwork | { horizonUrl: string };\n\nexport interface StellarBalance {\n asset: string;\n balance: string;\n assetIssuer?: string;\n}\n\nexport class StellarClient {\n private readonly horizonUrl: string;\n\n constructor(config: StellarClientConfig) {\n this.horizonUrl = typeof config === 'string' ? HORIZON_URLS[config] : config.horizonUrl;\n }\n\n async submitTransaction(signedXdr: string): Promise<{ success: true; hash: string } | { success: false; errorCode: string }> {\n try {\n const response = await fetch(`${this.horizonUrl}/transactions`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/x-www-form-urlencoded' },\n body: new URLSearchParams({ tx: signedXdr }),\n });\n if (!response.ok) {\n const body = (await response.json().catch(() => ({}))) as { extras?: { result_codes?: { transaction?: string } } };\n return { success: false, errorCode: body.extras?.result_codes?.transaction ?? 'HORIZON_ERROR' };\n }\n const data = (await response.json()) as { hash: string };\n return { success: true, hash: data.hash };\n } catch {\n return { success: false, errorCode: 'NETWORK_ERROR' };\n }\n }\n}\n","import { pollarPaths, StellarNetwork } from './index';\nimport { WalletType } from './wallets';\n\nexport type PollarApplicationConfigResponse =\n pollarPaths['/auth/login']['post']['responses'][200]['content']['application/json'];\nexport type PollarApplicationConfigContent = PollarApplicationConfigResponse['content'];\n\nexport interface PollarClientConfig {\n stellarNetwork?: StellarNetwork;\n baseUrl?: string;\n apiKey: string;\n}\n\nexport type TxBuildBody = NonNullable<pollarPaths['/tx/build']['post']['requestBody']>['content']['application/json'];\nexport type TxBuildResponse = pollarPaths['/tx/build']['post']['responses'][200]['content']['application/json'];\n\nexport type TxSignAndSendBody = NonNullable<\n pollarPaths['/tx/sign-and-send']['post']['requestBody']\n>['content']['application/json'];\nexport type TxSignSendResponse = pollarPaths['/tx/sign-and-send']['post']['responses'][200]['content']['application/json'];\n\nexport type PollarLoginOptions =\n | { provider: 'google' }\n | { provider: 'github' }\n | { provider: 'email'; email: string }\n | { provider: 'wallet'; type: WalletType };\n\nexport type TxBuildContent = TxBuildResponse['content'];\n\nexport type TransactionState =\n | { step: 'idle' }\n | { step: 'building' }\n | { step: 'built'; buildData: TxBuildContent }\n | { step: 'signing'; buildData?: TxBuildContent; external?: true }\n | { step: 'success'; buildData?: TxBuildContent; hash: string; external?: true }\n | { step: 'error'; details?: string; buildData?: TxBuildContent; external?: true };\n\nexport const AUTH_ERROR_CODES = {\n SESSION_CREATE_FAILED: 'SESSION_CREATE_FAILED',\n EMAIL_SEND_FAILED: 'EMAIL_SEND_FAILED',\n EMAIL_VERIFY_FAILED: 'EMAIL_VERIFY_FAILED',\n EMAIL_CODE_EXPIRED: 'EMAIL_CODE_EXPIRED',\n EMAIL_CODE_INVALID: 'EMAIL_CODE_INVALID',\n AUTH_FAILED: 'AUTH_FAILED',\n WALLET_CONNECT_FAILED: 'WALLET_CONNECT_FAILED',\n WALLET_AUTH_FAILED: 'WALLET_AUTH_FAILED',\n UNEXPECTED_ERROR: 'UNEXPECTED_ERROR',\n} as const;\n\nexport type AuthErrorCode = (typeof AUTH_ERROR_CODES)[keyof typeof AUTH_ERROR_CODES];\n\nexport type AuthState =\n | { step: 'idle' }\n | { step: 'creating_session' }\n | { step: 'entering_email'; clientSessionId: string }\n | { step: 'sending_email'; email: string }\n | { step: 'entering_code'; clientSessionId: string; email: string }\n | { step: 'verifying_email_code'; clientSessionId: string; email: string }\n | { step: 'opening_oauth'; provider: 'google' | 'github' }\n | { step: 'connecting_wallet'; walletType: WalletType }\n | { step: 'wallet_not_installed'; walletType: WalletType }\n | { step: 'authenticating_wallet' }\n | { step: 'authenticating' }\n | { step: 'authenticated'; session: PollarApplicationConfigContent }\n | {\n step: 'error';\n previousStep: string;\n message: string;\n errorCode: AuthErrorCode;\n clientSessionId?: string;\n email?: string;\n };\n\nexport type NetworkState = { step: 'idle' } | { step: 'connected'; network: StellarNetwork };\n\nexport class PollarFlowError extends Error {\n readonly code = 'INVALID_FLOW' as const;\n constructor(message: string) {\n super(message);\n this.name = 'PollarFlowError';\n }\n}\n\n// ─── Wallet balance types ─────────────────────────────────────────────────────\n\nexport type WalletBalanceContent =\n pollarPaths['/wallet/balance']['get']['responses'][200]['content']['application/json']['content'];\nexport type WalletBalanceRecord = WalletBalanceContent['balances'][number];\n\nexport type WalletBalanceState =\n | { step: 'idle' }\n | { step: 'loading' }\n | { step: 'loaded'; data: WalletBalanceContent }\n | { step: 'error'; message: string };\n\n// ─── Tx history types ─────────────────────────────────────────────────────────\n\nexport type TxHistoryRecord =\n pollarPaths['/tx/history']['get']['responses'][200]['content']['application/json']['content']['records'][number];\n\nexport type TxHistoryParams = NonNullable<pollarPaths['/tx/history']['get']['parameters']['query']>;\n\nexport type TxHistoryContent =\n pollarPaths['/tx/history']['get']['responses'][200]['content']['application/json']['content'];\n\nexport type TxHistoryState =\n | { step: 'idle' }\n | { step: 'loading'; params: TxHistoryParams }\n | { step: 'loaded'; params: TxHistoryParams; data: TxHistoryContent }\n | { step: 'error'; params: TxHistoryParams; message: string };\n\n// ─── KYC types ────────────────────────────────────────────────────────────────\n\nexport type KycLevel = 'basic' | 'intermediate' | 'enhanced';\nexport type KycStatus = 'none' | 'pending' | 'approved' | 'rejected';\nexport type KycFlow = 'iframe' | 'form' | 'redirect';\n\nexport type KycProvider =\n pollarPaths['/kyc/providers']['get']['responses'][200]['content']['application/json']['content']['providers'][number];\nexport type KycStartBody = NonNullable<pollarPaths['/kyc/start']['post']['requestBody']>['content']['application/json'];\nexport type KycStartResponse = pollarPaths['/kyc/start']['post']['responses'][200]['content']['application/json']['content'];\n\n// ─── Ramps types ──────────────────────────────────────────────────────────────\n\nexport type RampsQuoteQuery = NonNullable<pollarPaths['/ramps/quote']['get']['parameters']['query']>;\nexport type RampQuote =\n pollarPaths['/ramps/quote']['get']['responses'][200]['content']['application/json']['content']['quotes'][number];\nexport type RampsQuoteResponse = pollarPaths['/ramps/quote']['get']['responses'][200]['content']['application/json']['content'];\n\nexport type RampsOnrampBody = NonNullable<pollarPaths['/ramps/onramp']['post']['requestBody']>['content']['application/json'];\nexport type RampsOnrampResponse =\n pollarPaths['/ramps/onramp']['post']['responses'][200]['content']['application/json']['content'];\n\nexport type RampsOfframpBody = NonNullable<pollarPaths['/ramps/offramp']['post']['requestBody']>['content']['application/json'];\nexport type RampsOfframpResponse =\n pollarPaths['/ramps/offramp']['post']['responses'][200]['content']['application/json']['content'];\n\nexport type RampsTransactionResponse =\n pollarPaths['/ramps/transaction/{txId}']['get']['responses'][200]['content']['application/json']['content'];\nexport type RampTxStatus = RampsTransactionResponse['status'];\nexport type RampDirection = RampsTransactionResponse['direction'];\nexport type PaymentInstructions = RampsOnrampResponse['paymentInstructions'];\n","// Derived from stellar-wallet-kit by Tushar Pamnani (MIT)\n// https://github.com/tusharpamnani/stellar-wallet-kit\n\nimport {\n getNetwork,\n getUserInfo,\n isAllowed,\n isConnected,\n setAllowed,\n signAuthEntry,\n signTransaction,\n} from '@stellar/freighter-api';\n\nimport type {\n ConnectWalletResponse,\n SignAuthEntryOptions,\n SignAuthEntryResponse,\n SignTransactionOptions,\n SignTransactionResponse,\n WalletAdapter,\n} from './types';\nimport { WalletType } from './types';\n\nexport class FreighterAdapter implements WalletAdapter {\n readonly type = WalletType.FREIGHTER;\n\n async isAvailable(): Promise<boolean> {\n try {\n return await isConnected();\n } catch {\n return false;\n }\n }\n\n async connect(): Promise<ConnectWalletResponse> {\n const connected = await isConnected();\n if (!connected) {\n throw new Error('Freighter wallet is not installed');\n }\n\n const allowed = await isAllowed();\n if (!allowed) {\n await setAllowed();\n }\n\n const userInfo = await getUserInfo();\n if (!userInfo?.publicKey) {\n throw new Error('Failed to get user information from Freighter');\n }\n\n return { address: userInfo.publicKey, publicKey: userInfo.publicKey };\n }\n\n async disconnect(): Promise<void> {\n // Freighter does not expose a programmatic disconnect\n }\n\n async getPublicKey(): Promise<string | null> {\n try {\n const allowed = await isAllowed();\n if (!allowed) return null;\n const userInfo = await getUserInfo();\n return userInfo?.publicKey ?? null;\n } catch {\n return null;\n }\n }\n\n async getNetwork(): Promise<string> {\n return getNetwork();\n }\n\n async signTransaction(xdr: string, options?: SignTransactionOptions): Promise<SignTransactionResponse> {\n const result = await signTransaction(xdr, {\n network: options?.network,\n networkPassphrase: options?.networkPassphrase,\n accountToSign: options?.accountToSign,\n });\n if (!result || typeof result !== 'string') {\n throw new Error('Invalid response from Freighter');\n }\n return { signedTxXdr: result };\n }\n\n async signAuthEntry(entryXdr: string, options?: SignAuthEntryOptions): Promise<SignAuthEntryResponse> {\n const result = await signAuthEntry(entryXdr, { accountToSign: options?.accountToSign });\n if (!result || typeof result !== 'string') {\n throw new Error('Invalid response from Freighter');\n }\n return { signedAuthEntry: result };\n }\n}\n","// Derived from stellar-wallet-kit by Tushar Pamnani (MIT)\n// https://github.com/tusharpamnani/stellar-wallet-kit\n\nexport enum WalletType {\n FREIGHTER = 'freighter',\n ALBEDO = 'albedo',\n}\n\nexport interface ConnectWalletResponse {\n address: string;\n publicKey: string;\n}\n\nexport interface SignTransactionOptions {\n network?: string;\n networkPassphrase?: string;\n accountToSign?: string;\n}\n\nexport interface SignAuthEntryOptions {\n accountToSign?: string;\n}\n\nexport interface SignTransactionResponse {\n signedTxXdr: string;\n}\n\nexport interface SignAuthEntryResponse {\n signedAuthEntry: string;\n}\n\nexport interface WalletAdapter {\n type: WalletType;\n isAvailable(): Promise<boolean>;\n connect(): Promise<ConnectWalletResponse>;\n disconnect(): Promise<void>;\n getPublicKey(): Promise<string | null>;\n signTransaction(xdr: string, options?: SignTransactionOptions): Promise<SignTransactionResponse>;\n signAuthEntry(entryXdr: string, options?: SignAuthEntryOptions): Promise<SignAuthEntryResponse>;\n}\n","// Derived from stellar-wallet-kit by Tushar Pamnani (MIT)\n// https://github.com/tusharpamnani/stellar-wallet-kit\n\nimport { WalletType } from './types';\nimport type {\n WalletAdapter,\n ConnectWalletResponse,\n SignTransactionOptions,\n SignTransactionResponse,\n SignAuthEntryOptions,\n SignAuthEntryResponse,\n} from './types';\n\nfunction openAlbedoPopup(url: string): Window {\n const popup = window.open(url, 'albedo', 'width=420,height=720,resizable=yes,scrollbars=yes');\n if (!popup) {\n throw new Error('Failed to open Albedo popup (blocked by browser)');\n }\n return popup;\n}\n\nfunction waitForAlbedoPopup(): Promise<Record<string, string>> {\n return new Promise((resolve, reject) => {\n const timeout = setTimeout(() => reject(new Error('Albedo response timeout')), 2 * 60 * 1000);\n\n function handler(event: MessageEvent) {\n if (event.origin !== window.location.origin || event.data?.type !== 'ALBEDO_RESULT') return;\n clearTimeout(timeout);\n window.removeEventListener('message', handler);\n resolve(event.data.payload as Record<string, string>);\n }\n\n window.addEventListener('message', handler);\n });\n}\n\nfunction waitForAlbedoResult(): Promise<Record<string, string>> {\n return new Promise((resolve, reject) => {\n const timeout = setTimeout(() => reject(new Error('Albedo response timeout')), 2 * 60 * 1000);\n\n const parseResult = () => {\n const params = new URLSearchParams(window.location.search);\n if (!params.has('pubkey') && !params.has('signed_envelope_xdr') && !params.has('signed_xdr')) return;\n\n clearTimeout(timeout);\n const result: Record<string, string> = {};\n params.forEach((value, key) => { result[key] = value; });\n window.history.replaceState({}, document.title, window.location.pathname);\n resolve(result);\n };\n\n parseResult();\n window.addEventListener('popstate', parseResult);\n });\n}\n\nexport class AlbedoAdapter implements WalletAdapter {\n readonly type = WalletType.ALBEDO;\n\n async isAvailable(): Promise<boolean> {\n return typeof window !== 'undefined';\n }\n\n async connect(): Promise<ConnectWalletResponse> {\n const url = new URL('https://albedo.link');\n url.searchParams.set('intent', 'public-key');\n url.searchParams.set('app_name', 'Pollar');\n url.searchParams.set('network', 'testnet');\n url.searchParams.set('callback', `${window.location.origin}/albedo-callback`);\n url.searchParams.set('origin', window.location.origin);\n\n openAlbedoPopup(url.toString());\n const result = await waitForAlbedoPopup();\n\n if (!result.pubkey) {\n throw new Error('Albedo connection rejected');\n }\n\n return { address: result.pubkey, publicKey: result.pubkey };\n }\n\n async disconnect(): Promise<void> {}\n\n async getPublicKey(): Promise<string | null> {\n return null; // Albedo does not support silent reconnect\n }\n\n async getNetwork(): Promise<string> {\n throw new Error('Albedo does not expose network');\n }\n\n async signTransaction(xdr: string, _options?: SignTransactionOptions): Promise<SignTransactionResponse> {\n const url = new URL('https://albedo.link');\n url.searchParams.set('intent', 'tx');\n url.searchParams.set('xdr', xdr);\n url.searchParams.set('app_name', 'Pollar');\n url.searchParams.set('network', 'testnet');\n url.searchParams.set('callback', window.location.href);\n url.searchParams.set('origin', window.location.origin);\n\n window.location.href = url.toString();\n const result = await waitForAlbedoResult();\n\n if (!result.signed_envelope_xdr) throw new Error('Albedo signing rejected');\n return { signedTxXdr: result.signed_envelope_xdr };\n }\n\n async signAuthEntry(entryXdr: string, _options?: SignAuthEntryOptions): Promise<SignAuthEntryResponse> {\n const url = new URL('https://albedo.link');\n url.searchParams.set('intent', 'sign-auth-entry');\n url.searchParams.set('xdr', entryXdr);\n url.searchParams.set('app_name', 'Pollar');\n url.searchParams.set('network', 'testnet');\n url.searchParams.set('callback', window.location.href);\n url.searchParams.set('origin', window.location.origin);\n\n window.location.href = url.toString();\n const result = await waitForAlbedoResult();\n\n if (!result.signed_xdr) throw new Error('Albedo auth entry signing rejected');\n return { signedAuthEntry: result.signed_xdr };\n }\n}","import { PollarApplicationConfigContent } from '../types';\n\nexport const STORAGE_KEY = 'pollar:session';\nexport const WALLET_TYPE_KEY = 'pollar:walletType';\n\nexport function isValidSession(value: unknown): value is PollarApplicationConfigContent {\n if (typeof value !== 'object' || value === null) {\n console.warn('[PollarClient:session] Invalid session — value is not an object');\n return false;\n }\n\n const s = value as Record<string, unknown>;\n\n // clientSessionId: string\n if (typeof s['clientSessionId'] !== 'string' || s['clientSessionId'] === '') {\n console.warn('[PollarClient:session] Invalid session — clientSessionId missing or empty');\n return false;\n }\n\n // userId: string | null (required, explicitly null or string)\n if (s['userId'] !== null && typeof s['userId'] !== 'string') {\n console.warn('[PollarClient:session] Invalid session — userId must be string or null, got:', typeof s['userId']);\n return false;\n }\n\n // status: string\n if (typeof s['status'] !== 'string') {\n console.warn('[PollarClient:session] Invalid session — status must be string, got:', typeof s['status']);\n return false;\n }\n\n // token: { accessToken: string, refreshToken: string, expiresAt: number }\n const token = s['token'];\n if (typeof token !== 'object' || token === null) {\n console.warn('[PollarClient:session] Invalid session — token missing or not an object');\n return false;\n }\n const t = token as Record<string, unknown>;\n if (typeof t['accessToken'] !== 'string' || t['accessToken'] === '') {\n console.warn('[PollarClient:session] Invalid session — token.accessToken missing or empty');\n return false;\n }\n if (typeof t['refreshToken'] !== 'string' || t['refreshToken'] === '') {\n console.warn('[PollarClient:session] Invalid session — token.refreshToken missing or empty');\n return false;\n }\n if (typeof t['expiresAt'] !== 'number' || !Number.isFinite(t['expiresAt'])) {\n console.warn('[PollarClient:session] Invalid session — token.expiresAt must be a finite number');\n return false;\n }\n\n // user: { id?: string, ready: boolean }\n const user = s['user'];\n if (typeof user !== 'object' || user === null) {\n console.warn('[PollarClient:session] Invalid session — user missing or not an object');\n return false;\n }\n const u = user as Record<string, unknown>;\n if (u['id'] !== undefined && typeof u['id'] !== 'string') {\n console.warn('[PollarClient:session] Invalid session — user.id must be string if present, got:', typeof u['id']);\n return false;\n }\n if (typeof u['ready'] !== 'boolean') {\n console.warn('[PollarClient:session] Invalid session — user.ready must be boolean, got:', typeof u['ready']);\n return false;\n }\n\n // wallet: { publicKey: string | null, existsOnStellar?: boolean, createdAt?: number }\n const wallet = s['wallet'];\n if (typeof wallet !== 'object' || wallet === null) {\n console.warn('[PollarClient:session] Invalid session — wallet missing or not an object');\n return false;\n }\n const w = wallet as Record<string, unknown>;\n if (w['publicKey'] !== null && typeof w['publicKey'] !== 'string') {\n console.warn(\n '[PollarClient:session] Invalid session — wallet.publicKey must be string or null, got:',\n typeof w['publicKey'],\n );\n return false;\n }\n if (w['existsOnStellar'] !== undefined && typeof w['existsOnStellar'] !== 'boolean') {\n console.warn('[PollarClient:session] Invalid session — wallet.existsOnStellar must be boolean if present');\n return false;\n }\n if (w['createdAt'] !== undefined && (typeof w['createdAt'] !== 'number' || !Number.isFinite(w['createdAt']))) {\n console.warn('[PollarClient:session] Invalid session — wallet.createdAt must be a finite number if present');\n return false;\n }\n\n // data: { mail, first_name, last_name, avatar: string, providers: {...} }\n const data = s['data'];\n if (typeof data !== 'object' || data === null) {\n console.warn('[PollarClient:session] Invalid session — data missing or not an object');\n return false;\n }\n const d = data as Record<string, unknown>;\n\n for (const field of ['mail', 'first_name', 'last_name', 'avatar'] as const) {\n if (typeof d[field] !== 'string') {\n console.warn(`[PollarClient:session] Invalid session — data.${field} must be string, got:`, typeof d[field]);\n return false;\n }\n }\n\n // providers: { email: {address:string}|null, google: {id:string}|null, github: {id:string}|null, wallet: {address:string}|null }\n const providers = d['providers'];\n if (typeof providers !== 'object' || providers === null) {\n console.warn('[PollarClient:session] Invalid session — data.providers missing or not an object');\n return false;\n }\n const p = providers as Record<string, unknown>;\n\n const providerInnerField = { email: 'address', google: 'id', github: 'id', wallet: 'address' } as const;\n\n for (const [field, innerField] of Object.entries(providerInnerField) as [keyof typeof providerInnerField, string][]) {\n const v = p[field];\n if (v === null) continue;\n if (typeof v !== 'object') {\n console.warn(`[PollarClient:session] Invalid session — data.providers.${field} must be object or null, got:`, typeof v);\n return false;\n }\n const vObj = v as Record<string, unknown>;\n if (typeof vObj[innerField] !== 'string' || vObj[innerField] === '') {\n console.warn(`[PollarClient:session] Invalid session — data.providers.${field}.${innerField} must be a non-empty string`);\n return false;\n }\n }\n\n return true;\n}\n\nexport function readStorage(): PollarApplicationConfigContent | null {\n const raw = localStorage.getItem(STORAGE_KEY);\n if (!raw) {\n return null;\n }\n\n try {\n const session = JSON.parse(raw) as unknown;\n\n if (!isValidSession(session)) {\n localStorage.removeItem(STORAGE_KEY);\n console.warn('[PollarClient:session] Stored session is invalid — clearing storage');\n return null;\n }\n\n if (session.token.expiresAt * 1000 < Date.now()) {\n localStorage.removeItem(STORAGE_KEY);\n console.warn('[PollarClient:session] Session token has expired — clearing storage');\n return null;\n }\n\n return session;\n } catch (error) {\n console.error('[PollarClient:session] Failed to parse session from storage', error);\n localStorage.removeItem(STORAGE_KEY);\n return null;\n }\n}\n\nexport function writeStorage(session: PollarApplicationConfigContent): void {\n localStorage.setItem(STORAGE_KEY, JSON.stringify(session));\n console.info('[PollarClient:session] Session written to storage');\n}\n\nexport function removeStorage(): void {\n localStorage.removeItem(STORAGE_KEY);\n localStorage.removeItem(WALLET_TYPE_KEY);\n console.info('[PollarClient:session] Session removed from storage');\n}\n\nexport function writeWalletType(type: string): void {\n localStorage.setItem(WALLET_TYPE_KEY, type);\n}\n\nexport function readWalletType(): string | null {\n return localStorage.getItem(WALLET_TYPE_KEY);\n}\n","import { PollarApiClient } from '../api/client';\n\nfunction abortableDelay(ms: number, signal: AbortSignal): Promise<void> {\n return new Promise((resolve, reject) => {\n const t = setTimeout(resolve, ms);\n signal.addEventListener(\n 'abort',\n () => {\n clearTimeout(t);\n reject(new DOMException('Aborted', 'AbortError'));\n },\n { once: true },\n );\n });\n}\n\nexport async function streamUntilFound(\n api: PollarApiClient,\n clientSessionId: string,\n check: (data: Record<string, unknown>) => boolean,\n retryDelayMs = 200,\n signal?: AbortSignal,\n): Promise<Record<string, unknown>> {\n while (true) {\n signal?.throwIfAborted();\n\n let data, error;\n try {\n ({ data, error } = await api.GET('/auth/session/status/{clientSessionId}', {\n params: { path: { clientSessionId } },\n parseAs: 'stream',\n signal: signal ?? null,\n }));\n } catch (e) {\n if (e instanceof Error && e.name === 'AbortError') throw e;\n console.warn(e);\n }\n\n if (error || !data) {\n if (signal) await abortableDelay(retryDelayMs, signal);\n else await new Promise((r) => setTimeout(r, retryDelayMs));\n continue;\n }\n\n const reader = data.getReader();\n const decoder = new TextDecoder();\n let streamDone = false;\n\n try {\n while (true) {\n signal?.throwIfAborted();\n const { done, value } = await reader.read();\n if (done) {\n streamDone = true;\n break;\n }\n\n const chunk = decoder.decode(value);\n for (const message of chunk.split('\\n\\n').filter(Boolean)) {\n const dataLine = message.split('\\n').find((l) => l.startsWith('data:'));\n if (!dataLine) continue;\n try {\n const parsed = JSON.parse(dataLine.slice('data:'.length).trim());\n if (check(parsed)) {\n return parsed;\n }\n } catch {\n // chunk parcial, ignorar\n }\n }\n }\n } catch (e) {\n if (e instanceof Error && e.name === 'AbortError') throw e;\n console.warn(e);\n } finally {\n reader.releaseLock();\n }\n\n // stream cerrado sin encontrar el valor → reintenta\n const delay = streamDone ? retryDelayMs : 0;\n if (delay) {\n if (signal) await abortableDelay(delay, signal);\n else await new Promise((r) => setTimeout(r, delay));\n }\n }\n}\n","import { AUTH_ERROR_CODES } from '../../types';\nimport { isValidSession } from '../session';\nimport { streamUntilFound } from '../stream';\nimport { FlowDeps } from './deps';\n\nexport async function authenticate(\n clientSessionId: string,\n deps: FlowDeps,\n expectedWallet?: string,\n): Promise<void> {\n const { api, signal, setAuthState, storeSession, clearSession } = deps;\n\n setAuthState({ step: 'authenticating' });\n\n await streamUntilFound(api, clientSessionId, (data) => data?.status === 'READY', 200, signal);\n\n const { data, error } = await api.POST('/auth/login', {\n body: { clientSessionId },\n signal,\n });\n\n if (data?.code === 'SDK_LOGIN_SUCCESS' && isValidSession(data?.content)) {\n if (expectedWallet && data.content.data.providers.wallet?.address !== expectedWallet) {\n setAuthState({\n step: 'error',\n previousStep: 'authenticating',\n message: 'Wallet mismatch: session wallet does not match connected wallet',\n errorCode: AUTH_ERROR_CODES.WALLET_AUTH_FAILED,\n });\n clearSession();\n return;\n }\n storeSession(data.content);\n } else {\n setAuthState({\n step: 'error',\n previousStep: 'authenticating',\n message: 'Failed to load session',\n errorCode: AUTH_ERROR_CODES.AUTH_FAILED,\n });\n clearSession();\n }\n}\n","import { PollarApiClient } from '../../api/client';\nimport { AUTH_ERROR_CODES, AuthState, PollarApplicationConfigContent } from '../../types';\nimport { WalletAdapter, WalletType } from '../../wallets';\n\nexport type FlowDeps = {\n api: PollarApiClient;\n signal: AbortSignal;\n setAuthState: (state: AuthState) => void;\n storeSession: (session: PollarApplicationConfigContent) => void;\n clearSession: () => void;\n storeWalletAdapter: (adapter: WalletAdapter, type: WalletType) => void;\n};\n\nexport async function createAuthSession(deps: FlowDeps): Promise<string | null> {\n const { api, signal, setAuthState } = deps;\n\n setAuthState({ step: 'creating_session' });\n\n const { data, error } = await api.POST('/auth/session', { signal });\n\n if (error || !data?.success) {\n setAuthState({\n step: 'error',\n previousStep: 'creating_session',\n message: 'Failed to create session',\n errorCode: AUTH_ERROR_CODES.SESSION_CREATE_FAILED,\n });\n return null;\n }\n\n return data.content.clientSessionId;\n}\n","import { AUTH_ERROR_CODES } from '../../types';\nimport { authenticate } from './authenticate';\nimport { createAuthSession, FlowDeps } from './deps';\n\nexport async function initEmailSession(deps: FlowDeps): Promise<void> {\n const clientSessionId = await createAuthSession(deps);\n if (!clientSessionId) return;\n deps.setAuthState({ step: 'entering_email', clientSessionId });\n}\n\nexport async function sendEmailCode(email: string, clientSessionId: string, deps: FlowDeps): Promise<void> {\n const { api, signal, setAuthState } = deps;\n\n setAuthState({ step: 'sending_email', email });\n\n const { data, error } = await api.POST('/auth/email', {\n body: { clientSessionId, email },\n signal,\n });\n\n if (error || !data?.success) {\n setAuthState({\n step: 'error',\n previousStep: 'sending_email',\n message: 'Failed to send code',\n errorCode: AUTH_ERROR_CODES.EMAIL_SEND_FAILED,\n });\n return;\n }\n\n setAuthState({ step: 'entering_code', clientSessionId, email });\n}\n\nexport async function verifyAndAuthenticate(\n code: string,\n clientSessionId: string,\n email: string,\n deps: FlowDeps,\n): Promise<void> {\n const { api, signal, setAuthState } = deps;\n\n setAuthState({ step: 'verifying_email_code', clientSessionId, email });\n\n const { data, error } = await api.POST('/auth/email/verify-code', {\n body: { clientSessionId, code },\n signal,\n });\n\n if (data?.code === 'SDK_EMAIL_CODE_VERIFIED') {\n await authenticate(clientSessionId, deps);\n return;\n }\n\n // Extract error code from either the 4xx error body or the 200 body\n const errCode =\n (error as unknown as { error?: string } | undefined)?.error ?? (data as unknown as { code?: string } | undefined)?.code;\n\n if (errCode === 'SDK_EMAIL_CODE_EXPIRED') {\n setAuthState({\n step: 'error',\n previousStep: 'verifying_email_code',\n message: 'Code expired — request a new one',\n errorCode: AUTH_ERROR_CODES.EMAIL_CODE_EXPIRED,\n clientSessionId,\n email,\n });\n return;\n }\n\n if (errCode === 'INVALID_EMAIL_CODE' || errCode === 'SDK_EMAIL_CODE_INVALID') {\n setAuthState({\n step: 'error',\n previousStep: 'verifying_email_code',\n message: 'Invalid code — try again',\n errorCode: AUTH_ERROR_CODES.EMAIL_CODE_INVALID,\n clientSessionId,\n email,\n });\n return;\n }\n\n setAuthState({\n step: 'error',\n previousStep: 'verifying_email_code',\n message: 'Failed to verify code — try again',\n errorCode: AUTH_ERROR_CODES.EMAIL_VERIFY_FAILED,\n });\n}\n","import { authenticate } from './authenticate';\nimport { createAuthSession, FlowDeps } from './deps';\n\ntype OAuthDeps = FlowDeps & { basePath: string; apiKey: string };\n\nexport async function loginOAuth(provider: 'google' | 'github', deps: OAuthDeps): Promise<void> {\n const { setAuthState, basePath, apiKey } = deps;\n\n // Must open popup before any await — browsers block popups opened after async calls\n const popup = window.open('about:blank', '_blank');\n\n const clientSessionId = await createAuthSession(deps);\n\n if (!clientSessionId) {\n popup?.close();\n return;\n }\n\n setAuthState({ step: 'opening_oauth', provider });\n\n const url = new URL(`${basePath}/auth/${provider}`);\n url.searchParams.set('api_key', apiKey);\n url.searchParams.set('client_session_id', clientSessionId);\n url.searchParams.set('redirect_uri', window.location.origin);\n\n if (popup) {\n popup.location.href = url.toString();\n } else {\n window.open(url.toString(), '_blank');\n }\n\n await authenticate(clientSessionId, deps);\n}\n","import { AUTH_ERROR_CODES } from '../../types';\nimport { AlbedoAdapter, FreighterAdapter, WalletType } from '../../wallets';\nimport { authenticate } from './authenticate';\nimport { createAuthSession, FlowDeps } from './deps';\n\nfunction withSignal<T>(promise: Promise<T>, signal: AbortSignal): Promise<T> {\n return Promise.race([\n promise,\n new Promise<never>((_, reject) => {\n if (signal.aborted) {\n reject(new DOMException('Aborted', 'AbortError'));\n return;\n }\n signal.addEventListener('abort', () => reject(new DOMException('Aborted', 'AbortError')), { once: true });\n }),\n ]);\n}\n\nexport async function loginWallet(type: WalletType, deps: FlowDeps): Promise<void> {\n const { api, signal, setAuthState } = deps;\n\n const clientSessionId = await createAuthSession(deps);\n if (!clientSessionId) return;\n\n let connectedWallet: string;\n\n try {\n setAuthState({ step: 'connecting_wallet', walletType: type });\n const adapter = type === WalletType.FREIGHTER ? new FreighterAdapter() : new AlbedoAdapter();\n\n const available = await withSignal(adapter.isAvailable(), signal);\n if (!available) {\n setAuthState({ step: 'wallet_not_installed', walletType: type });\n return;\n }\n\n const { publicKey } = await withSignal(adapter.connect(), signal);\n connectedWallet = publicKey;\n deps.storeWalletAdapter(adapter, type);\n setAuthState({ step: 'authenticating_wallet' });\n\n const { data: walletData, error: walletError } = await api.POST('/auth/wallet', {\n body: { clientSessionId, walletAddress: publicKey },\n signal,\n });\n\n if (walletError || !walletData?.success) {\n setAuthState({\n step: 'error',\n previousStep: 'authenticating_wallet',\n message: 'Wallet authentication failed',\n errorCode: AUTH_ERROR_CODES.WALLET_AUTH_FAILED,\n });\n return;\n }\n } catch {\n setAuthState({\n step: 'error',\n previousStep: 'connecting_wallet',\n message: 'Wallet connection failed',\n errorCode: AUTH_ERROR_CODES.WALLET_CONNECT_FAILED,\n });\n return;\n }\n\n await authenticate(clientSessionId, deps, connectedWallet);\n}\n","import { createApiClient, PollarApiClient } from '../api/client';\nimport { getKycProviders, getKycStatus, pollKycStatus, resolveKyc, startKyc } from '../api/endpoints/kyc';\nimport {\n createOffRamp,\n createOnRamp,\n getRampsQuote,\n getRampTransaction,\n pollRampTransaction\n} from '../api/endpoints/ramps';\nimport { StellarClient, StellarNetwork } from '../stellar/StellarClient';\nimport {\n AUTH_ERROR_CODES,\n AuthState,\n KycLevel,\n KycStartBody,\n KycStartResponse,\n KycStatus,\n NetworkState,\n PollarApplicationConfigContent,\n PollarClientConfig,\n PollarFlowError,\n PollarLoginOptions,\n RampsOfframpBody,\n RampsOfframpResponse,\n RampsOnrampBody,\n RampsOnrampResponse,\n RampsQuoteQuery,\n RampsQuoteResponse,\n RampsTransactionResponse,\n RampTxStatus,\n TransactionState,\n TxBuildBody,\n TxHistoryParams,\n TxHistoryState,\n TxBuildContent,\n TxSignAndSendBody,\n WalletBalanceState,\n} from '../types';\nimport { AlbedoAdapter, FreighterAdapter, WalletAdapter, WalletType } from '../wallets';\nimport { initEmailSession, sendEmailCode, verifyAndAuthenticate } from './auth/emailFlow';\nimport { loginOAuth } from './auth/oauthFlow';\nimport { loginWallet } from './auth/walletFlow';\nimport { readStorage, readWalletType, removeStorage, STORAGE_KEY, writeStorage, writeWalletType } from './session';\n\nconst isBrowser = typeof window !== 'undefined' && typeof localStorage !== 'undefined';\n\nfunction warnServerSide(method: string): void {\n console.warn(\n `[PollarClient] ${method}() called server-side — browser APIs unavailable. Use PollarClient only in Client Components.`,\n );\n}\n\nexport class PollarClient {\n readonly apiKey: string;\n readonly id: string;\n readonly basePath: string;\n\n private readonly _api: PollarApiClient;\n\n private _session: PollarApplicationConfigContent | null = null;\n\n private _transactionState: TransactionState | null = null;\n private _transactionStateListeners = new Set<(state: TransactionState) => void>();\n private _txHistoryState: TxHistoryState = { step: 'idle' };\n private _txHistoryStateListeners = new Set<(state: TxHistoryState) => void>();\n private _walletBalanceState: WalletBalanceState = { step: 'idle' };\n private _walletBalanceStateListeners = new Set<(state: WalletBalanceState) => void>();\n private _authState: AuthState = { step: 'idle' };\n private _authStateListeners = new Set<(state: AuthState) => void>();\n private _networkState: NetworkState = { step: 'idle' };\n private _networkStateListeners = new Set<(state: NetworkState) => void>();\n\n private _walletAdapter: WalletAdapter | null = null;\n private _loginController: AbortController | null = null;\n\n constructor(config: PollarClientConfig) {\n this.apiKey = config.apiKey;\n this.id = crypto.randomUUID();\n this.basePath = `${config.baseUrl || 'https://sdk.api.pollar.xyz'}/v1`;\n this._api = createApiClient(this.basePath);\n const self = this;\n this._api.use({\n onRequest({ request }: { request: Request }) {\n request.headers.set('x-pollar-api-key', config.apiKey);\n const accessToken = self._session?.token?.accessToken;\n if (accessToken) {\n request.headers.set('Authorization', `Bearer ${accessToken}`);\n }\n return request;\n },\n });\n\n this._networkState = { step: 'connected', network: config.stellarNetwork ?? 'testnet' };\n\n if (!isBrowser) {\n warnServerSide('constructor');\n this._session = null;\n return;\n }\n\n console.info(`[PollarClient] Initialized — endpoint: ${this.basePath}, network: ${this._networkState.network}`);\n\n this._restoreSession();\n\n window.addEventListener('storage', (e: StorageEvent) => {\n if (e.key === STORAGE_KEY) {\n const prev = this._session;\n console.info(`[PollarClient] Storage event — session ${this._session ? 'updated' : prev ? 'cleared' : 'unchanged'}`);\n this._restoreSession();\n }\n });\n }\n\n // ─── Auth state ──────────────────────────────────────────────────────────────\n\n getAuthState(): AuthState {\n return this._authState;\n }\n\n onAuthStateChange(cb: (state: AuthState) => void): () => void {\n this._authStateListeners.add(cb);\n cb(this._authState);\n return () => this._authStateListeners.delete(cb);\n }\n\n // ─── Login (unified entry point) ─────────────────────────────────────────\n\n login(options: PollarLoginOptions): void {\n if (!isBrowser) {\n warnServerSide('login');\n return;\n }\n if (options.provider === 'google' || options.provider === 'github' || options.provider === 'email') {\n const controller = this._newController();\n const deps = this._flowDeps(controller.signal);\n if (options.provider === 'google' || options.provider === 'github') {\n loginOAuth(options.provider, {\n ...deps,\n basePath: this.basePath,\n apiKey: this.apiKey,\n }).catch((err) => this._handleFlowError(err));\n } else if (options.provider === 'email') {\n const { email } = options;\n initEmailSession(deps)\n .then(() => {\n if (this._authState.step === 'entering_email') {\n return sendEmailCode(email, this._authState.clientSessionId, deps);\n }\n })\n .catch((err) => this._handleFlowError(err));\n }\n } else if (options.provider === 'wallet') {\n this.loginWallet(options.type);\n }\n }\n\n // ─── Email OTP flow (3 steps) ─────────────────────────────────────────────\n\n beginEmailLogin(): void {\n if (!isBrowser) {\n warnServerSide('beginEmailLogin');\n return;\n }\n\n const controller = this._newController();\n\n initEmailSession(this._flowDeps(controller.signal)).catch((err) => this._handleFlowError(err));\n }\n\n sendEmailCode(email: string): void {\n if (!isBrowser) {\n warnServerSide('sendEmailCode');\n return;\n }\n if (this._authState.step !== 'entering_email') {\n throw new PollarFlowError(`sendEmailCode() requires step 'entering_email', current step is '${this._authState.step}'`);\n }\n\n const { clientSessionId } = this._authState;\n const signal = this._loginController!.signal;\n\n sendEmailCode(email, clientSessionId, this._flowDeps(signal)).catch((err) => this._handleFlowError(err));\n }\n\n verifyEmailCode(code: string): void {\n if (!isBrowser) {\n warnServerSide('verifyEmailCode');\n return;\n }\n\n const isRetryableError =\n this._authState.step === 'error' &&\n this._authState.clientSessionId != null &&\n (this._authState.errorCode === AUTH_ERROR_CODES.EMAIL_CODE_INVALID ||\n this._authState.errorCode === AUTH_ERROR_CODES.EMAIL_CODE_EXPIRED);\n\n if (this._authState.step !== 'entering_code' && !isRetryableError) {\n throw new PollarFlowError(`verifyEmailCode() requires step 'entering_code', current step is '${this._authState.step}'`);\n }\n\n const state = this._authState;\n const clientSessionId =\n state.step === 'entering_code' ? state.clientSessionId : (state as { clientSessionId?: string }).clientSessionId!;\n const email = state.step === 'entering_code' ? state.email : ((state as { email?: string }).email ?? '');\n\n const controller = this._newController();\n\n verifyAndAuthenticate(code, clientSessionId, email, this._flowDeps(controller.signal)).catch((err) =>\n this._handleFlowError(err),\n );\n }\n\n // ─── Wallet flow (single call) ────────────────────────────────────────────\n\n loginWallet(type: WalletType): void {\n if (!isBrowser) {\n warnServerSide('loginWallet');\n return;\n }\n\n const controller = this._newController();\n\n loginWallet(type, this._flowDeps(controller.signal)).catch((err) => this._handleFlowError(err));\n }\n\n // ─── Cancel ───────────────────────────────────────────────────────────────\n\n cancelLogin(): void {\n this._loginController?.abort();\n this._loginController = null;\n this._setAuthState({ step: 'idle' });\n }\n\n // ─── Logout ───────────────────────────────────────────────────────────────\n\n logout(): void {\n if (!isBrowser) {\n warnServerSide('logout');\n return;\n }\n console.info('[PollarClient] Logout requested');\n this._clearSession();\n }\n\n // ─── Network ──────────────────────────────────────────────────────────────\n\n getNetwork(): StellarNetwork {\n return this._networkState.step === 'connected' ? this._networkState.network : 'testnet';\n }\n\n getNetworkState(): NetworkState {\n return this._networkState;\n }\n\n setNetwork(network: StellarNetwork): void {\n this._setNetworkState({ step: 'connected', network });\n }\n\n onNetworkStateChange(cb: (state: NetworkState) => void): () => void {\n this._networkStateListeners.add(cb);\n cb(this._networkState);\n return () => this._networkStateListeners.delete(cb);\n }\n\n // ─── Transaction state ────────────────────────────────────────────────────\n\n getTransactionState(): TransactionState | null {\n return this._transactionState;\n }\n\n onTransactionStateChange(cb: (state: TransactionState) => void): () => void {\n this._transactionStateListeners.add(cb);\n if (this._transactionState) cb(this._transactionState);\n return () => this._transactionStateListeners.delete(cb);\n }\n\n // ─── Tx history ──────────────────────────────────────────────────────────\n\n getTxHistoryState(): TxHistoryState {\n return this._txHistoryState;\n }\n\n onTxHistoryStateChange(cb: (state: TxHistoryState) => void): () => void {\n this._txHistoryStateListeners.add(cb);\n cb(this._txHistoryState);\n return () => this._txHistoryStateListeners.delete(cb);\n }\n\n async fetchTxHistory(params: TxHistoryParams = {}): Promise<void> {\n this._setTxHistoryState({ step: 'loading', params });\n try {\n const { data, error } = await this._api.GET('/tx/history', { params: { query: params } });\n if (!error && data?.success && data.content) {\n this._setTxHistoryState({ step: 'loaded', params, data: data.content });\n } else {\n const message = (error as { message?: string } | undefined)?.message ?? 'Failed to load history';\n this._setTxHistoryState({ step: 'error', params, message });\n }\n } catch {\n this._setTxHistoryState({ step: 'error', params, message: 'Failed to load history' });\n }\n }\n\n // ─── Wallet balance ───────────────────────────────────────────────────────\n\n getWalletBalanceState(): WalletBalanceState {\n return this._walletBalanceState;\n }\n\n onWalletBalanceStateChange(cb: (state: WalletBalanceState) => void): () => void {\n this._walletBalanceStateListeners.add(cb);\n cb(this._walletBalanceState);\n return () => this._walletBalanceStateListeners.delete(cb);\n }\n\n async refreshBalance(publicKey?: string): Promise<void> {\n const pk = publicKey ?? this._session?.wallet?.publicKey;\n if (!pk) {\n this._setWalletBalanceState({ step: 'error', message: 'No wallet connected' });\n return;\n }\n this._setWalletBalanceState({ step: 'loading' });\n try {\n const network = this.getNetwork();\n const { data, error } = await this._api.GET('/wallet/balance', { params: { query: { publicKey: pk, network } } });\n if (!error && data?.success && data.content) {\n this._setWalletBalanceState({ step: 'loaded', data: data.content });\n } else {\n this._setWalletBalanceState({ step: 'error', message: 'Failed to load balance' });\n }\n } catch {\n this._setWalletBalanceState({ step: 'error', message: 'Failed to load balance' });\n }\n }\n\n // ─── Transactions ─────────────────────────────────────────────────────────\n\n async buildTx(\n operation: TxBuildBody['operation'],\n params: TxBuildBody['params'],\n options?: TxBuildBody['options'],\n ): Promise<void> {\n if (!this._session?.wallet?.publicKey) {\n this._setTransactionState({ step: 'error', details: 'No wallet connected' });\n return;\n }\n\n const body = {\n network: this.getNetwork(),\n publicKey: this._session.wallet.publicKey,\n operation,\n params,\n options: options ?? {},\n } as TxBuildBody;\n\n try {\n this._setTransactionState({ step: 'building' });\n const { data, error } = await this._api.POST('/tx/build', { body });\n if (!error && data?.success && data.content) {\n this._setTransactionState({ step: 'built', buildData: data.content });\n } else {\n const details = (error as { details?: string } | undefined)?.details;\n this._setTransactionState({ step: 'error', ...(details && { details }) });\n }\n } catch {\n this._setTransactionState({ step: 'error' });\n }\n }\n\n getWalletType(): WalletType | null {\n return this._walletAdapter?.type ?? null;\n }\n\n async signAndSubmitTx(unsignedXdr: string): Promise<void> {\n const state = this._transactionState;\n const buildData =\n state?.step === 'built' ? state.buildData :\n state?.step === 'error' ? state.buildData :\n undefined;\n const isBuiltFlow = !!buildData;\n const stateExtra: { buildData?: TxBuildContent; external?: true } = buildData ? { buildData } : { external: true };\n\n this._setTransactionState({ step: 'signing', ...stateExtra });\n\n const accountToSign = isBuiltFlow\n ? this._session?.wallet?.publicKey\n : (this._session?.data?.providers?.wallet?.address ?? this._session?.wallet?.publicKey);\n\n if (this._walletAdapter) {\n // External wallet (Freighter/Albedo): sign client-side, submit directly to Horizon\n try {\n const signOpts = accountToSign\n ? { networkPassphrase: this._networkPassphrase(), accountToSign }\n : { networkPassphrase: this._networkPassphrase() };\n const { signedTxXdr } = await this._walletAdapter.signTransaction(unsignedXdr, signOpts);\n const stellarClient = new StellarClient(this.getNetwork());\n const result = await stellarClient.submitTransaction(signedTxXdr);\n if (result.success) {\n this._setTransactionState({ step: 'success', ...stateExtra, hash: result.hash });\n } else {\n this._setTransactionState({ step: 'error', ...stateExtra, details: result.errorCode });\n }\n } catch {\n this._setTransactionState({ step: 'error', ...stateExtra });\n }\n return;\n }\n\n // Custodial wallet (social/email login): Pollar signs and submits server-side\n const body: TxSignAndSendBody = {\n network: this.getNetwork(),\n publicKey: this._session?.wallet?.publicKey ?? '',\n unsignedXdr,\n };\n try {\n const { data, error } = await this._api.POST('/tx/sign-and-send', { body });\n if (!error && data?.success && data.content?.hash) {\n this._setTransactionState({ step: 'success', ...stateExtra, hash: data.content.hash });\n } else {\n const details = (error as { details?: string } | undefined)?.details;\n this._setTransactionState({ step: 'error', ...stateExtra, ...(details && { details }) });\n }\n } catch {\n this._setTransactionState({ step: 'error', ...stateExtra });\n }\n }\n\n // ─── App config ───────────────────────────────────────────────────────────\n\n async getAppConfig(): Promise<unknown> {\n try {\n const { data, error } = await this._api.GET('/applications/config');\n if (!data || error) return null;\n return data.content;\n } catch {\n return null;\n }\n }\n\n // ─── KYC ──────────────────────────────────────────────────────────────────\n\n getKycStatus(providerId?: string) {\n return getKycStatus(this._api, providerId);\n }\n\n getKycProviders(country: string) {\n return getKycProviders(this._api, country);\n }\n\n startKyc(body: KycStartBody): Promise<KycStartResponse> {\n return startKyc(this._api, body);\n }\n\n resolveKyc(providerId: string, level?: KycLevel) {\n return resolveKyc(this._api, providerId, level);\n }\n\n pollKycStatus(providerId: string, opts?: { intervalMs?: number; timeoutMs?: number }): Promise<KycStatus> {\n return pollKycStatus(this._api, providerId, opts);\n }\n\n // ─── Ramps ────────────────────────────────────────────────────────────────\n\n getRampsQuote(query: RampsQuoteQuery): Promise<RampsQuoteResponse> {\n return getRampsQuote(this._api, query);\n }\n\n createOnRamp(body: RampsOnrampBody): Promise<RampsOnrampResponse> {\n return createOnRamp(this._api, body);\n }\n\n createOffRamp(body: RampsOfframpBody): Promise<RampsOfframpResponse> {\n return createOffRamp(this._api, body);\n }\n\n getRampTransaction(txId: string): Promise<RampsTransactionResponse> {\n return getRampTransaction(this._api, txId);\n }\n\n pollRampTransaction(txId: string, opts?: { intervalMs?: number; timeoutMs?: number }): Promise<RampTxStatus> {\n return pollRampTransaction(this._api, txId, opts);\n }\n\n private _setTxHistoryState(next: TxHistoryState): void {\n this._txHistoryState = next;\n for (const cb of this._txHistoryStateListeners) cb(next);\n }\n\n private _setWalletBalanceState(next: WalletBalanceState): void {\n this._walletBalanceState = next;\n for (const cb of this._walletBalanceStateListeners) cb(next);\n }\n\n // ─── Private ──────────────────────────────────────────────────────────────\n\n /** Creates a new AbortController, cancelling any existing flow first. */\n private _newController(): AbortController {\n this._loginController?.abort();\n this._loginController = new AbortController();\n return this._loginController;\n }\n\n /** Builds the deps object passed to flow functions via bind pattern. */\n private _flowDeps(signal: AbortSignal) {\n return {\n api: this._api,\n signal,\n setAuthState: this._setAuthState.bind(this),\n storeSession: this._storeSession.bind(this),\n clearSession: this._clearSession.bind(this),\n storeWalletAdapter: (adapter: WalletAdapter, type: WalletType) => {\n this._walletAdapter = adapter;\n writeWalletType(type);\n },\n };\n }\n\n private _handleFlowError(error: unknown): void {\n if (error instanceof Error && error.name === 'AbortError') {\n console.info('[PollarClient] Login cancelled');\n this._setAuthState({ step: 'idle' });\n return;\n }\n console.error('[PollarClient] Unexpected error in auth flow', error);\n this._setAuthState({\n step: 'error',\n previousStep: this._authState.step,\n message: 'An unexpected error occurred',\n errorCode: AUTH_ERROR_CODES.UNEXPECTED_ERROR,\n });\n }\n\n private _restoreSession(): void {\n this._session = readStorage();\n if (this._session) {\n this._authState = { step: 'authenticated', session: this._session };\n // Re-instantiate external wallet adapter if user logged in with one\n if (this._session.data?.providers?.wallet?.address) {\n const storedType = readWalletType();\n if (storedType === WalletType.FREIGHTER) {\n this._walletAdapter = new FreighterAdapter();\n } else if (storedType === WalletType.ALBEDO) {\n this._walletAdapter = new AlbedoAdapter();\n }\n }\n console.info('[PollarClient] Session restored from storage');\n } else {\n console.info('[PollarClient] No session in storage');\n }\n }\n\n private _storeSession(session: PollarApplicationConfigContent): void {\n console.info(`[PollarClient] Session stored — user: ${session.userId ?? 'anonymous'}`);\n this._session = session;\n writeStorage(session);\n this._setAuthState({ step: 'authenticated', session });\n }\n\n private _clearSession(): void {\n console.info('[PollarClient] Session cleared');\n this._session = null;\n this._walletAdapter = null;\n removeStorage();\n this._transactionState = null;\n this._setAuthState({ step: 'idle' });\n }\n\n private _networkPassphrase(): string {\n return this.getNetwork() === 'mainnet'\n ? 'Public Global Stellar Network ; September 2015'\n : 'Test SDF Network ; September 2015';\n }\n\n private _setNetworkState(next: NetworkState): void {\n this._networkState = next;\n const label = next.step === 'connected' ? next.network : next.step;\n console.info(`[PollarClient] network:${label}`);\n for (const cb of this._networkStateListeners) cb(next);\n }\n\n private _setAuthState(next: AuthState): void {\n this._authState = next;\n console.info(`[PollarClient] auth:${next.step}`);\n for (const cb of this._authStateListeners) cb(next);\n }\n\n private _setTransactionState(next: TransactionState): void {\n this._transactionState = next;\n console.info(`[PollarClient] transaction:${next.step}`);\n for (const cb of this._transactionStateListeners) cb(next);\n }\n}\n"]}
1
+ {"version":3,"sources":["webpack:/freighterApi/webpack/universalModuleDefinition","webpack:/freighterApi/webpack/bootstrap","webpack:/freighterApi/src/Users/piyalbasu/Stellar/lyra/@shared/constants/services.ts","webpack:/freighterApi/webpack/runtime/define%20property%20getters","webpack:/freighterApi/webpack/runtime/hasOwnProperty%20shorthand","webpack:/freighterApi/webpack/runtime/make%20namespace%20object","webpack:/freighterApi/src/Users/piyalbasu/Stellar/lyra/@shared/api/helpers/extensionMessaging.ts","webpack:/freighterApi/src/Users/piyalbasu/Stellar/lyra/@stellar/freighter-api/src/getPublicKey.ts","webpack:/freighterApi/src/Users/piyalbasu/Stellar/lyra/@shared/api/external.ts","webpack:/freighterApi/src/Users/piyalbasu/Stellar/lyra/@stellar/freighter-api/src/signTransaction.ts","webpack:/freighterApi/src/Users/piyalbasu/Stellar/lyra/@stellar/freighter-api/src/signBlob.ts","webpack:/freighterApi/src/Users/piyalbasu/Stellar/lyra/@stellar/freighter-api/src/signAuthEntry.ts","webpack:/freighterApi/src/Users/piyalbasu/Stellar/lyra/@stellar/freighter-api/src/isConnected.ts","webpack:/freighterApi/src/Users/piyalbasu/Stellar/lyra/@stellar/freighter-api/src/getNetwork.ts","webpack:/freighterApi/src/Users/piyalbasu/Stellar/lyra/@stellar/freighter-api/src/getNetworkDetails.ts","webpack:/freighterApi/src/Users/piyalbasu/Stellar/lyra/@stellar/freighter-api/src/isAllowed.ts","webpack:/freighterApi/src/Users/piyalbasu/Stellar/lyra/@stellar/freighter-api/src/setAllowed.ts","webpack:/freighterApi/src/Users/piyalbasu/Stellar/lyra/@stellar/freighter-api/src/getUserInfo.ts","webpack:/freighterApi/src/Users/piyalbasu/Stellar/lyra/@stellar/freighter-api/src/requestAccess.ts","webpack:/freighterApi/src/Users/piyalbasu/Stellar/lyra/@stellar/freighter-api/src/index.ts","../../../node_modules/openapi-fetch/src/index.js","../src/api/client.ts","../src/api/endpoints/kyc.ts","../src/api/endpoints/ramps.ts","../src/stellar/StellarClient.ts","../src/types.ts","../src/wallets/FreighterAdapter.ts","../src/wallets/types.ts","../src/wallets/AlbedoAdapter.ts","../src/client/session.ts","../src/client/stream.ts","../src/client/auth/authenticate.ts","../src/client/auth/deps.ts","../src/client/auth/emailFlow.ts","../src/client/auth/oauthFlow.ts","../src/client/auth/walletFlow.ts","../src/client/client.ts"],"names":["root","factory","exports","module","define","amd","this","SERVICE_TYPES","EXTERNAL_SERVICE_TYPES","__webpack_require__","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","e","sendMessageToContentScript","msg","MESSAGE_ID","Date","now","Math","random","window","postMessage","source","messageId","location","origin","Promise","resolve","requestTimeout","type","REQUEST_CONNECTION_STATUS","REQUEST_PUBLIC_KEY","setTimeout","isConnected","publicKey","removeEventListener","messageListener","event","r","data","t","messagedId","clearTimeout","addEventListener","getPublicKey","isBrowser","async","response","error","console","requestPublicKey","signTransaction","transactionXdr","opts","accountToSign","network","_accountToSign","networkPassphrase","signedTransaction","SUBMIT_TRANSACTION","signBlob","blob","signedBlob","SUBMIT_BLOB","signAuthEntry","entryXdr","signedAuthEntry","SUBMIT_AUTH_ENTRY","freighter","requestConnectionStatus","getNetwork","REQUEST_NETWORK","requestNetwork","getNetworkDetails","networkDetails","networkName","networkUrl","sorobanRpcUrl","undefined","REQUEST_NETWORK_DETAILS","isAllowed","REQUEST_ALLOWED_STATUS","requestAllowedStatus","setAllowed","SET_ALLOWED_STATUS","setAllowedStatus","getUserInfo","userInfo","REQUEST_USER_INFO","requestUserInfo","REQUEST_ACCESS","requestAccess","fetch","final","joiner","WalletType"],"mappings":"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","file":"index.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"freighterApi\"] = factory();\n\telse\n\t\troot[\"freighterApi\"] = factory();\n})(this, () => {\nreturn ","// The require scope\nvar __webpack_require__ = {};\n\n","export enum SERVICE_TYPES {\n CREATE_ACCOUNT = \"CREATE_ACCOUNT\",\n FUND_ACCOUNT = \"FUND_ACCOUNT\",\n ADD_ACCOUNT = \"ADD_ACCOUNT\",\n IMPORT_ACCOUNT = \"IMPORT_ACCOUNT\",\n IMPORT_HARDWARE_WALLET = \"IMPORT_HARDWARE_WALLET\",\n LOAD_ACCOUNT = \"LOAD_ACCOUNT\",\n MAKE_ACCOUNT_ACTIVE = \"MAKE_ACCOUNT_ACTIVE\",\n UPDATE_ACCOUNT_NAME = \"UPDATE_ACCOUNT_NAME\",\n GET_MNEMONIC_PHRASE = \"GET_MNEMONIC_PHRASE\",\n CONFIRM_MNEMONIC_PHRASE = \"CONFIRM_MNEMONIC_PHRASE\",\n CONFIRM_MIGRATED_MNEMONIC_PHRASE = \"CONFIRM_MIGRATED_MNEMONIC_PHRASE\",\n RECOVER_ACCOUNT = \"RECOVER_ACCOUNT\",\n CONFIRM_PASSWORD = \"CONFIRM_PASSWORD\",\n REJECT_ACCESS = \"REJECT_ACCESS\",\n GRANT_ACCESS = \"GRANT_ACCESS\",\n SIGN_TRANSACTION = \"SIGN_TRANSACTION\",\n SIGN_BLOB = \"SIGN_BLOB\",\n SIGN_AUTH_ENTRY = \"SIGN_AUTH_ENTRY\",\n HANDLE_SIGNED_HW_TRANSACTION = \"HANDLE_SIGNED_HW_TRANSACTION\",\n REJECT_TRANSACTION = \"REJECT_TRANSACTION\",\n SIGN_FREIGHTER_TRANSACTION = \"SIGN_FREIGHTER_TRANSACTION\",\n SIGN_FREIGHTER_SOROBAN_TRANSACTION = \"SIGN_FREIGHTER_SOROBAN_TRANSACTION\",\n ADD_RECENT_ADDRESS = \"ADD_RECENT_ADDRESS\",\n LOAD_RECENT_ADDRESSES = \"LOAD_RECENT_ADDRESSES\",\n SIGN_OUT = \"SIGN_OUT\",\n SHOW_BACKUP_PHRASE = \"SHOW_BACKUP_PHRASE\",\n SAVE_ALLOWLIST = \"SAVE_ALLOWLIST\",\n SAVE_SETTINGS = \"SAVE_SETTINGS\",\n LOAD_SETTINGS = \"LOAD_SETTINGS\",\n GET_CACHED_ASSET_ICON = \"GET_CACHED_ASSET_ICON\",\n CACHE_ASSET_ICON = \"CACHE_ASSET_ICON\",\n GET_CACHED_ASSET_DOMAIN = \"GET_CACHED_ASSET_DOMAIN\",\n CACHE_ASSET_DOMAIN = \"CACHE_ASSET_DOMAIN\",\n GET_BLOCKED_ACCOUNTS = \"GET_BLOCKED_ACCOUNTS\",\n GET_BLOCKED_DOMAINS = \"GET_BLOCKED_DOMAINS\",\n ADD_CUSTOM_NETWORK = \"ADD_CUSTOM_NETWORK\",\n CHANGE_NETWORK = \"CHANGE_NETWORK\",\n REMOVE_CUSTOM_NETWORK = \"REMOVE_CUSTOM_NETWORK\",\n EDIT_CUSTOM_NETWORK = \"EDIT_CUSTOM_NETWORK\",\n RESET_EXP_DATA = \"RESET_EXP_DATA\",\n ADD_TOKEN_ID = \"ADD_TOKEN_ID\",\n GET_TOKEN_IDS = \"GET_TOKEN_IDS\",\n REMOVE_TOKEN_ID = \"REMOVE_TOKEN_ID\",\n GET_MIGRATABLE_ACCOUNTS = \"GET_MIGRATABLE_ACCOUNTS\",\n GET_MIGRATED_MNEMONIC_PHRASE = \"GET_MIGRATED_MNEMONIC_PHRASE\",\n MIGRATE_ACCOUNTS = \"MIGRATE_ACCOUNTS\",\n}\n\nexport enum EXTERNAL_SERVICE_TYPES {\n REQUEST_ACCESS = \"REQUEST_ACCESS\",\n REQUEST_PUBLIC_KEY = \"REQUEST_PUBLIC_KEY\",\n SUBMIT_TRANSACTION = \"SUBMIT_TRANSACTION\",\n SUBMIT_BLOB = \"SUBMIT_BLOB\",\n SUBMIT_AUTH_ENTRY = \"SUBMIT_AUTH_ENTRY\",\n REQUEST_NETWORK = \"REQUEST_NETWORK\",\n REQUEST_NETWORK_DETAILS = \"REQUEST_NETWORK_DETAILS\",\n REQUEST_CONNECTION_STATUS = \"REQUEST_CONNECTION_STATUS\",\n REQUEST_ALLOWED_STATUS = \"REQUEST_ALLOWED_STATUS\",\n SET_ALLOWED_STATUS = \"SET_ALLOWED_STATUS\",\n REQUEST_USER_INFO = \"REQUEST_USER_INFO\",\n}\n\nexport const EXTERNAL_MSG_REQUEST = \"FREIGHTER_EXTERNAL_MSG_REQUEST\";\nexport const EXTERNAL_MSG_RESPONSE = \"FREIGHTER_EXTERNAL_MSG_RESPONSE\";\n\ndeclare const DEV_SERVER: string;\nconst _DEV_SERVER = DEV_SERVER;\nexport { _DEV_SERVER as DEV_SERVER };\n\ndeclare const DEV_EXTENSION: string;\nconst _DEV_EXTENSION = DEV_EXTENSION;\nexport { _DEV_EXTENSION as DEV_EXTENSION };\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import browser from \"webextension-polyfill\";\nimport {\n DEV_SERVER,\n EXTERNAL_MSG_RESPONSE,\n EXTERNAL_MSG_REQUEST,\n EXTERNAL_SERVICE_TYPES,\n SERVICE_TYPES,\n} from \"../../constants/services\";\nimport { Response } from \"../types\";\n\ninterface Msg {\n [key: string]: any;\n type: EXTERNAL_SERVICE_TYPES | SERVICE_TYPES;\n}\n\nexport const sendMessageToContentScript = (msg: Msg): Promise<Response> => {\n /* \n In the case of multiple calls coming in sequentially, we use this MESSAGE_ID to make sure we're responding to\n the appropriate message sender. Otherwise, we can run into race conditions where we simply resolve all \n sent messages with the first thing that comes back.\n */\n const MESSAGE_ID = Date.now() + Math.random();\n\n window.postMessage(\n { source: EXTERNAL_MSG_REQUEST, messageId: MESSAGE_ID, ...msg },\n window.location.origin,\n );\n return new Promise((resolve) => {\n let requestTimeout = 0;\n\n /* \n In the case that Freighter is not installed at all, any messages to \n background from freighter-api will hang forever and not respond in any way. \n This is especially a problem for the isConnected method, because this is \n likely to be called in a situation where Freighter isn't installed.\n To prevent this, we add a timeout to automatically resolve in the event \n Freighter doesn't respond in a timely fashion to this method.\n */\n if (\n msg.type === EXTERNAL_SERVICE_TYPES.REQUEST_CONNECTION_STATUS ||\n msg.type === EXTERNAL_SERVICE_TYPES.REQUEST_PUBLIC_KEY\n ) {\n requestTimeout = setTimeout(() => {\n resolve({\n isConnected: false,\n publicKey: \"\",\n } as Response);\n window.removeEventListener(\"message\", messageListener);\n }, 2000);\n }\n\n const messageListener = (event: { source: any; data: Response }) => {\n // We only accept messages from ourselves\n if (event.source !== window) return;\n // Only respond to messages tagged as being from our content script\n if (event?.data?.source !== EXTERNAL_MSG_RESPONSE) return;\n // Only respond to messages that this instance of sendMessageToContentScript sent\n if (event?.data?.messagedId !== MESSAGE_ID) return;\n\n resolve(event.data);\n window.removeEventListener(\"message\", messageListener);\n clearTimeout(requestTimeout);\n };\n window.addEventListener(\"message\", messageListener, false);\n });\n};\n\nexport const sendMessageToBackground = async (msg: Msg): Promise<Response> => {\n let res;\n if (DEV_SERVER) {\n // treat this as an external call because we're making the call from the browser, not the popup\n res = await sendMessageToContentScript(msg);\n } else {\n res = await browser.runtime.sendMessage(msg);\n }\n\n return res;\n};\n","import { requestPublicKey } from \"@shared/api/external\";\nimport { isBrowser } from \".\";\n\nexport const getPublicKey = (): Promise<string> =>\n isBrowser ? requestPublicKey() : Promise.resolve(\"\");\n","import { EXTERNAL_SERVICE_TYPES } from \"../constants/services\";\nimport { NetworkDetails } from \"../constants/stellar\";\nimport { sendMessageToContentScript } from \"./helpers/extensionMessaging\";\nimport { UserInfo } from \"./types\";\n\nexport const requestAccess = async (): Promise<string> => {\n let response = { publicKey: \"\", error: \"\" };\n try {\n response = await sendMessageToContentScript({\n type: EXTERNAL_SERVICE_TYPES.REQUEST_ACCESS,\n });\n } catch (e) {\n console.error(e);\n }\n\n const { publicKey, error } = response;\n\n if (error) {\n throw error;\n }\n return publicKey;\n};\n\nexport const requestPublicKey = async (): Promise<string> => {\n let response = { publicKey: \"\", error: \"\" };\n try {\n response = await sendMessageToContentScript({\n type: EXTERNAL_SERVICE_TYPES.REQUEST_PUBLIC_KEY,\n });\n } catch (e) {\n console.error(e);\n }\n\n const { publicKey, error } = response;\n\n if (error) {\n throw error;\n }\n return publicKey;\n};\n\nexport const submitTransaction = async (\n transactionXdr: string,\n opts?:\n | string\n | {\n network?: string;\n accountToSign?: string;\n networkPassphrase?: string;\n },\n accountToSign?: string,\n): Promise<string> => {\n let network = \"\";\n let _accountToSign = \"\";\n let networkPassphrase = \"\";\n\n /* \n As of v1.3.0, this method now accepts an object as its second param. \n Previously, it accepted optional second and third string parameters.\n This logic maintains backwards compatibility for older versions\n */\n if (typeof opts === \"object\") {\n network = opts.network || \"\";\n _accountToSign = opts.accountToSign || \"\";\n networkPassphrase = opts.networkPassphrase || \"\";\n } else {\n network = opts || \"\";\n _accountToSign = accountToSign || \"\";\n }\n\n let response = { signedTransaction: \"\", error: \"\" };\n try {\n response = await sendMessageToContentScript({\n transactionXdr,\n network,\n networkPassphrase,\n accountToSign: _accountToSign,\n type: EXTERNAL_SERVICE_TYPES.SUBMIT_TRANSACTION,\n });\n } catch (e) {\n console.error(e);\n throw e;\n }\n const { signedTransaction, error } = response;\n\n if (error) {\n throw error;\n }\n return signedTransaction;\n};\n\nexport const submitBlob = async (\n blob: string,\n opts?: {\n accountToSign?: string;\n },\n): Promise<string> => {\n let response = { signedBlob: \"\", error: \"\" };\n const _opts = opts || {};\n const accountToSign = _opts.accountToSign || \"\";\n try {\n response = await sendMessageToContentScript({\n blob,\n accountToSign,\n type: EXTERNAL_SERVICE_TYPES.SUBMIT_BLOB,\n });\n } catch (e) {\n console.error(e);\n throw e;\n }\n const { signedBlob, error } = response;\n\n if (error) {\n throw error;\n }\n return signedBlob;\n};\n\nexport const submitAuthEntry = async (\n entryXdr: string,\n opts?: {\n accountToSign?: string;\n },\n): Promise<string> => {\n let response = { signedAuthEntry: \"\", error: \"\" };\n const _opts = opts || {};\n const accountToSign = _opts.accountToSign || \"\";\n try {\n response = await sendMessageToContentScript({\n entryXdr,\n accountToSign,\n type: EXTERNAL_SERVICE_TYPES.SUBMIT_AUTH_ENTRY,\n });\n } catch (e) {\n console.error(e);\n }\n const { signedAuthEntry, error } = response;\n\n if (error) {\n throw error;\n }\n return signedAuthEntry;\n};\n\nexport const requestNetwork = async (): Promise<string> => {\n let response = { network: \"\", error: \"\" };\n try {\n response = await sendMessageToContentScript({\n type: EXTERNAL_SERVICE_TYPES.REQUEST_NETWORK,\n });\n } catch (e) {\n console.error(e);\n }\n\n const { network, error } = response;\n\n if (error) {\n throw error;\n }\n return network;\n};\n\nexport const requestNetworkDetails = async (): Promise<{\n network: string;\n networkUrl: string;\n networkPassphrase: string;\n sorobanRpcUrl?: string;\n}> => {\n let response = {\n networkDetails: {\n network: \"\",\n networkName: \"\",\n networkUrl: \"\",\n networkPassphrase: \"\",\n sorobanRpcUrl: undefined,\n } as NetworkDetails,\n error: \"\",\n };\n try {\n response = await sendMessageToContentScript({\n type: EXTERNAL_SERVICE_TYPES.REQUEST_NETWORK_DETAILS,\n });\n } catch (e) {\n console.error(e);\n }\n\n const { networkDetails, error } = response;\n const {\n network,\n networkUrl,\n networkPassphrase,\n sorobanRpcUrl,\n } = networkDetails;\n\n if (error) {\n throw error;\n }\n return { network, networkUrl, networkPassphrase, sorobanRpcUrl };\n};\n\nexport const requestConnectionStatus = async (): Promise<boolean> => {\n let response = {\n isConnected: false,\n };\n\n try {\n response = await sendMessageToContentScript({\n type: EXTERNAL_SERVICE_TYPES.REQUEST_CONNECTION_STATUS,\n });\n } catch (e) {\n console.error(e);\n }\n\n return response.isConnected;\n};\n\nexport const requestAllowedStatus = async (): Promise<boolean> => {\n let response = {\n isAllowed: false,\n };\n\n try {\n response = await sendMessageToContentScript({\n type: EXTERNAL_SERVICE_TYPES.REQUEST_ALLOWED_STATUS,\n });\n } catch (e) {\n console.error(e);\n }\n\n return response.isAllowed;\n};\n\nexport const setAllowedStatus = async (): Promise<boolean> => {\n let response = {\n isAllowed: false,\n error: \"\",\n };\n\n try {\n response = await sendMessageToContentScript({\n type: EXTERNAL_SERVICE_TYPES.SET_ALLOWED_STATUS,\n });\n } catch (e) {\n console.error(e);\n }\n\n const { isAllowed, error } = response;\n\n if (error) {\n throw error;\n }\n return isAllowed;\n};\n\nexport const requestUserInfo = async (): Promise<UserInfo> => {\n let response = { userInfo: { publicKey: \"\" }, error: \"\" };\n try {\n response = await sendMessageToContentScript({\n type: EXTERNAL_SERVICE_TYPES.REQUEST_USER_INFO,\n });\n } catch (e) {\n console.error(e);\n }\n\n const { userInfo, error } = response;\n\n if (error) {\n throw error;\n }\n return userInfo;\n};\n","import { submitTransaction } from \"@shared/api/external\";\nimport { isBrowser } from \".\";\n\nexport const signTransaction = (\n transactionXdr: string,\n opts?: {\n network?: string;\n networkPassphrase?: string;\n accountToSign?: string;\n }\n): Promise<string> =>\n isBrowser ? submitTransaction(transactionXdr, opts) : Promise.resolve(\"\");\n","import { submitBlob } from \"@shared/api/external\";\nimport { isBrowser } from \".\";\n\nexport const signBlob = (\n blob: string,\n opts?: {\n accountToSign?: string;\n }\n): Promise<string> =>\n isBrowser ? submitBlob(blob, opts) : Promise.resolve(\"\");\n","import { submitAuthEntry } from \"@shared/api/external\";\nimport { isBrowser } from \".\";\n\nexport const signAuthEntry = (\n entryXdr: string,\n opts?: {\n accountToSign?: string;\n }\n): Promise<string> =>\n isBrowser ? submitAuthEntry(entryXdr, opts) : Promise.resolve(\"\");\n","import { requestConnectionStatus } from \"@shared/api/external\";\nimport { isBrowser } from \".\";\n\nexport const isConnected = (): Promise<boolean> => {\n if (!isBrowser) return Promise.resolve(false);\n\n if (window.freighter) {\n return Promise.resolve(window.freighter);\n }\n\n return requestConnectionStatus();\n};\n","import { requestNetwork } from \"@shared/api/external\";\nimport { isBrowser } from \".\";\n\nexport const getNetwork = (): Promise<string> =>\n isBrowser ? requestNetwork() : Promise.resolve(\"\");\n","import { requestNetworkDetails } from \"@shared/api/external\";\nimport { isBrowser } from \".\";\n\nexport const getNetworkDetails = (): Promise<{\n network: string;\n networkUrl: string;\n networkPassphrase: string;\n sorobanRpcUrl?: string;\n}> =>\n isBrowser\n ? requestNetworkDetails()\n : Promise.resolve({\n network: \"\",\n networkUrl: \"\",\n networkPassphrase: \"\",\n sorobanRpcUrl: \"\",\n });\n","import { requestAllowedStatus } from \"@shared/api/external\";\nimport { isBrowser } from \".\";\n\nexport const isAllowed = (): Promise<boolean> =>\n isBrowser ? requestAllowedStatus() : Promise.resolve(false);\n","import { setAllowedStatus } from \"@shared/api/external\";\nimport { isBrowser } from \".\";\n\nexport const setAllowed = (): Promise<boolean> =>\n isBrowser ? setAllowedStatus() : Promise.resolve(false);\n","import { requestUserInfo } from \"@shared/api/external\";\nimport { isBrowser } from \".\";\n\nexport const getUserInfo = (): Promise<{ publicKey: string }> =>\n isBrowser ? requestUserInfo() : Promise.resolve({ publicKey: \"\" });\n","import { requestAccess as requestAccessApi } from \"@shared/api/external\";\nimport { isBrowser } from \".\";\n\nexport const requestAccess = (): Promise<string> =>\n isBrowser ? requestAccessApi() : Promise.resolve(\"\");\n","import { getPublicKey } from \"./getPublicKey\";\nimport { signTransaction } from \"./signTransaction\";\nimport { signBlob } from \"./signBlob\";\nimport { signAuthEntry } from \"./signAuthEntry\";\nimport { isConnected } from \"./isConnected\";\nimport { getNetwork } from \"./getNetwork\";\nimport { getNetworkDetails } from \"./getNetworkDetails\";\nimport { isAllowed } from \"./isAllowed\";\nimport { setAllowed } from \"./setAllowed\";\nimport { getUserInfo } from \"./getUserInfo\";\nimport { requestAccess } from \"./requestAccess\";\n\nexport const isBrowser = typeof window !== \"undefined\";\n\nexport {\n getPublicKey,\n signTransaction,\n signBlob,\n signAuthEntry,\n isConnected,\n getNetwork,\n getNetworkDetails,\n isAllowed,\n setAllowed,\n getUserInfo,\n requestAccess,\n};\nexport default {\n getPublicKey,\n signTransaction,\n signBlob,\n signAuthEntry,\n isConnected,\n getNetwork,\n getNetworkDetails,\n isAllowed,\n setAllowed,\n getUserInfo,\n requestAccess,\n};\n","// settings & const\nconst PATH_PARAM_RE = /\\{[^{}]+\\}/g;\n\nconst supportsRequestInitExt = () => {\n return (\n typeof process === \"object\" &&\n Number.parseInt(process?.versions?.node?.substring(0, 2)) >= 18 &&\n process.versions.undici\n );\n};\n\n/**\n * Returns a cheap, non-cryptographically-secure random ID\n * Courtesy of @imranbarbhuiya (https://github.com/imranbarbhuiya)\n */\nexport function randomID() {\n return Math.random().toString(36).slice(2, 11);\n}\n\n/**\n * Create an openapi-fetch client.\n * @type {import(\"./index.js\").default}\n */\nexport default function createClient(clientOptions) {\n let {\n baseUrl = \"\",\n Request: CustomRequest = globalThis.Request,\n fetch: baseFetch = globalThis.fetch,\n querySerializer: globalQuerySerializer,\n bodySerializer: globalBodySerializer,\n pathSerializer: globalPathSerializer,\n headers: baseHeaders,\n requestInitExt = undefined,\n ...baseOptions\n } = { ...clientOptions };\n requestInitExt = supportsRequestInitExt() ? requestInitExt : undefined;\n baseUrl = removeTrailingSlash(baseUrl);\n const globalMiddlewares = [];\n\n /**\n * Per-request fetch (keeps settings created in createClient()\n * @param {T} url\n * @param {import('./index.js').FetchOptions<T>} fetchOptions\n */\n async function coreFetch(schemaPath, fetchOptions) {\n const {\n baseUrl: localBaseUrl,\n fetch = baseFetch,\n Request = CustomRequest,\n headers,\n params = {},\n parseAs = \"json\",\n querySerializer: requestQuerySerializer,\n bodySerializer = globalBodySerializer ?? defaultBodySerializer,\n pathSerializer: requestPathSerializer,\n body,\n middleware: requestMiddlewares = [],\n ...init\n } = fetchOptions || {};\n let finalBaseUrl = baseUrl;\n if (localBaseUrl) {\n finalBaseUrl = removeTrailingSlash(localBaseUrl) ?? baseUrl;\n }\n\n let querySerializer =\n typeof globalQuerySerializer === \"function\"\n ? globalQuerySerializer\n : createQuerySerializer(globalQuerySerializer);\n if (requestQuerySerializer) {\n querySerializer =\n typeof requestQuerySerializer === \"function\"\n ? requestQuerySerializer\n : createQuerySerializer({\n ...(typeof globalQuerySerializer === \"object\" ? globalQuerySerializer : {}),\n ...requestQuerySerializer,\n });\n }\n\n const pathSerializer = requestPathSerializer || globalPathSerializer || defaultPathSerializer;\n\n const serializedBody =\n body === undefined\n ? undefined\n : bodySerializer(\n body,\n // Note: we declare mergeHeaders() both here and below because it’s a bit of a chicken-or-egg situation:\n // bodySerializer() needs all headers so we aren’t dropping ones set by the user, however,\n // the result of this ALSO sets the lowest-priority content-type header. So we re-merge below,\n // setting the content-type at the very beginning to be overwritten.\n // Lastly, based on the way headers work, it’s not a simple “present-or-not” check becauase null intentionally un-sets headers.\n mergeHeaders(baseHeaders, headers, params.header),\n );\n const finalHeaders = mergeHeaders(\n // with no body, we should not to set Content-Type\n serializedBody === undefined ||\n // if serialized body is FormData; browser will correctly set Content-Type & boundary expression\n serializedBody instanceof FormData\n ? {}\n : {\n \"Content-Type\": \"application/json\",\n },\n baseHeaders,\n headers,\n params.header,\n );\n\n // Client level middleware take priority over request-level middleware\n const finalMiddlewares = [...globalMiddlewares, ...requestMiddlewares];\n\n const requestInit = {\n redirect: \"follow\",\n ...baseOptions,\n ...init,\n body: serializedBody,\n headers: finalHeaders,\n };\n\n let id;\n let options;\n let request = new Request(\n createFinalURL(schemaPath, { baseUrl: finalBaseUrl, params, querySerializer, pathSerializer }),\n requestInit,\n );\n let response;\n\n /** Add custom parameters to Request object */\n for (const key in init) {\n if (!(key in request)) {\n request[key] = init[key];\n }\n }\n\n if (finalMiddlewares.length) {\n id = randomID();\n\n // middleware (request)\n options = Object.freeze({\n baseUrl: finalBaseUrl,\n fetch,\n parseAs,\n querySerializer,\n bodySerializer,\n pathSerializer,\n });\n for (const m of finalMiddlewares) {\n if (m && typeof m === \"object\" && typeof m.onRequest === \"function\") {\n const result = await m.onRequest({\n request,\n schemaPath,\n params,\n options,\n id,\n });\n if (result) {\n if (result instanceof Request) {\n request = result;\n } else if (result instanceof Response) {\n response = result;\n break;\n } else {\n throw new Error(\"onRequest: must return new Request() or Response() when modifying the request\");\n }\n }\n }\n }\n }\n\n if (!response) {\n // fetch!\n try {\n response = await fetch(request, requestInitExt);\n } catch (error) {\n let errorAfterMiddleware = error;\n // middleware (error)\n // execute in reverse-array order (first priority gets last transform)\n if (finalMiddlewares.length) {\n for (let i = finalMiddlewares.length - 1; i >= 0; i--) {\n const m = finalMiddlewares[i];\n if (m && typeof m === \"object\" && typeof m.onError === \"function\") {\n const result = await m.onError({\n request,\n error: errorAfterMiddleware,\n schemaPath,\n params,\n options,\n id,\n });\n if (result) {\n // if error is handled by returning a response, skip remaining middleware\n if (result instanceof Response) {\n errorAfterMiddleware = undefined;\n response = result;\n break;\n }\n\n if (result instanceof Error) {\n errorAfterMiddleware = result;\n continue;\n }\n\n throw new Error(\"onError: must return new Response() or instance of Error\");\n }\n }\n }\n }\n\n // rethrow error if not handled by middleware\n if (errorAfterMiddleware) {\n throw errorAfterMiddleware;\n }\n }\n\n // middleware (response)\n // execute in reverse-array order (first priority gets last transform)\n if (finalMiddlewares.length) {\n for (let i = finalMiddlewares.length - 1; i >= 0; i--) {\n const m = finalMiddlewares[i];\n if (m && typeof m === \"object\" && typeof m.onResponse === \"function\") {\n const result = await m.onResponse({\n request,\n response,\n schemaPath,\n params,\n options,\n id,\n });\n if (result) {\n if (!(result instanceof Response)) {\n throw new Error(\"onResponse: must return new Response() when modifying the response\");\n }\n response = result;\n }\n }\n }\n }\n }\n\n const contentLength = response.headers.get(\"Content-Length\");\n // handle empty content\n if (\n response.status === 204 ||\n request.method === \"HEAD\" ||\n (contentLength === \"0\" && !response.headers.get(\"Transfer-Encoding\")?.includes(\"chunked\"))\n ) {\n return response.ok ? { data: undefined, response } : { error: undefined, response };\n }\n\n // parse response (falling back to .text() when necessary)\n if (response.ok) {\n const getResponseData = async () => {\n // if \"stream\", skip parsing entirely\n if (parseAs === \"stream\") {\n return response.body;\n }\n\n if (parseAs === \"json\" && !contentLength) {\n // use text() when no content-length is provided to avoid errors parsing empty bodies (200 with no content)\n const raw = await response.text();\n return raw ? JSON.parse(raw) : undefined;\n }\n\n return await response[parseAs]();\n };\n return { data: await getResponseData(), response };\n }\n\n // handle errors\n let error = await response.text();\n try {\n error = JSON.parse(error); // attempt to parse as JSON\n } catch {\n // noop\n }\n return { error, response };\n }\n\n return {\n request(method, url, init) {\n return coreFetch(url, { ...init, method: method.toUpperCase() });\n },\n /** Call a GET endpoint */\n GET(url, init) {\n return coreFetch(url, { ...init, method: \"GET\" });\n },\n /** Call a PUT endpoint */\n PUT(url, init) {\n return coreFetch(url, { ...init, method: \"PUT\" });\n },\n /** Call a POST endpoint */\n POST(url, init) {\n return coreFetch(url, { ...init, method: \"POST\" });\n },\n /** Call a DELETE endpoint */\n DELETE(url, init) {\n return coreFetch(url, { ...init, method: \"DELETE\" });\n },\n /** Call a OPTIONS endpoint */\n OPTIONS(url, init) {\n return coreFetch(url, { ...init, method: \"OPTIONS\" });\n },\n /** Call a HEAD endpoint */\n HEAD(url, init) {\n return coreFetch(url, { ...init, method: \"HEAD\" });\n },\n /** Call a PATCH endpoint */\n PATCH(url, init) {\n return coreFetch(url, { ...init, method: \"PATCH\" });\n },\n /** Call a TRACE endpoint */\n TRACE(url, init) {\n return coreFetch(url, { ...init, method: \"TRACE\" });\n },\n /** Register middleware */\n use(...middleware) {\n for (const m of middleware) {\n if (!m) {\n continue;\n }\n if (typeof m !== \"object\" || !(\"onRequest\" in m || \"onResponse\" in m || \"onError\" in m)) {\n throw new Error(\"Middleware must be an object with one of `onRequest()`, `onResponse() or `onError()`\");\n }\n globalMiddlewares.push(m);\n }\n },\n /** Unregister middleware */\n eject(...middleware) {\n for (const m of middleware) {\n const i = globalMiddlewares.indexOf(m);\n if (i !== -1) {\n globalMiddlewares.splice(i, 1);\n }\n }\n },\n };\n}\n\nclass PathCallForwarder {\n constructor(client, url) {\n this.client = client;\n this.url = url;\n }\n\n GET = (init) => {\n return this.client.GET(this.url, init);\n };\n PUT = (init) => {\n return this.client.PUT(this.url, init);\n };\n POST = (init) => {\n return this.client.POST(this.url, init);\n };\n DELETE = (init) => {\n return this.client.DELETE(this.url, init);\n };\n OPTIONS = (init) => {\n return this.client.OPTIONS(this.url, init);\n };\n HEAD = (init) => {\n return this.client.HEAD(this.url, init);\n };\n PATCH = (init) => {\n return this.client.PATCH(this.url, init);\n };\n TRACE = (init) => {\n return this.client.TRACE(this.url, init);\n };\n}\n\nclass PathClientProxyHandler {\n constructor() {\n this.client = null;\n }\n\n // Assume the property is an URL.\n get(coreClient, url) {\n const forwarder = new PathCallForwarder(coreClient, url);\n this.client[url] = forwarder;\n return forwarder;\n }\n}\n\n/**\n * Wrap openapi-fetch client to support a path based API.\n * @type {import(\"./index.js\").wrapAsPathBasedClient}\n */\nexport function wrapAsPathBasedClient(coreClient) {\n const handler = new PathClientProxyHandler();\n const proxy = new Proxy(coreClient, handler);\n\n // Put the proxy on the prototype chain of the actual client.\n // This means if we do not have a memoized PathCallForwarder,\n // we fall back to the proxy to synthesize it.\n // However, the proxy itself is not on the hot-path (if we fetch the same\n // endpoint multiple times, only the first call will hit the proxy).\n function Client() {}\n Client.prototype = proxy;\n\n const client = new Client();\n\n // Feed the client back to the proxy handler so it can store the generated\n // PathCallForwarder.\n handler.client = client;\n\n return client;\n}\n\n/**\n * Convenience method to an openapi-fetch path based client.\n * Strictly equivalent to `wrapAsPathBasedClient(createClient(...))`.\n * @type {import(\"./index.js\").createPathBasedClient}\n */\nexport function createPathBasedClient(clientOptions) {\n return wrapAsPathBasedClient(createClient(clientOptions));\n}\n\n// utils\n\n/**\n * Serialize primitive param values\n * @type {import(\"./index.js\").serializePrimitiveParam}\n */\nexport function serializePrimitiveParam(name, value, options) {\n if (value === undefined || value === null) {\n return \"\";\n }\n if (typeof value === \"object\") {\n throw new Error(\n \"Deeply-nested arrays/objects aren’t supported. Provide your own `querySerializer()` to handle these.\",\n );\n }\n return `${name}=${options?.allowReserved === true ? value : encodeURIComponent(value)}`;\n}\n\n/**\n * Serialize object param (shallow only)\n * @type {import(\"./index.js\").serializeObjectParam}\n */\nexport function serializeObjectParam(name, value, options) {\n if (!value || typeof value !== \"object\") {\n return \"\";\n }\n const values = [];\n const joiner =\n {\n simple: \",\",\n label: \".\",\n matrix: \";\",\n }[options.style] || \"&\";\n\n // explode: false\n if (options.style !== \"deepObject\" && options.explode === false) {\n for (const k in value) {\n values.push(k, options.allowReserved === true ? value[k] : encodeURIComponent(value[k]));\n }\n const final = values.join(\",\"); // note: values are always joined by comma in explode: false (but joiner can prefix)\n switch (options.style) {\n case \"form\": {\n return `${name}=${final}`;\n }\n case \"label\": {\n return `.${final}`;\n }\n case \"matrix\": {\n return `;${name}=${final}`;\n }\n default: {\n return final;\n }\n }\n }\n\n // explode: true\n for (const k in value) {\n const finalName = options.style === \"deepObject\" ? `${name}[${k}]` : k;\n values.push(serializePrimitiveParam(finalName, value[k], options));\n }\n const final = values.join(joiner);\n return options.style === \"label\" || options.style === \"matrix\" ? `${joiner}${final}` : final;\n}\n\n/**\n * Serialize array param (shallow only)\n * @type {import(\"./index.js\").serializeArrayParam}\n */\nexport function serializeArrayParam(name, value, options) {\n if (!Array.isArray(value)) {\n return \"\";\n }\n\n // explode: false\n if (options.explode === false) {\n const joiner = { form: \",\", spaceDelimited: \"%20\", pipeDelimited: \"|\" }[options.style] || \",\"; // note: for arrays, joiners vary wildly based on style + explode behavior\n const final = (options.allowReserved === true ? value : value.map((v) => encodeURIComponent(v))).join(joiner);\n switch (options.style) {\n case \"simple\": {\n return final;\n }\n case \"label\": {\n return `.${final}`;\n }\n case \"matrix\": {\n return `;${name}=${final}`;\n }\n // case \"spaceDelimited\":\n // case \"pipeDelimited\":\n default: {\n return `${name}=${final}`;\n }\n }\n }\n\n // explode: true\n const joiner = { simple: \",\", label: \".\", matrix: \";\" }[options.style] || \"&\";\n const values = [];\n for (const v of value) {\n if (options.style === \"simple\" || options.style === \"label\") {\n values.push(options.allowReserved === true ? v : encodeURIComponent(v));\n } else {\n values.push(serializePrimitiveParam(name, v, options));\n }\n }\n return options.style === \"label\" || options.style === \"matrix\"\n ? `${joiner}${values.join(joiner)}`\n : values.join(joiner);\n}\n\n/**\n * Serialize query params to string\n * @type {import(\"./index.js\").createQuerySerializer}\n */\nexport function createQuerySerializer(options) {\n return function querySerializer(queryParams) {\n const search = [];\n if (queryParams && typeof queryParams === \"object\") {\n for (const name in queryParams) {\n const value = queryParams[name];\n if (value === undefined || value === null) {\n continue;\n }\n if (Array.isArray(value)) {\n if (value.length === 0) {\n continue;\n }\n search.push(\n serializeArrayParam(name, value, {\n style: \"form\",\n explode: true,\n ...options?.array,\n allowReserved: options?.allowReserved || false,\n }),\n );\n continue;\n }\n if (typeof value === \"object\") {\n search.push(\n serializeObjectParam(name, value, {\n style: \"deepObject\",\n explode: true,\n ...options?.object,\n allowReserved: options?.allowReserved || false,\n }),\n );\n continue;\n }\n search.push(serializePrimitiveParam(name, value, options));\n }\n }\n return search.join(\"&\");\n };\n}\n\n/**\n * Handle different OpenAPI 3.x serialization styles\n * @type {import(\"./index.js\").defaultPathSerializer}\n * @see https://swagger.io/docs/specification/serialization/#path\n */\nexport function defaultPathSerializer(pathname, pathParams) {\n let nextURL = pathname;\n for (const match of pathname.match(PATH_PARAM_RE) ?? []) {\n let name = match.substring(1, match.length - 1);\n let explode = false;\n let style = \"simple\";\n if (name.endsWith(\"*\")) {\n explode = true;\n name = name.substring(0, name.length - 1);\n }\n if (name.startsWith(\".\")) {\n style = \"label\";\n name = name.substring(1);\n } else if (name.startsWith(\";\")) {\n style = \"matrix\";\n name = name.substring(1);\n }\n if (!pathParams || pathParams[name] === undefined || pathParams[name] === null) {\n continue;\n }\n const value = pathParams[name];\n if (Array.isArray(value)) {\n nextURL = nextURL.replace(match, serializeArrayParam(name, value, { style, explode }));\n continue;\n }\n if (typeof value === \"object\") {\n nextURL = nextURL.replace(match, serializeObjectParam(name, value, { style, explode }));\n continue;\n }\n if (style === \"matrix\") {\n nextURL = nextURL.replace(match, `;${serializePrimitiveParam(name, value)}`);\n continue;\n }\n nextURL = nextURL.replace(match, style === \"label\" ? `.${encodeURIComponent(value)}` : encodeURIComponent(value));\n }\n return nextURL;\n}\n\n/**\n * Serialize body object to string\n * @type {import(\"./index.js\").defaultBodySerializer}\n */\nexport function defaultBodySerializer(body, headers) {\n if (body instanceof FormData) {\n return body;\n }\n if (headers) {\n const contentType =\n headers.get instanceof Function\n ? (headers.get(\"Content-Type\") ?? headers.get(\"content-type\"))\n : (headers[\"Content-Type\"] ?? headers[\"content-type\"]);\n if (contentType === \"application/x-www-form-urlencoded\") {\n return new URLSearchParams(body).toString();\n }\n }\n return JSON.stringify(body);\n}\n\n/**\n * Construct URL string from baseUrl and handle path and query params\n * @type {import(\"./index.js\").createFinalURL}\n */\nexport function createFinalURL(pathname, options) {\n let finalURL = `${options.baseUrl}${pathname}`;\n if (options.params?.path) {\n finalURL = options.pathSerializer(finalURL, options.params.path);\n }\n let search = options.querySerializer(options.params.query ?? {});\n if (search.startsWith(\"?\")) {\n search = search.substring(1);\n }\n if (search) {\n finalURL += `?${search}`;\n }\n return finalURL;\n}\n\n/**\n * Merge headers a and b, with b taking priority\n * @type {import(\"./index.js\").mergeHeaders}\n */\nexport function mergeHeaders(...allHeaders) {\n const finalHeaders = new Headers();\n for (const h of allHeaders) {\n if (!h || typeof h !== \"object\") {\n continue;\n }\n const iterator = h instanceof Headers ? h.entries() : Object.entries(h);\n for (const [k, v] of iterator) {\n if (v === null) {\n finalHeaders.delete(k);\n } else if (Array.isArray(v)) {\n for (const v2 of v) {\n finalHeaders.append(k, v2);\n }\n } else if (v !== undefined) {\n finalHeaders.set(k, v);\n }\n }\n }\n return finalHeaders;\n}\n\n/**\n * Remove trailing slash from url\n * @type {import(\"./index.js\").removeTrailingSlash}\n */\nexport function removeTrailingSlash(url) {\n if (url.endsWith(\"/\")) {\n return url.substring(0, url.length - 1);\n }\n return url;\n}\n","import createClient from 'openapi-fetch';\nimport type { paths } from './schema';\n\nexport type PollarApiClient = ReturnType<typeof createApiClient>;\n\nexport function createApiClient(baseUrl: string) {\n return createClient<paths>({ baseUrl });\n}","import type { KycLevel, KycProvider, KycStartBody, KycStartResponse, KycStatus } from '../../types';\nimport type { PollarApiClient } from '../client';\n\n/**\n * GET /kyc/status\n * Returns the current user's KYC status for a given provider.\n * Requires a valid auth token in the API client.\n */\nexport async function getKycStatus(\n api: PollarApiClient,\n providerId?: string,\n): Promise<{ status: KycStatus; level?: KycLevel | undefined; providerId: string; expiresAt?: string }> {\n const { data, error } = await api.GET('/kyc/status', {\n params: { query: providerId ? { providerId } : {} },\n });\n if (!data?.content || error) {\n throw new Error((error as any)?.error ?? 'Failed to get KYC status');\n }\n return data.content;\n}\n\n/**\n * GET /kyc/providers\n * Returns available KYC providers for a given country.\n */\nexport async function getKycProviders(api: PollarApiClient, country: string): Promise<{ providers: KycProvider[] }> {\n const { data, error } = await api.GET('/kyc/providers', { params: { query: { country } } });\n if (!data?.content || error) throw new Error((error as any)?.error ?? 'Failed to get KYC providers');\n return data.content;\n}\n\n/**\n * POST /kyc/start\n * Starts a KYC session.\n * - flow=iframe/redirect: returns kycUrl to embed or redirect to\n * - flow=form: returns fields[] to render a custom form\n */\nexport async function startKyc(api: PollarApiClient, body: KycStartBody): Promise<KycStartResponse> {\n const { data, error } = await api.POST('/kyc/start', { body });\n if (!data?.content || error) throw new Error((error as any)?.error ?? 'Failed to start KYC');\n return data.content;\n}\n\n/**\n * Orchestrates the full KYC resolution flow:\n * 1. Checks current status\n * 2. If already approved, returns early\n * 3. Otherwise starts KYC and returns the session (kycUrl or fields)\n */\nexport async function resolveKyc(\n api: PollarApiClient,\n providerId: string,\n level: KycLevel = 'basic',\n): Promise<{ alreadyApproved: boolean } & Partial<KycStartResponse>> {\n const { status } = await getKycStatus(api, providerId);\n if (status === 'approved') return { alreadyApproved: true };\n const started = await startKyc(api, { providerId, level });\n return { alreadyApproved: false, ...started };\n}\n\n/**\n * Polls GET /kyc/status every intervalMs until status is 'approved' or 'rejected'.\n * Throws if timeoutMs is exceeded.\n */\nexport async function pollKycStatus(\n api: PollarApiClient,\n providerId: string,\n { intervalMs = 3000, timeoutMs = 300_000 }: { intervalMs?: number; timeoutMs?: number } = {},\n): Promise<KycStatus> {\n const deadline = Date.now() + timeoutMs;\n while (Date.now() < deadline) {\n const { status } = await getKycStatus(api, providerId);\n if (status === 'approved' || status === 'rejected') return status;\n await new Promise((r) => setTimeout(r, intervalMs));\n }\n throw new Error('KYC polling timed out');\n}\n","import type { PollarApiClient } from '../client';\nimport type {\n RampsOfframpBody,\n RampsOfframpResponse,\n RampsOnrampBody,\n RampsOnrampResponse,\n RampsQuoteQuery,\n RampsQuoteResponse,\n RampsTransactionResponse,\n RampTxStatus,\n} from '../../types';\n\n/**\n * GET /ramps/quote\n * Returns available quotes for an onramp or offramp.\n * The backend ranks providers by country, amount, fee and availability.\n * The first quote in the array is the recommended one.\n */\nexport async function getRampsQuote(api: PollarApiClient, query: RampsQuoteQuery): Promise<RampsQuoteResponse> {\n const { data, error } = await api.GET('/ramps/quote', { params: { query } });\n if (!data?.content || error) throw new Error((error as any)?.error ?? 'Failed to get ramp quotes');\n return data.content;\n}\n\n/**\n * POST /ramps/onramp\n * Creates an onramp transaction.\n * For custodial users: backend orchestrates the full SEP-24 flow and returns payment instructions.\n * For non-custodial: backend may return an unsigned XDR that the client must sign via a wallet adapter.\n */\nexport async function createOnRamp(api: PollarApiClient, body: RampsOnrampBody): Promise<RampsOnrampResponse> {\n const { data, error } = await api.POST('/ramps/onramp', { body });\n if (!data?.content || error) throw new Error((error as any)?.error ?? 'Failed to create onramp');\n return data.content;\n}\n\n/**\n * POST /ramps/offramp\n * Creates an offramp transaction.\n * Backend initiates the bank transfer once the Stellar transaction is confirmed.\n */\nexport async function createOffRamp(api: PollarApiClient, body: RampsOfframpBody): Promise<RampsOfframpResponse> {\n const { data, error } = await api.POST('/ramps/offramp', { body });\n if (!data?.content || error) throw new Error((error as any)?.error ?? 'Failed to create offramp');\n return data.content;\n}\n\n/**\n * GET /ramps/transaction/{txId}\n * Returns the current status of a ramp transaction.\n */\nexport async function getRampTransaction(api: PollarApiClient, txId: string): Promise<RampsTransactionResponse> {\n const { data, error } = await api.GET('/ramps/transaction/{txId}', { params: { path: { txId } } });\n if (!data?.content || error) throw new Error((error as any)?.error ?? 'Failed to get transaction');\n return data.content;\n}\n\n/**\n * Polls GET /ramps/transaction/{txId} every intervalMs until status is 'completed' or 'failed'.\n * Throws if timeoutMs is exceeded.\n */\nexport async function pollRampTransaction(\n api: PollarApiClient,\n txId: string,\n { intervalMs = 5000, timeoutMs = 600_000 }: { intervalMs?: number; timeoutMs?: number } = {},\n): Promise<RampTxStatus> {\n const deadline = Date.now() + timeoutMs;\n while (Date.now() < deadline) {\n const { status } = await getRampTransaction(api, txId);\n if (status === 'completed' || status === 'failed') return status;\n await new Promise((r) => setTimeout(r, intervalMs));\n }\n throw new Error('Ramp transaction polling timed out');\n}\n","export type StellarNetwork = 'mainnet' | 'testnet';\n\nconst HORIZON_URLS: Record<StellarNetwork, string> = {\n mainnet: 'https://horizon.stellar.org',\n testnet: 'https://horizon-testnet.stellar.org',\n};\n\nexport type StellarClientConfig = StellarNetwork | { horizonUrl: string };\n\nexport interface StellarBalance {\n asset: string;\n balance: string;\n assetIssuer?: string;\n}\n\nexport class StellarClient {\n private readonly horizonUrl: string;\n\n constructor(config: StellarClientConfig) {\n this.horizonUrl = typeof config === 'string' ? HORIZON_URLS[config] : config.horizonUrl;\n }\n\n async submitTransaction(signedXdr: string): Promise<{ success: true; hash: string } | { success: false; errorCode: string }> {\n try {\n const response = await fetch(`${this.horizonUrl}/transactions`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/x-www-form-urlencoded' },\n body: new URLSearchParams({ tx: signedXdr }),\n });\n if (!response.ok) {\n const body = (await response.json().catch(() => ({}))) as { extras?: { result_codes?: { transaction?: string } } };\n return { success: false, errorCode: body.extras?.result_codes?.transaction ?? 'HORIZON_ERROR' };\n }\n const data = (await response.json()) as { hash: string };\n return { success: true, hash: data.hash };\n } catch {\n return { success: false, errorCode: 'NETWORK_ERROR' };\n }\n }\n}\n","import { pollarPaths, StellarNetwork } from './index';\nimport { WalletType } from './wallets';\n\nexport type PollarApplicationConfigResponse =\n pollarPaths['/auth/login']['post']['responses'][200]['content']['application/json'];\nexport type PollarApplicationConfigContent = PollarApplicationConfigResponse['content'];\n\nexport interface PollarClientConfig {\n stellarNetwork?: StellarNetwork;\n baseUrl?: string;\n apiKey: string;\n}\n\nexport type TxBuildBody = NonNullable<pollarPaths['/tx/build']['post']['requestBody']>['content']['application/json'];\nexport type TxBuildResponse = pollarPaths['/tx/build']['post']['responses'][200]['content']['application/json'];\n\nexport type TxSignAndSendBody = NonNullable<\n pollarPaths['/tx/sign-and-send']['post']['requestBody']\n>['content']['application/json'];\nexport type TxSignSendResponse = pollarPaths['/tx/sign-and-send']['post']['responses'][200]['content']['application/json'];\n\nexport type PollarLoginOptions =\n | { provider: 'google' }\n | { provider: 'github' }\n | { provider: 'email'; email: string }\n | { provider: 'wallet'; type: WalletType };\n\nexport type TxBuildContent = TxBuildResponse['content'];\n\nexport type TransactionState =\n | { step: 'idle' }\n | { step: 'building' }\n | { step: 'built'; buildData: TxBuildContent }\n | { step: 'signing'; buildData?: TxBuildContent; external?: true }\n | { step: 'success'; buildData?: TxBuildContent; hash: string; external?: true }\n | { step: 'error'; details?: string; buildData?: TxBuildContent; external?: true };\n\nexport const AUTH_ERROR_CODES = {\n SESSION_CREATE_FAILED: 'SESSION_CREATE_FAILED',\n EMAIL_SEND_FAILED: 'EMAIL_SEND_FAILED',\n EMAIL_VERIFY_FAILED: 'EMAIL_VERIFY_FAILED',\n EMAIL_CODE_EXPIRED: 'EMAIL_CODE_EXPIRED',\n EMAIL_CODE_INVALID: 'EMAIL_CODE_INVALID',\n AUTH_FAILED: 'AUTH_FAILED',\n WALLET_CONNECT_FAILED: 'WALLET_CONNECT_FAILED',\n WALLET_AUTH_FAILED: 'WALLET_AUTH_FAILED',\n UNEXPECTED_ERROR: 'UNEXPECTED_ERROR',\n} as const;\n\nexport type AuthErrorCode = (typeof AUTH_ERROR_CODES)[keyof typeof AUTH_ERROR_CODES];\n\nexport type AuthState =\n | { step: 'idle' }\n | { step: 'creating_session' }\n | { step: 'entering_email'; clientSessionId: string }\n | { step: 'sending_email'; email: string }\n | { step: 'entering_code'; clientSessionId: string; email: string }\n | { step: 'verifying_email_code'; clientSessionId: string; email: string }\n | { step: 'opening_oauth'; provider: 'google' | 'github' }\n | { step: 'connecting_wallet'; walletType: WalletType }\n | { step: 'wallet_not_installed'; walletType: WalletType }\n | { step: 'authenticating_wallet' }\n | { step: 'authenticating' }\n | { step: 'authenticated'; session: PollarApplicationConfigContent }\n | {\n step: 'error';\n previousStep: string;\n message: string;\n errorCode: AuthErrorCode;\n clientSessionId?: string;\n email?: string;\n };\n\nexport type NetworkState = { step: 'idle' } | { step: 'connected'; network: StellarNetwork };\n\nexport class PollarFlowError extends Error {\n readonly code = 'INVALID_FLOW' as const;\n constructor(message: string) {\n super(message);\n this.name = 'PollarFlowError';\n }\n}\n\n// ─── Wallet balance types ─────────────────────────────────────────────────────\n\nexport type WalletBalanceContent =\n pollarPaths['/wallet/balance']['get']['responses'][200]['content']['application/json']['content'];\nexport type WalletBalanceRecord = WalletBalanceContent['balances'][number];\n\nexport type WalletBalanceState =\n | { step: 'idle' }\n | { step: 'loading' }\n | { step: 'loaded'; data: WalletBalanceContent }\n | { step: 'error'; message: string };\n\n// ─── Tx history types ─────────────────────────────────────────────────────────\n\nexport type TxHistoryRecord =\n pollarPaths['/tx/history']['get']['responses'][200]['content']['application/json']['content']['records'][number];\n\nexport type TxHistoryParams = NonNullable<pollarPaths['/tx/history']['get']['parameters']['query']>;\n\nexport type TxHistoryContent =\n pollarPaths['/tx/history']['get']['responses'][200]['content']['application/json']['content'];\n\nexport type TxHistoryState =\n | { step: 'idle' }\n | { step: 'loading'; params: TxHistoryParams }\n | { step: 'loaded'; params: TxHistoryParams; data: TxHistoryContent }\n | { step: 'error'; params: TxHistoryParams; message: string };\n\n// ─── KYC types ────────────────────────────────────────────────────────────────\n\nexport type KycLevel = 'basic' | 'intermediate' | 'enhanced';\nexport type KycStatus = 'none' | 'pending' | 'approved' | 'rejected';\nexport type KycFlow = 'iframe' | 'form' | 'redirect';\n\nexport type KycProvider =\n pollarPaths['/kyc/providers']['get']['responses'][200]['content']['application/json']['content']['providers'][number];\nexport type KycStartBody = NonNullable<pollarPaths['/kyc/start']['post']['requestBody']>['content']['application/json'];\nexport type KycStartResponse = pollarPaths['/kyc/start']['post']['responses'][200]['content']['application/json']['content'];\n\n// ─── Ramps types ──────────────────────────────────────────────────────────────\n\nexport type RampsQuoteQuery = NonNullable<pollarPaths['/ramps/quote']['get']['parameters']['query']>;\nexport type RampQuote =\n pollarPaths['/ramps/quote']['get']['responses'][200]['content']['application/json']['content']['quotes'][number];\nexport type RampsQuoteResponse = pollarPaths['/ramps/quote']['get']['responses'][200]['content']['application/json']['content'];\n\nexport type RampsOnrampBody = NonNullable<pollarPaths['/ramps/onramp']['post']['requestBody']>['content']['application/json'];\nexport type RampsOnrampResponse =\n pollarPaths['/ramps/onramp']['post']['responses'][200]['content']['application/json']['content'];\n\nexport type RampsOfframpBody = NonNullable<pollarPaths['/ramps/offramp']['post']['requestBody']>['content']['application/json'];\nexport type RampsOfframpResponse =\n pollarPaths['/ramps/offramp']['post']['responses'][200]['content']['application/json']['content'];\n\nexport type RampsTransactionResponse =\n pollarPaths['/ramps/transaction/{txId}']['get']['responses'][200]['content']['application/json']['content'];\nexport type RampTxStatus = RampsTransactionResponse['status'];\nexport type RampDirection = RampsTransactionResponse['direction'];\nexport type PaymentInstructions = RampsOnrampResponse['paymentInstructions'];\n\n// ─── Adapter types ────────────────────────────────────────────────────────────\n\nexport type EscrowFn<TParams = unknown> = (params: TParams) => Promise<{ unsignedTransaction: string }>;\n\nexport type EscrowAdapter = Record<string, EscrowFn<any>>;\n\nexport interface PollarAdapters {\n [key: string]: EscrowAdapter;\n}\n","// Derived from stellar-wallet-kit by Tushar Pamnani (MIT)\n// https://github.com/tusharpamnani/stellar-wallet-kit\n\nimport {\n getNetwork,\n getUserInfo,\n isAllowed,\n isConnected,\n setAllowed,\n signAuthEntry,\n signTransaction,\n} from '@stellar/freighter-api';\n\nimport type {\n ConnectWalletResponse,\n SignAuthEntryOptions,\n SignAuthEntryResponse,\n SignTransactionOptions,\n SignTransactionResponse,\n WalletAdapter,\n} from './types';\nimport { WalletType } from './types';\n\nexport class FreighterAdapter implements WalletAdapter {\n readonly type = WalletType.FREIGHTER;\n\n async isAvailable(): Promise<boolean> {\n try {\n return await isConnected();\n } catch {\n return false;\n }\n }\n\n async connect(): Promise<ConnectWalletResponse> {\n const connected = await isConnected();\n if (!connected) {\n throw new Error('Freighter wallet is not installed');\n }\n\n const allowed = await isAllowed();\n if (!allowed) {\n await setAllowed();\n }\n\n const userInfo = await getUserInfo();\n if (!userInfo?.publicKey) {\n throw new Error('Failed to get user information from Freighter');\n }\n\n return { address: userInfo.publicKey, publicKey: userInfo.publicKey };\n }\n\n async disconnect(): Promise<void> {\n // Freighter does not expose a programmatic disconnect\n }\n\n async getPublicKey(): Promise<string | null> {\n try {\n const allowed = await isAllowed();\n if (!allowed) return null;\n const userInfo = await getUserInfo();\n return userInfo?.publicKey ?? null;\n } catch {\n return null;\n }\n }\n\n async getNetwork(): Promise<string> {\n return getNetwork();\n }\n\n async signTransaction(xdr: string, options?: SignTransactionOptions): Promise<SignTransactionResponse> {\n const result = await signTransaction(xdr, {\n network: options?.network,\n networkPassphrase: options?.networkPassphrase,\n accountToSign: options?.accountToSign,\n });\n if (!result || typeof result !== 'string') {\n throw new Error('Invalid response from Freighter');\n }\n return { signedTxXdr: result };\n }\n\n async signAuthEntry(entryXdr: string, options?: SignAuthEntryOptions): Promise<SignAuthEntryResponse> {\n const result = await signAuthEntry(entryXdr, { accountToSign: options?.accountToSign });\n if (!result || typeof result !== 'string') {\n throw new Error('Invalid response from Freighter');\n }\n return { signedAuthEntry: result };\n }\n}\n","// Derived from stellar-wallet-kit by Tushar Pamnani (MIT)\n// https://github.com/tusharpamnani/stellar-wallet-kit\n\nexport enum WalletType {\n FREIGHTER = 'freighter',\n ALBEDO = 'albedo',\n}\n\nexport interface ConnectWalletResponse {\n address: string;\n publicKey: string;\n}\n\nexport interface SignTransactionOptions {\n network?: string;\n networkPassphrase?: string;\n accountToSign?: string;\n}\n\nexport interface SignAuthEntryOptions {\n accountToSign?: string;\n}\n\nexport interface SignTransactionResponse {\n signedTxXdr: string;\n}\n\nexport interface SignAuthEntryResponse {\n signedAuthEntry: string;\n}\n\nexport interface WalletAdapter {\n type: WalletType;\n isAvailable(): Promise<boolean>;\n connect(): Promise<ConnectWalletResponse>;\n disconnect(): Promise<void>;\n getPublicKey(): Promise<string | null>;\n signTransaction(xdr: string, options?: SignTransactionOptions): Promise<SignTransactionResponse>;\n signAuthEntry(entryXdr: string, options?: SignAuthEntryOptions): Promise<SignAuthEntryResponse>;\n}\n","// Derived from stellar-wallet-kit by Tushar Pamnani (MIT)\n// https://github.com/tusharpamnani/stellar-wallet-kit\n\nimport { WalletType } from './types';\nimport type {\n WalletAdapter,\n ConnectWalletResponse,\n SignTransactionOptions,\n SignTransactionResponse,\n SignAuthEntryOptions,\n SignAuthEntryResponse,\n} from './types';\n\nfunction openAlbedoPopup(url: string): Window {\n const popup = window.open(url, 'albedo', 'width=420,height=720,resizable=yes,scrollbars=yes');\n if (!popup) {\n throw new Error('Failed to open Albedo popup (blocked by browser)');\n }\n return popup;\n}\n\nfunction waitForAlbedoPopup(): Promise<Record<string, string>> {\n return new Promise((resolve, reject) => {\n const timeout = setTimeout(() => reject(new Error('Albedo response timeout')), 2 * 60 * 1000);\n\n function handler(event: MessageEvent) {\n if (event.origin !== window.location.origin || event.data?.type !== 'ALBEDO_RESULT') return;\n clearTimeout(timeout);\n window.removeEventListener('message', handler);\n resolve(event.data.payload as Record<string, string>);\n }\n\n window.addEventListener('message', handler);\n });\n}\n\nfunction waitForAlbedoResult(): Promise<Record<string, string>> {\n return new Promise((resolve, reject) => {\n const timeout = setTimeout(() => reject(new Error('Albedo response timeout')), 2 * 60 * 1000);\n\n const parseResult = () => {\n const params = new URLSearchParams(window.location.search);\n if (!params.has('pubkey') && !params.has('signed_envelope_xdr') && !params.has('signed_xdr')) return;\n\n clearTimeout(timeout);\n const result: Record<string, string> = {};\n params.forEach((value, key) => { result[key] = value; });\n window.history.replaceState({}, document.title, window.location.pathname);\n resolve(result);\n };\n\n parseResult();\n window.addEventListener('popstate', parseResult);\n });\n}\n\nexport class AlbedoAdapter implements WalletAdapter {\n readonly type = WalletType.ALBEDO;\n\n async isAvailable(): Promise<boolean> {\n return typeof window !== 'undefined';\n }\n\n async connect(): Promise<ConnectWalletResponse> {\n const url = new URL('https://albedo.link');\n url.searchParams.set('intent', 'public-key');\n url.searchParams.set('app_name', 'Pollar');\n url.searchParams.set('network', 'testnet');\n url.searchParams.set('callback', `${window.location.origin}/albedo-callback`);\n url.searchParams.set('origin', window.location.origin);\n\n openAlbedoPopup(url.toString());\n const result = await waitForAlbedoPopup();\n\n if (!result.pubkey) {\n throw new Error('Albedo connection rejected');\n }\n\n return { address: result.pubkey, publicKey: result.pubkey };\n }\n\n async disconnect(): Promise<void> {}\n\n async getPublicKey(): Promise<string | null> {\n return null; // Albedo does not support silent reconnect\n }\n\n async getNetwork(): Promise<string> {\n throw new Error('Albedo does not expose network');\n }\n\n async signTransaction(xdr: string, _options?: SignTransactionOptions): Promise<SignTransactionResponse> {\n const url = new URL('https://albedo.link');\n url.searchParams.set('intent', 'tx');\n url.searchParams.set('xdr', xdr);\n url.searchParams.set('app_name', 'Pollar');\n url.searchParams.set('network', 'testnet');\n url.searchParams.set('callback', window.location.href);\n url.searchParams.set('origin', window.location.origin);\n\n window.location.href = url.toString();\n const result = await waitForAlbedoResult();\n\n if (!result.signed_envelope_xdr) throw new Error('Albedo signing rejected');\n return { signedTxXdr: result.signed_envelope_xdr };\n }\n\n async signAuthEntry(entryXdr: string, _options?: SignAuthEntryOptions): Promise<SignAuthEntryResponse> {\n const url = new URL('https://albedo.link');\n url.searchParams.set('intent', 'sign-auth-entry');\n url.searchParams.set('xdr', entryXdr);\n url.searchParams.set('app_name', 'Pollar');\n url.searchParams.set('network', 'testnet');\n url.searchParams.set('callback', window.location.href);\n url.searchParams.set('origin', window.location.origin);\n\n window.location.href = url.toString();\n const result = await waitForAlbedoResult();\n\n if (!result.signed_xdr) throw new Error('Albedo auth entry signing rejected');\n return { signedAuthEntry: result.signed_xdr };\n }\n}","import { PollarApplicationConfigContent } from '../types';\n\nexport const STORAGE_KEY = 'pollar:session';\nexport const WALLET_TYPE_KEY = 'pollar:walletType';\n\nexport function isValidSession(value: unknown): value is PollarApplicationConfigContent {\n if (typeof value !== 'object' || value === null) {\n console.warn('[PollarClient:session] Invalid session — value is not an object');\n return false;\n }\n\n const s = value as Record<string, unknown>;\n\n // clientSessionId: string\n if (typeof s['clientSessionId'] !== 'string' || s['clientSessionId'] === '') {\n console.warn('[PollarClient:session] Invalid session — clientSessionId missing or empty');\n return false;\n }\n\n // userId: string | null (required, explicitly null or string)\n if (s['userId'] !== null && typeof s['userId'] !== 'string') {\n console.warn('[PollarClient:session] Invalid session — userId must be string or null, got:', typeof s['userId']);\n return false;\n }\n\n // status: string\n if (typeof s['status'] !== 'string') {\n console.warn('[PollarClient:session] Invalid session — status must be string, got:', typeof s['status']);\n return false;\n }\n\n // token: { accessToken: string, refreshToken: string, expiresAt: number }\n const token = s['token'];\n if (typeof token !== 'object' || token === null) {\n console.warn('[PollarClient:session] Invalid session — token missing or not an object');\n return false;\n }\n const t = token as Record<string, unknown>;\n if (typeof t['accessToken'] !== 'string' || t['accessToken'] === '') {\n console.warn('[PollarClient:session] Invalid session — token.accessToken missing or empty');\n return false;\n }\n if (typeof t['refreshToken'] !== 'string' || t['refreshToken'] === '') {\n console.warn('[PollarClient:session] Invalid session — token.refreshToken missing or empty');\n return false;\n }\n if (typeof t['expiresAt'] !== 'number' || !Number.isFinite(t['expiresAt'])) {\n console.warn('[PollarClient:session] Invalid session — token.expiresAt must be a finite number');\n return false;\n }\n\n // user: { id?: string, ready: boolean }\n const user = s['user'];\n if (typeof user !== 'object' || user === null) {\n console.warn('[PollarClient:session] Invalid session — user missing or not an object');\n return false;\n }\n const u = user as Record<string, unknown>;\n if (u['id'] !== undefined && typeof u['id'] !== 'string') {\n console.warn('[PollarClient:session] Invalid session — user.id must be string if present, got:', typeof u['id']);\n return false;\n }\n if (typeof u['ready'] !== 'boolean') {\n console.warn('[PollarClient:session] Invalid session — user.ready must be boolean, got:', typeof u['ready']);\n return false;\n }\n\n // wallet: { publicKey: string | null, existsOnStellar?: boolean, createdAt?: number }\n const wallet = s['wallet'];\n if (typeof wallet !== 'object' || wallet === null) {\n console.warn('[PollarClient:session] Invalid session — wallet missing or not an object');\n return false;\n }\n const w = wallet as Record<string, unknown>;\n if (w['publicKey'] !== null && typeof w['publicKey'] !== 'string') {\n console.warn(\n '[PollarClient:session] Invalid session — wallet.publicKey must be string or null, got:',\n typeof w['publicKey'],\n );\n return false;\n }\n if (w['existsOnStellar'] !== undefined && typeof w['existsOnStellar'] !== 'boolean') {\n console.warn('[PollarClient:session] Invalid session — wallet.existsOnStellar must be boolean if present');\n return false;\n }\n if (w['createdAt'] !== undefined && (typeof w['createdAt'] !== 'number' || !Number.isFinite(w['createdAt']))) {\n console.warn('[PollarClient:session] Invalid session — wallet.createdAt must be a finite number if present');\n return false;\n }\n\n // data: { mail, first_name, last_name, avatar: string, providers: {...} }\n const data = s['data'];\n if (typeof data !== 'object' || data === null) {\n console.warn('[PollarClient:session] Invalid session — data missing or not an object');\n return false;\n }\n const d = data as Record<string, unknown>;\n\n for (const field of ['mail', 'first_name', 'last_name', 'avatar'] as const) {\n if (typeof d[field] !== 'string') {\n console.warn(`[PollarClient:session] Invalid session — data.${field} must be string, got:`, typeof d[field]);\n return false;\n }\n }\n\n // providers: { email: {address:string}|null, google: {id:string}|null, github: {id:string}|null, wallet: {address:string}|null }\n const providers = d['providers'];\n if (typeof providers !== 'object' || providers === null) {\n console.warn('[PollarClient:session] Invalid session — data.providers missing or not an object');\n return false;\n }\n const p = providers as Record<string, unknown>;\n\n const providerInnerField = { email: 'address', google: 'id', github: 'id', wallet: 'address' } as const;\n\n for (const [field, innerField] of Object.entries(providerInnerField) as [keyof typeof providerInnerField, string][]) {\n const v = p[field];\n if (v === null) continue;\n if (typeof v !== 'object') {\n console.warn(`[PollarClient:session] Invalid session — data.providers.${field} must be object or null, got:`, typeof v);\n return false;\n }\n const vObj = v as Record<string, unknown>;\n if (typeof vObj[innerField] !== 'string' || vObj[innerField] === '') {\n console.warn(`[PollarClient:session] Invalid session — data.providers.${field}.${innerField} must be a non-empty string`);\n return false;\n }\n }\n\n return true;\n}\n\nexport function readStorage(): PollarApplicationConfigContent | null {\n const raw = localStorage.getItem(STORAGE_KEY);\n if (!raw) {\n return null;\n }\n\n try {\n const session = JSON.parse(raw) as unknown;\n\n if (!isValidSession(session)) {\n localStorage.removeItem(STORAGE_KEY);\n console.warn('[PollarClient:session] Stored session is invalid — clearing storage');\n return null;\n }\n\n if (session.token.expiresAt * 1000 < Date.now()) {\n localStorage.removeItem(STORAGE_KEY);\n console.warn('[PollarClient:session] Session token has expired — clearing storage');\n return null;\n }\n\n return session;\n } catch (error) {\n console.error('[PollarClient:session] Failed to parse session from storage', error);\n localStorage.removeItem(STORAGE_KEY);\n return null;\n }\n}\n\nexport function writeStorage(session: PollarApplicationConfigContent): void {\n localStorage.setItem(STORAGE_KEY, JSON.stringify(session));\n console.info('[PollarClient:session] Session written to storage');\n}\n\nexport function removeStorage(): void {\n localStorage.removeItem(STORAGE_KEY);\n localStorage.removeItem(WALLET_TYPE_KEY);\n console.info('[PollarClient:session] Session removed from storage');\n}\n\nexport function writeWalletType(type: string): void {\n localStorage.setItem(WALLET_TYPE_KEY, type);\n}\n\nexport function readWalletType(): string | null {\n return localStorage.getItem(WALLET_TYPE_KEY);\n}\n","import { PollarApiClient } from '../api/client';\n\nfunction abortableDelay(ms: number, signal: AbortSignal): Promise<void> {\n return new Promise((resolve, reject) => {\n const t = setTimeout(resolve, ms);\n signal.addEventListener(\n 'abort',\n () => {\n clearTimeout(t);\n reject(new DOMException('Aborted', 'AbortError'));\n },\n { once: true },\n );\n });\n}\n\nexport async function streamUntilFound(\n api: PollarApiClient,\n clientSessionId: string,\n check: (data: Record<string, unknown>) => boolean,\n retryDelayMs = 200,\n signal?: AbortSignal,\n): Promise<Record<string, unknown>> {\n while (true) {\n signal?.throwIfAborted();\n\n let data, error;\n try {\n ({ data, error } = await api.GET('/auth/session/status/{clientSessionId}', {\n params: { path: { clientSessionId } },\n parseAs: 'stream',\n signal: signal ?? null,\n }));\n } catch (e) {\n if (e instanceof Error && e.name === 'AbortError') throw e;\n console.warn(e);\n }\n\n if (error || !data) {\n if (signal) await abortableDelay(retryDelayMs, signal);\n else await new Promise((r) => setTimeout(r, retryDelayMs));\n continue;\n }\n\n const reader = data.getReader();\n const decoder = new TextDecoder();\n let streamDone = false;\n\n try {\n while (true) {\n signal?.throwIfAborted();\n const { done, value } = await reader.read();\n if (done) {\n streamDone = true;\n break;\n }\n\n const chunk = decoder.decode(value);\n for (const message of chunk.split('\\n\\n').filter(Boolean)) {\n const dataLine = message.split('\\n').find((l) => l.startsWith('data:'));\n if (!dataLine) continue;\n try {\n const parsed = JSON.parse(dataLine.slice('data:'.length).trim());\n if (check(parsed)) {\n return parsed;\n }\n } catch {\n // chunk parcial, ignorar\n }\n }\n }\n } catch (e) {\n if (e instanceof Error && e.name === 'AbortError') throw e;\n console.warn(e);\n } finally {\n reader.releaseLock();\n }\n\n // stream cerrado sin encontrar el valor → reintenta\n const delay = streamDone ? retryDelayMs : 0;\n if (delay) {\n if (signal) await abortableDelay(delay, signal);\n else await new Promise((r) => setTimeout(r, delay));\n }\n }\n}\n","import { AUTH_ERROR_CODES } from '../../types';\nimport { isValidSession } from '../session';\nimport { streamUntilFound } from '../stream';\nimport { FlowDeps } from './deps';\n\nexport async function authenticate(\n clientSessionId: string,\n deps: FlowDeps,\n expectedWallet?: string,\n): Promise<void> {\n const { api, signal, setAuthState, storeSession, clearSession } = deps;\n\n setAuthState({ step: 'authenticating' });\n\n await streamUntilFound(api, clientSessionId, (data) => data?.status === 'READY', 200, signal);\n\n const { data, error } = await api.POST('/auth/login', {\n body: { clientSessionId },\n signal,\n });\n\n if (data?.code === 'SDK_LOGIN_SUCCESS' && isValidSession(data?.content)) {\n if (expectedWallet && data.content.data.providers.wallet?.address !== expectedWallet) {\n setAuthState({\n step: 'error',\n previousStep: 'authenticating',\n message: 'Wallet mismatch: session wallet does not match connected wallet',\n errorCode: AUTH_ERROR_CODES.WALLET_AUTH_FAILED,\n });\n clearSession();\n return;\n }\n storeSession(data.content);\n } else {\n setAuthState({\n step: 'error',\n previousStep: 'authenticating',\n message: 'Failed to load session',\n errorCode: AUTH_ERROR_CODES.AUTH_FAILED,\n });\n clearSession();\n }\n}\n","import { PollarApiClient } from '../../api/client';\nimport { AUTH_ERROR_CODES, AuthState, PollarApplicationConfigContent } from '../../types';\nimport { WalletAdapter, WalletType } from '../../wallets';\n\nexport type FlowDeps = {\n api: PollarApiClient;\n signal: AbortSignal;\n setAuthState: (state: AuthState) => void;\n storeSession: (session: PollarApplicationConfigContent) => void;\n clearSession: () => void;\n storeWalletAdapter: (adapter: WalletAdapter, type: WalletType) => void;\n};\n\nexport async function createAuthSession(deps: FlowDeps): Promise<string | null> {\n const { api, signal, setAuthState } = deps;\n\n setAuthState({ step: 'creating_session' });\n\n const { data, error } = await api.POST('/auth/session', { signal });\n\n if (error || !data?.success) {\n setAuthState({\n step: 'error',\n previousStep: 'creating_session',\n message: 'Failed to create session',\n errorCode: AUTH_ERROR_CODES.SESSION_CREATE_FAILED,\n });\n return null;\n }\n\n return data.content.clientSessionId;\n}\n","import { AUTH_ERROR_CODES } from '../../types';\nimport { authenticate } from './authenticate';\nimport { createAuthSession, FlowDeps } from './deps';\n\nexport async function initEmailSession(deps: FlowDeps): Promise<void> {\n const clientSessionId = await createAuthSession(deps);\n if (!clientSessionId) return;\n deps.setAuthState({ step: 'entering_email', clientSessionId });\n}\n\nexport async function sendEmailCode(email: string, clientSessionId: string, deps: FlowDeps): Promise<void> {\n const { api, signal, setAuthState } = deps;\n\n setAuthState({ step: 'sending_email', email });\n\n const { data, error } = await api.POST('/auth/email', {\n body: { clientSessionId, email },\n signal,\n });\n\n if (error || !data?.success) {\n setAuthState({\n step: 'error',\n previousStep: 'sending_email',\n message: 'Failed to send code',\n errorCode: AUTH_ERROR_CODES.EMAIL_SEND_FAILED,\n });\n return;\n }\n\n setAuthState({ step: 'entering_code', clientSessionId, email });\n}\n\nexport async function verifyAndAuthenticate(\n code: string,\n clientSessionId: string,\n email: string,\n deps: FlowDeps,\n): Promise<void> {\n const { api, signal, setAuthState } = deps;\n\n setAuthState({ step: 'verifying_email_code', clientSessionId, email });\n\n const { data, error } = await api.POST('/auth/email/verify-code', {\n body: { clientSessionId, code },\n signal,\n });\n\n if (data?.code === 'SDK_EMAIL_CODE_VERIFIED') {\n await authenticate(clientSessionId, deps);\n return;\n }\n\n // Extract error code from either the 4xx error body or the 200 body\n const errCode =\n (error as unknown as { error?: string } | undefined)?.error ?? (data as unknown as { code?: string } | undefined)?.code;\n\n if (errCode === 'SDK_EMAIL_CODE_EXPIRED') {\n setAuthState({\n step: 'error',\n previousStep: 'verifying_email_code',\n message: 'Code expired — request a new one',\n errorCode: AUTH_ERROR_CODES.EMAIL_CODE_EXPIRED,\n clientSessionId,\n email,\n });\n return;\n }\n\n if (errCode === 'INVALID_EMAIL_CODE' || errCode === 'SDK_EMAIL_CODE_INVALID') {\n setAuthState({\n step: 'error',\n previousStep: 'verifying_email_code',\n message: 'Invalid code — try again',\n errorCode: AUTH_ERROR_CODES.EMAIL_CODE_INVALID,\n clientSessionId,\n email,\n });\n return;\n }\n\n setAuthState({\n step: 'error',\n previousStep: 'verifying_email_code',\n message: 'Failed to verify code — try again',\n errorCode: AUTH_ERROR_CODES.EMAIL_VERIFY_FAILED,\n });\n}\n","import { authenticate } from './authenticate';\nimport { createAuthSession, FlowDeps } from './deps';\n\ntype OAuthDeps = FlowDeps & { basePath: string; apiKey: string };\n\nexport async function loginOAuth(provider: 'google' | 'github', deps: OAuthDeps): Promise<void> {\n const { setAuthState, basePath, apiKey } = deps;\n\n // Must open popup before any await — browsers block popups opened after async calls\n const popup = window.open('about:blank', '_blank');\n\n const clientSessionId = await createAuthSession(deps);\n\n if (!clientSessionId) {\n popup?.close();\n return;\n }\n\n setAuthState({ step: 'opening_oauth', provider });\n\n const url = new URL(`${basePath}/auth/${provider}`);\n url.searchParams.set('api_key', apiKey);\n url.searchParams.set('client_session_id', clientSessionId);\n url.searchParams.set('redirect_uri', window.location.origin);\n\n if (popup) {\n popup.location.href = url.toString();\n } else {\n window.open(url.toString(), '_blank');\n }\n\n await authenticate(clientSessionId, deps);\n}\n","import { AUTH_ERROR_CODES } from '../../types';\nimport { AlbedoAdapter, FreighterAdapter, WalletType } from '../../wallets';\nimport { authenticate } from './authenticate';\nimport { createAuthSession, FlowDeps } from './deps';\n\nfunction withSignal<T>(promise: Promise<T>, signal: AbortSignal): Promise<T> {\n return Promise.race([\n promise,\n new Promise<never>((_, reject) => {\n if (signal.aborted) {\n reject(new DOMException('Aborted', 'AbortError'));\n return;\n }\n signal.addEventListener('abort', () => reject(new DOMException('Aborted', 'AbortError')), { once: true });\n }),\n ]);\n}\n\nexport async function loginWallet(type: WalletType, deps: FlowDeps): Promise<void> {\n const { api, signal, setAuthState } = deps;\n\n const clientSessionId = await createAuthSession(deps);\n if (!clientSessionId) return;\n\n let connectedWallet: string;\n\n try {\n setAuthState({ step: 'connecting_wallet', walletType: type });\n const adapter = type === WalletType.FREIGHTER ? new FreighterAdapter() : new AlbedoAdapter();\n\n const available = await withSignal(adapter.isAvailable(), signal);\n if (!available) {\n setAuthState({ step: 'wallet_not_installed', walletType: type });\n return;\n }\n\n const { publicKey } = await withSignal(adapter.connect(), signal);\n connectedWallet = publicKey;\n deps.storeWalletAdapter(adapter, type);\n setAuthState({ step: 'authenticating_wallet' });\n\n const { data: walletData, error: walletError } = await api.POST('/auth/wallet', {\n body: { clientSessionId, walletAddress: publicKey },\n signal,\n });\n\n if (walletError || !walletData?.success) {\n setAuthState({\n step: 'error',\n previousStep: 'authenticating_wallet',\n message: 'Wallet authentication failed',\n errorCode: AUTH_ERROR_CODES.WALLET_AUTH_FAILED,\n });\n return;\n }\n } catch {\n setAuthState({\n step: 'error',\n previousStep: 'connecting_wallet',\n message: 'Wallet connection failed',\n errorCode: AUTH_ERROR_CODES.WALLET_CONNECT_FAILED,\n });\n return;\n }\n\n await authenticate(clientSessionId, deps, connectedWallet);\n}\n","import { createApiClient, PollarApiClient } from '../api/client';\nimport { getKycProviders, getKycStatus, pollKycStatus, resolveKyc, startKyc } from '../api/endpoints/kyc';\nimport {\n createOffRamp,\n createOnRamp,\n getRampsQuote,\n getRampTransaction,\n pollRampTransaction\n} from '../api/endpoints/ramps';\nimport { StellarClient, StellarNetwork } from '../stellar/StellarClient';\nimport {\n AUTH_ERROR_CODES,\n AuthState,\n KycLevel,\n KycStartBody,\n KycStartResponse,\n KycStatus,\n NetworkState,\n PollarApplicationConfigContent,\n PollarClientConfig,\n PollarFlowError,\n PollarLoginOptions,\n RampsOfframpBody,\n RampsOfframpResponse,\n RampsOnrampBody,\n RampsOnrampResponse,\n RampsQuoteQuery,\n RampsQuoteResponse,\n RampsTransactionResponse,\n RampTxStatus,\n TransactionState,\n TxBuildBody,\n TxHistoryParams,\n TxHistoryState,\n TxBuildContent,\n TxSignAndSendBody,\n WalletBalanceState,\n} from '../types';\nimport { AlbedoAdapter, FreighterAdapter, WalletAdapter, WalletType } from '../wallets';\nimport { initEmailSession, sendEmailCode, verifyAndAuthenticate } from './auth/emailFlow';\nimport { loginOAuth } from './auth/oauthFlow';\nimport { loginWallet } from './auth/walletFlow';\nimport { readStorage, readWalletType, removeStorage, STORAGE_KEY, writeStorage, writeWalletType } from './session';\n\nconst isBrowser = typeof window !== 'undefined' && typeof localStorage !== 'undefined';\n\nfunction warnServerSide(method: string): void {\n console.warn(\n `[PollarClient] ${method}() called server-side — browser APIs unavailable. Use PollarClient only in Client Components.`,\n );\n}\n\nexport class PollarClient {\n readonly apiKey: string;\n readonly id: string;\n readonly basePath: string;\n\n private readonly _api: PollarApiClient;\n\n private _session: PollarApplicationConfigContent | null = null;\n\n private _transactionState: TransactionState | null = null;\n private _transactionStateListeners = new Set<(state: TransactionState) => void>();\n private _txHistoryState: TxHistoryState = { step: 'idle' };\n private _txHistoryStateListeners = new Set<(state: TxHistoryState) => void>();\n private _walletBalanceState: WalletBalanceState = { step: 'idle' };\n private _walletBalanceStateListeners = new Set<(state: WalletBalanceState) => void>();\n private _authState: AuthState = { step: 'idle' };\n private _authStateListeners = new Set<(state: AuthState) => void>();\n private _networkState: NetworkState = { step: 'idle' };\n private _networkStateListeners = new Set<(state: NetworkState) => void>();\n\n private _walletAdapter: WalletAdapter | null = null;\n private _loginController: AbortController | null = null;\n\n constructor(config: PollarClientConfig) {\n this.apiKey = config.apiKey;\n this.id = crypto.randomUUID();\n this.basePath = `${config.baseUrl || 'https://sdk.api.pollar.xyz'}/v1`;\n this._api = createApiClient(this.basePath);\n const self = this;\n this._api.use({\n onRequest({ request }: { request: Request }) {\n request.headers.set('x-pollar-api-key', config.apiKey);\n const accessToken = self._session?.token?.accessToken;\n if (accessToken) {\n request.headers.set('Authorization', `Bearer ${accessToken}`);\n }\n return request;\n },\n });\n\n this._networkState = { step: 'connected', network: config.stellarNetwork ?? 'testnet' };\n\n if (!isBrowser) {\n warnServerSide('constructor');\n this._session = null;\n return;\n }\n\n console.info(`[PollarClient] Initialized — endpoint: ${this.basePath}, network: ${this._networkState.network}`);\n\n this._restoreSession();\n\n window.addEventListener('storage', (e: StorageEvent) => {\n if (e.key === STORAGE_KEY) {\n const prev = this._session;\n console.info(`[PollarClient] Storage event — session ${this._session ? 'updated' : prev ? 'cleared' : 'unchanged'}`);\n this._restoreSession();\n }\n });\n }\n\n // ─── Auth state ──────────────────────────────────────────────────────────────\n\n getAuthState(): AuthState {\n return this._authState;\n }\n\n onAuthStateChange(cb: (state: AuthState) => void): () => void {\n this._authStateListeners.add(cb);\n cb(this._authState);\n return () => this._authStateListeners.delete(cb);\n }\n\n // ─── Login (unified entry point) ─────────────────────────────────────────\n\n login(options: PollarLoginOptions): void {\n if (!isBrowser) {\n warnServerSide('login');\n return;\n }\n if (options.provider === 'google' || options.provider === 'github' || options.provider === 'email') {\n const controller = this._newController();\n const deps = this._flowDeps(controller.signal);\n if (options.provider === 'google' || options.provider === 'github') {\n loginOAuth(options.provider, {\n ...deps,\n basePath: this.basePath,\n apiKey: this.apiKey,\n }).catch((err) => this._handleFlowError(err));\n } else if (options.provider === 'email') {\n const { email } = options;\n initEmailSession(deps)\n .then(() => {\n if (this._authState.step === 'entering_email') {\n return sendEmailCode(email, this._authState.clientSessionId, deps);\n }\n })\n .catch((err) => this._handleFlowError(err));\n }\n } else if (options.provider === 'wallet') {\n this.loginWallet(options.type);\n }\n }\n\n // ─── Email OTP flow (3 steps) ─────────────────────────────────────────────\n\n beginEmailLogin(): void {\n if (!isBrowser) {\n warnServerSide('beginEmailLogin');\n return;\n }\n\n const controller = this._newController();\n\n initEmailSession(this._flowDeps(controller.signal)).catch((err) => this._handleFlowError(err));\n }\n\n sendEmailCode(email: string): void {\n if (!isBrowser) {\n warnServerSide('sendEmailCode');\n return;\n }\n if (this._authState.step !== 'entering_email') {\n throw new PollarFlowError(`sendEmailCode() requires step 'entering_email', current step is '${this._authState.step}'`);\n }\n\n const { clientSessionId } = this._authState;\n const signal = this._loginController!.signal;\n\n sendEmailCode(email, clientSessionId, this._flowDeps(signal)).catch((err) => this._handleFlowError(err));\n }\n\n verifyEmailCode(code: string): void {\n if (!isBrowser) {\n warnServerSide('verifyEmailCode');\n return;\n }\n\n const isRetryableError =\n this._authState.step === 'error' &&\n this._authState.clientSessionId != null &&\n (this._authState.errorCode === AUTH_ERROR_CODES.EMAIL_CODE_INVALID ||\n this._authState.errorCode === AUTH_ERROR_CODES.EMAIL_CODE_EXPIRED);\n\n if (this._authState.step !== 'entering_code' && !isRetryableError) {\n throw new PollarFlowError(`verifyEmailCode() requires step 'entering_code', current step is '${this._authState.step}'`);\n }\n\n const state = this._authState;\n const clientSessionId =\n state.step === 'entering_code' ? state.clientSessionId : (state as { clientSessionId?: string }).clientSessionId!;\n const email = state.step === 'entering_code' ? state.email : ((state as { email?: string }).email ?? '');\n\n const controller = this._newController();\n\n verifyAndAuthenticate(code, clientSessionId, email, this._flowDeps(controller.signal)).catch((err) =>\n this._handleFlowError(err),\n );\n }\n\n // ─── Wallet flow (single call) ────────────────────────────────────────────\n\n loginWallet(type: WalletType): void {\n if (!isBrowser) {\n warnServerSide('loginWallet');\n return;\n }\n\n const controller = this._newController();\n\n loginWallet(type, this._flowDeps(controller.signal)).catch((err) => this._handleFlowError(err));\n }\n\n // ─── Cancel ───────────────────────────────────────────────────────────────\n\n cancelLogin(): void {\n this._loginController?.abort();\n this._loginController = null;\n this._setAuthState({ step: 'idle' });\n }\n\n // ─── Logout ───────────────────────────────────────────────────────────────\n\n logout(): void {\n if (!isBrowser) {\n warnServerSide('logout');\n return;\n }\n console.info('[PollarClient] Logout requested');\n this._clearSession();\n }\n\n // ─── Network ──────────────────────────────────────────────────────────────\n\n getNetwork(): StellarNetwork {\n return this._networkState.step === 'connected' ? this._networkState.network : 'testnet';\n }\n\n getNetworkState(): NetworkState {\n return this._networkState;\n }\n\n setNetwork(network: StellarNetwork): void {\n this._setNetworkState({ step: 'connected', network });\n }\n\n onNetworkStateChange(cb: (state: NetworkState) => void): () => void {\n this._networkStateListeners.add(cb);\n cb(this._networkState);\n return () => this._networkStateListeners.delete(cb);\n }\n\n // ─── Transaction state ────────────────────────────────────────────────────\n\n getTransactionState(): TransactionState | null {\n return this._transactionState;\n }\n\n onTransactionStateChange(cb: (state: TransactionState) => void): () => void {\n this._transactionStateListeners.add(cb);\n if (this._transactionState) cb(this._transactionState);\n return () => this._transactionStateListeners.delete(cb);\n }\n\n // ─── Tx history ──────────────────────────────────────────────────────────\n\n getTxHistoryState(): TxHistoryState {\n return this._txHistoryState;\n }\n\n onTxHistoryStateChange(cb: (state: TxHistoryState) => void): () => void {\n this._txHistoryStateListeners.add(cb);\n cb(this._txHistoryState);\n return () => this._txHistoryStateListeners.delete(cb);\n }\n\n async fetchTxHistory(params: TxHistoryParams = {}): Promise<void> {\n this._setTxHistoryState({ step: 'loading', params });\n try {\n const { data, error } = await this._api.GET('/tx/history', { params: { query: params } });\n if (!error && data?.success && data.content) {\n this._setTxHistoryState({ step: 'loaded', params, data: data.content });\n } else {\n const message = (error as { message?: string } | undefined)?.message ?? 'Failed to load history';\n this._setTxHistoryState({ step: 'error', params, message });\n }\n } catch {\n this._setTxHistoryState({ step: 'error', params, message: 'Failed to load history' });\n }\n }\n\n // ─── Wallet balance ───────────────────────────────────────────────────────\n\n getWalletBalanceState(): WalletBalanceState {\n return this._walletBalanceState;\n }\n\n onWalletBalanceStateChange(cb: (state: WalletBalanceState) => void): () => void {\n this._walletBalanceStateListeners.add(cb);\n cb(this._walletBalanceState);\n return () => this._walletBalanceStateListeners.delete(cb);\n }\n\n async refreshBalance(publicKey?: string): Promise<void> {\n const pk = publicKey ?? this._session?.wallet?.publicKey;\n if (!pk) {\n this._setWalletBalanceState({ step: 'error', message: 'No wallet connected' });\n return;\n }\n this._setWalletBalanceState({ step: 'loading' });\n try {\n const network = this.getNetwork();\n const { data, error } = await this._api.GET('/wallet/balance', { params: { query: { publicKey: pk, network } } });\n if (!error && data?.success && data.content) {\n this._setWalletBalanceState({ step: 'loaded', data: data.content });\n } else {\n this._setWalletBalanceState({ step: 'error', message: 'Failed to load balance' });\n }\n } catch {\n this._setWalletBalanceState({ step: 'error', message: 'Failed to load balance' });\n }\n }\n\n // ─── Transactions ─────────────────────────────────────────────────────────\n\n async buildTx(\n operation: TxBuildBody['operation'],\n params: TxBuildBody['params'],\n options?: TxBuildBody['options'],\n ): Promise<void> {\n if (!this._session?.wallet?.publicKey) {\n this._setTransactionState({ step: 'error', details: 'No wallet connected' });\n return;\n }\n\n const body = {\n network: this.getNetwork(),\n publicKey: this._session.wallet.publicKey,\n operation,\n params,\n options: options ?? {},\n } as TxBuildBody;\n\n try {\n this._setTransactionState({ step: 'building' });\n const { data, error } = await this._api.POST('/tx/build', { body });\n if (!error && data?.success && data.content) {\n this._setTransactionState({ step: 'built', buildData: data.content });\n } else {\n const details = (error as { details?: string } | undefined)?.details;\n this._setTransactionState({ step: 'error', ...(details && { details }) });\n }\n } catch {\n this._setTransactionState({ step: 'error' });\n }\n }\n\n getWalletType(): WalletType | null {\n return this._walletAdapter?.type ?? null;\n }\n\n async signAndSubmitTx(unsignedXdr: string): Promise<void> {\n const state = this._transactionState;\n const buildData =\n state?.step === 'built' ? state.buildData :\n state?.step === 'error' ? state.buildData :\n undefined;\n const isBuiltFlow = !!buildData;\n const stateExtra: { buildData?: TxBuildContent; external?: true } = buildData ? { buildData } : { external: true };\n\n this._setTransactionState({ step: 'signing', ...stateExtra });\n\n const accountToSign = isBuiltFlow\n ? this._session?.wallet?.publicKey\n : (this._session?.data?.providers?.wallet?.address ?? this._session?.wallet?.publicKey);\n\n if (this._walletAdapter) {\n // External wallet (Freighter/Albedo): sign client-side, submit directly to Horizon\n try {\n const signOpts = accountToSign\n ? { networkPassphrase: this._networkPassphrase(), accountToSign }\n : { networkPassphrase: this._networkPassphrase() };\n const { signedTxXdr } = await this._walletAdapter.signTransaction(unsignedXdr, signOpts);\n const stellarClient = new StellarClient(this.getNetwork());\n const result = await stellarClient.submitTransaction(signedTxXdr);\n if (result.success) {\n this._setTransactionState({ step: 'success', ...stateExtra, hash: result.hash });\n } else {\n this._setTransactionState({ step: 'error', ...stateExtra, details: result.errorCode });\n }\n } catch {\n this._setTransactionState({ step: 'error', ...stateExtra });\n }\n return;\n }\n\n // Custodial wallet (social/email login): Pollar signs and submits server-side\n const body: TxSignAndSendBody = {\n network: this.getNetwork(),\n publicKey: this._session?.wallet?.publicKey ?? '',\n unsignedXdr,\n };\n try {\n const { data, error } = await this._api.POST('/tx/sign-and-send', { body });\n if (!error && data?.success && data.content?.hash) {\n this._setTransactionState({ step: 'success', ...stateExtra, hash: data.content.hash });\n } else {\n const details = (error as { details?: string } | undefined)?.details;\n this._setTransactionState({ step: 'error', ...stateExtra, ...(details && { details }) });\n }\n } catch {\n this._setTransactionState({ step: 'error', ...stateExtra });\n }\n }\n\n // ─── App config ───────────────────────────────────────────────────────────\n\n async getAppConfig(): Promise<unknown> {\n try {\n const { data, error } = await this._api.GET('/applications/config');\n if (!data || error) return null;\n return data.content;\n } catch {\n return null;\n }\n }\n\n // ─── KYC ──────────────────────────────────────────────────────────────────\n\n getKycStatus(providerId?: string) {\n return getKycStatus(this._api, providerId);\n }\n\n getKycProviders(country: string) {\n return getKycProviders(this._api, country);\n }\n\n startKyc(body: KycStartBody): Promise<KycStartResponse> {\n return startKyc(this._api, body);\n }\n\n resolveKyc(providerId: string, level?: KycLevel) {\n return resolveKyc(this._api, providerId, level);\n }\n\n pollKycStatus(providerId: string, opts?: { intervalMs?: number; timeoutMs?: number }): Promise<KycStatus> {\n return pollKycStatus(this._api, providerId, opts);\n }\n\n // ─── Ramps ────────────────────────────────────────────────────────────────\n\n getRampsQuote(query: RampsQuoteQuery): Promise<RampsQuoteResponse> {\n return getRampsQuote(this._api, query);\n }\n\n createOnRamp(body: RampsOnrampBody): Promise<RampsOnrampResponse> {\n return createOnRamp(this._api, body);\n }\n\n createOffRamp(body: RampsOfframpBody): Promise<RampsOfframpResponse> {\n return createOffRamp(this._api, body);\n }\n\n getRampTransaction(txId: string): Promise<RampsTransactionResponse> {\n return getRampTransaction(this._api, txId);\n }\n\n pollRampTransaction(txId: string, opts?: { intervalMs?: number; timeoutMs?: number }): Promise<RampTxStatus> {\n return pollRampTransaction(this._api, txId, opts);\n }\n\n private _setTxHistoryState(next: TxHistoryState): void {\n this._txHistoryState = next;\n for (const cb of this._txHistoryStateListeners) cb(next);\n }\n\n private _setWalletBalanceState(next: WalletBalanceState): void {\n this._walletBalanceState = next;\n for (const cb of this._walletBalanceStateListeners) cb(next);\n }\n\n // ─── Private ──────────────────────────────────────────────────────────────\n\n /** Creates a new AbortController, cancelling any existing flow first. */\n private _newController(): AbortController {\n this._loginController?.abort();\n this._loginController = new AbortController();\n return this._loginController;\n }\n\n /** Builds the deps object passed to flow functions via bind pattern. */\n private _flowDeps(signal: AbortSignal) {\n return {\n api: this._api,\n signal,\n setAuthState: this._setAuthState.bind(this),\n storeSession: this._storeSession.bind(this),\n clearSession: this._clearSession.bind(this),\n storeWalletAdapter: (adapter: WalletAdapter, type: WalletType) => {\n this._walletAdapter = adapter;\n writeWalletType(type);\n },\n };\n }\n\n private _handleFlowError(error: unknown): void {\n if (error instanceof Error && error.name === 'AbortError') {\n console.info('[PollarClient] Login cancelled');\n this._setAuthState({ step: 'idle' });\n return;\n }\n console.error('[PollarClient] Unexpected error in auth flow', error);\n this._setAuthState({\n step: 'error',\n previousStep: this._authState.step,\n message: 'An unexpected error occurred',\n errorCode: AUTH_ERROR_CODES.UNEXPECTED_ERROR,\n });\n }\n\n private _restoreSession(): void {\n this._session = readStorage();\n if (this._session) {\n this._authState = { step: 'authenticated', session: this._session };\n // Re-instantiate external wallet adapter if user logged in with one\n if (this._session.data?.providers?.wallet?.address) {\n const storedType = readWalletType();\n if (storedType === WalletType.FREIGHTER) {\n this._walletAdapter = new FreighterAdapter();\n } else if (storedType === WalletType.ALBEDO) {\n this._walletAdapter = new AlbedoAdapter();\n }\n }\n console.info('[PollarClient] Session restored from storage');\n } else {\n console.info('[PollarClient] No session in storage');\n }\n }\n\n private _storeSession(session: PollarApplicationConfigContent): void {\n console.info(`[PollarClient] Session stored — user: ${session.userId ?? 'anonymous'}`);\n this._session = session;\n writeStorage(session);\n this._setAuthState({ step: 'authenticated', session });\n }\n\n private _clearSession(): void {\n console.info('[PollarClient] Session cleared');\n this._session = null;\n this._walletAdapter = null;\n removeStorage();\n this._transactionState = null;\n this._setAuthState({ step: 'idle' });\n }\n\n private _networkPassphrase(): string {\n return this.getNetwork() === 'mainnet'\n ? 'Public Global Stellar Network ; September 2015'\n : 'Test SDF Network ; September 2015';\n }\n\n private _setNetworkState(next: NetworkState): void {\n this._networkState = next;\n const label = next.step === 'connected' ? next.network : next.step;\n console.info(`[PollarClient] network:${label}`);\n for (const cb of this._networkStateListeners) cb(next);\n }\n\n private _setAuthState(next: AuthState): void {\n this._authState = next;\n console.info(`[PollarClient] auth:${next.step}`);\n for (const cb of this._authStateListeners) cb(next);\n }\n\n private _setTransactionState(next: TransactionState): void {\n this._transactionState = next;\n console.info(`[PollarClient] transaction:${next.step}`);\n for (const cb of this._transactionStateListeners) cb(next);\n }\n}\n"]}