{"version":3,"file":"wido.mjs","sources":["../src/WidoError.ts","../src/approve.ts","../src/config.ts","../src/get-status.ts","../src/get-token-allowance.ts","../src/get-wido-contract-address.ts","../src/get-wido-spender.ts","../src/get-supported-tokens-internal.ts","../src/get-supported-tokens.ts","../src/get-balances.ts","../src/quote.ts","../node_modules/@ethersproject/logger/lib.esm/_version.js","../node_modules/@ethersproject/logger/lib.esm/index.js","../node_modules/@ethersproject/properties/lib.esm/_version.js","../node_modules/@ethersproject/properties/lib.esm/index.js","../src/paymaster/core/paymaster.ts","../src/paymaster/biconomy.ts","../src/utils/chain-utils.ts","../src/types.ts"],"sourcesContent":["import { ErrorApiResponse, ErrorCode, ValidationError } from \"./types\"\n\nexport class WidoError extends Error {\n  name = \"WidoError\"\n  code: ErrorCode\n  detail: string\n  validationErrors?: ValidationError[]\n\n  constructor(\n    code: ErrorCode,\n    detail: string,\n    validationErrors?: ValidationError[]\n  ) {\n    let message\n\n    switch (code) {\n      case \"INVALID_REQUEST\":\n        message = `${detail}: ${validationErrors\n          ?.map((err) => err.msg)\n          .join(\", \")}`\n        break\n\n      default:\n        message = `${code}: ${detail}`\n        break\n    }\n\n    super(message)\n\n    this.detail = detail\n    this.code = code\n    this.validationErrors = validationErrors\n  }\n\n  static from_api_response(response: ErrorApiResponse) {\n    return new WidoError(\n      response.code,\n      response.detail,\n      response.validationErrors\n    )\n  }\n}\n","import { ApproveApiParams, ApproveRequest, ApproveResult } from \"./types\"\nimport { CONFIG, MAX_UINT256 } from \"./wido\"\nimport { WidoError } from \"./WidoError\"\n\n/**\n * Get an easy-to-consume unsigned transaction for changing the allowance amount,\n * e.g. how many tokens can Wido spend on behalf of `user`.\n *\n * Call this method with `chainId`, `fromToken` and `toToken` before zapping!\n */\nexport async function approve(request: ApproveRequest): Promise<ApproveResult> {\n  const {\n    tokenAddress,\n    fromToken,\n    toToken,\n    chainId,\n    fromChainId,\n    toChainId,\n    amount = MAX_UINT256,\n    tokenId,\n  } = request\n\n  const endpoint = `approve`\n\n  if (!chainId && !fromChainId) {\n    throw new Error(`fromChainId must be set`)\n  }\n\n  const paramsObj: ApproveApiParams = {\n    chain_id: fromChainId ? String(fromChainId) : String(chainId),\n    amount: amount,\n    from_token: fromToken,\n    to_token: toToken,\n  }\n  if (tokenAddress) {\n    paramsObj.token_address = tokenAddress\n  }\n  if (tokenId) {\n    paramsObj.token_id = tokenId\n  }\n  if (toChainId) {\n    paramsObj.to_chain_id = String(toChainId)\n  }\n\n  const params = new URLSearchParams(paramsObj)\n\n  const url = `${CONFIG.WIDO_API_URL}/${endpoint}?${params}`\n  const res = await fetch(url)\n\n  if (!res.ok) {\n    throw WidoError.from_api_response(await res.json())\n  }\n\n  const data: ApproveResult = await res.json()\n\n  return {\n    to: data.to,\n    data: data.data,\n  }\n}\n","import { ConfigType } from \"./types\"\n\n/**\n * @internal\n */\nexport const ZERO_ADDRESS = \"0x0000000000000000000000000000000000000000\"\n\n/**\n * @internal\n */\nexport const CONFIG: ConfigType = {\n  WIDO_API_URL: \"https://api.joinwido.com\",\n  SEGMENT_KEY: \"G4ttHjzxUXZ2ORLGHpXE8yEfCCkqjPXx\",\n  DEBUG: process.env.NODE_ENV === \"development\",\n}\n\n/**\n * @internal\n */\nexport const useLocalApi = () => {\n  // eslint-disable-next-line no-console\n  console.log(\"Using local Wido API URL...\")\n  CONFIG.WIDO_API_URL = \"http://127.0.0.1:8080\"\n  CONFIG.SEGMENT_KEY = \"qu7qvYAa1ziyWWkgsInDw4K2YQDFxWOR\"\n}\n\n/**\n * @internal\n */\nexport const useProdApi = () => {\n  CONFIG.WIDO_API_URL = \"https://api.joinwido.com\"\n  CONFIG.SEGMENT_KEY = \"G4ttHjzxUXZ2ORLGHpXE8yEfCCkqjPXx\"\n}\n","import { CONFIG } from \"./config\"\nimport {\n  StatusRequest,\n  StatusApiParams,\n  StatusApiResponse,\n  StatusResult,\n} from \"./types\"\nimport { WidoError } from \"./WidoError\"\n\n/**\n * Get the transaction status alongside the transaction hash for the destination chain.\n */\nexport async function getStatus(request: StatusRequest): Promise<StatusResult> {\n  const { txHash, chainId } = request\n\n  const endpoint = `status`\n\n  const paramsObj: StatusApiParams = {\n    chain_id: String(chainId),\n    tx_hash: txHash,\n  }\n  const params = new URLSearchParams(paramsObj)\n\n  const url = `${CONFIG.WIDO_API_URL}/${endpoint}?${params}`\n  const res = await fetch(url)\n\n  if (!res.ok) {\n    throw WidoError.from_api_response(await res.json())\n  }\n\n  const data: StatusApiResponse = await res.json()\n\n  return {\n    status: data.status,\n    substatus: data.substatus,\n    substatusMessage: data.substatus_message,\n    toChainId: data.to_chain_id,\n    toTxHash: data.to_tx_hash,\n  }\n}\n","import { CONFIG } from \"./config\"\nimport {\n  TokenAllowanceResult,\n  TokenAllowanceRequest,\n  TokenAllowanceApiParams,\n} from \"./types\"\nimport { WidoError } from \"./WidoError\"\n\n/**\n * Get the number of tokens that the Wido contract can spend on the user's behalf, as per the ERC-20 standard.\n */\nexport async function getTokenAllowance(\n  request: TokenAllowanceRequest\n): Promise<TokenAllowanceResult> {\n  const {\n    accountAddress,\n    tokenAddress,\n    chainId,\n    fromToken,\n    toToken,\n    fromChainId,\n    toChainId,\n    tokenId,\n  } = request\n\n  const endpoint = `allowance`\n\n  if (!chainId && !fromChainId) {\n    throw new Error(`fromChainId must be set`)\n  }\n\n  const paramsObj: TokenAllowanceApiParams = {\n    chain_id: fromChainId ? String(fromChainId) : String(chainId),\n    account_address: accountAddress,\n    from_token: fromToken,\n    to_token: toToken,\n  }\n  if (tokenAddress) {\n    paramsObj.token_address = tokenAddress\n  }\n  if (tokenId) {\n    paramsObj.token_id = tokenId\n  }\n  if (toChainId) {\n    paramsObj.to_chain_id = String(toChainId)\n  }\n  const params = new URLSearchParams(paramsObj)\n\n  const url = `${CONFIG.WIDO_API_URL}/${endpoint}?${params}`\n  const res = await fetch(url)\n\n  if (!res.ok) {\n    throw WidoError.from_api_response(await res.json())\n  }\n\n  const data: TokenAllowanceResult = await res.json()\n\n  return {\n    spender: data.spender,\n    allowance: data.allowance,\n  }\n}\n","import { CONFIG } from \"./config\"\nimport { Web3Address, ChainId, WidoContractApiResponse } from \"./types\"\nimport { WidoError } from \"./WidoError\"\n\n/**\n * Get the address of the Wido Token Manager contract. Before zapping, the end user needs to approve this contract, allowing it to spend their ERC-20 token.\n * @deprecated in favor of `getWidoSpender`. This function will be removed in the future, please migrate.\n */\nexport async function getWidoContractAddress(\n  chainId: ChainId\n): Promise<Web3Address> {\n  const endpoint = `contract_address`\n\n  const params = new URLSearchParams({\n    chain_id: String(chainId),\n  })\n\n  const url = `${CONFIG.WIDO_API_URL}/${endpoint}?${params}`\n  const res = await fetch(url)\n\n  if (!res.ok) {\n    throw WidoError.from_api_response(await res.json())\n  }\n\n  const data: WidoContractApiResponse = await res.json()\n\n  return data.spender as Web3Address\n}\n","import { CONFIG } from \"./config\"\nimport {\n  Web3Address,\n  WidoContractApiResponse,\n  WidoSpenderRequest,\n  ContractAddressApiParams,\n} from \"./types\"\nimport { WidoError } from \"./WidoError\"\n\n/**\n * Get contract address that the user needs to approve before zapping.\n * As per the ERC20 standard, Wido needs permission to spend tokens on behalf of `user`.\n */\nexport async function getWidoSpender(\n  request: WidoSpenderRequest\n): Promise<Web3Address> {\n  const { chainId, fromToken, toChainId, toToken } = request\n  const endpoint = `contract_address`\n\n  const paramsObj: ContractAddressApiParams = {\n    chain_id: String(chainId),\n    from_token: fromToken,\n    to_chain_id: String(toChainId),\n    to_token: toToken,\n  }\n  const params = new URLSearchParams(paramsObj)\n\n  const url = `${CONFIG.WIDO_API_URL}/${endpoint}?${params}`\n  const res = await fetch(url)\n\n  if (!res.ok) {\n    throw WidoError.from_api_response(await res.json())\n  }\n\n  const data: WidoContractApiResponse = await res.json()\n\n  return data.spender as Web3Address\n}\n","import { CONFIG } from \"./config\"\nimport {\n  SupportedTokensApiParams,\n  SupportedTokensRequest,\n  Token,\n} from \"./types\"\nimport { WidoError } from \"./WidoError\"\n\n/**\n * @internal\n */\nexport async function getSupportedTokensInternal(\n  request?: SupportedTokensRequest & {\n    /**\n     * Whether to include the tokens from the preview list.\n     *\n     * @default false\n     */\n    includePreview?: boolean\n  }\n) {\n  const {\n    chainId = [],\n    protocol = [],\n    includePricing = false,\n    includePreview = false,\n    toChainId,\n    toToken,\n  } = request || {}\n\n  const endpoint = `tokens`\n\n  const paramsObj: SupportedTokensApiParams = {\n    include_pricing: String(includePricing),\n    include_preview: String(includePreview),\n  }\n  if (toChainId) {\n    paramsObj.to_chain_id = String(toChainId)\n  }\n  if (toToken) {\n    paramsObj.to_token = toToken\n  }\n  const params = new URLSearchParams(paramsObj)\n  chainId.forEach((chainId) => params.append(\"chain_id\", String(chainId)))\n  protocol.forEach((protocol) => params.append(\"protocol\", protocol))\n\n  const url = `${CONFIG.WIDO_API_URL}/${endpoint}?${params}`\n  const res = await fetch(url)\n\n  if (!res.ok) {\n    throw WidoError.from_api_response(await res.json())\n  }\n\n  return (await res.json()).tokens as Token[]\n}\n","import { getSupportedTokensInternal } from \"./get-supported-tokens-internal\"\nimport { SupportedTokensRequest } from \"./types\"\n\n/**\n * Query the Wido API and return a list of ERC-20 tokens that can be used for routing.\n */\nexport async function getSupportedTokens(request?: SupportedTokensRequest) {\n  return await getSupportedTokensInternal(request)\n}\n","import { CONFIG } from \"./config\"\nimport { Web3Address, ChainId, Balance } from \"./types\"\nimport { WidoError } from \"./WidoError\"\n\n/**\n * Query the Wido API and return a list of ERC-20 tokens found in the user's wallet,\n * that can be used for routing.\n */\nexport async function getBalances(user: Web3Address, chainId?: ChainId[]) {\n  const endpoint = `balances`\n\n  const params = new URLSearchParams({\n    user: user,\n  })\n  chainId?.forEach((chainId) => params.append(\"chain_id\", String(chainId)))\n\n  const url = `${CONFIG.WIDO_API_URL}/${endpoint}?${params}`\n  const res = await fetch(url)\n\n  if (!res.ok) {\n    throw WidoError.from_api_response(await res.json())\n  }\n\n  return (await res.json()).balances as Balance[]\n}\n","import { CONFIG } from \"./config\"\nimport {\n  QuoteResult,\n  QuoteApiParams,\n  QuoteApiResponse,\n  QuoteRequest,\n} from \"./types\"\nimport { WidoError } from \"./WidoError\"\n\n/**\n * Get an easy-to-consume quote and a unsigned transaction for zapping any ERC20 token,\n * on behalf of `user`, spending `fromToken` and receiving `toToken` in exchange.\n *\n * Note: `user` and `amount` are required to receive a valid unsigned tx.\n */\nexport async function quote(request: QuoteRequest): Promise<QuoteResult> {\n  const {\n    user,\n    fromChainId,\n    fromToken,\n    toChainId,\n    toToken,\n    amount,\n    slippagePercentage = 0.01,\n    varsOverride = {},\n    partner,\n    lowerTick,\n    upperTick,\n    tokenId,\n    recipient,\n    gaslessType,\n    providers,\n  } = request\n\n  const endpoint = \"quote_v2\"\n  const paramsObj: QuoteApiParams = {\n    from_chain_id: String(fromChainId),\n    from_token: fromToken,\n    to_chain_id: String(toChainId),\n    to_token: toToken,\n    ...varsOverride,\n  }\n\n  if (slippagePercentage) {\n    paramsObj.slippage_percentage = String(slippagePercentage)\n  }\n  if (amount) {\n    paramsObj.amount = amount\n  }\n  if (user) {\n    paramsObj.user = user\n  }\n  if (partner) {\n    paramsObj.partner = partner\n  }\n  if (lowerTick) {\n    paramsObj.lower_tick = lowerTick\n  }\n  if (upperTick) {\n    paramsObj.upper_tick = upperTick\n  }\n  if (tokenId) {\n    paramsObj.token_id = tokenId\n  }\n  if (recipient) {\n    paramsObj.recipient = recipient\n  }\n  if (gaslessType) {\n    paramsObj.gasless_type = gaslessType\n  }\n\n  const params = new URLSearchParams(paramsObj)\n\n  if (providers) {\n    for (const provider of providers) {\n      params.append(\"providers\", provider)\n    }\n  }\n\n  const url = `${CONFIG.WIDO_API_URL}/${endpoint}?${params}`\n\n  const res = await fetch(url)\n\n  if (!res.ok) {\n    throw WidoError.from_api_response(await res.json())\n  }\n\n  const body: QuoteApiResponse = await res.json()\n  const { is_supported, steps, steps_count, messages } = body\n\n  const baseQuoteResult: QuoteResult = {\n    isSupported: is_supported,\n    steps,\n    stepsCount: steps_count,\n    messages: messages || [],\n  }\n\n  if (!amount && !user) {\n    return baseQuoteResult\n  }\n\n  const {\n    price,\n    min_price,\n    from_token_usd_price,\n    from_token_amount,\n    from_token_amount_usd_value,\n    to_token_usd_price,\n    to_token_amount,\n    to_token_amount_usd_value,\n    expected_slippage,\n    min_to_token_amount,\n    from,\n    to,\n    data,\n    value,\n    gas_fee,\n    gas_fee_usd,\n    fee_in_from_token,\n    bridge_fee_usd_value,\n    fee_usd_value,\n  } = body\n\n  return {\n    ...baseQuoteResult,\n    price,\n    minPrice: min_price,\n    fromTokenUsdPrice: from_token_usd_price,\n    fromTokenAmount: from_token_amount,\n    fromTokenAmountUsdValue: from_token_amount_usd_value,\n    toTokenUsdPrice: to_token_usd_price,\n    toTokenAmount: to_token_amount,\n    toTokenAmountUsdValue: to_token_amount_usd_value,\n    expectedSlippage: expected_slippage,\n    minToTokenAmount: min_to_token_amount,\n    from,\n    to,\n    data,\n    value,\n    gasFee: gas_fee,\n    gasFeeUsdValue: gas_fee_usd,\n    feeBps: body.fee_bps,\n    feeInFromToken: fee_in_from_token,\n    bridgeFeeUsdValue: bridge_fee_usd_value,\n    feeUsdValue: fee_usd_value,\n  } as QuoteResult\n}\n","export const version = \"logger/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nlet _permanentCensorErrors = false;\nlet _censorErrors = false;\nconst LogLevels = { debug: 1, \"default\": 2, info: 2, warning: 3, error: 4, off: 5 };\nlet _logLevel = LogLevels[\"default\"];\nimport { version } from \"./_version\";\nlet _globalLogger = null;\nfunction _checkNormalize() {\n    try {\n        const missing = [];\n        // Make sure all forms of normalization are supported\n        [\"NFD\", \"NFC\", \"NFKD\", \"NFKC\"].forEach((form) => {\n            try {\n                if (\"test\".normalize(form) !== \"test\") {\n                    throw new Error(\"bad normalize\");\n                }\n                ;\n            }\n            catch (error) {\n                missing.push(form);\n            }\n        });\n        if (missing.length) {\n            throw new Error(\"missing \" + missing.join(\", \"));\n        }\n        if (String.fromCharCode(0xe9).normalize(\"NFD\") !== String.fromCharCode(0x65, 0x0301)) {\n            throw new Error(\"broken implementation\");\n        }\n    }\n    catch (error) {\n        return error.message;\n    }\n    return null;\n}\nconst _normalizeError = _checkNormalize();\nexport var LogLevel;\n(function (LogLevel) {\n    LogLevel[\"DEBUG\"] = \"DEBUG\";\n    LogLevel[\"INFO\"] = \"INFO\";\n    LogLevel[\"WARNING\"] = \"WARNING\";\n    LogLevel[\"ERROR\"] = \"ERROR\";\n    LogLevel[\"OFF\"] = \"OFF\";\n})(LogLevel || (LogLevel = {}));\nexport var ErrorCode;\n(function (ErrorCode) {\n    ///////////////////\n    // Generic Errors\n    // Unknown Error\n    ErrorCode[\"UNKNOWN_ERROR\"] = \"UNKNOWN_ERROR\";\n    // Not Implemented\n    ErrorCode[\"NOT_IMPLEMENTED\"] = \"NOT_IMPLEMENTED\";\n    // Unsupported Operation\n    //   - operation\n    ErrorCode[\"UNSUPPORTED_OPERATION\"] = \"UNSUPPORTED_OPERATION\";\n    // Network Error (i.e. Ethereum Network, such as an invalid chain ID)\n    //   - event (\"noNetwork\" is not re-thrown in provider.ready; otherwise thrown)\n    ErrorCode[\"NETWORK_ERROR\"] = \"NETWORK_ERROR\";\n    // Some sort of bad response from the server\n    ErrorCode[\"SERVER_ERROR\"] = \"SERVER_ERROR\";\n    // Timeout\n    ErrorCode[\"TIMEOUT\"] = \"TIMEOUT\";\n    ///////////////////\n    // Operational  Errors\n    // Buffer Overrun\n    ErrorCode[\"BUFFER_OVERRUN\"] = \"BUFFER_OVERRUN\";\n    // Numeric Fault\n    //   - operation: the operation being executed\n    //   - fault: the reason this faulted\n    ErrorCode[\"NUMERIC_FAULT\"] = \"NUMERIC_FAULT\";\n    ///////////////////\n    // Argument Errors\n    // Missing new operator to an object\n    //  - name: The name of the class\n    ErrorCode[\"MISSING_NEW\"] = \"MISSING_NEW\";\n    // Invalid argument (e.g. value is incompatible with type) to a function:\n    //   - argument: The argument name that was invalid\n    //   - value: The value of the argument\n    ErrorCode[\"INVALID_ARGUMENT\"] = \"INVALID_ARGUMENT\";\n    // Missing argument to a function:\n    //   - count: The number of arguments received\n    //   - expectedCount: The number of arguments expected\n    ErrorCode[\"MISSING_ARGUMENT\"] = \"MISSING_ARGUMENT\";\n    // Too many arguments\n    //   - count: The number of arguments received\n    //   - expectedCount: The number of arguments expected\n    ErrorCode[\"UNEXPECTED_ARGUMENT\"] = \"UNEXPECTED_ARGUMENT\";\n    ///////////////////\n    // Blockchain Errors\n    // Call exception\n    //  - transaction: the transaction\n    //  - address?: the contract address\n    //  - args?: The arguments passed into the function\n    //  - method?: The Solidity method signature\n    //  - errorSignature?: The EIP848 error signature\n    //  - errorArgs?: The EIP848 error parameters\n    //  - reason: The reason (only for EIP848 \"Error(string)\")\n    ErrorCode[\"CALL_EXCEPTION\"] = \"CALL_EXCEPTION\";\n    // Insufficient funds (< value + gasLimit * gasPrice)\n    //   - transaction: the transaction attempted\n    ErrorCode[\"INSUFFICIENT_FUNDS\"] = \"INSUFFICIENT_FUNDS\";\n    // Nonce has already been used\n    //   - transaction: the transaction attempted\n    ErrorCode[\"NONCE_EXPIRED\"] = \"NONCE_EXPIRED\";\n    // The replacement fee for the transaction is too low\n    //   - transaction: the transaction attempted\n    ErrorCode[\"REPLACEMENT_UNDERPRICED\"] = \"REPLACEMENT_UNDERPRICED\";\n    // The gas limit could not be estimated\n    //   - transaction: the transaction passed to estimateGas\n    ErrorCode[\"UNPREDICTABLE_GAS_LIMIT\"] = \"UNPREDICTABLE_GAS_LIMIT\";\n    // The transaction was replaced by one with a higher gas price\n    //   - reason: \"cancelled\", \"replaced\" or \"repriced\"\n    //   - cancelled: true if reason == \"cancelled\" or reason == \"replaced\")\n    //   - hash: original transaction hash\n    //   - replacement: the full TransactionsResponse for the replacement\n    //   - receipt: the receipt of the replacement\n    ErrorCode[\"TRANSACTION_REPLACED\"] = \"TRANSACTION_REPLACED\";\n    ///////////////////\n    // Interaction Errors\n    // The user rejected the action, such as signing a message or sending\n    // a transaction\n    ErrorCode[\"ACTION_REJECTED\"] = \"ACTION_REJECTED\";\n})(ErrorCode || (ErrorCode = {}));\n;\nconst HEX = \"0123456789abcdef\";\nexport class Logger {\n    constructor(version) {\n        Object.defineProperty(this, \"version\", {\n            enumerable: true,\n            value: version,\n            writable: false\n        });\n    }\n    _log(logLevel, args) {\n        const level = logLevel.toLowerCase();\n        if (LogLevels[level] == null) {\n            this.throwArgumentError(\"invalid log level name\", \"logLevel\", logLevel);\n        }\n        if (_logLevel > LogLevels[level]) {\n            return;\n        }\n        console.log.apply(console, args);\n    }\n    debug(...args) {\n        this._log(Logger.levels.DEBUG, args);\n    }\n    info(...args) {\n        this._log(Logger.levels.INFO, args);\n    }\n    warn(...args) {\n        this._log(Logger.levels.WARNING, args);\n    }\n    makeError(message, code, params) {\n        // Errors are being censored\n        if (_censorErrors) {\n            return this.makeError(\"censored error\", code, {});\n        }\n        if (!code) {\n            code = Logger.errors.UNKNOWN_ERROR;\n        }\n        if (!params) {\n            params = {};\n        }\n        const messageDetails = [];\n        Object.keys(params).forEach((key) => {\n            const value = params[key];\n            try {\n                if (value instanceof Uint8Array) {\n                    let hex = \"\";\n                    for (let i = 0; i < value.length; i++) {\n                        hex += HEX[value[i] >> 4];\n                        hex += HEX[value[i] & 0x0f];\n                    }\n                    messageDetails.push(key + \"=Uint8Array(0x\" + hex + \")\");\n                }\n                else {\n                    messageDetails.push(key + \"=\" + JSON.stringify(value));\n                }\n            }\n            catch (error) {\n                messageDetails.push(key + \"=\" + JSON.stringify(params[key].toString()));\n            }\n        });\n        messageDetails.push(`code=${code}`);\n        messageDetails.push(`version=${this.version}`);\n        const reason = message;\n        let url = \"\";\n        switch (code) {\n            case ErrorCode.NUMERIC_FAULT: {\n                url = \"NUMERIC_FAULT\";\n                const fault = message;\n                switch (fault) {\n                    case \"overflow\":\n                    case \"underflow\":\n                    case \"division-by-zero\":\n                        url += \"-\" + fault;\n                        break;\n                    case \"negative-power\":\n                    case \"negative-width\":\n                        url += \"-unsupported\";\n                        break;\n                    case \"unbound-bitwise-result\":\n                        url += \"-unbound-result\";\n                        break;\n                }\n                break;\n            }\n            case ErrorCode.CALL_EXCEPTION:\n            case ErrorCode.INSUFFICIENT_FUNDS:\n            case ErrorCode.MISSING_NEW:\n            case ErrorCode.NONCE_EXPIRED:\n            case ErrorCode.REPLACEMENT_UNDERPRICED:\n            case ErrorCode.TRANSACTION_REPLACED:\n            case ErrorCode.UNPREDICTABLE_GAS_LIMIT:\n                url = code;\n                break;\n        }\n        if (url) {\n            message += \" [ See: https:/\\/links.ethers.org/v5-errors-\" + url + \" ]\";\n        }\n        if (messageDetails.length) {\n            message += \" (\" + messageDetails.join(\", \") + \")\";\n        }\n        // @TODO: Any??\n        const error = new Error(message);\n        error.reason = reason;\n        error.code = code;\n        Object.keys(params).forEach(function (key) {\n            error[key] = params[key];\n        });\n        return error;\n    }\n    throwError(message, code, params) {\n        throw this.makeError(message, code, params);\n    }\n    throwArgumentError(message, name, value) {\n        return this.throwError(message, Logger.errors.INVALID_ARGUMENT, {\n            argument: name,\n            value: value\n        });\n    }\n    assert(condition, message, code, params) {\n        if (!!condition) {\n            return;\n        }\n        this.throwError(message, code, params);\n    }\n    assertArgument(condition, message, name, value) {\n        if (!!condition) {\n            return;\n        }\n        this.throwArgumentError(message, name, value);\n    }\n    checkNormalize(message) {\n        if (message == null) {\n            message = \"platform missing String.prototype.normalize\";\n        }\n        if (_normalizeError) {\n            this.throwError(\"platform missing String.prototype.normalize\", Logger.errors.UNSUPPORTED_OPERATION, {\n                operation: \"String.prototype.normalize\", form: _normalizeError\n            });\n        }\n    }\n    checkSafeUint53(value, message) {\n        if (typeof (value) !== \"number\") {\n            return;\n        }\n        if (message == null) {\n            message = \"value not safe\";\n        }\n        if (value < 0 || value >= 0x1fffffffffffff) {\n            this.throwError(message, Logger.errors.NUMERIC_FAULT, {\n                operation: \"checkSafeInteger\",\n                fault: \"out-of-safe-range\",\n                value: value\n            });\n        }\n        if (value % 1) {\n            this.throwError(message, Logger.errors.NUMERIC_FAULT, {\n                operation: \"checkSafeInteger\",\n                fault: \"non-integer\",\n                value: value\n            });\n        }\n    }\n    checkArgumentCount(count, expectedCount, message) {\n        if (message) {\n            message = \": \" + message;\n        }\n        else {\n            message = \"\";\n        }\n        if (count < expectedCount) {\n            this.throwError(\"missing argument\" + message, Logger.errors.MISSING_ARGUMENT, {\n                count: count,\n                expectedCount: expectedCount\n            });\n        }\n        if (count > expectedCount) {\n            this.throwError(\"too many arguments\" + message, Logger.errors.UNEXPECTED_ARGUMENT, {\n                count: count,\n                expectedCount: expectedCount\n            });\n        }\n    }\n    checkNew(target, kind) {\n        if (target === Object || target == null) {\n            this.throwError(\"missing new\", Logger.errors.MISSING_NEW, { name: kind.name });\n        }\n    }\n    checkAbstract(target, kind) {\n        if (target === kind) {\n            this.throwError(\"cannot instantiate abstract class \" + JSON.stringify(kind.name) + \" directly; use a sub-class\", Logger.errors.UNSUPPORTED_OPERATION, { name: target.name, operation: \"new\" });\n        }\n        else if (target === Object || target == null) {\n            this.throwError(\"missing new\", Logger.errors.MISSING_NEW, { name: kind.name });\n        }\n    }\n    static globalLogger() {\n        if (!_globalLogger) {\n            _globalLogger = new Logger(version);\n        }\n        return _globalLogger;\n    }\n    static setCensorship(censorship, permanent) {\n        if (!censorship && permanent) {\n            this.globalLogger().throwError(\"cannot permanently disable censorship\", Logger.errors.UNSUPPORTED_OPERATION, {\n                operation: \"setCensorship\"\n            });\n        }\n        if (_permanentCensorErrors) {\n            if (!censorship) {\n                return;\n            }\n            this.globalLogger().throwError(\"error censorship permanent\", Logger.errors.UNSUPPORTED_OPERATION, {\n                operation: \"setCensorship\"\n            });\n        }\n        _censorErrors = !!censorship;\n        _permanentCensorErrors = !!permanent;\n    }\n    static setLogLevel(logLevel) {\n        const level = LogLevels[logLevel.toLowerCase()];\n        if (level == null) {\n            Logger.globalLogger().warn(\"invalid log level - \" + logLevel);\n            return;\n        }\n        _logLevel = level;\n    }\n    static from(version) {\n        return new Logger(version);\n    }\n}\nLogger.errors = ErrorCode;\nLogger.levels = LogLevel;\n//# sourceMappingURL=index.js.map","export const version = \"properties/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nexport function defineReadOnly(object, name, value) {\n    Object.defineProperty(object, name, {\n        enumerable: true,\n        value: value,\n        writable: false,\n    });\n}\n// Crawl up the constructor chain to find a static method\nexport function getStatic(ctor, key) {\n    for (let i = 0; i < 32; i++) {\n        if (ctor[key]) {\n            return ctor[key];\n        }\n        if (!ctor.prototype || typeof (ctor.prototype) !== \"object\") {\n            break;\n        }\n        ctor = Object.getPrototypeOf(ctor.prototype).constructor;\n    }\n    return null;\n}\nexport function resolveProperties(object) {\n    return __awaiter(this, void 0, void 0, function* () {\n        const promises = Object.keys(object).map((key) => {\n            const value = object[key];\n            return Promise.resolve(value).then((v) => ({ key: key, value: v }));\n        });\n        const results = yield Promise.all(promises);\n        return results.reduce((accum, result) => {\n            accum[(result.key)] = result.value;\n            return accum;\n        }, {});\n    });\n}\nexport function checkProperties(object, properties) {\n    if (!object || typeof (object) !== \"object\") {\n        logger.throwArgumentError(\"invalid object\", \"object\", object);\n    }\n    Object.keys(object).forEach((key) => {\n        if (!properties[key]) {\n            logger.throwArgumentError(\"invalid object key - \" + key, \"transaction:\" + key, object);\n        }\n    });\n}\nexport function shallowCopy(object) {\n    const result = {};\n    for (const key in object) {\n        result[key] = object[key];\n    }\n    return result;\n}\nconst opaque = { bigint: true, boolean: true, \"function\": true, number: true, string: true };\nfunction _isFrozen(object) {\n    // Opaque objects are not mutable, so safe to copy by assignment\n    if (object === undefined || object === null || opaque[typeof (object)]) {\n        return true;\n    }\n    if (Array.isArray(object) || typeof (object) === \"object\") {\n        if (!Object.isFrozen(object)) {\n            return false;\n        }\n        const keys = Object.keys(object);\n        for (let i = 0; i < keys.length; i++) {\n            let value = null;\n            try {\n                value = object[keys[i]];\n            }\n            catch (error) {\n                // If accessing a value triggers an error, it is a getter\n                // designed to do so (e.g. Result) and is therefore \"frozen\"\n                continue;\n            }\n            if (!_isFrozen(value)) {\n                return false;\n            }\n        }\n        return true;\n    }\n    return logger.throwArgumentError(`Cannot deepCopy ${typeof (object)}`, \"object\", object);\n}\n// Returns a new copy of object, such that no properties may be replaced.\n// New properties may be added only to objects.\nfunction _deepCopy(object) {\n    if (_isFrozen(object)) {\n        return object;\n    }\n    // Arrays are mutable, so we need to create a copy\n    if (Array.isArray(object)) {\n        return Object.freeze(object.map((item) => deepCopy(item)));\n    }\n    if (typeof (object) === \"object\") {\n        const result = {};\n        for (const key in object) {\n            const value = object[key];\n            if (value === undefined) {\n                continue;\n            }\n            defineReadOnly(result, key, deepCopy(value));\n        }\n        return result;\n    }\n    return logger.throwArgumentError(`Cannot deepCopy ${typeof (object)}`, \"object\", object);\n}\nexport function deepCopy(object) {\n    return _deepCopy(object);\n}\nexport class Description {\n    constructor(info) {\n        for (const key in info) {\n            this[key] = deepCopy(info[key]);\n        }\n    }\n}\n//# sourceMappingURL=index.js.map","import { PaymasterApiRequest, PaymasterApiResponse } from \"../../types\"\nimport { CONFIG } from \"../../config\"\nimport { WidoError } from \"../../WidoError\"\nimport { UserOperation } from \"@biconomy/core-types\"\n\nexport async function getPaymasterAndData(\n  chainId: number,\n  userOp: UserOperation\n): Promise<PaymasterApiResponse> {\n  const endpoint = \"paymaster\"\n  const request: PaymasterApiRequest = {\n    chainId: chainId,\n    sender: userOp.sender, // address\n    nonce: userOp.nonce.toString(), // uint256\n    initCode: userOp.initCode, // bytes\n    callData: userOp.callData, // bytes\n    callGasLimit: userOp.callGasLimit.toString(), // uint256\n    verificationGasLimit: userOp.verificationGasLimit.toString(), // uint256\n    preVerificationGas: userOp.preVerificationGas.toString(), // uint256\n    maxFeePerGas: userOp.maxFeePerGas.toString(), // uint256\n    maxPriorityFeePerGas: userOp.maxPriorityFeePerGas.toString(), // uint256\n    paymasterAndData: userOp.paymasterAndData, // bytes\n    signature: userOp.signature,\n  }\n  const url = `${CONFIG.WIDO_API_URL}/${endpoint}`\n\n  const res = await fetch(url, {\n    method: \"POST\",\n    mode: \"cors\",\n    headers: {\n      Accept: \"*/*\",\n      \"Content-Type\": \"application/json\",\n    },\n    body: JSON.stringify(request),\n  })\n\n  if (!res.ok) {\n    throw WidoError.from_api_response(await res.json())\n  }\n\n  const { paymasterAndData } = await res.json()\n\n  return { paymasterAndData }\n}\n","import { UserOperation } from \"@biconomy/core-types\"\nimport { IPaymaster, PaymasterAndDataResponse } from \"@biconomy/paymaster\"\nimport { resolveProperties } from \"@ethersproject/properties\"\nimport { ChainId } from \"../types\"\nimport { getPaymasterAndData } from \"./core/paymaster\"\n\nexport class BiconomyPaymaster implements IPaymaster {\n  chainId: ChainId\n\n  constructor(chainId: number) {\n    this.chainId = chainId\n  }\n\n  getDummyPaymasterAndData(_userOp: Partial<UserOperation>): Promise<string> {\n    return Promise.resolve(\n      \"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\"\n    )\n  }\n\n  async getPaymasterAndData(\n    userOp: Partial<UserOperation>\n  ): Promise<PaymasterAndDataResponse> {\n    userOp = await resolveProperties(userOp)\n\n    userOp.nonce = Number(userOp.nonce)\n    userOp.callGasLimit = Number(userOp.callGasLimit)\n    userOp.verificationGasLimit = Number(userOp.verificationGasLimit)\n    userOp.maxFeePerGas = Number(userOp.maxFeePerGas)\n    userOp.maxPriorityFeePerGas = Number(userOp.maxPriorityFeePerGas)\n    userOp.preVerificationGas = Number(userOp.preVerificationGas)\n    userOp.signature = \"0x\"\n    userOp.paymasterAndData = \"0x\"\n\n    const paymasterResponse = await getPaymasterAndData(\n      this.chainId,\n      userOp as UserOperation\n    )\n\n    return {\n      paymasterAndData: paymasterResponse.paymasterAndData,\n    }\n  }\n}\n","import { ChainId, ChainName } from \"../types\"\n\n/**\n * @internal\n */\nexport const MAX_UINT256 =\n  \"115792089237316195423570985008687907853269984665640564039457584007913129639935\"\n\nconst chainIdMap: Record<ChainName, ChainId> = {\n  other: 1,\n  mainnet: 1,\n  goerli: 5,\n  fantom: 250,\n  arbitrum: 42161,\n  avalanche: 43114,\n  moonriver: 1285,\n  polygon: 137,\n  celo: 42220,\n  phuture: 1338,\n  optimism: 10,\n  binance: 56,\n  aurora: 1313161554,\n  base: 8453\n}\n\n/**\n * @internal\n */\nexport function getChainId(chainName: ChainName): ChainId {\n  if (!chainIdMap[chainName]) {\n    throw new Error(`InputError: chain with name ${chainName} not found.`)\n  }\n\n  return chainIdMap[chainName]\n}\n\nconst chainNameMap: Record<ChainId, ChainName> = {\n  1: \"mainnet\",\n  5: \"goerli\",\n  250: \"fantom\",\n  43114: \"avalanche\",\n  42161: \"arbitrum\",\n  1285: \"moonriver\",\n  137: \"polygon\",\n  42220: \"celo\",\n  1338: \"phuture\",\n  10: \"optimism\",\n  56: \"binance\",\n  1313161554: \"aurora\",\n  8453: \"base\"\n}\n\n/**\n * @internal\n */\nexport function getChainName(chainId: ChainId): ChainName {\n  if (!chainNameMap[chainId]) {\n    throw new Error(`InputError: chain with id ${chainId} not found.`)\n  }\n\n  return chainNameMap[chainId]\n}\n","/**\n * @internal\n */\nexport type ChainName =\n  | \"other\"\n  | \"mainnet\"\n  | \"fantom\"\n  | \"avalanche\"\n  | \"moonriver\"\n  | \"polygon\"\n  | \"arbitrum\"\n  | \"celo\"\n  | \"goerli\"\n  | \"phuture\"\n  | \"optimism\"\n  | \"binance\"\n  | \"aurora\"\n  | \"base\"\n\nexport type ChainId =\n  | 1\n  | 250\n  | 43114\n  | 42161\n  | 5\n  | 1285\n  | 137\n  | 42220\n  | 1338\n  | 10\n  | 56\n  | 15366\n  | 15367\n  | 1313161554\n  | 8453\n  | number\n\nexport type TokenAllowanceApiParams = {\n  chain_id: string\n  account_address: string\n  token_address?: string\n  from_token: string\n  to_token: string\n  token_id?: string\n  to_chain_id?: string\n}\n\nexport type TokenAllowanceRequest = {\n  /**\n   * Alias for `fromChainId`. This will be deprecated in the future: use `fromChainId`.\n   */\n  chainId?: ChainId\n  accountAddress: Web3Address\n  /**\n   * Alias for `fromToken`. This will be deprecated in the future: use `fromToken`.\n   *\n   * @deprecated in favor of `fromToken`. This parameter will be removed in the future, please migrate.\n   */\n  tokenAddress?: Web3Address\n  /**\n   * ChainId of `fromToken`.\n   * See https://chainlist.org/.\n   */\n  fromChainId?: ChainId\n  /**\n   * Address of `fromToken`, the token you wish to zap with.\n   */\n  fromToken: Web3Address\n  /**\n   * ChainId of `toToken`.\n   * See https://chainlist.org/.\n   */\n  toChainId: ChainId\n  /**\n   * Address of `toToken`, the token you wish to zap into.\n   */\n  toToken: Web3Address\n  /**\n   * ERC-721 tokenId.\n   */\n  tokenId?: string\n}\n\nexport type TokenAllowanceResult = {\n  allowance: string\n  spender: Web3Address\n}\n\nexport type StatusRequest = {\n  chainId: ChainId\n  txHash: string\n}\n\nexport type StatusApiParams = {\n  chain_id: string\n  tx_hash?: string\n}\n\nexport type StatusApiResponse = {\n  status: string\n  substatus: string\n  substatus_message: string\n  to_tx_hash: string\n  to_chain_id?: string\n}\n\nexport type StatusResult = {\n  status: string\n  substatus: string\n  substatusMessage: string\n  toTxHash: string\n  toChainId?: string\n}\n\nexport type ApproveApiParams = {\n  chain_id: string\n  token_address?: string\n  from_token: string\n  to_token: string\n  amount?: string\n  token_id?: string\n  to_chain_id?: string\n}\n\nexport type ApproveRequest = {\n  /**\n   * Alias for `fromChainId`. This will be deprecated in the future: use `fromChainId`.\n   */\n  chainId?: ChainId\n  /**\n   * Alias for `fromToken`.\n   *\n   * @deprecated in favor of `fromToken`. This parameter will be removed in the future, please migrate.\n   */\n  tokenAddress?: Web3Address\n  /**\n   * ChainId of `fromToken`.\n   * See https://chainlist.org/.\n   */\n  fromChainId?: ChainId\n  /**\n   * Address of `fromToken`, the token you wish to zap with.\n   */\n  fromToken: Web3Address\n  /**\n   * ChainId of `toToken`.\n   * See https://chainlist.org/.\n   */\n  toChainId: ChainId\n  /**\n   * Address of `toToken`, the token you wish to zap into.\n   */\n  toToken: Web3Address\n  /**\n   * @default \"115792089237316195423570985008687907853269984665640564039457584007913129639935\"\n   */\n  amount?: string\n  /**\n   * ERC-721 tokenId.\n   */\n  tokenId?: string\n}\n\nexport type ApproveResult = {\n  /**\n   * Contract address where the unsigned transaction needs to be sent.\n   */\n  to: Web3Address\n  /**\n   * Unsigned transaction data.\n   */\n  data: string\n}\n\nexport type ContractAddressApiParams = {\n  chain_id: string\n  from_token: string\n  to_token: string\n  to_chain_id: string\n}\n\nexport type WidoSpenderRequest = {\n  /**\n   * ChainId of `fromToken`.\n   * See https://chainlist.org/.\n   */\n  chainId: ChainId\n  /**\n   * Address of `fromToken`, the token you wish to zap with.\n   */\n  fromToken: Web3Address\n  /**\n   * Address of `toToken`, the token you wish to zap into.\n   */\n  toToken: Web3Address\n  /**\n   * ChainId of the `to_token`.\n   * See https://chainlist.org/.\n   */\n  toChainId: ChainId\n}\n\nexport enum GaslessType {\n  ERC4337 = \"erc4337\",\n  EOA = \"eoa\",\n}\n\nexport enum Providers {\n  LiFi = \"LiFi\",\n  ZeroEx = \"ZeroEx\",\n  OpenOcean = \"OpenOcean\",\n}\n\nexport type QuoteRequest = {\n  /**\n   * ChainId of `fromToken`.\n   * See https://chainlist.org/.\n   */\n  fromChainId: ChainId\n  /**\n   * Address of `fromToken`, the token you wish to zap with.\n   */\n  fromToken: Web3Address\n  /**\n   * ChainId of the `to_token`.\n   * See https://chainlist.org/.\n   */\n  toChainId: ChainId\n  /**\n   * Address of the to token.\n   */\n  toToken: Web3Address\n  /**\n   * Amount of the `fromToken` to spend on the user's behalf.\n   */\n  amount?: string\n  /**\n   * Address of user placing the order.\n   * Required to receive a valid unsigned tx.\n   */\n  user?: Web3Address\n  /**\n   * The maximum acceptable slippage of the `to_token` amount.\n   * A number between `0` and `1`.\n   * E.g.: `0.01` for 1% slippage tolerance.\n   *\n   * @default 0.01\n   */\n  slippagePercentage?: number\n  /**\n   * Address of where the zapped funds should be sent after the order executes.\n   */\n  recipient?: Web3Address\n  varsOverride?: Record<string, number | string | unknown>\n  /**\n   * Address of partner referring the user.\n   */\n  partner?: Web3Address\n  /**\n   * For Uniswap V3 zaps.\n   */\n  lowerTick?: Web3Address\n  /**\n   * For Uniswap V3 zaps.\n   */\n  upperTick?: Web3Address\n  /**\n   * ERC-721 tokenId.\n   */\n  tokenId?: string\n  /**\n   * Gas-less type of transaction\n   */\n  gaslessType?: GaslessType\n  /**\n   * Specific swap providers\n   */\n  providers?: Providers[]\n}\n\n/**\n * @internal\n */\nexport type QuoteApiParams = {\n  from_chain_id: string\n  from_token: string\n  to_chain_id: string\n  to_token: string\n  amount?: string\n  user?: string\n  slippage_percentage?: string\n  partner?: string\n  lower_tick?: string\n  upper_tick?: string\n  token_id?: string\n  recipient?: string\n  gasless_type?: string\n  providers?: string\n}\n\n/**\n * @internal\n */\nexport type QuoteApiResponse = {\n  is_supported: boolean\n  steps: Step[]\n  steps_count: number\n  //\n  price: string\n  min_price: string\n  from_token_usd_price: string\n  from_token_amount: string\n  from_token_amount_usd_value: string\n  to_token_usd_price: string\n  to_token_amount: string\n  to_token_amount_usd_value: string\n  min_to_token_amount: string\n  expected_slippage: string\n  from: Web3Address\n  to: Web3Address\n  value: string\n  data: string\n  messages?: { type: \"info\" | \"warning\"; message: string }[]\n  gas_fee?: string\n  gas_fee_usd?: string\n  fee_bps?: number\n  fee_in_from_token?: number\n  bridge_fee_usd_value?: string\n  fee_usd_value?: string\n}\n\nexport type QuoteResult = {\n  /**\n   * Whether the route is supported or not.\n   */\n  isSupported: boolean\n  /**\n   * The steps this route will take. Used to show the route breakdown.\n   */\n  steps: {\n    protocol: string\n    chainId: ChainId\n    toChainId: ChainId\n    fromToken: Web3Address\n    toToken: Web3Address\n    swapAddress: Web3Address\n    functionName: string\n  }[]\n  /**\n   * Number of steps the route will take.\n   */\n  stepsCount: number\n  /**\n   * Expected price of `toToken`.\n   */\n  price?: string\n  /**\n   * Minimum accepted price for a successful transaction.\n   */\n  minPrice?: string\n  /**\n   * Price of `fromToken` in US dollars.\n   */\n  fromTokenUsdPrice?: string\n  /**\n   * Amount of `fromToken` to send.\n   */\n  fromTokenAmount?: string\n  /**\n   * Value of `fromTokenAmount` in US dollars.\n   */\n  fromTokenAmountUsdValue?: string\n  /**\n   * Price of `toToken` in US dollars.\n   */\n  toTokenUsdPrice?: string\n  /**\n   * Expected amount of `toToken` to receive.\n   */\n  toTokenAmount?: string\n  /**\n   * Value of `toTokenAmount` in US dollars.\n   */\n  toTokenAmountUsdValue?: string\n  /**\n   * Expected slippage calculated from `fromTokenAmountUsdValue` and `toTokenAmountUsdValue`.\n   * If the value returned is < 0, the zap is expected to result in positive slippage.\n   */\n  expectedSlippage?: string\n  /**\n   * Minimum amount of the to token the user is willing to accept for a successful transaction.\n   */\n  minToTokenAmount?: string\n  /**\n   * User address who should be sending the tx.\n   */\n  from?: Web3Address\n  /**\n   * Contract address where the unsigned transaction needs to be sent.\n   */\n  to?: Web3Address\n  /**\n   * Unsigned transaction data.\n   */\n  data?: string\n  /**\n   * Amount of native tokens that need to be sent.\n   */\n  value?: string\n  messages: { type: \"info\" | \"warning\"; message: string }[]\n  gasFee?: string\n  gasFeeUsdValue?: string\n  feeBps?: string\n  /**\n   * Service fee denoted in the 'from' token units\n   */\n  feeInFromToken?: number\n  /**\n   * Bridge fee value in US dollars.\n   */\n  bridgeFeeUsdValue?: string\n  /**\n   * Service fee value in US dollars.\n   */\n  feeUsdValue?: string\n}\n\n/**\n * @internal\n */\nexport type Order = {\n  user: Web3Address\n  fromToken: Web3Address\n  fromChainId: ChainId\n  toToken: Web3Address\n  toChainId: ChainId\n  fromTokenAmount: string\n  minToTokenAmount: string\n  nonce: number\n  expiration: number\n}\n\n/**\n * @internal\n */\nexport type Step = {\n  protocol: string\n  chainId: ChainId\n  toChainId: ChainId\n  fromToken: Web3Address\n  toToken: Web3Address\n  swapAddress: Web3Address\n  functionName: string\n}\n\n/**\n * @internal\n */\nexport type ConfigType = {\n  WIDO_API_URL: string\n  DEBUG: boolean\n  SEGMENT_KEY: string\n}\n\nexport type SupportedTokensApiParams = {\n  include_pricing?: string\n  include_preview?: string\n  to_chain_id?: string\n  to_token?: string\n}\n\nexport type SupportedTokensRequest = {\n  /**\n   * Filter by `chainId`.\n   *\n   * @default []\n   */\n  chainId?: ChainId[]\n  /**\n   * Filter by `protocol`.\n   *\n   * @default []\n   */\n  protocol?: Protocol[]\n  /**\n   * Whether to include pricing.\n   *\n   * @default false\n   */\n  includePricing?: boolean\n  /**\n   * Address of `toToken`, the token you wish to zap into.\n   * Use this if you'd like to receive a list of tokens you can zap in with.\n   */\n  toToken?: Web3Address\n  /**\n   * ChainId of the `to_token`.\n   * See https://chainlist.org/.\n   */\n  toChainId?: ChainId\n}\n\nexport type Token = {\n  address: Web3Address\n  chainId: ChainId\n  protocol: Protocol\n  /**\n   * @default \"0.0\"\n   */\n  usdPrice: string\n  symbol: string\n  name: string\n  decimals: number\n  logoURI: string\n}\n\nexport type Balance = {\n  address: Web3Address\n  chainId: ChainId\n  protocol: Protocol\n  /**\n   * @default \"0.0\"\n   */\n  usdPrice: string\n  symbol: string\n  name: string\n  decimals: number\n  logoURI: string\n  balance: string\n  balanceUsdValue: string\n}\n\n/**\n * @internal\n */\nexport type WidoContractApiResponse = {\n  spender: Web3Address\n  err?: string\n}\n\nexport type ErrorCode = \"SERVER_ERR\" | \"INVALID_REQUEST\" | string\nexport type ValidationError = {\n  loc: string[]\n  msg: string\n  type: string\n}\n\n/**\n * @internal\n */\nexport type ErrorApiResponse = {\n  code: ErrorCode\n  detail: string\n  validationErrors: ValidationError[]\n}\n\n/**\n * @internal\n */\nexport type PaymasterApiRequest = {\n  chainId: ChainId\n  sender: string\n  nonce: number\n  initCode: string\n  callData: string\n  callGasLimit: number\n  verificationGasLimit: number\n  preVerificationGas: number\n  maxFeePerGas: number\n  maxPriorityFeePerGas: number\n  paymasterAndData: string\n  signature: string\n}\n\n/**\n * @internal\n */\nexport type PaymasterApiResponse = {\n  paymasterAndData: string\n}\n\n/**\n * Example: `0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE`\n */\nexport type Web3Address = string\n\nexport type Protocol =\n  | \"curve.fi\"\n  | \"aave.com\"\n  | \"yearn.finance\"\n  | \"sturdy.finance\"\n  | \"pickle.finance\"\n  | \"dex\"\n  | \"unknown\"\n  | string\n"],"names":["chainId","protocol","version","LogLevel","ErrorCode","error","this","GaslessType","Providers"],"mappings":"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"}