{"version":3,"file":"index.cjs","sources":["../../../src/utils.ts","../../../src/evm/currencies/base-currency.ts","../../../src/evm/currencies/token.ts","../../../src/evm/currencies/currency-amount.ts","../../../src/evm/currencies/native-currency.ts","../../../src/evm/currencies/common-tokens.ts","../../../src/evm/currencies/ether-currency.ts","../../../src/evm/currencies/xdai-currency.ts","../../../src/evm/actions/ensure-token-approval.ts","../../../src/evm/actions/create-cow-sell-trade.ts","../../../src/evm/vaults/sdai-vault.ts","../../../src/evm/token-prices.ts","../../../src/evm/curve/curve-gauge-abi.ts","../../../src/evm/uniswap-permit2.ts"],"sourcesContent":["/* eslint-disable */\nimport * as invariantModule from 'tiny-invariant';\nconst invariant = (invariantModule as any).default || invariantModule;\n\nexport { invariant };\n","import { z } from 'zod';\nimport type { Currency } from './currency-type.js';\nimport type { Token } from './token.js';\nimport { invariant } from '../../utils.js';\nimport { type Address, isAddress } from 'viem';\n\nexport type BaseCurrencyParams = {\n  chainId: number;\n  decimals: number;\n  symbol: string;\n  name: string;\n};\n\nexport const SerializableErc20TokenTypeSchema = z.object({\n  address: z.string().refine(isAddress, { message: 'Invalid address' }),\n  chainId: z.number().refine(Number.isSafeInteger, {\n    message: 'Invalid chain ID',\n  }),\n  decimals: z.number().refine(Number.isInteger, {\n    message: 'Invalid decimals',\n  }),\n  name: z.string().refine((val) => val.length > 0, { message: 'Invalid name' }),\n  symbol: z.string().refine((val) => val.length > 0, {\n    message: 'Invalid symbol',\n  }),\n});\n\nexport type SerializableErc20TokenType = z.infer<typeof SerializableErc20TokenTypeSchema>;\n\n/**\n * A currency is any fungible financial instrument, including Ether, all ERC20 tokens, and other chain-native currencies\n */\nexport abstract class BaseCurrency {\n  /**\n   * Returns whether the currency is native to the chain and must be wrapped (e.g. Ether)\n   */\n  public abstract readonly isNative: boolean;\n  /**\n   * Returns whether the currency is a token that is usable in Uniswap without wrapping\n   */\n  public abstract readonly isToken: boolean;\n\n  /**\n   * The chain ID on which this currency resides\n   */\n  public readonly chainId: number;\n  /**\n   * The decimals used in representing currency amounts\n   */\n  public readonly decimals: number;\n  /**\n   * The symbol of the currency, i.e. a short textual non-unique identifier\n   */\n  public readonly symbol: string;\n  /**\n   * The name of the currency, i.e. a descriptive textual non-unique identifier\n   */\n  public readonly name: string;\n\n  /**\n   * Constructs an instance of the base class `BaseCurrency`.\n   * @param chainId the chain ID on which this currency resides\n   * @param decimals decimals of the currency\n   * @param symbol symbol of the currency\n   * @param name of the currency\n   */\n  protected constructor(params: BaseCurrencyParams) {\n    const { chainId, decimals, symbol, name } = params;\n\n    invariant(Number.isSafeInteger(chainId), 'CHAIN_ID');\n    invariant(decimals >= 0 && decimals < 255 && Number.isInteger(decimals), 'DECIMALS');\n\n    this.chainId = chainId;\n    this.decimals = decimals;\n    this.symbol = symbol;\n    this.name = name;\n  }\n\n  /**\n   * Returns whether this currency is functionally equivalent to the other currency\n   * @param other the other currency\n   */\n  public abstract equals(other: Currency): boolean;\n\n  /**\n   * Return the wrapped version of this currency that can be used with the Uniswap contracts. Currencies must\n   * implement this to be used in Uniswap\n   */\n  public abstract get wrapped(): Token;\n\n  /**\n   * Return the object representation of the currency\n   */\n  public abstract toObject(): SerializableErc20TokenType;\n}\n","import { isAddressEqual } from 'viem';\nimport type { BaseCurrencyParams, SerializableErc20TokenType } from './base-currency.js';\nimport type { Currency } from './currency-type.js';\nimport { BaseCurrency } from './base-currency.js';\nimport { invariant } from '../../utils.js';\n\n/**\n * Parameters for creating a token\n */\ntype TokenParams = BaseCurrencyParams & {\n  address: `0x${string}`;\n};\n\n/**\n * Represents an ERC20 token with a unique address and some metadata.\n */\nexport class Token extends BaseCurrency {\n  public readonly isNative: false = false as const;\n  public readonly isToken: true = true as const;\n\n  /**\n   * The contract address on the chain on which this token lives\n   */\n  public readonly address: `0x${string}`;\n\n  /**\n   * @param chainId {@link BaseCurrency#chainId}\n   * @param address The contract address on the chain on which this token lives\n   * @param decimals {@link BaseCurrency#decimals}\n   * @param symbol {@link BaseCurrency#symbol}\n   * @param name {@link BaseCurrency#name}\n   * @param bypassChecksum If true it only checks for length === 42, startsWith 0x and contains only hex characters\n   */\n  public constructor(params: TokenParams) {\n    super(params);\n    this.address = params.address;\n  }\n\n  /**\n   * Returns true if the two tokens are equivalent, i.e. have the same chainId and address.\n   * @param other other token to compare\n   */\n  public equals(other: Currency): boolean {\n    return other.isToken && this.chainId === other.chainId && isAddressEqual(this.address, other.address);\n  }\n\n  /**\n   * Returns true if the address of this token sorts before the address of the other token\n   * @param other other token to compare\n   * @throws if the tokens have the same address\n   * @throws if the tokens are on different chains\n   */\n  public sortsBefore(other: Token): boolean {\n    invariant(this.chainId === other.chainId, 'DIFFERENT_CHAIN_IDS');\n    invariant(this.address !== other.address, 'DIFFERENT_ADDRESSES');\n    return this.address.toLowerCase() < other.address.toLowerCase();\n  }\n\n  /**\n   * Return this token, which does not need to be wrapped\n   */\n  public get wrapped(): Token {\n    return this;\n  }\n\n  /**\n   * Returns a serializable object representation of the token\n   */\n  public toObject(): SerializableErc20TokenType {\n    return {\n      address: this.address,\n      chainId: this.chainId,\n      decimals: this.decimals,\n      symbol: this.symbol,\n      name: this.name,\n    };\n  }\n\n  public static fromObject(object: SerializableErc20TokenType) {\n    return new Token({\n      address: object.address,\n      chainId: object.chainId,\n      decimals: object.decimals,\n      symbol: object.symbol,\n      name: object.name,\n    });\n  }\n}\n","import { z } from 'zod';\nimport { Token } from './token.js';\nimport type { Currency } from './currency-type.js';\nimport { formatUnits, parseUnits } from 'viem';\nimport { SerializableErc20TokenTypeSchema } from './base-currency.js';\n\nexport type TokenOrCurrency = Token | Currency;\n\n/**\n * Serializable currency amount schema\n */\nexport const SerializableCurrencyAmountTypeSchema = z.object({\n  amount: z.object({\n    raw: z.bigint(),\n    humanReadable: z.number(),\n  }),\n  currency: SerializableErc20TokenTypeSchema,\n});\n\n/**\n * A serializable currency amount\n */\nexport type SerializableCurrencyAmountType = z.infer<typeof SerializableCurrencyAmountTypeSchema>;\n\nexport class Amount<T extends TokenOrCurrency> {\n  public readonly currency: T;\n  public readonly rawAmount: bigint;\n\n  private constructor(currency: T, rawAmount: bigint) {\n    this.currency = currency;\n    this.rawAmount = rawAmount;\n  }\n\n  public static fromRawAmount<T extends TokenOrCurrency>(currency: T, rawAmount: bigint) {\n    return new Amount(currency, rawAmount);\n  }\n\n  /**\n   * Create an amount from a human readable amount\n   * @param currency - The currency to create the amount for\n   * @param humanReadableAmount - The human readable amount, can be a number or a string\n   * @returns The amount\n   */\n  public static fromHumanReadableAmount<T extends TokenOrCurrency>(currency: T, humanReadableAmount: number | string) {\n    return new Amount(currency, parseUnits(humanReadableAmount.toString(), currency.decimals));\n  }\n\n  public toRawAmount() {\n    return this.rawAmount;\n  }\n\n  /**\n   * Convert the amount to a human readable format\n   * @returns Human readable amount\n   */\n  public toHumanReadableAmountString() {\n    return formatUnits(this.rawAmount, this.currency.decimals);\n  }\n\n  /**\n   * Convert the amount to a human readable format\n   * @returns Human readable amount\n   */\n  public toHumanReadableAmount() {\n    return Number(this.toHumanReadableAmountString());\n  }\n\n  public get humanAmount() {\n    return this.toHumanReadableAmount();\n  }\n\n  public toObject(): SerializableCurrencyAmountType {\n    return {\n      amount: {\n        raw: this.rawAmount,\n        humanReadable: this.toHumanReadableAmount(),\n      },\n      currency: this.currency.toObject(),\n    };\n  }\n\n  public static fromObject<T extends TokenOrCurrency>(object: SerializableCurrencyAmountType) {\n    // validate the object\n    const validatedObject = SerializableCurrencyAmountTypeSchema.parse(object);\n\n    return new Amount(Token.fromObject(validatedObject.currency) as T, validatedObject.amount.raw);\n  }\n}\n","import { BaseCurrency, type SerializableErc20TokenType } from './base-currency.js';\n\n/**\n * The address of the native token on the Ethereum chain\n */\nexport const NATIVE_TOKEN_ADDRESS = '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee' as const;\n\ntype NativeCurrencyParamsType = {\n  chainId: number;\n  decimals: number;\n  symbol: string;\n  name: string;\n};\n\n/**\n * Represents the native currency of the chain on which it resides, e.g.\n */\nexport abstract class NativeCurrency extends BaseCurrency {\n  public readonly address = NATIVE_TOKEN_ADDRESS;\n  public readonly isNative: true = true as const;\n  public readonly isToken: false = false as const;\n\n  constructor(params: NativeCurrencyParamsType) {\n    super(params);\n  }\n}\n\nexport function nativeCurrencyToSerializableErc20TokenType(currency: NativeCurrency): SerializableErc20TokenType {\n  return {\n    address: currency.address,\n    chainId: currency.chainId,\n    decimals: currency.decimals,\n    symbol: currency.symbol,\n    name: currency.name,\n  };\n}\n","// A list of tokens that are commonly used in the DXdao ecosystem\nimport { gnosis, mainnet } from 'viem/chains';\nimport { Token } from './token.js';\n\nexport const USDC: Readonly<Record<number, Token>> = {\n  [mainnet.id]: new Token({\n    chainId: mainnet.id,\n    address: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',\n    decimals: 6,\n    symbol: 'USDC',\n    name: 'USD Coin',\n  }),\n  [gnosis.id]: new Token({\n    chainId: gnosis.id,\n    address: '0xDDAfbb505ad214D7b80b1f830fcCc89B60fb7A83',\n    decimals: 6,\n    symbol: 'USDC',\n    name: 'USD Coin',\n  }),\n};\n\nexport const USDT: Readonly<Record<number, Token>> = {\n  [mainnet.id]: new Token({\n    chainId: mainnet.id,\n    address: '0xdac17f958d2ee523a2206206994597c13d831ec7',\n    decimals: 6,\n    symbol: 'USDT',\n    name: 'Tether USD',\n  }),\n  [gnosis.id]: new Token({\n    chainId: gnosis.id,\n    address: '0x4ECaBa5870353805a9F068101A40E0f32ed605C6',\n    decimals: 6,\n    symbol: 'USDT',\n    name: 'Tether USD',\n  }),\n};\n\nexport const SETH2 = new Token({\n  chainId: mainnet.id,\n  address: '0xFe2e637202056d30016725477c5da089Ab0A043A',\n  decimals: 18,\n  symbol: 'sETH2',\n  name: 'sETH2',\n});\n\nexport const RETH2 = new Token({\n  chainId: mainnet.id,\n  address: '0x20bc832ca081b91433ff6c17f85701b6e92486c5',\n  decimals: 18,\n  symbol: 'rETH2',\n  name: 'rETH2',\n});\n\nexport const WETH: Readonly<Record<number, Token>> = {\n  [mainnet.id]: new Token({\n    chainId: mainnet.id,\n    address: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',\n    decimals: 18,\n    symbol: 'WETH',\n    name: 'Wrapped Ether',\n  }),\n  [gnosis.id]: new Token({\n    chainId: gnosis.id,\n    address: '0x6A023CCd1ff6F2045C3309768eAd9E68F978f6e1',\n    decimals: 18,\n    symbol: 'WETH',\n    name: 'Wrapped Ether',\n  }),\n};\n\nexport const wstETH: Readonly<Record<number, Token>> = {\n  [mainnet.id]: new Token({\n    address: '0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0',\n    symbol: 'wstETH',\n    name: 'Wrapped liquid staked Ether 2.0',\n    decimals: 18,\n    chainId: mainnet.id,\n  }),\n  [gnosis.id]: new Token({\n    address: '0x6c76971f98945ae98dd7d4dfca8711ebea946ea6',\n    symbol: 'wstETH',\n    name: 'Wrapped liquid staked Ether 2.0 from Mainnet',\n    decimals: 18,\n    chainId: gnosis.id,\n  }),\n};\n\nexport const WXDAI = new Token({\n  chainId: gnosis.id,\n  address: '0xe91D153E0b41518A2Ce8Dd3D7944Fa863463a97d',\n  decimals: 18,\n  symbol: 'WXDAI',\n  name: 'Wrapped xDAI',\n});\n\nexport const DAI = new Token({\n  chainId: mainnet.id,\n  address: '0x6B175474E89094C44Da98b954EedeAC495271d0F',\n  decimals: 18,\n  symbol: 'DAI',\n  name: 'Dai Stablecoin',\n});\n\nexport const GNO: Readonly<Record<number, Token>> = {\n  [mainnet.id]: new Token({\n    chainId: mainnet.id,\n    address: '0x6810e776880c02933d47db1b9fc05908e5386b96',\n    decimals: 18,\n    symbol: 'GNO',\n    name: 'Gnosis',\n  }),\n  [gnosis.id]: new Token({\n    chainId: gnosis.id,\n    address: '0x9c58bacc331c9aa871afd802db6379a98e80cedb',\n    decimals: 18,\n    symbol: 'GNO',\n    name: 'Gnosis',\n  }),\n};\n\nexport const OLAS: Record<number, Token> = {\n  [mainnet.id]: new Token({\n    chainId: mainnet.id,\n    address: '0x0001A500A6B18995B03f44bb040A5fFc28E45CB0',\n    decimals: 18,\n    symbol: 'OLAS',\n    name: 'Olas',\n  }),\n  [gnosis.id]: new Token({\n    chainId: gnosis.id,\n    address: '0xce11e14225575945b8e6dc0d4f2dd4c570f79d9f',\n    decimals: 18,\n    symbol: 'OLAS',\n    name: 'Olas',\n  }),\n};\n\nexport const COW: Readonly<Record<number, Token>> = {\n  [mainnet.id]: new Token({\n    chainId: mainnet.id,\n    address: '0xdef1ca1fb7fbcdc777520aa7f396b4e015f497ab',\n    decimals: 18,\n    symbol: 'COW',\n    name: 'COW',\n  }),\n  [gnosis.id]: new Token({\n    chainId: gnosis.id,\n    address: '0x177127622c4a00f3d409b75571e12cb3c8973d3c',\n    decimals: 18,\n    symbol: 'COW',\n    name: 'COW',\n  }),\n};\n\nexport const SAFE: Readonly<Record<number, Token>> = {\n  [mainnet.id]: new Token({\n    chainId: mainnet.id,\n    address: '0x5afe3855358e112b5647b952709e6165e1c1eeee',\n    decimals: 18,\n    symbol: 'SAFE',\n    name: 'Safe',\n  }),\n  [gnosis.id]: new Token({\n    chainId: gnosis.id,\n    address: '0x4d18815d14fe5c3304e87b3fa18318baa5c23820',\n    decimals: 18,\n    symbol: 'SAFE',\n    name: 'Safe',\n  }),\n};\n\nexport const sDAI: Readonly<Record<number, Token>> = {\n  [mainnet.id]: new Token({\n    chainId: mainnet.id,\n    address: '0x83F20F44975D03b1b09e64809B757c47f942BEeA',\n    decimals: 18,\n    symbol: 'sDAI',\n    name: 'sDAI',\n  }),\n  [gnosis.id]: new Token({\n    chainId: gnosis.id,\n    address: '0xaf204776c7245bf4147c2612bf6e5972ee483701',\n    decimals: 18,\n    symbol: 'sDAI',\n    name: 'sDAI',\n  }),\n};\n\n/**\n * USDCe is the USDC token on the Gnosis chain.\n * It is bridged from the Ethereum chain.\n */\nexport const USDCe = new Token({\n  address: '0x2a22f9c3b484c3629090feed35f17ff8f88f76f0',\n  symbol: 'USDC.e',\n  name: 'Bridged USDC (Gnosis)',\n  decimals: 6,\n  chainId: gnosis.id,\n});\n\nexport const legacyEURe = new Token({\n  symbol: 'EURe',\n  name: 'Monerium EUR emoney',\n  address: '0xcB444e90D8198415266c6a2724b7900fb12FC56E',\n  decimals: 18,\n  chainId: gnosis.id,\n});\n\n/**\n * Monerium EURe\n */\nexport const moneriumEURe: Readonly<Record<number, Token>> = {\n  [mainnet.id]: new Token({\n    symbol: 'EURe',\n    name: 'Monerium EURe',\n    address: '0x39b8B6385416f4cA36a20319F70D28621895279D',\n    decimals: 18,\n    chainId: mainnet.id,\n  }),\n  [gnosis.id]: new Token({\n    symbol: 'EURe',\n    name: 'Monerium EURe',\n    address: '0x420CA0f9B9b604cE0fd9C18EF134C705e5Fa3430',\n    decimals: 18,\n    chainId: gnosis.id,\n  }),\n};\n\n/**\n * Monerium GBPe\n */\nexport const moneriumGBPe: Readonly<Record<number, Token>> = {\n  [mainnet.id]: new Token({\n    address: '0x78a20B7AF85156B4389a349Aa4c96efC2E509768',\n    symbol: 'GBPe',\n    name: 'Monerium GBP emoney',\n    decimals: 18,\n    chainId: mainnet.id,\n  }),\n  [gnosis.id]: new Token({\n    address: '0x8E34bfEC4f6Eb781f9743D9b4af99CD23F9b7053',\n    symbol: 'GBPe',\n    name: 'Monerium GBP emoney',\n    decimals: 18,\n    chainId: gnosis.id,\n  }),\n};\n\nexport const osGNO = new Token({\n  address: '0xf490c80aae5f2616d3e3bda2483e30c4cb21d1a0',\n  symbol: 'osGNO',\n  name: 'Staked GNO',\n  decimals: 18,\n  chainId: gnosis.id,\n});\n\nexport const BRLA = new Token({\n  chainId: gnosis.id,\n  address: '0xfecb3f7c54e2caae9dc6ac9060a822d47e053760',\n  symbol: 'BRLA',\n  name: 'BRLA Token',\n  decimals: 18,\n});\n\nexport const bTSLA = new Token({\n  address: '0x14a5f2872396802c3cc8942a39ab3e4118ee5038',\n  symbol: 'bTSLA',\n  name: 'Backed Tesla',\n  decimals: 18,\n  chainId: gnosis.id,\n});\n\nexport const bNVDA = new Token({\n  chainId: gnosis.id,\n  address: '0xa34c5e0abe843e10461e2c9586ea03e55dbcc495',\n  decimals: 18,\n  symbol: 'bNVDA',\n  name: 'Backed NVIDIA',\n});\n\nexport const bCSPX = new Token({\n  address: '0x1e2c4fb7ede391d116e6b41cd0608260e8801d59',\n  symbol: 'bCSPX',\n  name: 'Backed CSPX S&P 500',\n  decimals: 18,\n  chainId: gnosis.id,\n});\n\nexport const bMSTR = new Token({\n  address: '0xac28c9178acc8ba4a11a29e013a3a2627086e422',\n  symbol: 'bMSTR',\n  name: 'Backed Strategy',\n  decimals: 18,\n  chainId: gnosis.id,\n});\n\nexport const bCOIN = new Token({\n  address: '0xbbcb0356bb9e6b3faa5cbf9e5f36185d53403ac9',\n  symbol: 'bCOIN',\n  name: 'Backed Coinbase',\n  decimals: 18,\n  chainId: gnosis.id,\n});\n\nexport const BAL: Readonly<Record<number, Token>> = {\n  [gnosis.id]: new Token({\n    address: '0x7ef541e2a22058048904fe5744f9c7e4c57af717',\n    symbol: 'BAL',\n    name: 'Balancer',\n    decimals: 18,\n    chainId: gnosis.id,\n  }),\n};\n\nexport const backedTokens = {\n  bCSPX,\n  bTSLA,\n  bCOIN,\n  bMSTR,\n  bNVDA,\n};\n","import type { Currency } from './currency-type.js';\nimport { NativeCurrency, nativeCurrencyToSerializableErc20TokenType } from './native-currency.js';\nimport { WETH } from './common-tokens.js';\nimport type { SerializableErc20TokenType } from './base-currency.js';\n\n/**\n * Ether is the main usage of a 'native' currency, i.e. for Ethereum mainnet and all testnets\n */\nexport class Ether extends NativeCurrency {\n  protected constructor(chainId: number) {\n    super({\n      chainId,\n      decimals: 18,\n      symbol: 'ETH',\n      name: 'Ether',\n    });\n  }\n\n  get wrapped() {\n    const chainId = this.chainId;\n    const weth = WETH[chainId];\n    if (!weth) {\n      throw new Error(`No WETH available on chain ${chainId}`);\n    }\n\n    return weth;\n  }\n\n  private static _etherCache: { [chainId: number]: Ether } = {};\n\n  static onChain(chainId: number): Ether {\n    return this._etherCache[chainId] || (this._etherCache[chainId] = new Ether(chainId));\n  }\n\n  /**\n   * Returns true if the two tokens are equivalent, i.e. have the same chainId and address.\n   * @param other other token to compare\n   */\n  public equals(other: Currency): boolean {\n    return other.isNative && this.chainId === other.chainId && this.address === other.address;\n  }\n\n  public toObject(): SerializableErc20TokenType {\n    return nativeCurrencyToSerializableErc20TokenType(this);\n  }\n}\n","import type { Currency } from './currency-type.js';\nimport { NativeCurrency, nativeCurrencyToSerializableErc20TokenType } from './native-currency.js';\nimport { WXDAI } from './common-tokens.js';\nimport type { SerializableErc20TokenType } from './base-currency.js';\n\n/**\n * xDAI is the native currency of the Gnosis Chain chain\n */\nclass xDAICurrency extends NativeCurrency {\n  constructor() {\n    super({\n      chainId: 100,\n      decimals: 18,\n      symbol: 'xDAI',\n      name: 'xDAI',\n    });\n  }\n\n  get wrapped() {\n    return WXDAI;\n  }\n\n  /**\n   * Returns true if the two tokens are equivalent, i.e. have the same chainId and address.\n   * @param other other token to compare\n   */\n  public equals(other: Currency): boolean {\n    return other.isNative && this.chainId === other.chainId && this.address === other.address;\n  }\n\n  public toObject(): SerializableErc20TokenType {\n    return nativeCurrencyToSerializableErc20TokenType(this);\n  }\n}\n\nexport const xDAI = new xDAICurrency();\n","import { erc20Abi, getContract, type Address, type PublicActions, type WalletClient } from 'viem';\n\ntype EnsureTokenApprovalDependencies = {\n  client: WalletClient & PublicActions;\n};\n\ntype EnsureTokenApprovalParams = {\n  tokenAddress: Address;\n  spenderAddress: Address;\n  amount: bigint;\n};\n\ntype EnsureTokenApprovalReturnType = {\n  spenderAddress: Address;\n  approved: boolean;\n  transactionHash?: `0x${string}`;\n  previousAllowance: bigint;\n  newAllowance: bigint;\n  wasAlreadyApproved: boolean;\n};\n\n/**\n * Ensures that the token is approved for the spender to spend the amount.\n * If the token is already approved for the amount, this function does nothing.\n * If the token is not approved for the amount, this function approves the token for the spender to spend the amount.\n *\n * @param dependencies - The dependencies for the function.\n * @param params - The parameters for the function.\n * @returns A promise that resolves with the approval result details.\n */\nexport async function ensureTokenApproval(\n  dependencies: EnsureTokenApprovalDependencies,\n  params: EnsureTokenApprovalParams,\n): Promise<EnsureTokenApprovalReturnType> {\n  const { client } = dependencies;\n  const { tokenAddress, spenderAddress, amount } = params;\n\n  if (!client.account) {\n    throw new Error('Wallet client account not found for approval');\n  }\n\n  const tokenContract = getContract({\n    abi: erc20Abi,\n    address: tokenAddress,\n    client,\n  });\n\n  const currentAllowance = await tokenContract.read.allowance([client.account.address, spenderAddress]);\n\n  if (currentAllowance >= amount) {\n    return {\n      spenderAddress,\n      approved: true,\n      previousAllowance: currentAllowance,\n      newAllowance: currentAllowance,\n      wasAlreadyApproved: true,\n    };\n  }\n\n  const approveTxHash = await tokenContract.write.approve([spenderAddress, amount], {\n    account: client.account,\n    chain: client.chain,\n  });\n\n  await client.waitForTransactionReceipt({ hash: approveTxHash });\n\n  return {\n    spenderAddress,\n    approved: true,\n    transactionHash: approveTxHash,\n    previousAllowance: currentAllowance,\n    newAllowance: amount,\n    wasAlreadyApproved: false,\n  };\n}\n","import {\n  type EnrichedOrder,\n  getQuote,\n  type OrderCreation,\n  OrderKind,\n  OrderStatus,\n  type QuoteResults,\n  SigningScheme,\n} from '@cowprotocol/cow-sdk';\nimport {\n  type Account,\n  type Chain,\n  maxUint256,\n  parseUnits,\n  type PublicActions,\n  type Transport,\n  type WalletClient,\n} from 'viem';\nimport { ensureTokenApproval } from './ensure-token-approval.js';\nimport type { SerializableErc20TokenType } from '../currencies/base-currency.js';\n\ntype CreateCoWSellTradeDeps = {\n  walletClient: WalletClient<Transport, Chain, Account> & PublicActions;\n};\n\ntype CreateCoWSellTradeParams = {\n  sellTokenAmount: number;\n  sellToken: SerializableErc20TokenType;\n  buyToken: SerializableErc20TokenType;\n};\n\nconst vaultRelayerAddress = '0xC92E8bdf79f0507f65a392b0ab4667716BFE0110' as const;\nconst defaultAppData = '0x0000000000000000000000000000000000000000000000000000000000000000' as `0x${string}`;\n\ntype CreateCoWSellTradeReturnType = {\n  quote: QuoteResults;\n  execute(): Promise<EnrichedOrder>;\n};\n\nexport async function createCowSellTrade(\n  deps: CreateCoWSellTradeDeps,\n  params: CreateCoWSellTradeParams,\n): Promise<CreateCoWSellTradeReturnType> {\n  const { walletClient } = deps;\n  const { sellTokenAmount, sellToken, buyToken } = params;\n\n  if (!walletClient.account) {\n    throw new Error('No account found in wallet client');\n  }\n\n  if (sellToken.address === buyToken.address) {\n    throw new Error('Sell token and buy token cannot be the same');\n  }\n\n  if (sellToken.chainId !== buyToken.chainId) {\n    throw new Error('Sell token and buy token must be on the same chain');\n  }\n\n  const { result: cowGetQuoteResult, orderBookApi } = await getQuote(\n    {\n      amount: parseUnits(sellTokenAmount.toString(), sellToken.decimals).toString(),\n      sellToken: sellToken.address,\n      buyToken: buyToken.address,\n      kind: OrderKind.SELL,\n      receiver: walletClient.account.address,\n      sellTokenDecimals: sellToken.decimals,\n      buyTokenDecimals: buyToken.decimals,\n    },\n    {\n      account: walletClient.account.address,\n      chainId: sellToken.chainId,\n      appCode: defaultAppData,\n    },\n  );\n\n  async function execute(): Promise<EnrichedOrder> {\n    // Ensure allowance is set for the sell token\n    await ensureTokenApproval(\n      {\n        client: walletClient,\n      },\n      {\n        tokenAddress: sellToken.address,\n        spenderAddress: vaultRelayerAddress,\n        amount: maxUint256,\n      },\n    );\n\n    const orderTypedData = {\n      ...cowGetQuoteResult.orderTypedData,\n      message: {\n        ...cowGetQuoteResult.orderTypedData.message,\n        appData: defaultAppData,\n      },\n    };\n\n    const signature = await walletClient.signTypedData(orderTypedData as any);\n\n    const sendOrderParams: OrderCreation = {\n      ...orderTypedData.message,\n      signature,\n      signingScheme: SigningScheme.EIP712,\n    };\n\n    const orderId = await orderBookApi.sendOrder(sendOrderParams);\n\n    // wait for the order to be filled\n    let order = await orderBookApi.getOrder(orderId);\n    while (order.status !== OrderStatus.FULFILLED) {\n      await new Promise((resolve) => setTimeout(resolve, 5000)); // wait 5 seconds before checking again\n      order = await orderBookApi.getOrder(orderId);\n    }\n\n    return order;\n  }\n\n  return {\n    quote: cowGetQuoteResult,\n    execute,\n  };\n}\n","import { type PublicClient, type Transport } from 'viem';\nimport { gnosis } from 'viem/chains';\nimport { Amount } from '../currencies/currency-amount.js';\nimport type { Token } from '../currencies/token.js';\nimport { sDAI } from '../currencies/common-tokens.js';\n\nexport type GnosisChainPublicClient = PublicClient<Transport, typeof gnosis>;\n\n/**\n * The address of the SDAI rate provider on the Gnosis chain.\n */\nexport const SDAI_RATE_PROVIDER = '0x89C80A4540A00b5270347E02e2E144c71da2EceD' as const;\n\nexport const GNOSIS_CHAIN_SDAI_ADAPTER_ADDRESS = '0xd499b51fcfc66bd31248ef4b28d656d67e591a94' as const;\n\nexport const GNOSIS_CHAIN_SDAI_ADAPTER_ABI = [\n  {\n    inputs: [\n      {\n        internalType: 'address',\n        name: 'interestReceiver_',\n        type: 'address',\n      },\n      { internalType: 'address payable', name: 'sDAI_', type: 'address' },\n    ],\n    stateMutability: 'nonpayable',\n    type: 'constructor',\n  },\n  {\n    inputs: [\n      { internalType: 'uint256', name: 'assets', type: 'uint256' },\n      { internalType: 'address', name: 'receiver', type: 'address' },\n    ],\n    name: 'deposit',\n    outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n    stateMutability: 'nonpayable',\n    type: 'function',\n  },\n  {\n    inputs: [\n      {\n        internalType: 'address',\n        name: 'receiver',\n        type: 'address',\n      },\n    ],\n    name: 'depositXDAI',\n    outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n    stateMutability: 'payable',\n    type: 'function',\n  },\n  {\n    inputs: [],\n    name: 'interestReceiver',\n    outputs: [\n      {\n        internalType: 'contract IBridgeInterestReceiver',\n        name: '',\n        type: 'address',\n      },\n    ],\n    stateMutability: 'view',\n    type: 'function',\n  },\n  {\n    inputs: [\n      { internalType: 'uint256', name: 'shares', type: 'uint256' },\n      { internalType: 'address', name: 'receiver', type: 'address' },\n    ],\n    name: 'mint',\n    outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n    stateMutability: 'nonpayable',\n    type: 'function',\n  },\n  {\n    inputs: [\n      { internalType: 'uint256', name: 'shares', type: 'uint256' },\n      { internalType: 'address', name: 'receiver', type: 'address' },\n    ],\n    name: 'redeem',\n    outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n    stateMutability: 'nonpayable',\n    type: 'function',\n  },\n  {\n    inputs: [\n      {\n        internalType: 'address',\n        name: 'receiver',\n        type: 'address',\n      },\n    ],\n    name: 'redeemAll',\n    outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n    stateMutability: 'nonpayable',\n    type: 'function',\n  },\n  {\n    inputs: [\n      {\n        internalType: 'address',\n        name: 'receiver',\n        type: 'address',\n      },\n    ],\n    name: 'redeemAllXDAI',\n    outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n    stateMutability: 'payable',\n    type: 'function',\n  },\n  {\n    inputs: [\n      { internalType: 'uint256', name: 'shares', type: 'uint256' },\n      { internalType: 'address', name: 'receiver', type: 'address' },\n    ],\n    name: 'redeemXDAI',\n    outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n    stateMutability: 'payable',\n    type: 'function',\n  },\n  {\n    inputs: [],\n    name: 'sDAI',\n    outputs: [\n      {\n        internalType: 'contract SavingsXDai',\n        name: '',\n        type: 'address',\n      },\n    ],\n    stateMutability: 'view',\n    type: 'function',\n  },\n  {\n    inputs: [],\n    name: 'vaultAPY',\n    outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n    stateMutability: 'view',\n    type: 'function',\n  },\n  {\n    inputs: [\n      { internalType: 'uint256', name: 'assets', type: 'uint256' },\n      { internalType: 'address', name: 'receiver', type: 'address' },\n    ],\n    name: 'withdraw',\n    outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n    stateMutability: 'nonpayable',\n    type: 'function',\n  },\n  {\n    inputs: [\n      { internalType: 'uint256', name: 'assets', type: 'uint256' },\n      { internalType: 'address', name: 'receiver', type: 'address' },\n    ],\n    name: 'withdrawXDAI',\n    outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n    stateMutability: 'payable',\n    type: 'function',\n  },\n  {\n    inputs: [],\n    name: 'wxdai',\n    outputs: [\n      {\n        internalType: 'contract IWXDAI',\n        name: '',\n        type: 'address',\n      },\n    ],\n    stateMutability: 'view',\n    type: 'function',\n  },\n  { stateMutability: 'payable', type: 'receive' },\n] as const;\n\nexport const SDAI_RATE_PROVIDER_ABI = [\n  {\n    inputs: [\n      {\n        internalType: 'contract IERC4626',\n        name: '_erc4626',\n        type: 'address',\n      },\n    ],\n    stateMutability: 'nonpayable',\n    type: 'constructor',\n  },\n  {\n    inputs: [],\n    name: 'baseDecimals',\n    outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n    stateMutability: 'view',\n    type: 'function',\n  },\n  {\n    inputs: [],\n    name: 'erc4626',\n    outputs: [{ internalType: 'contract IERC4626', name: '', type: 'address' }],\n    stateMutability: 'view',\n    type: 'function',\n  },\n  {\n    inputs: [],\n    name: 'getRate',\n    outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n    stateMutability: 'view',\n    type: 'function',\n  },\n] as const;\n\n// Get sDAI rate from its rate provider\nexport async function getSdaiRate({ client }: { client: GnosisChainPublicClient }): Promise<Amount<Token>> {\n  const rateRaw = await client.readContract({\n    address: SDAI_RATE_PROVIDER,\n    abi: SDAI_RATE_PROVIDER_ABI,\n    functionName: 'getRate',\n  });\n\n  const returnValue = Amount.fromRawAmount(sDAI[gnosis.id], rateRaw);\n  return returnValue;\n}\n","import { getToken } from '@lifi/sdk';\nimport retry from 'async-retry';\nimport { type Address } from 'viem';\n\n/**\n * Get token price information from LiFi with caching\n * @param chainId - The chain ID\n * @param tokenAddress - The token address\n * @returns The token price information\n */\nexport async function getTokenPrice(chainId: number, tokenAddress: Address): Promise<number> {\n  const tokenInfo = await retry(\n    async (bail) => {\n      try {\n        return await getToken(chainId, tokenAddress);\n      } catch (error) {\n        if (error instanceof Error && error.message.includes('404')) {\n          bail(error);\n        }\n        throw error;\n      }\n    },\n    {\n      retries: 3,\n      minTimeout: 1000,\n      maxTimeout: 5000,\n    },\n  );\n\n  if (!tokenInfo) {\n    throw new Error(`Token not found for ${tokenAddress} on chain ${chainId}`);\n  }\n\n  return Number(tokenInfo.priceUSD);\n}\n","export const CURVE_POOL_GAUGE_ABI = [\n  {\n    name: 'Approval',\n    inputs: [\n      { name: '_owner', type: 'address', indexed: true },\n      { name: '_spender', type: 'address', indexed: true },\n      { name: '_value', type: 'uint256', indexed: false },\n    ],\n    anonymous: false,\n    type: 'event',\n  },\n  {\n    name: 'Transfer',\n    inputs: [\n      { name: '_from', type: 'address', indexed: true },\n      { name: '_to', type: 'address', indexed: true },\n      { name: '_value', type: 'uint256', indexed: false },\n    ],\n    anonymous: false,\n    type: 'event',\n  },\n  {\n    name: 'Deposit',\n    inputs: [\n      { name: '_user', type: 'address', indexed: true },\n      { name: '_value', type: 'uint256', indexed: false },\n    ],\n    anonymous: false,\n    type: 'event',\n  },\n  {\n    name: 'Withdraw',\n    inputs: [\n      { name: '_user', type: 'address', indexed: true },\n      { name: '_value', type: 'uint256', indexed: false },\n    ],\n    anonymous: false,\n    type: 'event',\n  },\n  {\n    name: 'UpdateLiquidityLimit',\n    inputs: [\n      { name: '_user', type: 'address', indexed: true },\n      { name: '_original_balance', type: 'uint256', indexed: false },\n      { name: '_original_supply', type: 'uint256', indexed: false },\n      { name: '_working_balance', type: 'uint256', indexed: false },\n      { name: '_working_supply', type: 'uint256', indexed: false },\n    ],\n    anonymous: false,\n    type: 'event',\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'constructor',\n    inputs: [\n      { name: '_crv_token', type: 'address' },\n      { name: '_factory', type: 'address' },\n    ],\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    name: 'deposit',\n    inputs: [{ name: '_value', type: 'uint256' }],\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    name: 'deposit',\n    inputs: [\n      { name: '_value', type: 'uint256' },\n      { name: '_user', type: 'address' },\n    ],\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    name: 'deposit',\n    inputs: [\n      { name: '_value', type: 'uint256' },\n      { name: '_user', type: 'address' },\n      { name: '_claim_rewards', type: 'bool' },\n    ],\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    name: 'withdraw',\n    inputs: [{ name: '_value', type: 'uint256' }],\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    name: 'withdraw',\n    inputs: [\n      { name: '_value', type: 'uint256' },\n      { name: '_user', type: 'address' },\n    ],\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    name: 'withdraw',\n    inputs: [\n      { name: '_value', type: 'uint256' },\n      { name: '_user', type: 'address' },\n      { name: '_claim_rewards', type: 'bool' },\n    ],\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    name: 'transferFrom',\n    inputs: [\n      { name: '_from', type: 'address' },\n      { name: '_to', type: 'address' },\n      { name: '_value', type: 'uint256' },\n    ],\n    outputs: [{ name: '', type: 'bool' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    name: 'approve',\n    inputs: [\n      { name: '_spender', type: 'address' },\n      { name: '_value', type: 'uint256' },\n    ],\n    outputs: [{ name: '', type: 'bool' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    name: 'permit',\n    inputs: [\n      { name: '_owner', type: 'address' },\n      { name: '_spender', type: 'address' },\n      { name: '_value', type: 'uint256' },\n      { name: '_deadline', type: 'uint256' },\n      { name: '_v', type: 'uint8' },\n      { name: '_r', type: 'bytes32' },\n      { name: '_s', type: 'bytes32' },\n    ],\n    outputs: [{ name: '', type: 'bool' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    name: 'transfer',\n    inputs: [\n      { name: '_to', type: 'address' },\n      { name: '_value', type: 'uint256' },\n    ],\n    outputs: [{ name: '', type: 'bool' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    name: 'increaseAllowance',\n    inputs: [\n      { name: '_spender', type: 'address' },\n      { name: '_added_value', type: 'uint256' },\n    ],\n    outputs: [{ name: '', type: 'bool' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    name: 'decreaseAllowance',\n    inputs: [\n      { name: '_spender', type: 'address' },\n      { name: '_subtracted_value', type: 'uint256' },\n    ],\n    outputs: [{ name: '', type: 'bool' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    name: 'user_checkpoint',\n    inputs: [{ name: 'addr', type: 'address' }],\n    outputs: [{ name: '', type: 'bool' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    name: 'claimable_tokens',\n    inputs: [{ name: 'addr', type: 'address' }],\n    outputs: [{ name: '', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    name: 'claimed_reward',\n    inputs: [\n      { name: '_addr', type: 'address' },\n      { name: '_token', type: 'address' },\n    ],\n    outputs: [{ name: '', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    name: 'claimable_reward',\n    inputs: [\n      { name: '_user', type: 'address' },\n      { name: '_reward_token', type: 'address' },\n    ],\n    outputs: [{ name: '', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    name: 'set_rewards_receiver',\n    inputs: [{ name: '_receiver', type: 'address' }],\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    name: 'claim_rewards',\n    inputs: [],\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    name: 'claim_rewards',\n    inputs: [{ name: '_addr', type: 'address' }],\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    name: 'claim_rewards',\n    inputs: [\n      { name: '_addr', type: 'address' },\n      { name: '_receiver', type: 'address' },\n    ],\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    name: 'add_reward',\n    inputs: [\n      { name: '_reward_token', type: 'address' },\n      { name: '_distributor', type: 'address' },\n    ],\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    name: 'set_reward_distributor',\n    inputs: [\n      { name: '_reward_token', type: 'address' },\n      { name: '_distributor', type: 'address' },\n    ],\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    name: 'deposit_reward_token',\n    inputs: [\n      { name: '_reward_token', type: 'address' },\n      { name: '_amount', type: 'uint256' },\n    ],\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    name: 'set_manager',\n    inputs: [{ name: '_manager', type: 'address' }],\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    name: 'update_voting_escrow',\n    inputs: [],\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    name: 'set_killed',\n    inputs: [{ name: '_is_killed', type: 'bool' }],\n    outputs: [],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    name: 'decimals',\n    inputs: [],\n    outputs: [{ name: '', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    name: 'integrate_checkpoint',\n    inputs: [],\n    outputs: [{ name: '', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    name: 'version',\n    inputs: [],\n    outputs: [{ name: '', type: 'string' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    name: 'factory',\n    inputs: [],\n    outputs: [{ name: '', type: 'address' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    name: 'initialize',\n    inputs: [\n      { name: '_lp_token', type: 'address' },\n      { name: '_manager', type: 'address' },\n    ],\n    outputs: [],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    name: 'DOMAIN_SEPARATOR',\n    inputs: [],\n    outputs: [{ name: '', type: 'bytes32' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    name: 'nonces',\n    inputs: [{ name: 'arg0', type: 'address' }],\n    outputs: [{ name: '', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    name: 'name',\n    inputs: [],\n    outputs: [{ name: '', type: 'string' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    name: 'symbol',\n    inputs: [],\n    outputs: [{ name: '', type: 'string' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    name: 'allowance',\n    inputs: [\n      { name: 'arg0', type: 'address' },\n      { name: 'arg1', type: 'address' },\n    ],\n    outputs: [{ name: '', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    name: 'balanceOf',\n    inputs: [{ name: 'arg0', type: 'address' }],\n    outputs: [{ name: '', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    name: 'totalSupply',\n    inputs: [],\n    outputs: [{ name: '', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    name: 'lp_token',\n    inputs: [],\n    outputs: [{ name: '', type: 'address' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    name: 'manager',\n    inputs: [],\n    outputs: [{ name: '', type: 'address' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    name: 'voting_escrow',\n    inputs: [],\n    outputs: [{ name: '', type: 'address' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    name: 'working_balances',\n    inputs: [{ name: 'arg0', type: 'address' }],\n    outputs: [{ name: '', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    name: 'working_supply',\n    inputs: [],\n    outputs: [{ name: '', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    name: 'period',\n    inputs: [],\n    outputs: [{ name: '', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    name: 'period_timestamp',\n    inputs: [{ name: 'arg0', type: 'uint256' }],\n    outputs: [{ name: '', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    name: 'integrate_checkpoint_of',\n    inputs: [{ name: 'arg0', type: 'address' }],\n    outputs: [{ name: '', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    name: 'integrate_fraction',\n    inputs: [{ name: 'arg0', type: 'address' }],\n    outputs: [{ name: '', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    name: 'integrate_inv_supply',\n    inputs: [{ name: 'arg0', type: 'uint256' }],\n    outputs: [{ name: '', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    name: 'integrate_inv_supply_of',\n    inputs: [{ name: 'arg0', type: 'address' }],\n    outputs: [{ name: '', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    name: 'reward_count',\n    inputs: [],\n    outputs: [{ name: '', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    name: 'reward_tokens',\n    inputs: [{ name: 'arg0', type: 'uint256' }],\n    outputs: [{ name: '', type: 'address' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    name: 'reward_data',\n    inputs: [{ name: 'arg0', type: 'address' }],\n    outputs: [\n      {\n        name: '',\n        type: 'tuple',\n        components: [\n          { name: 'distributor', type: 'address' },\n          { name: 'period_finish', type: 'uint256' },\n          { name: 'rate', type: 'uint256' },\n          { name: 'last_update', type: 'uint256' },\n          { name: 'integral', type: 'uint256' },\n        ],\n      },\n    ],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    name: 'rewards_receiver',\n    inputs: [{ name: 'arg0', type: 'address' }],\n    outputs: [{ name: '', type: 'address' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    name: 'reward_integral_for',\n    inputs: [\n      { name: 'arg0', type: 'address' },\n      { name: 'arg1', type: 'address' },\n    ],\n    outputs: [{ name: '', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    name: 'is_killed',\n    inputs: [],\n    outputs: [{ name: '', type: 'bool' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    name: 'inflation_rate',\n    inputs: [{ name: 'arg0', type: 'uint256' }],\n    outputs: [{ name: '', type: 'uint256' }],\n  },\n] as const;\n","export const uniswapPermit2Address = '0x000000000022D473030F116dDEE9F6B43aC78BA3' as const;\n\nexport const uniswapPermit2Abi = [\n  {\n    inputs: [{ internalType: 'uint256', name: 'deadline', type: 'uint256' }],\n    name: 'AllowanceExpired',\n    type: 'error',\n  },\n  { inputs: [], name: 'ExcessiveInvalidation', type: 'error' },\n  {\n    inputs: [{ internalType: 'uint256', name: 'amount', type: 'uint256' }],\n    name: 'InsufficientAllowance',\n    type: 'error',\n  },\n  {\n    inputs: [{ internalType: 'uint256', name: 'maxAmount', type: 'uint256' }],\n    name: 'InvalidAmount',\n    type: 'error',\n  },\n  { inputs: [], name: 'InvalidContractSignature', type: 'error' },\n  { inputs: [], name: 'InvalidNonce', type: 'error' },\n  { inputs: [], name: 'InvalidSignature', type: 'error' },\n  { inputs: [], name: 'InvalidSignatureLength', type: 'error' },\n  { inputs: [], name: 'InvalidSigner', type: 'error' },\n  { inputs: [], name: 'LengthMismatch', type: 'error' },\n  {\n    inputs: [\n      {\n        internalType: 'uint256',\n        name: 'signatureDeadline',\n        type: 'uint256',\n      },\n    ],\n    name: 'SignatureExpired',\n    type: 'error',\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        internalType: 'address',\n        name: 'owner',\n        type: 'address',\n      },\n      {\n        indexed: true,\n        internalType: 'address',\n        name: 'token',\n        type: 'address',\n      },\n      {\n        indexed: true,\n        internalType: 'address',\n        name: 'spender',\n        type: 'address',\n      },\n      {\n        indexed: false,\n        internalType: 'uint160',\n        name: 'amount',\n        type: 'uint160',\n      },\n      {\n        indexed: false,\n        internalType: 'uint48',\n        name: 'expiration',\n        type: 'uint48',\n      },\n    ],\n    name: 'Approval',\n    type: 'event',\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        internalType: 'address',\n        name: 'owner',\n        type: 'address',\n      },\n      {\n        indexed: false,\n        internalType: 'address',\n        name: 'token',\n        type: 'address',\n      },\n      {\n        indexed: false,\n        internalType: 'address',\n        name: 'spender',\n        type: 'address',\n      },\n    ],\n    name: 'Lockdown',\n    type: 'event',\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        internalType: 'address',\n        name: 'owner',\n        type: 'address',\n      },\n      {\n        indexed: true,\n        internalType: 'address',\n        name: 'token',\n        type: 'address',\n      },\n      {\n        indexed: true,\n        internalType: 'address',\n        name: 'spender',\n        type: 'address',\n      },\n      {\n        indexed: false,\n        internalType: 'uint48',\n        name: 'newNonce',\n        type: 'uint48',\n      },\n      {\n        indexed: false,\n        internalType: 'uint48',\n        name: 'oldNonce',\n        type: 'uint48',\n      },\n    ],\n    name: 'NonceInvalidation',\n    type: 'event',\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        internalType: 'address',\n        name: 'owner',\n        type: 'address',\n      },\n      {\n        indexed: true,\n        internalType: 'address',\n        name: 'token',\n        type: 'address',\n      },\n      {\n        indexed: true,\n        internalType: 'address',\n        name: 'spender',\n        type: 'address',\n      },\n      {\n        indexed: false,\n        internalType: 'uint160',\n        name: 'amount',\n        type: 'uint160',\n      },\n      {\n        indexed: false,\n        internalType: 'uint48',\n        name: 'expiration',\n        type: 'uint48',\n      },\n      { indexed: false, internalType: 'uint48', name: 'nonce', type: 'uint48' },\n    ],\n    name: 'Permit',\n    type: 'event',\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        internalType: 'address',\n        name: 'owner',\n        type: 'address',\n      },\n      {\n        indexed: false,\n        internalType: 'uint256',\n        name: 'word',\n        type: 'uint256',\n      },\n      {\n        indexed: false,\n        internalType: 'uint256',\n        name: 'mask',\n        type: 'uint256',\n      },\n    ],\n    name: 'UnorderedNonceInvalidation',\n    type: 'event',\n  },\n  {\n    inputs: [],\n    name: 'DOMAIN_SEPARATOR',\n    outputs: [{ internalType: 'bytes32', name: '', type: 'bytes32' }],\n    stateMutability: 'view',\n    type: 'function',\n  },\n  {\n    inputs: [\n      { internalType: 'address', name: '', type: 'address' },\n      { internalType: 'address', name: '', type: 'address' },\n      { internalType: 'address', name: '', type: 'address' },\n    ],\n    name: 'allowance',\n    outputs: [\n      { internalType: 'uint160', name: 'amount', type: 'uint160' },\n      { internalType: 'uint48', name: 'expiration', type: 'uint48' },\n      { internalType: 'uint48', name: 'nonce', type: 'uint48' },\n    ],\n    stateMutability: 'view',\n    type: 'function',\n  },\n  {\n    inputs: [\n      { internalType: 'address', name: 'token', type: 'address' },\n      { internalType: 'address', name: 'spender', type: 'address' },\n      { internalType: 'uint160', name: 'amount', type: 'uint160' },\n      { internalType: 'uint48', name: 'expiration', type: 'uint48' },\n    ],\n    name: 'approve',\n    outputs: [],\n    stateMutability: 'nonpayable',\n    type: 'function',\n  },\n  {\n    inputs: [\n      { internalType: 'address', name: 'token', type: 'address' },\n      { internalType: 'address', name: 'spender', type: 'address' },\n      { internalType: 'uint48', name: 'newNonce', type: 'uint48' },\n    ],\n    name: 'invalidateNonces',\n    outputs: [],\n    stateMutability: 'nonpayable',\n    type: 'function',\n  },\n  {\n    inputs: [\n      { internalType: 'uint256', name: 'wordPos', type: 'uint256' },\n      { internalType: 'uint256', name: 'mask', type: 'uint256' },\n    ],\n    name: 'invalidateUnorderedNonces',\n    outputs: [],\n    stateMutability: 'nonpayable',\n    type: 'function',\n  },\n  {\n    inputs: [\n      {\n        components: [\n          { internalType: 'address', name: 'token', type: 'address' },\n          { internalType: 'address', name: 'spender', type: 'address' },\n        ],\n        internalType: 'struct IAllowanceTransfer.TokenSpenderPair[]',\n        name: 'approvals',\n        type: 'tuple[]',\n      },\n    ],\n    name: 'lockdown',\n    outputs: [],\n    stateMutability: 'nonpayable',\n    type: 'function',\n  },\n  {\n    inputs: [\n      { internalType: 'address', name: '', type: 'address' },\n      { internalType: 'uint256', name: '', type: 'uint256' },\n    ],\n    name: 'nonceBitmap',\n    outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n    stateMutability: 'view',\n    type: 'function',\n  },\n  {\n    inputs: [\n      { internalType: 'address', name: 'owner', type: 'address' },\n      {\n        components: [\n          {\n            components: [\n              { internalType: 'address', name: 'token', type: 'address' },\n              { internalType: 'uint160', name: 'amount', type: 'uint160' },\n              { internalType: 'uint48', name: 'expiration', type: 'uint48' },\n              { internalType: 'uint48', name: 'nonce', type: 'uint48' },\n            ],\n            internalType: 'struct IAllowanceTransfer.PermitDetails[]',\n            name: 'details',\n            type: 'tuple[]',\n          },\n          { internalType: 'address', name: 'spender', type: 'address' },\n          { internalType: 'uint256', name: 'sigDeadline', type: 'uint256' },\n        ],\n        internalType: 'struct IAllowanceTransfer.PermitBatch',\n        name: 'permitBatch',\n        type: 'tuple',\n      },\n      { internalType: 'bytes', name: 'signature', type: 'bytes' },\n    ],\n    name: 'permit',\n    outputs: [],\n    stateMutability: 'nonpayable',\n    type: 'function',\n  },\n  {\n    inputs: [\n      { internalType: 'address', name: 'owner', type: 'address' },\n      {\n        components: [\n          {\n            components: [\n              { internalType: 'address', name: 'token', type: 'address' },\n              { internalType: 'uint160', name: 'amount', type: 'uint160' },\n              { internalType: 'uint48', name: 'expiration', type: 'uint48' },\n              { internalType: 'uint48', name: 'nonce', type: 'uint48' },\n            ],\n            internalType: 'struct IAllowanceTransfer.PermitDetails',\n            name: 'details',\n            type: 'tuple',\n          },\n          { internalType: 'address', name: 'spender', type: 'address' },\n          { internalType: 'uint256', name: 'sigDeadline', type: 'uint256' },\n        ],\n        internalType: 'struct IAllowanceTransfer.PermitSingle',\n        name: 'permitSingle',\n        type: 'tuple',\n      },\n      { internalType: 'bytes', name: 'signature', type: 'bytes' },\n    ],\n    name: 'permit',\n    outputs: [],\n    stateMutability: 'nonpayable',\n    type: 'function',\n  },\n  {\n    inputs: [\n      {\n        components: [\n          {\n            components: [\n              { internalType: 'address', name: 'token', type: 'address' },\n              { internalType: 'uint256', name: 'amount', type: 'uint256' },\n            ],\n            internalType: 'struct ISignatureTransfer.TokenPermissions',\n            name: 'permitted',\n            type: 'tuple',\n          },\n          { internalType: 'uint256', name: 'nonce', type: 'uint256' },\n          { internalType: 'uint256', name: 'deadline', type: 'uint256' },\n        ],\n        internalType: 'struct ISignatureTransfer.PermitTransferFrom',\n        name: 'permit',\n        type: 'tuple',\n      },\n      {\n        components: [\n          { internalType: 'address', name: 'to', type: 'address' },\n          { internalType: 'uint256', name: 'requestedAmount', type: 'uint256' },\n        ],\n        internalType: 'struct ISignatureTransfer.SignatureTransferDetails',\n        name: 'transferDetails',\n        type: 'tuple',\n      },\n      { internalType: 'address', name: 'owner', type: 'address' },\n      { internalType: 'bytes', name: 'signature', type: 'bytes' },\n    ],\n    name: 'permitTransferFrom',\n    outputs: [],\n    stateMutability: 'nonpayable',\n    type: 'function',\n  },\n  {\n    inputs: [\n      {\n        components: [\n          {\n            components: [\n              { internalType: 'address', name: 'token', type: 'address' },\n              { internalType: 'uint256', name: 'amount', type: 'uint256' },\n            ],\n            internalType: 'struct ISignatureTransfer.TokenPermissions[]',\n            name: 'permitted',\n            type: 'tuple[]',\n          },\n          { internalType: 'uint256', name: 'nonce', type: 'uint256' },\n          { internalType: 'uint256', name: 'deadline', type: 'uint256' },\n        ],\n        internalType: 'struct ISignatureTransfer.PermitBatchTransferFrom',\n        name: 'permit',\n        type: 'tuple',\n      },\n      {\n        components: [\n          { internalType: 'address', name: 'to', type: 'address' },\n          { internalType: 'uint256', name: 'requestedAmount', type: 'uint256' },\n        ],\n        internalType: 'struct ISignatureTransfer.SignatureTransferDetails[]',\n        name: 'transferDetails',\n        type: 'tuple[]',\n      },\n      { internalType: 'address', name: 'owner', type: 'address' },\n      { internalType: 'bytes', name: 'signature', type: 'bytes' },\n    ],\n    name: 'permitTransferFrom',\n    outputs: [],\n    stateMutability: 'nonpayable',\n    type: 'function',\n  },\n  {\n    inputs: [\n      {\n        components: [\n          {\n            components: [\n              { internalType: 'address', name: 'token', type: 'address' },\n              { internalType: 'uint256', name: 'amount', type: 'uint256' },\n            ],\n            internalType: 'struct ISignatureTransfer.TokenPermissions',\n            name: 'permitted',\n            type: 'tuple',\n          },\n          { internalType: 'uint256', name: 'nonce', type: 'uint256' },\n          { internalType: 'uint256', name: 'deadline', type: 'uint256' },\n        ],\n        internalType: 'struct ISignatureTransfer.PermitTransferFrom',\n        name: 'permit',\n        type: 'tuple',\n      },\n      {\n        components: [\n          { internalType: 'address', name: 'to', type: 'address' },\n          { internalType: 'uint256', name: 'requestedAmount', type: 'uint256' },\n        ],\n        internalType: 'struct ISignatureTransfer.SignatureTransferDetails',\n        name: 'transferDetails',\n        type: 'tuple',\n      },\n      { internalType: 'address', name: 'owner', type: 'address' },\n      { internalType: 'bytes32', name: 'witness', type: 'bytes32' },\n      { internalType: 'string', name: 'witnessTypeString', type: 'string' },\n      { internalType: 'bytes', name: 'signature', type: 'bytes' },\n    ],\n    name: 'permitWitnessTransferFrom',\n    outputs: [],\n    stateMutability: 'nonpayable',\n    type: 'function',\n  },\n  {\n    inputs: [\n      {\n        components: [\n          {\n            components: [\n              { internalType: 'address', name: 'token', type: 'address' },\n              { internalType: 'uint256', name: 'amount', type: 'uint256' },\n            ],\n            internalType: 'struct ISignatureTransfer.TokenPermissions[]',\n            name: 'permitted',\n            type: 'tuple[]',\n          },\n          { internalType: 'uint256', name: 'nonce', type: 'uint256' },\n          { internalType: 'uint256', name: 'deadline', type: 'uint256' },\n        ],\n        internalType: 'struct ISignatureTransfer.PermitBatchTransferFrom',\n        name: 'permit',\n        type: 'tuple',\n      },\n      {\n        components: [\n          { internalType: 'address', name: 'to', type: 'address' },\n          { internalType: 'uint256', name: 'requestedAmount', type: 'uint256' },\n        ],\n        internalType: 'struct ISignatureTransfer.SignatureTransferDetails[]',\n        name: 'transferDetails',\n        type: 'tuple[]',\n      },\n      { internalType: 'address', name: 'owner', type: 'address' },\n      { internalType: 'bytes32', name: 'witness', type: 'bytes32' },\n      { internalType: 'string', name: 'witnessTypeString', type: 'string' },\n      { internalType: 'bytes', name: 'signature', type: 'bytes' },\n    ],\n    name: 'permitWitnessTransferFrom',\n    outputs: [],\n    stateMutability: 'nonpayable',\n    type: 'function',\n  },\n  {\n    inputs: [\n      {\n        components: [\n          { internalType: 'address', name: 'from', type: 'address' },\n          { internalType: 'address', name: 'to', type: 'address' },\n          { internalType: 'uint160', name: 'amount', type: 'uint160' },\n          { internalType: 'address', name: 'token', type: 'address' },\n        ],\n        internalType: 'struct IAllowanceTransfer.AllowanceTransferDetails[]',\n        name: 'transferDetails',\n        type: 'tuple[]',\n      },\n    ],\n    name: 'transferFrom',\n    outputs: [],\n    stateMutability: 'nonpayable',\n    type: 'function',\n  },\n  {\n    inputs: [\n      { internalType: 'address', name: 'from', type: 'address' },\n      { internalType: 'address', name: 'to', type: 'address' },\n      { internalType: 'uint160', name: 'amount', type: 'uint160' },\n      { internalType: 'address', name: 'token', type: 'address' },\n    ],\n    name: 'transferFrom',\n    outputs: [],\n    stateMutability: 'nonpayable',\n    type: 'function',\n  },\n] as const;\n"],"names":["invariantModule","z","isAddress","isAddressEqual","parseUnits","formatUnits","mainnet","gnosis","getContract","erc20Abi","getQuote","OrderKind","maxUint256","SigningScheme","OrderStatus","getToken"],"mappings":"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"}