{
  "version": 3,
  "sources": ["../src/errors.ts", "../src/gondi.ts", "../src/addStepCallback.ts", "../src/utils/blockchain.ts", "../src/blockchain.ts", "../src/utils/types.ts", "../src/utils/string.ts", "../src/clients/api/index.ts", "../src/clients/api/client.ts", "../src/clients/api/auth.ts", "../src/clients/api/siwe.ts", "../src/generated/graphql/lending-schema.graphql", "../src/generated/graphql/index.ts", "../src/clients/api/sdk.ts", "../src/clients/contracts/Erc20.ts", "../src/generated/blockchain/v5.ts", "../src/clients/contracts/BaseContract.ts", "../src/generated/blockchain/oldERC721Wrapper.ts", "../src/clients/contracts/OldERC721Wrapper.ts", "../src/clients/contracts/PositionMigrator.ts", "../src/deploys.ts", "../src/utils/object.ts", "../src/generated/blockchain/positionMigrator.ts", "../src/utils/number.ts", "../src/utils/dates.ts", "../src/utils/loan.ts", "../src/utils/typedData.ts", "../src/clients/contracts/PurchaseBundlerV1.ts", "../src/generated/blockchain/v6.ts", "../src/clients/contracts/PurchaseBundlerV2.ts", "../src/generated/blockchain/v7.ts", "../src/generated/blockchain/cryptopunks.ts", "../src/generated/blockchain/cryptopunks721.ts", "../src/generated/blockchain/oldERC721.ts", "../src/generated/blockchain/seaport.ts", "../src/clients/contracts/AllV4.ts", "../src/generated/blockchain/v4.ts", "../src/clients/contracts/AllV5.ts", "../src/clients/contracts/AllV6.ts", "../src/clients/contracts/MslV4.ts", "../src/clients/contracts/MslV5.ts", "../src/clients/contracts/MslV6.ts", "../src/generated/blockchain/v8.ts", "../src/utils/delegation.ts", "../src/clients/contracts/UserVaultV5.ts", "../src/clients/contracts/UserVaultV6.ts", "../src/clients/contracts/index.ts", "../src/clients/contracts/CrossCurrencyRenegotiation.ts", "../src/utils/crossCurrencyRenegotiation.ts", "../src/model.ts", "../src/utils/buyWithLoan.ts", "../src/utils/creditPurchase.ts", "../src/utils/purchaseMarketplace.ts", "../src/utils/orders.ts", "../src/utils/algorithm.ts", "../src/utils/originationFee.ts", "../src/utils/promises.ts"],
  "sourcesContent": ["import { Address, Hash } from 'viem';\n\nexport class InterruptedSendTransactionStepError {\n  orderId: string;\n  to: Address;\n  callbackData: Hash;\n  value: bigint;\n\n  constructor({\n    orderId,\n    to,\n    callbackData,\n    value,\n  }: {\n    orderId: string;\n    to: Address;\n    callbackData: Hash;\n    value: bigint;\n  }) {\n    this.orderId = orderId;\n    this.to = to;\n    this.callbackData = callbackData;\n    this.value = value;\n  }\n}\nexport class InterruptedSeaportSendTransactionStepError extends InterruptedSendTransactionStepError {\n  signature: Hash;\n\n  constructor({\n    orderId,\n    to,\n    callbackData,\n    value,\n    signature,\n  }: {\n    orderId: string;\n    to: Address;\n    callbackData: Hash;\n    value: bigint;\n    signature: Hash;\n  }) {\n    super({ orderId, to, callbackData, value });\n    this.signature = signature;\n  }\n}\n\n/**\n * Thrown before a loan is emitted or refinanced against an NFT the GONDI API flags (for example\n * reported as stolen), or against a wrapper holding one. Lenders' collection offers cannot exclude\n * a flagged NFT on-chain, so the SDK refuses to borrow against it unless the `Gondi` instance was\n * created with `skipFlaggedNftCheck`.\n */\nexport class FlaggedNftError extends Error {\n  nftCollateralAddress: Address;\n  tokenId: bigint;\n\n  constructor({\n    nftCollateralAddress,\n    tokenId,\n  }: {\n    nftCollateralAddress: Address;\n    tokenId: bigint;\n  }) {\n    super(`NFT ${nftCollateralAddress} #${tokenId} is flagged and cannot be borrowed against`);\n    this.name = 'FlaggedNftError';\n    this.nftCollateralAddress = nftCollateralAddress;\n    this.tokenId = tokenId;\n  }\n}\n", "import { OperationVariables } from '@apollo/client/core/index.js';\nimport { Maybe } from 'graphql/jsutils/Maybe';\nimport {\n  Account,\n  Address,\n  createPublicClient,\n  createTransport,\n  decodeFunctionData,\n  erc20Abi,\n  Hash,\n  Hex,\n  keccak256,\n  parseEventLogs,\n  TransactionReceipt,\n  TypedDataDefinition,\n} from 'viem';\n\nimport { addStepCallback } from '@/addStepCallback';\nimport {\n  Auction,\n  BORROWER_SIGNATURE_LIFETIME,\n  ExecutionDataV7,\n  isNativeCurrency,\n  zeroAddress,\n  zeroHash,\n  zeroHex,\n} from '@/blockchain';\nimport { Api, OrderInput, Props as ApiProps } from '@/clients/api';\nimport { buildSiweMessage } from '@/clients/api/siwe';\nimport { Contracts, GondiPublicClient, Wallet } from '@/clients/contracts';\nimport {\n  CrossCurrencyRenegotiation,\n  CrossCurrencyRenegotiationInput,\n  CrossCurrencyRenegotiationQuote,\n} from '@/clients/contracts/CrossCurrencyRenegotiation';\nimport { MslV6 } from '@/clients/contracts/MslV6';\nimport { PurchaseBundlerV1 } from '@/clients/contracts/PurchaseBundlerV1';\nimport { PurchaseBundlerV2 } from '@/clients/contracts/PurchaseBundlerV2';\nimport { getContracts } from '@/deploys';\nimport { FlaggedNftError } from '@/errors';\nimport { seaportABI } from '@/generated/blockchain/seaport';\nimport { multiSourceLoanAbi } from '@/generated/blockchain/v7';\nimport {\n  BnplOrderInput,\n  BulkNftOrdersInput,\n  CollectionSignedOfferInput,\n  DealInput,\n  GenerateCollectionOfferHashMutation,\n  LoanOfferPublicationInput,\n  MarketplaceEnum,\n  NftOrderInput,\n  OffersSortField,\n  OfferValidatorInput,\n  Ordering,\n  SingleNftOrderInput,\n  SingleNftSignedOfferInput,\n  TokenStandardType,\n} from '@/generated/graphql';\nimport * as model from '@/model';\nimport { NftStandard } from '@/model';\nimport {\n  assertTransactionSucceeded,\n  isEmptyCalldata,\n  withRetriedReceiptWait,\n} from '@/utils/blockchain';\nimport {\n  buyWithLoan,\n  BuyWithLoanInput,\n  BuyWithLoanQuote,\n  quoteBuyWithLoan,\n} from '@/utils/buyWithLoan';\nimport {\n  assertCreditPurchaseExecution,\n  assertCreditPurchaseRoute,\n  CreditPurchaseInput,\n  CreditPurchaseQuote,\n  quoteCreditPurchase,\n} from '@/utils/creditPurchase';\nimport { millisToSeconds } from '@/utils/dates';\nimport { LoanDelegation } from '@/utils/delegation';\nimport {\n  BPS,\n  isLoanVersion,\n  loanToMslLoan,\n  LoanToMslLoanType,\n  renegotiationToMslRenegotiation,\n} from '@/utils/loan';\nimport { max, mulDivUp } from '@/utils/number';\nimport { assertHideableOrder, isNative, isOpensea } from '@/utils/orders';\nimport { calculateProratedOriginationFee } from '@/utils/originationFee';\nimport { areSameAddress } from '@/utils/string';\nimport { isDefined, OptionalNullable } from '@/utils/types';\n\n/** The most orders `cancelOrders` takes at once: the API's cancel calldata limit. */\nconst MAX_CANCEL_ORDERS = 50;\n\n/** The `__typename` of every order `makeOrder` can publish. */\nconst PUBLISHED_ORDER_TYPENAMES = [\n  'SingleNFTOrder',\n  'CollectionOrder',\n  'TraitOrder',\n  'MultipleTraitOrder',\n  'SetBidOrder',\n] as const;\n\n/** Whether `response` is an order `makeOrder` can publish, not a request for more input. */\nconst isPublishedOrder = <Response extends { __typename?: string }>(\n  response: Response,\n): response is Extract<Response, { __typename?: (typeof PUBLISHED_ORDER_TYPENAMES)[number] }> =>\n  PUBLISHED_ORDER_TYPENAMES.some((publishedTypename) => publishedTypename === response.__typename);\n\n/** An offer any NFT of a set, a collection or the NFTs carrying some traits, can borrow against. */\ntype MakeOfferInput = model.CollectionOfferInput | model.TraitOfferInput;\n\n/** The fields `_makeOffer` fills in before asking the API for the offer to sign. */\ntype MakeOfferDefaults = {\n  lenderAddress: Address;\n  signerAddress: Address;\n  borrowerAddress: Address;\n  requiresLiquidation: boolean;\n  lenderRefinanceDisabled: boolean;\n  contractAddress: Address;\n  offerValidators: OfferValidatorInput[];\n};\n\n/** The fields the lender's signature adds to a set offer before it is saved. */\ntype MakeOfferSignedFields = MakeOfferDefaults & {\n  fee: bigint;\n  offerHash: Hash;\n  offerId: bigint;\n  signature: Hex;\n};\n\ninterface GondiProps {\n  wallet: Wallet;\n  /**\n   * Dedicated public client for read operations: transaction simulations,\n   * receipt polling and contract reads. Must be connected to the same chain as\n   * `wallet`. When omitted, a public client is derived from the wallet's own\n   * transport, so every read goes through the wallet provider's RPC.\n   */\n  publicClient?: GondiPublicClient;\n  apiClient?: ApiProps['apiClient'];\n  onStepChange?: OnStepChange;\n  /**\n   * Skips the flagged-NFT lookup `emitLoan`, `emitLoans`, `revokeDelegationsAndEmitLoan`,\n   * `refinanceFromOffers`, `efficientRefinanceFromOffers` and\n   * `crossCurrencyRenegotiation` run before\n   * sending, saving an API call. Only for callers that already keep flagged\n   * NFTs out of those flows themselves, such as the GONDI web app.\n   */\n  skipFlaggedNftCheck?: boolean;\n}\n\n/** Fields every transaction step carries, whatever its status. */\ntype TransactionStepBase = {\n  type: 'transaction';\n  to: Address;\n  functionNameOrSelector: string; // can be a function name or a function selector\n  /** Chain the wallet used to submit this transaction. */\n  chainId?: number;\n};\n\n/** A transaction step; narrowing on `status` tells which hashes it carries. */\ntype TransactionStep = TransactionStepBase &\n  (\n    | { status: 'waiting' }\n    | {\n        status: 'broadcasted';\n        /** Hash the wallet broadcast. */\n        transactionHash: Hash;\n      }\n    | {\n        status: 'success';\n        /** Hash of the mined receipt: a replacement's when the provider reports one. */\n        transactionHash: Hash;\n        /** Hash the wallet broadcast; equals `transactionHash` unless it was replaced. */\n        originalTransactionHash: Hash;\n      }\n  );\n\ntype Step =\n  | {\n      type: 'signature';\n      primaryType: string;\n      status: 'waiting' | 'success';\n    }\n  | TransactionStep\n  | {\n      type: 'api';\n      status: 'waiting' | 'success';\n      mutationName: string;\n      variables?: OperationVariables;\n    };\n\n// TODO: Add TS types for primaryType, functionNameOrSelector and mutationName\nexport type OnStepChange = (step: Step) => Promise<void>;\n\nexport class Gondi {\n  private pendingSingleNftPublications = new Map<string, SingleNftSignedOfferInput>();\n  private pendingCollectionPublications = new Map<string, CollectionSignedOfferInput>();\n\n  private pendingRenegotiationPublications = new Map<\n    string,\n    { offer: Parameters<Api['saveRefinanceOffer']>[0]; fallback?: SingleNftSignedOfferInput }\n  >();\n\n  /** Retains bounded signed payloads while their API save is pending. */\n  private rememberPublication<Value>(publications: Map<string, Value>, key: string, value: Value) {\n    publications.set(key, value);\n    if (publications.size > 256) publications.delete(publications.keys().next().value as string);\n  }\n\n  /** Binds signed terms and contract; excludes unsigned predecessors. */\n  private publicationKey(\n    offer: object,\n    contract: Address,\n    publication?: LoanOfferPublicationInput,\n  ) {\n    return publication\n      ? JSON.stringify({ offer, contract }, (_, value) =>\n          typeof value === 'bigint' ? value.toString() : value,\n        )\n      : undefined;\n  }\n\n  contracts: Contracts;\n  wallet: Wallet;\n  account: Account;\n  bcClient: GondiPublicClient;\n  apiClient: Api;\n  skipFlaggedNftCheck: boolean;\n\n  constructor({\n    wallet,\n    publicClient,\n    apiClient,\n    onStepChange,\n    skipFlaggedNftCheck = false,\n  }: GondiProps) {\n    this.wallet = wallet;\n    this.skipFlaggedNftCheck = skipFlaggedNftCheck;\n    this.account = wallet.account;\n    this.bcClient = withRetriedReceiptWait(\n      publicClient ??\n        createPublicClient({\n          chain: wallet.chain,\n          transport: () => createTransport(wallet.transport),\n        }),\n    );\n    this.contracts = new Contracts(this.bcClient, wallet);\n    this.apiClient = new Api({ wallet, apiClient, onStepChange });\n  }\n\n  static create(\n    props: GondiProps & {\n      onStepChange: OnStepChange;\n    },\n  ) {\n    const { wallet, publicClient, onStepChange } = props;\n    const walletWithSteps = addStepCallback({\n      wallet,\n      publicClient,\n      onStepChange,\n    });\n    return new Gondi({ ...props, wallet: walletWithSteps });\n  }\n\n  static calculateProratedOriginationFee = calculateProratedOriginationFee;\n  static buildSiweMessage = buildSiweMessage;\n\n  /**\n   * Signs and saves an item offer.\n   * @param publication Optional unsigned admission metadata. Previews before signing\n   * and throws the backend rejection reason. Identical retries after failed saves\n   * reuse the signature; a successful save clears that pending signature.\n   */\n  async makeSingleNftOffer(\n    offer: model.SingleNftOfferInput,\n    publication?: LoanOfferPublicationInput,\n  ) {\n    return await this._makeSingleNftOffer(offer, undefined, false, publication);\n  }\n\n  /** @internal */\n  _makeSingleNftOffer(\n    offer: model.SingleNftOfferInput,\n    mslContractAddress: Address,\n    skipSave: true,\n    publication?: LoanOfferPublicationInput,\n  ): Promise<SingleNftSignedOfferInput>;\n\n  /** @internal */\n  _makeSingleNftOffer(\n    offer: model.SingleNftOfferInput,\n    mslContractAddress?: Address,\n    skipSave?: false,\n    publication?: LoanOfferPublicationInput,\n  ): ReturnType<Api['saveSingleNftOffer']>;\n\n  /** @internal */\n  async _makeSingleNftOffer(\n    offer: model.SingleNftOfferInput,\n    mslContractAddress?: Address,\n    skipSave?: boolean,\n    publication?: LoanOfferPublicationInput,\n  ) {\n    const contract = this.contracts.Msl(mslContractAddress ?? this.getDefaults().Msl);\n    const contractAddress = contract.address;\n\n    const publicationKey = this.publicationKey(offer, contractAddress, publication);\n    const pending = publicationKey\n      ? this.pendingSingleNftPublications.get(publicationKey)\n      : undefined;\n    if (pending && !skipSave && publicationKey) {\n      const saved = await this.apiClient.saveSingleNftOffer(pending, publication);\n      this.pendingSingleNftPublications.delete(publicationKey);\n      return saved;\n    }\n\n    const offerInput = {\n      ...offer,\n      lenderAddress: offer.lenderAddress ? offer.lenderAddress : this.account.address,\n      signerAddress: this.account.address,\n      borrowerAddress: offer.borrowerAddress ?? zeroAddress,\n      requiresLiquidation: !!offer.requiresLiquidation,\n      lenderRefinanceDisabled: !!offer.lenderRefinanceDisabled,\n      contractAddress,\n      offerValidators: [], // This is ignored by the API but it was required in the mutation\n    };\n\n    if (publication && !skipSave) {\n      await this.apiClient.previewSingleNftPublication(offerInput, publication);\n    }\n    const response = await this.apiClient.generateSingleNftOfferHash({ offerInput });\n\n    const { offerHash, offerId, validators, lenderAddress, signerAddress, borrowerAddress, fee } =\n      response.offer;\n    const collateralAddress = response.offer.collateralAddress;\n\n    if (!collateralAddress) throw new Error('Invalid nft');\n\n    const structToSign = {\n      ...offerInput,\n      fee,\n      lender: lenderAddress ?? offerInput.lenderAddress,\n      signer: signerAddress ?? offerInput.signerAddress,\n      borrower: borrowerAddress ?? offerInput.borrowerAddress,\n      nftCollateralTokenId: response.offer.nft.tokenId,\n      nftCollateralAddress: collateralAddress,\n      validators,\n      offerId,\n    };\n\n    const signature = await contract.signOffer({ structToSign });\n\n    const signedOffer: SingleNftSignedOfferInput = {\n      ...offerInput,\n      fee,\n      offerValidators: validators.map((validator) => ({\n        arguments: validator.arguments,\n        validator: validator.validator,\n      })),\n      offerHash: offerHash ?? zeroHash,\n      offerId,\n      signature,\n    };\n\n    if (skipSave) return signedOffer;\n    if (publicationKey)\n      this.rememberPublication(this.pendingSingleNftPublications, publicationKey, signedOffer);\n    const saved = await this.apiClient.saveSingleNftOffer(signedOffer, publication);\n    if (publicationKey) this.pendingSingleNftPublications.delete(publicationKey);\n    return saved;\n  }\n\n  /**\n   * Signs and saves a collection offer without an item preview.\n   * @param publication Optional unsigned admission metadata. Identical retries after\n   * failed saves reuse the signature; a successful save clears that pending signature.\n   * The backend evaluates collection offers independently for each item.\n   */\n  async makeCollectionOffer(\n    offer: model.CollectionOfferInput,\n    publication?: LoanOfferPublicationInput,\n  ) {\n    return await this._makeCollectionOffer(offer, undefined, publication);\n  }\n\n  /** @internal */\n  async _makeCollectionOffer(\n    offer: model.CollectionOfferInput,\n    mslContractAddress?: Address,\n    publication?: LoanOfferPublicationInput,\n  ) {\n    const contractAddress = this.contracts.Msl(\n      mslContractAddress ?? this.getDefaults().Msl,\n    ).address;\n\n    const publicationKey = this.publicationKey(offer, contractAddress, publication);\n    const pending = publicationKey\n      ? this.pendingCollectionPublications.get(publicationKey)\n      : undefined;\n    if (pending && publicationKey) {\n      const saved = await this.apiClient.saveCollectionOffer(pending, publication);\n      this.pendingCollectionPublications.delete(publicationKey);\n      return saved;\n    }\n\n    return await this._makeOffer({\n      offer,\n      mslContractAddress,\n      generateOfferHash: (offerInput) => this.apiClient.generateCollectionOfferHash({ offerInput }),\n      saveOffer: async (signedOffer) => {\n        if (publicationKey)\n          this.rememberPublication(this.pendingCollectionPublications, publicationKey, signedOffer);\n        const saved = await this.apiClient.saveCollectionOffer(signedOffer, publication);\n        if (publicationKey) this.pendingCollectionPublications.delete(publicationKey);\n        return saved;\n      },\n    });\n  }\n\n  /** A loan offer any NFT of the collection carrying every one of `offer.traitIds` can borrow against. */\n  async makeTraitOffer(offer: model.TraitOfferInput) {\n    return await this._makeTraitOffer(offer);\n  }\n\n  /** @internal */\n  async _makeTraitOffer(offer: model.TraitOfferInput, mslContractAddress?: Address) {\n    return await this._makeOffer({\n      offer,\n      mslContractAddress,\n      generateOfferHash: (offerInput) => this.apiClient.generateTraitOfferHash({ offerInput }),\n      saveOffer: (signedOffer) => this.apiClient.saveTraitOffer(signedOffer),\n    });\n  }\n\n  /**\n   * Signs and saves an offer any NFT of a set can borrow against, with\n   * `nftCollateralTokenId` 0 in the signed struct. `generateOfferHash` and\n   * `saveOffer` are the set type's two API calls; everything else, the struct\n   * the contract verifies included, is shared by every set type.\n   * @internal\n   */\n  async _makeOffer<TOffer extends MakeOfferInput, TSaved>({\n    offer,\n    mslContractAddress,\n    generateOfferHash,\n    saveOffer,\n  }: {\n    offer: TOffer;\n    mslContractAddress?: Address;\n    generateOfferHash: (\n      offerInput: TOffer & MakeOfferDefaults,\n    ) => Promise<{ offer: Omit<GenerateCollectionOfferHashMutation['offer'], '__typename'> }>;\n    saveOffer: (signedOffer: TOffer & MakeOfferSignedFields) => Promise<TSaved>;\n  }) {\n    const contract = this.contracts.Msl(mslContractAddress ?? this.getDefaults().Msl);\n\n    const baseOffer: MakeOfferInput = offer;\n    const defaults: MakeOfferDefaults = {\n      lenderAddress: baseOffer.lenderAddress ? baseOffer.lenderAddress : this.account.address,\n      signerAddress: this.account.address,\n      borrowerAddress: baseOffer.borrowerAddress ?? zeroAddress,\n      requiresLiquidation: !!baseOffer.requiresLiquidation,\n      lenderRefinanceDisabled: !!baseOffer.lenderRefinanceDisabled,\n      contractAddress: contract.address,\n      // This is ignored by the API but it was required in the mutation\n      offerValidators: [{ validator: zeroAddress, arguments: zeroHex }],\n    };\n    const offerInput = { ...offer, ...defaults };\n    const response = await generateOfferHash(offerInput);\n    const collateralAddress = response.offer.collateralAddress;\n\n    if (!collateralAddress) throw new Error('Invalid collection');\n\n    const { offerHash, offerId, validators, lenderAddress, signerAddress, borrowerAddress, fee } =\n      response.offer;\n    const structToSign = {\n      ...baseOffer,\n      ...defaults,\n      fee,\n      lender: lenderAddress ?? defaults.lenderAddress,\n      signer: signerAddress ?? defaults.signerAddress,\n      borrower: borrowerAddress ?? defaults.borrowerAddress,\n      nftCollateralTokenId: 0n,\n      nftCollateralAddress: collateralAddress,\n      validators,\n      offerId,\n    };\n\n    const signature = await contract.signOffer({ structToSign });\n\n    const signedOffer = {\n      ...offerInput,\n      fee,\n      offerValidators: validators.map((validator) => ({\n        arguments: validator.arguments,\n        validator: validator.validator,\n      })),\n      offerHash: offerHash ?? zeroHash,\n      offerId,\n      signature,\n    };\n    return await saveOffer(signedOffer);\n  }\n\n  /**\n   * Publishes a bid or listing, signing the order when the API asks for it.\n   *\n   * The input picks the kind: `tokenId` for one NFT, `traitIds` for a trait bid,\n   * `nftIds` for a set bid that fills with any of the listed NFTs of\n   * `collectionId` (2 to 1,000), and `collectionId` alone for a collection bid.\n   * A trait, set or collection bid fills up to `maxExecutions` times.\n   */\n  async makeOrder(orderInput: OrderInput) {\n    let response = await this.apiClient.publishOrder(orderInput);\n    while (response.__typename === 'SignatureRequest') {\n      const key = response.key as 'signature';\n      orderInput[key] = await this.wallet.signTypedData(response.typedData as TypedDataDefinition);\n      response = await this.apiClient.publishOrder(orderInput);\n    }\n\n    if (!isPublishedOrder(response)) throw new Error('This should never happen');\n\n    return { ...response, ...orderInput };\n  }\n\n  async makeOrders(orders: SingleNftOrderInput[]) {\n    const bulkInput: BulkNftOrdersInput = { orders };\n    let response = await this.apiClient.publishBulkOrders(bulkInput);\n\n    if (response.__typename === 'SignatureRequest') {\n      const signature = await this.wallet.signTypedData(response.typedData as TypedDataDefinition);\n      response = await this.apiClient.publishBulkOrders({ orders, signature });\n    }\n\n    if (response.__typename !== 'BulkNFTOrdersResult') throw new Error('This should never happen');\n\n    return response.orders;\n  }\n\n  async makeDeal(dealInput: DealInput) {\n    let response = await this.apiClient.publishDeal(dealInput);\n    while (response.__typename === 'SignatureRequest') {\n      const key = response.key as 'signature';\n      dealInput[key] = await this.wallet.signTypedData(response.typedData as TypedDataDefinition);\n      response = await this.apiClient.publishDeal(dealInput);\n    }\n\n    if (response.__typename !== 'Deal') throw new Error('This should never happen');\n\n    return { ...response, ...dealInput };\n  }\n\n  async makeSellAndRepayOrder(sellAndRepayOrderInput: NftOrderInput) {\n    sellAndRepayOrderInput.orderToFillInt64 =\n      sellAndRepayOrderInput.orderToFillInt64 ?? sellAndRepayOrderInput.orderToFill;\n    sellAndRepayOrderInput.replaceOrderIdInt64 =\n      sellAndRepayOrderInput.replaceOrderIdInt64 ?? sellAndRepayOrderInput.replaceOrderId;\n    sellAndRepayOrderInput.orderToFill = undefined;\n    sellAndRepayOrderInput.replaceOrderId = undefined;\n    let response = await this.apiClient.publishSellAndRepayOrder(sellAndRepayOrderInput);\n    while (response.__typename !== 'SellAndRepayOrder') {\n      if (response.__typename === 'ExtraSeaportData') {\n        sellAndRepayOrderInput.extraSeaportData = response.extraData;\n        sellAndRepayOrderInput.criteriaProof = response.criteriaProof;\n      } else if (response.__typename === 'SignatureRequest') {\n        const key = response.key as 'signature' | 'repaymentSignature';\n        sellAndRepayOrderInput[key] = await this.wallet.signTypedData(\n          response.typedData as TypedDataDefinition,\n        );\n      }\n      response = await this.apiClient.publishSellAndRepayOrder(sellAndRepayOrderInput);\n    }\n\n    if (response.__typename !== 'SellAndRepayOrder') throw new Error('This should never happen');\n\n    return { ...response, ...sellAndRepayOrderInput };\n  }\n\n  async buyNowPayLater({\n    amounts,\n    purchaseBundlerAddress,\n    contractAddress,\n    loanDuration,\n    offers,\n    tokenId,\n    repaymentCalldata,\n    sellAndRepaySwapData,\n    repayFlashLoanSwapParams,\n    creditPurchaseQuote,\n    buyWithLoanQuote,\n  }: {\n    amounts: bigint[];\n    purchaseBundlerAddress?: Address;\n    contractAddress: Address;\n    loanDuration: bigint;\n    offers: OfferFromExecutionOffer[];\n    tokenId: bigint;\n    creditPurchaseQuote?: CreditPurchaseQuote;\n    buyWithLoanQuote?: BuyWithLoanQuote;\n    repaymentCalldata?: Hex | null | undefined;\n    sellAndRepaySwapData?: Maybe<Hex>;\n    repayFlashLoanSwapParams?: Maybe<{\n      inputCurrency: Address;\n      inputAmount: bigint;\n      swapData: Hex;\n    }>;\n  }) {\n    if (creditPurchaseQuote && buyWithLoanQuote) throw new Error('Choose one purchase quote API');\n    if (buyWithLoanQuote)\n      return buyWithLoan(this, {\n        amounts,\n        contractAddress,\n        loanDuration,\n        offers,\n        tokenId,\n        buyWithLoanQuote,\n      });\n    if (creditPurchaseQuote) {\n      return this._buyWithCreditPurchase({\n        amounts,\n        contractAddress,\n        loanDuration,\n        offers,\n        tokenId,\n        repaymentCalldata,\n        creditPurchaseQuote,\n      });\n    }\n    const orderInput: BnplOrderInput = {\n      amounts,\n      contractAddress,\n      loanDuration,\n      offerIds: offers.map((offer) => offer.id),\n      tokenId,\n      emitExpirationTime: BigInt(millisToSeconds(Date.now())) + BORROWER_SIGNATURE_LIFETIME,\n    };\n\n    const borrowed = amounts.reduce((acc, amount, index) => {\n      const fee = mulDivUp(offers[index].fee, amount, offers[index].principalAmount);\n      return acc + amount - fee;\n    }, 0n);\n\n    let response = await this.apiClient.publishBuyNowPayLaterOrder(orderInput);\n    while (response.__typename !== 'BuyNowPayLaterOrder') {\n      if (response.__typename === 'ExtraSeaportData') {\n        orderInput.extraSeaportData = response.extraData;\n      } else if (response.__typename === 'SignatureRequest') {\n        const key = response.key as 'signature' | 'emitSignature';\n        orderInput[key] = await this.wallet.signTypedData(\n          response.typedData as TypedDataDefinition,\n        );\n      }\n      response = await this.apiClient.publishBuyNowPayLaterOrder(orderInput);\n    }\n\n    if (response.__typename !== 'BuyNowPayLaterOrder') throw new Error('This should never happen');\n\n    if (isDefined(repaymentCalldata)) {\n      const pb = this.contracts.PurchaseBundler(purchaseBundlerAddress, offers[0].contractAddress);\n      if (sellAndRepaySwapData !== undefined && pb instanceof PurchaseBundlerV1) {\n        throw new Error('Swap data is not supported for PurchaseBundler v1');\n      }\n      return pb.executeSellWithLoan({\n        initialPayment: max(\n          0n,\n          response.price - borrowed + (response.price * PurchaseBundlerV2.AAVE_PREMIUM_BPS) / BPS,\n        ),\n        emitCalldata: response.emitCalldata,\n        price: response.price,\n        repaymentCalldata,\n        executeSellSwapData: sellAndRepaySwapData,\n        repayFlashLoanSwapParams,\n      });\n    }\n\n    return this.contracts.PurchaseBundler(purchaseBundlerAddress, offers[0].contractAddress).buy({\n      emitCalldata: response.emitCalldata,\n      value: isNativeCurrency(response.currencyAddress) ? max(0n, response.price - borrowed) : 0n,\n    });\n  }\n\n  /** Verifies the confirmed nested purchase independently from legacy BNPL signing. */\n  private async _buyWithCreditPurchase({\n    amounts,\n    contractAddress,\n    loanDuration,\n    offers,\n    tokenId,\n    repaymentCalldata,\n    creditPurchaseQuote,\n  }: Parameters<Gondi['buyNowPayLater']>[0] & { creditPurchaseQuote: CreditPurchaseQuote }) {\n    const orderInput: BnplOrderInput = {\n      amounts,\n      contractAddress,\n      loanDuration,\n      offerIds: offers.map((offer) => offer.id),\n      tokenId,\n    };\n\n    if (\n      amounts.length !== offers.length ||\n      !offers.length ||\n      amounts.some((amount) => amount <= 0n)\n    )\n      throw new Error('Offer amounts must match the selected buyer offers');\n    const borrowed = amounts.reduce((acc, amount, index) => {\n      const fee = mulDivUp(offers[index].fee, amount, offers[index].principalAmount);\n      return acc + amount - fee;\n    }, 0n);\n\n    const quote = creditPurchaseQuote;\n    const deployments = getContracts(this.wallet.chain);\n    if (\n      this.wallet.chain.id !== 1 ||\n      offers.some(\n        (offer) => !areSameAddress(offer.contractAddress, deployments.MultiSourceLoan['3.1']),\n      )\n    )\n      throw new Error('Nested purchase requires homogeneous v3.1 buyer offers');\n    if (\n      borrowed !== quote.netPrincipal ||\n      offers.some((offer) => !areSameAddress(offer.principalAddress, quote.loanCurrency))\n    )\n      throw new Error('Buyer funding changed; confirm a new quote');\n    if (\n      !repaymentCalldata ||\n      keccak256(repaymentCalldata) !== quote.repaymentHash ||\n      !areSameAddress(quote.buyer, this.wallet.account.address) ||\n      !areSameAddress(quote.buyerBundler, deployments.PurchaseBundler['3.1_PB_V2']) ||\n      !areSameAddress(quote.sellerContract, deployments.MultiSourceLoan['3.2']) ||\n      !areSameAddress(quote.sellerBundler, deployments.PurchaseBundler['3.2'])\n    )\n      throw new Error('The purchase quote does not match this buyer and seller route');\n    if (!areSameAddress(contractAddress, quote.nftCollateralAddress) || tokenId !== quote.tokenId)\n      throw new Error('Purchase collateral changed; confirm a new quote');\n    const block = await this.bcClient.getBlock();\n    if (block.timestamp >= quote.deadline)\n      throw new Error('Purchase quote expired; refresh and confirm again');\n    const seller = this.contracts.Msl(quote.sellerContract);\n    if (!(seller instanceof MslV6)) throw new Error('Unsupported seller contract');\n    if ((await seller.contract.read.getLoanHash([quote.loanId])) !== quote.loanHash)\n      throw new Error('Seller loan changed; confirm a new quote');\n    await assertCreditPurchaseRoute(this.bcClient, quote);\n    if (!isNativeCurrency(quote.purchaseCurrency)) {\n      const allowance = await this.bcClient.readContract({\n        address: quote.purchaseCurrency,\n        abi: erc20Abi,\n        functionName: 'allowance',\n        args: [quote.buyer, quote.buyerBundler],\n      });\n      if (allowance !== quote.initialPayment)\n        throw new Error('Approve exactly the quoted initial payment to the buyer bundler');\n    }\n    orderInput.creditPurchaseExecution = {\n      orderId: quote.orderId,\n      price: quote.price,\n      initialPayment: quote.initialPayment,\n      loanSwapData: quote.loanSwapData,\n      repaymentSwapData: quote.repaymentSwapData,\n      expirationTime: quote.deadline,\n    };\n    const confirmedExecution: ExecutionDataV7 = {\n      offerExecution: offers.map((offer, index) => {\n        if (!offer.signature || !offer.lenderAddress)\n          throw new Error('Signed buyer offer required');\n        return {\n          offer: {\n            ...offer,\n            lender: offer.lenderAddress,\n            validators: offer.offerValidators,\n            maxSeniorRepayment: offer.maxSeniorRepayment ?? 0n,\n          },\n          amount: amounts[index],\n          lenderOfferSignature: offer.signature,\n        };\n      }),\n      loanId: 0n,\n      nftCollateralAddress: contractAddress,\n      tokenId,\n      duration: loanDuration,\n      expirationTime: quote.deadline,\n      principalReceiver: quote.buyerBundler,\n      callbackData: quote.callbackData,\n    };\n    let response = await this.apiClient.publishBuyNowPayLaterOrder(orderInput);\n    while (response.__typename !== 'BuyNowPayLaterOrder') {\n      if (response.__typename === 'ExtraSeaportData') {\n        orderInput.extraSeaportData = response.extraData;\n      } else if (response.__typename === 'SignatureRequest') {\n        if (response.key !== 'emitSignature')\n          throw new Error('API execution differs from the confirmed purchase quote');\n        const typed = response.typedData as TypedDataDefinition;\n        assertCreditPurchaseExecution(confirmedExecution, typed.message);\n        await assertCreditPurchaseRoute(this.bcClient, creditPurchaseQuote);\n        const buyerMsl = this.contracts.Msl(offers[0].contractAddress);\n        if (!(buyerMsl instanceof MslV6)) throw new Error('Unsupported buyer contract');\n        orderInput.emitSignature = await buyerMsl.signExecutionData({\n          structToSign: confirmedExecution,\n        });\n      }\n      response = await this.apiClient.publishBuyNowPayLaterOrder(orderInput);\n    }\n    const decoded = decodeFunctionData({ abi: multiSourceLoanAbi, data: response.emitCalldata });\n    if (decoded.functionName !== 'emitLoan') throw new Error('Unexpected buyer execution');\n    const execution = decoded.args[0];\n    if (\n      response.price !== creditPurchaseQuote.price ||\n      !areSameAddress(response.currencyAddress, creditPurchaseQuote.purchaseCurrency) ||\n      !areSameAddress(execution.borrower, creditPurchaseQuote.buyer) ||\n      !areSameAddress(\n        execution.executionData.principalReceiver,\n        creditPurchaseQuote.buyerBundler,\n      ) ||\n      execution.executionData.callbackData !== creditPurchaseQuote.callbackData ||\n      execution.executionData.expirationTime !== creditPurchaseQuote.deadline\n    )\n      throw new Error('Published execution differs from the confirmed purchase quote');\n    assertCreditPurchaseExecution(confirmedExecution, execution.executionData);\n    await assertCreditPurchaseRoute(this.bcClient, creditPurchaseQuote);\n    return this.contracts\n      .PurchaseBundler(creditPurchaseQuote.buyerBundler, offers[0].contractAddress)\n      .buy({\n        emitCalldata: response.emitCalldata,\n        value: isNativeCurrency(creditPurchaseQuote.purchaseCurrency)\n          ? creditPurchaseQuote.initialPayment\n          : 0n,\n      });\n  }\n\n  /** Quotes ordinary, v3.1 flash and v3.2 nested purchases without signing or publishing an active order. */\n  async quoteBuyWithLoan(input: BuyWithLoanInput): Promise<BuyWithLoanQuote> {\n    return quoteBuyWithLoan(this, input);\n  }\n\n  /** Quotes capped buyer funding for v3.1 credit against an Ethereum v3.2 seller. */\n  async quoteCreditPurchase(input: CreditPurchaseInput): Promise<CreditPurchaseQuote> {\n    const sellerMsl = this.contracts.Msl(input.sellerContract);\n    if (!(sellerMsl instanceof MslV6)) throw new Error('Unsupported seller contract');\n    return quoteCreditPurchase({ input, wallet: this.wallet, client: this.bcClient, sellerMsl });\n  }\n\n  async cancelOrder(order: { cancelCalldata: Hex; marketPlaceAddress: Address }) {\n    return this.contracts\n      .GenericContract(order.marketPlaceAddress)\n      .sendTransactionData(order.cancelCalldata);\n  }\n\n  /**\n   * Cancels the wallet's trade orders by id, at most 50 per call, with one API call.\n   *\n   * `cancelTradeOrders` cancels the bids that `cancelsOffChain` (restricted to the GONDI signed\n   * zone, so they only fill with a signature the API issues) without a transaction, and returns\n   * the Seaport cancel calldata of the rest, sent as one transaction per marketplace.\n   *\n   * An off-chain cancel is final once the last fill signature already issued for the bid expires,\n   * a few minutes at most. Pass `onChain: true` to cancel every order on-chain instead, final as\n   * soon as the transaction is mined.\n   *\n   * @returns The ids cancelled off-chain, and one `{ txHash, waitTxInBlock }` per on-chain cancel.\n   */\n  async cancelOrders({ orderIds, onChain = false }: { orderIds: number[]; onChain?: boolean }) {\n    if (orderIds.length === 0 || orderIds.length > MAX_CANCEL_ORDERS) {\n      throw new Error(`Between 1 and ${MAX_CANCEL_ORDERS} orders can be cancelled at once`);\n    }\n    const { offChainOrderIds, cancelOrdersCalldata } = onChain\n      ? {\n          offChainOrderIds: [],\n          ...(await this.apiClient.getCancelOrdersCalldata({\n            maker: this.wallet.account.address,\n            orderIds,\n          })),\n        }\n      : await this.cancelOrdersOffChain(orderIds);\n    const transactions = [];\n    for (const { calldata, marketPlaceAddress } of cancelOrdersCalldata) {\n      transactions.push(await this.cancelOrder({ cancelCalldata: calldata, marketPlaceAddress }));\n    }\n    return { offChainOrderIds, transactions };\n  }\n\n  private async cancelOrdersOffChain(orderIds: number[]) {\n    const {\n      cancelTradeOrders: { cancelledOrders, cancelOrdersCalldata },\n    } = await this.apiClient.cancelTradeOrders({ orderIds });\n    return {\n      offChainOrderIds: cancelledOrders.map(({ id }) => Number(id)),\n      cancelOrdersCalldata,\n    };\n  }\n\n  async cancelOffer({ id, contractAddress }: { id: bigint; contractAddress: Address }) {\n    return this.contracts.Msl(contractAddress).cancelOffer({\n      id,\n    });\n  }\n\n  async cancelOffers({ ids, contractAddress }: { ids: bigint[]; contractAddress: Address }) {\n    return this.contracts.Msl(contractAddress).cancelOffers({ ids });\n  }\n\n  async cancelAllOffers({ minId, contractAddress }: { minId: bigint; contractAddress: Address }) {\n    return this.contracts.Msl(contractAddress).cancelAllOffers({\n      minId,\n    });\n  }\n\n  async hideOffer({ id, contractAddress }: { id: bigint; contractAddress: Address }) {\n    return this.apiClient.hideOffer({ contract: contractAddress, id: id.toString() });\n  }\n\n  async hideOffers({ ids, contractAddress }: { ids: bigint[]; contractAddress: Address }) {\n    return this.apiClient.hideOffers({\n      contract: contractAddress,\n      ids: ids.map((id) => id.toString()),\n    });\n  }\n\n  async unhideOffer({ id, contractAddress }: { id: bigint; contractAddress: Address }) {\n    return this.apiClient.unhideOffer({\n      contract: contractAddress,\n      id: id.toString(),\n    });\n  }\n\n  /**\n   * Signs and saves a refinance offer, optionally with a matching fallback.\n   * @param props.publication Optional unsigned admission metadata. Previews before\n   * signing and throws the backend rejection reason. Identical retries after failed\n   * saves reuse both signatures; a successful save clears the pending payloads.\n   * @param props.private Shows the offer only to the loan's borrower and to the lender.\n   * The API accepts it only for a principal worth at least the private minimum in USD\n   * ($50k). It is not part of the signed struct. With `withFallbackOffer`, the fallback\n   * is signed for `props.borrowerAddress`, the loan's borrower, so it stays private too.\n   */\n  async makeRefinanceOffer({\n    renegotiation,\n    contractAddress,\n    publication,\n    ...props\n  }: MakeRefinanceOfferProps) {\n    const { isV1, isV2 } = isLoanVersion(contractAddress, this.wallet.chain.id);\n    if (props.skipSignature && props.withFallbackOffer) {\n      throw new Error('skipSignature and withFallbackOffer cannot be true at the same time');\n    }\n    if (props.withFallbackOffer && (isV1 || isV2)) {\n      throw new Error('Unsupported contract address for withFallbackOffer argument');\n    }\n    if (props.private && props.withFallbackOffer && !props.borrowerAddress) {\n      throw new Error('A private offer with withFallbackOffer needs the borrowerAddress');\n    }\n\n    const renegotiationInput = {\n      lenderAddress: this.account.address,\n      signerAddress: this.account.address,\n      ...renegotiation,\n      targetPrincipal: renegotiation.targetPrincipal ?? [],\n      trancheIndex: renegotiation.trancheIndex ?? [],\n    };\n    const publicationKey = this.publicationKey(\n      { renegotiationInput, props },\n      contractAddress,\n      publication,\n    );\n    const pending = publicationKey\n      ? this.pendingRenegotiationPublications.get(publicationKey)\n      : undefined;\n    if (pending && publicationKey) {\n      const saved = await this.apiClient.saveRefinanceOffer(\n        pending.offer,\n        pending.fallback,\n        publication,\n      );\n      this.pendingRenegotiationPublications.delete(publicationKey);\n      return saved;\n    }\n    if (publication) {\n      await this.apiClient.previewRenegotiationPublication(renegotiationInput, publication);\n    }\n    const response = await this.apiClient.generateRenegotiationOfferHash({\n      renegotiationInput,\n    });\n\n    const { renegotiationId, offerHash, loanId, lenderAddress, signerAddress } = response.offer;\n\n    if (props.skipSignature) {\n      return {\n        ...renegotiationInput,\n        offerHash: offerHash ?? zeroHash,\n        signature: zeroHash,\n        renegotiationId,\n      };\n    }\n\n    const structToSign = {\n      ...renegotiationInput,\n      fee: renegotiationInput.feeAmount,\n      lender: lenderAddress ?? renegotiationInput.lenderAddress,\n      signer: signerAddress ?? renegotiationInput.signerAddress ?? zeroAddress,\n      strictImprovement: false,\n      loanId,\n      renegotiationId,\n    };\n\n    const contract = this.contracts.Msl(contractAddress);\n    const signature = await contract.signRenegotiationOffer({ structToSign });\n\n    const renegotiationOffer = {\n      ...renegotiationInput,\n      signature,\n      offerHash: offerHash ?? zeroHash,\n      renegotiationId,\n      private: props.private ?? false,\n    };\n\n    if (props.withFallbackOffer) {\n      const {\n        aprBps,\n        duration,\n        expirationTime,\n        principalAmount,\n        feeAmount: fee,\n      } = renegotiationInput;\n      const offerInput: model.SingleNftOfferInput = {\n        nftId: props.nftId,\n        principalAddress: props.principalAddress,\n        principalAmount,\n        aprBps,\n        duration,\n        expirationTime,\n        fee,\n        maxSeniorRepayment: props.maxSeniorRepayment ?? 0n,\n        capacity: 0n,\n        borrowerAddress: props.private ? props.borrowerAddress : undefined,\n      };\n      const fallbackOffer = await this._makeSingleNftOffer(offerInput, contractAddress, true);\n      if (publicationKey)\n        this.rememberPublication(this.pendingRenegotiationPublications, publicationKey, {\n          offer: renegotiationOffer,\n          fallback: fallbackOffer,\n        });\n      const saved = await this.apiClient.saveRefinanceOffer(\n        renegotiationOffer,\n        fallbackOffer,\n        publication,\n      );\n      if (publicationKey) this.pendingRenegotiationPublications.delete(publicationKey);\n      return saved;\n    }\n\n    if (publicationKey)\n      this.rememberPublication(this.pendingRenegotiationPublications, publicationKey, {\n        offer: renegotiationOffer,\n      });\n    const saved = await this.apiClient.saveRefinanceOffer(\n      renegotiationOffer,\n      undefined,\n      publication,\n    );\n    if (publicationKey) this.pendingRenegotiationPublications.delete(publicationKey);\n    return saved;\n  }\n\n  async cancelRefinanceOffer({ id, contractAddress }: { id: bigint; contractAddress: Address }) {\n    return this.contracts.Msl(contractAddress).cancelRefinanceOffer({\n      id,\n    });\n  }\n\n  async hideRenegotiationOffer({ id, contractAddress }: { id: bigint; contractAddress: Address }) {\n    return this.apiClient.hideRenegotiationOffer({\n      id: id.toString(),\n      contractAddress,\n    });\n  }\n\n  async unhideRenegotiationOffer({\n    id,\n    contractAddress,\n  }: {\n    id: bigint;\n    contractAddress: Address;\n  }) {\n    return this.apiClient.unhideRenegotiationOffer({\n      id: id.toString(),\n      contractAddress,\n    });\n  }\n\n  /**\n   * Hides a bid. `isAsk` is required so a listing is rejected here rather than\n   * by the API, which refuses it either way.\n   *\n   * @deprecated Listings can no longer be hidden \u2014 cancel one on-chain instead.\n   * Still hides bids.\n   */\n  async hideOrder({ id, isAsk }: { id: number; isAsk: boolean }) {\n    assertHideableOrder(isAsk);\n    return this.apiClient.hideOrder({ id });\n  }\n\n  /**\n   * Unhides a bid. `isAsk` is required so a listing is rejected here rather than\n   * by the API, which refuses it either way.\n   *\n   * @deprecated Listings can no longer be hidden \u2014 a listing hidden before that\n   * change stays hidden and is cancelled on-chain. Still unhides bids.\n   */\n  async showOrder({ id, isAsk }: { id: number; isAsk: boolean }) {\n    assertHideableOrder(isAsk);\n    return this.apiClient.showOrder({ id });\n  }\n\n  async cancelAllRenegotiations({\n    minId,\n    contractAddress,\n  }: {\n    minId: bigint;\n    contractAddress: Address;\n  }) {\n    return this.contracts.Msl(contractAddress).cancelAllRenegotiations({\n      minId,\n    });\n  }\n\n  offerExecutionFromOffers(\n    offers: OfferFromExecutionOffer[],\n    amounts?: bigint[],\n  ): EmitLoanArgs['offerExecution'] {\n    return offers.map((offer, idx) => {\n      const { signature, lenderAddress, borrowerAddress, offerHash } = offer;\n      if (!(signature && lenderAddress && borrowerAddress && offerHash))\n        throw new Error('Misisng required field for offer');\n      return {\n        offer: {\n          ...offer,\n          offerHash,\n          lenderAddress,\n          lender: lenderAddress,\n          borrowerAddress,\n          borrower: borrowerAddress,\n          signature,\n          maxSeniorRepayment: offer.maxSeniorRepayment ?? 0n,\n        },\n        amount: amounts?.[idx] ?? offer.principalAmount,\n        lenderOfferSignature: signature,\n      };\n    });\n  }\n\n  /**\n   * Throws `FlaggedNftError` when the API flags the collateral NFT or an NFT it wraps.\n   * An NFT the API does not know throws `NOT_FOUND`, and an API that does not answer\n   * throws its own error: a loan is only sent once the API confirms the NFT is not flagged.\n   */\n  private async assertNftNotFlagged({\n    nftCollateralAddress,\n    tokenId,\n  }: Pick<EmitLoanArgs, 'nftCollateralAddress' | 'tokenId'>) {\n    if (this.skipFlaggedNftCheck) return;\n    const { nft } = await this.apiClient.nftFlaggedByContractAddressAndTokenId({\n      contractAddress: nftCollateralAddress,\n      tokenId,\n    });\n    if (!nft) {\n      throw new Error(`NFT ${nftCollateralAddress} #${tokenId} not found`);\n    }\n    if (nft.isFlagged || nft.wrapsNfts?.some((wrappedNft) => wrappedNft.isFlagged)) {\n      throw new FlaggedNftError({ nftCollateralAddress, tokenId });\n    }\n  }\n\n  async emitLoan(args: EmitLoanArgs) {\n    await this.assertNftNotFlagged(args);\n    const contractAddress = args.offerExecution[0].offer.contractAddress;\n    return this.contracts.Msl(contractAddress).emitLoan(args);\n  }\n\n  /**\n   * Emits several loans in one transaction: either every loan is emitted or none is.\n   *\n   * Every offer of every loan must belong to the same MultiSourceLoan contract, of version 3 or\n   * later, and each NFT goes through the flagged-NFT check `emitLoan` runs before anything is sent.\n   * `waitTxInBlock` resolves to `loans`, one per item and in the same order, each shaped as\n   * `emitLoan` returns it.\n   *\n   * IMPLEMENTATION NOTE: each loan is an encoded `emitLoan` call inside the contract's\n   * `multicall(bytes[])`, which `MultiSourceLoan` inherits from `Multicall`\n   * (florida-contracts `src/lib/loans/MultiSourceLoan.sol`, `src/lib/Multicall.sol`). It\n   * delegatecalls the calls in order, so `msg.sender` stays the borrower, and reverts the whole\n   * transaction with `MulticallFailed(index, reason)` as soon as one of them fails.\n   */\n  async emitLoans(loans: EmitLoanArgs[]) {\n    if (loans.length === 0) throw new Error('At least one loan must be emitted');\n    const contractAddress = loans[0].offerExecution[0].offer.contractAddress;\n    const offers = loans.flatMap(({ offerExecution }) => offerExecution);\n    if (!offers.every(({ offer }) => areSameAddress(offer.contractAddress, contractAddress))) {\n      throw new Error('Every loan must use offers of the same MultiSourceLoan contract');\n    }\n\n    const msl = this.contracts.Msl(contractAddress);\n    if (!(msl instanceof MslV6)) {\n      throw new Error('emitLoans needs a MultiSourceLoan contract of version 3 or later');\n    }\n\n    await Promise.all(loans.map((loan) => this.assertNftNotFlagged(loan)));\n    return msl.emitLoans(loans);\n  }\n\n  async refinanceFromOffers({\n    loan,\n    loanId,\n    executionData,\n  }: {\n    loan: LoanToMslLoanType;\n    loanId: bigint;\n    executionData: EmitLoanArgs;\n  }) {\n    await this.assertNftNotFlagged(executionData);\n    return this.contracts.Msl(loan.contractAddress).refinanceFromOffers({\n      loan: loanToMslLoan(loan),\n      loanId,\n      executionData,\n    });\n  }\n\n  async efficientRefinanceFromOffers({\n    contractAddress,\n    loan,\n    loanId,\n    executionData,\n  }: {\n    contractAddress: Address;\n    loan: LoanToMslLoanType;\n    loanId: bigint;\n    executionData: EmitLoanArgs;\n  }) {\n    await this.assertNftNotFlagged(executionData);\n    const previousMsl = this.contracts.Msl(loan.contractAddress);\n    const nextMsl = this.contracts.Msl(\n      executionData.offerExecution[0]?.offer?.contractAddress ?? zeroAddress,\n    );\n\n    if (previousMsl.version === '1') {\n      throw new Error('Unsupported contract address for capital efficient refinance');\n    }\n\n    if (nextMsl.version === '1' || nextMsl.version === '2' || nextMsl.version === '3') {\n      throw new Error('Unsupported contract address for capital efficient refinance');\n    }\n\n    const repaymentCalldata = await previousMsl.encodeRepayLoan({\n      repayArgs: {\n        signableRepaymentData: {\n          loanId,\n          callbackData: '0x',\n          shouldDelegate: false,\n        },\n        loan: loanToMslLoan(loan),\n      },\n      withSignature: true,\n    });\n\n    const emitCalldata = await nextMsl.encodeEmitLoan({\n      emitArgs: executionData,\n      withSignature: true,\n    });\n\n    const currentBalance = await this.currencyBalance({ tokenAddress: loan.principalAddress });\n\n    return this.contracts.PositionMigrator(contractAddress, nextMsl).smartRenegotiation({\n      currentBalance,\n      previousMsl,\n      repaymentCalldata,\n      emitCalldata,\n    });\n  }\n\n  /** Quotes atomic USDC/WETH loan replacement, including capped borrower spending. */\n  async quoteCrossCurrencyRenegotiation(input: CrossCurrencyRenegotiationInput) {\n    return this._crossCurrencyRenegotiationClient(input).quote(input);\n  }\n\n  /**\n   * Prepare old-currency repayment and NFT approvals before obtaining the final quote.\n   * Approve its exact maximumFlashRepayment, then execute that same quote before expiry.\n   */\n  async crossCurrencyRenegotiation(\n    input: CrossCurrencyRenegotiationInput & {\n      quote: CrossCurrencyRenegotiationQuote;\n    },\n  ) {\n    await this.assertNftNotFlagged(input.executionData);\n    return this._crossCurrencyRenegotiationClient(input).execute(input);\n  }\n\n  private _crossCurrencyRenegotiationClient(input: CrossCurrencyRenegotiationInput) {\n    const previousMsl = this.contracts.Msl(input.loan.contractAddress);\n    const offer = input.executionData.offerExecution[0]?.offer;\n    if (!offer) throw new Error('At least one replacement offer is required');\n    const msl = this.contracts.Msl(offer.contractAddress);\n    if (!(previousMsl instanceof MslV6) || !(msl instanceof MslV6)) {\n      throw new Error('Cross-currency replacement supports Ethereum v3.1/v3.2 loans only');\n    }\n    return new CrossCurrencyRenegotiation({\n      previousMsl,\n      msl,\n      walletClient: this.wallet,\n      publicClient: this.bcClient,\n    });\n  }\n\n  async repayLoan({\n    loan,\n    loanId,\n    nftReceiver,\n  }: {\n    loan: LoanToMslLoanType;\n    loanId: bigint;\n    nftReceiver?: Address;\n  }) {\n    return this.contracts.Msl(loan.contractAddress).repayLoan({\n      loan: loanToMslLoan(loan),\n      nftReceiver,\n      loanId,\n    });\n  }\n\n  async offers({\n    limit = 20,\n    cursor,\n    sortBy = { field: OffersSortField.CreatedDate, order: Ordering.Desc },\n    filterBy = {},\n  }: model.ListOffersProps) {\n    const { status, nft, collection, borrower, contractAddresses, ...fields } = filterBy;\n    return await this.apiClient.listOffers({\n      first: limit,\n      after: cursor,\n      sortBy,\n      statuses: status,\n      nfts: nft ? [nft] : [],\n      collections: collection ? [collection] : [],\n      borrowerAddress: borrower,\n      contractAddresses: contractAddresses ?? [],\n      ...fields,\n    });\n  }\n\n  async loans({ limit = 20, cursor, ...rest }: model.ListLoansProps) {\n    return await this.apiClient.listLoans({\n      first: limit,\n      after: cursor,\n      ...rest,\n      loansCurrencyAddresses: rest.loansCurrencyAddress ? [rest.loansCurrencyAddress] : undefined,\n    });\n  }\n\n  async list({ nft }: { nft: number }) {\n    return await this.apiClient.listNft({ nftId: nft });\n  }\n\n  async unlist({ nft }: { nft: number }) {\n    return await this.apiClient.unlistNft({ nftId: nft });\n  }\n\n  async listings({\n    collections,\n    user,\n    marketPlaces = [MarketplaceEnum.Gondi],\n    limit = 20,\n    cursor,\n  }: model.ListListingsProps) {\n    return await this.apiClient.listListings({\n      collections,\n      userFilter: user,\n      marketplaceNames: marketPlaces,\n      after: cursor,\n      first: limit,\n    });\n  }\n\n  async nftId(\n    props: (\n      | { slug: string; contractAddress?: never }\n      | { slug?: never; contractAddress: Address }\n    ) & { tokenId: bigint },\n  ) {\n    let result;\n    if (props.slug) result = await this.apiClient.nftIdBySlugTokenId(props);\n    if (props.contractAddress)\n      result = await this.apiClient.nftIdByContractAddressAndTokenId(props);\n    if (!result?.nft) {\n      throw new Error(`invalid nft ${props}`);\n    }\n    return Number(result.nft.id);\n  }\n\n  async collections(props: {\n    statsCurrency?: Address;\n    standards?: TokenStandardType[];\n    collections?: number[];\n    cursor?: string;\n  }) {\n    const { statsCurrency: currency = zeroAddress, collections, standards, cursor } = props;\n    const {\n      collections: { edges, pageInfo },\n    } = await this.apiClient.collections({ currency, collections, standards, after: cursor });\n    return { collections: edges.map((edge) => edge.node), pageInfo };\n  }\n\n  async collectionId(props: { slug: string; contractAddress?: never }): Promise<number>;\n  async collectionId(props: { slug?: never; contractAddress: Address }): Promise<number[]>;\n  async collectionId(\n    props:\n      | {\n          slug: string;\n          contractAddress?: never;\n        }\n      | {\n          slug?: never;\n          contractAddress: Address;\n        },\n  ) {\n    let result;\n    if (props.slug) {\n      result = await this.apiClient.collectionIdBySlug(props);\n      if (!result?.collection) {\n        throw new Error(`invalid collection ${props}`);\n      }\n      return Number(result.collection.id);\n    }\n    if (props.contractAddress) {\n      result = await this.apiClient.collectionsIdByContractAddress(props);\n      if (!result?.collections) {\n        throw new Error(`invalid collection ${props}`);\n      }\n      return result.collections.map((collection) => Number(collection.id));\n    }\n  }\n\n  async collectionStepsById(props: { collectionId: number }) {\n    const result = await this.apiClient.collectionStepsById(props);\n    return result.steps;\n  }\n\n  async ownedNfts(args: Parameters<Api['ownedNfts']>[0]) {\n    const result = await this.apiClient.ownedNfts(args);\n    const { edges: ownedNfts, pageInfo } = result.ownedNfts;\n    return { ownedNfts: ownedNfts.map((edge) => edge.node), pageInfo };\n  }\n\n  async getRemainingLockupSeconds({ loan }: { loan: LoanToMslLoanType }) {\n    return this.contracts.Msl(loan.contractAddress).getRemainingLockupSeconds({\n      loan: loanToMslLoan(loan),\n    });\n  }\n\n  async isEndLockedUp({\n    loan,\n  }: {\n    loan: LoanToMslLoanType & { durationFromRenegotiationOrStart: bigint };\n  }) {\n    return this.contracts.Msl(loan.contractAddress).isEndLockedUp({\n      loan,\n    });\n  }\n\n  private getDefaults() {\n    const contracts = getContracts(this.wallet.chain);\n    return {\n      // Ordinary offers stay on 3.1 by design; only lenderRefinanceDisabled offers route to 3.2.\n      Msl: contracts.MultiSourceLoan['3.1'],\n      UserVault: contracts.UserVault['3'],\n    };\n  }\n\n  async refinanceFullLoan({\n    offer,\n    loan,\n    loanId,\n  }: {\n    offer: model.RenegotiationOffer;\n    loan: LoanToMslLoanType;\n    loanId: bigint;\n  }) {\n    return this.contracts.Msl(loan.contractAddress).refinanceFullLoan({\n      offer: renegotiationToMslRenegotiation(offer, loanId),\n      loan: loanToMslLoan(loan),\n      signature: offer.signature,\n    });\n  }\n\n  async refinancePartialLoan({\n    offer,\n    loan,\n    loanId,\n  }: {\n    offer: model.RenegotiationOffer;\n    loan: LoanToMslLoanType;\n    loanId: bigint;\n  }) {\n    return this.contracts.Msl(loan.contractAddress).refinancePartialLoan({\n      offer: renegotiationToMslRenegotiation(offer, loanId),\n      loan: loanToMslLoan(loan),\n    });\n  }\n\n  async addTranche({\n    offer,\n    loan,\n    loanId,\n  }: {\n    offer: model.RenegotiationOffer;\n    loan: LoanToMslLoanType;\n    loanId: bigint;\n  }) {\n    return this.contracts.Msl(loan.contractAddress).addTranche({\n      offer: renegotiationToMslRenegotiation(offer, loanId),\n      loan: loanToMslLoan(loan),\n      signature: offer.signature,\n    });\n  }\n\n  /**\n   * Delegate Multicall should be used when token is used as collateral for an active loan.\n   * Multicall will be performed to the contract address of the first delegation.\n   */\n  async delegateMulticall(delegations: Parameters<Gondi['delegate']>[0][]) {\n    const contractAddress = delegations[0].loan.contractAddress;\n    return this.contracts.Msl(contractAddress).delegateMulticall(\n      delegations.map((delegation) => ({\n        ...delegation,\n        loan: loanToMslLoan(delegation.loan),\n      })),\n    );\n  }\n\n  /** Delegate should be used when token is used as collateral for an active loan. */\n  async delegate({\n    loan,\n    loanId,\n    to,\n    enable,\n    rights,\n  }: {\n    loan: LoanToMslLoanType;\n    loanId: bigint;\n    to: Address;\n    enable: boolean;\n    rights?: Hash;\n  }) {\n    return this.contracts.Msl(loan.contractAddress).delegate({\n      loan: loanToMslLoan(loan),\n      loanId,\n      to,\n      rights,\n      enable,\n    });\n  }\n\n  /** RevokeDelegate should be used when token is not being used as collateral. */\n  async revokeDelegate({\n    to,\n    collection,\n    tokenId,\n    contract: externalContract,\n  }: {\n    to: Address;\n    collection: Address;\n    tokenId: bigint;\n    contract?: Address;\n  }) {\n    const contract = externalContract ?? this.getDefaults().Msl;\n    return this.contracts.Msl(contract).revokeDelegate({ to, collection, tokenId });\n  }\n\n  /**\n   * RevokeDelegationsAndEmitLoan should be used when token has been delegated without being revoked,\n   * and a new loan wants to be emitted, erasing the delegations provided as argument in the same\n   * transaction as the emit.\n   *\n   * @param delegations The token's delegations, as the API's `Delegation.delegateTo` and\n   * `Delegation.rights` report them: each `{ to, rights }` is revoked with every rights value it\n   * lists, and a bare address with the full-rights `zeroHash`.\n   */\n  async revokeDelegationsAndEmitLoan({\n    delegations,\n    emit,\n  }: {\n    delegations: readonly LoanDelegation[];\n    emit: Parameters<Gondi['emitLoan']>[0];\n  }) {\n    await this.assertNftNotFlagged(emit);\n    const contractAddress = emit.offerExecution[0].offer.contractAddress;\n    return this.contracts.Msl(contractAddress).revokeDelegationsAndEmitLoan({ delegations, emit });\n  }\n\n  async liquidateLoan({ loan, loanId }: { loan: LoanToMslLoanType; loanId: bigint }) {\n    return this.contracts\n      .Msl(loan.contractAddress)\n      .liquidateLoan({ loanId, loan: loanToMslLoan(loan) });\n  }\n\n  async placeBid({\n    collectionContractAddress,\n    tokenId,\n    bid,\n    auction,\n  }: {\n    collectionContractAddress: Address;\n    tokenId: bigint;\n    bid: bigint;\n    auction: Auction;\n  }) {\n    return this.contracts\n      .All(auction.loanAddress)\n      .placeBid({ collectionContractAddress, tokenId, bid, auction });\n  }\n\n  async settleAuction({ loan, auction }: { loan: LoanToMslLoanType; auction: Auction }) {\n    return this.contracts\n      .All(auction.loanAddress)\n      .settleAuction({ auction, loan: loanToMslLoan(loan) });\n  }\n\n  async settleAuctionWithBuyout({ loan, auction }: { loan: LoanToMslLoanType; auction: Auction }) {\n    return this.contracts\n      .All(auction.loanAddress)\n      .settleAuctionWithBuyout({ auction, loan: loanToMslLoan(loan) });\n  }\n\n  async getAuctionRemainingLockupSeconds({\n    auction,\n  }: {\n    auction: Pick<Auction, 'startTime' | 'loanAddress'>;\n  }) {\n    return this.contracts.All(auction.loanAddress).getRemainingLockupSeconds({ auction });\n  }\n\n  /**\n   * Get the owner of an ERC 721 token.\n   */\n  async getOwner({ nftAddress, tokenId }: { nftAddress: Address; tokenId: bigint }) {\n    const erc721 = this.contracts.ERC721(nftAddress);\n    return erc721.contract.read.ownerOf([tokenId]);\n  }\n\n  /**\n   * Get the balance of an ERC 1155 token id.\n   */\n  async balanceOf({ nftAddress, tokenId }: { nftAddress: Address; tokenId: bigint }) {\n    const erc1155 = this.contracts.ERC1155(nftAddress);\n    return erc1155.contract.read.balanceOf([this.wallet.account.address, tokenId]);\n  }\n\n  async isApprovedNFTForAll({\n    nftAddress,\n    standard,\n    to: externalTo,\n  }: {\n    nftAddress: Address;\n    standard: Parameters<Contracts['Nft']>[1];\n    to?: Address;\n  }) {\n    const nft = this.contracts.Nft(nftAddress, standard);\n    const to = externalTo ?? this.getDefaults().Msl;\n    return nft.contract.read.isApprovedForAll([this.account.address, to]);\n  }\n\n  async approveNFTForAll({\n    nftAddress,\n    standard,\n    to: externalTo,\n  }: {\n    nftAddress: Address;\n    standard: Parameters<Contracts['Nft']>[1];\n    to?: Address;\n  }) {\n    const nft = this.contracts.Nft(nftAddress, standard);\n    const to = externalTo ?? this.getDefaults().Msl;\n    const txHash = await nft.safeContractWrite.setApprovalForAll([to, true]);\n\n    return {\n      txHash,\n      waitTxInBlock: async () => {\n        const receipt = await this.bcClient.waitForTransactionReceipt({\n          hash: txHash,\n        });\n        const events = nft.parseEventLogs('ApprovalForAll', receipt.logs);\n        if (events.length === 0) throw new Error(`${standard} approval for all not set`);\n        return { ...events[0].args, ...receipt };\n      },\n    };\n  }\n\n  /**\n   * Transfer an NFT to another wallet. The sender is the connected wallet account.\n   * Supports ERC721 (default), ERC1155, naked CryptoPunks and old (pre-ERC721) collections.\n   * `amount` only applies to ERC1155 transfers.\n   */\n  async transferNFT({\n    to,\n    nftAddress,\n    tokenId,\n    standard = 'ERC721',\n    amount = 1n,\n  }: {\n    to: Address;\n    nftAddress: Address;\n    tokenId: bigint;\n    standard?: model.TransferNftStandard;\n    amount?: bigint;\n  }) {\n    const from = this.wallet.account.address;\n    const buildTransferResult = <TEventArgs extends object>(\n      txHash: Hash,\n      getTransferEvents: (logs: TransactionReceipt['logs']) => { args: TEventArgs }[],\n    ) => ({\n      txHash,\n      waitTxInBlock: async () => {\n        const receipt = await this.bcClient.waitForTransactionReceipt({ hash: txHash });\n        const events = getTransferEvents(receipt.logs);\n        if (events.length === 0) throw new Error(`${standard} transfer failed`);\n        return { ...events[0].args, ...receipt };\n      },\n    });\n\n    if (standard === 'ERC1155') {\n      const nft = this.contracts.ERC1155(nftAddress);\n      const txHash = await nft.safeContractWrite.safeTransferFrom([\n        from,\n        to,\n        tokenId,\n        amount,\n        zeroHex,\n      ]);\n      return buildTransferResult(txHash, (logs) => nft.parseEventLogs('TransferSingle', logs));\n    }\n    if (standard === 'CryptoPunks') {\n      const cryptopunks = this.contracts.Cryptopunks(nftAddress);\n      const txHash = await cryptopunks.safeContractWrite.transferPunk([to, tokenId]);\n      return buildTransferResult(txHash, (logs) =>\n        cryptopunks.parseEventLogs('PunkTransfer', logs),\n      );\n    }\n    if (standard === 'OldERC721') {\n      const nft = this.contracts.OldERC721(nftAddress);\n      const txHash = await nft.safeContractWrite.transfer([to, tokenId]);\n      return buildTransferResult(txHash, (logs) => nft.parseEventLogs('Transfer', logs));\n    }\n    const nft = this.contracts.ERC721(nftAddress);\n    const txHash = await nft.safeContractWrite.safeTransferFrom([from, to, tokenId]);\n    return buildTransferResult(txHash, (logs) => nft.parseEventLogs('Transfer', logs));\n  }\n\n  async isApprovedToken({\n    tokenAddress,\n    amount,\n    to: externalTo,\n  }: {\n    tokenAddress: Address;\n    amount: bigint;\n    to?: Address;\n  }) {\n    const erc20 = this.contracts.ERC20(tokenAddress);\n    const to = externalTo ?? this.getDefaults().Msl;\n    return (await erc20.contract.read.allowance([this.account.address, to])) >= amount;\n  }\n\n  async approveToken({\n    tokenAddress,\n    amount = model.MAX_NUMBER,\n    to: externalTo,\n  }: {\n    tokenAddress: Address;\n    amount?: bigint;\n    to?: Address;\n  }) {\n    const erc20 = this.contracts.ERC20(tokenAddress);\n    const to = externalTo ?? this.getDefaults().Msl;\n    const txHash = await erc20.safeContractWrite.approve([to, amount]);\n\n    return {\n      txHash,\n      waitTxInBlock: async () => {\n        const receipt = await this.bcClient.waitForTransactionReceipt({\n          hash: txHash,\n        });\n        const events = erc20.parseEventLogs('Approval', receipt.logs);\n        if (events.length === 0) throw new Error('ERC20 approval not set');\n        return { ...events[0].args, ...receipt };\n      },\n    };\n  }\n\n  async currencyAllowance({\n    tokenAddress,\n    to: externalTo,\n  }: {\n    tokenAddress: Address;\n    to?: Address;\n  }) {\n    const erc20 = this.contracts.ERC20(tokenAddress);\n    const to = externalTo ?? this.getDefaults().Msl;\n    return await erc20.contract.read.allowance([this.account.address, to]);\n  }\n\n  async currencyBalance({ tokenAddress }: { tokenAddress: Address }) {\n    const erc20 = this.contracts.ERC20(tokenAddress);\n    return await erc20.contract.read.balanceOf([this.account.address]);\n  }\n\n  async createUserVault({\n    nfts,\n    currencies = [],\n  }: {\n    nfts: CreateVaultNfts;\n    currencies?: CreateVaultCurrencies;\n  }) {\n    return this._createUserVault({ nfts, currencies });\n  }\n  async _createUserVault({\n    nfts,\n    currencies = [],\n    userVaultAddress,\n  }: {\n    nfts: CreateVaultNfts;\n    currencies?: CreateVaultCurrencies;\n    userVaultAddress?: Address;\n  }) {\n    const userVault = userVaultAddress ?? this.getDefaults().UserVault;\n    return this.contracts.UserVault(userVault).createVault(nfts, currencies);\n  }\n\n  async depositUserVaultERC721s({\n    userVaultAddress,\n    ...data\n  }: { userVaultAddress?: Address } & DepositERC721sArgs) {\n    const userVault = userVaultAddress ?? this.getDefaults().UserVault;\n    return this.contracts.UserVault(userVault).depositERC721s(data);\n  }\n\n  async depositUserVaultERC1155s({\n    userVaultAddress,\n    ...data\n  }: { userVaultAddress?: Address } & DepositERC1155sArgs) {\n    const userVault = userVaultAddress ?? this.getDefaults().UserVault;\n    return this.contracts.UserVault(userVault).depositERC1155s(data);\n  }\n\n  async depositUserVaultERC20({\n    userVaultAddress,\n    ...data\n  }: { userVaultAddress?: Address } & DepositERC20Args) {\n    const userVault = userVaultAddress ?? this.getDefaults().UserVault;\n    return this.contracts.UserVault(userVault).depositERC20(data);\n  }\n\n  async burnUserVaultAndWithdraw({\n    userVaultAddress,\n    ...data\n  }: { userVaultAddress?: Address } & BurnAndWithdrawArgs) {\n    const userVault = userVaultAddress ?? this.getDefaults().UserVault;\n    return this.contracts.UserVault(userVault).burnAndWithdraw(data);\n  }\n\n  async wrapOldERC721({ collection, tokenId }: wrapOldERC721Args) {\n    const wrapperAddress = await this.apiClient.getWrapperAddress(collection);\n    const wrapper = this.contracts.OldERC721Wrapper(wrapperAddress);\n    const naked = this.contracts.OldERC721(collection.contractData.contractAddress);\n    const stashAddress = await wrapper.contract.read.stashAddress([this.wallet.account.address]);\n    const currentOwner = await naked.contract.read.ownerOf([tokenId]);\n    if (currentOwner == this.wallet.account.address) {\n      const txTransfer = await naked.safeContractWrite.transfer([stashAddress, tokenId]);\n      await this.bcClient.waitForTransactionReceipt({ hash: txTransfer });\n    } else if (currentOwner != stashAddress) {\n      throw Error('NFT not owned');\n    }\n    return await wrapper.wrapOldERC721({ tokenId });\n  }\n\n  async unwrapOldERC721({ collection, tokenId }: wrapOldERC721Args) {\n    const wrapperAddress = await this.apiClient.getWrapperAddress(collection);\n    const wrapper = this.contracts.OldERC721Wrapper(wrapperAddress);\n\n    return await wrapper.unwrap(tokenId);\n  }\n\n  /**\n   * Where the wallet's CryptoPunk `tokenId` stands on its way into CryptoPunks 721, read from\n   * chain: `'wallet'` while the wallet holds it naked, `'stash'` once it sits in the wallet's\n   * Stash waiting for {@link wrapPunk721}, `'wrapped'` once the wallet holds its 721 token, and\n   * `'other'` when none of these holds.\n   *\n   * IMPLEMENTATION NOTE: the punks market's `punkIndexToAddress` names the punk's holder and\n   * `CryptoPunks721.punkProxyForUser` the wallet's Stash, deployed or not yet; a wrapped punk is\n   * held by the 721 contract, which mints its token to the wallet\n   * (https://721.cryptopunks.app, https://etherscan.io/address/0x000000000000003607fce1ac9e043a86675c5c2f#code).\n   */\n  async punk721WrapState({ tokenId }: { tokenId: bigint }): Promise<Punk721WrapState> {\n    return (await this._punk721Holding(tokenId)).state;\n  }\n\n  /**\n   * Moves the wallet's naked CryptoPunk `tokenId` into its Stash, the first of the two\n   * transactions that wrap it into CryptoPunks 721. Refuses a punk the wallet does not hold.\n   */\n  async transferPunkToStash721({ tokenId }: { tokenId: bigint }) {\n    const { state, stash, punksAddress } = await this._punk721Holding(tokenId);\n    if (state !== 'wallet') {\n      throw new Error(`Punk ${tokenId} is not held by the wallet (${state})`);\n    }\n    const txHash = await this.contracts\n      .Cryptopunks(punksAddress)\n      .safeContractWrite.transferPunk([stash, tokenId]);\n    return this._minedTransaction(txHash);\n  }\n\n  /**\n   * Wraps the CryptoPunk `tokenId` waiting in the wallet's Stash into CryptoPunks 721, minting\n   * its 721 token to the wallet. Refuses a punk that is not in the Stash: move it there first\n   * with {@link transferPunkToStash721}.\n   */\n  async wrapPunk721({ tokenId }: { tokenId: bigint }) {\n    const { state, wrapperAddress } = await this._punk721Holding(tokenId);\n    if (state !== 'stash') {\n      throw new Error(`Punk ${tokenId} is not in the wallet's Stash (${state})`);\n    }\n    const txHash = await this.contracts\n      .Cryptopunks721(wrapperAddress)\n      .safeContractWrite.wrapPunk([tokenId]);\n    return this._minedTransaction(txHash);\n  }\n\n  /** The punk's wrap state with the addresses the wrap transactions need. */\n  private async _punk721Holding(tokenId: bigint) {\n    const { Cryptopunks: punksAddress, Cryptopunks721: wrapperAddress } = getContracts(\n      this.wallet.chain,\n    );\n    const wrapper = this.contracts.Cryptopunks721(wrapperAddress);\n    const account = this.wallet.account.address;\n    const [holder, stash] = await Promise.all([\n      this.contracts.Cryptopunks(punksAddress).contract.read.punkIndexToAddress([tokenId]),\n      wrapper.contract.read.punkProxyForUser([account]),\n    ]);\n    const stateOf = async (): Promise<Punk721WrapState> => {\n      if (areSameAddress(holder, account)) return 'wallet';\n      if (areSameAddress(holder, stash)) return 'stash';\n      const isWrapped =\n        areSameAddress(holder, wrapperAddress) &&\n        areSameAddress(await wrapper.contract.read.ownerOf([tokenId]), account);\n      return isWrapped ? 'wrapped' : 'other';\n    };\n    return { state: await stateOf(), stash, punksAddress, wrapperAddress };\n  }\n\n  /** A sent transaction whose `waitTxInBlock` resolves with its receipt once it succeeds. */\n  private _minedTransaction(txHash: Hash) {\n    return {\n      txHash,\n      waitTxInBlock: async () =>\n        assertTransactionSucceeded(await this.bcClient.waitForTransactionReceipt({ hash: txHash })),\n    };\n  }\n\n  async buyWithSellAndRepay({\n    repaymentCalldata,\n    purchaseBundlerAddress,\n    mslContractAddress,\n    price,\n    swapData,\n  }: {\n    repaymentCalldata: Hex;\n    purchaseBundlerAddress?: Address;\n    mslContractAddress: Address;\n    price: bigint;\n    swapData?: Maybe<Hex>;\n  }) {\n    const pb = this.contracts.PurchaseBundler(purchaseBundlerAddress, mslContractAddress);\n    if (swapData && pb instanceof PurchaseBundlerV1) {\n      throw new Error('Swap data is not supported for PurchaseBundler v1');\n    }\n    return await pb.executeSell({\n      repaymentCalldata,\n      price,\n      swapData,\n    });\n  }\n\n  async sellAndRepay({\n    purchaseBundlerAddress,\n    mslContractAddress,\n    repaymentCalldata,\n    swapData,\n  }: {\n    purchaseBundlerAddress?: Address;\n    mslContractAddress: Address;\n    repaymentCalldata: Hex;\n    swapData?: Hex;\n  }) {\n    const pb = this.contracts.PurchaseBundler(purchaseBundlerAddress, mslContractAddress);\n    if (swapData && pb instanceof PurchaseBundlerV1) {\n      throw new Error('Swap data is not supported for PurchaseBundler v1');\n    }\n    return await pb.sell({\n      repaymentCalldata,\n      swapData,\n    });\n  }\n\n  /**\n   * Sells `nft` into `order`, a Native or OpenSea bid. The Gondi API builds the\n   * sale calldata for both marketplaces, so OpenSea bids need no client-side\n   * OpenSea credentials and no approval beyond the collateral's.\n   */\n  async sellNft({\n    order,\n    nft,\n  }: {\n    order: {\n      id: string;\n      /**\n       * The order's currency as reported by the Gondi API. A native-currency order carries the\n       * zero address on Ethereum, but a synthetic sentinel on other chains (`__HYPE_ADDRESS` on\n       * HyperEVM, `__RETH_ADDRESS` on Robinhood) \u2014 check it with `isNativeCurrency`.\n       */\n      currencyAddress: Address;\n      originalId: string;\n      marketPlace: string;\n      marketPlaceAddress: Address;\n      price: bigint;\n    };\n    nft: {\n      id: string;\n      tokenId: bigint;\n      collectionAddress: Address;\n    };\n  }) {\n    if (!isNative(order.marketPlace) && !isOpensea(order.marketPlace)) {\n      throw new Error(`Sell not supported for marketplace ${order.marketPlace}`);\n    }\n\n    const { saleCalldata } = await this.apiClient.getSaleCalldata({\n      orderId: Number(order.id),\n      nftId: Number(nft.id),\n      taker: this.wallet.account.address,\n    });\n\n    if (!saleCalldata || isEmptyCalldata(saleCalldata))\n      throw new Error(`No sale calldata available for order ${order.id}`);\n\n    const value = isNativeCurrency(order.currencyAddress) ? order.price : 0n;\n    const { txHash, waitTxInBlock } = await this.contracts\n      .GenericContract(order.marketPlaceAddress)\n      .sendTransactionData(saleCalldata, value);\n\n    return {\n      txHash,\n      waitTxInBlock: async () => {\n        const receipt = await waitTxInBlock();\n        const events = parseEventLogs({\n          abi: seaportABI,\n          eventName: 'OrderFulfilled',\n          logs: receipt.logs,\n        });\n        if (events.length === 0) {\n          throw new Error('Sale not executed');\n        }\n        return receipt;\n      },\n    };\n  }\n\n  async getProtocolFee({ mslContractAddress }: { mslContractAddress: Address }) {\n    return this.contracts.Msl(mslContractAddress).getProtocolFee();\n  }\n}\n\ntype MakeOfferType =\n  | Omit<Awaited<ReturnType<Gondi['makeSingleNftOffer']>>, 'nftId'>\n  | Omit<Awaited<ReturnType<Gondi['makeCollectionOffer']>>, 'collectionId'>\n  | Omit<Awaited<ReturnType<Gondi['makeTraitOffer']>>, 'traitIds'>;\n\ntype OfferFromExecutionOffer = OptionalNullable<\n  MakeOfferType,\n  'borrowerAddress' | 'lenderAddress' | 'offerHash' | 'signature'\n>;\n\ntype MakeRefinanceOfferProps = {\n  publication?: LoanOfferPublicationInput;\n  renegotiation: model.RenegotiationInput;\n  contractAddress: Address;\n} & (\n  | {\n      skipSignature?: never;\n      withFallbackOffer?: never;\n      principalAddress?: never;\n      nftId?: never;\n      maxSeniorRepayment?: never;\n      private?: boolean;\n    }\n  | {\n      skipSignature: true;\n      withFallbackOffer?: never;\n      principalAddress?: never;\n      nftId?: never;\n      maxSeniorRepayment?: never;\n      private?: boolean;\n    }\n  | {\n      skipSignature?: never;\n      withFallbackOffer: true;\n      principalAddress: Address;\n      nftId: number;\n      maxSeniorRepayment?: bigint;\n      private?: false;\n      borrowerAddress?: never;\n    }\n  | {\n      skipSignature?: never;\n      withFallbackOffer: true;\n      principalAddress: Address;\n      nftId: number;\n      maxSeniorRepayment?: bigint;\n      private: true;\n      /** The loan's borrower: the private fallback is signed for this address only. */\n      borrowerAddress: Address;\n    }\n);\n\nexport type CreateVaultNfts = {\n  collection: Address;\n  tokenIds: bigint[];\n  amounts: bigint[];\n  standard: NftStandard;\n}[];\nexport type CreateVaultCurrencies = { address: Address; amount: bigint }[];\n\nexport type DepositERC1155sArgs = {\n  vaultId: bigint;\n  collection: Address;\n  tokenIds: bigint[];\n  amounts: bigint[];\n};\nexport type DepositERC721sArgs = Omit<DepositERC1155sArgs, 'amounts'>;\nexport type DepositERC20Args = {\n  vaultId: bigint;\n  tokenAddress: Address;\n  amount: bigint;\n};\nexport type BurnAndWithdrawArgs = {\n  vaultId: bigint;\n  collections: Address[];\n  tokenIds: bigint[];\n  tokens?: Address[]; // erc20 tokens\n  erc1155Collections?: Address[];\n  erc1155TokenIds?: bigint[];\n};\n\n/** Where a CryptoPunk stands on its way into CryptoPunks 721; see `Gondi.punk721WrapState`. */\nexport type Punk721WrapState = 'wallet' | 'stash' | 'wrapped' | 'other';\n\ntype wrapOldERC721Args = {\n  collection: {\n    contractData: { contractAddress: Address };\n    wrapperCollections?: { contractData: { contractAddress: Address } }[];\n  };\n  tokenId: bigint;\n};\n\nexport interface EmitLoanArgs {\n  offerExecution: {\n    offer: Omit<model.SingleNftOffer | model.CollectionOffer, 'nftId'>;\n    amount?: bigint;\n    lenderOfferSignature: Hash;\n  }[];\n  nftCollateralAddress: Address;\n  tokenId: bigint;\n  duration: bigint;\n  principalReceiver?: Address;\n  expirationTime?: bigint;\n  callbackData?: Hex;\n}\n", "import {\n  Address,\n  createPublicClient,\n  createTransport,\n  Hash,\n  PublicClient,\n  ReplacementReason,\n} from 'viem';\n\nimport { Wallet } from '@/clients/contracts';\nimport { type OnStepChange } from '@/gondi';\nimport { assertTransactionSucceeded, withRetriedReceiptWait } from '@/utils/blockchain';\n\nexport const addStepCallback = (props: {\n  wallet: Wallet;\n  onStepChange: OnStepChange;\n  publicClient?: PublicClient;\n}): Wallet => {\n  const { wallet, onStepChange } = props;\n  const publicClient = withRetriedReceiptWait(\n    props.publicClient ??\n      createPublicClient({\n        chain: wallet.chain,\n        transport: () => createTransport(wallet.transport),\n      }),\n  );\n\n  const originalSignTypedData = wallet.signTypedData.bind(wallet);\n  const originalWriteContract = wallet.writeContract.bind(wallet);\n  const originalSendTransaction = wallet.sendTransaction.bind(wallet);\n\n  /**\n   * Waits for the receipt of a broadcast transaction and throws unless it mined\n   * the call that was sent: a revert, or a replacement by a different call.\n   *\n   * IMPLEMENTATION NOTE: when the wallet replaces a pending transaction, viem's\n   * `waitForTransactionReceipt` resolves with the replacement's receipt and\n   * reports why only through `onReplaced`, whose `reason` is `repriced` (same\n   * call at a higher fee), `cancelled` (a 0-value transfer to the sender with\n   * the same nonce) or `replaced` (any other transaction)\n   * (https://viem.sh/docs/actions/public/waitForTransactionReceipt#onreplaced-optional).\n   * A cancellation mines a successful receipt, so its status alone reads as success.\n   */\n  const waitForSentCallReceipt = async (transactionHash: Hash) => {\n    let replacementReason: ReplacementReason | undefined;\n    const receipt = await publicClient.waitForTransactionReceipt({\n      hash: transactionHash,\n      onReplaced: ({ reason }) => {\n        replacementReason = reason;\n      },\n    });\n    if (replacementReason === 'cancelled' || replacementReason === 'replaced') {\n      throw new Error(\n        `Transaction ${replacementReason}: ${transactionHash} by ${receipt.transactionHash}`,\n      );\n    }\n    return assertTransactionSucceeded(receipt);\n  };\n\n  const signTypedData: Wallet['signTypedData'] = async (typedData) => {\n    const step = { type: 'signature', primaryType: String(typedData.primaryType) } as const;\n    await onStepChange({ ...step, status: 'waiting' });\n    const signature = await originalSignTypedData(typedData);\n    await onStepChange({ ...step, status: 'success' });\n    return signature;\n  };\n\n  /**\n   * Broadcasts a contract call through `broadcast` and reports it to `onStepChange`\n   * as waiting, broadcasted and, once its receipt mined the call, success.\n   * Returns the hash of the broadcast transaction.\n   */\n  const trackTransaction = async (\n    to: Address,\n    functionNameOrSelector: string,\n    broadcast: () => Promise<Hash>,\n  ) => {\n    const call = { type: 'transaction', to, functionNameOrSelector } as const;\n    const chainId = wallet.chain?.id;\n    await onStepChange({ ...call, status: 'waiting' });\n    const transactionHash = await broadcast();\n    await onStepChange({ ...call, status: 'broadcasted', transactionHash, chainId });\n    const receipt = await waitForSentCallReceipt(transactionHash);\n    await onStepChange({\n      ...call,\n      status: 'success',\n      transactionHash: receipt.transactionHash,\n      originalTransactionHash: transactionHash,\n      chainId,\n    });\n    return transactionHash;\n  };\n\n  const writeContract: Wallet['writeContract'] = async (params) =>\n    trackTransaction(params.address, params.functionName, () => originalWriteContract(params));\n\n  const sendTransaction: Wallet['sendTransaction'] = async (params) => {\n    const { to, data } = params;\n    if (!to || !data) throw new Error('to and data are required');\n    return trackTransaction(to, data.slice(0, 10), () => originalSendTransaction(params));\n  };\n\n  return { ...wallet, signTypedData, writeContract, sendTransaction };\n};\n", "import {\n  PublicClient,\n  TransactionNotFoundError,\n  TransactionReceipt,\n  TransactionReceiptNotFoundError,\n  WaitForTransactionReceiptTimeoutError,\n} from 'viem';\n\nimport { HexString } from '@/blockchain';\n\nexport const isEmptyCalldata = (calldata: HexString) => calldata === '0x';\n\n/**\n * Returns the receipt of a mined transaction, or throws when it reverted.\n *\n * IMPLEMENTATION NOTE: viem's `waitForTransactionReceipt` resolves with the\n * receipt whatever its outcome and reports a revert only through\n * `receipt.status === 'reverted'`\n * (https://viem.sh/docs/actions/public/waitForTransactionReceipt#returns), so a\n * caller that awaits the receipt alone treats a reverted transaction as mined.\n */\nexport const assertTransactionSucceeded = (receipt: TransactionReceipt) => {\n  if (receipt.status === 'reverted') {\n    throw new Error(`Transaction reverted: ${receipt.transactionHash}`);\n  }\n  return receipt;\n};\n\n/**\n * Total time a receipt wait keeps trying before giving up on a broadcast\n * transaction. Slow-to-mine transactions usually confirm well within this\n * window; viem's own default gives up after 180s.\n */\nexport const WAIT_FOR_RECEIPT_TIMEOUT_MILLIS = 360_000;\n\nconst RECEIPT_RETRY_DELAY_MILLIS = 5_000;\n\ntype ReceiptWaiter = Pick<PublicClient, 'waitForTransactionReceipt'>;\n\ninterface ReceiptWaitOptions {\n  timeoutMillis?: number;\n  retryDelayMillis?: number;\n}\n\n/**\n * Wraps a public client so `waitForTransactionReceipt` stays patient for\n * {@link WAIT_FOR_RECEIPT_TIMEOUT_MILLIS} instead of viem's 180s default.\n *\n * viem's wait also rejects with `TransactionReceiptNotFoundError` /\n * `TransactionNotFoundError` long before its timeout when the RPC node lags\n * behind the mempool (its internal lookups exhaust their retries). Those\n * rejections mean the transaction is still pending, so the wrapper retries\n * the wait until the deadline and only then throws\n * `WaitForTransactionReceiptTimeoutError` with the transaction hash.\n */\nexport const withRetriedReceiptWait = <TClient extends ReceiptWaiter>(\n  client: TClient,\n  options: ReceiptWaitOptions = {},\n): TClient => {\n  const {\n    timeoutMillis = WAIT_FOR_RECEIPT_TIMEOUT_MILLIS,\n    retryDelayMillis = RECEIPT_RETRY_DELAY_MILLIS,\n  } = options;\n  const waitForTransactionReceipt: TClient['waitForTransactionReceipt'] = async (args) => {\n    const deadline = Date.now() + timeoutMillis;\n    for (;;) {\n      try {\n        return await client.waitForTransactionReceipt({\n          ...args,\n          timeout: Math.max(deadline - Date.now(), 1),\n        });\n      } catch (error) {\n        const transactionStillPending =\n          error instanceof TransactionReceiptNotFoundError ||\n          error instanceof TransactionNotFoundError;\n        if (!transactionStillPending) throw error;\n        if (deadline - Date.now() <= retryDelayMillis) {\n          throw new WaitForTransactionReceiptTimeoutError({ hash: args.hash });\n        }\n        await new Promise((resolve) => setTimeout(resolve, retryDelayMillis));\n      }\n    }\n  };\n  return { ...client, waitForTransactionReceipt };\n};\n", "import { AbiParametersToPrimitiveTypes, ExtractAbiFunction } from 'abitype';\nimport { Address, Hash, zeroAddress as zeroAddressViem } from 'viem';\n\nimport type { multiSourceLoanABI as multiSourceLoanABIV4 } from '@/generated/blockchain/v4';\nimport type {\n  auctionLoanLiquidatorABI as auctionLoanLiquidatorABIV5,\n  multiSourceLoanABI as multiSourceLoanABIV5,\n} from '@/generated/blockchain/v5';\nimport type {\n  auctionLoanLiquidatorAbi as auctionLoanLiquidatorABIV6,\n  multiSourceLoanAbi as multiSourceLoanABIV6,\n} from '@/generated/blockchain/v6';\nimport type { multiSourceLoanAbi as multiSourceLoanABIV7 } from '@/generated/blockchain/v7';\nimport type { multiSourceLoanAbi as multiSourceLoanABIV8 } from '@/generated/blockchain/v8';\nimport { areSameAddress } from '@/utils/string';\n\ntype RepayAbiTypeV4 = AbiParametersToPrimitiveTypes<\n  ExtractAbiFunction<typeof multiSourceLoanABIV4, 'repayLoan'>['inputs']\n>;\ntype RepayAbiTypeV5 = AbiParametersToPrimitiveTypes<\n  ExtractAbiFunction<typeof multiSourceLoanABIV5, 'repayLoan'>['inputs']\n>;\ntype RepayAbiTypeV6 = AbiParametersToPrimitiveTypes<\n  ExtractAbiFunction<typeof multiSourceLoanABIV6, 'repayLoan'>['inputs']\n>;\n\ntype EmitAbiTypeV4 = AbiParametersToPrimitiveTypes<\n  ExtractAbiFunction<typeof multiSourceLoanABIV4, 'emitLoan'>['inputs']\n>;\ntype EmitAbiTypeV5 = AbiParametersToPrimitiveTypes<\n  ExtractAbiFunction<typeof multiSourceLoanABIV5, 'emitLoan'>['inputs']\n>;\ntype EmitAbiTypeV6 = AbiParametersToPrimitiveTypes<\n  ExtractAbiFunction<typeof multiSourceLoanABIV6, 'emitLoan'>['inputs']\n>;\ntype EmitAbiTypeV7 = AbiParametersToPrimitiveTypes<\n  ExtractAbiFunction<typeof multiSourceLoanABIV7, 'emitLoan'>['inputs']\n>;\ntype EmitAbiTypeV8 = AbiParametersToPrimitiveTypes<\n  ExtractAbiFunction<typeof multiSourceLoanABIV8, 'emitLoan'>['inputs']\n>;\ntype RepayAbiTypeV8 = AbiParametersToPrimitiveTypes<\n  ExtractAbiFunction<typeof multiSourceLoanABIV8, 'repayLoan'>['inputs']\n>;\n\ntype RefiAbiTypeV4 = AbiParametersToPrimitiveTypes<\n  ExtractAbiFunction<typeof multiSourceLoanABIV4, 'refinanceFull'>['inputs']\n>;\ntype RefiAbiTypeV5 = AbiParametersToPrimitiveTypes<\n  ExtractAbiFunction<typeof multiSourceLoanABIV5, 'refinanceFull'>['inputs']\n>;\ntype RefiAbiTypeV6 = AbiParametersToPrimitiveTypes<\n  ExtractAbiFunction<typeof multiSourceLoanABIV6, 'refinanceFull'>['inputs']\n>;\n\ntype PlaceBidAbiTypeV5 = AbiParametersToPrimitiveTypes<\n  ExtractAbiFunction<typeof auctionLoanLiquidatorABIV5, 'placeBid'>['inputs']\n>;\ntype PlaceBidAbiTypeV6 = AbiParametersToPrimitiveTypes<\n  ExtractAbiFunction<typeof auctionLoanLiquidatorABIV6, 'placeBid'>['inputs']\n>;\n\nexport type LoanV4 = RepayAbiTypeV4[2] & { contractAddress: Address };\nexport type LoanV5 = RepayAbiTypeV5[0]['loan'] & {\n  contractAddress: Address;\n  startTime: Date | bigint;\n};\nexport type LoanV6 = RepayAbiTypeV6[0]['loan'] & {\n  contractAddress: Address;\n  startTime: Date | bigint;\n  contractStartTime: Date | bigint;\n};\nexport type LoanV8 = RepayAbiTypeV8[0]['loan'] & {\n  contractAddress: Address;\n  startTime: Date | bigint;\n  contractStartTime: Date | bigint;\n};\nexport type Loan = LoanV4 | LoanV5 | LoanV6 | LoanV8;\n\nexport type OfferV4 = EmitAbiTypeV4[0];\nexport type OfferV5 = EmitAbiTypeV5[0]['executionData']['offer'];\nexport type OfferV6 = EmitAbiTypeV6[0]['executionData']['offerExecution'][number]['offer'];\nexport type OfferV8 = EmitAbiTypeV8[0]['executionData']['offerExecution'][number]['offer'];\n\nexport type RenegotiationV4 = RefiAbiTypeV4[0];\nexport type RenegotiationV5 = RefiAbiTypeV5[0];\nexport type RenegotiationV6 = RefiAbiTypeV6[0];\n\nexport type SignableRepaymentDataV5 = RepayAbiTypeV5[0]['data'];\n\nexport type SignableRepaymentDataV6 = RepayAbiTypeV6[0]['data'];\n\nexport type ExecutionDataV6 = EmitAbiTypeV6[0]['executionData'];\nexport type ExecutionDataV7 = EmitAbiTypeV7[0]['executionData'];\nexport type ExecutionDataV8 = EmitAbiTypeV8[0]['executionData'];\n\ntype AuctionV5 = PlaceBidAbiTypeV5[2];\ntype AuctionV6 = PlaceBidAbiTypeV6[2];\nexport type Auction = AuctionV5 | AuctionV6;\n\nexport type HexString = `0x${string}`;\nexport type Signature = HexString;\n\nexport const zeroAddress: Address = zeroAddressViem;\nexport const zeroHash: Hash = `0x${'0'.repeat(64)}`;\nexport const zeroHex: HexString = `0x0`;\n\nexport const REORG_SAFETY_BUFFER = 5n * 60n;\n\n/** How long a borrower's signed loan execution data stays valid once it is sent on-chain. */\nexport const BORROWER_SIGNATURE_LIFETIME = 5n * 60n;\n\n/** Native ETH marker on Ethereum mainnet: the zero address. */\nexport const __ETH_ADDRESS = zeroAddress;\n/** Synthetic sentinel the Gondi API uses for native HYPE on HyperEVM. */\nexport const __HYPE_ADDRESS = '0x0000000000000000000000000000000000000999';\n/** Synthetic sentinel the Gondi API uses for native ETH on the Robinhood chain. */\nexport const __RETH_ADDRESS = '0x0000000000000000000000000000000000004663';\n\n/**\n * Whether a currency address returned by the Gondi API represents a chain's native currency.\n *\n * The zero address only marks native ETH on Ethereum; HyperEVM and Robinhood orders carry the\n * synthetic sentinels above instead, so never compare a currency address against the zero\n * address to decide native-ness.\n */\nexport const isNativeCurrency = (address: Address) =>\n  [__ETH_ADDRESS, __HYPE_ADDRESS, __RETH_ADDRESS].some((nativeAddress) =>\n    areSameAddress(address, nativeAddress),\n  );\n", "export type Optional<T, K extends keyof T> = Pick<Partial<T>, K> & Omit<T, K>;\nexport type OptionalNullable<T, K extends keyof T> = Omit<T, K> & {\n  [P in K]?: T[P] | null | undefined;\n};\nexport const isDefined = <T>(value: T | null | undefined): value is T =>\n  value !== null && value !== undefined;\n\nexport type ObjectValues<T> = T[keyof T];\n", "import { Address } from 'abitype';\n\nimport { isDefined } from '@/utils/types';\n\nexport const NATIVE_MARKETPLACE = 'MarketPlace.Native';\nexport const CONTRACT_DOMAIN_NAME = 'GONDI_MULTI_SOURCE_LOAN';\n\nexport const areSameAddress = (\n  adr1: string | Address | null | undefined,\n  adr2: string | Address | null | undefined,\n) => isDefined(adr1) && adr1.toLowerCase() === adr2?.toLowerCase();\n", "import { ApolloClient, NormalizedCacheObject } from '@apollo/client';\nimport { getAddress } from 'viem';\n\nimport { zeroAddress } from '@/blockchain';\nimport { apolloClient } from '@/clients/api/client';\nimport { getSdkApollo } from '@/clients/api/sdk';\nimport { Wallet } from '@/clients/contracts';\nimport {\n  BnplOrderInput,\n  BulkNftOrdersInput,\n  CollectionOrderInput,\n  CollectionSignedOfferInput,\n  DealInput,\n  ListListingsQueryVariables,\n  ListLoansQueryVariables,\n  ListOffersQueryVariables,\n  LoanOfferPublicationInput,\n  NftOrderInput,\n  NftSetOrderInput,\n  PreviewItemLoanOfferCompetitionQuery,\n  RenegotiationOfferInput,\n  SingleNftOfferInput,\n  SingleNftOrderInput,\n  SingleNftSignedOfferInput,\n  TraitOrderInput,\n  TraitSignedOfferInput,\n} from '@/generated/graphql';\nimport { OnStepChange } from '@/gondi';\nimport { RenegotiationOffer } from '@/model';\nimport { isDefined } from '@/utils/types';\n\nexport type Props = {\n  apiClient?: ApolloClient<NormalizedCacheObject>;\n  wallet: Wallet;\n  onStepChange?: OnStepChange;\n};\n\n/** A bid or listing `publishOrder` accepts: one NFT, a collection, some traits or a set of NFTs. */\nexport type OrderInput =\n  | SingleNftOrderInput\n  | CollectionOrderInput\n  | TraitOrderInput\n  | NftSetOrderInput;\n\ntype PageInfo = { endCursor?: string | null; hasNextPage: boolean };\n\nconst mapPageInfo = ({ endCursor, hasNextPage }: PageInfo) =>\n  hasNextPage\n    ? // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n      { hasNextPage, cursor: endCursor! }\n    : { hasNextPage, cursor: null };\n\n/**\n * Returns a competition preview only when it qualifies, so a quote that cannot\n * be published never reaches the wallet for a signature.\n *\n * @throws Error with the preview's `reason`, or `INSUFFICIENT_IMPROVEMENT`\n * when it gives none, if the preview is incomplete or does not qualify.\n */\nconst qualifyingPreview = (preview: PreviewItemLoanOfferCompetitionQuery['preview']) => {\n  if (!preview.complete || !preview.qualifies)\n    throw new Error(preview.reason ?? 'INSUFFICIENT_IMPROVEMENT');\n  return preview;\n};\n\nexport const apiDomain = () => process.env.GONDI_URL ?? 'https://api.gondi.xyz';\nexport const lendingApiDomain = () => process.env.GONDI_URL ?? 'https://api2.gondi.xyz';\n\nexport class Api {\n  api: ReturnType<typeof getSdkApollo>;\n  getSaleCalldata;\n  generateSingleNftOfferHash;\n  generateCollectionOfferHash;\n  generateTraitOfferHash;\n  generateRenegotiationOfferHash;\n  nftIdBySlugTokenId;\n  nftIdByContractAddressAndTokenId;\n  nftFlaggedByContractAddressAndTokenId;\n  collections;\n  collectionIdBySlug;\n  collectionsIdByContractAddress;\n  collectionByContractAddress;\n  listNft;\n  unlistNft;\n  ownedNfts;\n  hideOffer;\n  hideOffers;\n  hideRenegotiationOffer;\n  unhideOffer;\n  unhideRenegotiationOffer;\n  hideOrder;\n  showOrder;\n  cancelTradeOrders;\n  getCancelOrdersCalldata;\n  collectionStepsById;\n\n  constructor({ apiClient, wallet, onStepChange }: Props) {\n    const gqlClient = apiClient ?? apolloClient(wallet);\n    this.api = getSdkApollo(gqlClient, onStepChange);\n\n    this.getSaleCalldata = this.api.getSaleCalldata;\n    this.generateSingleNftOfferHash = this.api.generateSingleNftOfferHash;\n    this.generateCollectionOfferHash = this.api.generateCollectionOfferHash;\n    this.generateTraitOfferHash = this.api.generateTraitOfferHash;\n    this.generateRenegotiationOfferHash = this.api.generateRenegotiationOfferHash;\n    this.nftIdBySlugTokenId = this.api.nftIdBySlugTokenId;\n    this.nftIdByContractAddressAndTokenId = this.api.nftIdByContractAddressAndTokenId;\n    this.nftFlaggedByContractAddressAndTokenId = this.api.nftFlaggedByContractAddressAndTokenId;\n    this.collectionIdBySlug = this.api.collectionIdBySlug;\n    this.collectionsIdByContractAddress = this.api.collectionsIdByContractAddress;\n    this.collections = this.api.collections;\n    this.collectionByContractAddress = this.api.collectionByContractAddress;\n    this.listNft = this.api.listNft;\n    this.unlistNft = this.api.unlistNft;\n    this.ownedNfts = this.api.ownedNfts;\n    this.hideOffer = this.api.hideOffer;\n    this.hideOffers = this.api.hideOffers;\n    this.hideRenegotiationOffer = this.api.hideRenegotiationOffer;\n    this.unhideOffer = this.api.unhideOffer;\n    this.unhideRenegotiationOffer = this.api.unhideRenegotiationOffer;\n    this.hideOrder = this.api.hideOrder;\n    this.showOrder = this.api.showOrder;\n    this.cancelTradeOrders = this.api.cancelTradeOrders;\n    this.getCancelOrdersCalldata = this.api.getCancelOrdersCalldata;\n    this.collectionStepsById = this.api.collectionStepsById;\n  }\n\n  /** Check competition before asking the wallet to sign; saving rechecks atomically. */\n  async previewSingleNftPublication(\n    offerInput: SingleNftOfferInput,\n    publication: LoanOfferPublicationInput,\n  ) {\n    const { preview } = await this.api.previewItemLoanOfferCompetition({\n      offerInput,\n      replacementIds: publication.replacementIds,\n    });\n    return qualifyingPreview(preview);\n  }\n\n  async previewRenegotiationPublication(\n    renegotiationInput: RenegotiationOfferInput,\n    publication: LoanOfferPublicationInput,\n  ) {\n    const { preview } = await this.api.previewRenegotiationCompetition({\n      renegotiationInput,\n      replacementIds: publication.replacementIds,\n    });\n    return qualifyingPreview(preview);\n  }\n\n  async saveSingleNftOffer(\n    offerInput: SingleNftSignedOfferInput,\n    publication?: LoanOfferPublicationInput,\n  ) {\n    const offer = {\n      ...offerInput,\n      borrowerAddress: offerInput.borrowerAddress || zeroAddress,\n    };\n    const response = await this.api.saveSingleNftOffer({ offer, publication });\n    const nftCollateralAddress =\n      response.offer.nft.collection?.contractData?.contractAddress || zeroAddress;\n    return {\n      id: response.offer.id,\n      nftCollateralAddress,\n      nftCollateralTokenId: response.offer.nft.tokenId,\n      ...offerInput,\n    };\n  }\n\n  async publishOrder(orderInput: OrderInput) {\n    if ('traitIds' in orderInput) {\n      const response = await this.api.publishOrderForTrait({ orderInput });\n      return response.result;\n    }\n    if ('tokenId' in orderInput) {\n      const response = await this.api.publishOrderForNft({ orderInput });\n      return response.result;\n    }\n    if ('nftIds' in orderInput) {\n      const response = await this.api.publishOrderForNftSet({ orderInput });\n      return response.result;\n    }\n    if ('collectionId' in orderInput) {\n      const response = await this.api.publishOrderForCollection({ orderInput });\n      return response.result;\n    }\n    throw new Error('Invalid order input');\n  }\n\n  async publishDeal(dealInput: DealInput) {\n    const response = await this.api.publishDeal({ dealInput });\n    return response.result;\n  }\n\n  async publishSellAndRepayOrder(orderInput: NftOrderInput) {\n    orderInput.orderToFillInt64 = orderInput.orderToFillInt64 ?? orderInput.orderToFill;\n    orderInput.replaceOrderIdInt64 = orderInput.replaceOrderIdInt64 ?? orderInput.replaceOrderId;\n    orderInput.orderToFill = undefined;\n    orderInput.replaceOrderId = undefined;\n    const response = await this.api.publishSellAndRepayOrder({ orderInput });\n    return response.result;\n  }\n\n  async publishBuyNowPayLaterOrder(orderInput: BnplOrderInput) {\n    const response = await this.api.publishBuyNowPayLaterOrder({ orderInput });\n    return response.result;\n  }\n\n  async publishBulkOrders(bulkInput: BulkNftOrdersInput) {\n    const response = await this.api.publishBulkOrders({ bulkInput });\n    return response.result;\n  }\n\n  async saveCollectionOffer(\n    offerInput: CollectionSignedOfferInput,\n    publication?: LoanOfferPublicationInput,\n  ) {\n    const offer = {\n      ...offerInput,\n      borrowerAddress: offerInput.borrowerAddress || zeroAddress,\n    };\n    const response = await this.api.saveCollectionOffer({ offer, publication });\n    const nftCollateralAddress =\n      response.offer.collection?.contractData?.contractAddress || zeroAddress;\n    return {\n      id: response.offer.id,\n      nftCollateralAddress,\n      nftCollateralTokenId: 0n,\n      ...offerInput,\n    };\n  }\n\n  async saveTraitOffer(offerInput: TraitSignedOfferInput) {\n    const offer = {\n      ...offerInput,\n      borrowerAddress: offerInput.borrowerAddress || zeroAddress,\n    };\n    const response = await this.api.saveTraitOffer({ offer });\n    const nftCollateralAddress =\n      response.offer.collection?.contractData?.contractAddress || zeroAddress;\n    return {\n      id: response.offer.id,\n      nftCollateralAddress,\n      nftCollateralTokenId: 0n,\n      ...offerInput,\n    };\n  }\n\n  async saveRefinanceOffer(\n    renegotiation: RenegotiationOffer,\n    fallbackOffer?: SingleNftSignedOfferInput,\n    publication?: LoanOfferPublicationInput,\n  ) {\n    const response = await this.api.saveRenegotiationOffer({\n      renegotiation,\n      fallbackOffer,\n      publication,\n    });\n    return { ...renegotiation, id: response.renegotiation.id };\n  }\n\n  async listOffers(props: ListOffersQueryVariables) {\n    const {\n      result: { edges, pageInfo },\n    } = await this.api.listOffers(props);\n    const offers = edges\n      .map((edge) => {\n        const { __typename, ...node } = edge.node;\n        const nftCollateralAddress =\n          'collection' in node\n            ? node.collection.contractData?.contractAddress\n            : node.nft.collection?.contractData?.contractAddress;\n        const nftCollateralTokenId = 'collection' in node ? 0n : node.nft.tokenId;\n        if (!isDefined(nftCollateralAddress)) return undefined;\n        return {\n          ...node,\n          type: __typename,\n          lender: node.lenderAddress,\n          borrower: node.borrowerAddress,\n          signer: node.signerAddress,\n          offerValidators: node.validators,\n          nftCollateralAddress,\n          nftCollateralTokenId,\n        };\n      })\n      .filter(isDefined);\n    return {\n      ...mapPageInfo(pageInfo),\n      offers,\n    };\n  }\n\n  async listLoans(props: ListLoansQueryVariables) {\n    const {\n      loans: { edges, pageInfo },\n    } = await this.api.listLoans(props);\n    const loans = edges.map((edge) => {\n      const { __typename, ...node } = edge.node;\n      return {\n        ...node,\n        type: __typename,\n        contractAddress: node.address,\n        nftCollateralTokenId: node.nft.tokenId,\n        nftCollateralAddress: node.nft.collection?.contractData?.contractAddress,\n        borrower: node.borrowerAddress,\n        startTime: BigInt(Math.floor(node.startTime.getTime() / 1_000)),\n        source: node.sources.map((source) => ({\n          ...source,\n          lender: getAddress(source.lenderAddress),\n          loanId: BigInt(source.loanId),\n          startTime: BigInt(Math.floor(source.startTime.getTime() / 1_000)),\n        })),\n      };\n    });\n    return {\n      ...mapPageInfo(pageInfo),\n      loans,\n    };\n  }\n\n  async listListings(props: ListListingsQueryVariables) {\n    const {\n      result: { edges, pageInfo },\n    } = await this.api.listListings(props);\n    const listings = edges.map((edge) => edge.node);\n    return {\n      ...mapPageInfo(pageInfo),\n      listings,\n    };\n  }\n\n  async getWrapperAddress(collection: {\n    contractData: { contractAddress: `0x${string}` };\n    wrapperCollections?: { contractData: { contractAddress: `0x${string}` } }[];\n  }) {\n    if (collection.wrapperCollections)\n      return collection.wrapperCollections[0]?.contractData?.contractAddress;\n    const { collection: collections } = await this.api.collectionByContractAddress({\n      contractAddress: collection.contractData.contractAddress,\n    });\n    const wrapperAddress = collections[0]?.wrapperCollections[0]?.contractData?.contractAddress;\n    if (!wrapperAddress) throw Error('Collection has no associated wrappers');\n    return wrapperAddress;\n  }\n}\n", "import {\n  ApolloClient,\n  ApolloLink,\n  createHttpLink,\n  InMemoryCache,\n} from '@apollo/client/core/index.js';\nimport { setContext } from '@apollo/client/link/context/index.js';\nimport { withScalars } from 'apollo-link-scalars';\nimport { buildSchema } from 'graphql';\n\nimport { lendingApiDomain } from '@/clients/api';\nimport { Credential, SessionToken } from '@/clients/api/auth';\nimport { Wallet } from '@/clients/contracts';\nimport lendingSchemaText from '@/generated/graphql/lending-schema.graphql';\n\nconst apiUrl = () => `${lendingApiDomain()}/lending/graphql`;\nconst lendingSchema = buildSchema(lendingSchemaText);\n\nObject.assign(BigInt.prototype, {\n  toJSON() {\n    return this.toString();\n  },\n});\n\nconst typesMap = {\n  datetime: {\n    serialize: (parsed: unknown) => {\n      if (parsed instanceof Date) return parsed.toISOString();\n      return null;\n    },\n    parseValue: (raw: unknown) => {\n      if (typeof raw === 'string') return new Date(raw);\n      if (raw instanceof Date) return raw;\n      return null;\n    },\n  },\n  BigInt: {\n    serialize: (parsed: unknown) => {\n      if (typeof parsed === 'bigint') return String(parsed);\n      return null;\n    },\n    parseValue: (raw: unknown) => {\n      if (typeof raw === 'string') return BigInt(raw);\n      return null;\n    },\n  },\n  // Note: this parse supports up to 2**53 - 1\n  Int64: {\n    serialize: (parsed: unknown) => {\n      return Number(parsed);\n    },\n    parseValue: (raw: unknown) => {\n      return Number(raw);\n    },\n  },\n  DateTime: {\n    serialize: (parsed: unknown) => {\n      if (parsed instanceof Date) return parsed.toISOString();\n      return null;\n    },\n    parseValue: (raw: unknown) => {\n      if (typeof raw === 'string') return new Date(raw);\n      if (raw instanceof Date) return raw;\n      return null;\n    },\n  },\n};\n\nconst authLink = (credential: Credential) =>\n  setContext(async (request) => {\n    return await credential.authorizeRequest(request);\n  });\n\nconst link = ApolloLink.from([\n  withScalars({ schema: lendingSchema, typesMap }),\n  createHttpLink({\n    uri: ({ operationName }) => `${apiUrl()}?operation=${encodeURIComponent(operationName)}`,\n  }),\n]);\n\nexport const apolloClient = (wallet: Wallet) => {\n  const credential = new SessionToken({ wallet });\n  return new ApolloClient({\n    link: ApolloLink.from([authLink(credential), link]),\n    defaultOptions: {\n      query: {\n        errorPolicy: 'all',\n        fetchPolicy: 'no-cache',\n      },\n      mutate: {\n        errorPolicy: 'all',\n        fetchPolicy: 'no-cache',\n      },\n      watchQuery: {\n        fetchPolicy: 'no-cache',\n        nextFetchPolicy: 'no-cache',\n        errorPolicy: 'ignore',\n      },\n    },\n    cache: new InMemoryCache({}),\n  });\n};\n", "import {\n  ApolloClient,\n  ApolloLink,\n  createHttpLink,\n  GraphQLRequest,\n  InMemoryCache,\n} from '@apollo/client/core/index.js';\nimport { gql } from 'graphql-tag';\n\nimport { apiDomain } from '@/clients/api';\nimport { buildSiweMessage } from '@/clients/api/siwe';\nimport { Wallet } from '@/clients/contracts';\n\nexport type Credential = SessionToken;\n\nconst authApiUrl = () => `${apiDomain()}/graphql`;\n\nexport const getAuthClient = async () => {\n  const link = ApolloLink.from([\n    createHttpLink({\n      uri: ({ operationName }) => `${authApiUrl()}?operation=${encodeURIComponent(operationName)}`,\n    }) as unknown as ApolloLink,\n  ]);\n  return new ApolloClient({\n    link: ApolloLink.from([link]),\n    defaultOptions: {\n      query: {\n        errorPolicy: 'all',\n      },\n      mutate: {\n        errorPolicy: 'all',\n      },\n    },\n    cache: new InMemoryCache({}),\n  });\n};\n\nexport const signIn = async ({ wallet, issuedAt }: { wallet: Wallet; issuedAt?: string }) => {\n  const authClient = await getAuthClient();\n\n  const { data, errors } = await authClient.mutate({\n    mutation: gql`\n      mutation GenerateSignInNonce($nonceInput: NonceInput!) {\n        generateSignInNonce(nonceInput: $nonceInput)\n      }\n    `,\n    variables: {\n      nonceInput: {\n        walletAddress: wallet.account.address,\n        blockchain: 'ETHEREUM',\n      },\n    },\n  });\n\n  if (errors) throw new Error(errors.map((e) => e.message).join(', '));\n\n  const nonce = data?.generateSignInNonce;\n\n  const message = buildSiweMessage({\n    domain: 'gondi.xyz',\n    address: wallet.account.address,\n    chainId: wallet.chain.id,\n    statement: 'Sign in with Ethereum to the app.',\n    uri: authApiUrl(),\n    version: '1',\n    nonce,\n    issuedAt,\n  });\n\n  const signature = await wallet.signMessage({\n    message,\n  });\n\n  const { data: siweData, errors: siweErrors } = await authClient.mutate({\n    mutation: gql`\n      mutation SignInWithEthereum($siweInput: SiweInput!) {\n        signInWithEthereum(siweInput: $siweInput)\n      }\n    `,\n    variables: {\n      siweInput: { message, signature },\n    },\n  });\n\n  if (siweErrors) throw new Error(siweErrors.map((e) => e.message).join(', '));\n\n  const accessToken = siweData?.signInWithEthereum;\n  if (!accessToken) throw new Error(\"Couldn't generate Access Token, please try again later\");\n  return accessToken;\n};\n\nexport class SessionToken {\n  token?: string;\n  wallet: Wallet;\n\n  constructor({ token, wallet }: { token?: string; wallet: Wallet }) {\n    this.token = token;\n    this.wallet = wallet;\n  }\n\n  async authorizeRequest(request: GraphQLRequest) {\n    await this.signIn();\n    const { headers = {} }: { headers?: object } = request.context || {\n      headers: {},\n    };\n    return {\n      ...request,\n      headers: { ...headers, authorization: `Bearer ${this.token}` },\n    };\n  }\n  private async signIn() {\n    if (!this.token) {\n      this.token = await signIn({ wallet: this.wallet });\n    }\n  }\n}\n", "import { getAddress } from 'viem';\n\nexport const buildSiweMessage = ({\n  domain,\n  address,\n  statement,\n  uri,\n  version,\n  chainId,\n  nonce,\n  issuedAt,\n}: {\n  domain: string;\n  address: string;\n  statement: string;\n  uri: string;\n  version: string;\n  chainId: number;\n  nonce: string;\n  issuedAt?: string;\n}): string => {\n  const checksummed = getAddress(address);\n  if (checksummed !== address) {\n    throw new Error(`Address must be EIP-55 checksummed: ${address}`);\n  }\n  const messageIssuedAt = issuedAt ?? new Date().toISOString();\n  return (\n    `${domain} wants you to sign in with your Ethereum account:\\n` +\n    `${checksummed}\\n\\n` +\n    `${statement}\\n\\n` +\n    `URI: ${uri}\\n` +\n    `Version: ${version}\\n` +\n    `Chain ID: ${chainId}\\n` +\n    `Nonce: ${nonce}\\n` +\n    `Issued At: ${messageIssuedAt}`\n  );\n};\n", "type ActiveOfferNotification implements Node & Notification {\n  createdOn: DateTime!\n  id: String!\n  notificationType: String!\n  offer: Offer!\n  offerId: String!\n  readOn: DateTime\n  user: User!\n}\n\ninterface Activity implements Event & Node {\n  id: String!\n  timestamp: DateTime!\n  txHash: Hash!\n}\n\n\"\"\"\nA live activity-feed update: the re-fetched event row plus the time it was emitted. Scoping happens server-side from the subscription's filter arguments, so every delivered payload already matches what the subscriber asked for.\n\"\"\"\ntype ActivityUpdate {\n  changedAt: DateTime!\n  event: Event!\n}\n\nscalar Address\n\ntype AddressProfile {\n  name: String\n  profilePictureUrl: String\n}\n\n\"\"\"\nOn-chain account type of a wallet address.\n\"\"\"\nenum AddressType {\n  CONTRACT\n  CONTRACT_WALLET\n  DELEGATED_EOA\n  EOA\n}\n\ntype ApprovalExposure {\n  contractAddress: Address!\n\n  \"\"\"\n  Held NFTs valued at their collection floor in USD.\n  \"\"\"\n  exposedValueUsd: Float\n\n  \"\"\"\n  Indexed NFTs the owner holds in the contract; null when GONDI does not index the contract.\n  \"\"\"\n  heldCount: Int\n\n  \"\"\"\n  Whether the operator is a GONDI contract, Seaport or the OpenSea conduit, rather than a third party that could move the NFTs.\n  \"\"\"\n  isStandard: Boolean!\n\n  \"\"\"\n  The 20 most valuable held NFTs, highest floor first.\n  \"\"\"\n  nfts: [ExposedNft!]!\n  operator: Address!\n\n  \"\"\"\n  What the operator is; null when the explorer lookup fails.\n  \"\"\"\n  operatorKind: OperatorKind\n\n  \"\"\"\n  The operator's verified contract name; null for wallets, unverified contracts and when the explorer lookup fails.\n  \"\"\"\n  operatorName: String\n  owner: Address!\n}\n\ntype ApprovalExposures {\n  \"\"\"\n  The 200 most exposed grants, highest exposed value first.\n  \"\"\"\n  exposures: [ApprovalExposure!]!\n\n  \"\"\"\n  Wallets with more approval events than one request reads: their oldest grants and the most recent block window are checked, grants made in between may be missing.\n  \"\"\"\n  incompleteOwners: [Address!]!\n}\n\n\"\"\"\nAn artist or creator linked to NFTs or collections.\n\"\"\"\ntype Artist implements Node {\n  artistType: String!\n  artworksCount: Int!\n  bio: String\n  collectionsCount: Int!\n  ethMintAddresses: [String!]!\n\n  \"\"\"\n  Number of wallets following this artist.\n  \"\"\"\n  followersCount: Int!\n  id: String!\n  image: Asset\n\n  \"\"\"\n  Whether any wallet of the authenticated user's account follows this artist. False when anonymous.\n  \"\"\"\n  isFollowed: Boolean!\n  lastMint: NFT\n  marketStats: ArtistMarketStats!\n  name: String!\n\n  \"\"\"\n  NFTs of the artist the wallets hold, reached through the NFT's own artist link or its collection's, with the custody rules of listArtistHolders. For ERC1155 this counts tokens held, not units.\n  \"\"\"\n  numberOfNftsOwned(walletAddresses: [Address!]!): Int!\n\n  \"\"\"\n  NFTs of the artist with an ask visible to the requesting wallet.\n  \"\"\"\n  numberOfPricedNfts(marketplaces: [MarketPlaceType!] = null): Int!\n  sales1d: Int!\n  slug: String!\n  socials: [String!]!\n  totalVolume: Float!\n\n  \"\"\"\n  Eligible collectors: wallets holding the artist's artworks, counted as the Collectors tab lists them by default (listArtistHolderPopulation with includeCustodians false, hideArtistAndBurnWallets true and addressTypes EOA, DELEGATED_EOA and CONTRACT_WALLET). Excludes the artist's registered mint wallets and burn addresses, custodial platforms, contract addresses that are not wallets, and addresses not classified yet.\n  \"\"\"\n  uniqueCollectors: Int!\n  volume1d: Float!\n  websites: [String!]!\n}\n\n\"\"\"\nOne artist work, an edition's copies when grouping editions, or the remaining works in a collection.\n\"\"\"\ntype ArtistCatalogEntry {\n  \"\"\"\n  Earliest indexed mint among the entry's works, the value the FIRST_MINT_DATE sort orders by. Only resolved under that sort: null on other sorts, and when no mint was indexed.\n  \"\"\"\n  firstMintDate: DateTime\n  id: ID!\n  item: ArtistCatalogItem!\n\n  \"\"\"\n  How many NFTs the entry stands for: one for a work of its own, the copies of an edition, or the collection's grouped works.\n  \"\"\"\n  itemsCount: Int!\n\n  \"\"\"\n  The latest sale among the NFTs the entry stands for: the work itself, or the edition's or collection's grouped works under the same item-type filter.\n  \"\"\"\n  lastSale: Sale\n\n  \"\"\"\n  Up to four of the NFTs an edition or collection entry groups; empty for a work of its own.\n  \"\"\"\n  previewNfts: [NFT!]!\n  price: CurrencyAmount\n  sales1d: Int!\n\n  \"\"\"\n  The highest sampled bid among the NFTs the entry stands for, gross of fees, in its own currency: the value the TOP_OFFER sort orders by.\n  \"\"\"\n  topOffer: CurrencyAmount\n  volume1d: Float!\n}\n\ntype ArtistCatalogEntryConnection {\n  edges: [ArtistCatalogEntryEdge!]!\n  pageInfo: PageInfo!\n  totalCount: Int!\n}\n\ntype ArtistCatalogEntryEdge {\n  cursor: String!\n  node: ArtistCatalogEntry!\n}\n\n\"\"\"\nThe work an artist catalog entry stands for.\n\"\"\"\nunion ArtistCatalogItem = Collection | Edition | NFT\n\nenum ArtistCatalogSortField {\n  FIRST_MINT_DATE\n  PRICE\n  SALES_1D\n  TOP_OFFER\n  VOLUME_1D\n}\n\ninput ArtistCatalogSortInput {\n  field: ArtistCatalogSortField!\n  order: Ordering!\n}\n\ninput ArtistCollectionInput {\n  collectionIds: [Int!]!\n  source: ArtistCollectionSourceType\n}\n\nenum ArtistCollectionSourceType {\n  COLLECTION_ARTISTS\n  NFT_ARTISTS\n}\n\ntype ArtistConnection {\n  edges: [ArtistEdge!]!\n  pageInfo: PageInfo!\n  totalCount: Int!\n}\n\ntype ArtistEdge {\n  cursor: String!\n  node: Artist!\n}\n\n\"\"\"\nA wallet holding NFTs linked to the artist through the NFT or collection. Loan-escrowed NFTs belong to their borrower. Counts distinct tokens, including one per ERC1155 token regardless of copies.\n\"\"\"\ntype ArtistHolder {\n  \"\"\"\n  The holder's last 10 sales of NFTs by the artist, newest first; the holder bought when it is the receiver and sold when it is the sender.\n  \"\"\"\n  activity: [Sale!]!\n  address: Address!\n\n  \"\"\"\n  Highest-ranked account type classified for this address on any chain: contract wallet, other contract, EIP-7702 delegated EOA, then EOA. Null when unclassified.\n  \"\"\"\n  addressType: AddressType\n\n  \"\"\"\n  Held NFTs by the artist whose item type is an edition (ERC1155 counts tokens held, not units); an NFT without a classified item type is not counted.\n  \"\"\"\n  editionsOwned: Int!\n\n  \"\"\"\n  When the wallet acquired the earliest NFT by the artist it still holds: the latest transfer or mint of that NFT to the wallet, which for an NFT escrowed in a loan or stash is the one before the escrow. The return from escrow when a loan is repaid or a stash unwrapped does not count. Null when no such transfer is recorded.\n  \"\"\"\n  firstAcquired: DateTime\n  id: String!\n\n  \"\"\"\n  When the wallet acquired the latest NFT by the artist it still holds, by the same rule as firstAcquired.\n  \"\"\"\n  lastAcquired: DateTime\n  name: String\n\n  \"\"\"\n  Held NFTs by the artist whose item type is a 1/1; an NFT without a classified item type is not counted.\n  \"\"\"\n  oneOfOnesOwned: Int!\n\n  \"\"\"\n  Distinct NFTs by the artist the wallet holds (for ERC1155 this counts tokens held, not total units).\n  \"\"\"\n  ownedAmount: Int!\n\n  \"\"\"\n  Held NFTs by the artist whose item type is PFP; an NFT without a classified item type is not counted.\n  \"\"\"\n  pfpsOwned: Int!\n\n  \"\"\"\n  Up to 24 of the NFTs by the artist the wallet holds.\n  \"\"\"\n  previewItems: [NFT!]!\n  profilePictureUrl: String\n\n  \"\"\"\n  Held NFTs by the artist whose item type is a series piece; an NFT without a classified item type is not counted.\n  \"\"\"\n  seriesOwned: Int!\n}\n\ntype ArtistHolderConnection {\n  edges: [ArtistHolderEdge!]!\n  pageInfo: PageInfo!\n  totalCount: Int!\n}\n\ntype ArtistHolderEdge {\n  cursor: String!\n  node: ArtistHolder!\n}\n\n\"\"\"\nQuantity metrics over eligible holders before wallet search.\n\"\"\"\ntype ArtistHolderInsights {\n  \"\"\"\n  Distinct artworks the holders hold, each counted once however many copies or holders it has, where items counts every copy.\n  \"\"\"\n  artworks: BigInt!\n  buckets: [ArtistHolderSizeBucket!]!\n  editions: BigInt!\n\n  \"\"\"\n  Holders of every classified type present in the population; null when fewer than two classified types are present.\n  \"\"\"\n  everyTypeHolders: Int\n  holders: Int!\n  items: BigInt!\n  largestHolderAddress: Address\n  largestHolderItems: BigInt!\n\n  \"\"\"\n  Fewest wallets holding strictly more than half the items, ordered by quantity. This is not a value-based concentration measure.\n  \"\"\"\n  majorityHolders: Int!\n  multiCollectionHolders: Int!\n  oneOfOnes: BigInt!\n  pfps: BigInt!\n  series: BigInt!\n  singletonHolders: Int!\n  topTenItems: BigInt!\n  unclassified: BigInt!\n}\n\ntype ArtistHolderPopulationConnection {\n  edges: [ArtistRankedHolderEdge!]!\n  insights: ArtistHolderInsights!\n  pageInfo: PageInfo!\n\n  \"\"\"\n  Eligible holder count before wallet text search.\n  \"\"\"\n  populationCount: Int!\n  totalCount: Int!\n\n  \"\"\"\n  A wallet's eligible holdings and rank, even outside the loaded page or wallet search. Null if excluded or not a holder.\n  \"\"\"\n  wallet(address: Address!): ArtistRankedHolder\n}\n\n\"\"\"\nUnion of collection, edition, NFT and item-type selections, intersected with the artist. Empty selections mean all artist artworks.\n\"\"\"\ninput ArtistHolderScopeInput {\n  collectionIds: [Int!] = null\n  editionIds: [Int!] = null\n\n  \"\"\"\n  Restrict every selection to these artwork types (OR).\n  \"\"\"\n  filterItemTypes: [ItemType!] = null\n  itemTypes: [ItemType!] = null\n  matchAll: Boolean! = false\n  nftIds: [Int!] = null\n}\n\ntype ArtistHolderSizeBucket {\n  holders: Int!\n  items: BigInt!\n  maximum: Int\n  minimum: Int!\n}\n\nenum ArtistHolderSortField {\n  EDITIONS_OWNED\n  FIRST_ACQUIRED\n  LAST_ACQUIRED\n  ONE_OF_ONES_OWNED\n  OWNED_AMOUNT\n  PFPS_OWNED\n  SERIES_OWNED\n}\n\ninput ArtistHolderSortInput {\n  field: ArtistHolderSortField!\n  order: Ordering!\n}\n\n\"\"\"\nA wallet holding NFTs linked to the artist through the NFT or collection. Loan-escrowed NFTs belong to their borrower. Counts ERC1155 copies, including units attributed through held or borrowed vaults.\n\"\"\"\ntype ArtistHolderV2 {\n  \"\"\"\n  The holder's last 10 sales of NFTs by the artist, newest first; the holder bought when it is the receiver and sold when it is the sender.\n  \"\"\"\n  activity: [Sale!]!\n  address: Address!\n\n  \"\"\"\n  Highest-ranked account type classified for this address on any chain: contract wallet, other contract, EIP-7702 delegated EOA, then EOA. Null when unclassified.\n  \"\"\"\n  addressType: AddressType\n\n  \"\"\"\n  Held Edition items by the artist, counting ERC1155 copies.\n  \"\"\"\n  editionsOwned: BigInt!\n\n  \"\"\"\n  When the wallet acquired the earliest NFT by the artist it still holds: the latest transfer or mint of that NFT to the wallet, which for an NFT escrowed in a loan or stash is the one before the escrow. The return from escrow when a loan is repaid or a stash unwrapped does not count. Null when no such transfer is recorded.\n  \"\"\"\n  firstAcquired: DateTime\n  id: String!\n\n  \"\"\"\n  When the wallet acquired the latest NFT by the artist it still holds, by the same rule as firstAcquired.\n  \"\"\"\n  lastAcquired: DateTime\n  name: String\n\n  \"\"\"\n  Held 1/1 items by the artist, counting ERC1155 copies.\n  \"\"\"\n  oneOfOnesOwned: BigInt!\n\n  \"\"\"\n  Held items by the artist, counting ERC1155 copies, including unclassified items.\n  \"\"\"\n  ownedAmount: BigInt!\n\n  \"\"\"\n  Held PFP items by the artist, counting ERC1155 copies.\n  \"\"\"\n  pfpsOwned: BigInt!\n\n  \"\"\"\n  Up to 24 distinct held artworks, with copies grouped by NFT.\n  \"\"\"\n  previewItems(first: Int! = 24): [ArtistHolding!]!\n  profilePictureUrl: String\n\n  \"\"\"\n  Held Series items by the artist, counting ERC1155 copies.\n  \"\"\"\n  seriesOwned: BigInt!\n\n  \"\"\"\n  Held units with no classification; included in ownedAmount.\n  \"\"\"\n  unclassifiedOwned: BigInt!\n}\n\ntype ArtistHolderV2Connection {\n  edges: [ArtistHolderV2Edge!]!\n  pageInfo: PageInfo!\n  totalCount: Int!\n}\n\ntype ArtistHolderV2Edge {\n  cursor: String!\n  node: ArtistHolderV2!\n}\n\n\"\"\"\nOne held artwork with its copy quantity and canonical classification.\n\"\"\"\ntype ArtistHolding {\n  itemType: ItemType\n  nft: NFT!\n  quantity: BigInt!\n}\n\ntype ArtistHoldingConnection {\n  edges: [ArtistHoldingEdge!]!\n  pageInfo: PageInfo!\n  totalCount: Int!\n}\n\ntype ArtistHoldingEdge {\n  cursor: String!\n  node: ArtistHolding!\n}\n\n\"\"\"\nAn artist's sales over trailing windows and the debt of the active loans on their NFTs: principal plus the interest accrued up to now. Sales volume converts each sale to USD at the time of the sale; outstanding debt converts at current rates.\n\"\"\"\ntype ArtistMarketStats {\n  activeLoansCount: Int!\n  outstandingDebtUsd: Float!\n  salesCount7d: Int!\n  salesCount30d: Int!\n  salesCount365d: Int!\n  salesVolumeUsd7d: Float!\n  salesVolumeUsd30d: Float!\n  salesVolumeUsd365d: Float!\n}\n\ntype ArtistRankedHolder {\n  \"\"\"\n  The holder's last 10 sales of NFTs by the artist, newest first; the holder bought when it is the receiver and sold when it is the sender.\n  \"\"\"\n  activity: [Sale!]!\n  address: Address!\n\n  \"\"\"\n  Highest-ranked account type classified for this address on any chain: contract wallet, other contract, EIP-7702 delegated EOA, then EOA. Null when unclassified.\n  \"\"\"\n  addressType: AddressType\n\n  \"\"\"\n  Held Edition items by the artist, counting ERC1155 copies.\n  \"\"\"\n  editionsOwned: BigInt!\n\n  \"\"\"\n  When the wallet acquired the earliest NFT by the artist it still holds: the latest transfer or mint of that NFT to the wallet, which for an NFT escrowed in a loan or stash is the one before the escrow. The return from escrow when a loan is repaid or a stash unwrapped does not count. Null when no such transfer is recorded.\n  \"\"\"\n  firstAcquired: DateTime\n  id: String!\n\n  \"\"\"\n  When the wallet acquired the latest NFT by the artist it still holds, by the same rule as firstAcquired.\n  \"\"\"\n  lastAcquired: DateTime\n  name: String\n\n  \"\"\"\n  Held 1/1 items by the artist, counting ERC1155 copies.\n  \"\"\"\n  oneOfOnesOwned: BigInt!\n\n  \"\"\"\n  Held items by the artist, counting ERC1155 copies, including unclassified items.\n  \"\"\"\n  ownedAmount: BigInt!\n\n  \"\"\"\n  Cursor preceding the 50-row population page containing this holder. Clear wallet text search before using it.\n  \"\"\"\n  pageAfter: String\n\n  \"\"\"\n  Held PFP items by the artist, counting ERC1155 copies.\n  \"\"\"\n  pfpsOwned: BigInt!\n\n  \"\"\"\n  One-based position in the eligible population under the selected sort, before wallet text search. Wallet address breaks remaining ties.\n  \"\"\"\n  populationRank: Int!\n\n  \"\"\"\n  Up to 24 distinct held artworks, with copies grouped by NFT.\n  \"\"\"\n  previewItems(first: Int! = 24): [ArtistHolding!]!\n  profilePictureUrl: String\n\n  \"\"\"\n  Held Series items by the artist, counting ERC1155 copies.\n  \"\"\"\n  seriesOwned: BigInt!\n\n  \"\"\"\n  Held units with no classification; included in ownedAmount.\n  \"\"\"\n  unclassifiedOwned: BigInt!\n}\n\ntype ArtistRankedHolderEdge {\n  cursor: String!\n  node: ArtistRankedHolder!\n}\n\nenum ArtistSortField {\n  ARTWORKS_COUNT\n  COLLECTIONS_COUNT\n  NAME\n  OWNERS_TOTAL_VALUE\n  SALES_1D\n  TOTAL_VOLUME\n\n  \"\"\"\n  By every wallet holding the artist's artworks, before the Collectors tab's exclusions (mint and burn wallets, custodial platforms, contracts that are not wallets, unclassified addresses). Artist.uniqueCollectors counts eligible collectors only, so the order can differ from it.\n  \"\"\"\n  UNIQUE_COLLECTORS\n  VOLUME_1D\n}\n\ninput ArtistSortInput {\n  field: ArtistSortField!\n  order: Ordering!\n  owners: [Address!] = null\n}\n\nenum ArtistType {\n  ARTIST\n  CREATOR\n}\n\ntype AskCancelledNotification implements Node & Notification {\n  createdOn: DateTime!\n  id: String!\n  notificationType: String!\n  order: Order!\n  orderId: Int!\n  readOn: DateTime\n  user: User!\n}\n\ntype AskCreatedNotification implements Node & Notification {\n  createdOn: DateTime!\n  id: String!\n  notificationType: String!\n  order: Order!\n  orderId: Int!\n  readOn: DateTime\n  user: User!\n}\n\ntype Asset implements Node {\n  accessTypeName: String!\n  cacheUrl: String\n  contentTypeMime: String!\n  data(preferCached: Boolean! = false): String!\n  id: String!\n}\n\ntype Auction implements Node {\n  duration: BigInt\n  endTime: DateTime\n  highestBid: Bid\n  id: String!\n  loan: MultiSourceLoan!\n  minBid: BigInt!\n  originator: Address\n  settler: Address\n  startTime: DateTime\n  status: String!\n  triggerFee: BigInt\n}\n\ntype AuctionBidConfirmationNotification implements Node & Notification {\n  auction: Auction!\n  auctionId: String!\n  bid: Bid!\n  bidId: Int!\n  createdOn: DateTime!\n  id: String!\n  loan: MultiSourceLoan!\n  loanId: String!\n  notificationType: String!\n  readOn: DateTime\n  user: User!\n}\n\ntype AuctionConnection {\n  edges: [AuctionEdge!]!\n  pageInfo: PageInfo!\n  totalCount: Int!\n}\n\ntype AuctionEdge {\n  cursor: String!\n  node: Auction!\n}\n\ntype AuctionEndedNotification implements Node & Notification {\n  auction: Auction!\n  auctionId: String!\n  createdOn: DateTime!\n  id: String!\n  loan: MultiSourceLoan!\n  loanId: String!\n  notificationType: String!\n  readOn: DateTime\n  user: User!\n}\n\nenum AuctionSortField {\n  END_TIME\n}\n\ninput AuctionSortInput {\n  field: AuctionSortField!\n  order: Ordering!\n}\n\ntype AuctionStartedNotification implements Node & Notification {\n  auction: Auction!\n  auctionId: String!\n  createdOn: DateTime!\n  id: String!\n  loan: MultiSourceLoan!\n  loanId: String!\n  notificationType: String!\n  readOn: DateTime\n  user: User!\n}\n\nenum AuctionStatus {\n  ENDED\n  LIVE\n  PAST\n  UPCOMING\n}\n\ntype AuctionWonNotification implements Node & Notification {\n  auction: Auction!\n  auctionId: String!\n  createdOn: DateTime!\n  id: String!\n  loan: MultiSourceLoan!\n  loanId: String!\n  notificationType: String!\n  readOn: DateTime\n  user: User!\n}\n\ninput BNPLOrderInput {\n  amounts: [BigInt!]!\n  contractAddress: Address!\n  creditPurchaseExecution: CreditPurchaseExecutionInput = null\n\n  \"\"\"\n  When the borrower's signed loan execution data expires, at most the server's configured lifetime ahead (five minutes by default). Required unless creditPurchaseExecution sets the deadline.\n  \"\"\"\n  emitExpirationTime: BigInt = null\n  emitSignature: Signature = null\n  extraSeaportData: Hex = null\n  loanDuration: BigInt!\n  offerIds: [String!]!\n  signature: Signature = null\n  tokenId: BigInt!\n}\n\ntype Bid implements Node {\n  amount: BigInt!\n  auction: Auction!\n  auctionId: String!\n  bidder: Address!\n  bidderName: String\n  bidderProfilePictureUrl: String\n  id: String!\n  indexInBlock: Int!\n  timestamp: DateTime!\n  txHash: Hash!\n}\n\ntype BidConnection {\n  edges: [BidEdge!]!\n  pageInfo: PageInfo!\n  totalCount: Int!\n}\n\ntype BidEdge {\n  cursor: String!\n  node: Bid!\n}\n\ninput BidFulfillInput {\n  nftId: Int!\n  orderId: Int64!\n}\n\ntype BidHistory {\n  price: Float!\n  timestamp: DateTime!\n  value: Float!\n}\n\ntype BidNearListingNotification implements Node & Notification {\n  bidCurrency: Currency!\n  bidNetAmount: BigInt!\n  createdOn: DateTime!\n  id: String!\n  nft: NFT!\n  nftId: Int!\n  notificationType: String!\n  order: Order!\n  orderId: Int!\n  readOn: DateTime\n  threshold: Float!\n  user: User!\n}\n\nenum BidSortField {\n  BID\n  HIGHEST_BID\n}\n\ninput BidSortInput {\n  field: BidSortField!\n  order: Ordering!\n}\n\nscalar BigInt\n\ntype BigIntCurrencyAmount {\n  amount: BigInt!\n  currency: Currency!\n}\n\ninput BigIntInterval {\n  max: BigInt = null\n  min: BigInt = null\n}\n\n\"\"\"\nAn open loan on Blur's Blend as the Blend backfill last replayed it: the fields Blend hashes into liens(lienId). Rows lag the chain since the last backfill, so check one against the contract before acting on it.\n\"\"\"\ntype BlendLien {\n  amount: BigInt!\n  auctionDuration: BigInt!\n  auctionStartBlock: BigInt!\n  borrower: Address!\n  collection: Address!\n\n  \"\"\"\n  The block of the last event the backfill applied to the lien.\n  \"\"\"\n  lastEventBlock: BigInt!\n  lender: Address!\n  lienId: BigInt!\n  rate: BigInt!\n  startTime: BigInt!\n  tokenId: BigInt!\n}\n\nenum BlockchainEnum {\n  ETHEREUM\n  HYPERLIQUID\n  ROBINHOOD\n}\n\ninput BulkNFTOrdersInput {\n  orders: [SingleNFTOrderInput!]!\n  signature: Signature = null\n}\n\ntype BulkNFTOrdersResult {\n  orders: [SingleNFTOrder!]!\n}\n\nunion BulkNFTOrdersResultSignatureRequest = BulkNFTOrdersResult | SignatureRequest\n\ntype BuyNowPayLaterOrder implements Event & Node & Order {\n  \"\"\"\n  Whether `cancelTradeOrders` can cancel this order without a transaction: a native bid restricted to our signed zone.\n  \"\"\"\n  cancelsOffChain: Boolean!\n  createdDate: DateTime!\n  currency: Currency!\n  currencyAddress: Address!\n  emitCalldata: Hex!\n  evmOrder(integerStrings: Boolean! = false): JSON\n  executions: Int!\n  expiration: DateTime!\n  feeMetadata: OrderFeeMetadata\n  fees: BigInt!\n  hidden: Boolean!\n  id: String!\n  isAsk: Boolean!\n  isPrivate: Boolean!\n  maker: Address!\n  makerName: String\n  makerProfilePictureUrl: String\n  marketPlace: String!\n  marketPlaceAddress: Address!\n  maxExecutions: Int!\n  netAmount: BigInt!\n  nft: NFT!\n  nftId: Int!\n  nonce: BigInt!\n  orderType: String!\n  originalId: Hash!\n  platformFees(operation: PlatformFeeOperationType!): [PlatformFee!]!\n  price: BigInt!\n  signature: Signature!\n  startTime: DateTime!\n  status: String!\n  stealth: Boolean!\n  taker: Address!\n  takerName: String\n  takerProfilePictureUrl: String\n  timestamp: DateTime!\n  updatedDate: DateTime!\n}\n\nunion BuyNowPayLaterOrderSignatureRequestExtraSeaportData =\n  | BuyNowPayLaterOrder\n  | ExtraSeaportData\n  | SignatureRequest\n\ntype CancelAllOrdersCalldata {\n  calldata: Hex!\n  marketPlaceAddress: Address!\n}\n\ntype CancelTradeOrdersResult {\n  \"\"\"\n  The on-chain cancel of `onChainOrderIds`, one transaction per marketplace, as `getCancelOrdersCalldata` returns it.\n  \"\"\"\n  cancelOrdersCalldata: [CancelAllOrdersCalldata!]!\n\n  \"\"\"\n  Orders cancelled without a transaction.\n  \"\"\"\n  cancelledOrders: [Order!]!\n\n  \"\"\"\n  Orders that still need Seaport's on-chain cancel.\n  \"\"\"\n  onChainOrderIds: [Int64!]!\n}\n\n\"\"\"\nAn NFT collection.\n\"\"\"\ntype Collection implements Node {\n  actionsEnabled: Boolean!\n  artistArtworksCount(artistId: Int!): Int!\n  artistFloorPrice(artistId: Int!): CurrencyAmount\n  artistNumberOfSales1d(artistId: Int!): Int!\n  artistTotalVolume1d(artistId: Int!): Float!\n  artistUniqueCollectorsCount(artistId: Int!): Int!\n  artists: [Artist!]!\n  bannerImage: Asset\n  collectionUrl: String\n  contractData: ContractData!\n  description: String\n  discordUrl: String\n  editionIds: [Int!]!\n\n  \"\"\"\n  Units of the collection's ERC1155 NFTs summed over the holder balances the indexer tracks. The tracked holder set can be partial, so this may undercount. Null for other token standards and when no holder balance is tracked.\n  \"\"\"\n  erc1155Supply: BigInt\n  externalUrl: String\n\n  \"\"\"\n  Number of users following this collection.\n  \"\"\"\n  followersCount: Int!\n  hasTransferValidator: Boolean!\n  holderStatistics: CollectionHolderStatistics\n  id: String!\n  image: Asset\n  imageId: String\n\n  \"\"\"\n  Whether the authenticated user follows this collection.\n  \"\"\"\n  isFollowed: Boolean!\n  itemType: ItemType\n  loansEnabled: Boolean!\n  maxNetPrincipalOffer(currencyAddress: Address!): CollectionOffer\n  name: String\n  nftsCount: Int\n  platformFees(\n    marketplace: MarketPlaceType = null\n    operation: PlatformFeeOperationType!\n  ): [PlatformFee!]!\n\n  \"\"\"\n  Up to 10 preview NFTs for the collection, optionally filtered by artist. When an artist_id is provided, only NFTs associated with that artist are returned; otherwise any NFTs from the collection, ordered by token_id.\n  \"\"\"\n  previewNfts(artistId: Int = null): [NFT!]!\n  rarityEnabled: Boolean!\n  royalties: [Royalty!]!\n  slug: String!\n  statistics: CollectionStatistics!\n  supply: BigInt\n  traitOffersEnabled: Boolean!\n  twitterUsername: String\n  uniqueCollectors: Int!\n  verified: Boolean!\n  whitelistedSupply: Int!\n  wrappedCollection: Collection\n  wrappedCollectionId: Int\n  wrapperCollections: [Collection!]!\n}\n\ntype CollectionConnection {\n  edges: [CollectionEdge!]!\n  pageInfo: PageInfo!\n  totalCount: Int!\n}\n\ntype CollectionEdge {\n  cursor: String!\n  node: Collection!\n}\n\ntype CollectionEventsCountByDayAndCurrency {\n  auctions: BigInt!\n  buyouts: BigInt!\n  defaults: BigInt!\n  foreclosings: BigInt!\n  originations: BigInt!\n  refinancings: BigInt!\n  renegotiations: BigInt!\n  repayments: BigInt!\n  topUps: BigInt!\n}\n\n\"\"\"\nThe orders listCollectionFollows takes.\n\"\"\"\nenum CollectionFollowSortField {\n  \"\"\"\n  When the wallet followed the collection.\n  \"\"\"\n  FOLLOWED_AT\n  NAME\n}\n\ninput CollectionFollowSortInput {\n  field: CollectionFollowSortField!\n  order: Ordering!\n}\n\nenum CollectionHolderSortField {\n  OWNED_AMOUNT\n}\n\ninput CollectionHolderSortInput {\n  field: CollectionHolderSortField!\n  order: Ordering!\n}\n\n\"\"\"\nDaily snapshot of a collection's holder-distribution statistics.\n\"\"\"\ntype CollectionHolderStatistics implements Node {\n  collectionId: Int!\n\n  \"\"\"\n  Wallet counts per size bucket (1, 2-5, 6-20, 21-100, over 100).\n  \"\"\"\n  holders: [Int!]!\n  id: String!\n\n  \"\"\"\n  NFT counts held per size bucket, parallel to `holders`.\n  \"\"\"\n  items: [Int!]!\n  nakamotoCoefficient: Int!\n  netBuyers30Days: Int!\n  netSellers30Days: Int!\n  newHolders30Days: Int!\n  supply: Int!\n  timestamp: DateTime!\n  top10Count: Int!\n  top10NetFlow30Days: Int!\n  topHolderAddress: Address\n  topHolderCount: Int!\n  topHolders: TopHoldersInfo!\n  topMoverAddress: Address\n  topMoverNetFlow30Days: Int\n  uniqueHolders: Int!\n}\n\ntype CollectionLoansData {\n  maxAprBps: Float!\n  maxPrincipalAmount: BigInt!\n  maxRemainingTime: BigInt!\n  minAprBps: Float!\n  minPrincipalAmount: BigInt!\n  minRemainingTime: BigInt!\n}\n\ntype CollectionMarketDepth {\n  asOf: DateTime!\n  asks: [MarketDepthLevel!]!\n  bids: [MarketDepthLevel!]!\n  nativeCurrencyAddress: Address!\n  omittedCount: Int!\n}\n\ntype CollectionOffer implements Event & Node & Offer {\n  aprBps: BigInt!\n  availablePrincipalAmount: BigInt!\n  borrowerAddress: Address\n  borrowerName: String\n  borrowerProfilePictureUrl: String\n  capacity: BigInt!\n  collateralAddress: Address\n  collection: Collection!\n  collectionId: Int\n  consumedCapacity: BigInt!\n  contractAddress: Address!\n  createdDate: DateTime\n  currency: Currency!\n  duration: BigInt!\n  expirationTime: BigInt!\n  fee: BigInt!\n  hidden: Boolean\n  id: String!\n  lenderAddress: Address\n  lenderAllowance: BigInt\n  lenderAvailableBalance: BigInt\n  lenderName: String\n  lenderProfilePictureUrl: String\n  lenderRefinanceDisabled: Boolean!\n  maxPrincipal: BigInt!\n  maxSeniorRepayment: BigInt!\n\n  \"\"\"\n  Deprecated field: use maxSeniorRepayment instead.\n  \"\"\"\n  maxTrancheFloor: BigInt! @deprecated(reason: \"Use maxSeniorRepayment instead.\")\n  netPrincipal: BigInt!\n  nftId: Int\n  offerHash: Hash\n  offerId: BigInt!\n  principalAddress: Address!\n  principalAmount: BigInt!\n  repayment: BigInt!\n  requiresLiquidation: Boolean\n  signature: Signature\n  signerAddress: Address\n  statistics: CollectionOfferStatistics!\n  status: String!\n  timestamp: DateTime!\n  validators: [OfferValidator!]!\n}\n\ninput CollectionOfferInput {\n  aprBps: BigInt!\n  borrowerAddress: Address!\n  capacity: BigInt!\n  collectionId: Int!\n  contractAddress: Address!\n  duration: BigInt!\n  expirationTime: BigInt!\n  fee: BigInt!\n  lenderAddress: Address!\n  lenderRefinanceDisabled: Boolean! = false\n  maxSeniorRepayment: BigInt = null\n  maxTrancheFloor: BigInt = null\n  offerValidators: [OfferValidatorInput!]!\n  principalAddress: Address!\n  principalAmount: BigInt!\n  requiresLiquidation: Boolean = null\n  signerAddress: Address = null\n}\n\ntype CollectionOfferStatistics {\n  acceptedLoans: Int!\n  consumedCapacity: BigInt!\n}\n\ntype CollectionOrder implements Event & Node & Order {\n  \"\"\"\n  Whether `cancelTradeOrders` can cancel this order without a transaction: a native bid restricted to our signed zone.\n  \"\"\"\n  cancelsOffChain: Boolean!\n  collection: Collection!\n  collectionId: Int!\n  createdDate: DateTime!\n  currency: Currency!\n  currencyAddress: Address!\n  evmOrder(integerStrings: Boolean! = false): JSON\n  executions: Int!\n  expiration: DateTime!\n  feeMetadata: OrderFeeMetadata\n  fees: BigInt!\n  hidden: Boolean!\n  id: String!\n  isAsk: Boolean!\n  isPrivate: Boolean!\n  maker: Address!\n  makerName: String\n  makerProfilePictureUrl: String\n  marketPlace: String!\n  marketPlaceAddress: Address!\n  maxExecutions: Int!\n  netAmount: BigInt!\n  nonce: BigInt!\n  orderType: String!\n  originalId: Hash!\n  platformFees(operation: PlatformFeeOperationType!): [PlatformFee!]!\n  price: BigInt!\n  signature: Signature!\n  startTime: DateTime!\n  status: String!\n  stealth: Boolean!\n  taker: Address!\n  takerName: String\n  takerProfilePictureUrl: String\n  timestamp: DateTime!\n  updatedDate: DateTime!\n}\n\ninput CollectionOrderInput {\n  amount: BigInt = null\n  collectionId: Int!\n  currencyAddress: Address!\n  expirationTime: BigInt!\n  fees: [OrderFee!] = null\n  isAsk: Boolean = null\n  maxExecutions: BigInt = null\n  price: BigInt = null\n  signature: Signature = null\n  startTime: BigInt!\n  stealth: Boolean = null\n  taker: Address = null\n}\n\nunion CollectionOrderSignatureRequest = CollectionOrder | SignatureRequest\n\nenum CollectionOrderType {\n  COLLECTION\n  MULTIPLE_TRAIT\n  SET_BID\n  SINGLE_NFT\n  TRAIT\n}\n\ninput CollectionSignedOfferInput {\n  aprBps: BigInt!\n  borrowerAddress: Address!\n  capacity: BigInt!\n  collectionId: Int!\n  contractAddress: Address!\n  duration: BigInt!\n  expirationTime: BigInt!\n  fee: BigInt!\n  lenderAddress: Address!\n  lenderRefinanceDisabled: Boolean! = false\n  maxSeniorRepayment: BigInt = null\n  maxTrancheFloor: BigInt = null\n  offerHash: Hash!\n  offerId: BigInt!\n  offerValidators: [OfferValidatorInput!]!\n  principalAddress: Address!\n  principalAmount: BigInt!\n  requiresLiquidation: Boolean = null\n  signature: Signature!\n  signerAddress: Address = null\n}\n\nenum CollectionSortField {\n  ARTIST_FIRST_MINT_DATE\n  ARTIST_FLOOR_PRICE\n  ARTIST_NUMBER_OF_SALES_1D\n  ARTIST_TOTAL_VOLUME_1D\n  CONTRACT_CREATED_DATE\n  DATE_ADDED\n  FLOOR_PRICE\n  FLOOR_PRICE_1D_CHANGE\n  FLOOR_PRICE_7D_CHANGE\n  FLOOR_PRICE_30D_CHANGE\n  HIGHEST_BID\n  LENDERS_OUTSTANDING_PRINCIPAL\n  LISTING_COUNT\n  LOAN_COUNT\n  MARKET_CAP\n  NAME\n  NUMBER_OF_SALES_1D\n  NUMBER_OF_SALES_7D\n  NUMBER_OF_SALES_30D\n  OFFER_COUNT\n  OUTSTANDING_PRINCIPAL\n  OWNERS_TOTAL_VALUE\n  SALE_LISTING_COUNT\n  SUPPLY\n  TOTAL_LOAN_VOLUME\n  TOTAL_OUTSTANDING_PRINCIPAL\n  TOTAL_VOLUME\n  TOTAL_VOLUME_1D\n  TOTAL_VOLUME_7D\n  TOTAL_VOLUME_30D\n  TRENDING_VOLUME\n}\n\ninput CollectionSortInput {\n  artistId: Int = null\n  field: CollectionSortField!\n  lenders: [Address!] = null\n  marketplaces: [MarketPlaceType!] = null\n  minNumberOfSales: BigInt = null\n  order: Ordering!\n  owners: [Address!] = null\n  principalAddress: Address = null\n}\n\ntype CollectionStatistics {\n  bestOffer: CurrencyAmount @deprecated(reason: \"Use highest_bid instead.\")\n\n  \"\"\"\n  Items whose current owner is a burn address: the zero address, a known burn wallet, or the collection's own contract. They count towards nfts_count. Null until the collection has been sampled.\n  \"\"\"\n  burnedNftsCount: Int\n  floorPrice: CurrencyAmount\n  floorPrice1d: Float\n  floorPrice7d: Float\n  floorPrice30d: Float\n\n  \"\"\"\n  Last recorded floor at or before timestamp, normalized to ETH. Uses the lowest available floor across the collection's wrap family. Null when no normalized sample is available.\n  \"\"\"\n  floorPriceAt(timestamp: DateTime!): Float\n  floorPriceHistory(fromDate: DateTime!, toDate: DateTime!): [FloatStatHistory!]!\n\n  \"\"\"\n  Highest active bid applicable to any item in this collection, including item, trait, set and collection bids.\n  \"\"\"\n  highestApplicableBid: Order\n  highestBid: Order\n\n  \"\"\"\n  Loan originations (timestamp, value, currency, loanId) for this collection between two dates. Best effort: may skip some loans. When traits is given, only loans against NFTs carrying at least one of the listed trait ids are returned.\n  \"\"\"\n  loanInsights(fromDate: DateTime!, toDate: DateTime!, traits: [Int!] = null): [LoanHistoryItem!]!\n  maxAskPrice(currencyAddresses: [Address!] = null): BigIntCurrencyAmount\n  medianLoanValue: Float\n  minAskPrice(currencyAddresses: [Address!] = null): BigIntCurrencyAmount\n  nftsCount: Float\n  numberOfListings: Int!\n  numberOfNftsOwned(walletAddresses: [Address!] = null): Int!\n\n  \"\"\"\n  Deprecated field. Use number_of_offers_for_currencies instead.\n  \"\"\"\n  numberOfOffers(currencyAddress: Address!): Float!\n    @deprecated(reason: \"Use number_of_offers_for_currencies instead.\")\n  numberOfOffersForCurrencies(currencyAddresses: [Address!]!): Int!\n  numberOfPricedNfts(marketplaces: [MarketPlaceType!] = null): Int!\n  numberOfSales1d: Int!\n  numberOfSales7d: Int!\n  numberOfSales30d: Int!\n\n  \"\"\"\n  Units the wallets hold: one per held NFT, except that an ERC1155 token counts every unit of their balances, where numberOfNftsOwned counts it once. Multiply the floor by this to value holdings.\n  \"\"\"\n  numberOfUnitsOwned(walletAddresses: [Address!] = null): BigInt!\n  outstandingLoanCount: Int!\n  outstandingNftsCount: BigInt!\n  outstandingPrincipal(currencyAddress: Address!): BigInt!\n  percentageInOutstandingLoans: Float!\n  repaymentRate: Float!\n\n  \"\"\"\n  Sales (timestamp, value, currency, nftId) for this collection between two dates. Best effort: the series is downsampled and may skip some sales. When traits is given, only sales of NFTs carrying at least one of the listed trait ids are returned.\n  \"\"\"\n  saleInsights(fromDate: DateTime!, toDate: DateTime!, traits: [Int!] = null): [SaleHistoryItem!]!\n  topBidHistory(fromDate: DateTime!, toDate: DateTime!): [BidHistory!]!\n  totalLoanVolume(currencyAddress: Address!): BigInt!\n  totalLoanVolume1d(currencyAddress: Address!): BigInt!\n  totalLoanVolume1m(currencyAddress: Address!): BigInt!\n  totalLoanVolume1w(currencyAddress: Address!): BigInt!\n  totalLoanVolume1y(currencyAddress: Address!): BigInt!\n  totalLoanVolume2m(currencyAddress: Address!): BigInt!\n  totalLoanVolume3m(currencyAddress: Address!): BigInt!\n  totalLoanVolume4m(currencyAddress: Address!): BigInt!\n  totalOutstandingPrincipal: BigInt!\n  totalVolume: Float\n  totalVolume1d: Float\n  totalVolume1m: Float\n  totalVolume1w: Float\n  totalVolume1y: Float @deprecated(reason: \"Field deprecated\")\n  totalVolume2m: Float @deprecated(reason: \"Field deprecated\")\n  totalVolume3m: Float @deprecated(reason: \"Field deprecated\")\n  totalVolume4m: Float @deprecated(reason: \"Field deprecated\")\n}\n\n\"\"\"\nThe valued items of one wrap family the wallets hold.\n\"\"\"\ntype CollectionValuation {\n  collection: Collection!\n  unvaluedNfts: Int!\n\n  \"\"\"\n  Sum of the valued items' estimates, in ETH.\n  \"\"\"\n  value: Float!\n  valuedNfts: Int!\n}\n\n\"\"\"\nA collection the recent buyers of another collection also bought.\n\"\"\"\ntype CollectorsAlsoBought {\n  collection: Collection!\n\n  \"\"\"\n  A few of those buyers' purchases in this collection, most recent first, one per buyer.\n  \"\"\"\n  examplePurchases: [Sale!]!\n\n  \"\"\"\n  Distinct recent buyers of the other collection who also bought this one in the same window.\n  \"\"\"\n  sharedBuyers: Int!\n}\n\ntype ContractData implements Node {\n  blockchain: String!\n  contractAddress: Address!\n  createdDate: DateTime!\n  creatorAddress: Address\n  id: String!\n  standard: String!\n}\n\ninput CreditPurchaseExecutionInput {\n  expirationTime: BigInt!\n  initialPayment: BigInt!\n  loanSwapData: Hex!\n  orderId: Int64!\n  price: BigInt!\n  repaymentSwapData: Hex!\n  totalPrice: BigInt = null\n}\n\ntype Currency implements Node {\n  address: Address!\n  currentEthRate: Float\n  currentUsdcPrice: Float\n  decimals: Int!\n  id: String!\n  rateAtTime(timestamp: DateTime!): Float @deprecated(reason: \"Use rate_at_times instead.\")\n  rateAtTimes(timestamps: [DateTime!]!): [Float]!\n  symbol: String!\n  usdcPriceAtTime(timestamp: DateTime!): Float\n    @deprecated(reason: \"Use usdc_price_at_times instead.\")\n  usdcPriceAtTimes(timestamps: [DateTime!]!): [Float]!\n}\n\ntype CurrencyAmount {\n  amount: Float!\n  currency: Currency!\n}\n\ntype CurrencyConnection {\n  edges: [CurrencyEdge!]!\n  pageInfo: PageInfo!\n  totalCount: Int!\n}\n\ntype CurrencyEdge {\n  cursor: String!\n  node: Currency!\n}\n\n\"\"\"\nDate (isoformat)\n\"\"\"\nscalar Date\n\n\"\"\"\nDate with time (isoformat)\n\"\"\"\nscalar DateTime\n\ntype Deal implements Event & Node {\n  blockchain: String!\n  counterOfferForId: Int\n  counterOffered: Boolean!\n  createdDate: DateTime!\n  evmOrder: JSON\n  executedTxHash: Hash\n  expiration: DateTime!\n  id: String!\n  maker: Address!\n  makerErc20s: [Address!]!\n  makerErc20sAmounts: [BigInt!]!\n  makerName: String\n  makerNfts: [NFT!]!\n  makerNftsAmounts: [BigInt!]!\n  makerProfilePictureUrl: String\n  marketPlaceAddress: Address!\n  nonce: BigInt!\n  signature: Signature\n  status: String!\n  taker: Address!\n  takerErc20s: [Address!]!\n  takerErc20sAmounts: [BigInt!]!\n  takerName: String\n  takerNfts: [NFT!]!\n  takerNftsAmounts: [BigInt!]!\n  takerProfilePictureUrl: String\n  timestamp: DateTime!\n  updatedDate: DateTime!\n}\n\ntype DealConnection {\n  edges: [DealEdge!]!\n  pageInfo: PageInfo!\n  totalCount: Int!\n}\n\ntype DealEdge {\n  cursor: String!\n  node: Deal!\n}\n\nenum DealEventType {\n  ACCEPTED\n  CANCELLED\n  EXPIRED\n  INVALID\n  RECEIVED\n  RECEIVED_COUNTER_OFFER\n  SENT\n  SENT_COUNTER_OFFER\n}\n\ntype DealExpirationReminderNotification implements Node & Notification {\n  createdOn: DateTime!\n  deal: Deal!\n  dealId: Int!\n  expiresInSeconds: Int!\n  id: String!\n  notificationType: String!\n  readOn: DateTime\n  user: User!\n}\n\ninput DealInput {\n  blockchain: BlockchainEnum!\n  counterOfferForId: Int = null\n  expiration: BigInt!\n  makerErc20s: [Address!]!\n  makerErc20sAmounts: [BigInt!]!\n  makerNfts: [Int!]!\n  makerNftsAmounts: [BigInt!]!\n  signature: Signature = null\n  startTime: BigInt!\n  taker: Address!\n  takerErc20s: [Address!]!\n  takerErc20sAmounts: [BigInt!]!\n  takerNfts: [Int!]!\n  takerNftsAmounts: [BigInt!]!\n}\n\ntype DealNotification implements Node & Notification {\n  createdOn: DateTime!\n  deal: Deal!\n  dealId: Int!\n  eventType: DealEventType!\n  id: String!\n  notificationType: String!\n  readOn: DateTime\n  user: User!\n}\n\ntype DealReadinessBlocker {\n  code: DealReadinessBlockerCode!\n  currencyAddress: Address\n  currentAmount: BigInt\n  message: String!\n  nftId: Int\n  requiredAmount: BigInt\n  walletAddress: Address\n}\n\nenum DealReadinessBlockerCode {\n  FUNDING\n  LIFECYCLE\n  MAKER_PERMISSION\n  NFT_UNAVAILABLE\n  TAKER_PERMISSION\n  UNKNOWN\n}\n\ntype DealReadinessResult {\n  blockNumber: BigInt\n  blockers: [DealReadinessBlocker!]!\n  canExecute: Boolean!\n  canStartAcceptance: Boolean!\n}\n\nunion DealSignatureRequest = Deal | SignatureRequest\n\nenum DealSortField {\n  CREATED_DATE\n  EXPIRATION\n  STATUS\n}\n\ninput DealSortInput {\n  field: DealSortField!\n  order: Ordering!\n}\n\ntype Delegation implements Node {\n  contractAddress: String!\n  delegateTo: Address!\n  id: String!\n  nft: NFT!\n\n  \"\"\"\n  The delegate.xyz rights values enabled for this delegate: the zero hash is the full delegation; a Shadow delegation ends in its expiry.\n  \"\"\"\n  rights: [Hash!]!\n  timestamp: DateTime!\n}\n\ntype DelegationConnection {\n  edges: [DelegationEdge!]!\n  pageInfo: PageInfo!\n  totalCount: Int!\n}\n\ntype DelegationEdge {\n  cursor: String!\n  node: Delegation!\n}\n\ninput EditUserInput {\n  about: String\n  mail: String\n  url: String\n  userId: Int!\n  username: String\n}\n\n\"\"\"\nAn edition within a collection.\n\"\"\"\ntype Edition implements Node {\n  collection: Collection!\n  collectionId: Int!\n  id: String!\n  image: Asset\n\n  \"\"\"\n  Whether any wallet of the authenticated user's account follows this edition. False when anonymous.\n  \"\"\"\n  isFollowed: Boolean!\n\n  \"\"\"\n  Deprecated\n  \"\"\"\n  isWholeCollection: Boolean!\n    @deprecated(reason: \"This field is deprecated and will be removed in the future\")\n  name: String!\n  offersEnabled: Boolean!\n  sampleNft: NFT\n  slug: String!\n  statistics: EditionStatistics!\n\n  \"\"\"\n  Hidden synthetic trait that backs edition bids. Returns null until the edition has been processed by the edition-traits backfill CLI.\n  \"\"\"\n  trait: Trait\n  traitId: Int\n}\n\nenum EditionBidTier {\n  HIGH\n  LOW\n  MEDIUM\n}\n\ntype EditionConnection {\n  edges: [EditionEdge!]!\n  pageInfo: PageInfo!\n  totalCount: Int!\n}\n\ntype EditionEdge {\n  cursor: String!\n  node: Edition!\n}\n\nunion EditionNFT = Edition | NFT\n\ntype EditionNFTConnection {\n  edges: [EditionNFTEdge!]!\n  pageInfo: PageInfo!\n  totalCount: Int!\n}\n\ntype EditionNFTEdge {\n  cursor: String!\n  node: EditionNFT!\n}\n\nenum EditionSortField {\n  FLOOR_PRICE\n  HIGHEST_BID\n  LAST_SALE\n  NAME\n  RECENTLY_LISTED\n}\n\ninput EditionSortInput {\n  field: EditionSortField!\n  order: Ordering!\n}\n\ntype EditionStatistics {\n  floorPrice: BigIntCurrencyAmount\n  highestBid: Order\n  lastSale: Sale\n  numberOfNftsOwned(walletAddresses: [Address!] = null): Int!\n  supply: Int!\n  uniqueOwners: Int!\n}\n\ninterface Event implements Node {\n  id: String!\n  timestamp: DateTime!\n}\n\ntype EventConnection {\n  edges: [EventEdge!]!\n  pageInfo: PageInfo!\n  totalCount: Int!\n}\n\ntype EventEdge {\n  cursor: String!\n  node: Event!\n}\n\n\"\"\"\nWhich party of an event `users` must be, as the activity feed shows it: FROM is the party that gives (a seller, a lender funding a loan, a repaying borrower, a maker), TO the one that receives (a buyer, a funded borrower, a repaid lender, a taker). ANY is either.\n\"\"\"\nenum EventSide {\n  ANY\n  FROM\n  TO\n}\n\nenum EventType {\n  BUY_OFFER\n  CLAIM\n  COLLECTION_BUY_OFFER\n  LOAN_AUCTIONED\n  LOAN_BOUGHT_OUT\n  LOAN_COLLECTION_OFFER\n  LOAN_DEFAULTED\n  LOAN_EXTENDED\n  LOAN_FORECLOSED\n  LOAN_INITIATED\n  LOAN_LISTING\n  LOAN_NFT_OFFER\n  LOAN_PARTIAL_REFINANCED\n  LOAN_PARTIAL_REFINANCED_TRANSFER\n  LOAN_REFINANCED\n  LOAN_REFINANCED_TRANSFER\n  LOAN_RENEGOTIATED\n  LOAN_RENEGOTIATED_PAYMENT\n  LOAN_RENEGOTIATION_OFFER\n  LOAN_REPAID\n  LOAN_SENT_TO_AUCTION\n  LOAN_SET_OFFER\n  LOAN_TOPED_UP\n  LOAN_TOP_UP_OFFER\n  LOAN_TRAIT_OFFER\n  LOAN_TRANCHE_REFINANCED\n  LOAN_TRANCHE_REFINANCED_TRANSFER\n  SALE\n  SALE_LISTING\n  TRADE_EXECUTED\n  TRANSFER\n}\n\nenum ExclusiveListingType {\n  FLOOR_PRICE\n  IN_LOAN\n  LOAN_DEAL\n  LOW_PRICE\n  STEALTH\n}\n\ntype ExposedNft {\n  nft: NFT!\n  priceUsd: Float\n}\n\ntype ExtraSeaportData {\n  criteriaProof: [Hex!]\n  extraData: Hex!\n}\n\ntype FloatStatHistory {\n  timestamp: DateTime!\n  value: Float!\n}\n\ninput ForWalletsInput {\n  borrowersWallets: [Address!] = null\n  buyOfferMakersWallets: [Address!] = null\n  lendersWallets: [Address!] = null\n  loanOfferLendersWallets: [Address!] = null\n  ownersWallets: [Address!] = null\n}\n\ntype FulfillManyBidOrdersCalldata {\n  calldata: Hex!\n  marketPlaceAddress: Address!\n  nftIds: [Int!]!\n}\n\ntype FulfillManyOrdersCalldata {\n  calldata: Hex!\n  marketPlaceAddress: Address!\n}\n\n\"\"\"\nA collector's gallery of works, their own or anyone's; each work says whether the account holds it.\n\"\"\"\ntype Gallery implements Node {\n  \"\"\"\n  Empty when the gallery keeps its style's own colour mode.\n  \"\"\"\n  colorMode: GalleryColorMode\n\n  \"\"\"\n  The first work, for the gallery's card.\n  \"\"\"\n  coverNft: NFT\n  createdAt: DateTime!\n  description: String!\n  id: String!\n  isPublished: Boolean!\n  name: String!\n\n  \"\"\"\n  The layout a visitor first sees.\n  \"\"\"\n  openingView: GalleryView!\n  owner: Address!\n\n  \"\"\"\n  Empty when the gallery keeps its style's own palette.\n  \"\"\"\n  palette: GalleryPalette\n  publishedAt: DateTime\n  slug: String!\n  style: GalleryStyle!\n  updatedAt: DateTime!\n\n  \"\"\"\n  Whether visitors get a switch between light and dark.\n  \"\"\"\n  visitorModeSwitch: Boolean!\n  workCount: Int!\n\n  \"\"\"\n  The works in the collector's order; at most 200.\n  \"\"\"\n  works: [GalleryWork!]!\n}\n\n\"\"\"\nWhether a gallery's palette is shown light or dark.\n\"\"\"\nenum GalleryColorMode {\n  DARK\n  LIGHT\n}\n\n\"\"\"\nEverything a collector writes into a gallery. The works are in the order they are shown, and may be anyone's indexed NFTs.\n\"\"\"\ninput GalleryInput {\n  \"\"\"\n  Empty to keep the style's own colour mode.\n  \"\"\"\n  colorMode: GalleryColorMode = null\n  description: String! = \"\"\n  name: String!\n\n  \"\"\"\n  The layout a visitor first sees.\n  \"\"\"\n  openingView: GalleryView! = SLIDER\n\n  \"\"\"\n  Empty to keep the style's own palette.\n  \"\"\"\n  palette: GalleryPalette = null\n  style: GalleryStyle!\n\n  \"\"\"\n  Whether visitors get a switch between light and dark.\n  \"\"\"\n  visitorModeSwitch: Boolean! = false\n  works: [GalleryWorkInput!]!\n}\n\n\"\"\"\nThe colours a gallery is shown in, each with a light and a dark version.\n\"\"\"\nenum GalleryPalette {\n  CANDY\n  INK\n  PAPER\n  PHOSPHOR\n  SLATE\n}\n\n\"\"\"\nThe typography and colour preset a gallery is shown in.\n\"\"\"\nenum GalleryStyle {\n  ELEGANT\n  GONDI\n  POP\n  TERMINAL\n  WHITE_CUBE\n}\n\n\"\"\"\nHow a gallery's works are laid out: one at a time, or all in a grid.\n\"\"\"\nenum GalleryView {\n  GRID\n  SLIDER\n}\n\n\"\"\"\nOne work in a gallery, in the collector's order.\n\"\"\"\ntype GalleryWork {\n  \"\"\"\n  The title of a chapter that opens at this work and runs until the next work that opens one; empty when the work continues the chapter before it.\n  \"\"\"\n  chapter: String!\n\n  \"\"\"\n  Whether the gallery's account holds the work now: from any of its wallets, as an ERC1155 balance, or as the borrower of an active loan on it. A gallery can show anyone's works, so this only marks them.\n  \"\"\"\n  heldByOwner: Boolean!\n  nft: NFT!\n  note: String!\n  position: Int!\n}\n\n\"\"\"\nOne work in a gallery, with the collector's note.\n\"\"\"\ninput GalleryWorkInput {\n  \"\"\"\n  The title of a chapter that opens at this work and runs until the next work that opens one; empty when the work continues the chapter before it.\n  \"\"\"\n  chapter: String! = \"\"\n  nftId: Int!\n  note: String! = \"\"\n}\n\ninterface GlobalSearchResult {\n  id: String!\n}\n\ntype GlobalSearchResultAccount implements GlobalSearchResult {\n  id: String!\n  user: User!\n}\n\ntype GlobalSearchResultArtist implements GlobalSearchResult {\n  artist: Artist!\n  id: String!\n}\n\ntype GlobalSearchResultCollection implements GlobalSearchResult {\n  collection: Collection!\n  id: String!\n}\n\ntype GlobalSearchResultNFT implements GlobalSearchResult {\n  id: String!\n  nft: NFT!\n}\n\ntype GlobalSearchV2ResultAccount {\n  activeBorrowedLoansCount: Int!\n  activeLentSourcesCount: Int!\n  ensName: String!\n  heldNftsCount: Int!\n  id: Int!\n  openseaName: String!\n  username: String!\n  walletAddress: String!\n}\n\ntype GlobalSearchV2ResultArtist {\n  artistType: String\n  artworksCount: Int!\n  id: Int!\n  imageCacheUrl: String\n  imageContentType: String\n  imageData: String\n  name: String!\n  slug: String!\n  volume1d: Float!\n}\n\ntype GlobalSearchV2ResultCollection {\n  blockchain: String!\n  contractAddress: String!\n  floorPriceAmount: Float\n  floorPriceCurrencyAddress: String\n  floorPriceCurrencyDecimals: Int\n  floorPriceCurrencySymbol: String\n  id: Int!\n  imageCacheUrl: String\n  imageContentType: String\n  imageData: String\n  name: String\n  slug: String!\n}\n\ntype GlobalSearchV2ResultEdition {\n  blockchain: String!\n  collectionImageCacheUrl: String\n  collectionImageData: String\n  collectionName: String\n  collectionSlug: String!\n  id: Int!\n  imageCacheUrl: String\n  imageContentType: String\n  imageData: String\n  name: String!\n  slug: String!\n}\n\ntype GlobalSearchV2ResultNFT {\n  blockchain: String!\n  collectionId: Int!\n  collectionImageCacheUrl: String\n  collectionImageData: String\n  collectionName: String\n  collectionSlug: String!\n  contractAddress: String!\n  erc20Balances: [SearchERC20Balance!]!\n  id: Int!\n  imageCacheUrl: String\n  imageContentType: String\n  imageData: String\n  isVault: Boolean!\n  name: String\n  nftId: String!\n  owner: String\n  priceCurrencyAddress: String\n  priceCurrencyDecimals: Int\n  priceCurrencySymbol: String\n  priceValue: BigInt\n  tokenId: String!\n  wrappedCounts: [Int!]!\n  wrappedImageCacheUrls: [String!]!\n  wrappedImageContentTypes: [String!]!\n  wrappedImageData: [String!]!\n}\n\nunion GlobalSearchV2ResultNFTGlobalSearchV2ResultCollectionGlobalSearchV2ResultArtistGlobalSearchV2ResultAccount =\n  | GlobalSearchV2ResultAccount\n  | GlobalSearchV2ResultArtist\n  | GlobalSearchV2ResultCollection\n  | GlobalSearchV2ResultNFT\n\ntype GlobalSearchV2Results {\n  accounts: [GlobalSearchV2ResultAccount!]!\n  artists: [GlobalSearchV2ResultArtist!]!\n  collections: [GlobalSearchV2ResultCollection!]!\n  editions: [GlobalSearchV2ResultEdition!]!\n  nfts: [GlobalSearchV2ResultNFT!]!\n}\n\nscalar Hash\n\nscalar Hex\n\ntype Holder {\n  \"\"\"\n  ETH spent buying items of this collection since the given timestamp, defaulting to the last 90 days.\n  \"\"\"\n  acquired(since: DateTime = null): Float!\n\n  \"\"\"\n  The holder's last 10 sales in this collection since the given timestamp (defaulting to its whole history), newest first; the holder bought when it is the receiver and sold when it is the sender.\n  \"\"\"\n  activity(since: DateTime = null): [Sale!]!\n  address: Address!\n\n  \"\"\"\n  On-chain account type of the holder address (EOA, EIP-7702 delegated EOA, contract wallet, or other contract), null while not yet classified.\n  \"\"\"\n  addressType: AddressType\n  id: String!\n  name: String\n\n  \"\"\"\n  Collection-scoped behavior types of the holder, recomputed daily.\n  \"\"\"\n  nftOwnerBehaviorTypes: [NftOwnerBehaviorType!]!\n  ownedAmount: Int!\n  previewItems: [NFT!]!\n  profilePictureUrl: String\n\n  \"\"\"\n  ETH received selling items of this collection since the given timestamp, defaulting to the last 90 days.\n  \"\"\"\n  sold(since: DateTime = null): Float!\n}\n\ntype HolderConnection {\n  edges: [HolderEdge!]!\n  pageInfo: PageInfo!\n  totalCount: Int!\n}\n\ntype HolderEdge {\n  cursor: String!\n  node: Holder!\n}\n\n\"\"\"\n64-bit integer as a JSON number.\n\"\"\"\nscalar Int64\n\ninput Interval {\n  max: Float = null\n  min: Float = null\n}\n\ntype ItemLoanOfferBook {\n  complete: Boolean!\n  currency: Currency\n  durationCounts: [LoanBookDurationCount!]!\n  evaluatedAt: DateTime!\n  options: ItemLoanOptionConnection!\n  reason: String\n  sourceCount: Int!\n}\n\ntype ItemLoanOption {\n  additionalCount: Int!\n  allocations: [LoanOptionAllocation!]!\n  duration: BigInt!\n  eaprDenominator: BigInt!\n  eaprNumerator: BigInt!\n  grossPrincipal: BigInt!\n  group: String!\n  id: String!\n  netPrincipal: BigInt!\n  roles: [String!]!\n  upfrontFee: BigInt!\n}\n\ntype ItemLoanOptionConnection {\n  edges: [ItemLoanOptionEdge!]!\n  pageInfo: PageInfo!\n  totalCount: Int!\n}\n\ntype ItemLoanOptionEdge {\n  cursor: String!\n  node: ItemLoanOption!\n}\n\nenum ItemType {\n  EDITION\n  ONE_OF_ONE\n  PFP\n  SERIES\n}\n\nenum ItemVisitType {\n  ACCOUNT\n  ARTIST\n  COLLECTION\n  NFT\n}\n\n\"\"\"\nThe `JSON` scalar type represents JSON values as specified by [ECMA-404](https://ecma-international.org/wp-content/uploads/ECMA-404_2nd_edition_december_2017.pdf).\n\"\"\"\nscalar JSON\n\nenum LenderRankingMetric {\n  EARNINGS\n  LOWEST_DEFAULT_RATE\n  NET_EAPR\n  OUTSTANDING_PRINCIPAL\n}\n\nenum LenderRankingPeriod {\n  CALENDAR_YEAR\n  LAST_30_DAYS\n  LAST_90_DAYS\n  LAST_180_DAYS\n}\n\ntype LendingMarketCurrencyAmount {\n  \"\"\"\n  Outstanding principal in the currency's smallest native units.\n  \"\"\"\n  amount: BigInt!\n\n  \"\"\"\n  Principal currency address.\n  \"\"\"\n  currencyAddress: Address!\n\n  \"\"\"\n  Principal currency decimals.\n  \"\"\"\n  decimals: Int!\n\n  \"\"\"\n  Principal currency symbol.\n  \"\"\"\n  symbol: String!\n\n  \"\"\"\n  USD value in micro-USD; null when the currency rate is unavailable.\n  \"\"\"\n  usdAmount: BigInt\n}\n\nenum LendingMarketPeriod {\n  DAYS_7\n  DAYS_30\n  HOURS_24\n  TODAY @deprecated(reason: \"Use HOURS_24, a rolling 24-hour window.\")\n}\n\ntype LendingMarketPeriodStatistics {\n  \"\"\"\n  Percent change from the matching prior window; null if either total is unavailable or the prior total is zero.\n  \"\"\"\n  accruedDeltaPct: Float\n\n  \"\"\"\n  Current lender interest accrual in micro-USD per second for Today only; null for 24H/7D/30D or unavailable conversion.\n  \"\"\"\n  accruedRateUsdPerSecond: BigInt\n    @deprecated(\n      reason: \"Only serves the deprecated TODAY period; HOURS_24, DAYS_7 and DAYS_30 refresh with the poll.\"\n    )\n\n  \"\"\"\n  Lender interest accrued in the window, in micro-USD; null if conversion is unavailable.\n  \"\"\"\n  accruedUsd: BigInt\n\n  \"\"\"\n  25th percentile effective APR at loan initiation, in basis points; null when no loan has an available APR.\n  \"\"\"\n  eaprP25Bps: Int\n\n  \"\"\"\n  75th percentile effective APR at loan initiation, in basis points; null when no loan has an available APR.\n  \"\"\"\n  eaprP75Bps: Int\n\n  \"\"\"\n  Median effective APR at loan initiation, in basis points; null when no loan has an available APR.\n  \"\"\"\n  medianEaprBps: Int\n\n  \"\"\"\n  Median effective APR minus the matching prior window median, in basis points; null if either median is unavailable.\n  \"\"\"\n  medianEaprDeltaBps: Int\n\n  \"\"\"\n  Distinct loans initiated in the window; refinances are excluded.\n  \"\"\"\n  originatedCount: Int!\n\n  \"\"\"\n  Percent change in originated USD from the matching prior window; null if either total is unavailable or the prior total is zero.\n  \"\"\"\n  originatedDeltaPct: Float\n\n  \"\"\"\n  Principal of loans initiated in the window at current USD rates, in micro-USD; null if conversion is unavailable.\n  \"\"\"\n  originatedUsd: BigInt\n\n  \"\"\"\n  Rolling 24 hours, 7 days, or 30 days; TODAY (deprecated) is the elapsed UTC day.\n  \"\"\"\n  period: LendingMarketPeriod!\n\n  \"\"\"\n  Sales recorded in the window, priced or not.\n  \"\"\"\n  salesCount: Int!\n\n  \"\"\"\n  Percent change in sales value from the matching prior window; null if either total is unavailable or the prior total is zero.\n  \"\"\"\n  salesVolumeDeltaPct: Float\n\n  \"\"\"\n  Value of the sales in the window at current USD rates, in micro-USD. A sale in a currency with no current rate is left out of the value but counted in salesCount; null if USD conversion is unavailable.\n  \"\"\"\n  salesVolumeUsd: BigInt\n}\n\ntype LendingMarketPulse {\n  \"\"\"\n  Projected net lender interest for the next 24 hours at current terms, capped at loan expiry, in micro-USD. This is not realised interest. Null if any current currency rate is unavailable.\n  \"\"\"\n  accrualPerDayUsd: BigInt\n\n  \"\"\"\n  Net lender interest since UTC midnight, capped at loan expiry, in micro-USD. Null if any current currency rate is unavailable.\n  \"\"\"\n  accruedTodayUsd: BigInt\n\n  \"\"\"\n  UTC snapshot time.\n  \"\"\"\n  asOf: DateTime!\n\n  \"\"\"\n  Distinct loans originated during the rolling 24 hours.\n  \"\"\"\n  newLoans24h: Int!\n\n  \"\"\"\n  Outstanding principal from latest collection samples, in micro-USD. Null if any current currency rate is unavailable.\n  \"\"\"\n  outstandingPrincipalUsd: BigInt\n\n  \"\"\"\n  Net lender interest paid in the rolling 30 days, valued at payment-time rates, in micro-USD. Null if any rate is unavailable.\n  \"\"\"\n  paidInterest30dUsd: BigInt\n\n  \"\"\"\n  Rolling 24H/7D/30D and deprecated Today activity at the same snapshot time.\n  \"\"\"\n  periods: [LendingMarketPeriodStatistics!]!\n\n  \"\"\"\n  Outstanding principal by currency from latest collection samples.\n  \"\"\"\n  principalByCurrency: [LendingMarketCurrencyAmount!]!\n}\n\n\"\"\"\nActive loans in a set of currencies, all measured at `asOf`. Amounts are raw units of those currencies, so the set shares one decimals value. `accruedInterest` includes interest carried over from refinances and stops at each loan's expiry. `interestAccrualPerYear` is the rate it grows at, over the loans still inside their term, which lets a client extrapolate `accruedInterest` past `asOf`.\n\"\"\"\ntype LendingMarketStatistics {\n  accruedInterest: BigInt!\n  activeLoanCount: Int!\n  asOf: DateTime!\n  avgDurationSeconds: Int!\n  interestAccrualPerYear: BigInt!\n  outstandingPrincipal: BigInt!\n  wavgAprBps: Int!\n}\n\ntype LinkWalletAcceptedNotification implements Node & Notification {\n  counterpartyWalletAddress: Address!\n  createdOn: DateTime!\n  id: String!\n  notificationType: String!\n  readOn: DateTime\n  user: User!\n}\n\ntype LinkWalletRequestedNotification implements Node & Notification {\n  counterpartyWalletAddress: Address!\n  createdOn: DateTime!\n  id: String!\n  notificationType: String!\n  readOn: DateTime\n  user: User!\n}\n\ntype LinkedWallets implements Node {\n  id: String!\n  pending: Boolean!\n  shouldAccept: Boolean!\n  walletAddress: String!\n}\n\ntype Listing implements Node {\n  createdDate: DateTime!\n  desiredDuration: Int\n  desiredPrincipalAddress: Address\n  expirationDate: DateTime!\n  id: String!\n  marketplaceName: MarketplaceEnum!\n  nft: NFT!\n  user: User!\n}\n\ntype ListingConnection {\n  edges: [ListingEdge!]!\n  pageInfo: PageInfo!\n  totalCount: Int!\n}\n\ntype ListingEdge {\n  cursor: String!\n  node: Listing!\n}\n\ninterface Loan implements Node {\n  activities: [LoanActivity!]!\n  address: Address!\n  borrowerAddress: Address!\n  borrowerName: String\n  borrowerProfilePictureUrl: String\n  contractStartTime: DateTime!\n  currency: Currency!\n  duration: BigInt!\n  id: String!\n  indexInBlock: Int!\n  loanId: Int!\n\n  \"\"\"\n  Deprecated field. Use offerIds to return loan offer ids instead.\n  \"\"\"\n  offer: Offer! @deprecated(reason: \"Use offerIds to return loan offer ids instead.\")\n  offerIds: [String!]!\n  previousLoan: Loan\n  principalAddress: Address!\n  protocolFee: BigInt!\n  repaidActivity: LoanRepaid\n  repaymentTime: DateTime\n  replacementLoan: Loan\n  startTime: DateTime!\n  status: String!\n  timestamp: DateTime!\n  txHash: Hash!\n}\n\ntype LoanActivitiesStatisticsByMonth {\n  count: [Int!]!\n  outstanding: [BigInt!]!\n}\n\ninterface LoanActivity implements Event & LoanEvent & Node {\n  activityType: String!\n  eventType: String!\n  id: String!\n  indexInBlock: Int!\n  loan: Loan!\n  loanId: String!\n  multiSourceLoanHistory: MultiSourceLoanHistory!\n  nextActivity: LoanActivity\n  prevActivity: LoanActivity\n  timestamp: DateTime!\n  txHash: Hash!\n}\n\ntype LoanActivityConnection {\n  edges: [LoanActivityEdge!]!\n  pageInfo: PageInfo!\n  totalCount: Int!\n}\n\ntype LoanActivityEdge {\n  cursor: String!\n  node: LoanActivity!\n}\n\nenum LoanActivitySortField {\n  TIMESTAMP\n}\n\ninput LoanActivitySortInput {\n  field: LoanActivitySortField!\n  order: Ordering!\n}\n\nenum LoanActivityType {\n  LOAN_AUCTIONED\n  LOAN_EXTENDED\n  LOAN_FORECLOSED\n  LOAN_INITIATED\n  LOAN_REFINANCED\n  LOAN_REFINANCED_FROM_OFFERS\n  LOAN_REPAID\n  LOAN_SENT_TO_AUCTION\n}\n\ntype LoanAuctioned implements Event & LoanActivity & LoanEvent & Node {\n  activityType: String!\n  eventType: String!\n  id: String!\n  indexInBlock: Int!\n  loan: Loan!\n  loanId: String!\n  loanPayments: [LoanPayment!]!\n  multiSourceLoanHistory: MultiSourceLoanHistory!\n  nextActivity: LoanActivity\n  prevActivity: LoanActivity\n  timestamp: DateTime!\n  totalAuctioned: BigInt!\n  txHash: Hash!\n  withBuyout: Boolean!\n}\n\ntype LoanAuctionedNotification implements Node & Notification {\n  auction: Auction!\n  auctionId: String!\n  createdOn: DateTime!\n  id: String!\n  loan: MultiSourceLoan!\n  loanId: String!\n  notificationType: String!\n  readOn: DateTime\n  user: User!\n}\n\ntype LoanBookDurationCount {\n  count: Int!\n  duration: BigInt!\n}\n\n\"\"\"\nA listing a GONDI loan can buy, with the offer that finances it.\n\"\"\"\ntype LoanDeal {\n  \"\"\"\n  The offer's net principal capped at the price, in USD.\n  \"\"\"\n  loanUsd: Float!\n\n  \"\"\"\n  The loan as a share of the price, in basis points.\n  \"\"\"\n  ltvBps: Int!\n\n  \"\"\"\n  The open item or collection offer that finances it.\n  \"\"\"\n  offer: Offer!\n  order: Order!\n}\n\n\"\"\"\nWhether loan deals are grouped by contract or wrap family.\n\"\"\"\nenum LoanDealGrouping {\n  COLLECTION\n  WRAP_FAMILY\n}\n\n\"\"\"\nHow the loan deals feed ranks the listings it returns.\n\"\"\"\nenum LoanDealRanking {\n  HIGHEST_LTV\n  LARGEST_LOAN\n}\n\ntype LoanDefaultReminderNotification implements Node & Notification {\n  createdOn: DateTime!\n  defaultsInHours: Int!\n  id: String!\n  loan: MultiSourceLoan!\n  loanId: String!\n  notificationType: String!\n  readOn: DateTime\n  user: User!\n}\n\ntype LoanDefaulted implements Event & LoanEvent & Node {\n  eventType: String!\n  id: String!\n  loan: Loan!\n  loanId: String!\n  timestamp: DateTime!\n}\n\ntype LoanDefaultedNotification implements Node & Notification {\n  createdOn: DateTime!\n  id: String!\n  loan: MultiSourceLoan!\n  loanId: String!\n  notificationType: String!\n  readOn: DateTime\n  user: User!\n}\n\ninterface LoanEvent implements Event & Node {\n  eventType: String!\n  id: String!\n  loan: Loan!\n  loanId: String!\n  timestamp: DateTime!\n}\n\ntype LoanEventConnection {\n  edges: [LoanEventEdge!]!\n  pageInfo: PageInfo!\n  totalCount: Int!\n}\n\ntype LoanEventEdge {\n  cursor: String!\n  node: LoanEvent!\n}\n\nenum LoanEventSortField {\n  PRINCIPAL_AMOUNT\n  TIMESTAMP\n}\n\ninput LoanEventSortInput {\n  field: LoanEventSortField!\n  order: Ordering!\n}\n\nenum LoanEventType {\n  LOAN_AUCTIONED\n  LOAN_BOUGHT_OUT\n  LOAN_DEFAULTED\n  LOAN_EXTENDED\n  LOAN_FORECLOSED\n  LOAN_INITIATED\n  LOAN_REFINANCED\n  LOAN_RENEGOTIATED\n  LOAN_REPAID\n  LOAN_SENT_TO_AUCTION\n  LOAN_TOPED_UP\n}\n\ntype LoanExtended implements Event & LoanActivity & LoanEvent & Node {\n  activityType: String!\n  eventType: String!\n  id: String!\n  indexInBlock: Int!\n  loan: Loan!\n  loanId: String!\n  multiSourceLoanHistory: MultiSourceLoanHistory!\n  nextActivity: LoanActivity\n  prevActivity: LoanActivity\n  timestamp: DateTime!\n  txHash: Hash!\n}\n\ntype LoanExtendedNotification implements Node & Notification {\n  createdOn: DateTime!\n  id: String!\n  newHistory: MultiSourceLoanHistory!\n  newHistoryId: String!\n  notificationType: String!\n  previousHistory: MultiSourceLoanHistory!\n  previousHistoryId: String!\n  readOn: DateTime\n  user: User!\n}\n\ntype LoanForeclosed implements Event & LoanActivity & LoanEvent & Node {\n  activityType: String!\n  eventType: String!\n  id: String!\n  indexInBlock: Int!\n  loan: Loan!\n  loanId: String!\n  multiSourceLoanHistory: MultiSourceLoanHistory!\n  nextActivity: LoanActivity\n  prevActivity: LoanActivity\n  timestamp: DateTime!\n  txHash: Hash!\n}\n\n\"\"\"\nA single loan origination used to build a collection loans history.\n\"\"\"\ntype LoanHistoryItem {\n  \"\"\"\n  Currency the loan principal is denominated in.\n  \"\"\"\n  currency: Currency!\n  loanId: String!\n  timestamp: DateTime!\n\n  \"\"\"\n  Raw principal amount in the loan's own currency.\n  \"\"\"\n  value: BigInt!\n}\n\ntype LoanInitiated implements Event & LoanActivity & LoanEvent & Node {\n  activityType: String!\n  eventType: String!\n  id: String!\n  indexInBlock: Int!\n  loan: Loan!\n  loanId: String!\n  multiSourceLoanHistory: MultiSourceLoanHistory!\n  nextActivity: LoanActivity\n  prevActivity: LoanActivity\n  timestamp: DateTime!\n  txHash: Hash!\n}\n\ntype LoanInitiatedNotification implements Node & Notification {\n  aprBps: BigInt!\n  createdOn: DateTime!\n  duration: BigInt!\n  id: String!\n  loan: MultiSourceLoan!\n  loanId: String!\n  notificationType: String!\n  principalAmount: BigInt!\n  readOn: DateTime\n  user: User!\n}\n\n\"\"\"\nLoan listing created event\n\"\"\"\ntype LoanListingEvent implements Event & Node {\n  createdDate: DateTime!\n  desiredDuration: Int\n  desiredPrincipalAddress: Address\n  expirationDate: DateTime!\n  id: String!\n  marketplaceName: MarketplaceEnum!\n  nft: NFT!\n  timestamp: DateTime!\n  user: User!\n}\n\ntype LoanOfferCompetitionPreview {\n  complete: Boolean!\n  qualifies: Boolean!\n  reason: String\n  references: [LoanOfferCompetitionReference!]!\n  replacementIds: [String!]!\n}\n\ntype LoanOfferCompetitionReference {\n  maximumEaprDenominator: BigInt!\n  maximumEaprNumerator: BigInt!\n  optionId: String!\n  requiredNetPrincipal: BigInt!\n  sourceIds: [String!]!\n}\n\ninput LoanOfferPublicationInput {\n  replacementIds: [String!]! = []\n}\n\ntype LoanOptionAllocation {\n  amount: BigInt!\n  fee: BigInt!\n  interest: BigInt!\n  offer: SingleNFTOfferCollectionOffer\n  renegotiation: Renegotiation\n}\n\ntype LoanPayment implements Node {\n  accruedInterest: BigInt!\n  activityId: String!\n  destination: Address!\n  id: String!\n  pendingInterest: BigInt!\n  principalAddress: Address!\n  principalAmount: BigInt!\n  protocolFee: BigInt!\n  source: Address!\n}\n\ntype LoanRefinanced implements Event & LoanActivity & LoanEvent & Node {\n  activityType: String!\n  addedNewTranche: Boolean!\n  eventType: String!\n  id: String!\n  indexInBlock: Int!\n  isRenegotiation: Boolean!\n  loan: Loan!\n  loanId: String!\n  multiSourceLoanHistory: MultiSourceLoanHistory!\n  nextActivity: LoanActivity\n  prevActivity: LoanActivity\n  timestamp: DateTime!\n  txHash: Hash!\n}\n\ntype LoanRefinancedFromOffers implements Event & LoanActivity & LoanEvent & Node {\n  activityType: String!\n  eventType: String!\n  flashRefinance: Boolean!\n  id: String!\n  indexInBlock: Int!\n  loan: Loan!\n  loanId: String!\n  multiSourceLoanHistory: MultiSourceLoanHistory!\n  nextActivity: LoanActivity\n  prevActivity: LoanActivity\n  timestamp: DateTime!\n  txHash: Hash!\n}\n\ntype LoanRefinancedNotification implements Node & Notification {\n  createdOn: DateTime!\n  id: String!\n  newHistory: MultiSourceLoanHistory!\n  newHistoryId: String!\n  notificationType: String!\n  previousHistory: MultiSourceLoanHistory!\n  previousHistoryId: String!\n  readOn: DateTime\n  user: User!\n}\n\ntype LoanRepaid implements Event & LoanActivity & LoanEvent & Node {\n  activityType: String!\n  eventType: String!\n  id: String!\n  indexInBlock: Int!\n  loan: Loan!\n  loanId: String!\n  multiSourceLoanHistory: MultiSourceLoanHistory!\n  nextActivity: LoanActivity\n  prevActivity: LoanActivity\n  timestamp: DateTime!\n  totalInterest: BigInt!\n  txHash: Hash!\n}\n\ntype LoanRepaidNotification implements Node & Notification {\n  createdOn: DateTime!\n  id: String!\n  loan: MultiSourceLoan!\n  loanId: String!\n  notificationType: String!\n  readOn: DateTime\n  user: User!\n}\n\nenum LoanRequestType {\n  NFT_LISTED_FOR_SALE\n  RENEGOTIATION_REQUEST\n  TOP_UP_REQUEST\n}\n\nenum LoanRequestsSortField {\n  CREATED_DATE\n  HIGHEST_BID\n}\n\ninput LoanRequestsSortInput {\n  field: LoanRequestsSortField!\n  order: Ordering!\n}\n\ntype LoanSentToAuction implements Event & LoanActivity & LoanEvent & Node {\n  activityType: String!\n  eventType: String!\n  id: String!\n  indexInBlock: Int!\n  liquidatorAddress: String!\n  loan: Loan!\n  loanId: String!\n  multiSourceLoanHistory: MultiSourceLoanHistory!\n  nextActivity: LoanActivity\n  prevActivity: LoanActivity\n  timestamp: DateTime!\n  txHash: Hash!\n}\n\nenum LoanSortField {\n  APR_BPS\n  DURATION\n  EFFECTIVE_APR_BPS\n  END_DATE\n  EXPECTED_INTEREST\n  EXPIRATION_DATE\n  ORIGINATION_FEE\n  PAID_INTEREST\n  PRINCIPAL_AMOUNT\n  RENEGOTIATION_REQUESTED\n  REPAYMENT\n  START_TIME\n  TOTAL_INTEREST\n}\n\ninput LoanSortInput {\n  field: LoanSortField!\n  order: Ordering!\n}\n\nenum LoanStatusType {\n  LOAN_AUCTIONED\n  LOAN_AUCTIONED_WITH_BUYOUT\n  LOAN_DEFAULTED\n  LOAN_FORECLOSED\n  LOAN_INITIATED\n  LOAN_REPAID\n  LOAN_SENT_TO_AUCTION\n}\n\ntype LoansData {\n  maxAprBps: Float!\n  maxPrincipalAmount: BigInt!\n  maxRemainingTime: BigInt!\n  minAprBps: Float!\n  minPrincipalAmount: BigInt!\n  minRemainingTime: BigInt!\n}\n\n\"\"\"\nThis is the definition of a lost source. Lost sources are the lender/s that have lost a loan because of renegotiation or refinance.\n\"\"\"\ntype LostSource implements Node {\n  accruedInterest: BigInt!\n  activity: LoanActivity!\n  activityId: String!\n  aprBps: BigInt!\n  duration: BigInt!\n  earnedInterest: BigInt!\n  endDate: DateTime!\n  expectedInterestLeft: BigInt!\n  id: String!\n  lenderAddress: String!\n  lenderEaprBps: BigInt!\n  lenderName: String\n  lenderProfilePictureUrl: String\n  loan: MultiSourceLoan!\n  netAccruedInterest: BigInt!\n  netAprBps: BigInt!\n  netEarnedInterest: BigInt!\n  netExpectedInterestLeft: BigInt!\n  netLenderEaprBps: BigInt!\n  netOriginationFee: BigInt!\n  netProfit: BigInt!\n  netRepaidInterest: BigInt!\n  originationFee: BigInt!\n  principalAmount: BigInt!\n  profit: BigInt!\n  repaidInterest: BigInt!\n  startTime: DateTime!\n}\n\ntype LostSourceNotification implements Node & Notification {\n  createdOn: DateTime!\n  id: String!\n  lostSource: LostSource!\n  lostSourceId: String!\n  notificationType: String!\n  readOn: DateTime\n  user: User!\n}\n\ntype MarketDepthLevel {\n  priceNative: Float!\n  quantity: Int!\n}\n\ntype MarketOverview {\n  movers: [MarketOverviewCollection!]!\n  top: [MarketOverviewCollection!]!\n  topBuyers: [MarketOverviewBuyer!]!\n  volume: [MarketOverviewCollection!]!\n}\n\ntype MarketOverviewBuyer {\n  address: Address!\n\n  \"\"\"\n  ETH value of the wallet's purchases in the period.\n  \"\"\"\n  buyingVolumeEth: Float!\n  name: String\n  profilePictureUrl: String\n}\n\ntype MarketOverviewCollection {\n  collection: Collection!\n  currencyAddress: Address!\n\n  \"\"\"\n  Floor change over the period, in percent (12.5 is +12.5%).\n  \"\"\"\n  floorChangePercent: Float\n\n  \"\"\"\n  Loan events in the period: initiations, extensions, refinances from offers and borrower renegotiations, top-ups included.\n  \"\"\"\n  loansCount: Int!\n\n  \"\"\"\n  The period's most recent distinct buyers, newest first.\n  \"\"\"\n  recentBuyers: [MarketOverviewWallet!]!\n\n  \"\"\"\n  Sales in the period, wrapper collections included.\n  \"\"\"\n  salesCount: Int!\n\n  \"\"\"\n  Sales value in the period, in the collection's native currency.\n  \"\"\"\n  salesVolume: Float\n\n  \"\"\"\n  Distinct buyers, sellers, borrowers and lenders in the period.\n  \"\"\"\n  usersCount: Int!\n}\n\nenum MarketOverviewTimeframe {\n  DAY\n  MONTH\n  WEEK\n}\n\ntype MarketOverviewWallet {\n  address: Address!\n  name: String\n  profilePictureUrl: String\n}\n\nenum MarketPlaceType {\n  BLUR\n  CRYPTOPUNKS\n  CRYPTOPUNKS_STASH\n  FOUNDATION\n  LARVA_LABS\n  LOOKS_RARE\n  NATIVE\n  NFTX\n  NFT_STRATEGY\n  OPEN_SEA\n  X2Y2\n}\n\nenum MarketplaceEnum {\n  GONDI\n  NFTFI\n}\n\n\"\"\"\nThis is the definition of a loan. In sources you can find the tranches of the loan.Take into account that the loan fields can change if renegotiation or refinance happens.You can use listLoanEvents to get the history of the loan.\n\"\"\"\ntype MultiSourceLoan implements Loan & Node {\n  activities: [LoanActivity!]!\n  address: Address!\n  auction: Auction\n  blendedAprBps: Float!\n  borrowerAddress: Address!\n  borrowerName: String\n  borrowerProfilePictureUrl: String\n  contractStartTime: DateTime!\n  currency: Currency!\n  duration: BigInt!\n  durationFromRenegotiationOrStart: BigInt!\n  endDate: DateTime!\n  id: String!\n  indexInBlock: Int!\n  isEndLockedUp: Boolean!\n  lastOriginationFee: BigInt!\n  lastRenegotiationDate: DateTime\n  lenderRefinanceDisabled: Boolean!\n  loanId: Int!\n  nft: NFT!\n\n  \"\"\"\n  Deprecated field. Use offerIds to return loan offer ids instead.\n  \"\"\"\n  offer: Offer! @deprecated(reason: \"Use offerIds to return loan offer ids instead.\")\n  offerIds: [String!]!\n  previousLoan: Loan\n  principalAddress: Address!\n  principalAmount: BigInt!\n  protocolFee: BigInt!\n  renegotiationCount: Int!\n  renegotiationRequest: RenegotiationRequest\n  repaidActivity: LoanRepaid\n  repayment: BigInt!\n  repaymentTime: DateTime\n  replacementLoan: Loan\n  sources: [Source!]!\n  startLockDueDate: DateTime\n  startTime: DateTime!\n  status: String!\n  timestamp: DateTime!\n  topUpRequest: TopUpRequest\n  totalOriginationFee: BigInt!\n  txHash: Hash!\n}\n\ntype MultiSourceLoanConnection {\n  edges: [MultiSourceLoanEdge!]!\n  pageInfo: PageInfo!\n  totalCount: Int!\n}\n\ntype MultiSourceLoanEdge {\n  cursor: String!\n  node: MultiSourceLoan!\n}\n\n\"\"\"\nA snapshot in time of a loan.\n\"\"\"\ntype MultiSourceLoanHistory implements Node {\n  activity: LoanActivity!\n  activityId: String!\n  borrowerAddress: String!\n  borrowerName: String\n  borrowerProfilePictureUrl: String\n  currency: Currency!\n  duration: BigInt!\n  durationFromRenegotiationOrStart: BigInt!\n  id: String!\n  lastRenegotiationDate: DateTime\n  loanId: Int!\n  nft: NFT!\n  offerIds: [String!]!\n  principalAddress: Address!\n  principalAmount: BigInt!\n  sources: [SourceHistory!]!\n  startTime: DateTime!\n}\n\ntype MultipleTraitOrder implements Event & Node & Order {\n  \"\"\"\n  Whether `cancelTradeOrders` can cancel this order without a transaction: a native bid restricted to our signed zone.\n  \"\"\"\n  cancelsOffChain: Boolean!\n  collection: Collection!\n  collectionId: Int!\n  createdDate: DateTime!\n  currency: Currency!\n  currencyAddress: Address!\n  evmOrder(integerStrings: Boolean! = false): JSON\n  executions: Int!\n  expiration: DateTime!\n  feeMetadata: OrderFeeMetadata\n  fees: BigInt!\n  hidden: Boolean!\n  id: String!\n  isAsk: Boolean!\n  isPrivate: Boolean!\n  maker: Address!\n  makerName: String\n  makerProfilePictureUrl: String\n  marketPlace: String!\n  marketPlaceAddress: Address!\n  maxExecutions: Int!\n  netAmount: BigInt!\n  nonce: BigInt!\n  orderType: String!\n  originalId: Hash!\n  platformFees(operation: PlatformFeeOperationType!): [PlatformFee!]!\n  price: BigInt!\n  signature: Signature!\n  startTime: DateTime!\n  status: String!\n  stealth: Boolean!\n  taker: Address!\n  takerName: String\n  takerProfilePictureUrl: String\n  timestamp: DateTime!\n  traits: [Trait!]!\n  updatedDate: DateTime!\n}\n\ntype Mutation {\n  acceptLinkedWallets(linkedWalletsId: String!): LinkedWallets!\n\n  \"\"\"\n  Lists all NFTs from a user to start receiving loan offers. Can be filtered to only match certain criteria.\n  \"\"\"\n  addListingsOfNftsFromUser(\n    desiredDuration: Int = null\n    desiredPrincipalAddress: Address = null\n    excludeCollections: [String!] = null\n    onlyCollections: [String!] = null\n    searchTerm: String = null\n  ): Void\n\n  \"\"\"\n  Adds or updates a loan listing to start receiving loan offers.\n  \"\"\"\n  addOrUpdateListing(\n    desiredDuration: Int = null\n    desiredPrincipalAddress: Address = null\n    nftId: Int!\n  ): Listing!\n\n  \"\"\"\n  Adds or updates a loan renegotiation request.A renegotiation request is only a suggestion for potential lenders to show your intentions and the terms you want.\n  \"\"\"\n  addOrUpdateRenegotiationRequest(\n    desiredAprBps: BigInt = null\n    desiredDuration: BigInt = null\n    desiredPrincipalAmount: BigInt = null\n    loanId: String!\n  ): RenegotiationRequest!\n\n  \"\"\"\n  Adds or updates a loan top-up request.A top-up request is only a suggestion for potential lenders to show your intentions and the terms you want.\n  \"\"\"\n  addOrUpdateTopUpRequest(\n    desiredAprBps: BigInt = null\n    desiredTopUp: BigInt = null\n    loanId: String!\n  ): TopUpRequest!\n\n  \"\"\"\n  Cancels the caller's trade orders that have `cancelsOffChain` without a transaction, and returns the ids of the rest with the calldata of their Seaport on-chain cancel.\n  \"\"\"\n  cancelTradeOrders(orderIds: [Int64!]!): CancelTradeOrdersResult!\n\n  \"\"\"\n  Finishes proving the caller's X account with the `code` and `state` X sent back. Errors TWITTER_VERIFICATION_EXPIRED when the sign-in is unknown or older than ten minutes, TWITTER_VERIFICATION_FAILED when X refuses it.\n  \"\"\"\n  completeTwitterVerification(code: String!, state: String!): User!\n\n  \"\"\"\n  Create a draft gallery under a profile wallet you sign for, directly or through a confirmed link. Its slug comes from the name.\n  \"\"\"\n  createGallery(address: Address!, gallery: GalleryInput!): Gallery!\n\n  \"\"\"\n  Delete a gallery for good.\n  \"\"\"\n  deleteGallery(galleryId: Int!): Void\n  deleteProfilePicture(userId: Int!): User!\n\n  \"\"\"\n  Removes the caller's proven X account from their profile.\n  \"\"\"\n  disconnectTwitter: User!\n  editUser(user: EditUserInput!): User!\n\n  \"\"\"\n  Follow an artist from the wallet you are signed in with. Every wallet linked to yours then reads it as followed. Following it again is a no-op, and an unknown artist id fails with NOT_FOUND.\n  \"\"\"\n  followArtist(artistId: Int!): Void\n\n  \"\"\"\n  Follow a collection for user feed.\n  \"\"\"\n  followCollection(collectionId: Int!): Void\n\n  \"\"\"\n  Follow multiple collections for user feed.\n  \"\"\"\n  followCollections(collectionIds: [Int!]!): Void\n\n  \"\"\"\n  Follow an edition from the wallet you are signed in with. Every wallet linked to yours then reads it as followed. Following it again is a no-op, and an unknown edition id fails with NOT_FOUND.\n  \"\"\"\n  followEdition(editionId: Int!): Void\n\n  \"\"\"\n  Follow an NFT from the wallet you are signed in with. Every wallet linked to yours then reads it as followed. Following it again is a no-op, and an unknown NFT id fails with NOT_FOUND.\n  \"\"\"\n  followNft(nftId: Int!): Void\n\n  \"\"\"\n  Follow a wallet from the wallet you are signed in with. Every wallet linked to yours then reads it as followed. A wallet of your own account cannot be followed.\n  \"\"\"\n  followWallet(walletAddress: Address!): Void\n\n  \"\"\"\n  This is the first step of the collection loan offer flow. This step populates some fields of the offer. You then have to sign the offer and save it using the method save_signed_collection_offer. `duration` must be a positive whole number of seconds that represents either a multiple of 30 days or one of the special values of 3, 5, 7, 10, 15, 20 or 45 days; otherwise the call fails with INVALID_OFFER_DURATION_ERROR. Refer to gondi-js examples for more details.\n  \"\"\"\n  generateCollectionOfferToBeSigned(offerInput: CollectionOfferInput!): CollectionOffer!\n\n  \"\"\"\n  This is the first step of the renegotiation loan offer flow. This step populates some fields of the offer. You then have to sign the offer and save it using the method save_renegotiation_signed_offer. `duration` must be a positive whole number of seconds that represents either a multiple of 30 days or one of the special values of 3, 5, 7, 10, 15, 20 or 45 days; otherwise the call fails with INVALID_OFFER_DURATION_ERROR. Refer to gondi-js examples for more details.\n  \"\"\"\n  generateRenegotiationOfferToBeSigned(renegotiationInput: RenegotiationOfferInput!): Renegotiation!\n  generateSignInNonce(nonceInput: NonceInput!): String!\n\n  \"\"\"\n  This is the first step of the single NFT loan offer flow. This step populates some fields of the offer. You then have to sign the offer and save it using the method save_signed_single_nft_offer. `duration` must be a positive whole number of seconds that represents either a multiple of 30 days or one of the special values of 3, 5, 7, 10, 15, 20 or 45 days; otherwise the call fails with INVALID_OFFER_DURATION_ERROR. Refer to gondi-js examples for more details.\n  \"\"\"\n  generateSingleNftOfferToBeSigned(offerInput: SingleNFTOfferInput!): SingleNFTOffer!\n\n  \"\"\"\n  This is the first step of the trait loan offer flow: an offer any NFT carrying every one of the traits can borrow against. This step populates some fields of the offer, among them the validator holding the token ids that carry them now. `duration` must be a positive whole number of seconds that represents either a multiple of 30 days or one of the special values of 3, 5, 7, 10, 15, 20 or 45 days; otherwise the call fails with INVALID_OFFER_DURATION_ERROR. Refer to gondi-js examples for more details.\n  \"\"\"\n  generateTraitOfferToBeSigned(offerInput: TraitOfferInput!): TraitOffer!\n\n  \"\"\"\n  Hides all loan offers from a user for a given contract address.\n  \"\"\"\n  hideAllOffers(contractAddress: Address!, minOfferId: String!): [Offer!]!\n\n  \"\"\"\n  Hides a loan offer.\n  \"\"\"\n  hideOffer(contractAddress: Address!, offerId: String!): Offer!\n\n  \"\"\"\n  Hides multiple loan offers.\n  \"\"\"\n  hideOffers(contractAddress: Address!, offerIds: [String!]!): [Offer!]!\n\n  \"\"\"\n  Hides a trade bid. Listings can no longer be hidden: cancelling them on-chain is the only supported way to take one down, so an ask is rejected.\n  \"\"\"\n  hideOrder(orderIdInt64: Int64 = null): Order!\n\n  \"\"\"\n  Hides a loan renegotiation offer.\n  \"\"\"\n  hideRenegotiation(contractAddress: Address = null, renegotiationId: String!): Renegotiation!\n  linkWalletAddress(walletAddress: Address!): LinkedWallets!\n  markNotificationIdsAsRead(ids: [Int!] = null, walletAddresses: [Address!] = null): Void\n  markNotificationsAsRead(walletAddresses: [Address!] = null): Void\n\n  \"\"\"\n  Creates multiple NFT trade orders with a single signature. First call (no signature in bulk_input) returns a SignatureRequest. Sign the typedData and call again with signature set. Returns BulkNFTOrdersResult on success.\n  \"\"\"\n  publishBulkOrdersForNfts(bulkInput: BulkNFTOrdersInput!): BulkNFTOrdersResultSignatureRequest!\n\n  \"\"\"\n  Creates a buy now pay later order. Buy now pay later orders are orders which use a loan offer principal to buy and NFT and start a loan making the borrower the creator of the order. This method could return a SignatureRequest in __typename in which case you have to use this method again with the same input but you have to sign the 'typedData' response attribute and store it in the 'key' response attribute. You will have to do this process two times since multiple signatures are required. You should receive an BuyNowPayLaterOrder if everything went well. Refer to gondi-js examples for more details Platform fees are calculated automatically.on how to sign it and pay the order.\n  \"\"\"\n  publishBuyNowPayLaterOrder(\n    orderInput: BNPLOrderInput!\n  ): BuyNowPayLaterOrderSignatureRequestExtraSeaportData!\n\n  \"\"\"\n  Creates a deal order. This method could return a SignatureRequest in __typename in which case you have to use this method again with the same input but you have to sign the 'typedData' response attribute and store it in the 'key' response attribute. You should receive a Deal if everything went well.\n  \"\"\"\n  publishDealOrder(dealInput: DealInput!): DealSignatureRequest!\n\n  \"\"\"\n  Make a gallery public. Publishing again changes nothing.\n  \"\"\"\n  publishGallery(galleryId: Int!): Gallery!\n\n  \"\"\"\n  Creates a collection trade order. This method could return a SignatureRequest in __typename in which case you have to use this method again with the same input but you have to sign the 'typedData' response attribute and store it in the 'key' response attribute. You should receive an CollectionOrder if everything went well. An order can only be a BID. Platform fees are added to the fees array if not present.Refer to gondi-js examples for more details.\n  \"\"\"\n  publishOrderForCollection(orderInput: CollectionOrderInput!): CollectionOrderSignatureRequest!\n\n  \"\"\"\n  Creates a single NFT trade order. This method could return a SignatureRequest in __typename in which case you have to use this method again with the same input but you have to sign the 'typedData' response attribute and store it in the 'key' response attribute. You should receive an SingleNFTOrder if everything went well. An order can be an ASK or a BID. Platform fees are added to the fees array if not present.Refer to gondi-js examples for more details.\n  \"\"\"\n  publishOrderForNft(orderInput: SingleNFTOrderInput!): SingleNFTOrderSignatureRequest!\n\n  \"\"\"\n  Creates a bid that fills with any of a handpicked set of NFTs of one collection, up to maxExecutions of them. This method could return a SignatureRequest in __typename in which case you have to use this method again with the same input but you have to sign the 'typedData' response attribute and store it in the 'key' response attribute. You should receive a SetBidOrder if everything went well. An order can only be a BID. Platform fees are added to the fees array if not present. Refer to gondi-js examples for more details.\n  \"\"\"\n  publishOrderForNftSet(orderInput: NftSetOrderInput!): NftSetOrderSignatureRequest!\n\n  \"\"\"\n  Creates a trait bid order. This method could return a SignatureRequest in __typename in which case you have to use this method again with the same input but you have to sign the 'typedData' response attribute and store it in the 'key' response attribute. You should receive a TraitOrder if everything went well. An order can only be a BID. Platform fees are added to the fees array if not present. Refer to gondi-js examples for more details.\n  \"\"\"\n  publishOrderForTrait(orderInput: TraitOrderInput!): TraitOrderSignatureRequest!\n\n  \"\"\"\n  Creates a sell and repay loan order. Sell and repay orders are orders to sell an NFT and use that money to repay a loan leaving the rest for the borrower. This method could return a SignatureRequest in __typename in which case you have to use this method again with the same input but you have to sign the 'typedData' response attribute and store it in the 'key' response attribute. You will have to do this process two times since multiple signatures are required. You should receive an SellAndRepayOrder if everything went well. Refer to gondi-js examples for more details Platform fees are added to the fees array if not present.on how to sign it and pay the order.\n  \"\"\"\n  publishSellAndRepayOrder(\n    orderInput: NFTOrderInput!\n  ): SellAndRepayOrderSignatureRequestExtraSeaportData!\n  recordItemVisit(itemId: String!, itemType: ItemVisitType!, turnstileToken: String!): Boolean!\n\n  \"\"\"\n  Refreshes NFT metadata and image\n  \"\"\"\n  refreshNftMetadata(nftId: Int!): NFT!\n  removeLinkedWallets(linkedWalletsId: String!): Void\n\n  \"\"\"\n  Removes a loan listing from a user.\n  \"\"\"\n  removeListing(nftId: Int!): Listing!\n\n  \"\"\"\n  Removes all the loan listings from a user. Can be filtered.\n  \"\"\"\n  removeListingsOfNftsFromUser(\n    excludeCollections: [String!] = null\n    onlyCollections: [String!] = null\n    searchTerm: String = null\n  ): Void\n\n  \"\"\"\n  Removes a loan renegotiation request.\n  \"\"\"\n  removeRenegotiationRequest(loanId: String!): RenegotiationRequest!\n\n  \"\"\"\n  Removes a loan top-up request.\n  \"\"\"\n  removeTopUpRequest(loanId: String!): TopUpRequest!\n  resendVerificationEmail(userId: Int!): Void\n\n  \"\"\"\n  This is the second step of the renegotiation loan offer flow after generate_renegotiation_offer_to_be_signed. It saves the signed offer. `duration` is re-validated against the allowed values (multiples of 30 days, or 3, 5, 7, 10, 15, 20 or 45 days) and the call fails with INVALID_OFFER_DURATION_ERROR otherwise. A lender may have at most 2 active single-NFT offers and renegotiations for the same (NFT, loan contract version, duration, principal currency) bucket; saving another one fails with ActiveOffersLimitReachedError. The optional `fallback_offer_input` is subject to the same checks. Refer to gondi-js examples for more details.\n  \"\"\"\n  saveRenegotiationSignedOffer(\n    fallbackOfferInput: SingleNFTSignedOfferInput = null\n    publication: LoanOfferPublicationInput = null\n    signedRenegotiationInput: SignedRenegotiationOfferInput!\n  ): Renegotiation!\n\n  \"\"\"\n  This is the second step of the collection loan offer flow after generate_collection_offer_to_be_signed. It saves the signed offer. `duration` is re-validated against the allowed values (multiples of 30 days, or 3, 5, 7, 10, 15, 20 or 45 days) and the call fails with INVALID_OFFER_DURATION_ERROR otherwise. A lender may have at most 2 active collection offers for the same (collection, loan contract version, duration, principal currency) bucket; saving another one fails with ActiveCollectionOffersLimitReachedError. Refer to gondi-js examples for more details.\n  \"\"\"\n  saveSignedCollectionOffer(\n    publication: LoanOfferPublicationInput = null\n    signedOfferInput: CollectionSignedOfferInput!\n  ): CollectionOffer!\n\n  \"\"\"\n  This is the second step of the single NFT loan offer flow after generate_single_nft_offer_to_be_signed. It saves the signed offer. `duration` is re-validated against the allowed values (multiples of 30 days, or 3, 5, 7, 10, 15, 20 or 45 days) and the call fails with INVALID_OFFER_DURATION_ERROR otherwise. A lender may have at most 2 active single-NFT offers and renegotiations for the same (NFT, loan contract version, duration, principal currency) bucket; saving another one fails with ActiveOffersLimitReachedError. Refer to gondi-js examples for more details.\n  \"\"\"\n  saveSignedSingleNftOffer(\n    publication: LoanOfferPublicationInput = null\n    signedOfferInput: SingleNFTSignedOfferInput!\n  ): SingleNFTOffer!\n\n  \"\"\"\n  This is the second step of the trait loan offer flow after generate_trait_offer_to_be_signed. It saves the signed offer, as long as its validator is still the one the traits produce: if the NFTs carrying them changed since the first step, it fails with INVALID_OFFER_VALIDATORS_ERROR and the offer has to be generated again. `duration` is re-validated against the allowed values (multiples of 30 days, or 3, 5, 7, 10, 15, 20 or 45 days) and the call fails with INVALID_OFFER_DURATION_ERROR otherwise. A lender may have at most 2 active offers for the same (traits, loan contract version, duration, principal currency) bucket; saving another one fails with ActiveTraitOffersLimitReachedError. Refer to gondi-js examples for more details.\n  \"\"\"\n  saveSignedTraitOffer(signedOfferInput: TraitSignedOfferInput!): TraitOffer!\n\n  \"\"\"\n  Set the minimum offer amount, in US dollars, from the wallet you are signed in with; null or zero clears it. Every wallet linked to yours then reads the same amount. Returns the amount now in force.\n  \"\"\"\n  setMinimumOfferAmount(amount: Float = null): Float\n\n  \"\"\"\n  Override the watch-notification switch for one NFT your account watches, or pass null to clear the override so the NFT follows the switch again. An NFT it does not watch fails with NOT_FOUND; unwatching drops the override.\n  \"\"\"\n  setNftWatchNotifications(enabled: Boolean = null, nftId: Int!): Void\n\n  \"\"\"\n  Turn notification events on or off per channel, from the wallet you are signed in with. Every wallet linked to yours then reads the same choices. Returns the preferences now in force.\n  \"\"\"\n  setNotificationPreferences(\n    preferences: [NotificationPreferenceInput!]!\n  ): [NotificationPreference!]!\n  setReferral(referrerId: Int!): Void\n\n  \"\"\"\n  Turn notifications about every watched NFT on or off, for every wallet of your account. An NFT's own override still wins.\n  \"\"\"\n  setWatchNotifications(enabled: Boolean!): Void\n\n  \"\"\"\n  Unhides a loan offer.\n  \"\"\"\n  showOffer(contractAddress: Address!, offerId: String!): Offer!\n\n  \"\"\"\n  Unhides a trade bid. Listings can no longer be hidden, so an ask is rejected: one hidden before that change stays hidden and is cancelled on-chain rather than brought back.\n  \"\"\"\n  showOrder(orderIdInt64: Int64 = null): Order!\n\n  \"\"\"\n  Unhides a loan renegotiation offer.\n  \"\"\"\n  showRenegotiation(contractAddress: Address = null, renegotiationId: String!): Renegotiation!\n  signInWithEthereum(siweInput: SiweInput!): String!\n\n  \"\"\"\n  Starts proving the caller's X account: returns the x.com page to send them to. X sends them back to the configured redirect URI with `code` and `state` for completeTwitterVerification.\n  \"\"\"\n  startTwitterVerification: String!\n\n  \"\"\"\n  Unfollow an artist from every wallet of your account, including follows made before those wallets were linked.\n  \"\"\"\n  unfollowArtist(artistId: Int!): Void\n\n  \"\"\"\n  Unfollow a collection for user feed.\n  \"\"\"\n  unfollowCollection(collectionId: Int!): Void\n\n  \"\"\"\n  Unfollow an edition from every wallet of your account, including follows made before those wallets were linked.\n  \"\"\"\n  unfollowEdition(editionId: Int!): Void\n\n  \"\"\"\n  Unfollow an NFT from every wallet of your account, including follows made before those wallets were linked.\n  \"\"\"\n  unfollowNft(nftId: Int!): Void\n\n  \"\"\"\n  Unfollow a wallet from every wallet of your account, including follows made before those wallets were linked.\n  \"\"\"\n  unfollowWallet(walletAddress: Address!): Void\n\n  \"\"\"\n  Take a gallery back to a draft only its account can see.\n  \"\"\"\n  unpublishGallery(galleryId: Int!): Gallery!\n\n  \"\"\"\n  Replace a gallery's name, description, style and works. A draft's slug follows its new name; a published gallery keeps its slug. The publication state stays as it is.\n  \"\"\"\n  updateGallery(gallery: GalleryInput!, galleryId: Int!): Gallery!\n  uploadProfilePicture(profilePicture: Upload!, userId: String!): User!\n  verifyMailValidationCode(email: String!, userId: Int!, validationCode: String!): User!\n}\n\ntype NFT implements Node {\n  \"\"\"\n  When the NFT came to one of the given wallets: the latest transfer or mint of it to a wallet that still holds it, which for an NFT escrowed in a loan or stash is the one before the escrow. The return from escrow when a loan is repaid or a stash unwrapped does not count. The earliest such date when several of the wallets hold it; null when none of them holds it, no arrival is recorded, or no wallet is given.\n  \"\"\"\n  acquiredAt(wallets: [Address!]!): DateTime\n\n  \"\"\"\n  The purchase that brought the NFT to the wallet acquiredAt dates: the latest sale of it within an hour before that arrival that settled in the wallet, directly or forwarded from the buyer (see Sale.forwardTransfers). Null when the NFT arrived otherwise, such as by mint or a plain transfer, or when acquiredAt is null.\n  \"\"\"\n  acquisitionSale(wallets: [Address!]!): Sale\n\n  \"\"\"\n  Active loan of the NFT, which can be of status INITIATED, SENT_TO_AUCTION or DEFAULTED.\n  \"\"\"\n  activeLoan: Loan\n  animation: Asset\n  artists: [Artist!]!\n  collection: Collection\n  collectionId: Int\n  createdDate: DateTime!\n  description: String\n  edition: Edition\n  editionId: Int\n  erc20Balances: [BigIntCurrencyAmount!]!\n  erc1155Balance(address: Address!): BigInt!\n\n  \"\"\"\n  Units of an ERC1155 NFT summed over the holder balances the indexer tracks. The tracked holder set can be partial, so this may undercount. Null when no holder balance is tracked, including for other token standards.\n  \"\"\"\n  erc1155Supply: BigInt\n  id: String!\n  image: Asset\n  isExcluded: Boolean\n  isFlagged: Boolean\n\n  \"\"\"\n  Whether any wallet of the authenticated user's account follows this NFT. False when anonymous.\n  \"\"\"\n  isFollowed: Boolean!\n  itemType: ItemType\n  listed: Listing\n\n  \"\"\"\n  Deprecated.\n  \"\"\"\n  marketPlaceOfPrice: String @deprecated(reason: \"Get it from nftPriceSample\")\n  maxNetPrincipalOffer(currencyAddress: Address = null): Offer\n\n  \"\"\"\n  When the token was minted: the earliest mint the indexer recorded for its token id on the unwrapped collection's contract. Null when no mint was indexed.\n  \"\"\"\n  mintDate: DateTime\n\n  \"\\n        Naked NFT for the same token_id.\\n        \"\n  nakedNft: NFT!\n  name: String\n  nftId: String!\n\n  \"\"\"\n  Collection-scoped behavior types of the effective holder, recomputed daily: the borrower while the NFT is escrowed in an active loan, otherwise the current owner.\n  \"\"\"\n  nftOwnerBehaviorTypes: [NftOwnerBehaviorType!]!\n  nftPriceSample(\n    currencyAddresses: [Address!] = null\n    includeUserPrivateListings: Boolean = null\n  ): NFTPriceSample\n  owner: Address\n  ownerName: String\n  ownerProfilePictureUrl: String\n\n  \"\"\"\n  Deprecated.\n  \"\"\"\n  price: BigInt @deprecated(reason: \"Get it from nftPriceSample\")\n\n  \"\"\"\n  Deprecated.\n  \"\"\"\n  priceCurrencyAddress: Address @deprecated(reason: \"Get it from nftPriceSample\")\n  rarityRank: Int\n  rarityScore: Float\n  statistics: NftStatistics!\n  tokenId: BigInt!\n  traits: [Trait!]!\n  url: String\n\n  \"\"\"\n  Estimated value; null when nothing in the market prices the item (no family floor or bid, no item bid, no sale).\n  \"\"\"\n  valuation: NftValuation\n\n  \"\"\"\n  Whether changes to this NFT notify the authenticated user: the NFT's own override when set, else the account's watch-notification switch. Null when anonymous or when the account does not watch it.\n  \"\"\"\n  watchNotificationsEnabled: Boolean\n  wrappedCount: [Int!]!\n\n  \"\\n        All NFT IDs for the same token_id in all related collections (including itself,\\n        naked and wrappers). Useful for finding analog NFTs across naked/wrapper\\n        collections. Unrelated to the `wrap_nfts` and `wrapped_count` fields.\\n        \"\n  wrappersAndNakedNftIds: [Int!]!\n\n  \"\\n        All NFTs for the same token_id in all related collections (including itself,\\n        naked and wrappers). Useful for finding analog NFTs across naked/wrapper\\n        collections. Unrelated to the `wrap_nfts` and `wrapped_count` fields.\\n        \"\n  wrappersAndNakedNfts: [NFT!]!\n  wrapsNfts: [NFT!]\n}\n\ntype NFTConnection {\n  edges: [NFTEdge!]!\n  pageInfo: PageInfo!\n  totalCount: Int!\n}\n\ntype NFTEdge {\n  cursor: String!\n  node: NFT!\n}\n\ninput NFTOrderInput {\n  amount: BigInt = null\n  contractAddress: Address!\n  criteriaProof: [Hex!] = null\n  currencyAddress: Address!\n  expirationTime: BigInt!\n  extraSeaportData: Hex = null\n  fees: [OrderFee!] = null\n  isAsk: Boolean!\n  orderToFill: Int = null\n  orderToFillInt64: Int64 = null\n  price: BigInt = null\n  repaymentSignature: Signature = null\n  replaceOrderId: Int = null\n  replaceOrderIdInt64: Int64 = null\n  signature: Signature = null\n  startTime: BigInt!\n  stealth: Boolean = null\n  taker: Address = null\n  tokenId: BigInt!\n}\n\ntype NFTPriceSample implements Node {\n  bestOfferForBuyWithLoan: Offer\n  currencyAddress: Address!\n  id: String!\n  order: Order!\n  orderId: Int64!\n  surveyedId: Int!\n  taker: Address!\n  timestamp: Int!\n  value: BigInt!\n}\n\ntype NewCollectionUnlistedOfferNotification implements Node & Notification {\n  createdOn: DateTime!\n  id: String!\n  notificationType: String!\n  readOn: DateTime\n  user: User!\n}\n\ntype NewFollowerNotification implements Node & Notification {\n  createdOn: DateTime!\n  followerWalletAddress: Address!\n  id: String!\n  notificationType: String!\n  readOn: DateTime\n  user: User!\n}\n\ntype NewOfferNotification implements Node & Notification {\n  createdOn: DateTime!\n  id: String!\n  notificationType: String!\n  offer: Offer!\n  offerId: String!\n  readOn: DateTime\n  user: User!\n}\n\ntype NewRenegotiationOfferNotification implements Node & Notification {\n  createdOn: DateTime!\n  id: String!\n  loan: MultiSourceLoan!\n  loanId: String!\n  notificationType: String!\n  readOn: DateTime\n  renegotiation: Renegotiation!\n  renegotiationId: String!\n  user: User!\n}\n\ninput NftLoansFilterInput {\n  borrowers: [Address!] = null\n  contracts: [Address!] = null\n  excludeBorrowers: [Address!] = null\n  excludeContracts: [Address!] = null\n}\n\n\"\"\"\nCollection-scoped wallet behavior types, recomputed daily.\n\"\"\"\nenum NftOwnerBehaviorType {\n  ACCUMULATOR\n  COLLECTOR\n  MARKET_MAKER\n  NEWBIE\n  RARE_LOVER\n  WHALE\n}\n\ninput NftOwnersFilterInput {\n  excludeOwners: [Address!] = null\n  owners: [Address!] = null\n  withInLoan: Boolean = null\n  withInStash: Boolean = null\n  withInVault: Boolean = null\n  withInWallet: Boolean = null\n}\n\nenum NftSearchField {\n  COLLECTION_NAME\n  NAME\n  TOKEN_ID\n}\n\ninput NftSetOrderInput {\n  amount: BigInt = null\n  collectionId: Int!\n  currencyAddress: Address!\n  expirationTime: BigInt!\n  fees: [OrderFee!] = null\n  isAsk: Boolean = null\n  maxExecutions: BigInt = null\n\n  \"\"\"\n  The NFTs the bid fills with, all in the collection: at least 2, at most 1000, duplicates ignored.\n  \"\"\"\n  nftIds: [Int!]!\n  price: BigInt = null\n  signature: Signature = null\n  startTime: BigInt!\n  stealth: Boolean = null\n  taker: Address = null\n}\n\nunion NftSetOrderSignatureRequest = SetBidOrder | SignatureRequest\n\nenum NftSortField {\n  COLLECTION\n  LAST_SALE_DATE\n  LAST_SALE_PRICE\n  NAME\n  OFFERS_COUNT\n  PRICE\n  STATUS\n}\n\ninput NftSortInput {\n  field: NftSortField!\n  order: Ordering!\n  principalAddress: Address = null\n}\n\ntype NftStatistics {\n  highestBid(currencyAddresses: [Address!] = null): Order\n  lastSale: Sale\n  loansTotalVolume(currencyAddress: Address!): BigInt!\n\n  \"\"\"\n  Deprecated field. Use number_of_offers_for_currencies instead.\n  \"\"\"\n  numberOfOffers(currencyAddress: Address!): Float!\n    @deprecated(reason: \"Use number_of_offers_for_currencies instead.\")\n  numberOfOffersForCurrencies(currencyAddresses: [Address!]!): Int!\n  topTraitFloorPrice: CurrencyAmount @deprecated(reason: \"Trait floor price is not available\")\n}\n\ntype NftStrategyDeployment implements Node {\n  collectionAddress: Address!\n  contractAddress: Address!\n  id: String!\n}\n\ntype NftStrategyDeploymentConnection {\n  edges: [NftStrategyDeploymentEdge!]!\n  pageInfo: PageInfo!\n  totalCount: Int!\n}\n\ntype NftStrategyDeploymentEdge {\n  cursor: String!\n  node: NftStrategyDeployment!\n}\n\ninput NftTermsFilter {\n  price: BigIntInterval = null\n}\n\n\"\"\"\nEstimated value of an NFT; the model is documented in pixel_backend/statistics/lib/nft_valuation.py.\n\"\"\"\ntype NftValuation {\n  \"\"\"\n  Family anchor in ETH before the item premium; null on the no-anchor route.\n  \"\"\"\n  anchor: Float\n  basis: ValuationBasis!\n\n  \"\"\"\n  0 to 1; how much market evidence backs the value.\n  \"\"\"\n  confidence: Float!\n\n  \"\"\"\n  When the item's evidence row was last refreshed; null without one.\n  \"\"\"\n  evidenceTimestamp: DateTime\n\n  \"\"\"\n  Collection liquidity, 0 to 1, weighting floor against bid.\n  \"\"\"\n  liquidity: Float!\n\n  \"\"\"\n  Item premium over the anchor; 1 when none.\n  \"\"\"\n  multiplier: Float!\n\n  \"\"\"\n  Estimated value in ETH.\n  \"\"\"\n  value: Float!\n}\n\ninput NftWithAsksConfigInput {\n  currencyAddresses: [Address!] = null\n  forTaker: Address = null\n  listedSince: DateTime = null\n  marketplaces: [MarketPlaceType!] = null\n  price: BigIntInterval = null\n  withPrice: Boolean = null\n}\n\nenum NftsSortField {\n  HIGHEST_BID\n  LAST_SALE_DATE\n  LAST_SALE_PRICE\n  LISTING_CREATED_DATE\n  LOAN_OUT_OF_POCKET\n  LOAN_PRINCIPAL\n  NAME\n  OUTSTANDING_DEBT\n  OUTSTANDING_LOAN_DUE_DATE\n  OWNED_FIRST\n  PRICE\n  RANDOM\n  RARITY_RANK\n  STATUS\n  TOKEN_ID\n  VALUATION\n}\n\ninput NftsSortInput {\n  currencyAddresses: [Address!] = null\n  field: NftsSortField!\n  forTaker: Address = null\n  order: Ordering!\n\n  \"\"\"\n  Salt for RANDOM: the same seed gives the same order, so pages never overlap. Required by RANDOM, ignored by every other field.\n  \"\"\"\n  seed: Int = null\n}\n\ninterface Node {\n  id: String!\n}\n\ninput NonceInput {\n  blockchain: String = null\n  walletAddress: Address!\n}\n\ninterface Notification implements Node {\n  createdOn: DateTime!\n  id: String!\n  notificationType: String!\n  readOn: DateTime\n  user: User!\n}\n\n\"\"\"\nWhere a notification reaches its user.\n\"\"\"\nenum NotificationChannel {\n  EMAIL\n  IN_APP\n}\n\ntype NotificationConnection {\n  edges: [NotificationEdge!]!\n  pageInfo: PageInfo!\n  totalCount: Int!\n}\n\ntype NotificationEdge {\n  cursor: String!\n  node: Notification!\n}\n\n\"\"\"\nWhat a user switches notifications on and off by, one channel at a time. A notification that is always delivered belongs to none.\n\"\"\"\nenum NotificationEvent {\n  AUCTION_ENDED\n  AUCTION_SETTLED\n  AUCTION_STARTED\n  BID_NEAR_LISTING\n  BUY_OFFER\n  COLLECTION_OFFER_FILLED\n  LOAN_DEFAULTED\n  LOAN_EXTENDED\n  LOAN_OFFER\n  LOAN_REFINANCED\n  LOAN_REPAID\n  NEW_FOLLOWER\n  OFFER_ACCEPTED\n  OFFER_FUNDING\n  OUTBID\n  PRIVATE_LISTING\n  REFINANCED_AWAY\n  RENEGOTIATION_OFFER\n  RENEGOTIATION_REQUEST\n  REPAYMENT_REMINDER\n  SALE_COMPLETED\n  TRADE_EXPIRING\n  TRADE_UPDATE\n}\n\n\"\"\"\nWhether one event reaches the viewer's account on one channel. Enabled unless a wallet of the account turned it off.\n\"\"\"\ntype NotificationPreference {\n  channel: NotificationChannel!\n  enabled: Boolean!\n  event: NotificationEvent!\n}\n\n\"\"\"\nThe signed-in user's choice for one event on one channel.\n\"\"\"\ninput NotificationPreferenceInput {\n  channel: NotificationChannel!\n  enabled: Boolean!\n  event: NotificationEvent!\n}\n\nenum NotificationType {\n  ASK_CANCELLED_NOTIFICATION\n  ASK_CREATED_NOTIFICATION\n  AUCTION_WON_NOTIFICATION\n  BID_NEAR_LISTING_NOTIFICATION\n  DEAL_EXPIRATION_REMINDER_NOTIFICATION\n  DEAL_NOTIFICATION\n  LINK_WALLET_ACCEPTED_NOTIFICATION\n  LINK_WALLET_REQUESTED_NOTIFICATION\n  LOAN_DEFAULTED_NOTIFICATION\n  LOAN_DEFAULT_REMINDER_NOTIFICATION\n  LOAN_INITIATED_NOTIFICATION\n  LOAN_REPAID_NOTIFICATION\n  LOST_SOURCE_NOTIFICATION\n  NEW_FOLLOWER_NOTIFICATION\n  NEW_OFFER_NOTIFICATION\n  NEW_RENEGOTIATION_OFFER_NOTIFICATION\n  OFFER_ACCEPTED_NOTIFICATION\n  OUTBID_NOTIFICATION\n  SET_NFT_NOTIFICATION\n  WATCHED_NFT_NOTIFICATION\n}\n\ninterface Offer implements Event & Node {\n  aprBps: BigInt!\n  availablePrincipalAmount: BigInt!\n  borrowerAddress: Address\n  borrowerName: String\n  borrowerProfilePictureUrl: String\n  capacity: BigInt!\n  collateralAddress: Address\n  collectionId: Int\n  consumedCapacity: BigInt!\n  contractAddress: Address!\n  createdDate: DateTime\n  currency: Currency!\n  duration: BigInt!\n  expirationTime: BigInt!\n  fee: BigInt!\n  hidden: Boolean\n  id: String!\n  lenderAddress: Address\n  lenderAllowance: BigInt\n  lenderAvailableBalance: BigInt\n  lenderName: String\n  lenderProfilePictureUrl: String\n  lenderRefinanceDisabled: Boolean!\n  maxPrincipal: BigInt!\n  maxSeniorRepayment: BigInt!\n\n  \"\"\"\n  Deprecated field: use maxSeniorRepayment instead.\n  \"\"\"\n  maxTrancheFloor: BigInt! @deprecated(reason: \"Use maxSeniorRepayment instead.\")\n  netPrincipal: BigInt!\n  nftId: Int\n  offerHash: Hash\n  offerId: BigInt!\n  principalAddress: Address!\n  principalAmount: BigInt!\n  repayment: BigInt!\n  requiresLiquidation: Boolean\n  signature: Signature\n  signerAddress: Address\n  status: String!\n  timestamp: DateTime!\n  validators: [OfferValidator!]!\n}\n\ntype OfferAcceptedNotification implements Node & Notification {\n  createdOn: DateTime!\n  id: String!\n  loan: MultiSourceLoan!\n  loanId: String!\n  notificationType: String!\n  offer: Offer!\n  offerId: String!\n  readOn: DateTime\n  user: User!\n}\n\ntype OfferConnection {\n  edges: [OfferEdge!]!\n  pageInfo: PageInfo!\n  totalCount: Int!\n}\n\ntype OfferEdge {\n  cursor: String!\n  node: Offer!\n}\n\ntype OfferStatistics {\n  consumedCapacity: BigInt!\n}\n\nenum OfferStatus {\n  ACTIVE\n  CANCELLED\n  EXECUTED\n  EXPIRED\n  INACTIVE\n  OUTPERFORMED\n}\n\ntype OfferSteps implements Node {\n  aprBpsStep: BigInt!\n  collectionId: Int!\n  id: String!\n  origFeeBpsStep: BigInt!\n  usdcStep: BigInt!\n  wethStep: BigInt!\n  whypeStep: BigInt!\n}\n\ntype OfferValidator implements Node {\n  arguments: Hex!\n  id: String!\n  offerId: String!\n  validator: Address!\n}\n\ninput OfferValidatorInput {\n  arguments: Hex!\n  validator: Address!\n}\n\nenum OffersSortField {\n  APR_BPS\n  AVAILABLE_PRINCIPAL_AMOUNT\n  CREATED_DATE\n  DAILY_INTEREST\n  DURATION\n  EFFECTIVE_APR_BPS\n  EXPIRATION\n  FEE\n  MAX_PRINCIPAL\n  NET_INTEREST\n  NET_PRINCIPAL\n  PRINCIPAL_AMOUNT\n  REPAYMENT\n  STATUS\n  TOTAL_INTEREST\n}\n\ninput OffersSortInput {\n  durationOfInterest: Int = null\n  field: OffersSortField!\n  order: Ordering!\n  principalOfInterest: BigInt = null\n}\n\n\"\"\"\nWhat holds an approval, which decides how it can be used.\n\"\"\"\nenum OperatorKind {\n  \"\"\"\n  A contract whose source code is not published.\n  \"\"\"\n  UNVERIFIED_CONTRACT\n\n  \"\"\"\n  A contract with public source code that moves the NFTs as that code allows.\n  \"\"\"\n  VERIFIED_CONTRACT\n\n  \"\"\"\n  An account with no code: whoever holds its key can move the NFTs at any time.\n  \"\"\"\n  WALLET\n}\n\ninterface Order implements Event & Node {\n  \"\"\"\n  Whether `cancelTradeOrders` can cancel this order without a transaction: a native bid restricted to our signed zone.\n  \"\"\"\n  cancelsOffChain: Boolean!\n  createdDate: DateTime!\n  currency: Currency!\n  currencyAddress: Address!\n  evmOrder(integerStrings: Boolean! = false): JSON\n  executions: Int!\n  expiration: DateTime!\n  feeMetadata: OrderFeeMetadata\n  fees: BigInt!\n  hidden: Boolean!\n  id: String!\n  isAsk: Boolean!\n  isPrivate: Boolean!\n  maker: Address!\n  makerName: String\n  makerProfilePictureUrl: String\n  marketPlace: String!\n  marketPlaceAddress: Address!\n  maxExecutions: Int!\n  netAmount: BigInt!\n  nonce: BigInt!\n  orderType: String!\n  originalId: Hash!\n  platformFees(operation: PlatformFeeOperationType!): [PlatformFee!]!\n  price: BigInt!\n  signature: Signature!\n  startTime: DateTime!\n  status: String!\n  stealth: Boolean!\n  taker: Address!\n  takerName: String\n  takerProfilePictureUrl: String\n  timestamp: DateTime!\n  updatedDate: DateTime!\n}\n\ntype OrderConnection {\n  edges: [OrderEdge!]!\n  pageInfo: PageInfo!\n  totalCount: Int!\n}\n\ntype OrderEdge {\n  cursor: String!\n  node: Order!\n}\n\ninput OrderFee {\n  amount: BigInt!\n  taker: Address!\n}\n\ntype OrderFeeMetadata {\n  executionFee: BigInt!\n  executionFeeConcept: String!\n  publicationFee: BigInt!\n  publicationFeeConcept: String!\n}\n\ninput OrderForNft {\n  collectionId: Int!\n  nftId: Int!\n}\n\nenum OrderKind {\n  ALL\n  PRIVATE\n  PUBLIC\n  STEALTH\n}\n\n\"\"\"\nHow collectionIds and traitIds select bids. ALL: bids every item matching the filter can execute (collection bids for collectionIds, the selected trait bids for traitIds). ANY: bids at least one matching item can execute (collection, trait, multiple-trait and single-NFT bids).\n\"\"\"\nenum OrderMatchMode {\n  ALL\n  ANY\n}\n\nenum OrderModel {\n  DEAL\n  ORDER\n}\n\nenum OrderSide {\n  ASK\n  BID\n}\n\nenum OrderSortField {\n  CREATED_DATE\n  EXPIRATION\n  FEE\n  FEE_RATIO\n  LOAN_LTV\n  LOAN_OUT_OF_POCKET\n  LOAN_PRINCIPAL\n  NET_AMOUNT\n  PRICE\n}\n\ninput OrderSortInput {\n  field: OrderSortField!\n  order: Ordering!\n}\n\nenum OrderStatusType {\n  Active\n  Cancelled\n  Executed\n  Expired\n  Inactive\n  Outperformed\n}\n\ninput OrderTermsFilter {\n  \"\"\"\n  Keeps orders priced at or above this fraction of their collection's latest floor. Orders without a positive floor or a currency rate are kept.\n  \"\"\"\n  minFloorRatio: Float = null\n  netAmount: BigIntInterval = null\n}\n\nenum OrderType {\n  ASK\n  BID\n}\n\nenum Ordering {\n  ASC\n  DESC\n}\n\ntype OutbidNotification implements Node & Notification {\n  auction: Auction!\n  auctionId: String!\n  createdOn: DateTime!\n  id: String!\n  loan: MultiSourceLoan!\n  loanId: String!\n  newBid: Bid!\n  newBidId: Int!\n  notificationType: String!\n  readOn: DateTime\n  user: User!\n  userBid: Bid!\n  userBidId: Int!\n}\n\ntype OutstandingLoanStatistics {\n  loansData(currencyAddress: Address = null): LoansData!\n  outstandingLoanCount: Int!\n  outstandingNftsCount: BigInt!\n  outstandingPrincipal(currencyAddress: Address!): BigInt!\n  totalOutstandingPrincipal: BigInt!\n}\n\ntype PageInfo {\n  endCursor: String\n  hasNextPage: Boolean!\n  hasPreviousPage: Boolean!\n  startCursor: String\n}\n\ntype PlatformFee {\n  beneficiary: Address!\n  bps: BigInt!\n}\n\nenum PlatformFeeOperationType {\n  BUY_NOW_PAY_LATER\n  SALE\n  SELL_AND_REPAY\n  STEALTH_ASK\n  STEALTH_ASK_SELL_AND_REPAY\n  STEALTH_BID_EXECUTION\n  STEALTH_BID_PUBLICATION\n}\n\ntype PointActivity implements Node {\n  id: String!\n  loanActivity: LoanActivity!\n  points: BigInt!\n  reason: String!\n  timestamp: DateTime!\n  userId: Int!\n}\n\ntype PointActivityConnection {\n  edges: [PointActivityEdge!]!\n  pageInfo: PageInfo!\n  totalCount: Int!\n}\n\ntype PointActivityEdge {\n  cursor: String!\n  node: PointActivity!\n}\n\n\"\"\"\nAccounts ranked by what their NFTs are worth: each account's items are valued as NFT.valuation was when its collection was last refreshed, and the ranking is refreshed daily.\n\"\"\"\ntype PortfolioLeaderboard {\n  \"\"\"\n  When the ranking was taken; null until its first run.\n  \"\"\"\n  asOf: DateTime\n  endCursor: String\n  hasNextPage: Boolean!\n  rows: [PortfolioLeaderboardRow!]!\n  totalCount: Int!\n\n  \"\"\"\n  The rank of the signed-in user's account; null when signed out or unranked.\n  \"\"\"\n  viewerRank: Int\n}\n\n\"\"\"\nOne account on the portfolio leaderboard.\n\"\"\"\ntype PortfolioLeaderboardRow {\n  \"\"\"\n  Wrap families among the account's held items.\n  \"\"\"\n  collectionCount: Int!\n  name: String\n  profilePictureUrl: String\n  rank: Int!\n\n  \"\"\"\n  Held items nothing in the market prices; they add nothing.\n  \"\"\"\n  unvaluedNfts: Int!\n\n  \"\"\"\n  Sum of the account's items' valuations at the sample, in ETH.\n  \"\"\"\n  value: Float!\n  valuedNfts: Int!\n\n  \"\"\"\n  The account's representative wallet; its profile is the row's.\n  \"\"\"\n  walletAddress: Address!\n\n  \"\"\"\n  The account's wallets: its own and the ones confirmed-linked.\n  \"\"\"\n  walletCount: Int!\n}\n\n\"\"\"\nNFT.valuation summed over the NFTs the wallets own, hold in a stash or a vault, or have as collateral of their active loans as borrower, in ETH.\n\"\"\"\ntype PortfolioValuation {\n  \"\"\"\n  One row per wrap family, highest value first.\n  \"\"\"\n  collections: [CollectionValuation!]!\n\n  \"\"\"\n  True when the wallets hold more items than the per-portfolio cap; the cheapest families by floor are the ones left out.\n  \"\"\"\n  truncated: Boolean!\n\n  \"\"\"\n  Held items nothing in the market prices; they add nothing.\n  \"\"\"\n  unvaluedNfts: Int!\n\n  \"\"\"\n  Sum of the valued items' estimates, in ETH.\n  \"\"\"\n  value: Float!\n  valuedNfts: Int!\n}\n\n\"\"\"\nQuery for the lending module\n\"\"\"\ntype Query {\n  collectionMarketDepth(collectionIds: [Int!]!): CollectionMarketDepth!\n\n  \"\"\"\n  Collections the collection's recent buyers also bought, most shared buyers first: the most recent receivers of its sales, contracts left out, and the other collections they bought in the same window, from each buyer's most recent purchases. Its own wrap family and hidden collections are left out, a collection needs a minimum of shared buyers, and the ranking is cached for a while.\n  \"\"\"\n  collectorsAlsoBought(\n    collectionId: Int!\n\n    \"\"\"\n    Maximum collections; larger values are clamped.\n    \"\"\"\n    first: Int! = 8\n  ): [CollectorsAlsoBought!]!\n  dealReadiness(dealId: Int64!): DealReadinessResult!\n\n  \"\"\"\n  Featured listings in curated order: pinned NFTs, or the cheapest qualifying listing per approved collection when automatic selection is enabled. Each carries the open offer that lends the most on it among those of at least 30 days at an effective APR of at most 25%. A pick shows only while it has a public ask in ETH or WETH on a supported marketplace and such an offer. `first` is capped at 6.\n  \"\"\"\n  featuredListings(\n    \"\"\"\n    Maximum listings, clamped to 6.\n    \"\"\"\n    first: Int! = 6\n  ): [LoanDeal!]!\n\n  \"\"\"\n  The galleries listed under a profile wallet, most recently edited first. Visitors get the published ones; the account that owns the wallet gets its drafts too.\n  \"\"\"\n  galleries(address: Address!): [Gallery!]!\n\n  \"\"\"\n  One gallery by the profile wallet and slug of its URL. A draft is found only by the account that owns it.\n  \"\"\"\n  gallery(address: Address!, slug: String!): Gallery\n  getAddressByName(name: String!): Address\n\n  \"\"\"\n  The wallet holding a Gondi username, for profile links; never a recipient lookup.\n  \"\"\"\n  getAddressByUsername(username: String!): Address\n\n  \"\"\"\n  Get an artist by ID.\n  \"\"\"\n  getArtist(artistId: Int!): Artist\n\n  \"\"\"\n  Get an artist by slug.\n  \"\"\"\n  getArtistBySlug(slug: String!): Artist\n\n  \"\"\"\n  Get the borrowing power for a list of borrowers.Borrowing power is the sum of the best offer per NFT the borrower has.The best offer is the offer with the highest net principal.Returns the normalized sum in ETH equivalent (float).\n  \"\"\"\n  getBorrowingPower(borrowers: [Address!]!): Float!\n  getCancelAllNftOrdersCalldata(\n    isAsk: Boolean = null\n    kind: OrderKind!\n    nftId: Int!\n    statuses: [OrderStatusType!] = null\n    walletAddress: Address!\n  ): [CancelAllOrdersCalldata!]!\n  getCancelOrdersCalldata(maker: Address!, orderIds: [Int64!]!): [CancelAllOrdersCalldata!]!\n\n  \"\"\"\n  Get some general loan stats about the activities for a collection.\n  \"\"\"\n  getCollectionActivitiesCount(\n    collectionId: Int = null\n    currencyAddress: Address = null\n    fromTimestamp: Int!\n    slug: String = null\n  ): CollectionEventsCountByDayAndCurrency!\n\n  \"\"\"\n  Get a collection by its slug. Slugs are unique identifiers for collections.\n  \"\"\"\n  getCollectionBySlug(slug: String!): Collection\n\n  \"\"\"\n  Highest active bid targeting a single collection whose trait constraint is satisfied by the supplied trait IDs. Considers single-trait bids whose trait is in the input, multi-trait bids whose trait set is contained in the input, and collection-level bids. Returns null when traitIds is empty or no matching bid exists.\n  \"\"\"\n  getCollectionHighestBidMatchingTraits(collectionId: Int!, traitIds: [Int!]!): Order\n\n  \"\"\"\n  Get some general loans stats from a collection.\n  \"\"\"\n  getCollectionLoansData(collectionId: Int!, currencyAddress: Address = null): CollectionLoansData!\n  getCollectionOfferSteps(collectionId: Int!): OfferSteps!\n  getCollectionsByContractAddress(contractAddress: Address!): [Collection!]!\n  getCurrency(address: Address!): Currency\n\n  \"\"\"\n  Get an edition by its slug.\n  \"\"\"\n  getEditionBySlug(slug: String!): Edition!\n  getFeedId: String!\n  getFulfillManyOrdersCalldata(orderIds: [Int64!]!): [FulfillManyOrdersCalldata!]!\n\n  \"\"\"\n  Current lending principal and lender interest snapshot.\n  \"\"\"\n  getLendingMarketPulse: LendingMarketPulse!\n  getListingById(listingId: Int!): Listing\n  getLoanActivitiesStatisticsByMonth(\n    activities: [LoanActivityType!]!\n    currencyAddress: Address!\n    lenders: [Address!]!\n  ): LoanActivitiesStatisticsByMonth!\n\n  \"\"\"\n  Get a loan by the contract address and loan id used in the contract on-chain.Unless specified as in this case, loan id is the internal gondi id of the loan and not the id used inside the contract.Internal gondi id is unique between all loans.Note that contract loan id is only unique within a contract version and that Gondi has multiple versions of the MSL (MultiSourceLoan) contract.\n  \"\"\"\n  getLoanById(address: String!, loanId: Int!): Loan\n\n  \"\"\"\n  Top, Volume and Movers collection rankings for a rolling period.\n  \"\"\"\n  getMarketOverview(timeframe: MarketOverviewTimeframe!): MarketOverview!\n  getNftByContractAddressAndTokenId(contractAddress: Address!, tokenId: BigInt!): NFT\n  getNftBySlugAndTokenId(slug: String!, tokenId: BigInt!): NFT\n  getOrderCancelCalldata(model: OrderModel = null, orderIdInt64: Int64 = null): Hex!\n  getOrderSaleCalldata(\n    model: OrderModel = null\n    nftId: Int = null\n    orderIdInt64: Int64 = null\n    taker: Address = null\n  ): Hex!\n  getOutstandingDebt(borrowers: [Address!]!, currencyAddresses: [Address!] = null): BigInt!\n  getOutstandingLoanStatistics: OutstandingLoanStatistics!\n  getPointsFromReferrals: Int!\n\n  \"\"\"\n  Accounts ranked by their portfolio valuation, highest first. An account is a user with its confirmed-linked wallets.\n  \"\"\"\n  getPortfolioLeaderboard(after: String, first: Int! = 20): PortfolioLeaderboard!\n\n  \"\"\"\n  NFT.valuation summed over the NFTs the wallets own, hold in a stash or a vault, or have as collateral of their active loans as borrower, in ETH, in total and per wrap family. ERC1155 tokens are left out. Takes 1 to 10 distinct wallets. At most max_nfts_per_portfolio items, highest family floor first; truncated says when the cap left items out.\n  \"\"\"\n  getPortfolioValuation(owners: [Address!]!): PortfolioValuation!\n  getPurchaseBundlerFromOrder(\n    \"\"\"\n    Loan ID if NFT to execute with the purchase bundler is a loan.\n    \"\"\"\n    loanId: String = null\n    orderId: Int64!\n  ): Address!\n\n  \"\"\"\n  Profit `lenders` realized per UTC day and currency: the interest and origination fee of each position, counted on the day they left it by repayment or by being refinanced or renegotiated out. Only days that realized something return a row, ordered by `day` then `currencyAddress`. The window opens at the UTC midnight `days - 1` days before today and runs to now. `days` must be from 1 to 366 and `currencyAddresses` may name at most 10 currencies. Summed over all time, the rows equal `getSourcesStatistics` `profit` and `netProfit` for `statuses: [LOAN_REPAID]`.\n  \"\"\"\n  getRealizedProfitsByDay(\n    currencyAddresses: [Address!]!\n    days: Int! = 360\n    lenders: [Address!]!\n  ): [RealizedProfitDay!]!\n  getReferredWallets: Int!\n  getSaleManyOrdersCalldata(sales: [BidFulfillInput!]!): [FulfillManyBidOrdersCalldata!]!\n  getSellAndRepayOrderSwapCalldata(\n    expectedRate: Float!\n    loanId: String!\n    orderId: Int64!\n    slippage: Float!\n  ): Hex\n  getSourcesStatistics(\n    currencyAddress: Address!\n    lenders: [Address!]!\n    statuses: [LoanStatusType!]!\n  ): SourcesStatistics!\n  getSourcesStatisticsByCollection(\n    currencyAddress: Address!\n    lenders: [Address!]!\n    statuses: [LoanStatusType!]!\n  ): [SourceStatisticsFromCollection!]!\n  getSwapQuote(\n    blockchain: BlockchainEnum!\n    fromCurrency: Address!\n    toCurrency: Address!\n  ): SwapQuote!\n\n  \"\"\"\n  Deprecated.\n  \"\"\"\n  getSwapRate(fromCurrency: Address!, toCurrency: Address!): Float!\n    @deprecated(reason: \"Use get_swap_quote instead.\")\n\n  \"\"\"\n  Rank lenders across all currencies or a selected currency group.\n  \"\"\"\n  getTopLenders(\n    after: String\n    currencyAddresses: [Address!] = null\n    first: Int! = 20\n    metric: LenderRankingMetric!\n    order: Ordering = null\n    period: LenderRankingPeriod! = LAST_90_DAYS\n    viewerAddress: Address = null\n    year: Int = null\n  ): TopLenders!\n  getUserPointActivities(after: String, first: Int = null): PointActivityConnection!\n  getUserPoints: Int!\n\n  \"\"\"\n  Follow counts and viewer follow state for a wallet.\n  \"\"\"\n  getWalletFollowStats(walletAddress: Address!): WalletFollowStats!\n  getWalletHoldingsSummary(address: Address!): WalletHoldingsSummary!\n  getWalletLendingSummary(address: Address!, role: WalletLendingRole!): WalletLendingSummary!\n\n  \"\"\"\n  Purchases, sales, borrows and lends since fromTimestamp (all time when unset), in USD at current rates, plus a year of their daily counts. Only what crosses the wallets' boundary counts: a sale between two of the wallets is neither side, and a borrow or lend is valued at the principal lent across it. A loan counts once per side, dated and valued when principal first crossed the boundary (normally its origination, otherwise the refinance that first moved principal across it); later refinances and renegotiations add nothing. At most 10 wallets.\n  \"\"\"\n  getWalletTradingSummary(addresses: [Address!]!, fromTimestamp: Int = null): WalletTradingSummary!\n  globalSearch(searchTerm: String!): [GlobalSearchResult!]!\n  globalSearchV2(searchTerm: String!): GlobalSearchV2Results!\n  isUsernameAvailable(username: String!): Boolean!\n\n  \"\"\"\n  Full-loan choices selected across all matching quotes before pagination. Supply group for inline additional choices.\n  \"\"\"\n  itemLoanOfferBook(\n    after: String = null\n    contractAddresses: [Address!] = null\n    currencyAddress: Address!\n    duration: BigInt = null\n    first: Int! = 50\n    group: String = null\n    lenderAddress: Address = null\n    loanId: String = null\n    nftId: Int!\n    sortBy: OffersSortInput = null\n    viewerAddress: Address = null\n  ): ItemLoanOfferBook!\n\n  \"\"\"\n  Live ApprovalForAll grants of the wallets on Ethereum, read from Etherscan and confirmed on-chain, highest exposed floor value first, plus the wallets whose history could not be read in full. At most 10 wallets.\n  \"\"\"\n  listApprovalExposures(walletAddresses: [Address!]!): ApprovalExposures!\n\n  \"\"\"\n  Artist 1/1 works and non-1/1 collection or edition groups, sorted and paged together.\n  \"\"\"\n  listArtistCatalog(\n    after: String\n    aroundNftId: Int = null\n    artistId: Int!\n    first: Int! = 20\n\n    \"\"\"\n    Group an edition's copies into one entry for the edition rather than into their collection.\n    \"\"\"\n    groupEditions: Boolean! = false\n    itemTypes: [ItemType!] = null\n    sortBy: ArtistCatalogSortInput = null\n  ): ArtistCatalogEntryConnection!\n\n  \"\"\"\n  Artists any wallet of your account follows, most recently followed first. An artist followed from two of your wallets appears once.\n  \"\"\"\n  listArtistFollows(after: String, first: Int! = 20): ArtistConnection!\n\n  \"\"\"\n  The holder's artworks in preview order, scoped exactly as listArtistHoldersV2. totalCount counts grouped artworks; each entry carries its copy quantity.\n  \"\"\"\n  listArtistHolderItems(\n    after: String\n    artistId: Int!\n    first: Int! = 20\n    scope: ArtistHolderScopeInput = null\n    wallet: Address!\n  ): ArtistHoldingConnection!\n\n  \"\"\"\n  Artist holder population with stable ranks, personal position and lazy quantity insights. Wallet search only narrows rows.\n  \"\"\"\n  listArtistHolderPopulation(\n    addressTypes: [AddressType!] = null\n    after: String = null\n    artistId: Int!\n    first: Int! = 50\n    hasItemType: ItemType = null\n    hideArtistAndBurnWallets: Boolean! = false\n    includeCustodians: Boolean! = true\n    ownedAmount: RangeInput = null\n    scope: ArtistHolderScopeInput = null\n    searchTerm: String = null\n    sortBy: [ArtistHolderSortInput!] = null\n  ): ArtistHolderPopulationConnection!\n\n  \"\"\"\n  Wallets holding NFTs by the artist, one row per wallet with its owned amount, 1/1s owned, and first and last acquisition. By default, sorted by 1/1s owned, then counts in collections ordered by the stronger of recent sales and current public top bids, then wallet address.\n  \"\"\"\n  listArtistHolders(\n    \"\"\"\n    Keep only holders whose highest-ranked address type across all classified chains is one of these types.\n    \"\"\"\n    addressTypes: [AddressType!] = null\n    after: String\n    artistId: Int!\n    first: Int! = 20\n\n    \"\"\"\n    Include explicitly identified custodian/omnibus addresses. Independent of account type; exclusion does not identify beneficial owners. Defaults to true for existing clients.\n    \"\"\"\n    includeCustodians: Boolean! = true\n    ownedAmount: RangeInput = null\n\n    \"\"\"\n    Restrict counts, previews, acquisition dates and activity to selected artworks.\n    \"\"\"\n    scope: ArtistHolderScopeInput = null\n    searchTerm: String = null\n    sortBy: [ArtistHolderSortInput!] = null\n    walletAddresses: [Address!] = null\n  ): ArtistHolderConnection!\n\n  \"\"\"\n  Quantity-based artist holders. ERC1155 copies count individually; previews group each held artwork. Default ranking preserves 1/1 priority.\n  \"\"\"\n  listArtistHoldersV2(\n    addressTypes: [AddressType!] = null\n    after: String\n    artistId: Int!\n    first: Int! = 20\n\n    \"\"\"\n    Keep wallets holding this type within scope, while retaining their other scoped artworks.\n    \"\"\"\n    hasItemType: ItemType = null\n\n    \"\"\"\n    Exclude the artist's registered mint addresses and known burn addresses from rows and totalCount. Applied to attributed holders, including vault owners and borrowers. Defaults to false.\n    \"\"\"\n    hideArtistAndBurnWallets: Boolean! = false\n    includeCustodians: Boolean! = true\n    ownedAmount: RangeInput = null\n    scope: ArtistHolderScopeInput = null\n    searchTerm: String = null\n    sortBy: [ArtistHolderSortInput!] = null\n    walletAddresses: [Address!] = null\n  ): ArtistHolderV2Connection!\n\n  \"\"\"\n  List artists/creators, optionally filtered by type.\n  \"\"\"\n  listArtists(\n    after: String\n    artistType: ArtistType = null\n    collection: ArtistCollectionInput = null\n    first: Int! = 10\n    ids: [Int!] = null\n\n    \"\"\"\n    Keep only the artists whose name or slug matches, with the same typo and prefix tolerance as globalSearchV2.\n    \"\"\"\n    searchTerm: String = null\n    sortBy: [ArtistSortInput!] = null\n    withAsks: WithAsksInput = null\n  ): ArtistConnection!\n  listAuctions(\n    after: String\n    currencyAddress: Address = null\n    first: Int = null\n    sortBy: [AuctionSortInput!] = null\n    statuses: [AuctionStatus!] = null\n  ): AuctionConnection!\n  listBids(\n    after: String\n    auctionId: String = null\n    auctionStatuses: [AuctionStatus!] = null\n    bidders: [String!] = null\n    currencyAddresses: [Address!] = null\n    first: Int = null\n    onlyLatest: Boolean! = false\n    sortBy: [BidSortInput!] = null\n  ): BidConnection!\n\n  \"\"\"\n  The borrowers' open loans on Blur's Blend, from the Blend backfill. At most 20 borrowers.\n  \"\"\"\n  listBlendLiens(borrowers: [Address!]!): [BlendLien!]!\n\n  \"\"\"\n  List collections for feed.\n  \"\"\"\n  listCollectionFollows(\n    after: String\n    feedId: String = null\n    first: Int! = 20\n\n    \"\"\"\n    Orders the followed collections by name or by when they were followed. By collection id when omitted.\n    \"\"\"\n    sortBy: [CollectionFollowSortInput!] = null\n  ): CollectionConnection!\n  listCollectionHolders(\n    \"\"\"\n    Keep only holders whose address was classified with any of these on-chain address types.\n    \"\"\"\n    addressTypes: [AddressType!] = null\n    after: String\n\n    \"\"\"\n    Keep only holders classified with any of these collection-scoped behavior types.\n    \"\"\"\n    behaviorTypes: [NftOwnerBehaviorType!] = null\n    first: Int! = 20\n    ownedAmount: RangeInput = null\n    searchTerm: String = null\n    slug: String!\n    sortBy: [CollectionHolderSortInput!] = null\n    traits: [Int!] = null\n    walletAddresses: [Address!] = null\n  ): HolderConnection!\n  listCollectionTraitFilterOptions(collectionId: Int!): TraitFilterOption!\n  listCollectionTraitKeyOptions(\n    after: String\n    collectionId: Int!\n    first: Int! = 50\n  ): TraitKeyOptionConnection!\n  listCollectionTraitTypes(\n    after: String\n    collectionIds: [Int!] = null\n    first: Int! = 40\n    valueType: TraitValueType = null\n  ): TraitTypeConnection!\n  listCollectionTraitValues(\n    after: String\n    collectionIds: [Int!] = null\n    first: Int! = 40\n    higherTraitOffersOnly: Boolean! = false\n    key: [String!] = null\n    market: TraitMarketFilter = null\n    nftId: Int = null\n    onlyEnums: Boolean = null\n    searchTerm: String = null\n    sortBy: [TraitValueSortInput!] = null\n    traitIds: [Int!] = null\n  ): TraitValueConnection!\n  listCollections(\n    after: String\n\n    \"\"\"\n    Filter by artist IDs to get linked collections.\n    \"\"\"\n    artists: [Int!] = null\n\n    \"\"\"\n    Filter by the blockchains the collections live on.\n    \"\"\"\n    blockchains: [BlockchainEnum!] = null\n    collections: [Int!] = null\n    excludeCollections: [Int!] = null\n    excludeGondiUserVault: Boolean = false\n    first: Int = null\n\n    \"\"\"\n    Filter by floor price in ETH using an interval (min/max).\n    \"\"\"\n    floorPrice: Interval = null\n    forWallets: ForWalletsInput = null\n\n    \"\"\"\n    Only return collections holding an NFT of one of these item types; with `artists`, only the artists' own NFTs count.\n    \"\"\"\n    itemTypes: [ItemType!] = null\n    searchTerm: String = null\n    sortBy: [CollectionSortInput!] = null\n    standards: [TokenStandardType!] = null\n    withAsks: WithAsksInput = null\n    withListings: Boolean = false\n    withLoans: Boolean = false\n    wrappers: Boolean = null\n  ): CollectionConnection!\n\n  \"\"\"\n  List NFT collections that have at least one listing. Listing an NFT is marking the NFT as available for taking loans and this can only be done by the owner of the NFT.\n  \"\"\"\n  listCollectionsWithListings(\n    after: String\n    collections: [Int!] = null\n    first: Int! = 10\n    searchTerm: String = null\n  ): CollectionConnection!\n\n  \"\"\"\n  List NFT collections that have at least one loan.\n  \"\"\"\n  listCollectionsWithLoans(\n    after: String\n    collections: [Int!] = null\n    first: Int! = 10\n    searchTerm: String = null\n  ): CollectionConnection!\n  listCurrencies(after: String, first: Int! = 20): CurrencyConnection!\n  listDeals(\n    after: String\n    first: Int = null\n    ids: [Int!] = null\n    sortBy: [DealSortInput!] = null\n    statuses: [OrderStatusType!] = null\n    walletAddresses: [Address!]!\n  ): DealConnection!\n\n  \"\"\"\n  Editions any wallet of your account follows, most recently followed first. An edition followed from two of your wallets appears once.\n  \"\"\"\n  listEditionFollows(after: String, first: Int! = 20): EditionConnection!\n\n  \"\"\"\n  List editions, filtered by collection, IDs, artists, tiers, or search term.\n  \"\"\"\n  listEditions(\n    after: String\n    artists: [Int!] = null\n\n    \"\"\"\n    Only return editions in the given bid tiers (HIGH/MEDIUM/LOW).\n    \"\"\"\n    bidTiers: [EditionBidTier!] = null\n    collectionId: Int = null\n    editions: [Int!] = null\n    first: Int = null\n    searchTerm: String = null\n    sortBy: [EditionSortInput!] = null\n  ): EditionConnection!\n\n  \"\"\"\n  List editions, and with includeErc1155 the ERC1155 NFTs no edition groups, filtered by collection, IDs, artists, tiers, or search term. An ERC1155 token is an edition of its own: its copies are units of one NFT rather than one NFT each, so it has no edition row to be listed as. Supersedes listEditions, which cannot return them: a union node would invalidate every selection on that field.\n  \"\"\"\n  listEditionsV2(\n    after: String\n    artists: [Int!] = null\n\n    \"\"\"\n    Only return editions in the given bid tiers (HIGH/MEDIUM/LOW). A bid tier is an edition's, so this leaves every NFT out.\n    \"\"\"\n    bidTiers: [EditionBidTier!] = null\n    collectionId: Int = null\n    editions: [Int!] = null\n    first: Int = null\n\n    \"\"\"\n    Also return the ERC1155 NFTs that no edition groups. Needs artists or collectionId, which is what bounds them. Off, this returns exactly what listEditions returns.\n    \"\"\"\n    includeErc1155: Boolean! = false\n    searchTerm: String = null\n    sortBy: [EditionSortInput!] = null\n  ): EditionNFTConnection!\n\n  \"\"\"\n  List all activities. Includes loan activities, loan offers, loan renegotiations, trade orders, nft transfers. priceUsd bounds are USD amounts converted with current rates; events without a priced amount (transfers, loan listings, executed trades) are excluded while a price filter is set.\n  \"\"\"\n  listEvents(\n    after: String\n\n    \"\"\"\n    Only events on these artists' work: NFTs linked to them directly or through their collection, and collection offers and bids on those collections. User vaults are not matched.\n    \"\"\"\n    artists: [Int!] = null\n    blockchains: [BlockchainEnum!] = null\n    collections: [Int!] = null\n    currencyAddresses: [Address!] = null\n    eventTypes: [EventType!] = null\n    first: Int! = 10\n\n    \"\"\"\n    Only what the signed-in account follows, from any of its wallets: the events of the followed wallets (as `users` matches them), every event in the followed collections, and every event on the followed artists' work (as `artists` matches it). An event matching several appears once. Each kind reads its 100 most recent follows. The other filters still apply; `users`, `collections` and `artists` keep only the followed wallets, collections and artists they list too. Without a signed-in account the list is empty.\n    \"\"\"\n    following: Boolean = null\n    fromTimestamp: Int = null\n    nfts: [Int!] = null\n    priceUsd: Interval = null\n    toTimestamp: Int = null\n\n    \"\"\"\n    Only Top Events: sales and loan events (initiated, refinanced, renegotiated, topped up, repaid, defaulted) worth at least the configured USD minimum at current rates, plus, in a collection whose wrap family has a current floor at or above the configured ETH minimum, the family's first event of the requested types in each fixed window of the configured length, counted from the Unix epoch. Any other event type raises, listings included.\n    \"\"\"\n    topEvents: Boolean = null\n    traits: [Int!] = null\n    users: [Address!] = null\n\n    \"\"\"\n    Which side of an event `users` must be on, as the activity feed shows it: FROM the giving party (a seller, the lenders funding or refinancing a loan, a repaying borrower, an order's maker, a listing's or an offer's author, a deal's maker), TO the receiving one (a buyer, also of a sale forwarded to another wallet; a funded borrower; the lenders a loan is repaid to, foreclosed by or defaulted on; a deal's taker). Listings, offers, bids and renegotiation offers name nobody on the TO side, and a loan extension, auction start or auction sale nobody on either, so those never match that side. ANY, the default, is either side.\n    \"\"\"\n    usersSide: EventSide! = ANY\n  ): EventConnection!\n  listListings(\n    after: String\n    blockchains: [BlockchainEnum!] = null\n    collectionIds: [Int!] = null\n    currencyAddresses: [Address!] = null\n    editionIds: [Int!] = null\n    excludeSlugs: [String!] = null\n    first: Int = null\n\n    \"\"\"\n    When filtering by collections, you can include vaults with items from the collections.\n    \"\"\"\n    includeVaultsForCollections: VaultsFilter = null\n    marketplaceNames: [MarketplaceEnum!] = null\n    searchTerm: String = null\n    slugs: [String!] = null\n    sortBy: LoanRequestsSortInput = null\n    userFilter: UserFilter = null\n    withLoans: Boolean = false\n  ): ListingConnection!\n  listListingsForSale(\n    after: String\n    collectionId: Int = null\n    currencyAddress: Address = null\n    first: Int = null\n    forTaker: Address = null\n    maker: Address = null\n    nftId: Int = null\n    sortBy: [OrderSortInput!] = null\n    statuses: [OrderStatusType!] = null\n  ): OrderConnection!\n\n  \"\"\"\n  Deprecated.\n  \"\"\"\n  listLoanActivities(\n    after: String\n    collections: [Int!] = null\n    currencyAddress: Address = null\n    first: Int! = 10\n    fromTimestamp: Int = null\n    loanId: String = null\n    sortBy: [LoanActivitySortInput!] = null\n    types: [LoanActivityType!] = null\n  ): LoanActivityConnection! @deprecated(reason: \"Use list_loan_events instead.\")\n\n  \"\"\"\n  List all events related to a loan. Useful to track the status changes of a loan.\n  \"\"\"\n  listLoanEvents(\n    after: String\n\n    \"\"\"\n    Filter by artist IDs: events of loans on NFTs linked to the artists directly or through their collections, and on user vaults whose wrapped NFTs all belong to the same one of them.\n    \"\"\"\n    artists: [Int!] = null\n    collections: [Int!] = null\n    currencyAddress: Address = null\n    first: Int! = 10\n    fromTimestamp: Int = null\n    loanId: String = null\n    nfts: [Int!] = null\n\n    \"\"\"\n    Only events whose principal, as recorded at the event, is within these USD bounds, converted with current rates as listEvents(priceUsd) does. Loan defaults record no principal and are excluded while it is set.\n    \"\"\"\n    priceUsd: Interval = null\n    slugs: [String!] = null\n    sortBy: [LoanEventSortInput!] = null\n    types: [LoanEventType!] = null\n  ): LoanEventConnection!\n\n  \"\"\"\n  Lists all loans from gondi.\n  \"\"\"\n  listLoans(\n    after: String\n\n    \"\"\"\n    Open the page on the loan of this NFT (its internal id): it comes back with up to (first - 1) / 2 loans on each side under the requested sort, and the edges' cursors page on from there. An NFT with several matching loans opens on the first of them. When the filters exclude it (a repaid loan with statuses [LOAN_INITIATED]), the page holds the first (first - 1) / 2 loans instead. Cannot be combined with after.\n    \"\"\"\n    aroundNftId: Int = null\n    blockchains: [BlockchainEnum!] = null\n    borrowers: [String!] = null\n    collections: [Int!] = null\n    contractAddresses: [Address!] = null\n    currencyAddresses: [Address!] = null\n    excludeAddresses: [Address!] = null\n    excludeSlugs: [String!] = null\n    first: Int! = 10\n\n    \"\"\"\n    Hide loans that are locked up for refinancing because of being close to expiration.Refinanced loans are locked at the end to avoid lenders to be pulled out at the last moment and lose a default profit.\n    \"\"\"\n    hideEndLocked: Boolean = null\n\n    \"\"\"\n    Hide loans that are locked up for refinancingbecause of recently initiated.Refinanced loans are locked at beggining to help lenders accrue some interest.\n    \"\"\"\n    hideLocked: Boolean = null\n\n    \"\"\"\n    When filtering by collections, you can include vaults with items from the slugs.\n    \"\"\"\n    includeVaultsForCollections: VaultsFilter = null\n    nfts: [Int!] = null\n    orderByStatuses: Boolean = true\n\n    \"\"\"\n    Filter by requests on the loan.\n    \"\"\"\n    requestStatuses: [LoanRequestType!] = null\n    searchTerm: String = null\n    sluggedTokens: [SluggedTokenInput!] = null\n    slugs: [String!] = null\n    sortBy: [LoanSortInput!] = null\n    statuses: [LoanStatusType!] = null\n    terms: TermsFilter = null\n    traits: [Int!] = null\n  ): MultiSourceLoanConnection!\n  listNames(walletAddresses: [Address!]!): [String]! @deprecated(reason: \"Use listProfiles.\")\n  listNftDelegations(\n    after: String\n    contractAddress: Address = null\n    first: Int! = 20\n    nftId: Int!\n  ): DelegationConnection!\n\n  \"\"\"\n  NFTs any wallet of your account follows, most recently followed first. An NFT followed from two of your wallets appears once.\n  \"\"\"\n  listNftFollows(after: String, first: Int! = 20): NFTConnection!\n  listNftOffersAndRenegotiations(\n    after: String\n    blockchains: [BlockchainEnum!] = null\n    collections: [Int!] = null\n\n    \"\"\"\n    Offer only filter.\n    \"\"\"\n    contractAddresses: [Address!] = null\n    currencyAddresses: [Address!] = null\n    first: Int = null\n    hidden: Boolean = null\n\n    \"\"\"\n    Renegotiation only filter.\n    \"\"\"\n    isAddNewTranche: Boolean = null\n    lenders: [String!] = null\n\n    \"\"\"\n    Renegotiation only filter.\n    \"\"\"\n    loanId: String = null\n\n    \"\"\"\n    Offer only filter.\n    \"\"\"\n    nfts: [Int!] = null\n    onlyCollectionOffers: Boolean! = false\n    onlyInactiveOrHidden: Boolean! = false\n    onlyInvalid: Boolean! = false\n    onlySingleNftOffers: Boolean! = true\n    sortBy: OffersSortInput = null\n    statuses: [OfferStatus!] = null\n    terms: TermsFilter = null\n  ): SingleNFTOfferCollectionOfferSetOfferTraitOfferRenegotiationConnection!\n  listNftStrategyDeployments(after: String, first: Int = null): NftStrategyDeploymentConnection!\n  listNfts(\n    after: String\n\n    \"\"\"\n    Open the page on this NFT: it comes back with up to (first - 1) / 2 NFTs on each side under the requested sort, and the edges' cursors page on from there. When the filters exclude it (an unlisted NFT with withAsksConfig.withPrice), the page holds the first (first - 1) / 2 NFTs instead. Needs exactly one slug, one artist, or included owners, and no after.\n    \"\"\"\n    aroundNftId: Int = null\n    artists: [Int!] = null\n    blockchains: [BlockchainEnum!] = null\n    burned: Boolean = null\n\n    \"\"\"\n    Only return edition NFTs whose edition falls in the given bid tiers (HIGH/MEDIUM/LOW).\n    \"\"\"\n    editionBidTiers: [EditionBidTier!] = null\n    editionIds: [Int!] = null\n    excludeSlugs: [String!] = null\n    first: Int = null\n    flagged: Boolean = null\n    inactive: Boolean = null\n\n    \"\"\"\n    When filtering by collections, you can include vaults with items from the slugs.\n    \"\"\"\n    includeVaultsForCollections: VaultsFilter = null\n\n    \"\"\"\n    Filter NFTs by their item type (e.g. 1/1s via ONE_OF_ONE).\n    \"\"\"\n    itemTypes: [ItemType!] = null\n\n    \"\"\"\n    Filter Nfts by the loans they are part of. You can provide contracts and exclude_contracts to control contract addresses. You can also provide borrowers and exclude_borrowers to control the borrowers of the loans.\n    \"\"\"\n    loansFilter: NftLoansFilterInput = null\n\n    \"\"\"\n    Only return NFTs whose token id is greater than or equal to this value. Useful, combined with a TOKEN_ID ascending sort, to page a carousel starting from a given item.\n    \"\"\"\n    minTokenId: BigInt = null\n    nftIds: [Int!] = null\n\n    \"\"\"\n    Filter by the owners of the NFTs. You can provide owners and exclude_owners to control the owners of the NFTs. with_in_wallet will include NFTS of the owners. with_in_loan will include NFTS on loan to the owners (as borrowers). with_in_stash will include NFTS in stashes of the owners. with_in_vault will include NFTS in vaults of the owners.\n    \"\"\"\n    ownersFilter: NftOwnersFilterInput = null\n\n    \"\"\"\n    Fields each word of search_term is matched against; an NFT matches when every word hits one of them. Omitted or empty keeps the default NFT name and token ID search. TOKEN_ID only matches words made of digits.\n    \"\"\"\n    searchFields: [NftSearchField!] = null\n    searchTerm: String = null\n    slugs: [String!] = null\n    sortBy: [NftsSortInput!] = null\n    standards: [TokenStandardType!] = null\n    traitRanges: [TraitRangeOptionsInput!] = null\n    traits: [TraitKeyValueOptionsInput!] = null\n    withAsksConfig: NftWithAsksConfigInput = null\n\n    \"\"\"\n    If true, it will only return NFTS with at least one active bid (single NFT, collection or trait bids). If false, it will only return NFTS without active bids.\n    \"\"\"\n    withBids: Boolean = null\n\n    \"\"\"\n    If true, it will return the listed for loan NFTS only. If false, it won't return the listed NFTS\n    \"\"\"\n    withListed: Boolean = null\n\n    \"\"\"\n    If true, it will return the NFTS with wrapped nfts (vaults). If false, it won't return the NFTS with wrapped nfts (vaults)\n    \"\"\"\n    withWraps: Boolean = null\n\n    \"\"\"\n    If true, it won't return empty vaults\n    \"\"\"\n    withoutEmptyWraps: Boolean = null\n  ): NFTConnection!\n\n  \"\"\"\n  Deprecated field: use list_nfts instead.\n  \"\"\"\n  listNftsFromCollections(\n    after: String\n    collections: [Int!] = null\n    currencyAddresses: [Address!] = null\n    first: Int = null\n    marketplaces: [MarketPlaceType!] = null\n    onlyListed: Boolean = null\n    searchTerm: String = null\n    sortBy: [NftSortInput!] = null\n    terms: NftTermsFilter = null\n    traitRanges: [TraitRangeOptionsInput!] = null\n    traits: [TraitKeyValueOptionsInput!] = null\n  ): NFTConnection! @deprecated(reason: \"Use list_nfts instead.\")\n\n  \"\"\"\n  Deprecated field: use list_nfts instead.\n  \"\"\"\n  listNftsFromUser(\n    after: String\n    collectionAddresses: [Address!] = null\n    first: Int = null\n    includeInStash: Boolean! = false\n    searchTerm: String = null\n    sortBy: [NftSortInput!] = null\n    standards: [TokenStandardType!] = null\n    withLoans: Boolean = false\n    withNoWraps: Boolean = false\n  ): NFTConnection! @deprecated(reason: \"Use list_nfts instead.\")\n  listNotifications(\n    after: String\n    first: Int = null\n    notificationTypes: [NotificationType!] = null\n    onlyRead: Boolean! = false\n    onlyUnread: Boolean! = false\n    walletAddresses: [Address!] = null\n  ): NotificationConnection!\n  listOffers(\n    after: String\n    blockchains: [BlockchainEnum!] = null\n\n    \"\"\"\n    Not used anymore.\n    \"\"\"\n    borrowerAddress: String = null\n    collections: [Int!] = null\n    contractAddresses: [Address!] = null\n    currencyAddress: Address = null\n    editionIds: [Int!] = null\n    excludeLenders: [Address!] = null\n    first: Int = null\n    hidden: Boolean = null\n    lenders: [String!] = null\n    nfts: [Int!] = null\n    onlyCollectionOffers: Boolean = false\n    onlySingleNftOffers: Boolean = false\n    sluggedTokens: [SluggedTokenInput!] = null\n    slugs: [String!] = null\n    sortBy: [OffersSortInput!] = null\n    statuses: [OfferStatus!] = null\n    terms: TermsFilter = null\n    worseOffers: Boolean = true\n  ): OfferConnection!\n\n  \"\"\"\n  This field is deprecated. Use list_orders_v2 instead. This field will be removed in the next major version.\n  \"\"\"\n  listOrders(\n    after: String\n    collectionId: Int = null\n    currencyAddresses: [Address!] = null\n    first: Int = null\n    hidden: Boolean = null\n    ids: [Int!] = null\n    maker: [Address!] = null\n    marketplaceIds: [String!] = null\n    marketplaces: [MarketPlaceType!] = null\n    nftId: Int = null\n    onlyInvalid: Boolean = null\n    orderType: OrderType = null\n    sortBy: [OrderSortInput!] = null\n    statuses: [OrderStatusType!] = null\n    stealth: Boolean = null\n    taker: Address = null\n    terms: OrderTermsFilter = null\n  ): OrderConnection!\n  listOrdersV2(\n    after: String\n    collectionIds: [Int!] = null\n    currencyAddresses: [Address!] = null\n    editionIds: [Int!] = null\n    excludeMaker: [Address!] = null\n    excludeTaker: [Address!] = null\n    exclusiveListings: Boolean = false\n    exclusiveListingsTypes: [ExclusiveListingType!] = null\n    first: Int = null\n    hidden: Boolean = null\n    ids: [Int!] = null\n    idsInt64: [Int64!] = null\n    maker: [Address!] = null\n    marketplaceIds: [String!] = null\n    marketplaces: [MarketPlaceType!] = null\n\n    \"\"\"\n    ANY needs side BID and collectionIds or traitIds (from one collection); orderTypes narrows the bid types.\n    \"\"\"\n    matchMode: OrderMatchMode! = ALL\n    nfts: [OrderForNft!] = null\n    onlyInvalid: Boolean = null\n\n    \"\"\"\n    Used together with collectionIds, or traitIds under matchMode ANY, to return orders of the given types scoped to them. Ignored otherwise.\n    \"\"\"\n    orderTypes: [CollectionOrderType!] = null\n    side: OrderSide = null\n    sortBy: [OrderSortInput!] = null\n    statuses: [OrderStatusType!] = null\n    stealth: Boolean = null\n    taker: Address = null\n    terms: OrderTermsFilter = null\n    traitIds: [Int!] = null\n    walletAddresses: [Address!] = null\n  ): OrderConnection!\n  listPlatformFees(\n    blockchain: BlockchainEnum!\n    collectionId: Int!\n    marketplace: MarketPlaceType = null\n    operation: PlatformFeeOperationType!\n  ): [PlatformFee!]!\n  listPopularSearches(\n    first: Int! = 10\n  ): [GlobalSearchV2ResultNFTGlobalSearchV2ResultCollectionGlobalSearchV2ResultArtistGlobalSearchV2ResultAccount!]!\n  listProfiles(walletAddresses: [Address!]!): [AddressProfile!]!\n  listRenegotiations(\n    after: String\n    blockchains: [BlockchainEnum!] = null\n    collections: [Int!] = null\n    first: Int = null\n    hidden: Boolean = null\n    isAddNewTranche: Boolean = null\n    loanId: String = null\n    sortBy: [OffersSortInput!] = null\n    statuses: [OfferStatus!] = null\n    terms: RefinanceTermsFilter = null\n  ): RenegotiationConnection!\n  listSales(\n    after: String\n    artists: [Int!] = null\n    collections: [Int!] = null\n    currencyAddresses: [Address!] = null\n    first: Int! = 10\n    fromTimestamp: Int = null\n    nfts: [Int!] = null\n\n    \"\"\"\n    Only sales whose price is within these USD bounds, converted with current rates as listEvents(priceUsd) does.\n    \"\"\"\n    priceUsd: Interval = null\n    sortBy: [SalesSortInput!] = null\n    toTimestamp: Int = null\n    traits: [Int!] = null\n    users: [Address!] = null\n  ): SaleConnection!\n\n  \"\"\"\n  List all sources. Sources are the lender/s of a loan. Lost sources on the other hand are the lender/s that have lost a loan because of renegotiation or refinance. When a renegotiation or refinance happens, the sources compromised turn into lost sources and new sources appear.\n  \"\"\"\n  listSources(\n    after: String\n    blockchains: [BlockchainEnum!] = null\n    collections: [Int!] = null\n    contractAddresses: [Address!] = null\n    currencyAddresses: [Address!] = null\n    excludeAddresses: [Address!] = null\n    excludeSlugs: [String!] = null\n    first: Int! = 10\n    hideEndLocked: Boolean = null\n    hideLocked: Boolean = null\n\n    \"\"\"\n    Include lost sources in the list. Lost sources are the lender/s that have lost a loan because of renegotiation or refinance. When a renegotiation or refinance happens, the sources compromised turn into lost sources and new sources appear.\n    \"\"\"\n    includeLost: Boolean = null\n    lenders: [String!] = null\n\n    \"\"\"\n    Filter by the principal amount of the loan the source is part of. This is different than the principal amount of the source which only includes the amount lended by the source.\n    \"\"\"\n    loanPrincipal: Interval = null\n    slugs: [String!] = null\n    sortBy: [SourceSortInput!] = null\n    statuses: [LoanStatusType!] = null\n    terms: TermsFilter = null\n  ): SourceLostSourceConnection!\n  listUsers(after: String, first: Int! = 10, walletAddresses: [Address!]!): UserConnection!\n\n  \"\"\"\n  Wallets following this wallet, newest follow first. The wallet's owner gets the followers of every wallet linked to it; everyone else gets this address alone, since which wallets are linked is private. `first` is capped at 100.\n  \"\"\"\n  listWalletFollowers(first: Int! = 100, walletAddress: Address!): [WalletFollowEntry!]!\n\n  \"\"\"\n  Wallets this wallet follows, newest follow first. The wallet's owner gets the follows of every wallet linked to it; everyone else gets this address alone, since which wallets are linked is private. `first` is capped at 100.\n  \"\"\"\n  listWalletFollowing(first: Int! = 100, walletAddress: Address!): [WalletFollowEntry!]!\n\n  \"\"\"\n  Collections with at least one loan deal, by name.\n  \"\"\"\n  loanDealCollections(grouping: LoanDealGrouping! = COLLECTION): [Collection!]!\n\n  \"\"\"\n  Listings a GONDI loan can buy, each with the open offer that lends the most on it, ranked by the largest loan or the highest loan-to-value. Highest LTV includes at most three per collection or wrap family, depending on grouping; Largest Loan has no collection cap. `first` is capped at 50.\n  \"\"\"\n  loanDeals(\n    \"\"\"\n    Return only this collection's highest-ranked deals.\n    \"\"\"\n    collectionId: Int = null\n\n    \"\"\"\n    Maximum deals across the ranking, clamped to 50. Only Highest LTV has a three-per-group cap.\n    \"\"\"\n    first: Int! = 50\n\n    \"\"\"\n    Group by each NFT contract, or by its naked collection and wrappers. In wrap-family mode, collectionId is the naked collection's id.\n    \"\"\"\n    grouping: LoanDealGrouping! = COLLECTION\n    ranking: LoanDealRanking!\n  ): [LoanDeal!]!\n  me: User\n\n  \"\"\"\n  The viewer's account's minimum offer amount, in US dollars: loan and buy offers on its items worth less notify it on no channel. Null when there is none.\n  \"\"\"\n  minimumOfferAmount: Float\n\n  \"\"\"\n  Every notification event on every channel it reaches, as the viewer's account has it. The most recent choice any of its linked wallets made is the one in force.\n  \"\"\"\n  notificationPreferences: [NotificationPreference!]!\n\n  \"\"\"\n  Evaluate an item quote before signing; publication rechecks under a transaction lock.\n  \"\"\"\n  previewItemLoanOfferCompetition(\n    loanId: String = null\n    offerInput: SingleNFTOfferInput!\n    replacementIds: [String!] = null\n  ): LoanOfferCompetitionPreview!\n  previewRenegotiationCompetition(\n    renegotiationInput: RenegotiationOfferInput!\n    replacementIds: [String!] = null\n  ): LoanOfferCompetitionPreview!\n}\n\ninput RangeInput {\n  max: Int!\n  min: Int!\n}\n\n\"\"\"\nProfit a lender realized in one currency on one UTC day, in raw units of that currency: the interest and origination fee of the positions it left that day. `day` is the UTC midnight that opens the day, and `netProfit` is `profit` after the protocol fee.\n\"\"\"\ntype RealizedProfitDay {\n  currencyAddress: Address!\n  day: DateTime!\n  netProfit: BigInt!\n  profit: BigInt!\n}\n\ninput RefinanceTermsFilter {\n  aprBps: Interval = null\n  duration: Interval = null\n  ethProfitLeft: Interval = null\n  fee: Interval = null\n\n  \"\"\"\n  Loans only: the loan's original principal over its NFT's highest bid, in basis points. A loan whose NFT has no bid has no LTV and is excluded whenever a bound is set.\n  \"\"\"\n  ltvBps: Interval = null\n  maxPrincipal: Interval = null\n  netPrincipal: Interval = null\n  principal: Interval = null\n  profitLeft: Interval = null\n  remainingTime: Interval = null\n}\n\n\"\"\"\nA renegotiation when the loan terms change and the borrower accepted. The difference with refinance is that renegotiation does not mean better terms for the borrower, because of that the borrower needs to accept the renegotiation. Also the renegotiation can be made by the same previous lender.Renegotiation can be top ups. A top up is when someone adds more principal to the loan.\n\"\"\"\ntype Renegotiation implements Event & Node {\n  aprBps: BigInt!\n  availablePrincipalAmount: BigInt!\n  createdDate: DateTime\n  duration: BigInt!\n  expirationTime: BigInt!\n  fallbackOfferId: String\n  feeAmount: BigInt!\n  hidden: Boolean\n  id: String!\n\n  \"\"\"\n  Whether the renegotiation was a top up.\n  \"\"\"\n  isAddNewTranche: Boolean!\n  lenderAddress: Address\n  lenderName: String\n  lenderProfilePictureUrl: String\n  loan: Loan!\n  loanAddress: Address!\n  loanId: BigInt!\n  loanReferenceId: String!\n  nft: NFT!\n  offerHash: Hash\n  principalAmount: BigInt!\n\n  \"\"\"\n  Whether only the loan's borrower and the lender see it.\n  \"\"\"\n  private: Boolean!\n  renegotiationId: BigInt!\n  repayment: BigInt!\n  requiresLiquidation: Boolean!\n  signature: Signature\n  signerAddress: Address\n  status: String!\n  strictImprovement: Boolean!\n  timestamp: DateTime!\n}\n\ntype RenegotiationConnection {\n  edges: [RenegotiationEdge!]!\n  pageInfo: PageInfo!\n  totalCount: Int!\n}\n\ntype RenegotiationEdge {\n  cursor: String!\n  node: Renegotiation!\n}\n\ninput RenegotiationOfferInput {\n  aprBps: BigInt!\n  duration: BigInt!\n  expirationTime: BigInt!\n  feeAmount: BigInt!\n  isAddNewTranche: Boolean = null\n  lenderAddress: Address!\n  loanId: String!\n  principalAmount: BigInt!\n  requiresLiquidation: Boolean = null\n  signerAddress: Address = null\n  strictImprovement: Boolean = null\n  targetPrincipal: [BigInt!] = null\n  trancheIndex: [BigInt!] = null\n}\n\ntype RenegotiationRequest implements Node {\n  createdDate: DateTime!\n  desiredAprBps: BigInt\n  desiredDuration: BigInt\n  desiredPrincipalAmount: BigInt\n  expirationDate: DateTime!\n  id: String!\n  loanId: String!\n}\n\ntype RenegotiationRequestedNotification implements Node & Notification {\n  aprBps: BigInt\n  createdOn: DateTime!\n  duration: BigInt\n  id: String!\n  loan: MultiSourceLoan!\n  loanId: String!\n  notificationType: String!\n  principalAmount: BigInt\n  readOn: DateTime\n  user: User!\n}\n\ntype Royalty implements Node {\n  beneficiary: Address!\n  id: String!\n  percentage: Float!\n  required: Boolean!\n}\n\ntype Sale implements Activity & Event & Node {\n  currencyAddress: Address!\n\n  \"\"\"\n  The transfers that moved the sold item from its buyer to where it settled within an hour of the sale, in the sale's transaction or later ones, in log order. Wraps and burns are left out, and the walk stops at the item's next sale or at loan escrow. Empty when the item stayed with the buyer; the last receiver is the wallet it settled in.\n  \"\"\"\n  forwardTransfers: [Transfer!]!\n  id: String!\n  marketPlace: String!\n  marketPlaceAddress: Address\n  nft: NFT!\n  order: Order\n  orderId: String\n  originatedFromAsk: Boolean\n  price: BigInt!\n  receiver: Address!\n  receiverName: String\n  receiverProfilePictureUrl: String\n  sender: Address!\n  senderName: String\n  senderProfilePictureUrl: String\n\n  \"\"\"\n  Every NFT transfer of the sold item, or of its naked or wrapper counterpart, in the sale's transaction, in log order, including the sale's own movement. On a GONDI settlement these are the escrow movements behind the sale.\n  \"\"\"\n  settlementTransfers: [Transfer!]!\n  taker: Address @deprecated(reason: \"Deprecated field.\")\n  timestamp: DateTime!\n  txHash: Hash!\n}\n\ntype SaleConnection {\n  edges: [SaleEdge!]!\n  pageInfo: PageInfo!\n  totalCount: Int!\n}\n\ntype SaleEdge {\n  cursor: String!\n  node: Sale!\n}\n\n\"\"\"\nA single sale event used to build a collection sales history.\n\"\"\"\ntype SaleHistoryItem {\n  \"\"\"\n  Currency the sale was paid in.\n  \"\"\"\n  currency: Currency!\n  nftId: Int!\n  timestamp: DateTime!\n\n  \"\"\"\n  Raw sale price in the sale's own currency.\n  \"\"\"\n  value: BigInt!\n}\n\ntype SaleListingUpdate {\n  changedAt: DateTime!\n  collectionId: Int!\n  nft: NFT\n  nftId: Int!\n}\n\nenum SalesSortField {\n  PRICE\n  PRICE_USD\n  TIMESTAMP\n}\n\ninput SalesSortInput {\n  field: SalesSortField!\n  order: Ordering!\n}\n\ntype SearchERC20Balance {\n  address: String!\n  amount: BigInt!\n}\n\ntype SellAndRepayOrder implements Event & Node & Order {\n  \"\"\"\n  Whether `cancelTradeOrders` can cancel this order without a transaction: a native bid restricted to our signed zone.\n  \"\"\"\n  cancelsOffChain: Boolean!\n  createdDate: DateTime!\n  currency: Currency!\n  currencyAddress: Address!\n  evmOrder(integerStrings: Boolean! = false): JSON\n  executions: Int!\n  expiration: DateTime!\n  feeMetadata: OrderFeeMetadata\n  fees: BigInt!\n  hidden: Boolean!\n  id: String!\n  isAsk: Boolean!\n  isPrivate: Boolean!\n  loan: MultiSourceLoan!\n  loanDealOffer: Offer\n  loanId: String!\n  maker: Address!\n  makerName: String\n  makerProfilePictureUrl: String\n  marketPlace: String!\n  marketPlaceAddress: Address!\n  maxExecutions: Int!\n  netAmount: BigInt!\n  nft: NFT!\n  nftId: Int!\n  nonce: BigInt!\n  orderType: String!\n  originalId: Hash!\n  platformFees(operation: PlatformFeeOperationType!): [PlatformFee!]!\n  price: BigInt!\n  repaymentCalldata: Hex!\n  signature: Signature!\n  startTime: DateTime!\n  status: String!\n  stealth: Boolean!\n  taker: Address!\n  takerName: String\n  takerProfilePictureUrl: String\n  timestamp: DateTime!\n  updatedDate: DateTime!\n}\n\nunion SellAndRepayOrderSignatureRequestExtraSeaportData =\n  | ExtraSeaportData\n  | SellAndRepayOrder\n  | SignatureRequest\n\ntype SetBidOrder implements Event & Node & Order {\n  \"\"\"\n  Whether `cancelTradeOrders` can cancel this order without a transaction: a native bid restricted to our signed zone.\n  \"\"\"\n  cancelsOffChain: Boolean!\n  collectionId: Int!\n  createdDate: DateTime!\n  currency: Currency!\n  currencyAddress: Address!\n  eligibleTokenCount: Int!\n  evmOrder(integerStrings: Boolean! = false): JSON\n  executions: Int!\n  expiration: DateTime!\n  feeMetadata: OrderFeeMetadata\n  fees: BigInt!\n  hidden: Boolean!\n  id: String!\n  isAsk: Boolean!\n  isPrivate: Boolean!\n  label: String\n  maker: Address!\n  makerName: String\n  makerProfilePictureUrl: String\n  marketPlace: String!\n  marketPlaceAddress: Address!\n  maxExecutions: Int!\n  netAmount: BigInt!\n  nonce: BigInt!\n  orderType: String!\n  originalId: Hash!\n  platformFees(operation: PlatformFeeOperationType!): [PlatformFee!]!\n\n  \"\"\"\n  Up to 10 of the NFTs the set bid covers, in NFT id order. Stash bids list naked CryptoPunks only; a bid on one Punk previews exactly that Punk.\n  \"\"\"\n  previewNfts: [NFT!]!\n  price: BigInt!\n  signature: Signature!\n  startTime: DateTime!\n  status: String!\n  stealth: Boolean!\n  taker: Address!\n  takerName: String\n  takerProfilePictureUrl: String\n  timestamp: DateTime!\n  updatedDate: DateTime!\n}\n\ntype SetOffer implements Event & Node & Offer {\n  aprBps: BigInt!\n  availablePrincipalAmount: BigInt!\n  borrowerAddress: Address\n  borrowerName: String\n  borrowerProfilePictureUrl: String\n  capacity: BigInt!\n  collateralAddress: Address\n  collection: Collection!\n  collectionId: Int\n  consumedCapacity: BigInt!\n  contractAddress: Address!\n  createdDate: DateTime\n  currency: Currency!\n  duration: BigInt!\n  expirationTime: BigInt!\n  fee: BigInt!\n  hidden: Boolean\n  id: String!\n  lenderAddress: Address\n  lenderAllowance: BigInt\n  lenderAvailableBalance: BigInt\n  lenderName: String\n  lenderProfilePictureUrl: String\n  lenderRefinanceDisabled: Boolean!\n  maxPrincipal: BigInt!\n  maxSeniorRepayment: BigInt!\n\n  \"\"\"\n  Deprecated field: use maxSeniorRepayment instead.\n  \"\"\"\n  maxTrancheFloor: BigInt! @deprecated(reason: \"Use maxSeniorRepayment instead.\")\n  netPrincipal: BigInt!\n  nftId: Int\n  offerHash: Hash\n  offerId: BigInt!\n  principalAddress: Address!\n  principalAmount: BigInt!\n  repayment: BigInt!\n  requiresLiquidation: Boolean\n  signature: Signature\n  signerAddress: Address\n  status: String!\n  timestamp: DateTime!\n  validators: [OfferValidator!]!\n}\n\nscalar Signature\n\ntype SignatureRequest {\n  key: String!\n  typedData: TypedData!\n}\n\ninput SignedRenegotiationOfferInput {\n  aprBps: BigInt!\n  duration: BigInt!\n  expirationTime: BigInt!\n  feeAmount: BigInt!\n  isAddNewTranche: Boolean = null\n  lenderAddress: Address!\n  loanId: String!\n  offerHash: Hash!\n  principalAmount: BigInt!\n\n  \"\"\"\n  Only the loan's borrower and the lender see the offer. Allowed only for a principal worth at least the private minimum in USD.\n  \"\"\"\n  private: Boolean! = false\n  renegotiationId: BigInt!\n  requiresLiquidation: Boolean = null\n  signature: Signature!\n  signerAddress: Address = null\n  strictImprovement: Boolean = null\n  targetPrincipal: [BigInt!] = null\n  trancheIndex: [BigInt!] = null\n}\n\ntype SingleNFTOffer implements Event & Node & Offer {\n  aprBps: BigInt!\n  availablePrincipalAmount: BigInt!\n  borrowerAddress: Address\n  borrowerName: String\n  borrowerProfilePictureUrl: String\n  capacity: BigInt!\n  collateralAddress: Address\n  collectionId: Int\n  consumedCapacity: BigInt!\n  contractAddress: Address!\n  createdDate: DateTime\n  currency: Currency!\n  duration: BigInt!\n  expirationTime: BigInt!\n  fee: BigInt!\n  hidden: Boolean\n  id: String!\n  lenderAddress: Address\n  lenderAllowance: BigInt\n  lenderAvailableBalance: BigInt\n  lenderName: String\n  lenderProfilePictureUrl: String\n  lenderRefinanceDisabled: Boolean!\n  maxPrincipal: BigInt!\n  maxSeniorRepayment: BigInt!\n\n  \"\"\"\n  Deprecated field: use maxSeniorRepayment instead.\n  \"\"\"\n  maxTrancheFloor: BigInt! @deprecated(reason: \"Use maxSeniorRepayment instead.\")\n  netPrincipal: BigInt!\n  nft: NFT!\n  nftId: Int\n  offerHash: Hash\n  offerId: BigInt!\n  principalAddress: Address!\n  principalAmount: BigInt!\n  repayment: BigInt!\n  requiresLiquidation: Boolean\n  signature: Signature\n  signerAddress: Address\n  statistics: OfferStatistics!\n  status: String!\n  timestamp: DateTime!\n  validators: [OfferValidator!]!\n}\n\nunion SingleNFTOfferCollectionOffer = CollectionOffer | SingleNFTOffer\n\nunion SingleNFTOfferCollectionOfferSetOfferTraitOfferRenegotiation =\n  | CollectionOffer\n  | Renegotiation\n  | SetOffer\n  | SingleNFTOffer\n  | TraitOffer\n\ntype SingleNFTOfferCollectionOfferSetOfferTraitOfferRenegotiationConnection {\n  edges: [SingleNFTOfferCollectionOfferSetOfferTraitOfferRenegotiationEdge!]!\n  pageInfo: PageInfo!\n  totalCount: Int!\n}\n\ntype SingleNFTOfferCollectionOfferSetOfferTraitOfferRenegotiationEdge {\n  cursor: String!\n  node: SingleNFTOfferCollectionOfferSetOfferTraitOfferRenegotiation!\n}\n\ninput SingleNFTOfferInput {\n  aprBps: BigInt!\n  borrowerAddress: Address!\n  capacity: BigInt!\n  contractAddress: Address!\n  duration: BigInt!\n  expirationTime: BigInt!\n  fee: BigInt!\n  lenderAddress: Address!\n  lenderRefinanceDisabled: Boolean! = false\n  maxSeniorRepayment: BigInt = null\n  maxTrancheFloor: BigInt = null\n  nftId: Int!\n  offerValidators: [OfferValidatorInput!]!\n  principalAddress: Address!\n  principalAmount: BigInt!\n  requiresLiquidation: Boolean = null\n  signerAddress: Address = null\n}\n\ntype SingleNFTOrder implements Event & Node & Order {\n  \"\"\"\n  Whether `cancelTradeOrders` can cancel this order without a transaction: a native bid restricted to our signed zone.\n  \"\"\"\n  cancelsOffChain: Boolean!\n  createdDate: DateTime!\n  currency: Currency!\n  currencyAddress: Address!\n  evmOrder(integerStrings: Boolean! = false): JSON\n  executions: Int!\n  expiration: DateTime!\n  feeMetadata: OrderFeeMetadata\n  fees: BigInt!\n  hidden: Boolean!\n  id: String!\n  isAsk: Boolean!\n  isPrivate: Boolean!\n  loanDealOffer: Offer\n  maker: Address!\n  makerName: String\n  makerProfilePictureUrl: String\n  marketPlace: String!\n  marketPlaceAddress: Address!\n  maxExecutions: Int!\n  netAmount: BigInt!\n  nft: NFT!\n  nftId: Int!\n  nonce: BigInt!\n  orderType: String!\n  originalId: Hash!\n  platformFees(operation: PlatformFeeOperationType!): [PlatformFee!]!\n  price: BigInt!\n  signature: Signature!\n  startTime: DateTime!\n  status: String!\n  stealth: Boolean!\n  taker: Address!\n  takerName: String\n  takerProfilePictureUrl: String\n  timestamp: DateTime!\n  updatedDate: DateTime!\n}\n\ninput SingleNFTOrderInput {\n  amount: BigInt = null\n  contractAddress: Address!\n  currencyAddress: Address!\n  expirationTime: BigInt!\n  fees: [OrderFee!] = null\n  isAsk: Boolean = null\n  price: BigInt = null\n  signature: Signature = null\n  startTime: BigInt!\n  stealth: Boolean = null\n  taker: Address = null\n  tokenId: BigInt!\n}\n\nunion SingleNFTOrderSignatureRequest = SignatureRequest | SingleNFTOrder\n\ninput SingleNFTSignedOfferInput {\n  aprBps: BigInt!\n  borrowerAddress: Address!\n  capacity: BigInt!\n  contractAddress: Address!\n  duration: BigInt!\n  expirationTime: BigInt!\n  fee: BigInt!\n  lenderAddress: Address!\n  lenderRefinanceDisabled: Boolean! = false\n  maxSeniorRepayment: BigInt = null\n  maxTrancheFloor: BigInt = null\n  nftId: Int!\n  offerHash: Hash!\n  offerId: BigInt!\n  offerValidators: [OfferValidatorInput!]!\n  principalAddress: Address!\n  principalAmount: BigInt!\n  requiresLiquidation: Boolean = null\n  signature: Signature!\n  signerAddress: Address = null\n}\n\ninput SiweInput {\n  message: String!\n  signature: Signature!\n}\n\ninput SluggedTokenInput {\n  slug: String!\n  tokenId: BigInt!\n}\n\n\"\"\"\nThis is the definition of a source. Sources are the lender/s of a loan. Take into account that the loan fields can change if renegotiation or refinance happens.If a renegotiation or refinance happens on a loan, the sources compromised turn into LostSource's.\n\"\"\"\ntype Source implements Node {\n  accruedInterest: BigInt!\n  aprBps: BigInt!\n  borrowerEaprBps: BigInt!\n  earnedInterest: BigInt!\n  effectiveDuration: BigInt!\n  endDate: DateTime!\n  expectedInterestLeft: BigInt!\n  id: String!\n  lenderAddress: String!\n  lenderEaprBps: BigInt!\n  lenderName: String\n  lenderProfilePictureUrl: String\n  loan: MultiSourceLoan!\n  loanId: String!\n  loanIndex: Int\n  loanReferenceId: String!\n  netAccruedInterest: BigInt!\n  netAprBps: BigInt!\n  netEarnedInterest: BigInt!\n  netExpectedInterestLeft: BigInt!\n  netLenderEaprBps: BigInt!\n  netOriginationFee: BigInt!\n  netProfit: BigInt!\n  netRepaidInterest: BigInt!\n  originationFee: BigInt!\n  principalAmount: BigInt!\n  profit: BigInt!\n  refinanceNetAprBps: BigInt!\n  repaidInterest: BigInt!\n  seniorPrincipalAmount: BigInt\n  startTime: DateTime!\n}\n\ntype SourceHistory implements Node {\n  accruedInterest: BigInt!\n  aprBps: BigInt!\n  id: String!\n  lenderAddress: String!\n  lenderName: String\n  lenderProfilePictureUrl: String\n  loanId: String!\n  loanIndex: Int\n  originationFee: BigInt!\n  principalAmount: BigInt!\n  seniorPrincipalAmount: BigInt\n  startTime: DateTime!\n}\n\nunion SourceLostSource = LostSource | Source\n\ntype SourceLostSourceConnection {\n  edges: [SourceLostSourceEdge!]!\n  pageInfo: PageInfo!\n  totalCount: Int!\n}\n\ntype SourceLostSourceEdge {\n  cursor: String!\n  node: SourceLostSource!\n}\n\nenum SourceSortField {\n  ACCRUED_INTEREST\n  APR_BPS\n  DUE_DATE\n  DURATION\n  EARNED_INTEREST\n  END_DATE\n  ORIGINATION_FEE\n  PRINCIPAL_AMOUNT\n  REFINANCE_NET_APR_BPS\n  REPAID_INTEREST\n  START_TIME\n}\n\ninput SourceSortInput {\n  field: SourceSortField!\n  order: Ordering!\n}\n\ntype SourceStatisticsFromCollection {\n  collection: Collection!\n  collectionId: String!\n  stats: SourcesStatistics!\n}\n\ntype SourcesStatistics {\n  count: Int!\n  earnedInterest: BigInt!\n  expectedInterestLeft: BigInt!\n\n  \"\"\"\n  Yearly rate `earnedInterest` grows at: principal times APR, summed over the sources of open (`LOAN_INITIATED`) loans, including loans past expiry, whose interest keeps accruing; loans in any other status add nothing. Raw units of the currency.\n  \"\"\"\n  interestAccrualPerYear: BigInt!\n  netEarnedInterest: BigInt!\n  netExpectedInterestLeft: BigInt!\n\n  \"\"\"\n  Yearly rate `netEarnedInterest` grows at: `interestAccrualPerYear` net of each source's protocol fee. Raw units of the currency.\n  \"\"\"\n  netInterestAccrualPerYear: BigInt!\n  netOriginationFee: BigInt!\n  netProfit: BigInt!\n  netRepaidInterest: BigInt!\n  originationFee: BigInt!\n  outstanding: BigInt!\n  principal: BigInt!\n  profit: BigInt!\n  repaidInterest: BigInt!\n  wavgAprBps: BigInt!\n  wavgLenderEaprBps: BigInt!\n  wavgNetAprBps: BigInt!\n  wavgNetLenderEaprBps: BigInt!\n}\n\ntype StatByCollection {\n  collection: Collection!\n  value: BigInt!\n}\n\ntype StealthMaskedOrder implements Event & Node & Order {\n  artist: Artist\n\n  \"\"\"\n  Whether `cancelTradeOrders` can cancel this order without a transaction: a native bid restricted to our signed zone.\n  \"\"\"\n  cancelsOffChain: Boolean!\n  collection: Collection\n  createdDate: DateTime!\n  currency: Currency!\n  currencyAddress: Address!\n  evmOrder(integerStrings: Boolean! = false): JSON\n  executions: Int!\n  expiration: DateTime!\n  feeMetadata: OrderFeeMetadata\n  fees: BigInt!\n  hidden: Boolean!\n  highestBidTrait: Trait\n  id: String!\n  isAsk: Boolean!\n  isPrivate: Boolean!\n  itemType: ItemType\n  maker: Address!\n  makerName: String\n  makerProfilePictureUrl: String\n  marketPlace: String!\n  marketPlaceAddress: Address!\n  maxExecutions: Int!\n  netAmount: BigInt!\n  nonce: BigInt!\n  orderType: String!\n  originalId: Hash!\n  platformFees(operation: PlatformFeeOperationType!): [PlatformFee!]!\n  price: BigInt!\n  revealedGroup: StealthRevealedGroup\n  signature: Signature!\n  startTime: DateTime!\n  status: String!\n  stealth: Boolean!\n  taker: Address!\n  takerName: String\n  takerProfilePictureUrl: String\n  timestamp: DateTime!\n  updatedDate: DateTime!\n}\n\ntype StealthRevealedGroup {\n  images: [Asset!]!\n  tier: Int\n  totalCount: Int!\n}\n\ntype Subscription {\n  \"\"\"\n  Stream new activity-feed events. Filters are optional and additive; unset or empty values mean the unfiltered stream. Most argument names match `listEvents` so clients can pass their existing query variables (`traits` and `currencyAddresses` are not supported yet). `artists`, `blockchains` and `priceUsd` keep what `listEvents` would list with them; the `priceUsd` bound is converted at the USDC rate of when the stream starts. `marketplaces` follows the marketplace shown in the activity feed: sales and orders use their stored marketplace, transfers match none, and GONDI lending and trade events match `NATIVE`. The `nfts` filter also matches collection-scoped events (collection loan offers and collection/trait bids) through the NFTs' collections; trait bids therefore match at collection granularity, not per trait. Set and trait loan offers match when their signed NFT set includes one of the NFTs. `topEvents` keeps what `listEvents(topEvents: true)` lists and drops the event types it does not cover. `following` matches what `listEvents(following: true)` lists, read from the account's follows when the stream starts: a follow made while it runs applies once the client subscribes again. With nothing followed, or no signed-in account, the stream stays open and emits nothing.\n  \"\"\"\n  activityUpdates(\n    artists: [Int!] = null\n    blockchains: [BlockchainEnum!] = null\n    collections: [Int!] = null\n    eventTypes: [EventType!] = null\n    following: Boolean = null\n    marketplaces: [MarketPlaceType!] = null\n    nfts: [Int!] = null\n    priceUsd: Interval = null\n    topEvents: Boolean = null\n    users: [Address!] = null\n\n    \"\"\"\n    Which side of an event `users` must be on, as `listEvents(usersSide)` reads it. A forwarded sale's holder is not known when the sale is published, so TO matches its buyer; the forward arrives as a transfer of its own.\n    \"\"\"\n    usersSide: EventSide! = ANY\n  ): ActivityUpdate!\n\n  \"\"\"\n  Stream statistics of the active loans in `currencyAddresses`: one snapshot on subscribe, then a fresh one whenever a loan in those currencies is created, changes or is removed. Amounts are summed in raw units, so pass currencies that share decimals (for example WETH and RWETH).\n  \"\"\"\n  lendingMarketStatisticsUpdates(currencyAddresses: [Address!]!): LendingMarketStatistics!\n  saleListingUpdates(\n    collections: [Int!] = null\n    marketplaces: [MarketPlaceType!] = null\n    nftIds: [Int!] = null\n  ): SaleListingUpdate!\n}\n\ntype SwapQuote {\n  feeBps: Int!\n  rate: Float!\n  slippageBps: Int!\n}\n\ninput TermsFilter {\n  aprBps: Interval = null\n  duration: Interval = null\n  ethProfitLeft: Interval = null\n  fee: Interval = null\n\n  \"\"\"\n  Loans only: the loan's original principal over its NFT's highest bid, in basis points. A loan whose NFT has no bid has no LTV and is excluded whenever a bound is set.\n  \"\"\"\n  ltvBps: Interval = null\n  maxPrincipal: Interval = null\n  netPrincipal: Interval = null\n  principal: Interval = null\n  profitLeft: Interval = null\n  remainingTime: Interval = null\n}\n\nenum TokenStandardType {\n  CRYPTOPUNKS\n  ERC721\n  ERC1155\n  OLD_ERC721\n}\n\n\"\"\"\nAggregate identity and tenure metrics over the sample of a collection's largest holders.\n\"\"\"\ntype TopHoldersInfo {\n  anonymousHolders: Int!\n  averageBluechipHoldings: Float!\n  averageDaysHeld: Float\n  averageDaysHeldPerItem: Float\n  multiBluechipHolders: Int!\n  sampleSize: Int!\n}\n\ntype TopLender {\n  defaultCount: Int!\n  defaultRateBps: BigInt\n  earnings: BigInt\n  earningsUsd: Float\n  name: String\n  netEaprBps: BigInt\n  originatedCount: Int!\n  outstandingPrincipal: BigInt\n  outstandingUsd: Float\n  paidInterest: BigInt\n  profilePictureUrl: String\n  rank: Int!\n  refinancedCount: Int!\n  settledCount: Int!\n  walletAddress: Address!\n}\n\ntype TopLenders {\n  asOf: DateTime!\n  endCursor: String\n  excludedCount: Int!\n  hasNextPage: Boolean!\n  rows: [TopLender!]!\n  totalCount: Int!\n  viewerRank: Int\n}\n\ntype TopUpRequest implements Node {\n  createdDate: DateTime!\n  desiredAprBps: BigInt\n  desiredTopUp: BigInt\n  expirationDate: DateTime!\n  id: String!\n  loanId: String!\n}\n\ntype TopUpRequestedNotification implements Node & Notification {\n  aprBps: BigInt\n  createdOn: DateTime!\n  id: String!\n  loan: MultiSourceLoan!\n  loanId: String!\n  notificationType: String!\n  readOn: DateTime\n  topUp: BigInt\n  user: User!\n}\n\ntype Trait implements Node {\n  collectionId: String!\n  id: String!\n  isSynthetic: Boolean!\n  key: String!\n  sampleAsset: Asset\n  statistics(market: TraitMarketFilter = null): TraitStatistics!\n  traitType: TraitType\n  type: String!\n  value: String!\n}\n\ntype TraitFilterOption {\n  traitKeyValues: [TraitKeyValueOptions!]!\n}\n\ntype TraitKeyOption {\n  count: Int!\n  key: String!\n  type: TraitKeyOptionType!\n}\n\ntype TraitKeyOptionConnection {\n  edges: [TraitKeyOptionEdge!]!\n  pageInfo: PageInfo!\n  totalCount: Int!\n}\n\ntype TraitKeyOptionEdge {\n  cursor: String!\n  node: TraitKeyOption!\n}\n\nenum TraitKeyOptionType {\n  RANGE\n  SINGLE_VALUE\n}\n\ntype TraitKeyValueOptions {\n  key: String!\n  values: [TraitValueOptions!]!\n}\n\ninput TraitKeyValueOptionsInput {\n  key: String!\n  values: [String!]!\n}\n\ninput TraitMarketFilter {\n  currencyAddresses: [Address!] = null\n  marketplaces: [MarketPlaceType!] = null\n  showLowOffers: Boolean! = false\n}\n\ntype TraitOffer implements Event & Node & Offer {\n  aprBps: BigInt!\n  availablePrincipalAmount: BigInt!\n  borrowerAddress: Address\n  borrowerName: String\n  borrowerProfilePictureUrl: String\n  capacity: BigInt!\n  collateralAddress: Address\n  collection: Collection!\n  collectionId: Int\n  consumedCapacity: BigInt!\n  contractAddress: Address!\n  createdDate: DateTime\n  currency: Currency!\n  duration: BigInt!\n  expirationTime: BigInt!\n  fee: BigInt!\n  hidden: Boolean\n  id: String!\n  lenderAddress: Address\n  lenderAllowance: BigInt\n  lenderAvailableBalance: BigInt\n  lenderName: String\n  lenderProfilePictureUrl: String\n  lenderRefinanceDisabled: Boolean!\n  maxPrincipal: BigInt!\n  maxSeniorRepayment: BigInt!\n\n  \"\"\"\n  Deprecated field: use maxSeniorRepayment instead.\n  \"\"\"\n  maxTrancheFloor: BigInt! @deprecated(reason: \"Use maxSeniorRepayment instead.\")\n  netPrincipal: BigInt!\n  nftId: Int\n  offerHash: Hash\n  offerId: BigInt!\n  principalAddress: Address!\n  principalAmount: BigInt!\n  repayment: BigInt!\n  requiresLiquidation: Boolean\n  signature: Signature\n  signerAddress: Address\n  status: String!\n  timestamp: DateTime!\n  traits: [Trait!]!\n  validators: [OfferValidator!]!\n}\n\ninput TraitOfferInput {\n  aprBps: BigInt!\n  borrowerAddress: Address!\n  capacity: BigInt!\n  contractAddress: Address!\n  duration: BigInt!\n  expirationTime: BigInt!\n  fee: BigInt!\n  lenderAddress: Address!\n  lenderRefinanceDisabled: Boolean! = false\n  maxSeniorRepayment: BigInt = null\n  maxTrancheFloor: BigInt = null\n  offerValidators: [OfferValidatorInput!]!\n  principalAddress: Address!\n  principalAmount: BigInt!\n  requiresLiquidation: Boolean = null\n  signerAddress: Address = null\n  traitIds: [Int!]!\n}\n\ntype TraitOrder implements Event & Node & Order {\n  \"\"\"\n  Whether `cancelTradeOrders` can cancel this order without a transaction: a native bid restricted to our signed zone.\n  \"\"\"\n  cancelsOffChain: Boolean!\n  collection: Collection!\n  collectionId: Int!\n  createdDate: DateTime!\n  currency: Currency!\n  currencyAddress: Address!\n\n  \"\"\"\n  Edition this trait order targets, when the trait_id is the synthetic trait of an edition. Null for ordinary trait orders.\n  \"\"\"\n  edition: Edition\n  evmOrder(integerStrings: Boolean! = false): JSON\n  executions: Int!\n  expiration: DateTime!\n  feeMetadata: OrderFeeMetadata\n  fees: BigInt!\n  hidden: Boolean!\n  id: String!\n  isAsk: Boolean!\n  isPrivate: Boolean!\n  maker: Address!\n  makerName: String\n  makerProfilePictureUrl: String\n  marketPlace: String!\n  marketPlaceAddress: Address!\n  maxExecutions: Int!\n  netAmount: BigInt!\n  nonce: BigInt!\n  orderType: String!\n  originalId: Hash!\n  platformFees(operation: PlatformFeeOperationType!): [PlatformFee!]!\n  price: BigInt!\n  signature: Signature!\n  startTime: DateTime!\n  status: String!\n  stealth: Boolean!\n  taker: Address!\n  takerName: String\n  takerProfilePictureUrl: String\n  timestamp: DateTime!\n  trait: Trait!\n  traitId: Int!\n  updatedDate: DateTime!\n}\n\ninput TraitOrderInput {\n  amount: BigInt = null\n  currencyAddress: Address!\n  expirationTime: BigInt!\n  fees: [OrderFee!] = null\n  isAsk: Boolean = null\n  maxExecutions: BigInt = null\n  price: BigInt = null\n  signature: Signature = null\n  startTime: BigInt!\n  stealth: Boolean = null\n  taker: Address = null\n  traitIds: [Int!]!\n}\n\nunion TraitOrderSignatureRequest = MultipleTraitOrder | SignatureRequest | TraitOrder\n\ninput TraitRangeOptionsInput {\n  key: String!\n  range: RangeInput!\n}\n\ninput TraitSignedOfferInput {\n  aprBps: BigInt!\n  borrowerAddress: Address!\n  capacity: BigInt!\n  contractAddress: Address!\n  duration: BigInt!\n  expirationTime: BigInt!\n  fee: BigInt!\n  lenderAddress: Address!\n  lenderRefinanceDisabled: Boolean! = false\n  maxSeniorRepayment: BigInt = null\n  maxTrancheFloor: BigInt = null\n  offerHash: Hash!\n  offerId: BigInt!\n  offerValidators: [OfferValidatorInput!]!\n  principalAddress: Address!\n  principalAmount: BigInt!\n  requiresLiquidation: Boolean = null\n  signature: Signature!\n  signerAddress: Address = null\n  traitIds: [Int!]!\n}\n\ntype TraitStatistics {\n  floorPrice: CurrencyAmount\n  higherItemOfferCount: Int!\n  highestBid: Order\n  lastSale: Sale\n  rarity: Int!\n  topItemOffer: Order\n  topItemOfferUsd: Float\n  topOffer: Order\n  topOfferUsd: Float\n}\n\ntype TraitType implements Node {\n  collectionId: Int!\n  count: Int!\n  id: String!\n  isSynthetic: Boolean!\n  key: String!\n  max: Float\n  min: Float\n  valueType: String!\n}\n\ntype TraitTypeConnection {\n  edges: [TraitTypeEdge!]!\n  pageInfo: PageInfo!\n  totalCount: Int!\n}\n\ntype TraitTypeEdge {\n  cursor: String!\n  node: TraitType!\n}\n\ntype TraitValue implements Node {\n  collectionId: Int!\n  id: String!\n  isSynthetic: Boolean!\n  key: String!\n  rarity: Int!\n  sampleAsset: Asset\n  sampleAssetId: Int\n  statistics(market: TraitMarketFilter = null): TraitStatistics!\n  value: String!\n}\n\ntype TraitValueConnection {\n  edges: [TraitValueEdge!]!\n  pageInfo: PageInfo!\n  totalCount: Int!\n}\n\ntype TraitValueEdge {\n  cursor: String!\n  node: TraitValue!\n}\n\ntype TraitValueOptions {\n  rarity: Int!\n  value: String!\n}\n\nenum TraitValueSortField {\n  ALPHABETICAL\n  FLOOR\n  LAST_SALE\n  RARITY\n  TOP_OFFER\n}\n\ninput TraitValueSortInput {\n  field: TraitValueSortField!\n  order: Ordering!\n}\n\nenum TraitValueType {\n  ENUM\n  RANGE\n}\n\ntype Transfer implements Activity & Event & Node {\n  id: String!\n  nft: NFT!\n  receiver: Address!\n  receiverName: String\n  receiverProfilePictureUrl: String\n  sender: Address!\n  senderName: String\n  senderProfilePictureUrl: String\n  timestamp: DateTime!\n  txHash: Hash!\n}\n\ntype TypedData {\n  domain: JSON!\n  message: JSON!\n  primaryType: String!\n  types: JSON!\n}\n\ntype UnderfundedOfferNotification implements Node & Notification {\n  createdOn: DateTime!\n  id: String!\n  notificationType: String!\n  offer: Offer!\n  offerId: String!\n  readOn: DateTime\n  user: User!\n}\n\n\"\"\"\nRepresents a file upload.\n\"\"\"\nscalar Upload\n\ntype User implements Node {\n  about: String\n  activeLoansAsBorrowerCount: Int!\n  activeLoansAsLenderCount: Int!\n  blockchain: String! @deprecated(reason: \"DEPRECATED\")\n  createdDate: DateTime!\n  ensName: String\n  heldNftsCount: Int!\n  id: String!\n  intercomUserJwt: String\n  linkedWallets: [LinkedWallets!]!\n  mail: String\n  mailValidationCodeExpiration: DateTime\n  mailValidationDate: DateTime\n  mainMail: String\n  originalProfilePicture: String @deprecated(reason: \"DEPRECATED\")\n  profilePictureId: Int\n  size64ProfilePicture: String @deprecated(reason: \"DEPRECATED\")\n  size128ProfilePicture: String @deprecated(reason: \"DEPRECATED\")\n  size256ProfilePicture: String @deprecated(reason: \"DEPRECATED\")\n  size512ProfilePicture: String @deprecated(reason: \"DEPRECATED\")\n  statistics: UserStatistics!\n  twitterHandle: String\n  updatedAt: DateTime\n  url: String\n  usedProduct: Boolean!\n  username: String\n  usernameSuggestions: [String!]!\n  walletAddress: Address!\n  watchNotificationsEnabled: Boolean!\n}\n\ntype UserConnection {\n  edges: [UserEdge!]!\n  pageInfo: PageInfo!\n  totalCount: Int!\n}\n\ntype UserEdge {\n  cursor: String!\n  node: User!\n}\n\ninput UserFilter {\n  onlyOrExclude: Boolean!\n  userId: Int!\n}\n\ntype UserStatistics {\n  \"\"\"\n  Deprecated field. Stat will be removed\n  \"\"\"\n  defaultedPrincipal(currencyAddress: Address!, walletsAddresses: [Address!]!): BigInt!\n    @deprecated(reason: \"Stat will be removed\")\n\n  \"\"\"\n  Deprecated field. Use get_sources_statistics_by_collection instead.\n  \"\"\"\n  interestEarnedByCollection(\n    currencyAddress: Address!\n    walletsAddresses: [Address!]!\n  ): [StatByCollection!]! @deprecated(reason: \"Use get_sources_statistics_by_collection instead.\")\n\n  \"\"\"\n  Deprecated field. Use get_sources_statistics to get source stats.\n  \"\"\"\n  loanCount(currencyAddress: Address!, walletsAddresses: [Address!]!): BigInt!\n    @deprecated(reason: \"Use get_sources_statistics to get source stats.\")\n\n  \"\"\"\n  Deprecated field. Use get_sources_statistics_by_collection instead.\n  \"\"\"\n  loanCountByCollection(\n    currencyAddress: Address!\n    walletsAddresses: [Address!]!\n  ): [StatByCollection!]! @deprecated(reason: \"Use get_sources_statistics_by_collection instead.\")\n\n  \"\"\"\n  Deprecated field. Use get_sources_statistics_by_collection instead.\n  \"\"\"\n  loanPrincipalByCollection(\n    currencyAddress: Address!\n    walletsAddresses: [Address!]!\n  ): [StatByCollection!]! @deprecated(reason: \"Use get_sources_statistics_by_collection instead.\")\n\n  \"\"\"\n  Deprecated field. Use get_loan_activities_statistics_by_month instead.\n  \"\"\"\n  originationCountAndPrincipalByMonth(\n    currencyAddress: Address!\n    walletsAddresses: [Address!]!\n  ): [[BigInt!]!]! @deprecated(reason: \"Use get_loan_activities_statistics_by_month instead.\")\n\n  \"\"\"\n  Deprecated field. Use get_sources_statistics to get source stats.\n  \"\"\"\n  outstandingAccruedInterest(currencyAddress: Address!, walletsAddresses: [Address!]!): BigInt!\n    @deprecated(reason: \"Use get_sources_statistics to get source stats.\")\n\n  \"\"\"\n  Deprecated field. Use get_sources_statistics to get source stats.\n  \"\"\"\n  outstandingPrincipal(currencyAddress: Address!, walletsAddresses: [Address!]!): BigInt!\n    @deprecated(reason: \"Use get_sources_statistics to get source stats.\")\n\n  \"\"\"\n  Deprecated field. Use get_sources_statistics to get source stats.\n  \"\"\"\n  realizedProfits(currencyAddress: Address!, walletsAddresses: [Address!]!): BigInt!\n    @deprecated(reason: \"Use get_sources_statistics to get source stats.\")\n\n  \"\"\"\n  Deprecated field. Use get_loan_activities_statistics_by_month instead.\n  \"\"\"\n  renegotiationCountAndPrincipalByMonth(\n    currencyAddress: Address!\n    walletsAddresses: [Address!]!\n  ): [[BigInt!]!]! @deprecated(reason: \"Use get_loan_activities_statistics_by_month instead.\")\n\n  \"\"\"\n  Deprecated field. Use get_sources_statistics to get source stats.\n  \"\"\"\n  totalLentPrincipal(currencyAddress: Address!, walletsAddresses: [Address!]!): BigInt!\n    @deprecated(reason: \"Use get_sources_statistics to get source stats.\")\n\n  \"\"\"\n  Deprecated field. Use get_sources_statistics to get source stats.\n  \"\"\"\n  totalLoanCount(currencyAddress: Address!, walletsAddresses: [Address!]!): BigInt!\n    @deprecated(reason: \"Use get_sources_statistics to get source stats.\")\n\n  \"\"\"\n  Deprecated field. Use get_sources_statistics to get source stats.\n  \"\"\"\n  wavgOutstandingApr(currencyAddress: Address!, walletsAddresses: [Address!]!): BigInt!\n    @deprecated(reason: \"Use get_sources_statistics to get source stats.\")\n\n  \"\"\"\n  Deprecated field. Use get_sources_statistics_by_collection instead.\n  \"\"\"\n  wavgOutstandingAprByCollection(\n    currencyAddress: Address!\n    walletsAddresses: [Address!]!\n  ): [StatByCollection!]! @deprecated(reason: \"Use get_sources_statistics_by_collection instead.\")\n\n  \"\"\"\n  Deprecated field. Use get_sources_statistics to get source stats.\n  \"\"\"\n  wavgRepaidApr(currencyAddress: Address!, walletsAddresses: [Address!]!): BigInt!\n    @deprecated(reason: \"Use get_sources_statistics to get source stats.\")\n\n  \"\"\"\n  Deprecated field. Use get_sources_statistics_by_collection instead.\n  \"\"\"\n  wavgRepaidAprByCollection(\n    currencyAddress: Address!\n    walletsAddresses: [Address!]!\n  ): [StatByCollection!]! @deprecated(reason: \"Use get_sources_statistics_by_collection instead.\")\n}\n\n\"\"\"\nThe term that decided an NFT's estimated value.\n\"\"\"\nenum ValuationBasis {\n  ARTIST_SALES\n  EDITION_SALES\n  FLOOR_BID_BLEND\n  ITEM_BID\n  LAST_SALE\n  LISTING\n  LOAN\n  SALE_HISTORY\n  TRAIT_FLOOR\n}\n\nenum VaultsFilter {\n  EXCLUDE\n  INCLUDE\n  INCLUDE_SINGLE_COLLECTION\n}\n\n\"\"\"\nRepresents NULL values\n\"\"\"\nscalar Void\n\ntype WalletActivityDay {\n  borrows: Int!\n  day: Date!\n  lends: Int!\n  purchases: Int!\n  sales: Int!\n}\n\n\"\"\"\nOne wallet in a follow list, with the listed wallets on the other end of the follow.\n\"\"\"\ntype WalletFollowEntry {\n  \"\"\"\n  For a follower, the listed wallets it follows; for a followed wallet, the listed wallets that follow it. Only ever the queried address, unless the viewer owns it.\n  \"\"\"\n  viaWalletAddresses: [Address!]!\n  walletAddress: Address!\n}\n\n\"\"\"\nFollow counts for a wallet. To the wallet's owner they are read across the account, so a wallet and its confirmed links report the same numbers: `followersCount` counts each following wallet once however many of the account's wallets it follows, and `followingCount` counts each followed wallet once however many of the account's wallets follow it. To everyone else they count this address alone, since which wallets are linked is private. `isFollowed` is true when any wallet of the viewer's account follows this address, and false when anonymous.\n\"\"\"\ntype WalletFollowStats {\n  followersCount: Int!\n  followingCount: Int!\n  isFollowed: Boolean!\n}\n\ntype WalletHoldingCollection {\n  collection: Collection!\n  estimatedValueUsd: Float\n  heldCount: Int!\n}\n\ntype WalletHoldingsSummary {\n  topCollections: [WalletHoldingCollection!]!\n}\n\ntype WalletLendingCollection {\n  collection: Collection!\n  principalUsd: Float!\n}\n\nenum WalletLendingRole {\n  BORROWER\n  LENDER\n}\n\ntype WalletLendingSummary {\n  loanCount: Int!\n  principalUsd: Float\n  topCollections: [WalletLendingCollection!]!\n}\n\ntype WalletTradingSummary {\n  borrowCount: Int!\n  borrowVolumeUsd: Float\n  buyCount: Int!\n  buyVolumeUsd: Float\n  dailyActivity: [WalletActivityDay!]!\n  lendCount: Int!\n  lendVolumeUsd: Float\n  sellCount: Int!\n  sellVolumeUsd: Float\n}\n\nenum WatchedNftEventKind {\n  ASK_CHANGED\n  DELISTED\n  LISTED\n  PRICE_DROPPED\n  SOLD\n  TRANSFERRED\n}\n\n\"\"\"\nA change on an NFT your account watches with notifications on. `amount` and `currency` are the listing or sale price, null for a transfer. ASK_CHANGED and DELISTED are recorded but never notified.\n\"\"\"\ntype WatchedNftNotification implements Node & Notification {\n  amount: BigInt\n  createdOn: DateTime!\n  currency: Currency\n  id: String!\n  kind: WatchedNftEventKind!\n  nft: NFT!\n  notificationType: String!\n\n  \"\"\"\n  The ask a price drop replaced, in `currency`.\n  \"\"\"\n  previousAmount: BigInt\n  readOn: DateTime\n\n  \"\"\"\n  The wallet a sale or transfer moved the item to.\n  \"\"\"\n  receiver: Address\n  receiverName: String\n\n  \"\"\"\n  The wallet the change came from: an ask's maker, a sale's seller or a transfer's sender.\n  \"\"\"\n  sender: Address\n  senderName: String\n  user: User!\n}\n\ninput WithAsksInput {\n  enabled: Boolean = false\n  marketplaces: [MarketPlaceType!] = null\n}\n", "/* eslint-disable */\n//@ts-nocheck\nimport { Address, Hash, Hex } from 'viem';\nimport { FieldPolicy, FieldReadFunction, TypePolicies, TypePolicy } from '@apollo/client/cache';\nimport { DocumentNode } from 'graphql';\nimport gql from 'graphql-tag';\nexport type Maybe<T> = T | null;\nexport type InputMaybe<T> = Maybe<T>;\nexport type Exact<T extends { [key: string]: unknown }> = { [K in keyof T]: T[K] };\nexport type MakeOptional<T, K extends keyof T> = Omit<T, K> & { [SubKey in K]?: Maybe<T[SubKey]> };\nexport type MakeMaybe<T, K extends keyof T> = Omit<T, K> & { [SubKey in K]: Maybe<T[SubKey]> };\n/** All built-in and custom scalars, mapped to their actual values */\nexport type Scalars = {\n  ID: string;\n  String: string;\n  Boolean: boolean;\n  Int: number;\n  Float: number;\n  Address: Address;\n  BigInt: bigint;\n  Date: any;\n  DateTime: Date;\n  Hash: Hash;\n  Hex: Hex;\n  Int64: any;\n  JSON: object;\n  Signature: Hex;\n  Upload: any;\n  Void: any;\n};\n\nexport type ActiveOfferNotification = Node &\n  Notification & {\n    __typename?: 'ActiveOfferNotification';\n    createdOn: Scalars['DateTime'];\n    id: Scalars['String'];\n    notificationType: Scalars['String'];\n    offer: Offer;\n    offerId: Scalars['String'];\n    readOn?: Maybe<Scalars['DateTime']>;\n    user: User;\n  };\n\nexport type Activity = {\n  id: Scalars['String'];\n  timestamp: Scalars['DateTime'];\n  txHash: Scalars['Hash'];\n};\n\n/** A live activity-feed update: the re-fetched event row plus the time it was emitted. Scoping happens server-side from the subscription's filter arguments, so every delivered payload already matches what the subscriber asked for. */\nexport type ActivityUpdate = {\n  __typename?: 'ActivityUpdate';\n  changedAt: Scalars['DateTime'];\n  event: Event;\n};\n\nexport type AddressProfile = {\n  __typename?: 'AddressProfile';\n  name?: Maybe<Scalars['String']>;\n  profilePictureUrl?: Maybe<Scalars['String']>;\n};\n\n/** On-chain account type of a wallet address. */\nexport enum AddressType {\n  Contract = 'CONTRACT',\n  ContractWallet = 'CONTRACT_WALLET',\n  DelegatedEoa = 'DELEGATED_EOA',\n  Eoa = 'EOA',\n}\n\nexport type ApprovalExposure = {\n  __typename?: 'ApprovalExposure';\n  contractAddress: Scalars['Address'];\n  /** Held NFTs valued at their collection floor in USD. */\n  exposedValueUsd?: Maybe<Scalars['Float']>;\n  /** Indexed NFTs the owner holds in the contract; null when GONDI does not index the contract. */\n  heldCount?: Maybe<Scalars['Int']>;\n  /** Whether the operator is a GONDI contract, Seaport or the OpenSea conduit, rather than a third party that could move the NFTs. */\n  isStandard: Scalars['Boolean'];\n  /** The 20 most valuable held NFTs, highest floor first. */\n  nfts: Array<ExposedNft>;\n  operator: Scalars['Address'];\n  /** What the operator is; null when the explorer lookup fails. */\n  operatorKind?: Maybe<OperatorKind>;\n  /** The operator's verified contract name; null for wallets, unverified contracts and when the explorer lookup fails. */\n  operatorName?: Maybe<Scalars['String']>;\n  owner: Scalars['Address'];\n};\n\nexport type ApprovalExposures = {\n  __typename?: 'ApprovalExposures';\n  /** The 200 most exposed grants, highest exposed value first. */\n  exposures: Array<ApprovalExposure>;\n  /** Wallets with more approval events than one request reads: their oldest grants and the most recent block window are checked, grants made in between may be missing. */\n  incompleteOwners: Array<Scalars['Address']>;\n};\n\n/** An artist or creator linked to NFTs or collections. */\nexport type Artist = Node & {\n  __typename?: 'Artist';\n  artistType: Scalars['String'];\n  artworksCount: Scalars['Int'];\n  bio?: Maybe<Scalars['String']>;\n  collectionsCount: Scalars['Int'];\n  ethMintAddresses: Array<Scalars['String']>;\n  /** Number of wallets following this artist. */\n  followersCount: Scalars['Int'];\n  id: Scalars['String'];\n  image?: Maybe<Asset>;\n  /** Whether any wallet of the authenticated user's account follows this artist. False when anonymous. */\n  isFollowed: Scalars['Boolean'];\n  lastMint?: Maybe<Nft>;\n  marketStats: ArtistMarketStats;\n  name: Scalars['String'];\n  /** NFTs of the artist the wallets hold, reached through the NFT's own artist link or its collection's, with the custody rules of listArtistHolders. For ERC1155 this counts tokens held, not units. */\n  numberOfNftsOwned: Scalars['Int'];\n  /** NFTs of the artist with an ask visible to the requesting wallet. */\n  numberOfPricedNfts: Scalars['Int'];\n  sales1d: Scalars['Int'];\n  slug: Scalars['String'];\n  socials: Array<Scalars['String']>;\n  totalVolume: Scalars['Float'];\n  /** Eligible collectors: wallets holding the artist's artworks, counted as the Collectors tab lists them by default (listArtistHolderPopulation with includeCustodians false, hideArtistAndBurnWallets true and addressTypes EOA, DELEGATED_EOA and CONTRACT_WALLET). Excludes the artist's registered mint wallets and burn addresses, custodial platforms, contract addresses that are not wallets, and addresses not classified yet. */\n  uniqueCollectors: Scalars['Int'];\n  volume1d: Scalars['Float'];\n  websites: Array<Scalars['String']>;\n};\n\n/** An artist or creator linked to NFTs or collections. */\nexport type ArtistNumberOfNftsOwnedArgs = {\n  walletAddresses: Array<Scalars['Address']>;\n};\n\n/** An artist or creator linked to NFTs or collections. */\nexport type ArtistNumberOfPricedNftsArgs = {\n  marketplaces?: InputMaybe<Array<MarketPlaceType>>;\n};\n\n/** One artist work, an edition's copies when grouping editions, or the remaining works in a collection. */\nexport type ArtistCatalogEntry = {\n  __typename?: 'ArtistCatalogEntry';\n  /** Earliest indexed mint among the entry's works, the value the FIRST_MINT_DATE sort orders by. Only resolved under that sort: null on other sorts, and when no mint was indexed. */\n  firstMintDate?: Maybe<Scalars['DateTime']>;\n  id: Scalars['ID'];\n  item: ArtistCatalogItem;\n  /** How many NFTs the entry stands for: one for a work of its own, the copies of an edition, or the collection's grouped works. */\n  itemsCount: Scalars['Int'];\n  /** The latest sale among the NFTs the entry stands for: the work itself, or the edition's or collection's grouped works under the same item-type filter. */\n  lastSale?: Maybe<Sale>;\n  /** Up to four of the NFTs an edition or collection entry groups; empty for a work of its own. */\n  previewNfts: Array<Nft>;\n  price?: Maybe<CurrencyAmount>;\n  sales1d: Scalars['Int'];\n  /** The highest sampled bid among the NFTs the entry stands for, gross of fees, in its own currency: the value the TOP_OFFER sort orders by. */\n  topOffer?: Maybe<CurrencyAmount>;\n  volume1d: Scalars['Float'];\n};\n\nexport type ArtistCatalogEntryConnection = {\n  __typename?: 'ArtistCatalogEntryConnection';\n  edges: Array<ArtistCatalogEntryEdge>;\n  pageInfo: PageInfo;\n  totalCount: Scalars['Int'];\n};\n\nexport type ArtistCatalogEntryEdge = {\n  __typename?: 'ArtistCatalogEntryEdge';\n  cursor: Scalars['String'];\n  node: ArtistCatalogEntry;\n};\n\n/** The work an artist catalog entry stands for. */\nexport type ArtistCatalogItem = Collection | Edition | Nft;\n\nexport enum ArtistCatalogSortField {\n  FirstMintDate = 'FIRST_MINT_DATE',\n  Price = 'PRICE',\n  Sales_1D = 'SALES_1D',\n  TopOffer = 'TOP_OFFER',\n  Volume_1D = 'VOLUME_1D',\n}\n\nexport type ArtistCatalogSortInput = {\n  field: ArtistCatalogSortField;\n  order: Ordering;\n};\n\nexport type ArtistCollectionInput = {\n  collectionIds: Array<Scalars['Int']>;\n  source?: InputMaybe<ArtistCollectionSourceType>;\n};\n\nexport enum ArtistCollectionSourceType {\n  CollectionArtists = 'COLLECTION_ARTISTS',\n  NftArtists = 'NFT_ARTISTS',\n}\n\nexport type ArtistConnection = {\n  __typename?: 'ArtistConnection';\n  edges: Array<ArtistEdge>;\n  pageInfo: PageInfo;\n  totalCount: Scalars['Int'];\n};\n\nexport type ArtistEdge = {\n  __typename?: 'ArtistEdge';\n  cursor: Scalars['String'];\n  node: Artist;\n};\n\n/** A wallet holding NFTs linked to the artist through the NFT or collection. Loan-escrowed NFTs belong to their borrower. Counts distinct tokens, including one per ERC1155 token regardless of copies. */\nexport type ArtistHolder = {\n  __typename?: 'ArtistHolder';\n  /** The holder's last 10 sales of NFTs by the artist, newest first; the holder bought when it is the receiver and sold when it is the sender. */\n  activity: Array<Sale>;\n  address: Scalars['Address'];\n  /** Highest-ranked account type classified for this address on any chain: contract wallet, other contract, EIP-7702 delegated EOA, then EOA. Null when unclassified. */\n  addressType?: Maybe<AddressType>;\n  /** Held NFTs by the artist whose item type is an edition (ERC1155 counts tokens held, not units); an NFT without a classified item type is not counted. */\n  editionsOwned: Scalars['Int'];\n  /** When the wallet acquired the earliest NFT by the artist it still holds: the latest transfer or mint of that NFT to the wallet, which for an NFT escrowed in a loan or stash is the one before the escrow. The return from escrow when a loan is repaid or a stash unwrapped does not count. Null when no such transfer is recorded. */\n  firstAcquired?: Maybe<Scalars['DateTime']>;\n  id: Scalars['String'];\n  /** When the wallet acquired the latest NFT by the artist it still holds, by the same rule as firstAcquired. */\n  lastAcquired?: Maybe<Scalars['DateTime']>;\n  name?: Maybe<Scalars['String']>;\n  /** Held NFTs by the artist whose item type is a 1/1; an NFT without a classified item type is not counted. */\n  oneOfOnesOwned: Scalars['Int'];\n  /** Distinct NFTs by the artist the wallet holds (for ERC1155 this counts tokens held, not total units). */\n  ownedAmount: Scalars['Int'];\n  /** Held NFTs by the artist whose item type is PFP; an NFT without a classified item type is not counted. */\n  pfpsOwned: Scalars['Int'];\n  /** Up to 24 of the NFTs by the artist the wallet holds. */\n  previewItems: Array<Nft>;\n  profilePictureUrl?: Maybe<Scalars['String']>;\n  /** Held NFTs by the artist whose item type is a series piece; an NFT without a classified item type is not counted. */\n  seriesOwned: Scalars['Int'];\n};\n\nexport type ArtistHolderConnection = {\n  __typename?: 'ArtistHolderConnection';\n  edges: Array<ArtistHolderEdge>;\n  pageInfo: PageInfo;\n  totalCount: Scalars['Int'];\n};\n\nexport type ArtistHolderEdge = {\n  __typename?: 'ArtistHolderEdge';\n  cursor: Scalars['String'];\n  node: ArtistHolder;\n};\n\n/** Quantity metrics over eligible holders before wallet search. */\nexport type ArtistHolderInsights = {\n  __typename?: 'ArtistHolderInsights';\n  /** Distinct artworks the holders hold, each counted once however many copies or holders it has, where items counts every copy. */\n  artworks: Scalars['BigInt'];\n  buckets: Array<ArtistHolderSizeBucket>;\n  editions: Scalars['BigInt'];\n  /** Holders of every classified type present in the population; null when fewer than two classified types are present. */\n  everyTypeHolders?: Maybe<Scalars['Int']>;\n  holders: Scalars['Int'];\n  items: Scalars['BigInt'];\n  largestHolderAddress?: Maybe<Scalars['Address']>;\n  largestHolderItems: Scalars['BigInt'];\n  /** Fewest wallets holding strictly more than half the items, ordered by quantity. This is not a value-based concentration measure. */\n  majorityHolders: Scalars['Int'];\n  multiCollectionHolders: Scalars['Int'];\n  oneOfOnes: Scalars['BigInt'];\n  pfps: Scalars['BigInt'];\n  series: Scalars['BigInt'];\n  singletonHolders: Scalars['Int'];\n  topTenItems: Scalars['BigInt'];\n  unclassified: Scalars['BigInt'];\n};\n\nexport type ArtistHolderPopulationConnection = {\n  __typename?: 'ArtistHolderPopulationConnection';\n  edges: Array<ArtistRankedHolderEdge>;\n  insights: ArtistHolderInsights;\n  pageInfo: PageInfo;\n  /** Eligible holder count before wallet text search. */\n  populationCount: Scalars['Int'];\n  totalCount: Scalars['Int'];\n  /** A wallet's eligible holdings and rank, even outside the loaded page or wallet search. Null if excluded or not a holder. */\n  wallet?: Maybe<ArtistRankedHolder>;\n};\n\nexport type ArtistHolderPopulationConnectionWalletArgs = {\n  address: Scalars['Address'];\n};\n\n/** Union of collection, edition, NFT and item-type selections, intersected with the artist. Empty selections mean all artist artworks. */\nexport type ArtistHolderScopeInput = {\n  collectionIds?: InputMaybe<Array<Scalars['Int']>>;\n  editionIds?: InputMaybe<Array<Scalars['Int']>>;\n  /** Restrict every selection to these artwork types (OR). */\n  filterItemTypes?: InputMaybe<Array<ItemType>>;\n  itemTypes?: InputMaybe<Array<ItemType>>;\n  matchAll?: Scalars['Boolean'];\n  nftIds?: InputMaybe<Array<Scalars['Int']>>;\n};\n\nexport type ArtistHolderSizeBucket = {\n  __typename?: 'ArtistHolderSizeBucket';\n  holders: Scalars['Int'];\n  items: Scalars['BigInt'];\n  maximum?: Maybe<Scalars['Int']>;\n  minimum: Scalars['Int'];\n};\n\nexport enum ArtistHolderSortField {\n  EditionsOwned = 'EDITIONS_OWNED',\n  FirstAcquired = 'FIRST_ACQUIRED',\n  LastAcquired = 'LAST_ACQUIRED',\n  OneOfOnesOwned = 'ONE_OF_ONES_OWNED',\n  OwnedAmount = 'OWNED_AMOUNT',\n  PfpsOwned = 'PFPS_OWNED',\n  SeriesOwned = 'SERIES_OWNED',\n}\n\nexport type ArtistHolderSortInput = {\n  field: ArtistHolderSortField;\n  order: Ordering;\n};\n\n/** A wallet holding NFTs linked to the artist through the NFT or collection. Loan-escrowed NFTs belong to their borrower. Counts ERC1155 copies, including units attributed through held or borrowed vaults. */\nexport type ArtistHolderV2 = {\n  __typename?: 'ArtistHolderV2';\n  /** The holder's last 10 sales of NFTs by the artist, newest first; the holder bought when it is the receiver and sold when it is the sender. */\n  activity: Array<Sale>;\n  address: Scalars['Address'];\n  /** Highest-ranked account type classified for this address on any chain: contract wallet, other contract, EIP-7702 delegated EOA, then EOA. Null when unclassified. */\n  addressType?: Maybe<AddressType>;\n  /** Held Edition items by the artist, counting ERC1155 copies. */\n  editionsOwned: Scalars['BigInt'];\n  /** When the wallet acquired the earliest NFT by the artist it still holds: the latest transfer or mint of that NFT to the wallet, which for an NFT escrowed in a loan or stash is the one before the escrow. The return from escrow when a loan is repaid or a stash unwrapped does not count. Null when no such transfer is recorded. */\n  firstAcquired?: Maybe<Scalars['DateTime']>;\n  id: Scalars['String'];\n  /** When the wallet acquired the latest NFT by the artist it still holds, by the same rule as firstAcquired. */\n  lastAcquired?: Maybe<Scalars['DateTime']>;\n  name?: Maybe<Scalars['String']>;\n  /** Held 1/1 items by the artist, counting ERC1155 copies. */\n  oneOfOnesOwned: Scalars['BigInt'];\n  /** Held items by the artist, counting ERC1155 copies, including unclassified items. */\n  ownedAmount: Scalars['BigInt'];\n  /** Held PFP items by the artist, counting ERC1155 copies. */\n  pfpsOwned: Scalars['BigInt'];\n  /** Up to 24 distinct held artworks, with copies grouped by NFT. */\n  previewItems: Array<ArtistHolding>;\n  profilePictureUrl?: Maybe<Scalars['String']>;\n  /** Held Series items by the artist, counting ERC1155 copies. */\n  seriesOwned: Scalars['BigInt'];\n  /** Held units with no classification; included in ownedAmount. */\n  unclassifiedOwned: Scalars['BigInt'];\n};\n\n/** A wallet holding NFTs linked to the artist through the NFT or collection. Loan-escrowed NFTs belong to their borrower. Counts ERC1155 copies, including units attributed through held or borrowed vaults. */\nexport type ArtistHolderV2PreviewItemsArgs = {\n  first?: Scalars['Int'];\n};\n\nexport type ArtistHolderV2Connection = {\n  __typename?: 'ArtistHolderV2Connection';\n  edges: Array<ArtistHolderV2Edge>;\n  pageInfo: PageInfo;\n  totalCount: Scalars['Int'];\n};\n\nexport type ArtistHolderV2Edge = {\n  __typename?: 'ArtistHolderV2Edge';\n  cursor: Scalars['String'];\n  node: ArtistHolderV2;\n};\n\n/** One held artwork with its copy quantity and canonical classification. */\nexport type ArtistHolding = {\n  __typename?: 'ArtistHolding';\n  itemType?: Maybe<ItemType>;\n  nft: Nft;\n  quantity: Scalars['BigInt'];\n};\n\nexport type ArtistHoldingConnection = {\n  __typename?: 'ArtistHoldingConnection';\n  edges: Array<ArtistHoldingEdge>;\n  pageInfo: PageInfo;\n  totalCount: Scalars['Int'];\n};\n\nexport type ArtistHoldingEdge = {\n  __typename?: 'ArtistHoldingEdge';\n  cursor: Scalars['String'];\n  node: ArtistHolding;\n};\n\n/** An artist's sales over trailing windows and the debt of the active loans on their NFTs: principal plus the interest accrued up to now. Sales volume converts each sale to USD at the time of the sale; outstanding debt converts at current rates. */\nexport type ArtistMarketStats = {\n  __typename?: 'ArtistMarketStats';\n  activeLoansCount: Scalars['Int'];\n  outstandingDebtUsd: Scalars['Float'];\n  salesCount7d: Scalars['Int'];\n  salesCount30d: Scalars['Int'];\n  salesCount365d: Scalars['Int'];\n  salesVolumeUsd7d: Scalars['Float'];\n  salesVolumeUsd30d: Scalars['Float'];\n  salesVolumeUsd365d: Scalars['Float'];\n};\n\nexport type ArtistRankedHolder = {\n  __typename?: 'ArtistRankedHolder';\n  /** The holder's last 10 sales of NFTs by the artist, newest first; the holder bought when it is the receiver and sold when it is the sender. */\n  activity: Array<Sale>;\n  address: Scalars['Address'];\n  /** Highest-ranked account type classified for this address on any chain: contract wallet, other contract, EIP-7702 delegated EOA, then EOA. Null when unclassified. */\n  addressType?: Maybe<AddressType>;\n  /** Held Edition items by the artist, counting ERC1155 copies. */\n  editionsOwned: Scalars['BigInt'];\n  /** When the wallet acquired the earliest NFT by the artist it still holds: the latest transfer or mint of that NFT to the wallet, which for an NFT escrowed in a loan or stash is the one before the escrow. The return from escrow when a loan is repaid or a stash unwrapped does not count. Null when no such transfer is recorded. */\n  firstAcquired?: Maybe<Scalars['DateTime']>;\n  id: Scalars['String'];\n  /** When the wallet acquired the latest NFT by the artist it still holds, by the same rule as firstAcquired. */\n  lastAcquired?: Maybe<Scalars['DateTime']>;\n  name?: Maybe<Scalars['String']>;\n  /** Held 1/1 items by the artist, counting ERC1155 copies. */\n  oneOfOnesOwned: Scalars['BigInt'];\n  /** Held items by the artist, counting ERC1155 copies, including unclassified items. */\n  ownedAmount: Scalars['BigInt'];\n  /** Cursor preceding the 50-row population page containing this holder. Clear wallet text search before using it. */\n  pageAfter?: Maybe<Scalars['String']>;\n  /** Held PFP items by the artist, counting ERC1155 copies. */\n  pfpsOwned: Scalars['BigInt'];\n  /** One-based position in the eligible population under the selected sort, before wallet text search. Wallet address breaks remaining ties. */\n  populationRank: Scalars['Int'];\n  /** Up to 24 distinct held artworks, with copies grouped by NFT. */\n  previewItems: Array<ArtistHolding>;\n  profilePictureUrl?: Maybe<Scalars['String']>;\n  /** Held Series items by the artist, counting ERC1155 copies. */\n  seriesOwned: Scalars['BigInt'];\n  /** Held units with no classification; included in ownedAmount. */\n  unclassifiedOwned: Scalars['BigInt'];\n};\n\nexport type ArtistRankedHolderPreviewItemsArgs = {\n  first?: Scalars['Int'];\n};\n\nexport type ArtistRankedHolderEdge = {\n  __typename?: 'ArtistRankedHolderEdge';\n  cursor: Scalars['String'];\n  node: ArtistRankedHolder;\n};\n\nexport enum ArtistSortField {\n  ArtworksCount = 'ARTWORKS_COUNT',\n  CollectionsCount = 'COLLECTIONS_COUNT',\n  Name = 'NAME',\n  OwnersTotalValue = 'OWNERS_TOTAL_VALUE',\n  Sales_1D = 'SALES_1D',\n  TotalVolume = 'TOTAL_VOLUME',\n  /** By every wallet holding the artist's artworks, before the Collectors tab's exclusions (mint and burn wallets, custodial platforms, contracts that are not wallets, unclassified addresses). Artist.uniqueCollectors counts eligible collectors only, so the order can differ from it. */\n  UniqueCollectors = 'UNIQUE_COLLECTORS',\n  Volume_1D = 'VOLUME_1D',\n}\n\nexport type ArtistSortInput = {\n  field: ArtistSortField;\n  order: Ordering;\n  owners?: InputMaybe<Array<Scalars['Address']>>;\n};\n\nexport enum ArtistType {\n  Artist = 'ARTIST',\n  Creator = 'CREATOR',\n}\n\nexport type AskCancelledNotification = Node &\n  Notification & {\n    __typename?: 'AskCancelledNotification';\n    createdOn: Scalars['DateTime'];\n    id: Scalars['String'];\n    notificationType: Scalars['String'];\n    order: Order;\n    orderId: Scalars['Int'];\n    readOn?: Maybe<Scalars['DateTime']>;\n    user: User;\n  };\n\nexport type AskCreatedNotification = Node &\n  Notification & {\n    __typename?: 'AskCreatedNotification';\n    createdOn: Scalars['DateTime'];\n    id: Scalars['String'];\n    notificationType: Scalars['String'];\n    order: Order;\n    orderId: Scalars['Int'];\n    readOn?: Maybe<Scalars['DateTime']>;\n    user: User;\n  };\n\nexport type Asset = Node & {\n  __typename?: 'Asset';\n  accessTypeName: Scalars['String'];\n  cacheUrl?: Maybe<Scalars['String']>;\n  contentTypeMime: Scalars['String'];\n  data: Scalars['String'];\n  id: Scalars['String'];\n};\n\nexport type AssetDataArgs = {\n  preferCached?: Scalars['Boolean'];\n};\n\nexport type Auction = Node & {\n  __typename?: 'Auction';\n  duration?: Maybe<Scalars['BigInt']>;\n  endTime?: Maybe<Scalars['DateTime']>;\n  highestBid?: Maybe<Bid>;\n  id: Scalars['String'];\n  loan: MultiSourceLoan;\n  minBid: Scalars['BigInt'];\n  originator?: Maybe<Scalars['Address']>;\n  settler?: Maybe<Scalars['Address']>;\n  startTime?: Maybe<Scalars['DateTime']>;\n  status: Scalars['String'];\n  triggerFee?: Maybe<Scalars['BigInt']>;\n};\n\nexport type AuctionBidConfirmationNotification = Node &\n  Notification & {\n    __typename?: 'AuctionBidConfirmationNotification';\n    auction: Auction;\n    auctionId: Scalars['String'];\n    bid: Bid;\n    bidId: Scalars['Int'];\n    createdOn: Scalars['DateTime'];\n    id: Scalars['String'];\n    loan: MultiSourceLoan;\n    loanId: Scalars['String'];\n    notificationType: Scalars['String'];\n    readOn?: Maybe<Scalars['DateTime']>;\n    user: User;\n  };\n\nexport type AuctionConnection = {\n  __typename?: 'AuctionConnection';\n  edges: Array<AuctionEdge>;\n  pageInfo: PageInfo;\n  totalCount: Scalars['Int'];\n};\n\nexport type AuctionEdge = {\n  __typename?: 'AuctionEdge';\n  cursor: Scalars['String'];\n  node: Auction;\n};\n\nexport type AuctionEndedNotification = Node &\n  Notification & {\n    __typename?: 'AuctionEndedNotification';\n    auction: Auction;\n    auctionId: Scalars['String'];\n    createdOn: Scalars['DateTime'];\n    id: Scalars['String'];\n    loan: MultiSourceLoan;\n    loanId: Scalars['String'];\n    notificationType: Scalars['String'];\n    readOn?: Maybe<Scalars['DateTime']>;\n    user: User;\n  };\n\nexport enum AuctionSortField {\n  EndTime = 'END_TIME',\n}\n\nexport type AuctionSortInput = {\n  field: AuctionSortField;\n  order: Ordering;\n};\n\nexport type AuctionStartedNotification = Node &\n  Notification & {\n    __typename?: 'AuctionStartedNotification';\n    auction: Auction;\n    auctionId: Scalars['String'];\n    createdOn: Scalars['DateTime'];\n    id: Scalars['String'];\n    loan: MultiSourceLoan;\n    loanId: Scalars['String'];\n    notificationType: Scalars['String'];\n    readOn?: Maybe<Scalars['DateTime']>;\n    user: User;\n  };\n\nexport enum AuctionStatus {\n  Ended = 'ENDED',\n  Live = 'LIVE',\n  Past = 'PAST',\n  Upcoming = 'UPCOMING',\n}\n\nexport type AuctionWonNotification = Node &\n  Notification & {\n    __typename?: 'AuctionWonNotification';\n    auction: Auction;\n    auctionId: Scalars['String'];\n    createdOn: Scalars['DateTime'];\n    id: Scalars['String'];\n    loan: MultiSourceLoan;\n    loanId: Scalars['String'];\n    notificationType: Scalars['String'];\n    readOn?: Maybe<Scalars['DateTime']>;\n    user: User;\n  };\n\nexport type BnplOrderInput = {\n  amounts: Array<Scalars['BigInt']>;\n  contractAddress: Scalars['Address'];\n  creditPurchaseExecution?: InputMaybe<CreditPurchaseExecutionInput>;\n  /** When the borrower's signed loan execution data expires, at most the server's configured lifetime ahead (five minutes by default). Required unless creditPurchaseExecution sets the deadline. */\n  emitExpirationTime?: InputMaybe<Scalars['BigInt']>;\n  emitSignature?: InputMaybe<Scalars['Signature']>;\n  extraSeaportData?: InputMaybe<Scalars['Hex']>;\n  loanDuration: Scalars['BigInt'];\n  offerIds: Array<Scalars['String']>;\n  signature?: InputMaybe<Scalars['Signature']>;\n  tokenId: Scalars['BigInt'];\n};\n\nexport type Bid = Node & {\n  __typename?: 'Bid';\n  amount: Scalars['BigInt'];\n  auction: Auction;\n  auctionId: Scalars['String'];\n  bidder: Scalars['Address'];\n  bidderName?: Maybe<Scalars['String']>;\n  bidderProfilePictureUrl?: Maybe<Scalars['String']>;\n  id: Scalars['String'];\n  indexInBlock: Scalars['Int'];\n  timestamp: Scalars['DateTime'];\n  txHash: Scalars['Hash'];\n};\n\nexport type BidConnection = {\n  __typename?: 'BidConnection';\n  edges: Array<BidEdge>;\n  pageInfo: PageInfo;\n  totalCount: Scalars['Int'];\n};\n\nexport type BidEdge = {\n  __typename?: 'BidEdge';\n  cursor: Scalars['String'];\n  node: Bid;\n};\n\nexport type BidFulfillInput = {\n  nftId: Scalars['Int'];\n  orderId: Scalars['Int64'];\n};\n\nexport type BidHistory = {\n  __typename?: 'BidHistory';\n  price: Scalars['Float'];\n  timestamp: Scalars['DateTime'];\n  value: Scalars['Float'];\n};\n\nexport type BidNearListingNotification = Node &\n  Notification & {\n    __typename?: 'BidNearListingNotification';\n    bidCurrency: Currency;\n    bidNetAmount: Scalars['BigInt'];\n    createdOn: Scalars['DateTime'];\n    id: Scalars['String'];\n    nft: Nft;\n    nftId: Scalars['Int'];\n    notificationType: Scalars['String'];\n    order: Order;\n    orderId: Scalars['Int'];\n    readOn?: Maybe<Scalars['DateTime']>;\n    threshold: Scalars['Float'];\n    user: User;\n  };\n\nexport enum BidSortField {\n  Bid = 'BID',\n  HighestBid = 'HIGHEST_BID',\n}\n\nexport type BidSortInput = {\n  field: BidSortField;\n  order: Ordering;\n};\n\nexport type BigIntCurrencyAmount = {\n  __typename?: 'BigIntCurrencyAmount';\n  amount: Scalars['BigInt'];\n  currency: Currency;\n};\n\nexport type BigIntInterval = {\n  max?: InputMaybe<Scalars['BigInt']>;\n  min?: InputMaybe<Scalars['BigInt']>;\n};\n\n/** An open loan on Blur's Blend as the Blend backfill last replayed it: the fields Blend hashes into liens(lienId). Rows lag the chain since the last backfill, so check one against the contract before acting on it. */\nexport type BlendLien = {\n  __typename?: 'BlendLien';\n  amount: Scalars['BigInt'];\n  auctionDuration: Scalars['BigInt'];\n  auctionStartBlock: Scalars['BigInt'];\n  borrower: Scalars['Address'];\n  collection: Scalars['Address'];\n  /** The block of the last event the backfill applied to the lien. */\n  lastEventBlock: Scalars['BigInt'];\n  lender: Scalars['Address'];\n  lienId: Scalars['BigInt'];\n  rate: Scalars['BigInt'];\n  startTime: Scalars['BigInt'];\n  tokenId: Scalars['BigInt'];\n};\n\nexport enum BlockchainEnum {\n  Ethereum = 'ETHEREUM',\n  Hyperliquid = 'HYPERLIQUID',\n  Robinhood = 'ROBINHOOD',\n}\n\nexport type BulkNftOrdersInput = {\n  orders: Array<SingleNftOrderInput>;\n  signature?: InputMaybe<Scalars['Signature']>;\n};\n\nexport type BulkNftOrdersResult = {\n  __typename?: 'BulkNFTOrdersResult';\n  orders: Array<SingleNftOrder>;\n};\n\nexport type BulkNftOrdersResultSignatureRequest = BulkNftOrdersResult | SignatureRequest;\n\nexport type BuyNowPayLaterOrder = Event &\n  Node &\n  Order & {\n    __typename?: 'BuyNowPayLaterOrder';\n    /** Whether `cancelTradeOrders` can cancel this order without a transaction: a native bid restricted to our signed zone. */\n    cancelsOffChain: Scalars['Boolean'];\n    createdDate: Scalars['DateTime'];\n    currency: Currency;\n    currencyAddress: Scalars['Address'];\n    emitCalldata: Scalars['Hex'];\n    evmOrder?: Maybe<Scalars['JSON']>;\n    executions: Scalars['Int'];\n    expiration: Scalars['DateTime'];\n    feeMetadata?: Maybe<OrderFeeMetadata>;\n    fees: Scalars['BigInt'];\n    hidden: Scalars['Boolean'];\n    id: Scalars['String'];\n    isAsk: Scalars['Boolean'];\n    isPrivate: Scalars['Boolean'];\n    maker: Scalars['Address'];\n    makerName?: Maybe<Scalars['String']>;\n    makerProfilePictureUrl?: Maybe<Scalars['String']>;\n    marketPlace: Scalars['String'];\n    marketPlaceAddress: Scalars['Address'];\n    maxExecutions: Scalars['Int'];\n    netAmount: Scalars['BigInt'];\n    nft: Nft;\n    nftId: Scalars['Int'];\n    nonce: Scalars['BigInt'];\n    orderType: Scalars['String'];\n    originalId: Scalars['Hash'];\n    platformFees: Array<PlatformFee>;\n    price: Scalars['BigInt'];\n    signature: Scalars['Signature'];\n    startTime: Scalars['DateTime'];\n    status: Scalars['String'];\n    stealth: Scalars['Boolean'];\n    taker: Scalars['Address'];\n    takerName?: Maybe<Scalars['String']>;\n    takerProfilePictureUrl?: Maybe<Scalars['String']>;\n    timestamp: Scalars['DateTime'];\n    updatedDate: Scalars['DateTime'];\n  };\n\nexport type BuyNowPayLaterOrderEvmOrderArgs = {\n  integerStrings?: Scalars['Boolean'];\n};\n\nexport type BuyNowPayLaterOrderPlatformFeesArgs = {\n  operation: PlatformFeeOperationType;\n};\n\nexport type BuyNowPayLaterOrderSignatureRequestExtraSeaportData =\n  | BuyNowPayLaterOrder\n  | ExtraSeaportData\n  | SignatureRequest;\n\nexport type CancelAllOrdersCalldata = {\n  __typename?: 'CancelAllOrdersCalldata';\n  calldata: Scalars['Hex'];\n  marketPlaceAddress: Scalars['Address'];\n};\n\nexport type CancelTradeOrdersResult = {\n  __typename?: 'CancelTradeOrdersResult';\n  /** The on-chain cancel of `onChainOrderIds`, one transaction per marketplace, as `getCancelOrdersCalldata` returns it. */\n  cancelOrdersCalldata: Array<CancelAllOrdersCalldata>;\n  /** Orders cancelled without a transaction. */\n  cancelledOrders: Array<Order>;\n  /** Orders that still need Seaport's on-chain cancel. */\n  onChainOrderIds: Array<Scalars['Int64']>;\n};\n\n/** An NFT collection. */\nexport type Collection = Node & {\n  __typename?: 'Collection';\n  actionsEnabled: Scalars['Boolean'];\n  artistArtworksCount: Scalars['Int'];\n  artistFloorPrice?: Maybe<CurrencyAmount>;\n  artistNumberOfSales1d: Scalars['Int'];\n  artistTotalVolume1d: Scalars['Float'];\n  artistUniqueCollectorsCount: Scalars['Int'];\n  artists: Array<Artist>;\n  bannerImage?: Maybe<Asset>;\n  collectionUrl?: Maybe<Scalars['String']>;\n  contractData: ContractData;\n  description?: Maybe<Scalars['String']>;\n  discordUrl?: Maybe<Scalars['String']>;\n  editionIds: Array<Scalars['Int']>;\n  /** Units of the collection's ERC1155 NFTs summed over the holder balances the indexer tracks. The tracked holder set can be partial, so this may undercount. Null for other token standards and when no holder balance is tracked. */\n  erc1155Supply?: Maybe<Scalars['BigInt']>;\n  externalUrl?: Maybe<Scalars['String']>;\n  /** Number of users following this collection. */\n  followersCount: Scalars['Int'];\n  hasTransferValidator: Scalars['Boolean'];\n  holderStatistics?: Maybe<CollectionHolderStatistics>;\n  id: Scalars['String'];\n  image?: Maybe<Asset>;\n  imageId?: Maybe<Scalars['String']>;\n  /** Whether the authenticated user follows this collection. */\n  isFollowed: Scalars['Boolean'];\n  itemType?: Maybe<ItemType>;\n  loansEnabled: Scalars['Boolean'];\n  maxNetPrincipalOffer?: Maybe<CollectionOffer>;\n  name?: Maybe<Scalars['String']>;\n  nftsCount?: Maybe<Scalars['Int']>;\n  platformFees: Array<PlatformFee>;\n  /** Up to 10 preview NFTs for the collection, optionally filtered by artist. When an artist_id is provided, only NFTs associated with that artist are returned; otherwise any NFTs from the collection, ordered by token_id. */\n  previewNfts: Array<Nft>;\n  rarityEnabled: Scalars['Boolean'];\n  royalties: Array<Royalty>;\n  slug: Scalars['String'];\n  statistics: CollectionStatistics;\n  supply?: Maybe<Scalars['BigInt']>;\n  traitOffersEnabled: Scalars['Boolean'];\n  twitterUsername?: Maybe<Scalars['String']>;\n  uniqueCollectors: Scalars['Int'];\n  verified: Scalars['Boolean'];\n  whitelistedSupply: Scalars['Int'];\n  wrappedCollection?: Maybe<Collection>;\n  wrappedCollectionId?: Maybe<Scalars['Int']>;\n  wrapperCollections: Array<Collection>;\n};\n\n/** An NFT collection. */\nexport type CollectionArtistArtworksCountArgs = {\n  artistId: Scalars['Int'];\n};\n\n/** An NFT collection. */\nexport type CollectionArtistFloorPriceArgs = {\n  artistId: Scalars['Int'];\n};\n\n/** An NFT collection. */\nexport type CollectionArtistNumberOfSales1dArgs = {\n  artistId: Scalars['Int'];\n};\n\n/** An NFT collection. */\nexport type CollectionArtistTotalVolume1dArgs = {\n  artistId: Scalars['Int'];\n};\n\n/** An NFT collection. */\nexport type CollectionArtistUniqueCollectorsCountArgs = {\n  artistId: Scalars['Int'];\n};\n\n/** An NFT collection. */\nexport type CollectionMaxNetPrincipalOfferArgs = {\n  currencyAddress: Scalars['Address'];\n};\n\n/** An NFT collection. */\nexport type CollectionPlatformFeesArgs = {\n  marketplace?: InputMaybe<MarketPlaceType>;\n  operation: PlatformFeeOperationType;\n};\n\n/** An NFT collection. */\nexport type CollectionPreviewNftsArgs = {\n  artistId?: InputMaybe<Scalars['Int']>;\n};\n\nexport type CollectionConnection = {\n  __typename?: 'CollectionConnection';\n  edges: Array<CollectionEdge>;\n  pageInfo: PageInfo;\n  totalCount: Scalars['Int'];\n};\n\nexport type CollectionEdge = {\n  __typename?: 'CollectionEdge';\n  cursor: Scalars['String'];\n  node: Collection;\n};\n\nexport type CollectionEventsCountByDayAndCurrency = {\n  __typename?: 'CollectionEventsCountByDayAndCurrency';\n  auctions: Scalars['BigInt'];\n  buyouts: Scalars['BigInt'];\n  defaults: Scalars['BigInt'];\n  foreclosings: Scalars['BigInt'];\n  originations: Scalars['BigInt'];\n  refinancings: Scalars['BigInt'];\n  renegotiations: Scalars['BigInt'];\n  repayments: Scalars['BigInt'];\n  topUps: Scalars['BigInt'];\n};\n\n/** The orders listCollectionFollows takes. */\nexport enum CollectionFollowSortField {\n  /** When the wallet followed the collection. */\n  FollowedAt = 'FOLLOWED_AT',\n  Name = 'NAME',\n}\n\nexport type CollectionFollowSortInput = {\n  field: CollectionFollowSortField;\n  order: Ordering;\n};\n\nexport enum CollectionHolderSortField {\n  OwnedAmount = 'OWNED_AMOUNT',\n}\n\nexport type CollectionHolderSortInput = {\n  field: CollectionHolderSortField;\n  order: Ordering;\n};\n\n/** Daily snapshot of a collection's holder-distribution statistics. */\nexport type CollectionHolderStatistics = Node & {\n  __typename?: 'CollectionHolderStatistics';\n  collectionId: Scalars['Int'];\n  /** Wallet counts per size bucket (1, 2-5, 6-20, 21-100, over 100). */\n  holders: Array<Scalars['Int']>;\n  id: Scalars['String'];\n  /** NFT counts held per size bucket, parallel to `holders`. */\n  items: Array<Scalars['Int']>;\n  nakamotoCoefficient: Scalars['Int'];\n  netBuyers30Days: Scalars['Int'];\n  netSellers30Days: Scalars['Int'];\n  newHolders30Days: Scalars['Int'];\n  supply: Scalars['Int'];\n  timestamp: Scalars['DateTime'];\n  top10Count: Scalars['Int'];\n  top10NetFlow30Days: Scalars['Int'];\n  topHolderAddress?: Maybe<Scalars['Address']>;\n  topHolderCount: Scalars['Int'];\n  topHolders: TopHoldersInfo;\n  topMoverAddress?: Maybe<Scalars['Address']>;\n  topMoverNetFlow30Days?: Maybe<Scalars['Int']>;\n  uniqueHolders: Scalars['Int'];\n};\n\nexport type CollectionLoansData = {\n  __typename?: 'CollectionLoansData';\n  maxAprBps: Scalars['Float'];\n  maxPrincipalAmount: Scalars['BigInt'];\n  maxRemainingTime: Scalars['BigInt'];\n  minAprBps: Scalars['Float'];\n  minPrincipalAmount: Scalars['BigInt'];\n  minRemainingTime: Scalars['BigInt'];\n};\n\nexport type CollectionMarketDepth = {\n  __typename?: 'CollectionMarketDepth';\n  asOf: Scalars['DateTime'];\n  asks: Array<MarketDepthLevel>;\n  bids: Array<MarketDepthLevel>;\n  nativeCurrencyAddress: Scalars['Address'];\n  omittedCount: Scalars['Int'];\n};\n\nexport type CollectionOffer = Event &\n  Node &\n  Offer & {\n    __typename?: 'CollectionOffer';\n    aprBps: Scalars['BigInt'];\n    availablePrincipalAmount: Scalars['BigInt'];\n    borrowerAddress?: Maybe<Scalars['Address']>;\n    borrowerName?: Maybe<Scalars['String']>;\n    borrowerProfilePictureUrl?: Maybe<Scalars['String']>;\n    capacity: Scalars['BigInt'];\n    collateralAddress?: Maybe<Scalars['Address']>;\n    collection: Collection;\n    collectionId?: Maybe<Scalars['Int']>;\n    consumedCapacity: Scalars['BigInt'];\n    contractAddress: Scalars['Address'];\n    createdDate?: Maybe<Scalars['DateTime']>;\n    currency: Currency;\n    duration: Scalars['BigInt'];\n    expirationTime: Scalars['BigInt'];\n    fee: Scalars['BigInt'];\n    hidden?: Maybe<Scalars['Boolean']>;\n    id: Scalars['String'];\n    lenderAddress?: Maybe<Scalars['Address']>;\n    lenderAllowance?: Maybe<Scalars['BigInt']>;\n    lenderAvailableBalance?: Maybe<Scalars['BigInt']>;\n    lenderName?: Maybe<Scalars['String']>;\n    lenderProfilePictureUrl?: Maybe<Scalars['String']>;\n    lenderRefinanceDisabled: Scalars['Boolean'];\n    maxPrincipal: Scalars['BigInt'];\n    maxSeniorRepayment: Scalars['BigInt'];\n    /**\n     * Deprecated field: use maxSeniorRepayment instead.\n     * @deprecated Use maxSeniorRepayment instead.\n     */\n    maxTrancheFloor: Scalars['BigInt'];\n    netPrincipal: Scalars['BigInt'];\n    nftId?: Maybe<Scalars['Int']>;\n    offerHash?: Maybe<Scalars['Hash']>;\n    offerId: Scalars['BigInt'];\n    principalAddress: Scalars['Address'];\n    principalAmount: Scalars['BigInt'];\n    repayment: Scalars['BigInt'];\n    requiresLiquidation?: Maybe<Scalars['Boolean']>;\n    signature?: Maybe<Scalars['Signature']>;\n    signerAddress?: Maybe<Scalars['Address']>;\n    statistics: CollectionOfferStatistics;\n    status: Scalars['String'];\n    timestamp: Scalars['DateTime'];\n    validators: Array<OfferValidator>;\n  };\n\nexport type CollectionOfferInput = {\n  aprBps: Scalars['BigInt'];\n  borrowerAddress: Scalars['Address'];\n  capacity: Scalars['BigInt'];\n  collectionId: Scalars['Int'];\n  contractAddress: Scalars['Address'];\n  duration: Scalars['BigInt'];\n  expirationTime: Scalars['BigInt'];\n  fee: Scalars['BigInt'];\n  lenderAddress: Scalars['Address'];\n  lenderRefinanceDisabled?: Scalars['Boolean'];\n  maxSeniorRepayment?: InputMaybe<Scalars['BigInt']>;\n  maxTrancheFloor?: InputMaybe<Scalars['BigInt']>;\n  offerValidators: Array<OfferValidatorInput>;\n  principalAddress: Scalars['Address'];\n  principalAmount: Scalars['BigInt'];\n  requiresLiquidation?: InputMaybe<Scalars['Boolean']>;\n  signerAddress?: InputMaybe<Scalars['Address']>;\n};\n\nexport type CollectionOfferStatistics = {\n  __typename?: 'CollectionOfferStatistics';\n  acceptedLoans: Scalars['Int'];\n  consumedCapacity: Scalars['BigInt'];\n};\n\nexport type CollectionOrder = Event &\n  Node &\n  Order & {\n    __typename?: 'CollectionOrder';\n    /** Whether `cancelTradeOrders` can cancel this order without a transaction: a native bid restricted to our signed zone. */\n    cancelsOffChain: Scalars['Boolean'];\n    collection: Collection;\n    collectionId: Scalars['Int'];\n    createdDate: Scalars['DateTime'];\n    currency: Currency;\n    currencyAddress: Scalars['Address'];\n    evmOrder?: Maybe<Scalars['JSON']>;\n    executions: Scalars['Int'];\n    expiration: Scalars['DateTime'];\n    feeMetadata?: Maybe<OrderFeeMetadata>;\n    fees: Scalars['BigInt'];\n    hidden: Scalars['Boolean'];\n    id: Scalars['String'];\n    isAsk: Scalars['Boolean'];\n    isPrivate: Scalars['Boolean'];\n    maker: Scalars['Address'];\n    makerName?: Maybe<Scalars['String']>;\n    makerProfilePictureUrl?: Maybe<Scalars['String']>;\n    marketPlace: Scalars['String'];\n    marketPlaceAddress: Scalars['Address'];\n    maxExecutions: Scalars['Int'];\n    netAmount: Scalars['BigInt'];\n    nonce: Scalars['BigInt'];\n    orderType: Scalars['String'];\n    originalId: Scalars['Hash'];\n    platformFees: Array<PlatformFee>;\n    price: Scalars['BigInt'];\n    signature: Scalars['Signature'];\n    startTime: Scalars['DateTime'];\n    status: Scalars['String'];\n    stealth: Scalars['Boolean'];\n    taker: Scalars['Address'];\n    takerName?: Maybe<Scalars['String']>;\n    takerProfilePictureUrl?: Maybe<Scalars['String']>;\n    timestamp: Scalars['DateTime'];\n    updatedDate: Scalars['DateTime'];\n  };\n\nexport type CollectionOrderEvmOrderArgs = {\n  integerStrings?: Scalars['Boolean'];\n};\n\nexport type CollectionOrderPlatformFeesArgs = {\n  operation: PlatformFeeOperationType;\n};\n\nexport type CollectionOrderInput = {\n  amount?: InputMaybe<Scalars['BigInt']>;\n  collectionId: Scalars['Int'];\n  currencyAddress: Scalars['Address'];\n  expirationTime: Scalars['BigInt'];\n  fees?: InputMaybe<Array<OrderFee>>;\n  isAsk?: InputMaybe<Scalars['Boolean']>;\n  maxExecutions?: InputMaybe<Scalars['BigInt']>;\n  price?: InputMaybe<Scalars['BigInt']>;\n  signature?: InputMaybe<Scalars['Signature']>;\n  startTime: Scalars['BigInt'];\n  stealth?: InputMaybe<Scalars['Boolean']>;\n  taker?: InputMaybe<Scalars['Address']>;\n};\n\nexport type CollectionOrderSignatureRequest = CollectionOrder | SignatureRequest;\n\nexport enum CollectionOrderType {\n  Collection = 'COLLECTION',\n  MultipleTrait = 'MULTIPLE_TRAIT',\n  SetBid = 'SET_BID',\n  SingleNft = 'SINGLE_NFT',\n  Trait = 'TRAIT',\n}\n\nexport type CollectionSignedOfferInput = {\n  aprBps: Scalars['BigInt'];\n  borrowerAddress: Scalars['Address'];\n  capacity: Scalars['BigInt'];\n  collectionId: Scalars['Int'];\n  contractAddress: Scalars['Address'];\n  duration: Scalars['BigInt'];\n  expirationTime: Scalars['BigInt'];\n  fee: Scalars['BigInt'];\n  lenderAddress: Scalars['Address'];\n  lenderRefinanceDisabled?: Scalars['Boolean'];\n  maxSeniorRepayment?: InputMaybe<Scalars['BigInt']>;\n  maxTrancheFloor?: InputMaybe<Scalars['BigInt']>;\n  offerHash: Scalars['Hash'];\n  offerId: Scalars['BigInt'];\n  offerValidators: Array<OfferValidatorInput>;\n  principalAddress: Scalars['Address'];\n  principalAmount: Scalars['BigInt'];\n  requiresLiquidation?: InputMaybe<Scalars['Boolean']>;\n  signature: Scalars['Signature'];\n  signerAddress?: InputMaybe<Scalars['Address']>;\n};\n\nexport enum CollectionSortField {\n  ArtistFirstMintDate = 'ARTIST_FIRST_MINT_DATE',\n  ArtistFloorPrice = 'ARTIST_FLOOR_PRICE',\n  ArtistNumberOfSales_1D = 'ARTIST_NUMBER_OF_SALES_1D',\n  ArtistTotalVolume_1D = 'ARTIST_TOTAL_VOLUME_1D',\n  ContractCreatedDate = 'CONTRACT_CREATED_DATE',\n  DateAdded = 'DATE_ADDED',\n  FloorPrice = 'FLOOR_PRICE',\n  FloorPrice_1DChange = 'FLOOR_PRICE_1D_CHANGE',\n  FloorPrice_7DChange = 'FLOOR_PRICE_7D_CHANGE',\n  FloorPrice_30DChange = 'FLOOR_PRICE_30D_CHANGE',\n  HighestBid = 'HIGHEST_BID',\n  LendersOutstandingPrincipal = 'LENDERS_OUTSTANDING_PRINCIPAL',\n  ListingCount = 'LISTING_COUNT',\n  LoanCount = 'LOAN_COUNT',\n  MarketCap = 'MARKET_CAP',\n  Name = 'NAME',\n  NumberOfSales_1D = 'NUMBER_OF_SALES_1D',\n  NumberOfSales_7D = 'NUMBER_OF_SALES_7D',\n  NumberOfSales_30D = 'NUMBER_OF_SALES_30D',\n  OfferCount = 'OFFER_COUNT',\n  OutstandingPrincipal = 'OUTSTANDING_PRINCIPAL',\n  OwnersTotalValue = 'OWNERS_TOTAL_VALUE',\n  SaleListingCount = 'SALE_LISTING_COUNT',\n  Supply = 'SUPPLY',\n  TotalLoanVolume = 'TOTAL_LOAN_VOLUME',\n  TotalOutstandingPrincipal = 'TOTAL_OUTSTANDING_PRINCIPAL',\n  TotalVolume = 'TOTAL_VOLUME',\n  TotalVolume_1D = 'TOTAL_VOLUME_1D',\n  TotalVolume_7D = 'TOTAL_VOLUME_7D',\n  TotalVolume_30D = 'TOTAL_VOLUME_30D',\n  TrendingVolume = 'TRENDING_VOLUME',\n}\n\nexport type CollectionSortInput = {\n  artistId?: InputMaybe<Scalars['Int']>;\n  field: CollectionSortField;\n  lenders?: InputMaybe<Array<Scalars['Address']>>;\n  marketplaces?: InputMaybe<Array<MarketPlaceType>>;\n  minNumberOfSales?: InputMaybe<Scalars['BigInt']>;\n  order: Ordering;\n  owners?: InputMaybe<Array<Scalars['Address']>>;\n  principalAddress?: InputMaybe<Scalars['Address']>;\n};\n\nexport type CollectionStatistics = {\n  __typename?: 'CollectionStatistics';\n  /** @deprecated Use highest_bid instead. */\n  bestOffer?: Maybe<CurrencyAmount>;\n  /** Items whose current owner is a burn address: the zero address, a known burn wallet, or the collection's own contract. They count towards nfts_count. Null until the collection has been sampled. */\n  burnedNftsCount?: Maybe<Scalars['Int']>;\n  floorPrice?: Maybe<CurrencyAmount>;\n  floorPrice1d?: Maybe<Scalars['Float']>;\n  floorPrice7d?: Maybe<Scalars['Float']>;\n  floorPrice30d?: Maybe<Scalars['Float']>;\n  /** Last recorded floor at or before timestamp, normalized to ETH. Uses the lowest available floor across the collection's wrap family. Null when no normalized sample is available. */\n  floorPriceAt?: Maybe<Scalars['Float']>;\n  floorPriceHistory: Array<FloatStatHistory>;\n  /** Highest active bid applicable to any item in this collection, including item, trait, set and collection bids. */\n  highestApplicableBid?: Maybe<Order>;\n  highestBid?: Maybe<Order>;\n  /** Loan originations (timestamp, value, currency, loanId) for this collection between two dates. Best effort: may skip some loans. When traits is given, only loans against NFTs carrying at least one of the listed trait ids are returned. */\n  loanInsights: Array<LoanHistoryItem>;\n  maxAskPrice?: Maybe<BigIntCurrencyAmount>;\n  medianLoanValue?: Maybe<Scalars['Float']>;\n  minAskPrice?: Maybe<BigIntCurrencyAmount>;\n  nftsCount?: Maybe<Scalars['Float']>;\n  numberOfListings: Scalars['Int'];\n  numberOfNftsOwned: Scalars['Int'];\n  /**\n   * Deprecated field. Use number_of_offers_for_currencies instead.\n   * @deprecated Use number_of_offers_for_currencies instead.\n   */\n  numberOfOffers: Scalars['Float'];\n  numberOfOffersForCurrencies: Scalars['Int'];\n  numberOfPricedNfts: Scalars['Int'];\n  numberOfSales1d: Scalars['Int'];\n  numberOfSales7d: Scalars['Int'];\n  numberOfSales30d: Scalars['Int'];\n  /** Units the wallets hold: one per held NFT, except that an ERC1155 token counts every unit of their balances, where numberOfNftsOwned counts it once. Multiply the floor by this to value holdings. */\n  numberOfUnitsOwned: Scalars['BigInt'];\n  outstandingLoanCount: Scalars['Int'];\n  outstandingNftsCount: Scalars['BigInt'];\n  outstandingPrincipal: Scalars['BigInt'];\n  percentageInOutstandingLoans: Scalars['Float'];\n  repaymentRate: Scalars['Float'];\n  /** Sales (timestamp, value, currency, nftId) for this collection between two dates. Best effort: the series is downsampled and may skip some sales. When traits is given, only sales of NFTs carrying at least one of the listed trait ids are returned. */\n  saleInsights: Array<SaleHistoryItem>;\n  topBidHistory: Array<BidHistory>;\n  totalLoanVolume: Scalars['BigInt'];\n  totalLoanVolume1d: Scalars['BigInt'];\n  totalLoanVolume1m: Scalars['BigInt'];\n  totalLoanVolume1w: Scalars['BigInt'];\n  totalLoanVolume1y: Scalars['BigInt'];\n  totalLoanVolume2m: Scalars['BigInt'];\n  totalLoanVolume3m: Scalars['BigInt'];\n  totalLoanVolume4m: Scalars['BigInt'];\n  totalOutstandingPrincipal: Scalars['BigInt'];\n  totalVolume?: Maybe<Scalars['Float']>;\n  totalVolume1d?: Maybe<Scalars['Float']>;\n  totalVolume1m?: Maybe<Scalars['Float']>;\n  totalVolume1w?: Maybe<Scalars['Float']>;\n  /** @deprecated Field deprecated */\n  totalVolume1y?: Maybe<Scalars['Float']>;\n  /** @deprecated Field deprecated */\n  totalVolume2m?: Maybe<Scalars['Float']>;\n  /** @deprecated Field deprecated */\n  totalVolume3m?: Maybe<Scalars['Float']>;\n  /** @deprecated Field deprecated */\n  totalVolume4m?: Maybe<Scalars['Float']>;\n};\n\nexport type CollectionStatisticsFloorPriceAtArgs = {\n  timestamp: Scalars['DateTime'];\n};\n\nexport type CollectionStatisticsFloorPriceHistoryArgs = {\n  fromDate: Scalars['DateTime'];\n  toDate: Scalars['DateTime'];\n};\n\nexport type CollectionStatisticsLoanInsightsArgs = {\n  fromDate: Scalars['DateTime'];\n  toDate: Scalars['DateTime'];\n  traits?: InputMaybe<Array<Scalars['Int']>>;\n};\n\nexport type CollectionStatisticsMaxAskPriceArgs = {\n  currencyAddresses?: InputMaybe<Array<Scalars['Address']>>;\n};\n\nexport type CollectionStatisticsMinAskPriceArgs = {\n  currencyAddresses?: InputMaybe<Array<Scalars['Address']>>;\n};\n\nexport type CollectionStatisticsNumberOfNftsOwnedArgs = {\n  walletAddresses?: InputMaybe<Array<Scalars['Address']>>;\n};\n\nexport type CollectionStatisticsNumberOfOffersArgs = {\n  currencyAddress: Scalars['Address'];\n};\n\nexport type CollectionStatisticsNumberOfOffersForCurrenciesArgs = {\n  currencyAddresses: Array<Scalars['Address']>;\n};\n\nexport type CollectionStatisticsNumberOfPricedNftsArgs = {\n  marketplaces?: InputMaybe<Array<MarketPlaceType>>;\n};\n\nexport type CollectionStatisticsNumberOfUnitsOwnedArgs = {\n  walletAddresses?: InputMaybe<Array<Scalars['Address']>>;\n};\n\nexport type CollectionStatisticsOutstandingPrincipalArgs = {\n  currencyAddress: Scalars['Address'];\n};\n\nexport type CollectionStatisticsSaleInsightsArgs = {\n  fromDate: Scalars['DateTime'];\n  toDate: Scalars['DateTime'];\n  traits?: InputMaybe<Array<Scalars['Int']>>;\n};\n\nexport type CollectionStatisticsTopBidHistoryArgs = {\n  fromDate: Scalars['DateTime'];\n  toDate: Scalars['DateTime'];\n};\n\nexport type CollectionStatisticsTotalLoanVolumeArgs = {\n  currencyAddress: Scalars['Address'];\n};\n\nexport type CollectionStatisticsTotalLoanVolume1dArgs = {\n  currencyAddress: Scalars['Address'];\n};\n\nexport type CollectionStatisticsTotalLoanVolume1mArgs = {\n  currencyAddress: Scalars['Address'];\n};\n\nexport type CollectionStatisticsTotalLoanVolume1wArgs = {\n  currencyAddress: Scalars['Address'];\n};\n\nexport type CollectionStatisticsTotalLoanVolume1yArgs = {\n  currencyAddress: Scalars['Address'];\n};\n\nexport type CollectionStatisticsTotalLoanVolume2mArgs = {\n  currencyAddress: Scalars['Address'];\n};\n\nexport type CollectionStatisticsTotalLoanVolume3mArgs = {\n  currencyAddress: Scalars['Address'];\n};\n\nexport type CollectionStatisticsTotalLoanVolume4mArgs = {\n  currencyAddress: Scalars['Address'];\n};\n\n/** The valued items of one wrap family the wallets hold. */\nexport type CollectionValuation = {\n  __typename?: 'CollectionValuation';\n  collection: Collection;\n  unvaluedNfts: Scalars['Int'];\n  /** Sum of the valued items' estimates, in ETH. */\n  value: Scalars['Float'];\n  valuedNfts: Scalars['Int'];\n};\n\n/** A collection the recent buyers of another collection also bought. */\nexport type CollectorsAlsoBought = {\n  __typename?: 'CollectorsAlsoBought';\n  collection: Collection;\n  /** A few of those buyers' purchases in this collection, most recent first, one per buyer. */\n  examplePurchases: Array<Sale>;\n  /** Distinct recent buyers of the other collection who also bought this one in the same window. */\n  sharedBuyers: Scalars['Int'];\n};\n\nexport type ContractData = Node & {\n  __typename?: 'ContractData';\n  blockchain: Scalars['String'];\n  contractAddress: Scalars['Address'];\n  createdDate: Scalars['DateTime'];\n  creatorAddress?: Maybe<Scalars['Address']>;\n  id: Scalars['String'];\n  standard: Scalars['String'];\n};\n\nexport type CreditPurchaseExecutionInput = {\n  expirationTime: Scalars['BigInt'];\n  initialPayment: Scalars['BigInt'];\n  loanSwapData: Scalars['Hex'];\n  orderId: Scalars['Int64'];\n  price: Scalars['BigInt'];\n  repaymentSwapData: Scalars['Hex'];\n  totalPrice?: InputMaybe<Scalars['BigInt']>;\n};\n\nexport type Currency = Node & {\n  __typename?: 'Currency';\n  address: Scalars['Address'];\n  currentEthRate?: Maybe<Scalars['Float']>;\n  currentUsdcPrice?: Maybe<Scalars['Float']>;\n  decimals: Scalars['Int'];\n  id: Scalars['String'];\n  /** @deprecated Use rate_at_times instead. */\n  rateAtTime?: Maybe<Scalars['Float']>;\n  rateAtTimes: Array<Maybe<Scalars['Float']>>;\n  symbol: Scalars['String'];\n  /** @deprecated Use usdc_price_at_times instead. */\n  usdcPriceAtTime?: Maybe<Scalars['Float']>;\n  usdcPriceAtTimes: Array<Maybe<Scalars['Float']>>;\n};\n\nexport type CurrencyRateAtTimeArgs = {\n  timestamp: Scalars['DateTime'];\n};\n\nexport type CurrencyRateAtTimesArgs = {\n  timestamps: Array<Scalars['DateTime']>;\n};\n\nexport type CurrencyUsdcPriceAtTimeArgs = {\n  timestamp: Scalars['DateTime'];\n};\n\nexport type CurrencyUsdcPriceAtTimesArgs = {\n  timestamps: Array<Scalars['DateTime']>;\n};\n\nexport type CurrencyAmount = {\n  __typename?: 'CurrencyAmount';\n  amount: Scalars['Float'];\n  currency: Currency;\n};\n\nexport type CurrencyConnection = {\n  __typename?: 'CurrencyConnection';\n  edges: Array<CurrencyEdge>;\n  pageInfo: PageInfo;\n  totalCount: Scalars['Int'];\n};\n\nexport type CurrencyEdge = {\n  __typename?: 'CurrencyEdge';\n  cursor: Scalars['String'];\n  node: Currency;\n};\n\nexport type Deal = Event &\n  Node & {\n    __typename?: 'Deal';\n    blockchain: Scalars['String'];\n    counterOfferForId?: Maybe<Scalars['Int']>;\n    counterOffered: Scalars['Boolean'];\n    createdDate: Scalars['DateTime'];\n    evmOrder?: Maybe<Scalars['JSON']>;\n    executedTxHash?: Maybe<Scalars['Hash']>;\n    expiration: Scalars['DateTime'];\n    id: Scalars['String'];\n    maker: Scalars['Address'];\n    makerErc20s: Array<Scalars['Address']>;\n    makerErc20sAmounts: Array<Scalars['BigInt']>;\n    makerName?: Maybe<Scalars['String']>;\n    makerNfts: Array<Nft>;\n    makerNftsAmounts: Array<Scalars['BigInt']>;\n    makerProfilePictureUrl?: Maybe<Scalars['String']>;\n    marketPlaceAddress: Scalars['Address'];\n    nonce: Scalars['BigInt'];\n    signature?: Maybe<Scalars['Signature']>;\n    status: Scalars['String'];\n    taker: Scalars['Address'];\n    takerErc20s: Array<Scalars['Address']>;\n    takerErc20sAmounts: Array<Scalars['BigInt']>;\n    takerName?: Maybe<Scalars['String']>;\n    takerNfts: Array<Nft>;\n    takerNftsAmounts: Array<Scalars['BigInt']>;\n    takerProfilePictureUrl?: Maybe<Scalars['String']>;\n    timestamp: Scalars['DateTime'];\n    updatedDate: Scalars['DateTime'];\n  };\n\nexport type DealConnection = {\n  __typename?: 'DealConnection';\n  edges: Array<DealEdge>;\n  pageInfo: PageInfo;\n  totalCount: Scalars['Int'];\n};\n\nexport type DealEdge = {\n  __typename?: 'DealEdge';\n  cursor: Scalars['String'];\n  node: Deal;\n};\n\nexport enum DealEventType {\n  Accepted = 'ACCEPTED',\n  Cancelled = 'CANCELLED',\n  Expired = 'EXPIRED',\n  Invalid = 'INVALID',\n  Received = 'RECEIVED',\n  ReceivedCounterOffer = 'RECEIVED_COUNTER_OFFER',\n  Sent = 'SENT',\n  SentCounterOffer = 'SENT_COUNTER_OFFER',\n}\n\nexport type DealExpirationReminderNotification = Node &\n  Notification & {\n    __typename?: 'DealExpirationReminderNotification';\n    createdOn: Scalars['DateTime'];\n    deal: Deal;\n    dealId: Scalars['Int'];\n    expiresInSeconds: Scalars['Int'];\n    id: Scalars['String'];\n    notificationType: Scalars['String'];\n    readOn?: Maybe<Scalars['DateTime']>;\n    user: User;\n  };\n\nexport type DealInput = {\n  blockchain: BlockchainEnum;\n  counterOfferForId?: InputMaybe<Scalars['Int']>;\n  expiration: Scalars['BigInt'];\n  makerErc20s: Array<Scalars['Address']>;\n  makerErc20sAmounts: Array<Scalars['BigInt']>;\n  makerNfts: Array<Scalars['Int']>;\n  makerNftsAmounts: Array<Scalars['BigInt']>;\n  signature?: InputMaybe<Scalars['Signature']>;\n  startTime: Scalars['BigInt'];\n  taker: Scalars['Address'];\n  takerErc20s: Array<Scalars['Address']>;\n  takerErc20sAmounts: Array<Scalars['BigInt']>;\n  takerNfts: Array<Scalars['Int']>;\n  takerNftsAmounts: Array<Scalars['BigInt']>;\n};\n\nexport type DealNotification = Node &\n  Notification & {\n    __typename?: 'DealNotification';\n    createdOn: Scalars['DateTime'];\n    deal: Deal;\n    dealId: Scalars['Int'];\n    eventType: DealEventType;\n    id: Scalars['String'];\n    notificationType: Scalars['String'];\n    readOn?: Maybe<Scalars['DateTime']>;\n    user: User;\n  };\n\nexport type DealReadinessBlocker = {\n  __typename?: 'DealReadinessBlocker';\n  code: DealReadinessBlockerCode;\n  currencyAddress?: Maybe<Scalars['Address']>;\n  currentAmount?: Maybe<Scalars['BigInt']>;\n  message: Scalars['String'];\n  nftId?: Maybe<Scalars['Int']>;\n  requiredAmount?: Maybe<Scalars['BigInt']>;\n  walletAddress?: Maybe<Scalars['Address']>;\n};\n\nexport enum DealReadinessBlockerCode {\n  Funding = 'FUNDING',\n  Lifecycle = 'LIFECYCLE',\n  MakerPermission = 'MAKER_PERMISSION',\n  NftUnavailable = 'NFT_UNAVAILABLE',\n  TakerPermission = 'TAKER_PERMISSION',\n  Unknown = 'UNKNOWN',\n}\n\nexport type DealReadinessResult = {\n  __typename?: 'DealReadinessResult';\n  blockNumber?: Maybe<Scalars['BigInt']>;\n  blockers: Array<DealReadinessBlocker>;\n  canExecute: Scalars['Boolean'];\n  canStartAcceptance: Scalars['Boolean'];\n};\n\nexport type DealSignatureRequest = Deal | SignatureRequest;\n\nexport enum DealSortField {\n  CreatedDate = 'CREATED_DATE',\n  Expiration = 'EXPIRATION',\n  Status = 'STATUS',\n}\n\nexport type DealSortInput = {\n  field: DealSortField;\n  order: Ordering;\n};\n\nexport type Delegation = Node & {\n  __typename?: 'Delegation';\n  contractAddress: Scalars['String'];\n  delegateTo: Scalars['Address'];\n  id: Scalars['String'];\n  nft: Nft;\n  /** The delegate.xyz rights values enabled for this delegate: the zero hash is the full delegation; a Shadow delegation ends in its expiry. */\n  rights: Array<Scalars['Hash']>;\n  timestamp: Scalars['DateTime'];\n};\n\nexport type DelegationConnection = {\n  __typename?: 'DelegationConnection';\n  edges: Array<DelegationEdge>;\n  pageInfo: PageInfo;\n  totalCount: Scalars['Int'];\n};\n\nexport type DelegationEdge = {\n  __typename?: 'DelegationEdge';\n  cursor: Scalars['String'];\n  node: Delegation;\n};\n\nexport type EditUserInput = {\n  about?: InputMaybe<Scalars['String']>;\n  mail?: InputMaybe<Scalars['String']>;\n  url?: InputMaybe<Scalars['String']>;\n  userId: Scalars['Int'];\n  username?: InputMaybe<Scalars['String']>;\n};\n\n/** An edition within a collection. */\nexport type Edition = Node & {\n  __typename?: 'Edition';\n  collection: Collection;\n  collectionId: Scalars['Int'];\n  id: Scalars['String'];\n  image?: Maybe<Asset>;\n  /** Whether any wallet of the authenticated user's account follows this edition. False when anonymous. */\n  isFollowed: Scalars['Boolean'];\n  /**\n   * Deprecated\n   * @deprecated This field is deprecated and will be removed in the future\n   */\n  isWholeCollection: Scalars['Boolean'];\n  name: Scalars['String'];\n  offersEnabled: Scalars['Boolean'];\n  sampleNft?: Maybe<Nft>;\n  slug: Scalars['String'];\n  statistics: EditionStatistics;\n  /** Hidden synthetic trait that backs edition bids. Returns null until the edition has been processed by the edition-traits backfill CLI. */\n  trait?: Maybe<Trait>;\n  traitId?: Maybe<Scalars['Int']>;\n};\n\nexport enum EditionBidTier {\n  High = 'HIGH',\n  Low = 'LOW',\n  Medium = 'MEDIUM',\n}\n\nexport type EditionConnection = {\n  __typename?: 'EditionConnection';\n  edges: Array<EditionEdge>;\n  pageInfo: PageInfo;\n  totalCount: Scalars['Int'];\n};\n\nexport type EditionEdge = {\n  __typename?: 'EditionEdge';\n  cursor: Scalars['String'];\n  node: Edition;\n};\n\nexport type EditionNft = Edition | Nft;\n\nexport type EditionNftConnection = {\n  __typename?: 'EditionNFTConnection';\n  edges: Array<EditionNftEdge>;\n  pageInfo: PageInfo;\n  totalCount: Scalars['Int'];\n};\n\nexport type EditionNftEdge = {\n  __typename?: 'EditionNFTEdge';\n  cursor: Scalars['String'];\n  node: EditionNft;\n};\n\nexport enum EditionSortField {\n  FloorPrice = 'FLOOR_PRICE',\n  HighestBid = 'HIGHEST_BID',\n  LastSale = 'LAST_SALE',\n  Name = 'NAME',\n  RecentlyListed = 'RECENTLY_LISTED',\n}\n\nexport type EditionSortInput = {\n  field: EditionSortField;\n  order: Ordering;\n};\n\nexport type EditionStatistics = {\n  __typename?: 'EditionStatistics';\n  floorPrice?: Maybe<BigIntCurrencyAmount>;\n  highestBid?: Maybe<Order>;\n  lastSale?: Maybe<Sale>;\n  numberOfNftsOwned: Scalars['Int'];\n  supply: Scalars['Int'];\n  uniqueOwners: Scalars['Int'];\n};\n\nexport type EditionStatisticsNumberOfNftsOwnedArgs = {\n  walletAddresses?: InputMaybe<Array<Scalars['Address']>>;\n};\n\nexport type Event = {\n  id: Scalars['String'];\n  timestamp: Scalars['DateTime'];\n};\n\nexport type EventConnection = {\n  __typename?: 'EventConnection';\n  edges: Array<EventEdge>;\n  pageInfo: PageInfo;\n  totalCount: Scalars['Int'];\n};\n\nexport type EventEdge = {\n  __typename?: 'EventEdge';\n  cursor: Scalars['String'];\n  node: Event;\n};\n\n/** Which party of an event `users` must be, as the activity feed shows it: FROM is the party that gives (a seller, a lender funding a loan, a repaying borrower, a maker), TO the one that receives (a buyer, a funded borrower, a repaid lender, a taker). ANY is either. */\nexport enum EventSide {\n  Any = 'ANY',\n  From = 'FROM',\n  To = 'TO',\n}\n\nexport enum EventType {\n  BuyOffer = 'BUY_OFFER',\n  Claim = 'CLAIM',\n  CollectionBuyOffer = 'COLLECTION_BUY_OFFER',\n  LoanAuctioned = 'LOAN_AUCTIONED',\n  LoanBoughtOut = 'LOAN_BOUGHT_OUT',\n  LoanCollectionOffer = 'LOAN_COLLECTION_OFFER',\n  LoanDefaulted = 'LOAN_DEFAULTED',\n  LoanExtended = 'LOAN_EXTENDED',\n  LoanForeclosed = 'LOAN_FORECLOSED',\n  LoanInitiated = 'LOAN_INITIATED',\n  LoanListing = 'LOAN_LISTING',\n  LoanNftOffer = 'LOAN_NFT_OFFER',\n  LoanPartialRefinanced = 'LOAN_PARTIAL_REFINANCED',\n  LoanPartialRefinancedTransfer = 'LOAN_PARTIAL_REFINANCED_TRANSFER',\n  LoanRefinanced = 'LOAN_REFINANCED',\n  LoanRefinancedTransfer = 'LOAN_REFINANCED_TRANSFER',\n  LoanRenegotiated = 'LOAN_RENEGOTIATED',\n  LoanRenegotiatedPayment = 'LOAN_RENEGOTIATED_PAYMENT',\n  LoanRenegotiationOffer = 'LOAN_RENEGOTIATION_OFFER',\n  LoanRepaid = 'LOAN_REPAID',\n  LoanSentToAuction = 'LOAN_SENT_TO_AUCTION',\n  LoanSetOffer = 'LOAN_SET_OFFER',\n  LoanTopedUp = 'LOAN_TOPED_UP',\n  LoanTopUpOffer = 'LOAN_TOP_UP_OFFER',\n  LoanTraitOffer = 'LOAN_TRAIT_OFFER',\n  LoanTrancheRefinanced = 'LOAN_TRANCHE_REFINANCED',\n  LoanTrancheRefinancedTransfer = 'LOAN_TRANCHE_REFINANCED_TRANSFER',\n  Sale = 'SALE',\n  SaleListing = 'SALE_LISTING',\n  TradeExecuted = 'TRADE_EXECUTED',\n  Transfer = 'TRANSFER',\n}\n\nexport enum ExclusiveListingType {\n  FloorPrice = 'FLOOR_PRICE',\n  InLoan = 'IN_LOAN',\n  LoanDeal = 'LOAN_DEAL',\n  LowPrice = 'LOW_PRICE',\n  Stealth = 'STEALTH',\n}\n\nexport type ExposedNft = {\n  __typename?: 'ExposedNft';\n  nft: Nft;\n  priceUsd?: Maybe<Scalars['Float']>;\n};\n\nexport type ExtraSeaportData = {\n  __typename?: 'ExtraSeaportData';\n  criteriaProof?: Maybe<Array<Scalars['Hex']>>;\n  extraData: Scalars['Hex'];\n};\n\nexport type FloatStatHistory = {\n  __typename?: 'FloatStatHistory';\n  timestamp: Scalars['DateTime'];\n  value: Scalars['Float'];\n};\n\nexport type ForWalletsInput = {\n  borrowersWallets?: InputMaybe<Array<Scalars['Address']>>;\n  buyOfferMakersWallets?: InputMaybe<Array<Scalars['Address']>>;\n  lendersWallets?: InputMaybe<Array<Scalars['Address']>>;\n  loanOfferLendersWallets?: InputMaybe<Array<Scalars['Address']>>;\n  ownersWallets?: InputMaybe<Array<Scalars['Address']>>;\n};\n\nexport type FulfillManyBidOrdersCalldata = {\n  __typename?: 'FulfillManyBidOrdersCalldata';\n  calldata: Scalars['Hex'];\n  marketPlaceAddress: Scalars['Address'];\n  nftIds: Array<Scalars['Int']>;\n};\n\nexport type FulfillManyOrdersCalldata = {\n  __typename?: 'FulfillManyOrdersCalldata';\n  calldata: Scalars['Hex'];\n  marketPlaceAddress: Scalars['Address'];\n};\n\n/** A collector's gallery of works, their own or anyone's; each work says whether the account holds it. */\nexport type Gallery = Node & {\n  __typename?: 'Gallery';\n  /** Empty when the gallery keeps its style's own colour mode. */\n  colorMode?: Maybe<GalleryColorMode>;\n  /** The first work, for the gallery's card. */\n  coverNft?: Maybe<Nft>;\n  createdAt: Scalars['DateTime'];\n  description: Scalars['String'];\n  id: Scalars['String'];\n  isPublished: Scalars['Boolean'];\n  name: Scalars['String'];\n  /** The layout a visitor first sees. */\n  openingView: GalleryView;\n  owner: Scalars['Address'];\n  /** Empty when the gallery keeps its style's own palette. */\n  palette?: Maybe<GalleryPalette>;\n  publishedAt?: Maybe<Scalars['DateTime']>;\n  slug: Scalars['String'];\n  style: GalleryStyle;\n  updatedAt: Scalars['DateTime'];\n  /** Whether visitors get a switch between light and dark. */\n  visitorModeSwitch: Scalars['Boolean'];\n  workCount: Scalars['Int'];\n  /** The works in the collector's order; at most 200. */\n  works: Array<GalleryWork>;\n};\n\n/** Whether a gallery's palette is shown light or dark. */\nexport enum GalleryColorMode {\n  Dark = 'DARK',\n  Light = 'LIGHT',\n}\n\n/** Everything a collector writes into a gallery. The works are in the order they are shown, and may be anyone's indexed NFTs. */\nexport type GalleryInput = {\n  /** Empty to keep the style's own colour mode. */\n  colorMode?: InputMaybe<GalleryColorMode>;\n  description?: Scalars['String'];\n  name: Scalars['String'];\n  /** The layout a visitor first sees. */\n  openingView?: GalleryView;\n  /** Empty to keep the style's own palette. */\n  palette?: InputMaybe<GalleryPalette>;\n  style: GalleryStyle;\n  /** Whether visitors get a switch between light and dark. */\n  visitorModeSwitch?: Scalars['Boolean'];\n  works: Array<GalleryWorkInput>;\n};\n\n/** The colours a gallery is shown in, each with a light and a dark version. */\nexport enum GalleryPalette {\n  Candy = 'CANDY',\n  Ink = 'INK',\n  Paper = 'PAPER',\n  Phosphor = 'PHOSPHOR',\n  Slate = 'SLATE',\n}\n\n/** The typography and colour preset a gallery is shown in. */\nexport enum GalleryStyle {\n  Elegant = 'ELEGANT',\n  Gondi = 'GONDI',\n  Pop = 'POP',\n  Terminal = 'TERMINAL',\n  WhiteCube = 'WHITE_CUBE',\n}\n\n/** How a gallery's works are laid out: one at a time, or all in a grid. */\nexport enum GalleryView {\n  Grid = 'GRID',\n  Slider = 'SLIDER',\n}\n\n/** One work in a gallery, in the collector's order. */\nexport type GalleryWork = {\n  __typename?: 'GalleryWork';\n  /** The title of a chapter that opens at this work and runs until the next work that opens one; empty when the work continues the chapter before it. */\n  chapter: Scalars['String'];\n  /** Whether the gallery's account holds the work now: from any of its wallets, as an ERC1155 balance, or as the borrower of an active loan on it. A gallery can show anyone's works, so this only marks them. */\n  heldByOwner: Scalars['Boolean'];\n  nft: Nft;\n  note: Scalars['String'];\n  position: Scalars['Int'];\n};\n\n/** One work in a gallery, with the collector's note. */\nexport type GalleryWorkInput = {\n  /** The title of a chapter that opens at this work and runs until the next work that opens one; empty when the work continues the chapter before it. */\n  chapter?: Scalars['String'];\n  nftId: Scalars['Int'];\n  note?: Scalars['String'];\n};\n\nexport type GlobalSearchResult = {\n  id: Scalars['String'];\n};\n\nexport type GlobalSearchResultAccount = GlobalSearchResult & {\n  __typename?: 'GlobalSearchResultAccount';\n  id: Scalars['String'];\n  user: User;\n};\n\nexport type GlobalSearchResultArtist = GlobalSearchResult & {\n  __typename?: 'GlobalSearchResultArtist';\n  artist: Artist;\n  id: Scalars['String'];\n};\n\nexport type GlobalSearchResultCollection = GlobalSearchResult & {\n  __typename?: 'GlobalSearchResultCollection';\n  collection: Collection;\n  id: Scalars['String'];\n};\n\nexport type GlobalSearchResultNft = GlobalSearchResult & {\n  __typename?: 'GlobalSearchResultNFT';\n  id: Scalars['String'];\n  nft: Nft;\n};\n\nexport type GlobalSearchV2ResultAccount = {\n  __typename?: 'GlobalSearchV2ResultAccount';\n  activeBorrowedLoansCount: Scalars['Int'];\n  activeLentSourcesCount: Scalars['Int'];\n  ensName: Scalars['String'];\n  heldNftsCount: Scalars['Int'];\n  id: Scalars['Int'];\n  openseaName: Scalars['String'];\n  username: Scalars['String'];\n  walletAddress: Scalars['String'];\n};\n\nexport type GlobalSearchV2ResultArtist = {\n  __typename?: 'GlobalSearchV2ResultArtist';\n  artistType?: Maybe<Scalars['String']>;\n  artworksCount: Scalars['Int'];\n  id: Scalars['Int'];\n  imageCacheUrl?: Maybe<Scalars['String']>;\n  imageContentType?: Maybe<Scalars['String']>;\n  imageData?: Maybe<Scalars['String']>;\n  name: Scalars['String'];\n  slug: Scalars['String'];\n  volume1d: Scalars['Float'];\n};\n\nexport type GlobalSearchV2ResultCollection = {\n  __typename?: 'GlobalSearchV2ResultCollection';\n  blockchain: Scalars['String'];\n  contractAddress: Scalars['String'];\n  floorPriceAmount?: Maybe<Scalars['Float']>;\n  floorPriceCurrencyAddress?: Maybe<Scalars['String']>;\n  floorPriceCurrencyDecimals?: Maybe<Scalars['Int']>;\n  floorPriceCurrencySymbol?: Maybe<Scalars['String']>;\n  id: Scalars['Int'];\n  imageCacheUrl?: Maybe<Scalars['String']>;\n  imageContentType?: Maybe<Scalars['String']>;\n  imageData?: Maybe<Scalars['String']>;\n  name?: Maybe<Scalars['String']>;\n  slug: Scalars['String'];\n};\n\nexport type GlobalSearchV2ResultEdition = {\n  __typename?: 'GlobalSearchV2ResultEdition';\n  blockchain: Scalars['String'];\n  collectionImageCacheUrl?: Maybe<Scalars['String']>;\n  collectionImageData?: Maybe<Scalars['String']>;\n  collectionName?: Maybe<Scalars['String']>;\n  collectionSlug: Scalars['String'];\n  id: Scalars['Int'];\n  imageCacheUrl?: Maybe<Scalars['String']>;\n  imageContentType?: Maybe<Scalars['String']>;\n  imageData?: Maybe<Scalars['String']>;\n  name: Scalars['String'];\n  slug: Scalars['String'];\n};\n\nexport type GlobalSearchV2ResultNft = {\n  __typename?: 'GlobalSearchV2ResultNFT';\n  blockchain: Scalars['String'];\n  collectionId: Scalars['Int'];\n  collectionImageCacheUrl?: Maybe<Scalars['String']>;\n  collectionImageData?: Maybe<Scalars['String']>;\n  collectionName?: Maybe<Scalars['String']>;\n  collectionSlug: Scalars['String'];\n  contractAddress: Scalars['String'];\n  erc20Balances: Array<SearchErc20Balance>;\n  id: Scalars['Int'];\n  imageCacheUrl?: Maybe<Scalars['String']>;\n  imageContentType?: Maybe<Scalars['String']>;\n  imageData?: Maybe<Scalars['String']>;\n  isVault: Scalars['Boolean'];\n  name?: Maybe<Scalars['String']>;\n  nftId: Scalars['String'];\n  owner?: Maybe<Scalars['String']>;\n  priceCurrencyAddress?: Maybe<Scalars['String']>;\n  priceCurrencyDecimals?: Maybe<Scalars['Int']>;\n  priceCurrencySymbol?: Maybe<Scalars['String']>;\n  priceValue?: Maybe<Scalars['BigInt']>;\n  tokenId: Scalars['String'];\n  wrappedCounts: Array<Scalars['Int']>;\n  wrappedImageCacheUrls: Array<Scalars['String']>;\n  wrappedImageContentTypes: Array<Scalars['String']>;\n  wrappedImageData: Array<Scalars['String']>;\n};\n\nexport type GlobalSearchV2ResultNftGlobalSearchV2ResultCollectionGlobalSearchV2ResultArtistGlobalSearchV2ResultAccount =\n\n    | GlobalSearchV2ResultAccount\n    | GlobalSearchV2ResultArtist\n    | GlobalSearchV2ResultCollection\n    | GlobalSearchV2ResultNft;\n\nexport type GlobalSearchV2Results = {\n  __typename?: 'GlobalSearchV2Results';\n  accounts: Array<GlobalSearchV2ResultAccount>;\n  artists: Array<GlobalSearchV2ResultArtist>;\n  collections: Array<GlobalSearchV2ResultCollection>;\n  editions: Array<GlobalSearchV2ResultEdition>;\n  nfts: Array<GlobalSearchV2ResultNft>;\n};\n\nexport type Holder = {\n  __typename?: 'Holder';\n  /** ETH spent buying items of this collection since the given timestamp, defaulting to the last 90 days. */\n  acquired: Scalars['Float'];\n  /** The holder's last 10 sales in this collection since the given timestamp (defaulting to its whole history), newest first; the holder bought when it is the receiver and sold when it is the sender. */\n  activity: Array<Sale>;\n  address: Scalars['Address'];\n  /** On-chain account type of the holder address (EOA, EIP-7702 delegated EOA, contract wallet, or other contract), null while not yet classified. */\n  addressType?: Maybe<AddressType>;\n  id: Scalars['String'];\n  name?: Maybe<Scalars['String']>;\n  /** Collection-scoped behavior types of the holder, recomputed daily. */\n  nftOwnerBehaviorTypes: Array<NftOwnerBehaviorType>;\n  ownedAmount: Scalars['Int'];\n  previewItems: Array<Nft>;\n  profilePictureUrl?: Maybe<Scalars['String']>;\n  /** ETH received selling items of this collection since the given timestamp, defaulting to the last 90 days. */\n  sold: Scalars['Float'];\n};\n\nexport type HolderAcquiredArgs = {\n  since?: InputMaybe<Scalars['DateTime']>;\n};\n\nexport type HolderActivityArgs = {\n  since?: InputMaybe<Scalars['DateTime']>;\n};\n\nexport type HolderSoldArgs = {\n  since?: InputMaybe<Scalars['DateTime']>;\n};\n\nexport type HolderConnection = {\n  __typename?: 'HolderConnection';\n  edges: Array<HolderEdge>;\n  pageInfo: PageInfo;\n  totalCount: Scalars['Int'];\n};\n\nexport type HolderEdge = {\n  __typename?: 'HolderEdge';\n  cursor: Scalars['String'];\n  node: Holder;\n};\n\nexport type Interval = {\n  max?: InputMaybe<Scalars['Float']>;\n  min?: InputMaybe<Scalars['Float']>;\n};\n\nexport type ItemLoanOfferBook = {\n  __typename?: 'ItemLoanOfferBook';\n  complete: Scalars['Boolean'];\n  currency?: Maybe<Currency>;\n  durationCounts: Array<LoanBookDurationCount>;\n  evaluatedAt: Scalars['DateTime'];\n  options: ItemLoanOptionConnection;\n  reason?: Maybe<Scalars['String']>;\n  sourceCount: Scalars['Int'];\n};\n\nexport type ItemLoanOption = {\n  __typename?: 'ItemLoanOption';\n  additionalCount: Scalars['Int'];\n  allocations: Array<LoanOptionAllocation>;\n  duration: Scalars['BigInt'];\n  eaprDenominator: Scalars['BigInt'];\n  eaprNumerator: Scalars['BigInt'];\n  grossPrincipal: Scalars['BigInt'];\n  group: Scalars['String'];\n  id: Scalars['String'];\n  netPrincipal: Scalars['BigInt'];\n  roles: Array<Scalars['String']>;\n  upfrontFee: Scalars['BigInt'];\n};\n\nexport type ItemLoanOptionConnection = {\n  __typename?: 'ItemLoanOptionConnection';\n  edges: Array<ItemLoanOptionEdge>;\n  pageInfo: PageInfo;\n  totalCount: Scalars['Int'];\n};\n\nexport type ItemLoanOptionEdge = {\n  __typename?: 'ItemLoanOptionEdge';\n  cursor: Scalars['String'];\n  node: ItemLoanOption;\n};\n\nexport enum ItemType {\n  Edition = 'EDITION',\n  OneOfOne = 'ONE_OF_ONE',\n  Pfp = 'PFP',\n  Series = 'SERIES',\n}\n\nexport enum ItemVisitType {\n  Account = 'ACCOUNT',\n  Artist = 'ARTIST',\n  Collection = 'COLLECTION',\n  Nft = 'NFT',\n}\n\nexport enum LenderRankingMetric {\n  Earnings = 'EARNINGS',\n  LowestDefaultRate = 'LOWEST_DEFAULT_RATE',\n  NetEapr = 'NET_EAPR',\n  OutstandingPrincipal = 'OUTSTANDING_PRINCIPAL',\n}\n\nexport enum LenderRankingPeriod {\n  CalendarYear = 'CALENDAR_YEAR',\n  Last_30Days = 'LAST_30_DAYS',\n  Last_90Days = 'LAST_90_DAYS',\n  Last_180Days = 'LAST_180_DAYS',\n}\n\nexport type LendingMarketCurrencyAmount = {\n  __typename?: 'LendingMarketCurrencyAmount';\n  /** Outstanding principal in the currency's smallest native units. */\n  amount: Scalars['BigInt'];\n  /** Principal currency address. */\n  currencyAddress: Scalars['Address'];\n  /** Principal currency decimals. */\n  decimals: Scalars['Int'];\n  /** Principal currency symbol. */\n  symbol: Scalars['String'];\n  /** USD value in micro-USD; null when the currency rate is unavailable. */\n  usdAmount?: Maybe<Scalars['BigInt']>;\n};\n\nexport enum LendingMarketPeriod {\n  Days_7 = 'DAYS_7',\n  Days_30 = 'DAYS_30',\n  Hours_24 = 'HOURS_24',\n  /** @deprecated Use HOURS_24, a rolling 24-hour window. */\n  Today = 'TODAY',\n}\n\nexport type LendingMarketPeriodStatistics = {\n  __typename?: 'LendingMarketPeriodStatistics';\n  /** Percent change from the matching prior window; null if either total is unavailable or the prior total is zero. */\n  accruedDeltaPct?: Maybe<Scalars['Float']>;\n  /**\n   * Current lender interest accrual in micro-USD per second for Today only; null for 24H/7D/30D or unavailable conversion.\n   * @deprecated Only serves the deprecated TODAY period; HOURS_24, DAYS_7 and DAYS_30 refresh with the poll.\n   */\n  accruedRateUsdPerSecond?: Maybe<Scalars['BigInt']>;\n  /** Lender interest accrued in the window, in micro-USD; null if conversion is unavailable. */\n  accruedUsd?: Maybe<Scalars['BigInt']>;\n  /** 25th percentile effective APR at loan initiation, in basis points; null when no loan has an available APR. */\n  eaprP25Bps?: Maybe<Scalars['Int']>;\n  /** 75th percentile effective APR at loan initiation, in basis points; null when no loan has an available APR. */\n  eaprP75Bps?: Maybe<Scalars['Int']>;\n  /** Median effective APR at loan initiation, in basis points; null when no loan has an available APR. */\n  medianEaprBps?: Maybe<Scalars['Int']>;\n  /** Median effective APR minus the matching prior window median, in basis points; null if either median is unavailable. */\n  medianEaprDeltaBps?: Maybe<Scalars['Int']>;\n  /** Distinct loans initiated in the window; refinances are excluded. */\n  originatedCount: Scalars['Int'];\n  /** Percent change in originated USD from the matching prior window; null if either total is unavailable or the prior total is zero. */\n  originatedDeltaPct?: Maybe<Scalars['Float']>;\n  /** Principal of loans initiated in the window at current USD rates, in micro-USD; null if conversion is unavailable. */\n  originatedUsd?: Maybe<Scalars['BigInt']>;\n  /** Rolling 24 hours, 7 days, or 30 days; TODAY (deprecated) is the elapsed UTC day. */\n  period: LendingMarketPeriod;\n  /** Sales recorded in the window, priced or not. */\n  salesCount: Scalars['Int'];\n  /** Percent change in sales value from the matching prior window; null if either total is unavailable or the prior total is zero. */\n  salesVolumeDeltaPct?: Maybe<Scalars['Float']>;\n  /** Value of the sales in the window at current USD rates, in micro-USD. A sale in a currency with no current rate is left out of the value but counted in salesCount; null if USD conversion is unavailable. */\n  salesVolumeUsd?: Maybe<Scalars['BigInt']>;\n};\n\nexport type LendingMarketPulse = {\n  __typename?: 'LendingMarketPulse';\n  /** Projected net lender interest for the next 24 hours at current terms, capped at loan expiry, in micro-USD. This is not realised interest. Null if any current currency rate is unavailable. */\n  accrualPerDayUsd?: Maybe<Scalars['BigInt']>;\n  /** Net lender interest since UTC midnight, capped at loan expiry, in micro-USD. Null if any current currency rate is unavailable. */\n  accruedTodayUsd?: Maybe<Scalars['BigInt']>;\n  /** UTC snapshot time. */\n  asOf: Scalars['DateTime'];\n  /** Distinct loans originated during the rolling 24 hours. */\n  newLoans24h: Scalars['Int'];\n  /** Outstanding principal from latest collection samples, in micro-USD. Null if any current currency rate is unavailable. */\n  outstandingPrincipalUsd?: Maybe<Scalars['BigInt']>;\n  /** Net lender interest paid in the rolling 30 days, valued at payment-time rates, in micro-USD. Null if any rate is unavailable. */\n  paidInterest30dUsd?: Maybe<Scalars['BigInt']>;\n  /** Rolling 24H/7D/30D and deprecated Today activity at the same snapshot time. */\n  periods: Array<LendingMarketPeriodStatistics>;\n  /** Outstanding principal by currency from latest collection samples. */\n  principalByCurrency: Array<LendingMarketCurrencyAmount>;\n};\n\n/** Active loans in a set of currencies, all measured at `asOf`. Amounts are raw units of those currencies, so the set shares one decimals value. `accruedInterest` includes interest carried over from refinances and stops at each loan's expiry. `interestAccrualPerYear` is the rate it grows at, over the loans still inside their term, which lets a client extrapolate `accruedInterest` past `asOf`. */\nexport type LendingMarketStatistics = {\n  __typename?: 'LendingMarketStatistics';\n  accruedInterest: Scalars['BigInt'];\n  activeLoanCount: Scalars['Int'];\n  asOf: Scalars['DateTime'];\n  avgDurationSeconds: Scalars['Int'];\n  interestAccrualPerYear: Scalars['BigInt'];\n  outstandingPrincipal: Scalars['BigInt'];\n  wavgAprBps: Scalars['Int'];\n};\n\nexport type LinkWalletAcceptedNotification = Node &\n  Notification & {\n    __typename?: 'LinkWalletAcceptedNotification';\n    counterpartyWalletAddress: Scalars['Address'];\n    createdOn: Scalars['DateTime'];\n    id: Scalars['String'];\n    notificationType: Scalars['String'];\n    readOn?: Maybe<Scalars['DateTime']>;\n    user: User;\n  };\n\nexport type LinkWalletRequestedNotification = Node &\n  Notification & {\n    __typename?: 'LinkWalletRequestedNotification';\n    counterpartyWalletAddress: Scalars['Address'];\n    createdOn: Scalars['DateTime'];\n    id: Scalars['String'];\n    notificationType: Scalars['String'];\n    readOn?: Maybe<Scalars['DateTime']>;\n    user: User;\n  };\n\nexport type LinkedWallets = Node & {\n  __typename?: 'LinkedWallets';\n  id: Scalars['String'];\n  pending: Scalars['Boolean'];\n  shouldAccept: Scalars['Boolean'];\n  walletAddress: Scalars['String'];\n};\n\nexport type Listing = Node & {\n  __typename?: 'Listing';\n  createdDate: Scalars['DateTime'];\n  desiredDuration?: Maybe<Scalars['Int']>;\n  desiredPrincipalAddress?: Maybe<Scalars['Address']>;\n  expirationDate: Scalars['DateTime'];\n  id: Scalars['String'];\n  marketplaceName: MarketplaceEnum;\n  nft: Nft;\n  user: User;\n};\n\nexport type ListingConnection = {\n  __typename?: 'ListingConnection';\n  edges: Array<ListingEdge>;\n  pageInfo: PageInfo;\n  totalCount: Scalars['Int'];\n};\n\nexport type ListingEdge = {\n  __typename?: 'ListingEdge';\n  cursor: Scalars['String'];\n  node: Listing;\n};\n\nexport type Loan = {\n  activities: Array<LoanActivity>;\n  address: Scalars['Address'];\n  borrowerAddress: Scalars['Address'];\n  borrowerName?: Maybe<Scalars['String']>;\n  borrowerProfilePictureUrl?: Maybe<Scalars['String']>;\n  contractStartTime: Scalars['DateTime'];\n  currency: Currency;\n  duration: Scalars['BigInt'];\n  id: Scalars['String'];\n  indexInBlock: Scalars['Int'];\n  loanId: Scalars['Int'];\n  /**\n   * Deprecated field. Use offerIds to return loan offer ids instead.\n   * @deprecated Use offerIds to return loan offer ids instead.\n   */\n  offer: Offer;\n  offerIds: Array<Scalars['String']>;\n  previousLoan?: Maybe<Loan>;\n  principalAddress: Scalars['Address'];\n  protocolFee: Scalars['BigInt'];\n  repaidActivity?: Maybe<LoanRepaid>;\n  repaymentTime?: Maybe<Scalars['DateTime']>;\n  replacementLoan?: Maybe<Loan>;\n  startTime: Scalars['DateTime'];\n  status: Scalars['String'];\n  timestamp: Scalars['DateTime'];\n  txHash: Scalars['Hash'];\n};\n\nexport type LoanActivitiesStatisticsByMonth = {\n  __typename?: 'LoanActivitiesStatisticsByMonth';\n  count: Array<Scalars['Int']>;\n  outstanding: Array<Scalars['BigInt']>;\n};\n\nexport type LoanActivity = {\n  activityType: Scalars['String'];\n  eventType: Scalars['String'];\n  id: Scalars['String'];\n  indexInBlock: Scalars['Int'];\n  loan: Loan;\n  loanId: Scalars['String'];\n  multiSourceLoanHistory: MultiSourceLoanHistory;\n  nextActivity?: Maybe<LoanActivity>;\n  prevActivity?: Maybe<LoanActivity>;\n  timestamp: Scalars['DateTime'];\n  txHash: Scalars['Hash'];\n};\n\nexport type LoanActivityConnection = {\n  __typename?: 'LoanActivityConnection';\n  edges: Array<LoanActivityEdge>;\n  pageInfo: PageInfo;\n  totalCount: Scalars['Int'];\n};\n\nexport type LoanActivityEdge = {\n  __typename?: 'LoanActivityEdge';\n  cursor: Scalars['String'];\n  node: LoanActivity;\n};\n\nexport enum LoanActivitySortField {\n  Timestamp = 'TIMESTAMP',\n}\n\nexport type LoanActivitySortInput = {\n  field: LoanActivitySortField;\n  order: Ordering;\n};\n\nexport enum LoanActivityType {\n  LoanAuctioned = 'LOAN_AUCTIONED',\n  LoanExtended = 'LOAN_EXTENDED',\n  LoanForeclosed = 'LOAN_FORECLOSED',\n  LoanInitiated = 'LOAN_INITIATED',\n  LoanRefinanced = 'LOAN_REFINANCED',\n  LoanRefinancedFromOffers = 'LOAN_REFINANCED_FROM_OFFERS',\n  LoanRepaid = 'LOAN_REPAID',\n  LoanSentToAuction = 'LOAN_SENT_TO_AUCTION',\n}\n\nexport type LoanAuctioned = Event &\n  LoanActivity &\n  LoanEvent &\n  Node & {\n    __typename?: 'LoanAuctioned';\n    activityType: Scalars['String'];\n    eventType: Scalars['String'];\n    id: Scalars['String'];\n    indexInBlock: Scalars['Int'];\n    loan: Loan;\n    loanId: Scalars['String'];\n    loanPayments: Array<LoanPayment>;\n    multiSourceLoanHistory: MultiSourceLoanHistory;\n    nextActivity?: Maybe<LoanActivity>;\n    prevActivity?: Maybe<LoanActivity>;\n    timestamp: Scalars['DateTime'];\n    totalAuctioned: Scalars['BigInt'];\n    txHash: Scalars['Hash'];\n    withBuyout: Scalars['Boolean'];\n  };\n\nexport type LoanAuctionedNotification = Node &\n  Notification & {\n    __typename?: 'LoanAuctionedNotification';\n    auction: Auction;\n    auctionId: Scalars['String'];\n    createdOn: Scalars['DateTime'];\n    id: Scalars['String'];\n    loan: MultiSourceLoan;\n    loanId: Scalars['String'];\n    notificationType: Scalars['String'];\n    readOn?: Maybe<Scalars['DateTime']>;\n    user: User;\n  };\n\nexport type LoanBookDurationCount = {\n  __typename?: 'LoanBookDurationCount';\n  count: Scalars['Int'];\n  duration: Scalars['BigInt'];\n};\n\n/** A listing a GONDI loan can buy, with the offer that finances it. */\nexport type LoanDeal = {\n  __typename?: 'LoanDeal';\n  /** The offer's net principal capped at the price, in USD. */\n  loanUsd: Scalars['Float'];\n  /** The loan as a share of the price, in basis points. */\n  ltvBps: Scalars['Int'];\n  /** The open item or collection offer that finances it. */\n  offer: Offer;\n  order: Order;\n};\n\n/** Whether loan deals are grouped by contract or wrap family. */\nexport enum LoanDealGrouping {\n  Collection = 'COLLECTION',\n  WrapFamily = 'WRAP_FAMILY',\n}\n\n/** How the loan deals feed ranks the listings it returns. */\nexport enum LoanDealRanking {\n  HighestLtv = 'HIGHEST_LTV',\n  LargestLoan = 'LARGEST_LOAN',\n}\n\nexport type LoanDefaultReminderNotification = Node &\n  Notification & {\n    __typename?: 'LoanDefaultReminderNotification';\n    createdOn: Scalars['DateTime'];\n    defaultsInHours: Scalars['Int'];\n    id: Scalars['String'];\n    loan: MultiSourceLoan;\n    loanId: Scalars['String'];\n    notificationType: Scalars['String'];\n    readOn?: Maybe<Scalars['DateTime']>;\n    user: User;\n  };\n\nexport type LoanDefaulted = Event &\n  LoanEvent &\n  Node & {\n    __typename?: 'LoanDefaulted';\n    eventType: Scalars['String'];\n    id: Scalars['String'];\n    loan: Loan;\n    loanId: Scalars['String'];\n    timestamp: Scalars['DateTime'];\n  };\n\nexport type LoanDefaultedNotification = Node &\n  Notification & {\n    __typename?: 'LoanDefaultedNotification';\n    createdOn: Scalars['DateTime'];\n    id: Scalars['String'];\n    loan: MultiSourceLoan;\n    loanId: Scalars['String'];\n    notificationType: Scalars['String'];\n    readOn?: Maybe<Scalars['DateTime']>;\n    user: User;\n  };\n\nexport type LoanEvent = {\n  eventType: Scalars['String'];\n  id: Scalars['String'];\n  loan: Loan;\n  loanId: Scalars['String'];\n  timestamp: Scalars['DateTime'];\n};\n\nexport type LoanEventConnection = {\n  __typename?: 'LoanEventConnection';\n  edges: Array<LoanEventEdge>;\n  pageInfo: PageInfo;\n  totalCount: Scalars['Int'];\n};\n\nexport type LoanEventEdge = {\n  __typename?: 'LoanEventEdge';\n  cursor: Scalars['String'];\n  node: LoanEvent;\n};\n\nexport enum LoanEventSortField {\n  PrincipalAmount = 'PRINCIPAL_AMOUNT',\n  Timestamp = 'TIMESTAMP',\n}\n\nexport type LoanEventSortInput = {\n  field: LoanEventSortField;\n  order: Ordering;\n};\n\nexport enum LoanEventType {\n  LoanAuctioned = 'LOAN_AUCTIONED',\n  LoanBoughtOut = 'LOAN_BOUGHT_OUT',\n  LoanDefaulted = 'LOAN_DEFAULTED',\n  LoanExtended = 'LOAN_EXTENDED',\n  LoanForeclosed = 'LOAN_FORECLOSED',\n  LoanInitiated = 'LOAN_INITIATED',\n  LoanRefinanced = 'LOAN_REFINANCED',\n  LoanRenegotiated = 'LOAN_RENEGOTIATED',\n  LoanRepaid = 'LOAN_REPAID',\n  LoanSentToAuction = 'LOAN_SENT_TO_AUCTION',\n  LoanTopedUp = 'LOAN_TOPED_UP',\n}\n\nexport type LoanExtended = Event &\n  LoanActivity &\n  LoanEvent &\n  Node & {\n    __typename?: 'LoanExtended';\n    activityType: Scalars['String'];\n    eventType: Scalars['String'];\n    id: Scalars['String'];\n    indexInBlock: Scalars['Int'];\n    loan: Loan;\n    loanId: Scalars['String'];\n    multiSourceLoanHistory: MultiSourceLoanHistory;\n    nextActivity?: Maybe<LoanActivity>;\n    prevActivity?: Maybe<LoanActivity>;\n    timestamp: Scalars['DateTime'];\n    txHash: Scalars['Hash'];\n  };\n\nexport type LoanExtendedNotification = Node &\n  Notification & {\n    __typename?: 'LoanExtendedNotification';\n    createdOn: Scalars['DateTime'];\n    id: Scalars['String'];\n    newHistory: MultiSourceLoanHistory;\n    newHistoryId: Scalars['String'];\n    notificationType: Scalars['String'];\n    previousHistory: MultiSourceLoanHistory;\n    previousHistoryId: Scalars['String'];\n    readOn?: Maybe<Scalars['DateTime']>;\n    user: User;\n  };\n\nexport type LoanForeclosed = Event &\n  LoanActivity &\n  LoanEvent &\n  Node & {\n    __typename?: 'LoanForeclosed';\n    activityType: Scalars['String'];\n    eventType: Scalars['String'];\n    id: Scalars['String'];\n    indexInBlock: Scalars['Int'];\n    loan: Loan;\n    loanId: Scalars['String'];\n    multiSourceLoanHistory: MultiSourceLoanHistory;\n    nextActivity?: Maybe<LoanActivity>;\n    prevActivity?: Maybe<LoanActivity>;\n    timestamp: Scalars['DateTime'];\n    txHash: Scalars['Hash'];\n  };\n\n/** A single loan origination used to build a collection loans history. */\nexport type LoanHistoryItem = {\n  __typename?: 'LoanHistoryItem';\n  /** Currency the loan principal is denominated in. */\n  currency: Currency;\n  loanId: Scalars['String'];\n  timestamp: Scalars['DateTime'];\n  /** Raw principal amount in the loan's own currency. */\n  value: Scalars['BigInt'];\n};\n\nexport type LoanInitiated = Event &\n  LoanActivity &\n  LoanEvent &\n  Node & {\n    __typename?: 'LoanInitiated';\n    activityType: Scalars['String'];\n    eventType: Scalars['String'];\n    id: Scalars['String'];\n    indexInBlock: Scalars['Int'];\n    loan: Loan;\n    loanId: Scalars['String'];\n    multiSourceLoanHistory: MultiSourceLoanHistory;\n    nextActivity?: Maybe<LoanActivity>;\n    prevActivity?: Maybe<LoanActivity>;\n    timestamp: Scalars['DateTime'];\n    txHash: Scalars['Hash'];\n  };\n\nexport type LoanInitiatedNotification = Node &\n  Notification & {\n    __typename?: 'LoanInitiatedNotification';\n    aprBps: Scalars['BigInt'];\n    createdOn: Scalars['DateTime'];\n    duration: Scalars['BigInt'];\n    id: Scalars['String'];\n    loan: MultiSourceLoan;\n    loanId: Scalars['String'];\n    notificationType: Scalars['String'];\n    principalAmount: Scalars['BigInt'];\n    readOn?: Maybe<Scalars['DateTime']>;\n    user: User;\n  };\n\n/** Loan listing created event */\nexport type LoanListingEvent = Event &\n  Node & {\n    __typename?: 'LoanListingEvent';\n    createdDate: Scalars['DateTime'];\n    desiredDuration?: Maybe<Scalars['Int']>;\n    desiredPrincipalAddress?: Maybe<Scalars['Address']>;\n    expirationDate: Scalars['DateTime'];\n    id: Scalars['String'];\n    marketplaceName: MarketplaceEnum;\n    nft: Nft;\n    timestamp: Scalars['DateTime'];\n    user: User;\n  };\n\nexport type LoanOfferCompetitionPreview = {\n  __typename?: 'LoanOfferCompetitionPreview';\n  complete: Scalars['Boolean'];\n  qualifies: Scalars['Boolean'];\n  reason?: Maybe<Scalars['String']>;\n  references: Array<LoanOfferCompetitionReference>;\n  replacementIds: Array<Scalars['String']>;\n};\n\nexport type LoanOfferCompetitionReference = {\n  __typename?: 'LoanOfferCompetitionReference';\n  maximumEaprDenominator: Scalars['BigInt'];\n  maximumEaprNumerator: Scalars['BigInt'];\n  optionId: Scalars['String'];\n  requiredNetPrincipal: Scalars['BigInt'];\n  sourceIds: Array<Scalars['String']>;\n};\n\nexport type LoanOfferPublicationInput = {\n  replacementIds?: Array<Scalars['String']>;\n};\n\nexport type LoanOptionAllocation = {\n  __typename?: 'LoanOptionAllocation';\n  amount: Scalars['BigInt'];\n  fee: Scalars['BigInt'];\n  interest: Scalars['BigInt'];\n  offer?: Maybe<SingleNftOfferCollectionOffer>;\n  renegotiation?: Maybe<Renegotiation>;\n};\n\nexport type LoanPayment = Node & {\n  __typename?: 'LoanPayment';\n  accruedInterest: Scalars['BigInt'];\n  activityId: Scalars['String'];\n  destination: Scalars['Address'];\n  id: Scalars['String'];\n  pendingInterest: Scalars['BigInt'];\n  principalAddress: Scalars['Address'];\n  principalAmount: Scalars['BigInt'];\n  protocolFee: Scalars['BigInt'];\n  source: Scalars['Address'];\n};\n\nexport type LoanRefinanced = Event &\n  LoanActivity &\n  LoanEvent &\n  Node & {\n    __typename?: 'LoanRefinanced';\n    activityType: Scalars['String'];\n    addedNewTranche: Scalars['Boolean'];\n    eventType: Scalars['String'];\n    id: Scalars['String'];\n    indexInBlock: Scalars['Int'];\n    isRenegotiation: Scalars['Boolean'];\n    loan: Loan;\n    loanId: Scalars['String'];\n    multiSourceLoanHistory: MultiSourceLoanHistory;\n    nextActivity?: Maybe<LoanActivity>;\n    prevActivity?: Maybe<LoanActivity>;\n    timestamp: Scalars['DateTime'];\n    txHash: Scalars['Hash'];\n  };\n\nexport type LoanRefinancedFromOffers = Event &\n  LoanActivity &\n  LoanEvent &\n  Node & {\n    __typename?: 'LoanRefinancedFromOffers';\n    activityType: Scalars['String'];\n    eventType: Scalars['String'];\n    flashRefinance: Scalars['Boolean'];\n    id: Scalars['String'];\n    indexInBlock: Scalars['Int'];\n    loan: Loan;\n    loanId: Scalars['String'];\n    multiSourceLoanHistory: MultiSourceLoanHistory;\n    nextActivity?: Maybe<LoanActivity>;\n    prevActivity?: Maybe<LoanActivity>;\n    timestamp: Scalars['DateTime'];\n    txHash: Scalars['Hash'];\n  };\n\nexport type LoanRefinancedNotification = Node &\n  Notification & {\n    __typename?: 'LoanRefinancedNotification';\n    createdOn: Scalars['DateTime'];\n    id: Scalars['String'];\n    newHistory: MultiSourceLoanHistory;\n    newHistoryId: Scalars['String'];\n    notificationType: Scalars['String'];\n    previousHistory: MultiSourceLoanHistory;\n    previousHistoryId: Scalars['String'];\n    readOn?: Maybe<Scalars['DateTime']>;\n    user: User;\n  };\n\nexport type LoanRepaid = Event &\n  LoanActivity &\n  LoanEvent &\n  Node & {\n    __typename?: 'LoanRepaid';\n    activityType: Scalars['String'];\n    eventType: Scalars['String'];\n    id: Scalars['String'];\n    indexInBlock: Scalars['Int'];\n    loan: Loan;\n    loanId: Scalars['String'];\n    multiSourceLoanHistory: MultiSourceLoanHistory;\n    nextActivity?: Maybe<LoanActivity>;\n    prevActivity?: Maybe<LoanActivity>;\n    timestamp: Scalars['DateTime'];\n    totalInterest: Scalars['BigInt'];\n    txHash: Scalars['Hash'];\n  };\n\nexport type LoanRepaidNotification = Node &\n  Notification & {\n    __typename?: 'LoanRepaidNotification';\n    createdOn: Scalars['DateTime'];\n    id: Scalars['String'];\n    loan: MultiSourceLoan;\n    loanId: Scalars['String'];\n    notificationType: Scalars['String'];\n    readOn?: Maybe<Scalars['DateTime']>;\n    user: User;\n  };\n\nexport enum LoanRequestType {\n  NftListedForSale = 'NFT_LISTED_FOR_SALE',\n  RenegotiationRequest = 'RENEGOTIATION_REQUEST',\n  TopUpRequest = 'TOP_UP_REQUEST',\n}\n\nexport enum LoanRequestsSortField {\n  CreatedDate = 'CREATED_DATE',\n  HighestBid = 'HIGHEST_BID',\n}\n\nexport type LoanRequestsSortInput = {\n  field: LoanRequestsSortField;\n  order: Ordering;\n};\n\nexport type LoanSentToAuction = Event &\n  LoanActivity &\n  LoanEvent &\n  Node & {\n    __typename?: 'LoanSentToAuction';\n    activityType: Scalars['String'];\n    eventType: Scalars['String'];\n    id: Scalars['String'];\n    indexInBlock: Scalars['Int'];\n    liquidatorAddress: Scalars['String'];\n    loan: Loan;\n    loanId: Scalars['String'];\n    multiSourceLoanHistory: MultiSourceLoanHistory;\n    nextActivity?: Maybe<LoanActivity>;\n    prevActivity?: Maybe<LoanActivity>;\n    timestamp: Scalars['DateTime'];\n    txHash: Scalars['Hash'];\n  };\n\nexport enum LoanSortField {\n  AprBps = 'APR_BPS',\n  Duration = 'DURATION',\n  EffectiveAprBps = 'EFFECTIVE_APR_BPS',\n  EndDate = 'END_DATE',\n  ExpectedInterest = 'EXPECTED_INTEREST',\n  ExpirationDate = 'EXPIRATION_DATE',\n  OriginationFee = 'ORIGINATION_FEE',\n  PaidInterest = 'PAID_INTEREST',\n  PrincipalAmount = 'PRINCIPAL_AMOUNT',\n  RenegotiationRequested = 'RENEGOTIATION_REQUESTED',\n  Repayment = 'REPAYMENT',\n  StartTime = 'START_TIME',\n  TotalInterest = 'TOTAL_INTEREST',\n}\n\nexport type LoanSortInput = {\n  field: LoanSortField;\n  order: Ordering;\n};\n\nexport enum LoanStatusType {\n  LoanAuctioned = 'LOAN_AUCTIONED',\n  LoanAuctionedWithBuyout = 'LOAN_AUCTIONED_WITH_BUYOUT',\n  LoanDefaulted = 'LOAN_DEFAULTED',\n  LoanForeclosed = 'LOAN_FORECLOSED',\n  LoanInitiated = 'LOAN_INITIATED',\n  LoanRepaid = 'LOAN_REPAID',\n  LoanSentToAuction = 'LOAN_SENT_TO_AUCTION',\n}\n\nexport type LoansData = {\n  __typename?: 'LoansData';\n  maxAprBps: Scalars['Float'];\n  maxPrincipalAmount: Scalars['BigInt'];\n  maxRemainingTime: Scalars['BigInt'];\n  minAprBps: Scalars['Float'];\n  minPrincipalAmount: Scalars['BigInt'];\n  minRemainingTime: Scalars['BigInt'];\n};\n\n/** This is the definition of a lost source. Lost sources are the lender/s that have lost a loan because of renegotiation or refinance.  */\nexport type LostSource = Node & {\n  __typename?: 'LostSource';\n  accruedInterest: Scalars['BigInt'];\n  activity: LoanActivity;\n  activityId: Scalars['String'];\n  aprBps: Scalars['BigInt'];\n  duration: Scalars['BigInt'];\n  earnedInterest: Scalars['BigInt'];\n  endDate: Scalars['DateTime'];\n  expectedInterestLeft: Scalars['BigInt'];\n  id: Scalars['String'];\n  lenderAddress: Scalars['String'];\n  lenderEaprBps: Scalars['BigInt'];\n  lenderName?: Maybe<Scalars['String']>;\n  lenderProfilePictureUrl?: Maybe<Scalars['String']>;\n  loan: MultiSourceLoan;\n  netAccruedInterest: Scalars['BigInt'];\n  netAprBps: Scalars['BigInt'];\n  netEarnedInterest: Scalars['BigInt'];\n  netExpectedInterestLeft: Scalars['BigInt'];\n  netLenderEaprBps: Scalars['BigInt'];\n  netOriginationFee: Scalars['BigInt'];\n  netProfit: Scalars['BigInt'];\n  netRepaidInterest: Scalars['BigInt'];\n  originationFee: Scalars['BigInt'];\n  principalAmount: Scalars['BigInt'];\n  profit: Scalars['BigInt'];\n  repaidInterest: Scalars['BigInt'];\n  startTime: Scalars['DateTime'];\n};\n\nexport type LostSourceNotification = Node &\n  Notification & {\n    __typename?: 'LostSourceNotification';\n    createdOn: Scalars['DateTime'];\n    id: Scalars['String'];\n    lostSource: LostSource;\n    lostSourceId: Scalars['String'];\n    notificationType: Scalars['String'];\n    readOn?: Maybe<Scalars['DateTime']>;\n    user: User;\n  };\n\nexport type MarketDepthLevel = {\n  __typename?: 'MarketDepthLevel';\n  priceNative: Scalars['Float'];\n  quantity: Scalars['Int'];\n};\n\nexport type MarketOverview = {\n  __typename?: 'MarketOverview';\n  movers: Array<MarketOverviewCollection>;\n  top: Array<MarketOverviewCollection>;\n  topBuyers: Array<MarketOverviewBuyer>;\n  volume: Array<MarketOverviewCollection>;\n};\n\nexport type MarketOverviewBuyer = {\n  __typename?: 'MarketOverviewBuyer';\n  address: Scalars['Address'];\n  /** ETH value of the wallet's purchases in the period. */\n  buyingVolumeEth: Scalars['Float'];\n  name?: Maybe<Scalars['String']>;\n  profilePictureUrl?: Maybe<Scalars['String']>;\n};\n\nexport type MarketOverviewCollection = {\n  __typename?: 'MarketOverviewCollection';\n  collection: Collection;\n  currencyAddress: Scalars['Address'];\n  /** Floor change over the period, in percent (12.5 is +12.5%). */\n  floorChangePercent?: Maybe<Scalars['Float']>;\n  /** Loan events in the period: initiations, extensions, refinances from offers and borrower renegotiations, top-ups included. */\n  loansCount: Scalars['Int'];\n  /** The period's most recent distinct buyers, newest first. */\n  recentBuyers: Array<MarketOverviewWallet>;\n  /** Sales in the period, wrapper collections included. */\n  salesCount: Scalars['Int'];\n  /** Sales value in the period, in the collection's native currency. */\n  salesVolume?: Maybe<Scalars['Float']>;\n  /** Distinct buyers, sellers, borrowers and lenders in the period. */\n  usersCount: Scalars['Int'];\n};\n\nexport enum MarketOverviewTimeframe {\n  Day = 'DAY',\n  Month = 'MONTH',\n  Week = 'WEEK',\n}\n\nexport type MarketOverviewWallet = {\n  __typename?: 'MarketOverviewWallet';\n  address: Scalars['Address'];\n  name?: Maybe<Scalars['String']>;\n  profilePictureUrl?: Maybe<Scalars['String']>;\n};\n\nexport enum MarketPlaceType {\n  Blur = 'BLUR',\n  Cryptopunks = 'CRYPTOPUNKS',\n  CryptopunksStash = 'CRYPTOPUNKS_STASH',\n  Foundation = 'FOUNDATION',\n  LarvaLabs = 'LARVA_LABS',\n  LooksRare = 'LOOKS_RARE',\n  Native = 'NATIVE',\n  Nftx = 'NFTX',\n  NftStrategy = 'NFT_STRATEGY',\n  OpenSea = 'OPEN_SEA',\n  X2Y2 = 'X2Y2',\n}\n\nexport enum MarketplaceEnum {\n  Gondi = 'GONDI',\n  Nftfi = 'NFTFI',\n}\n\n/** This is the definition of a loan. In sources you can find the tranches of the loan.Take into account that the loan fields can change if renegotiation or refinance happens.You can use listLoanEvents to get the history of the loan. */\nexport type MultiSourceLoan = Loan &\n  Node & {\n    __typename?: 'MultiSourceLoan';\n    activities: Array<LoanActivity>;\n    address: Scalars['Address'];\n    auction?: Maybe<Auction>;\n    blendedAprBps: Scalars['Float'];\n    borrowerAddress: Scalars['Address'];\n    borrowerName?: Maybe<Scalars['String']>;\n    borrowerProfilePictureUrl?: Maybe<Scalars['String']>;\n    contractStartTime: Scalars['DateTime'];\n    currency: Currency;\n    duration: Scalars['BigInt'];\n    durationFromRenegotiationOrStart: Scalars['BigInt'];\n    endDate: Scalars['DateTime'];\n    id: Scalars['String'];\n    indexInBlock: Scalars['Int'];\n    isEndLockedUp: Scalars['Boolean'];\n    lastOriginationFee: Scalars['BigInt'];\n    lastRenegotiationDate?: Maybe<Scalars['DateTime']>;\n    lenderRefinanceDisabled: Scalars['Boolean'];\n    loanId: Scalars['Int'];\n    nft: Nft;\n    /**\n     * Deprecated field. Use offerIds to return loan offer ids instead.\n     * @deprecated Use offerIds to return loan offer ids instead.\n     */\n    offer: Offer;\n    offerIds: Array<Scalars['String']>;\n    previousLoan?: Maybe<Loan>;\n    principalAddress: Scalars['Address'];\n    principalAmount: Scalars['BigInt'];\n    protocolFee: Scalars['BigInt'];\n    renegotiationCount: Scalars['Int'];\n    renegotiationRequest?: Maybe<RenegotiationRequest>;\n    repaidActivity?: Maybe<LoanRepaid>;\n    repayment: Scalars['BigInt'];\n    repaymentTime?: Maybe<Scalars['DateTime']>;\n    replacementLoan?: Maybe<Loan>;\n    sources: Array<Source>;\n    startLockDueDate?: Maybe<Scalars['DateTime']>;\n    startTime: Scalars['DateTime'];\n    status: Scalars['String'];\n    timestamp: Scalars['DateTime'];\n    topUpRequest?: Maybe<TopUpRequest>;\n    totalOriginationFee: Scalars['BigInt'];\n    txHash: Scalars['Hash'];\n  };\n\nexport type MultiSourceLoanConnection = {\n  __typename?: 'MultiSourceLoanConnection';\n  edges: Array<MultiSourceLoanEdge>;\n  pageInfo: PageInfo;\n  totalCount: Scalars['Int'];\n};\n\nexport type MultiSourceLoanEdge = {\n  __typename?: 'MultiSourceLoanEdge';\n  cursor: Scalars['String'];\n  node: MultiSourceLoan;\n};\n\n/** A snapshot in time of a loan. */\nexport type MultiSourceLoanHistory = Node & {\n  __typename?: 'MultiSourceLoanHistory';\n  activity: LoanActivity;\n  activityId: Scalars['String'];\n  borrowerAddress: Scalars['String'];\n  borrowerName?: Maybe<Scalars['String']>;\n  borrowerProfilePictureUrl?: Maybe<Scalars['String']>;\n  currency: Currency;\n  duration: Scalars['BigInt'];\n  durationFromRenegotiationOrStart: Scalars['BigInt'];\n  id: Scalars['String'];\n  lastRenegotiationDate?: Maybe<Scalars['DateTime']>;\n  loanId: Scalars['Int'];\n  nft: Nft;\n  offerIds: Array<Scalars['String']>;\n  principalAddress: Scalars['Address'];\n  principalAmount: Scalars['BigInt'];\n  sources: Array<SourceHistory>;\n  startTime: Scalars['DateTime'];\n};\n\nexport type MultipleTraitOrder = Event &\n  Node &\n  Order & {\n    __typename?: 'MultipleTraitOrder';\n    /** Whether `cancelTradeOrders` can cancel this order without a transaction: a native bid restricted to our signed zone. */\n    cancelsOffChain: Scalars['Boolean'];\n    collection: Collection;\n    collectionId: Scalars['Int'];\n    createdDate: Scalars['DateTime'];\n    currency: Currency;\n    currencyAddress: Scalars['Address'];\n    evmOrder?: Maybe<Scalars['JSON']>;\n    executions: Scalars['Int'];\n    expiration: Scalars['DateTime'];\n    feeMetadata?: Maybe<OrderFeeMetadata>;\n    fees: Scalars['BigInt'];\n    hidden: Scalars['Boolean'];\n    id: Scalars['String'];\n    isAsk: Scalars['Boolean'];\n    isPrivate: Scalars['Boolean'];\n    maker: Scalars['Address'];\n    makerName?: Maybe<Scalars['String']>;\n    makerProfilePictureUrl?: Maybe<Scalars['String']>;\n    marketPlace: Scalars['String'];\n    marketPlaceAddress: Scalars['Address'];\n    maxExecutions: Scalars['Int'];\n    netAmount: Scalars['BigInt'];\n    nonce: Scalars['BigInt'];\n    orderType: Scalars['String'];\n    originalId: Scalars['Hash'];\n    platformFees: Array<PlatformFee>;\n    price: Scalars['BigInt'];\n    signature: Scalars['Signature'];\n    startTime: Scalars['DateTime'];\n    status: Scalars['String'];\n    stealth: Scalars['Boolean'];\n    taker: Scalars['Address'];\n    takerName?: Maybe<Scalars['String']>;\n    takerProfilePictureUrl?: Maybe<Scalars['String']>;\n    timestamp: Scalars['DateTime'];\n    traits: Array<Trait>;\n    updatedDate: Scalars['DateTime'];\n  };\n\nexport type MultipleTraitOrderEvmOrderArgs = {\n  integerStrings?: Scalars['Boolean'];\n};\n\nexport type MultipleTraitOrderPlatformFeesArgs = {\n  operation: PlatformFeeOperationType;\n};\n\nexport type Mutation = {\n  __typename?: 'Mutation';\n  acceptLinkedWallets: LinkedWallets;\n  /** Lists all NFTs from a user to start receiving loan offers. Can be filtered to only match certain criteria. */\n  addListingsOfNftsFromUser?: Maybe<Scalars['Void']>;\n  /** Adds or updates a loan listing to start receiving loan offers. */\n  addOrUpdateListing: Listing;\n  /** Adds or updates a loan renegotiation request.A renegotiation request is only a suggestion for potential lenders to show your intentions and the terms you want. */\n  addOrUpdateRenegotiationRequest: RenegotiationRequest;\n  /** Adds or updates a loan top-up request.A top-up request is only a suggestion for potential lenders to show your intentions and the terms you want. */\n  addOrUpdateTopUpRequest: TopUpRequest;\n  /** Cancels the caller's trade orders that have `cancelsOffChain` without a transaction, and returns the ids of the rest with the calldata of their Seaport on-chain cancel. */\n  cancelTradeOrders: CancelTradeOrdersResult;\n  /** Finishes proving the caller's X account with the `code` and `state` X sent back. Errors TWITTER_VERIFICATION_EXPIRED when the sign-in is unknown or older than ten minutes, TWITTER_VERIFICATION_FAILED when X refuses it. */\n  completeTwitterVerification: User;\n  /** Create a draft gallery under a profile wallet you sign for, directly or through a confirmed link. Its slug comes from the name. */\n  createGallery: Gallery;\n  /** Delete a gallery for good. */\n  deleteGallery?: Maybe<Scalars['Void']>;\n  deleteProfilePicture: User;\n  /** Removes the caller's proven X account from their profile. */\n  disconnectTwitter: User;\n  editUser: User;\n  /** Follow an artist from the wallet you are signed in with. Every wallet linked to yours then reads it as followed. Following it again is a no-op, and an unknown artist id fails with NOT_FOUND. */\n  followArtist?: Maybe<Scalars['Void']>;\n  /** Follow a collection for user feed. */\n  followCollection?: Maybe<Scalars['Void']>;\n  /** Follow multiple collections for user feed. */\n  followCollections?: Maybe<Scalars['Void']>;\n  /** Follow an edition from the wallet you are signed in with. Every wallet linked to yours then reads it as followed. Following it again is a no-op, and an unknown edition id fails with NOT_FOUND. */\n  followEdition?: Maybe<Scalars['Void']>;\n  /** Follow an NFT from the wallet you are signed in with. Every wallet linked to yours then reads it as followed. Following it again is a no-op, and an unknown NFT id fails with NOT_FOUND. */\n  followNft?: Maybe<Scalars['Void']>;\n  /** Follow a wallet from the wallet you are signed in with. Every wallet linked to yours then reads it as followed. A wallet of your own account cannot be followed. */\n  followWallet?: Maybe<Scalars['Void']>;\n  /** This is the first step of the collection loan offer flow. This step populates some fields of the offer. You then have to sign the offer and save it using the method save_signed_collection_offer. `duration` must be a positive whole number of seconds that represents either a multiple of 30 days or one of the special values of 3, 5, 7, 10, 15, 20 or 45 days; otherwise the call fails with INVALID_OFFER_DURATION_ERROR. Refer to gondi-js examples for more details. */\n  generateCollectionOfferToBeSigned: CollectionOffer;\n  /** This is the first step of the renegotiation loan offer flow. This step populates some fields of the offer. You then have to sign the offer and save it using the method save_renegotiation_signed_offer. `duration` must be a positive whole number of seconds that represents either a multiple of 30 days or one of the special values of 3, 5, 7, 10, 15, 20 or 45 days; otherwise the call fails with INVALID_OFFER_DURATION_ERROR. Refer to gondi-js examples for more details. */\n  generateRenegotiationOfferToBeSigned: Renegotiation;\n  generateSignInNonce: Scalars['String'];\n  /** This is the first step of the single NFT loan offer flow. This step populates some fields of the offer. You then have to sign the offer and save it using the method save_signed_single_nft_offer. `duration` must be a positive whole number of seconds that represents either a multiple of 30 days or one of the special values of 3, 5, 7, 10, 15, 20 or 45 days; otherwise the call fails with INVALID_OFFER_DURATION_ERROR. Refer to gondi-js examples for more details. */\n  generateSingleNftOfferToBeSigned: SingleNftOffer;\n  /** This is the first step of the trait loan offer flow: an offer any NFT carrying every one of the traits can borrow against. This step populates some fields of the offer, among them the validator holding the token ids that carry them now. `duration` must be a positive whole number of seconds that represents either a multiple of 30 days or one of the special values of 3, 5, 7, 10, 15, 20 or 45 days; otherwise the call fails with INVALID_OFFER_DURATION_ERROR. Refer to gondi-js examples for more details. */\n  generateTraitOfferToBeSigned: TraitOffer;\n  /** Hides all loan offers from a user for a given contract address.  */\n  hideAllOffers: Array<Offer>;\n  /** Hides a loan offer. */\n  hideOffer: Offer;\n  /** Hides multiple loan offers. */\n  hideOffers: Array<Offer>;\n  /** Hides a trade bid. Listings can no longer be hidden: cancelling them on-chain is the only supported way to take one down, so an ask is rejected. */\n  hideOrder: Order;\n  /** Hides a loan renegotiation offer.  */\n  hideRenegotiation: Renegotiation;\n  linkWalletAddress: LinkedWallets;\n  markNotificationIdsAsRead?: Maybe<Scalars['Void']>;\n  markNotificationsAsRead?: Maybe<Scalars['Void']>;\n  /** Creates multiple NFT trade orders with a single signature. First call (no signature in bulk_input) returns a SignatureRequest. Sign the typedData and call again with signature set. Returns BulkNFTOrdersResult on success. */\n  publishBulkOrdersForNfts: BulkNftOrdersResultSignatureRequest;\n  /** Creates a buy now pay later order. Buy now pay later orders are orders which use a loan offer principal to buy and NFT and start a loan making the borrower the creator of the order. This method could return a SignatureRequest in __typename in which case you have to use this method again with the same input but you have to sign the 'typedData' response attribute and store it in the 'key' response attribute. You will have to do this process two times since multiple signatures are required. You should receive an BuyNowPayLaterOrder if everything went well. Refer to gondi-js examples for more details Platform fees are calculated automatically.on how to sign it and pay the order. */\n  publishBuyNowPayLaterOrder: BuyNowPayLaterOrderSignatureRequestExtraSeaportData;\n  /** Creates a deal order. This method could return a SignatureRequest in __typename in which case you have to use this method again with the same input but you have to sign the 'typedData' response attribute and store it in the 'key' response attribute. You should receive a Deal if everything went well. */\n  publishDealOrder: DealSignatureRequest;\n  /** Make a gallery public. Publishing again changes nothing. */\n  publishGallery: Gallery;\n  /** Creates a collection trade order. This method could return a SignatureRequest in __typename in which case you have to use this method again with the same input but you have to sign the 'typedData' response attribute and store it in the 'key' response attribute. You should receive an CollectionOrder if everything went well. An order can only be a BID. Platform fees are added to the fees array if not present.Refer to gondi-js examples for more details. */\n  publishOrderForCollection: CollectionOrderSignatureRequest;\n  /** Creates a single NFT trade order. This method could return a SignatureRequest in __typename in which case you have to use this method again with the same input but you have to sign the 'typedData' response attribute and store it in the 'key' response attribute. You should receive an SingleNFTOrder if everything went well. An order can be an ASK or a BID. Platform fees are added to the fees array if not present.Refer to gondi-js examples for more details. */\n  publishOrderForNft: SingleNftOrderSignatureRequest;\n  /** Creates a bid that fills with any of a handpicked set of NFTs of one collection, up to maxExecutions of them. This method could return a SignatureRequest in __typename in which case you have to use this method again with the same input but you have to sign the 'typedData' response attribute and store it in the 'key' response attribute. You should receive a SetBidOrder if everything went well. An order can only be a BID. Platform fees are added to the fees array if not present. Refer to gondi-js examples for more details. */\n  publishOrderForNftSet: NftSetOrderSignatureRequest;\n  /** Creates a trait bid order. This method could return a SignatureRequest in __typename in which case you have to use this method again with the same input but you have to sign the 'typedData' response attribute and store it in the 'key' response attribute. You should receive a TraitOrder if everything went well. An order can only be a BID. Platform fees are added to the fees array if not present. Refer to gondi-js examples for more details. */\n  publishOrderForTrait: TraitOrderSignatureRequest;\n  /** Creates a sell and repay loan order. Sell and repay orders are orders to sell an NFT and use that money to repay a loan leaving the rest for the borrower. This method could return a SignatureRequest in __typename in which case you have to use this method again with the same input but you have to sign the 'typedData' response attribute and store it in the 'key' response attribute. You will have to do this process two times since multiple signatures are required. You should receive an SellAndRepayOrder if everything went well. Refer to gondi-js examples for more details Platform fees are added to the fees array if not present.on how to sign it and pay the order. */\n  publishSellAndRepayOrder: SellAndRepayOrderSignatureRequestExtraSeaportData;\n  recordItemVisit: Scalars['Boolean'];\n  /** Refreshes NFT metadata and image */\n  refreshNftMetadata: Nft;\n  removeLinkedWallets?: Maybe<Scalars['Void']>;\n  /** Removes a loan listing from a user. */\n  removeListing: Listing;\n  /** Removes all the loan listings from a user. Can be filtered. */\n  removeListingsOfNftsFromUser?: Maybe<Scalars['Void']>;\n  /** Removes a loan renegotiation request. */\n  removeRenegotiationRequest: RenegotiationRequest;\n  /** Removes a loan top-up request. */\n  removeTopUpRequest: TopUpRequest;\n  resendVerificationEmail?: Maybe<Scalars['Void']>;\n  /** This is the second step of the renegotiation loan offer flow after generate_renegotiation_offer_to_be_signed. It saves the signed offer. `duration` is re-validated against the allowed values (multiples of 30 days, or 3, 5, 7, 10, 15, 20 or 45 days) and the call fails with INVALID_OFFER_DURATION_ERROR otherwise. A lender may have at most 2 active single-NFT offers and renegotiations for the same (NFT, loan contract version, duration, principal currency) bucket; saving another one fails with ActiveOffersLimitReachedError. The optional `fallback_offer_input` is subject to the same checks. Refer to gondi-js examples for more details. */\n  saveRenegotiationSignedOffer: Renegotiation;\n  /** This is the second step of the collection loan offer flow after generate_collection_offer_to_be_signed. It saves the signed offer. `duration` is re-validated against the allowed values (multiples of 30 days, or 3, 5, 7, 10, 15, 20 or 45 days) and the call fails with INVALID_OFFER_DURATION_ERROR otherwise. A lender may have at most 2 active collection offers for the same (collection, loan contract version, duration, principal currency) bucket; saving another one fails with ActiveCollectionOffersLimitReachedError. Refer to gondi-js examples for more details. */\n  saveSignedCollectionOffer: CollectionOffer;\n  /** This is the second step of the single NFT loan offer flow after generate_single_nft_offer_to_be_signed. It saves the signed offer. `duration` is re-validated against the allowed values (multiples of 30 days, or 3, 5, 7, 10, 15, 20 or 45 days) and the call fails with INVALID_OFFER_DURATION_ERROR otherwise. A lender may have at most 2 active single-NFT offers and renegotiations for the same (NFT, loan contract version, duration, principal currency) bucket; saving another one fails with ActiveOffersLimitReachedError. Refer to gondi-js examples for more details. */\n  saveSignedSingleNftOffer: SingleNftOffer;\n  /** This is the second step of the trait loan offer flow after generate_trait_offer_to_be_signed. It saves the signed offer, as long as its validator is still the one the traits produce: if the NFTs carrying them changed since the first step, it fails with INVALID_OFFER_VALIDATORS_ERROR and the offer has to be generated again. `duration` is re-validated against the allowed values (multiples of 30 days, or 3, 5, 7, 10, 15, 20 or 45 days) and the call fails with INVALID_OFFER_DURATION_ERROR otherwise. A lender may have at most 2 active offers for the same (traits, loan contract version, duration, principal currency) bucket; saving another one fails with ActiveTraitOffersLimitReachedError. Refer to gondi-js examples for more details. */\n  saveSignedTraitOffer: TraitOffer;\n  /** Set the minimum offer amount, in US dollars, from the wallet you are signed in with; null or zero clears it. Every wallet linked to yours then reads the same amount. Returns the amount now in force. */\n  setMinimumOfferAmount?: Maybe<Scalars['Float']>;\n  /** Override the watch-notification switch for one NFT your account watches, or pass null to clear the override so the NFT follows the switch again. An NFT it does not watch fails with NOT_FOUND; unwatching drops the override. */\n  setNftWatchNotifications?: Maybe<Scalars['Void']>;\n  /** Turn notification events on or off per channel, from the wallet you are signed in with. Every wallet linked to yours then reads the same choices. Returns the preferences now in force. */\n  setNotificationPreferences: Array<NotificationPreference>;\n  setReferral?: Maybe<Scalars['Void']>;\n  /** Turn notifications about every watched NFT on or off, for every wallet of your account. An NFT's own override still wins. */\n  setWatchNotifications?: Maybe<Scalars['Void']>;\n  /** Unhides a loan offer. */\n  showOffer: Offer;\n  /** Unhides a trade bid. Listings can no longer be hidden, so an ask is rejected: one hidden before that change stays hidden and is cancelled on-chain rather than brought back. */\n  showOrder: Order;\n  /** Unhides a loan renegotiation offer.  */\n  showRenegotiation: Renegotiation;\n  signInWithEthereum: Scalars['String'];\n  /** Starts proving the caller's X account: returns the x.com page to send them to. X sends them back to the configured redirect URI with `code` and `state` for completeTwitterVerification. */\n  startTwitterVerification: Scalars['String'];\n  /** Unfollow an artist from every wallet of your account, including follows made before those wallets were linked. */\n  unfollowArtist?: Maybe<Scalars['Void']>;\n  /** Unfollow a collection for user feed. */\n  unfollowCollection?: Maybe<Scalars['Void']>;\n  /** Unfollow an edition from every wallet of your account, including follows made before those wallets were linked. */\n  unfollowEdition?: Maybe<Scalars['Void']>;\n  /** Unfollow an NFT from every wallet of your account, including follows made before those wallets were linked. */\n  unfollowNft?: Maybe<Scalars['Void']>;\n  /** Unfollow a wallet from every wallet of your account, including follows made before those wallets were linked. */\n  unfollowWallet?: Maybe<Scalars['Void']>;\n  /** Take a gallery back to a draft only its account can see. */\n  unpublishGallery: Gallery;\n  /** Replace a gallery's name, description, style and works. A draft's slug follows its new name; a published gallery keeps its slug. The publication state stays as it is. */\n  updateGallery: Gallery;\n  uploadProfilePicture: User;\n  verifyMailValidationCode: User;\n};\n\nexport type MutationAcceptLinkedWalletsArgs = {\n  linkedWalletsId: Scalars['String'];\n};\n\nexport type MutationAddListingsOfNftsFromUserArgs = {\n  desiredDuration?: InputMaybe<Scalars['Int']>;\n  desiredPrincipalAddress?: InputMaybe<Scalars['Address']>;\n  excludeCollections?: InputMaybe<Array<Scalars['String']>>;\n  onlyCollections?: InputMaybe<Array<Scalars['String']>>;\n  searchTerm?: InputMaybe<Scalars['String']>;\n};\n\nexport type MutationAddOrUpdateListingArgs = {\n  desiredDuration?: InputMaybe<Scalars['Int']>;\n  desiredPrincipalAddress?: InputMaybe<Scalars['Address']>;\n  nftId: Scalars['Int'];\n};\n\nexport type MutationAddOrUpdateRenegotiationRequestArgs = {\n  desiredAprBps?: InputMaybe<Scalars['BigInt']>;\n  desiredDuration?: InputMaybe<Scalars['BigInt']>;\n  desiredPrincipalAmount?: InputMaybe<Scalars['BigInt']>;\n  loanId: Scalars['String'];\n};\n\nexport type MutationAddOrUpdateTopUpRequestArgs = {\n  desiredAprBps?: InputMaybe<Scalars['BigInt']>;\n  desiredTopUp?: InputMaybe<Scalars['BigInt']>;\n  loanId: Scalars['String'];\n};\n\nexport type MutationCancelTradeOrdersArgs = {\n  orderIds: Array<Scalars['Int64']>;\n};\n\nexport type MutationCompleteTwitterVerificationArgs = {\n  code: Scalars['String'];\n  state: Scalars['String'];\n};\n\nexport type MutationCreateGalleryArgs = {\n  address: Scalars['Address'];\n  gallery: GalleryInput;\n};\n\nexport type MutationDeleteGalleryArgs = {\n  galleryId: Scalars['Int'];\n};\n\nexport type MutationDeleteProfilePictureArgs = {\n  userId: Scalars['Int'];\n};\n\nexport type MutationEditUserArgs = {\n  user: EditUserInput;\n};\n\nexport type MutationFollowArtistArgs = {\n  artistId: Scalars['Int'];\n};\n\nexport type MutationFollowCollectionArgs = {\n  collectionId: Scalars['Int'];\n};\n\nexport type MutationFollowCollectionsArgs = {\n  collectionIds: Array<Scalars['Int']>;\n};\n\nexport type MutationFollowEditionArgs = {\n  editionId: Scalars['Int'];\n};\n\nexport type MutationFollowNftArgs = {\n  nftId: Scalars['Int'];\n};\n\nexport type MutationFollowWalletArgs = {\n  walletAddress: Scalars['Address'];\n};\n\nexport type MutationGenerateCollectionOfferToBeSignedArgs = {\n  offerInput: CollectionOfferInput;\n};\n\nexport type MutationGenerateRenegotiationOfferToBeSignedArgs = {\n  renegotiationInput: RenegotiationOfferInput;\n};\n\nexport type MutationGenerateSignInNonceArgs = {\n  nonceInput: NonceInput;\n};\n\nexport type MutationGenerateSingleNftOfferToBeSignedArgs = {\n  offerInput: SingleNftOfferInput;\n};\n\nexport type MutationGenerateTraitOfferToBeSignedArgs = {\n  offerInput: TraitOfferInput;\n};\n\nexport type MutationHideAllOffersArgs = {\n  contractAddress: Scalars['Address'];\n  minOfferId: Scalars['String'];\n};\n\nexport type MutationHideOfferArgs = {\n  contractAddress: Scalars['Address'];\n  offerId: Scalars['String'];\n};\n\nexport type MutationHideOffersArgs = {\n  contractAddress: Scalars['Address'];\n  offerIds: Array<Scalars['String']>;\n};\n\nexport type MutationHideOrderArgs = {\n  orderIdInt64?: InputMaybe<Scalars['Int64']>;\n};\n\nexport type MutationHideRenegotiationArgs = {\n  contractAddress?: InputMaybe<Scalars['Address']>;\n  renegotiationId: Scalars['String'];\n};\n\nexport type MutationLinkWalletAddressArgs = {\n  walletAddress: Scalars['Address'];\n};\n\nexport type MutationMarkNotificationIdsAsReadArgs = {\n  ids?: InputMaybe<Array<Scalars['Int']>>;\n  walletAddresses?: InputMaybe<Array<Scalars['Address']>>;\n};\n\nexport type MutationMarkNotificationsAsReadArgs = {\n  walletAddresses?: InputMaybe<Array<Scalars['Address']>>;\n};\n\nexport type MutationPublishBulkOrdersForNftsArgs = {\n  bulkInput: BulkNftOrdersInput;\n};\n\nexport type MutationPublishBuyNowPayLaterOrderArgs = {\n  orderInput: BnplOrderInput;\n};\n\nexport type MutationPublishDealOrderArgs = {\n  dealInput: DealInput;\n};\n\nexport type MutationPublishGalleryArgs = {\n  galleryId: Scalars['Int'];\n};\n\nexport type MutationPublishOrderForCollectionArgs = {\n  orderInput: CollectionOrderInput;\n};\n\nexport type MutationPublishOrderForNftArgs = {\n  orderInput: SingleNftOrderInput;\n};\n\nexport type MutationPublishOrderForNftSetArgs = {\n  orderInput: NftSetOrderInput;\n};\n\nexport type MutationPublishOrderForTraitArgs = {\n  orderInput: TraitOrderInput;\n};\n\nexport type MutationPublishSellAndRepayOrderArgs = {\n  orderInput: NftOrderInput;\n};\n\nexport type MutationRecordItemVisitArgs = {\n  itemId: Scalars['String'];\n  itemType: ItemVisitType;\n  turnstileToken: Scalars['String'];\n};\n\nexport type MutationRefreshNftMetadataArgs = {\n  nftId: Scalars['Int'];\n};\n\nexport type MutationRemoveLinkedWalletsArgs = {\n  linkedWalletsId: Scalars['String'];\n};\n\nexport type MutationRemoveListingArgs = {\n  nftId: Scalars['Int'];\n};\n\nexport type MutationRemoveListingsOfNftsFromUserArgs = {\n  excludeCollections?: InputMaybe<Array<Scalars['String']>>;\n  onlyCollections?: InputMaybe<Array<Scalars['String']>>;\n  searchTerm?: InputMaybe<Scalars['String']>;\n};\n\nexport type MutationRemoveRenegotiationRequestArgs = {\n  loanId: Scalars['String'];\n};\n\nexport type MutationRemoveTopUpRequestArgs = {\n  loanId: Scalars['String'];\n};\n\nexport type MutationResendVerificationEmailArgs = {\n  userId: Scalars['Int'];\n};\n\nexport type MutationSaveRenegotiationSignedOfferArgs = {\n  fallbackOfferInput?: InputMaybe<SingleNftSignedOfferInput>;\n  publication?: InputMaybe<LoanOfferPublicationInput>;\n  signedRenegotiationInput: SignedRenegotiationOfferInput;\n};\n\nexport type MutationSaveSignedCollectionOfferArgs = {\n  publication?: InputMaybe<LoanOfferPublicationInput>;\n  signedOfferInput: CollectionSignedOfferInput;\n};\n\nexport type MutationSaveSignedSingleNftOfferArgs = {\n  publication?: InputMaybe<LoanOfferPublicationInput>;\n  signedOfferInput: SingleNftSignedOfferInput;\n};\n\nexport type MutationSaveSignedTraitOfferArgs = {\n  signedOfferInput: TraitSignedOfferInput;\n};\n\nexport type MutationSetMinimumOfferAmountArgs = {\n  amount?: InputMaybe<Scalars['Float']>;\n};\n\nexport type MutationSetNftWatchNotificationsArgs = {\n  enabled?: InputMaybe<Scalars['Boolean']>;\n  nftId: Scalars['Int'];\n};\n\nexport type MutationSetNotificationPreferencesArgs = {\n  preferences: Array<NotificationPreferenceInput>;\n};\n\nexport type MutationSetReferralArgs = {\n  referrerId: Scalars['Int'];\n};\n\nexport type MutationSetWatchNotificationsArgs = {\n  enabled: Scalars['Boolean'];\n};\n\nexport type MutationShowOfferArgs = {\n  contractAddress: Scalars['Address'];\n  offerId: Scalars['String'];\n};\n\nexport type MutationShowOrderArgs = {\n  orderIdInt64?: InputMaybe<Scalars['Int64']>;\n};\n\nexport type MutationShowRenegotiationArgs = {\n  contractAddress?: InputMaybe<Scalars['Address']>;\n  renegotiationId: Scalars['String'];\n};\n\nexport type MutationSignInWithEthereumArgs = {\n  siweInput: SiweInput;\n};\n\nexport type MutationUnfollowArtistArgs = {\n  artistId: Scalars['Int'];\n};\n\nexport type MutationUnfollowCollectionArgs = {\n  collectionId: Scalars['Int'];\n};\n\nexport type MutationUnfollowEditionArgs = {\n  editionId: Scalars['Int'];\n};\n\nexport type MutationUnfollowNftArgs = {\n  nftId: Scalars['Int'];\n};\n\nexport type MutationUnfollowWalletArgs = {\n  walletAddress: Scalars['Address'];\n};\n\nexport type MutationUnpublishGalleryArgs = {\n  galleryId: Scalars['Int'];\n};\n\nexport type MutationUpdateGalleryArgs = {\n  gallery: GalleryInput;\n  galleryId: Scalars['Int'];\n};\n\nexport type MutationUploadProfilePictureArgs = {\n  profilePicture: Scalars['Upload'];\n  userId: Scalars['String'];\n};\n\nexport type MutationVerifyMailValidationCodeArgs = {\n  email: Scalars['String'];\n  userId: Scalars['Int'];\n  validationCode: Scalars['String'];\n};\n\nexport type Nft = Node & {\n  __typename?: 'NFT';\n  /** When the NFT came to one of the given wallets: the latest transfer or mint of it to a wallet that still holds it, which for an NFT escrowed in a loan or stash is the one before the escrow. The return from escrow when a loan is repaid or a stash unwrapped does not count. The earliest such date when several of the wallets hold it; null when none of them holds it, no arrival is recorded, or no wallet is given. */\n  acquiredAt?: Maybe<Scalars['DateTime']>;\n  /** The purchase that brought the NFT to the wallet acquiredAt dates: the latest sale of it within an hour before that arrival that settled in the wallet, directly or forwarded from the buyer (see Sale.forwardTransfers). Null when the NFT arrived otherwise, such as by mint or a plain transfer, or when acquiredAt is null. */\n  acquisitionSale?: Maybe<Sale>;\n  /** Active loan of the NFT, which can be of status INITIATED, SENT_TO_AUCTION or DEFAULTED. */\n  activeLoan?: Maybe<Loan>;\n  animation?: Maybe<Asset>;\n  artists: Array<Artist>;\n  collection?: Maybe<Collection>;\n  collectionId?: Maybe<Scalars['Int']>;\n  createdDate: Scalars['DateTime'];\n  description?: Maybe<Scalars['String']>;\n  edition?: Maybe<Edition>;\n  editionId?: Maybe<Scalars['Int']>;\n  erc20Balances: Array<BigIntCurrencyAmount>;\n  erc1155Balance: Scalars['BigInt'];\n  /** Units of an ERC1155 NFT summed over the holder balances the indexer tracks. The tracked holder set can be partial, so this may undercount. Null when no holder balance is tracked, including for other token standards. */\n  erc1155Supply?: Maybe<Scalars['BigInt']>;\n  id: Scalars['String'];\n  image?: Maybe<Asset>;\n  isExcluded?: Maybe<Scalars['Boolean']>;\n  isFlagged?: Maybe<Scalars['Boolean']>;\n  /** Whether any wallet of the authenticated user's account follows this NFT. False when anonymous. */\n  isFollowed: Scalars['Boolean'];\n  itemType?: Maybe<ItemType>;\n  listed?: Maybe<Listing>;\n  /**\n   * Deprecated.\n   * @deprecated Get it from nftPriceSample\n   */\n  marketPlaceOfPrice?: Maybe<Scalars['String']>;\n  maxNetPrincipalOffer?: Maybe<Offer>;\n  /** When the token was minted: the earliest mint the indexer recorded for its token id on the unwrapped collection's contract. Null when no mint was indexed. */\n  mintDate?: Maybe<Scalars['DateTime']>;\n  /**\n   *\n   *         Naked NFT for the same token_id.\n   *\n   */\n  nakedNft: Nft;\n  name?: Maybe<Scalars['String']>;\n  nftId: Scalars['String'];\n  /** Collection-scoped behavior types of the effective holder, recomputed daily: the borrower while the NFT is escrowed in an active loan, otherwise the current owner. */\n  nftOwnerBehaviorTypes: Array<NftOwnerBehaviorType>;\n  nftPriceSample?: Maybe<NftPriceSample>;\n  owner?: Maybe<Scalars['Address']>;\n  ownerName?: Maybe<Scalars['String']>;\n  ownerProfilePictureUrl?: Maybe<Scalars['String']>;\n  /**\n   * Deprecated.\n   * @deprecated Get it from nftPriceSample\n   */\n  price?: Maybe<Scalars['BigInt']>;\n  /**\n   * Deprecated.\n   * @deprecated Get it from nftPriceSample\n   */\n  priceCurrencyAddress?: Maybe<Scalars['Address']>;\n  rarityRank?: Maybe<Scalars['Int']>;\n  rarityScore?: Maybe<Scalars['Float']>;\n  statistics: NftStatistics;\n  tokenId: Scalars['BigInt'];\n  traits: Array<Trait>;\n  url?: Maybe<Scalars['String']>;\n  /** Estimated value; null when nothing in the market prices the item (no family floor or bid, no item bid, no sale). */\n  valuation?: Maybe<NftValuation>;\n  /** Whether changes to this NFT notify the authenticated user: the NFT's own override when set, else the account's watch-notification switch. Null when anonymous or when the account does not watch it. */\n  watchNotificationsEnabled?: Maybe<Scalars['Boolean']>;\n  wrappedCount: Array<Scalars['Int']>;\n  /**\n   *\n   *         All NFT IDs for the same token_id in all related collections (including itself,\n   *         naked and wrappers). Useful for finding analog NFTs across naked/wrapper\n   *         collections. Unrelated to the `wrap_nfts` and `wrapped_count` fields.\n   *\n   */\n  wrappersAndNakedNftIds: Array<Scalars['Int']>;\n  /**\n   *\n   *         All NFTs for the same token_id in all related collections (including itself,\n   *         naked and wrappers). Useful for finding analog NFTs across naked/wrapper\n   *         collections. Unrelated to the `wrap_nfts` and `wrapped_count` fields.\n   *\n   */\n  wrappersAndNakedNfts: Array<Nft>;\n  wrapsNfts?: Maybe<Array<Nft>>;\n};\n\nexport type NftAcquiredAtArgs = {\n  wallets: Array<Scalars['Address']>;\n};\n\nexport type NftAcquisitionSaleArgs = {\n  wallets: Array<Scalars['Address']>;\n};\n\nexport type NftErc1155BalanceArgs = {\n  address: Scalars['Address'];\n};\n\nexport type NftMaxNetPrincipalOfferArgs = {\n  currencyAddress?: InputMaybe<Scalars['Address']>;\n};\n\nexport type NftNftPriceSampleArgs = {\n  currencyAddresses?: InputMaybe<Array<Scalars['Address']>>;\n  includeUserPrivateListings?: InputMaybe<Scalars['Boolean']>;\n};\n\nexport type NftConnection = {\n  __typename?: 'NFTConnection';\n  edges: Array<NftEdge>;\n  pageInfo: PageInfo;\n  totalCount: Scalars['Int'];\n};\n\nexport type NftEdge = {\n  __typename?: 'NFTEdge';\n  cursor: Scalars['String'];\n  node: Nft;\n};\n\nexport type NftOrderInput = {\n  amount?: InputMaybe<Scalars['BigInt']>;\n  contractAddress: Scalars['Address'];\n  criteriaProof?: InputMaybe<Array<Scalars['Hex']>>;\n  currencyAddress: Scalars['Address'];\n  expirationTime: Scalars['BigInt'];\n  extraSeaportData?: InputMaybe<Scalars['Hex']>;\n  fees?: InputMaybe<Array<OrderFee>>;\n  isAsk: Scalars['Boolean'];\n  orderToFill?: InputMaybe<Scalars['Int']>;\n  orderToFillInt64?: InputMaybe<Scalars['Int64']>;\n  price?: InputMaybe<Scalars['BigInt']>;\n  repaymentSignature?: InputMaybe<Scalars['Signature']>;\n  replaceOrderId?: InputMaybe<Scalars['Int']>;\n  replaceOrderIdInt64?: InputMaybe<Scalars['Int64']>;\n  signature?: InputMaybe<Scalars['Signature']>;\n  startTime: Scalars['BigInt'];\n  stealth?: InputMaybe<Scalars['Boolean']>;\n  taker?: InputMaybe<Scalars['Address']>;\n  tokenId: Scalars['BigInt'];\n};\n\nexport type NftPriceSample = Node & {\n  __typename?: 'NFTPriceSample';\n  bestOfferForBuyWithLoan?: Maybe<Offer>;\n  currencyAddress: Scalars['Address'];\n  id: Scalars['String'];\n  order: Order;\n  orderId: Scalars['Int64'];\n  surveyedId: Scalars['Int'];\n  taker: Scalars['Address'];\n  timestamp: Scalars['Int'];\n  value: Scalars['BigInt'];\n};\n\nexport type NewCollectionUnlistedOfferNotification = Node &\n  Notification & {\n    __typename?: 'NewCollectionUnlistedOfferNotification';\n    createdOn: Scalars['DateTime'];\n    id: Scalars['String'];\n    notificationType: Scalars['String'];\n    readOn?: Maybe<Scalars['DateTime']>;\n    user: User;\n  };\n\nexport type NewFollowerNotification = Node &\n  Notification & {\n    __typename?: 'NewFollowerNotification';\n    createdOn: Scalars['DateTime'];\n    followerWalletAddress: Scalars['Address'];\n    id: Scalars['String'];\n    notificationType: Scalars['String'];\n    readOn?: Maybe<Scalars['DateTime']>;\n    user: User;\n  };\n\nexport type NewOfferNotification = Node &\n  Notification & {\n    __typename?: 'NewOfferNotification';\n    createdOn: Scalars['DateTime'];\n    id: Scalars['String'];\n    notificationType: Scalars['String'];\n    offer: Offer;\n    offerId: Scalars['String'];\n    readOn?: Maybe<Scalars['DateTime']>;\n    user: User;\n  };\n\nexport type NewRenegotiationOfferNotification = Node &\n  Notification & {\n    __typename?: 'NewRenegotiationOfferNotification';\n    createdOn: Scalars['DateTime'];\n    id: Scalars['String'];\n    loan: MultiSourceLoan;\n    loanId: Scalars['String'];\n    notificationType: Scalars['String'];\n    readOn?: Maybe<Scalars['DateTime']>;\n    renegotiation: Renegotiation;\n    renegotiationId: Scalars['String'];\n    user: User;\n  };\n\nexport type NftLoansFilterInput = {\n  borrowers?: InputMaybe<Array<Scalars['Address']>>;\n  contracts?: InputMaybe<Array<Scalars['Address']>>;\n  excludeBorrowers?: InputMaybe<Array<Scalars['Address']>>;\n  excludeContracts?: InputMaybe<Array<Scalars['Address']>>;\n};\n\n/** Collection-scoped wallet behavior types, recomputed daily. */\nexport enum NftOwnerBehaviorType {\n  Accumulator = 'ACCUMULATOR',\n  Collector = 'COLLECTOR',\n  MarketMaker = 'MARKET_MAKER',\n  Newbie = 'NEWBIE',\n  RareLover = 'RARE_LOVER',\n  Whale = 'WHALE',\n}\n\nexport type NftOwnersFilterInput = {\n  excludeOwners?: InputMaybe<Array<Scalars['Address']>>;\n  owners?: InputMaybe<Array<Scalars['Address']>>;\n  withInLoan?: InputMaybe<Scalars['Boolean']>;\n  withInStash?: InputMaybe<Scalars['Boolean']>;\n  withInVault?: InputMaybe<Scalars['Boolean']>;\n  withInWallet?: InputMaybe<Scalars['Boolean']>;\n};\n\nexport enum NftSearchField {\n  CollectionName = 'COLLECTION_NAME',\n  Name = 'NAME',\n  TokenId = 'TOKEN_ID',\n}\n\nexport type NftSetOrderInput = {\n  amount?: InputMaybe<Scalars['BigInt']>;\n  collectionId: Scalars['Int'];\n  currencyAddress: Scalars['Address'];\n  expirationTime: Scalars['BigInt'];\n  fees?: InputMaybe<Array<OrderFee>>;\n  isAsk?: InputMaybe<Scalars['Boolean']>;\n  maxExecutions?: InputMaybe<Scalars['BigInt']>;\n  /** The NFTs the bid fills with, all in the collection: at least 2, at most 1000, duplicates ignored. */\n  nftIds: Array<Scalars['Int']>;\n  price?: InputMaybe<Scalars['BigInt']>;\n  signature?: InputMaybe<Scalars['Signature']>;\n  startTime: Scalars['BigInt'];\n  stealth?: InputMaybe<Scalars['Boolean']>;\n  taker?: InputMaybe<Scalars['Address']>;\n};\n\nexport type NftSetOrderSignatureRequest = SetBidOrder | SignatureRequest;\n\nexport enum NftSortField {\n  Collection = 'COLLECTION',\n  LastSaleDate = 'LAST_SALE_DATE',\n  LastSalePrice = 'LAST_SALE_PRICE',\n  Name = 'NAME',\n  OffersCount = 'OFFERS_COUNT',\n  Price = 'PRICE',\n  Status = 'STATUS',\n}\n\nexport type NftSortInput = {\n  field: NftSortField;\n  order: Ordering;\n  principalAddress?: InputMaybe<Scalars['Address']>;\n};\n\nexport type NftStatistics = {\n  __typename?: 'NftStatistics';\n  highestBid?: Maybe<Order>;\n  lastSale?: Maybe<Sale>;\n  loansTotalVolume: Scalars['BigInt'];\n  /**\n   * Deprecated field. Use number_of_offers_for_currencies instead.\n   * @deprecated Use number_of_offers_for_currencies instead.\n   */\n  numberOfOffers: Scalars['Float'];\n  numberOfOffersForCurrencies: Scalars['Int'];\n  /** @deprecated Trait floor price is not available */\n  topTraitFloorPrice?: Maybe<CurrencyAmount>;\n};\n\nexport type NftStatisticsHighestBidArgs = {\n  currencyAddresses?: InputMaybe<Array<Scalars['Address']>>;\n};\n\nexport type NftStatisticsLoansTotalVolumeArgs = {\n  currencyAddress: Scalars['Address'];\n};\n\nexport type NftStatisticsNumberOfOffersArgs = {\n  currencyAddress: Scalars['Address'];\n};\n\nexport type NftStatisticsNumberOfOffersForCurrenciesArgs = {\n  currencyAddresses: Array<Scalars['Address']>;\n};\n\nexport type NftStrategyDeployment = Node & {\n  __typename?: 'NftStrategyDeployment';\n  collectionAddress: Scalars['Address'];\n  contractAddress: Scalars['Address'];\n  id: Scalars['String'];\n};\n\nexport type NftStrategyDeploymentConnection = {\n  __typename?: 'NftStrategyDeploymentConnection';\n  edges: Array<NftStrategyDeploymentEdge>;\n  pageInfo: PageInfo;\n  totalCount: Scalars['Int'];\n};\n\nexport type NftStrategyDeploymentEdge = {\n  __typename?: 'NftStrategyDeploymentEdge';\n  cursor: Scalars['String'];\n  node: NftStrategyDeployment;\n};\n\nexport type NftTermsFilter = {\n  price?: InputMaybe<BigIntInterval>;\n};\n\n/** Estimated value of an NFT; the model is documented in pixel_backend/statistics/lib/nft_valuation.py. */\nexport type NftValuation = {\n  __typename?: 'NftValuation';\n  /** Family anchor in ETH before the item premium; null on the no-anchor route. */\n  anchor?: Maybe<Scalars['Float']>;\n  basis: ValuationBasis;\n  /** 0 to 1; how much market evidence backs the value. */\n  confidence: Scalars['Float'];\n  /** When the item's evidence row was last refreshed; null without one. */\n  evidenceTimestamp?: Maybe<Scalars['DateTime']>;\n  /** Collection liquidity, 0 to 1, weighting floor against bid. */\n  liquidity: Scalars['Float'];\n  /** Item premium over the anchor; 1 when none. */\n  multiplier: Scalars['Float'];\n  /** Estimated value in ETH. */\n  value: Scalars['Float'];\n};\n\nexport type NftWithAsksConfigInput = {\n  currencyAddresses?: InputMaybe<Array<Scalars['Address']>>;\n  forTaker?: InputMaybe<Scalars['Address']>;\n  listedSince?: InputMaybe<Scalars['DateTime']>;\n  marketplaces?: InputMaybe<Array<MarketPlaceType>>;\n  price?: InputMaybe<BigIntInterval>;\n  withPrice?: InputMaybe<Scalars['Boolean']>;\n};\n\nexport enum NftsSortField {\n  HighestBid = 'HIGHEST_BID',\n  LastSaleDate = 'LAST_SALE_DATE',\n  LastSalePrice = 'LAST_SALE_PRICE',\n  ListingCreatedDate = 'LISTING_CREATED_DATE',\n  LoanOutOfPocket = 'LOAN_OUT_OF_POCKET',\n  LoanPrincipal = 'LOAN_PRINCIPAL',\n  Name = 'NAME',\n  OutstandingDebt = 'OUTSTANDING_DEBT',\n  OutstandingLoanDueDate = 'OUTSTANDING_LOAN_DUE_DATE',\n  OwnedFirst = 'OWNED_FIRST',\n  Price = 'PRICE',\n  Random = 'RANDOM',\n  RarityRank = 'RARITY_RANK',\n  Status = 'STATUS',\n  TokenId = 'TOKEN_ID',\n  Valuation = 'VALUATION',\n}\n\nexport type NftsSortInput = {\n  currencyAddresses?: InputMaybe<Array<Scalars['Address']>>;\n  field: NftsSortField;\n  forTaker?: InputMaybe<Scalars['Address']>;\n  order: Ordering;\n  /** Salt for RANDOM: the same seed gives the same order, so pages never overlap. Required by RANDOM, ignored by every other field. */\n  seed?: InputMaybe<Scalars['Int']>;\n};\n\nexport type Node = {\n  id: Scalars['String'];\n};\n\nexport type NonceInput = {\n  blockchain?: InputMaybe<Scalars['String']>;\n  walletAddress: Scalars['Address'];\n};\n\nexport type Notification = {\n  createdOn: Scalars['DateTime'];\n  id: Scalars['String'];\n  notificationType: Scalars['String'];\n  readOn?: Maybe<Scalars['DateTime']>;\n  user: User;\n};\n\n/** Where a notification reaches its user. */\nexport enum NotificationChannel {\n  Email = 'EMAIL',\n  InApp = 'IN_APP',\n}\n\nexport type NotificationConnection = {\n  __typename?: 'NotificationConnection';\n  edges: Array<NotificationEdge>;\n  pageInfo: PageInfo;\n  totalCount: Scalars['Int'];\n};\n\nexport type NotificationEdge = {\n  __typename?: 'NotificationEdge';\n  cursor: Scalars['String'];\n  node: Notification;\n};\n\n/** What a user switches notifications on and off by, one channel at a time. A notification that is always delivered belongs to none. */\nexport enum NotificationEvent {\n  AuctionEnded = 'AUCTION_ENDED',\n  AuctionSettled = 'AUCTION_SETTLED',\n  AuctionStarted = 'AUCTION_STARTED',\n  BidNearListing = 'BID_NEAR_LISTING',\n  BuyOffer = 'BUY_OFFER',\n  CollectionOfferFilled = 'COLLECTION_OFFER_FILLED',\n  LoanDefaulted = 'LOAN_DEFAULTED',\n  LoanExtended = 'LOAN_EXTENDED',\n  LoanOffer = 'LOAN_OFFER',\n  LoanRefinanced = 'LOAN_REFINANCED',\n  LoanRepaid = 'LOAN_REPAID',\n  NewFollower = 'NEW_FOLLOWER',\n  OfferAccepted = 'OFFER_ACCEPTED',\n  OfferFunding = 'OFFER_FUNDING',\n  Outbid = 'OUTBID',\n  PrivateListing = 'PRIVATE_LISTING',\n  RefinancedAway = 'REFINANCED_AWAY',\n  RenegotiationOffer = 'RENEGOTIATION_OFFER',\n  RenegotiationRequest = 'RENEGOTIATION_REQUEST',\n  RepaymentReminder = 'REPAYMENT_REMINDER',\n  SaleCompleted = 'SALE_COMPLETED',\n  TradeExpiring = 'TRADE_EXPIRING',\n  TradeUpdate = 'TRADE_UPDATE',\n}\n\n/** Whether one event reaches the viewer's account on one channel. Enabled unless a wallet of the account turned it off. */\nexport type NotificationPreference = {\n  __typename?: 'NotificationPreference';\n  channel: NotificationChannel;\n  enabled: Scalars['Boolean'];\n  event: NotificationEvent;\n};\n\n/** The signed-in user's choice for one event on one channel. */\nexport type NotificationPreferenceInput = {\n  channel: NotificationChannel;\n  enabled: Scalars['Boolean'];\n  event: NotificationEvent;\n};\n\nexport enum NotificationType {\n  AskCancelledNotification = 'ASK_CANCELLED_NOTIFICATION',\n  AskCreatedNotification = 'ASK_CREATED_NOTIFICATION',\n  AuctionWonNotification = 'AUCTION_WON_NOTIFICATION',\n  BidNearListingNotification = 'BID_NEAR_LISTING_NOTIFICATION',\n  DealExpirationReminderNotification = 'DEAL_EXPIRATION_REMINDER_NOTIFICATION',\n  DealNotification = 'DEAL_NOTIFICATION',\n  LinkWalletAcceptedNotification = 'LINK_WALLET_ACCEPTED_NOTIFICATION',\n  LinkWalletRequestedNotification = 'LINK_WALLET_REQUESTED_NOTIFICATION',\n  LoanDefaultedNotification = 'LOAN_DEFAULTED_NOTIFICATION',\n  LoanDefaultReminderNotification = 'LOAN_DEFAULT_REMINDER_NOTIFICATION',\n  LoanInitiatedNotification = 'LOAN_INITIATED_NOTIFICATION',\n  LoanRepaidNotification = 'LOAN_REPAID_NOTIFICATION',\n  LostSourceNotification = 'LOST_SOURCE_NOTIFICATION',\n  NewFollowerNotification = 'NEW_FOLLOWER_NOTIFICATION',\n  NewOfferNotification = 'NEW_OFFER_NOTIFICATION',\n  NewRenegotiationOfferNotification = 'NEW_RENEGOTIATION_OFFER_NOTIFICATION',\n  OfferAcceptedNotification = 'OFFER_ACCEPTED_NOTIFICATION',\n  OutbidNotification = 'OUTBID_NOTIFICATION',\n  SetNftNotification = 'SET_NFT_NOTIFICATION',\n  WatchedNftNotification = 'WATCHED_NFT_NOTIFICATION',\n}\n\nexport type Offer = {\n  aprBps: Scalars['BigInt'];\n  availablePrincipalAmount: Scalars['BigInt'];\n  borrowerAddress?: Maybe<Scalars['Address']>;\n  borrowerName?: Maybe<Scalars['String']>;\n  borrowerProfilePictureUrl?: Maybe<Scalars['String']>;\n  capacity: Scalars['BigInt'];\n  collateralAddress?: Maybe<Scalars['Address']>;\n  collectionId?: Maybe<Scalars['Int']>;\n  consumedCapacity: Scalars['BigInt'];\n  contractAddress: Scalars['Address'];\n  createdDate?: Maybe<Scalars['DateTime']>;\n  currency: Currency;\n  duration: Scalars['BigInt'];\n  expirationTime: Scalars['BigInt'];\n  fee: Scalars['BigInt'];\n  hidden?: Maybe<Scalars['Boolean']>;\n  id: Scalars['String'];\n  lenderAddress?: Maybe<Scalars['Address']>;\n  lenderAllowance?: Maybe<Scalars['BigInt']>;\n  lenderAvailableBalance?: Maybe<Scalars['BigInt']>;\n  lenderName?: Maybe<Scalars['String']>;\n  lenderProfilePictureUrl?: Maybe<Scalars['String']>;\n  lenderRefinanceDisabled: Scalars['Boolean'];\n  maxPrincipal: Scalars['BigInt'];\n  maxSeniorRepayment: Scalars['BigInt'];\n  /**\n   * Deprecated field: use maxSeniorRepayment instead.\n   * @deprecated Use maxSeniorRepayment instead.\n   */\n  maxTrancheFloor: Scalars['BigInt'];\n  netPrincipal: Scalars['BigInt'];\n  nftId?: Maybe<Scalars['Int']>;\n  offerHash?: Maybe<Scalars['Hash']>;\n  offerId: Scalars['BigInt'];\n  principalAddress: Scalars['Address'];\n  principalAmount: Scalars['BigInt'];\n  repayment: Scalars['BigInt'];\n  requiresLiquidation?: Maybe<Scalars['Boolean']>;\n  signature?: Maybe<Scalars['Signature']>;\n  signerAddress?: Maybe<Scalars['Address']>;\n  status: Scalars['String'];\n  timestamp: Scalars['DateTime'];\n  validators: Array<OfferValidator>;\n};\n\nexport type OfferAcceptedNotification = Node &\n  Notification & {\n    __typename?: 'OfferAcceptedNotification';\n    createdOn: Scalars['DateTime'];\n    id: Scalars['String'];\n    loan: MultiSourceLoan;\n    loanId: Scalars['String'];\n    notificationType: Scalars['String'];\n    offer: Offer;\n    offerId: Scalars['String'];\n    readOn?: Maybe<Scalars['DateTime']>;\n    user: User;\n  };\n\nexport type OfferConnection = {\n  __typename?: 'OfferConnection';\n  edges: Array<OfferEdge>;\n  pageInfo: PageInfo;\n  totalCount: Scalars['Int'];\n};\n\nexport type OfferEdge = {\n  __typename?: 'OfferEdge';\n  cursor: Scalars['String'];\n  node: Offer;\n};\n\nexport type OfferStatistics = {\n  __typename?: 'OfferStatistics';\n  consumedCapacity: Scalars['BigInt'];\n};\n\nexport enum OfferStatus {\n  Active = 'ACTIVE',\n  Cancelled = 'CANCELLED',\n  Executed = 'EXECUTED',\n  Expired = 'EXPIRED',\n  Inactive = 'INACTIVE',\n  Outperformed = 'OUTPERFORMED',\n}\n\nexport type OfferSteps = Node & {\n  __typename?: 'OfferSteps';\n  aprBpsStep: Scalars['BigInt'];\n  collectionId: Scalars['Int'];\n  id: Scalars['String'];\n  origFeeBpsStep: Scalars['BigInt'];\n  usdcStep: Scalars['BigInt'];\n  wethStep: Scalars['BigInt'];\n  whypeStep: Scalars['BigInt'];\n};\n\nexport type OfferValidator = Node & {\n  __typename?: 'OfferValidator';\n  arguments: Scalars['Hex'];\n  id: Scalars['String'];\n  offerId: Scalars['String'];\n  validator: Scalars['Address'];\n};\n\nexport type OfferValidatorInput = {\n  arguments: Scalars['Hex'];\n  validator: Scalars['Address'];\n};\n\nexport enum OffersSortField {\n  AprBps = 'APR_BPS',\n  AvailablePrincipalAmount = 'AVAILABLE_PRINCIPAL_AMOUNT',\n  CreatedDate = 'CREATED_DATE',\n  DailyInterest = 'DAILY_INTEREST',\n  Duration = 'DURATION',\n  EffectiveAprBps = 'EFFECTIVE_APR_BPS',\n  Expiration = 'EXPIRATION',\n  Fee = 'FEE',\n  MaxPrincipal = 'MAX_PRINCIPAL',\n  NetInterest = 'NET_INTEREST',\n  NetPrincipal = 'NET_PRINCIPAL',\n  PrincipalAmount = 'PRINCIPAL_AMOUNT',\n  Repayment = 'REPAYMENT',\n  Status = 'STATUS',\n  TotalInterest = 'TOTAL_INTEREST',\n}\n\nexport type OffersSortInput = {\n  durationOfInterest?: InputMaybe<Scalars['Int']>;\n  field: OffersSortField;\n  order: Ordering;\n  principalOfInterest?: InputMaybe<Scalars['BigInt']>;\n};\n\n/** What holds an approval, which decides how it can be used. */\nexport enum OperatorKind {\n  /** A contract whose source code is not published. */\n  UnverifiedContract = 'UNVERIFIED_CONTRACT',\n  /** A contract with public source code that moves the NFTs as that code allows. */\n  VerifiedContract = 'VERIFIED_CONTRACT',\n  /** An account with no code: whoever holds its key can move the NFTs at any time. */\n  Wallet = 'WALLET',\n}\n\nexport type Order = {\n  /** Whether `cancelTradeOrders` can cancel this order without a transaction: a native bid restricted to our signed zone. */\n  cancelsOffChain: Scalars['Boolean'];\n  createdDate: Scalars['DateTime'];\n  currency: Currency;\n  currencyAddress: Scalars['Address'];\n  evmOrder?: Maybe<Scalars['JSON']>;\n  executions: Scalars['Int'];\n  expiration: Scalars['DateTime'];\n  feeMetadata?: Maybe<OrderFeeMetadata>;\n  fees: Scalars['BigInt'];\n  hidden: Scalars['Boolean'];\n  id: Scalars['String'];\n  isAsk: Scalars['Boolean'];\n  isPrivate: Scalars['Boolean'];\n  maker: Scalars['Address'];\n  makerName?: Maybe<Scalars['String']>;\n  makerProfilePictureUrl?: Maybe<Scalars['String']>;\n  marketPlace: Scalars['String'];\n  marketPlaceAddress: Scalars['Address'];\n  maxExecutions: Scalars['Int'];\n  netAmount: Scalars['BigInt'];\n  nonce: Scalars['BigInt'];\n  orderType: Scalars['String'];\n  originalId: Scalars['Hash'];\n  platformFees: Array<PlatformFee>;\n  price: Scalars['BigInt'];\n  signature: Scalars['Signature'];\n  startTime: Scalars['DateTime'];\n  status: Scalars['String'];\n  stealth: Scalars['Boolean'];\n  taker: Scalars['Address'];\n  takerName?: Maybe<Scalars['String']>;\n  takerProfilePictureUrl?: Maybe<Scalars['String']>;\n  timestamp: Scalars['DateTime'];\n  updatedDate: Scalars['DateTime'];\n};\n\nexport type OrderEvmOrderArgs = {\n  integerStrings?: Scalars['Boolean'];\n};\n\nexport type OrderPlatformFeesArgs = {\n  operation: PlatformFeeOperationType;\n};\n\nexport type OrderConnection = {\n  __typename?: 'OrderConnection';\n  edges: Array<OrderEdge>;\n  pageInfo: PageInfo;\n  totalCount: Scalars['Int'];\n};\n\nexport type OrderEdge = {\n  __typename?: 'OrderEdge';\n  cursor: Scalars['String'];\n  node: Order;\n};\n\nexport type OrderFee = {\n  amount: Scalars['BigInt'];\n  taker: Scalars['Address'];\n};\n\nexport type OrderFeeMetadata = {\n  __typename?: 'OrderFeeMetadata';\n  executionFee: Scalars['BigInt'];\n  executionFeeConcept: Scalars['String'];\n  publicationFee: Scalars['BigInt'];\n  publicationFeeConcept: Scalars['String'];\n};\n\nexport type OrderForNft = {\n  collectionId: Scalars['Int'];\n  nftId: Scalars['Int'];\n};\n\nexport enum OrderKind {\n  All = 'ALL',\n  Private = 'PRIVATE',\n  Public = 'PUBLIC',\n  Stealth = 'STEALTH',\n}\n\n/** How collectionIds and traitIds select bids. ALL: bids every item matching the filter can execute (collection bids for collectionIds, the selected trait bids for traitIds). ANY: bids at least one matching item can execute (collection, trait, multiple-trait and single-NFT bids). */\nexport enum OrderMatchMode {\n  All = 'ALL',\n  Any = 'ANY',\n}\n\nexport enum OrderModel {\n  Deal = 'DEAL',\n  Order = 'ORDER',\n}\n\nexport enum OrderSide {\n  Ask = 'ASK',\n  Bid = 'BID',\n}\n\nexport enum OrderSortField {\n  CreatedDate = 'CREATED_DATE',\n  Expiration = 'EXPIRATION',\n  Fee = 'FEE',\n  FeeRatio = 'FEE_RATIO',\n  LoanLtv = 'LOAN_LTV',\n  LoanOutOfPocket = 'LOAN_OUT_OF_POCKET',\n  LoanPrincipal = 'LOAN_PRINCIPAL',\n  NetAmount = 'NET_AMOUNT',\n  Price = 'PRICE',\n}\n\nexport type OrderSortInput = {\n  field: OrderSortField;\n  order: Ordering;\n};\n\nexport enum OrderStatusType {\n  Active = 'Active',\n  Cancelled = 'Cancelled',\n  Executed = 'Executed',\n  Expired = 'Expired',\n  Inactive = 'Inactive',\n  Outperformed = 'Outperformed',\n}\n\nexport type OrderTermsFilter = {\n  /** Keeps orders priced at or above this fraction of their collection's latest floor. Orders without a positive floor or a currency rate are kept. */\n  minFloorRatio?: InputMaybe<Scalars['Float']>;\n  netAmount?: InputMaybe<BigIntInterval>;\n};\n\nexport enum OrderType {\n  Ask = 'ASK',\n  Bid = 'BID',\n}\n\nexport enum Ordering {\n  Asc = 'ASC',\n  Desc = 'DESC',\n}\n\nexport type OutbidNotification = Node &\n  Notification & {\n    __typename?: 'OutbidNotification';\n    auction: Auction;\n    auctionId: Scalars['String'];\n    createdOn: Scalars['DateTime'];\n    id: Scalars['String'];\n    loan: MultiSourceLoan;\n    loanId: Scalars['String'];\n    newBid: Bid;\n    newBidId: Scalars['Int'];\n    notificationType: Scalars['String'];\n    readOn?: Maybe<Scalars['DateTime']>;\n    user: User;\n    userBid: Bid;\n    userBidId: Scalars['Int'];\n  };\n\nexport type OutstandingLoanStatistics = {\n  __typename?: 'OutstandingLoanStatistics';\n  loansData: LoansData;\n  outstandingLoanCount: Scalars['Int'];\n  outstandingNftsCount: Scalars['BigInt'];\n  outstandingPrincipal: Scalars['BigInt'];\n  totalOutstandingPrincipal: Scalars['BigInt'];\n};\n\nexport type OutstandingLoanStatisticsLoansDataArgs = {\n  currencyAddress?: InputMaybe<Scalars['Address']>;\n};\n\nexport type OutstandingLoanStatisticsOutstandingPrincipalArgs = {\n  currencyAddress: Scalars['Address'];\n};\n\nexport type PageInfo = {\n  __typename?: 'PageInfo';\n  endCursor?: Maybe<Scalars['String']>;\n  hasNextPage: Scalars['Boolean'];\n  hasPreviousPage: Scalars['Boolean'];\n  startCursor?: Maybe<Scalars['String']>;\n};\n\nexport type PlatformFee = {\n  __typename?: 'PlatformFee';\n  beneficiary: Scalars['Address'];\n  bps: Scalars['BigInt'];\n};\n\nexport enum PlatformFeeOperationType {\n  BuyNowPayLater = 'BUY_NOW_PAY_LATER',\n  Sale = 'SALE',\n  SellAndRepay = 'SELL_AND_REPAY',\n  StealthAsk = 'STEALTH_ASK',\n  StealthAskSellAndRepay = 'STEALTH_ASK_SELL_AND_REPAY',\n  StealthBidExecution = 'STEALTH_BID_EXECUTION',\n  StealthBidPublication = 'STEALTH_BID_PUBLICATION',\n}\n\nexport type PointActivity = Node & {\n  __typename?: 'PointActivity';\n  id: Scalars['String'];\n  loanActivity: LoanActivity;\n  points: Scalars['BigInt'];\n  reason: Scalars['String'];\n  timestamp: Scalars['DateTime'];\n  userId: Scalars['Int'];\n};\n\nexport type PointActivityConnection = {\n  __typename?: 'PointActivityConnection';\n  edges: Array<PointActivityEdge>;\n  pageInfo: PageInfo;\n  totalCount: Scalars['Int'];\n};\n\nexport type PointActivityEdge = {\n  __typename?: 'PointActivityEdge';\n  cursor: Scalars['String'];\n  node: PointActivity;\n};\n\n/** Accounts ranked by what their NFTs are worth: each account's items are valued as NFT.valuation was when its collection was last refreshed, and the ranking is refreshed daily. */\nexport type PortfolioLeaderboard = {\n  __typename?: 'PortfolioLeaderboard';\n  /** When the ranking was taken; null until its first run. */\n  asOf?: Maybe<Scalars['DateTime']>;\n  endCursor?: Maybe<Scalars['String']>;\n  hasNextPage: Scalars['Boolean'];\n  rows: Array<PortfolioLeaderboardRow>;\n  totalCount: Scalars['Int'];\n  /** The rank of the signed-in user's account; null when signed out or unranked. */\n  viewerRank?: Maybe<Scalars['Int']>;\n};\n\n/** One account on the portfolio leaderboard. */\nexport type PortfolioLeaderboardRow = {\n  __typename?: 'PortfolioLeaderboardRow';\n  /** Wrap families among the account's held items. */\n  collectionCount: Scalars['Int'];\n  name?: Maybe<Scalars['String']>;\n  profilePictureUrl?: Maybe<Scalars['String']>;\n  rank: Scalars['Int'];\n  /** Held items nothing in the market prices; they add nothing. */\n  unvaluedNfts: Scalars['Int'];\n  /** Sum of the account's items' valuations at the sample, in ETH. */\n  value: Scalars['Float'];\n  valuedNfts: Scalars['Int'];\n  /** The account's representative wallet; its profile is the row's. */\n  walletAddress: Scalars['Address'];\n  /** The account's wallets: its own and the ones confirmed-linked. */\n  walletCount: Scalars['Int'];\n};\n\n/** NFT.valuation summed over the NFTs the wallets own, hold in a stash or a vault, or have as collateral of their active loans as borrower, in ETH. */\nexport type PortfolioValuation = {\n  __typename?: 'PortfolioValuation';\n  /** One row per wrap family, highest value first. */\n  collections: Array<CollectionValuation>;\n  /** True when the wallets hold more items than the per-portfolio cap; the cheapest families by floor are the ones left out. */\n  truncated: Scalars['Boolean'];\n  /** Held items nothing in the market prices; they add nothing. */\n  unvaluedNfts: Scalars['Int'];\n  /** Sum of the valued items' estimates, in ETH. */\n  value: Scalars['Float'];\n  valuedNfts: Scalars['Int'];\n};\n\n/** Query for the lending module */\nexport type Query = {\n  __typename?: 'Query';\n  collectionMarketDepth: CollectionMarketDepth;\n  /** Collections the collection's recent buyers also bought, most shared buyers first: the most recent receivers of its sales, contracts left out, and the other collections they bought in the same window, from each buyer's most recent purchases. Its own wrap family and hidden collections are left out, a collection needs a minimum of shared buyers, and the ranking is cached for a while. */\n  collectorsAlsoBought: Array<CollectorsAlsoBought>;\n  dealReadiness: DealReadinessResult;\n  /** Featured listings in curated order: pinned NFTs, or the cheapest qualifying listing per approved collection when automatic selection is enabled. Each carries the open offer that lends the most on it among those of at least 30 days at an effective APR of at most 25%. A pick shows only while it has a public ask in ETH or WETH on a supported marketplace and such an offer. `first` is capped at 6. */\n  featuredListings: Array<LoanDeal>;\n  /** The galleries listed under a profile wallet, most recently edited first. Visitors get the published ones; the account that owns the wallet gets its drafts too. */\n  galleries: Array<Gallery>;\n  /** One gallery by the profile wallet and slug of its URL. A draft is found only by the account that owns it. */\n  gallery?: Maybe<Gallery>;\n  getAddressByName?: Maybe<Scalars['Address']>;\n  /** The wallet holding a Gondi username, for profile links; never a recipient lookup. */\n  getAddressByUsername?: Maybe<Scalars['Address']>;\n  /** Get an artist by ID. */\n  getArtist?: Maybe<Artist>;\n  /** Get an artist by slug. */\n  getArtistBySlug?: Maybe<Artist>;\n  /** Get the borrowing power for a list of borrowers.Borrowing power is the sum of the best offer per NFT the borrower has.The best offer is the offer with the highest net principal.Returns the normalized sum in ETH equivalent (float). */\n  getBorrowingPower: Scalars['Float'];\n  getCancelAllNftOrdersCalldata: Array<CancelAllOrdersCalldata>;\n  getCancelOrdersCalldata: Array<CancelAllOrdersCalldata>;\n  /** Get some general loan stats about the activities for a collection. */\n  getCollectionActivitiesCount: CollectionEventsCountByDayAndCurrency;\n  /** Get a collection by its slug. Slugs are unique identifiers for collections.  */\n  getCollectionBySlug?: Maybe<Collection>;\n  /** Highest active bid targeting a single collection whose trait constraint is satisfied by the supplied trait IDs. Considers single-trait bids whose trait is in the input, multi-trait bids whose trait set is contained in the input, and collection-level bids. Returns null when traitIds is empty or no matching bid exists. */\n  getCollectionHighestBidMatchingTraits?: Maybe<Order>;\n  /** Get some general loans stats from a collection. */\n  getCollectionLoansData: CollectionLoansData;\n  getCollectionOfferSteps: OfferSteps;\n  getCollectionsByContractAddress: Array<Collection>;\n  getCurrency?: Maybe<Currency>;\n  /** Get an edition by its slug. */\n  getEditionBySlug: Edition;\n  getFeedId: Scalars['String'];\n  getFulfillManyOrdersCalldata: Array<FulfillManyOrdersCalldata>;\n  /** Current lending principal and lender interest snapshot. */\n  getLendingMarketPulse: LendingMarketPulse;\n  getListingById?: Maybe<Listing>;\n  getLoanActivitiesStatisticsByMonth: LoanActivitiesStatisticsByMonth;\n  /** Get a loan by the contract address and loan id used in the contract on-chain.Unless specified as in this case, loan id is the internal gondi id of the loan and not the id used inside the contract.Internal gondi id is unique between all loans.Note that contract loan id is only unique within a contract version and that Gondi has multiple versions of the MSL (MultiSourceLoan) contract. */\n  getLoanById?: Maybe<Loan>;\n  /** Top, Volume and Movers collection rankings for a rolling period. */\n  getMarketOverview: MarketOverview;\n  getNftByContractAddressAndTokenId?: Maybe<Nft>;\n  getNftBySlugAndTokenId?: Maybe<Nft>;\n  getOrderCancelCalldata: Scalars['Hex'];\n  getOrderSaleCalldata: Scalars['Hex'];\n  getOutstandingDebt: Scalars['BigInt'];\n  getOutstandingLoanStatistics: OutstandingLoanStatistics;\n  getPointsFromReferrals: Scalars['Int'];\n  /** Accounts ranked by their portfolio valuation, highest first. An account is a user with its confirmed-linked wallets. */\n  getPortfolioLeaderboard: PortfolioLeaderboard;\n  /** NFT.valuation summed over the NFTs the wallets own, hold in a stash or a vault, or have as collateral of their active loans as borrower, in ETH, in total and per wrap family. ERC1155 tokens are left out. Takes 1 to 10 distinct wallets. At most max_nfts_per_portfolio items, highest family floor first; truncated says when the cap left items out. */\n  getPortfolioValuation: PortfolioValuation;\n  getPurchaseBundlerFromOrder: Scalars['Address'];\n  /** Profit `lenders` realized per UTC day and currency: the interest and origination fee of each position, counted on the day they left it by repayment or by being refinanced or renegotiated out. Only days that realized something return a row, ordered by `day` then `currencyAddress`. The window opens at the UTC midnight `days - 1` days before today and runs to now. `days` must be from 1 to 366 and `currencyAddresses` may name at most 10 currencies. Summed over all time, the rows equal `getSourcesStatistics` `profit` and `netProfit` for `statuses: [LOAN_REPAID]`. */\n  getRealizedProfitsByDay: Array<RealizedProfitDay>;\n  getReferredWallets: Scalars['Int'];\n  getSaleManyOrdersCalldata: Array<FulfillManyBidOrdersCalldata>;\n  getSellAndRepayOrderSwapCalldata?: Maybe<Scalars['Hex']>;\n  getSourcesStatistics: SourcesStatistics;\n  getSourcesStatisticsByCollection: Array<SourceStatisticsFromCollection>;\n  getSwapQuote: SwapQuote;\n  /**\n   * Deprecated.\n   * @deprecated Use get_swap_quote instead.\n   */\n  getSwapRate: Scalars['Float'];\n  /** Rank lenders across all currencies or a selected currency group. */\n  getTopLenders: TopLenders;\n  getUserPointActivities: PointActivityConnection;\n  getUserPoints: Scalars['Int'];\n  /** Follow counts and viewer follow state for a wallet. */\n  getWalletFollowStats: WalletFollowStats;\n  getWalletHoldingsSummary: WalletHoldingsSummary;\n  getWalletLendingSummary: WalletLendingSummary;\n  /** Purchases, sales, borrows and lends since fromTimestamp (all time when unset), in USD at current rates, plus a year of their daily counts. Only what crosses the wallets' boundary counts: a sale between two of the wallets is neither side, and a borrow or lend is valued at the principal lent across it. A loan counts once per side, dated and valued when principal first crossed the boundary (normally its origination, otherwise the refinance that first moved principal across it); later refinances and renegotiations add nothing. At most 10 wallets. */\n  getWalletTradingSummary: WalletTradingSummary;\n  globalSearch: Array<GlobalSearchResult>;\n  globalSearchV2: GlobalSearchV2Results;\n  isUsernameAvailable: Scalars['Boolean'];\n  /** Full-loan choices selected across all matching quotes before pagination. Supply group for inline additional choices. */\n  itemLoanOfferBook: ItemLoanOfferBook;\n  /** Live ApprovalForAll grants of the wallets on Ethereum, read from Etherscan and confirmed on-chain, highest exposed floor value first, plus the wallets whose history could not be read in full. At most 10 wallets. */\n  listApprovalExposures: ApprovalExposures;\n  /** Artist 1/1 works and non-1/1 collection or edition groups, sorted and paged together. */\n  listArtistCatalog: ArtistCatalogEntryConnection;\n  /** Artists any wallet of your account follows, most recently followed first. An artist followed from two of your wallets appears once. */\n  listArtistFollows: ArtistConnection;\n  /** The holder's artworks in preview order, scoped exactly as listArtistHoldersV2. totalCount counts grouped artworks; each entry carries its copy quantity. */\n  listArtistHolderItems: ArtistHoldingConnection;\n  /** Artist holder population with stable ranks, personal position and lazy quantity insights. Wallet search only narrows rows. */\n  listArtistHolderPopulation: ArtistHolderPopulationConnection;\n  /** Wallets holding NFTs by the artist, one row per wallet with its owned amount, 1/1s owned, and first and last acquisition. By default, sorted by 1/1s owned, then counts in collections ordered by the stronger of recent sales and current public top bids, then wallet address. */\n  listArtistHolders: ArtistHolderConnection;\n  /** Quantity-based artist holders. ERC1155 copies count individually; previews group each held artwork. Default ranking preserves 1/1 priority. */\n  listArtistHoldersV2: ArtistHolderV2Connection;\n  /** List artists/creators, optionally filtered by type. */\n  listArtists: ArtistConnection;\n  listAuctions: AuctionConnection;\n  listBids: BidConnection;\n  /** The borrowers' open loans on Blur's Blend, from the Blend backfill. At most 20 borrowers. */\n  listBlendLiens: Array<BlendLien>;\n  /** List collections for feed. */\n  listCollectionFollows: CollectionConnection;\n  listCollectionHolders: HolderConnection;\n  listCollectionTraitFilterOptions: TraitFilterOption;\n  listCollectionTraitKeyOptions: TraitKeyOptionConnection;\n  listCollectionTraitTypes: TraitTypeConnection;\n  listCollectionTraitValues: TraitValueConnection;\n  listCollections: CollectionConnection;\n  /** List NFT collections that have at least one listing. Listing an NFT is marking the NFT as available for taking loans and this can only be done by the owner of the NFT. */\n  listCollectionsWithListings: CollectionConnection;\n  /** List NFT collections that have at least one loan. */\n  listCollectionsWithLoans: CollectionConnection;\n  listCurrencies: CurrencyConnection;\n  listDeals: DealConnection;\n  /** Editions any wallet of your account follows, most recently followed first. An edition followed from two of your wallets appears once. */\n  listEditionFollows: EditionConnection;\n  /** List editions, filtered by collection, IDs, artists, tiers, or search term. */\n  listEditions: EditionConnection;\n  /** List editions, and with includeErc1155 the ERC1155 NFTs no edition groups, filtered by collection, IDs, artists, tiers, or search term. An ERC1155 token is an edition of its own: its copies are units of one NFT rather than one NFT each, so it has no edition row to be listed as. Supersedes listEditions, which cannot return them: a union node would invalidate every selection on that field. */\n  listEditionsV2: EditionNftConnection;\n  /** List all activities. Includes loan activities, loan offers, loan renegotiations, trade orders, nft transfers. priceUsd bounds are USD amounts converted with current rates; events without a priced amount (transfers, loan listings, executed trades) are excluded while a price filter is set. */\n  listEvents: EventConnection;\n  listListings: ListingConnection;\n  listListingsForSale: OrderConnection;\n  /**\n   * Deprecated.\n   * @deprecated Use list_loan_events instead.\n   */\n  listLoanActivities: LoanActivityConnection;\n  /** List all events related to a loan. Useful to track the status changes of a loan. */\n  listLoanEvents: LoanEventConnection;\n  /** Lists all loans from gondi. */\n  listLoans: MultiSourceLoanConnection;\n  /** @deprecated Use listProfiles. */\n  listNames: Array<Maybe<Scalars['String']>>;\n  listNftDelegations: DelegationConnection;\n  /** NFTs any wallet of your account follows, most recently followed first. An NFT followed from two of your wallets appears once. */\n  listNftFollows: NftConnection;\n  listNftOffersAndRenegotiations: SingleNftOfferCollectionOfferSetOfferTraitOfferRenegotiationConnection;\n  listNftStrategyDeployments: NftStrategyDeploymentConnection;\n  listNfts: NftConnection;\n  /**\n   * Deprecated field: use list_nfts instead.\n   * @deprecated Use list_nfts instead.\n   */\n  listNftsFromCollections: NftConnection;\n  /**\n   * Deprecated field: use list_nfts instead.\n   * @deprecated Use list_nfts instead.\n   */\n  listNftsFromUser: NftConnection;\n  listNotifications: NotificationConnection;\n  listOffers: OfferConnection;\n  /** This field is deprecated. Use list_orders_v2 instead. This field will be removed in the next major version. */\n  listOrders: OrderConnection;\n  listOrdersV2: OrderConnection;\n  listPlatformFees: Array<PlatformFee>;\n  listPopularSearches: Array<GlobalSearchV2ResultNftGlobalSearchV2ResultCollectionGlobalSearchV2ResultArtistGlobalSearchV2ResultAccount>;\n  listProfiles: Array<AddressProfile>;\n  listRenegotiations: RenegotiationConnection;\n  listSales: SaleConnection;\n  /** List all sources. Sources are the lender/s of a loan. Lost sources on the other hand are the lender/s that have lost a loan because of renegotiation or refinance. When a renegotiation or refinance happens, the sources compromised turn into lost sources and new sources appear. */\n  listSources: SourceLostSourceConnection;\n  listUsers: UserConnection;\n  /** Wallets following this wallet, newest follow first. The wallet's owner gets the followers of every wallet linked to it; everyone else gets this address alone, since which wallets are linked is private. `first` is capped at 100. */\n  listWalletFollowers: Array<WalletFollowEntry>;\n  /** Wallets this wallet follows, newest follow first. The wallet's owner gets the follows of every wallet linked to it; everyone else gets this address alone, since which wallets are linked is private. `first` is capped at 100. */\n  listWalletFollowing: Array<WalletFollowEntry>;\n  /** Collections with at least one loan deal, by name. */\n  loanDealCollections: Array<Collection>;\n  /** Listings a GONDI loan can buy, each with the open offer that lends the most on it, ranked by the largest loan or the highest loan-to-value. Highest LTV includes at most three per collection or wrap family, depending on grouping; Largest Loan has no collection cap. `first` is capped at 50. */\n  loanDeals: Array<LoanDeal>;\n  me?: Maybe<User>;\n  /** The viewer's account's minimum offer amount, in US dollars: loan and buy offers on its items worth less notify it on no channel. Null when there is none. */\n  minimumOfferAmount?: Maybe<Scalars['Float']>;\n  /** Every notification event on every channel it reaches, as the viewer's account has it. The most recent choice any of its linked wallets made is the one in force. */\n  notificationPreferences: Array<NotificationPreference>;\n  /** Evaluate an item quote before signing; publication rechecks under a transaction lock. */\n  previewItemLoanOfferCompetition: LoanOfferCompetitionPreview;\n  previewRenegotiationCompetition: LoanOfferCompetitionPreview;\n};\n\n/** Query for the lending module */\nexport type QueryCollectionMarketDepthArgs = {\n  collectionIds: Array<Scalars['Int']>;\n};\n\n/** Query for the lending module */\nexport type QueryCollectorsAlsoBoughtArgs = {\n  collectionId: Scalars['Int'];\n  first?: Scalars['Int'];\n};\n\n/** Query for the lending module */\nexport type QueryDealReadinessArgs = {\n  dealId: Scalars['Int64'];\n};\n\n/** Query for the lending module */\nexport type QueryFeaturedListingsArgs = {\n  first?: Scalars['Int'];\n};\n\n/** Query for the lending module */\nexport type QueryGalleriesArgs = {\n  address: Scalars['Address'];\n};\n\n/** Query for the lending module */\nexport type QueryGalleryArgs = {\n  address: Scalars['Address'];\n  slug: Scalars['String'];\n};\n\n/** Query for the lending module */\nexport type QueryGetAddressByNameArgs = {\n  name: Scalars['String'];\n};\n\n/** Query for the lending module */\nexport type QueryGetAddressByUsernameArgs = {\n  username: Scalars['String'];\n};\n\n/** Query for the lending module */\nexport type QueryGetArtistArgs = {\n  artistId: Scalars['Int'];\n};\n\n/** Query for the lending module */\nexport type QueryGetArtistBySlugArgs = {\n  slug: Scalars['String'];\n};\n\n/** Query for the lending module */\nexport type QueryGetBorrowingPowerArgs = {\n  borrowers: Array<Scalars['Address']>;\n};\n\n/** Query for the lending module */\nexport type QueryGetCancelAllNftOrdersCalldataArgs = {\n  isAsk?: InputMaybe<Scalars['Boolean']>;\n  kind: OrderKind;\n  nftId: Scalars['Int'];\n  statuses?: InputMaybe<Array<OrderStatusType>>;\n  walletAddress: Scalars['Address'];\n};\n\n/** Query for the lending module */\nexport type QueryGetCancelOrdersCalldataArgs = {\n  maker: Scalars['Address'];\n  orderIds: Array<Scalars['Int64']>;\n};\n\n/** Query for the lending module */\nexport type QueryGetCollectionActivitiesCountArgs = {\n  collectionId?: InputMaybe<Scalars['Int']>;\n  currencyAddress?: InputMaybe<Scalars['Address']>;\n  fromTimestamp: Scalars['Int'];\n  slug?: InputMaybe<Scalars['String']>;\n};\n\n/** Query for the lending module */\nexport type QueryGetCollectionBySlugArgs = {\n  slug: Scalars['String'];\n};\n\n/** Query for the lending module */\nexport type QueryGetCollectionHighestBidMatchingTraitsArgs = {\n  collectionId: Scalars['Int'];\n  traitIds: Array<Scalars['Int']>;\n};\n\n/** Query for the lending module */\nexport type QueryGetCollectionLoansDataArgs = {\n  collectionId: Scalars['Int'];\n  currencyAddress?: InputMaybe<Scalars['Address']>;\n};\n\n/** Query for the lending module */\nexport type QueryGetCollectionOfferStepsArgs = {\n  collectionId: Scalars['Int'];\n};\n\n/** Query for the lending module */\nexport type QueryGetCollectionsByContractAddressArgs = {\n  contractAddress: Scalars['Address'];\n};\n\n/** Query for the lending module */\nexport type QueryGetCurrencyArgs = {\n  address: Scalars['Address'];\n};\n\n/** Query for the lending module */\nexport type QueryGetEditionBySlugArgs = {\n  slug: Scalars['String'];\n};\n\n/** Query for the lending module */\nexport type QueryGetFulfillManyOrdersCalldataArgs = {\n  orderIds: Array<Scalars['Int64']>;\n};\n\n/** Query for the lending module */\nexport type QueryGetListingByIdArgs = {\n  listingId: Scalars['Int'];\n};\n\n/** Query for the lending module */\nexport type QueryGetLoanActivitiesStatisticsByMonthArgs = {\n  activities: Array<LoanActivityType>;\n  currencyAddress: Scalars['Address'];\n  lenders: Array<Scalars['Address']>;\n};\n\n/** Query for the lending module */\nexport type QueryGetLoanByIdArgs = {\n  address: Scalars['String'];\n  loanId: Scalars['Int'];\n};\n\n/** Query for the lending module */\nexport type QueryGetMarketOverviewArgs = {\n  timeframe: MarketOverviewTimeframe;\n};\n\n/** Query for the lending module */\nexport type QueryGetNftByContractAddressAndTokenIdArgs = {\n  contractAddress: Scalars['Address'];\n  tokenId: Scalars['BigInt'];\n};\n\n/** Query for the lending module */\nexport type QueryGetNftBySlugAndTokenIdArgs = {\n  slug: Scalars['String'];\n  tokenId: Scalars['BigInt'];\n};\n\n/** Query for the lending module */\nexport type QueryGetOrderCancelCalldataArgs = {\n  model?: InputMaybe<OrderModel>;\n  orderIdInt64?: InputMaybe<Scalars['Int64']>;\n};\n\n/** Query for the lending module */\nexport type QueryGetOrderSaleCalldataArgs = {\n  model?: InputMaybe<OrderModel>;\n  nftId?: InputMaybe<Scalars['Int']>;\n  orderIdInt64?: InputMaybe<Scalars['Int64']>;\n  taker?: InputMaybe<Scalars['Address']>;\n};\n\n/** Query for the lending module */\nexport type QueryGetOutstandingDebtArgs = {\n  borrowers: Array<Scalars['Address']>;\n  currencyAddresses?: InputMaybe<Array<Scalars['Address']>>;\n};\n\n/** Query for the lending module */\nexport type QueryGetPortfolioLeaderboardArgs = {\n  after?: InputMaybe<Scalars['String']>;\n  first?: Scalars['Int'];\n};\n\n/** Query for the lending module */\nexport type QueryGetPortfolioValuationArgs = {\n  owners: Array<Scalars['Address']>;\n};\n\n/** Query for the lending module */\nexport type QueryGetPurchaseBundlerFromOrderArgs = {\n  loanId?: InputMaybe<Scalars['String']>;\n  orderId: Scalars['Int64'];\n};\n\n/** Query for the lending module */\nexport type QueryGetRealizedProfitsByDayArgs = {\n  currencyAddresses: Array<Scalars['Address']>;\n  days?: Scalars['Int'];\n  lenders: Array<Scalars['Address']>;\n};\n\n/** Query for the lending module */\nexport type QueryGetSaleManyOrdersCalldataArgs = {\n  sales: Array<BidFulfillInput>;\n};\n\n/** Query for the lending module */\nexport type QueryGetSellAndRepayOrderSwapCalldataArgs = {\n  expectedRate: Scalars['Float'];\n  loanId: Scalars['String'];\n  orderId: Scalars['Int64'];\n  slippage: Scalars['Float'];\n};\n\n/** Query for the lending module */\nexport type QueryGetSourcesStatisticsArgs = {\n  currencyAddress: Scalars['Address'];\n  lenders: Array<Scalars['Address']>;\n  statuses: Array<LoanStatusType>;\n};\n\n/** Query for the lending module */\nexport type QueryGetSourcesStatisticsByCollectionArgs = {\n  currencyAddress: Scalars['Address'];\n  lenders: Array<Scalars['Address']>;\n  statuses: Array<LoanStatusType>;\n};\n\n/** Query for the lending module */\nexport type QueryGetSwapQuoteArgs = {\n  blockchain: BlockchainEnum;\n  fromCurrency: Scalars['Address'];\n  toCurrency: Scalars['Address'];\n};\n\n/** Query for the lending module */\nexport type QueryGetSwapRateArgs = {\n  fromCurrency: Scalars['Address'];\n  toCurrency: Scalars['Address'];\n};\n\n/** Query for the lending module */\nexport type QueryGetTopLendersArgs = {\n  after?: InputMaybe<Scalars['String']>;\n  currencyAddresses?: InputMaybe<Array<Scalars['Address']>>;\n  first?: Scalars['Int'];\n  metric: LenderRankingMetric;\n  order?: InputMaybe<Ordering>;\n  period?: LenderRankingPeriod;\n  viewerAddress?: InputMaybe<Scalars['Address']>;\n  year?: InputMaybe<Scalars['Int']>;\n};\n\n/** Query for the lending module */\nexport type QueryGetUserPointActivitiesArgs = {\n  after?: InputMaybe<Scalars['String']>;\n  first?: InputMaybe<Scalars['Int']>;\n};\n\n/** Query for the lending module */\nexport type QueryGetWalletFollowStatsArgs = {\n  walletAddress: Scalars['Address'];\n};\n\n/** Query for the lending module */\nexport type QueryGetWalletHoldingsSummaryArgs = {\n  address: Scalars['Address'];\n};\n\n/** Query for the lending module */\nexport type QueryGetWalletLendingSummaryArgs = {\n  address: Scalars['Address'];\n  role: WalletLendingRole;\n};\n\n/** Query for the lending module */\nexport type QueryGetWalletTradingSummaryArgs = {\n  addresses: Array<Scalars['Address']>;\n  fromTimestamp?: InputMaybe<Scalars['Int']>;\n};\n\n/** Query for the lending module */\nexport type QueryGlobalSearchArgs = {\n  searchTerm: Scalars['String'];\n};\n\n/** Query for the lending module */\nexport type QueryGlobalSearchV2Args = {\n  searchTerm: Scalars['String'];\n};\n\n/** Query for the lending module */\nexport type QueryIsUsernameAvailableArgs = {\n  username: Scalars['String'];\n};\n\n/** Query for the lending module */\nexport type QueryItemLoanOfferBookArgs = {\n  after?: InputMaybe<Scalars['String']>;\n  contractAddresses?: InputMaybe<Array<Scalars['Address']>>;\n  currencyAddress: Scalars['Address'];\n  duration?: InputMaybe<Scalars['BigInt']>;\n  first?: Scalars['Int'];\n  group?: InputMaybe<Scalars['String']>;\n  lenderAddress?: InputMaybe<Scalars['Address']>;\n  loanId?: InputMaybe<Scalars['String']>;\n  nftId: Scalars['Int'];\n  sortBy?: InputMaybe<OffersSortInput>;\n  viewerAddress?: InputMaybe<Scalars['Address']>;\n};\n\n/** Query for the lending module */\nexport type QueryListApprovalExposuresArgs = {\n  walletAddresses: Array<Scalars['Address']>;\n};\n\n/** Query for the lending module */\nexport type QueryListArtistCatalogArgs = {\n  after?: InputMaybe<Scalars['String']>;\n  aroundNftId?: InputMaybe<Scalars['Int']>;\n  artistId: Scalars['Int'];\n  first?: Scalars['Int'];\n  groupEditions?: Scalars['Boolean'];\n  itemTypes?: InputMaybe<Array<ItemType>>;\n  sortBy?: InputMaybe<ArtistCatalogSortInput>;\n};\n\n/** Query for the lending module */\nexport type QueryListArtistFollowsArgs = {\n  after?: InputMaybe<Scalars['String']>;\n  first?: Scalars['Int'];\n};\n\n/** Query for the lending module */\nexport type QueryListArtistHolderItemsArgs = {\n  after?: InputMaybe<Scalars['String']>;\n  artistId: Scalars['Int'];\n  first?: Scalars['Int'];\n  scope?: InputMaybe<ArtistHolderScopeInput>;\n  wallet: Scalars['Address'];\n};\n\n/** Query for the lending module */\nexport type QueryListArtistHolderPopulationArgs = {\n  addressTypes?: InputMaybe<Array<AddressType>>;\n  after?: InputMaybe<Scalars['String']>;\n  artistId: Scalars['Int'];\n  first?: Scalars['Int'];\n  hasItemType?: InputMaybe<ItemType>;\n  hideArtistAndBurnWallets?: Scalars['Boolean'];\n  includeCustodians?: Scalars['Boolean'];\n  ownedAmount?: InputMaybe<RangeInput>;\n  scope?: InputMaybe<ArtistHolderScopeInput>;\n  searchTerm?: InputMaybe<Scalars['String']>;\n  sortBy?: InputMaybe<Array<ArtistHolderSortInput>>;\n};\n\n/** Query for the lending module */\nexport type QueryListArtistHoldersArgs = {\n  addressTypes?: InputMaybe<Array<AddressType>>;\n  after?: InputMaybe<Scalars['String']>;\n  artistId: Scalars['Int'];\n  first?: Scalars['Int'];\n  includeCustodians?: Scalars['Boolean'];\n  ownedAmount?: InputMaybe<RangeInput>;\n  scope?: InputMaybe<ArtistHolderScopeInput>;\n  searchTerm?: InputMaybe<Scalars['String']>;\n  sortBy?: InputMaybe<Array<ArtistHolderSortInput>>;\n  walletAddresses?: InputMaybe<Array<Scalars['Address']>>;\n};\n\n/** Query for the lending module */\nexport type QueryListArtistHoldersV2Args = {\n  addressTypes?: InputMaybe<Array<AddressType>>;\n  after?: InputMaybe<Scalars['String']>;\n  artistId: Scalars['Int'];\n  first?: Scalars['Int'];\n  hasItemType?: InputMaybe<ItemType>;\n  hideArtistAndBurnWallets?: Scalars['Boolean'];\n  includeCustodians?: Scalars['Boolean'];\n  ownedAmount?: InputMaybe<RangeInput>;\n  scope?: InputMaybe<ArtistHolderScopeInput>;\n  searchTerm?: InputMaybe<Scalars['String']>;\n  sortBy?: InputMaybe<Array<ArtistHolderSortInput>>;\n  walletAddresses?: InputMaybe<Array<Scalars['Address']>>;\n};\n\n/** Query for the lending module */\nexport type QueryListArtistsArgs = {\n  after?: InputMaybe<Scalars['String']>;\n  artistType?: InputMaybe<ArtistType>;\n  collection?: InputMaybe<ArtistCollectionInput>;\n  first?: Scalars['Int'];\n  ids?: InputMaybe<Array<Scalars['Int']>>;\n  searchTerm?: InputMaybe<Scalars['String']>;\n  sortBy?: InputMaybe<Array<ArtistSortInput>>;\n  withAsks?: InputMaybe<WithAsksInput>;\n};\n\n/** Query for the lending module */\nexport type QueryListAuctionsArgs = {\n  after?: InputMaybe<Scalars['String']>;\n  currencyAddress?: InputMaybe<Scalars['Address']>;\n  first?: InputMaybe<Scalars['Int']>;\n  sortBy?: InputMaybe<Array<AuctionSortInput>>;\n  statuses?: InputMaybe<Array<AuctionStatus>>;\n};\n\n/** Query for the lending module */\nexport type QueryListBidsArgs = {\n  after?: InputMaybe<Scalars['String']>;\n  auctionId?: InputMaybe<Scalars['String']>;\n  auctionStatuses?: InputMaybe<Array<AuctionStatus>>;\n  bidders?: InputMaybe<Array<Scalars['String']>>;\n  currencyAddresses?: InputMaybe<Array<Scalars['Address']>>;\n  first?: InputMaybe<Scalars['Int']>;\n  onlyLatest?: Scalars['Boolean'];\n  sortBy?: InputMaybe<Array<BidSortInput>>;\n};\n\n/** Query for the lending module */\nexport type QueryListBlendLiensArgs = {\n  borrowers: Array<Scalars['Address']>;\n};\n\n/** Query for the lending module */\nexport type QueryListCollectionFollowsArgs = {\n  after?: InputMaybe<Scalars['String']>;\n  feedId?: InputMaybe<Scalars['String']>;\n  first?: Scalars['Int'];\n  sortBy?: InputMaybe<Array<CollectionFollowSortInput>>;\n};\n\n/** Query for the lending module */\nexport type QueryListCollectionHoldersArgs = {\n  addressTypes?: InputMaybe<Array<AddressType>>;\n  after?: InputMaybe<Scalars['String']>;\n  behaviorTypes?: InputMaybe<Array<NftOwnerBehaviorType>>;\n  first?: Scalars['Int'];\n  ownedAmount?: InputMaybe<RangeInput>;\n  searchTerm?: InputMaybe<Scalars['String']>;\n  slug: Scalars['String'];\n  sortBy?: InputMaybe<Array<CollectionHolderSortInput>>;\n  traits?: InputMaybe<Array<Scalars['Int']>>;\n  walletAddresses?: InputMaybe<Array<Scalars['Address']>>;\n};\n\n/** Query for the lending module */\nexport type QueryListCollectionTraitFilterOptionsArgs = {\n  collectionId: Scalars['Int'];\n};\n\n/** Query for the lending module */\nexport type QueryListCollectionTraitKeyOptionsArgs = {\n  after?: InputMaybe<Scalars['String']>;\n  collectionId: Scalars['Int'];\n  first?: Scalars['Int'];\n};\n\n/** Query for the lending module */\nexport type QueryListCollectionTraitTypesArgs = {\n  after?: InputMaybe<Scalars['String']>;\n  collectionIds?: InputMaybe<Array<Scalars['Int']>>;\n  first?: Scalars['Int'];\n  valueType?: InputMaybe<TraitValueType>;\n};\n\n/** Query for the lending module */\nexport type QueryListCollectionTraitValuesArgs = {\n  after?: InputMaybe<Scalars['String']>;\n  collectionIds?: InputMaybe<Array<Scalars['Int']>>;\n  first?: Scalars['Int'];\n  higherTraitOffersOnly?: Scalars['Boolean'];\n  key?: InputMaybe<Array<Scalars['String']>>;\n  market?: InputMaybe<TraitMarketFilter>;\n  nftId?: InputMaybe<Scalars['Int']>;\n  onlyEnums?: InputMaybe<Scalars['Boolean']>;\n  searchTerm?: InputMaybe<Scalars['String']>;\n  sortBy?: InputMaybe<Array<TraitValueSortInput>>;\n  traitIds?: InputMaybe<Array<Scalars['Int']>>;\n};\n\n/** Query for the lending module */\nexport type QueryListCollectionsArgs = {\n  after?: InputMaybe<Scalars['String']>;\n  artists?: InputMaybe<Array<Scalars['Int']>>;\n  blockchains?: InputMaybe<Array<BlockchainEnum>>;\n  collections?: InputMaybe<Array<Scalars['Int']>>;\n  excludeCollections?: InputMaybe<Array<Scalars['Int']>>;\n  excludeGondiUserVault?: InputMaybe<Scalars['Boolean']>;\n  first?: InputMaybe<Scalars['Int']>;\n  floorPrice?: InputMaybe<Interval>;\n  forWallets?: InputMaybe<ForWalletsInput>;\n  itemTypes?: InputMaybe<Array<ItemType>>;\n  searchTerm?: InputMaybe<Scalars['String']>;\n  sortBy?: InputMaybe<Array<CollectionSortInput>>;\n  standards?: InputMaybe<Array<TokenStandardType>>;\n  withAsks?: InputMaybe<WithAsksInput>;\n  withListings?: InputMaybe<Scalars['Boolean']>;\n  withLoans?: InputMaybe<Scalars['Boolean']>;\n  wrappers?: InputMaybe<Scalars['Boolean']>;\n};\n\n/** Query for the lending module */\nexport type QueryListCollectionsWithListingsArgs = {\n  after?: InputMaybe<Scalars['String']>;\n  collections?: InputMaybe<Array<Scalars['Int']>>;\n  first?: Scalars['Int'];\n  searchTerm?: InputMaybe<Scalars['String']>;\n};\n\n/** Query for the lending module */\nexport type QueryListCollectionsWithLoansArgs = {\n  after?: InputMaybe<Scalars['String']>;\n  collections?: InputMaybe<Array<Scalars['Int']>>;\n  first?: Scalars['Int'];\n  searchTerm?: InputMaybe<Scalars['String']>;\n};\n\n/** Query for the lending module */\nexport type QueryListCurrenciesArgs = {\n  after?: InputMaybe<Scalars['String']>;\n  first?: Scalars['Int'];\n};\n\n/** Query for the lending module */\nexport type QueryListDealsArgs = {\n  after?: InputMaybe<Scalars['String']>;\n  first?: InputMaybe<Scalars['Int']>;\n  ids?: InputMaybe<Array<Scalars['Int']>>;\n  sortBy?: InputMaybe<Array<DealSortInput>>;\n  statuses?: InputMaybe<Array<OrderStatusType>>;\n  walletAddresses: Array<Scalars['Address']>;\n};\n\n/** Query for the lending module */\nexport type QueryListEditionFollowsArgs = {\n  after?: InputMaybe<Scalars['String']>;\n  first?: Scalars['Int'];\n};\n\n/** Query for the lending module */\nexport type QueryListEditionsArgs = {\n  after?: InputMaybe<Scalars['String']>;\n  artists?: InputMaybe<Array<Scalars['Int']>>;\n  bidTiers?: InputMaybe<Array<EditionBidTier>>;\n  collectionId?: InputMaybe<Scalars['Int']>;\n  editions?: InputMaybe<Array<Scalars['Int']>>;\n  first?: InputMaybe<Scalars['Int']>;\n  searchTerm?: InputMaybe<Scalars['String']>;\n  sortBy?: InputMaybe<Array<EditionSortInput>>;\n};\n\n/** Query for the lending module */\nexport type QueryListEditionsV2Args = {\n  after?: InputMaybe<Scalars['String']>;\n  artists?: InputMaybe<Array<Scalars['Int']>>;\n  bidTiers?: InputMaybe<Array<EditionBidTier>>;\n  collectionId?: InputMaybe<Scalars['Int']>;\n  editions?: InputMaybe<Array<Scalars['Int']>>;\n  first?: InputMaybe<Scalars['Int']>;\n  includeErc1155?: Scalars['Boolean'];\n  searchTerm?: InputMaybe<Scalars['String']>;\n  sortBy?: InputMaybe<Array<EditionSortInput>>;\n};\n\n/** Query for the lending module */\nexport type QueryListEventsArgs = {\n  after?: InputMaybe<Scalars['String']>;\n  artists?: InputMaybe<Array<Scalars['Int']>>;\n  blockchains?: InputMaybe<Array<BlockchainEnum>>;\n  collections?: InputMaybe<Array<Scalars['Int']>>;\n  currencyAddresses?: InputMaybe<Array<Scalars['Address']>>;\n  eventTypes?: InputMaybe<Array<EventType>>;\n  first?: Scalars['Int'];\n  following?: InputMaybe<Scalars['Boolean']>;\n  fromTimestamp?: InputMaybe<Scalars['Int']>;\n  nfts?: InputMaybe<Array<Scalars['Int']>>;\n  priceUsd?: InputMaybe<Interval>;\n  toTimestamp?: InputMaybe<Scalars['Int']>;\n  topEvents?: InputMaybe<Scalars['Boolean']>;\n  traits?: InputMaybe<Array<Scalars['Int']>>;\n  users?: InputMaybe<Array<Scalars['Address']>>;\n  usersSide?: EventSide;\n};\n\n/** Query for the lending module */\nexport type QueryListListingsArgs = {\n  after?: InputMaybe<Scalars['String']>;\n  blockchains?: InputMaybe<Array<BlockchainEnum>>;\n  collectionIds?: InputMaybe<Array<Scalars['Int']>>;\n  currencyAddresses?: InputMaybe<Array<Scalars['Address']>>;\n  editionIds?: InputMaybe<Array<Scalars['Int']>>;\n  excludeSlugs?: InputMaybe<Array<Scalars['String']>>;\n  first?: InputMaybe<Scalars['Int']>;\n  includeVaultsForCollections?: InputMaybe<VaultsFilter>;\n  marketplaceNames?: InputMaybe<Array<MarketplaceEnum>>;\n  searchTerm?: InputMaybe<Scalars['String']>;\n  slugs?: InputMaybe<Array<Scalars['String']>>;\n  sortBy?: InputMaybe<LoanRequestsSortInput>;\n  userFilter?: InputMaybe<UserFilter>;\n  withLoans?: InputMaybe<Scalars['Boolean']>;\n};\n\n/** Query for the lending module */\nexport type QueryListListingsForSaleArgs = {\n  after?: InputMaybe<Scalars['String']>;\n  collectionId?: InputMaybe<Scalars['Int']>;\n  currencyAddress?: InputMaybe<Scalars['Address']>;\n  first?: InputMaybe<Scalars['Int']>;\n  forTaker?: InputMaybe<Scalars['Address']>;\n  maker?: InputMaybe<Scalars['Address']>;\n  nftId?: InputMaybe<Scalars['Int']>;\n  sortBy?: InputMaybe<Array<OrderSortInput>>;\n  statuses?: InputMaybe<Array<OrderStatusType>>;\n};\n\n/** Query for the lending module */\nexport type QueryListLoanActivitiesArgs = {\n  after?: InputMaybe<Scalars['String']>;\n  collections?: InputMaybe<Array<Scalars['Int']>>;\n  currencyAddress?: InputMaybe<Scalars['Address']>;\n  first?: Scalars['Int'];\n  fromTimestamp?: InputMaybe<Scalars['Int']>;\n  loanId?: InputMaybe<Scalars['String']>;\n  sortBy?: InputMaybe<Array<LoanActivitySortInput>>;\n  types?: InputMaybe<Array<LoanActivityType>>;\n};\n\n/** Query for the lending module */\nexport type QueryListLoanEventsArgs = {\n  after?: InputMaybe<Scalars['String']>;\n  artists?: InputMaybe<Array<Scalars['Int']>>;\n  collections?: InputMaybe<Array<Scalars['Int']>>;\n  currencyAddress?: InputMaybe<Scalars['Address']>;\n  first?: Scalars['Int'];\n  fromTimestamp?: InputMaybe<Scalars['Int']>;\n  loanId?: InputMaybe<Scalars['String']>;\n  nfts?: InputMaybe<Array<Scalars['Int']>>;\n  priceUsd?: InputMaybe<Interval>;\n  slugs?: InputMaybe<Array<Scalars['String']>>;\n  sortBy?: InputMaybe<Array<LoanEventSortInput>>;\n  types?: InputMaybe<Array<LoanEventType>>;\n};\n\n/** Query for the lending module */\nexport type QueryListLoansArgs = {\n  after?: InputMaybe<Scalars['String']>;\n  aroundNftId?: InputMaybe<Scalars['Int']>;\n  blockchains?: InputMaybe<Array<BlockchainEnum>>;\n  borrowers?: InputMaybe<Array<Scalars['String']>>;\n  collections?: InputMaybe<Array<Scalars['Int']>>;\n  contractAddresses?: InputMaybe<Array<Scalars['Address']>>;\n  currencyAddresses?: InputMaybe<Array<Scalars['Address']>>;\n  excludeAddresses?: InputMaybe<Array<Scalars['Address']>>;\n  excludeSlugs?: InputMaybe<Array<Scalars['String']>>;\n  first?: Scalars['Int'];\n  hideEndLocked?: InputMaybe<Scalars['Boolean']>;\n  hideLocked?: InputMaybe<Scalars['Boolean']>;\n  includeVaultsForCollections?: InputMaybe<VaultsFilter>;\n  nfts?: InputMaybe<Array<Scalars['Int']>>;\n  orderByStatuses?: InputMaybe<Scalars['Boolean']>;\n  requestStatuses?: InputMaybe<Array<LoanRequestType>>;\n  searchTerm?: InputMaybe<Scalars['String']>;\n  sluggedTokens?: InputMaybe<Array<SluggedTokenInput>>;\n  slugs?: InputMaybe<Array<Scalars['String']>>;\n  sortBy?: InputMaybe<Array<LoanSortInput>>;\n  statuses?: InputMaybe<Array<LoanStatusType>>;\n  terms?: InputMaybe<TermsFilter>;\n  traits?: InputMaybe<Array<Scalars['Int']>>;\n};\n\n/** Query for the lending module */\nexport type QueryListNamesArgs = {\n  walletAddresses: Array<Scalars['Address']>;\n};\n\n/** Query for the lending module */\nexport type QueryListNftDelegationsArgs = {\n  after?: InputMaybe<Scalars['String']>;\n  contractAddress?: InputMaybe<Scalars['Address']>;\n  first?: Scalars['Int'];\n  nftId: Scalars['Int'];\n};\n\n/** Query for the lending module */\nexport type QueryListNftFollowsArgs = {\n  after?: InputMaybe<Scalars['String']>;\n  first?: Scalars['Int'];\n};\n\n/** Query for the lending module */\nexport type QueryListNftOffersAndRenegotiationsArgs = {\n  after?: InputMaybe<Scalars['String']>;\n  blockchains?: InputMaybe<Array<BlockchainEnum>>;\n  collections?: InputMaybe<Array<Scalars['Int']>>;\n  contractAddresses?: InputMaybe<Array<Scalars['Address']>>;\n  currencyAddresses?: InputMaybe<Array<Scalars['Address']>>;\n  first?: InputMaybe<Scalars['Int']>;\n  hidden?: InputMaybe<Scalars['Boolean']>;\n  isAddNewTranche?: InputMaybe<Scalars['Boolean']>;\n  lenders?: InputMaybe<Array<Scalars['String']>>;\n  loanId?: InputMaybe<Scalars['String']>;\n  nfts?: InputMaybe<Array<Scalars['Int']>>;\n  onlyCollectionOffers?: Scalars['Boolean'];\n  onlyInactiveOrHidden?: Scalars['Boolean'];\n  onlyInvalid?: Scalars['Boolean'];\n  onlySingleNftOffers?: Scalars['Boolean'];\n  sortBy?: InputMaybe<OffersSortInput>;\n  statuses?: InputMaybe<Array<OfferStatus>>;\n  terms?: InputMaybe<TermsFilter>;\n};\n\n/** Query for the lending module */\nexport type QueryListNftStrategyDeploymentsArgs = {\n  after?: InputMaybe<Scalars['String']>;\n  first?: InputMaybe<Scalars['Int']>;\n};\n\n/** Query for the lending module */\nexport type QueryListNftsArgs = {\n  after?: InputMaybe<Scalars['String']>;\n  aroundNftId?: InputMaybe<Scalars['Int']>;\n  artists?: InputMaybe<Array<Scalars['Int']>>;\n  blockchains?: InputMaybe<Array<BlockchainEnum>>;\n  burned?: InputMaybe<Scalars['Boolean']>;\n  editionBidTiers?: InputMaybe<Array<EditionBidTier>>;\n  editionIds?: InputMaybe<Array<Scalars['Int']>>;\n  excludeSlugs?: InputMaybe<Array<Scalars['String']>>;\n  first?: InputMaybe<Scalars['Int']>;\n  flagged?: InputMaybe<Scalars['Boolean']>;\n  inactive?: InputMaybe<Scalars['Boolean']>;\n  includeVaultsForCollections?: InputMaybe<VaultsFilter>;\n  itemTypes?: InputMaybe<Array<ItemType>>;\n  loansFilter?: InputMaybe<NftLoansFilterInput>;\n  minTokenId?: InputMaybe<Scalars['BigInt']>;\n  nftIds?: InputMaybe<Array<Scalars['Int']>>;\n  ownersFilter?: InputMaybe<NftOwnersFilterInput>;\n  searchFields?: InputMaybe<Array<NftSearchField>>;\n  searchTerm?: InputMaybe<Scalars['String']>;\n  slugs?: InputMaybe<Array<Scalars['String']>>;\n  sortBy?: InputMaybe<Array<NftsSortInput>>;\n  standards?: InputMaybe<Array<TokenStandardType>>;\n  traitRanges?: InputMaybe<Array<TraitRangeOptionsInput>>;\n  traits?: InputMaybe<Array<TraitKeyValueOptionsInput>>;\n  withAsksConfig?: InputMaybe<NftWithAsksConfigInput>;\n  withBids?: InputMaybe<Scalars['Boolean']>;\n  withListed?: InputMaybe<Scalars['Boolean']>;\n  withWraps?: InputMaybe<Scalars['Boolean']>;\n  withoutEmptyWraps?: InputMaybe<Scalars['Boolean']>;\n};\n\n/** Query for the lending module */\nexport type QueryListNftsFromCollectionsArgs = {\n  after?: InputMaybe<Scalars['String']>;\n  collections?: InputMaybe<Array<Scalars['Int']>>;\n  currencyAddresses?: InputMaybe<Array<Scalars['Address']>>;\n  first?: InputMaybe<Scalars['Int']>;\n  marketplaces?: InputMaybe<Array<MarketPlaceType>>;\n  onlyListed?: InputMaybe<Scalars['Boolean']>;\n  searchTerm?: InputMaybe<Scalars['String']>;\n  sortBy?: InputMaybe<Array<NftSortInput>>;\n  terms?: InputMaybe<NftTermsFilter>;\n  traitRanges?: InputMaybe<Array<TraitRangeOptionsInput>>;\n  traits?: InputMaybe<Array<TraitKeyValueOptionsInput>>;\n};\n\n/** Query for the lending module */\nexport type QueryListNftsFromUserArgs = {\n  after?: InputMaybe<Scalars['String']>;\n  collectionAddresses?: InputMaybe<Array<Scalars['Address']>>;\n  first?: InputMaybe<Scalars['Int']>;\n  includeInStash?: Scalars['Boolean'];\n  searchTerm?: InputMaybe<Scalars['String']>;\n  sortBy?: InputMaybe<Array<NftSortInput>>;\n  standards?: InputMaybe<Array<TokenStandardType>>;\n  withLoans?: InputMaybe<Scalars['Boolean']>;\n  withNoWraps?: InputMaybe<Scalars['Boolean']>;\n};\n\n/** Query for the lending module */\nexport type QueryListNotificationsArgs = {\n  after?: InputMaybe<Scalars['String']>;\n  first?: InputMaybe<Scalars['Int']>;\n  notificationTypes?: InputMaybe<Array<NotificationType>>;\n  onlyRead?: Scalars['Boolean'];\n  onlyUnread?: Scalars['Boolean'];\n  walletAddresses?: InputMaybe<Array<Scalars['Address']>>;\n};\n\n/** Query for the lending module */\nexport type QueryListOffersArgs = {\n  after?: InputMaybe<Scalars['String']>;\n  blockchains?: InputMaybe<Array<BlockchainEnum>>;\n  borrowerAddress?: InputMaybe<Scalars['String']>;\n  collections?: InputMaybe<Array<Scalars['Int']>>;\n  contractAddresses?: InputMaybe<Array<Scalars['Address']>>;\n  currencyAddress?: InputMaybe<Scalars['Address']>;\n  editionIds?: InputMaybe<Array<Scalars['Int']>>;\n  excludeLenders?: InputMaybe<Array<Scalars['Address']>>;\n  first?: InputMaybe<Scalars['Int']>;\n  hidden?: InputMaybe<Scalars['Boolean']>;\n  lenders?: InputMaybe<Array<Scalars['String']>>;\n  nfts?: InputMaybe<Array<Scalars['Int']>>;\n  onlyCollectionOffers?: InputMaybe<Scalars['Boolean']>;\n  onlySingleNftOffers?: InputMaybe<Scalars['Boolean']>;\n  sluggedTokens?: InputMaybe<Array<SluggedTokenInput>>;\n  slugs?: InputMaybe<Array<Scalars['String']>>;\n  sortBy?: InputMaybe<Array<OffersSortInput>>;\n  statuses?: InputMaybe<Array<OfferStatus>>;\n  terms?: InputMaybe<TermsFilter>;\n  worseOffers?: InputMaybe<Scalars['Boolean']>;\n};\n\n/** Query for the lending module */\nexport type QueryListOrdersArgs = {\n  after?: InputMaybe<Scalars['String']>;\n  collectionId?: InputMaybe<Scalars['Int']>;\n  currencyAddresses?: InputMaybe<Array<Scalars['Address']>>;\n  first?: InputMaybe<Scalars['Int']>;\n  hidden?: InputMaybe<Scalars['Boolean']>;\n  ids?: InputMaybe<Array<Scalars['Int']>>;\n  maker?: InputMaybe<Array<Scalars['Address']>>;\n  marketplaceIds?: InputMaybe<Array<Scalars['String']>>;\n  marketplaces?: InputMaybe<Array<MarketPlaceType>>;\n  nftId?: InputMaybe<Scalars['Int']>;\n  onlyInvalid?: InputMaybe<Scalars['Boolean']>;\n  orderType?: InputMaybe<OrderType>;\n  sortBy?: InputMaybe<Array<OrderSortInput>>;\n  statuses?: InputMaybe<Array<OrderStatusType>>;\n  stealth?: InputMaybe<Scalars['Boolean']>;\n  taker?: InputMaybe<Scalars['Address']>;\n  terms?: InputMaybe<OrderTermsFilter>;\n};\n\n/** Query for the lending module */\nexport type QueryListOrdersV2Args = {\n  after?: InputMaybe<Scalars['String']>;\n  collectionIds?: InputMaybe<Array<Scalars['Int']>>;\n  currencyAddresses?: InputMaybe<Array<Scalars['Address']>>;\n  editionIds?: InputMaybe<Array<Scalars['Int']>>;\n  excludeMaker?: InputMaybe<Array<Scalars['Address']>>;\n  excludeTaker?: InputMaybe<Array<Scalars['Address']>>;\n  exclusiveListings?: InputMaybe<Scalars['Boolean']>;\n  exclusiveListingsTypes?: InputMaybe<Array<ExclusiveListingType>>;\n  first?: InputMaybe<Scalars['Int']>;\n  hidden?: InputMaybe<Scalars['Boolean']>;\n  ids?: InputMaybe<Array<Scalars['Int']>>;\n  idsInt64?: InputMaybe<Array<Scalars['Int64']>>;\n  maker?: InputMaybe<Array<Scalars['Address']>>;\n  marketplaceIds?: InputMaybe<Array<Scalars['String']>>;\n  marketplaces?: InputMaybe<Array<MarketPlaceType>>;\n  matchMode?: OrderMatchMode;\n  nfts?: InputMaybe<Array<OrderForNft>>;\n  onlyInvalid?: InputMaybe<Scalars['Boolean']>;\n  orderTypes?: InputMaybe<Array<CollectionOrderType>>;\n  side?: InputMaybe<OrderSide>;\n  sortBy?: InputMaybe<Array<OrderSortInput>>;\n  statuses?: InputMaybe<Array<OrderStatusType>>;\n  stealth?: InputMaybe<Scalars['Boolean']>;\n  taker?: InputMaybe<Scalars['Address']>;\n  terms?: InputMaybe<OrderTermsFilter>;\n  traitIds?: InputMaybe<Array<Scalars['Int']>>;\n  walletAddresses?: InputMaybe<Array<Scalars['Address']>>;\n};\n\n/** Query for the lending module */\nexport type QueryListPlatformFeesArgs = {\n  blockchain: BlockchainEnum;\n  collectionId: Scalars['Int'];\n  marketplace?: InputMaybe<MarketPlaceType>;\n  operation: PlatformFeeOperationType;\n};\n\n/** Query for the lending module */\nexport type QueryListPopularSearchesArgs = {\n  first?: Scalars['Int'];\n};\n\n/** Query for the lending module */\nexport type QueryListProfilesArgs = {\n  walletAddresses: Array<Scalars['Address']>;\n};\n\n/** Query for the lending module */\nexport type QueryListRenegotiationsArgs = {\n  after?: InputMaybe<Scalars['String']>;\n  blockchains?: InputMaybe<Array<BlockchainEnum>>;\n  collections?: InputMaybe<Array<Scalars['Int']>>;\n  first?: InputMaybe<Scalars['Int']>;\n  hidden?: InputMaybe<Scalars['Boolean']>;\n  isAddNewTranche?: InputMaybe<Scalars['Boolean']>;\n  loanId?: InputMaybe<Scalars['String']>;\n  sortBy?: InputMaybe<Array<OffersSortInput>>;\n  statuses?: InputMaybe<Array<OfferStatus>>;\n  terms?: InputMaybe<RefinanceTermsFilter>;\n};\n\n/** Query for the lending module */\nexport type QueryListSalesArgs = {\n  after?: InputMaybe<Scalars['String']>;\n  artists?: InputMaybe<Array<Scalars['Int']>>;\n  collections?: InputMaybe<Array<Scalars['Int']>>;\n  currencyAddresses?: InputMaybe<Array<Scalars['Address']>>;\n  first?: Scalars['Int'];\n  fromTimestamp?: InputMaybe<Scalars['Int']>;\n  nfts?: InputMaybe<Array<Scalars['Int']>>;\n  priceUsd?: InputMaybe<Interval>;\n  sortBy?: InputMaybe<Array<SalesSortInput>>;\n  toTimestamp?: InputMaybe<Scalars['Int']>;\n  traits?: InputMaybe<Array<Scalars['Int']>>;\n  users?: InputMaybe<Array<Scalars['Address']>>;\n};\n\n/** Query for the lending module */\nexport type QueryListSourcesArgs = {\n  after?: InputMaybe<Scalars['String']>;\n  blockchains?: InputMaybe<Array<BlockchainEnum>>;\n  collections?: InputMaybe<Array<Scalars['Int']>>;\n  contractAddresses?: InputMaybe<Array<Scalars['Address']>>;\n  currencyAddresses?: InputMaybe<Array<Scalars['Address']>>;\n  excludeAddresses?: InputMaybe<Array<Scalars['Address']>>;\n  excludeSlugs?: InputMaybe<Array<Scalars['String']>>;\n  first?: Scalars['Int'];\n  hideEndLocked?: InputMaybe<Scalars['Boolean']>;\n  hideLocked?: InputMaybe<Scalars['Boolean']>;\n  includeLost?: InputMaybe<Scalars['Boolean']>;\n  lenders?: InputMaybe<Array<Scalars['String']>>;\n  loanPrincipal?: InputMaybe<Interval>;\n  slugs?: InputMaybe<Array<Scalars['String']>>;\n  sortBy?: InputMaybe<Array<SourceSortInput>>;\n  statuses?: InputMaybe<Array<LoanStatusType>>;\n  terms?: InputMaybe<TermsFilter>;\n};\n\n/** Query for the lending module */\nexport type QueryListUsersArgs = {\n  after?: InputMaybe<Scalars['String']>;\n  first?: Scalars['Int'];\n  walletAddresses: Array<Scalars['Address']>;\n};\n\n/** Query for the lending module */\nexport type QueryListWalletFollowersArgs = {\n  first?: Scalars['Int'];\n  walletAddress: Scalars['Address'];\n};\n\n/** Query for the lending module */\nexport type QueryListWalletFollowingArgs = {\n  first?: Scalars['Int'];\n  walletAddress: Scalars['Address'];\n};\n\n/** Query for the lending module */\nexport type QueryLoanDealCollectionsArgs = {\n  grouping?: LoanDealGrouping;\n};\n\n/** Query for the lending module */\nexport type QueryLoanDealsArgs = {\n  collectionId?: InputMaybe<Scalars['Int']>;\n  first?: Scalars['Int'];\n  grouping?: LoanDealGrouping;\n  ranking: LoanDealRanking;\n};\n\n/** Query for the lending module */\nexport type QueryPreviewItemLoanOfferCompetitionArgs = {\n  loanId?: InputMaybe<Scalars['String']>;\n  offerInput: SingleNftOfferInput;\n  replacementIds?: InputMaybe<Array<Scalars['String']>>;\n};\n\n/** Query for the lending module */\nexport type QueryPreviewRenegotiationCompetitionArgs = {\n  renegotiationInput: RenegotiationOfferInput;\n  replacementIds?: InputMaybe<Array<Scalars['String']>>;\n};\n\nexport type RangeInput = {\n  max: Scalars['Int'];\n  min: Scalars['Int'];\n};\n\n/** Profit a lender realized in one currency on one UTC day, in raw units of that currency: the interest and origination fee of the positions it left that day. `day` is the UTC midnight that opens the day, and `netProfit` is `profit` after the protocol fee. */\nexport type RealizedProfitDay = {\n  __typename?: 'RealizedProfitDay';\n  currencyAddress: Scalars['Address'];\n  day: Scalars['DateTime'];\n  netProfit: Scalars['BigInt'];\n  profit: Scalars['BigInt'];\n};\n\nexport type RefinanceTermsFilter = {\n  aprBps?: InputMaybe<Interval>;\n  duration?: InputMaybe<Interval>;\n  ethProfitLeft?: InputMaybe<Interval>;\n  fee?: InputMaybe<Interval>;\n  /** Loans only: the loan's original principal over its NFT's highest bid, in basis points. A loan whose NFT has no bid has no LTV and is excluded whenever a bound is set. */\n  ltvBps?: InputMaybe<Interval>;\n  maxPrincipal?: InputMaybe<Interval>;\n  netPrincipal?: InputMaybe<Interval>;\n  principal?: InputMaybe<Interval>;\n  profitLeft?: InputMaybe<Interval>;\n  remainingTime?: InputMaybe<Interval>;\n};\n\n/** A renegotiation when the loan terms change and the borrower accepted. The difference with refinance is that renegotiation does not mean better terms for the borrower, because of that the borrower needs to accept the renegotiation. Also the renegotiation can be made by the same previous lender.Renegotiation can be top ups. A top up is when someone adds more principal to the loan. */\nexport type Renegotiation = Event &\n  Node & {\n    __typename?: 'Renegotiation';\n    aprBps: Scalars['BigInt'];\n    availablePrincipalAmount: Scalars['BigInt'];\n    createdDate?: Maybe<Scalars['DateTime']>;\n    duration: Scalars['BigInt'];\n    expirationTime: Scalars['BigInt'];\n    fallbackOfferId?: Maybe<Scalars['String']>;\n    feeAmount: Scalars['BigInt'];\n    hidden?: Maybe<Scalars['Boolean']>;\n    id: Scalars['String'];\n    /** Whether the renegotiation was a top up. */\n    isAddNewTranche: Scalars['Boolean'];\n    lenderAddress?: Maybe<Scalars['Address']>;\n    lenderName?: Maybe<Scalars['String']>;\n    lenderProfilePictureUrl?: Maybe<Scalars['String']>;\n    loan: Loan;\n    loanAddress: Scalars['Address'];\n    loanId: Scalars['BigInt'];\n    loanReferenceId: Scalars['String'];\n    nft: Nft;\n    offerHash?: Maybe<Scalars['Hash']>;\n    principalAmount: Scalars['BigInt'];\n    /** Whether only the loan's borrower and the lender see it. */\n    private: Scalars['Boolean'];\n    renegotiationId: Scalars['BigInt'];\n    repayment: Scalars['BigInt'];\n    requiresLiquidation: Scalars['Boolean'];\n    signature?: Maybe<Scalars['Signature']>;\n    signerAddress?: Maybe<Scalars['Address']>;\n    status: Scalars['String'];\n    strictImprovement: Scalars['Boolean'];\n    timestamp: Scalars['DateTime'];\n  };\n\nexport type RenegotiationConnection = {\n  __typename?: 'RenegotiationConnection';\n  edges: Array<RenegotiationEdge>;\n  pageInfo: PageInfo;\n  totalCount: Scalars['Int'];\n};\n\nexport type RenegotiationEdge = {\n  __typename?: 'RenegotiationEdge';\n  cursor: Scalars['String'];\n  node: Renegotiation;\n};\n\nexport type RenegotiationOfferInput = {\n  aprBps: Scalars['BigInt'];\n  duration: Scalars['BigInt'];\n  expirationTime: Scalars['BigInt'];\n  feeAmount: Scalars['BigInt'];\n  isAddNewTranche?: InputMaybe<Scalars['Boolean']>;\n  lenderAddress: Scalars['Address'];\n  loanId: Scalars['String'];\n  principalAmount: Scalars['BigInt'];\n  requiresLiquidation?: InputMaybe<Scalars['Boolean']>;\n  signerAddress?: InputMaybe<Scalars['Address']>;\n  strictImprovement?: InputMaybe<Scalars['Boolean']>;\n  targetPrincipal?: InputMaybe<Array<Scalars['BigInt']>>;\n  trancheIndex?: InputMaybe<Array<Scalars['BigInt']>>;\n};\n\nexport type RenegotiationRequest = Node & {\n  __typename?: 'RenegotiationRequest';\n  createdDate: Scalars['DateTime'];\n  desiredAprBps?: Maybe<Scalars['BigInt']>;\n  desiredDuration?: Maybe<Scalars['BigInt']>;\n  desiredPrincipalAmount?: Maybe<Scalars['BigInt']>;\n  expirationDate: Scalars['DateTime'];\n  id: Scalars['String'];\n  loanId: Scalars['String'];\n};\n\nexport type RenegotiationRequestedNotification = Node &\n  Notification & {\n    __typename?: 'RenegotiationRequestedNotification';\n    aprBps?: Maybe<Scalars['BigInt']>;\n    createdOn: Scalars['DateTime'];\n    duration?: Maybe<Scalars['BigInt']>;\n    id: Scalars['String'];\n    loan: MultiSourceLoan;\n    loanId: Scalars['String'];\n    notificationType: Scalars['String'];\n    principalAmount?: Maybe<Scalars['BigInt']>;\n    readOn?: Maybe<Scalars['DateTime']>;\n    user: User;\n  };\n\nexport type Royalty = Node & {\n  __typename?: 'Royalty';\n  beneficiary: Scalars['Address'];\n  id: Scalars['String'];\n  percentage: Scalars['Float'];\n  required: Scalars['Boolean'];\n};\n\nexport type Sale = Activity &\n  Event &\n  Node & {\n    __typename?: 'Sale';\n    currencyAddress: Scalars['Address'];\n    /** The transfers that moved the sold item from its buyer to where it settled within an hour of the sale, in the sale's transaction or later ones, in log order. Wraps and burns are left out, and the walk stops at the item's next sale or at loan escrow. Empty when the item stayed with the buyer; the last receiver is the wallet it settled in. */\n    forwardTransfers: Array<Transfer>;\n    id: Scalars['String'];\n    marketPlace: Scalars['String'];\n    marketPlaceAddress?: Maybe<Scalars['Address']>;\n    nft: Nft;\n    order?: Maybe<Order>;\n    orderId?: Maybe<Scalars['String']>;\n    originatedFromAsk?: Maybe<Scalars['Boolean']>;\n    price: Scalars['BigInt'];\n    receiver: Scalars['Address'];\n    receiverName?: Maybe<Scalars['String']>;\n    receiverProfilePictureUrl?: Maybe<Scalars['String']>;\n    sender: Scalars['Address'];\n    senderName?: Maybe<Scalars['String']>;\n    senderProfilePictureUrl?: Maybe<Scalars['String']>;\n    /** Every NFT transfer of the sold item, or of its naked or wrapper counterpart, in the sale's transaction, in log order, including the sale's own movement. On a GONDI settlement these are the escrow movements behind the sale. */\n    settlementTransfers: Array<Transfer>;\n    /** @deprecated Deprecated field. */\n    taker?: Maybe<Scalars['Address']>;\n    timestamp: Scalars['DateTime'];\n    txHash: Scalars['Hash'];\n  };\n\nexport type SaleConnection = {\n  __typename?: 'SaleConnection';\n  edges: Array<SaleEdge>;\n  pageInfo: PageInfo;\n  totalCount: Scalars['Int'];\n};\n\nexport type SaleEdge = {\n  __typename?: 'SaleEdge';\n  cursor: Scalars['String'];\n  node: Sale;\n};\n\n/** A single sale event used to build a collection sales history. */\nexport type SaleHistoryItem = {\n  __typename?: 'SaleHistoryItem';\n  /** Currency the sale was paid in. */\n  currency: Currency;\n  nftId: Scalars['Int'];\n  timestamp: Scalars['DateTime'];\n  /** Raw sale price in the sale's own currency. */\n  value: Scalars['BigInt'];\n};\n\nexport type SaleListingUpdate = {\n  __typename?: 'SaleListingUpdate';\n  changedAt: Scalars['DateTime'];\n  collectionId: Scalars['Int'];\n  nft?: Maybe<Nft>;\n  nftId: Scalars['Int'];\n};\n\nexport enum SalesSortField {\n  Price = 'PRICE',\n  PriceUsd = 'PRICE_USD',\n  Timestamp = 'TIMESTAMP',\n}\n\nexport type SalesSortInput = {\n  field: SalesSortField;\n  order: Ordering;\n};\n\nexport type SearchErc20Balance = {\n  __typename?: 'SearchERC20Balance';\n  address: Scalars['String'];\n  amount: Scalars['BigInt'];\n};\n\nexport type SellAndRepayOrder = Event &\n  Node &\n  Order & {\n    __typename?: 'SellAndRepayOrder';\n    /** Whether `cancelTradeOrders` can cancel this order without a transaction: a native bid restricted to our signed zone. */\n    cancelsOffChain: Scalars['Boolean'];\n    createdDate: Scalars['DateTime'];\n    currency: Currency;\n    currencyAddress: Scalars['Address'];\n    evmOrder?: Maybe<Scalars['JSON']>;\n    executions: Scalars['Int'];\n    expiration: Scalars['DateTime'];\n    feeMetadata?: Maybe<OrderFeeMetadata>;\n    fees: Scalars['BigInt'];\n    hidden: Scalars['Boolean'];\n    id: Scalars['String'];\n    isAsk: Scalars['Boolean'];\n    isPrivate: Scalars['Boolean'];\n    loan: MultiSourceLoan;\n    loanDealOffer?: Maybe<Offer>;\n    loanId: Scalars['String'];\n    maker: Scalars['Address'];\n    makerName?: Maybe<Scalars['String']>;\n    makerProfilePictureUrl?: Maybe<Scalars['String']>;\n    marketPlace: Scalars['String'];\n    marketPlaceAddress: Scalars['Address'];\n    maxExecutions: Scalars['Int'];\n    netAmount: Scalars['BigInt'];\n    nft: Nft;\n    nftId: Scalars['Int'];\n    nonce: Scalars['BigInt'];\n    orderType: Scalars['String'];\n    originalId: Scalars['Hash'];\n    platformFees: Array<PlatformFee>;\n    price: Scalars['BigInt'];\n    repaymentCalldata: Scalars['Hex'];\n    signature: Scalars['Signature'];\n    startTime: Scalars['DateTime'];\n    status: Scalars['String'];\n    stealth: Scalars['Boolean'];\n    taker: Scalars['Address'];\n    takerName?: Maybe<Scalars['String']>;\n    takerProfilePictureUrl?: Maybe<Scalars['String']>;\n    timestamp: Scalars['DateTime'];\n    updatedDate: Scalars['DateTime'];\n  };\n\nexport type SellAndRepayOrderEvmOrderArgs = {\n  integerStrings?: Scalars['Boolean'];\n};\n\nexport type SellAndRepayOrderPlatformFeesArgs = {\n  operation: PlatformFeeOperationType;\n};\n\nexport type SellAndRepayOrderSignatureRequestExtraSeaportData =\n  | ExtraSeaportData\n  | SellAndRepayOrder\n  | SignatureRequest;\n\nexport type SetBidOrder = Event &\n  Node &\n  Order & {\n    __typename?: 'SetBidOrder';\n    /** Whether `cancelTradeOrders` can cancel this order without a transaction: a native bid restricted to our signed zone. */\n    cancelsOffChain: Scalars['Boolean'];\n    collectionId: Scalars['Int'];\n    createdDate: Scalars['DateTime'];\n    currency: Currency;\n    currencyAddress: Scalars['Address'];\n    eligibleTokenCount: Scalars['Int'];\n    evmOrder?: Maybe<Scalars['JSON']>;\n    executions: Scalars['Int'];\n    expiration: Scalars['DateTime'];\n    feeMetadata?: Maybe<OrderFeeMetadata>;\n    fees: Scalars['BigInt'];\n    hidden: Scalars['Boolean'];\n    id: Scalars['String'];\n    isAsk: Scalars['Boolean'];\n    isPrivate: Scalars['Boolean'];\n    label?: Maybe<Scalars['String']>;\n    maker: Scalars['Address'];\n    makerName?: Maybe<Scalars['String']>;\n    makerProfilePictureUrl?: Maybe<Scalars['String']>;\n    marketPlace: Scalars['String'];\n    marketPlaceAddress: Scalars['Address'];\n    maxExecutions: Scalars['Int'];\n    netAmount: Scalars['BigInt'];\n    nonce: Scalars['BigInt'];\n    orderType: Scalars['String'];\n    originalId: Scalars['Hash'];\n    platformFees: Array<PlatformFee>;\n    /** Up to 10 of the NFTs the set bid covers, in NFT id order. Stash bids list naked CryptoPunks only; a bid on one Punk previews exactly that Punk. */\n    previewNfts: Array<Nft>;\n    price: Scalars['BigInt'];\n    signature: Scalars['Signature'];\n    startTime: Scalars['DateTime'];\n    status: Scalars['String'];\n    stealth: Scalars['Boolean'];\n    taker: Scalars['Address'];\n    takerName?: Maybe<Scalars['String']>;\n    takerProfilePictureUrl?: Maybe<Scalars['String']>;\n    timestamp: Scalars['DateTime'];\n    updatedDate: Scalars['DateTime'];\n  };\n\nexport type SetBidOrderEvmOrderArgs = {\n  integerStrings?: Scalars['Boolean'];\n};\n\nexport type SetBidOrderPlatformFeesArgs = {\n  operation: PlatformFeeOperationType;\n};\n\nexport type SetOffer = Event &\n  Node &\n  Offer & {\n    __typename?: 'SetOffer';\n    aprBps: Scalars['BigInt'];\n    availablePrincipalAmount: Scalars['BigInt'];\n    borrowerAddress?: Maybe<Scalars['Address']>;\n    borrowerName?: Maybe<Scalars['String']>;\n    borrowerProfilePictureUrl?: Maybe<Scalars['String']>;\n    capacity: Scalars['BigInt'];\n    collateralAddress?: Maybe<Scalars['Address']>;\n    collection: Collection;\n    collectionId?: Maybe<Scalars['Int']>;\n    consumedCapacity: Scalars['BigInt'];\n    contractAddress: Scalars['Address'];\n    createdDate?: Maybe<Scalars['DateTime']>;\n    currency: Currency;\n    duration: Scalars['BigInt'];\n    expirationTime: Scalars['BigInt'];\n    fee: Scalars['BigInt'];\n    hidden?: Maybe<Scalars['Boolean']>;\n    id: Scalars['String'];\n    lenderAddress?: Maybe<Scalars['Address']>;\n    lenderAllowance?: Maybe<Scalars['BigInt']>;\n    lenderAvailableBalance?: Maybe<Scalars['BigInt']>;\n    lenderName?: Maybe<Scalars['String']>;\n    lenderProfilePictureUrl?: Maybe<Scalars['String']>;\n    lenderRefinanceDisabled: Scalars['Boolean'];\n    maxPrincipal: Scalars['BigInt'];\n    maxSeniorRepayment: Scalars['BigInt'];\n    /**\n     * Deprecated field: use maxSeniorRepayment instead.\n     * @deprecated Use maxSeniorRepayment instead.\n     */\n    maxTrancheFloor: Scalars['BigInt'];\n    netPrincipal: Scalars['BigInt'];\n    nftId?: Maybe<Scalars['Int']>;\n    offerHash?: Maybe<Scalars['Hash']>;\n    offerId: Scalars['BigInt'];\n    principalAddress: Scalars['Address'];\n    principalAmount: Scalars['BigInt'];\n    repayment: Scalars['BigInt'];\n    requiresLiquidation?: Maybe<Scalars['Boolean']>;\n    signature?: Maybe<Scalars['Signature']>;\n    signerAddress?: Maybe<Scalars['Address']>;\n    status: Scalars['String'];\n    timestamp: Scalars['DateTime'];\n    validators: Array<OfferValidator>;\n  };\n\nexport type SignatureRequest = {\n  __typename?: 'SignatureRequest';\n  key: Scalars['String'];\n  typedData: TypedData;\n};\n\nexport type SignedRenegotiationOfferInput = {\n  aprBps: Scalars['BigInt'];\n  duration: Scalars['BigInt'];\n  expirationTime: Scalars['BigInt'];\n  feeAmount: Scalars['BigInt'];\n  isAddNewTranche?: InputMaybe<Scalars['Boolean']>;\n  lenderAddress: Scalars['Address'];\n  loanId: Scalars['String'];\n  offerHash: Scalars['Hash'];\n  principalAmount: Scalars['BigInt'];\n  /** Only the loan's borrower and the lender see the offer. Allowed only for a principal worth at least the private minimum in USD. */\n  private?: Scalars['Boolean'];\n  renegotiationId: Scalars['BigInt'];\n  requiresLiquidation?: InputMaybe<Scalars['Boolean']>;\n  signature: Scalars['Signature'];\n  signerAddress?: InputMaybe<Scalars['Address']>;\n  strictImprovement?: InputMaybe<Scalars['Boolean']>;\n  targetPrincipal?: InputMaybe<Array<Scalars['BigInt']>>;\n  trancheIndex?: InputMaybe<Array<Scalars['BigInt']>>;\n};\n\nexport type SingleNftOffer = Event &\n  Node &\n  Offer & {\n    __typename?: 'SingleNFTOffer';\n    aprBps: Scalars['BigInt'];\n    availablePrincipalAmount: Scalars['BigInt'];\n    borrowerAddress?: Maybe<Scalars['Address']>;\n    borrowerName?: Maybe<Scalars['String']>;\n    borrowerProfilePictureUrl?: Maybe<Scalars['String']>;\n    capacity: Scalars['BigInt'];\n    collateralAddress?: Maybe<Scalars['Address']>;\n    collectionId?: Maybe<Scalars['Int']>;\n    consumedCapacity: Scalars['BigInt'];\n    contractAddress: Scalars['Address'];\n    createdDate?: Maybe<Scalars['DateTime']>;\n    currency: Currency;\n    duration: Scalars['BigInt'];\n    expirationTime: Scalars['BigInt'];\n    fee: Scalars['BigInt'];\n    hidden?: Maybe<Scalars['Boolean']>;\n    id: Scalars['String'];\n    lenderAddress?: Maybe<Scalars['Address']>;\n    lenderAllowance?: Maybe<Scalars['BigInt']>;\n    lenderAvailableBalance?: Maybe<Scalars['BigInt']>;\n    lenderName?: Maybe<Scalars['String']>;\n    lenderProfilePictureUrl?: Maybe<Scalars['String']>;\n    lenderRefinanceDisabled: Scalars['Boolean'];\n    maxPrincipal: Scalars['BigInt'];\n    maxSeniorRepayment: Scalars['BigInt'];\n    /**\n     * Deprecated field: use maxSeniorRepayment instead.\n     * @deprecated Use maxSeniorRepayment instead.\n     */\n    maxTrancheFloor: Scalars['BigInt'];\n    netPrincipal: Scalars['BigInt'];\n    nft: Nft;\n    nftId?: Maybe<Scalars['Int']>;\n    offerHash?: Maybe<Scalars['Hash']>;\n    offerId: Scalars['BigInt'];\n    principalAddress: Scalars['Address'];\n    principalAmount: Scalars['BigInt'];\n    repayment: Scalars['BigInt'];\n    requiresLiquidation?: Maybe<Scalars['Boolean']>;\n    signature?: Maybe<Scalars['Signature']>;\n    signerAddress?: Maybe<Scalars['Address']>;\n    statistics: OfferStatistics;\n    status: Scalars['String'];\n    timestamp: Scalars['DateTime'];\n    validators: Array<OfferValidator>;\n  };\n\nexport type SingleNftOfferCollectionOffer = CollectionOffer | SingleNftOffer;\n\nexport type SingleNftOfferCollectionOfferSetOfferTraitOfferRenegotiation =\n  | CollectionOffer\n  | Renegotiation\n  | SetOffer\n  | SingleNftOffer\n  | TraitOffer;\n\nexport type SingleNftOfferCollectionOfferSetOfferTraitOfferRenegotiationConnection = {\n  __typename?: 'SingleNFTOfferCollectionOfferSetOfferTraitOfferRenegotiationConnection';\n  edges: Array<SingleNftOfferCollectionOfferSetOfferTraitOfferRenegotiationEdge>;\n  pageInfo: PageInfo;\n  totalCount: Scalars['Int'];\n};\n\nexport type SingleNftOfferCollectionOfferSetOfferTraitOfferRenegotiationEdge = {\n  __typename?: 'SingleNFTOfferCollectionOfferSetOfferTraitOfferRenegotiationEdge';\n  cursor: Scalars['String'];\n  node: SingleNftOfferCollectionOfferSetOfferTraitOfferRenegotiation;\n};\n\nexport type SingleNftOfferInput = {\n  aprBps: Scalars['BigInt'];\n  borrowerAddress: Scalars['Address'];\n  capacity: Scalars['BigInt'];\n  contractAddress: Scalars['Address'];\n  duration: Scalars['BigInt'];\n  expirationTime: Scalars['BigInt'];\n  fee: Scalars['BigInt'];\n  lenderAddress: Scalars['Address'];\n  lenderRefinanceDisabled?: Scalars['Boolean'];\n  maxSeniorRepayment?: InputMaybe<Scalars['BigInt']>;\n  maxTrancheFloor?: InputMaybe<Scalars['BigInt']>;\n  nftId: Scalars['Int'];\n  offerValidators: Array<OfferValidatorInput>;\n  principalAddress: Scalars['Address'];\n  principalAmount: Scalars['BigInt'];\n  requiresLiquidation?: InputMaybe<Scalars['Boolean']>;\n  signerAddress?: InputMaybe<Scalars['Address']>;\n};\n\nexport type SingleNftOrder = Event &\n  Node &\n  Order & {\n    __typename?: 'SingleNFTOrder';\n    /** Whether `cancelTradeOrders` can cancel this order without a transaction: a native bid restricted to our signed zone. */\n    cancelsOffChain: Scalars['Boolean'];\n    createdDate: Scalars['DateTime'];\n    currency: Currency;\n    currencyAddress: Scalars['Address'];\n    evmOrder?: Maybe<Scalars['JSON']>;\n    executions: Scalars['Int'];\n    expiration: Scalars['DateTime'];\n    feeMetadata?: Maybe<OrderFeeMetadata>;\n    fees: Scalars['BigInt'];\n    hidden: Scalars['Boolean'];\n    id: Scalars['String'];\n    isAsk: Scalars['Boolean'];\n    isPrivate: Scalars['Boolean'];\n    loanDealOffer?: Maybe<Offer>;\n    maker: Scalars['Address'];\n    makerName?: Maybe<Scalars['String']>;\n    makerProfilePictureUrl?: Maybe<Scalars['String']>;\n    marketPlace: Scalars['String'];\n    marketPlaceAddress: Scalars['Address'];\n    maxExecutions: Scalars['Int'];\n    netAmount: Scalars['BigInt'];\n    nft: Nft;\n    nftId: Scalars['Int'];\n    nonce: Scalars['BigInt'];\n    orderType: Scalars['String'];\n    originalId: Scalars['Hash'];\n    platformFees: Array<PlatformFee>;\n    price: Scalars['BigInt'];\n    signature: Scalars['Signature'];\n    startTime: Scalars['DateTime'];\n    status: Scalars['String'];\n    stealth: Scalars['Boolean'];\n    taker: Scalars['Address'];\n    takerName?: Maybe<Scalars['String']>;\n    takerProfilePictureUrl?: Maybe<Scalars['String']>;\n    timestamp: Scalars['DateTime'];\n    updatedDate: Scalars['DateTime'];\n  };\n\nexport type SingleNftOrderEvmOrderArgs = {\n  integerStrings?: Scalars['Boolean'];\n};\n\nexport type SingleNftOrderPlatformFeesArgs = {\n  operation: PlatformFeeOperationType;\n};\n\nexport type SingleNftOrderInput = {\n  amount?: InputMaybe<Scalars['BigInt']>;\n  contractAddress: Scalars['Address'];\n  currencyAddress: Scalars['Address'];\n  expirationTime: Scalars['BigInt'];\n  fees?: InputMaybe<Array<OrderFee>>;\n  isAsk?: InputMaybe<Scalars['Boolean']>;\n  price?: InputMaybe<Scalars['BigInt']>;\n  signature?: InputMaybe<Scalars['Signature']>;\n  startTime: Scalars['BigInt'];\n  stealth?: InputMaybe<Scalars['Boolean']>;\n  taker?: InputMaybe<Scalars['Address']>;\n  tokenId: Scalars['BigInt'];\n};\n\nexport type SingleNftOrderSignatureRequest = SignatureRequest | SingleNftOrder;\n\nexport type SingleNftSignedOfferInput = {\n  aprBps: Scalars['BigInt'];\n  borrowerAddress: Scalars['Address'];\n  capacity: Scalars['BigInt'];\n  contractAddress: Scalars['Address'];\n  duration: Scalars['BigInt'];\n  expirationTime: Scalars['BigInt'];\n  fee: Scalars['BigInt'];\n  lenderAddress: Scalars['Address'];\n  lenderRefinanceDisabled?: Scalars['Boolean'];\n  maxSeniorRepayment?: InputMaybe<Scalars['BigInt']>;\n  maxTrancheFloor?: InputMaybe<Scalars['BigInt']>;\n  nftId: Scalars['Int'];\n  offerHash: Scalars['Hash'];\n  offerId: Scalars['BigInt'];\n  offerValidators: Array<OfferValidatorInput>;\n  principalAddress: Scalars['Address'];\n  principalAmount: Scalars['BigInt'];\n  requiresLiquidation?: InputMaybe<Scalars['Boolean']>;\n  signature: Scalars['Signature'];\n  signerAddress?: InputMaybe<Scalars['Address']>;\n};\n\nexport type SiweInput = {\n  message: Scalars['String'];\n  signature: Scalars['Signature'];\n};\n\nexport type SluggedTokenInput = {\n  slug: Scalars['String'];\n  tokenId: Scalars['BigInt'];\n};\n\n/** This is the definition of a source. Sources are the lender/s of a loan. Take into account that the loan fields can change if renegotiation or refinance happens.If a renegotiation or refinance happens on a loan, the sources compromised turn into LostSource's. */\nexport type Source = Node & {\n  __typename?: 'Source';\n  accruedInterest: Scalars['BigInt'];\n  aprBps: Scalars['BigInt'];\n  borrowerEaprBps: Scalars['BigInt'];\n  earnedInterest: Scalars['BigInt'];\n  effectiveDuration: Scalars['BigInt'];\n  endDate: Scalars['DateTime'];\n  expectedInterestLeft: Scalars['BigInt'];\n  id: Scalars['String'];\n  lenderAddress: Scalars['String'];\n  lenderEaprBps: Scalars['BigInt'];\n  lenderName?: Maybe<Scalars['String']>;\n  lenderProfilePictureUrl?: Maybe<Scalars['String']>;\n  loan: MultiSourceLoan;\n  loanId: Scalars['String'];\n  loanIndex?: Maybe<Scalars['Int']>;\n  loanReferenceId: Scalars['String'];\n  netAccruedInterest: Scalars['BigInt'];\n  netAprBps: Scalars['BigInt'];\n  netEarnedInterest: Scalars['BigInt'];\n  netExpectedInterestLeft: Scalars['BigInt'];\n  netLenderEaprBps: Scalars['BigInt'];\n  netOriginationFee: Scalars['BigInt'];\n  netProfit: Scalars['BigInt'];\n  netRepaidInterest: Scalars['BigInt'];\n  originationFee: Scalars['BigInt'];\n  principalAmount: Scalars['BigInt'];\n  profit: Scalars['BigInt'];\n  refinanceNetAprBps: Scalars['BigInt'];\n  repaidInterest: Scalars['BigInt'];\n  seniorPrincipalAmount?: Maybe<Scalars['BigInt']>;\n  startTime: Scalars['DateTime'];\n};\n\nexport type SourceHistory = Node & {\n  __typename?: 'SourceHistory';\n  accruedInterest: Scalars['BigInt'];\n  aprBps: Scalars['BigInt'];\n  id: Scalars['String'];\n  lenderAddress: Scalars['String'];\n  lenderName?: Maybe<Scalars['String']>;\n  lenderProfilePictureUrl?: Maybe<Scalars['String']>;\n  loanId: Scalars['String'];\n  loanIndex?: Maybe<Scalars['Int']>;\n  originationFee: Scalars['BigInt'];\n  principalAmount: Scalars['BigInt'];\n  seniorPrincipalAmount?: Maybe<Scalars['BigInt']>;\n  startTime: Scalars['DateTime'];\n};\n\nexport type SourceLostSource = LostSource | Source;\n\nexport type SourceLostSourceConnection = {\n  __typename?: 'SourceLostSourceConnection';\n  edges: Array<SourceLostSourceEdge>;\n  pageInfo: PageInfo;\n  totalCount: Scalars['Int'];\n};\n\nexport type SourceLostSourceEdge = {\n  __typename?: 'SourceLostSourceEdge';\n  cursor: Scalars['String'];\n  node: SourceLostSource;\n};\n\nexport enum SourceSortField {\n  AccruedInterest = 'ACCRUED_INTEREST',\n  AprBps = 'APR_BPS',\n  DueDate = 'DUE_DATE',\n  Duration = 'DURATION',\n  EarnedInterest = 'EARNED_INTEREST',\n  EndDate = 'END_DATE',\n  OriginationFee = 'ORIGINATION_FEE',\n  PrincipalAmount = 'PRINCIPAL_AMOUNT',\n  RefinanceNetAprBps = 'REFINANCE_NET_APR_BPS',\n  RepaidInterest = 'REPAID_INTEREST',\n  StartTime = 'START_TIME',\n}\n\nexport type SourceSortInput = {\n  field: SourceSortField;\n  order: Ordering;\n};\n\nexport type SourceStatisticsFromCollection = {\n  __typename?: 'SourceStatisticsFromCollection';\n  collection: Collection;\n  collectionId: Scalars['String'];\n  stats: SourcesStatistics;\n};\n\nexport type SourcesStatistics = {\n  __typename?: 'SourcesStatistics';\n  count: Scalars['Int'];\n  earnedInterest: Scalars['BigInt'];\n  expectedInterestLeft: Scalars['BigInt'];\n  /** Yearly rate `earnedInterest` grows at: principal times APR, summed over the sources of open (`LOAN_INITIATED`) loans, including loans past expiry, whose interest keeps accruing; loans in any other status add nothing. Raw units of the currency. */\n  interestAccrualPerYear: Scalars['BigInt'];\n  netEarnedInterest: Scalars['BigInt'];\n  netExpectedInterestLeft: Scalars['BigInt'];\n  /** Yearly rate `netEarnedInterest` grows at: `interestAccrualPerYear` net of each source's protocol fee. Raw units of the currency. */\n  netInterestAccrualPerYear: Scalars['BigInt'];\n  netOriginationFee: Scalars['BigInt'];\n  netProfit: Scalars['BigInt'];\n  netRepaidInterest: Scalars['BigInt'];\n  originationFee: Scalars['BigInt'];\n  outstanding: Scalars['BigInt'];\n  principal: Scalars['BigInt'];\n  profit: Scalars['BigInt'];\n  repaidInterest: Scalars['BigInt'];\n  wavgAprBps: Scalars['BigInt'];\n  wavgLenderEaprBps: Scalars['BigInt'];\n  wavgNetAprBps: Scalars['BigInt'];\n  wavgNetLenderEaprBps: Scalars['BigInt'];\n};\n\nexport type StatByCollection = {\n  __typename?: 'StatByCollection';\n  collection: Collection;\n  value: Scalars['BigInt'];\n};\n\nexport type StealthMaskedOrder = Event &\n  Node &\n  Order & {\n    __typename?: 'StealthMaskedOrder';\n    artist?: Maybe<Artist>;\n    /** Whether `cancelTradeOrders` can cancel this order without a transaction: a native bid restricted to our signed zone. */\n    cancelsOffChain: Scalars['Boolean'];\n    collection?: Maybe<Collection>;\n    createdDate: Scalars['DateTime'];\n    currency: Currency;\n    currencyAddress: Scalars['Address'];\n    evmOrder?: Maybe<Scalars['JSON']>;\n    executions: Scalars['Int'];\n    expiration: Scalars['DateTime'];\n    feeMetadata?: Maybe<OrderFeeMetadata>;\n    fees: Scalars['BigInt'];\n    hidden: Scalars['Boolean'];\n    highestBidTrait?: Maybe<Trait>;\n    id: Scalars['String'];\n    isAsk: Scalars['Boolean'];\n    isPrivate: Scalars['Boolean'];\n    itemType?: Maybe<ItemType>;\n    maker: Scalars['Address'];\n    makerName?: Maybe<Scalars['String']>;\n    makerProfilePictureUrl?: Maybe<Scalars['String']>;\n    marketPlace: Scalars['String'];\n    marketPlaceAddress: Scalars['Address'];\n    maxExecutions: Scalars['Int'];\n    netAmount: Scalars['BigInt'];\n    nonce: Scalars['BigInt'];\n    orderType: Scalars['String'];\n    originalId: Scalars['Hash'];\n    platformFees: Array<PlatformFee>;\n    price: Scalars['BigInt'];\n    revealedGroup?: Maybe<StealthRevealedGroup>;\n    signature: Scalars['Signature'];\n    startTime: Scalars['DateTime'];\n    status: Scalars['String'];\n    stealth: Scalars['Boolean'];\n    taker: Scalars['Address'];\n    takerName?: Maybe<Scalars['String']>;\n    takerProfilePictureUrl?: Maybe<Scalars['String']>;\n    timestamp: Scalars['DateTime'];\n    updatedDate: Scalars['DateTime'];\n  };\n\nexport type StealthMaskedOrderEvmOrderArgs = {\n  integerStrings?: Scalars['Boolean'];\n};\n\nexport type StealthMaskedOrderPlatformFeesArgs = {\n  operation: PlatformFeeOperationType;\n};\n\nexport type StealthRevealedGroup = {\n  __typename?: 'StealthRevealedGroup';\n  images: Array<Asset>;\n  tier?: Maybe<Scalars['Int']>;\n  totalCount: Scalars['Int'];\n};\n\nexport type Subscription = {\n  __typename?: 'Subscription';\n  /** Stream new activity-feed events. Filters are optional and additive; unset or empty values mean the unfiltered stream. Most argument names match `listEvents` so clients can pass their existing query variables (`traits` and `currencyAddresses` are not supported yet). `artists`, `blockchains` and `priceUsd` keep what `listEvents` would list with them; the `priceUsd` bound is converted at the USDC rate of when the stream starts. `marketplaces` follows the marketplace shown in the activity feed: sales and orders use their stored marketplace, transfers match none, and GONDI lending and trade events match `NATIVE`. The `nfts` filter also matches collection-scoped events (collection loan offers and collection/trait bids) through the NFTs' collections; trait bids therefore match at collection granularity, not per trait. Set and trait loan offers match when their signed NFT set includes one of the NFTs. `topEvents` keeps what `listEvents(topEvents: true)` lists and drops the event types it does not cover. `following` matches what `listEvents(following: true)` lists, read from the account's follows when the stream starts: a follow made while it runs applies once the client subscribes again. With nothing followed, or no signed-in account, the stream stays open and emits nothing. */\n  activityUpdates: ActivityUpdate;\n  /** Stream statistics of the active loans in `currencyAddresses`: one snapshot on subscribe, then a fresh one whenever a loan in those currencies is created, changes or is removed. Amounts are summed in raw units, so pass currencies that share decimals (for example WETH and RWETH). */\n  lendingMarketStatisticsUpdates: LendingMarketStatistics;\n  saleListingUpdates: SaleListingUpdate;\n};\n\nexport type SubscriptionActivityUpdatesArgs = {\n  artists?: InputMaybe<Array<Scalars['Int']>>;\n  blockchains?: InputMaybe<Array<BlockchainEnum>>;\n  collections?: InputMaybe<Array<Scalars['Int']>>;\n  eventTypes?: InputMaybe<Array<EventType>>;\n  following?: InputMaybe<Scalars['Boolean']>;\n  marketplaces?: InputMaybe<Array<MarketPlaceType>>;\n  nfts?: InputMaybe<Array<Scalars['Int']>>;\n  priceUsd?: InputMaybe<Interval>;\n  topEvents?: InputMaybe<Scalars['Boolean']>;\n  users?: InputMaybe<Array<Scalars['Address']>>;\n  usersSide?: EventSide;\n};\n\nexport type SubscriptionLendingMarketStatisticsUpdatesArgs = {\n  currencyAddresses: Array<Scalars['Address']>;\n};\n\nexport type SubscriptionSaleListingUpdatesArgs = {\n  collections?: InputMaybe<Array<Scalars['Int']>>;\n  marketplaces?: InputMaybe<Array<MarketPlaceType>>;\n  nftIds?: InputMaybe<Array<Scalars['Int']>>;\n};\n\nexport type SwapQuote = {\n  __typename?: 'SwapQuote';\n  feeBps: Scalars['Int'];\n  rate: Scalars['Float'];\n  slippageBps: Scalars['Int'];\n};\n\nexport type TermsFilter = {\n  aprBps?: InputMaybe<Interval>;\n  duration?: InputMaybe<Interval>;\n  ethProfitLeft?: InputMaybe<Interval>;\n  fee?: InputMaybe<Interval>;\n  /** Loans only: the loan's original principal over its NFT's highest bid, in basis points. A loan whose NFT has no bid has no LTV and is excluded whenever a bound is set. */\n  ltvBps?: InputMaybe<Interval>;\n  maxPrincipal?: InputMaybe<Interval>;\n  netPrincipal?: InputMaybe<Interval>;\n  principal?: InputMaybe<Interval>;\n  profitLeft?: InputMaybe<Interval>;\n  remainingTime?: InputMaybe<Interval>;\n};\n\nexport enum TokenStandardType {\n  Cryptopunks = 'CRYPTOPUNKS',\n  Erc721 = 'ERC721',\n  Erc1155 = 'ERC1155',\n  OldErc721 = 'OLD_ERC721',\n}\n\n/** Aggregate identity and tenure metrics over the sample of a collection's largest holders. */\nexport type TopHoldersInfo = {\n  __typename?: 'TopHoldersInfo';\n  anonymousHolders: Scalars['Int'];\n  averageBluechipHoldings: Scalars['Float'];\n  averageDaysHeld?: Maybe<Scalars['Float']>;\n  averageDaysHeldPerItem?: Maybe<Scalars['Float']>;\n  multiBluechipHolders: Scalars['Int'];\n  sampleSize: Scalars['Int'];\n};\n\nexport type TopLender = {\n  __typename?: 'TopLender';\n  defaultCount: Scalars['Int'];\n  defaultRateBps?: Maybe<Scalars['BigInt']>;\n  earnings?: Maybe<Scalars['BigInt']>;\n  earningsUsd?: Maybe<Scalars['Float']>;\n  name?: Maybe<Scalars['String']>;\n  netEaprBps?: Maybe<Scalars['BigInt']>;\n  originatedCount: Scalars['Int'];\n  outstandingPrincipal?: Maybe<Scalars['BigInt']>;\n  outstandingUsd?: Maybe<Scalars['Float']>;\n  paidInterest?: Maybe<Scalars['BigInt']>;\n  profilePictureUrl?: Maybe<Scalars['String']>;\n  rank: Scalars['Int'];\n  refinancedCount: Scalars['Int'];\n  settledCount: Scalars['Int'];\n  walletAddress: Scalars['Address'];\n};\n\nexport type TopLenders = {\n  __typename?: 'TopLenders';\n  asOf: Scalars['DateTime'];\n  endCursor?: Maybe<Scalars['String']>;\n  excludedCount: Scalars['Int'];\n  hasNextPage: Scalars['Boolean'];\n  rows: Array<TopLender>;\n  totalCount: Scalars['Int'];\n  viewerRank?: Maybe<Scalars['Int']>;\n};\n\nexport type TopUpRequest = Node & {\n  __typename?: 'TopUpRequest';\n  createdDate: Scalars['DateTime'];\n  desiredAprBps?: Maybe<Scalars['BigInt']>;\n  desiredTopUp?: Maybe<Scalars['BigInt']>;\n  expirationDate: Scalars['DateTime'];\n  id: Scalars['String'];\n  loanId: Scalars['String'];\n};\n\nexport type TopUpRequestedNotification = Node &\n  Notification & {\n    __typename?: 'TopUpRequestedNotification';\n    aprBps?: Maybe<Scalars['BigInt']>;\n    createdOn: Scalars['DateTime'];\n    id: Scalars['String'];\n    loan: MultiSourceLoan;\n    loanId: Scalars['String'];\n    notificationType: Scalars['String'];\n    readOn?: Maybe<Scalars['DateTime']>;\n    topUp?: Maybe<Scalars['BigInt']>;\n    user: User;\n  };\n\nexport type Trait = Node & {\n  __typename?: 'Trait';\n  collectionId: Scalars['String'];\n  id: Scalars['String'];\n  isSynthetic: Scalars['Boolean'];\n  key: Scalars['String'];\n  sampleAsset?: Maybe<Asset>;\n  statistics: TraitStatistics;\n  traitType?: Maybe<TraitType>;\n  type: Scalars['String'];\n  value: Scalars['String'];\n};\n\nexport type TraitStatisticsArgs = {\n  market?: InputMaybe<TraitMarketFilter>;\n};\n\nexport type TraitFilterOption = {\n  __typename?: 'TraitFilterOption';\n  traitKeyValues: Array<TraitKeyValueOptions>;\n};\n\nexport type TraitKeyOption = {\n  __typename?: 'TraitKeyOption';\n  count: Scalars['Int'];\n  key: Scalars['String'];\n  type: TraitKeyOptionType;\n};\n\nexport type TraitKeyOptionConnection = {\n  __typename?: 'TraitKeyOptionConnection';\n  edges: Array<TraitKeyOptionEdge>;\n  pageInfo: PageInfo;\n  totalCount: Scalars['Int'];\n};\n\nexport type TraitKeyOptionEdge = {\n  __typename?: 'TraitKeyOptionEdge';\n  cursor: Scalars['String'];\n  node: TraitKeyOption;\n};\n\nexport enum TraitKeyOptionType {\n  Range = 'RANGE',\n  SingleValue = 'SINGLE_VALUE',\n}\n\nexport type TraitKeyValueOptions = {\n  __typename?: 'TraitKeyValueOptions';\n  key: Scalars['String'];\n  values: Array<TraitValueOptions>;\n};\n\nexport type TraitKeyValueOptionsInput = {\n  key: Scalars['String'];\n  values: Array<Scalars['String']>;\n};\n\nexport type TraitMarketFilter = {\n  currencyAddresses?: InputMaybe<Array<Scalars['Address']>>;\n  marketplaces?: InputMaybe<Array<MarketPlaceType>>;\n  showLowOffers?: Scalars['Boolean'];\n};\n\nexport type TraitOffer = Event &\n  Node &\n  Offer & {\n    __typename?: 'TraitOffer';\n    aprBps: Scalars['BigInt'];\n    availablePrincipalAmount: Scalars['BigInt'];\n    borrowerAddress?: Maybe<Scalars['Address']>;\n    borrowerName?: Maybe<Scalars['String']>;\n    borrowerProfilePictureUrl?: Maybe<Scalars['String']>;\n    capacity: Scalars['BigInt'];\n    collateralAddress?: Maybe<Scalars['Address']>;\n    collection: Collection;\n    collectionId?: Maybe<Scalars['Int']>;\n    consumedCapacity: Scalars['BigInt'];\n    contractAddress: Scalars['Address'];\n    createdDate?: Maybe<Scalars['DateTime']>;\n    currency: Currency;\n    duration: Scalars['BigInt'];\n    expirationTime: Scalars['BigInt'];\n    fee: Scalars['BigInt'];\n    hidden?: Maybe<Scalars['Boolean']>;\n    id: Scalars['String'];\n    lenderAddress?: Maybe<Scalars['Address']>;\n    lenderAllowance?: Maybe<Scalars['BigInt']>;\n    lenderAvailableBalance?: Maybe<Scalars['BigInt']>;\n    lenderName?: Maybe<Scalars['String']>;\n    lenderProfilePictureUrl?: Maybe<Scalars['String']>;\n    lenderRefinanceDisabled: Scalars['Boolean'];\n    maxPrincipal: Scalars['BigInt'];\n    maxSeniorRepayment: Scalars['BigInt'];\n    /**\n     * Deprecated field: use maxSeniorRepayment instead.\n     * @deprecated Use maxSeniorRepayment instead.\n     */\n    maxTrancheFloor: Scalars['BigInt'];\n    netPrincipal: Scalars['BigInt'];\n    nftId?: Maybe<Scalars['Int']>;\n    offerHash?: Maybe<Scalars['Hash']>;\n    offerId: Scalars['BigInt'];\n    principalAddress: Scalars['Address'];\n    principalAmount: Scalars['BigInt'];\n    repayment: Scalars['BigInt'];\n    requiresLiquidation?: Maybe<Scalars['Boolean']>;\n    signature?: Maybe<Scalars['Signature']>;\n    signerAddress?: Maybe<Scalars['Address']>;\n    status: Scalars['String'];\n    timestamp: Scalars['DateTime'];\n    traits: Array<Trait>;\n    validators: Array<OfferValidator>;\n  };\n\nexport type TraitOfferInput = {\n  aprBps: Scalars['BigInt'];\n  borrowerAddress: Scalars['Address'];\n  capacity: Scalars['BigInt'];\n  contractAddress: Scalars['Address'];\n  duration: Scalars['BigInt'];\n  expirationTime: Scalars['BigInt'];\n  fee: Scalars['BigInt'];\n  lenderAddress: Scalars['Address'];\n  lenderRefinanceDisabled?: Scalars['Boolean'];\n  maxSeniorRepayment?: InputMaybe<Scalars['BigInt']>;\n  maxTrancheFloor?: InputMaybe<Scalars['BigInt']>;\n  offerValidators: Array<OfferValidatorInput>;\n  principalAddress: Scalars['Address'];\n  principalAmount: Scalars['BigInt'];\n  requiresLiquidation?: InputMaybe<Scalars['Boolean']>;\n  signerAddress?: InputMaybe<Scalars['Address']>;\n  traitIds: Array<Scalars['Int']>;\n};\n\nexport type TraitOrder = Event &\n  Node &\n  Order & {\n    __typename?: 'TraitOrder';\n    /** Whether `cancelTradeOrders` can cancel this order without a transaction: a native bid restricted to our signed zone. */\n    cancelsOffChain: Scalars['Boolean'];\n    collection: Collection;\n    collectionId: Scalars['Int'];\n    createdDate: Scalars['DateTime'];\n    currency: Currency;\n    currencyAddress: Scalars['Address'];\n    /** Edition this trait order targets, when the trait_id is the synthetic trait of an edition. Null for ordinary trait orders. */\n    edition?: Maybe<Edition>;\n    evmOrder?: Maybe<Scalars['JSON']>;\n    executions: Scalars['Int'];\n    expiration: Scalars['DateTime'];\n    feeMetadata?: Maybe<OrderFeeMetadata>;\n    fees: Scalars['BigInt'];\n    hidden: Scalars['Boolean'];\n    id: Scalars['String'];\n    isAsk: Scalars['Boolean'];\n    isPrivate: Scalars['Boolean'];\n    maker: Scalars['Address'];\n    makerName?: Maybe<Scalars['String']>;\n    makerProfilePictureUrl?: Maybe<Scalars['String']>;\n    marketPlace: Scalars['String'];\n    marketPlaceAddress: Scalars['Address'];\n    maxExecutions: Scalars['Int'];\n    netAmount: Scalars['BigInt'];\n    nonce: Scalars['BigInt'];\n    orderType: Scalars['String'];\n    originalId: Scalars['Hash'];\n    platformFees: Array<PlatformFee>;\n    price: Scalars['BigInt'];\n    signature: Scalars['Signature'];\n    startTime: Scalars['DateTime'];\n    status: Scalars['String'];\n    stealth: Scalars['Boolean'];\n    taker: Scalars['Address'];\n    takerName?: Maybe<Scalars['String']>;\n    takerProfilePictureUrl?: Maybe<Scalars['String']>;\n    timestamp: Scalars['DateTime'];\n    trait: Trait;\n    traitId: Scalars['Int'];\n    updatedDate: Scalars['DateTime'];\n  };\n\nexport type TraitOrderEvmOrderArgs = {\n  integerStrings?: Scalars['Boolean'];\n};\n\nexport type TraitOrderPlatformFeesArgs = {\n  operation: PlatformFeeOperationType;\n};\n\nexport type TraitOrderInput = {\n  amount?: InputMaybe<Scalars['BigInt']>;\n  currencyAddress: Scalars['Address'];\n  expirationTime: Scalars['BigInt'];\n  fees?: InputMaybe<Array<OrderFee>>;\n  isAsk?: InputMaybe<Scalars['Boolean']>;\n  maxExecutions?: InputMaybe<Scalars['BigInt']>;\n  price?: InputMaybe<Scalars['BigInt']>;\n  signature?: InputMaybe<Scalars['Signature']>;\n  startTime: Scalars['BigInt'];\n  stealth?: InputMaybe<Scalars['Boolean']>;\n  taker?: InputMaybe<Scalars['Address']>;\n  traitIds: Array<Scalars['Int']>;\n};\n\nexport type TraitOrderSignatureRequest = MultipleTraitOrder | SignatureRequest | TraitOrder;\n\nexport type TraitRangeOptionsInput = {\n  key: Scalars['String'];\n  range: RangeInput;\n};\n\nexport type TraitSignedOfferInput = {\n  aprBps: Scalars['BigInt'];\n  borrowerAddress: Scalars['Address'];\n  capacity: Scalars['BigInt'];\n  contractAddress: Scalars['Address'];\n  duration: Scalars['BigInt'];\n  expirationTime: Scalars['BigInt'];\n  fee: Scalars['BigInt'];\n  lenderAddress: Scalars['Address'];\n  lenderRefinanceDisabled?: Scalars['Boolean'];\n  maxSeniorRepayment?: InputMaybe<Scalars['BigInt']>;\n  maxTrancheFloor?: InputMaybe<Scalars['BigInt']>;\n  offerHash: Scalars['Hash'];\n  offerId: Scalars['BigInt'];\n  offerValidators: Array<OfferValidatorInput>;\n  principalAddress: Scalars['Address'];\n  principalAmount: Scalars['BigInt'];\n  requiresLiquidation?: InputMaybe<Scalars['Boolean']>;\n  signature: Scalars['Signature'];\n  signerAddress?: InputMaybe<Scalars['Address']>;\n  traitIds: Array<Scalars['Int']>;\n};\n\nexport type TraitStatistics = {\n  __typename?: 'TraitStatistics';\n  floorPrice?: Maybe<CurrencyAmount>;\n  higherItemOfferCount: Scalars['Int'];\n  highestBid?: Maybe<Order>;\n  lastSale?: Maybe<Sale>;\n  rarity: Scalars['Int'];\n  topItemOffer?: Maybe<Order>;\n  topItemOfferUsd?: Maybe<Scalars['Float']>;\n  topOffer?: Maybe<Order>;\n  topOfferUsd?: Maybe<Scalars['Float']>;\n};\n\nexport type TraitType = Node & {\n  __typename?: 'TraitType';\n  collectionId: Scalars['Int'];\n  count: Scalars['Int'];\n  id: Scalars['String'];\n  isSynthetic: Scalars['Boolean'];\n  key: Scalars['String'];\n  max?: Maybe<Scalars['Float']>;\n  min?: Maybe<Scalars['Float']>;\n  valueType: Scalars['String'];\n};\n\nexport type TraitTypeConnection = {\n  __typename?: 'TraitTypeConnection';\n  edges: Array<TraitTypeEdge>;\n  pageInfo: PageInfo;\n  totalCount: Scalars['Int'];\n};\n\nexport type TraitTypeEdge = {\n  __typename?: 'TraitTypeEdge';\n  cursor: Scalars['String'];\n  node: TraitType;\n};\n\nexport type TraitValue = Node & {\n  __typename?: 'TraitValue';\n  collectionId: Scalars['Int'];\n  id: Scalars['String'];\n  isSynthetic: Scalars['Boolean'];\n  key: Scalars['String'];\n  rarity: Scalars['Int'];\n  sampleAsset?: Maybe<Asset>;\n  sampleAssetId?: Maybe<Scalars['Int']>;\n  statistics: TraitStatistics;\n  value: Scalars['String'];\n};\n\nexport type TraitValueStatisticsArgs = {\n  market?: InputMaybe<TraitMarketFilter>;\n};\n\nexport type TraitValueConnection = {\n  __typename?: 'TraitValueConnection';\n  edges: Array<TraitValueEdge>;\n  pageInfo: PageInfo;\n  totalCount: Scalars['Int'];\n};\n\nexport type TraitValueEdge = {\n  __typename?: 'TraitValueEdge';\n  cursor: Scalars['String'];\n  node: TraitValue;\n};\n\nexport type TraitValueOptions = {\n  __typename?: 'TraitValueOptions';\n  rarity: Scalars['Int'];\n  value: Scalars['String'];\n};\n\nexport enum TraitValueSortField {\n  Alphabetical = 'ALPHABETICAL',\n  Floor = 'FLOOR',\n  LastSale = 'LAST_SALE',\n  Rarity = 'RARITY',\n  TopOffer = 'TOP_OFFER',\n}\n\nexport type TraitValueSortInput = {\n  field: TraitValueSortField;\n  order: Ordering;\n};\n\nexport enum TraitValueType {\n  Enum = 'ENUM',\n  Range = 'RANGE',\n}\n\nexport type Transfer = Activity &\n  Event &\n  Node & {\n    __typename?: 'Transfer';\n    id: Scalars['String'];\n    nft: Nft;\n    receiver: Scalars['Address'];\n    receiverName?: Maybe<Scalars['String']>;\n    receiverProfilePictureUrl?: Maybe<Scalars['String']>;\n    sender: Scalars['Address'];\n    senderName?: Maybe<Scalars['String']>;\n    senderProfilePictureUrl?: Maybe<Scalars['String']>;\n    timestamp: Scalars['DateTime'];\n    txHash: Scalars['Hash'];\n  };\n\nexport type TypedData = {\n  __typename?: 'TypedData';\n  domain: Scalars['JSON'];\n  message: Scalars['JSON'];\n  primaryType: Scalars['String'];\n  types: Scalars['JSON'];\n};\n\nexport type UnderfundedOfferNotification = Node &\n  Notification & {\n    __typename?: 'UnderfundedOfferNotification';\n    createdOn: Scalars['DateTime'];\n    id: Scalars['String'];\n    notificationType: Scalars['String'];\n    offer: Offer;\n    offerId: Scalars['String'];\n    readOn?: Maybe<Scalars['DateTime']>;\n    user: User;\n  };\n\nexport type User = Node & {\n  __typename?: 'User';\n  about?: Maybe<Scalars['String']>;\n  activeLoansAsBorrowerCount: Scalars['Int'];\n  activeLoansAsLenderCount: Scalars['Int'];\n  /** @deprecated DEPRECATED */\n  blockchain: Scalars['String'];\n  createdDate: Scalars['DateTime'];\n  ensName?: Maybe<Scalars['String']>;\n  heldNftsCount: Scalars['Int'];\n  id: Scalars['String'];\n  intercomUserJwt?: Maybe<Scalars['String']>;\n  linkedWallets: Array<LinkedWallets>;\n  mail?: Maybe<Scalars['String']>;\n  mailValidationCodeExpiration?: Maybe<Scalars['DateTime']>;\n  mailValidationDate?: Maybe<Scalars['DateTime']>;\n  mainMail?: Maybe<Scalars['String']>;\n  /** @deprecated DEPRECATED */\n  originalProfilePicture?: Maybe<Scalars['String']>;\n  profilePictureId?: Maybe<Scalars['Int']>;\n  /** @deprecated DEPRECATED */\n  size64ProfilePicture?: Maybe<Scalars['String']>;\n  /** @deprecated DEPRECATED */\n  size128ProfilePicture?: Maybe<Scalars['String']>;\n  /** @deprecated DEPRECATED */\n  size256ProfilePicture?: Maybe<Scalars['String']>;\n  /** @deprecated DEPRECATED */\n  size512ProfilePicture?: Maybe<Scalars['String']>;\n  statistics: UserStatistics;\n  twitterHandle?: Maybe<Scalars['String']>;\n  updatedAt?: Maybe<Scalars['DateTime']>;\n  url?: Maybe<Scalars['String']>;\n  usedProduct: Scalars['Boolean'];\n  username?: Maybe<Scalars['String']>;\n  usernameSuggestions: Array<Scalars['String']>;\n  walletAddress: Scalars['Address'];\n  watchNotificationsEnabled: Scalars['Boolean'];\n};\n\nexport type UserConnection = {\n  __typename?: 'UserConnection';\n  edges: Array<UserEdge>;\n  pageInfo: PageInfo;\n  totalCount: Scalars['Int'];\n};\n\nexport type UserEdge = {\n  __typename?: 'UserEdge';\n  cursor: Scalars['String'];\n  node: User;\n};\n\nexport type UserFilter = {\n  onlyOrExclude: Scalars['Boolean'];\n  userId: Scalars['Int'];\n};\n\nexport type UserStatistics = {\n  __typename?: 'UserStatistics';\n  /**\n   * Deprecated field. Stat will be removed\n   * @deprecated Stat will be removed\n   */\n  defaultedPrincipal: Scalars['BigInt'];\n  /**\n   * Deprecated field. Use get_sources_statistics_by_collection instead.\n   * @deprecated Use get_sources_statistics_by_collection instead.\n   */\n  interestEarnedByCollection: Array<StatByCollection>;\n  /**\n   * Deprecated field. Use get_sources_statistics to get source stats.\n   * @deprecated Use get_sources_statistics to get source stats.\n   */\n  loanCount: Scalars['BigInt'];\n  /**\n   * Deprecated field. Use get_sources_statistics_by_collection instead.\n   * @deprecated Use get_sources_statistics_by_collection instead.\n   */\n  loanCountByCollection: Array<StatByCollection>;\n  /**\n   * Deprecated field. Use get_sources_statistics_by_collection instead.\n   * @deprecated Use get_sources_statistics_by_collection instead.\n   */\n  loanPrincipalByCollection: Array<StatByCollection>;\n  /**\n   * Deprecated field. Use get_loan_activities_statistics_by_month instead.\n   * @deprecated Use get_loan_activities_statistics_by_month instead.\n   */\n  originationCountAndPrincipalByMonth: Array<Array<Scalars['BigInt']>>;\n  /**\n   * Deprecated field. Use get_sources_statistics to get source stats.\n   * @deprecated Use get_sources_statistics to get source stats.\n   */\n  outstandingAccruedInterest: Scalars['BigInt'];\n  /**\n   * Deprecated field. Use get_sources_statistics to get source stats.\n   * @deprecated Use get_sources_statistics to get source stats.\n   */\n  outstandingPrincipal: Scalars['BigInt'];\n  /**\n   * Deprecated field. Use get_sources_statistics to get source stats.\n   * @deprecated Use get_sources_statistics to get source stats.\n   */\n  realizedProfits: Scalars['BigInt'];\n  /**\n   * Deprecated field. Use get_loan_activities_statistics_by_month instead.\n   * @deprecated Use get_loan_activities_statistics_by_month instead.\n   */\n  renegotiationCountAndPrincipalByMonth: Array<Array<Scalars['BigInt']>>;\n  /**\n   * Deprecated field. Use get_sources_statistics to get source stats.\n   * @deprecated Use get_sources_statistics to get source stats.\n   */\n  totalLentPrincipal: Scalars['BigInt'];\n  /**\n   * Deprecated field. Use get_sources_statistics to get source stats.\n   * @deprecated Use get_sources_statistics to get source stats.\n   */\n  totalLoanCount: Scalars['BigInt'];\n  /**\n   * Deprecated field. Use get_sources_statistics to get source stats.\n   * @deprecated Use get_sources_statistics to get source stats.\n   */\n  wavgOutstandingApr: Scalars['BigInt'];\n  /**\n   * Deprecated field. Use get_sources_statistics_by_collection instead.\n   * @deprecated Use get_sources_statistics_by_collection instead.\n   */\n  wavgOutstandingAprByCollection: Array<StatByCollection>;\n  /**\n   * Deprecated field. Use get_sources_statistics to get source stats.\n   * @deprecated Use get_sources_statistics to get source stats.\n   */\n  wavgRepaidApr: Scalars['BigInt'];\n  /**\n   * Deprecated field. Use get_sources_statistics_by_collection instead.\n   * @deprecated Use get_sources_statistics_by_collection instead.\n   */\n  wavgRepaidAprByCollection: Array<StatByCollection>;\n};\n\nexport type UserStatisticsDefaultedPrincipalArgs = {\n  currencyAddress: Scalars['Address'];\n  walletsAddresses: Array<Scalars['Address']>;\n};\n\nexport type UserStatisticsInterestEarnedByCollectionArgs = {\n  currencyAddress: Scalars['Address'];\n  walletsAddresses: Array<Scalars['Address']>;\n};\n\nexport type UserStatisticsLoanCountArgs = {\n  currencyAddress: Scalars['Address'];\n  walletsAddresses: Array<Scalars['Address']>;\n};\n\nexport type UserStatisticsLoanCountByCollectionArgs = {\n  currencyAddress: Scalars['Address'];\n  walletsAddresses: Array<Scalars['Address']>;\n};\n\nexport type UserStatisticsLoanPrincipalByCollectionArgs = {\n  currencyAddress: Scalars['Address'];\n  walletsAddresses: Array<Scalars['Address']>;\n};\n\nexport type UserStatisticsOriginationCountAndPrincipalByMonthArgs = {\n  currencyAddress: Scalars['Address'];\n  walletsAddresses: Array<Scalars['Address']>;\n};\n\nexport type UserStatisticsOutstandingAccruedInterestArgs = {\n  currencyAddress: Scalars['Address'];\n  walletsAddresses: Array<Scalars['Address']>;\n};\n\nexport type UserStatisticsOutstandingPrincipalArgs = {\n  currencyAddress: Scalars['Address'];\n  walletsAddresses: Array<Scalars['Address']>;\n};\n\nexport type UserStatisticsRealizedProfitsArgs = {\n  currencyAddress: Scalars['Address'];\n  walletsAddresses: Array<Scalars['Address']>;\n};\n\nexport type UserStatisticsRenegotiationCountAndPrincipalByMonthArgs = {\n  currencyAddress: Scalars['Address'];\n  walletsAddresses: Array<Scalars['Address']>;\n};\n\nexport type UserStatisticsTotalLentPrincipalArgs = {\n  currencyAddress: Scalars['Address'];\n  walletsAddresses: Array<Scalars['Address']>;\n};\n\nexport type UserStatisticsTotalLoanCountArgs = {\n  currencyAddress: Scalars['Address'];\n  walletsAddresses: Array<Scalars['Address']>;\n};\n\nexport type UserStatisticsWavgOutstandingAprArgs = {\n  currencyAddress: Scalars['Address'];\n  walletsAddresses: Array<Scalars['Address']>;\n};\n\nexport type UserStatisticsWavgOutstandingAprByCollectionArgs = {\n  currencyAddress: Scalars['Address'];\n  walletsAddresses: Array<Scalars['Address']>;\n};\n\nexport type UserStatisticsWavgRepaidAprArgs = {\n  currencyAddress: Scalars['Address'];\n  walletsAddresses: Array<Scalars['Address']>;\n};\n\nexport type UserStatisticsWavgRepaidAprByCollectionArgs = {\n  currencyAddress: Scalars['Address'];\n  walletsAddresses: Array<Scalars['Address']>;\n};\n\n/** The term that decided an NFT's estimated value. */\nexport enum ValuationBasis {\n  ArtistSales = 'ARTIST_SALES',\n  EditionSales = 'EDITION_SALES',\n  FloorBidBlend = 'FLOOR_BID_BLEND',\n  ItemBid = 'ITEM_BID',\n  LastSale = 'LAST_SALE',\n  Listing = 'LISTING',\n  Loan = 'LOAN',\n  SaleHistory = 'SALE_HISTORY',\n  TraitFloor = 'TRAIT_FLOOR',\n}\n\nexport enum VaultsFilter {\n  Exclude = 'EXCLUDE',\n  Include = 'INCLUDE',\n  IncludeSingleCollection = 'INCLUDE_SINGLE_COLLECTION',\n}\n\nexport type WalletActivityDay = {\n  __typename?: 'WalletActivityDay';\n  borrows: Scalars['Int'];\n  day: Scalars['Date'];\n  lends: Scalars['Int'];\n  purchases: Scalars['Int'];\n  sales: Scalars['Int'];\n};\n\n/** One wallet in a follow list, with the listed wallets on the other end of the follow. */\nexport type WalletFollowEntry = {\n  __typename?: 'WalletFollowEntry';\n  /** For a follower, the listed wallets it follows; for a followed wallet, the listed wallets that follow it. Only ever the queried address, unless the viewer owns it. */\n  viaWalletAddresses: Array<Scalars['Address']>;\n  walletAddress: Scalars['Address'];\n};\n\n/** Follow counts for a wallet. To the wallet's owner they are read across the account, so a wallet and its confirmed links report the same numbers: `followersCount` counts each following wallet once however many of the account's wallets it follows, and `followingCount` counts each followed wallet once however many of the account's wallets follow it. To everyone else they count this address alone, since which wallets are linked is private. `isFollowed` is true when any wallet of the viewer's account follows this address, and false when anonymous. */\nexport type WalletFollowStats = {\n  __typename?: 'WalletFollowStats';\n  followersCount: Scalars['Int'];\n  followingCount: Scalars['Int'];\n  isFollowed: Scalars['Boolean'];\n};\n\nexport type WalletHoldingCollection = {\n  __typename?: 'WalletHoldingCollection';\n  collection: Collection;\n  estimatedValueUsd?: Maybe<Scalars['Float']>;\n  heldCount: Scalars['Int'];\n};\n\nexport type WalletHoldingsSummary = {\n  __typename?: 'WalletHoldingsSummary';\n  topCollections: Array<WalletHoldingCollection>;\n};\n\nexport type WalletLendingCollection = {\n  __typename?: 'WalletLendingCollection';\n  collection: Collection;\n  principalUsd: Scalars['Float'];\n};\n\nexport enum WalletLendingRole {\n  Borrower = 'BORROWER',\n  Lender = 'LENDER',\n}\n\nexport type WalletLendingSummary = {\n  __typename?: 'WalletLendingSummary';\n  loanCount: Scalars['Int'];\n  principalUsd?: Maybe<Scalars['Float']>;\n  topCollections: Array<WalletLendingCollection>;\n};\n\nexport type WalletTradingSummary = {\n  __typename?: 'WalletTradingSummary';\n  borrowCount: Scalars['Int'];\n  borrowVolumeUsd?: Maybe<Scalars['Float']>;\n  buyCount: Scalars['Int'];\n  buyVolumeUsd?: Maybe<Scalars['Float']>;\n  dailyActivity: Array<WalletActivityDay>;\n  lendCount: Scalars['Int'];\n  lendVolumeUsd?: Maybe<Scalars['Float']>;\n  sellCount: Scalars['Int'];\n  sellVolumeUsd?: Maybe<Scalars['Float']>;\n};\n\nexport enum WatchedNftEventKind {\n  AskChanged = 'ASK_CHANGED',\n  Delisted = 'DELISTED',\n  Listed = 'LISTED',\n  PriceDropped = 'PRICE_DROPPED',\n  Sold = 'SOLD',\n  Transferred = 'TRANSFERRED',\n}\n\n/** A change on an NFT your account watches with notifications on. `amount` and `currency` are the listing or sale price, null for a transfer. ASK_CHANGED and DELISTED are recorded but never notified. */\nexport type WatchedNftNotification = Node &\n  Notification & {\n    __typename?: 'WatchedNftNotification';\n    amount?: Maybe<Scalars['BigInt']>;\n    createdOn: Scalars['DateTime'];\n    currency?: Maybe<Currency>;\n    id: Scalars['String'];\n    kind: WatchedNftEventKind;\n    nft: Nft;\n    notificationType: Scalars['String'];\n    /** The ask a price drop replaced, in `currency`. */\n    previousAmount?: Maybe<Scalars['BigInt']>;\n    readOn?: Maybe<Scalars['DateTime']>;\n    /** The wallet a sale or transfer moved the item to. */\n    receiver?: Maybe<Scalars['Address']>;\n    receiverName?: Maybe<Scalars['String']>;\n    /** The wallet the change came from: an ask's maker, a sale's seller or a transfer's sender. */\n    sender?: Maybe<Scalars['Address']>;\n    senderName?: Maybe<Scalars['String']>;\n    user: User;\n  };\n\nexport type WithAsksInput = {\n  enabled?: InputMaybe<Scalars['Boolean']>;\n  marketplaces?: InputMaybe<Array<MarketPlaceType>>;\n};\n\nexport type CurrencyAmountInfoFragment = {\n  __typename?: 'CurrencyAmount';\n  amount: number;\n  currency: { __typename?: 'Currency'; address: Address; decimals: number };\n};\n\nexport type CurrencyInfoFragment = { __typename?: 'Currency'; address: Address; decimals: number };\n\nexport type SaleOfferInfoFragment = {\n  __typename?: 'SingleNFTOrder';\n  id: string;\n  netAmount: bigint;\n  status: string;\n  marketPlace: string;\n  fees: bigint;\n  maker: Address;\n  expiration: Date;\n  createdDate: Date;\n  startTime: Date;\n  hidden: boolean;\n  signature: Hex;\n  currencyAddress: Address;\n  nonce: bigint;\n};\n\nexport type ListNftMutationVariables = Exact<{\n  nftId: Scalars['Int'];\n}>;\n\nexport type ListNftMutation = {\n  __typename?: 'Mutation';\n  addOrUpdateListing: { __typename?: 'Listing'; id: string };\n};\n\nexport type UnlistNftMutationVariables = Exact<{\n  nftId: Scalars['Int'];\n}>;\n\nexport type UnlistNftMutation = {\n  __typename?: 'Mutation';\n  removeListing: { __typename?: 'Listing'; id: string };\n};\n\nexport type GenerateCollectionOfferHashMutationVariables = Exact<{\n  offerInput: CollectionOfferInput;\n}>;\n\nexport type GenerateCollectionOfferHashMutation = {\n  __typename?: 'Mutation';\n  offer: {\n    __typename?: 'CollectionOffer';\n    offerHash?: Hash | null;\n    offerId: bigint;\n    lenderAddress?: Address | null;\n    signerAddress?: Address | null;\n    borrowerAddress?: Address | null;\n    collateralAddress?: Address | null;\n    fee: bigint;\n    validators: Array<{ __typename?: 'OfferValidator'; validator: Address; arguments: Hex }>;\n    collection: {\n      __typename?: 'Collection';\n      contractData: { __typename?: 'ContractData'; contractAddress: Address };\n    };\n  };\n};\n\nexport type SaveCollectionOfferMutationVariables = Exact<{\n  offer: CollectionSignedOfferInput;\n  publication?: InputMaybe<LoanOfferPublicationInput>;\n}>;\n\nexport type SaveCollectionOfferMutation = {\n  __typename?: 'Mutation';\n  offer: {\n    __typename?: 'CollectionOffer';\n    id: string;\n    status: string;\n    collection: {\n      __typename?: 'Collection';\n      contractData: { __typename?: 'ContractData'; contractAddress: Address };\n    };\n  };\n};\n\nexport type HideOfferMutationVariables = Exact<{\n  contract: Scalars['Address'];\n  id: Scalars['String'];\n}>;\n\nexport type HideOfferMutation = {\n  __typename?: 'Mutation';\n  hideOffer:\n    | { __typename?: 'CollectionOffer'; id: string }\n    | { __typename?: 'SetOffer'; id: string }\n    | { __typename?: 'SingleNFTOffer'; id: string }\n    | { __typename?: 'TraitOffer'; id: string };\n};\n\nexport type HideOffersMutationVariables = Exact<{\n  contract: Scalars['Address'];\n  ids: Array<Scalars['String']> | Scalars['String'];\n}>;\n\nexport type HideOffersMutation = {\n  __typename?: 'Mutation';\n  hideOffers: Array<\n    | { __typename?: 'CollectionOffer'; id: string }\n    | { __typename?: 'SetOffer'; id: string }\n    | { __typename?: 'SingleNFTOffer'; id: string }\n    | { __typename?: 'TraitOffer'; id: string }\n  >;\n};\n\nexport type GenerateSingleNftOfferHashMutationVariables = Exact<{\n  offerInput: SingleNftOfferInput;\n}>;\n\nexport type GenerateSingleNftOfferHashMutation = {\n  __typename?: 'Mutation';\n  offer: {\n    __typename?: 'SingleNFTOffer';\n    offerHash?: Hash | null;\n    offerId: bigint;\n    lenderAddress?: Address | null;\n    signerAddress?: Address | null;\n    borrowerAddress?: Address | null;\n    collateralAddress?: Address | null;\n    fee: bigint;\n    validators: Array<{ __typename?: 'OfferValidator'; validator: Address; arguments: Hex }>;\n    nft: {\n      __typename?: 'NFT';\n      tokenId: bigint;\n      collection?: {\n        __typename?: 'Collection';\n        contractData: { __typename?: 'ContractData'; contractAddress: Address };\n      } | null;\n    };\n  };\n};\n\nexport type SaveSingleNftOfferMutationVariables = Exact<{\n  offer: SingleNftSignedOfferInput;\n  publication?: InputMaybe<LoanOfferPublicationInput>;\n}>;\n\nexport type SaveSingleNftOfferMutation = {\n  __typename?: 'Mutation';\n  offer: {\n    __typename?: 'SingleNFTOffer';\n    id: string;\n    status: string;\n    nft: {\n      __typename?: 'NFT';\n      tokenId: bigint;\n      collection?: {\n        __typename?: 'Collection';\n        contractData: { __typename?: 'ContractData'; contractAddress: Address };\n      } | null;\n    };\n  };\n};\n\nexport type GenerateTraitOfferHashMutationVariables = Exact<{\n  offerInput: TraitOfferInput;\n}>;\n\nexport type GenerateTraitOfferHashMutation = {\n  __typename?: 'Mutation';\n  offer: {\n    __typename?: 'TraitOffer';\n    offerHash?: Hash | null;\n    offerId: bigint;\n    lenderAddress?: Address | null;\n    signerAddress?: Address | null;\n    borrowerAddress?: Address | null;\n    collateralAddress?: Address | null;\n    fee: bigint;\n    validators: Array<{ __typename?: 'OfferValidator'; validator: Address; arguments: Hex }>;\n    collection: {\n      __typename?: 'Collection';\n      contractData: { __typename?: 'ContractData'; contractAddress: Address };\n    };\n  };\n};\n\nexport type SaveTraitOfferMutationVariables = Exact<{\n  offer: TraitSignedOfferInput;\n}>;\n\nexport type SaveTraitOfferMutation = {\n  __typename?: 'Mutation';\n  offer: {\n    __typename?: 'TraitOffer';\n    id: string;\n    status: string;\n    collection: {\n      __typename?: 'Collection';\n      contractData: { __typename?: 'ContractData'; contractAddress: Address };\n    };\n  };\n};\n\nexport type UnhideOfferMutationVariables = Exact<{\n  contract: Scalars['Address'];\n  id: Scalars['String'];\n}>;\n\nexport type UnhideOfferMutation = {\n  __typename?: 'Mutation';\n  showOffer:\n    | { __typename?: 'CollectionOffer'; id: string }\n    | { __typename?: 'SetOffer'; id: string }\n    | { __typename?: 'SingleNFTOffer'; id: string }\n    | { __typename?: 'TraitOffer'; id: string };\n};\n\nexport type CancelTradeOrdersMutationVariables = Exact<{\n  orderIds: Array<Scalars['Int64']> | Scalars['Int64'];\n}>;\n\nexport type CancelTradeOrdersMutation = {\n  __typename?: 'Mutation';\n  cancelTradeOrders: {\n    __typename?: 'CancelTradeOrdersResult';\n    cancelledOrders: Array<\n      | { __typename?: 'BuyNowPayLaterOrder'; id: string }\n      | { __typename?: 'CollectionOrder'; id: string }\n      | { __typename?: 'MultipleTraitOrder'; id: string }\n      | { __typename?: 'SellAndRepayOrder'; id: string }\n      | { __typename?: 'SetBidOrder'; id: string }\n      | { __typename?: 'SingleNFTOrder'; id: string }\n      | { __typename?: 'StealthMaskedOrder'; id: string }\n      | { __typename?: 'TraitOrder'; id: string }\n    >;\n    cancelOrdersCalldata: Array<{\n      __typename?: 'CancelAllOrdersCalldata';\n      calldata: Hex;\n      marketPlaceAddress: Address;\n    }>;\n  };\n};\n\nexport type HideOrderMutationVariables = Exact<{\n  id: Scalars['Int64'];\n}>;\n\nexport type HideOrderMutation = {\n  __typename?: 'Mutation';\n  hideOrder:\n    | { __typename?: 'BuyNowPayLaterOrder'; id: string }\n    | { __typename?: 'CollectionOrder'; id: string }\n    | { __typename?: 'MultipleTraitOrder'; id: string }\n    | { __typename?: 'SellAndRepayOrder'; id: string }\n    | { __typename?: 'SetBidOrder'; id: string }\n    | { __typename?: 'SingleNFTOrder'; id: string }\n    | { __typename?: 'StealthMaskedOrder'; id: string }\n    | { __typename?: 'TraitOrder'; id: string };\n};\n\nexport type PublishBulkOrdersMutationVariables = Exact<{\n  bulkInput: BulkNftOrdersInput;\n}>;\n\nexport type PublishBulkOrdersMutation = {\n  __typename?: 'Mutation';\n  result:\n    | {\n        __typename?: 'BulkNFTOrdersResult';\n        orders: Array<{\n          __typename?: 'SingleNFTOrder';\n          id: string;\n          price: bigint;\n          fees: bigint;\n          currencyAddress: Address;\n          marketPlace: string;\n          status: string;\n          startTime: Date;\n          expiration: Date;\n          maker: Address;\n          isAsk: boolean;\n          nonce: bigint;\n          taker: Address;\n          signature: Hex;\n          marketPlaceAddress: Address;\n          evmOrder?: object | null;\n          nft: { __typename?: 'NFT'; id: string };\n        }>;\n      }\n    | {\n        __typename?: 'SignatureRequest';\n        key: string;\n        typedData: {\n          __typename?: 'TypedData';\n          types: object;\n          primaryType: string;\n          domain: object;\n          message: object;\n        };\n      };\n};\n\nexport type PublishBuyNowPayLaterOrderMutationVariables = Exact<{\n  orderInput: BnplOrderInput;\n}>;\n\nexport type PublishBuyNowPayLaterOrderMutation = {\n  __typename?: 'Mutation';\n  result:\n    | {\n        __typename?: 'BuyNowPayLaterOrder';\n        id: string;\n        status: string;\n        signature: Hex;\n        emitCalldata: Hex;\n        marketPlaceAddress: Address;\n        price: bigint;\n        currencyAddress: Address;\n      }\n    | { __typename?: 'ExtraSeaportData'; extraData: Hex }\n    | {\n        __typename?: 'SignatureRequest';\n        key: string;\n        typedData: {\n          __typename?: 'TypedData';\n          types: object;\n          primaryType: string;\n          domain: object;\n          message: object;\n        };\n      };\n};\n\nexport type PublishDealMutationVariables = Exact<{\n  dealInput: DealInput;\n}>;\n\nexport type PublishDealMutation = {\n  __typename?: 'Mutation';\n  result:\n    | { __typename?: 'Deal'; id: string; status: string; signature?: Hex | null }\n    | {\n        __typename?: 'SignatureRequest';\n        key: string;\n        typedData: {\n          __typename?: 'TypedData';\n          types: object;\n          primaryType: string;\n          domain: object;\n          message: object;\n        };\n      };\n};\n\nexport type PublishOrderForCollectionMutationVariables = Exact<{\n  orderInput: CollectionOrderInput;\n}>;\n\nexport type PublishOrderForCollectionMutation = {\n  __typename?: 'Mutation';\n  result:\n    | {\n        __typename?: 'CollectionOrder';\n        id: string;\n        status: string;\n        signature: Hex;\n        marketPlaceAddress: Address;\n      }\n    | {\n        __typename?: 'SignatureRequest';\n        key: string;\n        typedData: {\n          __typename?: 'TypedData';\n          types: object;\n          primaryType: string;\n          domain: object;\n          message: object;\n        };\n      };\n};\n\nexport type PublishOrderForNftMutationVariables = Exact<{\n  orderInput: SingleNftOrderInput;\n}>;\n\nexport type PublishOrderForNftMutation = {\n  __typename?: 'Mutation';\n  result:\n    | {\n        __typename?: 'SignatureRequest';\n        key: string;\n        typedData: {\n          __typename?: 'TypedData';\n          types: object;\n          primaryType: string;\n          domain: object;\n          message: object;\n        };\n      }\n    | {\n        __typename?: 'SingleNFTOrder';\n        id: string;\n        status: string;\n        signature: Hex;\n        marketPlaceAddress: Address;\n      };\n};\n\nexport type PublishOrderForNftSetMutationVariables = Exact<{\n  orderInput: NftSetOrderInput;\n}>;\n\nexport type PublishOrderForNftSetMutation = {\n  __typename?: 'Mutation';\n  result:\n    | {\n        __typename?: 'SetBidOrder';\n        id: string;\n        status: string;\n        signature: Hex;\n        marketPlaceAddress: Address;\n      }\n    | {\n        __typename?: 'SignatureRequest';\n        key: string;\n        typedData: {\n          __typename?: 'TypedData';\n          types: object;\n          primaryType: string;\n          domain: object;\n          message: object;\n        };\n      };\n};\n\nexport type PublishOrderForTraitMutationVariables = Exact<{\n  orderInput: TraitOrderInput;\n}>;\n\nexport type PublishOrderForTraitMutation = {\n  __typename?: 'Mutation';\n  result:\n    | {\n        __typename?: 'MultipleTraitOrder';\n        id: string;\n        status: string;\n        signature: Hex;\n        marketPlaceAddress: Address;\n      }\n    | {\n        __typename?: 'SignatureRequest';\n        key: string;\n        typedData: {\n          __typename?: 'TypedData';\n          types: object;\n          primaryType: string;\n          domain: object;\n          message: object;\n        };\n      }\n    | {\n        __typename?: 'TraitOrder';\n        id: string;\n        status: string;\n        signature: Hex;\n        marketPlaceAddress: Address;\n      };\n};\n\nexport type PublishSellAndRepayOrderMutationVariables = Exact<{\n  orderInput: NftOrderInput;\n}>;\n\nexport type PublishSellAndRepayOrderMutation = {\n  __typename?: 'Mutation';\n  result:\n    | { __typename?: 'ExtraSeaportData'; extraData: Hex; criteriaProof?: Array<Hex> | null }\n    | {\n        __typename?: 'SellAndRepayOrder';\n        id: string;\n        status: string;\n        signature: Hex;\n        repaymentCalldata: Hex;\n        marketPlaceAddress: Address;\n      }\n    | {\n        __typename?: 'SignatureRequest';\n        key: string;\n        typedData: {\n          __typename?: 'TypedData';\n          types: object;\n          primaryType: string;\n          domain: object;\n          message: object;\n        };\n      };\n};\n\nexport type ShowOrderMutationVariables = Exact<{\n  id: Scalars['Int64'];\n}>;\n\nexport type ShowOrderMutation = {\n  __typename?: 'Mutation';\n  showOrder:\n    | { __typename?: 'BuyNowPayLaterOrder'; id: string }\n    | { __typename?: 'CollectionOrder'; id: string }\n    | { __typename?: 'MultipleTraitOrder'; id: string }\n    | { __typename?: 'SellAndRepayOrder'; id: string }\n    | { __typename?: 'SetBidOrder'; id: string }\n    | { __typename?: 'SingleNFTOrder'; id: string }\n    | { __typename?: 'StealthMaskedOrder'; id: string }\n    | { __typename?: 'TraitOrder'; id: string };\n};\n\nexport type GenerateRenegotiationOfferHashMutationVariables = Exact<{\n  renegotiationInput: RenegotiationOfferInput;\n}>;\n\nexport type GenerateRenegotiationOfferHashMutation = {\n  __typename?: 'Mutation';\n  offer: {\n    __typename?: 'Renegotiation';\n    loanId: bigint;\n    renegotiationId: bigint;\n    offerHash?: Hash | null;\n    lenderAddress?: Address | null;\n    signerAddress?: Address | null;\n    nft: {\n      __typename?: 'NFT';\n      tokenId: bigint;\n      collection?: {\n        __typename?: 'Collection';\n        contractData: { __typename?: 'ContractData'; contractAddress: Address };\n      } | null;\n    };\n  };\n};\n\nexport type HideRenegotiationOfferMutationVariables = Exact<{\n  id: Scalars['String'];\n  contractAddress: Scalars['Address'];\n}>;\n\nexport type HideRenegotiationOfferMutation = {\n  __typename?: 'Mutation';\n  hideRenegotiation: { __typename?: 'Renegotiation'; id: string };\n};\n\nexport type SaveRenegotiationOfferMutationVariables = Exact<{\n  renegotiation: SignedRenegotiationOfferInput;\n  publication?: InputMaybe<LoanOfferPublicationInput>;\n  fallbackOffer?: InputMaybe<SingleNftSignedOfferInput>;\n}>;\n\nexport type SaveRenegotiationOfferMutation = {\n  __typename?: 'Mutation';\n  renegotiation: { __typename?: 'Renegotiation'; id: string; status: string };\n};\n\nexport type UnhideRenegotiationOfferMutationVariables = Exact<{\n  id: Scalars['String'];\n  contractAddress: Scalars['Address'];\n}>;\n\nexport type UnhideRenegotiationOfferMutation = {\n  __typename?: 'Mutation';\n  showRenegotiation: { __typename?: 'Renegotiation'; id: string };\n};\n\nexport type CollectionsQueryVariables = Exact<{\n  currency: Scalars['Address'];\n  collections?: InputMaybe<Array<Scalars['Int']> | Scalars['Int']>;\n  standards?: InputMaybe<Array<TokenStandardType> | TokenStandardType>;\n  after?: InputMaybe<Scalars['String']>;\n}>;\n\nexport type CollectionsQuery = {\n  __typename?: 'Query';\n  collections: {\n    __typename?: 'CollectionConnection';\n    pageInfo: { __typename?: 'PageInfo'; endCursor?: string | null; hasNextPage: boolean };\n    edges: Array<{\n      __typename?: 'CollectionEdge';\n      node: {\n        __typename?: 'Collection';\n        id: string;\n        name?: string | null;\n        slug: string;\n        description?: string | null;\n        discordUrl?: string | null;\n        twitterUsername?: string | null;\n        externalUrl?: string | null;\n        collectionUrl?: string | null;\n        verified: boolean;\n        wrapperCollections: Array<{\n          __typename?: 'Collection';\n          contractData: { __typename?: 'ContractData'; contractAddress: Address };\n        }>;\n        image?: { __typename?: 'Asset'; cacheUrl?: string | null } | null;\n        bannerImage?: { __typename?: 'Asset'; cacheUrl?: string | null } | null;\n        contractData: {\n          __typename?: 'ContractData';\n          blockchain: string;\n          contractAddress: Address;\n          createdDate: Date;\n          creatorAddress?: Address | null;\n        };\n        statistics: {\n          __typename?: 'CollectionStatistics';\n          floorPrice7d?: number | null;\n          floorPrice30d?: number | null;\n          totalVolume?: number | null;\n          totalVolume1y?: number | null;\n          totalVolume3m?: number | null;\n          totalVolume1m?: number | null;\n          totalVolume1w?: number | null;\n          totalLoanVolume: bigint;\n          totalLoanVolume1w: bigint;\n          totalLoanVolume1m: bigint;\n          totalLoanVolume3m: bigint;\n          totalLoanVolume1y: bigint;\n          numberOfPricedNfts: number;\n          nftsCount?: number | null;\n          percentageInOutstandingLoans: number;\n          repaymentRate: number;\n          floorPrice?: {\n            __typename?: 'CurrencyAmount';\n            amount: number;\n            currency: { __typename?: 'Currency'; address: Address; decimals: number };\n          } | null;\n          bestOffer?: {\n            __typename?: 'CurrencyAmount';\n            amount: number;\n            currency: { __typename?: 'Currency'; address: Address; decimals: number };\n          } | null;\n        };\n      };\n    }>;\n  };\n};\n\nexport type CollectionByContractAddressQueryVariables = Exact<{\n  contractAddress: Scalars['Address'];\n}>;\n\nexport type CollectionByContractAddressQuery = {\n  __typename?: 'Query';\n  collection: Array<{\n    __typename?: 'Collection';\n    contractData: { __typename?: 'ContractData'; contractAddress: Address };\n    wrapperCollections: Array<{\n      __typename?: 'Collection';\n      contractData: { __typename?: 'ContractData'; contractAddress: Address };\n    }>;\n  }>;\n};\n\nexport type CollectionsIdByContractAddressQueryVariables = Exact<{\n  contractAddress: Scalars['Address'];\n}>;\n\nexport type CollectionsIdByContractAddressQuery = {\n  __typename?: 'Query';\n  collections: Array<{ __typename?: 'Collection'; id: string }>;\n};\n\nexport type CollectionIdBySlugQueryVariables = Exact<{\n  slug: Scalars['String'];\n}>;\n\nexport type CollectionIdBySlugQuery = {\n  __typename?: 'Query';\n  collection?: { __typename?: 'Collection'; id: string } | null;\n};\n\nexport type CollectionStepsByIdQueryVariables = Exact<{\n  collectionId: Scalars['Int'];\n}>;\n\nexport type CollectionStepsByIdQuery = {\n  __typename?: 'Query';\n  steps: {\n    __typename?: 'OfferSteps';\n    aprBpsStep: bigint;\n    origFeeBpsStep: bigint;\n    usdcStep: bigint;\n    wethStep: bigint;\n  };\n};\n\nexport type ListListingsQueryVariables = Exact<{\n  collections?: InputMaybe<Array<Scalars['Int']> | Scalars['Int']>;\n  userFilter?: InputMaybe<UserFilter>;\n  marketplaceNames?: InputMaybe<Array<MarketplaceEnum> | MarketplaceEnum>;\n  first?: InputMaybe<Scalars['Int']>;\n  after?: InputMaybe<Scalars['String']>;\n}>;\n\nexport type ListListingsQuery = {\n  __typename?: 'Query';\n  result: {\n    __typename?: 'ListingConnection';\n    pageInfo: { __typename?: 'PageInfo'; endCursor?: string | null; hasNextPage: boolean };\n    edges: Array<{\n      __typename?: 'ListingEdge';\n      node: {\n        __typename?: 'Listing';\n        id: string;\n        marketplaceName: MarketplaceEnum;\n        createdDate: Date;\n        desiredDuration?: number | null;\n        desiredPrincipalAddress?: Address | null;\n        user: { __typename?: 'User'; walletAddress: Address };\n        nft: {\n          __typename?: 'NFT';\n          id: string;\n          tokenId: bigint;\n          collection?: {\n            __typename?: 'Collection';\n            id: string;\n            slug: string;\n            contractData: { __typename?: 'ContractData'; contractAddress: Address };\n          } | null;\n        };\n      };\n    }>;\n  };\n};\n\nexport type ListLoansQueryVariables = Exact<{\n  borrowers?: InputMaybe<Array<Scalars['String']> | Scalars['String']>;\n  collections?: InputMaybe<Array<Scalars['Int']> | Scalars['Int']>;\n  nfts?: InputMaybe<Array<Scalars['Int']> | Scalars['Int']>;\n  statuses?: InputMaybe<Array<LoanStatusType> | LoanStatusType>;\n  sortBy?: InputMaybe<Array<LoanSortInput> | LoanSortInput>;\n  terms?: InputMaybe<TermsFilter>;\n  orderByStatuses?: InputMaybe<Scalars['Boolean']>;\n  loansCurrencyAddresses?: InputMaybe<Array<Scalars['Address']> | Scalars['Address']>;\n  first?: InputMaybe<Scalars['Int']>;\n  after?: InputMaybe<Scalars['String']>;\n}>;\n\nexport type ListLoansQuery = {\n  __typename?: 'Query';\n  loans: {\n    __typename?: 'MultiSourceLoanConnection';\n    totalCount: number;\n    pageInfo: { __typename?: 'PageInfo'; endCursor?: string | null; hasNextPage: boolean };\n    edges: Array<{\n      __typename?: 'MultiSourceLoanEdge';\n      node: {\n        __typename?: 'MultiSourceLoan';\n        id: string;\n        address: Address;\n        loanId: number;\n        timestamp: Date;\n        txHash: Hash;\n        indexInBlock: number;\n        borrowerAddress: Address;\n        principalAddress: Address;\n        startTime: Date;\n        duration: bigint;\n        status: string;\n        principalAmount: bigint;\n        blendedAprBps: number;\n        totalOriginationFee: bigint;\n        protocolFee: bigint;\n        lenderRefinanceDisabled: boolean;\n        offer:\n          | { __typename?: 'CollectionOffer'; offerId: bigint; signerAddress?: Address | null }\n          | { __typename?: 'SetOffer'; offerId: bigint; signerAddress?: Address | null }\n          | { __typename?: 'SingleNFTOffer'; offerId: bigint; signerAddress?: Address | null }\n          | { __typename?: 'TraitOffer'; offerId: bigint; signerAddress?: Address | null };\n        currency: { __typename?: 'Currency'; symbol: string; decimals: number; address: Address };\n        repaidActivity?: {\n          __typename?: 'LoanRepaid';\n          totalInterest: bigint;\n          timestamp: Date;\n        } | null;\n        nft: {\n          __typename?: 'NFT';\n          id: string;\n          name?: string | null;\n          tokenId: bigint;\n          nftId: string;\n          owner?: Address | null;\n          image?: {\n            __typename?: 'Asset';\n            data: string;\n            cacheUrl?: string | null;\n            contentTypeMime: string;\n            accessTypeName: string;\n          } | null;\n          collection?: {\n            __typename?: 'Collection';\n            id: string;\n            slug: string;\n            name?: string | null;\n            nftsCount?: number | null;\n            contractData: { __typename?: 'ContractData'; contractAddress: Address };\n          } | null;\n        };\n        sources: Array<{\n          __typename?: 'Source';\n          id: string;\n          loanId: string;\n          originationFee: bigint;\n          principalAmount: bigint;\n          lenderAddress: string;\n          accruedInterest: bigint;\n          aprBps: bigint;\n          startTime: Date;\n        }>;\n      };\n    }>;\n  };\n};\n\nexport type NftFlaggedByContractAddressAndTokenIdQueryVariables = Exact<{\n  contractAddress: Scalars['Address'];\n  tokenId: Scalars['BigInt'];\n}>;\n\nexport type NftFlaggedByContractAddressAndTokenIdQuery = {\n  __typename?: 'Query';\n  nft?: {\n    __typename?: 'NFT';\n    id: string;\n    isFlagged?: boolean | null;\n    wrapsNfts?: Array<{ __typename?: 'NFT'; id: string; isFlagged?: boolean | null }> | null;\n  } | null;\n};\n\nexport type NftIdByContractAddressAndTokenIdQueryVariables = Exact<{\n  contractAddress: Scalars['Address'];\n  tokenId: Scalars['BigInt'];\n}>;\n\nexport type NftIdByContractAddressAndTokenIdQuery = {\n  __typename?: 'Query';\n  nft?: { __typename?: 'NFT'; id: string } | null;\n};\n\nexport type NftIdBySlugTokenIdQueryVariables = Exact<{\n  slug: Scalars['String'];\n  tokenId: Scalars['BigInt'];\n}>;\n\nexport type NftIdBySlugTokenIdQuery = {\n  __typename?: 'Query';\n  nft?: { __typename?: 'NFT'; id: string } | null;\n};\n\nexport type OwnedNftsQueryVariables = Exact<{\n  after?: InputMaybe<Scalars['String']>;\n  includeInLoans?: InputMaybe<Scalars['Boolean']>;\n  includeInStash?: InputMaybe<Scalars['Boolean']>;\n  standards?: InputMaybe<Array<TokenStandardType> | TokenStandardType>;\n}>;\n\nexport type OwnedNftsQuery = {\n  __typename?: 'Query';\n  ownedNfts: {\n    __typename?: 'NFTConnection';\n    pageInfo: { __typename?: 'PageInfo'; endCursor?: string | null; hasNextPage: boolean };\n    edges: Array<{\n      __typename?: 'NFTEdge';\n      node: {\n        __typename?: 'NFT';\n        id: string;\n        tokenId: bigint;\n        collection?: {\n          __typename?: 'Collection';\n          id: string;\n          contractData: { __typename?: 'ContractData'; contractAddress: Address };\n          wrapperCollections: Array<{\n            __typename?: 'Collection';\n            contractData: { __typename?: 'ContractData'; contractAddress: Address };\n          }>;\n        } | null;\n        activeLoan?: { __typename?: 'MultiSourceLoan'; id: string } | null;\n        statistics: {\n          __typename?: 'NftStatistics';\n          lastSale?: {\n            __typename?: 'Sale';\n            order?:\n              | {\n                  __typename?: 'BuyNowPayLaterOrder';\n                  price: bigint;\n                  currency: { __typename?: 'Currency'; address: Address; decimals: number };\n                }\n              | {\n                  __typename?: 'CollectionOrder';\n                  price: bigint;\n                  currency: { __typename?: 'Currency'; address: Address; decimals: number };\n                }\n              | {\n                  __typename?: 'MultipleTraitOrder';\n                  price: bigint;\n                  currency: { __typename?: 'Currency'; address: Address; decimals: number };\n                }\n              | {\n                  __typename?: 'SellAndRepayOrder';\n                  price: bigint;\n                  currency: { __typename?: 'Currency'; address: Address; decimals: number };\n                }\n              | {\n                  __typename?: 'SetBidOrder';\n                  price: bigint;\n                  currency: { __typename?: 'Currency'; address: Address; decimals: number };\n                }\n              | {\n                  __typename?: 'SingleNFTOrder';\n                  price: bigint;\n                  currency: { __typename?: 'Currency'; address: Address; decimals: number };\n                }\n              | {\n                  __typename?: 'StealthMaskedOrder';\n                  price: bigint;\n                  currency: { __typename?: 'Currency'; address: Address; decimals: number };\n                }\n              | {\n                  __typename?: 'TraitOrder';\n                  price: bigint;\n                  currency: { __typename?: 'Currency'; address: Address; decimals: number };\n                }\n              | null;\n          } | null;\n          topTraitFloorPrice?: {\n            __typename?: 'CurrencyAmount';\n            amount: number;\n            currency: { __typename?: 'Currency'; address: Address; decimals: number };\n          } | null;\n        };\n      };\n    }>;\n  };\n};\n\nexport type ListOffersQueryVariables = Exact<{\n  borrowerAddress?: InputMaybe<Scalars['String']>;\n  lenders?: InputMaybe<Array<Scalars['String']> | Scalars['String']>;\n  sortBy: OffersSortInput;\n  terms?: InputMaybe<TermsFilter>;\n  statuses?: InputMaybe<Array<OfferStatus> | OfferStatus>;\n  contractAddresses?: InputMaybe<Array<Scalars['Address']> | Scalars['Address']>;\n  nfts?: InputMaybe<Array<Scalars['Int']> | Scalars['Int']>;\n  collections?: InputMaybe<Array<Scalars['Int']> | Scalars['Int']>;\n  onlySingleNftOffers?: InputMaybe<Scalars['Boolean']>;\n  onlyCollectionOffers?: InputMaybe<Scalars['Boolean']>;\n  first?: InputMaybe<Scalars['Int']>;\n  after?: InputMaybe<Scalars['String']>;\n}>;\n\nexport type ListOffersQuery = {\n  __typename?: 'Query';\n  result: {\n    __typename?: 'OfferConnection';\n    pageInfo: { __typename?: 'PageInfo'; endCursor?: string | null; hasNextPage: boolean };\n    edges: Array<{\n      __typename?: 'OfferEdge';\n      node:\n        | {\n            __typename?: 'CollectionOffer';\n            id: string;\n            offerId: bigint;\n            lenderAddress?: Address | null;\n            borrowerAddress?: Address | null;\n            signerAddress?: Address | null;\n            contractAddress: Address;\n            requiresLiquidation?: boolean | null;\n            principalAddress: Address;\n            principalAmount: bigint;\n            aprBps: bigint;\n            fee: bigint;\n            capacity: bigint;\n            expirationTime: bigint;\n            duration: bigint;\n            status: string;\n            offerHash?: Hash | null;\n            signature?: Hex | null;\n            createdDate?: Date | null;\n            repayment: bigint;\n            hidden?: boolean | null;\n            maxSeniorRepayment: bigint;\n            lenderRefinanceDisabled: boolean;\n            collection: {\n              __typename?: 'Collection';\n              id: string;\n              slug: string;\n              contractData: { __typename?: 'ContractData'; contractAddress: Address };\n            };\n            currency: {\n              __typename?: 'Currency';\n              symbol: string;\n              decimals: number;\n              address: Address;\n            };\n            validators: Array<{\n              __typename?: 'OfferValidator';\n              arguments: Hex;\n              validator: Address;\n            }>;\n          }\n        | {\n            __typename?: 'SetOffer';\n            id: string;\n            offerId: bigint;\n            lenderAddress?: Address | null;\n            borrowerAddress?: Address | null;\n            signerAddress?: Address | null;\n            contractAddress: Address;\n            requiresLiquidation?: boolean | null;\n            principalAddress: Address;\n            principalAmount: bigint;\n            aprBps: bigint;\n            fee: bigint;\n            capacity: bigint;\n            expirationTime: bigint;\n            duration: bigint;\n            status: string;\n            offerHash?: Hash | null;\n            signature?: Hex | null;\n            createdDate?: Date | null;\n            repayment: bigint;\n            hidden?: boolean | null;\n            maxSeniorRepayment: bigint;\n            lenderRefinanceDisabled: boolean;\n            collection: {\n              __typename?: 'Collection';\n              id: string;\n              slug: string;\n              contractData: { __typename?: 'ContractData'; contractAddress: Address };\n            };\n            currency: {\n              __typename?: 'Currency';\n              symbol: string;\n              decimals: number;\n              address: Address;\n            };\n            validators: Array<{\n              __typename?: 'OfferValidator';\n              arguments: Hex;\n              validator: Address;\n            }>;\n          }\n        | {\n            __typename?: 'SingleNFTOffer';\n            id: string;\n            offerId: bigint;\n            lenderAddress?: Address | null;\n            borrowerAddress?: Address | null;\n            signerAddress?: Address | null;\n            contractAddress: Address;\n            requiresLiquidation?: boolean | null;\n            principalAddress: Address;\n            principalAmount: bigint;\n            aprBps: bigint;\n            fee: bigint;\n            capacity: bigint;\n            expirationTime: bigint;\n            duration: bigint;\n            status: string;\n            offerHash?: Hash | null;\n            signature?: Hex | null;\n            createdDate?: Date | null;\n            repayment: bigint;\n            hidden?: boolean | null;\n            maxSeniorRepayment: bigint;\n            lenderRefinanceDisabled: boolean;\n            nft: {\n              __typename?: 'NFT';\n              id: string;\n              tokenId: bigint;\n              collection?: {\n                __typename?: 'Collection';\n                id: string;\n                slug: string;\n                contractData: { __typename?: 'ContractData'; contractAddress: Address };\n              } | null;\n            };\n            currency: {\n              __typename?: 'Currency';\n              symbol: string;\n              decimals: number;\n              address: Address;\n            };\n            validators: Array<{\n              __typename?: 'OfferValidator';\n              arguments: Hex;\n              validator: Address;\n            }>;\n          }\n        | {\n            __typename?: 'TraitOffer';\n            id: string;\n            offerId: bigint;\n            lenderAddress?: Address | null;\n            borrowerAddress?: Address | null;\n            signerAddress?: Address | null;\n            contractAddress: Address;\n            requiresLiquidation?: boolean | null;\n            principalAddress: Address;\n            principalAmount: bigint;\n            aprBps: bigint;\n            fee: bigint;\n            capacity: bigint;\n            expirationTime: bigint;\n            duration: bigint;\n            status: string;\n            offerHash?: Hash | null;\n            signature?: Hex | null;\n            createdDate?: Date | null;\n            repayment: bigint;\n            hidden?: boolean | null;\n            maxSeniorRepayment: bigint;\n            lenderRefinanceDisabled: boolean;\n            collection: {\n              __typename?: 'Collection';\n              id: string;\n              slug: string;\n              contractData: { __typename?: 'ContractData'; contractAddress: Address };\n            };\n            traits: Array<{ __typename?: 'Trait'; id: string; type: string; value: string }>;\n            currency: {\n              __typename?: 'Currency';\n              symbol: string;\n              decimals: number;\n              address: Address;\n            };\n            validators: Array<{\n              __typename?: 'OfferValidator';\n              arguments: Hex;\n              validator: Address;\n            }>;\n          };\n    }>;\n  };\n};\n\nexport type BuyWithLoanListingQueryVariables = Exact<{\n  orderId: Scalars['Int64'];\n  buyer: Scalars['Address'];\n}>;\n\nexport type BuyWithLoanListingQuery = {\n  __typename?: 'Query';\n  listOrdersV2: {\n    __typename?: 'OrderConnection';\n    edges: Array<{\n      __typename?: 'OrderEdge';\n      node:\n        | {\n            __typename: 'BuyNowPayLaterOrder';\n            id: string;\n            price: bigint;\n            currencyAddress: Address;\n            expiration: Date;\n            status: string;\n            isAsk: boolean;\n            maker: Address;\n            taker: Address;\n            marketPlace: string;\n            marketPlaceAddress: Address;\n            platformFees: Array<{ __typename?: 'PlatformFee'; bps: bigint; beneficiary: Address }>;\n          }\n        | {\n            __typename: 'CollectionOrder';\n            id: string;\n            price: bigint;\n            currencyAddress: Address;\n            expiration: Date;\n            status: string;\n            isAsk: boolean;\n            maker: Address;\n            taker: Address;\n            marketPlace: string;\n            marketPlaceAddress: Address;\n            platformFees: Array<{ __typename?: 'PlatformFee'; bps: bigint; beneficiary: Address }>;\n          }\n        | {\n            __typename: 'MultipleTraitOrder';\n            id: string;\n            price: bigint;\n            currencyAddress: Address;\n            expiration: Date;\n            status: string;\n            isAsk: boolean;\n            maker: Address;\n            taker: Address;\n            marketPlace: string;\n            marketPlaceAddress: Address;\n            platformFees: Array<{ __typename?: 'PlatformFee'; bps: bigint; beneficiary: Address }>;\n          }\n        | {\n            __typename: 'SellAndRepayOrder';\n            repaymentCalldata: Hex;\n            id: string;\n            price: bigint;\n            currencyAddress: Address;\n            expiration: Date;\n            status: string;\n            isAsk: boolean;\n            maker: Address;\n            taker: Address;\n            marketPlace: string;\n            marketPlaceAddress: Address;\n            loan: {\n              __typename?: 'MultiSourceLoan';\n              address: Address;\n              loanId: number;\n              status: string;\n              principalAddress: Address;\n              startTime: Date;\n              duration: bigint;\n            };\n            nft: {\n              __typename?: 'NFT';\n              tokenId: bigint;\n              collection?: {\n                __typename?: 'Collection';\n                contractData: {\n                  __typename?: 'ContractData';\n                  contractAddress: Address;\n                  blockchain: string;\n                };\n              } | null;\n            };\n            platformFees: Array<{ __typename?: 'PlatformFee'; bps: bigint; beneficiary: Address }>;\n          }\n        | {\n            __typename: 'SetBidOrder';\n            id: string;\n            price: bigint;\n            currencyAddress: Address;\n            expiration: Date;\n            status: string;\n            isAsk: boolean;\n            maker: Address;\n            taker: Address;\n            marketPlace: string;\n            marketPlaceAddress: Address;\n            platformFees: Array<{ __typename?: 'PlatformFee'; bps: bigint; beneficiary: Address }>;\n          }\n        | {\n            __typename: 'SingleNFTOrder';\n            evmOrder?: object | null;\n            signature: Hex;\n            id: string;\n            price: bigint;\n            currencyAddress: Address;\n            expiration: Date;\n            status: string;\n            isAsk: boolean;\n            maker: Address;\n            taker: Address;\n            marketPlace: string;\n            marketPlaceAddress: Address;\n            nft: {\n              __typename?: 'NFT';\n              tokenId: bigint;\n              collection?: {\n                __typename?: 'Collection';\n                contractData: {\n                  __typename?: 'ContractData';\n                  contractAddress: Address;\n                  blockchain: string;\n                };\n              } | null;\n            };\n            platformFees: Array<{ __typename?: 'PlatformFee'; bps: bigint; beneficiary: Address }>;\n          }\n        | {\n            __typename: 'StealthMaskedOrder';\n            id: string;\n            price: bigint;\n            currencyAddress: Address;\n            expiration: Date;\n            status: string;\n            isAsk: boolean;\n            maker: Address;\n            taker: Address;\n            marketPlace: string;\n            marketPlaceAddress: Address;\n            platformFees: Array<{ __typename?: 'PlatformFee'; bps: bigint; beneficiary: Address }>;\n          }\n        | {\n            __typename: 'TraitOrder';\n            id: string;\n            price: bigint;\n            currencyAddress: Address;\n            expiration: Date;\n            status: string;\n            isAsk: boolean;\n            maker: Address;\n            taker: Address;\n            marketPlace: string;\n            marketPlaceAddress: Address;\n            platformFees: Array<{ __typename?: 'PlatformFee'; bps: bigint; beneficiary: Address }>;\n          };\n    }>;\n  };\n};\n\nexport type GetCancelOrdersCalldataQueryVariables = Exact<{\n  maker: Scalars['Address'];\n  orderIds: Array<Scalars['Int64']> | Scalars['Int64'];\n}>;\n\nexport type GetCancelOrdersCalldataQuery = {\n  __typename?: 'Query';\n  cancelOrdersCalldata: Array<{\n    __typename?: 'CancelAllOrdersCalldata';\n    calldata: Hex;\n    marketPlaceAddress: Address;\n  }>;\n};\n\nexport type GetSaleCalldataQueryVariables = Exact<{\n  orderId: Scalars['Int64'];\n  nftId: Scalars['Int'];\n  taker: Scalars['Address'];\n}>;\n\nexport type GetSaleCalldataQuery = { __typename?: 'Query'; saleCalldata: Hex };\n\nexport type PreviewItemLoanOfferCompetitionQueryVariables = Exact<{\n  offerInput: SingleNftOfferInput;\n  replacementIds?: InputMaybe<Array<Scalars['String']> | Scalars['String']>;\n}>;\n\nexport type PreviewItemLoanOfferCompetitionQuery = {\n  __typename?: 'Query';\n  preview: {\n    __typename?: 'LoanOfferCompetitionPreview';\n    complete: boolean;\n    qualifies: boolean;\n    reason?: string | null;\n    replacementIds: Array<string>;\n    references: Array<{\n      __typename?: 'LoanOfferCompetitionReference';\n      optionId: string;\n      sourceIds: Array<string>;\n      requiredNetPrincipal: bigint;\n      maximumEaprNumerator: bigint;\n      maximumEaprDenominator: bigint;\n    }>;\n  };\n};\n\nexport type PreviewRenegotiationCompetitionQueryVariables = Exact<{\n  renegotiationInput: RenegotiationOfferInput;\n  replacementIds?: InputMaybe<Array<Scalars['String']> | Scalars['String']>;\n}>;\n\nexport type PreviewRenegotiationCompetitionQuery = {\n  __typename?: 'Query';\n  preview: {\n    __typename?: 'LoanOfferCompetitionPreview';\n    complete: boolean;\n    qualifies: boolean;\n    reason?: string | null;\n    replacementIds: Array<string>;\n    references: Array<{\n      __typename?: 'LoanOfferCompetitionReference';\n      optionId: string;\n      sourceIds: Array<string>;\n      requiredNetPrincipal: bigint;\n      maximumEaprNumerator: bigint;\n      maximumEaprDenominator: bigint;\n    }>;\n  };\n};\n\nexport type ActiveOfferNotificationKeySpecifier = (\n  | 'createdOn'\n  | 'id'\n  | 'notificationType'\n  | 'offer'\n  | 'offerId'\n  | 'readOn'\n  | 'user'\n  | ActiveOfferNotificationKeySpecifier\n)[];\nexport type ActiveOfferNotificationFieldPolicy = {\n  createdOn?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  notificationType?: FieldPolicy<any> | FieldReadFunction<any>;\n  offer?: FieldPolicy<any> | FieldReadFunction<any>;\n  offerId?: FieldPolicy<any> | FieldReadFunction<any>;\n  readOn?: FieldPolicy<any> | FieldReadFunction<any>;\n  user?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type ActivityKeySpecifier = ('id' | 'timestamp' | 'txHash' | ActivityKeySpecifier)[];\nexport type ActivityFieldPolicy = {\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  timestamp?: FieldPolicy<any> | FieldReadFunction<any>;\n  txHash?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type ActivityUpdateKeySpecifier = ('changedAt' | 'event' | ActivityUpdateKeySpecifier)[];\nexport type ActivityUpdateFieldPolicy = {\n  changedAt?: FieldPolicy<any> | FieldReadFunction<any>;\n  event?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type AddressProfileKeySpecifier = (\n  | 'name'\n  | 'profilePictureUrl'\n  | AddressProfileKeySpecifier\n)[];\nexport type AddressProfileFieldPolicy = {\n  name?: FieldPolicy<any> | FieldReadFunction<any>;\n  profilePictureUrl?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type ApprovalExposureKeySpecifier = (\n  | 'contractAddress'\n  | 'exposedValueUsd'\n  | 'heldCount'\n  | 'isStandard'\n  | 'nfts'\n  | 'operator'\n  | 'operatorKind'\n  | 'operatorName'\n  | 'owner'\n  | ApprovalExposureKeySpecifier\n)[];\nexport type ApprovalExposureFieldPolicy = {\n  contractAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  exposedValueUsd?: FieldPolicy<any> | FieldReadFunction<any>;\n  heldCount?: FieldPolicy<any> | FieldReadFunction<any>;\n  isStandard?: FieldPolicy<any> | FieldReadFunction<any>;\n  nfts?: FieldPolicy<any> | FieldReadFunction<any>;\n  operator?: FieldPolicy<any> | FieldReadFunction<any>;\n  operatorKind?: FieldPolicy<any> | FieldReadFunction<any>;\n  operatorName?: FieldPolicy<any> | FieldReadFunction<any>;\n  owner?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type ApprovalExposuresKeySpecifier = (\n  | 'exposures'\n  | 'incompleteOwners'\n  | ApprovalExposuresKeySpecifier\n)[];\nexport type ApprovalExposuresFieldPolicy = {\n  exposures?: FieldPolicy<any> | FieldReadFunction<any>;\n  incompleteOwners?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type ArtistKeySpecifier = (\n  | 'artistType'\n  | 'artworksCount'\n  | 'bio'\n  | 'collectionsCount'\n  | 'ethMintAddresses'\n  | 'followersCount'\n  | 'id'\n  | 'image'\n  | 'isFollowed'\n  | 'lastMint'\n  | 'marketStats'\n  | 'name'\n  | 'numberOfNftsOwned'\n  | 'numberOfPricedNfts'\n  | 'sales1d'\n  | 'slug'\n  | 'socials'\n  | 'totalVolume'\n  | 'uniqueCollectors'\n  | 'volume1d'\n  | 'websites'\n  | ArtistKeySpecifier\n)[];\nexport type ArtistFieldPolicy = {\n  artistType?: FieldPolicy<any> | FieldReadFunction<any>;\n  artworksCount?: FieldPolicy<any> | FieldReadFunction<any>;\n  bio?: FieldPolicy<any> | FieldReadFunction<any>;\n  collectionsCount?: FieldPolicy<any> | FieldReadFunction<any>;\n  ethMintAddresses?: FieldPolicy<any> | FieldReadFunction<any>;\n  followersCount?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  image?: FieldPolicy<any> | FieldReadFunction<any>;\n  isFollowed?: FieldPolicy<any> | FieldReadFunction<any>;\n  lastMint?: FieldPolicy<any> | FieldReadFunction<any>;\n  marketStats?: FieldPolicy<any> | FieldReadFunction<any>;\n  name?: FieldPolicy<any> | FieldReadFunction<any>;\n  numberOfNftsOwned?: FieldPolicy<any> | FieldReadFunction<any>;\n  numberOfPricedNfts?: FieldPolicy<any> | FieldReadFunction<any>;\n  sales1d?: FieldPolicy<any> | FieldReadFunction<any>;\n  slug?: FieldPolicy<any> | FieldReadFunction<any>;\n  socials?: FieldPolicy<any> | FieldReadFunction<any>;\n  totalVolume?: FieldPolicy<any> | FieldReadFunction<any>;\n  uniqueCollectors?: FieldPolicy<any> | FieldReadFunction<any>;\n  volume1d?: FieldPolicy<any> | FieldReadFunction<any>;\n  websites?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type ArtistCatalogEntryKeySpecifier = (\n  | 'firstMintDate'\n  | 'id'\n  | 'item'\n  | 'itemsCount'\n  | 'lastSale'\n  | 'previewNfts'\n  | 'price'\n  | 'sales1d'\n  | 'topOffer'\n  | 'volume1d'\n  | ArtistCatalogEntryKeySpecifier\n)[];\nexport type ArtistCatalogEntryFieldPolicy = {\n  firstMintDate?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  item?: FieldPolicy<any> | FieldReadFunction<any>;\n  itemsCount?: FieldPolicy<any> | FieldReadFunction<any>;\n  lastSale?: FieldPolicy<any> | FieldReadFunction<any>;\n  previewNfts?: FieldPolicy<any> | FieldReadFunction<any>;\n  price?: FieldPolicy<any> | FieldReadFunction<any>;\n  sales1d?: FieldPolicy<any> | FieldReadFunction<any>;\n  topOffer?: FieldPolicy<any> | FieldReadFunction<any>;\n  volume1d?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type ArtistCatalogEntryConnectionKeySpecifier = (\n  | 'edges'\n  | 'pageInfo'\n  | 'totalCount'\n  | ArtistCatalogEntryConnectionKeySpecifier\n)[];\nexport type ArtistCatalogEntryConnectionFieldPolicy = {\n  edges?: FieldPolicy<any> | FieldReadFunction<any>;\n  pageInfo?: FieldPolicy<any> | FieldReadFunction<any>;\n  totalCount?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type ArtistCatalogEntryEdgeKeySpecifier = (\n  | 'cursor'\n  | 'node'\n  | ArtistCatalogEntryEdgeKeySpecifier\n)[];\nexport type ArtistCatalogEntryEdgeFieldPolicy = {\n  cursor?: FieldPolicy<any> | FieldReadFunction<any>;\n  node?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type ArtistConnectionKeySpecifier = (\n  | 'edges'\n  | 'pageInfo'\n  | 'totalCount'\n  | ArtistConnectionKeySpecifier\n)[];\nexport type ArtistConnectionFieldPolicy = {\n  edges?: FieldPolicy<any> | FieldReadFunction<any>;\n  pageInfo?: FieldPolicy<any> | FieldReadFunction<any>;\n  totalCount?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type ArtistEdgeKeySpecifier = ('cursor' | 'node' | ArtistEdgeKeySpecifier)[];\nexport type ArtistEdgeFieldPolicy = {\n  cursor?: FieldPolicy<any> | FieldReadFunction<any>;\n  node?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type ArtistHolderKeySpecifier = (\n  | 'activity'\n  | 'address'\n  | 'addressType'\n  | 'editionsOwned'\n  | 'firstAcquired'\n  | 'id'\n  | 'lastAcquired'\n  | 'name'\n  | 'oneOfOnesOwned'\n  | 'ownedAmount'\n  | 'pfpsOwned'\n  | 'previewItems'\n  | 'profilePictureUrl'\n  | 'seriesOwned'\n  | ArtistHolderKeySpecifier\n)[];\nexport type ArtistHolderFieldPolicy = {\n  activity?: FieldPolicy<any> | FieldReadFunction<any>;\n  address?: FieldPolicy<any> | FieldReadFunction<any>;\n  addressType?: FieldPolicy<any> | FieldReadFunction<any>;\n  editionsOwned?: FieldPolicy<any> | FieldReadFunction<any>;\n  firstAcquired?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  lastAcquired?: FieldPolicy<any> | FieldReadFunction<any>;\n  name?: FieldPolicy<any> | FieldReadFunction<any>;\n  oneOfOnesOwned?: FieldPolicy<any> | FieldReadFunction<any>;\n  ownedAmount?: FieldPolicy<any> | FieldReadFunction<any>;\n  pfpsOwned?: FieldPolicy<any> | FieldReadFunction<any>;\n  previewItems?: FieldPolicy<any> | FieldReadFunction<any>;\n  profilePictureUrl?: FieldPolicy<any> | FieldReadFunction<any>;\n  seriesOwned?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type ArtistHolderConnectionKeySpecifier = (\n  | 'edges'\n  | 'pageInfo'\n  | 'totalCount'\n  | ArtistHolderConnectionKeySpecifier\n)[];\nexport type ArtistHolderConnectionFieldPolicy = {\n  edges?: FieldPolicy<any> | FieldReadFunction<any>;\n  pageInfo?: FieldPolicy<any> | FieldReadFunction<any>;\n  totalCount?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type ArtistHolderEdgeKeySpecifier = ('cursor' | 'node' | ArtistHolderEdgeKeySpecifier)[];\nexport type ArtistHolderEdgeFieldPolicy = {\n  cursor?: FieldPolicy<any> | FieldReadFunction<any>;\n  node?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type ArtistHolderInsightsKeySpecifier = (\n  | 'artworks'\n  | 'buckets'\n  | 'editions'\n  | 'everyTypeHolders'\n  | 'holders'\n  | 'items'\n  | 'largestHolderAddress'\n  | 'largestHolderItems'\n  | 'majorityHolders'\n  | 'multiCollectionHolders'\n  | 'oneOfOnes'\n  | 'pfps'\n  | 'series'\n  | 'singletonHolders'\n  | 'topTenItems'\n  | 'unclassified'\n  | ArtistHolderInsightsKeySpecifier\n)[];\nexport type ArtistHolderInsightsFieldPolicy = {\n  artworks?: FieldPolicy<any> | FieldReadFunction<any>;\n  buckets?: FieldPolicy<any> | FieldReadFunction<any>;\n  editions?: FieldPolicy<any> | FieldReadFunction<any>;\n  everyTypeHolders?: FieldPolicy<any> | FieldReadFunction<any>;\n  holders?: FieldPolicy<any> | FieldReadFunction<any>;\n  items?: FieldPolicy<any> | FieldReadFunction<any>;\n  largestHolderAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  largestHolderItems?: FieldPolicy<any> | FieldReadFunction<any>;\n  majorityHolders?: FieldPolicy<any> | FieldReadFunction<any>;\n  multiCollectionHolders?: FieldPolicy<any> | FieldReadFunction<any>;\n  oneOfOnes?: FieldPolicy<any> | FieldReadFunction<any>;\n  pfps?: FieldPolicy<any> | FieldReadFunction<any>;\n  series?: FieldPolicy<any> | FieldReadFunction<any>;\n  singletonHolders?: FieldPolicy<any> | FieldReadFunction<any>;\n  topTenItems?: FieldPolicy<any> | FieldReadFunction<any>;\n  unclassified?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type ArtistHolderPopulationConnectionKeySpecifier = (\n  | 'edges'\n  | 'insights'\n  | 'pageInfo'\n  | 'populationCount'\n  | 'totalCount'\n  | 'wallet'\n  | ArtistHolderPopulationConnectionKeySpecifier\n)[];\nexport type ArtistHolderPopulationConnectionFieldPolicy = {\n  edges?: FieldPolicy<any> | FieldReadFunction<any>;\n  insights?: FieldPolicy<any> | FieldReadFunction<any>;\n  pageInfo?: FieldPolicy<any> | FieldReadFunction<any>;\n  populationCount?: FieldPolicy<any> | FieldReadFunction<any>;\n  totalCount?: FieldPolicy<any> | FieldReadFunction<any>;\n  wallet?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type ArtistHolderSizeBucketKeySpecifier = (\n  | 'holders'\n  | 'items'\n  | 'maximum'\n  | 'minimum'\n  | ArtistHolderSizeBucketKeySpecifier\n)[];\nexport type ArtistHolderSizeBucketFieldPolicy = {\n  holders?: FieldPolicy<any> | FieldReadFunction<any>;\n  items?: FieldPolicy<any> | FieldReadFunction<any>;\n  maximum?: FieldPolicy<any> | FieldReadFunction<any>;\n  minimum?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type ArtistHolderV2KeySpecifier = (\n  | 'activity'\n  | 'address'\n  | 'addressType'\n  | 'editionsOwned'\n  | 'firstAcquired'\n  | 'id'\n  | 'lastAcquired'\n  | 'name'\n  | 'oneOfOnesOwned'\n  | 'ownedAmount'\n  | 'pfpsOwned'\n  | 'previewItems'\n  | 'profilePictureUrl'\n  | 'seriesOwned'\n  | 'unclassifiedOwned'\n  | ArtistHolderV2KeySpecifier\n)[];\nexport type ArtistHolderV2FieldPolicy = {\n  activity?: FieldPolicy<any> | FieldReadFunction<any>;\n  address?: FieldPolicy<any> | FieldReadFunction<any>;\n  addressType?: FieldPolicy<any> | FieldReadFunction<any>;\n  editionsOwned?: FieldPolicy<any> | FieldReadFunction<any>;\n  firstAcquired?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  lastAcquired?: FieldPolicy<any> | FieldReadFunction<any>;\n  name?: FieldPolicy<any> | FieldReadFunction<any>;\n  oneOfOnesOwned?: FieldPolicy<any> | FieldReadFunction<any>;\n  ownedAmount?: FieldPolicy<any> | FieldReadFunction<any>;\n  pfpsOwned?: FieldPolicy<any> | FieldReadFunction<any>;\n  previewItems?: FieldPolicy<any> | FieldReadFunction<any>;\n  profilePictureUrl?: FieldPolicy<any> | FieldReadFunction<any>;\n  seriesOwned?: FieldPolicy<any> | FieldReadFunction<any>;\n  unclassifiedOwned?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type ArtistHolderV2ConnectionKeySpecifier = (\n  | 'edges'\n  | 'pageInfo'\n  | 'totalCount'\n  | ArtistHolderV2ConnectionKeySpecifier\n)[];\nexport type ArtistHolderV2ConnectionFieldPolicy = {\n  edges?: FieldPolicy<any> | FieldReadFunction<any>;\n  pageInfo?: FieldPolicy<any> | FieldReadFunction<any>;\n  totalCount?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type ArtistHolderV2EdgeKeySpecifier = ('cursor' | 'node' | ArtistHolderV2EdgeKeySpecifier)[];\nexport type ArtistHolderV2EdgeFieldPolicy = {\n  cursor?: FieldPolicy<any> | FieldReadFunction<any>;\n  node?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type ArtistHoldingKeySpecifier = (\n  | 'itemType'\n  | 'nft'\n  | 'quantity'\n  | ArtistHoldingKeySpecifier\n)[];\nexport type ArtistHoldingFieldPolicy = {\n  itemType?: FieldPolicy<any> | FieldReadFunction<any>;\n  nft?: FieldPolicy<any> | FieldReadFunction<any>;\n  quantity?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type ArtistHoldingConnectionKeySpecifier = (\n  | 'edges'\n  | 'pageInfo'\n  | 'totalCount'\n  | ArtistHoldingConnectionKeySpecifier\n)[];\nexport type ArtistHoldingConnectionFieldPolicy = {\n  edges?: FieldPolicy<any> | FieldReadFunction<any>;\n  pageInfo?: FieldPolicy<any> | FieldReadFunction<any>;\n  totalCount?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type ArtistHoldingEdgeKeySpecifier = ('cursor' | 'node' | ArtistHoldingEdgeKeySpecifier)[];\nexport type ArtistHoldingEdgeFieldPolicy = {\n  cursor?: FieldPolicy<any> | FieldReadFunction<any>;\n  node?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type ArtistMarketStatsKeySpecifier = (\n  | 'activeLoansCount'\n  | 'outstandingDebtUsd'\n  | 'salesCount7d'\n  | 'salesCount30d'\n  | 'salesCount365d'\n  | 'salesVolumeUsd7d'\n  | 'salesVolumeUsd30d'\n  | 'salesVolumeUsd365d'\n  | ArtistMarketStatsKeySpecifier\n)[];\nexport type ArtistMarketStatsFieldPolicy = {\n  activeLoansCount?: FieldPolicy<any> | FieldReadFunction<any>;\n  outstandingDebtUsd?: FieldPolicy<any> | FieldReadFunction<any>;\n  salesCount7d?: FieldPolicy<any> | FieldReadFunction<any>;\n  salesCount30d?: FieldPolicy<any> | FieldReadFunction<any>;\n  salesCount365d?: FieldPolicy<any> | FieldReadFunction<any>;\n  salesVolumeUsd7d?: FieldPolicy<any> | FieldReadFunction<any>;\n  salesVolumeUsd30d?: FieldPolicy<any> | FieldReadFunction<any>;\n  salesVolumeUsd365d?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type ArtistRankedHolderKeySpecifier = (\n  | 'activity'\n  | 'address'\n  | 'addressType'\n  | 'editionsOwned'\n  | 'firstAcquired'\n  | 'id'\n  | 'lastAcquired'\n  | 'name'\n  | 'oneOfOnesOwned'\n  | 'ownedAmount'\n  | 'pageAfter'\n  | 'pfpsOwned'\n  | 'populationRank'\n  | 'previewItems'\n  | 'profilePictureUrl'\n  | 'seriesOwned'\n  | 'unclassifiedOwned'\n  | ArtistRankedHolderKeySpecifier\n)[];\nexport type ArtistRankedHolderFieldPolicy = {\n  activity?: FieldPolicy<any> | FieldReadFunction<any>;\n  address?: FieldPolicy<any> | FieldReadFunction<any>;\n  addressType?: FieldPolicy<any> | FieldReadFunction<any>;\n  editionsOwned?: FieldPolicy<any> | FieldReadFunction<any>;\n  firstAcquired?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  lastAcquired?: FieldPolicy<any> | FieldReadFunction<any>;\n  name?: FieldPolicy<any> | FieldReadFunction<any>;\n  oneOfOnesOwned?: FieldPolicy<any> | FieldReadFunction<any>;\n  ownedAmount?: FieldPolicy<any> | FieldReadFunction<any>;\n  pageAfter?: FieldPolicy<any> | FieldReadFunction<any>;\n  pfpsOwned?: FieldPolicy<any> | FieldReadFunction<any>;\n  populationRank?: FieldPolicy<any> | FieldReadFunction<any>;\n  previewItems?: FieldPolicy<any> | FieldReadFunction<any>;\n  profilePictureUrl?: FieldPolicy<any> | FieldReadFunction<any>;\n  seriesOwned?: FieldPolicy<any> | FieldReadFunction<any>;\n  unclassifiedOwned?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type ArtistRankedHolderEdgeKeySpecifier = (\n  | 'cursor'\n  | 'node'\n  | ArtistRankedHolderEdgeKeySpecifier\n)[];\nexport type ArtistRankedHolderEdgeFieldPolicy = {\n  cursor?: FieldPolicy<any> | FieldReadFunction<any>;\n  node?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type AskCancelledNotificationKeySpecifier = (\n  | 'createdOn'\n  | 'id'\n  | 'notificationType'\n  | 'order'\n  | 'orderId'\n  | 'readOn'\n  | 'user'\n  | AskCancelledNotificationKeySpecifier\n)[];\nexport type AskCancelledNotificationFieldPolicy = {\n  createdOn?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  notificationType?: FieldPolicy<any> | FieldReadFunction<any>;\n  order?: FieldPolicy<any> | FieldReadFunction<any>;\n  orderId?: FieldPolicy<any> | FieldReadFunction<any>;\n  readOn?: FieldPolicy<any> | FieldReadFunction<any>;\n  user?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type AskCreatedNotificationKeySpecifier = (\n  | 'createdOn'\n  | 'id'\n  | 'notificationType'\n  | 'order'\n  | 'orderId'\n  | 'readOn'\n  | 'user'\n  | AskCreatedNotificationKeySpecifier\n)[];\nexport type AskCreatedNotificationFieldPolicy = {\n  createdOn?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  notificationType?: FieldPolicy<any> | FieldReadFunction<any>;\n  order?: FieldPolicy<any> | FieldReadFunction<any>;\n  orderId?: FieldPolicy<any> | FieldReadFunction<any>;\n  readOn?: FieldPolicy<any> | FieldReadFunction<any>;\n  user?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type AssetKeySpecifier = (\n  | 'accessTypeName'\n  | 'cacheUrl'\n  | 'contentTypeMime'\n  | 'data'\n  | 'id'\n  | AssetKeySpecifier\n)[];\nexport type AssetFieldPolicy = {\n  accessTypeName?: FieldPolicy<any> | FieldReadFunction<any>;\n  cacheUrl?: FieldPolicy<any> | FieldReadFunction<any>;\n  contentTypeMime?: FieldPolicy<any> | FieldReadFunction<any>;\n  data?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type AuctionKeySpecifier = (\n  | 'duration'\n  | 'endTime'\n  | 'highestBid'\n  | 'id'\n  | 'loan'\n  | 'minBid'\n  | 'originator'\n  | 'settler'\n  | 'startTime'\n  | 'status'\n  | 'triggerFee'\n  | AuctionKeySpecifier\n)[];\nexport type AuctionFieldPolicy = {\n  duration?: FieldPolicy<any> | FieldReadFunction<any>;\n  endTime?: FieldPolicy<any> | FieldReadFunction<any>;\n  highestBid?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  loan?: FieldPolicy<any> | FieldReadFunction<any>;\n  minBid?: FieldPolicy<any> | FieldReadFunction<any>;\n  originator?: FieldPolicy<any> | FieldReadFunction<any>;\n  settler?: FieldPolicy<any> | FieldReadFunction<any>;\n  startTime?: FieldPolicy<any> | FieldReadFunction<any>;\n  status?: FieldPolicy<any> | FieldReadFunction<any>;\n  triggerFee?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type AuctionBidConfirmationNotificationKeySpecifier = (\n  | 'auction'\n  | 'auctionId'\n  | 'bid'\n  | 'bidId'\n  | 'createdOn'\n  | 'id'\n  | 'loan'\n  | 'loanId'\n  | 'notificationType'\n  | 'readOn'\n  | 'user'\n  | AuctionBidConfirmationNotificationKeySpecifier\n)[];\nexport type AuctionBidConfirmationNotificationFieldPolicy = {\n  auction?: FieldPolicy<any> | FieldReadFunction<any>;\n  auctionId?: FieldPolicy<any> | FieldReadFunction<any>;\n  bid?: FieldPolicy<any> | FieldReadFunction<any>;\n  bidId?: FieldPolicy<any> | FieldReadFunction<any>;\n  createdOn?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  loan?: FieldPolicy<any> | FieldReadFunction<any>;\n  loanId?: FieldPolicy<any> | FieldReadFunction<any>;\n  notificationType?: FieldPolicy<any> | FieldReadFunction<any>;\n  readOn?: FieldPolicy<any> | FieldReadFunction<any>;\n  user?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type AuctionConnectionKeySpecifier = (\n  | 'edges'\n  | 'pageInfo'\n  | 'totalCount'\n  | AuctionConnectionKeySpecifier\n)[];\nexport type AuctionConnectionFieldPolicy = {\n  edges?: FieldPolicy<any> | FieldReadFunction<any>;\n  pageInfo?: FieldPolicy<any> | FieldReadFunction<any>;\n  totalCount?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type AuctionEdgeKeySpecifier = ('cursor' | 'node' | AuctionEdgeKeySpecifier)[];\nexport type AuctionEdgeFieldPolicy = {\n  cursor?: FieldPolicy<any> | FieldReadFunction<any>;\n  node?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type AuctionEndedNotificationKeySpecifier = (\n  | 'auction'\n  | 'auctionId'\n  | 'createdOn'\n  | 'id'\n  | 'loan'\n  | 'loanId'\n  | 'notificationType'\n  | 'readOn'\n  | 'user'\n  | AuctionEndedNotificationKeySpecifier\n)[];\nexport type AuctionEndedNotificationFieldPolicy = {\n  auction?: FieldPolicy<any> | FieldReadFunction<any>;\n  auctionId?: FieldPolicy<any> | FieldReadFunction<any>;\n  createdOn?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  loan?: FieldPolicy<any> | FieldReadFunction<any>;\n  loanId?: FieldPolicy<any> | FieldReadFunction<any>;\n  notificationType?: FieldPolicy<any> | FieldReadFunction<any>;\n  readOn?: FieldPolicy<any> | FieldReadFunction<any>;\n  user?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type AuctionStartedNotificationKeySpecifier = (\n  | 'auction'\n  | 'auctionId'\n  | 'createdOn'\n  | 'id'\n  | 'loan'\n  | 'loanId'\n  | 'notificationType'\n  | 'readOn'\n  | 'user'\n  | AuctionStartedNotificationKeySpecifier\n)[];\nexport type AuctionStartedNotificationFieldPolicy = {\n  auction?: FieldPolicy<any> | FieldReadFunction<any>;\n  auctionId?: FieldPolicy<any> | FieldReadFunction<any>;\n  createdOn?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  loan?: FieldPolicy<any> | FieldReadFunction<any>;\n  loanId?: FieldPolicy<any> | FieldReadFunction<any>;\n  notificationType?: FieldPolicy<any> | FieldReadFunction<any>;\n  readOn?: FieldPolicy<any> | FieldReadFunction<any>;\n  user?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type AuctionWonNotificationKeySpecifier = (\n  | 'auction'\n  | 'auctionId'\n  | 'createdOn'\n  | 'id'\n  | 'loan'\n  | 'loanId'\n  | 'notificationType'\n  | 'readOn'\n  | 'user'\n  | AuctionWonNotificationKeySpecifier\n)[];\nexport type AuctionWonNotificationFieldPolicy = {\n  auction?: FieldPolicy<any> | FieldReadFunction<any>;\n  auctionId?: FieldPolicy<any> | FieldReadFunction<any>;\n  createdOn?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  loan?: FieldPolicy<any> | FieldReadFunction<any>;\n  loanId?: FieldPolicy<any> | FieldReadFunction<any>;\n  notificationType?: FieldPolicy<any> | FieldReadFunction<any>;\n  readOn?: FieldPolicy<any> | FieldReadFunction<any>;\n  user?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type BidKeySpecifier = (\n  | 'amount'\n  | 'auction'\n  | 'auctionId'\n  | 'bidder'\n  | 'bidderName'\n  | 'bidderProfilePictureUrl'\n  | 'id'\n  | 'indexInBlock'\n  | 'timestamp'\n  | 'txHash'\n  | BidKeySpecifier\n)[];\nexport type BidFieldPolicy = {\n  amount?: FieldPolicy<any> | FieldReadFunction<any>;\n  auction?: FieldPolicy<any> | FieldReadFunction<any>;\n  auctionId?: FieldPolicy<any> | FieldReadFunction<any>;\n  bidder?: FieldPolicy<any> | FieldReadFunction<any>;\n  bidderName?: FieldPolicy<any> | FieldReadFunction<any>;\n  bidderProfilePictureUrl?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  indexInBlock?: FieldPolicy<any> | FieldReadFunction<any>;\n  timestamp?: FieldPolicy<any> | FieldReadFunction<any>;\n  txHash?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type BidConnectionKeySpecifier = (\n  | 'edges'\n  | 'pageInfo'\n  | 'totalCount'\n  | BidConnectionKeySpecifier\n)[];\nexport type BidConnectionFieldPolicy = {\n  edges?: FieldPolicy<any> | FieldReadFunction<any>;\n  pageInfo?: FieldPolicy<any> | FieldReadFunction<any>;\n  totalCount?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type BidEdgeKeySpecifier = ('cursor' | 'node' | BidEdgeKeySpecifier)[];\nexport type BidEdgeFieldPolicy = {\n  cursor?: FieldPolicy<any> | FieldReadFunction<any>;\n  node?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type BidHistoryKeySpecifier = ('price' | 'timestamp' | 'value' | BidHistoryKeySpecifier)[];\nexport type BidHistoryFieldPolicy = {\n  price?: FieldPolicy<any> | FieldReadFunction<any>;\n  timestamp?: FieldPolicy<any> | FieldReadFunction<any>;\n  value?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type BidNearListingNotificationKeySpecifier = (\n  | 'bidCurrency'\n  | 'bidNetAmount'\n  | 'createdOn'\n  | 'id'\n  | 'nft'\n  | 'nftId'\n  | 'notificationType'\n  | 'order'\n  | 'orderId'\n  | 'readOn'\n  | 'threshold'\n  | 'user'\n  | BidNearListingNotificationKeySpecifier\n)[];\nexport type BidNearListingNotificationFieldPolicy = {\n  bidCurrency?: FieldPolicy<any> | FieldReadFunction<any>;\n  bidNetAmount?: FieldPolicy<any> | FieldReadFunction<any>;\n  createdOn?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  nft?: FieldPolicy<any> | FieldReadFunction<any>;\n  nftId?: FieldPolicy<any> | FieldReadFunction<any>;\n  notificationType?: FieldPolicy<any> | FieldReadFunction<any>;\n  order?: FieldPolicy<any> | FieldReadFunction<any>;\n  orderId?: FieldPolicy<any> | FieldReadFunction<any>;\n  readOn?: FieldPolicy<any> | FieldReadFunction<any>;\n  threshold?: FieldPolicy<any> | FieldReadFunction<any>;\n  user?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type BigIntCurrencyAmountKeySpecifier = (\n  | 'amount'\n  | 'currency'\n  | BigIntCurrencyAmountKeySpecifier\n)[];\nexport type BigIntCurrencyAmountFieldPolicy = {\n  amount?: FieldPolicy<any> | FieldReadFunction<any>;\n  currency?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type BlendLienKeySpecifier = (\n  | 'amount'\n  | 'auctionDuration'\n  | 'auctionStartBlock'\n  | 'borrower'\n  | 'collection'\n  | 'lastEventBlock'\n  | 'lender'\n  | 'lienId'\n  | 'rate'\n  | 'startTime'\n  | 'tokenId'\n  | BlendLienKeySpecifier\n)[];\nexport type BlendLienFieldPolicy = {\n  amount?: FieldPolicy<any> | FieldReadFunction<any>;\n  auctionDuration?: FieldPolicy<any> | FieldReadFunction<any>;\n  auctionStartBlock?: FieldPolicy<any> | FieldReadFunction<any>;\n  borrower?: FieldPolicy<any> | FieldReadFunction<any>;\n  collection?: FieldPolicy<any> | FieldReadFunction<any>;\n  lastEventBlock?: FieldPolicy<any> | FieldReadFunction<any>;\n  lender?: FieldPolicy<any> | FieldReadFunction<any>;\n  lienId?: FieldPolicy<any> | FieldReadFunction<any>;\n  rate?: FieldPolicy<any> | FieldReadFunction<any>;\n  startTime?: FieldPolicy<any> | FieldReadFunction<any>;\n  tokenId?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type BulkNFTOrdersResultKeySpecifier = ('orders' | BulkNFTOrdersResultKeySpecifier)[];\nexport type BulkNFTOrdersResultFieldPolicy = {\n  orders?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type BuyNowPayLaterOrderKeySpecifier = (\n  | 'cancelsOffChain'\n  | 'createdDate'\n  | 'currency'\n  | 'currencyAddress'\n  | 'emitCalldata'\n  | 'evmOrder'\n  | 'executions'\n  | 'expiration'\n  | 'feeMetadata'\n  | 'fees'\n  | 'hidden'\n  | 'id'\n  | 'isAsk'\n  | 'isPrivate'\n  | 'maker'\n  | 'makerName'\n  | 'makerProfilePictureUrl'\n  | 'marketPlace'\n  | 'marketPlaceAddress'\n  | 'maxExecutions'\n  | 'netAmount'\n  | 'nft'\n  | 'nftId'\n  | 'nonce'\n  | 'orderType'\n  | 'originalId'\n  | 'platformFees'\n  | 'price'\n  | 'signature'\n  | 'startTime'\n  | 'status'\n  | 'stealth'\n  | 'taker'\n  | 'takerName'\n  | 'takerProfilePictureUrl'\n  | 'timestamp'\n  | 'updatedDate'\n  | BuyNowPayLaterOrderKeySpecifier\n)[];\nexport type BuyNowPayLaterOrderFieldPolicy = {\n  cancelsOffChain?: FieldPolicy<any> | FieldReadFunction<any>;\n  createdDate?: FieldPolicy<any> | FieldReadFunction<any>;\n  currency?: FieldPolicy<any> | FieldReadFunction<any>;\n  currencyAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  emitCalldata?: FieldPolicy<any> | FieldReadFunction<any>;\n  evmOrder?: FieldPolicy<any> | FieldReadFunction<any>;\n  executions?: FieldPolicy<any> | FieldReadFunction<any>;\n  expiration?: FieldPolicy<any> | FieldReadFunction<any>;\n  feeMetadata?: FieldPolicy<any> | FieldReadFunction<any>;\n  fees?: FieldPolicy<any> | FieldReadFunction<any>;\n  hidden?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  isAsk?: FieldPolicy<any> | FieldReadFunction<any>;\n  isPrivate?: FieldPolicy<any> | FieldReadFunction<any>;\n  maker?: FieldPolicy<any> | FieldReadFunction<any>;\n  makerName?: FieldPolicy<any> | FieldReadFunction<any>;\n  makerProfilePictureUrl?: FieldPolicy<any> | FieldReadFunction<any>;\n  marketPlace?: FieldPolicy<any> | FieldReadFunction<any>;\n  marketPlaceAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  maxExecutions?: FieldPolicy<any> | FieldReadFunction<any>;\n  netAmount?: FieldPolicy<any> | FieldReadFunction<any>;\n  nft?: FieldPolicy<any> | FieldReadFunction<any>;\n  nftId?: FieldPolicy<any> | FieldReadFunction<any>;\n  nonce?: FieldPolicy<any> | FieldReadFunction<any>;\n  orderType?: FieldPolicy<any> | FieldReadFunction<any>;\n  originalId?: FieldPolicy<any> | FieldReadFunction<any>;\n  platformFees?: FieldPolicy<any> | FieldReadFunction<any>;\n  price?: FieldPolicy<any> | FieldReadFunction<any>;\n  signature?: FieldPolicy<any> | FieldReadFunction<any>;\n  startTime?: FieldPolicy<any> | FieldReadFunction<any>;\n  status?: FieldPolicy<any> | FieldReadFunction<any>;\n  stealth?: FieldPolicy<any> | FieldReadFunction<any>;\n  taker?: FieldPolicy<any> | FieldReadFunction<any>;\n  takerName?: FieldPolicy<any> | FieldReadFunction<any>;\n  takerProfilePictureUrl?: FieldPolicy<any> | FieldReadFunction<any>;\n  timestamp?: FieldPolicy<any> | FieldReadFunction<any>;\n  updatedDate?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type CancelAllOrdersCalldataKeySpecifier = (\n  | 'calldata'\n  | 'marketPlaceAddress'\n  | CancelAllOrdersCalldataKeySpecifier\n)[];\nexport type CancelAllOrdersCalldataFieldPolicy = {\n  calldata?: FieldPolicy<any> | FieldReadFunction<any>;\n  marketPlaceAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type CancelTradeOrdersResultKeySpecifier = (\n  | 'cancelOrdersCalldata'\n  | 'cancelledOrders'\n  | 'onChainOrderIds'\n  | CancelTradeOrdersResultKeySpecifier\n)[];\nexport type CancelTradeOrdersResultFieldPolicy = {\n  cancelOrdersCalldata?: FieldPolicy<any> | FieldReadFunction<any>;\n  cancelledOrders?: FieldPolicy<any> | FieldReadFunction<any>;\n  onChainOrderIds?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type CollectionKeySpecifier = (\n  | 'actionsEnabled'\n  | 'artistArtworksCount'\n  | 'artistFloorPrice'\n  | 'artistNumberOfSales1d'\n  | 'artistTotalVolume1d'\n  | 'artistUniqueCollectorsCount'\n  | 'artists'\n  | 'bannerImage'\n  | 'collectionUrl'\n  | 'contractData'\n  | 'description'\n  | 'discordUrl'\n  | 'editionIds'\n  | 'erc1155Supply'\n  | 'externalUrl'\n  | 'followersCount'\n  | 'hasTransferValidator'\n  | 'holderStatistics'\n  | 'id'\n  | 'image'\n  | 'imageId'\n  | 'isFollowed'\n  | 'itemType'\n  | 'loansEnabled'\n  | 'maxNetPrincipalOffer'\n  | 'name'\n  | 'nftsCount'\n  | 'platformFees'\n  | 'previewNfts'\n  | 'rarityEnabled'\n  | 'royalties'\n  | 'slug'\n  | 'statistics'\n  | 'supply'\n  | 'traitOffersEnabled'\n  | 'twitterUsername'\n  | 'uniqueCollectors'\n  | 'verified'\n  | 'whitelistedSupply'\n  | 'wrappedCollection'\n  | 'wrappedCollectionId'\n  | 'wrapperCollections'\n  | CollectionKeySpecifier\n)[];\nexport type CollectionFieldPolicy = {\n  actionsEnabled?: FieldPolicy<any> | FieldReadFunction<any>;\n  artistArtworksCount?: FieldPolicy<any> | FieldReadFunction<any>;\n  artistFloorPrice?: FieldPolicy<any> | FieldReadFunction<any>;\n  artistNumberOfSales1d?: FieldPolicy<any> | FieldReadFunction<any>;\n  artistTotalVolume1d?: FieldPolicy<any> | FieldReadFunction<any>;\n  artistUniqueCollectorsCount?: FieldPolicy<any> | FieldReadFunction<any>;\n  artists?: FieldPolicy<any> | FieldReadFunction<any>;\n  bannerImage?: FieldPolicy<any> | FieldReadFunction<any>;\n  collectionUrl?: FieldPolicy<any> | FieldReadFunction<any>;\n  contractData?: FieldPolicy<any> | FieldReadFunction<any>;\n  description?: FieldPolicy<any> | FieldReadFunction<any>;\n  discordUrl?: FieldPolicy<any> | FieldReadFunction<any>;\n  editionIds?: FieldPolicy<any> | FieldReadFunction<any>;\n  erc1155Supply?: FieldPolicy<any> | FieldReadFunction<any>;\n  externalUrl?: FieldPolicy<any> | FieldReadFunction<any>;\n  followersCount?: FieldPolicy<any> | FieldReadFunction<any>;\n  hasTransferValidator?: FieldPolicy<any> | FieldReadFunction<any>;\n  holderStatistics?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  image?: FieldPolicy<any> | FieldReadFunction<any>;\n  imageId?: FieldPolicy<any> | FieldReadFunction<any>;\n  isFollowed?: FieldPolicy<any> | FieldReadFunction<any>;\n  itemType?: FieldPolicy<any> | FieldReadFunction<any>;\n  loansEnabled?: FieldPolicy<any> | FieldReadFunction<any>;\n  maxNetPrincipalOffer?: FieldPolicy<any> | FieldReadFunction<any>;\n  name?: FieldPolicy<any> | FieldReadFunction<any>;\n  nftsCount?: FieldPolicy<any> | FieldReadFunction<any>;\n  platformFees?: FieldPolicy<any> | FieldReadFunction<any>;\n  previewNfts?: FieldPolicy<any> | FieldReadFunction<any>;\n  rarityEnabled?: FieldPolicy<any> | FieldReadFunction<any>;\n  royalties?: FieldPolicy<any> | FieldReadFunction<any>;\n  slug?: FieldPolicy<any> | FieldReadFunction<any>;\n  statistics?: FieldPolicy<any> | FieldReadFunction<any>;\n  supply?: FieldPolicy<any> | FieldReadFunction<any>;\n  traitOffersEnabled?: FieldPolicy<any> | FieldReadFunction<any>;\n  twitterUsername?: FieldPolicy<any> | FieldReadFunction<any>;\n  uniqueCollectors?: FieldPolicy<any> | FieldReadFunction<any>;\n  verified?: FieldPolicy<any> | FieldReadFunction<any>;\n  whitelistedSupply?: FieldPolicy<any> | FieldReadFunction<any>;\n  wrappedCollection?: FieldPolicy<any> | FieldReadFunction<any>;\n  wrappedCollectionId?: FieldPolicy<any> | FieldReadFunction<any>;\n  wrapperCollections?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type CollectionConnectionKeySpecifier = (\n  | 'edges'\n  | 'pageInfo'\n  | 'totalCount'\n  | CollectionConnectionKeySpecifier\n)[];\nexport type CollectionConnectionFieldPolicy = {\n  edges?: FieldPolicy<any> | FieldReadFunction<any>;\n  pageInfo?: FieldPolicy<any> | FieldReadFunction<any>;\n  totalCount?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type CollectionEdgeKeySpecifier = ('cursor' | 'node' | CollectionEdgeKeySpecifier)[];\nexport type CollectionEdgeFieldPolicy = {\n  cursor?: FieldPolicy<any> | FieldReadFunction<any>;\n  node?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type CollectionEventsCountByDayAndCurrencyKeySpecifier = (\n  | 'auctions'\n  | 'buyouts'\n  | 'defaults'\n  | 'foreclosings'\n  | 'originations'\n  | 'refinancings'\n  | 'renegotiations'\n  | 'repayments'\n  | 'topUps'\n  | CollectionEventsCountByDayAndCurrencyKeySpecifier\n)[];\nexport type CollectionEventsCountByDayAndCurrencyFieldPolicy = {\n  auctions?: FieldPolicy<any> | FieldReadFunction<any>;\n  buyouts?: FieldPolicy<any> | FieldReadFunction<any>;\n  defaults?: FieldPolicy<any> | FieldReadFunction<any>;\n  foreclosings?: FieldPolicy<any> | FieldReadFunction<any>;\n  originations?: FieldPolicy<any> | FieldReadFunction<any>;\n  refinancings?: FieldPolicy<any> | FieldReadFunction<any>;\n  renegotiations?: FieldPolicy<any> | FieldReadFunction<any>;\n  repayments?: FieldPolicy<any> | FieldReadFunction<any>;\n  topUps?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type CollectionHolderStatisticsKeySpecifier = (\n  | 'collectionId'\n  | 'holders'\n  | 'id'\n  | 'items'\n  | 'nakamotoCoefficient'\n  | 'netBuyers30Days'\n  | 'netSellers30Days'\n  | 'newHolders30Days'\n  | 'supply'\n  | 'timestamp'\n  | 'top10Count'\n  | 'top10NetFlow30Days'\n  | 'topHolderAddress'\n  | 'topHolderCount'\n  | 'topHolders'\n  | 'topMoverAddress'\n  | 'topMoverNetFlow30Days'\n  | 'uniqueHolders'\n  | CollectionHolderStatisticsKeySpecifier\n)[];\nexport type CollectionHolderStatisticsFieldPolicy = {\n  collectionId?: FieldPolicy<any> | FieldReadFunction<any>;\n  holders?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  items?: FieldPolicy<any> | FieldReadFunction<any>;\n  nakamotoCoefficient?: FieldPolicy<any> | FieldReadFunction<any>;\n  netBuyers30Days?: FieldPolicy<any> | FieldReadFunction<any>;\n  netSellers30Days?: FieldPolicy<any> | FieldReadFunction<any>;\n  newHolders30Days?: FieldPolicy<any> | FieldReadFunction<any>;\n  supply?: FieldPolicy<any> | FieldReadFunction<any>;\n  timestamp?: FieldPolicy<any> | FieldReadFunction<any>;\n  top10Count?: FieldPolicy<any> | FieldReadFunction<any>;\n  top10NetFlow30Days?: FieldPolicy<any> | FieldReadFunction<any>;\n  topHolderAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  topHolderCount?: FieldPolicy<any> | FieldReadFunction<any>;\n  topHolders?: FieldPolicy<any> | FieldReadFunction<any>;\n  topMoverAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  topMoverNetFlow30Days?: FieldPolicy<any> | FieldReadFunction<any>;\n  uniqueHolders?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type CollectionLoansDataKeySpecifier = (\n  | 'maxAprBps'\n  | 'maxPrincipalAmount'\n  | 'maxRemainingTime'\n  | 'minAprBps'\n  | 'minPrincipalAmount'\n  | 'minRemainingTime'\n  | CollectionLoansDataKeySpecifier\n)[];\nexport type CollectionLoansDataFieldPolicy = {\n  maxAprBps?: FieldPolicy<any> | FieldReadFunction<any>;\n  maxPrincipalAmount?: FieldPolicy<any> | FieldReadFunction<any>;\n  maxRemainingTime?: FieldPolicy<any> | FieldReadFunction<any>;\n  minAprBps?: FieldPolicy<any> | FieldReadFunction<any>;\n  minPrincipalAmount?: FieldPolicy<any> | FieldReadFunction<any>;\n  minRemainingTime?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type CollectionMarketDepthKeySpecifier = (\n  | 'asOf'\n  | 'asks'\n  | 'bids'\n  | 'nativeCurrencyAddress'\n  | 'omittedCount'\n  | CollectionMarketDepthKeySpecifier\n)[];\nexport type CollectionMarketDepthFieldPolicy = {\n  asOf?: FieldPolicy<any> | FieldReadFunction<any>;\n  asks?: FieldPolicy<any> | FieldReadFunction<any>;\n  bids?: FieldPolicy<any> | FieldReadFunction<any>;\n  nativeCurrencyAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  omittedCount?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type CollectionOfferKeySpecifier = (\n  | 'aprBps'\n  | 'availablePrincipalAmount'\n  | 'borrowerAddress'\n  | 'borrowerName'\n  | 'borrowerProfilePictureUrl'\n  | 'capacity'\n  | 'collateralAddress'\n  | 'collection'\n  | 'collectionId'\n  | 'consumedCapacity'\n  | 'contractAddress'\n  | 'createdDate'\n  | 'currency'\n  | 'duration'\n  | 'expirationTime'\n  | 'fee'\n  | 'hidden'\n  | 'id'\n  | 'lenderAddress'\n  | 'lenderAllowance'\n  | 'lenderAvailableBalance'\n  | 'lenderName'\n  | 'lenderProfilePictureUrl'\n  | 'lenderRefinanceDisabled'\n  | 'maxPrincipal'\n  | 'maxSeniorRepayment'\n  | 'maxTrancheFloor'\n  | 'netPrincipal'\n  | 'nftId'\n  | 'offerHash'\n  | 'offerId'\n  | 'principalAddress'\n  | 'principalAmount'\n  | 'repayment'\n  | 'requiresLiquidation'\n  | 'signature'\n  | 'signerAddress'\n  | 'statistics'\n  | 'status'\n  | 'timestamp'\n  | 'validators'\n  | CollectionOfferKeySpecifier\n)[];\nexport type CollectionOfferFieldPolicy = {\n  aprBps?: FieldPolicy<any> | FieldReadFunction<any>;\n  availablePrincipalAmount?: FieldPolicy<any> | FieldReadFunction<any>;\n  borrowerAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  borrowerName?: FieldPolicy<any> | FieldReadFunction<any>;\n  borrowerProfilePictureUrl?: FieldPolicy<any> | FieldReadFunction<any>;\n  capacity?: FieldPolicy<any> | FieldReadFunction<any>;\n  collateralAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  collection?: FieldPolicy<any> | FieldReadFunction<any>;\n  collectionId?: FieldPolicy<any> | FieldReadFunction<any>;\n  consumedCapacity?: FieldPolicy<any> | FieldReadFunction<any>;\n  contractAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  createdDate?: FieldPolicy<any> | FieldReadFunction<any>;\n  currency?: FieldPolicy<any> | FieldReadFunction<any>;\n  duration?: FieldPolicy<any> | FieldReadFunction<any>;\n  expirationTime?: FieldPolicy<any> | FieldReadFunction<any>;\n  fee?: FieldPolicy<any> | FieldReadFunction<any>;\n  hidden?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  lenderAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  lenderAllowance?: FieldPolicy<any> | FieldReadFunction<any>;\n  lenderAvailableBalance?: FieldPolicy<any> | FieldReadFunction<any>;\n  lenderName?: FieldPolicy<any> | FieldReadFunction<any>;\n  lenderProfilePictureUrl?: FieldPolicy<any> | FieldReadFunction<any>;\n  lenderRefinanceDisabled?: FieldPolicy<any> | FieldReadFunction<any>;\n  maxPrincipal?: FieldPolicy<any> | FieldReadFunction<any>;\n  maxSeniorRepayment?: FieldPolicy<any> | FieldReadFunction<any>;\n  maxTrancheFloor?: FieldPolicy<any> | FieldReadFunction<any>;\n  netPrincipal?: FieldPolicy<any> | FieldReadFunction<any>;\n  nftId?: FieldPolicy<any> | FieldReadFunction<any>;\n  offerHash?: FieldPolicy<any> | FieldReadFunction<any>;\n  offerId?: FieldPolicy<any> | FieldReadFunction<any>;\n  principalAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  principalAmount?: FieldPolicy<any> | FieldReadFunction<any>;\n  repayment?: FieldPolicy<any> | FieldReadFunction<any>;\n  requiresLiquidation?: FieldPolicy<any> | FieldReadFunction<any>;\n  signature?: FieldPolicy<any> | FieldReadFunction<any>;\n  signerAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  statistics?: FieldPolicy<any> | FieldReadFunction<any>;\n  status?: FieldPolicy<any> | FieldReadFunction<any>;\n  timestamp?: FieldPolicy<any> | FieldReadFunction<any>;\n  validators?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type CollectionOfferStatisticsKeySpecifier = (\n  | 'acceptedLoans'\n  | 'consumedCapacity'\n  | CollectionOfferStatisticsKeySpecifier\n)[];\nexport type CollectionOfferStatisticsFieldPolicy = {\n  acceptedLoans?: FieldPolicy<any> | FieldReadFunction<any>;\n  consumedCapacity?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type CollectionOrderKeySpecifier = (\n  | 'cancelsOffChain'\n  | 'collection'\n  | 'collectionId'\n  | 'createdDate'\n  | 'currency'\n  | 'currencyAddress'\n  | 'evmOrder'\n  | 'executions'\n  | 'expiration'\n  | 'feeMetadata'\n  | 'fees'\n  | 'hidden'\n  | 'id'\n  | 'isAsk'\n  | 'isPrivate'\n  | 'maker'\n  | 'makerName'\n  | 'makerProfilePictureUrl'\n  | 'marketPlace'\n  | 'marketPlaceAddress'\n  | 'maxExecutions'\n  | 'netAmount'\n  | 'nonce'\n  | 'orderType'\n  | 'originalId'\n  | 'platformFees'\n  | 'price'\n  | 'signature'\n  | 'startTime'\n  | 'status'\n  | 'stealth'\n  | 'taker'\n  | 'takerName'\n  | 'takerProfilePictureUrl'\n  | 'timestamp'\n  | 'updatedDate'\n  | CollectionOrderKeySpecifier\n)[];\nexport type CollectionOrderFieldPolicy = {\n  cancelsOffChain?: FieldPolicy<any> | FieldReadFunction<any>;\n  collection?: FieldPolicy<any> | FieldReadFunction<any>;\n  collectionId?: FieldPolicy<any> | FieldReadFunction<any>;\n  createdDate?: FieldPolicy<any> | FieldReadFunction<any>;\n  currency?: FieldPolicy<any> | FieldReadFunction<any>;\n  currencyAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  evmOrder?: FieldPolicy<any> | FieldReadFunction<any>;\n  executions?: FieldPolicy<any> | FieldReadFunction<any>;\n  expiration?: FieldPolicy<any> | FieldReadFunction<any>;\n  feeMetadata?: FieldPolicy<any> | FieldReadFunction<any>;\n  fees?: FieldPolicy<any> | FieldReadFunction<any>;\n  hidden?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  isAsk?: FieldPolicy<any> | FieldReadFunction<any>;\n  isPrivate?: FieldPolicy<any> | FieldReadFunction<any>;\n  maker?: FieldPolicy<any> | FieldReadFunction<any>;\n  makerName?: FieldPolicy<any> | FieldReadFunction<any>;\n  makerProfilePictureUrl?: FieldPolicy<any> | FieldReadFunction<any>;\n  marketPlace?: FieldPolicy<any> | FieldReadFunction<any>;\n  marketPlaceAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  maxExecutions?: FieldPolicy<any> | FieldReadFunction<any>;\n  netAmount?: FieldPolicy<any> | FieldReadFunction<any>;\n  nonce?: FieldPolicy<any> | FieldReadFunction<any>;\n  orderType?: FieldPolicy<any> | FieldReadFunction<any>;\n  originalId?: FieldPolicy<any> | FieldReadFunction<any>;\n  platformFees?: FieldPolicy<any> | FieldReadFunction<any>;\n  price?: FieldPolicy<any> | FieldReadFunction<any>;\n  signature?: FieldPolicy<any> | FieldReadFunction<any>;\n  startTime?: FieldPolicy<any> | FieldReadFunction<any>;\n  status?: FieldPolicy<any> | FieldReadFunction<any>;\n  stealth?: FieldPolicy<any> | FieldReadFunction<any>;\n  taker?: FieldPolicy<any> | FieldReadFunction<any>;\n  takerName?: FieldPolicy<any> | FieldReadFunction<any>;\n  takerProfilePictureUrl?: FieldPolicy<any> | FieldReadFunction<any>;\n  timestamp?: FieldPolicy<any> | FieldReadFunction<any>;\n  updatedDate?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type CollectionStatisticsKeySpecifier = (\n  | 'bestOffer'\n  | 'burnedNftsCount'\n  | 'floorPrice'\n  | 'floorPrice1d'\n  | 'floorPrice7d'\n  | 'floorPrice30d'\n  | 'floorPriceAt'\n  | 'floorPriceHistory'\n  | 'highestApplicableBid'\n  | 'highestBid'\n  | 'loanInsights'\n  | 'maxAskPrice'\n  | 'medianLoanValue'\n  | 'minAskPrice'\n  | 'nftsCount'\n  | 'numberOfListings'\n  | 'numberOfNftsOwned'\n  | 'numberOfOffers'\n  | 'numberOfOffersForCurrencies'\n  | 'numberOfPricedNfts'\n  | 'numberOfSales1d'\n  | 'numberOfSales7d'\n  | 'numberOfSales30d'\n  | 'numberOfUnitsOwned'\n  | 'outstandingLoanCount'\n  | 'outstandingNftsCount'\n  | 'outstandingPrincipal'\n  | 'percentageInOutstandingLoans'\n  | 'repaymentRate'\n  | 'saleInsights'\n  | 'topBidHistory'\n  | 'totalLoanVolume'\n  | 'totalLoanVolume1d'\n  | 'totalLoanVolume1m'\n  | 'totalLoanVolume1w'\n  | 'totalLoanVolume1y'\n  | 'totalLoanVolume2m'\n  | 'totalLoanVolume3m'\n  | 'totalLoanVolume4m'\n  | 'totalOutstandingPrincipal'\n  | 'totalVolume'\n  | 'totalVolume1d'\n  | 'totalVolume1m'\n  | 'totalVolume1w'\n  | 'totalVolume1y'\n  | 'totalVolume2m'\n  | 'totalVolume3m'\n  | 'totalVolume4m'\n  | CollectionStatisticsKeySpecifier\n)[];\nexport type CollectionStatisticsFieldPolicy = {\n  bestOffer?: FieldPolicy<any> | FieldReadFunction<any>;\n  burnedNftsCount?: FieldPolicy<any> | FieldReadFunction<any>;\n  floorPrice?: FieldPolicy<any> | FieldReadFunction<any>;\n  floorPrice1d?: FieldPolicy<any> | FieldReadFunction<any>;\n  floorPrice7d?: FieldPolicy<any> | FieldReadFunction<any>;\n  floorPrice30d?: FieldPolicy<any> | FieldReadFunction<any>;\n  floorPriceAt?: FieldPolicy<any> | FieldReadFunction<any>;\n  floorPriceHistory?: FieldPolicy<any> | FieldReadFunction<any>;\n  highestApplicableBid?: FieldPolicy<any> | FieldReadFunction<any>;\n  highestBid?: FieldPolicy<any> | FieldReadFunction<any>;\n  loanInsights?: FieldPolicy<any> | FieldReadFunction<any>;\n  maxAskPrice?: FieldPolicy<any> | FieldReadFunction<any>;\n  medianLoanValue?: FieldPolicy<any> | FieldReadFunction<any>;\n  minAskPrice?: FieldPolicy<any> | FieldReadFunction<any>;\n  nftsCount?: FieldPolicy<any> | FieldReadFunction<any>;\n  numberOfListings?: FieldPolicy<any> | FieldReadFunction<any>;\n  numberOfNftsOwned?: FieldPolicy<any> | FieldReadFunction<any>;\n  numberOfOffers?: FieldPolicy<any> | FieldReadFunction<any>;\n  numberOfOffersForCurrencies?: FieldPolicy<any> | FieldReadFunction<any>;\n  numberOfPricedNfts?: FieldPolicy<any> | FieldReadFunction<any>;\n  numberOfSales1d?: FieldPolicy<any> | FieldReadFunction<any>;\n  numberOfSales7d?: FieldPolicy<any> | FieldReadFunction<any>;\n  numberOfSales30d?: FieldPolicy<any> | FieldReadFunction<any>;\n  numberOfUnitsOwned?: FieldPolicy<any> | FieldReadFunction<any>;\n  outstandingLoanCount?: FieldPolicy<any> | FieldReadFunction<any>;\n  outstandingNftsCount?: FieldPolicy<any> | FieldReadFunction<any>;\n  outstandingPrincipal?: FieldPolicy<any> | FieldReadFunction<any>;\n  percentageInOutstandingLoans?: FieldPolicy<any> | FieldReadFunction<any>;\n  repaymentRate?: FieldPolicy<any> | FieldReadFunction<any>;\n  saleInsights?: FieldPolicy<any> | FieldReadFunction<any>;\n  topBidHistory?: FieldPolicy<any> | FieldReadFunction<any>;\n  totalLoanVolume?: FieldPolicy<any> | FieldReadFunction<any>;\n  totalLoanVolume1d?: FieldPolicy<any> | FieldReadFunction<any>;\n  totalLoanVolume1m?: FieldPolicy<any> | FieldReadFunction<any>;\n  totalLoanVolume1w?: FieldPolicy<any> | FieldReadFunction<any>;\n  totalLoanVolume1y?: FieldPolicy<any> | FieldReadFunction<any>;\n  totalLoanVolume2m?: FieldPolicy<any> | FieldReadFunction<any>;\n  totalLoanVolume3m?: FieldPolicy<any> | FieldReadFunction<any>;\n  totalLoanVolume4m?: FieldPolicy<any> | FieldReadFunction<any>;\n  totalOutstandingPrincipal?: FieldPolicy<any> | FieldReadFunction<any>;\n  totalVolume?: FieldPolicy<any> | FieldReadFunction<any>;\n  totalVolume1d?: FieldPolicy<any> | FieldReadFunction<any>;\n  totalVolume1m?: FieldPolicy<any> | FieldReadFunction<any>;\n  totalVolume1w?: FieldPolicy<any> | FieldReadFunction<any>;\n  totalVolume1y?: FieldPolicy<any> | FieldReadFunction<any>;\n  totalVolume2m?: FieldPolicy<any> | FieldReadFunction<any>;\n  totalVolume3m?: FieldPolicy<any> | FieldReadFunction<any>;\n  totalVolume4m?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type CollectionValuationKeySpecifier = (\n  | 'collection'\n  | 'unvaluedNfts'\n  | 'value'\n  | 'valuedNfts'\n  | CollectionValuationKeySpecifier\n)[];\nexport type CollectionValuationFieldPolicy = {\n  collection?: FieldPolicy<any> | FieldReadFunction<any>;\n  unvaluedNfts?: FieldPolicy<any> | FieldReadFunction<any>;\n  value?: FieldPolicy<any> | FieldReadFunction<any>;\n  valuedNfts?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type CollectorsAlsoBoughtKeySpecifier = (\n  | 'collection'\n  | 'examplePurchases'\n  | 'sharedBuyers'\n  | CollectorsAlsoBoughtKeySpecifier\n)[];\nexport type CollectorsAlsoBoughtFieldPolicy = {\n  collection?: FieldPolicy<any> | FieldReadFunction<any>;\n  examplePurchases?: FieldPolicy<any> | FieldReadFunction<any>;\n  sharedBuyers?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type ContractDataKeySpecifier = (\n  | 'blockchain'\n  | 'contractAddress'\n  | 'createdDate'\n  | 'creatorAddress'\n  | 'id'\n  | 'standard'\n  | ContractDataKeySpecifier\n)[];\nexport type ContractDataFieldPolicy = {\n  blockchain?: FieldPolicy<any> | FieldReadFunction<any>;\n  contractAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  createdDate?: FieldPolicy<any> | FieldReadFunction<any>;\n  creatorAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  standard?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type CurrencyKeySpecifier = (\n  | 'address'\n  | 'currentEthRate'\n  | 'currentUsdcPrice'\n  | 'decimals'\n  | 'id'\n  | 'rateAtTime'\n  | 'rateAtTimes'\n  | 'symbol'\n  | 'usdcPriceAtTime'\n  | 'usdcPriceAtTimes'\n  | CurrencyKeySpecifier\n)[];\nexport type CurrencyFieldPolicy = {\n  address?: FieldPolicy<any> | FieldReadFunction<any>;\n  currentEthRate?: FieldPolicy<any> | FieldReadFunction<any>;\n  currentUsdcPrice?: FieldPolicy<any> | FieldReadFunction<any>;\n  decimals?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  rateAtTime?: FieldPolicy<any> | FieldReadFunction<any>;\n  rateAtTimes?: FieldPolicy<any> | FieldReadFunction<any>;\n  symbol?: FieldPolicy<any> | FieldReadFunction<any>;\n  usdcPriceAtTime?: FieldPolicy<any> | FieldReadFunction<any>;\n  usdcPriceAtTimes?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type CurrencyAmountKeySpecifier = ('amount' | 'currency' | CurrencyAmountKeySpecifier)[];\nexport type CurrencyAmountFieldPolicy = {\n  amount?: FieldPolicy<any> | FieldReadFunction<any>;\n  currency?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type CurrencyConnectionKeySpecifier = (\n  | 'edges'\n  | 'pageInfo'\n  | 'totalCount'\n  | CurrencyConnectionKeySpecifier\n)[];\nexport type CurrencyConnectionFieldPolicy = {\n  edges?: FieldPolicy<any> | FieldReadFunction<any>;\n  pageInfo?: FieldPolicy<any> | FieldReadFunction<any>;\n  totalCount?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type CurrencyEdgeKeySpecifier = ('cursor' | 'node' | CurrencyEdgeKeySpecifier)[];\nexport type CurrencyEdgeFieldPolicy = {\n  cursor?: FieldPolicy<any> | FieldReadFunction<any>;\n  node?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type DealKeySpecifier = (\n  | 'blockchain'\n  | 'counterOfferForId'\n  | 'counterOffered'\n  | 'createdDate'\n  | 'evmOrder'\n  | 'executedTxHash'\n  | 'expiration'\n  | 'id'\n  | 'maker'\n  | 'makerErc20s'\n  | 'makerErc20sAmounts'\n  | 'makerName'\n  | 'makerNfts'\n  | 'makerNftsAmounts'\n  | 'makerProfilePictureUrl'\n  | 'marketPlaceAddress'\n  | 'nonce'\n  | 'signature'\n  | 'status'\n  | 'taker'\n  | 'takerErc20s'\n  | 'takerErc20sAmounts'\n  | 'takerName'\n  | 'takerNfts'\n  | 'takerNftsAmounts'\n  | 'takerProfilePictureUrl'\n  | 'timestamp'\n  | 'updatedDate'\n  | DealKeySpecifier\n)[];\nexport type DealFieldPolicy = {\n  blockchain?: FieldPolicy<any> | FieldReadFunction<any>;\n  counterOfferForId?: FieldPolicy<any> | FieldReadFunction<any>;\n  counterOffered?: FieldPolicy<any> | FieldReadFunction<any>;\n  createdDate?: FieldPolicy<any> | FieldReadFunction<any>;\n  evmOrder?: FieldPolicy<any> | FieldReadFunction<any>;\n  executedTxHash?: FieldPolicy<any> | FieldReadFunction<any>;\n  expiration?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  maker?: FieldPolicy<any> | FieldReadFunction<any>;\n  makerErc20s?: FieldPolicy<any> | FieldReadFunction<any>;\n  makerErc20sAmounts?: FieldPolicy<any> | FieldReadFunction<any>;\n  makerName?: FieldPolicy<any> | FieldReadFunction<any>;\n  makerNfts?: FieldPolicy<any> | FieldReadFunction<any>;\n  makerNftsAmounts?: FieldPolicy<any> | FieldReadFunction<any>;\n  makerProfilePictureUrl?: FieldPolicy<any> | FieldReadFunction<any>;\n  marketPlaceAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  nonce?: FieldPolicy<any> | FieldReadFunction<any>;\n  signature?: FieldPolicy<any> | FieldReadFunction<any>;\n  status?: FieldPolicy<any> | FieldReadFunction<any>;\n  taker?: FieldPolicy<any> | FieldReadFunction<any>;\n  takerErc20s?: FieldPolicy<any> | FieldReadFunction<any>;\n  takerErc20sAmounts?: FieldPolicy<any> | FieldReadFunction<any>;\n  takerName?: FieldPolicy<any> | FieldReadFunction<any>;\n  takerNfts?: FieldPolicy<any> | FieldReadFunction<any>;\n  takerNftsAmounts?: FieldPolicy<any> | FieldReadFunction<any>;\n  takerProfilePictureUrl?: FieldPolicy<any> | FieldReadFunction<any>;\n  timestamp?: FieldPolicy<any> | FieldReadFunction<any>;\n  updatedDate?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type DealConnectionKeySpecifier = (\n  | 'edges'\n  | 'pageInfo'\n  | 'totalCount'\n  | DealConnectionKeySpecifier\n)[];\nexport type DealConnectionFieldPolicy = {\n  edges?: FieldPolicy<any> | FieldReadFunction<any>;\n  pageInfo?: FieldPolicy<any> | FieldReadFunction<any>;\n  totalCount?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type DealEdgeKeySpecifier = ('cursor' | 'node' | DealEdgeKeySpecifier)[];\nexport type DealEdgeFieldPolicy = {\n  cursor?: FieldPolicy<any> | FieldReadFunction<any>;\n  node?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type DealExpirationReminderNotificationKeySpecifier = (\n  | 'createdOn'\n  | 'deal'\n  | 'dealId'\n  | 'expiresInSeconds'\n  | 'id'\n  | 'notificationType'\n  | 'readOn'\n  | 'user'\n  | DealExpirationReminderNotificationKeySpecifier\n)[];\nexport type DealExpirationReminderNotificationFieldPolicy = {\n  createdOn?: FieldPolicy<any> | FieldReadFunction<any>;\n  deal?: FieldPolicy<any> | FieldReadFunction<any>;\n  dealId?: FieldPolicy<any> | FieldReadFunction<any>;\n  expiresInSeconds?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  notificationType?: FieldPolicy<any> | FieldReadFunction<any>;\n  readOn?: FieldPolicy<any> | FieldReadFunction<any>;\n  user?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type DealNotificationKeySpecifier = (\n  | 'createdOn'\n  | 'deal'\n  | 'dealId'\n  | 'eventType'\n  | 'id'\n  | 'notificationType'\n  | 'readOn'\n  | 'user'\n  | DealNotificationKeySpecifier\n)[];\nexport type DealNotificationFieldPolicy = {\n  createdOn?: FieldPolicy<any> | FieldReadFunction<any>;\n  deal?: FieldPolicy<any> | FieldReadFunction<any>;\n  dealId?: FieldPolicy<any> | FieldReadFunction<any>;\n  eventType?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  notificationType?: FieldPolicy<any> | FieldReadFunction<any>;\n  readOn?: FieldPolicy<any> | FieldReadFunction<any>;\n  user?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type DealReadinessBlockerKeySpecifier = (\n  | 'code'\n  | 'currencyAddress'\n  | 'currentAmount'\n  | 'message'\n  | 'nftId'\n  | 'requiredAmount'\n  | 'walletAddress'\n  | DealReadinessBlockerKeySpecifier\n)[];\nexport type DealReadinessBlockerFieldPolicy = {\n  code?: FieldPolicy<any> | FieldReadFunction<any>;\n  currencyAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  currentAmount?: FieldPolicy<any> | FieldReadFunction<any>;\n  message?: FieldPolicy<any> | FieldReadFunction<any>;\n  nftId?: FieldPolicy<any> | FieldReadFunction<any>;\n  requiredAmount?: FieldPolicy<any> | FieldReadFunction<any>;\n  walletAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type DealReadinessResultKeySpecifier = (\n  | 'blockNumber'\n  | 'blockers'\n  | 'canExecute'\n  | 'canStartAcceptance'\n  | DealReadinessResultKeySpecifier\n)[];\nexport type DealReadinessResultFieldPolicy = {\n  blockNumber?: FieldPolicy<any> | FieldReadFunction<any>;\n  blockers?: FieldPolicy<any> | FieldReadFunction<any>;\n  canExecute?: FieldPolicy<any> | FieldReadFunction<any>;\n  canStartAcceptance?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type DelegationKeySpecifier = (\n  | 'contractAddress'\n  | 'delegateTo'\n  | 'id'\n  | 'nft'\n  | 'rights'\n  | 'timestamp'\n  | DelegationKeySpecifier\n)[];\nexport type DelegationFieldPolicy = {\n  contractAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  delegateTo?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  nft?: FieldPolicy<any> | FieldReadFunction<any>;\n  rights?: FieldPolicy<any> | FieldReadFunction<any>;\n  timestamp?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type DelegationConnectionKeySpecifier = (\n  | 'edges'\n  | 'pageInfo'\n  | 'totalCount'\n  | DelegationConnectionKeySpecifier\n)[];\nexport type DelegationConnectionFieldPolicy = {\n  edges?: FieldPolicy<any> | FieldReadFunction<any>;\n  pageInfo?: FieldPolicy<any> | FieldReadFunction<any>;\n  totalCount?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type DelegationEdgeKeySpecifier = ('cursor' | 'node' | DelegationEdgeKeySpecifier)[];\nexport type DelegationEdgeFieldPolicy = {\n  cursor?: FieldPolicy<any> | FieldReadFunction<any>;\n  node?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type EditionKeySpecifier = (\n  | 'collection'\n  | 'collectionId'\n  | 'id'\n  | 'image'\n  | 'isFollowed'\n  | 'isWholeCollection'\n  | 'name'\n  | 'offersEnabled'\n  | 'sampleNft'\n  | 'slug'\n  | 'statistics'\n  | 'trait'\n  | 'traitId'\n  | EditionKeySpecifier\n)[];\nexport type EditionFieldPolicy = {\n  collection?: FieldPolicy<any> | FieldReadFunction<any>;\n  collectionId?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  image?: FieldPolicy<any> | FieldReadFunction<any>;\n  isFollowed?: FieldPolicy<any> | FieldReadFunction<any>;\n  isWholeCollection?: FieldPolicy<any> | FieldReadFunction<any>;\n  name?: FieldPolicy<any> | FieldReadFunction<any>;\n  offersEnabled?: FieldPolicy<any> | FieldReadFunction<any>;\n  sampleNft?: FieldPolicy<any> | FieldReadFunction<any>;\n  slug?: FieldPolicy<any> | FieldReadFunction<any>;\n  statistics?: FieldPolicy<any> | FieldReadFunction<any>;\n  trait?: FieldPolicy<any> | FieldReadFunction<any>;\n  traitId?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type EditionConnectionKeySpecifier = (\n  | 'edges'\n  | 'pageInfo'\n  | 'totalCount'\n  | EditionConnectionKeySpecifier\n)[];\nexport type EditionConnectionFieldPolicy = {\n  edges?: FieldPolicy<any> | FieldReadFunction<any>;\n  pageInfo?: FieldPolicy<any> | FieldReadFunction<any>;\n  totalCount?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type EditionEdgeKeySpecifier = ('cursor' | 'node' | EditionEdgeKeySpecifier)[];\nexport type EditionEdgeFieldPolicy = {\n  cursor?: FieldPolicy<any> | FieldReadFunction<any>;\n  node?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type EditionNFTConnectionKeySpecifier = (\n  | 'edges'\n  | 'pageInfo'\n  | 'totalCount'\n  | EditionNFTConnectionKeySpecifier\n)[];\nexport type EditionNFTConnectionFieldPolicy = {\n  edges?: FieldPolicy<any> | FieldReadFunction<any>;\n  pageInfo?: FieldPolicy<any> | FieldReadFunction<any>;\n  totalCount?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type EditionNFTEdgeKeySpecifier = ('cursor' | 'node' | EditionNFTEdgeKeySpecifier)[];\nexport type EditionNFTEdgeFieldPolicy = {\n  cursor?: FieldPolicy<any> | FieldReadFunction<any>;\n  node?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type EditionStatisticsKeySpecifier = (\n  | 'floorPrice'\n  | 'highestBid'\n  | 'lastSale'\n  | 'numberOfNftsOwned'\n  | 'supply'\n  | 'uniqueOwners'\n  | EditionStatisticsKeySpecifier\n)[];\nexport type EditionStatisticsFieldPolicy = {\n  floorPrice?: FieldPolicy<any> | FieldReadFunction<any>;\n  highestBid?: FieldPolicy<any> | FieldReadFunction<any>;\n  lastSale?: FieldPolicy<any> | FieldReadFunction<any>;\n  numberOfNftsOwned?: FieldPolicy<any> | FieldReadFunction<any>;\n  supply?: FieldPolicy<any> | FieldReadFunction<any>;\n  uniqueOwners?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type EventKeySpecifier = ('id' | 'timestamp' | EventKeySpecifier)[];\nexport type EventFieldPolicy = {\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  timestamp?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type EventConnectionKeySpecifier = (\n  | 'edges'\n  | 'pageInfo'\n  | 'totalCount'\n  | EventConnectionKeySpecifier\n)[];\nexport type EventConnectionFieldPolicy = {\n  edges?: FieldPolicy<any> | FieldReadFunction<any>;\n  pageInfo?: FieldPolicy<any> | FieldReadFunction<any>;\n  totalCount?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type EventEdgeKeySpecifier = ('cursor' | 'node' | EventEdgeKeySpecifier)[];\nexport type EventEdgeFieldPolicy = {\n  cursor?: FieldPolicy<any> | FieldReadFunction<any>;\n  node?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type ExposedNftKeySpecifier = ('nft' | 'priceUsd' | ExposedNftKeySpecifier)[];\nexport type ExposedNftFieldPolicy = {\n  nft?: FieldPolicy<any> | FieldReadFunction<any>;\n  priceUsd?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type ExtraSeaportDataKeySpecifier = (\n  | 'criteriaProof'\n  | 'extraData'\n  | ExtraSeaportDataKeySpecifier\n)[];\nexport type ExtraSeaportDataFieldPolicy = {\n  criteriaProof?: FieldPolicy<any> | FieldReadFunction<any>;\n  extraData?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type FloatStatHistoryKeySpecifier = ('timestamp' | 'value' | FloatStatHistoryKeySpecifier)[];\nexport type FloatStatHistoryFieldPolicy = {\n  timestamp?: FieldPolicy<any> | FieldReadFunction<any>;\n  value?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type FulfillManyBidOrdersCalldataKeySpecifier = (\n  | 'calldata'\n  | 'marketPlaceAddress'\n  | 'nftIds'\n  | FulfillManyBidOrdersCalldataKeySpecifier\n)[];\nexport type FulfillManyBidOrdersCalldataFieldPolicy = {\n  calldata?: FieldPolicy<any> | FieldReadFunction<any>;\n  marketPlaceAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  nftIds?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type FulfillManyOrdersCalldataKeySpecifier = (\n  | 'calldata'\n  | 'marketPlaceAddress'\n  | FulfillManyOrdersCalldataKeySpecifier\n)[];\nexport type FulfillManyOrdersCalldataFieldPolicy = {\n  calldata?: FieldPolicy<any> | FieldReadFunction<any>;\n  marketPlaceAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type GalleryKeySpecifier = (\n  | 'colorMode'\n  | 'coverNft'\n  | 'createdAt'\n  | 'description'\n  | 'id'\n  | 'isPublished'\n  | 'name'\n  | 'openingView'\n  | 'owner'\n  | 'palette'\n  | 'publishedAt'\n  | 'slug'\n  | 'style'\n  | 'updatedAt'\n  | 'visitorModeSwitch'\n  | 'workCount'\n  | 'works'\n  | GalleryKeySpecifier\n)[];\nexport type GalleryFieldPolicy = {\n  colorMode?: FieldPolicy<any> | FieldReadFunction<any>;\n  coverNft?: FieldPolicy<any> | FieldReadFunction<any>;\n  createdAt?: FieldPolicy<any> | FieldReadFunction<any>;\n  description?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  isPublished?: FieldPolicy<any> | FieldReadFunction<any>;\n  name?: FieldPolicy<any> | FieldReadFunction<any>;\n  openingView?: FieldPolicy<any> | FieldReadFunction<any>;\n  owner?: FieldPolicy<any> | FieldReadFunction<any>;\n  palette?: FieldPolicy<any> | FieldReadFunction<any>;\n  publishedAt?: FieldPolicy<any> | FieldReadFunction<any>;\n  slug?: FieldPolicy<any> | FieldReadFunction<any>;\n  style?: FieldPolicy<any> | FieldReadFunction<any>;\n  updatedAt?: FieldPolicy<any> | FieldReadFunction<any>;\n  visitorModeSwitch?: FieldPolicy<any> | FieldReadFunction<any>;\n  workCount?: FieldPolicy<any> | FieldReadFunction<any>;\n  works?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type GalleryWorkKeySpecifier = (\n  | 'chapter'\n  | 'heldByOwner'\n  | 'nft'\n  | 'note'\n  | 'position'\n  | GalleryWorkKeySpecifier\n)[];\nexport type GalleryWorkFieldPolicy = {\n  chapter?: FieldPolicy<any> | FieldReadFunction<any>;\n  heldByOwner?: FieldPolicy<any> | FieldReadFunction<any>;\n  nft?: FieldPolicy<any> | FieldReadFunction<any>;\n  note?: FieldPolicy<any> | FieldReadFunction<any>;\n  position?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type GlobalSearchResultKeySpecifier = ('id' | GlobalSearchResultKeySpecifier)[];\nexport type GlobalSearchResultFieldPolicy = {\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type GlobalSearchResultAccountKeySpecifier = (\n  | 'id'\n  | 'user'\n  | GlobalSearchResultAccountKeySpecifier\n)[];\nexport type GlobalSearchResultAccountFieldPolicy = {\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  user?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type GlobalSearchResultArtistKeySpecifier = (\n  | 'artist'\n  | 'id'\n  | GlobalSearchResultArtistKeySpecifier\n)[];\nexport type GlobalSearchResultArtistFieldPolicy = {\n  artist?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type GlobalSearchResultCollectionKeySpecifier = (\n  | 'collection'\n  | 'id'\n  | GlobalSearchResultCollectionKeySpecifier\n)[];\nexport type GlobalSearchResultCollectionFieldPolicy = {\n  collection?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type GlobalSearchResultNFTKeySpecifier = (\n  | 'id'\n  | 'nft'\n  | GlobalSearchResultNFTKeySpecifier\n)[];\nexport type GlobalSearchResultNFTFieldPolicy = {\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  nft?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type GlobalSearchV2ResultAccountKeySpecifier = (\n  | 'activeBorrowedLoansCount'\n  | 'activeLentSourcesCount'\n  | 'ensName'\n  | 'heldNftsCount'\n  | 'id'\n  | 'openseaName'\n  | 'username'\n  | 'walletAddress'\n  | GlobalSearchV2ResultAccountKeySpecifier\n)[];\nexport type GlobalSearchV2ResultAccountFieldPolicy = {\n  activeBorrowedLoansCount?: FieldPolicy<any> | FieldReadFunction<any>;\n  activeLentSourcesCount?: FieldPolicy<any> | FieldReadFunction<any>;\n  ensName?: FieldPolicy<any> | FieldReadFunction<any>;\n  heldNftsCount?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  openseaName?: FieldPolicy<any> | FieldReadFunction<any>;\n  username?: FieldPolicy<any> | FieldReadFunction<any>;\n  walletAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type GlobalSearchV2ResultArtistKeySpecifier = (\n  | 'artistType'\n  | 'artworksCount'\n  | 'id'\n  | 'imageCacheUrl'\n  | 'imageContentType'\n  | 'imageData'\n  | 'name'\n  | 'slug'\n  | 'volume1d'\n  | GlobalSearchV2ResultArtistKeySpecifier\n)[];\nexport type GlobalSearchV2ResultArtistFieldPolicy = {\n  artistType?: FieldPolicy<any> | FieldReadFunction<any>;\n  artworksCount?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  imageCacheUrl?: FieldPolicy<any> | FieldReadFunction<any>;\n  imageContentType?: FieldPolicy<any> | FieldReadFunction<any>;\n  imageData?: FieldPolicy<any> | FieldReadFunction<any>;\n  name?: FieldPolicy<any> | FieldReadFunction<any>;\n  slug?: FieldPolicy<any> | FieldReadFunction<any>;\n  volume1d?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type GlobalSearchV2ResultCollectionKeySpecifier = (\n  | 'blockchain'\n  | 'contractAddress'\n  | 'floorPriceAmount'\n  | 'floorPriceCurrencyAddress'\n  | 'floorPriceCurrencyDecimals'\n  | 'floorPriceCurrencySymbol'\n  | 'id'\n  | 'imageCacheUrl'\n  | 'imageContentType'\n  | 'imageData'\n  | 'name'\n  | 'slug'\n  | GlobalSearchV2ResultCollectionKeySpecifier\n)[];\nexport type GlobalSearchV2ResultCollectionFieldPolicy = {\n  blockchain?: FieldPolicy<any> | FieldReadFunction<any>;\n  contractAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  floorPriceAmount?: FieldPolicy<any> | FieldReadFunction<any>;\n  floorPriceCurrencyAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  floorPriceCurrencyDecimals?: FieldPolicy<any> | FieldReadFunction<any>;\n  floorPriceCurrencySymbol?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  imageCacheUrl?: FieldPolicy<any> | FieldReadFunction<any>;\n  imageContentType?: FieldPolicy<any> | FieldReadFunction<any>;\n  imageData?: FieldPolicy<any> | FieldReadFunction<any>;\n  name?: FieldPolicy<any> | FieldReadFunction<any>;\n  slug?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type GlobalSearchV2ResultEditionKeySpecifier = (\n  | 'blockchain'\n  | 'collectionImageCacheUrl'\n  | 'collectionImageData'\n  | 'collectionName'\n  | 'collectionSlug'\n  | 'id'\n  | 'imageCacheUrl'\n  | 'imageContentType'\n  | 'imageData'\n  | 'name'\n  | 'slug'\n  | GlobalSearchV2ResultEditionKeySpecifier\n)[];\nexport type GlobalSearchV2ResultEditionFieldPolicy = {\n  blockchain?: FieldPolicy<any> | FieldReadFunction<any>;\n  collectionImageCacheUrl?: FieldPolicy<any> | FieldReadFunction<any>;\n  collectionImageData?: FieldPolicy<any> | FieldReadFunction<any>;\n  collectionName?: FieldPolicy<any> | FieldReadFunction<any>;\n  collectionSlug?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  imageCacheUrl?: FieldPolicy<any> | FieldReadFunction<any>;\n  imageContentType?: FieldPolicy<any> | FieldReadFunction<any>;\n  imageData?: FieldPolicy<any> | FieldReadFunction<any>;\n  name?: FieldPolicy<any> | FieldReadFunction<any>;\n  slug?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type GlobalSearchV2ResultNFTKeySpecifier = (\n  | 'blockchain'\n  | 'collectionId'\n  | 'collectionImageCacheUrl'\n  | 'collectionImageData'\n  | 'collectionName'\n  | 'collectionSlug'\n  | 'contractAddress'\n  | 'erc20Balances'\n  | 'id'\n  | 'imageCacheUrl'\n  | 'imageContentType'\n  | 'imageData'\n  | 'isVault'\n  | 'name'\n  | 'nftId'\n  | 'owner'\n  | 'priceCurrencyAddress'\n  | 'priceCurrencyDecimals'\n  | 'priceCurrencySymbol'\n  | 'priceValue'\n  | 'tokenId'\n  | 'wrappedCounts'\n  | 'wrappedImageCacheUrls'\n  | 'wrappedImageContentTypes'\n  | 'wrappedImageData'\n  | GlobalSearchV2ResultNFTKeySpecifier\n)[];\nexport type GlobalSearchV2ResultNFTFieldPolicy = {\n  blockchain?: FieldPolicy<any> | FieldReadFunction<any>;\n  collectionId?: FieldPolicy<any> | FieldReadFunction<any>;\n  collectionImageCacheUrl?: FieldPolicy<any> | FieldReadFunction<any>;\n  collectionImageData?: FieldPolicy<any> | FieldReadFunction<any>;\n  collectionName?: FieldPolicy<any> | FieldReadFunction<any>;\n  collectionSlug?: FieldPolicy<any> | FieldReadFunction<any>;\n  contractAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  erc20Balances?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  imageCacheUrl?: FieldPolicy<any> | FieldReadFunction<any>;\n  imageContentType?: FieldPolicy<any> | FieldReadFunction<any>;\n  imageData?: FieldPolicy<any> | FieldReadFunction<any>;\n  isVault?: FieldPolicy<any> | FieldReadFunction<any>;\n  name?: FieldPolicy<any> | FieldReadFunction<any>;\n  nftId?: FieldPolicy<any> | FieldReadFunction<any>;\n  owner?: FieldPolicy<any> | FieldReadFunction<any>;\n  priceCurrencyAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  priceCurrencyDecimals?: FieldPolicy<any> | FieldReadFunction<any>;\n  priceCurrencySymbol?: FieldPolicy<any> | FieldReadFunction<any>;\n  priceValue?: FieldPolicy<any> | FieldReadFunction<any>;\n  tokenId?: FieldPolicy<any> | FieldReadFunction<any>;\n  wrappedCounts?: FieldPolicy<any> | FieldReadFunction<any>;\n  wrappedImageCacheUrls?: FieldPolicy<any> | FieldReadFunction<any>;\n  wrappedImageContentTypes?: FieldPolicy<any> | FieldReadFunction<any>;\n  wrappedImageData?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type GlobalSearchV2ResultsKeySpecifier = (\n  | 'accounts'\n  | 'artists'\n  | 'collections'\n  | 'editions'\n  | 'nfts'\n  | GlobalSearchV2ResultsKeySpecifier\n)[];\nexport type GlobalSearchV2ResultsFieldPolicy = {\n  accounts?: FieldPolicy<any> | FieldReadFunction<any>;\n  artists?: FieldPolicy<any> | FieldReadFunction<any>;\n  collections?: FieldPolicy<any> | FieldReadFunction<any>;\n  editions?: FieldPolicy<any> | FieldReadFunction<any>;\n  nfts?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type HolderKeySpecifier = (\n  | 'acquired'\n  | 'activity'\n  | 'address'\n  | 'addressType'\n  | 'id'\n  | 'name'\n  | 'nftOwnerBehaviorTypes'\n  | 'ownedAmount'\n  | 'previewItems'\n  | 'profilePictureUrl'\n  | 'sold'\n  | HolderKeySpecifier\n)[];\nexport type HolderFieldPolicy = {\n  acquired?: FieldPolicy<any> | FieldReadFunction<any>;\n  activity?: FieldPolicy<any> | FieldReadFunction<any>;\n  address?: FieldPolicy<any> | FieldReadFunction<any>;\n  addressType?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  name?: FieldPolicy<any> | FieldReadFunction<any>;\n  nftOwnerBehaviorTypes?: FieldPolicy<any> | FieldReadFunction<any>;\n  ownedAmount?: FieldPolicy<any> | FieldReadFunction<any>;\n  previewItems?: FieldPolicy<any> | FieldReadFunction<any>;\n  profilePictureUrl?: FieldPolicy<any> | FieldReadFunction<any>;\n  sold?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type HolderConnectionKeySpecifier = (\n  | 'edges'\n  | 'pageInfo'\n  | 'totalCount'\n  | HolderConnectionKeySpecifier\n)[];\nexport type HolderConnectionFieldPolicy = {\n  edges?: FieldPolicy<any> | FieldReadFunction<any>;\n  pageInfo?: FieldPolicy<any> | FieldReadFunction<any>;\n  totalCount?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type HolderEdgeKeySpecifier = ('cursor' | 'node' | HolderEdgeKeySpecifier)[];\nexport type HolderEdgeFieldPolicy = {\n  cursor?: FieldPolicy<any> | FieldReadFunction<any>;\n  node?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type ItemLoanOfferBookKeySpecifier = (\n  | 'complete'\n  | 'currency'\n  | 'durationCounts'\n  | 'evaluatedAt'\n  | 'options'\n  | 'reason'\n  | 'sourceCount'\n  | ItemLoanOfferBookKeySpecifier\n)[];\nexport type ItemLoanOfferBookFieldPolicy = {\n  complete?: FieldPolicy<any> | FieldReadFunction<any>;\n  currency?: FieldPolicy<any> | FieldReadFunction<any>;\n  durationCounts?: FieldPolicy<any> | FieldReadFunction<any>;\n  evaluatedAt?: FieldPolicy<any> | FieldReadFunction<any>;\n  options?: FieldPolicy<any> | FieldReadFunction<any>;\n  reason?: FieldPolicy<any> | FieldReadFunction<any>;\n  sourceCount?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type ItemLoanOptionKeySpecifier = (\n  | 'additionalCount'\n  | 'allocations'\n  | 'duration'\n  | 'eaprDenominator'\n  | 'eaprNumerator'\n  | 'grossPrincipal'\n  | 'group'\n  | 'id'\n  | 'netPrincipal'\n  | 'roles'\n  | 'upfrontFee'\n  | ItemLoanOptionKeySpecifier\n)[];\nexport type ItemLoanOptionFieldPolicy = {\n  additionalCount?: FieldPolicy<any> | FieldReadFunction<any>;\n  allocations?: FieldPolicy<any> | FieldReadFunction<any>;\n  duration?: FieldPolicy<any> | FieldReadFunction<any>;\n  eaprDenominator?: FieldPolicy<any> | FieldReadFunction<any>;\n  eaprNumerator?: FieldPolicy<any> | FieldReadFunction<any>;\n  grossPrincipal?: FieldPolicy<any> | FieldReadFunction<any>;\n  group?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  netPrincipal?: FieldPolicy<any> | FieldReadFunction<any>;\n  roles?: FieldPolicy<any> | FieldReadFunction<any>;\n  upfrontFee?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type ItemLoanOptionConnectionKeySpecifier = (\n  | 'edges'\n  | 'pageInfo'\n  | 'totalCount'\n  | ItemLoanOptionConnectionKeySpecifier\n)[];\nexport type ItemLoanOptionConnectionFieldPolicy = {\n  edges?: FieldPolicy<any> | FieldReadFunction<any>;\n  pageInfo?: FieldPolicy<any> | FieldReadFunction<any>;\n  totalCount?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type ItemLoanOptionEdgeKeySpecifier = ('cursor' | 'node' | ItemLoanOptionEdgeKeySpecifier)[];\nexport type ItemLoanOptionEdgeFieldPolicy = {\n  cursor?: FieldPolicy<any> | FieldReadFunction<any>;\n  node?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type LendingMarketCurrencyAmountKeySpecifier = (\n  | 'amount'\n  | 'currencyAddress'\n  | 'decimals'\n  | 'symbol'\n  | 'usdAmount'\n  | LendingMarketCurrencyAmountKeySpecifier\n)[];\nexport type LendingMarketCurrencyAmountFieldPolicy = {\n  amount?: FieldPolicy<any> | FieldReadFunction<any>;\n  currencyAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  decimals?: FieldPolicy<any> | FieldReadFunction<any>;\n  symbol?: FieldPolicy<any> | FieldReadFunction<any>;\n  usdAmount?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type LendingMarketPeriodStatisticsKeySpecifier = (\n  | 'accruedDeltaPct'\n  | 'accruedRateUsdPerSecond'\n  | 'accruedUsd'\n  | 'eaprP25Bps'\n  | 'eaprP75Bps'\n  | 'medianEaprBps'\n  | 'medianEaprDeltaBps'\n  | 'originatedCount'\n  | 'originatedDeltaPct'\n  | 'originatedUsd'\n  | 'period'\n  | 'salesCount'\n  | 'salesVolumeDeltaPct'\n  | 'salesVolumeUsd'\n  | LendingMarketPeriodStatisticsKeySpecifier\n)[];\nexport type LendingMarketPeriodStatisticsFieldPolicy = {\n  accruedDeltaPct?: FieldPolicy<any> | FieldReadFunction<any>;\n  accruedRateUsdPerSecond?: FieldPolicy<any> | FieldReadFunction<any>;\n  accruedUsd?: FieldPolicy<any> | FieldReadFunction<any>;\n  eaprP25Bps?: FieldPolicy<any> | FieldReadFunction<any>;\n  eaprP75Bps?: FieldPolicy<any> | FieldReadFunction<any>;\n  medianEaprBps?: FieldPolicy<any> | FieldReadFunction<any>;\n  medianEaprDeltaBps?: FieldPolicy<any> | FieldReadFunction<any>;\n  originatedCount?: FieldPolicy<any> | FieldReadFunction<any>;\n  originatedDeltaPct?: FieldPolicy<any> | FieldReadFunction<any>;\n  originatedUsd?: FieldPolicy<any> | FieldReadFunction<any>;\n  period?: FieldPolicy<any> | FieldReadFunction<any>;\n  salesCount?: FieldPolicy<any> | FieldReadFunction<any>;\n  salesVolumeDeltaPct?: FieldPolicy<any> | FieldReadFunction<any>;\n  salesVolumeUsd?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type LendingMarketPulseKeySpecifier = (\n  | 'accrualPerDayUsd'\n  | 'accruedTodayUsd'\n  | 'asOf'\n  | 'newLoans24h'\n  | 'outstandingPrincipalUsd'\n  | 'paidInterest30dUsd'\n  | 'periods'\n  | 'principalByCurrency'\n  | LendingMarketPulseKeySpecifier\n)[];\nexport type LendingMarketPulseFieldPolicy = {\n  accrualPerDayUsd?: FieldPolicy<any> | FieldReadFunction<any>;\n  accruedTodayUsd?: FieldPolicy<any> | FieldReadFunction<any>;\n  asOf?: FieldPolicy<any> | FieldReadFunction<any>;\n  newLoans24h?: FieldPolicy<any> | FieldReadFunction<any>;\n  outstandingPrincipalUsd?: FieldPolicy<any> | FieldReadFunction<any>;\n  paidInterest30dUsd?: FieldPolicy<any> | FieldReadFunction<any>;\n  periods?: FieldPolicy<any> | FieldReadFunction<any>;\n  principalByCurrency?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type LendingMarketStatisticsKeySpecifier = (\n  | 'accruedInterest'\n  | 'activeLoanCount'\n  | 'asOf'\n  | 'avgDurationSeconds'\n  | 'interestAccrualPerYear'\n  | 'outstandingPrincipal'\n  | 'wavgAprBps'\n  | LendingMarketStatisticsKeySpecifier\n)[];\nexport type LendingMarketStatisticsFieldPolicy = {\n  accruedInterest?: FieldPolicy<any> | FieldReadFunction<any>;\n  activeLoanCount?: FieldPolicy<any> | FieldReadFunction<any>;\n  asOf?: FieldPolicy<any> | FieldReadFunction<any>;\n  avgDurationSeconds?: FieldPolicy<any> | FieldReadFunction<any>;\n  interestAccrualPerYear?: FieldPolicy<any> | FieldReadFunction<any>;\n  outstandingPrincipal?: FieldPolicy<any> | FieldReadFunction<any>;\n  wavgAprBps?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type LinkWalletAcceptedNotificationKeySpecifier = (\n  | 'counterpartyWalletAddress'\n  | 'createdOn'\n  | 'id'\n  | 'notificationType'\n  | 'readOn'\n  | 'user'\n  | LinkWalletAcceptedNotificationKeySpecifier\n)[];\nexport type LinkWalletAcceptedNotificationFieldPolicy = {\n  counterpartyWalletAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  createdOn?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  notificationType?: FieldPolicy<any> | FieldReadFunction<any>;\n  readOn?: FieldPolicy<any> | FieldReadFunction<any>;\n  user?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type LinkWalletRequestedNotificationKeySpecifier = (\n  | 'counterpartyWalletAddress'\n  | 'createdOn'\n  | 'id'\n  | 'notificationType'\n  | 'readOn'\n  | 'user'\n  | LinkWalletRequestedNotificationKeySpecifier\n)[];\nexport type LinkWalletRequestedNotificationFieldPolicy = {\n  counterpartyWalletAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  createdOn?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  notificationType?: FieldPolicy<any> | FieldReadFunction<any>;\n  readOn?: FieldPolicy<any> | FieldReadFunction<any>;\n  user?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type LinkedWalletsKeySpecifier = (\n  | 'id'\n  | 'pending'\n  | 'shouldAccept'\n  | 'walletAddress'\n  | LinkedWalletsKeySpecifier\n)[];\nexport type LinkedWalletsFieldPolicy = {\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  pending?: FieldPolicy<any> | FieldReadFunction<any>;\n  shouldAccept?: FieldPolicy<any> | FieldReadFunction<any>;\n  walletAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type ListingKeySpecifier = (\n  | 'createdDate'\n  | 'desiredDuration'\n  | 'desiredPrincipalAddress'\n  | 'expirationDate'\n  | 'id'\n  | 'marketplaceName'\n  | 'nft'\n  | 'user'\n  | ListingKeySpecifier\n)[];\nexport type ListingFieldPolicy = {\n  createdDate?: FieldPolicy<any> | FieldReadFunction<any>;\n  desiredDuration?: FieldPolicy<any> | FieldReadFunction<any>;\n  desiredPrincipalAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  expirationDate?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  marketplaceName?: FieldPolicy<any> | FieldReadFunction<any>;\n  nft?: FieldPolicy<any> | FieldReadFunction<any>;\n  user?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type ListingConnectionKeySpecifier = (\n  | 'edges'\n  | 'pageInfo'\n  | 'totalCount'\n  | ListingConnectionKeySpecifier\n)[];\nexport type ListingConnectionFieldPolicy = {\n  edges?: FieldPolicy<any> | FieldReadFunction<any>;\n  pageInfo?: FieldPolicy<any> | FieldReadFunction<any>;\n  totalCount?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type ListingEdgeKeySpecifier = ('cursor' | 'node' | ListingEdgeKeySpecifier)[];\nexport type ListingEdgeFieldPolicy = {\n  cursor?: FieldPolicy<any> | FieldReadFunction<any>;\n  node?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type LoanKeySpecifier = (\n  | 'activities'\n  | 'address'\n  | 'borrowerAddress'\n  | 'borrowerName'\n  | 'borrowerProfilePictureUrl'\n  | 'contractStartTime'\n  | 'currency'\n  | 'duration'\n  | 'id'\n  | 'indexInBlock'\n  | 'loanId'\n  | 'offer'\n  | 'offerIds'\n  | 'previousLoan'\n  | 'principalAddress'\n  | 'protocolFee'\n  | 'repaidActivity'\n  | 'repaymentTime'\n  | 'replacementLoan'\n  | 'startTime'\n  | 'status'\n  | 'timestamp'\n  | 'txHash'\n  | LoanKeySpecifier\n)[];\nexport type LoanFieldPolicy = {\n  activities?: FieldPolicy<any> | FieldReadFunction<any>;\n  address?: FieldPolicy<any> | FieldReadFunction<any>;\n  borrowerAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  borrowerName?: FieldPolicy<any> | FieldReadFunction<any>;\n  borrowerProfilePictureUrl?: FieldPolicy<any> | FieldReadFunction<any>;\n  contractStartTime?: FieldPolicy<any> | FieldReadFunction<any>;\n  currency?: FieldPolicy<any> | FieldReadFunction<any>;\n  duration?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  indexInBlock?: FieldPolicy<any> | FieldReadFunction<any>;\n  loanId?: FieldPolicy<any> | FieldReadFunction<any>;\n  offer?: FieldPolicy<any> | FieldReadFunction<any>;\n  offerIds?: FieldPolicy<any> | FieldReadFunction<any>;\n  previousLoan?: FieldPolicy<any> | FieldReadFunction<any>;\n  principalAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  protocolFee?: FieldPolicy<any> | FieldReadFunction<any>;\n  repaidActivity?: FieldPolicy<any> | FieldReadFunction<any>;\n  repaymentTime?: FieldPolicy<any> | FieldReadFunction<any>;\n  replacementLoan?: FieldPolicy<any> | FieldReadFunction<any>;\n  startTime?: FieldPolicy<any> | FieldReadFunction<any>;\n  status?: FieldPolicy<any> | FieldReadFunction<any>;\n  timestamp?: FieldPolicy<any> | FieldReadFunction<any>;\n  txHash?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type LoanActivitiesStatisticsByMonthKeySpecifier = (\n  | 'count'\n  | 'outstanding'\n  | LoanActivitiesStatisticsByMonthKeySpecifier\n)[];\nexport type LoanActivitiesStatisticsByMonthFieldPolicy = {\n  count?: FieldPolicy<any> | FieldReadFunction<any>;\n  outstanding?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type LoanActivityKeySpecifier = (\n  | 'activityType'\n  | 'eventType'\n  | 'id'\n  | 'indexInBlock'\n  | 'loan'\n  | 'loanId'\n  | 'multiSourceLoanHistory'\n  | 'nextActivity'\n  | 'prevActivity'\n  | 'timestamp'\n  | 'txHash'\n  | LoanActivityKeySpecifier\n)[];\nexport type LoanActivityFieldPolicy = {\n  activityType?: FieldPolicy<any> | FieldReadFunction<any>;\n  eventType?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  indexInBlock?: FieldPolicy<any> | FieldReadFunction<any>;\n  loan?: FieldPolicy<any> | FieldReadFunction<any>;\n  loanId?: FieldPolicy<any> | FieldReadFunction<any>;\n  multiSourceLoanHistory?: FieldPolicy<any> | FieldReadFunction<any>;\n  nextActivity?: FieldPolicy<any> | FieldReadFunction<any>;\n  prevActivity?: FieldPolicy<any> | FieldReadFunction<any>;\n  timestamp?: FieldPolicy<any> | FieldReadFunction<any>;\n  txHash?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type LoanActivityConnectionKeySpecifier = (\n  | 'edges'\n  | 'pageInfo'\n  | 'totalCount'\n  | LoanActivityConnectionKeySpecifier\n)[];\nexport type LoanActivityConnectionFieldPolicy = {\n  edges?: FieldPolicy<any> | FieldReadFunction<any>;\n  pageInfo?: FieldPolicy<any> | FieldReadFunction<any>;\n  totalCount?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type LoanActivityEdgeKeySpecifier = ('cursor' | 'node' | LoanActivityEdgeKeySpecifier)[];\nexport type LoanActivityEdgeFieldPolicy = {\n  cursor?: FieldPolicy<any> | FieldReadFunction<any>;\n  node?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type LoanAuctionedKeySpecifier = (\n  | 'activityType'\n  | 'eventType'\n  | 'id'\n  | 'indexInBlock'\n  | 'loan'\n  | 'loanId'\n  | 'loanPayments'\n  | 'multiSourceLoanHistory'\n  | 'nextActivity'\n  | 'prevActivity'\n  | 'timestamp'\n  | 'totalAuctioned'\n  | 'txHash'\n  | 'withBuyout'\n  | LoanAuctionedKeySpecifier\n)[];\nexport type LoanAuctionedFieldPolicy = {\n  activityType?: FieldPolicy<any> | FieldReadFunction<any>;\n  eventType?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  indexInBlock?: FieldPolicy<any> | FieldReadFunction<any>;\n  loan?: FieldPolicy<any> | FieldReadFunction<any>;\n  loanId?: FieldPolicy<any> | FieldReadFunction<any>;\n  loanPayments?: FieldPolicy<any> | FieldReadFunction<any>;\n  multiSourceLoanHistory?: FieldPolicy<any> | FieldReadFunction<any>;\n  nextActivity?: FieldPolicy<any> | FieldReadFunction<any>;\n  prevActivity?: FieldPolicy<any> | FieldReadFunction<any>;\n  timestamp?: FieldPolicy<any> | FieldReadFunction<any>;\n  totalAuctioned?: FieldPolicy<any> | FieldReadFunction<any>;\n  txHash?: FieldPolicy<any> | FieldReadFunction<any>;\n  withBuyout?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type LoanAuctionedNotificationKeySpecifier = (\n  | 'auction'\n  | 'auctionId'\n  | 'createdOn'\n  | 'id'\n  | 'loan'\n  | 'loanId'\n  | 'notificationType'\n  | 'readOn'\n  | 'user'\n  | LoanAuctionedNotificationKeySpecifier\n)[];\nexport type LoanAuctionedNotificationFieldPolicy = {\n  auction?: FieldPolicy<any> | FieldReadFunction<any>;\n  auctionId?: FieldPolicy<any> | FieldReadFunction<any>;\n  createdOn?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  loan?: FieldPolicy<any> | FieldReadFunction<any>;\n  loanId?: FieldPolicy<any> | FieldReadFunction<any>;\n  notificationType?: FieldPolicy<any> | FieldReadFunction<any>;\n  readOn?: FieldPolicy<any> | FieldReadFunction<any>;\n  user?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type LoanBookDurationCountKeySpecifier = (\n  | 'count'\n  | 'duration'\n  | LoanBookDurationCountKeySpecifier\n)[];\nexport type LoanBookDurationCountFieldPolicy = {\n  count?: FieldPolicy<any> | FieldReadFunction<any>;\n  duration?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type LoanDealKeySpecifier = (\n  | 'loanUsd'\n  | 'ltvBps'\n  | 'offer'\n  | 'order'\n  | LoanDealKeySpecifier\n)[];\nexport type LoanDealFieldPolicy = {\n  loanUsd?: FieldPolicy<any> | FieldReadFunction<any>;\n  ltvBps?: FieldPolicy<any> | FieldReadFunction<any>;\n  offer?: FieldPolicy<any> | FieldReadFunction<any>;\n  order?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type LoanDefaultReminderNotificationKeySpecifier = (\n  | 'createdOn'\n  | 'defaultsInHours'\n  | 'id'\n  | 'loan'\n  | 'loanId'\n  | 'notificationType'\n  | 'readOn'\n  | 'user'\n  | LoanDefaultReminderNotificationKeySpecifier\n)[];\nexport type LoanDefaultReminderNotificationFieldPolicy = {\n  createdOn?: FieldPolicy<any> | FieldReadFunction<any>;\n  defaultsInHours?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  loan?: FieldPolicy<any> | FieldReadFunction<any>;\n  loanId?: FieldPolicy<any> | FieldReadFunction<any>;\n  notificationType?: FieldPolicy<any> | FieldReadFunction<any>;\n  readOn?: FieldPolicy<any> | FieldReadFunction<any>;\n  user?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type LoanDefaultedKeySpecifier = (\n  | 'eventType'\n  | 'id'\n  | 'loan'\n  | 'loanId'\n  | 'timestamp'\n  | LoanDefaultedKeySpecifier\n)[];\nexport type LoanDefaultedFieldPolicy = {\n  eventType?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  loan?: FieldPolicy<any> | FieldReadFunction<any>;\n  loanId?: FieldPolicy<any> | FieldReadFunction<any>;\n  timestamp?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type LoanDefaultedNotificationKeySpecifier = (\n  | 'createdOn'\n  | 'id'\n  | 'loan'\n  | 'loanId'\n  | 'notificationType'\n  | 'readOn'\n  | 'user'\n  | LoanDefaultedNotificationKeySpecifier\n)[];\nexport type LoanDefaultedNotificationFieldPolicy = {\n  createdOn?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  loan?: FieldPolicy<any> | FieldReadFunction<any>;\n  loanId?: FieldPolicy<any> | FieldReadFunction<any>;\n  notificationType?: FieldPolicy<any> | FieldReadFunction<any>;\n  readOn?: FieldPolicy<any> | FieldReadFunction<any>;\n  user?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type LoanEventKeySpecifier = (\n  | 'eventType'\n  | 'id'\n  | 'loan'\n  | 'loanId'\n  | 'timestamp'\n  | LoanEventKeySpecifier\n)[];\nexport type LoanEventFieldPolicy = {\n  eventType?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  loan?: FieldPolicy<any> | FieldReadFunction<any>;\n  loanId?: FieldPolicy<any> | FieldReadFunction<any>;\n  timestamp?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type LoanEventConnectionKeySpecifier = (\n  | 'edges'\n  | 'pageInfo'\n  | 'totalCount'\n  | LoanEventConnectionKeySpecifier\n)[];\nexport type LoanEventConnectionFieldPolicy = {\n  edges?: FieldPolicy<any> | FieldReadFunction<any>;\n  pageInfo?: FieldPolicy<any> | FieldReadFunction<any>;\n  totalCount?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type LoanEventEdgeKeySpecifier = ('cursor' | 'node' | LoanEventEdgeKeySpecifier)[];\nexport type LoanEventEdgeFieldPolicy = {\n  cursor?: FieldPolicy<any> | FieldReadFunction<any>;\n  node?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type LoanExtendedKeySpecifier = (\n  | 'activityType'\n  | 'eventType'\n  | 'id'\n  | 'indexInBlock'\n  | 'loan'\n  | 'loanId'\n  | 'multiSourceLoanHistory'\n  | 'nextActivity'\n  | 'prevActivity'\n  | 'timestamp'\n  | 'txHash'\n  | LoanExtendedKeySpecifier\n)[];\nexport type LoanExtendedFieldPolicy = {\n  activityType?: FieldPolicy<any> | FieldReadFunction<any>;\n  eventType?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  indexInBlock?: FieldPolicy<any> | FieldReadFunction<any>;\n  loan?: FieldPolicy<any> | FieldReadFunction<any>;\n  loanId?: FieldPolicy<any> | FieldReadFunction<any>;\n  multiSourceLoanHistory?: FieldPolicy<any> | FieldReadFunction<any>;\n  nextActivity?: FieldPolicy<any> | FieldReadFunction<any>;\n  prevActivity?: FieldPolicy<any> | FieldReadFunction<any>;\n  timestamp?: FieldPolicy<any> | FieldReadFunction<any>;\n  txHash?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type LoanExtendedNotificationKeySpecifier = (\n  | 'createdOn'\n  | 'id'\n  | 'newHistory'\n  | 'newHistoryId'\n  | 'notificationType'\n  | 'previousHistory'\n  | 'previousHistoryId'\n  | 'readOn'\n  | 'user'\n  | LoanExtendedNotificationKeySpecifier\n)[];\nexport type LoanExtendedNotificationFieldPolicy = {\n  createdOn?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  newHistory?: FieldPolicy<any> | FieldReadFunction<any>;\n  newHistoryId?: FieldPolicy<any> | FieldReadFunction<any>;\n  notificationType?: FieldPolicy<any> | FieldReadFunction<any>;\n  previousHistory?: FieldPolicy<any> | FieldReadFunction<any>;\n  previousHistoryId?: FieldPolicy<any> | FieldReadFunction<any>;\n  readOn?: FieldPolicy<any> | FieldReadFunction<any>;\n  user?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type LoanForeclosedKeySpecifier = (\n  | 'activityType'\n  | 'eventType'\n  | 'id'\n  | 'indexInBlock'\n  | 'loan'\n  | 'loanId'\n  | 'multiSourceLoanHistory'\n  | 'nextActivity'\n  | 'prevActivity'\n  | 'timestamp'\n  | 'txHash'\n  | LoanForeclosedKeySpecifier\n)[];\nexport type LoanForeclosedFieldPolicy = {\n  activityType?: FieldPolicy<any> | FieldReadFunction<any>;\n  eventType?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  indexInBlock?: FieldPolicy<any> | FieldReadFunction<any>;\n  loan?: FieldPolicy<any> | FieldReadFunction<any>;\n  loanId?: FieldPolicy<any> | FieldReadFunction<any>;\n  multiSourceLoanHistory?: FieldPolicy<any> | FieldReadFunction<any>;\n  nextActivity?: FieldPolicy<any> | FieldReadFunction<any>;\n  prevActivity?: FieldPolicy<any> | FieldReadFunction<any>;\n  timestamp?: FieldPolicy<any> | FieldReadFunction<any>;\n  txHash?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type LoanHistoryItemKeySpecifier = (\n  | 'currency'\n  | 'loanId'\n  | 'timestamp'\n  | 'value'\n  | LoanHistoryItemKeySpecifier\n)[];\nexport type LoanHistoryItemFieldPolicy = {\n  currency?: FieldPolicy<any> | FieldReadFunction<any>;\n  loanId?: FieldPolicy<any> | FieldReadFunction<any>;\n  timestamp?: FieldPolicy<any> | FieldReadFunction<any>;\n  value?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type LoanInitiatedKeySpecifier = (\n  | 'activityType'\n  | 'eventType'\n  | 'id'\n  | 'indexInBlock'\n  | 'loan'\n  | 'loanId'\n  | 'multiSourceLoanHistory'\n  | 'nextActivity'\n  | 'prevActivity'\n  | 'timestamp'\n  | 'txHash'\n  | LoanInitiatedKeySpecifier\n)[];\nexport type LoanInitiatedFieldPolicy = {\n  activityType?: FieldPolicy<any> | FieldReadFunction<any>;\n  eventType?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  indexInBlock?: FieldPolicy<any> | FieldReadFunction<any>;\n  loan?: FieldPolicy<any> | FieldReadFunction<any>;\n  loanId?: FieldPolicy<any> | FieldReadFunction<any>;\n  multiSourceLoanHistory?: FieldPolicy<any> | FieldReadFunction<any>;\n  nextActivity?: FieldPolicy<any> | FieldReadFunction<any>;\n  prevActivity?: FieldPolicy<any> | FieldReadFunction<any>;\n  timestamp?: FieldPolicy<any> | FieldReadFunction<any>;\n  txHash?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type LoanInitiatedNotificationKeySpecifier = (\n  | 'aprBps'\n  | 'createdOn'\n  | 'duration'\n  | 'id'\n  | 'loan'\n  | 'loanId'\n  | 'notificationType'\n  | 'principalAmount'\n  | 'readOn'\n  | 'user'\n  | LoanInitiatedNotificationKeySpecifier\n)[];\nexport type LoanInitiatedNotificationFieldPolicy = {\n  aprBps?: FieldPolicy<any> | FieldReadFunction<any>;\n  createdOn?: FieldPolicy<any> | FieldReadFunction<any>;\n  duration?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  loan?: FieldPolicy<any> | FieldReadFunction<any>;\n  loanId?: FieldPolicy<any> | FieldReadFunction<any>;\n  notificationType?: FieldPolicy<any> | FieldReadFunction<any>;\n  principalAmount?: FieldPolicy<any> | FieldReadFunction<any>;\n  readOn?: FieldPolicy<any> | FieldReadFunction<any>;\n  user?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type LoanListingEventKeySpecifier = (\n  | 'createdDate'\n  | 'desiredDuration'\n  | 'desiredPrincipalAddress'\n  | 'expirationDate'\n  | 'id'\n  | 'marketplaceName'\n  | 'nft'\n  | 'timestamp'\n  | 'user'\n  | LoanListingEventKeySpecifier\n)[];\nexport type LoanListingEventFieldPolicy = {\n  createdDate?: FieldPolicy<any> | FieldReadFunction<any>;\n  desiredDuration?: FieldPolicy<any> | FieldReadFunction<any>;\n  desiredPrincipalAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  expirationDate?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  marketplaceName?: FieldPolicy<any> | FieldReadFunction<any>;\n  nft?: FieldPolicy<any> | FieldReadFunction<any>;\n  timestamp?: FieldPolicy<any> | FieldReadFunction<any>;\n  user?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type LoanOfferCompetitionPreviewKeySpecifier = (\n  | 'complete'\n  | 'qualifies'\n  | 'reason'\n  | 'references'\n  | 'replacementIds'\n  | LoanOfferCompetitionPreviewKeySpecifier\n)[];\nexport type LoanOfferCompetitionPreviewFieldPolicy = {\n  complete?: FieldPolicy<any> | FieldReadFunction<any>;\n  qualifies?: FieldPolicy<any> | FieldReadFunction<any>;\n  reason?: FieldPolicy<any> | FieldReadFunction<any>;\n  references?: FieldPolicy<any> | FieldReadFunction<any>;\n  replacementIds?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type LoanOfferCompetitionReferenceKeySpecifier = (\n  | 'maximumEaprDenominator'\n  | 'maximumEaprNumerator'\n  | 'optionId'\n  | 'requiredNetPrincipal'\n  | 'sourceIds'\n  | LoanOfferCompetitionReferenceKeySpecifier\n)[];\nexport type LoanOfferCompetitionReferenceFieldPolicy = {\n  maximumEaprDenominator?: FieldPolicy<any> | FieldReadFunction<any>;\n  maximumEaprNumerator?: FieldPolicy<any> | FieldReadFunction<any>;\n  optionId?: FieldPolicy<any> | FieldReadFunction<any>;\n  requiredNetPrincipal?: FieldPolicy<any> | FieldReadFunction<any>;\n  sourceIds?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type LoanOptionAllocationKeySpecifier = (\n  | 'amount'\n  | 'fee'\n  | 'interest'\n  | 'offer'\n  | 'renegotiation'\n  | LoanOptionAllocationKeySpecifier\n)[];\nexport type LoanOptionAllocationFieldPolicy = {\n  amount?: FieldPolicy<any> | FieldReadFunction<any>;\n  fee?: FieldPolicy<any> | FieldReadFunction<any>;\n  interest?: FieldPolicy<any> | FieldReadFunction<any>;\n  offer?: FieldPolicy<any> | FieldReadFunction<any>;\n  renegotiation?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type LoanPaymentKeySpecifier = (\n  | 'accruedInterest'\n  | 'activityId'\n  | 'destination'\n  | 'id'\n  | 'pendingInterest'\n  | 'principalAddress'\n  | 'principalAmount'\n  | 'protocolFee'\n  | 'source'\n  | LoanPaymentKeySpecifier\n)[];\nexport type LoanPaymentFieldPolicy = {\n  accruedInterest?: FieldPolicy<any> | FieldReadFunction<any>;\n  activityId?: FieldPolicy<any> | FieldReadFunction<any>;\n  destination?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  pendingInterest?: FieldPolicy<any> | FieldReadFunction<any>;\n  principalAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  principalAmount?: FieldPolicy<any> | FieldReadFunction<any>;\n  protocolFee?: FieldPolicy<any> | FieldReadFunction<any>;\n  source?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type LoanRefinancedKeySpecifier = (\n  | 'activityType'\n  | 'addedNewTranche'\n  | 'eventType'\n  | 'id'\n  | 'indexInBlock'\n  | 'isRenegotiation'\n  | 'loan'\n  | 'loanId'\n  | 'multiSourceLoanHistory'\n  | 'nextActivity'\n  | 'prevActivity'\n  | 'timestamp'\n  | 'txHash'\n  | LoanRefinancedKeySpecifier\n)[];\nexport type LoanRefinancedFieldPolicy = {\n  activityType?: FieldPolicy<any> | FieldReadFunction<any>;\n  addedNewTranche?: FieldPolicy<any> | FieldReadFunction<any>;\n  eventType?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  indexInBlock?: FieldPolicy<any> | FieldReadFunction<any>;\n  isRenegotiation?: FieldPolicy<any> | FieldReadFunction<any>;\n  loan?: FieldPolicy<any> | FieldReadFunction<any>;\n  loanId?: FieldPolicy<any> | FieldReadFunction<any>;\n  multiSourceLoanHistory?: FieldPolicy<any> | FieldReadFunction<any>;\n  nextActivity?: FieldPolicy<any> | FieldReadFunction<any>;\n  prevActivity?: FieldPolicy<any> | FieldReadFunction<any>;\n  timestamp?: FieldPolicy<any> | FieldReadFunction<any>;\n  txHash?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type LoanRefinancedFromOffersKeySpecifier = (\n  | 'activityType'\n  | 'eventType'\n  | 'flashRefinance'\n  | 'id'\n  | 'indexInBlock'\n  | 'loan'\n  | 'loanId'\n  | 'multiSourceLoanHistory'\n  | 'nextActivity'\n  | 'prevActivity'\n  | 'timestamp'\n  | 'txHash'\n  | LoanRefinancedFromOffersKeySpecifier\n)[];\nexport type LoanRefinancedFromOffersFieldPolicy = {\n  activityType?: FieldPolicy<any> | FieldReadFunction<any>;\n  eventType?: FieldPolicy<any> | FieldReadFunction<any>;\n  flashRefinance?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  indexInBlock?: FieldPolicy<any> | FieldReadFunction<any>;\n  loan?: FieldPolicy<any> | FieldReadFunction<any>;\n  loanId?: FieldPolicy<any> | FieldReadFunction<any>;\n  multiSourceLoanHistory?: FieldPolicy<any> | FieldReadFunction<any>;\n  nextActivity?: FieldPolicy<any> | FieldReadFunction<any>;\n  prevActivity?: FieldPolicy<any> | FieldReadFunction<any>;\n  timestamp?: FieldPolicy<any> | FieldReadFunction<any>;\n  txHash?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type LoanRefinancedNotificationKeySpecifier = (\n  | 'createdOn'\n  | 'id'\n  | 'newHistory'\n  | 'newHistoryId'\n  | 'notificationType'\n  | 'previousHistory'\n  | 'previousHistoryId'\n  | 'readOn'\n  | 'user'\n  | LoanRefinancedNotificationKeySpecifier\n)[];\nexport type LoanRefinancedNotificationFieldPolicy = {\n  createdOn?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  newHistory?: FieldPolicy<any> | FieldReadFunction<any>;\n  newHistoryId?: FieldPolicy<any> | FieldReadFunction<any>;\n  notificationType?: FieldPolicy<any> | FieldReadFunction<any>;\n  previousHistory?: FieldPolicy<any> | FieldReadFunction<any>;\n  previousHistoryId?: FieldPolicy<any> | FieldReadFunction<any>;\n  readOn?: FieldPolicy<any> | FieldReadFunction<any>;\n  user?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type LoanRepaidKeySpecifier = (\n  | 'activityType'\n  | 'eventType'\n  | 'id'\n  | 'indexInBlock'\n  | 'loan'\n  | 'loanId'\n  | 'multiSourceLoanHistory'\n  | 'nextActivity'\n  | 'prevActivity'\n  | 'timestamp'\n  | 'totalInterest'\n  | 'txHash'\n  | LoanRepaidKeySpecifier\n)[];\nexport type LoanRepaidFieldPolicy = {\n  activityType?: FieldPolicy<any> | FieldReadFunction<any>;\n  eventType?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  indexInBlock?: FieldPolicy<any> | FieldReadFunction<any>;\n  loan?: FieldPolicy<any> | FieldReadFunction<any>;\n  loanId?: FieldPolicy<any> | FieldReadFunction<any>;\n  multiSourceLoanHistory?: FieldPolicy<any> | FieldReadFunction<any>;\n  nextActivity?: FieldPolicy<any> | FieldReadFunction<any>;\n  prevActivity?: FieldPolicy<any> | FieldReadFunction<any>;\n  timestamp?: FieldPolicy<any> | FieldReadFunction<any>;\n  totalInterest?: FieldPolicy<any> | FieldReadFunction<any>;\n  txHash?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type LoanRepaidNotificationKeySpecifier = (\n  | 'createdOn'\n  | 'id'\n  | 'loan'\n  | 'loanId'\n  | 'notificationType'\n  | 'readOn'\n  | 'user'\n  | LoanRepaidNotificationKeySpecifier\n)[];\nexport type LoanRepaidNotificationFieldPolicy = {\n  createdOn?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  loan?: FieldPolicy<any> | FieldReadFunction<any>;\n  loanId?: FieldPolicy<any> | FieldReadFunction<any>;\n  notificationType?: FieldPolicy<any> | FieldReadFunction<any>;\n  readOn?: FieldPolicy<any> | FieldReadFunction<any>;\n  user?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type LoanSentToAuctionKeySpecifier = (\n  | 'activityType'\n  | 'eventType'\n  | 'id'\n  | 'indexInBlock'\n  | 'liquidatorAddress'\n  | 'loan'\n  | 'loanId'\n  | 'multiSourceLoanHistory'\n  | 'nextActivity'\n  | 'prevActivity'\n  | 'timestamp'\n  | 'txHash'\n  | LoanSentToAuctionKeySpecifier\n)[];\nexport type LoanSentToAuctionFieldPolicy = {\n  activityType?: FieldPolicy<any> | FieldReadFunction<any>;\n  eventType?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  indexInBlock?: FieldPolicy<any> | FieldReadFunction<any>;\n  liquidatorAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  loan?: FieldPolicy<any> | FieldReadFunction<any>;\n  loanId?: FieldPolicy<any> | FieldReadFunction<any>;\n  multiSourceLoanHistory?: FieldPolicy<any> | FieldReadFunction<any>;\n  nextActivity?: FieldPolicy<any> | FieldReadFunction<any>;\n  prevActivity?: FieldPolicy<any> | FieldReadFunction<any>;\n  timestamp?: FieldPolicy<any> | FieldReadFunction<any>;\n  txHash?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type LoansDataKeySpecifier = (\n  | 'maxAprBps'\n  | 'maxPrincipalAmount'\n  | 'maxRemainingTime'\n  | 'minAprBps'\n  | 'minPrincipalAmount'\n  | 'minRemainingTime'\n  | LoansDataKeySpecifier\n)[];\nexport type LoansDataFieldPolicy = {\n  maxAprBps?: FieldPolicy<any> | FieldReadFunction<any>;\n  maxPrincipalAmount?: FieldPolicy<any> | FieldReadFunction<any>;\n  maxRemainingTime?: FieldPolicy<any> | FieldReadFunction<any>;\n  minAprBps?: FieldPolicy<any> | FieldReadFunction<any>;\n  minPrincipalAmount?: FieldPolicy<any> | FieldReadFunction<any>;\n  minRemainingTime?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type LostSourceKeySpecifier = (\n  | 'accruedInterest'\n  | 'activity'\n  | 'activityId'\n  | 'aprBps'\n  | 'duration'\n  | 'earnedInterest'\n  | 'endDate'\n  | 'expectedInterestLeft'\n  | 'id'\n  | 'lenderAddress'\n  | 'lenderEaprBps'\n  | 'lenderName'\n  | 'lenderProfilePictureUrl'\n  | 'loan'\n  | 'netAccruedInterest'\n  | 'netAprBps'\n  | 'netEarnedInterest'\n  | 'netExpectedInterestLeft'\n  | 'netLenderEaprBps'\n  | 'netOriginationFee'\n  | 'netProfit'\n  | 'netRepaidInterest'\n  | 'originationFee'\n  | 'principalAmount'\n  | 'profit'\n  | 'repaidInterest'\n  | 'startTime'\n  | LostSourceKeySpecifier\n)[];\nexport type LostSourceFieldPolicy = {\n  accruedInterest?: FieldPolicy<any> | FieldReadFunction<any>;\n  activity?: FieldPolicy<any> | FieldReadFunction<any>;\n  activityId?: FieldPolicy<any> | FieldReadFunction<any>;\n  aprBps?: FieldPolicy<any> | FieldReadFunction<any>;\n  duration?: FieldPolicy<any> | FieldReadFunction<any>;\n  earnedInterest?: FieldPolicy<any> | FieldReadFunction<any>;\n  endDate?: FieldPolicy<any> | FieldReadFunction<any>;\n  expectedInterestLeft?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  lenderAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  lenderEaprBps?: FieldPolicy<any> | FieldReadFunction<any>;\n  lenderName?: FieldPolicy<any> | FieldReadFunction<any>;\n  lenderProfilePictureUrl?: FieldPolicy<any> | FieldReadFunction<any>;\n  loan?: FieldPolicy<any> | FieldReadFunction<any>;\n  netAccruedInterest?: FieldPolicy<any> | FieldReadFunction<any>;\n  netAprBps?: FieldPolicy<any> | FieldReadFunction<any>;\n  netEarnedInterest?: FieldPolicy<any> | FieldReadFunction<any>;\n  netExpectedInterestLeft?: FieldPolicy<any> | FieldReadFunction<any>;\n  netLenderEaprBps?: FieldPolicy<any> | FieldReadFunction<any>;\n  netOriginationFee?: FieldPolicy<any> | FieldReadFunction<any>;\n  netProfit?: FieldPolicy<any> | FieldReadFunction<any>;\n  netRepaidInterest?: FieldPolicy<any> | FieldReadFunction<any>;\n  originationFee?: FieldPolicy<any> | FieldReadFunction<any>;\n  principalAmount?: FieldPolicy<any> | FieldReadFunction<any>;\n  profit?: FieldPolicy<any> | FieldReadFunction<any>;\n  repaidInterest?: FieldPolicy<any> | FieldReadFunction<any>;\n  startTime?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type LostSourceNotificationKeySpecifier = (\n  | 'createdOn'\n  | 'id'\n  | 'lostSource'\n  | 'lostSourceId'\n  | 'notificationType'\n  | 'readOn'\n  | 'user'\n  | LostSourceNotificationKeySpecifier\n)[];\nexport type LostSourceNotificationFieldPolicy = {\n  createdOn?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  lostSource?: FieldPolicy<any> | FieldReadFunction<any>;\n  lostSourceId?: FieldPolicy<any> | FieldReadFunction<any>;\n  notificationType?: FieldPolicy<any> | FieldReadFunction<any>;\n  readOn?: FieldPolicy<any> | FieldReadFunction<any>;\n  user?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type MarketDepthLevelKeySpecifier = (\n  | 'priceNative'\n  | 'quantity'\n  | MarketDepthLevelKeySpecifier\n)[];\nexport type MarketDepthLevelFieldPolicy = {\n  priceNative?: FieldPolicy<any> | FieldReadFunction<any>;\n  quantity?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type MarketOverviewKeySpecifier = (\n  | 'movers'\n  | 'top'\n  | 'topBuyers'\n  | 'volume'\n  | MarketOverviewKeySpecifier\n)[];\nexport type MarketOverviewFieldPolicy = {\n  movers?: FieldPolicy<any> | FieldReadFunction<any>;\n  top?: FieldPolicy<any> | FieldReadFunction<any>;\n  topBuyers?: FieldPolicy<any> | FieldReadFunction<any>;\n  volume?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type MarketOverviewBuyerKeySpecifier = (\n  | 'address'\n  | 'buyingVolumeEth'\n  | 'name'\n  | 'profilePictureUrl'\n  | MarketOverviewBuyerKeySpecifier\n)[];\nexport type MarketOverviewBuyerFieldPolicy = {\n  address?: FieldPolicy<any> | FieldReadFunction<any>;\n  buyingVolumeEth?: FieldPolicy<any> | FieldReadFunction<any>;\n  name?: FieldPolicy<any> | FieldReadFunction<any>;\n  profilePictureUrl?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type MarketOverviewCollectionKeySpecifier = (\n  | 'collection'\n  | 'currencyAddress'\n  | 'floorChangePercent'\n  | 'loansCount'\n  | 'recentBuyers'\n  | 'salesCount'\n  | 'salesVolume'\n  | 'usersCount'\n  | MarketOverviewCollectionKeySpecifier\n)[];\nexport type MarketOverviewCollectionFieldPolicy = {\n  collection?: FieldPolicy<any> | FieldReadFunction<any>;\n  currencyAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  floorChangePercent?: FieldPolicy<any> | FieldReadFunction<any>;\n  loansCount?: FieldPolicy<any> | FieldReadFunction<any>;\n  recentBuyers?: FieldPolicy<any> | FieldReadFunction<any>;\n  salesCount?: FieldPolicy<any> | FieldReadFunction<any>;\n  salesVolume?: FieldPolicy<any> | FieldReadFunction<any>;\n  usersCount?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type MarketOverviewWalletKeySpecifier = (\n  | 'address'\n  | 'name'\n  | 'profilePictureUrl'\n  | MarketOverviewWalletKeySpecifier\n)[];\nexport type MarketOverviewWalletFieldPolicy = {\n  address?: FieldPolicy<any> | FieldReadFunction<any>;\n  name?: FieldPolicy<any> | FieldReadFunction<any>;\n  profilePictureUrl?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type MultiSourceLoanKeySpecifier = (\n  | 'activities'\n  | 'address'\n  | 'auction'\n  | 'blendedAprBps'\n  | 'borrowerAddress'\n  | 'borrowerName'\n  | 'borrowerProfilePictureUrl'\n  | 'contractStartTime'\n  | 'currency'\n  | 'duration'\n  | 'durationFromRenegotiationOrStart'\n  | 'endDate'\n  | 'id'\n  | 'indexInBlock'\n  | 'isEndLockedUp'\n  | 'lastOriginationFee'\n  | 'lastRenegotiationDate'\n  | 'lenderRefinanceDisabled'\n  | 'loanId'\n  | 'nft'\n  | 'offer'\n  | 'offerIds'\n  | 'previousLoan'\n  | 'principalAddress'\n  | 'principalAmount'\n  | 'protocolFee'\n  | 'renegotiationCount'\n  | 'renegotiationRequest'\n  | 'repaidActivity'\n  | 'repayment'\n  | 'repaymentTime'\n  | 'replacementLoan'\n  | 'sources'\n  | 'startLockDueDate'\n  | 'startTime'\n  | 'status'\n  | 'timestamp'\n  | 'topUpRequest'\n  | 'totalOriginationFee'\n  | 'txHash'\n  | MultiSourceLoanKeySpecifier\n)[];\nexport type MultiSourceLoanFieldPolicy = {\n  activities?: FieldPolicy<any> | FieldReadFunction<any>;\n  address?: FieldPolicy<any> | FieldReadFunction<any>;\n  auction?: FieldPolicy<any> | FieldReadFunction<any>;\n  blendedAprBps?: FieldPolicy<any> | FieldReadFunction<any>;\n  borrowerAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  borrowerName?: FieldPolicy<any> | FieldReadFunction<any>;\n  borrowerProfilePictureUrl?: FieldPolicy<any> | FieldReadFunction<any>;\n  contractStartTime?: FieldPolicy<any> | FieldReadFunction<any>;\n  currency?: FieldPolicy<any> | FieldReadFunction<any>;\n  duration?: FieldPolicy<any> | FieldReadFunction<any>;\n  durationFromRenegotiationOrStart?: FieldPolicy<any> | FieldReadFunction<any>;\n  endDate?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  indexInBlock?: FieldPolicy<any> | FieldReadFunction<any>;\n  isEndLockedUp?: FieldPolicy<any> | FieldReadFunction<any>;\n  lastOriginationFee?: FieldPolicy<any> | FieldReadFunction<any>;\n  lastRenegotiationDate?: FieldPolicy<any> | FieldReadFunction<any>;\n  lenderRefinanceDisabled?: FieldPolicy<any> | FieldReadFunction<any>;\n  loanId?: FieldPolicy<any> | FieldReadFunction<any>;\n  nft?: FieldPolicy<any> | FieldReadFunction<any>;\n  offer?: FieldPolicy<any> | FieldReadFunction<any>;\n  offerIds?: FieldPolicy<any> | FieldReadFunction<any>;\n  previousLoan?: FieldPolicy<any> | FieldReadFunction<any>;\n  principalAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  principalAmount?: FieldPolicy<any> | FieldReadFunction<any>;\n  protocolFee?: FieldPolicy<any> | FieldReadFunction<any>;\n  renegotiationCount?: FieldPolicy<any> | FieldReadFunction<any>;\n  renegotiationRequest?: FieldPolicy<any> | FieldReadFunction<any>;\n  repaidActivity?: FieldPolicy<any> | FieldReadFunction<any>;\n  repayment?: FieldPolicy<any> | FieldReadFunction<any>;\n  repaymentTime?: FieldPolicy<any> | FieldReadFunction<any>;\n  replacementLoan?: FieldPolicy<any> | FieldReadFunction<any>;\n  sources?: FieldPolicy<any> | FieldReadFunction<any>;\n  startLockDueDate?: FieldPolicy<any> | FieldReadFunction<any>;\n  startTime?: FieldPolicy<any> | FieldReadFunction<any>;\n  status?: FieldPolicy<any> | FieldReadFunction<any>;\n  timestamp?: FieldPolicy<any> | FieldReadFunction<any>;\n  topUpRequest?: FieldPolicy<any> | FieldReadFunction<any>;\n  totalOriginationFee?: FieldPolicy<any> | FieldReadFunction<any>;\n  txHash?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type MultiSourceLoanConnectionKeySpecifier = (\n  | 'edges'\n  | 'pageInfo'\n  | 'totalCount'\n  | MultiSourceLoanConnectionKeySpecifier\n)[];\nexport type MultiSourceLoanConnectionFieldPolicy = {\n  edges?: FieldPolicy<any> | FieldReadFunction<any>;\n  pageInfo?: FieldPolicy<any> | FieldReadFunction<any>;\n  totalCount?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type MultiSourceLoanEdgeKeySpecifier = (\n  | 'cursor'\n  | 'node'\n  | MultiSourceLoanEdgeKeySpecifier\n)[];\nexport type MultiSourceLoanEdgeFieldPolicy = {\n  cursor?: FieldPolicy<any> | FieldReadFunction<any>;\n  node?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type MultiSourceLoanHistoryKeySpecifier = (\n  | 'activity'\n  | 'activityId'\n  | 'borrowerAddress'\n  | 'borrowerName'\n  | 'borrowerProfilePictureUrl'\n  | 'currency'\n  | 'duration'\n  | 'durationFromRenegotiationOrStart'\n  | 'id'\n  | 'lastRenegotiationDate'\n  | 'loanId'\n  | 'nft'\n  | 'offerIds'\n  | 'principalAddress'\n  | 'principalAmount'\n  | 'sources'\n  | 'startTime'\n  | MultiSourceLoanHistoryKeySpecifier\n)[];\nexport type MultiSourceLoanHistoryFieldPolicy = {\n  activity?: FieldPolicy<any> | FieldReadFunction<any>;\n  activityId?: FieldPolicy<any> | FieldReadFunction<any>;\n  borrowerAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  borrowerName?: FieldPolicy<any> | FieldReadFunction<any>;\n  borrowerProfilePictureUrl?: FieldPolicy<any> | FieldReadFunction<any>;\n  currency?: FieldPolicy<any> | FieldReadFunction<any>;\n  duration?: FieldPolicy<any> | FieldReadFunction<any>;\n  durationFromRenegotiationOrStart?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  lastRenegotiationDate?: FieldPolicy<any> | FieldReadFunction<any>;\n  loanId?: FieldPolicy<any> | FieldReadFunction<any>;\n  nft?: FieldPolicy<any> | FieldReadFunction<any>;\n  offerIds?: FieldPolicy<any> | FieldReadFunction<any>;\n  principalAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  principalAmount?: FieldPolicy<any> | FieldReadFunction<any>;\n  sources?: FieldPolicy<any> | FieldReadFunction<any>;\n  startTime?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type MultipleTraitOrderKeySpecifier = (\n  | 'cancelsOffChain'\n  | 'collection'\n  | 'collectionId'\n  | 'createdDate'\n  | 'currency'\n  | 'currencyAddress'\n  | 'evmOrder'\n  | 'executions'\n  | 'expiration'\n  | 'feeMetadata'\n  | 'fees'\n  | 'hidden'\n  | 'id'\n  | 'isAsk'\n  | 'isPrivate'\n  | 'maker'\n  | 'makerName'\n  | 'makerProfilePictureUrl'\n  | 'marketPlace'\n  | 'marketPlaceAddress'\n  | 'maxExecutions'\n  | 'netAmount'\n  | 'nonce'\n  | 'orderType'\n  | 'originalId'\n  | 'platformFees'\n  | 'price'\n  | 'signature'\n  | 'startTime'\n  | 'status'\n  | 'stealth'\n  | 'taker'\n  | 'takerName'\n  | 'takerProfilePictureUrl'\n  | 'timestamp'\n  | 'traits'\n  | 'updatedDate'\n  | MultipleTraitOrderKeySpecifier\n)[];\nexport type MultipleTraitOrderFieldPolicy = {\n  cancelsOffChain?: FieldPolicy<any> | FieldReadFunction<any>;\n  collection?: FieldPolicy<any> | FieldReadFunction<any>;\n  collectionId?: FieldPolicy<any> | FieldReadFunction<any>;\n  createdDate?: FieldPolicy<any> | FieldReadFunction<any>;\n  currency?: FieldPolicy<any> | FieldReadFunction<any>;\n  currencyAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  evmOrder?: FieldPolicy<any> | FieldReadFunction<any>;\n  executions?: FieldPolicy<any> | FieldReadFunction<any>;\n  expiration?: FieldPolicy<any> | FieldReadFunction<any>;\n  feeMetadata?: FieldPolicy<any> | FieldReadFunction<any>;\n  fees?: FieldPolicy<any> | FieldReadFunction<any>;\n  hidden?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  isAsk?: FieldPolicy<any> | FieldReadFunction<any>;\n  isPrivate?: FieldPolicy<any> | FieldReadFunction<any>;\n  maker?: FieldPolicy<any> | FieldReadFunction<any>;\n  makerName?: FieldPolicy<any> | FieldReadFunction<any>;\n  makerProfilePictureUrl?: FieldPolicy<any> | FieldReadFunction<any>;\n  marketPlace?: FieldPolicy<any> | FieldReadFunction<any>;\n  marketPlaceAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  maxExecutions?: FieldPolicy<any> | FieldReadFunction<any>;\n  netAmount?: FieldPolicy<any> | FieldReadFunction<any>;\n  nonce?: FieldPolicy<any> | FieldReadFunction<any>;\n  orderType?: FieldPolicy<any> | FieldReadFunction<any>;\n  originalId?: FieldPolicy<any> | FieldReadFunction<any>;\n  platformFees?: FieldPolicy<any> | FieldReadFunction<any>;\n  price?: FieldPolicy<any> | FieldReadFunction<any>;\n  signature?: FieldPolicy<any> | FieldReadFunction<any>;\n  startTime?: FieldPolicy<any> | FieldReadFunction<any>;\n  status?: FieldPolicy<any> | FieldReadFunction<any>;\n  stealth?: FieldPolicy<any> | FieldReadFunction<any>;\n  taker?: FieldPolicy<any> | FieldReadFunction<any>;\n  takerName?: FieldPolicy<any> | FieldReadFunction<any>;\n  takerProfilePictureUrl?: FieldPolicy<any> | FieldReadFunction<any>;\n  timestamp?: FieldPolicy<any> | FieldReadFunction<any>;\n  traits?: FieldPolicy<any> | FieldReadFunction<any>;\n  updatedDate?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type MutationKeySpecifier = (\n  | 'acceptLinkedWallets'\n  | 'addListingsOfNftsFromUser'\n  | 'addOrUpdateListing'\n  | 'addOrUpdateRenegotiationRequest'\n  | 'addOrUpdateTopUpRequest'\n  | 'cancelTradeOrders'\n  | 'completeTwitterVerification'\n  | 'createGallery'\n  | 'deleteGallery'\n  | 'deleteProfilePicture'\n  | 'disconnectTwitter'\n  | 'editUser'\n  | 'followArtist'\n  | 'followCollection'\n  | 'followCollections'\n  | 'followEdition'\n  | 'followNft'\n  | 'followWallet'\n  | 'generateCollectionOfferToBeSigned'\n  | 'generateRenegotiationOfferToBeSigned'\n  | 'generateSignInNonce'\n  | 'generateSingleNftOfferToBeSigned'\n  | 'generateTraitOfferToBeSigned'\n  | 'hideAllOffers'\n  | 'hideOffer'\n  | 'hideOffers'\n  | 'hideOrder'\n  | 'hideRenegotiation'\n  | 'linkWalletAddress'\n  | 'markNotificationIdsAsRead'\n  | 'markNotificationsAsRead'\n  | 'publishBulkOrdersForNfts'\n  | 'publishBuyNowPayLaterOrder'\n  | 'publishDealOrder'\n  | 'publishGallery'\n  | 'publishOrderForCollection'\n  | 'publishOrderForNft'\n  | 'publishOrderForNftSet'\n  | 'publishOrderForTrait'\n  | 'publishSellAndRepayOrder'\n  | 'recordItemVisit'\n  | 'refreshNftMetadata'\n  | 'removeLinkedWallets'\n  | 'removeListing'\n  | 'removeListingsOfNftsFromUser'\n  | 'removeRenegotiationRequest'\n  | 'removeTopUpRequest'\n  | 'resendVerificationEmail'\n  | 'saveRenegotiationSignedOffer'\n  | 'saveSignedCollectionOffer'\n  | 'saveSignedSingleNftOffer'\n  | 'saveSignedTraitOffer'\n  | 'setMinimumOfferAmount'\n  | 'setNftWatchNotifications'\n  | 'setNotificationPreferences'\n  | 'setReferral'\n  | 'setWatchNotifications'\n  | 'showOffer'\n  | 'showOrder'\n  | 'showRenegotiation'\n  | 'signInWithEthereum'\n  | 'startTwitterVerification'\n  | 'unfollowArtist'\n  | 'unfollowCollection'\n  | 'unfollowEdition'\n  | 'unfollowNft'\n  | 'unfollowWallet'\n  | 'unpublishGallery'\n  | 'updateGallery'\n  | 'uploadProfilePicture'\n  | 'verifyMailValidationCode'\n  | MutationKeySpecifier\n)[];\nexport type MutationFieldPolicy = {\n  acceptLinkedWallets?: FieldPolicy<any> | FieldReadFunction<any>;\n  addListingsOfNftsFromUser?: FieldPolicy<any> | FieldReadFunction<any>;\n  addOrUpdateListing?: FieldPolicy<any> | FieldReadFunction<any>;\n  addOrUpdateRenegotiationRequest?: FieldPolicy<any> | FieldReadFunction<any>;\n  addOrUpdateTopUpRequest?: FieldPolicy<any> | FieldReadFunction<any>;\n  cancelTradeOrders?: FieldPolicy<any> | FieldReadFunction<any>;\n  completeTwitterVerification?: FieldPolicy<any> | FieldReadFunction<any>;\n  createGallery?: FieldPolicy<any> | FieldReadFunction<any>;\n  deleteGallery?: FieldPolicy<any> | FieldReadFunction<any>;\n  deleteProfilePicture?: FieldPolicy<any> | FieldReadFunction<any>;\n  disconnectTwitter?: FieldPolicy<any> | FieldReadFunction<any>;\n  editUser?: FieldPolicy<any> | FieldReadFunction<any>;\n  followArtist?: FieldPolicy<any> | FieldReadFunction<any>;\n  followCollection?: FieldPolicy<any> | FieldReadFunction<any>;\n  followCollections?: FieldPolicy<any> | FieldReadFunction<any>;\n  followEdition?: FieldPolicy<any> | FieldReadFunction<any>;\n  followNft?: FieldPolicy<any> | FieldReadFunction<any>;\n  followWallet?: FieldPolicy<any> | FieldReadFunction<any>;\n  generateCollectionOfferToBeSigned?: FieldPolicy<any> | FieldReadFunction<any>;\n  generateRenegotiationOfferToBeSigned?: FieldPolicy<any> | FieldReadFunction<any>;\n  generateSignInNonce?: FieldPolicy<any> | FieldReadFunction<any>;\n  generateSingleNftOfferToBeSigned?: FieldPolicy<any> | FieldReadFunction<any>;\n  generateTraitOfferToBeSigned?: FieldPolicy<any> | FieldReadFunction<any>;\n  hideAllOffers?: FieldPolicy<any> | FieldReadFunction<any>;\n  hideOffer?: FieldPolicy<any> | FieldReadFunction<any>;\n  hideOffers?: FieldPolicy<any> | FieldReadFunction<any>;\n  hideOrder?: FieldPolicy<any> | FieldReadFunction<any>;\n  hideRenegotiation?: FieldPolicy<any> | FieldReadFunction<any>;\n  linkWalletAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  markNotificationIdsAsRead?: FieldPolicy<any> | FieldReadFunction<any>;\n  markNotificationsAsRead?: FieldPolicy<any> | FieldReadFunction<any>;\n  publishBulkOrdersForNfts?: FieldPolicy<any> | FieldReadFunction<any>;\n  publishBuyNowPayLaterOrder?: FieldPolicy<any> | FieldReadFunction<any>;\n  publishDealOrder?: FieldPolicy<any> | FieldReadFunction<any>;\n  publishGallery?: FieldPolicy<any> | FieldReadFunction<any>;\n  publishOrderForCollection?: FieldPolicy<any> | FieldReadFunction<any>;\n  publishOrderForNft?: FieldPolicy<any> | FieldReadFunction<any>;\n  publishOrderForNftSet?: FieldPolicy<any> | FieldReadFunction<any>;\n  publishOrderForTrait?: FieldPolicy<any> | FieldReadFunction<any>;\n  publishSellAndRepayOrder?: FieldPolicy<any> | FieldReadFunction<any>;\n  recordItemVisit?: FieldPolicy<any> | FieldReadFunction<any>;\n  refreshNftMetadata?: FieldPolicy<any> | FieldReadFunction<any>;\n  removeLinkedWallets?: FieldPolicy<any> | FieldReadFunction<any>;\n  removeListing?: FieldPolicy<any> | FieldReadFunction<any>;\n  removeListingsOfNftsFromUser?: FieldPolicy<any> | FieldReadFunction<any>;\n  removeRenegotiationRequest?: FieldPolicy<any> | FieldReadFunction<any>;\n  removeTopUpRequest?: FieldPolicy<any> | FieldReadFunction<any>;\n  resendVerificationEmail?: FieldPolicy<any> | FieldReadFunction<any>;\n  saveRenegotiationSignedOffer?: FieldPolicy<any> | FieldReadFunction<any>;\n  saveSignedCollectionOffer?: FieldPolicy<any> | FieldReadFunction<any>;\n  saveSignedSingleNftOffer?: FieldPolicy<any> | FieldReadFunction<any>;\n  saveSignedTraitOffer?: FieldPolicy<any> | FieldReadFunction<any>;\n  setMinimumOfferAmount?: FieldPolicy<any> | FieldReadFunction<any>;\n  setNftWatchNotifications?: FieldPolicy<any> | FieldReadFunction<any>;\n  setNotificationPreferences?: FieldPolicy<any> | FieldReadFunction<any>;\n  setReferral?: FieldPolicy<any> | FieldReadFunction<any>;\n  setWatchNotifications?: FieldPolicy<any> | FieldReadFunction<any>;\n  showOffer?: FieldPolicy<any> | FieldReadFunction<any>;\n  showOrder?: FieldPolicy<any> | FieldReadFunction<any>;\n  showRenegotiation?: FieldPolicy<any> | FieldReadFunction<any>;\n  signInWithEthereum?: FieldPolicy<any> | FieldReadFunction<any>;\n  startTwitterVerification?: FieldPolicy<any> | FieldReadFunction<any>;\n  unfollowArtist?: FieldPolicy<any> | FieldReadFunction<any>;\n  unfollowCollection?: FieldPolicy<any> | FieldReadFunction<any>;\n  unfollowEdition?: FieldPolicy<any> | FieldReadFunction<any>;\n  unfollowNft?: FieldPolicy<any> | FieldReadFunction<any>;\n  unfollowWallet?: FieldPolicy<any> | FieldReadFunction<any>;\n  unpublishGallery?: FieldPolicy<any> | FieldReadFunction<any>;\n  updateGallery?: FieldPolicy<any> | FieldReadFunction<any>;\n  uploadProfilePicture?: FieldPolicy<any> | FieldReadFunction<any>;\n  verifyMailValidationCode?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type NFTKeySpecifier = (\n  | 'acquiredAt'\n  | 'acquisitionSale'\n  | 'activeLoan'\n  | 'animation'\n  | 'artists'\n  | 'collection'\n  | 'collectionId'\n  | 'createdDate'\n  | 'description'\n  | 'edition'\n  | 'editionId'\n  | 'erc20Balances'\n  | 'erc1155Balance'\n  | 'erc1155Supply'\n  | 'id'\n  | 'image'\n  | 'isExcluded'\n  | 'isFlagged'\n  | 'isFollowed'\n  | 'itemType'\n  | 'listed'\n  | 'marketPlaceOfPrice'\n  | 'maxNetPrincipalOffer'\n  | 'mintDate'\n  | 'nakedNft'\n  | 'name'\n  | 'nftId'\n  | 'nftOwnerBehaviorTypes'\n  | 'nftPriceSample'\n  | 'owner'\n  | 'ownerName'\n  | 'ownerProfilePictureUrl'\n  | 'price'\n  | 'priceCurrencyAddress'\n  | 'rarityRank'\n  | 'rarityScore'\n  | 'statistics'\n  | 'tokenId'\n  | 'traits'\n  | 'url'\n  | 'valuation'\n  | 'watchNotificationsEnabled'\n  | 'wrappedCount'\n  | 'wrappersAndNakedNftIds'\n  | 'wrappersAndNakedNfts'\n  | 'wrapsNfts'\n  | NFTKeySpecifier\n)[];\nexport type NFTFieldPolicy = {\n  acquiredAt?: FieldPolicy<any> | FieldReadFunction<any>;\n  acquisitionSale?: FieldPolicy<any> | FieldReadFunction<any>;\n  activeLoan?: FieldPolicy<any> | FieldReadFunction<any>;\n  animation?: FieldPolicy<any> | FieldReadFunction<any>;\n  artists?: FieldPolicy<any> | FieldReadFunction<any>;\n  collection?: FieldPolicy<any> | FieldReadFunction<any>;\n  collectionId?: FieldPolicy<any> | FieldReadFunction<any>;\n  createdDate?: FieldPolicy<any> | FieldReadFunction<any>;\n  description?: FieldPolicy<any> | FieldReadFunction<any>;\n  edition?: FieldPolicy<any> | FieldReadFunction<any>;\n  editionId?: FieldPolicy<any> | FieldReadFunction<any>;\n  erc20Balances?: FieldPolicy<any> | FieldReadFunction<any>;\n  erc1155Balance?: FieldPolicy<any> | FieldReadFunction<any>;\n  erc1155Supply?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  image?: FieldPolicy<any> | FieldReadFunction<any>;\n  isExcluded?: FieldPolicy<any> | FieldReadFunction<any>;\n  isFlagged?: FieldPolicy<any> | FieldReadFunction<any>;\n  isFollowed?: FieldPolicy<any> | FieldReadFunction<any>;\n  itemType?: FieldPolicy<any> | FieldReadFunction<any>;\n  listed?: FieldPolicy<any> | FieldReadFunction<any>;\n  marketPlaceOfPrice?: FieldPolicy<any> | FieldReadFunction<any>;\n  maxNetPrincipalOffer?: FieldPolicy<any> | FieldReadFunction<any>;\n  mintDate?: FieldPolicy<any> | FieldReadFunction<any>;\n  nakedNft?: FieldPolicy<any> | FieldReadFunction<any>;\n  name?: FieldPolicy<any> | FieldReadFunction<any>;\n  nftId?: FieldPolicy<any> | FieldReadFunction<any>;\n  nftOwnerBehaviorTypes?: FieldPolicy<any> | FieldReadFunction<any>;\n  nftPriceSample?: FieldPolicy<any> | FieldReadFunction<any>;\n  owner?: FieldPolicy<any> | FieldReadFunction<any>;\n  ownerName?: FieldPolicy<any> | FieldReadFunction<any>;\n  ownerProfilePictureUrl?: FieldPolicy<any> | FieldReadFunction<any>;\n  price?: FieldPolicy<any> | FieldReadFunction<any>;\n  priceCurrencyAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  rarityRank?: FieldPolicy<any> | FieldReadFunction<any>;\n  rarityScore?: FieldPolicy<any> | FieldReadFunction<any>;\n  statistics?: FieldPolicy<any> | FieldReadFunction<any>;\n  tokenId?: FieldPolicy<any> | FieldReadFunction<any>;\n  traits?: FieldPolicy<any> | FieldReadFunction<any>;\n  url?: FieldPolicy<any> | FieldReadFunction<any>;\n  valuation?: FieldPolicy<any> | FieldReadFunction<any>;\n  watchNotificationsEnabled?: FieldPolicy<any> | FieldReadFunction<any>;\n  wrappedCount?: FieldPolicy<any> | FieldReadFunction<any>;\n  wrappersAndNakedNftIds?: FieldPolicy<any> | FieldReadFunction<any>;\n  wrappersAndNakedNfts?: FieldPolicy<any> | FieldReadFunction<any>;\n  wrapsNfts?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type NFTConnectionKeySpecifier = (\n  | 'edges'\n  | 'pageInfo'\n  | 'totalCount'\n  | NFTConnectionKeySpecifier\n)[];\nexport type NFTConnectionFieldPolicy = {\n  edges?: FieldPolicy<any> | FieldReadFunction<any>;\n  pageInfo?: FieldPolicy<any> | FieldReadFunction<any>;\n  totalCount?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type NFTEdgeKeySpecifier = ('cursor' | 'node' | NFTEdgeKeySpecifier)[];\nexport type NFTEdgeFieldPolicy = {\n  cursor?: FieldPolicy<any> | FieldReadFunction<any>;\n  node?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type NFTPriceSampleKeySpecifier = (\n  | 'bestOfferForBuyWithLoan'\n  | 'currencyAddress'\n  | 'id'\n  | 'order'\n  | 'orderId'\n  | 'surveyedId'\n  | 'taker'\n  | 'timestamp'\n  | 'value'\n  | NFTPriceSampleKeySpecifier\n)[];\nexport type NFTPriceSampleFieldPolicy = {\n  bestOfferForBuyWithLoan?: FieldPolicy<any> | FieldReadFunction<any>;\n  currencyAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  order?: FieldPolicy<any> | FieldReadFunction<any>;\n  orderId?: FieldPolicy<any> | FieldReadFunction<any>;\n  surveyedId?: FieldPolicy<any> | FieldReadFunction<any>;\n  taker?: FieldPolicy<any> | FieldReadFunction<any>;\n  timestamp?: FieldPolicy<any> | FieldReadFunction<any>;\n  value?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type NewCollectionUnlistedOfferNotificationKeySpecifier = (\n  | 'createdOn'\n  | 'id'\n  | 'notificationType'\n  | 'readOn'\n  | 'user'\n  | NewCollectionUnlistedOfferNotificationKeySpecifier\n)[];\nexport type NewCollectionUnlistedOfferNotificationFieldPolicy = {\n  createdOn?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  notificationType?: FieldPolicy<any> | FieldReadFunction<any>;\n  readOn?: FieldPolicy<any> | FieldReadFunction<any>;\n  user?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type NewFollowerNotificationKeySpecifier = (\n  | 'createdOn'\n  | 'followerWalletAddress'\n  | 'id'\n  | 'notificationType'\n  | 'readOn'\n  | 'user'\n  | NewFollowerNotificationKeySpecifier\n)[];\nexport type NewFollowerNotificationFieldPolicy = {\n  createdOn?: FieldPolicy<any> | FieldReadFunction<any>;\n  followerWalletAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  notificationType?: FieldPolicy<any> | FieldReadFunction<any>;\n  readOn?: FieldPolicy<any> | FieldReadFunction<any>;\n  user?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type NewOfferNotificationKeySpecifier = (\n  | 'createdOn'\n  | 'id'\n  | 'notificationType'\n  | 'offer'\n  | 'offerId'\n  | 'readOn'\n  | 'user'\n  | NewOfferNotificationKeySpecifier\n)[];\nexport type NewOfferNotificationFieldPolicy = {\n  createdOn?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  notificationType?: FieldPolicy<any> | FieldReadFunction<any>;\n  offer?: FieldPolicy<any> | FieldReadFunction<any>;\n  offerId?: FieldPolicy<any> | FieldReadFunction<any>;\n  readOn?: FieldPolicy<any> | FieldReadFunction<any>;\n  user?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type NewRenegotiationOfferNotificationKeySpecifier = (\n  | 'createdOn'\n  | 'id'\n  | 'loan'\n  | 'loanId'\n  | 'notificationType'\n  | 'readOn'\n  | 'renegotiation'\n  | 'renegotiationId'\n  | 'user'\n  | NewRenegotiationOfferNotificationKeySpecifier\n)[];\nexport type NewRenegotiationOfferNotificationFieldPolicy = {\n  createdOn?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  loan?: FieldPolicy<any> | FieldReadFunction<any>;\n  loanId?: FieldPolicy<any> | FieldReadFunction<any>;\n  notificationType?: FieldPolicy<any> | FieldReadFunction<any>;\n  readOn?: FieldPolicy<any> | FieldReadFunction<any>;\n  renegotiation?: FieldPolicy<any> | FieldReadFunction<any>;\n  renegotiationId?: FieldPolicy<any> | FieldReadFunction<any>;\n  user?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type NftStatisticsKeySpecifier = (\n  | 'highestBid'\n  | 'lastSale'\n  | 'loansTotalVolume'\n  | 'numberOfOffers'\n  | 'numberOfOffersForCurrencies'\n  | 'topTraitFloorPrice'\n  | NftStatisticsKeySpecifier\n)[];\nexport type NftStatisticsFieldPolicy = {\n  highestBid?: FieldPolicy<any> | FieldReadFunction<any>;\n  lastSale?: FieldPolicy<any> | FieldReadFunction<any>;\n  loansTotalVolume?: FieldPolicy<any> | FieldReadFunction<any>;\n  numberOfOffers?: FieldPolicy<any> | FieldReadFunction<any>;\n  numberOfOffersForCurrencies?: FieldPolicy<any> | FieldReadFunction<any>;\n  topTraitFloorPrice?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type NftStrategyDeploymentKeySpecifier = (\n  | 'collectionAddress'\n  | 'contractAddress'\n  | 'id'\n  | NftStrategyDeploymentKeySpecifier\n)[];\nexport type NftStrategyDeploymentFieldPolicy = {\n  collectionAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  contractAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type NftStrategyDeploymentConnectionKeySpecifier = (\n  | 'edges'\n  | 'pageInfo'\n  | 'totalCount'\n  | NftStrategyDeploymentConnectionKeySpecifier\n)[];\nexport type NftStrategyDeploymentConnectionFieldPolicy = {\n  edges?: FieldPolicy<any> | FieldReadFunction<any>;\n  pageInfo?: FieldPolicy<any> | FieldReadFunction<any>;\n  totalCount?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type NftStrategyDeploymentEdgeKeySpecifier = (\n  | 'cursor'\n  | 'node'\n  | NftStrategyDeploymentEdgeKeySpecifier\n)[];\nexport type NftStrategyDeploymentEdgeFieldPolicy = {\n  cursor?: FieldPolicy<any> | FieldReadFunction<any>;\n  node?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type NftValuationKeySpecifier = (\n  | 'anchor'\n  | 'basis'\n  | 'confidence'\n  | 'evidenceTimestamp'\n  | 'liquidity'\n  | 'multiplier'\n  | 'value'\n  | NftValuationKeySpecifier\n)[];\nexport type NftValuationFieldPolicy = {\n  anchor?: FieldPolicy<any> | FieldReadFunction<any>;\n  basis?: FieldPolicy<any> | FieldReadFunction<any>;\n  confidence?: FieldPolicy<any> | FieldReadFunction<any>;\n  evidenceTimestamp?: FieldPolicy<any> | FieldReadFunction<any>;\n  liquidity?: FieldPolicy<any> | FieldReadFunction<any>;\n  multiplier?: FieldPolicy<any> | FieldReadFunction<any>;\n  value?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type NodeKeySpecifier = ('id' | NodeKeySpecifier)[];\nexport type NodeFieldPolicy = {\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type NotificationKeySpecifier = (\n  | 'createdOn'\n  | 'id'\n  | 'notificationType'\n  | 'readOn'\n  | 'user'\n  | NotificationKeySpecifier\n)[];\nexport type NotificationFieldPolicy = {\n  createdOn?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  notificationType?: FieldPolicy<any> | FieldReadFunction<any>;\n  readOn?: FieldPolicy<any> | FieldReadFunction<any>;\n  user?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type NotificationConnectionKeySpecifier = (\n  | 'edges'\n  | 'pageInfo'\n  | 'totalCount'\n  | NotificationConnectionKeySpecifier\n)[];\nexport type NotificationConnectionFieldPolicy = {\n  edges?: FieldPolicy<any> | FieldReadFunction<any>;\n  pageInfo?: FieldPolicy<any> | FieldReadFunction<any>;\n  totalCount?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type NotificationEdgeKeySpecifier = ('cursor' | 'node' | NotificationEdgeKeySpecifier)[];\nexport type NotificationEdgeFieldPolicy = {\n  cursor?: FieldPolicy<any> | FieldReadFunction<any>;\n  node?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type NotificationPreferenceKeySpecifier = (\n  | 'channel'\n  | 'enabled'\n  | 'event'\n  | NotificationPreferenceKeySpecifier\n)[];\nexport type NotificationPreferenceFieldPolicy = {\n  channel?: FieldPolicy<any> | FieldReadFunction<any>;\n  enabled?: FieldPolicy<any> | FieldReadFunction<any>;\n  event?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type OfferKeySpecifier = (\n  | 'aprBps'\n  | 'availablePrincipalAmount'\n  | 'borrowerAddress'\n  | 'borrowerName'\n  | 'borrowerProfilePictureUrl'\n  | 'capacity'\n  | 'collateralAddress'\n  | 'collectionId'\n  | 'consumedCapacity'\n  | 'contractAddress'\n  | 'createdDate'\n  | 'currency'\n  | 'duration'\n  | 'expirationTime'\n  | 'fee'\n  | 'hidden'\n  | 'id'\n  | 'lenderAddress'\n  | 'lenderAllowance'\n  | 'lenderAvailableBalance'\n  | 'lenderName'\n  | 'lenderProfilePictureUrl'\n  | 'lenderRefinanceDisabled'\n  | 'maxPrincipal'\n  | 'maxSeniorRepayment'\n  | 'maxTrancheFloor'\n  | 'netPrincipal'\n  | 'nftId'\n  | 'offerHash'\n  | 'offerId'\n  | 'principalAddress'\n  | 'principalAmount'\n  | 'repayment'\n  | 'requiresLiquidation'\n  | 'signature'\n  | 'signerAddress'\n  | 'status'\n  | 'timestamp'\n  | 'validators'\n  | OfferKeySpecifier\n)[];\nexport type OfferFieldPolicy = {\n  aprBps?: FieldPolicy<any> | FieldReadFunction<any>;\n  availablePrincipalAmount?: FieldPolicy<any> | FieldReadFunction<any>;\n  borrowerAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  borrowerName?: FieldPolicy<any> | FieldReadFunction<any>;\n  borrowerProfilePictureUrl?: FieldPolicy<any> | FieldReadFunction<any>;\n  capacity?: FieldPolicy<any> | FieldReadFunction<any>;\n  collateralAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  collectionId?: FieldPolicy<any> | FieldReadFunction<any>;\n  consumedCapacity?: FieldPolicy<any> | FieldReadFunction<any>;\n  contractAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  createdDate?: FieldPolicy<any> | FieldReadFunction<any>;\n  currency?: FieldPolicy<any> | FieldReadFunction<any>;\n  duration?: FieldPolicy<any> | FieldReadFunction<any>;\n  expirationTime?: FieldPolicy<any> | FieldReadFunction<any>;\n  fee?: FieldPolicy<any> | FieldReadFunction<any>;\n  hidden?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  lenderAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  lenderAllowance?: FieldPolicy<any> | FieldReadFunction<any>;\n  lenderAvailableBalance?: FieldPolicy<any> | FieldReadFunction<any>;\n  lenderName?: FieldPolicy<any> | FieldReadFunction<any>;\n  lenderProfilePictureUrl?: FieldPolicy<any> | FieldReadFunction<any>;\n  lenderRefinanceDisabled?: FieldPolicy<any> | FieldReadFunction<any>;\n  maxPrincipal?: FieldPolicy<any> | FieldReadFunction<any>;\n  maxSeniorRepayment?: FieldPolicy<any> | FieldReadFunction<any>;\n  maxTrancheFloor?: FieldPolicy<any> | FieldReadFunction<any>;\n  netPrincipal?: FieldPolicy<any> | FieldReadFunction<any>;\n  nftId?: FieldPolicy<any> | FieldReadFunction<any>;\n  offerHash?: FieldPolicy<any> | FieldReadFunction<any>;\n  offerId?: FieldPolicy<any> | FieldReadFunction<any>;\n  principalAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  principalAmount?: FieldPolicy<any> | FieldReadFunction<any>;\n  repayment?: FieldPolicy<any> | FieldReadFunction<any>;\n  requiresLiquidation?: FieldPolicy<any> | FieldReadFunction<any>;\n  signature?: FieldPolicy<any> | FieldReadFunction<any>;\n  signerAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  status?: FieldPolicy<any> | FieldReadFunction<any>;\n  timestamp?: FieldPolicy<any> | FieldReadFunction<any>;\n  validators?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type OfferAcceptedNotificationKeySpecifier = (\n  | 'createdOn'\n  | 'id'\n  | 'loan'\n  | 'loanId'\n  | 'notificationType'\n  | 'offer'\n  | 'offerId'\n  | 'readOn'\n  | 'user'\n  | OfferAcceptedNotificationKeySpecifier\n)[];\nexport type OfferAcceptedNotificationFieldPolicy = {\n  createdOn?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  loan?: FieldPolicy<any> | FieldReadFunction<any>;\n  loanId?: FieldPolicy<any> | FieldReadFunction<any>;\n  notificationType?: FieldPolicy<any> | FieldReadFunction<any>;\n  offer?: FieldPolicy<any> | FieldReadFunction<any>;\n  offerId?: FieldPolicy<any> | FieldReadFunction<any>;\n  readOn?: FieldPolicy<any> | FieldReadFunction<any>;\n  user?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type OfferConnectionKeySpecifier = (\n  | 'edges'\n  | 'pageInfo'\n  | 'totalCount'\n  | OfferConnectionKeySpecifier\n)[];\nexport type OfferConnectionFieldPolicy = {\n  edges?: FieldPolicy<any> | FieldReadFunction<any>;\n  pageInfo?: FieldPolicy<any> | FieldReadFunction<any>;\n  totalCount?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type OfferEdgeKeySpecifier = ('cursor' | 'node' | OfferEdgeKeySpecifier)[];\nexport type OfferEdgeFieldPolicy = {\n  cursor?: FieldPolicy<any> | FieldReadFunction<any>;\n  node?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type OfferStatisticsKeySpecifier = ('consumedCapacity' | OfferStatisticsKeySpecifier)[];\nexport type OfferStatisticsFieldPolicy = {\n  consumedCapacity?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type OfferStepsKeySpecifier = (\n  | 'aprBpsStep'\n  | 'collectionId'\n  | 'id'\n  | 'origFeeBpsStep'\n  | 'usdcStep'\n  | 'wethStep'\n  | 'whypeStep'\n  | OfferStepsKeySpecifier\n)[];\nexport type OfferStepsFieldPolicy = {\n  aprBpsStep?: FieldPolicy<any> | FieldReadFunction<any>;\n  collectionId?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  origFeeBpsStep?: FieldPolicy<any> | FieldReadFunction<any>;\n  usdcStep?: FieldPolicy<any> | FieldReadFunction<any>;\n  wethStep?: FieldPolicy<any> | FieldReadFunction<any>;\n  whypeStep?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type OfferValidatorKeySpecifier = (\n  | 'arguments'\n  | 'id'\n  | 'offerId'\n  | 'validator'\n  | OfferValidatorKeySpecifier\n)[];\nexport type OfferValidatorFieldPolicy = {\n  arguments?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  offerId?: FieldPolicy<any> | FieldReadFunction<any>;\n  validator?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type OrderKeySpecifier = (\n  | 'cancelsOffChain'\n  | 'createdDate'\n  | 'currency'\n  | 'currencyAddress'\n  | 'evmOrder'\n  | 'executions'\n  | 'expiration'\n  | 'feeMetadata'\n  | 'fees'\n  | 'hidden'\n  | 'id'\n  | 'isAsk'\n  | 'isPrivate'\n  | 'maker'\n  | 'makerName'\n  | 'makerProfilePictureUrl'\n  | 'marketPlace'\n  | 'marketPlaceAddress'\n  | 'maxExecutions'\n  | 'netAmount'\n  | 'nonce'\n  | 'orderType'\n  | 'originalId'\n  | 'platformFees'\n  | 'price'\n  | 'signature'\n  | 'startTime'\n  | 'status'\n  | 'stealth'\n  | 'taker'\n  | 'takerName'\n  | 'takerProfilePictureUrl'\n  | 'timestamp'\n  | 'updatedDate'\n  | OrderKeySpecifier\n)[];\nexport type OrderFieldPolicy = {\n  cancelsOffChain?: FieldPolicy<any> | FieldReadFunction<any>;\n  createdDate?: FieldPolicy<any> | FieldReadFunction<any>;\n  currency?: FieldPolicy<any> | FieldReadFunction<any>;\n  currencyAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  evmOrder?: FieldPolicy<any> | FieldReadFunction<any>;\n  executions?: FieldPolicy<any> | FieldReadFunction<any>;\n  expiration?: FieldPolicy<any> | FieldReadFunction<any>;\n  feeMetadata?: FieldPolicy<any> | FieldReadFunction<any>;\n  fees?: FieldPolicy<any> | FieldReadFunction<any>;\n  hidden?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  isAsk?: FieldPolicy<any> | FieldReadFunction<any>;\n  isPrivate?: FieldPolicy<any> | FieldReadFunction<any>;\n  maker?: FieldPolicy<any> | FieldReadFunction<any>;\n  makerName?: FieldPolicy<any> | FieldReadFunction<any>;\n  makerProfilePictureUrl?: FieldPolicy<any> | FieldReadFunction<any>;\n  marketPlace?: FieldPolicy<any> | FieldReadFunction<any>;\n  marketPlaceAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  maxExecutions?: FieldPolicy<any> | FieldReadFunction<any>;\n  netAmount?: FieldPolicy<any> | FieldReadFunction<any>;\n  nonce?: FieldPolicy<any> | FieldReadFunction<any>;\n  orderType?: FieldPolicy<any> | FieldReadFunction<any>;\n  originalId?: FieldPolicy<any> | FieldReadFunction<any>;\n  platformFees?: FieldPolicy<any> | FieldReadFunction<any>;\n  price?: FieldPolicy<any> | FieldReadFunction<any>;\n  signature?: FieldPolicy<any> | FieldReadFunction<any>;\n  startTime?: FieldPolicy<any> | FieldReadFunction<any>;\n  status?: FieldPolicy<any> | FieldReadFunction<any>;\n  stealth?: FieldPolicy<any> | FieldReadFunction<any>;\n  taker?: FieldPolicy<any> | FieldReadFunction<any>;\n  takerName?: FieldPolicy<any> | FieldReadFunction<any>;\n  takerProfilePictureUrl?: FieldPolicy<any> | FieldReadFunction<any>;\n  timestamp?: FieldPolicy<any> | FieldReadFunction<any>;\n  updatedDate?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type OrderConnectionKeySpecifier = (\n  | 'edges'\n  | 'pageInfo'\n  | 'totalCount'\n  | OrderConnectionKeySpecifier\n)[];\nexport type OrderConnectionFieldPolicy = {\n  edges?: FieldPolicy<any> | FieldReadFunction<any>;\n  pageInfo?: FieldPolicy<any> | FieldReadFunction<any>;\n  totalCount?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type OrderEdgeKeySpecifier = ('cursor' | 'node' | OrderEdgeKeySpecifier)[];\nexport type OrderEdgeFieldPolicy = {\n  cursor?: FieldPolicy<any> | FieldReadFunction<any>;\n  node?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type OrderFeeMetadataKeySpecifier = (\n  | 'executionFee'\n  | 'executionFeeConcept'\n  | 'publicationFee'\n  | 'publicationFeeConcept'\n  | OrderFeeMetadataKeySpecifier\n)[];\nexport type OrderFeeMetadataFieldPolicy = {\n  executionFee?: FieldPolicy<any> | FieldReadFunction<any>;\n  executionFeeConcept?: FieldPolicy<any> | FieldReadFunction<any>;\n  publicationFee?: FieldPolicy<any> | FieldReadFunction<any>;\n  publicationFeeConcept?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type OutbidNotificationKeySpecifier = (\n  | 'auction'\n  | 'auctionId'\n  | 'createdOn'\n  | 'id'\n  | 'loan'\n  | 'loanId'\n  | 'newBid'\n  | 'newBidId'\n  | 'notificationType'\n  | 'readOn'\n  | 'user'\n  | 'userBid'\n  | 'userBidId'\n  | OutbidNotificationKeySpecifier\n)[];\nexport type OutbidNotificationFieldPolicy = {\n  auction?: FieldPolicy<any> | FieldReadFunction<any>;\n  auctionId?: FieldPolicy<any> | FieldReadFunction<any>;\n  createdOn?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  loan?: FieldPolicy<any> | FieldReadFunction<any>;\n  loanId?: FieldPolicy<any> | FieldReadFunction<any>;\n  newBid?: FieldPolicy<any> | FieldReadFunction<any>;\n  newBidId?: FieldPolicy<any> | FieldReadFunction<any>;\n  notificationType?: FieldPolicy<any> | FieldReadFunction<any>;\n  readOn?: FieldPolicy<any> | FieldReadFunction<any>;\n  user?: FieldPolicy<any> | FieldReadFunction<any>;\n  userBid?: FieldPolicy<any> | FieldReadFunction<any>;\n  userBidId?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type OutstandingLoanStatisticsKeySpecifier = (\n  | 'loansData'\n  | 'outstandingLoanCount'\n  | 'outstandingNftsCount'\n  | 'outstandingPrincipal'\n  | 'totalOutstandingPrincipal'\n  | OutstandingLoanStatisticsKeySpecifier\n)[];\nexport type OutstandingLoanStatisticsFieldPolicy = {\n  loansData?: FieldPolicy<any> | FieldReadFunction<any>;\n  outstandingLoanCount?: FieldPolicy<any> | FieldReadFunction<any>;\n  outstandingNftsCount?: FieldPolicy<any> | FieldReadFunction<any>;\n  outstandingPrincipal?: FieldPolicy<any> | FieldReadFunction<any>;\n  totalOutstandingPrincipal?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type PageInfoKeySpecifier = (\n  | 'endCursor'\n  | 'hasNextPage'\n  | 'hasPreviousPage'\n  | 'startCursor'\n  | PageInfoKeySpecifier\n)[];\nexport type PageInfoFieldPolicy = {\n  endCursor?: FieldPolicy<any> | FieldReadFunction<any>;\n  hasNextPage?: FieldPolicy<any> | FieldReadFunction<any>;\n  hasPreviousPage?: FieldPolicy<any> | FieldReadFunction<any>;\n  startCursor?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type PlatformFeeKeySpecifier = ('beneficiary' | 'bps' | PlatformFeeKeySpecifier)[];\nexport type PlatformFeeFieldPolicy = {\n  beneficiary?: FieldPolicy<any> | FieldReadFunction<any>;\n  bps?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type PointActivityKeySpecifier = (\n  | 'id'\n  | 'loanActivity'\n  | 'points'\n  | 'reason'\n  | 'timestamp'\n  | 'userId'\n  | PointActivityKeySpecifier\n)[];\nexport type PointActivityFieldPolicy = {\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  loanActivity?: FieldPolicy<any> | FieldReadFunction<any>;\n  points?: FieldPolicy<any> | FieldReadFunction<any>;\n  reason?: FieldPolicy<any> | FieldReadFunction<any>;\n  timestamp?: FieldPolicy<any> | FieldReadFunction<any>;\n  userId?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type PointActivityConnectionKeySpecifier = (\n  | 'edges'\n  | 'pageInfo'\n  | 'totalCount'\n  | PointActivityConnectionKeySpecifier\n)[];\nexport type PointActivityConnectionFieldPolicy = {\n  edges?: FieldPolicy<any> | FieldReadFunction<any>;\n  pageInfo?: FieldPolicy<any> | FieldReadFunction<any>;\n  totalCount?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type PointActivityEdgeKeySpecifier = ('cursor' | 'node' | PointActivityEdgeKeySpecifier)[];\nexport type PointActivityEdgeFieldPolicy = {\n  cursor?: FieldPolicy<any> | FieldReadFunction<any>;\n  node?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type PortfolioLeaderboardKeySpecifier = (\n  | 'asOf'\n  | 'endCursor'\n  | 'hasNextPage'\n  | 'rows'\n  | 'totalCount'\n  | 'viewerRank'\n  | PortfolioLeaderboardKeySpecifier\n)[];\nexport type PortfolioLeaderboardFieldPolicy = {\n  asOf?: FieldPolicy<any> | FieldReadFunction<any>;\n  endCursor?: FieldPolicy<any> | FieldReadFunction<any>;\n  hasNextPage?: FieldPolicy<any> | FieldReadFunction<any>;\n  rows?: FieldPolicy<any> | FieldReadFunction<any>;\n  totalCount?: FieldPolicy<any> | FieldReadFunction<any>;\n  viewerRank?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type PortfolioLeaderboardRowKeySpecifier = (\n  | 'collectionCount'\n  | 'name'\n  | 'profilePictureUrl'\n  | 'rank'\n  | 'unvaluedNfts'\n  | 'value'\n  | 'valuedNfts'\n  | 'walletAddress'\n  | 'walletCount'\n  | PortfolioLeaderboardRowKeySpecifier\n)[];\nexport type PortfolioLeaderboardRowFieldPolicy = {\n  collectionCount?: FieldPolicy<any> | FieldReadFunction<any>;\n  name?: FieldPolicy<any> | FieldReadFunction<any>;\n  profilePictureUrl?: FieldPolicy<any> | FieldReadFunction<any>;\n  rank?: FieldPolicy<any> | FieldReadFunction<any>;\n  unvaluedNfts?: FieldPolicy<any> | FieldReadFunction<any>;\n  value?: FieldPolicy<any> | FieldReadFunction<any>;\n  valuedNfts?: FieldPolicy<any> | FieldReadFunction<any>;\n  walletAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  walletCount?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type PortfolioValuationKeySpecifier = (\n  | 'collections'\n  | 'truncated'\n  | 'unvaluedNfts'\n  | 'value'\n  | 'valuedNfts'\n  | PortfolioValuationKeySpecifier\n)[];\nexport type PortfolioValuationFieldPolicy = {\n  collections?: FieldPolicy<any> | FieldReadFunction<any>;\n  truncated?: FieldPolicy<any> | FieldReadFunction<any>;\n  unvaluedNfts?: FieldPolicy<any> | FieldReadFunction<any>;\n  value?: FieldPolicy<any> | FieldReadFunction<any>;\n  valuedNfts?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type QueryKeySpecifier = (\n  | 'collectionMarketDepth'\n  | 'collectorsAlsoBought'\n  | 'dealReadiness'\n  | 'featuredListings'\n  | 'galleries'\n  | 'gallery'\n  | 'getAddressByName'\n  | 'getAddressByUsername'\n  | 'getArtist'\n  | 'getArtistBySlug'\n  | 'getBorrowingPower'\n  | 'getCancelAllNftOrdersCalldata'\n  | 'getCancelOrdersCalldata'\n  | 'getCollectionActivitiesCount'\n  | 'getCollectionBySlug'\n  | 'getCollectionHighestBidMatchingTraits'\n  | 'getCollectionLoansData'\n  | 'getCollectionOfferSteps'\n  | 'getCollectionsByContractAddress'\n  | 'getCurrency'\n  | 'getEditionBySlug'\n  | 'getFeedId'\n  | 'getFulfillManyOrdersCalldata'\n  | 'getLendingMarketPulse'\n  | 'getListingById'\n  | 'getLoanActivitiesStatisticsByMonth'\n  | 'getLoanById'\n  | 'getMarketOverview'\n  | 'getNftByContractAddressAndTokenId'\n  | 'getNftBySlugAndTokenId'\n  | 'getOrderCancelCalldata'\n  | 'getOrderSaleCalldata'\n  | 'getOutstandingDebt'\n  | 'getOutstandingLoanStatistics'\n  | 'getPointsFromReferrals'\n  | 'getPortfolioLeaderboard'\n  | 'getPortfolioValuation'\n  | 'getPurchaseBundlerFromOrder'\n  | 'getRealizedProfitsByDay'\n  | 'getReferredWallets'\n  | 'getSaleManyOrdersCalldata'\n  | 'getSellAndRepayOrderSwapCalldata'\n  | 'getSourcesStatistics'\n  | 'getSourcesStatisticsByCollection'\n  | 'getSwapQuote'\n  | 'getSwapRate'\n  | 'getTopLenders'\n  | 'getUserPointActivities'\n  | 'getUserPoints'\n  | 'getWalletFollowStats'\n  | 'getWalletHoldingsSummary'\n  | 'getWalletLendingSummary'\n  | 'getWalletTradingSummary'\n  | 'globalSearch'\n  | 'globalSearchV2'\n  | 'isUsernameAvailable'\n  | 'itemLoanOfferBook'\n  | 'listApprovalExposures'\n  | 'listArtistCatalog'\n  | 'listArtistFollows'\n  | 'listArtistHolderItems'\n  | 'listArtistHolderPopulation'\n  | 'listArtistHolders'\n  | 'listArtistHoldersV2'\n  | 'listArtists'\n  | 'listAuctions'\n  | 'listBids'\n  | 'listBlendLiens'\n  | 'listCollectionFollows'\n  | 'listCollectionHolders'\n  | 'listCollectionTraitFilterOptions'\n  | 'listCollectionTraitKeyOptions'\n  | 'listCollectionTraitTypes'\n  | 'listCollectionTraitValues'\n  | 'listCollections'\n  | 'listCollectionsWithListings'\n  | 'listCollectionsWithLoans'\n  | 'listCurrencies'\n  | 'listDeals'\n  | 'listEditionFollows'\n  | 'listEditions'\n  | 'listEditionsV2'\n  | 'listEvents'\n  | 'listListings'\n  | 'listListingsForSale'\n  | 'listLoanActivities'\n  | 'listLoanEvents'\n  | 'listLoans'\n  | 'listNames'\n  | 'listNftDelegations'\n  | 'listNftFollows'\n  | 'listNftOffersAndRenegotiations'\n  | 'listNftStrategyDeployments'\n  | 'listNfts'\n  | 'listNftsFromCollections'\n  | 'listNftsFromUser'\n  | 'listNotifications'\n  | 'listOffers'\n  | 'listOrders'\n  | 'listOrdersV2'\n  | 'listPlatformFees'\n  | 'listPopularSearches'\n  | 'listProfiles'\n  | 'listRenegotiations'\n  | 'listSales'\n  | 'listSources'\n  | 'listUsers'\n  | 'listWalletFollowers'\n  | 'listWalletFollowing'\n  | 'loanDealCollections'\n  | 'loanDeals'\n  | 'me'\n  | 'minimumOfferAmount'\n  | 'notificationPreferences'\n  | 'previewItemLoanOfferCompetition'\n  | 'previewRenegotiationCompetition'\n  | QueryKeySpecifier\n)[];\nexport type QueryFieldPolicy = {\n  collectionMarketDepth?: FieldPolicy<any> | FieldReadFunction<any>;\n  collectorsAlsoBought?: FieldPolicy<any> | FieldReadFunction<any>;\n  dealReadiness?: FieldPolicy<any> | FieldReadFunction<any>;\n  featuredListings?: FieldPolicy<any> | FieldReadFunction<any>;\n  galleries?: FieldPolicy<any> | FieldReadFunction<any>;\n  gallery?: FieldPolicy<any> | FieldReadFunction<any>;\n  getAddressByName?: FieldPolicy<any> | FieldReadFunction<any>;\n  getAddressByUsername?: FieldPolicy<any> | FieldReadFunction<any>;\n  getArtist?: FieldPolicy<any> | FieldReadFunction<any>;\n  getArtistBySlug?: FieldPolicy<any> | FieldReadFunction<any>;\n  getBorrowingPower?: FieldPolicy<any> | FieldReadFunction<any>;\n  getCancelAllNftOrdersCalldata?: FieldPolicy<any> | FieldReadFunction<any>;\n  getCancelOrdersCalldata?: FieldPolicy<any> | FieldReadFunction<any>;\n  getCollectionActivitiesCount?: FieldPolicy<any> | FieldReadFunction<any>;\n  getCollectionBySlug?: FieldPolicy<any> | FieldReadFunction<any>;\n  getCollectionHighestBidMatchingTraits?: FieldPolicy<any> | FieldReadFunction<any>;\n  getCollectionLoansData?: FieldPolicy<any> | FieldReadFunction<any>;\n  getCollectionOfferSteps?: FieldPolicy<any> | FieldReadFunction<any>;\n  getCollectionsByContractAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  getCurrency?: FieldPolicy<any> | FieldReadFunction<any>;\n  getEditionBySlug?: FieldPolicy<any> | FieldReadFunction<any>;\n  getFeedId?: FieldPolicy<any> | FieldReadFunction<any>;\n  getFulfillManyOrdersCalldata?: FieldPolicy<any> | FieldReadFunction<any>;\n  getLendingMarketPulse?: FieldPolicy<any> | FieldReadFunction<any>;\n  getListingById?: FieldPolicy<any> | FieldReadFunction<any>;\n  getLoanActivitiesStatisticsByMonth?: FieldPolicy<any> | FieldReadFunction<any>;\n  getLoanById?: FieldPolicy<any> | FieldReadFunction<any>;\n  getMarketOverview?: FieldPolicy<any> | FieldReadFunction<any>;\n  getNftByContractAddressAndTokenId?: FieldPolicy<any> | FieldReadFunction<any>;\n  getNftBySlugAndTokenId?: FieldPolicy<any> | FieldReadFunction<any>;\n  getOrderCancelCalldata?: FieldPolicy<any> | FieldReadFunction<any>;\n  getOrderSaleCalldata?: FieldPolicy<any> | FieldReadFunction<any>;\n  getOutstandingDebt?: FieldPolicy<any> | FieldReadFunction<any>;\n  getOutstandingLoanStatistics?: FieldPolicy<any> | FieldReadFunction<any>;\n  getPointsFromReferrals?: FieldPolicy<any> | FieldReadFunction<any>;\n  getPortfolioLeaderboard?: FieldPolicy<any> | FieldReadFunction<any>;\n  getPortfolioValuation?: FieldPolicy<any> | FieldReadFunction<any>;\n  getPurchaseBundlerFromOrder?: FieldPolicy<any> | FieldReadFunction<any>;\n  getRealizedProfitsByDay?: FieldPolicy<any> | FieldReadFunction<any>;\n  getReferredWallets?: FieldPolicy<any> | FieldReadFunction<any>;\n  getSaleManyOrdersCalldata?: FieldPolicy<any> | FieldReadFunction<any>;\n  getSellAndRepayOrderSwapCalldata?: FieldPolicy<any> | FieldReadFunction<any>;\n  getSourcesStatistics?: FieldPolicy<any> | FieldReadFunction<any>;\n  getSourcesStatisticsByCollection?: FieldPolicy<any> | FieldReadFunction<any>;\n  getSwapQuote?: FieldPolicy<any> | FieldReadFunction<any>;\n  getSwapRate?: FieldPolicy<any> | FieldReadFunction<any>;\n  getTopLenders?: FieldPolicy<any> | FieldReadFunction<any>;\n  getUserPointActivities?: FieldPolicy<any> | FieldReadFunction<any>;\n  getUserPoints?: FieldPolicy<any> | FieldReadFunction<any>;\n  getWalletFollowStats?: FieldPolicy<any> | FieldReadFunction<any>;\n  getWalletHoldingsSummary?: FieldPolicy<any> | FieldReadFunction<any>;\n  getWalletLendingSummary?: FieldPolicy<any> | FieldReadFunction<any>;\n  getWalletTradingSummary?: FieldPolicy<any> | FieldReadFunction<any>;\n  globalSearch?: FieldPolicy<any> | FieldReadFunction<any>;\n  globalSearchV2?: FieldPolicy<any> | FieldReadFunction<any>;\n  isUsernameAvailable?: FieldPolicy<any> | FieldReadFunction<any>;\n  itemLoanOfferBook?: FieldPolicy<any> | FieldReadFunction<any>;\n  listApprovalExposures?: FieldPolicy<any> | FieldReadFunction<any>;\n  listArtistCatalog?: FieldPolicy<any> | FieldReadFunction<any>;\n  listArtistFollows?: FieldPolicy<any> | FieldReadFunction<any>;\n  listArtistHolderItems?: FieldPolicy<any> | FieldReadFunction<any>;\n  listArtistHolderPopulation?: FieldPolicy<any> | FieldReadFunction<any>;\n  listArtistHolders?: FieldPolicy<any> | FieldReadFunction<any>;\n  listArtistHoldersV2?: FieldPolicy<any> | FieldReadFunction<any>;\n  listArtists?: FieldPolicy<any> | FieldReadFunction<any>;\n  listAuctions?: FieldPolicy<any> | FieldReadFunction<any>;\n  listBids?: FieldPolicy<any> | FieldReadFunction<any>;\n  listBlendLiens?: FieldPolicy<any> | FieldReadFunction<any>;\n  listCollectionFollows?: FieldPolicy<any> | FieldReadFunction<any>;\n  listCollectionHolders?: FieldPolicy<any> | FieldReadFunction<any>;\n  listCollectionTraitFilterOptions?: FieldPolicy<any> | FieldReadFunction<any>;\n  listCollectionTraitKeyOptions?: FieldPolicy<any> | FieldReadFunction<any>;\n  listCollectionTraitTypes?: FieldPolicy<any> | FieldReadFunction<any>;\n  listCollectionTraitValues?: FieldPolicy<any> | FieldReadFunction<any>;\n  listCollections?: FieldPolicy<any> | FieldReadFunction<any>;\n  listCollectionsWithListings?: FieldPolicy<any> | FieldReadFunction<any>;\n  listCollectionsWithLoans?: FieldPolicy<any> | FieldReadFunction<any>;\n  listCurrencies?: FieldPolicy<any> | FieldReadFunction<any>;\n  listDeals?: FieldPolicy<any> | FieldReadFunction<any>;\n  listEditionFollows?: FieldPolicy<any> | FieldReadFunction<any>;\n  listEditions?: FieldPolicy<any> | FieldReadFunction<any>;\n  listEditionsV2?: FieldPolicy<any> | FieldReadFunction<any>;\n  listEvents?: FieldPolicy<any> | FieldReadFunction<any>;\n  listListings?: FieldPolicy<any> | FieldReadFunction<any>;\n  listListingsForSale?: FieldPolicy<any> | FieldReadFunction<any>;\n  listLoanActivities?: FieldPolicy<any> | FieldReadFunction<any>;\n  listLoanEvents?: FieldPolicy<any> | FieldReadFunction<any>;\n  listLoans?: FieldPolicy<any> | FieldReadFunction<any>;\n  listNames?: FieldPolicy<any> | FieldReadFunction<any>;\n  listNftDelegations?: FieldPolicy<any> | FieldReadFunction<any>;\n  listNftFollows?: FieldPolicy<any> | FieldReadFunction<any>;\n  listNftOffersAndRenegotiations?: FieldPolicy<any> | FieldReadFunction<any>;\n  listNftStrategyDeployments?: FieldPolicy<any> | FieldReadFunction<any>;\n  listNfts?: FieldPolicy<any> | FieldReadFunction<any>;\n  listNftsFromCollections?: FieldPolicy<any> | FieldReadFunction<any>;\n  listNftsFromUser?: FieldPolicy<any> | FieldReadFunction<any>;\n  listNotifications?: FieldPolicy<any> | FieldReadFunction<any>;\n  listOffers?: FieldPolicy<any> | FieldReadFunction<any>;\n  listOrders?: FieldPolicy<any> | FieldReadFunction<any>;\n  listOrdersV2?: FieldPolicy<any> | FieldReadFunction<any>;\n  listPlatformFees?: FieldPolicy<any> | FieldReadFunction<any>;\n  listPopularSearches?: FieldPolicy<any> | FieldReadFunction<any>;\n  listProfiles?: FieldPolicy<any> | FieldReadFunction<any>;\n  listRenegotiations?: FieldPolicy<any> | FieldReadFunction<any>;\n  listSales?: FieldPolicy<any> | FieldReadFunction<any>;\n  listSources?: FieldPolicy<any> | FieldReadFunction<any>;\n  listUsers?: FieldPolicy<any> | FieldReadFunction<any>;\n  listWalletFollowers?: FieldPolicy<any> | FieldReadFunction<any>;\n  listWalletFollowing?: FieldPolicy<any> | FieldReadFunction<any>;\n  loanDealCollections?: FieldPolicy<any> | FieldReadFunction<any>;\n  loanDeals?: FieldPolicy<any> | FieldReadFunction<any>;\n  me?: FieldPolicy<any> | FieldReadFunction<any>;\n  minimumOfferAmount?: FieldPolicy<any> | FieldReadFunction<any>;\n  notificationPreferences?: FieldPolicy<any> | FieldReadFunction<any>;\n  previewItemLoanOfferCompetition?: FieldPolicy<any> | FieldReadFunction<any>;\n  previewRenegotiationCompetition?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type RealizedProfitDayKeySpecifier = (\n  | 'currencyAddress'\n  | 'day'\n  | 'netProfit'\n  | 'profit'\n  | RealizedProfitDayKeySpecifier\n)[];\nexport type RealizedProfitDayFieldPolicy = {\n  currencyAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  day?: FieldPolicy<any> | FieldReadFunction<any>;\n  netProfit?: FieldPolicy<any> | FieldReadFunction<any>;\n  profit?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type RenegotiationKeySpecifier = (\n  | 'aprBps'\n  | 'availablePrincipalAmount'\n  | 'createdDate'\n  | 'duration'\n  | 'expirationTime'\n  | 'fallbackOfferId'\n  | 'feeAmount'\n  | 'hidden'\n  | 'id'\n  | 'isAddNewTranche'\n  | 'lenderAddress'\n  | 'lenderName'\n  | 'lenderProfilePictureUrl'\n  | 'loan'\n  | 'loanAddress'\n  | 'loanId'\n  | 'loanReferenceId'\n  | 'nft'\n  | 'offerHash'\n  | 'principalAmount'\n  | 'private'\n  | 'renegotiationId'\n  | 'repayment'\n  | 'requiresLiquidation'\n  | 'signature'\n  | 'signerAddress'\n  | 'status'\n  | 'strictImprovement'\n  | 'timestamp'\n  | RenegotiationKeySpecifier\n)[];\nexport type RenegotiationFieldPolicy = {\n  aprBps?: FieldPolicy<any> | FieldReadFunction<any>;\n  availablePrincipalAmount?: FieldPolicy<any> | FieldReadFunction<any>;\n  createdDate?: FieldPolicy<any> | FieldReadFunction<any>;\n  duration?: FieldPolicy<any> | FieldReadFunction<any>;\n  expirationTime?: FieldPolicy<any> | FieldReadFunction<any>;\n  fallbackOfferId?: FieldPolicy<any> | FieldReadFunction<any>;\n  feeAmount?: FieldPolicy<any> | FieldReadFunction<any>;\n  hidden?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  isAddNewTranche?: FieldPolicy<any> | FieldReadFunction<any>;\n  lenderAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  lenderName?: FieldPolicy<any> | FieldReadFunction<any>;\n  lenderProfilePictureUrl?: FieldPolicy<any> | FieldReadFunction<any>;\n  loan?: FieldPolicy<any> | FieldReadFunction<any>;\n  loanAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  loanId?: FieldPolicy<any> | FieldReadFunction<any>;\n  loanReferenceId?: FieldPolicy<any> | FieldReadFunction<any>;\n  nft?: FieldPolicy<any> | FieldReadFunction<any>;\n  offerHash?: FieldPolicy<any> | FieldReadFunction<any>;\n  principalAmount?: FieldPolicy<any> | FieldReadFunction<any>;\n  private?: FieldPolicy<any> | FieldReadFunction<any>;\n  renegotiationId?: FieldPolicy<any> | FieldReadFunction<any>;\n  repayment?: FieldPolicy<any> | FieldReadFunction<any>;\n  requiresLiquidation?: FieldPolicy<any> | FieldReadFunction<any>;\n  signature?: FieldPolicy<any> | FieldReadFunction<any>;\n  signerAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  status?: FieldPolicy<any> | FieldReadFunction<any>;\n  strictImprovement?: FieldPolicy<any> | FieldReadFunction<any>;\n  timestamp?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type RenegotiationConnectionKeySpecifier = (\n  | 'edges'\n  | 'pageInfo'\n  | 'totalCount'\n  | RenegotiationConnectionKeySpecifier\n)[];\nexport type RenegotiationConnectionFieldPolicy = {\n  edges?: FieldPolicy<any> | FieldReadFunction<any>;\n  pageInfo?: FieldPolicy<any> | FieldReadFunction<any>;\n  totalCount?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type RenegotiationEdgeKeySpecifier = ('cursor' | 'node' | RenegotiationEdgeKeySpecifier)[];\nexport type RenegotiationEdgeFieldPolicy = {\n  cursor?: FieldPolicy<any> | FieldReadFunction<any>;\n  node?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type RenegotiationRequestKeySpecifier = (\n  | 'createdDate'\n  | 'desiredAprBps'\n  | 'desiredDuration'\n  | 'desiredPrincipalAmount'\n  | 'expirationDate'\n  | 'id'\n  | 'loanId'\n  | RenegotiationRequestKeySpecifier\n)[];\nexport type RenegotiationRequestFieldPolicy = {\n  createdDate?: FieldPolicy<any> | FieldReadFunction<any>;\n  desiredAprBps?: FieldPolicy<any> | FieldReadFunction<any>;\n  desiredDuration?: FieldPolicy<any> | FieldReadFunction<any>;\n  desiredPrincipalAmount?: FieldPolicy<any> | FieldReadFunction<any>;\n  expirationDate?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  loanId?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type RenegotiationRequestedNotificationKeySpecifier = (\n  | 'aprBps'\n  | 'createdOn'\n  | 'duration'\n  | 'id'\n  | 'loan'\n  | 'loanId'\n  | 'notificationType'\n  | 'principalAmount'\n  | 'readOn'\n  | 'user'\n  | RenegotiationRequestedNotificationKeySpecifier\n)[];\nexport type RenegotiationRequestedNotificationFieldPolicy = {\n  aprBps?: FieldPolicy<any> | FieldReadFunction<any>;\n  createdOn?: FieldPolicy<any> | FieldReadFunction<any>;\n  duration?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  loan?: FieldPolicy<any> | FieldReadFunction<any>;\n  loanId?: FieldPolicy<any> | FieldReadFunction<any>;\n  notificationType?: FieldPolicy<any> | FieldReadFunction<any>;\n  principalAmount?: FieldPolicy<any> | FieldReadFunction<any>;\n  readOn?: FieldPolicy<any> | FieldReadFunction<any>;\n  user?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type RoyaltyKeySpecifier = (\n  | 'beneficiary'\n  | 'id'\n  | 'percentage'\n  | 'required'\n  | RoyaltyKeySpecifier\n)[];\nexport type RoyaltyFieldPolicy = {\n  beneficiary?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  percentage?: FieldPolicy<any> | FieldReadFunction<any>;\n  required?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type SaleKeySpecifier = (\n  | 'currencyAddress'\n  | 'forwardTransfers'\n  | 'id'\n  | 'marketPlace'\n  | 'marketPlaceAddress'\n  | 'nft'\n  | 'order'\n  | 'orderId'\n  | 'originatedFromAsk'\n  | 'price'\n  | 'receiver'\n  | 'receiverName'\n  | 'receiverProfilePictureUrl'\n  | 'sender'\n  | 'senderName'\n  | 'senderProfilePictureUrl'\n  | 'settlementTransfers'\n  | 'taker'\n  | 'timestamp'\n  | 'txHash'\n  | SaleKeySpecifier\n)[];\nexport type SaleFieldPolicy = {\n  currencyAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  forwardTransfers?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  marketPlace?: FieldPolicy<any> | FieldReadFunction<any>;\n  marketPlaceAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  nft?: FieldPolicy<any> | FieldReadFunction<any>;\n  order?: FieldPolicy<any> | FieldReadFunction<any>;\n  orderId?: FieldPolicy<any> | FieldReadFunction<any>;\n  originatedFromAsk?: FieldPolicy<any> | FieldReadFunction<any>;\n  price?: FieldPolicy<any> | FieldReadFunction<any>;\n  receiver?: FieldPolicy<any> | FieldReadFunction<any>;\n  receiverName?: FieldPolicy<any> | FieldReadFunction<any>;\n  receiverProfilePictureUrl?: FieldPolicy<any> | FieldReadFunction<any>;\n  sender?: FieldPolicy<any> | FieldReadFunction<any>;\n  senderName?: FieldPolicy<any> | FieldReadFunction<any>;\n  senderProfilePictureUrl?: FieldPolicy<any> | FieldReadFunction<any>;\n  settlementTransfers?: FieldPolicy<any> | FieldReadFunction<any>;\n  taker?: FieldPolicy<any> | FieldReadFunction<any>;\n  timestamp?: FieldPolicy<any> | FieldReadFunction<any>;\n  txHash?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type SaleConnectionKeySpecifier = (\n  | 'edges'\n  | 'pageInfo'\n  | 'totalCount'\n  | SaleConnectionKeySpecifier\n)[];\nexport type SaleConnectionFieldPolicy = {\n  edges?: FieldPolicy<any> | FieldReadFunction<any>;\n  pageInfo?: FieldPolicy<any> | FieldReadFunction<any>;\n  totalCount?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type SaleEdgeKeySpecifier = ('cursor' | 'node' | SaleEdgeKeySpecifier)[];\nexport type SaleEdgeFieldPolicy = {\n  cursor?: FieldPolicy<any> | FieldReadFunction<any>;\n  node?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type SaleHistoryItemKeySpecifier = (\n  | 'currency'\n  | 'nftId'\n  | 'timestamp'\n  | 'value'\n  | SaleHistoryItemKeySpecifier\n)[];\nexport type SaleHistoryItemFieldPolicy = {\n  currency?: FieldPolicy<any> | FieldReadFunction<any>;\n  nftId?: FieldPolicy<any> | FieldReadFunction<any>;\n  timestamp?: FieldPolicy<any> | FieldReadFunction<any>;\n  value?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type SaleListingUpdateKeySpecifier = (\n  | 'changedAt'\n  | 'collectionId'\n  | 'nft'\n  | 'nftId'\n  | SaleListingUpdateKeySpecifier\n)[];\nexport type SaleListingUpdateFieldPolicy = {\n  changedAt?: FieldPolicy<any> | FieldReadFunction<any>;\n  collectionId?: FieldPolicy<any> | FieldReadFunction<any>;\n  nft?: FieldPolicy<any> | FieldReadFunction<any>;\n  nftId?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type SearchERC20BalanceKeySpecifier = (\n  | 'address'\n  | 'amount'\n  | SearchERC20BalanceKeySpecifier\n)[];\nexport type SearchERC20BalanceFieldPolicy = {\n  address?: FieldPolicy<any> | FieldReadFunction<any>;\n  amount?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type SellAndRepayOrderKeySpecifier = (\n  | 'cancelsOffChain'\n  | 'createdDate'\n  | 'currency'\n  | 'currencyAddress'\n  | 'evmOrder'\n  | 'executions'\n  | 'expiration'\n  | 'feeMetadata'\n  | 'fees'\n  | 'hidden'\n  | 'id'\n  | 'isAsk'\n  | 'isPrivate'\n  | 'loan'\n  | 'loanDealOffer'\n  | 'loanId'\n  | 'maker'\n  | 'makerName'\n  | 'makerProfilePictureUrl'\n  | 'marketPlace'\n  | 'marketPlaceAddress'\n  | 'maxExecutions'\n  | 'netAmount'\n  | 'nft'\n  | 'nftId'\n  | 'nonce'\n  | 'orderType'\n  | 'originalId'\n  | 'platformFees'\n  | 'price'\n  | 'repaymentCalldata'\n  | 'signature'\n  | 'startTime'\n  | 'status'\n  | 'stealth'\n  | 'taker'\n  | 'takerName'\n  | 'takerProfilePictureUrl'\n  | 'timestamp'\n  | 'updatedDate'\n  | SellAndRepayOrderKeySpecifier\n)[];\nexport type SellAndRepayOrderFieldPolicy = {\n  cancelsOffChain?: FieldPolicy<any> | FieldReadFunction<any>;\n  createdDate?: FieldPolicy<any> | FieldReadFunction<any>;\n  currency?: FieldPolicy<any> | FieldReadFunction<any>;\n  currencyAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  evmOrder?: FieldPolicy<any> | FieldReadFunction<any>;\n  executions?: FieldPolicy<any> | FieldReadFunction<any>;\n  expiration?: FieldPolicy<any> | FieldReadFunction<any>;\n  feeMetadata?: FieldPolicy<any> | FieldReadFunction<any>;\n  fees?: FieldPolicy<any> | FieldReadFunction<any>;\n  hidden?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  isAsk?: FieldPolicy<any> | FieldReadFunction<any>;\n  isPrivate?: FieldPolicy<any> | FieldReadFunction<any>;\n  loan?: FieldPolicy<any> | FieldReadFunction<any>;\n  loanDealOffer?: FieldPolicy<any> | FieldReadFunction<any>;\n  loanId?: FieldPolicy<any> | FieldReadFunction<any>;\n  maker?: FieldPolicy<any> | FieldReadFunction<any>;\n  makerName?: FieldPolicy<any> | FieldReadFunction<any>;\n  makerProfilePictureUrl?: FieldPolicy<any> | FieldReadFunction<any>;\n  marketPlace?: FieldPolicy<any> | FieldReadFunction<any>;\n  marketPlaceAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  maxExecutions?: FieldPolicy<any> | FieldReadFunction<any>;\n  netAmount?: FieldPolicy<any> | FieldReadFunction<any>;\n  nft?: FieldPolicy<any> | FieldReadFunction<any>;\n  nftId?: FieldPolicy<any> | FieldReadFunction<any>;\n  nonce?: FieldPolicy<any> | FieldReadFunction<any>;\n  orderType?: FieldPolicy<any> | FieldReadFunction<any>;\n  originalId?: FieldPolicy<any> | FieldReadFunction<any>;\n  platformFees?: FieldPolicy<any> | FieldReadFunction<any>;\n  price?: FieldPolicy<any> | FieldReadFunction<any>;\n  repaymentCalldata?: FieldPolicy<any> | FieldReadFunction<any>;\n  signature?: FieldPolicy<any> | FieldReadFunction<any>;\n  startTime?: FieldPolicy<any> | FieldReadFunction<any>;\n  status?: FieldPolicy<any> | FieldReadFunction<any>;\n  stealth?: FieldPolicy<any> | FieldReadFunction<any>;\n  taker?: FieldPolicy<any> | FieldReadFunction<any>;\n  takerName?: FieldPolicy<any> | FieldReadFunction<any>;\n  takerProfilePictureUrl?: FieldPolicy<any> | FieldReadFunction<any>;\n  timestamp?: FieldPolicy<any> | FieldReadFunction<any>;\n  updatedDate?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type SetBidOrderKeySpecifier = (\n  | 'cancelsOffChain'\n  | 'collectionId'\n  | 'createdDate'\n  | 'currency'\n  | 'currencyAddress'\n  | 'eligibleTokenCount'\n  | 'evmOrder'\n  | 'executions'\n  | 'expiration'\n  | 'feeMetadata'\n  | 'fees'\n  | 'hidden'\n  | 'id'\n  | 'isAsk'\n  | 'isPrivate'\n  | 'label'\n  | 'maker'\n  | 'makerName'\n  | 'makerProfilePictureUrl'\n  | 'marketPlace'\n  | 'marketPlaceAddress'\n  | 'maxExecutions'\n  | 'netAmount'\n  | 'nonce'\n  | 'orderType'\n  | 'originalId'\n  | 'platformFees'\n  | 'previewNfts'\n  | 'price'\n  | 'signature'\n  | 'startTime'\n  | 'status'\n  | 'stealth'\n  | 'taker'\n  | 'takerName'\n  | 'takerProfilePictureUrl'\n  | 'timestamp'\n  | 'updatedDate'\n  | SetBidOrderKeySpecifier\n)[];\nexport type SetBidOrderFieldPolicy = {\n  cancelsOffChain?: FieldPolicy<any> | FieldReadFunction<any>;\n  collectionId?: FieldPolicy<any> | FieldReadFunction<any>;\n  createdDate?: FieldPolicy<any> | FieldReadFunction<any>;\n  currency?: FieldPolicy<any> | FieldReadFunction<any>;\n  currencyAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  eligibleTokenCount?: FieldPolicy<any> | FieldReadFunction<any>;\n  evmOrder?: FieldPolicy<any> | FieldReadFunction<any>;\n  executions?: FieldPolicy<any> | FieldReadFunction<any>;\n  expiration?: FieldPolicy<any> | FieldReadFunction<any>;\n  feeMetadata?: FieldPolicy<any> | FieldReadFunction<any>;\n  fees?: FieldPolicy<any> | FieldReadFunction<any>;\n  hidden?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  isAsk?: FieldPolicy<any> | FieldReadFunction<any>;\n  isPrivate?: FieldPolicy<any> | FieldReadFunction<any>;\n  label?: FieldPolicy<any> | FieldReadFunction<any>;\n  maker?: FieldPolicy<any> | FieldReadFunction<any>;\n  makerName?: FieldPolicy<any> | FieldReadFunction<any>;\n  makerProfilePictureUrl?: FieldPolicy<any> | FieldReadFunction<any>;\n  marketPlace?: FieldPolicy<any> | FieldReadFunction<any>;\n  marketPlaceAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  maxExecutions?: FieldPolicy<any> | FieldReadFunction<any>;\n  netAmount?: FieldPolicy<any> | FieldReadFunction<any>;\n  nonce?: FieldPolicy<any> | FieldReadFunction<any>;\n  orderType?: FieldPolicy<any> | FieldReadFunction<any>;\n  originalId?: FieldPolicy<any> | FieldReadFunction<any>;\n  platformFees?: FieldPolicy<any> | FieldReadFunction<any>;\n  previewNfts?: FieldPolicy<any> | FieldReadFunction<any>;\n  price?: FieldPolicy<any> | FieldReadFunction<any>;\n  signature?: FieldPolicy<any> | FieldReadFunction<any>;\n  startTime?: FieldPolicy<any> | FieldReadFunction<any>;\n  status?: FieldPolicy<any> | FieldReadFunction<any>;\n  stealth?: FieldPolicy<any> | FieldReadFunction<any>;\n  taker?: FieldPolicy<any> | FieldReadFunction<any>;\n  takerName?: FieldPolicy<any> | FieldReadFunction<any>;\n  takerProfilePictureUrl?: FieldPolicy<any> | FieldReadFunction<any>;\n  timestamp?: FieldPolicy<any> | FieldReadFunction<any>;\n  updatedDate?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type SetOfferKeySpecifier = (\n  | 'aprBps'\n  | 'availablePrincipalAmount'\n  | 'borrowerAddress'\n  | 'borrowerName'\n  | 'borrowerProfilePictureUrl'\n  | 'capacity'\n  | 'collateralAddress'\n  | 'collection'\n  | 'collectionId'\n  | 'consumedCapacity'\n  | 'contractAddress'\n  | 'createdDate'\n  | 'currency'\n  | 'duration'\n  | 'expirationTime'\n  | 'fee'\n  | 'hidden'\n  | 'id'\n  | 'lenderAddress'\n  | 'lenderAllowance'\n  | 'lenderAvailableBalance'\n  | 'lenderName'\n  | 'lenderProfilePictureUrl'\n  | 'lenderRefinanceDisabled'\n  | 'maxPrincipal'\n  | 'maxSeniorRepayment'\n  | 'maxTrancheFloor'\n  | 'netPrincipal'\n  | 'nftId'\n  | 'offerHash'\n  | 'offerId'\n  | 'principalAddress'\n  | 'principalAmount'\n  | 'repayment'\n  | 'requiresLiquidation'\n  | 'signature'\n  | 'signerAddress'\n  | 'status'\n  | 'timestamp'\n  | 'validators'\n  | SetOfferKeySpecifier\n)[];\nexport type SetOfferFieldPolicy = {\n  aprBps?: FieldPolicy<any> | FieldReadFunction<any>;\n  availablePrincipalAmount?: FieldPolicy<any> | FieldReadFunction<any>;\n  borrowerAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  borrowerName?: FieldPolicy<any> | FieldReadFunction<any>;\n  borrowerProfilePictureUrl?: FieldPolicy<any> | FieldReadFunction<any>;\n  capacity?: FieldPolicy<any> | FieldReadFunction<any>;\n  collateralAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  collection?: FieldPolicy<any> | FieldReadFunction<any>;\n  collectionId?: FieldPolicy<any> | FieldReadFunction<any>;\n  consumedCapacity?: FieldPolicy<any> | FieldReadFunction<any>;\n  contractAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  createdDate?: FieldPolicy<any> | FieldReadFunction<any>;\n  currency?: FieldPolicy<any> | FieldReadFunction<any>;\n  duration?: FieldPolicy<any> | FieldReadFunction<any>;\n  expirationTime?: FieldPolicy<any> | FieldReadFunction<any>;\n  fee?: FieldPolicy<any> | FieldReadFunction<any>;\n  hidden?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  lenderAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  lenderAllowance?: FieldPolicy<any> | FieldReadFunction<any>;\n  lenderAvailableBalance?: FieldPolicy<any> | FieldReadFunction<any>;\n  lenderName?: FieldPolicy<any> | FieldReadFunction<any>;\n  lenderProfilePictureUrl?: FieldPolicy<any> | FieldReadFunction<any>;\n  lenderRefinanceDisabled?: FieldPolicy<any> | FieldReadFunction<any>;\n  maxPrincipal?: FieldPolicy<any> | FieldReadFunction<any>;\n  maxSeniorRepayment?: FieldPolicy<any> | FieldReadFunction<any>;\n  maxTrancheFloor?: FieldPolicy<any> | FieldReadFunction<any>;\n  netPrincipal?: FieldPolicy<any> | FieldReadFunction<any>;\n  nftId?: FieldPolicy<any> | FieldReadFunction<any>;\n  offerHash?: FieldPolicy<any> | FieldReadFunction<any>;\n  offerId?: FieldPolicy<any> | FieldReadFunction<any>;\n  principalAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  principalAmount?: FieldPolicy<any> | FieldReadFunction<any>;\n  repayment?: FieldPolicy<any> | FieldReadFunction<any>;\n  requiresLiquidation?: FieldPolicy<any> | FieldReadFunction<any>;\n  signature?: FieldPolicy<any> | FieldReadFunction<any>;\n  signerAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  status?: FieldPolicy<any> | FieldReadFunction<any>;\n  timestamp?: FieldPolicy<any> | FieldReadFunction<any>;\n  validators?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type SignatureRequestKeySpecifier = ('key' | 'typedData' | SignatureRequestKeySpecifier)[];\nexport type SignatureRequestFieldPolicy = {\n  key?: FieldPolicy<any> | FieldReadFunction<any>;\n  typedData?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type SingleNFTOfferKeySpecifier = (\n  | 'aprBps'\n  | 'availablePrincipalAmount'\n  | 'borrowerAddress'\n  | 'borrowerName'\n  | 'borrowerProfilePictureUrl'\n  | 'capacity'\n  | 'collateralAddress'\n  | 'collectionId'\n  | 'consumedCapacity'\n  | 'contractAddress'\n  | 'createdDate'\n  | 'currency'\n  | 'duration'\n  | 'expirationTime'\n  | 'fee'\n  | 'hidden'\n  | 'id'\n  | 'lenderAddress'\n  | 'lenderAllowance'\n  | 'lenderAvailableBalance'\n  | 'lenderName'\n  | 'lenderProfilePictureUrl'\n  | 'lenderRefinanceDisabled'\n  | 'maxPrincipal'\n  | 'maxSeniorRepayment'\n  | 'maxTrancheFloor'\n  | 'netPrincipal'\n  | 'nft'\n  | 'nftId'\n  | 'offerHash'\n  | 'offerId'\n  | 'principalAddress'\n  | 'principalAmount'\n  | 'repayment'\n  | 'requiresLiquidation'\n  | 'signature'\n  | 'signerAddress'\n  | 'statistics'\n  | 'status'\n  | 'timestamp'\n  | 'validators'\n  | SingleNFTOfferKeySpecifier\n)[];\nexport type SingleNFTOfferFieldPolicy = {\n  aprBps?: FieldPolicy<any> | FieldReadFunction<any>;\n  availablePrincipalAmount?: FieldPolicy<any> | FieldReadFunction<any>;\n  borrowerAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  borrowerName?: FieldPolicy<any> | FieldReadFunction<any>;\n  borrowerProfilePictureUrl?: FieldPolicy<any> | FieldReadFunction<any>;\n  capacity?: FieldPolicy<any> | FieldReadFunction<any>;\n  collateralAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  collectionId?: FieldPolicy<any> | FieldReadFunction<any>;\n  consumedCapacity?: FieldPolicy<any> | FieldReadFunction<any>;\n  contractAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  createdDate?: FieldPolicy<any> | FieldReadFunction<any>;\n  currency?: FieldPolicy<any> | FieldReadFunction<any>;\n  duration?: FieldPolicy<any> | FieldReadFunction<any>;\n  expirationTime?: FieldPolicy<any> | FieldReadFunction<any>;\n  fee?: FieldPolicy<any> | FieldReadFunction<any>;\n  hidden?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  lenderAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  lenderAllowance?: FieldPolicy<any> | FieldReadFunction<any>;\n  lenderAvailableBalance?: FieldPolicy<any> | FieldReadFunction<any>;\n  lenderName?: FieldPolicy<any> | FieldReadFunction<any>;\n  lenderProfilePictureUrl?: FieldPolicy<any> | FieldReadFunction<any>;\n  lenderRefinanceDisabled?: FieldPolicy<any> | FieldReadFunction<any>;\n  maxPrincipal?: FieldPolicy<any> | FieldReadFunction<any>;\n  maxSeniorRepayment?: FieldPolicy<any> | FieldReadFunction<any>;\n  maxTrancheFloor?: FieldPolicy<any> | FieldReadFunction<any>;\n  netPrincipal?: FieldPolicy<any> | FieldReadFunction<any>;\n  nft?: FieldPolicy<any> | FieldReadFunction<any>;\n  nftId?: FieldPolicy<any> | FieldReadFunction<any>;\n  offerHash?: FieldPolicy<any> | FieldReadFunction<any>;\n  offerId?: FieldPolicy<any> | FieldReadFunction<any>;\n  principalAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  principalAmount?: FieldPolicy<any> | FieldReadFunction<any>;\n  repayment?: FieldPolicy<any> | FieldReadFunction<any>;\n  requiresLiquidation?: FieldPolicy<any> | FieldReadFunction<any>;\n  signature?: FieldPolicy<any> | FieldReadFunction<any>;\n  signerAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  statistics?: FieldPolicy<any> | FieldReadFunction<any>;\n  status?: FieldPolicy<any> | FieldReadFunction<any>;\n  timestamp?: FieldPolicy<any> | FieldReadFunction<any>;\n  validators?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type SingleNFTOfferCollectionOfferSetOfferTraitOfferRenegotiationConnectionKeySpecifier = (\n  | 'edges'\n  | 'pageInfo'\n  | 'totalCount'\n  | SingleNFTOfferCollectionOfferSetOfferTraitOfferRenegotiationConnectionKeySpecifier\n)[];\nexport type SingleNFTOfferCollectionOfferSetOfferTraitOfferRenegotiationConnectionFieldPolicy = {\n  edges?: FieldPolicy<any> | FieldReadFunction<any>;\n  pageInfo?: FieldPolicy<any> | FieldReadFunction<any>;\n  totalCount?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type SingleNFTOfferCollectionOfferSetOfferTraitOfferRenegotiationEdgeKeySpecifier = (\n  | 'cursor'\n  | 'node'\n  | SingleNFTOfferCollectionOfferSetOfferTraitOfferRenegotiationEdgeKeySpecifier\n)[];\nexport type SingleNFTOfferCollectionOfferSetOfferTraitOfferRenegotiationEdgeFieldPolicy = {\n  cursor?: FieldPolicy<any> | FieldReadFunction<any>;\n  node?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type SingleNFTOrderKeySpecifier = (\n  | 'cancelsOffChain'\n  | 'createdDate'\n  | 'currency'\n  | 'currencyAddress'\n  | 'evmOrder'\n  | 'executions'\n  | 'expiration'\n  | 'feeMetadata'\n  | 'fees'\n  | 'hidden'\n  | 'id'\n  | 'isAsk'\n  | 'isPrivate'\n  | 'loanDealOffer'\n  | 'maker'\n  | 'makerName'\n  | 'makerProfilePictureUrl'\n  | 'marketPlace'\n  | 'marketPlaceAddress'\n  | 'maxExecutions'\n  | 'netAmount'\n  | 'nft'\n  | 'nftId'\n  | 'nonce'\n  | 'orderType'\n  | 'originalId'\n  | 'platformFees'\n  | 'price'\n  | 'signature'\n  | 'startTime'\n  | 'status'\n  | 'stealth'\n  | 'taker'\n  | 'takerName'\n  | 'takerProfilePictureUrl'\n  | 'timestamp'\n  | 'updatedDate'\n  | SingleNFTOrderKeySpecifier\n)[];\nexport type SingleNFTOrderFieldPolicy = {\n  cancelsOffChain?: FieldPolicy<any> | FieldReadFunction<any>;\n  createdDate?: FieldPolicy<any> | FieldReadFunction<any>;\n  currency?: FieldPolicy<any> | FieldReadFunction<any>;\n  currencyAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  evmOrder?: FieldPolicy<any> | FieldReadFunction<any>;\n  executions?: FieldPolicy<any> | FieldReadFunction<any>;\n  expiration?: FieldPolicy<any> | FieldReadFunction<any>;\n  feeMetadata?: FieldPolicy<any> | FieldReadFunction<any>;\n  fees?: FieldPolicy<any> | FieldReadFunction<any>;\n  hidden?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  isAsk?: FieldPolicy<any> | FieldReadFunction<any>;\n  isPrivate?: FieldPolicy<any> | FieldReadFunction<any>;\n  loanDealOffer?: FieldPolicy<any> | FieldReadFunction<any>;\n  maker?: FieldPolicy<any> | FieldReadFunction<any>;\n  makerName?: FieldPolicy<any> | FieldReadFunction<any>;\n  makerProfilePictureUrl?: FieldPolicy<any> | FieldReadFunction<any>;\n  marketPlace?: FieldPolicy<any> | FieldReadFunction<any>;\n  marketPlaceAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  maxExecutions?: FieldPolicy<any> | FieldReadFunction<any>;\n  netAmount?: FieldPolicy<any> | FieldReadFunction<any>;\n  nft?: FieldPolicy<any> | FieldReadFunction<any>;\n  nftId?: FieldPolicy<any> | FieldReadFunction<any>;\n  nonce?: FieldPolicy<any> | FieldReadFunction<any>;\n  orderType?: FieldPolicy<any> | FieldReadFunction<any>;\n  originalId?: FieldPolicy<any> | FieldReadFunction<any>;\n  platformFees?: FieldPolicy<any> | FieldReadFunction<any>;\n  price?: FieldPolicy<any> | FieldReadFunction<any>;\n  signature?: FieldPolicy<any> | FieldReadFunction<any>;\n  startTime?: FieldPolicy<any> | FieldReadFunction<any>;\n  status?: FieldPolicy<any> | FieldReadFunction<any>;\n  stealth?: FieldPolicy<any> | FieldReadFunction<any>;\n  taker?: FieldPolicy<any> | FieldReadFunction<any>;\n  takerName?: FieldPolicy<any> | FieldReadFunction<any>;\n  takerProfilePictureUrl?: FieldPolicy<any> | FieldReadFunction<any>;\n  timestamp?: FieldPolicy<any> | FieldReadFunction<any>;\n  updatedDate?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type SourceKeySpecifier = (\n  | 'accruedInterest'\n  | 'aprBps'\n  | 'borrowerEaprBps'\n  | 'earnedInterest'\n  | 'effectiveDuration'\n  | 'endDate'\n  | 'expectedInterestLeft'\n  | 'id'\n  | 'lenderAddress'\n  | 'lenderEaprBps'\n  | 'lenderName'\n  | 'lenderProfilePictureUrl'\n  | 'loan'\n  | 'loanId'\n  | 'loanIndex'\n  | 'loanReferenceId'\n  | 'netAccruedInterest'\n  | 'netAprBps'\n  | 'netEarnedInterest'\n  | 'netExpectedInterestLeft'\n  | 'netLenderEaprBps'\n  | 'netOriginationFee'\n  | 'netProfit'\n  | 'netRepaidInterest'\n  | 'originationFee'\n  | 'principalAmount'\n  | 'profit'\n  | 'refinanceNetAprBps'\n  | 'repaidInterest'\n  | 'seniorPrincipalAmount'\n  | 'startTime'\n  | SourceKeySpecifier\n)[];\nexport type SourceFieldPolicy = {\n  accruedInterest?: FieldPolicy<any> | FieldReadFunction<any>;\n  aprBps?: FieldPolicy<any> | FieldReadFunction<any>;\n  borrowerEaprBps?: FieldPolicy<any> | FieldReadFunction<any>;\n  earnedInterest?: FieldPolicy<any> | FieldReadFunction<any>;\n  effectiveDuration?: FieldPolicy<any> | FieldReadFunction<any>;\n  endDate?: FieldPolicy<any> | FieldReadFunction<any>;\n  expectedInterestLeft?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  lenderAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  lenderEaprBps?: FieldPolicy<any> | FieldReadFunction<any>;\n  lenderName?: FieldPolicy<any> | FieldReadFunction<any>;\n  lenderProfilePictureUrl?: FieldPolicy<any> | FieldReadFunction<any>;\n  loan?: FieldPolicy<any> | FieldReadFunction<any>;\n  loanId?: FieldPolicy<any> | FieldReadFunction<any>;\n  loanIndex?: FieldPolicy<any> | FieldReadFunction<any>;\n  loanReferenceId?: FieldPolicy<any> | FieldReadFunction<any>;\n  netAccruedInterest?: FieldPolicy<any> | FieldReadFunction<any>;\n  netAprBps?: FieldPolicy<any> | FieldReadFunction<any>;\n  netEarnedInterest?: FieldPolicy<any> | FieldReadFunction<any>;\n  netExpectedInterestLeft?: FieldPolicy<any> | FieldReadFunction<any>;\n  netLenderEaprBps?: FieldPolicy<any> | FieldReadFunction<any>;\n  netOriginationFee?: FieldPolicy<any> | FieldReadFunction<any>;\n  netProfit?: FieldPolicy<any> | FieldReadFunction<any>;\n  netRepaidInterest?: FieldPolicy<any> | FieldReadFunction<any>;\n  originationFee?: FieldPolicy<any> | FieldReadFunction<any>;\n  principalAmount?: FieldPolicy<any> | FieldReadFunction<any>;\n  profit?: FieldPolicy<any> | FieldReadFunction<any>;\n  refinanceNetAprBps?: FieldPolicy<any> | FieldReadFunction<any>;\n  repaidInterest?: FieldPolicy<any> | FieldReadFunction<any>;\n  seniorPrincipalAmount?: FieldPolicy<any> | FieldReadFunction<any>;\n  startTime?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type SourceHistoryKeySpecifier = (\n  | 'accruedInterest'\n  | 'aprBps'\n  | 'id'\n  | 'lenderAddress'\n  | 'lenderName'\n  | 'lenderProfilePictureUrl'\n  | 'loanId'\n  | 'loanIndex'\n  | 'originationFee'\n  | 'principalAmount'\n  | 'seniorPrincipalAmount'\n  | 'startTime'\n  | SourceHistoryKeySpecifier\n)[];\nexport type SourceHistoryFieldPolicy = {\n  accruedInterest?: FieldPolicy<any> | FieldReadFunction<any>;\n  aprBps?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  lenderAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  lenderName?: FieldPolicy<any> | FieldReadFunction<any>;\n  lenderProfilePictureUrl?: FieldPolicy<any> | FieldReadFunction<any>;\n  loanId?: FieldPolicy<any> | FieldReadFunction<any>;\n  loanIndex?: FieldPolicy<any> | FieldReadFunction<any>;\n  originationFee?: FieldPolicy<any> | FieldReadFunction<any>;\n  principalAmount?: FieldPolicy<any> | FieldReadFunction<any>;\n  seniorPrincipalAmount?: FieldPolicy<any> | FieldReadFunction<any>;\n  startTime?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type SourceLostSourceConnectionKeySpecifier = (\n  | 'edges'\n  | 'pageInfo'\n  | 'totalCount'\n  | SourceLostSourceConnectionKeySpecifier\n)[];\nexport type SourceLostSourceConnectionFieldPolicy = {\n  edges?: FieldPolicy<any> | FieldReadFunction<any>;\n  pageInfo?: FieldPolicy<any> | FieldReadFunction<any>;\n  totalCount?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type SourceLostSourceEdgeKeySpecifier = (\n  | 'cursor'\n  | 'node'\n  | SourceLostSourceEdgeKeySpecifier\n)[];\nexport type SourceLostSourceEdgeFieldPolicy = {\n  cursor?: FieldPolicy<any> | FieldReadFunction<any>;\n  node?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type SourceStatisticsFromCollectionKeySpecifier = (\n  | 'collection'\n  | 'collectionId'\n  | 'stats'\n  | SourceStatisticsFromCollectionKeySpecifier\n)[];\nexport type SourceStatisticsFromCollectionFieldPolicy = {\n  collection?: FieldPolicy<any> | FieldReadFunction<any>;\n  collectionId?: FieldPolicy<any> | FieldReadFunction<any>;\n  stats?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type SourcesStatisticsKeySpecifier = (\n  | 'count'\n  | 'earnedInterest'\n  | 'expectedInterestLeft'\n  | 'interestAccrualPerYear'\n  | 'netEarnedInterest'\n  | 'netExpectedInterestLeft'\n  | 'netInterestAccrualPerYear'\n  | 'netOriginationFee'\n  | 'netProfit'\n  | 'netRepaidInterest'\n  | 'originationFee'\n  | 'outstanding'\n  | 'principal'\n  | 'profit'\n  | 'repaidInterest'\n  | 'wavgAprBps'\n  | 'wavgLenderEaprBps'\n  | 'wavgNetAprBps'\n  | 'wavgNetLenderEaprBps'\n  | SourcesStatisticsKeySpecifier\n)[];\nexport type SourcesStatisticsFieldPolicy = {\n  count?: FieldPolicy<any> | FieldReadFunction<any>;\n  earnedInterest?: FieldPolicy<any> | FieldReadFunction<any>;\n  expectedInterestLeft?: FieldPolicy<any> | FieldReadFunction<any>;\n  interestAccrualPerYear?: FieldPolicy<any> | FieldReadFunction<any>;\n  netEarnedInterest?: FieldPolicy<any> | FieldReadFunction<any>;\n  netExpectedInterestLeft?: FieldPolicy<any> | FieldReadFunction<any>;\n  netInterestAccrualPerYear?: FieldPolicy<any> | FieldReadFunction<any>;\n  netOriginationFee?: FieldPolicy<any> | FieldReadFunction<any>;\n  netProfit?: FieldPolicy<any> | FieldReadFunction<any>;\n  netRepaidInterest?: FieldPolicy<any> | FieldReadFunction<any>;\n  originationFee?: FieldPolicy<any> | FieldReadFunction<any>;\n  outstanding?: FieldPolicy<any> | FieldReadFunction<any>;\n  principal?: FieldPolicy<any> | FieldReadFunction<any>;\n  profit?: FieldPolicy<any> | FieldReadFunction<any>;\n  repaidInterest?: FieldPolicy<any> | FieldReadFunction<any>;\n  wavgAprBps?: FieldPolicy<any> | FieldReadFunction<any>;\n  wavgLenderEaprBps?: FieldPolicy<any> | FieldReadFunction<any>;\n  wavgNetAprBps?: FieldPolicy<any> | FieldReadFunction<any>;\n  wavgNetLenderEaprBps?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type StatByCollectionKeySpecifier = (\n  | 'collection'\n  | 'value'\n  | StatByCollectionKeySpecifier\n)[];\nexport type StatByCollectionFieldPolicy = {\n  collection?: FieldPolicy<any> | FieldReadFunction<any>;\n  value?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type StealthMaskedOrderKeySpecifier = (\n  | 'artist'\n  | 'cancelsOffChain'\n  | 'collection'\n  | 'createdDate'\n  | 'currency'\n  | 'currencyAddress'\n  | 'evmOrder'\n  | 'executions'\n  | 'expiration'\n  | 'feeMetadata'\n  | 'fees'\n  | 'hidden'\n  | 'highestBidTrait'\n  | 'id'\n  | 'isAsk'\n  | 'isPrivate'\n  | 'itemType'\n  | 'maker'\n  | 'makerName'\n  | 'makerProfilePictureUrl'\n  | 'marketPlace'\n  | 'marketPlaceAddress'\n  | 'maxExecutions'\n  | 'netAmount'\n  | 'nonce'\n  | 'orderType'\n  | 'originalId'\n  | 'platformFees'\n  | 'price'\n  | 'revealedGroup'\n  | 'signature'\n  | 'startTime'\n  | 'status'\n  | 'stealth'\n  | 'taker'\n  | 'takerName'\n  | 'takerProfilePictureUrl'\n  | 'timestamp'\n  | 'updatedDate'\n  | StealthMaskedOrderKeySpecifier\n)[];\nexport type StealthMaskedOrderFieldPolicy = {\n  artist?: FieldPolicy<any> | FieldReadFunction<any>;\n  cancelsOffChain?: FieldPolicy<any> | FieldReadFunction<any>;\n  collection?: FieldPolicy<any> | FieldReadFunction<any>;\n  createdDate?: FieldPolicy<any> | FieldReadFunction<any>;\n  currency?: FieldPolicy<any> | FieldReadFunction<any>;\n  currencyAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  evmOrder?: FieldPolicy<any> | FieldReadFunction<any>;\n  executions?: FieldPolicy<any> | FieldReadFunction<any>;\n  expiration?: FieldPolicy<any> | FieldReadFunction<any>;\n  feeMetadata?: FieldPolicy<any> | FieldReadFunction<any>;\n  fees?: FieldPolicy<any> | FieldReadFunction<any>;\n  hidden?: FieldPolicy<any> | FieldReadFunction<any>;\n  highestBidTrait?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  isAsk?: FieldPolicy<any> | FieldReadFunction<any>;\n  isPrivate?: FieldPolicy<any> | FieldReadFunction<any>;\n  itemType?: FieldPolicy<any> | FieldReadFunction<any>;\n  maker?: FieldPolicy<any> | FieldReadFunction<any>;\n  makerName?: FieldPolicy<any> | FieldReadFunction<any>;\n  makerProfilePictureUrl?: FieldPolicy<any> | FieldReadFunction<any>;\n  marketPlace?: FieldPolicy<any> | FieldReadFunction<any>;\n  marketPlaceAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  maxExecutions?: FieldPolicy<any> | FieldReadFunction<any>;\n  netAmount?: FieldPolicy<any> | FieldReadFunction<any>;\n  nonce?: FieldPolicy<any> | FieldReadFunction<any>;\n  orderType?: FieldPolicy<any> | FieldReadFunction<any>;\n  originalId?: FieldPolicy<any> | FieldReadFunction<any>;\n  platformFees?: FieldPolicy<any> | FieldReadFunction<any>;\n  price?: FieldPolicy<any> | FieldReadFunction<any>;\n  revealedGroup?: FieldPolicy<any> | FieldReadFunction<any>;\n  signature?: FieldPolicy<any> | FieldReadFunction<any>;\n  startTime?: FieldPolicy<any> | FieldReadFunction<any>;\n  status?: FieldPolicy<any> | FieldReadFunction<any>;\n  stealth?: FieldPolicy<any> | FieldReadFunction<any>;\n  taker?: FieldPolicy<any> | FieldReadFunction<any>;\n  takerName?: FieldPolicy<any> | FieldReadFunction<any>;\n  takerProfilePictureUrl?: FieldPolicy<any> | FieldReadFunction<any>;\n  timestamp?: FieldPolicy<any> | FieldReadFunction<any>;\n  updatedDate?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type StealthRevealedGroupKeySpecifier = (\n  | 'images'\n  | 'tier'\n  | 'totalCount'\n  | StealthRevealedGroupKeySpecifier\n)[];\nexport type StealthRevealedGroupFieldPolicy = {\n  images?: FieldPolicy<any> | FieldReadFunction<any>;\n  tier?: FieldPolicy<any> | FieldReadFunction<any>;\n  totalCount?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type SubscriptionKeySpecifier = (\n  | 'activityUpdates'\n  | 'lendingMarketStatisticsUpdates'\n  | 'saleListingUpdates'\n  | SubscriptionKeySpecifier\n)[];\nexport type SubscriptionFieldPolicy = {\n  activityUpdates?: FieldPolicy<any> | FieldReadFunction<any>;\n  lendingMarketStatisticsUpdates?: FieldPolicy<any> | FieldReadFunction<any>;\n  saleListingUpdates?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type SwapQuoteKeySpecifier = ('feeBps' | 'rate' | 'slippageBps' | SwapQuoteKeySpecifier)[];\nexport type SwapQuoteFieldPolicy = {\n  feeBps?: FieldPolicy<any> | FieldReadFunction<any>;\n  rate?: FieldPolicy<any> | FieldReadFunction<any>;\n  slippageBps?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type TopHoldersInfoKeySpecifier = (\n  | 'anonymousHolders'\n  | 'averageBluechipHoldings'\n  | 'averageDaysHeld'\n  | 'averageDaysHeldPerItem'\n  | 'multiBluechipHolders'\n  | 'sampleSize'\n  | TopHoldersInfoKeySpecifier\n)[];\nexport type TopHoldersInfoFieldPolicy = {\n  anonymousHolders?: FieldPolicy<any> | FieldReadFunction<any>;\n  averageBluechipHoldings?: FieldPolicy<any> | FieldReadFunction<any>;\n  averageDaysHeld?: FieldPolicy<any> | FieldReadFunction<any>;\n  averageDaysHeldPerItem?: FieldPolicy<any> | FieldReadFunction<any>;\n  multiBluechipHolders?: FieldPolicy<any> | FieldReadFunction<any>;\n  sampleSize?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type TopLenderKeySpecifier = (\n  | 'defaultCount'\n  | 'defaultRateBps'\n  | 'earnings'\n  | 'earningsUsd'\n  | 'name'\n  | 'netEaprBps'\n  | 'originatedCount'\n  | 'outstandingPrincipal'\n  | 'outstandingUsd'\n  | 'paidInterest'\n  | 'profilePictureUrl'\n  | 'rank'\n  | 'refinancedCount'\n  | 'settledCount'\n  | 'walletAddress'\n  | TopLenderKeySpecifier\n)[];\nexport type TopLenderFieldPolicy = {\n  defaultCount?: FieldPolicy<any> | FieldReadFunction<any>;\n  defaultRateBps?: FieldPolicy<any> | FieldReadFunction<any>;\n  earnings?: FieldPolicy<any> | FieldReadFunction<any>;\n  earningsUsd?: FieldPolicy<any> | FieldReadFunction<any>;\n  name?: FieldPolicy<any> | FieldReadFunction<any>;\n  netEaprBps?: FieldPolicy<any> | FieldReadFunction<any>;\n  originatedCount?: FieldPolicy<any> | FieldReadFunction<any>;\n  outstandingPrincipal?: FieldPolicy<any> | FieldReadFunction<any>;\n  outstandingUsd?: FieldPolicy<any> | FieldReadFunction<any>;\n  paidInterest?: FieldPolicy<any> | FieldReadFunction<any>;\n  profilePictureUrl?: FieldPolicy<any> | FieldReadFunction<any>;\n  rank?: FieldPolicy<any> | FieldReadFunction<any>;\n  refinancedCount?: FieldPolicy<any> | FieldReadFunction<any>;\n  settledCount?: FieldPolicy<any> | FieldReadFunction<any>;\n  walletAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type TopLendersKeySpecifier = (\n  | 'asOf'\n  | 'endCursor'\n  | 'excludedCount'\n  | 'hasNextPage'\n  | 'rows'\n  | 'totalCount'\n  | 'viewerRank'\n  | TopLendersKeySpecifier\n)[];\nexport type TopLendersFieldPolicy = {\n  asOf?: FieldPolicy<any> | FieldReadFunction<any>;\n  endCursor?: FieldPolicy<any> | FieldReadFunction<any>;\n  excludedCount?: FieldPolicy<any> | FieldReadFunction<any>;\n  hasNextPage?: FieldPolicy<any> | FieldReadFunction<any>;\n  rows?: FieldPolicy<any> | FieldReadFunction<any>;\n  totalCount?: FieldPolicy<any> | FieldReadFunction<any>;\n  viewerRank?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type TopUpRequestKeySpecifier = (\n  | 'createdDate'\n  | 'desiredAprBps'\n  | 'desiredTopUp'\n  | 'expirationDate'\n  | 'id'\n  | 'loanId'\n  | TopUpRequestKeySpecifier\n)[];\nexport type TopUpRequestFieldPolicy = {\n  createdDate?: FieldPolicy<any> | FieldReadFunction<any>;\n  desiredAprBps?: FieldPolicy<any> | FieldReadFunction<any>;\n  desiredTopUp?: FieldPolicy<any> | FieldReadFunction<any>;\n  expirationDate?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  loanId?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type TopUpRequestedNotificationKeySpecifier = (\n  | 'aprBps'\n  | 'createdOn'\n  | 'id'\n  | 'loan'\n  | 'loanId'\n  | 'notificationType'\n  | 'readOn'\n  | 'topUp'\n  | 'user'\n  | TopUpRequestedNotificationKeySpecifier\n)[];\nexport type TopUpRequestedNotificationFieldPolicy = {\n  aprBps?: FieldPolicy<any> | FieldReadFunction<any>;\n  createdOn?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  loan?: FieldPolicy<any> | FieldReadFunction<any>;\n  loanId?: FieldPolicy<any> | FieldReadFunction<any>;\n  notificationType?: FieldPolicy<any> | FieldReadFunction<any>;\n  readOn?: FieldPolicy<any> | FieldReadFunction<any>;\n  topUp?: FieldPolicy<any> | FieldReadFunction<any>;\n  user?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type TraitKeySpecifier = (\n  | 'collectionId'\n  | 'id'\n  | 'isSynthetic'\n  | 'key'\n  | 'sampleAsset'\n  | 'statistics'\n  | 'traitType'\n  | 'type'\n  | 'value'\n  | TraitKeySpecifier\n)[];\nexport type TraitFieldPolicy = {\n  collectionId?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  isSynthetic?: FieldPolicy<any> | FieldReadFunction<any>;\n  key?: FieldPolicy<any> | FieldReadFunction<any>;\n  sampleAsset?: FieldPolicy<any> | FieldReadFunction<any>;\n  statistics?: FieldPolicy<any> | FieldReadFunction<any>;\n  traitType?: FieldPolicy<any> | FieldReadFunction<any>;\n  type?: FieldPolicy<any> | FieldReadFunction<any>;\n  value?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type TraitFilterOptionKeySpecifier = ('traitKeyValues' | TraitFilterOptionKeySpecifier)[];\nexport type TraitFilterOptionFieldPolicy = {\n  traitKeyValues?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type TraitKeyOptionKeySpecifier = ('count' | 'key' | 'type' | TraitKeyOptionKeySpecifier)[];\nexport type TraitKeyOptionFieldPolicy = {\n  count?: FieldPolicy<any> | FieldReadFunction<any>;\n  key?: FieldPolicy<any> | FieldReadFunction<any>;\n  type?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type TraitKeyOptionConnectionKeySpecifier = (\n  | 'edges'\n  | 'pageInfo'\n  | 'totalCount'\n  | TraitKeyOptionConnectionKeySpecifier\n)[];\nexport type TraitKeyOptionConnectionFieldPolicy = {\n  edges?: FieldPolicy<any> | FieldReadFunction<any>;\n  pageInfo?: FieldPolicy<any> | FieldReadFunction<any>;\n  totalCount?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type TraitKeyOptionEdgeKeySpecifier = ('cursor' | 'node' | TraitKeyOptionEdgeKeySpecifier)[];\nexport type TraitKeyOptionEdgeFieldPolicy = {\n  cursor?: FieldPolicy<any> | FieldReadFunction<any>;\n  node?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type TraitKeyValueOptionsKeySpecifier = (\n  | 'key'\n  | 'values'\n  | TraitKeyValueOptionsKeySpecifier\n)[];\nexport type TraitKeyValueOptionsFieldPolicy = {\n  key?: FieldPolicy<any> | FieldReadFunction<any>;\n  values?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type TraitOfferKeySpecifier = (\n  | 'aprBps'\n  | 'availablePrincipalAmount'\n  | 'borrowerAddress'\n  | 'borrowerName'\n  | 'borrowerProfilePictureUrl'\n  | 'capacity'\n  | 'collateralAddress'\n  | 'collection'\n  | 'collectionId'\n  | 'consumedCapacity'\n  | 'contractAddress'\n  | 'createdDate'\n  | 'currency'\n  | 'duration'\n  | 'expirationTime'\n  | 'fee'\n  | 'hidden'\n  | 'id'\n  | 'lenderAddress'\n  | 'lenderAllowance'\n  | 'lenderAvailableBalance'\n  | 'lenderName'\n  | 'lenderProfilePictureUrl'\n  | 'lenderRefinanceDisabled'\n  | 'maxPrincipal'\n  | 'maxSeniorRepayment'\n  | 'maxTrancheFloor'\n  | 'netPrincipal'\n  | 'nftId'\n  | 'offerHash'\n  | 'offerId'\n  | 'principalAddress'\n  | 'principalAmount'\n  | 'repayment'\n  | 'requiresLiquidation'\n  | 'signature'\n  | 'signerAddress'\n  | 'status'\n  | 'timestamp'\n  | 'traits'\n  | 'validators'\n  | TraitOfferKeySpecifier\n)[];\nexport type TraitOfferFieldPolicy = {\n  aprBps?: FieldPolicy<any> | FieldReadFunction<any>;\n  availablePrincipalAmount?: FieldPolicy<any> | FieldReadFunction<any>;\n  borrowerAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  borrowerName?: FieldPolicy<any> | FieldReadFunction<any>;\n  borrowerProfilePictureUrl?: FieldPolicy<any> | FieldReadFunction<any>;\n  capacity?: FieldPolicy<any> | FieldReadFunction<any>;\n  collateralAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  collection?: FieldPolicy<any> | FieldReadFunction<any>;\n  collectionId?: FieldPolicy<any> | FieldReadFunction<any>;\n  consumedCapacity?: FieldPolicy<any> | FieldReadFunction<any>;\n  contractAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  createdDate?: FieldPolicy<any> | FieldReadFunction<any>;\n  currency?: FieldPolicy<any> | FieldReadFunction<any>;\n  duration?: FieldPolicy<any> | FieldReadFunction<any>;\n  expirationTime?: FieldPolicy<any> | FieldReadFunction<any>;\n  fee?: FieldPolicy<any> | FieldReadFunction<any>;\n  hidden?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  lenderAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  lenderAllowance?: FieldPolicy<any> | FieldReadFunction<any>;\n  lenderAvailableBalance?: FieldPolicy<any> | FieldReadFunction<any>;\n  lenderName?: FieldPolicy<any> | FieldReadFunction<any>;\n  lenderProfilePictureUrl?: FieldPolicy<any> | FieldReadFunction<any>;\n  lenderRefinanceDisabled?: FieldPolicy<any> | FieldReadFunction<any>;\n  maxPrincipal?: FieldPolicy<any> | FieldReadFunction<any>;\n  maxSeniorRepayment?: FieldPolicy<any> | FieldReadFunction<any>;\n  maxTrancheFloor?: FieldPolicy<any> | FieldReadFunction<any>;\n  netPrincipal?: FieldPolicy<any> | FieldReadFunction<any>;\n  nftId?: FieldPolicy<any> | FieldReadFunction<any>;\n  offerHash?: FieldPolicy<any> | FieldReadFunction<any>;\n  offerId?: FieldPolicy<any> | FieldReadFunction<any>;\n  principalAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  principalAmount?: FieldPolicy<any> | FieldReadFunction<any>;\n  repayment?: FieldPolicy<any> | FieldReadFunction<any>;\n  requiresLiquidation?: FieldPolicy<any> | FieldReadFunction<any>;\n  signature?: FieldPolicy<any> | FieldReadFunction<any>;\n  signerAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  status?: FieldPolicy<any> | FieldReadFunction<any>;\n  timestamp?: FieldPolicy<any> | FieldReadFunction<any>;\n  traits?: FieldPolicy<any> | FieldReadFunction<any>;\n  validators?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type TraitOrderKeySpecifier = (\n  | 'cancelsOffChain'\n  | 'collection'\n  | 'collectionId'\n  | 'createdDate'\n  | 'currency'\n  | 'currencyAddress'\n  | 'edition'\n  | 'evmOrder'\n  | 'executions'\n  | 'expiration'\n  | 'feeMetadata'\n  | 'fees'\n  | 'hidden'\n  | 'id'\n  | 'isAsk'\n  | 'isPrivate'\n  | 'maker'\n  | 'makerName'\n  | 'makerProfilePictureUrl'\n  | 'marketPlace'\n  | 'marketPlaceAddress'\n  | 'maxExecutions'\n  | 'netAmount'\n  | 'nonce'\n  | 'orderType'\n  | 'originalId'\n  | 'platformFees'\n  | 'price'\n  | 'signature'\n  | 'startTime'\n  | 'status'\n  | 'stealth'\n  | 'taker'\n  | 'takerName'\n  | 'takerProfilePictureUrl'\n  | 'timestamp'\n  | 'trait'\n  | 'traitId'\n  | 'updatedDate'\n  | TraitOrderKeySpecifier\n)[];\nexport type TraitOrderFieldPolicy = {\n  cancelsOffChain?: FieldPolicy<any> | FieldReadFunction<any>;\n  collection?: FieldPolicy<any> | FieldReadFunction<any>;\n  collectionId?: FieldPolicy<any> | FieldReadFunction<any>;\n  createdDate?: FieldPolicy<any> | FieldReadFunction<any>;\n  currency?: FieldPolicy<any> | FieldReadFunction<any>;\n  currencyAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  edition?: FieldPolicy<any> | FieldReadFunction<any>;\n  evmOrder?: FieldPolicy<any> | FieldReadFunction<any>;\n  executions?: FieldPolicy<any> | FieldReadFunction<any>;\n  expiration?: FieldPolicy<any> | FieldReadFunction<any>;\n  feeMetadata?: FieldPolicy<any> | FieldReadFunction<any>;\n  fees?: FieldPolicy<any> | FieldReadFunction<any>;\n  hidden?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  isAsk?: FieldPolicy<any> | FieldReadFunction<any>;\n  isPrivate?: FieldPolicy<any> | FieldReadFunction<any>;\n  maker?: FieldPolicy<any> | FieldReadFunction<any>;\n  makerName?: FieldPolicy<any> | FieldReadFunction<any>;\n  makerProfilePictureUrl?: FieldPolicy<any> | FieldReadFunction<any>;\n  marketPlace?: FieldPolicy<any> | FieldReadFunction<any>;\n  marketPlaceAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  maxExecutions?: FieldPolicy<any> | FieldReadFunction<any>;\n  netAmount?: FieldPolicy<any> | FieldReadFunction<any>;\n  nonce?: FieldPolicy<any> | FieldReadFunction<any>;\n  orderType?: FieldPolicy<any> | FieldReadFunction<any>;\n  originalId?: FieldPolicy<any> | FieldReadFunction<any>;\n  platformFees?: FieldPolicy<any> | FieldReadFunction<any>;\n  price?: FieldPolicy<any> | FieldReadFunction<any>;\n  signature?: FieldPolicy<any> | FieldReadFunction<any>;\n  startTime?: FieldPolicy<any> | FieldReadFunction<any>;\n  status?: FieldPolicy<any> | FieldReadFunction<any>;\n  stealth?: FieldPolicy<any> | FieldReadFunction<any>;\n  taker?: FieldPolicy<any> | FieldReadFunction<any>;\n  takerName?: FieldPolicy<any> | FieldReadFunction<any>;\n  takerProfilePictureUrl?: FieldPolicy<any> | FieldReadFunction<any>;\n  timestamp?: FieldPolicy<any> | FieldReadFunction<any>;\n  trait?: FieldPolicy<any> | FieldReadFunction<any>;\n  traitId?: FieldPolicy<any> | FieldReadFunction<any>;\n  updatedDate?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type TraitStatisticsKeySpecifier = (\n  | 'floorPrice'\n  | 'higherItemOfferCount'\n  | 'highestBid'\n  | 'lastSale'\n  | 'rarity'\n  | 'topItemOffer'\n  | 'topItemOfferUsd'\n  | 'topOffer'\n  | 'topOfferUsd'\n  | TraitStatisticsKeySpecifier\n)[];\nexport type TraitStatisticsFieldPolicy = {\n  floorPrice?: FieldPolicy<any> | FieldReadFunction<any>;\n  higherItemOfferCount?: FieldPolicy<any> | FieldReadFunction<any>;\n  highestBid?: FieldPolicy<any> | FieldReadFunction<any>;\n  lastSale?: FieldPolicy<any> | FieldReadFunction<any>;\n  rarity?: FieldPolicy<any> | FieldReadFunction<any>;\n  topItemOffer?: FieldPolicy<any> | FieldReadFunction<any>;\n  topItemOfferUsd?: FieldPolicy<any> | FieldReadFunction<any>;\n  topOffer?: FieldPolicy<any> | FieldReadFunction<any>;\n  topOfferUsd?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type TraitTypeKeySpecifier = (\n  | 'collectionId'\n  | 'count'\n  | 'id'\n  | 'isSynthetic'\n  | 'key'\n  | 'max'\n  | 'min'\n  | 'valueType'\n  | TraitTypeKeySpecifier\n)[];\nexport type TraitTypeFieldPolicy = {\n  collectionId?: FieldPolicy<any> | FieldReadFunction<any>;\n  count?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  isSynthetic?: FieldPolicy<any> | FieldReadFunction<any>;\n  key?: FieldPolicy<any> | FieldReadFunction<any>;\n  max?: FieldPolicy<any> | FieldReadFunction<any>;\n  min?: FieldPolicy<any> | FieldReadFunction<any>;\n  valueType?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type TraitTypeConnectionKeySpecifier = (\n  | 'edges'\n  | 'pageInfo'\n  | 'totalCount'\n  | TraitTypeConnectionKeySpecifier\n)[];\nexport type TraitTypeConnectionFieldPolicy = {\n  edges?: FieldPolicy<any> | FieldReadFunction<any>;\n  pageInfo?: FieldPolicy<any> | FieldReadFunction<any>;\n  totalCount?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type TraitTypeEdgeKeySpecifier = ('cursor' | 'node' | TraitTypeEdgeKeySpecifier)[];\nexport type TraitTypeEdgeFieldPolicy = {\n  cursor?: FieldPolicy<any> | FieldReadFunction<any>;\n  node?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type TraitValueKeySpecifier = (\n  | 'collectionId'\n  | 'id'\n  | 'isSynthetic'\n  | 'key'\n  | 'rarity'\n  | 'sampleAsset'\n  | 'sampleAssetId'\n  | 'statistics'\n  | 'value'\n  | TraitValueKeySpecifier\n)[];\nexport type TraitValueFieldPolicy = {\n  collectionId?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  isSynthetic?: FieldPolicy<any> | FieldReadFunction<any>;\n  key?: FieldPolicy<any> | FieldReadFunction<any>;\n  rarity?: FieldPolicy<any> | FieldReadFunction<any>;\n  sampleAsset?: FieldPolicy<any> | FieldReadFunction<any>;\n  sampleAssetId?: FieldPolicy<any> | FieldReadFunction<any>;\n  statistics?: FieldPolicy<any> | FieldReadFunction<any>;\n  value?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type TraitValueConnectionKeySpecifier = (\n  | 'edges'\n  | 'pageInfo'\n  | 'totalCount'\n  | TraitValueConnectionKeySpecifier\n)[];\nexport type TraitValueConnectionFieldPolicy = {\n  edges?: FieldPolicy<any> | FieldReadFunction<any>;\n  pageInfo?: FieldPolicy<any> | FieldReadFunction<any>;\n  totalCount?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type TraitValueEdgeKeySpecifier = ('cursor' | 'node' | TraitValueEdgeKeySpecifier)[];\nexport type TraitValueEdgeFieldPolicy = {\n  cursor?: FieldPolicy<any> | FieldReadFunction<any>;\n  node?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type TraitValueOptionsKeySpecifier = ('rarity' | 'value' | TraitValueOptionsKeySpecifier)[];\nexport type TraitValueOptionsFieldPolicy = {\n  rarity?: FieldPolicy<any> | FieldReadFunction<any>;\n  value?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type TransferKeySpecifier = (\n  | 'id'\n  | 'nft'\n  | 'receiver'\n  | 'receiverName'\n  | 'receiverProfilePictureUrl'\n  | 'sender'\n  | 'senderName'\n  | 'senderProfilePictureUrl'\n  | 'timestamp'\n  | 'txHash'\n  | TransferKeySpecifier\n)[];\nexport type TransferFieldPolicy = {\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  nft?: FieldPolicy<any> | FieldReadFunction<any>;\n  receiver?: FieldPolicy<any> | FieldReadFunction<any>;\n  receiverName?: FieldPolicy<any> | FieldReadFunction<any>;\n  receiverProfilePictureUrl?: FieldPolicy<any> | FieldReadFunction<any>;\n  sender?: FieldPolicy<any> | FieldReadFunction<any>;\n  senderName?: FieldPolicy<any> | FieldReadFunction<any>;\n  senderProfilePictureUrl?: FieldPolicy<any> | FieldReadFunction<any>;\n  timestamp?: FieldPolicy<any> | FieldReadFunction<any>;\n  txHash?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type TypedDataKeySpecifier = (\n  | 'domain'\n  | 'message'\n  | 'primaryType'\n  | 'types'\n  | TypedDataKeySpecifier\n)[];\nexport type TypedDataFieldPolicy = {\n  domain?: FieldPolicy<any> | FieldReadFunction<any>;\n  message?: FieldPolicy<any> | FieldReadFunction<any>;\n  primaryType?: FieldPolicy<any> | FieldReadFunction<any>;\n  types?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type UnderfundedOfferNotificationKeySpecifier = (\n  | 'createdOn'\n  | 'id'\n  | 'notificationType'\n  | 'offer'\n  | 'offerId'\n  | 'readOn'\n  | 'user'\n  | UnderfundedOfferNotificationKeySpecifier\n)[];\nexport type UnderfundedOfferNotificationFieldPolicy = {\n  createdOn?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  notificationType?: FieldPolicy<any> | FieldReadFunction<any>;\n  offer?: FieldPolicy<any> | FieldReadFunction<any>;\n  offerId?: FieldPolicy<any> | FieldReadFunction<any>;\n  readOn?: FieldPolicy<any> | FieldReadFunction<any>;\n  user?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type UserKeySpecifier = (\n  | 'about'\n  | 'activeLoansAsBorrowerCount'\n  | 'activeLoansAsLenderCount'\n  | 'blockchain'\n  | 'createdDate'\n  | 'ensName'\n  | 'heldNftsCount'\n  | 'id'\n  | 'intercomUserJwt'\n  | 'linkedWallets'\n  | 'mail'\n  | 'mailValidationCodeExpiration'\n  | 'mailValidationDate'\n  | 'mainMail'\n  | 'originalProfilePicture'\n  | 'profilePictureId'\n  | 'size64ProfilePicture'\n  | 'size128ProfilePicture'\n  | 'size256ProfilePicture'\n  | 'size512ProfilePicture'\n  | 'statistics'\n  | 'twitterHandle'\n  | 'updatedAt'\n  | 'url'\n  | 'usedProduct'\n  | 'username'\n  | 'usernameSuggestions'\n  | 'walletAddress'\n  | 'watchNotificationsEnabled'\n  | UserKeySpecifier\n)[];\nexport type UserFieldPolicy = {\n  about?: FieldPolicy<any> | FieldReadFunction<any>;\n  activeLoansAsBorrowerCount?: FieldPolicy<any> | FieldReadFunction<any>;\n  activeLoansAsLenderCount?: FieldPolicy<any> | FieldReadFunction<any>;\n  blockchain?: FieldPolicy<any> | FieldReadFunction<any>;\n  createdDate?: FieldPolicy<any> | FieldReadFunction<any>;\n  ensName?: FieldPolicy<any> | FieldReadFunction<any>;\n  heldNftsCount?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  intercomUserJwt?: FieldPolicy<any> | FieldReadFunction<any>;\n  linkedWallets?: FieldPolicy<any> | FieldReadFunction<any>;\n  mail?: FieldPolicy<any> | FieldReadFunction<any>;\n  mailValidationCodeExpiration?: FieldPolicy<any> | FieldReadFunction<any>;\n  mailValidationDate?: FieldPolicy<any> | FieldReadFunction<any>;\n  mainMail?: FieldPolicy<any> | FieldReadFunction<any>;\n  originalProfilePicture?: FieldPolicy<any> | FieldReadFunction<any>;\n  profilePictureId?: FieldPolicy<any> | FieldReadFunction<any>;\n  size64ProfilePicture?: FieldPolicy<any> | FieldReadFunction<any>;\n  size128ProfilePicture?: FieldPolicy<any> | FieldReadFunction<any>;\n  size256ProfilePicture?: FieldPolicy<any> | FieldReadFunction<any>;\n  size512ProfilePicture?: FieldPolicy<any> | FieldReadFunction<any>;\n  statistics?: FieldPolicy<any> | FieldReadFunction<any>;\n  twitterHandle?: FieldPolicy<any> | FieldReadFunction<any>;\n  updatedAt?: FieldPolicy<any> | FieldReadFunction<any>;\n  url?: FieldPolicy<any> | FieldReadFunction<any>;\n  usedProduct?: FieldPolicy<any> | FieldReadFunction<any>;\n  username?: FieldPolicy<any> | FieldReadFunction<any>;\n  usernameSuggestions?: FieldPolicy<any> | FieldReadFunction<any>;\n  walletAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n  watchNotificationsEnabled?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type UserConnectionKeySpecifier = (\n  | 'edges'\n  | 'pageInfo'\n  | 'totalCount'\n  | UserConnectionKeySpecifier\n)[];\nexport type UserConnectionFieldPolicy = {\n  edges?: FieldPolicy<any> | FieldReadFunction<any>;\n  pageInfo?: FieldPolicy<any> | FieldReadFunction<any>;\n  totalCount?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type UserEdgeKeySpecifier = ('cursor' | 'node' | UserEdgeKeySpecifier)[];\nexport type UserEdgeFieldPolicy = {\n  cursor?: FieldPolicy<any> | FieldReadFunction<any>;\n  node?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type UserStatisticsKeySpecifier = (\n  | 'defaultedPrincipal'\n  | 'interestEarnedByCollection'\n  | 'loanCount'\n  | 'loanCountByCollection'\n  | 'loanPrincipalByCollection'\n  | 'originationCountAndPrincipalByMonth'\n  | 'outstandingAccruedInterest'\n  | 'outstandingPrincipal'\n  | 'realizedProfits'\n  | 'renegotiationCountAndPrincipalByMonth'\n  | 'totalLentPrincipal'\n  | 'totalLoanCount'\n  | 'wavgOutstandingApr'\n  | 'wavgOutstandingAprByCollection'\n  | 'wavgRepaidApr'\n  | 'wavgRepaidAprByCollection'\n  | UserStatisticsKeySpecifier\n)[];\nexport type UserStatisticsFieldPolicy = {\n  defaultedPrincipal?: FieldPolicy<any> | FieldReadFunction<any>;\n  interestEarnedByCollection?: FieldPolicy<any> | FieldReadFunction<any>;\n  loanCount?: FieldPolicy<any> | FieldReadFunction<any>;\n  loanCountByCollection?: FieldPolicy<any> | FieldReadFunction<any>;\n  loanPrincipalByCollection?: FieldPolicy<any> | FieldReadFunction<any>;\n  originationCountAndPrincipalByMonth?: FieldPolicy<any> | FieldReadFunction<any>;\n  outstandingAccruedInterest?: FieldPolicy<any> | FieldReadFunction<any>;\n  outstandingPrincipal?: FieldPolicy<any> | FieldReadFunction<any>;\n  realizedProfits?: FieldPolicy<any> | FieldReadFunction<any>;\n  renegotiationCountAndPrincipalByMonth?: FieldPolicy<any> | FieldReadFunction<any>;\n  totalLentPrincipal?: FieldPolicy<any> | FieldReadFunction<any>;\n  totalLoanCount?: FieldPolicy<any> | FieldReadFunction<any>;\n  wavgOutstandingApr?: FieldPolicy<any> | FieldReadFunction<any>;\n  wavgOutstandingAprByCollection?: FieldPolicy<any> | FieldReadFunction<any>;\n  wavgRepaidApr?: FieldPolicy<any> | FieldReadFunction<any>;\n  wavgRepaidAprByCollection?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type WalletActivityDayKeySpecifier = (\n  | 'borrows'\n  | 'day'\n  | 'lends'\n  | 'purchases'\n  | 'sales'\n  | WalletActivityDayKeySpecifier\n)[];\nexport type WalletActivityDayFieldPolicy = {\n  borrows?: FieldPolicy<any> | FieldReadFunction<any>;\n  day?: FieldPolicy<any> | FieldReadFunction<any>;\n  lends?: FieldPolicy<any> | FieldReadFunction<any>;\n  purchases?: FieldPolicy<any> | FieldReadFunction<any>;\n  sales?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type WalletFollowEntryKeySpecifier = (\n  | 'viaWalletAddresses'\n  | 'walletAddress'\n  | WalletFollowEntryKeySpecifier\n)[];\nexport type WalletFollowEntryFieldPolicy = {\n  viaWalletAddresses?: FieldPolicy<any> | FieldReadFunction<any>;\n  walletAddress?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type WalletFollowStatsKeySpecifier = (\n  | 'followersCount'\n  | 'followingCount'\n  | 'isFollowed'\n  | WalletFollowStatsKeySpecifier\n)[];\nexport type WalletFollowStatsFieldPolicy = {\n  followersCount?: FieldPolicy<any> | FieldReadFunction<any>;\n  followingCount?: FieldPolicy<any> | FieldReadFunction<any>;\n  isFollowed?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type WalletHoldingCollectionKeySpecifier = (\n  | 'collection'\n  | 'estimatedValueUsd'\n  | 'heldCount'\n  | WalletHoldingCollectionKeySpecifier\n)[];\nexport type WalletHoldingCollectionFieldPolicy = {\n  collection?: FieldPolicy<any> | FieldReadFunction<any>;\n  estimatedValueUsd?: FieldPolicy<any> | FieldReadFunction<any>;\n  heldCount?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type WalletHoldingsSummaryKeySpecifier = (\n  | 'topCollections'\n  | WalletHoldingsSummaryKeySpecifier\n)[];\nexport type WalletHoldingsSummaryFieldPolicy = {\n  topCollections?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type WalletLendingCollectionKeySpecifier = (\n  | 'collection'\n  | 'principalUsd'\n  | WalletLendingCollectionKeySpecifier\n)[];\nexport type WalletLendingCollectionFieldPolicy = {\n  collection?: FieldPolicy<any> | FieldReadFunction<any>;\n  principalUsd?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type WalletLendingSummaryKeySpecifier = (\n  | 'loanCount'\n  | 'principalUsd'\n  | 'topCollections'\n  | WalletLendingSummaryKeySpecifier\n)[];\nexport type WalletLendingSummaryFieldPolicy = {\n  loanCount?: FieldPolicy<any> | FieldReadFunction<any>;\n  principalUsd?: FieldPolicy<any> | FieldReadFunction<any>;\n  topCollections?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type WalletTradingSummaryKeySpecifier = (\n  | 'borrowCount'\n  | 'borrowVolumeUsd'\n  | 'buyCount'\n  | 'buyVolumeUsd'\n  | 'dailyActivity'\n  | 'lendCount'\n  | 'lendVolumeUsd'\n  | 'sellCount'\n  | 'sellVolumeUsd'\n  | WalletTradingSummaryKeySpecifier\n)[];\nexport type WalletTradingSummaryFieldPolicy = {\n  borrowCount?: FieldPolicy<any> | FieldReadFunction<any>;\n  borrowVolumeUsd?: FieldPolicy<any> | FieldReadFunction<any>;\n  buyCount?: FieldPolicy<any> | FieldReadFunction<any>;\n  buyVolumeUsd?: FieldPolicy<any> | FieldReadFunction<any>;\n  dailyActivity?: FieldPolicy<any> | FieldReadFunction<any>;\n  lendCount?: FieldPolicy<any> | FieldReadFunction<any>;\n  lendVolumeUsd?: FieldPolicy<any> | FieldReadFunction<any>;\n  sellCount?: FieldPolicy<any> | FieldReadFunction<any>;\n  sellVolumeUsd?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type WatchedNftNotificationKeySpecifier = (\n  | 'amount'\n  | 'createdOn'\n  | 'currency'\n  | 'id'\n  | 'kind'\n  | 'nft'\n  | 'notificationType'\n  | 'previousAmount'\n  | 'readOn'\n  | 'receiver'\n  | 'receiverName'\n  | 'sender'\n  | 'senderName'\n  | 'user'\n  | WatchedNftNotificationKeySpecifier\n)[];\nexport type WatchedNftNotificationFieldPolicy = {\n  amount?: FieldPolicy<any> | FieldReadFunction<any>;\n  createdOn?: FieldPolicy<any> | FieldReadFunction<any>;\n  currency?: FieldPolicy<any> | FieldReadFunction<any>;\n  id?: FieldPolicy<any> | FieldReadFunction<any>;\n  kind?: FieldPolicy<any> | FieldReadFunction<any>;\n  nft?: FieldPolicy<any> | FieldReadFunction<any>;\n  notificationType?: FieldPolicy<any> | FieldReadFunction<any>;\n  previousAmount?: FieldPolicy<any> | FieldReadFunction<any>;\n  readOn?: FieldPolicy<any> | FieldReadFunction<any>;\n  receiver?: FieldPolicy<any> | FieldReadFunction<any>;\n  receiverName?: FieldPolicy<any> | FieldReadFunction<any>;\n  sender?: FieldPolicy<any> | FieldReadFunction<any>;\n  senderName?: FieldPolicy<any> | FieldReadFunction<any>;\n  user?: FieldPolicy<any> | FieldReadFunction<any>;\n};\nexport type StrictTypedTypePolicies = {\n  ActiveOfferNotification?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | ActiveOfferNotificationKeySpecifier\n      | (() => undefined | ActiveOfferNotificationKeySpecifier);\n    fields?: ActiveOfferNotificationFieldPolicy;\n  };\n  Activity?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | ActivityKeySpecifier | (() => undefined | ActivityKeySpecifier);\n    fields?: ActivityFieldPolicy;\n  };\n  ActivityUpdate?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | ActivityUpdateKeySpecifier | (() => undefined | ActivityUpdateKeySpecifier);\n    fields?: ActivityUpdateFieldPolicy;\n  };\n  AddressProfile?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | AddressProfileKeySpecifier | (() => undefined | AddressProfileKeySpecifier);\n    fields?: AddressProfileFieldPolicy;\n  };\n  ApprovalExposure?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | ApprovalExposureKeySpecifier\n      | (() => undefined | ApprovalExposureKeySpecifier);\n    fields?: ApprovalExposureFieldPolicy;\n  };\n  ApprovalExposures?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | ApprovalExposuresKeySpecifier\n      | (() => undefined | ApprovalExposuresKeySpecifier);\n    fields?: ApprovalExposuresFieldPolicy;\n  };\n  Artist?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | ArtistKeySpecifier | (() => undefined | ArtistKeySpecifier);\n    fields?: ArtistFieldPolicy;\n  };\n  ArtistCatalogEntry?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | ArtistCatalogEntryKeySpecifier\n      | (() => undefined | ArtistCatalogEntryKeySpecifier);\n    fields?: ArtistCatalogEntryFieldPolicy;\n  };\n  ArtistCatalogEntryConnection?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | ArtistCatalogEntryConnectionKeySpecifier\n      | (() => undefined | ArtistCatalogEntryConnectionKeySpecifier);\n    fields?: ArtistCatalogEntryConnectionFieldPolicy;\n  };\n  ArtistCatalogEntryEdge?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | ArtistCatalogEntryEdgeKeySpecifier\n      | (() => undefined | ArtistCatalogEntryEdgeKeySpecifier);\n    fields?: ArtistCatalogEntryEdgeFieldPolicy;\n  };\n  ArtistConnection?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | ArtistConnectionKeySpecifier\n      | (() => undefined | ArtistConnectionKeySpecifier);\n    fields?: ArtistConnectionFieldPolicy;\n  };\n  ArtistEdge?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | ArtistEdgeKeySpecifier | (() => undefined | ArtistEdgeKeySpecifier);\n    fields?: ArtistEdgeFieldPolicy;\n  };\n  ArtistHolder?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | ArtistHolderKeySpecifier | (() => undefined | ArtistHolderKeySpecifier);\n    fields?: ArtistHolderFieldPolicy;\n  };\n  ArtistHolderConnection?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | ArtistHolderConnectionKeySpecifier\n      | (() => undefined | ArtistHolderConnectionKeySpecifier);\n    fields?: ArtistHolderConnectionFieldPolicy;\n  };\n  ArtistHolderEdge?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | ArtistHolderEdgeKeySpecifier\n      | (() => undefined | ArtistHolderEdgeKeySpecifier);\n    fields?: ArtistHolderEdgeFieldPolicy;\n  };\n  ArtistHolderInsights?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | ArtistHolderInsightsKeySpecifier\n      | (() => undefined | ArtistHolderInsightsKeySpecifier);\n    fields?: ArtistHolderInsightsFieldPolicy;\n  };\n  ArtistHolderPopulationConnection?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | ArtistHolderPopulationConnectionKeySpecifier\n      | (() => undefined | ArtistHolderPopulationConnectionKeySpecifier);\n    fields?: ArtistHolderPopulationConnectionFieldPolicy;\n  };\n  ArtistHolderSizeBucket?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | ArtistHolderSizeBucketKeySpecifier\n      | (() => undefined | ArtistHolderSizeBucketKeySpecifier);\n    fields?: ArtistHolderSizeBucketFieldPolicy;\n  };\n  ArtistHolderV2?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | ArtistHolderV2KeySpecifier | (() => undefined | ArtistHolderV2KeySpecifier);\n    fields?: ArtistHolderV2FieldPolicy;\n  };\n  ArtistHolderV2Connection?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | ArtistHolderV2ConnectionKeySpecifier\n      | (() => undefined | ArtistHolderV2ConnectionKeySpecifier);\n    fields?: ArtistHolderV2ConnectionFieldPolicy;\n  };\n  ArtistHolderV2Edge?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | ArtistHolderV2EdgeKeySpecifier\n      | (() => undefined | ArtistHolderV2EdgeKeySpecifier);\n    fields?: ArtistHolderV2EdgeFieldPolicy;\n  };\n  ArtistHolding?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | ArtistHoldingKeySpecifier | (() => undefined | ArtistHoldingKeySpecifier);\n    fields?: ArtistHoldingFieldPolicy;\n  };\n  ArtistHoldingConnection?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | ArtistHoldingConnectionKeySpecifier\n      | (() => undefined | ArtistHoldingConnectionKeySpecifier);\n    fields?: ArtistHoldingConnectionFieldPolicy;\n  };\n  ArtistHoldingEdge?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | ArtistHoldingEdgeKeySpecifier\n      | (() => undefined | ArtistHoldingEdgeKeySpecifier);\n    fields?: ArtistHoldingEdgeFieldPolicy;\n  };\n  ArtistMarketStats?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | ArtistMarketStatsKeySpecifier\n      | (() => undefined | ArtistMarketStatsKeySpecifier);\n    fields?: ArtistMarketStatsFieldPolicy;\n  };\n  ArtistRankedHolder?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | ArtistRankedHolderKeySpecifier\n      | (() => undefined | ArtistRankedHolderKeySpecifier);\n    fields?: ArtistRankedHolderFieldPolicy;\n  };\n  ArtistRankedHolderEdge?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | ArtistRankedHolderEdgeKeySpecifier\n      | (() => undefined | ArtistRankedHolderEdgeKeySpecifier);\n    fields?: ArtistRankedHolderEdgeFieldPolicy;\n  };\n  AskCancelledNotification?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | AskCancelledNotificationKeySpecifier\n      | (() => undefined | AskCancelledNotificationKeySpecifier);\n    fields?: AskCancelledNotificationFieldPolicy;\n  };\n  AskCreatedNotification?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | AskCreatedNotificationKeySpecifier\n      | (() => undefined | AskCreatedNotificationKeySpecifier);\n    fields?: AskCreatedNotificationFieldPolicy;\n  };\n  Asset?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | AssetKeySpecifier | (() => undefined | AssetKeySpecifier);\n    fields?: AssetFieldPolicy;\n  };\n  Auction?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | AuctionKeySpecifier | (() => undefined | AuctionKeySpecifier);\n    fields?: AuctionFieldPolicy;\n  };\n  AuctionBidConfirmationNotification?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | AuctionBidConfirmationNotificationKeySpecifier\n      | (() => undefined | AuctionBidConfirmationNotificationKeySpecifier);\n    fields?: AuctionBidConfirmationNotificationFieldPolicy;\n  };\n  AuctionConnection?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | AuctionConnectionKeySpecifier\n      | (() => undefined | AuctionConnectionKeySpecifier);\n    fields?: AuctionConnectionFieldPolicy;\n  };\n  AuctionEdge?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | AuctionEdgeKeySpecifier | (() => undefined | AuctionEdgeKeySpecifier);\n    fields?: AuctionEdgeFieldPolicy;\n  };\n  AuctionEndedNotification?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | AuctionEndedNotificationKeySpecifier\n      | (() => undefined | AuctionEndedNotificationKeySpecifier);\n    fields?: AuctionEndedNotificationFieldPolicy;\n  };\n  AuctionStartedNotification?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | AuctionStartedNotificationKeySpecifier\n      | (() => undefined | AuctionStartedNotificationKeySpecifier);\n    fields?: AuctionStartedNotificationFieldPolicy;\n  };\n  AuctionWonNotification?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | AuctionWonNotificationKeySpecifier\n      | (() => undefined | AuctionWonNotificationKeySpecifier);\n    fields?: AuctionWonNotificationFieldPolicy;\n  };\n  Bid?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | BidKeySpecifier | (() => undefined | BidKeySpecifier);\n    fields?: BidFieldPolicy;\n  };\n  BidConnection?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | BidConnectionKeySpecifier | (() => undefined | BidConnectionKeySpecifier);\n    fields?: BidConnectionFieldPolicy;\n  };\n  BidEdge?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | BidEdgeKeySpecifier | (() => undefined | BidEdgeKeySpecifier);\n    fields?: BidEdgeFieldPolicy;\n  };\n  BidHistory?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | BidHistoryKeySpecifier | (() => undefined | BidHistoryKeySpecifier);\n    fields?: BidHistoryFieldPolicy;\n  };\n  BidNearListingNotification?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | BidNearListingNotificationKeySpecifier\n      | (() => undefined | BidNearListingNotificationKeySpecifier);\n    fields?: BidNearListingNotificationFieldPolicy;\n  };\n  BigIntCurrencyAmount?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | BigIntCurrencyAmountKeySpecifier\n      | (() => undefined | BigIntCurrencyAmountKeySpecifier);\n    fields?: BigIntCurrencyAmountFieldPolicy;\n  };\n  BlendLien?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | BlendLienKeySpecifier | (() => undefined | BlendLienKeySpecifier);\n    fields?: BlendLienFieldPolicy;\n  };\n  BulkNFTOrdersResult?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | BulkNFTOrdersResultKeySpecifier\n      | (() => undefined | BulkNFTOrdersResultKeySpecifier);\n    fields?: BulkNFTOrdersResultFieldPolicy;\n  };\n  BuyNowPayLaterOrder?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | BuyNowPayLaterOrderKeySpecifier\n      | (() => undefined | BuyNowPayLaterOrderKeySpecifier);\n    fields?: BuyNowPayLaterOrderFieldPolicy;\n  };\n  CancelAllOrdersCalldata?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | CancelAllOrdersCalldataKeySpecifier\n      | (() => undefined | CancelAllOrdersCalldataKeySpecifier);\n    fields?: CancelAllOrdersCalldataFieldPolicy;\n  };\n  CancelTradeOrdersResult?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | CancelTradeOrdersResultKeySpecifier\n      | (() => undefined | CancelTradeOrdersResultKeySpecifier);\n    fields?: CancelTradeOrdersResultFieldPolicy;\n  };\n  Collection?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | CollectionKeySpecifier | (() => undefined | CollectionKeySpecifier);\n    fields?: CollectionFieldPolicy;\n  };\n  CollectionConnection?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | CollectionConnectionKeySpecifier\n      | (() => undefined | CollectionConnectionKeySpecifier);\n    fields?: CollectionConnectionFieldPolicy;\n  };\n  CollectionEdge?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | CollectionEdgeKeySpecifier | (() => undefined | CollectionEdgeKeySpecifier);\n    fields?: CollectionEdgeFieldPolicy;\n  };\n  CollectionEventsCountByDayAndCurrency?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | CollectionEventsCountByDayAndCurrencyKeySpecifier\n      | (() => undefined | CollectionEventsCountByDayAndCurrencyKeySpecifier);\n    fields?: CollectionEventsCountByDayAndCurrencyFieldPolicy;\n  };\n  CollectionHolderStatistics?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | CollectionHolderStatisticsKeySpecifier\n      | (() => undefined | CollectionHolderStatisticsKeySpecifier);\n    fields?: CollectionHolderStatisticsFieldPolicy;\n  };\n  CollectionLoansData?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | CollectionLoansDataKeySpecifier\n      | (() => undefined | CollectionLoansDataKeySpecifier);\n    fields?: CollectionLoansDataFieldPolicy;\n  };\n  CollectionMarketDepth?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | CollectionMarketDepthKeySpecifier\n      | (() => undefined | CollectionMarketDepthKeySpecifier);\n    fields?: CollectionMarketDepthFieldPolicy;\n  };\n  CollectionOffer?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | CollectionOfferKeySpecifier\n      | (() => undefined | CollectionOfferKeySpecifier);\n    fields?: CollectionOfferFieldPolicy;\n  };\n  CollectionOfferStatistics?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | CollectionOfferStatisticsKeySpecifier\n      | (() => undefined | CollectionOfferStatisticsKeySpecifier);\n    fields?: CollectionOfferStatisticsFieldPolicy;\n  };\n  CollectionOrder?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | CollectionOrderKeySpecifier\n      | (() => undefined | CollectionOrderKeySpecifier);\n    fields?: CollectionOrderFieldPolicy;\n  };\n  CollectionStatistics?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | CollectionStatisticsKeySpecifier\n      | (() => undefined | CollectionStatisticsKeySpecifier);\n    fields?: CollectionStatisticsFieldPolicy;\n  };\n  CollectionValuation?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | CollectionValuationKeySpecifier\n      | (() => undefined | CollectionValuationKeySpecifier);\n    fields?: CollectionValuationFieldPolicy;\n  };\n  CollectorsAlsoBought?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | CollectorsAlsoBoughtKeySpecifier\n      | (() => undefined | CollectorsAlsoBoughtKeySpecifier);\n    fields?: CollectorsAlsoBoughtFieldPolicy;\n  };\n  ContractData?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | ContractDataKeySpecifier | (() => undefined | ContractDataKeySpecifier);\n    fields?: ContractDataFieldPolicy;\n  };\n  Currency?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | CurrencyKeySpecifier | (() => undefined | CurrencyKeySpecifier);\n    fields?: CurrencyFieldPolicy;\n  };\n  CurrencyAmount?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | CurrencyAmountKeySpecifier | (() => undefined | CurrencyAmountKeySpecifier);\n    fields?: CurrencyAmountFieldPolicy;\n  };\n  CurrencyConnection?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | CurrencyConnectionKeySpecifier\n      | (() => undefined | CurrencyConnectionKeySpecifier);\n    fields?: CurrencyConnectionFieldPolicy;\n  };\n  CurrencyEdge?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | CurrencyEdgeKeySpecifier | (() => undefined | CurrencyEdgeKeySpecifier);\n    fields?: CurrencyEdgeFieldPolicy;\n  };\n  Deal?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | DealKeySpecifier | (() => undefined | DealKeySpecifier);\n    fields?: DealFieldPolicy;\n  };\n  DealConnection?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | DealConnectionKeySpecifier | (() => undefined | DealConnectionKeySpecifier);\n    fields?: DealConnectionFieldPolicy;\n  };\n  DealEdge?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | DealEdgeKeySpecifier | (() => undefined | DealEdgeKeySpecifier);\n    fields?: DealEdgeFieldPolicy;\n  };\n  DealExpirationReminderNotification?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | DealExpirationReminderNotificationKeySpecifier\n      | (() => undefined | DealExpirationReminderNotificationKeySpecifier);\n    fields?: DealExpirationReminderNotificationFieldPolicy;\n  };\n  DealNotification?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | DealNotificationKeySpecifier\n      | (() => undefined | DealNotificationKeySpecifier);\n    fields?: DealNotificationFieldPolicy;\n  };\n  DealReadinessBlocker?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | DealReadinessBlockerKeySpecifier\n      | (() => undefined | DealReadinessBlockerKeySpecifier);\n    fields?: DealReadinessBlockerFieldPolicy;\n  };\n  DealReadinessResult?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | DealReadinessResultKeySpecifier\n      | (() => undefined | DealReadinessResultKeySpecifier);\n    fields?: DealReadinessResultFieldPolicy;\n  };\n  Delegation?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | DelegationKeySpecifier | (() => undefined | DelegationKeySpecifier);\n    fields?: DelegationFieldPolicy;\n  };\n  DelegationConnection?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | DelegationConnectionKeySpecifier\n      | (() => undefined | DelegationConnectionKeySpecifier);\n    fields?: DelegationConnectionFieldPolicy;\n  };\n  DelegationEdge?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | DelegationEdgeKeySpecifier | (() => undefined | DelegationEdgeKeySpecifier);\n    fields?: DelegationEdgeFieldPolicy;\n  };\n  Edition?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | EditionKeySpecifier | (() => undefined | EditionKeySpecifier);\n    fields?: EditionFieldPolicy;\n  };\n  EditionConnection?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | EditionConnectionKeySpecifier\n      | (() => undefined | EditionConnectionKeySpecifier);\n    fields?: EditionConnectionFieldPolicy;\n  };\n  EditionEdge?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | EditionEdgeKeySpecifier | (() => undefined | EditionEdgeKeySpecifier);\n    fields?: EditionEdgeFieldPolicy;\n  };\n  EditionNFTConnection?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | EditionNFTConnectionKeySpecifier\n      | (() => undefined | EditionNFTConnectionKeySpecifier);\n    fields?: EditionNFTConnectionFieldPolicy;\n  };\n  EditionNFTEdge?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | EditionNFTEdgeKeySpecifier | (() => undefined | EditionNFTEdgeKeySpecifier);\n    fields?: EditionNFTEdgeFieldPolicy;\n  };\n  EditionStatistics?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | EditionStatisticsKeySpecifier\n      | (() => undefined | EditionStatisticsKeySpecifier);\n    fields?: EditionStatisticsFieldPolicy;\n  };\n  Event?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | EventKeySpecifier | (() => undefined | EventKeySpecifier);\n    fields?: EventFieldPolicy;\n  };\n  EventConnection?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | EventConnectionKeySpecifier\n      | (() => undefined | EventConnectionKeySpecifier);\n    fields?: EventConnectionFieldPolicy;\n  };\n  EventEdge?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | EventEdgeKeySpecifier | (() => undefined | EventEdgeKeySpecifier);\n    fields?: EventEdgeFieldPolicy;\n  };\n  ExposedNft?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | ExposedNftKeySpecifier | (() => undefined | ExposedNftKeySpecifier);\n    fields?: ExposedNftFieldPolicy;\n  };\n  ExtraSeaportData?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | ExtraSeaportDataKeySpecifier\n      | (() => undefined | ExtraSeaportDataKeySpecifier);\n    fields?: ExtraSeaportDataFieldPolicy;\n  };\n  FloatStatHistory?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | FloatStatHistoryKeySpecifier\n      | (() => undefined | FloatStatHistoryKeySpecifier);\n    fields?: FloatStatHistoryFieldPolicy;\n  };\n  FulfillManyBidOrdersCalldata?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | FulfillManyBidOrdersCalldataKeySpecifier\n      | (() => undefined | FulfillManyBidOrdersCalldataKeySpecifier);\n    fields?: FulfillManyBidOrdersCalldataFieldPolicy;\n  };\n  FulfillManyOrdersCalldata?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | FulfillManyOrdersCalldataKeySpecifier\n      | (() => undefined | FulfillManyOrdersCalldataKeySpecifier);\n    fields?: FulfillManyOrdersCalldataFieldPolicy;\n  };\n  Gallery?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | GalleryKeySpecifier | (() => undefined | GalleryKeySpecifier);\n    fields?: GalleryFieldPolicy;\n  };\n  GalleryWork?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | GalleryWorkKeySpecifier | (() => undefined | GalleryWorkKeySpecifier);\n    fields?: GalleryWorkFieldPolicy;\n  };\n  GlobalSearchResult?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | GlobalSearchResultKeySpecifier\n      | (() => undefined | GlobalSearchResultKeySpecifier);\n    fields?: GlobalSearchResultFieldPolicy;\n  };\n  GlobalSearchResultAccount?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | GlobalSearchResultAccountKeySpecifier\n      | (() => undefined | GlobalSearchResultAccountKeySpecifier);\n    fields?: GlobalSearchResultAccountFieldPolicy;\n  };\n  GlobalSearchResultArtist?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | GlobalSearchResultArtistKeySpecifier\n      | (() => undefined | GlobalSearchResultArtistKeySpecifier);\n    fields?: GlobalSearchResultArtistFieldPolicy;\n  };\n  GlobalSearchResultCollection?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | GlobalSearchResultCollectionKeySpecifier\n      | (() => undefined | GlobalSearchResultCollectionKeySpecifier);\n    fields?: GlobalSearchResultCollectionFieldPolicy;\n  };\n  GlobalSearchResultNFT?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | GlobalSearchResultNFTKeySpecifier\n      | (() => undefined | GlobalSearchResultNFTKeySpecifier);\n    fields?: GlobalSearchResultNFTFieldPolicy;\n  };\n  GlobalSearchV2ResultAccount?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | GlobalSearchV2ResultAccountKeySpecifier\n      | (() => undefined | GlobalSearchV2ResultAccountKeySpecifier);\n    fields?: GlobalSearchV2ResultAccountFieldPolicy;\n  };\n  GlobalSearchV2ResultArtist?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | GlobalSearchV2ResultArtistKeySpecifier\n      | (() => undefined | GlobalSearchV2ResultArtistKeySpecifier);\n    fields?: GlobalSearchV2ResultArtistFieldPolicy;\n  };\n  GlobalSearchV2ResultCollection?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | GlobalSearchV2ResultCollectionKeySpecifier\n      | (() => undefined | GlobalSearchV2ResultCollectionKeySpecifier);\n    fields?: GlobalSearchV2ResultCollectionFieldPolicy;\n  };\n  GlobalSearchV2ResultEdition?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | GlobalSearchV2ResultEditionKeySpecifier\n      | (() => undefined | GlobalSearchV2ResultEditionKeySpecifier);\n    fields?: GlobalSearchV2ResultEditionFieldPolicy;\n  };\n  GlobalSearchV2ResultNFT?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | GlobalSearchV2ResultNFTKeySpecifier\n      | (() => undefined | GlobalSearchV2ResultNFTKeySpecifier);\n    fields?: GlobalSearchV2ResultNFTFieldPolicy;\n  };\n  GlobalSearchV2Results?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | GlobalSearchV2ResultsKeySpecifier\n      | (() => undefined | GlobalSearchV2ResultsKeySpecifier);\n    fields?: GlobalSearchV2ResultsFieldPolicy;\n  };\n  Holder?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | HolderKeySpecifier | (() => undefined | HolderKeySpecifier);\n    fields?: HolderFieldPolicy;\n  };\n  HolderConnection?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | HolderConnectionKeySpecifier\n      | (() => undefined | HolderConnectionKeySpecifier);\n    fields?: HolderConnectionFieldPolicy;\n  };\n  HolderEdge?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | HolderEdgeKeySpecifier | (() => undefined | HolderEdgeKeySpecifier);\n    fields?: HolderEdgeFieldPolicy;\n  };\n  ItemLoanOfferBook?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | ItemLoanOfferBookKeySpecifier\n      | (() => undefined | ItemLoanOfferBookKeySpecifier);\n    fields?: ItemLoanOfferBookFieldPolicy;\n  };\n  ItemLoanOption?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | ItemLoanOptionKeySpecifier | (() => undefined | ItemLoanOptionKeySpecifier);\n    fields?: ItemLoanOptionFieldPolicy;\n  };\n  ItemLoanOptionConnection?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | ItemLoanOptionConnectionKeySpecifier\n      | (() => undefined | ItemLoanOptionConnectionKeySpecifier);\n    fields?: ItemLoanOptionConnectionFieldPolicy;\n  };\n  ItemLoanOptionEdge?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | ItemLoanOptionEdgeKeySpecifier\n      | (() => undefined | ItemLoanOptionEdgeKeySpecifier);\n    fields?: ItemLoanOptionEdgeFieldPolicy;\n  };\n  LendingMarketCurrencyAmount?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | LendingMarketCurrencyAmountKeySpecifier\n      | (() => undefined | LendingMarketCurrencyAmountKeySpecifier);\n    fields?: LendingMarketCurrencyAmountFieldPolicy;\n  };\n  LendingMarketPeriodStatistics?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | LendingMarketPeriodStatisticsKeySpecifier\n      | (() => undefined | LendingMarketPeriodStatisticsKeySpecifier);\n    fields?: LendingMarketPeriodStatisticsFieldPolicy;\n  };\n  LendingMarketPulse?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | LendingMarketPulseKeySpecifier\n      | (() => undefined | LendingMarketPulseKeySpecifier);\n    fields?: LendingMarketPulseFieldPolicy;\n  };\n  LendingMarketStatistics?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | LendingMarketStatisticsKeySpecifier\n      | (() => undefined | LendingMarketStatisticsKeySpecifier);\n    fields?: LendingMarketStatisticsFieldPolicy;\n  };\n  LinkWalletAcceptedNotification?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | LinkWalletAcceptedNotificationKeySpecifier\n      | (() => undefined | LinkWalletAcceptedNotificationKeySpecifier);\n    fields?: LinkWalletAcceptedNotificationFieldPolicy;\n  };\n  LinkWalletRequestedNotification?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | LinkWalletRequestedNotificationKeySpecifier\n      | (() => undefined | LinkWalletRequestedNotificationKeySpecifier);\n    fields?: LinkWalletRequestedNotificationFieldPolicy;\n  };\n  LinkedWallets?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | LinkedWalletsKeySpecifier | (() => undefined | LinkedWalletsKeySpecifier);\n    fields?: LinkedWalletsFieldPolicy;\n  };\n  Listing?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | ListingKeySpecifier | (() => undefined | ListingKeySpecifier);\n    fields?: ListingFieldPolicy;\n  };\n  ListingConnection?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | ListingConnectionKeySpecifier\n      | (() => undefined | ListingConnectionKeySpecifier);\n    fields?: ListingConnectionFieldPolicy;\n  };\n  ListingEdge?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | ListingEdgeKeySpecifier | (() => undefined | ListingEdgeKeySpecifier);\n    fields?: ListingEdgeFieldPolicy;\n  };\n  Loan?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | LoanKeySpecifier | (() => undefined | LoanKeySpecifier);\n    fields?: LoanFieldPolicy;\n  };\n  LoanActivitiesStatisticsByMonth?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | LoanActivitiesStatisticsByMonthKeySpecifier\n      | (() => undefined | LoanActivitiesStatisticsByMonthKeySpecifier);\n    fields?: LoanActivitiesStatisticsByMonthFieldPolicy;\n  };\n  LoanActivity?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | LoanActivityKeySpecifier | (() => undefined | LoanActivityKeySpecifier);\n    fields?: LoanActivityFieldPolicy;\n  };\n  LoanActivityConnection?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | LoanActivityConnectionKeySpecifier\n      | (() => undefined | LoanActivityConnectionKeySpecifier);\n    fields?: LoanActivityConnectionFieldPolicy;\n  };\n  LoanActivityEdge?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | LoanActivityEdgeKeySpecifier\n      | (() => undefined | LoanActivityEdgeKeySpecifier);\n    fields?: LoanActivityEdgeFieldPolicy;\n  };\n  LoanAuctioned?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | LoanAuctionedKeySpecifier | (() => undefined | LoanAuctionedKeySpecifier);\n    fields?: LoanAuctionedFieldPolicy;\n  };\n  LoanAuctionedNotification?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | LoanAuctionedNotificationKeySpecifier\n      | (() => undefined | LoanAuctionedNotificationKeySpecifier);\n    fields?: LoanAuctionedNotificationFieldPolicy;\n  };\n  LoanBookDurationCount?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | LoanBookDurationCountKeySpecifier\n      | (() => undefined | LoanBookDurationCountKeySpecifier);\n    fields?: LoanBookDurationCountFieldPolicy;\n  };\n  LoanDeal?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | LoanDealKeySpecifier | (() => undefined | LoanDealKeySpecifier);\n    fields?: LoanDealFieldPolicy;\n  };\n  LoanDefaultReminderNotification?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | LoanDefaultReminderNotificationKeySpecifier\n      | (() => undefined | LoanDefaultReminderNotificationKeySpecifier);\n    fields?: LoanDefaultReminderNotificationFieldPolicy;\n  };\n  LoanDefaulted?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | LoanDefaultedKeySpecifier | (() => undefined | LoanDefaultedKeySpecifier);\n    fields?: LoanDefaultedFieldPolicy;\n  };\n  LoanDefaultedNotification?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | LoanDefaultedNotificationKeySpecifier\n      | (() => undefined | LoanDefaultedNotificationKeySpecifier);\n    fields?: LoanDefaultedNotificationFieldPolicy;\n  };\n  LoanEvent?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | LoanEventKeySpecifier | (() => undefined | LoanEventKeySpecifier);\n    fields?: LoanEventFieldPolicy;\n  };\n  LoanEventConnection?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | LoanEventConnectionKeySpecifier\n      | (() => undefined | LoanEventConnectionKeySpecifier);\n    fields?: LoanEventConnectionFieldPolicy;\n  };\n  LoanEventEdge?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | LoanEventEdgeKeySpecifier | (() => undefined | LoanEventEdgeKeySpecifier);\n    fields?: LoanEventEdgeFieldPolicy;\n  };\n  LoanExtended?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | LoanExtendedKeySpecifier | (() => undefined | LoanExtendedKeySpecifier);\n    fields?: LoanExtendedFieldPolicy;\n  };\n  LoanExtendedNotification?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | LoanExtendedNotificationKeySpecifier\n      | (() => undefined | LoanExtendedNotificationKeySpecifier);\n    fields?: LoanExtendedNotificationFieldPolicy;\n  };\n  LoanForeclosed?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | LoanForeclosedKeySpecifier | (() => undefined | LoanForeclosedKeySpecifier);\n    fields?: LoanForeclosedFieldPolicy;\n  };\n  LoanHistoryItem?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | LoanHistoryItemKeySpecifier\n      | (() => undefined | LoanHistoryItemKeySpecifier);\n    fields?: LoanHistoryItemFieldPolicy;\n  };\n  LoanInitiated?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | LoanInitiatedKeySpecifier | (() => undefined | LoanInitiatedKeySpecifier);\n    fields?: LoanInitiatedFieldPolicy;\n  };\n  LoanInitiatedNotification?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | LoanInitiatedNotificationKeySpecifier\n      | (() => undefined | LoanInitiatedNotificationKeySpecifier);\n    fields?: LoanInitiatedNotificationFieldPolicy;\n  };\n  LoanListingEvent?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | LoanListingEventKeySpecifier\n      | (() => undefined | LoanListingEventKeySpecifier);\n    fields?: LoanListingEventFieldPolicy;\n  };\n  LoanOfferCompetitionPreview?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | LoanOfferCompetitionPreviewKeySpecifier\n      | (() => undefined | LoanOfferCompetitionPreviewKeySpecifier);\n    fields?: LoanOfferCompetitionPreviewFieldPolicy;\n  };\n  LoanOfferCompetitionReference?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | LoanOfferCompetitionReferenceKeySpecifier\n      | (() => undefined | LoanOfferCompetitionReferenceKeySpecifier);\n    fields?: LoanOfferCompetitionReferenceFieldPolicy;\n  };\n  LoanOptionAllocation?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | LoanOptionAllocationKeySpecifier\n      | (() => undefined | LoanOptionAllocationKeySpecifier);\n    fields?: LoanOptionAllocationFieldPolicy;\n  };\n  LoanPayment?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | LoanPaymentKeySpecifier | (() => undefined | LoanPaymentKeySpecifier);\n    fields?: LoanPaymentFieldPolicy;\n  };\n  LoanRefinanced?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | LoanRefinancedKeySpecifier | (() => undefined | LoanRefinancedKeySpecifier);\n    fields?: LoanRefinancedFieldPolicy;\n  };\n  LoanRefinancedFromOffers?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | LoanRefinancedFromOffersKeySpecifier\n      | (() => undefined | LoanRefinancedFromOffersKeySpecifier);\n    fields?: LoanRefinancedFromOffersFieldPolicy;\n  };\n  LoanRefinancedNotification?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | LoanRefinancedNotificationKeySpecifier\n      | (() => undefined | LoanRefinancedNotificationKeySpecifier);\n    fields?: LoanRefinancedNotificationFieldPolicy;\n  };\n  LoanRepaid?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | LoanRepaidKeySpecifier | (() => undefined | LoanRepaidKeySpecifier);\n    fields?: LoanRepaidFieldPolicy;\n  };\n  LoanRepaidNotification?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | LoanRepaidNotificationKeySpecifier\n      | (() => undefined | LoanRepaidNotificationKeySpecifier);\n    fields?: LoanRepaidNotificationFieldPolicy;\n  };\n  LoanSentToAuction?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | LoanSentToAuctionKeySpecifier\n      | (() => undefined | LoanSentToAuctionKeySpecifier);\n    fields?: LoanSentToAuctionFieldPolicy;\n  };\n  LoansData?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | LoansDataKeySpecifier | (() => undefined | LoansDataKeySpecifier);\n    fields?: LoansDataFieldPolicy;\n  };\n  LostSource?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | LostSourceKeySpecifier | (() => undefined | LostSourceKeySpecifier);\n    fields?: LostSourceFieldPolicy;\n  };\n  LostSourceNotification?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | LostSourceNotificationKeySpecifier\n      | (() => undefined | LostSourceNotificationKeySpecifier);\n    fields?: LostSourceNotificationFieldPolicy;\n  };\n  MarketDepthLevel?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | MarketDepthLevelKeySpecifier\n      | (() => undefined | MarketDepthLevelKeySpecifier);\n    fields?: MarketDepthLevelFieldPolicy;\n  };\n  MarketOverview?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | MarketOverviewKeySpecifier | (() => undefined | MarketOverviewKeySpecifier);\n    fields?: MarketOverviewFieldPolicy;\n  };\n  MarketOverviewBuyer?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | MarketOverviewBuyerKeySpecifier\n      | (() => undefined | MarketOverviewBuyerKeySpecifier);\n    fields?: MarketOverviewBuyerFieldPolicy;\n  };\n  MarketOverviewCollection?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | MarketOverviewCollectionKeySpecifier\n      | (() => undefined | MarketOverviewCollectionKeySpecifier);\n    fields?: MarketOverviewCollectionFieldPolicy;\n  };\n  MarketOverviewWallet?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | MarketOverviewWalletKeySpecifier\n      | (() => undefined | MarketOverviewWalletKeySpecifier);\n    fields?: MarketOverviewWalletFieldPolicy;\n  };\n  MultiSourceLoan?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | MultiSourceLoanKeySpecifier\n      | (() => undefined | MultiSourceLoanKeySpecifier);\n    fields?: MultiSourceLoanFieldPolicy;\n  };\n  MultiSourceLoanConnection?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | MultiSourceLoanConnectionKeySpecifier\n      | (() => undefined | MultiSourceLoanConnectionKeySpecifier);\n    fields?: MultiSourceLoanConnectionFieldPolicy;\n  };\n  MultiSourceLoanEdge?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | MultiSourceLoanEdgeKeySpecifier\n      | (() => undefined | MultiSourceLoanEdgeKeySpecifier);\n    fields?: MultiSourceLoanEdgeFieldPolicy;\n  };\n  MultiSourceLoanHistory?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | MultiSourceLoanHistoryKeySpecifier\n      | (() => undefined | MultiSourceLoanHistoryKeySpecifier);\n    fields?: MultiSourceLoanHistoryFieldPolicy;\n  };\n  MultipleTraitOrder?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | MultipleTraitOrderKeySpecifier\n      | (() => undefined | MultipleTraitOrderKeySpecifier);\n    fields?: MultipleTraitOrderFieldPolicy;\n  };\n  Mutation?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | MutationKeySpecifier | (() => undefined | MutationKeySpecifier);\n    fields?: MutationFieldPolicy;\n  };\n  NFT?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | NFTKeySpecifier | (() => undefined | NFTKeySpecifier);\n    fields?: NFTFieldPolicy;\n  };\n  NFTConnection?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | NFTConnectionKeySpecifier | (() => undefined | NFTConnectionKeySpecifier);\n    fields?: NFTConnectionFieldPolicy;\n  };\n  NFTEdge?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | NFTEdgeKeySpecifier | (() => undefined | NFTEdgeKeySpecifier);\n    fields?: NFTEdgeFieldPolicy;\n  };\n  NFTPriceSample?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | NFTPriceSampleKeySpecifier | (() => undefined | NFTPriceSampleKeySpecifier);\n    fields?: NFTPriceSampleFieldPolicy;\n  };\n  NewCollectionUnlistedOfferNotification?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | NewCollectionUnlistedOfferNotificationKeySpecifier\n      | (() => undefined | NewCollectionUnlistedOfferNotificationKeySpecifier);\n    fields?: NewCollectionUnlistedOfferNotificationFieldPolicy;\n  };\n  NewFollowerNotification?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | NewFollowerNotificationKeySpecifier\n      | (() => undefined | NewFollowerNotificationKeySpecifier);\n    fields?: NewFollowerNotificationFieldPolicy;\n  };\n  NewOfferNotification?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | NewOfferNotificationKeySpecifier\n      | (() => undefined | NewOfferNotificationKeySpecifier);\n    fields?: NewOfferNotificationFieldPolicy;\n  };\n  NewRenegotiationOfferNotification?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | NewRenegotiationOfferNotificationKeySpecifier\n      | (() => undefined | NewRenegotiationOfferNotificationKeySpecifier);\n    fields?: NewRenegotiationOfferNotificationFieldPolicy;\n  };\n  NftStatistics?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | NftStatisticsKeySpecifier | (() => undefined | NftStatisticsKeySpecifier);\n    fields?: NftStatisticsFieldPolicy;\n  };\n  NftStrategyDeployment?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | NftStrategyDeploymentKeySpecifier\n      | (() => undefined | NftStrategyDeploymentKeySpecifier);\n    fields?: NftStrategyDeploymentFieldPolicy;\n  };\n  NftStrategyDeploymentConnection?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | NftStrategyDeploymentConnectionKeySpecifier\n      | (() => undefined | NftStrategyDeploymentConnectionKeySpecifier);\n    fields?: NftStrategyDeploymentConnectionFieldPolicy;\n  };\n  NftStrategyDeploymentEdge?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | NftStrategyDeploymentEdgeKeySpecifier\n      | (() => undefined | NftStrategyDeploymentEdgeKeySpecifier);\n    fields?: NftStrategyDeploymentEdgeFieldPolicy;\n  };\n  NftValuation?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | NftValuationKeySpecifier | (() => undefined | NftValuationKeySpecifier);\n    fields?: NftValuationFieldPolicy;\n  };\n  Node?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | NodeKeySpecifier | (() => undefined | NodeKeySpecifier);\n    fields?: NodeFieldPolicy;\n  };\n  Notification?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | NotificationKeySpecifier | (() => undefined | NotificationKeySpecifier);\n    fields?: NotificationFieldPolicy;\n  };\n  NotificationConnection?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | NotificationConnectionKeySpecifier\n      | (() => undefined | NotificationConnectionKeySpecifier);\n    fields?: NotificationConnectionFieldPolicy;\n  };\n  NotificationEdge?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | NotificationEdgeKeySpecifier\n      | (() => undefined | NotificationEdgeKeySpecifier);\n    fields?: NotificationEdgeFieldPolicy;\n  };\n  NotificationPreference?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | NotificationPreferenceKeySpecifier\n      | (() => undefined | NotificationPreferenceKeySpecifier);\n    fields?: NotificationPreferenceFieldPolicy;\n  };\n  Offer?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | OfferKeySpecifier | (() => undefined | OfferKeySpecifier);\n    fields?: OfferFieldPolicy;\n  };\n  OfferAcceptedNotification?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | OfferAcceptedNotificationKeySpecifier\n      | (() => undefined | OfferAcceptedNotificationKeySpecifier);\n    fields?: OfferAcceptedNotificationFieldPolicy;\n  };\n  OfferConnection?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | OfferConnectionKeySpecifier\n      | (() => undefined | OfferConnectionKeySpecifier);\n    fields?: OfferConnectionFieldPolicy;\n  };\n  OfferEdge?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | OfferEdgeKeySpecifier | (() => undefined | OfferEdgeKeySpecifier);\n    fields?: OfferEdgeFieldPolicy;\n  };\n  OfferStatistics?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | OfferStatisticsKeySpecifier\n      | (() => undefined | OfferStatisticsKeySpecifier);\n    fields?: OfferStatisticsFieldPolicy;\n  };\n  OfferSteps?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | OfferStepsKeySpecifier | (() => undefined | OfferStepsKeySpecifier);\n    fields?: OfferStepsFieldPolicy;\n  };\n  OfferValidator?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | OfferValidatorKeySpecifier | (() => undefined | OfferValidatorKeySpecifier);\n    fields?: OfferValidatorFieldPolicy;\n  };\n  Order?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | OrderKeySpecifier | (() => undefined | OrderKeySpecifier);\n    fields?: OrderFieldPolicy;\n  };\n  OrderConnection?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | OrderConnectionKeySpecifier\n      | (() => undefined | OrderConnectionKeySpecifier);\n    fields?: OrderConnectionFieldPolicy;\n  };\n  OrderEdge?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | OrderEdgeKeySpecifier | (() => undefined | OrderEdgeKeySpecifier);\n    fields?: OrderEdgeFieldPolicy;\n  };\n  OrderFeeMetadata?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | OrderFeeMetadataKeySpecifier\n      | (() => undefined | OrderFeeMetadataKeySpecifier);\n    fields?: OrderFeeMetadataFieldPolicy;\n  };\n  OutbidNotification?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | OutbidNotificationKeySpecifier\n      | (() => undefined | OutbidNotificationKeySpecifier);\n    fields?: OutbidNotificationFieldPolicy;\n  };\n  OutstandingLoanStatistics?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | OutstandingLoanStatisticsKeySpecifier\n      | (() => undefined | OutstandingLoanStatisticsKeySpecifier);\n    fields?: OutstandingLoanStatisticsFieldPolicy;\n  };\n  PageInfo?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | PageInfoKeySpecifier | (() => undefined | PageInfoKeySpecifier);\n    fields?: PageInfoFieldPolicy;\n  };\n  PlatformFee?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | PlatformFeeKeySpecifier | (() => undefined | PlatformFeeKeySpecifier);\n    fields?: PlatformFeeFieldPolicy;\n  };\n  PointActivity?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | PointActivityKeySpecifier | (() => undefined | PointActivityKeySpecifier);\n    fields?: PointActivityFieldPolicy;\n  };\n  PointActivityConnection?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | PointActivityConnectionKeySpecifier\n      | (() => undefined | PointActivityConnectionKeySpecifier);\n    fields?: PointActivityConnectionFieldPolicy;\n  };\n  PointActivityEdge?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | PointActivityEdgeKeySpecifier\n      | (() => undefined | PointActivityEdgeKeySpecifier);\n    fields?: PointActivityEdgeFieldPolicy;\n  };\n  PortfolioLeaderboard?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | PortfolioLeaderboardKeySpecifier\n      | (() => undefined | PortfolioLeaderboardKeySpecifier);\n    fields?: PortfolioLeaderboardFieldPolicy;\n  };\n  PortfolioLeaderboardRow?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | PortfolioLeaderboardRowKeySpecifier\n      | (() => undefined | PortfolioLeaderboardRowKeySpecifier);\n    fields?: PortfolioLeaderboardRowFieldPolicy;\n  };\n  PortfolioValuation?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | PortfolioValuationKeySpecifier\n      | (() => undefined | PortfolioValuationKeySpecifier);\n    fields?: PortfolioValuationFieldPolicy;\n  };\n  Query?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | QueryKeySpecifier | (() => undefined | QueryKeySpecifier);\n    fields?: QueryFieldPolicy;\n  };\n  RealizedProfitDay?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | RealizedProfitDayKeySpecifier\n      | (() => undefined | RealizedProfitDayKeySpecifier);\n    fields?: RealizedProfitDayFieldPolicy;\n  };\n  Renegotiation?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | RenegotiationKeySpecifier | (() => undefined | RenegotiationKeySpecifier);\n    fields?: RenegotiationFieldPolicy;\n  };\n  RenegotiationConnection?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | RenegotiationConnectionKeySpecifier\n      | (() => undefined | RenegotiationConnectionKeySpecifier);\n    fields?: RenegotiationConnectionFieldPolicy;\n  };\n  RenegotiationEdge?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | RenegotiationEdgeKeySpecifier\n      | (() => undefined | RenegotiationEdgeKeySpecifier);\n    fields?: RenegotiationEdgeFieldPolicy;\n  };\n  RenegotiationRequest?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | RenegotiationRequestKeySpecifier\n      | (() => undefined | RenegotiationRequestKeySpecifier);\n    fields?: RenegotiationRequestFieldPolicy;\n  };\n  RenegotiationRequestedNotification?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | RenegotiationRequestedNotificationKeySpecifier\n      | (() => undefined | RenegotiationRequestedNotificationKeySpecifier);\n    fields?: RenegotiationRequestedNotificationFieldPolicy;\n  };\n  Royalty?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | RoyaltyKeySpecifier | (() => undefined | RoyaltyKeySpecifier);\n    fields?: RoyaltyFieldPolicy;\n  };\n  Sale?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | SaleKeySpecifier | (() => undefined | SaleKeySpecifier);\n    fields?: SaleFieldPolicy;\n  };\n  SaleConnection?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | SaleConnectionKeySpecifier | (() => undefined | SaleConnectionKeySpecifier);\n    fields?: SaleConnectionFieldPolicy;\n  };\n  SaleEdge?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | SaleEdgeKeySpecifier | (() => undefined | SaleEdgeKeySpecifier);\n    fields?: SaleEdgeFieldPolicy;\n  };\n  SaleHistoryItem?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | SaleHistoryItemKeySpecifier\n      | (() => undefined | SaleHistoryItemKeySpecifier);\n    fields?: SaleHistoryItemFieldPolicy;\n  };\n  SaleListingUpdate?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | SaleListingUpdateKeySpecifier\n      | (() => undefined | SaleListingUpdateKeySpecifier);\n    fields?: SaleListingUpdateFieldPolicy;\n  };\n  SearchERC20Balance?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | SearchERC20BalanceKeySpecifier\n      | (() => undefined | SearchERC20BalanceKeySpecifier);\n    fields?: SearchERC20BalanceFieldPolicy;\n  };\n  SellAndRepayOrder?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | SellAndRepayOrderKeySpecifier\n      | (() => undefined | SellAndRepayOrderKeySpecifier);\n    fields?: SellAndRepayOrderFieldPolicy;\n  };\n  SetBidOrder?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | SetBidOrderKeySpecifier | (() => undefined | SetBidOrderKeySpecifier);\n    fields?: SetBidOrderFieldPolicy;\n  };\n  SetOffer?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | SetOfferKeySpecifier | (() => undefined | SetOfferKeySpecifier);\n    fields?: SetOfferFieldPolicy;\n  };\n  SignatureRequest?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | SignatureRequestKeySpecifier\n      | (() => undefined | SignatureRequestKeySpecifier);\n    fields?: SignatureRequestFieldPolicy;\n  };\n  SingleNFTOffer?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | SingleNFTOfferKeySpecifier | (() => undefined | SingleNFTOfferKeySpecifier);\n    fields?: SingleNFTOfferFieldPolicy;\n  };\n  SingleNFTOfferCollectionOfferSetOfferTraitOfferRenegotiationConnection?: Omit<\n    TypePolicy,\n    'fields' | 'keyFields'\n  > & {\n    keyFields?:\n      | false\n      | SingleNFTOfferCollectionOfferSetOfferTraitOfferRenegotiationConnectionKeySpecifier\n      | (() =>\n          | undefined\n          | SingleNFTOfferCollectionOfferSetOfferTraitOfferRenegotiationConnectionKeySpecifier);\n    fields?: SingleNFTOfferCollectionOfferSetOfferTraitOfferRenegotiationConnectionFieldPolicy;\n  };\n  SingleNFTOfferCollectionOfferSetOfferTraitOfferRenegotiationEdge?: Omit<\n    TypePolicy,\n    'fields' | 'keyFields'\n  > & {\n    keyFields?:\n      | false\n      | SingleNFTOfferCollectionOfferSetOfferTraitOfferRenegotiationEdgeKeySpecifier\n      | (() =>\n          | undefined\n          | SingleNFTOfferCollectionOfferSetOfferTraitOfferRenegotiationEdgeKeySpecifier);\n    fields?: SingleNFTOfferCollectionOfferSetOfferTraitOfferRenegotiationEdgeFieldPolicy;\n  };\n  SingleNFTOrder?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | SingleNFTOrderKeySpecifier | (() => undefined | SingleNFTOrderKeySpecifier);\n    fields?: SingleNFTOrderFieldPolicy;\n  };\n  Source?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | SourceKeySpecifier | (() => undefined | SourceKeySpecifier);\n    fields?: SourceFieldPolicy;\n  };\n  SourceHistory?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | SourceHistoryKeySpecifier | (() => undefined | SourceHistoryKeySpecifier);\n    fields?: SourceHistoryFieldPolicy;\n  };\n  SourceLostSourceConnection?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | SourceLostSourceConnectionKeySpecifier\n      | (() => undefined | SourceLostSourceConnectionKeySpecifier);\n    fields?: SourceLostSourceConnectionFieldPolicy;\n  };\n  SourceLostSourceEdge?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | SourceLostSourceEdgeKeySpecifier\n      | (() => undefined | SourceLostSourceEdgeKeySpecifier);\n    fields?: SourceLostSourceEdgeFieldPolicy;\n  };\n  SourceStatisticsFromCollection?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | SourceStatisticsFromCollectionKeySpecifier\n      | (() => undefined | SourceStatisticsFromCollectionKeySpecifier);\n    fields?: SourceStatisticsFromCollectionFieldPolicy;\n  };\n  SourcesStatistics?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | SourcesStatisticsKeySpecifier\n      | (() => undefined | SourcesStatisticsKeySpecifier);\n    fields?: SourcesStatisticsFieldPolicy;\n  };\n  StatByCollection?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | StatByCollectionKeySpecifier\n      | (() => undefined | StatByCollectionKeySpecifier);\n    fields?: StatByCollectionFieldPolicy;\n  };\n  StealthMaskedOrder?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | StealthMaskedOrderKeySpecifier\n      | (() => undefined | StealthMaskedOrderKeySpecifier);\n    fields?: StealthMaskedOrderFieldPolicy;\n  };\n  StealthRevealedGroup?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | StealthRevealedGroupKeySpecifier\n      | (() => undefined | StealthRevealedGroupKeySpecifier);\n    fields?: StealthRevealedGroupFieldPolicy;\n  };\n  Subscription?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | SubscriptionKeySpecifier | (() => undefined | SubscriptionKeySpecifier);\n    fields?: SubscriptionFieldPolicy;\n  };\n  SwapQuote?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | SwapQuoteKeySpecifier | (() => undefined | SwapQuoteKeySpecifier);\n    fields?: SwapQuoteFieldPolicy;\n  };\n  TopHoldersInfo?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | TopHoldersInfoKeySpecifier | (() => undefined | TopHoldersInfoKeySpecifier);\n    fields?: TopHoldersInfoFieldPolicy;\n  };\n  TopLender?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | TopLenderKeySpecifier | (() => undefined | TopLenderKeySpecifier);\n    fields?: TopLenderFieldPolicy;\n  };\n  TopLenders?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | TopLendersKeySpecifier | (() => undefined | TopLendersKeySpecifier);\n    fields?: TopLendersFieldPolicy;\n  };\n  TopUpRequest?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | TopUpRequestKeySpecifier | (() => undefined | TopUpRequestKeySpecifier);\n    fields?: TopUpRequestFieldPolicy;\n  };\n  TopUpRequestedNotification?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | TopUpRequestedNotificationKeySpecifier\n      | (() => undefined | TopUpRequestedNotificationKeySpecifier);\n    fields?: TopUpRequestedNotificationFieldPolicy;\n  };\n  Trait?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | TraitKeySpecifier | (() => undefined | TraitKeySpecifier);\n    fields?: TraitFieldPolicy;\n  };\n  TraitFilterOption?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | TraitFilterOptionKeySpecifier\n      | (() => undefined | TraitFilterOptionKeySpecifier);\n    fields?: TraitFilterOptionFieldPolicy;\n  };\n  TraitKeyOption?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | TraitKeyOptionKeySpecifier | (() => undefined | TraitKeyOptionKeySpecifier);\n    fields?: TraitKeyOptionFieldPolicy;\n  };\n  TraitKeyOptionConnection?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | TraitKeyOptionConnectionKeySpecifier\n      | (() => undefined | TraitKeyOptionConnectionKeySpecifier);\n    fields?: TraitKeyOptionConnectionFieldPolicy;\n  };\n  TraitKeyOptionEdge?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | TraitKeyOptionEdgeKeySpecifier\n      | (() => undefined | TraitKeyOptionEdgeKeySpecifier);\n    fields?: TraitKeyOptionEdgeFieldPolicy;\n  };\n  TraitKeyValueOptions?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | TraitKeyValueOptionsKeySpecifier\n      | (() => undefined | TraitKeyValueOptionsKeySpecifier);\n    fields?: TraitKeyValueOptionsFieldPolicy;\n  };\n  TraitOffer?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | TraitOfferKeySpecifier | (() => undefined | TraitOfferKeySpecifier);\n    fields?: TraitOfferFieldPolicy;\n  };\n  TraitOrder?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | TraitOrderKeySpecifier | (() => undefined | TraitOrderKeySpecifier);\n    fields?: TraitOrderFieldPolicy;\n  };\n  TraitStatistics?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | TraitStatisticsKeySpecifier\n      | (() => undefined | TraitStatisticsKeySpecifier);\n    fields?: TraitStatisticsFieldPolicy;\n  };\n  TraitType?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | TraitTypeKeySpecifier | (() => undefined | TraitTypeKeySpecifier);\n    fields?: TraitTypeFieldPolicy;\n  };\n  TraitTypeConnection?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | TraitTypeConnectionKeySpecifier\n      | (() => undefined | TraitTypeConnectionKeySpecifier);\n    fields?: TraitTypeConnectionFieldPolicy;\n  };\n  TraitTypeEdge?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | TraitTypeEdgeKeySpecifier | (() => undefined | TraitTypeEdgeKeySpecifier);\n    fields?: TraitTypeEdgeFieldPolicy;\n  };\n  TraitValue?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | TraitValueKeySpecifier | (() => undefined | TraitValueKeySpecifier);\n    fields?: TraitValueFieldPolicy;\n  };\n  TraitValueConnection?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | TraitValueConnectionKeySpecifier\n      | (() => undefined | TraitValueConnectionKeySpecifier);\n    fields?: TraitValueConnectionFieldPolicy;\n  };\n  TraitValueEdge?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | TraitValueEdgeKeySpecifier | (() => undefined | TraitValueEdgeKeySpecifier);\n    fields?: TraitValueEdgeFieldPolicy;\n  };\n  TraitValueOptions?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | TraitValueOptionsKeySpecifier\n      | (() => undefined | TraitValueOptionsKeySpecifier);\n    fields?: TraitValueOptionsFieldPolicy;\n  };\n  Transfer?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | TransferKeySpecifier | (() => undefined | TransferKeySpecifier);\n    fields?: TransferFieldPolicy;\n  };\n  TypedData?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | TypedDataKeySpecifier | (() => undefined | TypedDataKeySpecifier);\n    fields?: TypedDataFieldPolicy;\n  };\n  UnderfundedOfferNotification?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | UnderfundedOfferNotificationKeySpecifier\n      | (() => undefined | UnderfundedOfferNotificationKeySpecifier);\n    fields?: UnderfundedOfferNotificationFieldPolicy;\n  };\n  User?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | UserKeySpecifier | (() => undefined | UserKeySpecifier);\n    fields?: UserFieldPolicy;\n  };\n  UserConnection?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | UserConnectionKeySpecifier | (() => undefined | UserConnectionKeySpecifier);\n    fields?: UserConnectionFieldPolicy;\n  };\n  UserEdge?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | UserEdgeKeySpecifier | (() => undefined | UserEdgeKeySpecifier);\n    fields?: UserEdgeFieldPolicy;\n  };\n  UserStatistics?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?: false | UserStatisticsKeySpecifier | (() => undefined | UserStatisticsKeySpecifier);\n    fields?: UserStatisticsFieldPolicy;\n  };\n  WalletActivityDay?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | WalletActivityDayKeySpecifier\n      | (() => undefined | WalletActivityDayKeySpecifier);\n    fields?: WalletActivityDayFieldPolicy;\n  };\n  WalletFollowEntry?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | WalletFollowEntryKeySpecifier\n      | (() => undefined | WalletFollowEntryKeySpecifier);\n    fields?: WalletFollowEntryFieldPolicy;\n  };\n  WalletFollowStats?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | WalletFollowStatsKeySpecifier\n      | (() => undefined | WalletFollowStatsKeySpecifier);\n    fields?: WalletFollowStatsFieldPolicy;\n  };\n  WalletHoldingCollection?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | WalletHoldingCollectionKeySpecifier\n      | (() => undefined | WalletHoldingCollectionKeySpecifier);\n    fields?: WalletHoldingCollectionFieldPolicy;\n  };\n  WalletHoldingsSummary?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | WalletHoldingsSummaryKeySpecifier\n      | (() => undefined | WalletHoldingsSummaryKeySpecifier);\n    fields?: WalletHoldingsSummaryFieldPolicy;\n  };\n  WalletLendingCollection?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | WalletLendingCollectionKeySpecifier\n      | (() => undefined | WalletLendingCollectionKeySpecifier);\n    fields?: WalletLendingCollectionFieldPolicy;\n  };\n  WalletLendingSummary?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | WalletLendingSummaryKeySpecifier\n      | (() => undefined | WalletLendingSummaryKeySpecifier);\n    fields?: WalletLendingSummaryFieldPolicy;\n  };\n  WalletTradingSummary?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | WalletTradingSummaryKeySpecifier\n      | (() => undefined | WalletTradingSummaryKeySpecifier);\n    fields?: WalletTradingSummaryFieldPolicy;\n  };\n  WatchedNftNotification?: Omit<TypePolicy, 'fields' | 'keyFields'> & {\n    keyFields?:\n      | false\n      | WatchedNftNotificationKeySpecifier\n      | (() => undefined | WatchedNftNotificationKeySpecifier);\n    fields?: WatchedNftNotificationFieldPolicy;\n  };\n};\nexport type TypedTypePolicies = StrictTypedTypePolicies & TypePolicies;\nexport const CurrencyInfoFragmentDoc = gql`\n  fragment CurrencyInfo on Currency {\n    address\n    decimals\n  }\n`;\nexport const CurrencyAmountInfoFragmentDoc = gql`\n  fragment CurrencyAmountInfo on CurrencyAmount {\n    amount\n    currency {\n      ...CurrencyInfo\n    }\n  }\n  ${CurrencyInfoFragmentDoc}\n`;\nexport const SaleOfferInfoFragmentDoc = gql`\n  fragment SaleOfferInfo on SingleNFTOrder {\n    id\n    netAmount\n    status\n    marketPlace\n    fees\n    maker\n    expiration\n    createdDate\n    startTime\n    hidden\n    signature\n    currencyAddress\n    nonce\n  }\n`;\nexport const ListNftDocument = gql`\n  mutation listNft($nftId: Int!) {\n    addOrUpdateListing(nftId: $nftId) {\n      id\n    }\n  }\n`;\nexport const UnlistNftDocument = gql`\n  mutation unlistNft($nftId: Int!) {\n    removeListing(nftId: $nftId) {\n      id\n    }\n  }\n`;\nexport const GenerateCollectionOfferHashDocument = gql`\n  mutation generateCollectionOfferHash($offerInput: CollectionOfferInput!) {\n    offer: generateCollectionOfferToBeSigned(offerInput: $offerInput) {\n      offerHash\n      offerId\n      lenderAddress\n      signerAddress\n      borrowerAddress\n      collateralAddress\n      fee\n      validators {\n        validator\n        arguments\n      }\n      collection {\n        contractData {\n          contractAddress\n        }\n      }\n    }\n  }\n`;\nexport const SaveCollectionOfferDocument = gql`\n  mutation saveCollectionOffer(\n    $offer: CollectionSignedOfferInput!\n    $publication: LoanOfferPublicationInput\n  ) {\n    offer: saveSignedCollectionOffer(signedOfferInput: $offer, publication: $publication) {\n      id\n      status\n      collection {\n        contractData {\n          contractAddress\n        }\n      }\n    }\n  }\n`;\nexport const HideOfferDocument = gql`\n  mutation hideOffer($contract: Address!, $id: String!) {\n    hideOffer(contractAddress: $contract, offerId: $id) {\n      id\n    }\n  }\n`;\nexport const HideOffersDocument = gql`\n  mutation hideOffers($contract: Address!, $ids: [String!]!) {\n    hideOffers(contractAddress: $contract, offerIds: $ids) {\n      id\n    }\n  }\n`;\nexport const GenerateSingleNftOfferHashDocument = gql`\n  mutation generateSingleNftOfferHash($offerInput: SingleNFTOfferInput!) {\n    offer: generateSingleNftOfferToBeSigned(offerInput: $offerInput) {\n      offerHash\n      offerId\n      lenderAddress\n      signerAddress\n      borrowerAddress\n      collateralAddress\n      fee\n      validators {\n        validator\n        arguments\n      }\n      nft {\n        tokenId\n        collection {\n          contractData {\n            contractAddress\n          }\n        }\n      }\n    }\n  }\n`;\nexport const SaveSingleNftOfferDocument = gql`\n  mutation saveSingleNftOffer(\n    $offer: SingleNFTSignedOfferInput!\n    $publication: LoanOfferPublicationInput\n  ) {\n    offer: saveSignedSingleNftOffer(signedOfferInput: $offer, publication: $publication) {\n      id\n      status\n      nft {\n        tokenId\n        collection {\n          contractData {\n            contractAddress\n          }\n        }\n      }\n    }\n  }\n`;\nexport const GenerateTraitOfferHashDocument = gql`\n  mutation generateTraitOfferHash($offerInput: TraitOfferInput!) {\n    offer: generateTraitOfferToBeSigned(offerInput: $offerInput) {\n      offerHash\n      offerId\n      lenderAddress\n      signerAddress\n      borrowerAddress\n      collateralAddress\n      fee\n      validators {\n        validator\n        arguments\n      }\n      collection {\n        contractData {\n          contractAddress\n        }\n      }\n    }\n  }\n`;\nexport const SaveTraitOfferDocument = gql`\n  mutation saveTraitOffer($offer: TraitSignedOfferInput!) {\n    offer: saveSignedTraitOffer(signedOfferInput: $offer) {\n      id\n      status\n      collection {\n        contractData {\n          contractAddress\n        }\n      }\n    }\n  }\n`;\nexport const UnhideOfferDocument = gql`\n  mutation unhideOffer($contract: Address!, $id: String!) {\n    showOffer(contractAddress: $contract, offerId: $id) {\n      id\n    }\n  }\n`;\nexport const CancelTradeOrdersDocument = gql`\n  mutation cancelTradeOrders($orderIds: [Int64!]!) {\n    cancelTradeOrders(orderIds: $orderIds) {\n      cancelledOrders {\n        id\n      }\n      cancelOrdersCalldata {\n        calldata\n        marketPlaceAddress\n      }\n    }\n  }\n`;\nexport const HideOrderDocument = gql`\n  mutation hideOrder($id: Int64!) {\n    hideOrder(orderIdInt64: $id) {\n      id\n    }\n  }\n`;\nexport const PublishBulkOrdersDocument = gql`\n  mutation publishBulkOrders($bulkInput: BulkNFTOrdersInput!) {\n    result: publishBulkOrdersForNfts(bulkInput: $bulkInput) {\n      ... on SignatureRequest {\n        key\n        typedData {\n          types\n          primaryType\n          domain\n          message\n        }\n      }\n      ... on BulkNFTOrdersResult {\n        orders {\n          id\n          nft {\n            id\n          }\n          price\n          fees\n          currencyAddress\n          marketPlace\n          status\n          startTime\n          expiration\n          maker\n          isAsk\n          nonce\n          taker\n          signature\n          marketPlaceAddress\n          evmOrder\n        }\n      }\n    }\n  }\n`;\nexport const PublishBuyNowPayLaterOrderDocument = gql`\n  mutation publishBuyNowPayLaterOrder($orderInput: BNPLOrderInput!) {\n    result: publishBuyNowPayLaterOrder(orderInput: $orderInput) {\n      ... on BuyNowPayLaterOrder {\n        id\n        status\n        signature\n        emitCalldata\n        marketPlaceAddress\n        price\n        currencyAddress\n      }\n      ... on SignatureRequest {\n        key\n        typedData {\n          types\n          primaryType\n          domain\n          message\n        }\n      }\n      ... on ExtraSeaportData {\n        extraData\n      }\n    }\n  }\n`;\nexport const PublishDealDocument = gql`\n  mutation publishDeal($dealInput: DealInput!) {\n    result: publishDealOrder(dealInput: $dealInput) {\n      ... on Deal {\n        id\n        status\n        signature\n      }\n      ... on SignatureRequest {\n        key\n        typedData {\n          types\n          primaryType\n          domain\n          message\n        }\n      }\n    }\n  }\n`;\nexport const PublishOrderForCollectionDocument = gql`\n  mutation publishOrderForCollection($orderInput: CollectionOrderInput!) {\n    result: publishOrderForCollection(orderInput: $orderInput) {\n      ... on CollectionOrder {\n        id\n        status\n        signature\n        marketPlaceAddress\n      }\n      ... on SignatureRequest {\n        key\n        typedData {\n          types\n          primaryType\n          domain\n          message\n        }\n      }\n    }\n  }\n`;\nexport const PublishOrderForNftDocument = gql`\n  mutation publishOrderForNft($orderInput: SingleNFTOrderInput!) {\n    result: publishOrderForNft(orderInput: $orderInput) {\n      ... on SingleNFTOrder {\n        id\n        status\n        signature\n        marketPlaceAddress\n      }\n      ... on SignatureRequest {\n        key\n        typedData {\n          types\n          primaryType\n          domain\n          message\n        }\n      }\n    }\n  }\n`;\nexport const PublishOrderForNftSetDocument = gql`\n  mutation publishOrderForNftSet($orderInput: NftSetOrderInput!) {\n    result: publishOrderForNftSet(orderInput: $orderInput) {\n      ... on SetBidOrder {\n        id\n        status\n        signature\n        marketPlaceAddress\n      }\n      ... on SignatureRequest {\n        key\n        typedData {\n          types\n          primaryType\n          domain\n          message\n        }\n      }\n    }\n  }\n`;\nexport const PublishOrderForTraitDocument = gql`\n  mutation publishOrderForTrait($orderInput: TraitOrderInput!) {\n    result: publishOrderForTrait(orderInput: $orderInput) {\n      ... on TraitOrder {\n        id\n        status\n        signature\n        marketPlaceAddress\n      }\n      ... on MultipleTraitOrder {\n        id\n        status\n        signature\n        marketPlaceAddress\n      }\n      ... on SignatureRequest {\n        key\n        typedData {\n          types\n          primaryType\n          domain\n          message\n        }\n      }\n    }\n  }\n`;\nexport const PublishSellAndRepayOrderDocument = gql`\n  mutation publishSellAndRepayOrder($orderInput: NFTOrderInput!) {\n    result: publishSellAndRepayOrder(orderInput: $orderInput) {\n      ... on SellAndRepayOrder {\n        id\n        status\n        signature\n        repaymentCalldata\n        marketPlaceAddress\n      }\n      ... on ExtraSeaportData {\n        extraData\n        criteriaProof\n      }\n      ... on SignatureRequest {\n        key\n        typedData {\n          types\n          primaryType\n          domain\n          message\n        }\n      }\n    }\n  }\n`;\nexport const ShowOrderDocument = gql`\n  mutation showOrder($id: Int64!) {\n    showOrder(orderIdInt64: $id) {\n      id\n    }\n  }\n`;\nexport const GenerateRenegotiationOfferHashDocument = gql`\n  mutation generateRenegotiationOfferHash($renegotiationInput: RenegotiationOfferInput!) {\n    offer: generateRenegotiationOfferToBeSigned(renegotiationInput: $renegotiationInput) {\n      loanId\n      renegotiationId\n      offerHash\n      lenderAddress\n      signerAddress\n      nft {\n        tokenId\n        collection {\n          contractData {\n            contractAddress\n          }\n        }\n      }\n    }\n  }\n`;\nexport const HideRenegotiationOfferDocument = gql`\n  mutation hideRenegotiationOffer($id: String!, $contractAddress: Address!) {\n    hideRenegotiation(renegotiationId: $id, contractAddress: $contractAddress) {\n      id\n    }\n  }\n`;\nexport const SaveRenegotiationOfferDocument = gql`\n  mutation saveRenegotiationOffer(\n    $renegotiation: SignedRenegotiationOfferInput!\n    $publication: LoanOfferPublicationInput\n    $fallbackOffer: SingleNFTSignedOfferInput\n  ) {\n    renegotiation: saveRenegotiationSignedOffer(\n      signedRenegotiationInput: $renegotiation\n      publication: $publication\n      fallbackOfferInput: $fallbackOffer\n    ) {\n      id\n      status\n    }\n  }\n`;\nexport const UnhideRenegotiationOfferDocument = gql`\n  mutation unhideRenegotiationOffer($id: String!, $contractAddress: Address!) {\n    showRenegotiation(renegotiationId: $id, contractAddress: $contractAddress) {\n      id\n    }\n  }\n`;\nexport const CollectionsDocument = gql`\n  query collections(\n    $currency: Address!\n    $collections: [Int!]\n    $standards: [TokenStandardType!]\n    $after: String\n  ) {\n    collections: listCollections(collections: $collections, standards: $standards, after: $after) {\n      pageInfo {\n        endCursor\n        hasNextPage\n      }\n      edges {\n        node {\n          id\n          name\n          slug\n          description\n          discordUrl\n          twitterUsername\n          externalUrl\n          collectionUrl\n          verified\n          wrapperCollections {\n            contractData {\n              contractAddress\n            }\n          }\n          image {\n            cacheUrl\n          }\n          bannerImage {\n            cacheUrl\n          }\n          contractData {\n            blockchain\n            contractAddress\n            createdDate\n            creatorAddress\n          }\n          statistics {\n            floorPrice {\n              ...CurrencyAmountInfo\n            }\n            floorPrice7d\n            floorPrice30d\n            bestOffer {\n              ...CurrencyAmountInfo\n            }\n            totalVolume\n            totalVolume1y\n            totalVolume3m\n            totalVolume1m\n            totalVolume1w\n            totalLoanVolume(currencyAddress: $currency)\n            totalLoanVolume1w(currencyAddress: $currency)\n            totalLoanVolume1m(currencyAddress: $currency)\n            totalLoanVolume3m(currencyAddress: $currency)\n            totalLoanVolume1y(currencyAddress: $currency)\n            numberOfPricedNfts\n            nftsCount\n            percentageInOutstandingLoans\n            repaymentRate\n          }\n        }\n      }\n    }\n  }\n  ${CurrencyAmountInfoFragmentDoc}\n`;\nexport const CollectionByContractAddressDocument = gql`\n  query collectionByContractAddress($contractAddress: Address!) {\n    collection: getCollectionsByContractAddress(contractAddress: $contractAddress) {\n      contractData {\n        contractAddress\n      }\n      wrapperCollections {\n        contractData {\n          contractAddress\n        }\n      }\n    }\n  }\n`;\nexport const CollectionsIdByContractAddressDocument = gql`\n  query collectionsIdByContractAddress($contractAddress: Address!) {\n    collections: getCollectionsByContractAddress(contractAddress: $contractAddress) {\n      id\n    }\n  }\n`;\nexport const CollectionIdBySlugDocument = gql`\n  query collectionIdBySlug($slug: String!) {\n    collection: getCollectionBySlug(slug: $slug) {\n      id\n    }\n  }\n`;\nexport const CollectionStepsByIdDocument = gql`\n  query collectionStepsById($collectionId: Int!) {\n    steps: getCollectionOfferSteps(collectionId: $collectionId) {\n      aprBpsStep\n      origFeeBpsStep\n      usdcStep\n      wethStep\n    }\n  }\n`;\nexport const ListListingsDocument = gql`\n  query listListings(\n    $collections: [Int!]\n    $userFilter: UserFilter\n    $marketplaceNames: [MarketplaceEnum!]\n    $first: Int = 24\n    $after: String\n  ) {\n    result: listListings(\n      collectionIds: $collections\n      userFilter: $userFilter\n      marketplaceNames: $marketplaceNames\n      first: $first\n      after: $after\n    ) {\n      pageInfo {\n        endCursor\n        hasNextPage\n      }\n      edges {\n        node {\n          id\n          marketplaceName\n          createdDate\n          desiredDuration\n          desiredPrincipalAddress\n          user {\n            walletAddress\n          }\n          nft {\n            id\n            tokenId\n            collection {\n              id\n              slug\n              contractData {\n                contractAddress\n              }\n            }\n          }\n        }\n      }\n    }\n  }\n`;\nexport const ListLoansDocument = gql`\n  query listLoans(\n    $borrowers: [String!] = []\n    $collections: [Int!] = []\n    $nfts: [Int!]\n    $statuses: [LoanStatusType!] = []\n    $sortBy: [LoanSortInput!] = []\n    $terms: TermsFilter\n    $orderByStatuses: Boolean\n    $loansCurrencyAddresses: [Address!]\n    $first: Int = 24\n    $after: String\n  ) {\n    loans: listLoans(\n      borrowers: $borrowers\n      collections: $collections\n      nfts: $nfts\n      statuses: $statuses\n      sortBy: $sortBy\n      terms: $terms\n      orderByStatuses: $orderByStatuses\n      currencyAddresses: $loansCurrencyAddresses\n      first: $first\n      after: $after\n    ) {\n      totalCount\n      pageInfo {\n        endCursor\n        hasNextPage\n      }\n      edges {\n        node {\n          id\n          address\n          loanId\n          timestamp\n          txHash\n          indexInBlock\n          borrowerAddress\n          principalAddress\n          startTime\n          duration\n          status\n          offer {\n            offerId\n            signerAddress\n          }\n          currency {\n            symbol\n            decimals\n            address\n          }\n          repaidActivity {\n            totalInterest\n            timestamp\n          }\n          principalAmount\n          blendedAprBps\n          totalOriginationFee\n          protocolFee\n          lenderRefinanceDisabled\n          nft {\n            id\n            name\n            tokenId\n            nftId\n            owner\n            image {\n              data\n              cacheUrl\n              contentTypeMime\n              accessTypeName\n            }\n            collection {\n              id\n              slug\n              name\n              nftsCount\n              contractData {\n                contractAddress\n              }\n            }\n          }\n          sources {\n            id\n            loanId\n            originationFee\n            principalAmount\n            lenderAddress\n            accruedInterest\n            aprBps\n            startTime\n          }\n        }\n      }\n    }\n  }\n`;\nexport const NftFlaggedByContractAddressAndTokenIdDocument = gql`\n  query nftFlaggedByContractAddressAndTokenId($contractAddress: Address!, $tokenId: BigInt!) {\n    nft: getNftByContractAddressAndTokenId(contractAddress: $contractAddress, tokenId: $tokenId) {\n      id\n      isFlagged\n      wrapsNfts {\n        id\n        isFlagged\n      }\n    }\n  }\n`;\nexport const NftIdByContractAddressAndTokenIdDocument = gql`\n  query nftIdByContractAddressAndTokenId($contractAddress: Address!, $tokenId: BigInt!) {\n    nft: getNftByContractAddressAndTokenId(contractAddress: $contractAddress, tokenId: $tokenId) {\n      id\n    }\n  }\n`;\nexport const NftIdBySlugTokenIdDocument = gql`\n  query nftIdBySlugTokenId($slug: String!, $tokenId: BigInt!) {\n    nft: getNftBySlugAndTokenId(slug: $slug, tokenId: $tokenId) {\n      id\n    }\n  }\n`;\nexport const OwnedNftsDocument = gql`\n  query ownedNfts(\n    $after: String\n    $includeInLoans: Boolean\n    $includeInStash: Boolean\n    $standards: [TokenStandardType!]\n  ) {\n    ownedNfts: listNftsFromUser(\n      after: $after\n      withLoans: $includeInLoans\n      includeInStash: $includeInStash\n      standards: $standards\n    ) {\n      pageInfo {\n        endCursor\n        hasNextPage\n      }\n      edges {\n        node {\n          id\n          collection {\n            id\n            contractData {\n              contractAddress\n            }\n            wrapperCollections {\n              contractData {\n                contractAddress\n              }\n              contractData {\n                contractAddress\n              }\n            }\n          }\n          tokenId\n          activeLoan {\n            id\n          }\n          statistics {\n            lastSale {\n              order {\n                price\n                currency {\n                  ...CurrencyInfo\n                }\n              }\n            }\n            topTraitFloorPrice {\n              ...CurrencyAmountInfo\n            }\n          }\n        }\n      }\n    }\n  }\n  ${CurrencyInfoFragmentDoc}\n  ${CurrencyAmountInfoFragmentDoc}\n`;\nexport const ListOffersDocument = gql`\n  query listOffers(\n    $borrowerAddress: String\n    $lenders: [String!]\n    $sortBy: OffersSortInput!\n    $terms: TermsFilter\n    $statuses: [OfferStatus!] = [ACTIVE, CANCELLED, INACTIVE, EXPIRED]\n    $contractAddresses: [Address!]\n    $nfts: [Int!]\n    $collections: [Int!]\n    $onlySingleNftOffers: Boolean\n    $onlyCollectionOffers: Boolean\n    $first: Int = 24\n    $after: String\n  ) {\n    result: listOffers(\n      borrowerAddress: $borrowerAddress\n      lenders: $lenders\n      sortBy: [$sortBy]\n      terms: $terms\n      nfts: $nfts\n      collections: $collections\n      onlySingleNftOffers: $onlySingleNftOffers\n      onlyCollectionOffers: $onlyCollectionOffers\n      statuses: $statuses\n      contractAddresses: $contractAddresses\n      first: $first\n      after: $after\n    ) {\n      pageInfo {\n        endCursor\n        hasNextPage\n      }\n      edges {\n        node {\n          id\n          offerId\n          lenderAddress\n          borrowerAddress\n          signerAddress\n          contractAddress\n          requiresLiquidation\n          principalAddress\n          principalAmount\n          currency {\n            symbol\n            decimals\n            address\n          }\n          aprBps\n          fee\n          capacity\n          expirationTime\n          duration\n          status\n          offerHash\n          signature\n          createdDate\n          repayment\n          hidden\n          maxSeniorRepayment\n          lenderRefinanceDisabled\n          validators {\n            arguments\n            validator\n          }\n          ... on SingleNFTOffer {\n            nft {\n              id\n              tokenId\n              collection {\n                id\n                slug\n                contractData {\n                  contractAddress\n                }\n              }\n            }\n          }\n          ... on CollectionOffer {\n            collection {\n              id\n              slug\n              contractData {\n                contractAddress\n              }\n            }\n          }\n          ... on SetOffer {\n            collection {\n              id\n              slug\n              contractData {\n                contractAddress\n              }\n            }\n          }\n          ... on TraitOffer {\n            collection {\n              id\n              slug\n              contractData {\n                contractAddress\n              }\n            }\n            traits {\n              id\n              type\n              value\n            }\n          }\n        }\n      }\n    }\n  }\n`;\nexport const BuyWithLoanListingDocument = gql`\n  query buyWithLoanListing($orderId: Int64!, $buyer: Address!) {\n    listOrdersV2(idsInt64: [$orderId], first: 1, side: ASK, taker: $buyer) {\n      edges {\n        node {\n          __typename\n          id\n          price\n          currencyAddress\n          expiration\n          status\n          isAsk\n          maker\n          taker\n          marketPlace\n          marketPlaceAddress\n          platformFees(operation: BUY_NOW_PAY_LATER) {\n            bps\n            beneficiary\n          }\n          ... on SingleNFTOrder {\n            evmOrder(integerStrings: true)\n            signature\n            nft {\n              tokenId\n              collection {\n                contractData {\n                  contractAddress\n                  blockchain\n                }\n              }\n            }\n          }\n          ... on SellAndRepayOrder {\n            repaymentCalldata\n            loan {\n              address\n              loanId\n              status\n              principalAddress\n              startTime\n              duration\n            }\n            nft {\n              tokenId\n              collection {\n                contractData {\n                  contractAddress\n                  blockchain\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n  }\n`;\nexport const GetCancelOrdersCalldataDocument = gql`\n  query getCancelOrdersCalldata($maker: Address!, $orderIds: [Int64!]!) {\n    cancelOrdersCalldata: getCancelOrdersCalldata(maker: $maker, orderIds: $orderIds) {\n      calldata\n      marketPlaceAddress\n    }\n  }\n`;\nexport const GetSaleCalldataDocument = gql`\n  query getSaleCalldata($orderId: Int64!, $nftId: Int!, $taker: Address!) {\n    saleCalldata: getOrderSaleCalldata(orderIdInt64: $orderId, nftId: $nftId, taker: $taker)\n  }\n`;\nexport const PreviewItemLoanOfferCompetitionDocument = gql`\n  query previewItemLoanOfferCompetition(\n    $offerInput: SingleNFTOfferInput!\n    $replacementIds: [String!]\n  ) {\n    preview: previewItemLoanOfferCompetition(\n      offerInput: $offerInput\n      replacementIds: $replacementIds\n    ) {\n      complete\n      qualifies\n      reason\n      replacementIds\n      references {\n        optionId\n        sourceIds\n        requiredNetPrincipal\n        maximumEaprNumerator\n        maximumEaprDenominator\n      }\n    }\n  }\n`;\nexport const PreviewRenegotiationCompetitionDocument = gql`\n  query previewRenegotiationCompetition(\n    $renegotiationInput: RenegotiationOfferInput!\n    $replacementIds: [String!]\n  ) {\n    preview: previewRenegotiationCompetition(\n      renegotiationInput: $renegotiationInput\n      replacementIds: $replacementIds\n    ) {\n      complete\n      qualifies\n      reason\n      replacementIds\n      references {\n        optionId\n        sourceIds\n        requiredNetPrincipal\n        maximumEaprNumerator\n        maximumEaprDenominator\n      }\n    }\n  }\n`;\nexport type Requester<C = {}, E = unknown> = <R, V>(\n  doc: DocumentNode,\n  vars?: V,\n  options?: C,\n) => Promise<R> | AsyncIterable<R>;\nexport function getSdk<C, E>(requester: Requester<C, E>) {\n  return {\n    listNft(variables: ListNftMutationVariables, options?: C): Promise<ListNftMutation> {\n      return requester<ListNftMutation, ListNftMutationVariables>(\n        ListNftDocument,\n        variables,\n        options,\n      ) as Promise<ListNftMutation>;\n    },\n    unlistNft(variables: UnlistNftMutationVariables, options?: C): Promise<UnlistNftMutation> {\n      return requester<UnlistNftMutation, UnlistNftMutationVariables>(\n        UnlistNftDocument,\n        variables,\n        options,\n      ) as Promise<UnlistNftMutation>;\n    },\n    generateCollectionOfferHash(\n      variables: GenerateCollectionOfferHashMutationVariables,\n      options?: C,\n    ): Promise<GenerateCollectionOfferHashMutation> {\n      return requester<\n        GenerateCollectionOfferHashMutation,\n        GenerateCollectionOfferHashMutationVariables\n      >(\n        GenerateCollectionOfferHashDocument,\n        variables,\n        options,\n      ) as Promise<GenerateCollectionOfferHashMutation>;\n    },\n    saveCollectionOffer(\n      variables: SaveCollectionOfferMutationVariables,\n      options?: C,\n    ): Promise<SaveCollectionOfferMutation> {\n      return requester<SaveCollectionOfferMutation, SaveCollectionOfferMutationVariables>(\n        SaveCollectionOfferDocument,\n        variables,\n        options,\n      ) as Promise<SaveCollectionOfferMutation>;\n    },\n    hideOffer(variables: HideOfferMutationVariables, options?: C): Promise<HideOfferMutation> {\n      return requester<HideOfferMutation, HideOfferMutationVariables>(\n        HideOfferDocument,\n        variables,\n        options,\n      ) as Promise<HideOfferMutation>;\n    },\n    hideOffers(variables: HideOffersMutationVariables, options?: C): Promise<HideOffersMutation> {\n      return requester<HideOffersMutation, HideOffersMutationVariables>(\n        HideOffersDocument,\n        variables,\n        options,\n      ) as Promise<HideOffersMutation>;\n    },\n    generateSingleNftOfferHash(\n      variables: GenerateSingleNftOfferHashMutationVariables,\n      options?: C,\n    ): Promise<GenerateSingleNftOfferHashMutation> {\n      return requester<\n        GenerateSingleNftOfferHashMutation,\n        GenerateSingleNftOfferHashMutationVariables\n      >(\n        GenerateSingleNftOfferHashDocument,\n        variables,\n        options,\n      ) as Promise<GenerateSingleNftOfferHashMutation>;\n    },\n    saveSingleNftOffer(\n      variables: SaveSingleNftOfferMutationVariables,\n      options?: C,\n    ): Promise<SaveSingleNftOfferMutation> {\n      return requester<SaveSingleNftOfferMutation, SaveSingleNftOfferMutationVariables>(\n        SaveSingleNftOfferDocument,\n        variables,\n        options,\n      ) as Promise<SaveSingleNftOfferMutation>;\n    },\n    generateTraitOfferHash(\n      variables: GenerateTraitOfferHashMutationVariables,\n      options?: C,\n    ): Promise<GenerateTraitOfferHashMutation> {\n      return requester<GenerateTraitOfferHashMutation, GenerateTraitOfferHashMutationVariables>(\n        GenerateTraitOfferHashDocument,\n        variables,\n        options,\n      ) as Promise<GenerateTraitOfferHashMutation>;\n    },\n    saveTraitOffer(\n      variables: SaveTraitOfferMutationVariables,\n      options?: C,\n    ): Promise<SaveTraitOfferMutation> {\n      return requester<SaveTraitOfferMutation, SaveTraitOfferMutationVariables>(\n        SaveTraitOfferDocument,\n        variables,\n        options,\n      ) as Promise<SaveTraitOfferMutation>;\n    },\n    unhideOffer(\n      variables: UnhideOfferMutationVariables,\n      options?: C,\n    ): Promise<UnhideOfferMutation> {\n      return requester<UnhideOfferMutation, UnhideOfferMutationVariables>(\n        UnhideOfferDocument,\n        variables,\n        options,\n      ) as Promise<UnhideOfferMutation>;\n    },\n    cancelTradeOrders(\n      variables: CancelTradeOrdersMutationVariables,\n      options?: C,\n    ): Promise<CancelTradeOrdersMutation> {\n      return requester<CancelTradeOrdersMutation, CancelTradeOrdersMutationVariables>(\n        CancelTradeOrdersDocument,\n        variables,\n        options,\n      ) as Promise<CancelTradeOrdersMutation>;\n    },\n    hideOrder(variables: HideOrderMutationVariables, options?: C): Promise<HideOrderMutation> {\n      return requester<HideOrderMutation, HideOrderMutationVariables>(\n        HideOrderDocument,\n        variables,\n        options,\n      ) as Promise<HideOrderMutation>;\n    },\n    publishBulkOrders(\n      variables: PublishBulkOrdersMutationVariables,\n      options?: C,\n    ): Promise<PublishBulkOrdersMutation> {\n      return requester<PublishBulkOrdersMutation, PublishBulkOrdersMutationVariables>(\n        PublishBulkOrdersDocument,\n        variables,\n        options,\n      ) as Promise<PublishBulkOrdersMutation>;\n    },\n    publishBuyNowPayLaterOrder(\n      variables: PublishBuyNowPayLaterOrderMutationVariables,\n      options?: C,\n    ): Promise<PublishBuyNowPayLaterOrderMutation> {\n      return requester<\n        PublishBuyNowPayLaterOrderMutation,\n        PublishBuyNowPayLaterOrderMutationVariables\n      >(\n        PublishBuyNowPayLaterOrderDocument,\n        variables,\n        options,\n      ) as Promise<PublishBuyNowPayLaterOrderMutation>;\n    },\n    publishDeal(\n      variables: PublishDealMutationVariables,\n      options?: C,\n    ): Promise<PublishDealMutation> {\n      return requester<PublishDealMutation, PublishDealMutationVariables>(\n        PublishDealDocument,\n        variables,\n        options,\n      ) as Promise<PublishDealMutation>;\n    },\n    publishOrderForCollection(\n      variables: PublishOrderForCollectionMutationVariables,\n      options?: C,\n    ): Promise<PublishOrderForCollectionMutation> {\n      return requester<\n        PublishOrderForCollectionMutation,\n        PublishOrderForCollectionMutationVariables\n      >(\n        PublishOrderForCollectionDocument,\n        variables,\n        options,\n      ) as Promise<PublishOrderForCollectionMutation>;\n    },\n    publishOrderForNft(\n      variables: PublishOrderForNftMutationVariables,\n      options?: C,\n    ): Promise<PublishOrderForNftMutation> {\n      return requester<PublishOrderForNftMutation, PublishOrderForNftMutationVariables>(\n        PublishOrderForNftDocument,\n        variables,\n        options,\n      ) as Promise<PublishOrderForNftMutation>;\n    },\n    publishOrderForNftSet(\n      variables: PublishOrderForNftSetMutationVariables,\n      options?: C,\n    ): Promise<PublishOrderForNftSetMutation> {\n      return requester<PublishOrderForNftSetMutation, PublishOrderForNftSetMutationVariables>(\n        PublishOrderForNftSetDocument,\n        variables,\n        options,\n      ) as Promise<PublishOrderForNftSetMutation>;\n    },\n    publishOrderForTrait(\n      variables: PublishOrderForTraitMutationVariables,\n      options?: C,\n    ): Promise<PublishOrderForTraitMutation> {\n      return requester<PublishOrderForTraitMutation, PublishOrderForTraitMutationVariables>(\n        PublishOrderForTraitDocument,\n        variables,\n        options,\n      ) as Promise<PublishOrderForTraitMutation>;\n    },\n    publishSellAndRepayOrder(\n      variables: PublishSellAndRepayOrderMutationVariables,\n      options?: C,\n    ): Promise<PublishSellAndRepayOrderMutation> {\n      return requester<PublishSellAndRepayOrderMutation, PublishSellAndRepayOrderMutationVariables>(\n        PublishSellAndRepayOrderDocument,\n        variables,\n        options,\n      ) as Promise<PublishSellAndRepayOrderMutation>;\n    },\n    showOrder(variables: ShowOrderMutationVariables, options?: C): Promise<ShowOrderMutation> {\n      return requester<ShowOrderMutation, ShowOrderMutationVariables>(\n        ShowOrderDocument,\n        variables,\n        options,\n      ) as Promise<ShowOrderMutation>;\n    },\n    generateRenegotiationOfferHash(\n      variables: GenerateRenegotiationOfferHashMutationVariables,\n      options?: C,\n    ): Promise<GenerateRenegotiationOfferHashMutation> {\n      return requester<\n        GenerateRenegotiationOfferHashMutation,\n        GenerateRenegotiationOfferHashMutationVariables\n      >(\n        GenerateRenegotiationOfferHashDocument,\n        variables,\n        options,\n      ) as Promise<GenerateRenegotiationOfferHashMutation>;\n    },\n    hideRenegotiationOffer(\n      variables: HideRenegotiationOfferMutationVariables,\n      options?: C,\n    ): Promise<HideRenegotiationOfferMutation> {\n      return requester<HideRenegotiationOfferMutation, HideRenegotiationOfferMutationVariables>(\n        HideRenegotiationOfferDocument,\n        variables,\n        options,\n      ) as Promise<HideRenegotiationOfferMutation>;\n    },\n    saveRenegotiationOffer(\n      variables: SaveRenegotiationOfferMutationVariables,\n      options?: C,\n    ): Promise<SaveRenegotiationOfferMutation> {\n      return requester<SaveRenegotiationOfferMutation, SaveRenegotiationOfferMutationVariables>(\n        SaveRenegotiationOfferDocument,\n        variables,\n        options,\n      ) as Promise<SaveRenegotiationOfferMutation>;\n    },\n    unhideRenegotiationOffer(\n      variables: UnhideRenegotiationOfferMutationVariables,\n      options?: C,\n    ): Promise<UnhideRenegotiationOfferMutation> {\n      return requester<UnhideRenegotiationOfferMutation, UnhideRenegotiationOfferMutationVariables>(\n        UnhideRenegotiationOfferDocument,\n        variables,\n        options,\n      ) as Promise<UnhideRenegotiationOfferMutation>;\n    },\n    collections(variables: CollectionsQueryVariables, options?: C): Promise<CollectionsQuery> {\n      return requester<CollectionsQuery, CollectionsQueryVariables>(\n        CollectionsDocument,\n        variables,\n        options,\n      ) as Promise<CollectionsQuery>;\n    },\n    collectionByContractAddress(\n      variables: CollectionByContractAddressQueryVariables,\n      options?: C,\n    ): Promise<CollectionByContractAddressQuery> {\n      return requester<CollectionByContractAddressQuery, CollectionByContractAddressQueryVariables>(\n        CollectionByContractAddressDocument,\n        variables,\n        options,\n      ) as Promise<CollectionByContractAddressQuery>;\n    },\n    collectionsIdByContractAddress(\n      variables: CollectionsIdByContractAddressQueryVariables,\n      options?: C,\n    ): Promise<CollectionsIdByContractAddressQuery> {\n      return requester<\n        CollectionsIdByContractAddressQuery,\n        CollectionsIdByContractAddressQueryVariables\n      >(\n        CollectionsIdByContractAddressDocument,\n        variables,\n        options,\n      ) as Promise<CollectionsIdByContractAddressQuery>;\n    },\n    collectionIdBySlug(\n      variables: CollectionIdBySlugQueryVariables,\n      options?: C,\n    ): Promise<CollectionIdBySlugQuery> {\n      return requester<CollectionIdBySlugQuery, CollectionIdBySlugQueryVariables>(\n        CollectionIdBySlugDocument,\n        variables,\n        options,\n      ) as Promise<CollectionIdBySlugQuery>;\n    },\n    collectionStepsById(\n      variables: CollectionStepsByIdQueryVariables,\n      options?: C,\n    ): Promise<CollectionStepsByIdQuery> {\n      return requester<CollectionStepsByIdQuery, CollectionStepsByIdQueryVariables>(\n        CollectionStepsByIdDocument,\n        variables,\n        options,\n      ) as Promise<CollectionStepsByIdQuery>;\n    },\n    listListings(variables?: ListListingsQueryVariables, options?: C): Promise<ListListingsQuery> {\n      return requester<ListListingsQuery, ListListingsQueryVariables>(\n        ListListingsDocument,\n        variables,\n        options,\n      ) as Promise<ListListingsQuery>;\n    },\n    listLoans(variables?: ListLoansQueryVariables, options?: C): Promise<ListLoansQuery> {\n      return requester<ListLoansQuery, ListLoansQueryVariables>(\n        ListLoansDocument,\n        variables,\n        options,\n      ) as Promise<ListLoansQuery>;\n    },\n    nftFlaggedByContractAddressAndTokenId(\n      variables: NftFlaggedByContractAddressAndTokenIdQueryVariables,\n      options?: C,\n    ): Promise<NftFlaggedByContractAddressAndTokenIdQuery> {\n      return requester<\n        NftFlaggedByContractAddressAndTokenIdQuery,\n        NftFlaggedByContractAddressAndTokenIdQueryVariables\n      >(\n        NftFlaggedByContractAddressAndTokenIdDocument,\n        variables,\n        options,\n      ) as Promise<NftFlaggedByContractAddressAndTokenIdQuery>;\n    },\n    nftIdByContractAddressAndTokenId(\n      variables: NftIdByContractAddressAndTokenIdQueryVariables,\n      options?: C,\n    ): Promise<NftIdByContractAddressAndTokenIdQuery> {\n      return requester<\n        NftIdByContractAddressAndTokenIdQuery,\n        NftIdByContractAddressAndTokenIdQueryVariables\n      >(\n        NftIdByContractAddressAndTokenIdDocument,\n        variables,\n        options,\n      ) as Promise<NftIdByContractAddressAndTokenIdQuery>;\n    },\n    nftIdBySlugTokenId(\n      variables: NftIdBySlugTokenIdQueryVariables,\n      options?: C,\n    ): Promise<NftIdBySlugTokenIdQuery> {\n      return requester<NftIdBySlugTokenIdQuery, NftIdBySlugTokenIdQueryVariables>(\n        NftIdBySlugTokenIdDocument,\n        variables,\n        options,\n      ) as Promise<NftIdBySlugTokenIdQuery>;\n    },\n    ownedNfts(variables?: OwnedNftsQueryVariables, options?: C): Promise<OwnedNftsQuery> {\n      return requester<OwnedNftsQuery, OwnedNftsQueryVariables>(\n        OwnedNftsDocument,\n        variables,\n        options,\n      ) as Promise<OwnedNftsQuery>;\n    },\n    listOffers(variables: ListOffersQueryVariables, options?: C): Promise<ListOffersQuery> {\n      return requester<ListOffersQuery, ListOffersQueryVariables>(\n        ListOffersDocument,\n        variables,\n        options,\n      ) as Promise<ListOffersQuery>;\n    },\n    buyWithLoanListing(\n      variables: BuyWithLoanListingQueryVariables,\n      options?: C,\n    ): Promise<BuyWithLoanListingQuery> {\n      return requester<BuyWithLoanListingQuery, BuyWithLoanListingQueryVariables>(\n        BuyWithLoanListingDocument,\n        variables,\n        options,\n      ) as Promise<BuyWithLoanListingQuery>;\n    },\n    getCancelOrdersCalldata(\n      variables: GetCancelOrdersCalldataQueryVariables,\n      options?: C,\n    ): Promise<GetCancelOrdersCalldataQuery> {\n      return requester<GetCancelOrdersCalldataQuery, GetCancelOrdersCalldataQueryVariables>(\n        GetCancelOrdersCalldataDocument,\n        variables,\n        options,\n      ) as Promise<GetCancelOrdersCalldataQuery>;\n    },\n    getSaleCalldata(\n      variables: GetSaleCalldataQueryVariables,\n      options?: C,\n    ): Promise<GetSaleCalldataQuery> {\n      return requester<GetSaleCalldataQuery, GetSaleCalldataQueryVariables>(\n        GetSaleCalldataDocument,\n        variables,\n        options,\n      ) as Promise<GetSaleCalldataQuery>;\n    },\n    previewItemLoanOfferCompetition(\n      variables: PreviewItemLoanOfferCompetitionQueryVariables,\n      options?: C,\n    ): Promise<PreviewItemLoanOfferCompetitionQuery> {\n      return requester<\n        PreviewItemLoanOfferCompetitionQuery,\n        PreviewItemLoanOfferCompetitionQueryVariables\n      >(\n        PreviewItemLoanOfferCompetitionDocument,\n        variables,\n        options,\n      ) as Promise<PreviewItemLoanOfferCompetitionQuery>;\n    },\n    previewRenegotiationCompetition(\n      variables: PreviewRenegotiationCompetitionQueryVariables,\n      options?: C,\n    ): Promise<PreviewRenegotiationCompetitionQuery> {\n      return requester<\n        PreviewRenegotiationCompetitionQuery,\n        PreviewRenegotiationCompetitionQueryVariables\n      >(\n        PreviewRenegotiationCompetitionDocument,\n        variables,\n        options,\n      ) as Promise<PreviewRenegotiationCompetitionQuery>;\n    },\n  };\n}\nexport type Sdk = ReturnType<typeof getSdk>;\n", "import {\n  ApolloClient,\n  MutationOptions,\n  OperationVariables,\n  QueryOptions,\n} from '@apollo/client/core/index.js';\nimport { type DocumentNode } from 'graphql';\n\nimport { getSdk, Requester } from '@/generated/graphql';\nimport { OnStepChange } from '@/gondi';\n\nexport type ApolloRequesterOptions<V, R> =\n  | Omit<QueryOptions<V>, 'variables' | 'query'>\n  | Omit<MutationOptions<R, V>, 'variables' | 'mutation'>;\n\nconst validDocDefOps = ['mutation', 'query', 'subscription'];\n\n// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\nexport function getSdkApollo<C>(client: ApolloClient<C>, onStepChange?: OnStepChange) {\n  const requester: Requester = async <R, V>(\n    doc: DocumentNode,\n    variables?: V,\n    options?: ApolloRequesterOptions<OperationVariables, R>,\n  ): Promise<R> => {\n    options = {\n      ...options,\n      context: {\n        ...options?.context,\n        clientName: 'lending',\n      },\n    };\n    const apolloVariables = variables as unknown as OperationVariables;\n    // Valid document should contain *single* query or mutation unless it's has a fragment\n    if (\n      doc.definitions.filter(\n        (d) => d.kind === 'OperationDefinition' && validDocDefOps.includes(d.operation),\n      ).length !== 1\n    ) {\n      throw new Error('DocumentNode passed to Apollo Client must contain single query or mutation');\n    }\n\n    const definition = doc.definitions[0];\n\n    // Valid document should contain *OperationDefinition*\n    if (definition.kind !== 'OperationDefinition') {\n      throw new Error('DocumentNode passed to Apollo Client must contain single query or mutation');\n    }\n\n    switch (definition.operation) {\n      case 'mutation': {\n        onStepChange?.({\n          type: 'api',\n          status: 'waiting',\n          mutationName: definition.name?.value ?? '',\n          variables: apolloVariables,\n        });\n        const response = await client.mutate({\n          mutation: doc,\n          variables: apolloVariables,\n          ...options,\n          fetchPolicy: 'no-cache',\n        });\n\n        if (response.errors) {\n          throw new Error(JSON.stringify(response.errors));\n        }\n\n        if (response.data === undefined || response.data === null) {\n          throw new Error('No data presented in the GraphQL response');\n        }\n\n        onStepChange?.({\n          type: 'api',\n          status: 'success',\n          mutationName: definition.name?.value ?? '',\n          variables: apolloVariables,\n        });\n        return response.data;\n      }\n      case 'query': {\n        const response = await client.query({\n          query: doc,\n          variables: apolloVariables,\n          ...options,\n        });\n\n        if (response.errors) {\n          throw new Error(JSON.stringify(response.errors));\n        }\n\n        if (response.data === undefined || response.data === null) {\n          throw new Error('No data presented in the GraphQL response');\n        }\n\n        return response.data;\n      }\n      case 'subscription': {\n        throw new Error('Subscription requests through SDK interface are not supported');\n      }\n      default:\n        throw new Error('Operation not supported');\n    }\n  };\n\n  return getSdk(requester);\n}\n\nexport type Sdk = ReturnType<typeof getSdkApollo>;\n", "import { Address, decodeFunctionData, Hex, PublicClient } from 'viem';\n\nimport { Wallet } from '@/clients/contracts';\nimport { erc20ABI } from '@/generated/blockchain/v5';\n\nimport { BaseContract } from './BaseContract';\n\nexport class Erc20 extends BaseContract<typeof erc20ABI> {\n  constructor({\n    address,\n    walletClient,\n    publicClient,\n  }: {\n    address: Address;\n    walletClient: Wallet;\n    publicClient?: PublicClient;\n  }) {\n    super({\n      walletClient,\n      address,\n      abi: erc20ABI,\n      publicClient,\n    });\n  }\n\n  decodeApproveCalldata(calldata: Hex) {\n    const decoded = decodeFunctionData({\n      abi: erc20ABI,\n      data: calldata,\n    });\n    if (decoded.functionName !== 'approve') {\n      throw new Error('Wrong calldata');\n    }\n    return decoded.args;\n  }\n}\n", "// Generated by @wagmi/cli@1.0.2 on 10/30/2023 at 11:37:35 AM\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// AddressManager\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const addressManagerABI = [\n  {\n    stateMutability: 'nonpayable',\n    type: 'constructor',\n    inputs: [{ name: '_original', internalType: 'address[]', type: 'address[]' }],\n  },\n  {\n    type: 'error',\n    inputs: [{ name: '_address', internalType: 'address', type: 'address' }],\n    name: 'AddressAlreadyAddedError',\n  },\n  {\n    type: 'error',\n    inputs: [{ name: '_address', internalType: 'address', type: 'address' }],\n    name: 'AddressNotAddedError',\n  },\n  { type: 'error', inputs: [], name: 'AddressZeroError' },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'address_added', internalType: 'address', type: 'address', indexed: false }],\n    name: 'AddressAdded',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'address_removed', internalType: 'address', type: 'address', indexed: false }],\n    name: 'AddressRemovedFromWhitelist',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'address_whitelisted', internalType: 'address', type: 'address', indexed: false },\n    ],\n    name: 'AddressWhitelisted',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'user', internalType: 'address', type: 'address', indexed: true },\n      { name: 'newOwner', internalType: 'address', type: 'address', indexed: true },\n    ],\n    name: 'OwnershipTransferred',\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: '_entry', internalType: 'address', type: 'address' }],\n    name: 'add',\n    outputs: [{ name: '', internalType: 'uint16', type: 'uint16' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: '_entry', internalType: 'address', type: 'address' }],\n    name: 'addToWhitelist',\n    outputs: [],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: '_address', internalType: 'address', type: 'address' }],\n    name: 'addressToIndex',\n    outputs: [{ name: '', internalType: 'uint16', type: 'uint16' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: '_index', internalType: 'uint16', type: 'uint16' }],\n    name: 'indexToAddress',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: '_entry', internalType: 'address', type: 'address' }],\n    name: 'isWhitelisted',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'owner',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: '_entry', internalType: 'address', type: 'address' }],\n    name: 'removeFromWhitelist',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: 'newOwner', internalType: 'address', type: 'address' }],\n    name: 'transferOwnership',\n    outputs: [],\n  },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// CollectionOracle\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const collectionOracleABI = [\n  { stateMutability: 'nonpayable', type: 'constructor', inputs: [] },\n  { type: 'error', inputs: [], name: 'InvalidLengthsError' },\n  {\n    type: 'error',\n    inputs: [\n      { name: '_nftAddress', internalType: 'address', type: 'address' },\n      { name: '_tokenId', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'NftNotFoundError',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'user', internalType: 'address', type: 'address', indexed: true },\n      { name: 'newOwner', internalType: 'address', type: 'address', indexed: true },\n    ],\n    name: 'OwnershipTransferred',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: '_collection', internalType: 'address', type: 'address', indexed: false },\n      { name: '_asset', internalType: 'address', type: 'address', indexed: false },\n      { name: '_price', internalType: 'uint128', type: 'uint128', indexed: false },\n      { name: '_timestamp', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'PriceUpdated',\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [\n      { name: '_nftAddress', internalType: 'address', type: 'address' },\n      { name: '_tokenId', internalType: 'uint256', type: 'uint256' },\n      { name: '_asset', internalType: 'address', type: 'address' },\n    ],\n    name: 'getPrice',\n    outputs: [\n      {\n        name: '',\n        internalType: 'struct IOracle.PriceUpdate',\n        type: 'tuple',\n        components: [\n          { name: 'price', internalType: 'uint128', type: 'uint128' },\n          { name: 'updatedTimestamp', internalType: 'uint128', type: 'uint128' },\n        ],\n      },\n    ],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'owner',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: 'newOwner', internalType: 'address', type: 'address' }],\n    name: 'transferOwnership',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: 'collections', internalType: 'address[]', type: 'address[]' },\n      { name: 'assets', internalType: 'address[]', type: 'address[]' },\n      { name: 'price', internalType: 'uint128[]', type: 'uint128[]' },\n      { name: 'timestamp', internalType: 'uint128', type: 'uint128' },\n    ],\n    name: 'updatePrices',\n    outputs: [],\n  },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// AuctionLoanLiquidator\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const auctionLoanLiquidatorABI = [\n  {\n    stateMutability: 'nonpayable',\n    type: 'constructor',\n    inputs: [\n      { name: 'liquidationDistributor', internalType: 'address', type: 'address' },\n      { name: 'currencyManager', internalType: 'address', type: 'address' },\n      { name: 'collectionManager', internalType: 'address', type: 'address' },\n      { name: 'triggerFee', internalType: 'uint256', type: 'uint256' },\n    ],\n  },\n  { type: 'error', inputs: [], name: 'AddressZeroError' },\n  { type: 'error', inputs: [], name: 'AuctionAlreadyInProgressError' },\n  {\n    type: 'error',\n    inputs: [{ name: '_expiration', internalType: 'uint96', type: 'uint96' }],\n    name: 'AuctionNotOverError',\n  },\n  {\n    type: 'error',\n    inputs: [{ name: '_expiration', internalType: 'uint96', type: 'uint96' }],\n    name: 'AuctionOverError',\n  },\n  { type: 'error', inputs: [], name: 'CollectionNotWhitelistedError' },\n  { type: 'error', inputs: [], name: 'CouldNotModifyValidLoansError' },\n  { type: 'error', inputs: [], name: 'CurrencyNotWhitelistedError' },\n  { type: 'error', inputs: [], name: 'InvalidHashAuctionError' },\n  {\n    type: 'error',\n    inputs: [{ name: 'triggerFee', internalType: 'uint256', type: 'uint256' }],\n    name: 'InvalidTriggerFee',\n  },\n  {\n    type: 'error',\n    inputs: [{ name: '_loan', internalType: 'address', type: 'address' }],\n    name: 'LoanNotAcceptedError',\n  },\n  {\n    type: 'error',\n    inputs: [{ name: '_minBid', internalType: 'uint256', type: 'uint256' }],\n    name: 'MinBidError',\n  },\n  {\n    type: 'error',\n    inputs: [{ name: '_owner', internalType: 'address', type: 'address' }],\n    name: 'NFTNotOwnedError',\n  },\n  { type: 'error', inputs: [], name: 'NoBidsError' },\n  { type: 'error', inputs: [], name: 'ZeroAddressError' },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'loanContract', internalType: 'address', type: 'address', indexed: false },\n      { name: 'loanId', internalType: 'uint256', type: 'uint256', indexed: false },\n      { name: 'auctionContract', internalType: 'address', type: 'address', indexed: false },\n      { name: 'tokenId', internalType: 'uint256', type: 'uint256', indexed: false },\n      { name: 'asset', internalType: 'address', type: 'address', indexed: false },\n      { name: 'proceeds', internalType: 'uint256', type: 'uint256', indexed: false },\n      { name: 'settler', internalType: 'address', type: 'address', indexed: false },\n      { name: 'triggerFee', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'AuctionSettled',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'collection', internalType: 'address', type: 'address', indexed: false },\n      { name: 'tokenId', internalType: 'uint256', type: 'uint256', indexed: false },\n      { name: 'newBidder', internalType: 'address', type: 'address', indexed: false },\n      { name: 'bid', internalType: 'uint256', type: 'uint256', indexed: false },\n      { name: 'loanAddress', internalType: 'address', type: 'address', indexed: false },\n      { name: 'loanId', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'BidPlaced',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'liquidationDistributor', internalType: 'address', type: 'address', indexed: false },\n    ],\n    name: 'LiquidationDistributorUpdated',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'loan', internalType: 'address', type: 'address', indexed: false }],\n    name: 'LoanContractAdded',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'loan', internalType: 'address', type: 'address', indexed: false }],\n    name: 'LoanContractRemoved',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'collection', internalType: 'address', type: 'address', indexed: false },\n      { name: 'tokenId', internalType: 'uint256', type: 'uint256', indexed: false },\n      {\n        name: 'auction',\n        internalType: 'struct IAuctionLoanLiquidator.Auction',\n        type: 'tuple',\n        components: [\n          { name: 'loanAddress', internalType: 'address', type: 'address' },\n          { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n          { name: 'highestBid', internalType: 'uint256', type: 'uint256' },\n          { name: 'triggerFee', internalType: 'uint256', type: 'uint256' },\n          { name: 'highestBidder', internalType: 'address', type: 'address' },\n          { name: 'duration', internalType: 'uint96', type: 'uint96' },\n          { name: 'asset', internalType: 'address', type: 'address' },\n          { name: 'startTime', internalType: 'uint96', type: 'uint96' },\n          { name: 'originator', internalType: 'address', type: 'address' },\n          { name: 'lastBidTime', internalType: 'uint96', type: 'uint96' },\n        ],\n        indexed: false,\n      },\n    ],\n    name: 'LoanLiquidationStarted',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'user', internalType: 'address', type: 'address', indexed: true },\n      { name: 'newOwner', internalType: 'address', type: 'address', indexed: true },\n    ],\n    name: 'OwnershipTransferred',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'triggerFee', internalType: 'uint256', type: 'uint256', indexed: false }],\n    name: 'TriggerFeeUpdated',\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'MAX_TRIGGER_FEE',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'MIN_INCREMENT_BPS',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: '_loanContract', internalType: 'address', type: 'address' }],\n    name: 'addLoanContract',\n    outputs: [],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [\n      { name: '_contract', internalType: 'address', type: 'address' },\n      { name: '_tokenId', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'getAuctionHash',\n    outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getLiquidationDistributor',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getTriggerFee',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getValidLoanContracts',\n    outputs: [{ name: '', internalType: 'address[]', type: 'address[]' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: '_loanId', internalType: 'uint256', type: 'uint256' },\n      { name: '_contract', internalType: 'address', type: 'address' },\n      { name: '_tokenId', internalType: 'uint256', type: 'uint256' },\n      { name: '_asset', internalType: 'address', type: 'address' },\n      { name: '_duration', internalType: 'uint96', type: 'uint96' },\n      { name: '_originator', internalType: 'address', type: 'address' },\n    ],\n    name: 'liquidateLoan',\n    outputs: [{ name: '', internalType: 'bytes', type: 'bytes' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'uint256', type: 'uint256' },\n      { name: '', internalType: 'bytes', type: 'bytes' },\n    ],\n    name: 'onERC721Received',\n    outputs: [{ name: '', internalType: 'bytes4', type: 'bytes4' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'owner',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: '_contract', internalType: 'address', type: 'address' },\n      { name: '_tokenId', internalType: 'uint256', type: 'uint256' },\n      {\n        name: '_auction',\n        internalType: 'struct IAuctionLoanLiquidator.Auction',\n        type: 'tuple',\n        components: [\n          { name: 'loanAddress', internalType: 'address', type: 'address' },\n          { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n          { name: 'highestBid', internalType: 'uint256', type: 'uint256' },\n          { name: 'triggerFee', internalType: 'uint256', type: 'uint256' },\n          { name: 'highestBidder', internalType: 'address', type: 'address' },\n          { name: 'duration', internalType: 'uint96', type: 'uint96' },\n          { name: 'asset', internalType: 'address', type: 'address' },\n          { name: 'startTime', internalType: 'uint96', type: 'uint96' },\n          { name: 'originator', internalType: 'address', type: 'address' },\n          { name: 'lastBidTime', internalType: 'uint96', type: 'uint96' },\n        ],\n      },\n      { name: '_bid', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'placeBid',\n    outputs: [\n      {\n        name: '',\n        internalType: 'struct IAuctionLoanLiquidator.Auction',\n        type: 'tuple',\n        components: [\n          { name: 'loanAddress', internalType: 'address', type: 'address' },\n          { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n          { name: 'highestBid', internalType: 'uint256', type: 'uint256' },\n          { name: 'triggerFee', internalType: 'uint256', type: 'uint256' },\n          { name: 'highestBidder', internalType: 'address', type: 'address' },\n          { name: 'duration', internalType: 'uint96', type: 'uint96' },\n          { name: 'asset', internalType: 'address', type: 'address' },\n          { name: 'startTime', internalType: 'uint96', type: 'uint96' },\n          { name: 'originator', internalType: 'address', type: 'address' },\n          { name: 'lastBidTime', internalType: 'uint96', type: 'uint96' },\n        ],\n      },\n    ],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: '_loanContract', internalType: 'address', type: 'address' }],\n    name: 'removeLoanContract',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      {\n        name: '_auction',\n        internalType: 'struct IAuctionLoanLiquidator.Auction',\n        type: 'tuple',\n        components: [\n          { name: 'loanAddress', internalType: 'address', type: 'address' },\n          { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n          { name: 'highestBid', internalType: 'uint256', type: 'uint256' },\n          { name: 'triggerFee', internalType: 'uint256', type: 'uint256' },\n          { name: 'highestBidder', internalType: 'address', type: 'address' },\n          { name: 'duration', internalType: 'uint96', type: 'uint96' },\n          { name: 'asset', internalType: 'address', type: 'address' },\n          { name: 'startTime', internalType: 'uint96', type: 'uint96' },\n          { name: 'originator', internalType: 'address', type: 'address' },\n          { name: 'lastBidTime', internalType: 'uint96', type: 'uint96' },\n        ],\n      },\n      {\n        name: '_loan',\n        internalType: 'struct IMultiSourceLoan.Loan',\n        type: 'tuple',\n        components: [\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'source',\n            internalType: 'struct IMultiSourceLoan.Source[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n              { name: 'lender', internalType: 'address', type: 'address' },\n              { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n              { name: 'accruedInterest', internalType: 'uint256', type: 'uint256' },\n              { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n              { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n            ],\n          },\n        ],\n      },\n    ],\n    name: 'settleAuction',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: 'newOwner', internalType: 'address', type: 'address' }],\n    name: 'transferOwnership',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: '__liquidationDistributor', internalType: 'address', type: 'address' }],\n    name: 'updateLiquidationDistributor',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: 'triggerFee', internalType: 'uint256', type: 'uint256' }],\n    name: 'updateTriggerFee',\n    outputs: [],\n  },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// BaseLoan\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const baseLoanABI = [\n  { type: 'error', inputs: [], name: 'AddressZeroError' },\n  {\n    type: 'error',\n    inputs: [\n      { name: '_lender', internalType: 'address', type: 'address' },\n      { name: '_offerId', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'CancelledOrExecutedOfferError',\n  },\n  {\n    type: 'error',\n    inputs: [\n      { name: '_lender', internalType: 'address', type: 'address' },\n      { name: '_renegotiationId', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'CancelledRenegotiationOfferError',\n  },\n  { type: 'error', inputs: [], name: 'CannotLiquidateError' },\n  { type: 'error', inputs: [], name: 'CollectionNotWhitelistedError' },\n  { type: 'error', inputs: [], name: 'CurrencyNotWhitelistedError' },\n  {\n    type: 'error',\n    inputs: [{ name: '_expirationTime', internalType: 'uint256', type: 'uint256' }],\n    name: 'ExpiredOfferError',\n  },\n  {\n    type: 'error',\n    inputs: [{ name: '_expirationTime', internalType: 'uint256', type: 'uint256' }],\n    name: 'ExpiredRenegotiationOfferError',\n  },\n  {\n    type: 'error',\n    inputs: [\n      { name: '_amount', internalType: 'uint256', type: 'uint256' },\n      { name: '_principalAmount', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'InvalidAmountError',\n  },\n  { type: 'error', inputs: [], name: 'InvalidBorrowerError' },\n  { type: 'error', inputs: [], name: 'InvalidCollateralIdError' },\n  { type: 'error', inputs: [], name: 'InvalidDurationError' },\n  { type: 'error', inputs: [], name: 'InvalidLenderError' },\n  { type: 'error', inputs: [], name: 'InvalidLiquidationError' },\n  {\n    type: 'error',\n    inputs: [{ name: '_loanId', internalType: 'uint256', type: 'uint256' }],\n    name: 'InvalidLoanError',\n  },\n  {\n    type: 'error',\n    inputs: [{ name: '_fraction', internalType: 'uint256', type: 'uint256' }],\n    name: 'InvalidProtocolFeeError',\n  },\n  { type: 'error', inputs: [], name: 'InvalidSignatureError' },\n  { type: 'error', inputs: [], name: 'InvalidValueError' },\n  {\n    type: 'error',\n    inputs: [{ name: '_liquidator', internalType: 'address', type: 'address' }],\n    name: 'LiquidatorOnlyError',\n  },\n  {\n    type: 'error',\n    inputs: [{ name: '_expirationTime', internalType: 'uint256', type: 'uint256' }],\n    name: 'LoanNotDueError',\n  },\n  {\n    type: 'error',\n    inputs: [\n      { name: '_lender', internalType: 'address', type: 'address' },\n      { name: '_newMinOfferId', internalType: 'uint256', type: 'uint256' },\n      { name: '_minOfferId', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'LowOfferIdError',\n  },\n  {\n    type: 'error',\n    inputs: [\n      { name: '_lender', internalType: 'address', type: 'address' },\n      { name: '_newMinRenegotiationOfferId', internalType: 'uint256', type: 'uint256' },\n      { name: '_minOfferId', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'LowRenegotiationOfferIdError',\n  },\n  { type: 'error', inputs: [], name: 'MaxCapacityExceededError' },\n  { type: 'error', inputs: [], name: 'NotStrictlyImprovedError' },\n  { type: 'error', inputs: [], name: 'OnlyBorrowerCallableError' },\n  { type: 'error', inputs: [], name: 'OnlyLenderCallableError' },\n  { type: 'error', inputs: [], name: 'OnlyLenderOrBorrowerCallableError' },\n  {\n    type: 'error',\n    inputs: [{ name: '_pendingProtocolFeeSetTime', internalType: 'uint256', type: 'uint256' }],\n    name: 'TooEarlyError',\n  },\n  { type: 'error', inputs: [], name: 'ZeroDurationError' },\n  { type: 'error', inputs: [], name: 'ZeroInterestError' },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'lender', internalType: 'address', type: 'address', indexed: false },\n      { name: 'minOfferId', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'AllOffersCancelled',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'lender', internalType: 'address', type: 'address', indexed: false },\n      { name: 'minRenegotiationId', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'AllRenegotiationOffersCancelled',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'borrower', internalType: 'address', type: 'address', indexed: false },\n      { name: 'offerId', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'BorrowerOfferCancelled',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      {\n        name: 'minimum',\n        internalType: 'struct IBaseLoan.ImprovementMinimum',\n        type: 'tuple',\n        components: [\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'interest', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n        ],\n        indexed: false,\n      },\n    ],\n    name: 'ImprovementMinimumUpdated',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'newDuration', internalType: 'uint256', type: 'uint256', indexed: false }],\n    name: 'LiquidationAuctionDurationUpdated',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'liquidator', internalType: 'address', type: 'address', indexed: false }],\n    name: 'LiquidationContractUpdated',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'loanId', internalType: 'uint256', type: 'uint256', indexed: false }],\n    name: 'LoanForeclosed',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'loanId', internalType: 'uint256', type: 'uint256', indexed: false }],\n    name: 'LoanLiquidated',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'loanId', internalType: 'uint256', type: 'uint256', indexed: false },\n      { name: 'liquidator', internalType: 'address', type: 'address', indexed: false },\n    ],\n    name: 'LoanSentToLiquidator',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'lender', internalType: 'address', type: 'address', indexed: false },\n      { name: 'offerId', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'OfferCancelled',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'user', internalType: 'address', type: 'address', indexed: true },\n      { name: 'newOwner', internalType: 'address', type: 'address', indexed: true },\n    ],\n    name: 'OwnershipTransferred',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      {\n        name: 'fee',\n        internalType: 'struct IBaseLoan.ProtocolFee',\n        type: 'tuple',\n        components: [\n          { name: 'recipient', internalType: 'address', type: 'address' },\n          { name: 'fraction', internalType: 'uint256', type: 'uint256' },\n        ],\n        indexed: false,\n      },\n    ],\n    name: 'ProtocolFeePendingUpdate',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      {\n        name: 'fee',\n        internalType: 'struct IBaseLoan.ProtocolFee',\n        type: 'tuple',\n        components: [\n          { name: 'recipient', internalType: 'address', type: 'address' },\n          { name: 'fraction', internalType: 'uint256', type: 'uint256' },\n        ],\n        indexed: false,\n      },\n    ],\n    name: 'ProtocolFeeUpdated',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'lender', internalType: 'address', type: 'address', indexed: false },\n      { name: 'renegotiationId', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'RenegotiationOfferCancelled',\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'DOMAIN_SEPARATOR',\n    outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'FEE_UPDATE_NOTICE',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'INITIAL_DOMAIN_SEPARATOR',\n    outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'MAX_PROTOCOL_FEE',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'MIN_AUCTION_DURATION',\n    outputs: [{ name: '', internalType: 'uint48', type: 'uint48' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: '_minOfferId', internalType: 'uint256', type: 'uint256' }],\n    name: 'cancelAllOffers',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: '_minRenegotiationId', internalType: 'uint256', type: 'uint256' }],\n    name: 'cancelAllRenegotiationOffers',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: '_offerId', internalType: 'uint256', type: 'uint256' }],\n    name: 'cancelOffer',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: '_offerIds', internalType: 'uint256[]', type: 'uint256[]' }],\n    name: 'cancelOffers',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: '_renegotiationId', internalType: 'uint256', type: 'uint256' }],\n    name: 'cancelRenegotiationOffer',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: '_renegotiationIds', internalType: 'uint256[]', type: 'uint256[]' }],\n    name: 'cancelRenegotiationOffers',\n    outputs: [],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getCollectionManager',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getCurrencyManager',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getImprovementMinimum',\n    outputs: [\n      {\n        name: '',\n        internalType: 'struct IBaseLoan.ImprovementMinimum',\n        type: 'tuple',\n        components: [\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'interest', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n    ],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getLiquidationAuctionDuration',\n    outputs: [{ name: '', internalType: 'uint48', type: 'uint48' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getLiquidator',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getPendingProtocolFee',\n    outputs: [\n      {\n        name: '',\n        internalType: 'struct IBaseLoan.ProtocolFee',\n        type: 'tuple',\n        components: [\n          { name: 'recipient', internalType: 'address', type: 'address' },\n          { name: 'fraction', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n    ],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getPendingProtocolFeeSetTime',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getProtocolFee',\n    outputs: [\n      {\n        name: '',\n        internalType: 'struct IBaseLoan.ProtocolFee',\n        type: 'tuple',\n        components: [\n          { name: 'recipient', internalType: 'address', type: 'address' },\n          { name: 'fraction', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n    ],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getTotalLoansIssued',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [\n      { name: '_lender', internalType: 'address', type: 'address' },\n      { name: '_offerId', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'getUsedCapacity',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'isBorrowerOfferCancelled',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'isOfferCancelled',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'isRenegotiationOfferCancelled',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: '', internalType: 'address', type: 'address' }],\n    name: 'lenderMinRenegotiationOfferId',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: '', internalType: 'address', type: 'address' }],\n    name: 'minOfferId',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'name',\n    outputs: [{ name: '', internalType: 'string', type: 'string' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'uint256', type: 'uint256' },\n      { name: '', internalType: 'bytes', type: 'bytes' },\n    ],\n    name: 'onERC721Received',\n    outputs: [{ name: '', internalType: 'bytes4', type: 'bytes4' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'owner',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [],\n    name: 'setProtocolFee',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: 'newOwner', internalType: 'address', type: 'address' }],\n    name: 'transferOwnership',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      {\n        name: '_newMinimum',\n        internalType: 'struct IBaseLoan.ImprovementMinimum',\n        type: 'tuple',\n        components: [\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'interest', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n    ],\n    name: 'updateImprovementMinimum',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: '_newDuration', internalType: 'uint48', type: 'uint48' }],\n    name: 'updateLiquidationAuctionDuration',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: 'loanLiquidator', internalType: 'contract ILoanLiquidator', type: 'address' }],\n    name: 'updateLiquidationContract',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      {\n        name: '_newProtocolFee',\n        internalType: 'struct IBaseLoan.ProtocolFee',\n        type: 'tuple',\n        components: [\n          { name: 'recipient', internalType: 'address', type: 'address' },\n          { name: 'fraction', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n    ],\n    name: 'updateProtocolFee',\n    outputs: [],\n  },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// ECDSA\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const ecdsaABI = [\n  { type: 'error', inputs: [], name: 'ECDSAInvalidSignature' },\n  {\n    type: 'error',\n    inputs: [{ name: 'length', internalType: 'uint256', type: 'uint256' }],\n    name: 'ECDSAInvalidSignatureLength',\n  },\n  {\n    type: 'error',\n    inputs: [{ name: 's', internalType: 'bytes32', type: 'bytes32' }],\n    name: 'ECDSAInvalidSignatureS',\n  },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// ERC165\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const erc165ABI = [\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: 'interfaceId', internalType: 'bytes4', type: 'bytes4' }],\n    name: 'supportsInterface',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n  },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// ERC20\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const erc20ABI = [\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'owner', internalType: 'address', type: 'address', indexed: true },\n      { name: 'spender', internalType: 'address', type: 'address', indexed: true },\n      { name: 'amount', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'Approval',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address', indexed: true },\n      { name: 'to', internalType: 'address', type: 'address', indexed: true },\n      { name: 'amount', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'Transfer',\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'DOMAIN_SEPARATOR',\n    outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'address', type: 'address' },\n    ],\n    name: 'allowance',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: 'spender', internalType: 'address', type: 'address' },\n      { name: 'amount', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'approve',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: '', internalType: 'address', type: 'address' }],\n    name: 'balanceOf',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'decimals',\n    outputs: [{ name: '', internalType: 'uint8', type: 'uint8' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'name',\n    outputs: [{ name: '', internalType: 'string', type: 'string' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: '', internalType: 'address', type: 'address' }],\n    name: 'nonces',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: 'owner', internalType: 'address', type: 'address' },\n      { name: 'spender', internalType: 'address', type: 'address' },\n      { name: 'value', internalType: 'uint256', type: 'uint256' },\n      { name: 'deadline', internalType: 'uint256', type: 'uint256' },\n      { name: 'v', internalType: 'uint8', type: 'uint8' },\n      { name: 'r', internalType: 'bytes32', type: 'bytes32' },\n      { name: 's', internalType: 'bytes32', type: 'bytes32' },\n    ],\n    name: 'permit',\n    outputs: [],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'symbol',\n    outputs: [{ name: '', internalType: 'string', type: 'string' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'totalSupply',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'amount', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'transfer',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address' },\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'amount', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'transferFrom',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n  },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// ERC721\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const erc721ABI = [\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'owner', internalType: 'address', type: 'address', indexed: true },\n      { name: 'spender', internalType: 'address', type: 'address', indexed: true },\n      { name: 'id', internalType: 'uint256', type: 'uint256', indexed: true },\n    ],\n    name: 'Approval',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'owner', internalType: 'address', type: 'address', indexed: true },\n      { name: 'operator', internalType: 'address', type: 'address', indexed: true },\n      { name: 'approved', internalType: 'bool', type: 'bool', indexed: false },\n    ],\n    name: 'ApprovalForAll',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address', indexed: true },\n      { name: 'to', internalType: 'address', type: 'address', indexed: true },\n      { name: 'id', internalType: 'uint256', type: 'uint256', indexed: true },\n    ],\n    name: 'Transfer',\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: 'spender', internalType: 'address', type: 'address' },\n      { name: 'id', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'approve',\n    outputs: [],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: 'owner', internalType: 'address', type: 'address' }],\n    name: 'balanceOf',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    name: 'getApproved',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'address', type: 'address' },\n    ],\n    name: 'isApprovedForAll',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'name',\n    outputs: [{ name: '', internalType: 'string', type: 'string' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: 'id', internalType: 'uint256', type: 'uint256' }],\n    name: 'ownerOf',\n    outputs: [{ name: 'owner', internalType: 'address', type: 'address' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address' },\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'id', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'safeTransferFrom',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address' },\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'id', internalType: 'uint256', type: 'uint256' },\n      { name: 'data', internalType: 'bytes', type: 'bytes' },\n    ],\n    name: 'safeTransferFrom',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: 'operator', internalType: 'address', type: 'address' },\n      { name: 'approved', internalType: 'bool', type: 'bool' },\n    ],\n    name: 'setApprovalForAll',\n    outputs: [],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: 'interfaceId', internalType: 'bytes4', type: 'bytes4' }],\n    name: 'supportsInterface',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'symbol',\n    outputs: [{ name: '', internalType: 'string', type: 'string' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: 'id', internalType: 'uint256', type: 'uint256' }],\n    name: 'tokenURI',\n    outputs: [{ name: '', internalType: 'string', type: 'string' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address' },\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'id', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'transferFrom',\n    outputs: [],\n  },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// ERC721TokenReceiver\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const erc721TokenReceiverABI = [\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'uint256', type: 'uint256' },\n      { name: '', internalType: 'bytes', type: 'bytes' },\n    ],\n    name: 'onERC721Received',\n    outputs: [{ name: '', internalType: 'bytes4', type: 'bytes4' }],\n  },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// DelegateRegistry\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const delegateRegistryABI = [\n  { type: 'error', inputs: [], name: 'MulticallFailed' },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address', indexed: true },\n      { name: 'to', internalType: 'address', type: 'address', indexed: true },\n      { name: 'rights', internalType: 'bytes32', type: 'bytes32', indexed: false },\n      { name: 'enable', internalType: 'bool', type: 'bool', indexed: false },\n    ],\n    name: 'DelegateAll',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address', indexed: true },\n      { name: 'to', internalType: 'address', type: 'address', indexed: true },\n      { name: 'contract_', internalType: 'address', type: 'address', indexed: true },\n      { name: 'rights', internalType: 'bytes32', type: 'bytes32', indexed: false },\n      { name: 'enable', internalType: 'bool', type: 'bool', indexed: false },\n    ],\n    name: 'DelegateContract',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address', indexed: true },\n      { name: 'to', internalType: 'address', type: 'address', indexed: true },\n      { name: 'contract_', internalType: 'address', type: 'address', indexed: true },\n      { name: 'tokenId', internalType: 'uint256', type: 'uint256', indexed: false },\n      { name: 'rights', internalType: 'bytes32', type: 'bytes32', indexed: false },\n      { name: 'amount', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'DelegateERC1155',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address', indexed: true },\n      { name: 'to', internalType: 'address', type: 'address', indexed: true },\n      { name: 'contract_', internalType: 'address', type: 'address', indexed: true },\n      { name: 'rights', internalType: 'bytes32', type: 'bytes32', indexed: false },\n      { name: 'amount', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'DelegateERC20',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address', indexed: true },\n      { name: 'to', internalType: 'address', type: 'address', indexed: true },\n      { name: 'contract_', internalType: 'address', type: 'address', indexed: true },\n      { name: 'tokenId', internalType: 'uint256', type: 'uint256', indexed: false },\n      { name: 'rights', internalType: 'bytes32', type: 'bytes32', indexed: false },\n      { name: 'enable', internalType: 'bool', type: 'bool', indexed: false },\n    ],\n    name: 'DelegateERC721',\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'from', internalType: 'address', type: 'address' },\n      { name: 'rights', internalType: 'bytes32', type: 'bytes32' },\n    ],\n    name: 'checkDelegateForAll',\n    outputs: [{ name: 'valid', internalType: 'bool', type: 'bool' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'from', internalType: 'address', type: 'address' },\n      { name: 'contract_', internalType: 'address', type: 'address' },\n      { name: 'rights', internalType: 'bytes32', type: 'bytes32' },\n    ],\n    name: 'checkDelegateForContract',\n    outputs: [{ name: 'valid', internalType: 'bool', type: 'bool' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'from', internalType: 'address', type: 'address' },\n      { name: 'contract_', internalType: 'address', type: 'address' },\n      { name: 'tokenId', internalType: 'uint256', type: 'uint256' },\n      { name: 'rights', internalType: 'bytes32', type: 'bytes32' },\n    ],\n    name: 'checkDelegateForERC1155',\n    outputs: [{ name: 'amount', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'from', internalType: 'address', type: 'address' },\n      { name: 'contract_', internalType: 'address', type: 'address' },\n      { name: 'rights', internalType: 'bytes32', type: 'bytes32' },\n    ],\n    name: 'checkDelegateForERC20',\n    outputs: [{ name: 'amount', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'from', internalType: 'address', type: 'address' },\n      { name: 'contract_', internalType: 'address', type: 'address' },\n      { name: 'tokenId', internalType: 'uint256', type: 'uint256' },\n      { name: 'rights', internalType: 'bytes32', type: 'bytes32' },\n    ],\n    name: 'checkDelegateForERC721',\n    outputs: [{ name: 'valid', internalType: 'bool', type: 'bool' }],\n  },\n  {\n    stateMutability: 'payable',\n    type: 'function',\n    inputs: [\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'rights', internalType: 'bytes32', type: 'bytes32' },\n      { name: 'enable', internalType: 'bool', type: 'bool' },\n    ],\n    name: 'delegateAll',\n    outputs: [{ name: 'hash', internalType: 'bytes32', type: 'bytes32' }],\n  },\n  {\n    stateMutability: 'payable',\n    type: 'function',\n    inputs: [\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'contract_', internalType: 'address', type: 'address' },\n      { name: 'rights', internalType: 'bytes32', type: 'bytes32' },\n      { name: 'enable', internalType: 'bool', type: 'bool' },\n    ],\n    name: 'delegateContract',\n    outputs: [{ name: 'hash', internalType: 'bytes32', type: 'bytes32' }],\n  },\n  {\n    stateMutability: 'payable',\n    type: 'function',\n    inputs: [\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'contract_', internalType: 'address', type: 'address' },\n      { name: 'tokenId', internalType: 'uint256', type: 'uint256' },\n      { name: 'rights', internalType: 'bytes32', type: 'bytes32' },\n      { name: 'amount', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'delegateERC1155',\n    outputs: [{ name: 'hash', internalType: 'bytes32', type: 'bytes32' }],\n  },\n  {\n    stateMutability: 'payable',\n    type: 'function',\n    inputs: [\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'contract_', internalType: 'address', type: 'address' },\n      { name: 'rights', internalType: 'bytes32', type: 'bytes32' },\n      { name: 'amount', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'delegateERC20',\n    outputs: [{ name: 'hash', internalType: 'bytes32', type: 'bytes32' }],\n  },\n  {\n    stateMutability: 'payable',\n    type: 'function',\n    inputs: [\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'contract_', internalType: 'address', type: 'address' },\n      { name: 'tokenId', internalType: 'uint256', type: 'uint256' },\n      { name: 'rights', internalType: 'bytes32', type: 'bytes32' },\n      { name: 'enable', internalType: 'bool', type: 'bool' },\n    ],\n    name: 'delegateERC721',\n    outputs: [{ name: 'hash', internalType: 'bytes32', type: 'bytes32' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: 'hashes', internalType: 'bytes32[]', type: 'bytes32[]' }],\n    name: 'getDelegationsFromHashes',\n    outputs: [\n      {\n        name: 'delegations_',\n        internalType: 'struct IDelegateRegistry.Delegation[]',\n        type: 'tuple[]',\n        components: [\n          { name: 'type_', internalType: 'enum IDelegateRegistry.DelegationType', type: 'uint8' },\n          { name: 'to', internalType: 'address', type: 'address' },\n          { name: 'from', internalType: 'address', type: 'address' },\n          { name: 'rights', internalType: 'bytes32', type: 'bytes32' },\n          { name: 'contract_', internalType: 'address', type: 'address' },\n          { name: 'tokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'amount', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n    ],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: 'to', internalType: 'address', type: 'address' }],\n    name: 'getIncomingDelegationHashes',\n    outputs: [{ name: 'delegationHashes', internalType: 'bytes32[]', type: 'bytes32[]' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: 'to', internalType: 'address', type: 'address' }],\n    name: 'getIncomingDelegations',\n    outputs: [\n      {\n        name: 'delegations_',\n        internalType: 'struct IDelegateRegistry.Delegation[]',\n        type: 'tuple[]',\n        components: [\n          { name: 'type_', internalType: 'enum IDelegateRegistry.DelegationType', type: 'uint8' },\n          { name: 'to', internalType: 'address', type: 'address' },\n          { name: 'from', internalType: 'address', type: 'address' },\n          { name: 'rights', internalType: 'bytes32', type: 'bytes32' },\n          { name: 'contract_', internalType: 'address', type: 'address' },\n          { name: 'tokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'amount', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n    ],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: 'from', internalType: 'address', type: 'address' }],\n    name: 'getOutgoingDelegationHashes',\n    outputs: [{ name: 'delegationHashes', internalType: 'bytes32[]', type: 'bytes32[]' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: 'from', internalType: 'address', type: 'address' }],\n    name: 'getOutgoingDelegations',\n    outputs: [\n      {\n        name: 'delegations_',\n        internalType: 'struct IDelegateRegistry.Delegation[]',\n        type: 'tuple[]',\n        components: [\n          { name: 'type_', internalType: 'enum IDelegateRegistry.DelegationType', type: 'uint8' },\n          { name: 'to', internalType: 'address', type: 'address' },\n          { name: 'from', internalType: 'address', type: 'address' },\n          { name: 'rights', internalType: 'bytes32', type: 'bytes32' },\n          { name: 'contract_', internalType: 'address', type: 'address' },\n          { name: 'tokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'amount', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n    ],\n  },\n  {\n    stateMutability: 'payable',\n    type: 'function',\n    inputs: [{ name: 'data', internalType: 'bytes[]', type: 'bytes[]' }],\n    name: 'multicall',\n    outputs: [{ name: 'results', internalType: 'bytes[]', type: 'bytes[]' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: 'location', internalType: 'bytes32', type: 'bytes32' }],\n    name: 'readSlot',\n    outputs: [{ name: 'contents', internalType: 'bytes32', type: 'bytes32' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: 'locations', internalType: 'bytes32[]', type: 'bytes32[]' }],\n    name: 'readSlots',\n    outputs: [{ name: 'contents', internalType: 'bytes32[]', type: 'bytes32[]' }],\n  },\n  {\n    stateMutability: 'pure',\n    type: 'function',\n    inputs: [{ name: 'interfaceId', internalType: 'bytes4', type: 'bytes4' }],\n    name: 'supportsInterface',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n  },\n  { stateMutability: 'nonpayable', type: 'function', inputs: [], name: 'sweep', outputs: [] },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// DelegationRegistry\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const delegationRegistryABI = [\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'vault', internalType: 'address', type: 'address', indexed: false },\n      { name: 'delegate', internalType: 'address', type: 'address', indexed: false },\n      { name: 'value', internalType: 'bool', type: 'bool', indexed: false },\n    ],\n    name: 'DelegateForAll',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'vault', internalType: 'address', type: 'address', indexed: false },\n      { name: 'delegate', internalType: 'address', type: 'address', indexed: false },\n      { name: 'contract_', internalType: 'address', type: 'address', indexed: false },\n      { name: 'value', internalType: 'bool', type: 'bool', indexed: false },\n    ],\n    name: 'DelegateForContract',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'vault', internalType: 'address', type: 'address', indexed: false },\n      { name: 'delegate', internalType: 'address', type: 'address', indexed: false },\n      { name: 'contract_', internalType: 'address', type: 'address', indexed: false },\n      { name: 'tokenId', internalType: 'uint256', type: 'uint256', indexed: false },\n      { name: 'value', internalType: 'bool', type: 'bool', indexed: false },\n    ],\n    name: 'DelegateForToken',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'vault', internalType: 'address', type: 'address', indexed: false }],\n    name: 'RevokeAllDelegates',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'vault', internalType: 'address', type: 'address', indexed: false },\n      { name: 'delegate', internalType: 'address', type: 'address', indexed: false },\n    ],\n    name: 'RevokeDelegate',\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [\n      { name: 'delegate', internalType: 'address', type: 'address' },\n      { name: 'vault', internalType: 'address', type: 'address' },\n    ],\n    name: 'checkDelegateForAll',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [\n      { name: 'delegate', internalType: 'address', type: 'address' },\n      { name: 'vault', internalType: 'address', type: 'address' },\n      { name: 'contract_', internalType: 'address', type: 'address' },\n    ],\n    name: 'checkDelegateForContract',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [\n      { name: 'delegate', internalType: 'address', type: 'address' },\n      { name: 'vault', internalType: 'address', type: 'address' },\n      { name: 'contract_', internalType: 'address', type: 'address' },\n      { name: 'tokenId', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'checkDelegateForToken',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: 'delegate', internalType: 'address', type: 'address' },\n      { name: 'value', internalType: 'bool', type: 'bool' },\n    ],\n    name: 'delegateForAll',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: 'delegate', internalType: 'address', type: 'address' },\n      { name: 'contract_', internalType: 'address', type: 'address' },\n      { name: 'value', internalType: 'bool', type: 'bool' },\n    ],\n    name: 'delegateForContract',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: 'delegate', internalType: 'address', type: 'address' },\n      { name: 'contract_', internalType: 'address', type: 'address' },\n      { name: 'tokenId', internalType: 'uint256', type: 'uint256' },\n      { name: 'value', internalType: 'bool', type: 'bool' },\n    ],\n    name: 'delegateForToken',\n    outputs: [],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: 'vault', internalType: 'address', type: 'address' }],\n    name: 'getContractLevelDelegations',\n    outputs: [\n      {\n        name: 'contractDelegations',\n        internalType: 'struct IDelegationRegistry.ContractDelegation[]',\n        type: 'tuple[]',\n        components: [\n          { name: 'contract_', internalType: 'address', type: 'address' },\n          { name: 'delegate', internalType: 'address', type: 'address' },\n        ],\n      },\n    ],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: 'vault', internalType: 'address', type: 'address' }],\n    name: 'getDelegatesForAll',\n    outputs: [{ name: 'delegates', internalType: 'address[]', type: 'address[]' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [\n      { name: 'vault', internalType: 'address', type: 'address' },\n      { name: 'contract_', internalType: 'address', type: 'address' },\n    ],\n    name: 'getDelegatesForContract',\n    outputs: [{ name: 'delegates', internalType: 'address[]', type: 'address[]' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [\n      { name: 'vault', internalType: 'address', type: 'address' },\n      { name: 'contract_', internalType: 'address', type: 'address' },\n      { name: 'tokenId', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'getDelegatesForToken',\n    outputs: [{ name: 'delegates', internalType: 'address[]', type: 'address[]' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: 'delegate', internalType: 'address', type: 'address' }],\n    name: 'getDelegationsByDelegate',\n    outputs: [\n      {\n        name: 'info',\n        internalType: 'struct IDelegationRegistry.DelegationInfo[]',\n        type: 'tuple[]',\n        components: [\n          { name: 'type_', internalType: 'enum IDelegationRegistry.DelegationType', type: 'uint8' },\n          { name: 'vault', internalType: 'address', type: 'address' },\n          { name: 'delegate', internalType: 'address', type: 'address' },\n          { name: 'contract_', internalType: 'address', type: 'address' },\n          { name: 'tokenId', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n    ],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: 'vault', internalType: 'address', type: 'address' }],\n    name: 'getTokenLevelDelegations',\n    outputs: [\n      {\n        name: 'tokenDelegations',\n        internalType: 'struct IDelegationRegistry.TokenDelegation[]',\n        type: 'tuple[]',\n        components: [\n          { name: 'contract_', internalType: 'address', type: 'address' },\n          { name: 'tokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'delegate', internalType: 'address', type: 'address' },\n        ],\n      },\n    ],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [],\n    name: 'revokeAllDelegates',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: 'delegate', internalType: 'address', type: 'address' }],\n    name: 'revokeDelegate',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: 'vault', internalType: 'address', type: 'address' }],\n    name: 'revokeSelf',\n    outputs: [],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: 'interfaceId', internalType: 'bytes4', type: 'bytes4' }],\n    name: 'supportsInterface',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n  },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// IAuctionLoanLiquidator\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const iAuctionLoanLiquidatorABI = [\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: '_loanContract', internalType: 'address', type: 'address' }],\n    name: 'addLoanContract',\n    outputs: [],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [\n      { name: '_contract', internalType: 'address', type: 'address' },\n      { name: '_tokenId', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'getAuctionHash',\n    outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getLiquidationDistributor',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getTriggerFee',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getValidLoanContracts',\n    outputs: [{ name: '', internalType: 'address[]', type: 'address[]' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: '_contract', internalType: 'address', type: 'address' },\n      { name: '_tokenId', internalType: 'uint256', type: 'uint256' },\n      {\n        name: '_auction',\n        internalType: 'struct IAuctionLoanLiquidator.Auction',\n        type: 'tuple',\n        components: [\n          { name: 'loanAddress', internalType: 'address', type: 'address' },\n          { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n          { name: 'highestBid', internalType: 'uint256', type: 'uint256' },\n          { name: 'triggerFee', internalType: 'uint256', type: 'uint256' },\n          { name: 'highestBidder', internalType: 'address', type: 'address' },\n          { name: 'duration', internalType: 'uint96', type: 'uint96' },\n          { name: 'asset', internalType: 'address', type: 'address' },\n          { name: 'startTime', internalType: 'uint96', type: 'uint96' },\n          { name: 'originator', internalType: 'address', type: 'address' },\n          { name: 'lastBidTime', internalType: 'uint96', type: 'uint96' },\n        ],\n      },\n      { name: '_bid', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'placeBid',\n    outputs: [\n      {\n        name: '',\n        internalType: 'struct IAuctionLoanLiquidator.Auction',\n        type: 'tuple',\n        components: [\n          { name: 'loanAddress', internalType: 'address', type: 'address' },\n          { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n          { name: 'highestBid', internalType: 'uint256', type: 'uint256' },\n          { name: 'triggerFee', internalType: 'uint256', type: 'uint256' },\n          { name: 'highestBidder', internalType: 'address', type: 'address' },\n          { name: 'duration', internalType: 'uint96', type: 'uint96' },\n          { name: 'asset', internalType: 'address', type: 'address' },\n          { name: 'startTime', internalType: 'uint96', type: 'uint96' },\n          { name: 'originator', internalType: 'address', type: 'address' },\n          { name: 'lastBidTime', internalType: 'uint96', type: 'uint96' },\n        ],\n      },\n    ],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: '_loanContract', internalType: 'address', type: 'address' }],\n    name: 'removeLoanContract',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      {\n        name: '_auction',\n        internalType: 'struct IAuctionLoanLiquidator.Auction',\n        type: 'tuple',\n        components: [\n          { name: 'loanAddress', internalType: 'address', type: 'address' },\n          { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n          { name: 'highestBid', internalType: 'uint256', type: 'uint256' },\n          { name: 'triggerFee', internalType: 'uint256', type: 'uint256' },\n          { name: 'highestBidder', internalType: 'address', type: 'address' },\n          { name: 'duration', internalType: 'uint96', type: 'uint96' },\n          { name: 'asset', internalType: 'address', type: 'address' },\n          { name: 'startTime', internalType: 'uint96', type: 'uint96' },\n          { name: 'originator', internalType: 'address', type: 'address' },\n          { name: 'lastBidTime', internalType: 'uint96', type: 'uint96' },\n        ],\n      },\n      {\n        name: '_loan',\n        internalType: 'struct IMultiSourceLoan.Loan',\n        type: 'tuple',\n        components: [\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'source',\n            internalType: 'struct IMultiSourceLoan.Source[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n              { name: 'lender', internalType: 'address', type: 'address' },\n              { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n              { name: 'accruedInterest', internalType: 'uint256', type: 'uint256' },\n              { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n              { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n            ],\n          },\n        ],\n      },\n    ],\n    name: 'settleAuction',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: '_liquidationDistributor', internalType: 'address', type: 'address' }],\n    name: 'updateLiquidationDistributor',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: 'triggerFee', internalType: 'uint256', type: 'uint256' }],\n    name: 'updateTriggerFee',\n    outputs: [],\n  },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// IBaseLoan\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const iBaseLoanABI = [\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: '_minOfferId', internalType: 'uint256', type: 'uint256' }],\n    name: 'cancelAllOffers',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: '_minRenegotiationId', internalType: 'uint256', type: 'uint256' }],\n    name: 'cancelAllRenegotiationOffers',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: '_offerId', internalType: 'uint256', type: 'uint256' }],\n    name: 'cancelOffer',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: '_offerIds', internalType: 'uint256[]', type: 'uint256[]' }],\n    name: 'cancelOffers',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: '_renegotiationId', internalType: 'uint256', type: 'uint256' }],\n    name: 'cancelRenegotiationOffer',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: '_renegotiationIds', internalType: 'uint256[]', type: 'uint256[]' }],\n    name: 'cancelRenegotiationOffers',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [],\n    name: 'getLiquidationAuctionDuration',\n    outputs: [{ name: '', internalType: 'uint48', type: 'uint48' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [],\n    name: 'getLiquidator',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getPendingProtocolFee',\n    outputs: [\n      {\n        name: '',\n        internalType: 'struct IBaseLoan.ProtocolFee',\n        type: 'tuple',\n        components: [\n          { name: 'recipient', internalType: 'address', type: 'address' },\n          { name: 'fraction', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n    ],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getPendingProtocolFeeSetTime',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getProtocolFee',\n    outputs: [\n      {\n        name: '',\n        internalType: 'struct IBaseLoan.ProtocolFee',\n        type: 'tuple',\n        components: [\n          { name: 'recipient', internalType: 'address', type: 'address' },\n          { name: 'fraction', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n    ],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getTotalLoansIssued',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [],\n    name: 'setProtocolFee',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: '_newDuration', internalType: 'uint48', type: 'uint48' }],\n    name: 'updateLiquidationAuctionDuration',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: 'loanLiquidator', internalType: 'contract ILoanLiquidator', type: 'address' }],\n    name: 'updateLiquidationContract',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      {\n        name: '_newProtocolFee',\n        internalType: 'struct IBaseLoan.ProtocolFee',\n        type: 'tuple',\n        components: [\n          { name: 'recipient', internalType: 'address', type: 'address' },\n          { name: 'fraction', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n    ],\n    name: 'updateProtocolFee',\n    outputs: [],\n  },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// IBaseOfferValidator\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const iBaseOfferValidatorABI = [\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      {\n        name: '_offer',\n        internalType: 'struct IBaseLoan.LoanOffer',\n        type: 'tuple',\n        components: [\n          { name: 'offerId', internalType: 'uint256', type: 'uint256' },\n          { name: 'lender', internalType: 'address', type: 'address' },\n          { name: 'fee', internalType: 'uint256', type: 'uint256' },\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'capacity', internalType: 'uint256', type: 'uint256' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n          { name: 'expirationTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'validators',\n            internalType: 'struct IBaseLoan.OfferValidator[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'validator', internalType: 'address', type: 'address' },\n              { name: 'arguments', internalType: 'bytes', type: 'bytes' },\n            ],\n          },\n        ],\n      },\n      { name: '_tokenId', internalType: 'uint256', type: 'uint256' },\n      { name: '_validatorData', internalType: 'bytes', type: 'bytes' },\n    ],\n    name: 'validateOffer',\n    outputs: [],\n  },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// ICryptoPunksMarket\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const iCryptoPunksMarketABI = [\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: 'user', internalType: 'address', type: 'address' }],\n    name: 'pendingWithdrawals',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: 'punkIndex', internalType: 'uint256', type: 'uint256' }],\n    name: 'punkBids',\n    outputs: [\n      {\n        name: '',\n        internalType: 'struct ICryptoPunksMarket.Bid',\n        type: 'tuple',\n        components: [\n          { name: 'hasBid', internalType: 'bool', type: 'bool' },\n          { name: 'punkIndex', internalType: 'uint256', type: 'uint256' },\n          { name: 'bidder', internalType: 'address', type: 'address' },\n          { name: 'value', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n    ],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: 'punkIndex', internalType: 'uint256', type: 'uint256' }],\n    name: 'punkIndexToAddress',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'punkIndex', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'transferPunk',\n    outputs: [],\n  },\n  { stateMutability: 'nonpayable', type: 'function', inputs: [], name: 'withdraw', outputs: [] },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// IDelegateRegistry\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const iDelegateRegistryABI = [\n  { type: 'error', inputs: [], name: 'MulticallFailed' },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address', indexed: true },\n      { name: 'to', internalType: 'address', type: 'address', indexed: true },\n      { name: 'rights', internalType: 'bytes32', type: 'bytes32', indexed: false },\n      { name: 'enable', internalType: 'bool', type: 'bool', indexed: false },\n    ],\n    name: 'DelegateAll',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address', indexed: true },\n      { name: 'to', internalType: 'address', type: 'address', indexed: true },\n      { name: 'contract_', internalType: 'address', type: 'address', indexed: true },\n      { name: 'rights', internalType: 'bytes32', type: 'bytes32', indexed: false },\n      { name: 'enable', internalType: 'bool', type: 'bool', indexed: false },\n    ],\n    name: 'DelegateContract',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address', indexed: true },\n      { name: 'to', internalType: 'address', type: 'address', indexed: true },\n      { name: 'contract_', internalType: 'address', type: 'address', indexed: true },\n      { name: 'tokenId', internalType: 'uint256', type: 'uint256', indexed: false },\n      { name: 'rights', internalType: 'bytes32', type: 'bytes32', indexed: false },\n      { name: 'amount', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'DelegateERC1155',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address', indexed: true },\n      { name: 'to', internalType: 'address', type: 'address', indexed: true },\n      { name: 'contract_', internalType: 'address', type: 'address', indexed: true },\n      { name: 'rights', internalType: 'bytes32', type: 'bytes32', indexed: false },\n      { name: 'amount', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'DelegateERC20',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address', indexed: true },\n      { name: 'to', internalType: 'address', type: 'address', indexed: true },\n      { name: 'contract_', internalType: 'address', type: 'address', indexed: true },\n      { name: 'tokenId', internalType: 'uint256', type: 'uint256', indexed: false },\n      { name: 'rights', internalType: 'bytes32', type: 'bytes32', indexed: false },\n      { name: 'enable', internalType: 'bool', type: 'bool', indexed: false },\n    ],\n    name: 'DelegateERC721',\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'from', internalType: 'address', type: 'address' },\n      { name: 'rights', internalType: 'bytes32', type: 'bytes32' },\n    ],\n    name: 'checkDelegateForAll',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'from', internalType: 'address', type: 'address' },\n      { name: 'contract_', internalType: 'address', type: 'address' },\n      { name: 'rights', internalType: 'bytes32', type: 'bytes32' },\n    ],\n    name: 'checkDelegateForContract',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'from', internalType: 'address', type: 'address' },\n      { name: 'contract_', internalType: 'address', type: 'address' },\n      { name: 'tokenId', internalType: 'uint256', type: 'uint256' },\n      { name: 'rights', internalType: 'bytes32', type: 'bytes32' },\n    ],\n    name: 'checkDelegateForERC1155',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'from', internalType: 'address', type: 'address' },\n      { name: 'contract_', internalType: 'address', type: 'address' },\n      { name: 'rights', internalType: 'bytes32', type: 'bytes32' },\n    ],\n    name: 'checkDelegateForERC20',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'from', internalType: 'address', type: 'address' },\n      { name: 'contract_', internalType: 'address', type: 'address' },\n      { name: 'tokenId', internalType: 'uint256', type: 'uint256' },\n      { name: 'rights', internalType: 'bytes32', type: 'bytes32' },\n    ],\n    name: 'checkDelegateForERC721',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n  },\n  {\n    stateMutability: 'payable',\n    type: 'function',\n    inputs: [\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'rights', internalType: 'bytes32', type: 'bytes32' },\n      { name: 'enable', internalType: 'bool', type: 'bool' },\n    ],\n    name: 'delegateAll',\n    outputs: [{ name: 'delegationHash', internalType: 'bytes32', type: 'bytes32' }],\n  },\n  {\n    stateMutability: 'payable',\n    type: 'function',\n    inputs: [\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'contract_', internalType: 'address', type: 'address' },\n      { name: 'rights', internalType: 'bytes32', type: 'bytes32' },\n      { name: 'enable', internalType: 'bool', type: 'bool' },\n    ],\n    name: 'delegateContract',\n    outputs: [{ name: 'delegationHash', internalType: 'bytes32', type: 'bytes32' }],\n  },\n  {\n    stateMutability: 'payable',\n    type: 'function',\n    inputs: [\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'contract_', internalType: 'address', type: 'address' },\n      { name: 'tokenId', internalType: 'uint256', type: 'uint256' },\n      { name: 'rights', internalType: 'bytes32', type: 'bytes32' },\n      { name: 'amount', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'delegateERC1155',\n    outputs: [{ name: 'delegationHash', internalType: 'bytes32', type: 'bytes32' }],\n  },\n  {\n    stateMutability: 'payable',\n    type: 'function',\n    inputs: [\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'contract_', internalType: 'address', type: 'address' },\n      { name: 'rights', internalType: 'bytes32', type: 'bytes32' },\n      { name: 'amount', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'delegateERC20',\n    outputs: [{ name: 'delegationHash', internalType: 'bytes32', type: 'bytes32' }],\n  },\n  {\n    stateMutability: 'payable',\n    type: 'function',\n    inputs: [\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'contract_', internalType: 'address', type: 'address' },\n      { name: 'tokenId', internalType: 'uint256', type: 'uint256' },\n      { name: 'rights', internalType: 'bytes32', type: 'bytes32' },\n      { name: 'enable', internalType: 'bool', type: 'bool' },\n    ],\n    name: 'delegateERC721',\n    outputs: [{ name: 'delegationHash', internalType: 'bytes32', type: 'bytes32' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: 'delegationHashes', internalType: 'bytes32[]', type: 'bytes32[]' }],\n    name: 'getDelegationsFromHashes',\n    outputs: [\n      {\n        name: 'delegations',\n        internalType: 'struct IDelegateRegistry.Delegation[]',\n        type: 'tuple[]',\n        components: [\n          { name: 'type_', internalType: 'enum IDelegateRegistry.DelegationType', type: 'uint8' },\n          { name: 'to', internalType: 'address', type: 'address' },\n          { name: 'from', internalType: 'address', type: 'address' },\n          { name: 'rights', internalType: 'bytes32', type: 'bytes32' },\n          { name: 'contract_', internalType: 'address', type: 'address' },\n          { name: 'tokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'amount', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n    ],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: 'to', internalType: 'address', type: 'address' }],\n    name: 'getIncomingDelegationHashes',\n    outputs: [{ name: 'delegationHashes', internalType: 'bytes32[]', type: 'bytes32[]' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: 'to', internalType: 'address', type: 'address' }],\n    name: 'getIncomingDelegations',\n    outputs: [\n      {\n        name: 'delegations',\n        internalType: 'struct IDelegateRegistry.Delegation[]',\n        type: 'tuple[]',\n        components: [\n          { name: 'type_', internalType: 'enum IDelegateRegistry.DelegationType', type: 'uint8' },\n          { name: 'to', internalType: 'address', type: 'address' },\n          { name: 'from', internalType: 'address', type: 'address' },\n          { name: 'rights', internalType: 'bytes32', type: 'bytes32' },\n          { name: 'contract_', internalType: 'address', type: 'address' },\n          { name: 'tokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'amount', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n    ],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: 'from', internalType: 'address', type: 'address' }],\n    name: 'getOutgoingDelegationHashes',\n    outputs: [{ name: 'delegationHashes', internalType: 'bytes32[]', type: 'bytes32[]' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: 'from', internalType: 'address', type: 'address' }],\n    name: 'getOutgoingDelegations',\n    outputs: [\n      {\n        name: 'delegations',\n        internalType: 'struct IDelegateRegistry.Delegation[]',\n        type: 'tuple[]',\n        components: [\n          { name: 'type_', internalType: 'enum IDelegateRegistry.DelegationType', type: 'uint8' },\n          { name: 'to', internalType: 'address', type: 'address' },\n          { name: 'from', internalType: 'address', type: 'address' },\n          { name: 'rights', internalType: 'bytes32', type: 'bytes32' },\n          { name: 'contract_', internalType: 'address', type: 'address' },\n          { name: 'tokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'amount', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n    ],\n  },\n  {\n    stateMutability: 'payable',\n    type: 'function',\n    inputs: [{ name: 'data', internalType: 'bytes[]', type: 'bytes[]' }],\n    name: 'multicall',\n    outputs: [{ name: 'results', internalType: 'bytes[]', type: 'bytes[]' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: 'location', internalType: 'bytes32', type: 'bytes32' }],\n    name: 'readSlot',\n    outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: 'locations', internalType: 'bytes32[]', type: 'bytes32[]' }],\n    name: 'readSlots',\n    outputs: [{ name: '', internalType: 'bytes32[]', type: 'bytes32[]' }],\n  },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// IDelegationRegistry\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const iDelegationRegistryABI = [\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'vault', internalType: 'address', type: 'address', indexed: false },\n      { name: 'delegate', internalType: 'address', type: 'address', indexed: false },\n      { name: 'value', internalType: 'bool', type: 'bool', indexed: false },\n    ],\n    name: 'DelegateForAll',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'vault', internalType: 'address', type: 'address', indexed: false },\n      { name: 'delegate', internalType: 'address', type: 'address', indexed: false },\n      { name: 'contract_', internalType: 'address', type: 'address', indexed: false },\n      { name: 'value', internalType: 'bool', type: 'bool', indexed: false },\n    ],\n    name: 'DelegateForContract',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'vault', internalType: 'address', type: 'address', indexed: false },\n      { name: 'delegate', internalType: 'address', type: 'address', indexed: false },\n      { name: 'contract_', internalType: 'address', type: 'address', indexed: false },\n      { name: 'tokenId', internalType: 'uint256', type: 'uint256', indexed: false },\n      { name: 'value', internalType: 'bool', type: 'bool', indexed: false },\n    ],\n    name: 'DelegateForToken',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'vault', internalType: 'address', type: 'address', indexed: false }],\n    name: 'RevokeAllDelegates',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'vault', internalType: 'address', type: 'address', indexed: false },\n      { name: 'delegate', internalType: 'address', type: 'address', indexed: false },\n    ],\n    name: 'RevokeDelegate',\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [\n      { name: 'delegate', internalType: 'address', type: 'address' },\n      { name: 'vault', internalType: 'address', type: 'address' },\n    ],\n    name: 'checkDelegateForAll',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [\n      { name: 'delegate', internalType: 'address', type: 'address' },\n      { name: 'vault', internalType: 'address', type: 'address' },\n      { name: 'contract_', internalType: 'address', type: 'address' },\n    ],\n    name: 'checkDelegateForContract',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [\n      { name: 'delegate', internalType: 'address', type: 'address' },\n      { name: 'vault', internalType: 'address', type: 'address' },\n      { name: 'contract_', internalType: 'address', type: 'address' },\n      { name: 'tokenId', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'checkDelegateForToken',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: 'delegate', internalType: 'address', type: 'address' },\n      { name: 'value', internalType: 'bool', type: 'bool' },\n    ],\n    name: 'delegateForAll',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: 'delegate', internalType: 'address', type: 'address' },\n      { name: 'contract_', internalType: 'address', type: 'address' },\n      { name: 'value', internalType: 'bool', type: 'bool' },\n    ],\n    name: 'delegateForContract',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: 'delegate', internalType: 'address', type: 'address' },\n      { name: 'contract_', internalType: 'address', type: 'address' },\n      { name: 'tokenId', internalType: 'uint256', type: 'uint256' },\n      { name: 'value', internalType: 'bool', type: 'bool' },\n    ],\n    name: 'delegateForToken',\n    outputs: [],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: 'vault', internalType: 'address', type: 'address' }],\n    name: 'getContractLevelDelegations',\n    outputs: [\n      {\n        name: 'delegations',\n        internalType: 'struct IDelegationRegistry.ContractDelegation[]',\n        type: 'tuple[]',\n        components: [\n          { name: 'contract_', internalType: 'address', type: 'address' },\n          { name: 'delegate', internalType: 'address', type: 'address' },\n        ],\n      },\n    ],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: 'vault', internalType: 'address', type: 'address' }],\n    name: 'getDelegatesForAll',\n    outputs: [{ name: '', internalType: 'address[]', type: 'address[]' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [\n      { name: 'vault', internalType: 'address', type: 'address' },\n      { name: 'contract_', internalType: 'address', type: 'address' },\n    ],\n    name: 'getDelegatesForContract',\n    outputs: [{ name: '', internalType: 'address[]', type: 'address[]' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [\n      { name: 'vault', internalType: 'address', type: 'address' },\n      { name: 'contract_', internalType: 'address', type: 'address' },\n      { name: 'tokenId', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'getDelegatesForToken',\n    outputs: [{ name: '', internalType: 'address[]', type: 'address[]' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: 'delegate', internalType: 'address', type: 'address' }],\n    name: 'getDelegationsByDelegate',\n    outputs: [\n      {\n        name: '',\n        internalType: 'struct IDelegationRegistry.DelegationInfo[]',\n        type: 'tuple[]',\n        components: [\n          { name: 'type_', internalType: 'enum IDelegationRegistry.DelegationType', type: 'uint8' },\n          { name: 'vault', internalType: 'address', type: 'address' },\n          { name: 'delegate', internalType: 'address', type: 'address' },\n          { name: 'contract_', internalType: 'address', type: 'address' },\n          { name: 'tokenId', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n    ],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: 'vault', internalType: 'address', type: 'address' }],\n    name: 'getTokenLevelDelegations',\n    outputs: [\n      {\n        name: 'delegations',\n        internalType: 'struct IDelegationRegistry.TokenDelegation[]',\n        type: 'tuple[]',\n        components: [\n          { name: 'contract_', internalType: 'address', type: 'address' },\n          { name: 'tokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'delegate', internalType: 'address', type: 'address' },\n        ],\n      },\n    ],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [],\n    name: 'revokeAllDelegates',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: 'delegate', internalType: 'address', type: 'address' }],\n    name: 'revokeDelegate',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: 'vault', internalType: 'address', type: 'address' }],\n    name: 'revokeSelf',\n    outputs: [],\n  },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// IERC1271\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const ierc1271ABI = [\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [\n      { name: 'hash', internalType: 'bytes32', type: 'bytes32' },\n      { name: 'signature', internalType: 'bytes', type: 'bytes' },\n    ],\n    name: 'isValidSignature',\n    outputs: [{ name: 'magicValue', internalType: 'bytes4', type: 'bytes4' }],\n  },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// IERC165\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const ierc165ABI = [\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: 'interfaceId', internalType: 'bytes4', type: 'bytes4' }],\n    name: 'supportsInterface',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n  },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// ILeverage\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const iLeverageABI = [\n  {\n    stateMutability: 'payable',\n    type: 'function',\n    inputs: [{ name: '_executionData', internalType: 'bytes[]', type: 'bytes[]' }],\n    name: 'buy',\n    outputs: [\n      { name: '', internalType: 'uint256[]', type: 'uint256[]' },\n      {\n        name: '',\n        internalType: 'struct IMultiSourceLoan.Loan[]',\n        type: 'tuple[]',\n        components: [\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'source',\n            internalType: 'struct IMultiSourceLoan.Source[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n              { name: 'lender', internalType: 'address', type: 'address' },\n              { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n              { name: 'accruedInterest', internalType: 'uint256', type: 'uint256' },\n              { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n              { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n            ],\n          },\n        ],\n      },\n    ],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: '_newAddress', internalType: 'address', type: 'address' }],\n    name: 'finalUpdateMultiSourceLoanAddress',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: '_newAddress', internalType: 'address', type: 'address' }],\n    name: 'finalUpdateSeaportAddress',\n    outputs: [],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getMultiSourceLoanAddress',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getSeaportAddress',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: '_executionData', internalType: 'bytes[]', type: 'bytes[]' }],\n    name: 'sell',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: '_newAddress', internalType: 'address', type: 'address' }],\n    name: 'updateMultiSourceLoanAddressFirst',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: '_newAddress', internalType: 'address', type: 'address' }],\n    name: 'updateSeaportAddressFirst',\n    outputs: [],\n  },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// ILiquidationDistributor\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const iLiquidationDistributorABI = [\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: '_repayment', internalType: 'uint256', type: 'uint256' },\n      {\n        name: '_loan',\n        internalType: 'struct IMultiSourceLoan.Loan',\n        type: 'tuple',\n        components: [\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'source',\n            internalType: 'struct IMultiSourceLoan.Source[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n              { name: 'lender', internalType: 'address', type: 'address' },\n              { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n              { name: 'accruedInterest', internalType: 'uint256', type: 'uint256' },\n              { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n              { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n            ],\n          },\n        ],\n      },\n    ],\n    name: 'distribute',\n    outputs: [],\n  },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// ILoanCallback\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const iLoanCallbackABI = [\n  { type: 'error', inputs: [], name: 'InvalidCallbackError' },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      {\n        name: '_loan',\n        internalType: 'struct IMultiSourceLoan.Loan',\n        type: 'tuple',\n        components: [\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'source',\n            internalType: 'struct IMultiSourceLoan.Source[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n              { name: 'lender', internalType: 'address', type: 'address' },\n              { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n              { name: 'accruedInterest', internalType: 'uint256', type: 'uint256' },\n              { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n              { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n            ],\n          },\n        ],\n      },\n      { name: '_executionData', internalType: 'bytes', type: 'bytes' },\n    ],\n    name: 'afterNFTTransfer',\n    outputs: [{ name: '', internalType: 'bytes4', type: 'bytes4' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      {\n        name: '_loan',\n        internalType: 'struct IMultiSourceLoan.Loan',\n        type: 'tuple',\n        components: [\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'source',\n            internalType: 'struct IMultiSourceLoan.Source[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n              { name: 'lender', internalType: 'address', type: 'address' },\n              { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n              { name: 'accruedInterest', internalType: 'uint256', type: 'uint256' },\n              { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n              { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n            ],\n          },\n        ],\n      },\n      { name: '_fee', internalType: 'uint256', type: 'uint256' },\n      { name: '_executionData', internalType: 'bytes', type: 'bytes' },\n    ],\n    name: 'afterPrincipalTransfer',\n    outputs: [{ name: '', internalType: 'bytes4', type: 'bytes4' }],\n  },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// ILoanLiquidator\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const iLoanLiquidatorABI = [\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: '_loanId', internalType: 'uint256', type: 'uint256' },\n      { name: '_contract', internalType: 'address', type: 'address' },\n      { name: '_tokenId', internalType: 'uint256', type: 'uint256' },\n      { name: '_asset', internalType: 'address', type: 'address' },\n      { name: '_duration', internalType: 'uint96', type: 'uint96' },\n      { name: '_originator', internalType: 'address', type: 'address' },\n    ],\n    name: 'liquidateLoan',\n    outputs: [{ name: '', internalType: 'bytes', type: 'bytes' }],\n  },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// IMultiSourceLoan\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const iMultiSourceLoanABI = [\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: '_loanId', internalType: 'uint256', type: 'uint256' },\n      {\n        name: '_loan',\n        internalType: 'struct IMultiSourceLoan.Loan',\n        type: 'tuple',\n        components: [\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'source',\n            internalType: 'struct IMultiSourceLoan.Source[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n              { name: 'lender', internalType: 'address', type: 'address' },\n              { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n              { name: 'accruedInterest', internalType: 'uint256', type: 'uint256' },\n              { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n              { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n            ],\n          },\n        ],\n      },\n      { name: '_delegate', internalType: 'address', type: 'address' },\n      { name: '_rights', internalType: 'bytes32', type: 'bytes32' },\n      { name: '_value', internalType: 'bool', type: 'bool' },\n    ],\n    name: 'delegate',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      {\n        name: '_executionData',\n        internalType: 'struct IMultiSourceLoan.LoanExecutionData',\n        type: 'tuple',\n        components: [\n          {\n            name: 'executionData',\n            internalType: 'struct IBaseLoan.ExecutionData',\n            type: 'tuple',\n            components: [\n              {\n                name: 'offer',\n                internalType: 'struct IBaseLoan.LoanOffer',\n                type: 'tuple',\n                components: [\n                  { name: 'offerId', internalType: 'uint256', type: 'uint256' },\n                  { name: 'lender', internalType: 'address', type: 'address' },\n                  { name: 'fee', internalType: 'uint256', type: 'uint256' },\n                  { name: 'borrower', internalType: 'address', type: 'address' },\n                  { name: 'capacity', internalType: 'uint256', type: 'uint256' },\n                  { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n                  { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n                  { name: 'principalAddress', internalType: 'address', type: 'address' },\n                  { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n                  { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n                  { name: 'expirationTime', internalType: 'uint256', type: 'uint256' },\n                  { name: 'duration', internalType: 'uint256', type: 'uint256' },\n                  {\n                    name: 'validators',\n                    internalType: 'struct IBaseLoan.OfferValidator[]',\n                    type: 'tuple[]',\n                    components: [\n                      { name: 'validator', internalType: 'address', type: 'address' },\n                      { name: 'arguments', internalType: 'bytes', type: 'bytes' },\n                    ],\n                  },\n                ],\n              },\n              { name: 'tokenId', internalType: 'uint256', type: 'uint256' },\n              { name: 'amount', internalType: 'uint256', type: 'uint256' },\n              { name: 'expirationTime', internalType: 'uint256', type: 'uint256' },\n              { name: 'callbackData', internalType: 'bytes', type: 'bytes' },\n            ],\n          },\n          { name: 'lender', internalType: 'address', type: 'address' },\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'lenderOfferSignature', internalType: 'bytes', type: 'bytes' },\n          { name: 'borrowerOfferSignature', internalType: 'bytes', type: 'bytes' },\n        ],\n      },\n    ],\n    name: 'emitLoan',\n    outputs: [\n      { name: '', internalType: 'uint256', type: 'uint256' },\n      {\n        name: '',\n        internalType: 'struct IMultiSourceLoan.Loan',\n        type: 'tuple',\n        components: [\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'source',\n            internalType: 'struct IMultiSourceLoan.Source[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n              { name: 'lender', internalType: 'address', type: 'address' },\n              { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n              { name: 'accruedInterest', internalType: 'uint256', type: 'uint256' },\n              { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n              { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n            ],\n          },\n        ],\n      },\n    ],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: '_loanId', internalType: 'uint256', type: 'uint256' },\n      {\n        name: '_loan',\n        internalType: 'struct IMultiSourceLoan.Loan',\n        type: 'tuple',\n        components: [\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'source',\n            internalType: 'struct IMultiSourceLoan.Source[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n              { name: 'lender', internalType: 'address', type: 'address' },\n              { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n              { name: 'accruedInterest', internalType: 'uint256', type: 'uint256' },\n              { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n              { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n            ],\n          },\n        ],\n      },\n      { name: '_target', internalType: 'address', type: 'address' },\n      { name: '_data', internalType: 'bytes', type: 'bytes' },\n    ],\n    name: 'executeFlashAction',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: '_loanId', internalType: 'uint256', type: 'uint256' },\n      {\n        name: '_loan',\n        internalType: 'struct IMultiSourceLoan.Loan',\n        type: 'tuple',\n        components: [\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'source',\n            internalType: 'struct IMultiSourceLoan.Source[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n              { name: 'lender', internalType: 'address', type: 'address' },\n              { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n              { name: 'accruedInterest', internalType: 'uint256', type: 'uint256' },\n              { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n              { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n            ],\n          },\n        ],\n      },\n      { name: '_extension', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'extendLoan',\n    outputs: [\n      { name: '', internalType: 'uint256', type: 'uint256' },\n      {\n        name: '',\n        internalType: 'struct IMultiSourceLoan.Loan',\n        type: 'tuple',\n        components: [\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'source',\n            internalType: 'struct IMultiSourceLoan.Source[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n              { name: 'lender', internalType: 'address', type: 'address' },\n              { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n              { name: 'accruedInterest', internalType: 'uint256', type: 'uint256' },\n              { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n              { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n            ],\n          },\n        ],\n      },\n    ],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getDelegateRegistry',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getFlashActionContract',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: '_loanId', internalType: 'uint256', type: 'uint256' }],\n    name: 'getLoanHash',\n    outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getMaxSources',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getMinLockPeriod',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: '_loanId', internalType: 'uint256', type: 'uint256' },\n      {\n        name: '_loan',\n        internalType: 'struct IMultiSourceLoan.Loan',\n        type: 'tuple',\n        components: [\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'source',\n            internalType: 'struct IMultiSourceLoan.Source[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n              { name: 'lender', internalType: 'address', type: 'address' },\n              { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n              { name: 'accruedInterest', internalType: 'uint256', type: 'uint256' },\n              { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n              { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n            ],\n          },\n        ],\n      },\n    ],\n    name: 'liquidateLoan',\n    outputs: [{ name: '', internalType: 'bytes', type: 'bytes' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: '_loanId', internalType: 'uint256', type: 'uint256' },\n      {\n        name: '_loan',\n        internalType: 'struct IMultiSourceLoan.Loan',\n        type: 'tuple',\n        components: [\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'source',\n            internalType: 'struct IMultiSourceLoan.Source[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n              { name: 'lender', internalType: 'address', type: 'address' },\n              { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n              { name: 'accruedInterest', internalType: 'uint256', type: 'uint256' },\n              { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n              { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n            ],\n          },\n        ],\n      },\n    ],\n    name: 'loanLiquidated',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      {\n        name: '_renegotiationOffer',\n        internalType: 'struct IMultiSourceLoan.RenegotiationOffer',\n        type: 'tuple',\n        components: [\n          { name: 'renegotiationId', internalType: 'uint256', type: 'uint256' },\n          { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n          { name: 'lender', internalType: 'address', type: 'address' },\n          { name: 'fee', internalType: 'uint256', type: 'uint256' },\n          { name: 'targetPrincipal', internalType: 'uint256[]', type: 'uint256[]' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n          { name: 'expirationTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n      {\n        name: '_loan',\n        internalType: 'struct IMultiSourceLoan.Loan',\n        type: 'tuple',\n        components: [\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'source',\n            internalType: 'struct IMultiSourceLoan.Source[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n              { name: 'lender', internalType: 'address', type: 'address' },\n              { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n              { name: 'accruedInterest', internalType: 'uint256', type: 'uint256' },\n              { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n              { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n            ],\n          },\n        ],\n      },\n      { name: '_renegotiationOfferSignature', internalType: 'bytes', type: 'bytes' },\n    ],\n    name: 'refinanceFull',\n    outputs: [\n      { name: '', internalType: 'uint256', type: 'uint256' },\n      {\n        name: '',\n        internalType: 'struct IMultiSourceLoan.Loan',\n        type: 'tuple',\n        components: [\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'source',\n            internalType: 'struct IMultiSourceLoan.Source[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n              { name: 'lender', internalType: 'address', type: 'address' },\n              { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n              { name: 'accruedInterest', internalType: 'uint256', type: 'uint256' },\n              { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n              { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n            ],\n          },\n        ],\n      },\n    ],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      {\n        name: '_renegotiationOffer',\n        internalType: 'struct IMultiSourceLoan.RenegotiationOffer',\n        type: 'tuple',\n        components: [\n          { name: 'renegotiationId', internalType: 'uint256', type: 'uint256' },\n          { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n          { name: 'lender', internalType: 'address', type: 'address' },\n          { name: 'fee', internalType: 'uint256', type: 'uint256' },\n          { name: 'targetPrincipal', internalType: 'uint256[]', type: 'uint256[]' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n          { name: 'expirationTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n      {\n        name: '_loan',\n        internalType: 'struct IMultiSourceLoan.Loan',\n        type: 'tuple',\n        components: [\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'source',\n            internalType: 'struct IMultiSourceLoan.Source[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n              { name: 'lender', internalType: 'address', type: 'address' },\n              { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n              { name: 'accruedInterest', internalType: 'uint256', type: 'uint256' },\n              { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n              { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n            ],\n          },\n        ],\n      },\n    ],\n    name: 'refinancePartial',\n    outputs: [\n      { name: '', internalType: 'uint256', type: 'uint256' },\n      {\n        name: '',\n        internalType: 'struct IMultiSourceLoan.Loan',\n        type: 'tuple',\n        components: [\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'source',\n            internalType: 'struct IMultiSourceLoan.Source[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n              { name: 'lender', internalType: 'address', type: 'address' },\n              { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n              { name: 'accruedInterest', internalType: 'uint256', type: 'uint256' },\n              { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n              { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n            ],\n          },\n        ],\n      },\n    ],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      {\n        name: '_repaymentData',\n        internalType: 'struct IMultiSourceLoan.LoanRepaymentData',\n        type: 'tuple',\n        components: [\n          {\n            name: 'data',\n            internalType: 'struct IMultiSourceLoan.SignableRepaymentData',\n            type: 'tuple',\n            components: [\n              { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n              { name: 'callbackData', internalType: 'bytes', type: 'bytes' },\n              { name: 'shouldDelegate', internalType: 'bool', type: 'bool' },\n            ],\n          },\n          {\n            name: 'loan',\n            internalType: 'struct IMultiSourceLoan.Loan',\n            type: 'tuple',\n            components: [\n              { name: 'borrower', internalType: 'address', type: 'address' },\n              { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n              { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n              { name: 'principalAddress', internalType: 'address', type: 'address' },\n              { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n              { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n              { name: 'duration', internalType: 'uint256', type: 'uint256' },\n              {\n                name: 'source',\n                internalType: 'struct IMultiSourceLoan.Source[]',\n                type: 'tuple[]',\n                components: [\n                  { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n                  { name: 'lender', internalType: 'address', type: 'address' },\n                  { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n                  { name: 'accruedInterest', internalType: 'uint256', type: 'uint256' },\n                  { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n                  { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n                ],\n              },\n            ],\n          },\n          { name: 'borrowerSignature', internalType: 'bytes', type: 'bytes' },\n        ],\n      },\n    ],\n    name: 'repayLoan',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: '_delegate', internalType: 'address', type: 'address' },\n      { name: '_collection', internalType: 'address', type: 'address' },\n      { name: '_tokenId', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'revokeDelegate',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: '_newDelegationRegistry', internalType: 'address', type: 'address' }],\n    name: 'setDelegateRegistry',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: '_newFlashActionContract', internalType: 'address', type: 'address' }],\n    name: 'setFlashActionContract',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: 'maxSources', internalType: 'uint256', type: 'uint256' }],\n    name: 'setMaxSources',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: '_minLockPeriod', internalType: 'uint256', type: 'uint256' }],\n    name: 'setMinLockPeriod',\n    outputs: [],\n  },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// IMulticall3\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const iMulticall3ABI = [\n  {\n    stateMutability: 'payable',\n    type: 'function',\n    inputs: [\n      {\n        name: 'calls',\n        internalType: 'struct IMulticall3.Call[]',\n        type: 'tuple[]',\n        components: [\n          { name: 'target', internalType: 'address', type: 'address' },\n          { name: 'callData', internalType: 'bytes', type: 'bytes' },\n        ],\n      },\n    ],\n    name: 'aggregate',\n    outputs: [\n      { name: 'blockNumber', internalType: 'uint256', type: 'uint256' },\n      { name: 'returnData', internalType: 'bytes[]', type: 'bytes[]' },\n    ],\n  },\n  {\n    stateMutability: 'payable',\n    type: 'function',\n    inputs: [\n      {\n        name: 'calls',\n        internalType: 'struct IMulticall3.Call3[]',\n        type: 'tuple[]',\n        components: [\n          { name: 'target', internalType: 'address', type: 'address' },\n          { name: 'allowFailure', internalType: 'bool', type: 'bool' },\n          { name: 'callData', internalType: 'bytes', type: 'bytes' },\n        ],\n      },\n    ],\n    name: 'aggregate3',\n    outputs: [\n      {\n        name: 'returnData',\n        internalType: 'struct IMulticall3.Result[]',\n        type: 'tuple[]',\n        components: [\n          { name: 'success', internalType: 'bool', type: 'bool' },\n          { name: 'returnData', internalType: 'bytes', type: 'bytes' },\n        ],\n      },\n    ],\n  },\n  {\n    stateMutability: 'payable',\n    type: 'function',\n    inputs: [\n      {\n        name: 'calls',\n        internalType: 'struct IMulticall3.Call3Value[]',\n        type: 'tuple[]',\n        components: [\n          { name: 'target', internalType: 'address', type: 'address' },\n          { name: 'allowFailure', internalType: 'bool', type: 'bool' },\n          { name: 'value', internalType: 'uint256', type: 'uint256' },\n          { name: 'callData', internalType: 'bytes', type: 'bytes' },\n        ],\n      },\n    ],\n    name: 'aggregate3Value',\n    outputs: [\n      {\n        name: 'returnData',\n        internalType: 'struct IMulticall3.Result[]',\n        type: 'tuple[]',\n        components: [\n          { name: 'success', internalType: 'bool', type: 'bool' },\n          { name: 'returnData', internalType: 'bytes', type: 'bytes' },\n        ],\n      },\n    ],\n  },\n  {\n    stateMutability: 'payable',\n    type: 'function',\n    inputs: [\n      {\n        name: 'calls',\n        internalType: 'struct IMulticall3.Call[]',\n        type: 'tuple[]',\n        components: [\n          { name: 'target', internalType: 'address', type: 'address' },\n          { name: 'callData', internalType: 'bytes', type: 'bytes' },\n        ],\n      },\n    ],\n    name: 'blockAndAggregate',\n    outputs: [\n      { name: 'blockNumber', internalType: 'uint256', type: 'uint256' },\n      { name: 'blockHash', internalType: 'bytes32', type: 'bytes32' },\n      {\n        name: 'returnData',\n        internalType: 'struct IMulticall3.Result[]',\n        type: 'tuple[]',\n        components: [\n          { name: 'success', internalType: 'bool', type: 'bool' },\n          { name: 'returnData', internalType: 'bytes', type: 'bytes' },\n        ],\n      },\n    ],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getBasefee',\n    outputs: [{ name: 'basefee', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: 'blockNumber', internalType: 'uint256', type: 'uint256' }],\n    name: 'getBlockHash',\n    outputs: [{ name: 'blockHash', internalType: 'bytes32', type: 'bytes32' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getBlockNumber',\n    outputs: [{ name: 'blockNumber', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getChainId',\n    outputs: [{ name: 'chainid', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getCurrentBlockCoinbase',\n    outputs: [{ name: 'coinbase', internalType: 'address', type: 'address' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getCurrentBlockDifficulty',\n    outputs: [{ name: 'difficulty', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getCurrentBlockGasLimit',\n    outputs: [{ name: 'gaslimit', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getCurrentBlockTimestamp',\n    outputs: [{ name: 'timestamp', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: 'addr', internalType: 'address', type: 'address' }],\n    name: 'getEthBalance',\n    outputs: [{ name: 'balance', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getLastBlockHash',\n    outputs: [{ name: 'blockHash', internalType: 'bytes32', type: 'bytes32' }],\n  },\n  {\n    stateMutability: 'payable',\n    type: 'function',\n    inputs: [\n      { name: 'requireSuccess', internalType: 'bool', type: 'bool' },\n      {\n        name: 'calls',\n        internalType: 'struct IMulticall3.Call[]',\n        type: 'tuple[]',\n        components: [\n          { name: 'target', internalType: 'address', type: 'address' },\n          { name: 'callData', internalType: 'bytes', type: 'bytes' },\n        ],\n      },\n    ],\n    name: 'tryAggregate',\n    outputs: [\n      {\n        name: 'returnData',\n        internalType: 'struct IMulticall3.Result[]',\n        type: 'tuple[]',\n        components: [\n          { name: 'success', internalType: 'bool', type: 'bool' },\n          { name: 'returnData', internalType: 'bytes', type: 'bytes' },\n        ],\n      },\n    ],\n  },\n  {\n    stateMutability: 'payable',\n    type: 'function',\n    inputs: [\n      { name: 'requireSuccess', internalType: 'bool', type: 'bool' },\n      {\n        name: 'calls',\n        internalType: 'struct IMulticall3.Call[]',\n        type: 'tuple[]',\n        components: [\n          { name: 'target', internalType: 'address', type: 'address' },\n          { name: 'callData', internalType: 'bytes', type: 'bytes' },\n        ],\n      },\n    ],\n    name: 'tryBlockAndAggregate',\n    outputs: [\n      { name: 'blockNumber', internalType: 'uint256', type: 'uint256' },\n      { name: 'blockHash', internalType: 'bytes32', type: 'bytes32' },\n      {\n        name: 'returnData',\n        internalType: 'struct IMulticall3.Result[]',\n        type: 'tuple[]',\n        components: [\n          { name: 'success', internalType: 'bool', type: 'bool' },\n          { name: 'returnData', internalType: 'bytes', type: 'bytes' },\n        ],\n      },\n    ],\n  },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// INFTFlashAction\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const inftFlashActionABI = [\n  { type: 'error', inputs: [], name: 'InvalidOwnerError' },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: '_collection', internalType: 'address', type: 'address' },\n      { name: '_tokenId', internalType: 'uint256', type: 'uint256' },\n      { name: '_target', internalType: 'address', type: 'address' },\n      { name: '_data', internalType: 'bytes', type: 'bytes' },\n    ],\n    name: 'execute',\n    outputs: [],\n  },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// IOracle\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const iOracleABI = [\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [\n      { name: '_nftAddress', internalType: 'address', type: 'address' },\n      { name: '_tokenId', internalType: 'uint256', type: 'uint256' },\n      { name: '_asset', internalType: 'address', type: 'address' },\n    ],\n    name: 'getPrice',\n    outputs: [\n      {\n        name: '',\n        internalType: 'struct IOracle.PriceUpdate',\n        type: 'tuple',\n        components: [\n          { name: 'price', internalType: 'uint128', type: 'uint128' },\n          { name: 'updatedTimestamp', internalType: 'uint128', type: 'uint128' },\n        ],\n      },\n    ],\n  },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// IReservoir\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const iReservoirABI = [\n  {\n    stateMutability: 'payable',\n    type: 'function',\n    inputs: [\n      {\n        name: '_executionInfos',\n        internalType: 'struct IReservoir.ExecutionInfo[]',\n        type: 'tuple[]',\n        components: [\n          { name: 'module', internalType: 'address', type: 'address' },\n          { name: 'data', internalType: 'bytes', type: 'bytes' },\n          { name: 'value', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n    ],\n    name: 'execute',\n    outputs: [],\n  },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// IUserVault\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const iUserVaultABI = [\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [\n      { name: '_vaultId', internalType: 'uint256', type: 'uint256' },\n      { name: '_token', internalType: 'address', type: 'address' },\n    ],\n    name: 'ERC20BalanceOf',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [\n      { name: '_collection', internalType: 'address', type: 'address' },\n      { name: '_tokenId', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'ERC721OwnerOf',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: '_vaultId', internalType: 'uint256', type: 'uint256' },\n      { name: '_assetRecipient', internalType: 'address', type: 'address' },\n    ],\n    name: 'burn',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: '_vaultId', internalType: 'uint256', type: 'uint256' },\n      { name: '_collections', internalType: 'address[]', type: 'address[]' },\n      { name: '_tokenIds', internalType: 'uint256[]', type: 'uint256[]' },\n      { name: '_tokens', internalType: 'address[]', type: 'address[]' },\n    ],\n    name: 'burnAndWithdraw',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: '_vaultId', internalType: 'uint256', type: 'uint256' },\n      { name: '_token', internalType: 'address', type: 'address' },\n      { name: '_amount', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'depositERC20',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: '_vaultId', internalType: 'uint256', type: 'uint256' },\n      { name: '_collection', internalType: 'address', type: 'address' },\n      { name: '_tokenId', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'depositERC721',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: '_vaultId', internalType: 'uint256', type: 'uint256' },\n      { name: '_collection', internalType: 'address', type: 'address' },\n      { name: '_tokenIds', internalType: 'uint256[]', type: 'uint256[]' },\n    ],\n    name: 'depositERC721s',\n    outputs: [],\n  },\n  {\n    stateMutability: 'payable',\n    type: 'function',\n    inputs: [{ name: '_vaultId', internalType: 'uint256', type: 'uint256' }],\n    name: 'depositEth',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [],\n    name: 'mint',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: '_vaultId', internalType: 'uint256', type: 'uint256' },\n      { name: '_token', internalType: 'address', type: 'address' },\n    ],\n    name: 'withdrawERC20',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: '_vaultId', internalType: 'uint256', type: 'uint256' },\n      { name: '_tokens', internalType: 'address[]', type: 'address[]' },\n    ],\n    name: 'withdrawERC20s',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: '_vaultId', internalType: 'uint256', type: 'uint256' },\n      { name: '_collection', internalType: 'address', type: 'address' },\n      { name: '_tokenId', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'withdrawERC721',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: '_vaultId', internalType: 'uint256', type: 'uint256' },\n      { name: '_collections', internalType: 'address[]', type: 'address[]' },\n      { name: '_tokenIds', internalType: 'uint256[]', type: 'uint256[]' },\n    ],\n    name: 'withdrawERC721s',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: '_vaultId', internalType: 'uint256', type: 'uint256' }],\n    name: 'withdrawEth',\n    outputs: [],\n  },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// IWrappedPunk\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const iWrappedPunkABI = [\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: 'punkIndex', internalType: 'uint256', type: 'uint256' }],\n    name: 'burn',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: 'punkIndex', internalType: 'uint256', type: 'uint256' }],\n    name: 'mint',\n    outputs: [],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: 'tokenId', internalType: 'uint256', type: 'uint256' }],\n    name: 'ownerOf',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: 'user', internalType: 'address', type: 'address' }],\n    name: 'proxyInfo',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [],\n    name: 'registerProxy',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address' },\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'tokenId', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'safeTransferFrom',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address' },\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'tokenId', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'transferFrom',\n    outputs: [],\n  },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// InputChecker\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const inputCheckerABI = [{ type: 'error', inputs: [], name: 'AddressZeroError' }] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// Leverage\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const leverageABI = [\n  {\n    stateMutability: 'nonpayable',\n    type: 'constructor',\n    inputs: [\n      { name: '_multiSourceLoanAddress', internalType: 'address', type: 'address' },\n      { name: '_marketplaceContracts', internalType: 'address', type: 'address' },\n      { name: '_wethAddress', internalType: 'address payable', type: 'address' },\n      { name: '_punkMarketAddress', internalType: 'address payable', type: 'address' },\n      { name: '_wrappedPunkAddress', internalType: 'address payable', type: 'address' },\n      { name: '_seaportAddress', internalType: 'address payable', type: 'address' },\n    ],\n  },\n  { type: 'error', inputs: [], name: 'AddressZeroError' },\n  { type: 'error', inputs: [], name: 'CouldNotReturnEthError' },\n  { type: 'error', inputs: [], name: 'InvalidAddressUpdateError' },\n  { type: 'error', inputs: [], name: 'InvalidCallbackError' },\n  { type: 'error', inputs: [], name: 'MarketplaceAddressNotWhitelisted' },\n  { type: 'error', inputs: [], name: 'OnlyMultiSourceLoanError' },\n  { type: 'error', inputs: [], name: 'OnlyWethSupportedError' },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: '_loanIds', internalType: 'uint256[]', type: 'uint256[]', indexed: false }],\n    name: 'BNPLLoansStarted',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: '_newAddress', internalType: 'address', type: 'address', indexed: false }],\n    name: 'MultiSourceLoanPendingUpdate',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: '_newAddress', internalType: 'address', type: 'address', indexed: false }],\n    name: 'MultiSourceLoanUpdated',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'user', internalType: 'address', type: 'address', indexed: true },\n      { name: 'newOwner', internalType: 'address', type: 'address', indexed: true },\n    ],\n    name: 'OwnershipTransferred',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: '_newAddress', internalType: 'address', type: 'address', indexed: false }],\n    name: 'SeaportPendingUpdate',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: '_newAddress', internalType: 'address', type: 'address', indexed: false }],\n    name: 'SeaportUpdated',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: '_loanIds', internalType: 'uint256[]', type: 'uint256[]', indexed: false }],\n    name: 'SellAndRepayExecuted',\n  },\n  { stateMutability: 'payable', type: 'fallback' },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      {\n        name: '_loan',\n        internalType: 'struct IMultiSourceLoan.Loan',\n        type: 'tuple',\n        components: [\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'source',\n            internalType: 'struct IMultiSourceLoan.Source[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n              { name: 'lender', internalType: 'address', type: 'address' },\n              { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n              { name: 'accruedInterest', internalType: 'uint256', type: 'uint256' },\n              { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n              { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n            ],\n          },\n        ],\n      },\n      { name: '_executionData', internalType: 'bytes', type: 'bytes' },\n    ],\n    name: 'afterNFTTransfer',\n    outputs: [{ name: '', internalType: 'bytes4', type: 'bytes4' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      {\n        name: '_loan',\n        internalType: 'struct IMultiSourceLoan.Loan',\n        type: 'tuple',\n        components: [\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'source',\n            internalType: 'struct IMultiSourceLoan.Source[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n              { name: 'lender', internalType: 'address', type: 'address' },\n              { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n              { name: 'accruedInterest', internalType: 'uint256', type: 'uint256' },\n              { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n              { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n            ],\n          },\n        ],\n      },\n      { name: '_fee', internalType: 'uint256', type: 'uint256' },\n      { name: '_executionData', internalType: 'bytes', type: 'bytes' },\n    ],\n    name: 'afterPrincipalTransfer',\n    outputs: [{ name: '', internalType: 'bytes4', type: 'bytes4' }],\n  },\n  {\n    stateMutability: 'payable',\n    type: 'function',\n    inputs: [{ name: '_executionData', internalType: 'bytes[]', type: 'bytes[]' }],\n    name: 'buy',\n    outputs: [\n      { name: '', internalType: 'uint256[]', type: 'uint256[]' },\n      {\n        name: '',\n        internalType: 'struct IMultiSourceLoan.Loan[]',\n        type: 'tuple[]',\n        components: [\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'source',\n            internalType: 'struct IMultiSourceLoan.Source[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n              { name: 'lender', internalType: 'address', type: 'address' },\n              { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n              { name: 'accruedInterest', internalType: 'uint256', type: 'uint256' },\n              { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n              { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n            ],\n          },\n        ],\n      },\n    ],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: '_newAddress', internalType: 'address', type: 'address' }],\n    name: 'finalUpdateMultiSourceLoanAddress',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: '_newAddress', internalType: 'address', type: 'address' }],\n    name: 'finalUpdateSeaportAddress',\n    outputs: [],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getMultiSourceLoanAddress',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getSeaportAddress',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'uint256', type: 'uint256' },\n      { name: '', internalType: 'bytes', type: 'bytes' },\n    ],\n    name: 'onERC721Received',\n    outputs: [{ name: '', internalType: 'bytes4', type: 'bytes4' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'owner',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: '_executionData', internalType: 'bytes[]', type: 'bytes[]' }],\n    name: 'sell',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: 'newOwner', internalType: 'address', type: 'address' }],\n    name: 'transferOwnership',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: '_newAddress', internalType: 'address', type: 'address' }],\n    name: 'updateMultiSourceLoanAddressFirst',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: '_newAddress', internalType: 'address', type: 'address' }],\n    name: 'updateSeaportAddressFirst',\n    outputs: [],\n  },\n  { stateMutability: 'payable', type: 'receive' },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// LiquidationDistributor\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const liquidationDistributorABI = [\n  { stateMutability: 'nonpayable', type: 'constructor', inputs: [] },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'user', internalType: 'address', type: 'address', indexed: true },\n      { name: 'newOwner', internalType: 'address', type: 'address', indexed: true },\n    ],\n    name: 'OwnershipTransferred',\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: '_proceeds', internalType: 'uint256', type: 'uint256' },\n      {\n        name: '_loan',\n        internalType: 'struct IMultiSourceLoan.Loan',\n        type: 'tuple',\n        components: [\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'source',\n            internalType: 'struct IMultiSourceLoan.Source[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n              { name: 'lender', internalType: 'address', type: 'address' },\n              { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n              { name: 'accruedInterest', internalType: 'uint256', type: 'uint256' },\n              { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n              { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n            ],\n          },\n        ],\n      },\n    ],\n    name: 'distribute',\n    outputs: [],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'owner',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: 'newOwner', internalType: 'address', type: 'address' }],\n    name: 'transferOwnership',\n    outputs: [],\n  },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// Math\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const mathABI = [{ type: 'error', inputs: [], name: 'MathOverflowedMulDiv' }] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// MultiSourceCommons\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const multiSourceCommonsABI = [\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: '', internalType: 'string', type: 'string', indexed: false }],\n    name: 'log',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: '', internalType: 'address', type: 'address', indexed: false }],\n    name: 'log_address',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'val', internalType: 'uint256[]', type: 'uint256[]', indexed: false }],\n    name: 'log_array',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'val', internalType: 'int256[]', type: 'int256[]', indexed: false }],\n    name: 'log_array',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'val', internalType: 'address[]', type: 'address[]', indexed: false }],\n    name: 'log_array',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: '', internalType: 'bytes', type: 'bytes', indexed: false }],\n    name: 'log_bytes',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: '', internalType: 'bytes32', type: 'bytes32', indexed: false }],\n    name: 'log_bytes32',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: '', internalType: 'int256', type: 'int256', indexed: false }],\n    name: 'log_int',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'key', internalType: 'string', type: 'string', indexed: false },\n      { name: 'val', internalType: 'address', type: 'address', indexed: false },\n    ],\n    name: 'log_named_address',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'key', internalType: 'string', type: 'string', indexed: false },\n      { name: 'val', internalType: 'uint256[]', type: 'uint256[]', indexed: false },\n    ],\n    name: 'log_named_array',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'key', internalType: 'string', type: 'string', indexed: false },\n      { name: 'val', internalType: 'int256[]', type: 'int256[]', indexed: false },\n    ],\n    name: 'log_named_array',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'key', internalType: 'string', type: 'string', indexed: false },\n      { name: 'val', internalType: 'address[]', type: 'address[]', indexed: false },\n    ],\n    name: 'log_named_array',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'key', internalType: 'string', type: 'string', indexed: false },\n      { name: 'val', internalType: 'bytes', type: 'bytes', indexed: false },\n    ],\n    name: 'log_named_bytes',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'key', internalType: 'string', type: 'string', indexed: false },\n      { name: 'val', internalType: 'bytes32', type: 'bytes32', indexed: false },\n    ],\n    name: 'log_named_bytes32',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'key', internalType: 'string', type: 'string', indexed: false },\n      { name: 'val', internalType: 'int256', type: 'int256', indexed: false },\n      { name: 'decimals', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'log_named_decimal_int',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'key', internalType: 'string', type: 'string', indexed: false },\n      { name: 'val', internalType: 'uint256', type: 'uint256', indexed: false },\n      { name: 'decimals', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'log_named_decimal_uint',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'key', internalType: 'string', type: 'string', indexed: false },\n      { name: 'val', internalType: 'int256', type: 'int256', indexed: false },\n    ],\n    name: 'log_named_int',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'key', internalType: 'string', type: 'string', indexed: false },\n      { name: 'val', internalType: 'string', type: 'string', indexed: false },\n    ],\n    name: 'log_named_string',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'key', internalType: 'string', type: 'string', indexed: false },\n      { name: 'val', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'log_named_uint',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: '', internalType: 'string', type: 'string', indexed: false }],\n    name: 'log_string',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: '', internalType: 'uint256', type: 'uint256', indexed: false }],\n    name: 'log_uint',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: '', internalType: 'bytes', type: 'bytes', indexed: false }],\n    name: 'logs',\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'IS_TEST',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'excludeArtifacts',\n    outputs: [{ name: 'excludedArtifacts_', internalType: 'string[]', type: 'string[]' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'excludeContracts',\n    outputs: [{ name: 'excludedContracts_', internalType: 'address[]', type: 'address[]' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'excludeSenders',\n    outputs: [{ name: 'excludedSenders_', internalType: 'address[]', type: 'address[]' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [],\n    name: 'failed',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n  },\n  { stateMutability: 'nonpayable', type: 'function', inputs: [], name: 'setUp', outputs: [] },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'targetArtifactSelectors',\n    outputs: [\n      {\n        name: 'targetedArtifactSelectors_',\n        internalType: 'struct StdInvariant.FuzzSelector[]',\n        type: 'tuple[]',\n        components: [\n          { name: 'addr', internalType: 'address', type: 'address' },\n          { name: 'selectors', internalType: 'bytes4[]', type: 'bytes4[]' },\n        ],\n      },\n    ],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'targetArtifacts',\n    outputs: [{ name: 'targetedArtifacts_', internalType: 'string[]', type: 'string[]' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'targetContracts',\n    outputs: [{ name: 'targetedContracts_', internalType: 'address[]', type: 'address[]' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'targetInterfaces',\n    outputs: [\n      {\n        name: 'targetedInterfaces_',\n        internalType: 'struct StdInvariant.FuzzInterface[]',\n        type: 'tuple[]',\n        components: [\n          { name: 'addr', internalType: 'address', type: 'address' },\n          { name: 'artifacts', internalType: 'string[]', type: 'string[]' },\n        ],\n      },\n    ],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'targetSelectors',\n    outputs: [\n      {\n        name: 'targetedSelectors_',\n        internalType: 'struct StdInvariant.FuzzSelector[]',\n        type: 'tuple[]',\n        components: [\n          { name: 'addr', internalType: 'address', type: 'address' },\n          { name: 'selectors', internalType: 'bytes4[]', type: 'bytes4[]' },\n        ],\n      },\n    ],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'targetSenders',\n    outputs: [{ name: 'targetedSenders_', internalType: 'address[]', type: 'address[]' }],\n  },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// MultiSourceLoan\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const multiSourceLoanABI = [\n  {\n    stateMutability: 'nonpayable',\n    type: 'constructor',\n    inputs: [\n      { name: 'loanLiquidator', internalType: 'address', type: 'address' },\n      {\n        name: 'protocolFee',\n        internalType: 'struct IBaseLoan.ProtocolFee',\n        type: 'tuple',\n        components: [\n          { name: 'recipient', internalType: 'address', type: 'address' },\n          { name: 'fraction', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n      { name: 'currencyManager', internalType: 'address', type: 'address' },\n      { name: 'collectionManager', internalType: 'address', type: 'address' },\n      { name: 'maxSources', internalType: 'uint256', type: 'uint256' },\n      { name: 'minLockPeriod', internalType: 'uint256', type: 'uint256' },\n      { name: 'delegateRegistry', internalType: 'address', type: 'address' },\n      { name: 'flashActionContract', internalType: 'address', type: 'address' },\n    ],\n  },\n  { type: 'error', inputs: [], name: 'AddressZeroError' },\n  {\n    type: 'error',\n    inputs: [\n      { name: '_lender', internalType: 'address', type: 'address' },\n      { name: '_offerId', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'CancelledOrExecutedOfferError',\n  },\n  {\n    type: 'error',\n    inputs: [\n      { name: '_lender', internalType: 'address', type: 'address' },\n      { name: '_renegotiationId', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'CancelledRenegotiationOfferError',\n  },\n  { type: 'error', inputs: [], name: 'CannotLiquidateError' },\n  { type: 'error', inputs: [], name: 'CollectionNotWhitelistedError' },\n  { type: 'error', inputs: [], name: 'CurrencyNotWhitelistedError' },\n  { type: 'error', inputs: [], name: 'ECDSAInvalidSignature' },\n  {\n    type: 'error',\n    inputs: [{ name: 'length', internalType: 'uint256', type: 'uint256' }],\n    name: 'ECDSAInvalidSignatureLength',\n  },\n  {\n    type: 'error',\n    inputs: [{ name: 's', internalType: 'bytes32', type: 'bytes32' }],\n    name: 'ECDSAInvalidSignatureS',\n  },\n  {\n    type: 'error',\n    inputs: [{ name: '_expirationTime', internalType: 'uint256', type: 'uint256' }],\n    name: 'ExpiredOfferError',\n  },\n  {\n    type: 'error',\n    inputs: [{ name: '_expirationTime', internalType: 'uint256', type: 'uint256' }],\n    name: 'ExpiredRenegotiationOfferError',\n  },\n  { type: 'error', inputs: [], name: 'ExtensionNotAvailableError' },\n  {\n    type: 'error',\n    inputs: [\n      { name: '_amount', internalType: 'uint256', type: 'uint256' },\n      { name: '_principalAmount', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'InvalidAmountError',\n  },\n  { type: 'error', inputs: [], name: 'InvalidBorrowerError' },\n  { type: 'error', inputs: [], name: 'InvalidCallbackError' },\n  { type: 'error', inputs: [], name: 'InvalidCollateralIdError' },\n  { type: 'error', inputs: [], name: 'InvalidDurationError' },\n  { type: 'error', inputs: [], name: 'InvalidLenderError' },\n  { type: 'error', inputs: [], name: 'InvalidLiquidationError' },\n  {\n    type: 'error',\n    inputs: [{ name: '_loanId', internalType: 'uint256', type: 'uint256' }],\n    name: 'InvalidLoanError',\n  },\n  { type: 'error', inputs: [], name: 'InvalidMethodError' },\n  {\n    type: 'error',\n    inputs: [{ name: '_fraction', internalType: 'uint256', type: 'uint256' }],\n    name: 'InvalidProtocolFeeError',\n  },\n  { type: 'error', inputs: [], name: 'InvalidRenegotiationOfferError' },\n  { type: 'error', inputs: [], name: 'InvalidSignatureError' },\n  { type: 'error', inputs: [], name: 'InvalidValueError' },\n  { type: 'error', inputs: [], name: 'LengthMismatchError' },\n  {\n    type: 'error',\n    inputs: [{ name: '_liquidator', internalType: 'address', type: 'address' }],\n    name: 'LiquidatorOnlyError',\n  },\n  { type: 'error', inputs: [], name: 'LoanExpiredError' },\n  {\n    type: 'error',\n    inputs: [{ name: '_expirationTime', internalType: 'uint256', type: 'uint256' }],\n    name: 'LoanNotDueError',\n  },\n  {\n    type: 'error',\n    inputs: [\n      { name: '_lender', internalType: 'address', type: 'address' },\n      { name: '_newMinOfferId', internalType: 'uint256', type: 'uint256' },\n      { name: '_minOfferId', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'LowOfferIdError',\n  },\n  {\n    type: 'error',\n    inputs: [\n      { name: '_lender', internalType: 'address', type: 'address' },\n      { name: '_newMinRenegotiationOfferId', internalType: 'uint256', type: 'uint256' },\n      { name: '_minOfferId', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'LowRenegotiationOfferIdError',\n  },\n  { type: 'error', inputs: [], name: 'MaxCapacityExceededError' },\n  {\n    type: 'error',\n    inputs: [{ name: 'minLockPeriod', internalType: 'uint256', type: 'uint256' }],\n    name: 'MinLockPeriodTooHighError',\n  },\n  {\n    type: 'error',\n    inputs: [\n      { name: 'i', internalType: 'uint256', type: 'uint256' },\n      { name: 'returndata', internalType: 'bytes', type: 'bytes' },\n    ],\n    name: 'MulticallFailed',\n  },\n  { type: 'error', inputs: [], name: 'NFTNotReturnedError' },\n  { type: 'error', inputs: [], name: 'NotStrictlyImprovedError' },\n  { type: 'error', inputs: [], name: 'OnlyBorrowerCallableError' },\n  { type: 'error', inputs: [], name: 'OnlyLenderCallableError' },\n  { type: 'error', inputs: [], name: 'OnlyLenderOrBorrowerCallableError' },\n  { type: 'error', inputs: [], name: 'PartialOfferCannotChangeDurationError' },\n  { type: 'error', inputs: [], name: 'PartialOfferCannotHaveFeeError' },\n  { type: 'error', inputs: [], name: 'RefinanceFullError' },\n  {\n    type: 'error',\n    inputs: [{ name: 'minTimestamp', internalType: 'uint256', type: 'uint256' }],\n    name: 'SourceCannotBeRefinancedError',\n  },\n  {\n    type: 'error',\n    inputs: [\n      { name: 'sourcePrincipal', internalType: 'uint256', type: 'uint256' },\n      { name: 'loanPrincipal', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'TargetPrincipalTooLowError',\n  },\n  {\n    type: 'error',\n    inputs: [{ name: '_pendingProtocolFeeSetTime', internalType: 'uint256', type: 'uint256' }],\n    name: 'TooEarlyError',\n  },\n  {\n    type: 'error',\n    inputs: [{ name: 'sources', internalType: 'uint256', type: 'uint256' }],\n    name: 'TooManySourcesError',\n  },\n  { type: 'error', inputs: [], name: 'ZeroDurationError' },\n  { type: 'error', inputs: [], name: 'ZeroInterestError' },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'lender', internalType: 'address', type: 'address', indexed: false },\n      { name: 'minOfferId', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'AllOffersCancelled',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'lender', internalType: 'address', type: 'address', indexed: false },\n      { name: 'minRenegotiationId', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'AllRenegotiationOffersCancelled',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'borrower', internalType: 'address', type: 'address', indexed: false },\n      { name: 'offerId', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'BorrowerOfferCancelled',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'newdelegateRegistry', internalType: 'address', type: 'address', indexed: false },\n    ],\n    name: 'DelegateRegistryUpdated',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'loanId', internalType: 'uint256', type: 'uint256', indexed: false },\n      { name: 'delegate', internalType: 'address', type: 'address', indexed: false },\n      { name: 'value', internalType: 'bool', type: 'bool', indexed: false },\n    ],\n    name: 'Delegated',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'newFlashActionContract', internalType: 'address', type: 'address', indexed: false },\n    ],\n    name: 'FlashActionContractUpdated',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'loanId', internalType: 'uint256', type: 'uint256', indexed: false },\n      { name: 'target', internalType: 'address', type: 'address', indexed: false },\n      { name: 'data', internalType: 'bytes', type: 'bytes', indexed: false },\n    ],\n    name: 'FlashActionExecuted',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      {\n        name: 'minimum',\n        internalType: 'struct IBaseLoan.ImprovementMinimum',\n        type: 'tuple',\n        components: [\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'interest', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n        ],\n        indexed: false,\n      },\n    ],\n    name: 'ImprovementMinimumUpdated',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'newDuration', internalType: 'uint256', type: 'uint256', indexed: false }],\n    name: 'LiquidationAuctionDurationUpdated',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'liquidator', internalType: 'address', type: 'address', indexed: false }],\n    name: 'LiquidationContractUpdated',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'loanId', internalType: 'uint256', type: 'uint256', indexed: false },\n      { name: 'offerId', internalType: 'uint256', type: 'uint256', indexed: false },\n      {\n        name: 'loan',\n        internalType: 'struct IMultiSourceLoan.Loan',\n        type: 'tuple',\n        components: [\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'source',\n            internalType: 'struct IMultiSourceLoan.Source[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n              { name: 'lender', internalType: 'address', type: 'address' },\n              { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n              { name: 'accruedInterest', internalType: 'uint256', type: 'uint256' },\n              { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n              { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n            ],\n          },\n        ],\n        indexed: false,\n      },\n      { name: 'lender', internalType: 'address', type: 'address', indexed: false },\n      { name: 'borrower', internalType: 'address', type: 'address', indexed: false },\n      { name: 'fee', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'LoanEmitted',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'oldLoanId', internalType: 'uint256', type: 'uint256', indexed: false },\n      { name: 'newLoanId', internalType: 'uint256', type: 'uint256', indexed: false },\n      {\n        name: 'loan',\n        internalType: 'struct IMultiSourceLoan.Loan',\n        type: 'tuple',\n        components: [\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'source',\n            internalType: 'struct IMultiSourceLoan.Source[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n              { name: 'lender', internalType: 'address', type: 'address' },\n              { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n              { name: 'accruedInterest', internalType: 'uint256', type: 'uint256' },\n              { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n              { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n            ],\n          },\n        ],\n        indexed: false,\n      },\n      { name: '_extension', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'LoanExtended',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'loanId', internalType: 'uint256', type: 'uint256', indexed: false }],\n    name: 'LoanForeclosed',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'loanId', internalType: 'uint256', type: 'uint256', indexed: false }],\n    name: 'LoanLiquidated',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'renegotiationId', internalType: 'uint256', type: 'uint256', indexed: false },\n      { name: 'oldLoanId', internalType: 'uint256', type: 'uint256', indexed: false },\n      { name: 'newLoanId', internalType: 'uint256', type: 'uint256', indexed: false },\n      {\n        name: 'loan',\n        internalType: 'struct IMultiSourceLoan.Loan',\n        type: 'tuple',\n        components: [\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'source',\n            internalType: 'struct IMultiSourceLoan.Source[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n              { name: 'lender', internalType: 'address', type: 'address' },\n              { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n              { name: 'accruedInterest', internalType: 'uint256', type: 'uint256' },\n              { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n              { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n            ],\n          },\n        ],\n        indexed: false,\n      },\n      { name: 'fee', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'LoanRefinanced',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'loanId', internalType: 'uint256', type: 'uint256', indexed: false },\n      { name: 'totalRepayment', internalType: 'uint256', type: 'uint256', indexed: false },\n      { name: 'fee', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'LoanRepaid',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'loanId', internalType: 'uint256', type: 'uint256', indexed: false },\n      { name: 'liquidator', internalType: 'address', type: 'address', indexed: false },\n    ],\n    name: 'LoanSentToLiquidator',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'newMax', internalType: 'uint256', type: 'uint256', indexed: false }],\n    name: 'MaxSourcesUpdated',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'minLockPeriod', internalType: 'uint256', type: 'uint256', indexed: false }],\n    name: 'MinLockPeriodUpdated',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'lender', internalType: 'address', type: 'address', indexed: false },\n      { name: 'offerId', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'OfferCancelled',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'user', internalType: 'address', type: 'address', indexed: true },\n      { name: 'newOwner', internalType: 'address', type: 'address', indexed: true },\n    ],\n    name: 'OwnershipTransferred',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      {\n        name: 'fee',\n        internalType: 'struct IBaseLoan.ProtocolFee',\n        type: 'tuple',\n        components: [\n          { name: 'recipient', internalType: 'address', type: 'address' },\n          { name: 'fraction', internalType: 'uint256', type: 'uint256' },\n        ],\n        indexed: false,\n      },\n    ],\n    name: 'ProtocolFeePendingUpdate',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      {\n        name: 'fee',\n        internalType: 'struct IBaseLoan.ProtocolFee',\n        type: 'tuple',\n        components: [\n          { name: 'recipient', internalType: 'address', type: 'address' },\n          { name: 'fraction', internalType: 'uint256', type: 'uint256' },\n        ],\n        indexed: false,\n      },\n    ],\n    name: 'ProtocolFeeUpdated',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'lender', internalType: 'address', type: 'address', indexed: false },\n      { name: 'renegotiationId', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'RenegotiationOfferCancelled',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'delegate', internalType: 'address', type: 'address', indexed: false },\n      { name: 'collection', internalType: 'address', type: 'address', indexed: false },\n      { name: 'tokenId', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'RevokeDelegate',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'contractAdded', internalType: 'address', type: 'address', indexed: false },\n      {\n        name: 'tax',\n        internalType: 'struct WithCallbacks.Taxes',\n        type: 'tuple',\n        components: [\n          { name: 'buyTax', internalType: 'uint128', type: 'uint128' },\n          { name: 'sellTax', internalType: 'uint128', type: 'uint128' },\n        ],\n        indexed: false,\n      },\n    ],\n    name: 'WhitelistedCallbackContractAdded',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'contractRemoved', internalType: 'address', type: 'address', indexed: false }],\n    name: 'WhitelistedCallbackContractRemoved',\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'DOMAIN_SEPARATOR',\n    outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'FEE_UPDATE_NOTICE',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'INITIAL_DOMAIN_SEPARATOR',\n    outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'MAX_PROTOCOL_FEE',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'MIN_AUCTION_DURATION',\n    outputs: [{ name: '', internalType: 'uint48', type: 'uint48' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: '_contract', internalType: 'address', type: 'address' },\n      {\n        name: '_tax',\n        internalType: 'struct WithCallbacks.Taxes',\n        type: 'tuple',\n        components: [\n          { name: 'buyTax', internalType: 'uint128', type: 'uint128' },\n          { name: 'sellTax', internalType: 'uint128', type: 'uint128' },\n        ],\n      },\n    ],\n    name: 'addWhitelistedCallbackContract',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: '_minOfferId', internalType: 'uint256', type: 'uint256' }],\n    name: 'cancelAllOffers',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: '_minRenegotiationId', internalType: 'uint256', type: 'uint256' }],\n    name: 'cancelAllRenegotiationOffers',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: '_offerId', internalType: 'uint256', type: 'uint256' }],\n    name: 'cancelOffer',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: '_offerIds', internalType: 'uint256[]', type: 'uint256[]' }],\n    name: 'cancelOffers',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: '_renegotiationId', internalType: 'uint256', type: 'uint256' }],\n    name: 'cancelRenegotiationOffer',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: '_renegotiationIds', internalType: 'uint256[]', type: 'uint256[]' }],\n    name: 'cancelRenegotiationOffers',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: '_loanId', internalType: 'uint256', type: 'uint256' },\n      {\n        name: 'loan',\n        internalType: 'struct IMultiSourceLoan.Loan',\n        type: 'tuple',\n        components: [\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'source',\n            internalType: 'struct IMultiSourceLoan.Source[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n              { name: 'lender', internalType: 'address', type: 'address' },\n              { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n              { name: 'accruedInterest', internalType: 'uint256', type: 'uint256' },\n              { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n              { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n            ],\n          },\n        ],\n      },\n      { name: '_delegate', internalType: 'address', type: 'address' },\n      { name: '_rights', internalType: 'bytes32', type: 'bytes32' },\n      { name: '_value', internalType: 'bool', type: 'bool' },\n    ],\n    name: 'delegate',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      {\n        name: '_executionData',\n        internalType: 'struct IMultiSourceLoan.LoanExecutionData',\n        type: 'tuple',\n        components: [\n          {\n            name: 'executionData',\n            internalType: 'struct IBaseLoan.ExecutionData',\n            type: 'tuple',\n            components: [\n              {\n                name: 'offer',\n                internalType: 'struct IBaseLoan.LoanOffer',\n                type: 'tuple',\n                components: [\n                  { name: 'offerId', internalType: 'uint256', type: 'uint256' },\n                  { name: 'lender', internalType: 'address', type: 'address' },\n                  { name: 'fee', internalType: 'uint256', type: 'uint256' },\n                  { name: 'borrower', internalType: 'address', type: 'address' },\n                  { name: 'capacity', internalType: 'uint256', type: 'uint256' },\n                  { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n                  { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n                  { name: 'principalAddress', internalType: 'address', type: 'address' },\n                  { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n                  { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n                  { name: 'expirationTime', internalType: 'uint256', type: 'uint256' },\n                  { name: 'duration', internalType: 'uint256', type: 'uint256' },\n                  {\n                    name: 'validators',\n                    internalType: 'struct IBaseLoan.OfferValidator[]',\n                    type: 'tuple[]',\n                    components: [\n                      { name: 'validator', internalType: 'address', type: 'address' },\n                      { name: 'arguments', internalType: 'bytes', type: 'bytes' },\n                    ],\n                  },\n                ],\n              },\n              { name: 'tokenId', internalType: 'uint256', type: 'uint256' },\n              { name: 'amount', internalType: 'uint256', type: 'uint256' },\n              { name: 'expirationTime', internalType: 'uint256', type: 'uint256' },\n              { name: 'callbackData', internalType: 'bytes', type: 'bytes' },\n            ],\n          },\n          { name: 'lender', internalType: 'address', type: 'address' },\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'lenderOfferSignature', internalType: 'bytes', type: 'bytes' },\n          { name: 'borrowerOfferSignature', internalType: 'bytes', type: 'bytes' },\n        ],\n      },\n    ],\n    name: 'emitLoan',\n    outputs: [\n      { name: '', internalType: 'uint256', type: 'uint256' },\n      {\n        name: '',\n        internalType: 'struct IMultiSourceLoan.Loan',\n        type: 'tuple',\n        components: [\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'source',\n            internalType: 'struct IMultiSourceLoan.Source[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n              { name: 'lender', internalType: 'address', type: 'address' },\n              { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n              { name: 'accruedInterest', internalType: 'uint256', type: 'uint256' },\n              { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n              { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n            ],\n          },\n        ],\n      },\n    ],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: '_loanId', internalType: 'uint256', type: 'uint256' },\n      {\n        name: '_loan',\n        internalType: 'struct IMultiSourceLoan.Loan',\n        type: 'tuple',\n        components: [\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'source',\n            internalType: 'struct IMultiSourceLoan.Source[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n              { name: 'lender', internalType: 'address', type: 'address' },\n              { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n              { name: 'accruedInterest', internalType: 'uint256', type: 'uint256' },\n              { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n              { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n            ],\n          },\n        ],\n      },\n      { name: '_target', internalType: 'address', type: 'address' },\n      { name: '_data', internalType: 'bytes', type: 'bytes' },\n    ],\n    name: 'executeFlashAction',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: '_loanId', internalType: 'uint256', type: 'uint256' },\n      {\n        name: '_loan',\n        internalType: 'struct IMultiSourceLoan.Loan',\n        type: 'tuple',\n        components: [\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'source',\n            internalType: 'struct IMultiSourceLoan.Source[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n              { name: 'lender', internalType: 'address', type: 'address' },\n              { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n              { name: 'accruedInterest', internalType: 'uint256', type: 'uint256' },\n              { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n              { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n            ],\n          },\n        ],\n      },\n      { name: '_extension', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'extendLoan',\n    outputs: [\n      { name: '', internalType: 'uint256', type: 'uint256' },\n      {\n        name: '',\n        internalType: 'struct IMultiSourceLoan.Loan',\n        type: 'tuple',\n        components: [\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'source',\n            internalType: 'struct IMultiSourceLoan.Source[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n              { name: 'lender', internalType: 'address', type: 'address' },\n              { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n              { name: 'accruedInterest', internalType: 'uint256', type: 'uint256' },\n              { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n              { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n            ],\n          },\n        ],\n      },\n    ],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getCollectionManager',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getCurrencyManager',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getDelegateRegistry',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getFlashActionContract',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getImprovementMinimum',\n    outputs: [\n      {\n        name: '',\n        internalType: 'struct IBaseLoan.ImprovementMinimum',\n        type: 'tuple',\n        components: [\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'interest', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n    ],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getLiquidationAuctionDuration',\n    outputs: [{ name: '', internalType: 'uint48', type: 'uint48' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getLiquidator',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: '_loanId', internalType: 'uint256', type: 'uint256' }],\n    name: 'getLoanHash',\n    outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getMaxSources',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getMinLockPeriod',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: '_loanPrincipal', internalType: 'uint256', type: 'uint256' }],\n    name: 'getMinSourcePrincipal',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getPendingProtocolFee',\n    outputs: [\n      {\n        name: '',\n        internalType: 'struct IBaseLoan.ProtocolFee',\n        type: 'tuple',\n        components: [\n          { name: 'recipient', internalType: 'address', type: 'address' },\n          { name: 'fraction', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n    ],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getPendingProtocolFeeSetTime',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getProtocolFee',\n    outputs: [\n      {\n        name: '',\n        internalType: 'struct IBaseLoan.ProtocolFee',\n        type: 'tuple',\n        components: [\n          { name: 'recipient', internalType: 'address', type: 'address' },\n          { name: 'fraction', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n    ],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getTotalLoansIssued',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [\n      { name: '_lender', internalType: 'address', type: 'address' },\n      { name: '_offerId', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'getUsedCapacity',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'isBorrowerOfferCancelled',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'isOfferCancelled',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'isRenegotiationOfferCancelled',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: '_contract', internalType: 'address', type: 'address' }],\n    name: 'isWhitelistedCallbackContract',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: '', internalType: 'address', type: 'address' }],\n    name: 'lenderMinRenegotiationOfferId',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: '_loanId', internalType: 'uint256', type: 'uint256' },\n      {\n        name: '_loan',\n        internalType: 'struct IMultiSourceLoan.Loan',\n        type: 'tuple',\n        components: [\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'source',\n            internalType: 'struct IMultiSourceLoan.Source[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n              { name: 'lender', internalType: 'address', type: 'address' },\n              { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n              { name: 'accruedInterest', internalType: 'uint256', type: 'uint256' },\n              { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n              { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n            ],\n          },\n        ],\n      },\n    ],\n    name: 'liquidateLoan',\n    outputs: [{ name: '', internalType: 'bytes', type: 'bytes' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: '_loanId', internalType: 'uint256', type: 'uint256' },\n      {\n        name: '_loan',\n        internalType: 'struct IMultiSourceLoan.Loan',\n        type: 'tuple',\n        components: [\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'source',\n            internalType: 'struct IMultiSourceLoan.Source[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n              { name: 'lender', internalType: 'address', type: 'address' },\n              { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n              { name: 'accruedInterest', internalType: 'uint256', type: 'uint256' },\n              { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n              { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n            ],\n          },\n        ],\n      },\n    ],\n    name: 'loanLiquidated',\n    outputs: [],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: '', internalType: 'address', type: 'address' }],\n    name: 'minOfferId',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'payable',\n    type: 'function',\n    inputs: [{ name: 'data', internalType: 'bytes[]', type: 'bytes[]' }],\n    name: 'multicall',\n    outputs: [{ name: 'results', internalType: 'bytes[]', type: 'bytes[]' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'name',\n    outputs: [{ name: '', internalType: 'string', type: 'string' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'uint256', type: 'uint256' },\n      { name: '', internalType: 'bytes', type: 'bytes' },\n    ],\n    name: 'onERC721Received',\n    outputs: [{ name: '', internalType: 'bytes4', type: 'bytes4' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'owner',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      {\n        name: '_renegotiationOffer',\n        internalType: 'struct IMultiSourceLoan.RenegotiationOffer',\n        type: 'tuple',\n        components: [\n          { name: 'renegotiationId', internalType: 'uint256', type: 'uint256' },\n          { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n          { name: 'lender', internalType: 'address', type: 'address' },\n          { name: 'fee', internalType: 'uint256', type: 'uint256' },\n          { name: 'targetPrincipal', internalType: 'uint256[]', type: 'uint256[]' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n          { name: 'expirationTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n      {\n        name: '_loan',\n        internalType: 'struct IMultiSourceLoan.Loan',\n        type: 'tuple',\n        components: [\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'source',\n            internalType: 'struct IMultiSourceLoan.Source[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n              { name: 'lender', internalType: 'address', type: 'address' },\n              { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n              { name: 'accruedInterest', internalType: 'uint256', type: 'uint256' },\n              { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n              { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n            ],\n          },\n        ],\n      },\n      { name: '_renegotiationOfferSignature', internalType: 'bytes', type: 'bytes' },\n    ],\n    name: 'refinanceFull',\n    outputs: [\n      { name: '', internalType: 'uint256', type: 'uint256' },\n      {\n        name: '',\n        internalType: 'struct IMultiSourceLoan.Loan',\n        type: 'tuple',\n        components: [\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'source',\n            internalType: 'struct IMultiSourceLoan.Source[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n              { name: 'lender', internalType: 'address', type: 'address' },\n              { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n              { name: 'accruedInterest', internalType: 'uint256', type: 'uint256' },\n              { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n              { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n            ],\n          },\n        ],\n      },\n    ],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      {\n        name: '_renegotiationOffer',\n        internalType: 'struct IMultiSourceLoan.RenegotiationOffer',\n        type: 'tuple',\n        components: [\n          { name: 'renegotiationId', internalType: 'uint256', type: 'uint256' },\n          { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n          { name: 'lender', internalType: 'address', type: 'address' },\n          { name: 'fee', internalType: 'uint256', type: 'uint256' },\n          { name: 'targetPrincipal', internalType: 'uint256[]', type: 'uint256[]' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n          { name: 'expirationTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n      {\n        name: '_loan',\n        internalType: 'struct IMultiSourceLoan.Loan',\n        type: 'tuple',\n        components: [\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'source',\n            internalType: 'struct IMultiSourceLoan.Source[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n              { name: 'lender', internalType: 'address', type: 'address' },\n              { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n              { name: 'accruedInterest', internalType: 'uint256', type: 'uint256' },\n              { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n              { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n            ],\n          },\n        ],\n      },\n    ],\n    name: 'refinancePartial',\n    outputs: [\n      { name: '', internalType: 'uint256', type: 'uint256' },\n      {\n        name: '',\n        internalType: 'struct IMultiSourceLoan.Loan',\n        type: 'tuple',\n        components: [\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'source',\n            internalType: 'struct IMultiSourceLoan.Source[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n              { name: 'lender', internalType: 'address', type: 'address' },\n              { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n              { name: 'accruedInterest', internalType: 'uint256', type: 'uint256' },\n              { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n              { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n            ],\n          },\n        ],\n      },\n    ],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: '_contract', internalType: 'address', type: 'address' }],\n    name: 'removeWhitelistedCallbackContract',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      {\n        name: '_repaymentData',\n        internalType: 'struct IMultiSourceLoan.LoanRepaymentData',\n        type: 'tuple',\n        components: [\n          {\n            name: 'data',\n            internalType: 'struct IMultiSourceLoan.SignableRepaymentData',\n            type: 'tuple',\n            components: [\n              { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n              { name: 'callbackData', internalType: 'bytes', type: 'bytes' },\n              { name: 'shouldDelegate', internalType: 'bool', type: 'bool' },\n            ],\n          },\n          {\n            name: 'loan',\n            internalType: 'struct IMultiSourceLoan.Loan',\n            type: 'tuple',\n            components: [\n              { name: 'borrower', internalType: 'address', type: 'address' },\n              { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n              { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n              { name: 'principalAddress', internalType: 'address', type: 'address' },\n              { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n              { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n              { name: 'duration', internalType: 'uint256', type: 'uint256' },\n              {\n                name: 'source',\n                internalType: 'struct IMultiSourceLoan.Source[]',\n                type: 'tuple[]',\n                components: [\n                  { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n                  { name: 'lender', internalType: 'address', type: 'address' },\n                  { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n                  { name: 'accruedInterest', internalType: 'uint256', type: 'uint256' },\n                  { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n                  { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n                ],\n              },\n            ],\n          },\n          { name: 'borrowerSignature', internalType: 'bytes', type: 'bytes' },\n        ],\n      },\n    ],\n    name: 'repayLoan',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: '_delegate', internalType: 'address', type: 'address' },\n      { name: '_collection', internalType: 'address', type: 'address' },\n      { name: '_tokenId', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'revokeDelegate',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: '_newDelegateRegistry', internalType: 'address', type: 'address' }],\n    name: 'setDelegateRegistry',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: '_newFlashActionContract', internalType: 'address', type: 'address' }],\n    name: 'setFlashActionContract',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: '__maxSources', internalType: 'uint256', type: 'uint256' }],\n    name: 'setMaxSources',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: '__minLockPeriod', internalType: 'uint256', type: 'uint256' }],\n    name: 'setMinLockPeriod',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [],\n    name: 'setProtocolFee',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: 'newOwner', internalType: 'address', type: 'address' }],\n    name: 'transferOwnership',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      {\n        name: '_newMinimum',\n        internalType: 'struct IBaseLoan.ImprovementMinimum',\n        type: 'tuple',\n        components: [\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'interest', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n    ],\n    name: 'updateImprovementMinimum',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: '_newDuration', internalType: 'uint48', type: 'uint48' }],\n    name: 'updateLiquidationAuctionDuration',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: 'loanLiquidator', internalType: 'contract ILoanLiquidator', type: 'address' }],\n    name: 'updateLiquidationContract',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      {\n        name: '_newProtocolFee',\n        internalType: 'struct IBaseLoan.ProtocolFee',\n        type: 'tuple',\n        components: [\n          { name: 'recipient', internalType: 'address', type: 'address' },\n          { name: 'fraction', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n    ],\n    name: 'updateProtocolFee',\n    outputs: [],\n  },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// NftBitVectorValidator\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const nftBitVectorValidatorABI = [\n  {\n    type: 'error',\n    inputs: [{ name: '_tokenId', internalType: 'uint256', type: 'uint256' }],\n    name: 'BitVectorLengthExceededError',\n  },\n  {\n    type: 'error',\n    inputs: [{ name: '_tokenId', internalType: 'uint256', type: 'uint256' }],\n    name: 'TokenIdNotFoundError',\n  },\n  {\n    stateMutability: 'pure',\n    type: 'function',\n    inputs: [\n      {\n        name: '',\n        internalType: 'struct IBaseLoan.LoanOffer',\n        type: 'tuple',\n        components: [\n          { name: 'offerId', internalType: 'uint256', type: 'uint256' },\n          { name: 'lender', internalType: 'address', type: 'address' },\n          { name: 'fee', internalType: 'uint256', type: 'uint256' },\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'capacity', internalType: 'uint256', type: 'uint256' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n          { name: 'expirationTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'validators',\n            internalType: 'struct IBaseLoan.OfferValidator[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'validator', internalType: 'address', type: 'address' },\n              { name: 'arguments', internalType: 'bytes', type: 'bytes' },\n            ],\n          },\n        ],\n      },\n      { name: '_tokenId', internalType: 'uint256', type: 'uint256' },\n      { name: '_validatorData', internalType: 'bytes', type: 'bytes' },\n    ],\n    name: 'validateOffer',\n    outputs: [],\n  },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// IMulticall\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const iMulticallABI = [\n  {\n    type: 'error',\n    inputs: [\n      { name: 'i', internalType: 'uint256', type: 'uint256' },\n      { name: 'returndata', internalType: 'bytes', type: 'bytes' },\n    ],\n    name: 'MulticallFailed',\n  },\n  {\n    stateMutability: 'payable',\n    type: 'function',\n    inputs: [{ name: 'data', internalType: 'bytes[]', type: 'bytes[]' }],\n    name: 'multicall',\n    outputs: [{ name: 'results', internalType: 'bytes[]', type: 'bytes[]' }],\n  },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// NftPackedListValidator\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const nftPackedListValidatorABI = [\n  { type: 'error', inputs: [], name: 'EmptyTokenIdListError' },\n  {\n    type: 'error',\n    inputs: [{ name: '_bytesPerTokenId', internalType: 'uint64', type: 'uint64' }],\n    name: 'InvalidBytesPerTokenIdError',\n  },\n  {\n    type: 'error',\n    inputs: [{ name: '_tokenId', internalType: 'uint256', type: 'uint256' }],\n    name: 'TokenIdNotFoundError',\n  },\n  {\n    stateMutability: 'pure',\n    type: 'function',\n    inputs: [\n      {\n        name: '',\n        internalType: 'struct IBaseLoan.LoanOffer',\n        type: 'tuple',\n        components: [\n          { name: 'offerId', internalType: 'uint256', type: 'uint256' },\n          { name: 'lender', internalType: 'address', type: 'address' },\n          { name: 'fee', internalType: 'uint256', type: 'uint256' },\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'capacity', internalType: 'uint256', type: 'uint256' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n          { name: 'expirationTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'validators',\n            internalType: 'struct IBaseLoan.OfferValidator[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'validator', internalType: 'address', type: 'address' },\n              { name: 'arguments', internalType: 'bytes', type: 'bytes' },\n            ],\n          },\n        ],\n      },\n      { name: '_tokenId', internalType: 'uint256', type: 'uint256' },\n      { name: '_validatorData', internalType: 'bytes', type: 'bytes' },\n    ],\n    name: 'validateOffer',\n    outputs: [],\n  },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// Multicall\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const multicallAbi = [\n  {\n    type: 'error',\n    inputs: [\n      { name: 'i', internalType: 'uint256', type: 'uint256' },\n      { name: 'returndata', internalType: 'bytes', type: 'bytes' },\n    ],\n    name: 'MulticallFailed',\n  },\n  {\n    stateMutability: 'payable',\n    type: 'function',\n    inputs: [{ name: 'data', internalType: 'bytes[]', type: 'bytes[]' }],\n    name: 'multicall',\n    outputs: [{ name: 'results', internalType: 'bytes[]', type: 'bytes[]' }],\n  },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// Owned\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const ownedABI = [\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'user', internalType: 'address', type: 'address', indexed: true },\n      { name: 'newOwner', internalType: 'address', type: 'address', indexed: true },\n    ],\n    name: 'OwnershipTransferred',\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'owner',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: 'newOwner', internalType: 'address', type: 'address' }],\n    name: 'transferOwnership',\n    outputs: [],\n  },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// Ownable2Step\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const ownable2StepABI = [\n  {\n    type: 'error',\n    inputs: [{ name: 'owner', internalType: 'address', type: 'address' }],\n    name: 'OwnableInvalidOwner',\n  },\n  {\n    type: 'error',\n    inputs: [{ name: 'account', internalType: 'address', type: 'address' }],\n    name: 'OwnableUnauthorizedAccount',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'previousOwner', internalType: 'address', type: 'address', indexed: true },\n      { name: 'newOwner', internalType: 'address', type: 'address', indexed: true },\n    ],\n    name: 'OwnershipTransferStarted',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'previousOwner', internalType: 'address', type: 'address', indexed: true },\n      { name: 'newOwner', internalType: 'address', type: 'address', indexed: true },\n    ],\n    name: 'OwnershipTransferred',\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [],\n    name: 'acceptOwnership',\n    outputs: [],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'owner',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'pendingOwner',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [],\n    name: 'renounceOwnership',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: 'newOwner', internalType: 'address', type: 'address' }],\n    name: 'transferOwnership',\n    outputs: [],\n  },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// RangeValidator\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const rangeValidatorABI = [\n  {\n    type: 'error',\n    inputs: [\n      { name: 'min', internalType: 'uint256', type: 'uint256' },\n      { name: 'max', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'TokenIdOutOfRangeError',\n  },\n  {\n    stateMutability: 'pure',\n    type: 'function',\n    inputs: [\n      {\n        name: '',\n        internalType: 'struct IBaseLoan.LoanOffer',\n        type: 'tuple',\n        components: [\n          { name: 'offerId', internalType: 'uint256', type: 'uint256' },\n          { name: 'lender', internalType: 'address', type: 'address' },\n          { name: 'fee', internalType: 'uint256', type: 'uint256' },\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'capacity', internalType: 'uint256', type: 'uint256' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n          { name: 'expirationTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'validators',\n            internalType: 'struct IBaseLoan.OfferValidator[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'validator', internalType: 'address', type: 'address' },\n              { name: 'arguments', internalType: 'bytes', type: 'bytes' },\n            ],\n          },\n        ],\n      },\n      { name: '_tokenId', internalType: 'uint256', type: 'uint256' },\n      { name: '_validatorData', internalType: 'bytes', type: 'bytes' },\n    ],\n    name: 'validateOffer',\n    outputs: [],\n  },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// Ownable\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const ownableABI = [\n  {\n    type: 'error',\n    inputs: [{ name: 'owner', internalType: 'address', type: 'address' }],\n    name: 'OwnableInvalidOwner',\n  },\n  {\n    type: 'error',\n    inputs: [{ name: 'account', internalType: 'address', type: 'address' }],\n    name: 'OwnableUnauthorizedAccount',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'previousOwner', internalType: 'address', type: 'address', indexed: true },\n      { name: 'newOwner', internalType: 'address', type: 'address', indexed: true },\n    ],\n    name: 'OwnershipTransferred',\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'owner',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [],\n    name: 'renounceOwnership',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: 'newOwner', internalType: 'address', type: 'address' }],\n    name: 'transferOwnership',\n    outputs: [],\n  },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// SampleCollection\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const sampleCollectionABI = [\n  { stateMutability: 'nonpayable', type: 'constructor', inputs: [] },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'owner', internalType: 'address', type: 'address', indexed: true },\n      { name: 'spender', internalType: 'address', type: 'address', indexed: true },\n      { name: 'id', internalType: 'uint256', type: 'uint256', indexed: true },\n    ],\n    name: 'Approval',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'owner', internalType: 'address', type: 'address', indexed: true },\n      { name: 'operator', internalType: 'address', type: 'address', indexed: true },\n      { name: 'approved', internalType: 'bool', type: 'bool', indexed: false },\n    ],\n    name: 'ApprovalForAll',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address', indexed: true },\n      { name: 'to', internalType: 'address', type: 'address', indexed: true },\n      { name: 'id', internalType: 'uint256', type: 'uint256', indexed: true },\n    ],\n    name: 'Transfer',\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: 'spender', internalType: 'address', type: 'address' },\n      { name: 'id', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'approve',\n    outputs: [],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: 'owner', internalType: 'address', type: 'address' }],\n    name: 'balanceOf',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    name: 'getApproved',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'address', type: 'address' },\n    ],\n    name: 'isApprovedForAll',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'lastId',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'id', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'mint',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: 'to', internalType: 'address', type: 'address' }],\n    name: 'mintNext',\n    outputs: [],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'name',\n    outputs: [{ name: '', internalType: 'string', type: 'string' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: 'id', internalType: 'uint256', type: 'uint256' }],\n    name: 'ownerOf',\n    outputs: [{ name: 'owner', internalType: 'address', type: 'address' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address' },\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'id', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'safeTransferFrom',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address' },\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'id', internalType: 'uint256', type: 'uint256' },\n      { name: 'data', internalType: 'bytes', type: 'bytes' },\n    ],\n    name: 'safeTransferFrom',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: 'operator', internalType: 'address', type: 'address' },\n      { name: 'approved', internalType: 'bool', type: 'bool' },\n    ],\n    name: 'setApprovalForAll',\n    outputs: [],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: 'interfaceId', internalType: 'bytes4', type: 'bytes4' }],\n    name: 'supportsInterface',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'symbol',\n    outputs: [{ name: '', internalType: 'string', type: 'string' }],\n  },\n  {\n    stateMutability: 'pure',\n    type: 'function',\n    inputs: [{ name: 'id', internalType: 'uint256', type: 'uint256' }],\n    name: 'tokenURI',\n    outputs: [{ name: '', internalType: 'string', type: 'string' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address' },\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'id', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'transferFrom',\n    outputs: [],\n  },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// SampleMarketplace\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const sampleMarketplaceABI = [\n  { stateMutability: 'nonpayable', type: 'function', inputs: [], name: 'buy', outputs: [] },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// SampleToken\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const sampleTokenABI = [\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'owner', internalType: 'address', type: 'address', indexed: true },\n      { name: 'spender', internalType: 'address', type: 'address', indexed: true },\n      { name: 'amount', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'Approval',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address', indexed: true },\n      { name: 'to', internalType: 'address', type: 'address', indexed: true },\n      { name: 'amount', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'Transfer',\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'DOMAIN_SEPARATOR',\n    outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'address', type: 'address' },\n    ],\n    name: 'allowance',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: 'spender', internalType: 'address', type: 'address' },\n      { name: 'amount', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'approve',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: '', internalType: 'address', type: 'address' }],\n    name: 'balanceOf',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'decimals',\n    outputs: [{ name: '', internalType: 'uint8', type: 'uint8' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'amount', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'mint',\n    outputs: [],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'name',\n    outputs: [{ name: '', internalType: 'string', type: 'string' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: '', internalType: 'address', type: 'address' }],\n    name: 'nonces',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: 'owner', internalType: 'address', type: 'address' },\n      { name: 'spender', internalType: 'address', type: 'address' },\n      { name: 'value', internalType: 'uint256', type: 'uint256' },\n      { name: 'deadline', internalType: 'uint256', type: 'uint256' },\n      { name: 'v', internalType: 'uint8', type: 'uint8' },\n      { name: 'r', internalType: 'bytes32', type: 'bytes32' },\n      { name: 's', internalType: 'bytes32', type: 'bytes32' },\n    ],\n    name: 'permit',\n    outputs: [],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'symbol',\n    outputs: [{ name: '', internalType: 'string', type: 'string' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'totalSupply',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'amount', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'transfer',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address' },\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'amount', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'transferFrom',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n  },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// StdInvariant\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const stdInvariantABI = [\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'excludeArtifacts',\n    outputs: [{ name: 'excludedArtifacts_', internalType: 'string[]', type: 'string[]' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'excludeContracts',\n    outputs: [{ name: 'excludedContracts_', internalType: 'address[]', type: 'address[]' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'excludeSenders',\n    outputs: [{ name: 'excludedSenders_', internalType: 'address[]', type: 'address[]' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'targetArtifactSelectors',\n    outputs: [\n      {\n        name: 'targetedArtifactSelectors_',\n        internalType: 'struct StdInvariant.FuzzSelector[]',\n        type: 'tuple[]',\n        components: [\n          { name: 'addr', internalType: 'address', type: 'address' },\n          { name: 'selectors', internalType: 'bytes4[]', type: 'bytes4[]' },\n        ],\n      },\n    ],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'targetArtifacts',\n    outputs: [{ name: 'targetedArtifacts_', internalType: 'string[]', type: 'string[]' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'targetContracts',\n    outputs: [{ name: 'targetedContracts_', internalType: 'address[]', type: 'address[]' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'targetInterfaces',\n    outputs: [\n      {\n        name: 'targetedInterfaces_',\n        internalType: 'struct StdInvariant.FuzzInterface[]',\n        type: 'tuple[]',\n        components: [\n          { name: 'addr', internalType: 'address', type: 'address' },\n          { name: 'artifacts', internalType: 'string[]', type: 'string[]' },\n        ],\n      },\n    ],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'targetSelectors',\n    outputs: [\n      {\n        name: 'targetedSelectors_',\n        internalType: 'struct StdInvariant.FuzzSelector[]',\n        type: 'tuple[]',\n        components: [\n          { name: 'addr', internalType: 'address', type: 'address' },\n          { name: 'selectors', internalType: 'bytes4[]', type: 'bytes4[]' },\n        ],\n      },\n    ],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'targetSenders',\n    outputs: [{ name: 'targetedSenders_', internalType: 'address[]', type: 'address[]' }],\n  },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// Strings\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const stringsABI = [\n  {\n    type: 'error',\n    inputs: [\n      { name: 'value', internalType: 'uint256', type: 'uint256' },\n      { name: 'length', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'StringsInsufficientHexLength',\n  },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// TestLoanSetup\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const testLoanSetupABI = [\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: '', internalType: 'string', type: 'string', indexed: false }],\n    name: 'log',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: '', internalType: 'address', type: 'address', indexed: false }],\n    name: 'log_address',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'val', internalType: 'uint256[]', type: 'uint256[]', indexed: false }],\n    name: 'log_array',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'val', internalType: 'int256[]', type: 'int256[]', indexed: false }],\n    name: 'log_array',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'val', internalType: 'address[]', type: 'address[]', indexed: false }],\n    name: 'log_array',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: '', internalType: 'bytes', type: 'bytes', indexed: false }],\n    name: 'log_bytes',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: '', internalType: 'bytes32', type: 'bytes32', indexed: false }],\n    name: 'log_bytes32',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: '', internalType: 'int256', type: 'int256', indexed: false }],\n    name: 'log_int',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'key', internalType: 'string', type: 'string', indexed: false },\n      { name: 'val', internalType: 'address', type: 'address', indexed: false },\n    ],\n    name: 'log_named_address',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'key', internalType: 'string', type: 'string', indexed: false },\n      { name: 'val', internalType: 'uint256[]', type: 'uint256[]', indexed: false },\n    ],\n    name: 'log_named_array',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'key', internalType: 'string', type: 'string', indexed: false },\n      { name: 'val', internalType: 'int256[]', type: 'int256[]', indexed: false },\n    ],\n    name: 'log_named_array',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'key', internalType: 'string', type: 'string', indexed: false },\n      { name: 'val', internalType: 'address[]', type: 'address[]', indexed: false },\n    ],\n    name: 'log_named_array',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'key', internalType: 'string', type: 'string', indexed: false },\n      { name: 'val', internalType: 'bytes', type: 'bytes', indexed: false },\n    ],\n    name: 'log_named_bytes',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'key', internalType: 'string', type: 'string', indexed: false },\n      { name: 'val', internalType: 'bytes32', type: 'bytes32', indexed: false },\n    ],\n    name: 'log_named_bytes32',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'key', internalType: 'string', type: 'string', indexed: false },\n      { name: 'val', internalType: 'int256', type: 'int256', indexed: false },\n      { name: 'decimals', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'log_named_decimal_int',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'key', internalType: 'string', type: 'string', indexed: false },\n      { name: 'val', internalType: 'uint256', type: 'uint256', indexed: false },\n      { name: 'decimals', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'log_named_decimal_uint',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'key', internalType: 'string', type: 'string', indexed: false },\n      { name: 'val', internalType: 'int256', type: 'int256', indexed: false },\n    ],\n    name: 'log_named_int',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'key', internalType: 'string', type: 'string', indexed: false },\n      { name: 'val', internalType: 'string', type: 'string', indexed: false },\n    ],\n    name: 'log_named_string',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'key', internalType: 'string', type: 'string', indexed: false },\n      { name: 'val', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'log_named_uint',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: '', internalType: 'string', type: 'string', indexed: false }],\n    name: 'log_string',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: '', internalType: 'uint256', type: 'uint256', indexed: false }],\n    name: 'log_uint',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: '', internalType: 'bytes', type: 'bytes', indexed: false }],\n    name: 'logs',\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'IS_TEST',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'excludeArtifacts',\n    outputs: [{ name: 'excludedArtifacts_', internalType: 'string[]', type: 'string[]' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'excludeContracts',\n    outputs: [{ name: 'excludedContracts_', internalType: 'address[]', type: 'address[]' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'excludeSenders',\n    outputs: [{ name: 'excludedSenders_', internalType: 'address[]', type: 'address[]' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [],\n    name: 'failed',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'targetArtifactSelectors',\n    outputs: [\n      {\n        name: 'targetedArtifactSelectors_',\n        internalType: 'struct StdInvariant.FuzzSelector[]',\n        type: 'tuple[]',\n        components: [\n          { name: 'addr', internalType: 'address', type: 'address' },\n          { name: 'selectors', internalType: 'bytes4[]', type: 'bytes4[]' },\n        ],\n      },\n    ],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'targetArtifacts',\n    outputs: [{ name: 'targetedArtifacts_', internalType: 'string[]', type: 'string[]' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'targetContracts',\n    outputs: [{ name: 'targetedContracts_', internalType: 'address[]', type: 'address[]' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'targetInterfaces',\n    outputs: [\n      {\n        name: 'targetedInterfaces_',\n        internalType: 'struct StdInvariant.FuzzInterface[]',\n        type: 'tuple[]',\n        components: [\n          { name: 'addr', internalType: 'address', type: 'address' },\n          { name: 'artifacts', internalType: 'string[]', type: 'string[]' },\n        ],\n      },\n    ],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'targetSelectors',\n    outputs: [\n      {\n        name: 'targetedSelectors_',\n        internalType: 'struct StdInvariant.FuzzSelector[]',\n        type: 'tuple[]',\n        components: [\n          { name: 'addr', internalType: 'address', type: 'address' },\n          { name: 'selectors', internalType: 'bytes4[]', type: 'bytes4[]' },\n        ],\n      },\n    ],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'targetSenders',\n    outputs: [{ name: 'targetedSenders_', internalType: 'address[]', type: 'address[]' }],\n  },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// TestNFTFlashAction\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const testNftFlashActionABI = [\n  { type: 'error', inputs: [], name: 'InvalidOwnerError' },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: '_collection', internalType: 'address', type: 'address' },\n      { name: '_tokenId', internalType: 'uint256', type: 'uint256' },\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'bytes', type: 'bytes' },\n    ],\n    name: 'execute',\n    outputs: [],\n  },\n  {\n    stateMutability: 'pure',\n    type: 'function',\n    inputs: [\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'uint256', type: 'uint256' },\n      { name: '', internalType: 'bytes', type: 'bytes' },\n    ],\n    name: 'onERC721Received',\n    outputs: [{ name: '', internalType: 'bytes4', type: 'bytes4' }],\n  },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// TestNFTMaliciousFlashAction\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const testNftMaliciousFlashActionABI = [\n  { type: 'error', inputs: [], name: 'InvalidOwnerError' },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'uint256', type: 'uint256' },\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'bytes', type: 'bytes' },\n    ],\n    name: 'execute',\n    outputs: [],\n  },\n  {\n    stateMutability: 'pure',\n    type: 'function',\n    inputs: [\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'uint256', type: 'uint256' },\n      { name: '', internalType: 'bytes', type: 'bytes' },\n    ],\n    name: 'onERC721Received',\n    outputs: [{ name: '', internalType: 'bytes4', type: 'bytes4' }],\n  },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// ValidatorHelpers\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const validatorHelpersABI = [\n  {\n    type: 'error',\n    inputs: [{ name: '_tokenId', internalType: 'uint256', type: 'uint256' }],\n    name: 'BitVectorLengthExceededError',\n  },\n  { type: 'error', inputs: [], name: 'EmptyTokenIdListError' },\n  {\n    type: 'error',\n    inputs: [{ name: '_bytesPerTokenId', internalType: 'uint64', type: 'uint64' }],\n    name: 'InvalidBytesPerTokenIdError',\n  },\n  {\n    type: 'error',\n    inputs: [{ name: '_tokenId', internalType: 'uint256', type: 'uint256' }],\n    name: 'TokenIdNotFoundError',\n  },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// WETH\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const wethABI = [\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'owner', internalType: 'address', type: 'address', indexed: true },\n      { name: 'spender', internalType: 'address', type: 'address', indexed: true },\n      { name: 'amount', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'Approval',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address', indexed: true },\n      { name: 'amount', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'Deposit',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address', indexed: true },\n      { name: 'to', internalType: 'address', type: 'address', indexed: true },\n      { name: 'amount', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'Transfer',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'to', internalType: 'address', type: 'address', indexed: true },\n      { name: 'amount', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'Withdrawal',\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'DOMAIN_SEPARATOR',\n    outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'address', type: 'address' },\n    ],\n    name: 'allowance',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: 'spender', internalType: 'address', type: 'address' },\n      { name: 'amount', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'approve',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: '', internalType: 'address', type: 'address' }],\n    name: 'balanceOf',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'decimals',\n    outputs: [{ name: '', internalType: 'uint8', type: 'uint8' }],\n  },\n  { stateMutability: 'payable', type: 'function', inputs: [], name: 'deposit', outputs: [] },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'name',\n    outputs: [{ name: '', internalType: 'string', type: 'string' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: '', internalType: 'address', type: 'address' }],\n    name: 'nonces',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: 'owner', internalType: 'address', type: 'address' },\n      { name: 'spender', internalType: 'address', type: 'address' },\n      { name: 'value', internalType: 'uint256', type: 'uint256' },\n      { name: 'deadline', internalType: 'uint256', type: 'uint256' },\n      { name: 'v', internalType: 'uint8', type: 'uint8' },\n      { name: 'r', internalType: 'bytes32', type: 'bytes32' },\n      { name: 's', internalType: 'bytes32', type: 'bytes32' },\n    ],\n    name: 'permit',\n    outputs: [],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'symbol',\n    outputs: [{ name: '', internalType: 'string', type: 'string' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'totalSupply',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'amount', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'transfer',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address' },\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'amount', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'transferFrom',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: 'amount', internalType: 'uint256', type: 'uint256' }],\n    name: 'withdraw',\n    outputs: [],\n  },\n  { stateMutability: 'payable', type: 'receive' },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// WithCallbacks\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const withCallbacksABI = [\n  { type: 'error', inputs: [], name: 'AddressZeroError' },\n  {\n    type: 'error',\n    inputs: [\n      { name: '_lender', internalType: 'address', type: 'address' },\n      { name: '_offerId', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'CancelledOrExecutedOfferError',\n  },\n  {\n    type: 'error',\n    inputs: [\n      { name: '_lender', internalType: 'address', type: 'address' },\n      { name: '_renegotiationId', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'CancelledRenegotiationOfferError',\n  },\n  { type: 'error', inputs: [], name: 'CannotLiquidateError' },\n  { type: 'error', inputs: [], name: 'CollectionNotWhitelistedError' },\n  { type: 'error', inputs: [], name: 'CurrencyNotWhitelistedError' },\n  {\n    type: 'error',\n    inputs: [{ name: '_expirationTime', internalType: 'uint256', type: 'uint256' }],\n    name: 'ExpiredOfferError',\n  },\n  {\n    type: 'error',\n    inputs: [{ name: '_expirationTime', internalType: 'uint256', type: 'uint256' }],\n    name: 'ExpiredRenegotiationOfferError',\n  },\n  {\n    type: 'error',\n    inputs: [\n      { name: '_amount', internalType: 'uint256', type: 'uint256' },\n      { name: '_principalAmount', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'InvalidAmountError',\n  },\n  { type: 'error', inputs: [], name: 'InvalidBorrowerError' },\n  { type: 'error', inputs: [], name: 'InvalidCollateralIdError' },\n  { type: 'error', inputs: [], name: 'InvalidDurationError' },\n  { type: 'error', inputs: [], name: 'InvalidLenderError' },\n  { type: 'error', inputs: [], name: 'InvalidLiquidationError' },\n  {\n    type: 'error',\n    inputs: [{ name: '_loanId', internalType: 'uint256', type: 'uint256' }],\n    name: 'InvalidLoanError',\n  },\n  {\n    type: 'error',\n    inputs: [{ name: '_fraction', internalType: 'uint256', type: 'uint256' }],\n    name: 'InvalidProtocolFeeError',\n  },\n  { type: 'error', inputs: [], name: 'InvalidSignatureError' },\n  { type: 'error', inputs: [], name: 'InvalidValueError' },\n  {\n    type: 'error',\n    inputs: [{ name: '_liquidator', internalType: 'address', type: 'address' }],\n    name: 'LiquidatorOnlyError',\n  },\n  {\n    type: 'error',\n    inputs: [{ name: '_expirationTime', internalType: 'uint256', type: 'uint256' }],\n    name: 'LoanNotDueError',\n  },\n  {\n    type: 'error',\n    inputs: [\n      { name: '_lender', internalType: 'address', type: 'address' },\n      { name: '_newMinOfferId', internalType: 'uint256', type: 'uint256' },\n      { name: '_minOfferId', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'LowOfferIdError',\n  },\n  {\n    type: 'error',\n    inputs: [\n      { name: '_lender', internalType: 'address', type: 'address' },\n      { name: '_newMinRenegotiationOfferId', internalType: 'uint256', type: 'uint256' },\n      { name: '_minOfferId', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'LowRenegotiationOfferIdError',\n  },\n  { type: 'error', inputs: [], name: 'MaxCapacityExceededError' },\n  { type: 'error', inputs: [], name: 'NotStrictlyImprovedError' },\n  { type: 'error', inputs: [], name: 'OnlyBorrowerCallableError' },\n  { type: 'error', inputs: [], name: 'OnlyLenderCallableError' },\n  { type: 'error', inputs: [], name: 'OnlyLenderOrBorrowerCallableError' },\n  {\n    type: 'error',\n    inputs: [{ name: '_pendingProtocolFeeSetTime', internalType: 'uint256', type: 'uint256' }],\n    name: 'TooEarlyError',\n  },\n  { type: 'error', inputs: [], name: 'ZeroDurationError' },\n  { type: 'error', inputs: [], name: 'ZeroInterestError' },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'lender', internalType: 'address', type: 'address', indexed: false },\n      { name: 'minOfferId', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'AllOffersCancelled',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'lender', internalType: 'address', type: 'address', indexed: false },\n      { name: 'minRenegotiationId', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'AllRenegotiationOffersCancelled',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'borrower', internalType: 'address', type: 'address', indexed: false },\n      { name: 'offerId', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'BorrowerOfferCancelled',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      {\n        name: 'minimum',\n        internalType: 'struct IBaseLoan.ImprovementMinimum',\n        type: 'tuple',\n        components: [\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'interest', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n        ],\n        indexed: false,\n      },\n    ],\n    name: 'ImprovementMinimumUpdated',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'newDuration', internalType: 'uint256', type: 'uint256', indexed: false }],\n    name: 'LiquidationAuctionDurationUpdated',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'liquidator', internalType: 'address', type: 'address', indexed: false }],\n    name: 'LiquidationContractUpdated',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'loanId', internalType: 'uint256', type: 'uint256', indexed: false }],\n    name: 'LoanForeclosed',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'loanId', internalType: 'uint256', type: 'uint256', indexed: false }],\n    name: 'LoanLiquidated',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'loanId', internalType: 'uint256', type: 'uint256', indexed: false },\n      { name: 'liquidator', internalType: 'address', type: 'address', indexed: false },\n    ],\n    name: 'LoanSentToLiquidator',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'lender', internalType: 'address', type: 'address', indexed: false },\n      { name: 'offerId', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'OfferCancelled',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'user', internalType: 'address', type: 'address', indexed: true },\n      { name: 'newOwner', internalType: 'address', type: 'address', indexed: true },\n    ],\n    name: 'OwnershipTransferred',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      {\n        name: 'fee',\n        internalType: 'struct IBaseLoan.ProtocolFee',\n        type: 'tuple',\n        components: [\n          { name: 'recipient', internalType: 'address', type: 'address' },\n          { name: 'fraction', internalType: 'uint256', type: 'uint256' },\n        ],\n        indexed: false,\n      },\n    ],\n    name: 'ProtocolFeePendingUpdate',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      {\n        name: 'fee',\n        internalType: 'struct IBaseLoan.ProtocolFee',\n        type: 'tuple',\n        components: [\n          { name: 'recipient', internalType: 'address', type: 'address' },\n          { name: 'fraction', internalType: 'uint256', type: 'uint256' },\n        ],\n        indexed: false,\n      },\n    ],\n    name: 'ProtocolFeeUpdated',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'lender', internalType: 'address', type: 'address', indexed: false },\n      { name: 'renegotiationId', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'RenegotiationOfferCancelled',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'contractAdded', internalType: 'address', type: 'address', indexed: false },\n      {\n        name: 'tax',\n        internalType: 'struct WithCallbacks.Taxes',\n        type: 'tuple',\n        components: [\n          { name: 'buyTax', internalType: 'uint128', type: 'uint128' },\n          { name: 'sellTax', internalType: 'uint128', type: 'uint128' },\n        ],\n        indexed: false,\n      },\n    ],\n    name: 'WhitelistedCallbackContractAdded',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'contractRemoved', internalType: 'address', type: 'address', indexed: false }],\n    name: 'WhitelistedCallbackContractRemoved',\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'DOMAIN_SEPARATOR',\n    outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'FEE_UPDATE_NOTICE',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'INITIAL_DOMAIN_SEPARATOR',\n    outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'MAX_PROTOCOL_FEE',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'MIN_AUCTION_DURATION',\n    outputs: [{ name: '', internalType: 'uint48', type: 'uint48' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: '_contract', internalType: 'address', type: 'address' },\n      {\n        name: '_tax',\n        internalType: 'struct WithCallbacks.Taxes',\n        type: 'tuple',\n        components: [\n          { name: 'buyTax', internalType: 'uint128', type: 'uint128' },\n          { name: 'sellTax', internalType: 'uint128', type: 'uint128' },\n        ],\n      },\n    ],\n    name: 'addWhitelistedCallbackContract',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: '_minOfferId', internalType: 'uint256', type: 'uint256' }],\n    name: 'cancelAllOffers',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: '_minRenegotiationId', internalType: 'uint256', type: 'uint256' }],\n    name: 'cancelAllRenegotiationOffers',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: '_offerId', internalType: 'uint256', type: 'uint256' }],\n    name: 'cancelOffer',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: '_offerIds', internalType: 'uint256[]', type: 'uint256[]' }],\n    name: 'cancelOffers',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: '_renegotiationId', internalType: 'uint256', type: 'uint256' }],\n    name: 'cancelRenegotiationOffer',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: '_renegotiationIds', internalType: 'uint256[]', type: 'uint256[]' }],\n    name: 'cancelRenegotiationOffers',\n    outputs: [],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getCollectionManager',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getCurrencyManager',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getImprovementMinimum',\n    outputs: [\n      {\n        name: '',\n        internalType: 'struct IBaseLoan.ImprovementMinimum',\n        type: 'tuple',\n        components: [\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'interest', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n    ],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getLiquidationAuctionDuration',\n    outputs: [{ name: '', internalType: 'uint48', type: 'uint48' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getLiquidator',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getPendingProtocolFee',\n    outputs: [\n      {\n        name: '',\n        internalType: 'struct IBaseLoan.ProtocolFee',\n        type: 'tuple',\n        components: [\n          { name: 'recipient', internalType: 'address', type: 'address' },\n          { name: 'fraction', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n    ],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getPendingProtocolFeeSetTime',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getProtocolFee',\n    outputs: [\n      {\n        name: '',\n        internalType: 'struct IBaseLoan.ProtocolFee',\n        type: 'tuple',\n        components: [\n          { name: 'recipient', internalType: 'address', type: 'address' },\n          { name: 'fraction', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n    ],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getTotalLoansIssued',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [\n      { name: '_lender', internalType: 'address', type: 'address' },\n      { name: '_offerId', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'getUsedCapacity',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'isBorrowerOfferCancelled',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'isOfferCancelled',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'isRenegotiationOfferCancelled',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: '_contract', internalType: 'address', type: 'address' }],\n    name: 'isWhitelistedCallbackContract',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: '', internalType: 'address', type: 'address' }],\n    name: 'lenderMinRenegotiationOfferId',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: '', internalType: 'address', type: 'address' }],\n    name: 'minOfferId',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'name',\n    outputs: [{ name: '', internalType: 'string', type: 'string' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'uint256', type: 'uint256' },\n      { name: '', internalType: 'bytes', type: 'bytes' },\n    ],\n    name: 'onERC721Received',\n    outputs: [{ name: '', internalType: 'bytes4', type: 'bytes4' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'owner',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: '_contract', internalType: 'address', type: 'address' }],\n    name: 'removeWhitelistedCallbackContract',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [],\n    name: 'setProtocolFee',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: 'newOwner', internalType: 'address', type: 'address' }],\n    name: 'transferOwnership',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      {\n        name: '_newMinimum',\n        internalType: 'struct IBaseLoan.ImprovementMinimum',\n        type: 'tuple',\n        components: [\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'interest', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n    ],\n    name: 'updateImprovementMinimum',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: '_newDuration', internalType: 'uint48', type: 'uint48' }],\n    name: 'updateLiquidationAuctionDuration',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: 'loanLiquidator', internalType: 'contract ILoanLiquidator', type: 'address' }],\n    name: 'updateLiquidationContract',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      {\n        name: '_newProtocolFee',\n        internalType: 'struct IBaseLoan.ProtocolFee',\n        type: 'tuple',\n        components: [\n          { name: 'recipient', internalType: 'address', type: 'address' },\n          { name: 'fraction', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n    ],\n    name: 'updateProtocolFee',\n    outputs: [],\n  },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// UserVault\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const userVaultABI = [\n  {\n    stateMutability: 'nonpayable',\n    type: 'constructor',\n    inputs: [\n      { name: 'currencyManager', internalType: 'address', type: 'address' },\n      { name: 'collectionManager', internalType: 'address', type: 'address' },\n    ],\n  },\n  { type: 'error', inputs: [], name: 'AssetNotOwnedError' },\n  { type: 'error', inputs: [], name: 'CollectionNotWhitelistedError' },\n  { type: 'error', inputs: [], name: 'CurrencyNotWhitelistedError' },\n  { type: 'error', inputs: [], name: 'LengthMismatchError' },\n  {\n    type: 'error',\n    inputs: [{ name: 'vaultId', internalType: 'uint256', type: 'uint256' }],\n    name: 'NotApprovedError',\n  },\n  {\n    type: 'error',\n    inputs: [{ name: 'vaultId', internalType: 'uint256', type: 'uint256' }],\n    name: 'VaultNotExistsError',\n  },\n  { type: 'error', inputs: [], name: 'WithdrawingETHError' },\n  { type: 'error', inputs: [], name: 'WrongMethodError' },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'owner', internalType: 'address', type: 'address', indexed: true },\n      { name: 'spender', internalType: 'address', type: 'address', indexed: true },\n      { name: 'id', internalType: 'uint256', type: 'uint256', indexed: true },\n    ],\n    name: 'Approval',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'owner', internalType: 'address', type: 'address', indexed: true },\n      { name: 'operator', internalType: 'address', type: 'address', indexed: true },\n      { name: 'approved', internalType: 'bool', type: 'bool', indexed: false },\n    ],\n    name: 'ApprovalForAll',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'vaultId', internalType: 'uint256', type: 'uint256', indexed: false },\n      { name: 'token', internalType: 'address', type: 'address', indexed: false },\n      { name: 'amount', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'ERC20Deposited',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'vaultId', internalType: 'uint256', type: 'uint256', indexed: false },\n      { name: 'token', internalType: 'address', type: 'address', indexed: false },\n      { name: 'amount', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'ERC20Withdrawn',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'vaultId', internalType: 'uint256', type: 'uint256', indexed: false },\n      { name: 'collection', internalType: 'address', type: 'address', indexed: false },\n      { name: 'tokenId', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'ERC721Deposited',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'vaultId', internalType: 'uint256', type: 'uint256', indexed: false },\n      { name: 'collection', internalType: 'address', type: 'address', indexed: false },\n      { name: 'tokenId', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'ERC721Withdrawn',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'user', internalType: 'address', type: 'address', indexed: true },\n      { name: 'newOwner', internalType: 'address', type: 'address', indexed: true },\n    ],\n    name: 'OwnershipTransferred',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address', indexed: true },\n      { name: 'to', internalType: 'address', type: 'address', indexed: true },\n      { name: 'id', internalType: 'uint256', type: 'uint256', indexed: true },\n    ],\n    name: 'Transfer',\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [\n      { name: '_vaultId', internalType: 'uint256', type: 'uint256' },\n      { name: '_token', internalType: 'address', type: 'address' },\n    ],\n    name: 'ERC20BalanceOf',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [\n      { name: '_collection', internalType: 'address', type: 'address' },\n      { name: '_tokenId', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'ERC721OwnerOf',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'ETH',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: 'spender', internalType: 'address', type: 'address' },\n      { name: 'id', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'approve',\n    outputs: [],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: 'owner', internalType: 'address', type: 'address' }],\n    name: 'balanceOf',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: '_vaultId', internalType: 'uint256', type: 'uint256' },\n      { name: '_assetRecipient', internalType: 'address', type: 'address' },\n    ],\n    name: 'burn',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: '_vaultId', internalType: 'uint256', type: 'uint256' },\n      { name: '_collections', internalType: 'address[]', type: 'address[]' },\n      { name: '_tokenIds', internalType: 'uint256[]', type: 'uint256[]' },\n      { name: '_tokens', internalType: 'address[]', type: 'address[]' },\n    ],\n    name: 'burnAndWithdraw',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: '_vaultId', internalType: 'uint256', type: 'uint256' },\n      { name: '_token', internalType: 'address', type: 'address' },\n      { name: '_amount', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'depositERC20',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: '_vaultId', internalType: 'uint256', type: 'uint256' },\n      { name: '_collection', internalType: 'address', type: 'address' },\n      { name: '_tokenId', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'depositERC721',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: '_vaultId', internalType: 'uint256', type: 'uint256' },\n      { name: '_collection', internalType: 'address', type: 'address' },\n      { name: '_tokenIds', internalType: 'uint256[]', type: 'uint256[]' },\n    ],\n    name: 'depositERC721s',\n    outputs: [],\n  },\n  {\n    stateMutability: 'payable',\n    type: 'function',\n    inputs: [{ name: '_vaultId', internalType: 'uint256', type: 'uint256' }],\n    name: 'depositEth',\n    outputs: [],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    name: 'getApproved',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'address', type: 'address' },\n    ],\n    name: 'isApprovedForAll',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [],\n    name: 'mint',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'name',\n    outputs: [{ name: '', internalType: 'string', type: 'string' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'uint256', type: 'uint256' },\n      { name: '', internalType: 'bytes', type: 'bytes' },\n    ],\n    name: 'onERC721Received',\n    outputs: [{ name: '', internalType: 'bytes4', type: 'bytes4' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'owner',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: 'id', internalType: 'uint256', type: 'uint256' }],\n    name: 'ownerOf',\n    outputs: [{ name: 'owner', internalType: 'address', type: 'address' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address' },\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'id', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'safeTransferFrom',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address' },\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'id', internalType: 'uint256', type: 'uint256' },\n      { name: 'data', internalType: 'bytes', type: 'bytes' },\n    ],\n    name: 'safeTransferFrom',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: 'operator', internalType: 'address', type: 'address' },\n      { name: 'approved', internalType: 'bool', type: 'bool' },\n    ],\n    name: 'setApprovalForAll',\n    outputs: [],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: 'interfaceId', internalType: 'bytes4', type: 'bytes4' }],\n    name: 'supportsInterface',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'symbol',\n    outputs: [{ name: '', internalType: 'string', type: 'string' }],\n  },\n  {\n    stateMutability: 'pure',\n    type: 'function',\n    inputs: [{ name: '_vaultId', internalType: 'uint256', type: 'uint256' }],\n    name: 'tokenURI',\n    outputs: [{ name: '', internalType: 'string', type: 'string' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address' },\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'id', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'transferFrom',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: 'newOwner', internalType: 'address', type: 'address' }],\n    name: 'transferOwnership',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: '_vaultId', internalType: 'uint256', type: 'uint256' },\n      { name: '_token', internalType: 'address', type: 'address' },\n    ],\n    name: 'withdrawERC20',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: '_vaultId', internalType: 'uint256', type: 'uint256' },\n      { name: '_tokens', internalType: 'address[]', type: 'address[]' },\n    ],\n    name: 'withdrawERC20s',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: '_vaultId', internalType: 'uint256', type: 'uint256' },\n      { name: '_collection', internalType: 'address', type: 'address' },\n      { name: '_tokenId', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'withdrawERC721',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: '_vaultId', internalType: 'uint256', type: 'uint256' },\n      { name: '_collections', internalType: 'address[]', type: 'address[]' },\n      { name: '_tokenIds', internalType: 'uint256[]', type: 'uint256[]' },\n    ],\n    name: 'withdrawERC721s',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: '_vaultId', internalType: 'uint256', type: 'uint256' }],\n    name: 'withdrawEth',\n    outputs: [],\n  },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// USDCSampleToken\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const usdcSampleTokenABI = [\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'owner', internalType: 'address', type: 'address', indexed: true },\n      { name: 'spender', internalType: 'address', type: 'address', indexed: true },\n      { name: 'amount', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'Approval',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address', indexed: true },\n      { name: 'to', internalType: 'address', type: 'address', indexed: true },\n      { name: 'amount', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'Transfer',\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'DOMAIN_SEPARATOR',\n    outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'address', type: 'address' },\n    ],\n    name: 'allowance',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: 'spender', internalType: 'address', type: 'address' },\n      { name: 'amount', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'approve',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: '', internalType: 'address', type: 'address' }],\n    name: 'balanceOf',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'decimals',\n    outputs: [{ name: '', internalType: 'uint8', type: 'uint8' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'amount', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'mint',\n    outputs: [],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'name',\n    outputs: [{ name: '', internalType: 'string', type: 'string' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: '', internalType: 'address', type: 'address' }],\n    name: 'nonces',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: 'owner', internalType: 'address', type: 'address' },\n      { name: 'spender', internalType: 'address', type: 'address' },\n      { name: 'value', internalType: 'uint256', type: 'uint256' },\n      { name: 'deadline', internalType: 'uint256', type: 'uint256' },\n      { name: 'v', internalType: 'uint8', type: 'uint8' },\n      { name: 'r', internalType: 'bytes32', type: 'bytes32' },\n      { name: 's', internalType: 'bytes32', type: 'bytes32' },\n    ],\n    name: 'permit',\n    outputs: [],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'symbol',\n    outputs: [{ name: '', internalType: 'string', type: 'string' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'totalSupply',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'amount', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'transfer',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address' },\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'amount', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'transferFrom',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n  },\n] as const\n", "import {\n  Abi,\n  Address,\n  ContractEventName,\n  ContractFunctionArgs,\n  ContractFunctionName,\n  createPublicClient,\n  createTransport,\n  decodeFunctionData,\n  encodeFunctionData,\n  getContract,\n  GetContractReturnType,\n  Hash,\n  Hex,\n  parseEventLogs,\n  PublicClient,\n  SimulateContractParameters,\n  TransactionReceipt,\n} from 'viem';\n\nimport { Wallet } from '@/clients/contracts';\nimport { withRetriedReceiptWait } from '@/utils/blockchain';\n\n/**\n * Options of a `safeContractWrite` call. `dataSuffix` is appended verbatim after\n * the ABI-encoded arguments, both in the simulation and in the broadcast\n * transaction (viem's `writeContract` forwards it to `sendTransaction`, which\n * concatenates it onto `data`); Solidity's decoder ignores trailing bytes, so a\n * suffix never changes what the contract executes.\n */\nexport type SafeContractWriteOptions = { value?: bigint; dataSuffix?: Hex };\n\nexport class BaseContract<TAbi extends Abi> {\n  abi: TAbi;\n  address: Address;\n  bcClient: PublicClient;\n  wallet: Wallet;\n  contract: GetContractReturnType<TAbi, PublicClient | Wallet>;\n\n  safeContractWrite: {\n    [TFunctionName in ContractFunctionName<TAbi, 'nonpayable' | 'payable'>]: (\n      args: SimulateContractParameters<TAbi, TFunctionName>['args'],\n      options?: SafeContractWriteOptions,\n    ) => Promise<Hash>;\n  };\n\n  parseEventLogs: <TFunctionName extends ContractEventName<TAbi>>(\n    eventName: TFunctionName,\n    logs: TransactionReceipt['logs'],\n  ) => ReturnType<typeof parseEventLogs<TAbi, true, TFunctionName>>;\n\n  constructor({\n    walletClient,\n    address,\n    abi,\n    publicClient,\n  }: {\n    walletClient: Wallet;\n    address: Address;\n    abi: TAbi;\n    publicClient?: PublicClient;\n  }) {\n    this.wallet = walletClient;\n    const bcClient =\n      publicClient ??\n      withRetriedReceiptWait(\n        createPublicClient({\n          transport: () => createTransport(walletClient.transport),\n        }),\n      );\n    this.bcClient = bcClient;\n    this.address = address;\n    this.abi = abi;\n    this.contract = getContract({\n      address: this.address,\n      abi: this.abi,\n      client: {\n        public: this.bcClient,\n        wallet: walletClient,\n      },\n    });\n\n    this.parseEventLogs = (eventName, logs) => parseEventLogs({ eventName, logs, abi: this.abi });\n\n    this.safeContractWrite = new Proxy({} as typeof this.safeContractWrite, {\n      get<TFunctionName extends ContractFunctionName<TAbi, 'nonpayable' | 'payable'>>(\n        _: unknown,\n        functionName: TFunctionName,\n      ) {\n        return async (\n          args: ContractFunctionArgs<TAbi, 'nonpayable' | 'payable', TFunctionName>,\n          options: SafeContractWriteOptions = {},\n        ) => {\n          // The typecast here is necessary,\n          // we still enjoy the type checking on the arguments themselves so it's not the end of the world\n          const { request } = await bcClient.simulateContract({\n            address,\n            abi,\n            functionName,\n            args,\n            account: walletClient.account,\n            ...options,\n          } as unknown as SimulateContractParameters);\n\n          return walletClient.writeContract(request);\n        };\n      },\n    });\n  }\n\n  async sendTransactionData(data: Hex, value?: bigint) {\n    const txHash = await this.sendTransactionWithAbiValidation(data, value);\n    return {\n      txHash,\n      waitTxInBlock: async () => {\n        const receipt = await this.bcClient.waitForTransactionReceipt({\n          hash: txHash,\n        });\n        if (receipt.status === 'reverted')\n          throw new Error(`Transaction reverted to:${this.address}, data:${data}`);\n        return receipt;\n      },\n    };\n  }\n\n  private async sendRawTransaction(data: Hex, value?: bigint) {\n    return this.wallet.sendTransaction({ data, to: this.address, value });\n  }\n\n  private async sendTransactionWithAbiValidation(data: Hex, value?: bigint) {\n    let decoded;\n    try {\n      decoded = decodeFunctionData({\n        abi: this.abi,\n        data,\n      });\n    } catch (e) {\n      return this.sendRawTransaction(data, value);\n    }\n\n    const reencoded = encodeFunctionData({\n      abi: this.abi,\n      functionName: decoded.functionName,\n      args: decoded.args,\n    } as Parameters<typeof encodeFunctionData>[0]);\n    if (!data.toLowerCase().startsWith(reencoded.toLowerCase())) {\n      return this.sendRawTransaction(data, value);\n    }\n    const dataSuffix =\n      data.length > reencoded.length ? (`0x${data.slice(reencoded.length)}` as Hex) : undefined;\n\n    // @ts-expect-error\n    return this.safeContractWrite[decoded.functionName](decoded.args, { value, dataSuffix });\n  }\n}\n", "export const oldErc721WrapperAbi = [\n  {\n    type: 'constructor',\n    inputs: [\n      { name: 'name', internalType: 'string', type: 'string' },\n      { name: 'symbol', internalType: 'string', type: 'string' },\n      { name: '_wrapped', internalType: 'address', type: 'address' },\n    ],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'spender', internalType: 'address', type: 'address' },\n      { name: 'id', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'approve',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'owner', internalType: 'address', type: 'address' }],\n    name: 'balanceOf',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    name: 'getApproved',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'address', type: 'address' },\n    ],\n    name: 'isApprovedForAll',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'name',\n    outputs: [{ name: '', internalType: 'string', type: 'string' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'id', internalType: 'uint256', type: 'uint256' }],\n    name: 'ownerOf',\n    outputs: [{ name: 'owner', internalType: 'address', type: 'address' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address' },\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'id', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'safeTransferFrom',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address' },\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'id', internalType: 'uint256', type: 'uint256' },\n      { name: 'data', internalType: 'bytes', type: 'bytes' },\n    ],\n    name: 'safeTransferFrom',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'operator', internalType: 'address', type: 'address' },\n      { name: 'approved', internalType: 'bool', type: 'bool' },\n    ],\n    name: 'setApprovalForAll',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'user', internalType: 'address', type: 'address' }],\n    name: 'stashAddress',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'stashFactory',\n    outputs: [{ name: '', internalType: 'contract Stash', type: 'address' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'interfaceId', internalType: 'bytes4', type: 'bytes4' }],\n    name: 'supportsInterface',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'symbol',\n    outputs: [{ name: '', internalType: 'string', type: 'string' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'tokenId', internalType: 'uint256', type: 'uint256' }],\n    name: 'tokenURI',\n    outputs: [{ name: '', internalType: 'string', type: 'string' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'owner', internalType: 'address', type: 'address' }],\n    name: 'tokensOfOwner',\n    outputs: [{ name: '', internalType: 'uint256[]', type: 'uint256[]' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'totalSupply',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address' },\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'id', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'transferFrom',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'tokenId', internalType: 'uint256', type: 'uint256' }],\n    name: 'unwrap',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'tokenIndexes', internalType: 'uint256[]', type: 'uint256[]' }],\n    name: 'unwrapBatch',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'tokenId', internalType: 'uint256', type: 'uint256' }],\n    name: 'wrap',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'tokenIndexes', internalType: 'uint256[]', type: 'uint256[]' }],\n    name: 'wrapBatch',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'wrapped',\n    outputs: [{ name: '', internalType: 'contract IOldERC721', type: 'address' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'owner', internalType: 'address', type: 'address', indexed: true },\n      { name: 'spender', internalType: 'address', type: 'address', indexed: true },\n      { name: 'id', internalType: 'uint256', type: 'uint256', indexed: true },\n    ],\n    name: 'Approval',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'owner', internalType: 'address', type: 'address', indexed: true },\n      { name: 'operator', internalType: 'address', type: 'address', indexed: true },\n      { name: 'approved', internalType: 'bool', type: 'bool', indexed: false },\n    ],\n    name: 'ApprovalForAll',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address', indexed: true },\n      { name: 'to', internalType: 'address', type: 'address', indexed: true },\n      { name: 'id', internalType: 'uint256', type: 'uint256', indexed: true },\n    ],\n    name: 'Transfer',\n  },\n] as const\n", "import { Address, PublicClient } from 'viem';\n\nimport { Wallet } from '@/clients/contracts';\nimport { BaseContract } from '@/clients/contracts/BaseContract';\nimport { oldErc721WrapperAbi } from '@/generated/blockchain/oldERC721Wrapper';\nimport { assertTransactionSucceeded } from '@/utils/blockchain';\n\nexport class OldERC721Wrapper extends BaseContract<typeof oldErc721WrapperAbi> {\n  constructor({\n    walletClient,\n    contractAddress,\n    publicClient,\n  }: {\n    walletClient: Wallet;\n    contractAddress: Address;\n    publicClient?: PublicClient;\n  }) {\n    super({\n      walletClient,\n      address: contractAddress,\n      abi: oldErc721WrapperAbi,\n      publicClient,\n    });\n  }\n\n  async wrapOldERC721({ tokenId }: { tokenId: bigint }) {\n    const txHash = await this.safeContractWrite.wrap([tokenId]);\n\n    return {\n      txHash,\n      waitMined: async () =>\n        assertTransactionSucceeded(await this.bcClient.waitForTransactionReceipt({ hash: txHash })),\n    };\n  }\n\n  async unwrap(tokenId: bigint) {\n    const txHash = await this.safeContractWrite.unwrap([tokenId]);\n\n    return {\n      txHash,\n      waitMined: async () =>\n        assertTransactionSucceeded(await this.bcClient.waitForTransactionReceipt({ hash: txHash })),\n    };\n  }\n}\n", "import { AbiParametersToPrimitiveTypes, ExtractAbiFunction } from 'abitype';\nimport { Address, Hex, PublicClient, zeroAddress } from 'viem';\n\nimport { Wallet } from '@/clients/contracts';\nimport { MslV5 } from '@/clients/contracts/MslV5';\nimport { MslV6 } from '@/clients/contracts/MslV6';\nimport { getContracts } from '@/deploys';\nimport { positionMigratorAbi } from '@/generated/blockchain/positionMigrator';\nimport { SECONDS_IN_HOUR } from '@/utils/dates';\nimport { getTotalOwed } from '@/utils/loan';\nimport { max } from '@/utils/number';\nimport { sanitizeTypedDataMessage } from '@/utils/typedData';\n\nimport { BaseContract } from './BaseContract';\n\ntype SmartMigrateArgs = AbiParametersToPrimitiveTypes<\n  ExtractAbiFunction<typeof positionMigratorAbi, 'smartMigrate'>['inputs']\n>[0];\n\n/**\n * This contract allows migration from one position to another.\n * We will use this to migrate V3.0 loans to V3.1 and also support\n * capital efficient refinance from offers\n */\nexport class PositionMigrator extends BaseContract<typeof positionMigratorAbi> {\n  msl: MslV6;\n\n  private getDomain() {\n    return {\n      name: 'PositionMigrator',\n      version: '1',\n      chainId: this.wallet.chain.id,\n      verifyingContract: this.address,\n    };\n  }\n\n  async signMigrationArgs({ structToSign }: { structToSign: SmartMigrateArgs['migrationArgs'] }) {\n    return this.wallet.signTypedData(\n      sanitizeTypedDataMessage({\n        domain: this.getDomain(),\n        primaryType: 'PositionMigrationArgs',\n        types: {\n          PositionMigrationArgs: [\n            { name: 'close', type: 'Position' },\n            { name: 'open', type: 'Position' },\n            { name: 'borrowArgs', type: 'AaveBorrowArgs' },\n            { name: 'approvalContract', type: 'address' },\n            { name: 'migrator', type: 'address' },\n            { name: 'nonce', type: 'uint256' },\n          ],\n          AaveBorrowArgs: [\n            { name: 'pool', type: 'address' },\n            { name: 'recipient', type: 'address' },\n            { name: 'assets', type: 'address[]' },\n            { name: 'amounts', type: 'uint256[]' },\n          ],\n          Position: [\n            { name: 'contractAddress', type: 'address' },\n            { name: 'callData', type: 'bytes' },\n            { name: 'value', type: 'uint256' },\n          ],\n        },\n        message: structToSign,\n      }),\n    );\n  }\n\n  constructor({\n    address,\n    walletClient,\n    msl,\n    publicClient,\n  }: {\n    address: Address;\n    msl: MslV6;\n    walletClient: Wallet;\n    publicClient?: PublicClient;\n  }) {\n    super({\n      walletClient,\n      address,\n      abi: positionMigratorAbi,\n      publicClient,\n    });\n    this.msl = msl;\n  }\n  async smartRenegotiation({\n    currentBalance,\n    previousMsl,\n    repaymentCalldata,\n    emitCalldata,\n  }: {\n    currentBalance: bigint;\n    previousMsl: MslV5 | MslV6;\n    repaymentCalldata: Hex;\n    emitCalldata: Hex;\n  }) {\n    const { Aave } = getContracts(this.wallet.chain);\n\n    const repaymentArgs = previousMsl.decodeRepaymentCalldata(repaymentCalldata);\n    const totalOwed = getTotalOwed(repaymentArgs.loan, BigInt(SECONDS_IN_HOUR));\n    const borrowArgs = {\n      pool: Aave,\n      recipient: this.wallet.account.address,\n      assets: [repaymentArgs.loan.principalAddress],\n      amounts: [max(0n, totalOwed - currentBalance)],\n    };\n\n    const migrationArgs = {\n      close: {\n        contractAddress: previousMsl.address,\n        callData: repaymentCalldata,\n        value: 0n,\n      },\n      open: {\n        contractAddress: this.msl.address,\n        callData: emitCalldata,\n        value: 0n,\n      },\n      borrowArgs,\n      approvalContract: zeroAddress, // unused\n      migrator: this.wallet.account.address,\n      nonce: await this.contract.read.getNonce([this.wallet.account.address]),\n    };\n\n    const txHash = await this.safeContractWrite.smartMigrate([\n      {\n        migrationArgs,\n        migratorSignature: '0x',\n      },\n    ]);\n\n    return {\n      txHash,\n      waitTxInBlock: async () => {\n        const receipt = await this.bcClient.waitForTransactionReceipt({\n          hash: txHash,\n        });\n        const events = this.parseEventLogs('SmartMigration', receipt.logs);\n        if (events.length !== 1) {\n          throw new Error('Smart Renegotiation not executed');\n        }\n        return receipt;\n      },\n    };\n  }\n}\n", "import { Address, Chain, Hash, isAddress, zeroAddress } from 'viem';\nimport { hyperliquid, mainnet, robinhood } from 'viem/chains';\n\nimport { entries } from '@/utils/object';\nimport { areSameAddress } from '@/utils/string';\n\nconst ANVIL_DEFAULT_CHAIN_ID = 31337;\n\nconst anvilChainId = (): number => {\n  const rawChainId = process.env.ANVIL_CHAIN_ID;\n  if (!rawChainId) {\n    return ANVIL_DEFAULT_CHAIN_ID;\n  }\n  const parsedChainId = Number(rawChainId);\n  return Number.isNaN(parsedChainId) ? ANVIL_DEFAULT_CHAIN_ID : parsedChainId;\n};\n\ninterface Contracts {\n  MultiSourceLoan: {\n    '1': Address;\n    '2': Address;\n    '3': Address;\n    '3.1': Address;\n    '3.2': Address;\n  };\n  AuctionLoanLiquidator: {\n    '1': Address;\n    '2': Address;\n    '3': Address;\n    '3.1': Address;\n    '3.2': Address;\n  };\n  UserVault: {\n    '2': Address;\n    '3': Address;\n  };\n  PurchaseBundler: {\n    '2': Address;\n    '3': Address;\n    '3.1': Address;\n    '3.1_PB_V2': Address;\n    '3.2': Address;\n  };\n  Seaport: Address;\n  Aave: Address;\n  PositionMigrator: Address;\n  MigratorManager: Address;\n  MethodManager: Address;\n  UniversalRouter: Address;\n  Permit2: Address;\n  UniswapQuoterV2: Address;\n  Cryptopunks: Address;\n  Cryptopunks721: Address;\n}\n\ninterface ApiKeys {\n  infuraApiKey: string;\n}\n\ninterface Currencies {\n  WETH_ADDRESS: Address;\n  ETH_ADDRESS: Address;\n  USDC_ADDRESS: Address;\n}\n\nconst ensureAddress = (value: string | undefined): Address | null => {\n  if (!value || !isAddress(value)) {\n    return null;\n  }\n  return value;\n};\n\nexport const MSL_V5_TX_HASH =\n  '0xb6dfcbc1661d0c0bced9591d06e964f97d41a35984704ffe61f8e062e43919c8' as Hash;\n\n/**\n * Built per call so the GONDI_* environment overrides and the ANVIL_CHAIN_ID\n * override are read when contracts are needed instead of being snapshotted at\n * module load, which runs before host apps can populate them. ANVIL_CHAIN_ID\n * lets multi-instance local dev environments run their anvil fork on a chain\n * id other than the default 31337.\n */\nconst buildContractsByChain = (): Record<number, Contracts> => ({\n  [anvilChainId()]: {\n    PositionMigrator: ensureAddress(process.env.GONDI_POSITION_MIGRATOR) ?? zeroAddress,\n    MigratorManager: ensureAddress(process.env.GONDI_MIGRATOR_MANAGER) ?? zeroAddress,\n    MethodManager: ensureAddress(process.env.GONDI_METHOD_MANAGER) ?? zeroAddress,\n    UniversalRouter: ensureAddress(process.env.GONDI_UNIVERSAL_ROUTER) ?? zeroAddress,\n    Permit2: ensureAddress(process.env.GONDI_PERMIT2) ?? zeroAddress,\n    UniswapQuoterV2: ensureAddress(process.env.GONDI_UNISWAP_QUOTER_V2) ?? zeroAddress,\n    MultiSourceLoan: {\n      '1':\n        ensureAddress(process.env.GONDI_MULTI_SOURCE_LOAN_V4) ??\n        '0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9',\n      '2':\n        ensureAddress(process.env.GONDI_MULTI_SOURCE_LOAN_V5) ??\n        '0x610178dA211FEF7D417bC0e6FeD39F05609AD788',\n      '3':\n        ensureAddress(process.env.GONDI_MULTI_SOURCE_LOAN_V6) ??\n        '0x4ed7c70F96B99c776995fB64377f0d4aB3B0e1C1',\n      '3.1':\n        ensureAddress(process.env.GONDI_MULTI_SOURCE_LOAN_V7) ??\n        '0x95401dc811bb5740090279Ba06cfA8fcF6113778',\n      '3.2':\n        ensureAddress(process.env.GONDI_MULTI_SOURCE_LOAN_V8) ??\n        '0x1429859428C0aBc9C2C47C8Ee9FBaf82cFA0F20f',\n    },\n    AuctionLoanLiquidator: {\n      '1':\n        ensureAddress(process.env.GONDI_AUCTION_LOAN_LIQUIDATOR_V4) ??\n        '0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0',\n      '2':\n        ensureAddress(process.env.GONDI_AUCTION_LOAN_LIQUIDATOR_V5) ??\n        '0x8A791620dd6260079BF849Dc5567aDC3F2FdC318',\n      '3':\n        ensureAddress(process.env.GONDI_AUCTION_LOAN_LIQUIDATOR_V6) ??\n        '0x59b670e9fA9D0A427751Af201D676719a970857b',\n      '3.1':\n        ensureAddress(process.env.GONDI_AUCTION_LOAN_LIQUIDATOR_V7) ??\n        '0xf5059a5D33d5853360D16C683c16e67980206f36',\n      '3.2':\n        ensureAddress(process.env.GONDI_AUCTION_LOAN_LIQUIDATOR_V8) ??\n        '0xcbEAF3BDe82155F56486Fb5a1072cb8baAf547cc',\n    },\n    UserVault: {\n      '2':\n        ensureAddress(process.env.GONDI_USER_VAULT_V5) ??\n        '0x0DCd1Bf9A1b36cE34237eEaFef220932846BCD82',\n      '3':\n        ensureAddress(process.env.GONDI_USER_VAULT_V6) ??\n        '0x09635F643e140090A9A8Dcd712eD6285858ceBef',\n    },\n    PurchaseBundler: {\n      '2':\n        ensureAddress(process.env.GONDI_PURCHASE_BUNDLER_V5) ??\n        '0xE6E340D132b5f46d1e472DebcD681B2aBc16e57E',\n      '3':\n        ensureAddress(process.env.GONDI_PURCHASE_BUNDLER_V6) ??\n        '0x7a2088a1bFc9d81c55368AE168C2C02570cB814F',\n      '3.1':\n        ensureAddress(process.env.GONDI_PURCHASE_BUNDLER_V7) ??\n        '0x70e0bA845a1A0F2DA3359C97E0285013525FFC49',\n      '3.1_PB_V2':\n        ensureAddress(process.env.GONDI_PURCHASE_BUNDLER_V7_PB_V2) ??\n        '0x1291Be112d480055DaFd8a610b7d1e203891C274',\n      '3.2':\n        ensureAddress(process.env.GONDI_PURCHASE_BUNDLER_V8) ??\n        '0x1fA02b2d6A771842690194Cf62D91bdd92BfE28d',\n    },\n    Seaport:\n      ensureAddress(process.env.GONDI_SEAPORT) ?? '0x0000000000000068F116a894984e2DB1123eB395',\n    Aave: ensureAddress(process.env.GONDI_AAVE) ?? '0x87870bca3f3fd6335c3f4ce8392d69350b4fa4e2',\n    Cryptopunks:\n      ensureAddress(process.env.CRYPTOPUNKS) ?? '0xb47e3cd837ddf8e4c57f05d70ab865de6e193bbb',\n    Cryptopunks721:\n      ensureAddress(process.env.CRYPTOPUNKS_721) ?? '0x000000000000003607fce1ac9e043a86675c5c2f',\n  },\n  [mainnet.id]: {\n    PositionMigrator: '0xDCd85fEe491De4B1fc11CbC0Ba0e78537732f5b8',\n    MigratorManager: '0x8FB98cC4999de00f6ACe797A195381C0b90C1487',\n    MethodManager: '0x4eCC15Ded6E2EB38cCE6B0bD0bb0E417813F8f09',\n    UniversalRouter: '0x66a9893cc07d91d95644aedd05d03f95e1dba8af',\n    Permit2: '0x000000000022D473030F116dDEE9F6B43aC78BA3',\n    UniswapQuoterV2: '0x61fFE014bA17989E743c5F6cB21bF9697530B21e',\n    MultiSourceLoan: {\n      '1': '0xCa5a494Ca20483e21ec1E41FE1D9461Da77595Bd',\n      '2': '0x478f6F994C6fb3cf3e444a489b3AD9edB8cCaE16',\n      '3': '0xf65b99ce6dc5f6c556172bcc0ff27d3665a7d9a8',\n      '3.1': '0xf41B389E0C1950dc0B16C9498eaE77131CC08A56',\n      '3.2': '0xE365fF3cad44d19cb7aBa81df8ffd6818A66Ac0a',\n    },\n    AuctionLoanLiquidator: {\n      '1': '0x237e4421C742d843Fdd96D22294D338507e17091',\n      '2': '0x97d34635b605c2f1630d6b4c6c5d222b8a2ca47d',\n      '3': '0x2995ae7233fa89b314b5a707465b57a582f440f0',\n      '3.1': '0x2995ae7233fa89b314b5a707465b57a582f440f0',\n      '3.2': '0xe6Ef33216348dDb2303a19Bb970e83d6508FabA5',\n    },\n    UserVault: {\n      '2': '0x14a6Dcebb2Bb73aae1b199CCAadA75247b81976D',\n      '3': '0x823dE2c44369e94CAc3DA789Ad4b6493e27e4Bfe',\n    },\n    PurchaseBundler: {\n      '2': '0x3b59bffe109e0f33f20887343759a98b48ecdf5f',\n      '3': '0xcea7eea12c6fc82d0318704b9d35a4192c2d260a',\n      '3.1': zeroAddress, // This is not used in favour of 3.1_PB_V2\n      '3.1_PB_V2': '0xf46a58cada29ff34cf62f72357d2b37815506feb',\n      '3.2': '0x2B5E66c44B223b9D3B192e697F58795febCd6C10',\n    },\n    Seaport: '0x0000000000000068F116a894984e2DB1123eB395',\n    Aave: '0x87870bca3f3fd6335c3f4ce8392d69350b4fa4e2',\n    Cryptopunks: '0xb47e3cd837ddf8e4c57f05d70ab865de6e193bbb',\n    Cryptopunks721: '0x000000000000003607fce1ac9e043a86675c5c2f',\n  },\n  [hyperliquid.id]: {\n    PositionMigrator: zeroAddress,\n    MigratorManager: zeroAddress,\n    MethodManager: zeroAddress,\n    UniversalRouter: zeroAddress,\n    Permit2: zeroAddress,\n    UniswapQuoterV2: zeroAddress,\n    MultiSourceLoan: {\n      '1': zeroAddress,\n      '2': zeroAddress,\n      '3': zeroAddress,\n      '3.1': '0x6ad675624ec8320e5806858cd5db101a0b927fd9',\n      '3.2': zeroAddress,\n    },\n    AuctionLoanLiquidator: {\n      '1': zeroAddress,\n      '2': zeroAddress,\n      '3': zeroAddress,\n      '3.1': '0xb166ec953fef89c6ee2e39e60fbd49b19cf4c6ad',\n      '3.2': zeroAddress,\n    },\n    UserVault: {\n      '2': zeroAddress,\n      '3': '0x3f26ff30061d5a6777a01d7843b5f2b81f60a7ee',\n    },\n    PurchaseBundler: {\n      '2': zeroAddress,\n      '3': zeroAddress,\n      '3.1': '0xfaaff69da43b8195e5b0945c4fea4476e4264157',\n      '3.1_PB_V2': zeroAddress, // Hyperevm does not support PurchaseBundlerV2\n      '3.2': zeroAddress,\n    },\n    Seaport: '0x0000000000000068F116a894984e2DB1123eB395',\n    Aave: zeroAddress,\n    Cryptopunks: zeroAddress,\n    Cryptopunks721: zeroAddress,\n  },\n  [robinhood.id]: {\n    PositionMigrator: zeroAddress,\n    MigratorManager: zeroAddress,\n    MethodManager: zeroAddress,\n    UniversalRouter: zeroAddress,\n    Permit2: zeroAddress,\n    UniswapQuoterV2: zeroAddress,\n    MultiSourceLoan: {\n      '1': zeroAddress,\n      '2': zeroAddress,\n      '3': zeroAddress,\n      '3.1': '0x0e79e08e9E35388382b7FebB26Bc73F80465e2fB',\n      '3.2': zeroAddress,\n    },\n    AuctionLoanLiquidator: {\n      '1': zeroAddress,\n      '2': zeroAddress,\n      '3': zeroAddress,\n      '3.1': '0xF4b2c5735247c74F40D7505EF2B5bA368651A5C8',\n      '3.2': zeroAddress,\n    },\n    UserVault: {\n      '2': zeroAddress,\n      '3': '0xcf0DF26aE14D132084E95EE8a9426d53eb027cb7',\n    },\n    PurchaseBundler: {\n      '2': zeroAddress,\n      '3': zeroAddress,\n      '3.1': zeroAddress, // This is not used in favour of 3.1_PB_V2\n      '3.1_PB_V2': '0xfa13dfde6fdf37A2CB4151195f95940285F70754',\n      '3.2': zeroAddress,\n    },\n    Seaport: '0x0000000000000068F116a894984e2DB1123eB395',\n    Aave: zeroAddress,\n    Cryptopunks: zeroAddress,\n    Cryptopunks721: zeroAddress,\n  },\n});\n\nexport const getContracts = (chain: Pick<Chain, 'id'>): Contracts => {\n  const contracts = buildContractsByChain()[chain.id];\n  if (!contracts) {\n    throw new Error(`No contracts found for chain ${chain.id}`);\n  }\n  return contracts;\n};\n\nconst findDeployedVersion = <Version extends string>(\n  deployments: Record<Version, Address>,\n  address: Address,\n) =>\n  entries(deployments).find(\n    ([_, versionAddress]) =>\n      !areSameAddress(versionAddress, zeroAddress) && areSameAddress(versionAddress, address),\n  )?.[0];\n\nexport const getVersionFromMslAddress = (chain: Pick<Chain, 'id'>, address: Address) => {\n  const version = findDeployedVersion(getContracts(chain).MultiSourceLoan, address);\n  if (!version) {\n    throw new Error(`No version found for MSL contract ${address}`);\n  }\n  return version;\n};\n\nexport const getVersionFromPurchaseBundlerAddress = (\n  chain: Pick<Chain, 'id'>,\n  address: Address,\n) => {\n  const version = findDeployedVersion(getContracts(chain).PurchaseBundler, address);\n  if (!version) {\n    throw new Error(`No version found for PurchaseBundler contract ${address}`);\n  }\n  return version;\n};\n\nexport const getVersionFromUserVaultAddress = (chain: Pick<Chain, 'id'>, address: Address) => {\n  const version = findDeployedVersion(getContracts(chain).UserVault, address);\n  if (!version) {\n    throw new Error(`No version found for UserVault contract ${address}`);\n  }\n  return version;\n};\n\nexport const getApiKeys = (): ApiKeys => ({\n  infuraApiKey: '9b7006cb0b0b42f1813ae9418741fbb5',\n});\n\nconst buildCurrenciesByChain = (): Record<number, Currencies> => ({\n  // Anvil forks mainnet, so it shares mainnet's currencies.\n  [anvilChainId()]: {\n    WETH_ADDRESS: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',\n    ETH_ADDRESS: zeroAddress,\n    USDC_ADDRESS: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',\n  },\n  [mainnet.id]: {\n    WETH_ADDRESS: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',\n    ETH_ADDRESS: zeroAddress,\n    USDC_ADDRESS: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',\n  },\n  [hyperliquid.id]: {\n    WETH_ADDRESS: '0x5555555555555555555555555555555555555555',\n    ETH_ADDRESS: zeroAddress,\n    USDC_ADDRESS: '0xb88339CB7199b77E23DB6E890353E22632Ba630f',\n  },\n  [robinhood.id]: {\n    WETH_ADDRESS: '0x0Bd7D308f8E1639FAb988df18A8011f41EAcAD73',\n    ETH_ADDRESS: zeroAddress,\n    USDC_ADDRESS: '0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168', // It's USDG\n  },\n});\n\n/**\n * Well-known currency addresses for a chain. Defaults to mainnet for\n * backwards compatibility. `USDC_ADDRESS` carries the chain's dollar stable\n * (USDG on Robinhood Chain, where no viable USDC exists).\n */\nexport const getCurrencies = (chain: Pick<Chain, 'id'> = mainnet): Currencies => {\n  const currencies = buildCurrenciesByChain()[chain.id];\n  if (!currencies) {\n    throw new Error(`No currencies found for chain ${chain.id}`);\n  }\n  return currencies;\n};\n", "/** overloaded version of Object.fromEntries that allows correct type inference */\nexport const fromEntries = <T extends string | number, S>(entries: [T, S][]): Record<T, S> =>\n  entries.reduce((acc, [key, value]) => ({ ...acc, [key]: value }), {} as Record<T, S>);\n\n/** overloaded version of Object.entries that allows correct type inference */\nexport const entries = <T extends string | number, S>(obj: Record<T, S>): [T, S][] =>\n  Object.entries(obj) as [T, S][];\n", "export const positionMigratorAbi = [\n  {\n    \"type\": \"constructor\",\n    \"inputs\": [\n      {\n        \"name\": \"_name\",\n        \"type\": \"string\",\n        \"internalType\": \"string\"\n      },\n      {\n        \"name\": \"addressManager\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"aaveAddressProvider\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      }\n    ],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"DOMAIN_SEPARATOR\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"bytes32\",\n        \"internalType\": \"bytes32\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"INITIAL_DOMAIN_SEPARATOR\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"bytes32\",\n        \"internalType\": \"bytes32\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"VERSION\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"bytes\",\n        \"internalType\": \"bytes\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"executeOperation\",\n    \"inputs\": [\n      {\n        \"name\": \"assets\",\n        \"type\": \"address[]\",\n        \"internalType\": \"address[]\"\n      },\n      {\n        \"name\": \"amounts\",\n        \"type\": \"uint256[]\",\n        \"internalType\": \"uint256[]\"\n      },\n      {\n        \"name\": \"premiums\",\n        \"type\": \"uint256[]\",\n        \"internalType\": \"uint256[]\"\n      },\n      {\n        \"name\": \"initiator\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"params\",\n        \"type\": \"bytes\",\n        \"internalType\": \"bytes\"\n      }\n    ],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"bool\",\n        \"internalType\": \"bool\"\n      }\n    ],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"getNonce\",\n    \"inputs\": [\n      {\n        \"name\": \"account\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      }\n    ],\n    \"outputs\": [\n      {\n        \"name\": \"nonce\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"name\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"string\",\n        \"internalType\": \"string\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"smartMigrate\",\n    \"inputs\": [\n      {\n        \"name\": \"args\",\n        \"type\": \"tuple\",\n        \"internalType\": \"struct IPositionMigrator.SmartMigrationArgs\",\n        \"components\": [\n          {\n            \"name\": \"migrationArgs\",\n            \"type\": \"tuple\",\n            \"internalType\": \"struct IPositionMigrator.PositionMigrationArgs\",\n            \"components\": [\n              {\n                \"name\": \"close\",\n                \"type\": \"tuple\",\n                \"internalType\": \"struct IPositionMigrator.Position\",\n                \"components\": [\n                  {\n                    \"name\": \"contractAddress\",\n                    \"type\": \"address\",\n                    \"internalType\": \"address\"\n                  },\n                  {\n                    \"name\": \"callData\",\n                    \"type\": \"bytes\",\n                    \"internalType\": \"bytes\"\n                  },\n                  {\n                    \"name\": \"value\",\n                    \"type\": \"uint256\",\n                    \"internalType\": \"uint256\"\n                  }\n                ]\n              },\n              {\n                \"name\": \"open\",\n                \"type\": \"tuple\",\n                \"internalType\": \"struct IPositionMigrator.Position\",\n                \"components\": [\n                  {\n                    \"name\": \"contractAddress\",\n                    \"type\": \"address\",\n                    \"internalType\": \"address\"\n                  },\n                  {\n                    \"name\": \"callData\",\n                    \"type\": \"bytes\",\n                    \"internalType\": \"bytes\"\n                  },\n                  {\n                    \"name\": \"value\",\n                    \"type\": \"uint256\",\n                    \"internalType\": \"uint256\"\n                  }\n                ]\n              },\n              {\n                \"name\": \"borrowArgs\",\n                \"type\": \"tuple\",\n                \"internalType\": \"struct IPositionMigrator.AaveBorrowArgs\",\n                \"components\": [\n                  {\n                    \"name\": \"pool\",\n                    \"type\": \"address\",\n                    \"internalType\": \"contract IPool\"\n                  },\n                  {\n                    \"name\": \"recipient\",\n                    \"type\": \"address\",\n                    \"internalType\": \"address\"\n                  },\n                  {\n                    \"name\": \"assets\",\n                    \"type\": \"address[]\",\n                    \"internalType\": \"address[]\"\n                  },\n                  {\n                    \"name\": \"amounts\",\n                    \"type\": \"uint256[]\",\n                    \"internalType\": \"uint256[]\"\n                  }\n                ]\n              },\n              {\n                \"name\": \"approvalContract\",\n                \"type\": \"address\",\n                \"internalType\": \"address\"\n              },\n              {\n                \"name\": \"migrator\",\n                \"type\": \"address\",\n                \"internalType\": \"address\"\n              },\n              {\n                \"name\": \"nonce\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              }\n            ]\n          },\n          {\n            \"name\": \"migratorSignature\",\n            \"type\": \"bytes\",\n            \"internalType\": \"bytes\"\n          }\n        ]\n      }\n    ],\n    \"outputs\": [],\n    \"stateMutability\": \"payable\"\n  },\n  {\n    \"type\": \"event\",\n    \"name\": \"SmartMigration\",\n    \"inputs\": [\n      {\n        \"name\": \"closeContract\",\n        \"type\": \"address\",\n        \"indexed\": false,\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"openContract\",\n        \"type\": \"address\",\n        \"indexed\": false,\n        \"internalType\": \"address\"\n      }\n    ],\n    \"anonymous\": false\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"ECDSAInvalidSignature\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"ECDSAInvalidSignatureLength\",\n    \"inputs\": [\n      {\n        \"name\": \"length\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ]\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"ECDSAInvalidSignatureS\",\n    \"inputs\": [\n      {\n        \"name\": \"s\",\n        \"type\": \"bytes32\",\n        \"internalType\": \"bytes32\"\n      }\n    ]\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"InvalidNonceError\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"InvalidPoolFlowError\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"InvalidSignatureError\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"NotWhitelistedAddressError\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"TargetContractCallFailed\",\n    \"inputs\": []\n  }\n] as const;\n", "const PERCENTAGE = 100;\n\nexport const toInteger = (bn: bigint | number): number => Number(bn.valueOf());\n\nexport const bpsToPercentage = (bps: bigint | number) => toInteger(bps) / 10000;\n\nexport const perToBps = (percent: number): number => Math.floor(percent * PERCENTAGE);\n\nexport const bpsToPer = (bps: bigint | number): number => Number(bps) / PERCENTAGE;\n\nexport const floatToBigInt = (number: number, decimals: number) => {\n  const decimalPart = number % 1;\n  const integerPart = BigInt(number - decimalPart);\n  return integerPart * 10n ** BigInt(decimals) + BigInt(Math.floor(decimalPart * 10 ** decimals));\n};\n\ntype ObjectT<T extends string> = { [k in T]: number | bigint };\ntype ObjectValue<T extends string, O extends ObjectT<T>> = O extends { [k in T]: infer R }\n  ? R | undefined\n  : undefined;\n\nexport const sumBy = <T extends string, O extends ObjectT<T>>(\n  array: readonly O[],\n  key: T,\n): ObjectValue<T, O> => {\n  if (!array.length) return undefined as ObjectValue<T, O>;\n  if (typeof array[0]?.[key] === 'bigint')\n    return array.reduce((acc, item) => acc + BigInt(item[key]), 0n) as ObjectValue<T, O>;\n  return array.reduce((acc, item) => acc + Number(item[key]), 0) as ObjectValue<T, O>;\n};\n\nexport const sumBigInt = (...a: bigint[]) => {\n  return a.reduce<bigint>((sum, cur) => sum + cur, 0n);\n};\n\nexport const maxBy = <T extends string, O extends ObjectT<T>>(\n  array: readonly O[],\n  key: T,\n): ObjectValue<T, O> => {\n  if (!array.length) return undefined as ObjectValue<T, O>;\n  if (typeof array[0]?.[key] === 'bigint')\n    return array.reduce(\n      (acc, item) => (BigInt(item[key]) > acc ? BigInt(item[key]) : acc),\n      0n,\n    ) as ObjectValue<T, O>;\n  return array.reduce(\n    (acc, item) => (Number(item[key]) > acc ? Number(item[key]) : acc),\n    0,\n  ) as ObjectValue<T, O>;\n};\n\ntype MinFunction = {\n  <T extends number | bigint>(a: T, b: T): T;\n  <T extends number | bigint>(a: T, b?: T): T;\n  <T extends number | bigint>(a?: T, b?: T): T | undefined;\n};\nexport const min: MinFunction = <T extends number | bigint>(a?: T, b?: T) => {\n  if (a === undefined) return b;\n  if (b === undefined) return a;\n  return a < b ? a : b;\n};\n\ntype MaxFunction = {\n  <T extends number | bigint>(a: T, b: T): T;\n  <T extends number | bigint>(a: T, b?: T): T;\n  <T extends number | bigint>(a?: T, b?: T): T | undefined;\n};\nexport const max: MaxFunction = <T extends number | bigint>(a?: T, b?: T) => {\n  if (a === undefined) return b;\n  if (b === undefined) return a;\n  return a < b ? b : a;\n};\n\nexport const mulDivUp = (a: bigint, b: bigint, c: bigint) => (a * b + c - 1n) / c;\n\nexport const mulDivDown = (a: bigint, b: bigint, c: bigint) => (a * b) / c;\n", "import { toInteger } from '@/utils/number';\n\nexport const SECONDS_IN_MIN = 60;\nexport const SECONDS_IN_HOUR = SECONDS_IN_MIN * 60;\nexport const SECONDS_IN_DAY = SECONDS_IN_HOUR * 24;\nexport const DAYS_IN_YEAR = 365;\nexport const SECONDS_IN_YEAR = SECONDS_IN_DAY * DAYS_IN_YEAR;\n\nexport const millisToSeconds = (millis: number | bigint) => Math.ceil(toInteger(millis) / 1_000);\nexport const secondsToMillis = (seconds: number | bigint) => toInteger(seconds) * 1_000;\nexport const daysToSeconds = (days: number | bigint) => toInteger(days) * SECONDS_IN_DAY;\nexport const secondsToDays = (seconds: number | bigint) =>\n  toInteger(Number(seconds) / SECONDS_IN_DAY);\n\ntype Seconds = bigint;\nexport const toDate = (date: Seconds | Date) =>\n  typeof date === 'bigint' ? new Date(secondsToMillis(date)) : date;\n", "import { Address, isAddress } from 'viem';\n\nimport { LoanV4, LoanV5, LoanV6, zeroAddress } from '@/blockchain';\nimport { getVersionFromMslAddress } from '@/deploys';\nimport * as model from '@/model';\nimport { millisToSeconds, SECONDS_IN_YEAR, secondsToMillis, toDate } from '@/utils/dates';\nimport { maxBy, mulDivUp, sumBigInt } from '@/utils/number';\nimport { areSameAddress } from '@/utils/string';\nimport { Optional } from '@/utils/types';\n\nexport const BPS = 10000n;\n\nexport const renegotiationToMslRenegotiation = (\n  renegotiation: model.RenegotiationOffer,\n  loanId: bigint,\n) => ({\n  ...renegotiation,\n  loanId,\n  strictImprovement: renegotiation.strictImprovement ?? false,\n  lender: renegotiation.lenderAddress,\n  signer: renegotiation.signerAddress ?? zeroAddress,\n  fee: renegotiation.feeAmount,\n  trancheIndex: renegotiation.trancheIndex ?? [],\n  targetPrincipal: renegotiation.targetPrincipal ?? [],\n});\n\nexport type LoanToMslLoanType =\n  | Optional<LoanV4, 'nftCollateralAddress'>\n  | Optional<LoanV5, 'nftCollateralAddress'>\n  | Optional<LoanV6, 'nftCollateralAddress'>;\n\nexport const loanToMslLoan = (loan: LoanToMslLoanType) => {\n  const nftCollateralAddress = loan.nftCollateralAddress ?? zeroAddress;\n  if (areSameAddress(zeroAddress, nftCollateralAddress) || !isAddress(nftCollateralAddress)) {\n    throw new Error('nftCollateralAddress is required');\n  }\n  let source;\n  if ('source' in loan) {\n    // Filling floor in sources to match types, but it's unused by V1/V2\n    source = loan.source.map((s) => ({\n      ...s,\n      floor: 0n,\n    }));\n  } else {\n    source = loan.tranche;\n  }\n\n  let protocolFee;\n  if ('protocolFee' in loan) {\n    protocolFee = loan.protocolFee;\n  } else {\n    protocolFee = 0n;\n  }\n\n  // Patch start and duration to match contract values\n  const dateStartTime = toDate(loan.startTime);\n  const dateContractStartTime =\n    'contractStartTime' in loan ? toDate(loan.contractStartTime) : dateStartTime;\n  const millisDelta = dateContractStartTime.getTime() - dateStartTime.getTime();\n  const duration = loan.duration - BigInt(millisToSeconds(millisDelta));\n  const startTime = BigInt(millisToSeconds(dateContractStartTime.getTime()));\n\n  return {\n    ...loan,\n    startTime,\n    contractStartTime: startTime,\n    duration,\n    nftCollateralAddress,\n    source,\n    tranche: source,\n    protocolFee,\n    // Required to encode Loan structs from contract version 3.2; older loans ignore it.\n    lenderRefinanceDisabled:\n      'lenderRefinanceDisabled' in loan ? loan.lenderRefinanceDisabled : false,\n  };\n};\n\nexport const getMslLoanId = (loan: LoanToMslLoanType) => {\n  const mslLoan = loanToMslLoan(loan);\n  return maxBy(mslLoan.source, 'loanId') ?? 0n;\n};\n\nexport const getRemainingSeconds = (loan: Pick<LoanToMslLoanType, 'startTime' | 'duration'>) => {\n  const now = new Date();\n  const finishDate = new Date(secondsToMillis(loan.startTime) + secondsToMillis(loan.duration));\n  if (finishDate.getTime() < now.getTime()) return 0;\n  return millisToSeconds(finishDate.getTime() - now.getTime());\n};\n\nexport const isLoanVersion = (address: Address, chainId: number) => {\n  const version = getVersionFromMslAddress({ id: chainId }, address);\n  return {\n    isV1: version === '1',\n    isV2: version === '2',\n    isV3: version === '3',\n    isV3_1: version === '3.1',\n    isV3_2: version === '3.2',\n  };\n};\n\ninterface TrancheOwed {\n  principalAmount: bigint;\n  accruedInterest: bigint;\n  aprBps: bigint;\n  startTime: bigint;\n}\n\nexport const getTotalOwed = (\n  loan: { tranche: readonly TrancheOwed[] } | { source: readonly TrancheOwed[] },\n  bufferSeconds: bigint,\n) => {\n  return getTotalOwedAt(loan, BigInt(millisToSeconds(Date.now())) + bufferSeconds);\n};\n\n/** Computes total repayment at a block timestamp, rounding interest up for each tranche. */\nexport const getTotalOwedAt = (\n  loan: { tranche: readonly TrancheOwed[] } | { source: readonly TrancheOwed[] },\n  timestamp: bigint,\n) => {\n  return sumBigInt(\n    ...('tranche' in loan ? loan.tranche : loan.source).map(\n      (source) => source.principalAmount + source.accruedInterest + getInterest(source, timestamp),\n    ),\n  );\n};\n\n/** Rounds each tranche's interest up, with no accrual before its start time. */\nconst getInterest = (source: TrancheOwed, timestamp: bigint) =>\n  mulDivUp(\n    source.principalAmount * source.aprBps,\n    timestamp > source.startTime ? timestamp - source.startTime : 0n,\n    BPS * BigInt(SECONDS_IN_YEAR),\n  );\n", "type TypedDataField = { name: string; type: string };\n\ntype TypedDataTypes = Record<string, readonly TypedDataField[]>;\n\n/** EIP-712 array suffix ending a type name: `[]` or `[N]`, as in `OfferExecution[]` / `bytes32[3]`. */\nconst ARRAY_SUFFIX_REGEX = /\\[\\d*\\]$/;\n\nconst pickTypedFields = (value: unknown, type: string, types: TypedDataTypes): unknown => {\n  if (ARRAY_SUFFIX_REGEX.test(type) && Array.isArray(value)) {\n    const elementType = type.replace(ARRAY_SUFFIX_REGEX, '');\n    return value.map((element) => pickTypedFields(element, elementType, types));\n  }\n  const fields = types[type];\n  if (!fields || typeof value !== 'object' || value === null) return value;\n  const struct = value as Record<string, unknown>;\n  return Object.fromEntries(\n    fields.map((field) => [field.name, pickTypedFields(struct[field.name], field.type, types)]),\n  );\n};\n\n/**\n * Returns the sign typed data parameters with the message reduced to the fields declared in\n * `types`, recursing into nested structs and arrays.\n *\n * Extra properties do not change the EIP-712 hash, but they are serialized into the\n * `eth_signTypedData_v4` request, so wallets display them and wallet security checks scan them:\n * Rabby warns that \"the transaction is not associated with the website that initiated it\" when a\n * URL anywhere in the payload does not match the connected site. Structs assembled by spreading\n * API objects (offers carrying nested NFT and collection data) must therefore be stripped before\n * reaching the wallet.\n */\nexport const sanitizeTypedDataMessage = <\n  const TParameters extends {\n    primaryType: string;\n    types: TypedDataTypes;\n    message: Record<string, unknown>;\n  },\n>(\n  parameters: TParameters,\n): TParameters => ({\n  ...parameters,\n  message: pickTypedFields(\n    parameters.message,\n    parameters.primaryType,\n    parameters.types,\n  ) as TParameters['message'],\n});\n", "import { Address, decodeAbiParameters, Hex, PublicClient } from 'viem';\n\nimport { Wallet } from '@/clients/contracts';\nimport { MslV5 } from '@/clients/contracts/MslV5';\nimport { MslV6 } from '@/clients/contracts/MslV6';\nimport { getContracts } from '@/deploys';\nimport { purchaseBundlerAbi } from '@/generated/blockchain/v6';\n\nimport { BaseContract } from './BaseContract';\n\nexport class PurchaseBundlerV1 extends BaseContract<typeof purchaseBundlerAbi> {\n  msl: MslV5 | MslV6;\n\n  constructor({\n    address,\n    walletClient,\n    msl,\n    publicClient,\n  }: {\n    address: Address;\n    msl: MslV5 | MslV6;\n    walletClient: Wallet;\n    publicClient?: PublicClient;\n  }) {\n    super({\n      walletClient,\n      address,\n      abi: purchaseBundlerAbi,\n      publicClient,\n    });\n    this.msl = msl;\n  }\n\n  static EXECUTION_INFO = {\n    name: 'executionInfo',\n    type: 'tuple',\n    components: [\n      {\n        name: 'reservoirExecutionInfo',\n        type: 'tuple',\n        components: [\n          { name: 'module', type: 'address' },\n          { name: 'data', type: 'bytes' },\n          { name: 'value', type: 'uint256' },\n        ],\n      },\n      { name: 'contractMustBeOwner', type: 'bool' },\n    ],\n  } as const;\n\n  async buy({ emitCalldata, value }: { emitCalldata: Hex; value: bigint }) {\n    const txHash = await this.safeContractWrite.buy([[emitCalldata]], { value });\n\n    return {\n      txHash,\n      waitTxInBlock: async () => {\n        const receipt = await this.bcClient.waitForTransactionReceipt({\n          hash: txHash,\n        });\n        const events = this.parseEventLogs('BNPLLoansStarted', receipt.logs);\n        if (events.length !== 1) {\n          throw new Error('Buy not executed');\n        }\n        return receipt;\n      },\n    };\n  }\n\n  async sell({ repaymentCalldata }: { repaymentCalldata: Hex }) {\n    const txHash = await this.safeContractWrite.sell([[repaymentCalldata]]);\n\n    return {\n      txHash,\n      waitTxInBlock: async () => {\n        const receipt = await this.bcClient.waitForTransactionReceipt({\n          hash: txHash,\n        });\n        const events = this.parseEventLogs('SellAndRepayExecuted', receipt.logs);\n        if (events.length !== 1) {\n          throw new Error('Sell and Repay not executed');\n        }\n        return receipt;\n      },\n    };\n  }\n\n  async executeSell({ repaymentCalldata, price }: { repaymentCalldata: Hex; price: bigint }) {\n    const repaymentArgs = this.msl.decodeRepaymentCalldata(repaymentCalldata);\n\n    const callbackData = decodeAbiParameters(\n      [PurchaseBundlerV1.EXECUTION_INFO],\n      repaymentArgs.data.callbackData,\n    );\n\n    const { principalAddress, nftCollateralAddress, nftCollateralTokenId } = repaymentArgs.loan;\n\n    const txHash = await this.safeContractWrite.executeSell([\n      [principalAddress],\n      [price],\n      [nftCollateralAddress],\n      [nftCollateralTokenId],\n      callbackData[0].reservoirExecutionInfo.module,\n      [repaymentCalldata],\n    ]);\n\n    return {\n      txHash,\n      waitTxInBlock: async () => {\n        const receipt = await this.bcClient.waitForTransactionReceipt({\n          hash: txHash,\n        });\n        const events = this.parseEventLogs('SellAndRepayExecuted', receipt.logs);\n        if (events.length !== 1) {\n          throw new Error('Sell and Repay not executed');\n        }\n        return receipt;\n      },\n    };\n  }\n\n  async executeSellWithLoan({\n    repaymentCalldata,\n    emitCalldata,\n    price,\n  }: {\n    repaymentCalldata: Hex;\n    emitCalldata: Hex;\n    price: bigint;\n  }) {\n    const { Aave } = getContracts(this.wallet.chain);\n    const repaymentArgs = this.msl.decodeRepaymentCalldata(repaymentCalldata);\n\n    const callbackData = decodeAbiParameters(\n      [PurchaseBundlerV1.EXECUTION_INFO],\n      repaymentArgs.data.callbackData,\n    );\n\n    const { principalAddress, nftCollateralAddress, nftCollateralTokenId } = repaymentArgs.loan;\n\n    const txHash = await this.safeContractWrite.executeSellWithLoan([\n      {\n        borrowArgs: {\n          pool: Aave,\n          assets: [principalAddress],\n          amounts: [price],\n        },\n        executeSellArgs: {\n          currencies: [principalAddress],\n          currencyAmounts: [price],\n          collections: [nftCollateralAddress],\n          tokenIds: [nftCollateralTokenId],\n          marketPlace: callbackData[0].reservoirExecutionInfo.module,\n          executionData: [repaymentCalldata],\n        },\n        loanExecutionData: [emitCalldata],\n      },\n    ]);\n\n    return {\n      txHash,\n      waitTxInBlock: async () => {\n        const receipt = await this.bcClient.waitForTransactionReceipt({\n          hash: txHash,\n        });\n        const events = this.parseEventLogs('SellAndRepayExecuted', receipt.logs);\n        if (events.length !== 1) {\n          throw new Error('Sell with Loan not executed');\n        }\n        return receipt;\n      },\n    };\n  }\n}\n", "//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// AddressManager\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const addressManagerAbi = [\n  {\n    type: 'constructor',\n    inputs: [{ name: '_original', internalType: 'address[]', type: 'address[]' }],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'error',\n    inputs: [{ name: '_address', internalType: 'address', type: 'address' }],\n    name: 'AddressAlreadyAddedError',\n  },\n  {\n    type: 'error',\n    inputs: [{ name: '_address', internalType: 'address', type: 'address' }],\n    name: 'AddressNotAddedError',\n  },\n  { type: 'error', inputs: [], name: 'AddressZeroError' },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'address_added', internalType: 'address', type: 'address', indexed: false }],\n    name: 'AddressAdded',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'address_removed', internalType: 'address', type: 'address', indexed: false }],\n    name: 'AddressRemovedFromWhitelist',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'address_whitelisted', internalType: 'address', type: 'address', indexed: false },\n    ],\n    name: 'AddressWhitelisted',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'user', internalType: 'address', type: 'address', indexed: true },\n      { name: 'newOwner', internalType: 'address', type: 'address', indexed: true },\n    ],\n    name: 'OwnershipTransferred',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '_entry', internalType: 'address', type: 'address' }],\n    name: 'add',\n    outputs: [{ name: '', internalType: 'uint16', type: 'uint16' }],\n    stateMutability: 'payable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '_entry', internalType: 'address', type: 'address' }],\n    name: 'addToWhitelist',\n    outputs: [],\n    stateMutability: 'payable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '_address', internalType: 'address', type: 'address' }],\n    name: 'addressToIndex',\n    outputs: [{ name: '', internalType: 'uint16', type: 'uint16' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '_index', internalType: 'uint16', type: 'uint16' }],\n    name: 'indexToAddress',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '_entry', internalType: 'address', type: 'address' }],\n    name: 'isWhitelisted',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'owner',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '_entry', internalType: 'address', type: 'address' }],\n    name: 'removeFromWhitelist',\n    outputs: [],\n    stateMutability: 'payable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'newOwner', internalType: 'address', type: 'address' }],\n    name: 'transferOwnership',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// AuctionLoanLiquidator\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const auctionLoanLiquidatorAbi = [\n  {\n    type: 'constructor',\n    inputs: [\n      { name: 'liquidationDistributor', internalType: 'address', type: 'address' },\n      { name: 'currencyManager', internalType: 'address', type: 'address' },\n      { name: 'collectionManager', internalType: 'address', type: 'address' },\n      { name: 'triggerFee', internalType: 'uint256', type: 'uint256' },\n      { name: 'maxExtension', internalType: 'uint96', type: 'uint96' },\n    ],\n    stateMutability: 'nonpayable',\n  },\n  { type: 'error', inputs: [], name: 'AddressZeroError' },\n  { type: 'error', inputs: [], name: 'AuctionAlreadyInProgressError' },\n  {\n    type: 'error',\n    inputs: [{ name: '_expiration', internalType: 'uint96', type: 'uint96' }],\n    name: 'AuctionNotOverError',\n  },\n  {\n    type: 'error',\n    inputs: [{ name: '_expiration', internalType: 'uint96', type: 'uint96' }],\n    name: 'AuctionOverError',\n  },\n  { type: 'error', inputs: [], name: 'CollectionNotWhitelistedError' },\n  { type: 'error', inputs: [], name: 'CouldNotModifyValidLoansError' },\n  { type: 'error', inputs: [], name: 'CurrencyNotWhitelistedError' },\n  { type: 'error', inputs: [], name: 'InvalidHashAuctionError' },\n  {\n    type: 'error',\n    inputs: [{ name: 'triggerFee', internalType: 'uint256', type: 'uint256' }],\n    name: 'InvalidTriggerFee',\n  },\n  {\n    type: 'error',\n    inputs: [{ name: '_loan', internalType: 'address', type: 'address' }],\n    name: 'LoanNotAcceptedError',\n  },\n  {\n    type: 'error',\n    inputs: [{ name: '_minBid', internalType: 'uint256', type: 'uint256' }],\n    name: 'MinBidError',\n  },\n  {\n    type: 'error',\n    inputs: [{ name: '_owner', internalType: 'address', type: 'address' }],\n    name: 'NFTNotOwnedError',\n  },\n  { type: 'error', inputs: [], name: 'NoBidsError' },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'loanContract', internalType: 'address', type: 'address', indexed: false },\n      { name: 'loanId', internalType: 'uint256', type: 'uint256', indexed: false },\n      { name: 'collection', internalType: 'address', type: 'address', indexed: false },\n      { name: 'tokenId', internalType: 'uint256', type: 'uint256', indexed: false },\n      { name: 'asset', internalType: 'address', type: 'address', indexed: false },\n      { name: 'proceeds', internalType: 'uint256', type: 'uint256', indexed: false },\n      { name: 'settler', internalType: 'address', type: 'address', indexed: false },\n      { name: 'triggerFee', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'AuctionSettled',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'collection', internalType: 'address', type: 'address', indexed: false },\n      { name: 'tokenId', internalType: 'uint256', type: 'uint256', indexed: false },\n      { name: 'newBidder', internalType: 'address', type: 'address', indexed: false },\n      { name: 'bid', internalType: 'uint256', type: 'uint256', indexed: false },\n      { name: 'loanAddress', internalType: 'address', type: 'address', indexed: false },\n      { name: 'loanId', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'BidPlaced',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'liquidationDistributor', internalType: 'address', type: 'address', indexed: false },\n    ],\n    name: 'LiquidationDistributorUpdated',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'loan', internalType: 'address', type: 'address', indexed: false }],\n    name: 'LoanContractAdded',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'loan', internalType: 'address', type: 'address', indexed: false }],\n    name: 'LoanContractRemoved',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'collection', internalType: 'address', type: 'address', indexed: false },\n      { name: 'tokenId', internalType: 'uint256', type: 'uint256', indexed: false },\n      {\n        name: 'auction',\n        internalType: 'struct IAuctionLoanLiquidator.Auction',\n        type: 'tuple',\n        components: [\n          { name: 'loanAddress', internalType: 'address', type: 'address' },\n          { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n          { name: 'highestBid', internalType: 'uint256', type: 'uint256' },\n          { name: 'triggerFee', internalType: 'uint256', type: 'uint256' },\n          { name: 'minBid', internalType: 'uint256', type: 'uint256' },\n          { name: 'highestBidder', internalType: 'address', type: 'address' },\n          { name: 'duration', internalType: 'uint96', type: 'uint96' },\n          { name: 'asset', internalType: 'address', type: 'address' },\n          { name: 'startTime', internalType: 'uint96', type: 'uint96' },\n          { name: 'originator', internalType: 'address', type: 'address' },\n          { name: 'lastBidTime', internalType: 'uint96', type: 'uint96' },\n        ],\n        indexed: false,\n      },\n    ],\n    name: 'LoanLiquidationStarted',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'user', internalType: 'address', type: 'address', indexed: true },\n      { name: 'newOwner', internalType: 'address', type: 'address', indexed: true },\n    ],\n    name: 'OwnershipTransferred',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'triggerFee', internalType: 'uint256', type: 'uint256', indexed: false }],\n    name: 'TriggerFeeUpdated',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'MAX_TRIGGER_FEE',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'MIN_INCREMENT_BPS',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '_loanContract', internalType: 'address', type: 'address' }],\n    name: 'addLoanContract',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '_nftAddress', internalType: 'address', type: 'address' },\n      { name: '_tokenId', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'getAuctionHash',\n    outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'getLiquidationDistributor',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'getMaxExtension',\n    outputs: [{ name: '', internalType: 'uint96', type: 'uint96' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'getTriggerFee',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'getValidLoanContracts',\n    outputs: [{ name: '', internalType: 'address[]', type: 'address[]' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '_loanId', internalType: 'uint256', type: 'uint256' },\n      { name: '_nftAddress', internalType: 'address', type: 'address' },\n      { name: '_tokenId', internalType: 'uint256', type: 'uint256' },\n      { name: '_asset', internalType: 'address', type: 'address' },\n      { name: '_duration', internalType: 'uint96', type: 'uint96' },\n      { name: '_minBid', internalType: 'uint256', type: 'uint256' },\n      { name: '_originator', internalType: 'address', type: 'address' },\n    ],\n    name: 'liquidateLoan',\n    outputs: [{ name: '', internalType: 'bytes', type: 'bytes' }],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'uint256', type: 'uint256' },\n      { name: '', internalType: 'bytes', type: 'bytes' },\n    ],\n    name: 'onERC721Received',\n    outputs: [{ name: '', internalType: 'bytes4', type: 'bytes4' }],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'owner',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '_nftAddress', internalType: 'address', type: 'address' },\n      { name: '_tokenId', internalType: 'uint256', type: 'uint256' },\n      {\n        name: '_auction',\n        internalType: 'struct IAuctionLoanLiquidator.Auction',\n        type: 'tuple',\n        components: [\n          { name: 'loanAddress', internalType: 'address', type: 'address' },\n          { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n          { name: 'highestBid', internalType: 'uint256', type: 'uint256' },\n          { name: 'triggerFee', internalType: 'uint256', type: 'uint256' },\n          { name: 'minBid', internalType: 'uint256', type: 'uint256' },\n          { name: 'highestBidder', internalType: 'address', type: 'address' },\n          { name: 'duration', internalType: 'uint96', type: 'uint96' },\n          { name: 'asset', internalType: 'address', type: 'address' },\n          { name: 'startTime', internalType: 'uint96', type: 'uint96' },\n          { name: 'originator', internalType: 'address', type: 'address' },\n          { name: 'lastBidTime', internalType: 'uint96', type: 'uint96' },\n        ],\n      },\n      { name: '_bid', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'placeBid',\n    outputs: [\n      {\n        name: '',\n        internalType: 'struct IAuctionLoanLiquidator.Auction',\n        type: 'tuple',\n        components: [\n          { name: 'loanAddress', internalType: 'address', type: 'address' },\n          { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n          { name: 'highestBid', internalType: 'uint256', type: 'uint256' },\n          { name: 'triggerFee', internalType: 'uint256', type: 'uint256' },\n          { name: 'minBid', internalType: 'uint256', type: 'uint256' },\n          { name: 'highestBidder', internalType: 'address', type: 'address' },\n          { name: 'duration', internalType: 'uint96', type: 'uint96' },\n          { name: 'asset', internalType: 'address', type: 'address' },\n          { name: 'startTime', internalType: 'uint96', type: 'uint96' },\n          { name: 'originator', internalType: 'address', type: 'address' },\n          { name: 'lastBidTime', internalType: 'uint96', type: 'uint96' },\n        ],\n      },\n    ],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '_loanContract', internalType: 'address', type: 'address' }],\n    name: 'removeLoanContract',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      {\n        name: '_auction',\n        internalType: 'struct IAuctionLoanLiquidator.Auction',\n        type: 'tuple',\n        components: [\n          { name: 'loanAddress', internalType: 'address', type: 'address' },\n          { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n          { name: 'highestBid', internalType: 'uint256', type: 'uint256' },\n          { name: 'triggerFee', internalType: 'uint256', type: 'uint256' },\n          { name: 'minBid', internalType: 'uint256', type: 'uint256' },\n          { name: 'highestBidder', internalType: 'address', type: 'address' },\n          { name: 'duration', internalType: 'uint96', type: 'uint96' },\n          { name: 'asset', internalType: 'address', type: 'address' },\n          { name: 'startTime', internalType: 'uint96', type: 'uint96' },\n          { name: 'originator', internalType: 'address', type: 'address' },\n          { name: 'lastBidTime', internalType: 'uint96', type: 'uint96' },\n        ],\n      },\n      {\n        name: '_loan',\n        internalType: 'struct IMultiSourceLoan.Loan',\n        type: 'tuple',\n        components: [\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'tranche',\n            internalType: 'struct IMultiSourceLoan.Tranche[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n              { name: 'floor', internalType: 'uint256', type: 'uint256' },\n              { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n              { name: 'lender', internalType: 'address', type: 'address' },\n              { name: 'accruedInterest', internalType: 'uint256', type: 'uint256' },\n              { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n              { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n            ],\n          },\n          { name: 'protocolFee', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n    ],\n    name: 'settleAuction',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'newOwner', internalType: 'address', type: 'address' }],\n    name: 'transferOwnership',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '__liquidationDistributor', internalType: 'address', type: 'address' }],\n    name: 'updateLiquidationDistributor',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'triggerFee', internalType: 'uint256', type: 'uint256' }],\n    name: 'updateTriggerFee',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// AuctionWithBuyoutLoanLiquidator\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const auctionWithBuyoutLoanLiquidatorAbi = [\n  {\n    type: 'constructor',\n    inputs: [\n      { name: 'liquidationDistributor', internalType: 'address', type: 'address' },\n      { name: 'currencyManager', internalType: 'address', type: 'address' },\n      { name: 'collectionManager', internalType: 'address', type: 'address' },\n      { name: 'loanManagerRegistry', internalType: 'address', type: 'address' },\n      { name: 'triggerFee', internalType: 'uint256', type: 'uint256' },\n      { name: 'maxExtension', internalType: 'uint96', type: 'uint96' },\n      { name: 'timeForMainLenderToBuy', internalType: 'uint256', type: 'uint256' },\n    ],\n    stateMutability: 'nonpayable',\n  },\n  { type: 'error', inputs: [], name: 'AddressZeroError' },\n  { type: 'error', inputs: [], name: 'AuctionAlreadyInProgressError' },\n  {\n    type: 'error',\n    inputs: [{ name: '_expiration', internalType: 'uint96', type: 'uint96' }],\n    name: 'AuctionNotOverError',\n  },\n  {\n    type: 'error',\n    inputs: [{ name: '_expiration', internalType: 'uint96', type: 'uint96' }],\n    name: 'AuctionOverError',\n  },\n  { type: 'error', inputs: [], name: 'CollectionNotWhitelistedError' },\n  { type: 'error', inputs: [], name: 'CouldNotModifyValidLoansError' },\n  { type: 'error', inputs: [], name: 'CurrencyNotWhitelistedError' },\n  { type: 'error', inputs: [], name: 'InvalidHashAuctionError' },\n  { type: 'error', inputs: [], name: 'InvalidInputError' },\n  {\n    type: 'error',\n    inputs: [{ name: 'triggerFee', internalType: 'uint256', type: 'uint256' }],\n    name: 'InvalidTriggerFee',\n  },\n  {\n    type: 'error',\n    inputs: [{ name: '_loan', internalType: 'address', type: 'address' }],\n    name: 'LoanNotAcceptedError',\n  },\n  {\n    type: 'error',\n    inputs: [{ name: '_minBid', internalType: 'uint256', type: 'uint256' }],\n    name: 'MinBidError',\n  },\n  {\n    type: 'error',\n    inputs: [{ name: '_owner', internalType: 'address', type: 'address' }],\n    name: 'NFTNotOwnedError',\n  },\n  { type: 'error', inputs: [], name: 'NoBidsError' },\n  { type: 'error', inputs: [], name: 'NotMainLenderError' },\n  {\n    type: 'error',\n    inputs: [{ name: 'timeLimit', internalType: 'uint256', type: 'uint256' }],\n    name: 'OptionToBuyExpiredError',\n  },\n  {\n    type: 'error',\n    inputs: [{ name: 'timeLimit', internalType: 'uint256', type: 'uint256' }],\n    name: 'OptionToBuyStilValidError',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'loanContract', internalType: 'address', type: 'address', indexed: false },\n      { name: 'loanId', internalType: 'uint256', type: 'uint256', indexed: false },\n      { name: 'collection', internalType: 'address', type: 'address', indexed: false },\n      { name: 'tokenId', internalType: 'uint256', type: 'uint256', indexed: false },\n      { name: 'asset', internalType: 'address', type: 'address', indexed: false },\n      { name: 'proceeds', internalType: 'uint256', type: 'uint256', indexed: false },\n      { name: 'settler', internalType: 'address', type: 'address', indexed: false },\n      { name: 'triggerFee', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'AuctionSettled',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'loanAddress', internalType: 'address', type: 'address', indexed: false },\n      { name: 'loanId', internalType: 'uint256', type: 'uint256', indexed: false },\n      { name: 'nftAddress', internalType: 'address', type: 'address', indexed: false },\n      { name: 'tokenId', internalType: 'uint256', type: 'uint256', indexed: false },\n      { name: 'largestTrancheIdx', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'AuctionSettledWithBuyout',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'collection', internalType: 'address', type: 'address', indexed: false },\n      { name: 'tokenId', internalType: 'uint256', type: 'uint256', indexed: false },\n      { name: 'newBidder', internalType: 'address', type: 'address', indexed: false },\n      { name: 'bid', internalType: 'uint256', type: 'uint256', indexed: false },\n      { name: 'loanAddress', internalType: 'address', type: 'address', indexed: false },\n      { name: 'loanId', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'BidPlaced',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'liquidationDistributor', internalType: 'address', type: 'address', indexed: false },\n    ],\n    name: 'LiquidationDistributorUpdated',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'loan', internalType: 'address', type: 'address', indexed: false }],\n    name: 'LoanContractAdded',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'loan', internalType: 'address', type: 'address', indexed: false }],\n    name: 'LoanContractRemoved',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'collection', internalType: 'address', type: 'address', indexed: false },\n      { name: 'tokenId', internalType: 'uint256', type: 'uint256', indexed: false },\n      {\n        name: 'auction',\n        internalType: 'struct IAuctionLoanLiquidator.Auction',\n        type: 'tuple',\n        components: [\n          { name: 'loanAddress', internalType: 'address', type: 'address' },\n          { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n          { name: 'highestBid', internalType: 'uint256', type: 'uint256' },\n          { name: 'triggerFee', internalType: 'uint256', type: 'uint256' },\n          { name: 'minBid', internalType: 'uint256', type: 'uint256' },\n          { name: 'highestBidder', internalType: 'address', type: 'address' },\n          { name: 'duration', internalType: 'uint96', type: 'uint96' },\n          { name: 'asset', internalType: 'address', type: 'address' },\n          { name: 'startTime', internalType: 'uint96', type: 'uint96' },\n          { name: 'originator', internalType: 'address', type: 'address' },\n          { name: 'lastBidTime', internalType: 'uint96', type: 'uint96' },\n        ],\n        indexed: false,\n      },\n    ],\n    name: 'LoanLiquidationStarted',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'user', internalType: 'address', type: 'address', indexed: true },\n      { name: 'newOwner', internalType: 'address', type: 'address', indexed: true },\n    ],\n    name: 'OwnershipTransferred',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'timeForMainLenderToBuy', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'TimeForMainLenderToBuyUpdated',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'triggerFee', internalType: 'uint256', type: 'uint256', indexed: false }],\n    name: 'TriggerFeeUpdated',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'MAX_TIME_FOR_MAIN_LENDER_TO_BUY',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'MAX_TRIGGER_FEE',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'MIN_INCREMENT_BPS',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '_loanContract', internalType: 'address', type: 'address' }],\n    name: 'addLoanContract',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '_nftAddress', internalType: 'address', type: 'address' },\n      { name: '_tokenId', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'getAuctionHash',\n    outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'getLiquidationDistributor',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'getLoanManagerRegistry',\n    outputs: [{ name: '', internalType: 'contract ILoanManagerRegistry', type: 'address' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'getMaxExtension',\n    outputs: [{ name: '', internalType: 'uint96', type: 'uint96' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'getTimeForMainLenderToBuy',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'getTriggerFee',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'getValidLoanContracts',\n    outputs: [{ name: '', internalType: 'address[]', type: 'address[]' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '_loanId', internalType: 'uint256', type: 'uint256' },\n      { name: '_nftAddress', internalType: 'address', type: 'address' },\n      { name: '_tokenId', internalType: 'uint256', type: 'uint256' },\n      { name: '_asset', internalType: 'address', type: 'address' },\n      { name: '_duration', internalType: 'uint96', type: 'uint96' },\n      { name: '_minBid', internalType: 'uint256', type: 'uint256' },\n      { name: '_originator', internalType: 'address', type: 'address' },\n    ],\n    name: 'liquidateLoan',\n    outputs: [{ name: '', internalType: 'bytes', type: 'bytes' }],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'uint256', type: 'uint256' },\n      { name: '', internalType: 'bytes', type: 'bytes' },\n    ],\n    name: 'onERC721Received',\n    outputs: [{ name: '', internalType: 'bytes4', type: 'bytes4' }],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'owner',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '_nftAddress', internalType: 'address', type: 'address' },\n      { name: '_tokenId', internalType: 'uint256', type: 'uint256' },\n      {\n        name: '_auction',\n        internalType: 'struct IAuctionLoanLiquidator.Auction',\n        type: 'tuple',\n        components: [\n          { name: 'loanAddress', internalType: 'address', type: 'address' },\n          { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n          { name: 'highestBid', internalType: 'uint256', type: 'uint256' },\n          { name: 'triggerFee', internalType: 'uint256', type: 'uint256' },\n          { name: 'minBid', internalType: 'uint256', type: 'uint256' },\n          { name: 'highestBidder', internalType: 'address', type: 'address' },\n          { name: 'duration', internalType: 'uint96', type: 'uint96' },\n          { name: 'asset', internalType: 'address', type: 'address' },\n          { name: 'startTime', internalType: 'uint96', type: 'uint96' },\n          { name: 'originator', internalType: 'address', type: 'address' },\n          { name: 'lastBidTime', internalType: 'uint96', type: 'uint96' },\n        ],\n      },\n      { name: '_bid', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'placeBid',\n    outputs: [\n      {\n        name: '',\n        internalType: 'struct IAuctionLoanLiquidator.Auction',\n        type: 'tuple',\n        components: [\n          { name: 'loanAddress', internalType: 'address', type: 'address' },\n          { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n          { name: 'highestBid', internalType: 'uint256', type: 'uint256' },\n          { name: 'triggerFee', internalType: 'uint256', type: 'uint256' },\n          { name: 'minBid', internalType: 'uint256', type: 'uint256' },\n          { name: 'highestBidder', internalType: 'address', type: 'address' },\n          { name: 'duration', internalType: 'uint96', type: 'uint96' },\n          { name: 'asset', internalType: 'address', type: 'address' },\n          { name: 'startTime', internalType: 'uint96', type: 'uint96' },\n          { name: 'originator', internalType: 'address', type: 'address' },\n          { name: 'lastBidTime', internalType: 'uint96', type: 'uint96' },\n        ],\n      },\n    ],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '_loanContract', internalType: 'address', type: 'address' }],\n    name: 'removeLoanContract',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '__timeForMainLenderToBuy', internalType: 'uint256', type: 'uint256' }],\n    name: 'setTimeForMainLenderToBuy',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      {\n        name: '_auction',\n        internalType: 'struct IAuctionLoanLiquidator.Auction',\n        type: 'tuple',\n        components: [\n          { name: 'loanAddress', internalType: 'address', type: 'address' },\n          { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n          { name: 'highestBid', internalType: 'uint256', type: 'uint256' },\n          { name: 'triggerFee', internalType: 'uint256', type: 'uint256' },\n          { name: 'minBid', internalType: 'uint256', type: 'uint256' },\n          { name: 'highestBidder', internalType: 'address', type: 'address' },\n          { name: 'duration', internalType: 'uint96', type: 'uint96' },\n          { name: 'asset', internalType: 'address', type: 'address' },\n          { name: 'startTime', internalType: 'uint96', type: 'uint96' },\n          { name: 'originator', internalType: 'address', type: 'address' },\n          { name: 'lastBidTime', internalType: 'uint96', type: 'uint96' },\n        ],\n      },\n      {\n        name: '_loan',\n        internalType: 'struct IMultiSourceLoan.Loan',\n        type: 'tuple',\n        components: [\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'tranche',\n            internalType: 'struct IMultiSourceLoan.Tranche[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n              { name: 'floor', internalType: 'uint256', type: 'uint256' },\n              { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n              { name: 'lender', internalType: 'address', type: 'address' },\n              { name: 'accruedInterest', internalType: 'uint256', type: 'uint256' },\n              { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n              { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n            ],\n          },\n          { name: 'protocolFee', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n    ],\n    name: 'settleAuction',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '_nftAddress', internalType: 'address', type: 'address' },\n      { name: '_tokenId', internalType: 'uint256', type: 'uint256' },\n      {\n        name: '_auction',\n        internalType: 'struct IAuctionLoanLiquidator.Auction',\n        type: 'tuple',\n        components: [\n          { name: 'loanAddress', internalType: 'address', type: 'address' },\n          { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n          { name: 'highestBid', internalType: 'uint256', type: 'uint256' },\n          { name: 'triggerFee', internalType: 'uint256', type: 'uint256' },\n          { name: 'minBid', internalType: 'uint256', type: 'uint256' },\n          { name: 'highestBidder', internalType: 'address', type: 'address' },\n          { name: 'duration', internalType: 'uint96', type: 'uint96' },\n          { name: 'asset', internalType: 'address', type: 'address' },\n          { name: 'startTime', internalType: 'uint96', type: 'uint96' },\n          { name: 'originator', internalType: 'address', type: 'address' },\n          { name: 'lastBidTime', internalType: 'uint96', type: 'uint96' },\n        ],\n      },\n      {\n        name: '_loan',\n        internalType: 'struct IMultiSourceLoan.Loan',\n        type: 'tuple',\n        components: [\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'tranche',\n            internalType: 'struct IMultiSourceLoan.Tranche[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n              { name: 'floor', internalType: 'uint256', type: 'uint256' },\n              { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n              { name: 'lender', internalType: 'address', type: 'address' },\n              { name: 'accruedInterest', internalType: 'uint256', type: 'uint256' },\n              { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n              { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n            ],\n          },\n          { name: 'protocolFee', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n    ],\n    name: 'settleWithBuyout',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'newOwner', internalType: 'address', type: 'address' }],\n    name: 'transferOwnership',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '__liquidationDistributor', internalType: 'address', type: 'address' }],\n    name: 'updateLiquidationDistributor',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'triggerFee', internalType: 'uint256', type: 'uint256' }],\n    name: 'updateTriggerFee',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// BaseLoan\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const baseLoanAbi = [\n  { type: 'error', inputs: [], name: 'AddressZeroError' },\n  {\n    type: 'error',\n    inputs: [\n      { name: '_lender', internalType: 'address', type: 'address' },\n      { name: '_offerId', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'CancelledOrExecutedOfferError',\n  },\n  { type: 'error', inputs: [], name: 'CollectionNotWhitelistedError' },\n  { type: 'error', inputs: [], name: 'CurrencyNotWhitelistedError' },\n  {\n    type: 'error',\n    inputs: [{ name: '_expirationTime', internalType: 'uint256', type: 'uint256' }],\n    name: 'ExpiredOfferError',\n  },\n  {\n    type: 'error',\n    inputs: [\n      { name: '_amount', internalType: 'uint256', type: 'uint256' },\n      { name: '_principalAmount', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'InvalidAmountError',\n  },\n  { type: 'error', inputs: [], name: 'InvalidDurationError' },\n  { type: 'error', inputs: [], name: 'InvalidInputError' },\n  {\n    type: 'error',\n    inputs: [{ name: '_loanId', internalType: 'uint256', type: 'uint256' }],\n    name: 'InvalidLoanError',\n  },\n  { type: 'error', inputs: [], name: 'InvalidSignatureError' },\n  {\n    type: 'error',\n    inputs: [{ name: '_liquidator', internalType: 'address', type: 'address' }],\n    name: 'LiquidatorOnlyError',\n  },\n  {\n    type: 'error',\n    inputs: [{ name: '_expirationTime', internalType: 'uint256', type: 'uint256' }],\n    name: 'LoanNotDueError',\n  },\n  {\n    type: 'error',\n    inputs: [\n      { name: '_lender', internalType: 'address', type: 'address' },\n      { name: '_newMinOfferId', internalType: 'uint256', type: 'uint256' },\n      { name: '_minOfferId', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'LowOfferIdError',\n  },\n  {\n    type: 'error',\n    inputs: [\n      { name: '_lender', internalType: 'address', type: 'address' },\n      { name: '_newMinRenegotiationOfferId', internalType: 'uint256', type: 'uint256' },\n      { name: '_minOfferId', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'LowRenegotiationOfferIdError',\n  },\n  { type: 'error', inputs: [], name: 'MaxCapacityExceededError' },\n  { type: 'error', inputs: [], name: 'NotStrictlyImprovedError' },\n  {\n    type: 'error',\n    inputs: [{ name: '_pendingProtocolFeeSetTime', internalType: 'uint256', type: 'uint256' }],\n    name: 'TooEarlyError',\n  },\n  { type: 'error', inputs: [], name: 'TooSoonError' },\n  { type: 'error', inputs: [], name: 'ZeroInterestError' },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'lender', internalType: 'address', type: 'address', indexed: false },\n      { name: 'minOfferId', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'AllOffersCancelled',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'newDuration', internalType: 'uint256', type: 'uint256', indexed: false }],\n    name: 'LiquidationAuctionDurationUpdated',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'liquidator', internalType: 'address', type: 'address', indexed: false }],\n    name: 'LiquidationContractUpdated',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'loanId', internalType: 'uint256', type: 'uint256', indexed: false }],\n    name: 'LoanForeclosed',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'loanId', internalType: 'uint256', type: 'uint256', indexed: false },\n      { name: 'liquidator', internalType: 'address', type: 'address', indexed: false },\n    ],\n    name: 'LoanSentToLiquidator',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: '_minimum', internalType: 'uint256', type: 'uint256', indexed: false }],\n    name: 'MinAprImprovementUpdated',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'newMinBid', internalType: 'uint256', type: 'uint256', indexed: false }],\n    name: 'MinBidLiquidationUpdated',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'lender', internalType: 'address', type: 'address', indexed: false },\n      { name: 'offerId', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'OfferCancelled',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'user', internalType: 'address', type: 'address', indexed: true },\n      { name: 'newOwner', internalType: 'address', type: 'address', indexed: true },\n    ],\n    name: 'OwnershipTransferred',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      {\n        name: 'fee',\n        internalType: 'struct WithProtocolFee.ProtocolFee',\n        type: 'tuple',\n        components: [\n          { name: 'recipient', internalType: 'address', type: 'address' },\n          { name: 'fraction', internalType: 'uint256', type: 'uint256' },\n        ],\n        indexed: false,\n      },\n    ],\n    name: 'ProtocolFeePendingUpdate',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      {\n        name: 'fee',\n        internalType: 'struct WithProtocolFee.ProtocolFee',\n        type: 'tuple',\n        components: [\n          { name: 'recipient', internalType: 'address', type: 'address' },\n          { name: 'fraction', internalType: 'uint256', type: 'uint256' },\n        ],\n        indexed: false,\n      },\n    ],\n    name: 'ProtocolFeeUpdated',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'lender', internalType: 'address', type: 'address', indexed: false },\n      { name: 'renegotiationId', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'RenegotiationOfferCancelled',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'newOwner', internalType: 'address', type: 'address', indexed: false }],\n    name: 'TransferOwnerRequested',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'contractAdded', internalType: 'address', type: 'address', indexed: false }],\n    name: 'WhitelistedCallbackContractAdded',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'contractRemoved', internalType: 'address', type: 'address', indexed: false }],\n    name: 'WhitelistedCallbackContractRemoved',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'DOMAIN_SEPARATOR',\n    outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'FEE_UPDATE_NOTICE',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'INITIAL_DOMAIN_SEPARATOR',\n    outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'MAX_AUCTION_DURATION',\n    outputs: [{ name: '', internalType: 'uint48', type: 'uint48' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'MIN_AUCTION_DURATION',\n    outputs: [{ name: '', internalType: 'uint48', type: 'uint48' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'MIN_BID_LIQUIDATION',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'MIN_WAIT_TIME',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'VERSION',\n    outputs: [{ name: '', internalType: 'bytes', type: 'bytes' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '_contract', internalType: 'address', type: 'address' }],\n    name: 'addWhitelistedCallbackContract',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '_minOfferId', internalType: 'uint256', type: 'uint256' }],\n    name: 'cancelAllOffers',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '_offerId', internalType: 'uint256', type: 'uint256' }],\n    name: 'cancelOffer',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '_renegotiationId', internalType: 'uint256', type: 'uint256' }],\n    name: 'cancelRenegotiationOffer',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'getCollectionManager',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'getCurrencyManager',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'getLiquidationAuctionDuration',\n    outputs: [{ name: '', internalType: 'uint48', type: 'uint48' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'getLiquidator',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'getMinImprovementApr',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'getPendingProtocolFee',\n    outputs: [\n      {\n        name: '',\n        internalType: 'struct WithProtocolFee.ProtocolFee',\n        type: 'tuple',\n        components: [\n          { name: 'recipient', internalType: 'address', type: 'address' },\n          { name: 'fraction', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n    ],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'getPendingProtocolFeeSetTime',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'getProtocolFee',\n    outputs: [\n      {\n        name: '',\n        internalType: 'struct WithProtocolFee.ProtocolFee',\n        type: 'tuple',\n        components: [\n          { name: 'recipient', internalType: 'address', type: 'address' },\n          { name: 'fraction', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n    ],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'getTotalLoansIssued',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '_lender', internalType: 'address', type: 'address' },\n      { name: '_offerId', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'getUsedCapacity',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'user', internalType: 'address', type: 'address' },\n      { name: 'offerId', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'isOfferCancelled',\n    outputs: [{ name: 'notActive', internalType: 'bool', type: 'bool' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'user', internalType: 'address', type: 'address' },\n      { name: 'renegotiationIf', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'isRenegotiationOfferCancelled',\n    outputs: [{ name: 'notActive', internalType: 'bool', type: 'bool' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '_contract', internalType: 'address', type: 'address' }],\n    name: 'isWhitelistedCallbackContract',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'user', internalType: 'address', type: 'address' }],\n    name: 'minOfferId',\n    outputs: [{ name: 'minOfferId', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'name',\n    outputs: [{ name: '', internalType: 'string', type: 'string' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'uint256', type: 'uint256' },\n      { name: '', internalType: 'bytes', type: 'bytes' },\n    ],\n    name: 'onERC721Received',\n    outputs: [{ name: '', internalType: 'bytes4', type: 'bytes4' }],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'owner',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'pendingOwner',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'pendingOwnerTime',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '_contract', internalType: 'address', type: 'address' }],\n    name: 'removeWhitelistedCallbackContract',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '_newOwner', internalType: 'address', type: 'address' }],\n    name: 'requestTransferOwner',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'setProtocolFee',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'transferOwnership',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'newOwner', internalType: 'address', type: 'address' }],\n    name: 'transferOwnership',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '_newDuration', internalType: 'uint48', type: 'uint48' }],\n    name: 'updateLiquidationAuctionDuration',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '__loanLiquidator', internalType: 'address', type: 'address' }],\n    name: 'updateLiquidationContract',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '_newMinimum', internalType: 'uint256', type: 'uint256' }],\n    name: 'updateMinImprovementApr',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      {\n        name: '_newProtocolFee',\n        internalType: 'struct WithProtocolFee.ProtocolFee',\n        type: 'tuple',\n        components: [\n          { name: 'recipient', internalType: 'address', type: 'address' },\n          { name: 'fraction', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n    ],\n    name: 'updateProtocolFee',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// CallbackHandler\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const callbackHandlerAbi = [\n  { type: 'error', inputs: [], name: 'AddressZeroError' },\n  { type: 'error', inputs: [], name: 'InvalidInputError' },\n  {\n    type: 'error',\n    inputs: [{ name: '_pendingProtocolFeeSetTime', internalType: 'uint256', type: 'uint256' }],\n    name: 'TooEarlyError',\n  },\n  { type: 'error', inputs: [], name: 'TooSoonError' },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'user', internalType: 'address', type: 'address', indexed: true },\n      { name: 'newOwner', internalType: 'address', type: 'address', indexed: true },\n    ],\n    name: 'OwnershipTransferred',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      {\n        name: 'fee',\n        internalType: 'struct WithProtocolFee.ProtocolFee',\n        type: 'tuple',\n        components: [\n          { name: 'recipient', internalType: 'address', type: 'address' },\n          { name: 'fraction', internalType: 'uint256', type: 'uint256' },\n        ],\n        indexed: false,\n      },\n    ],\n    name: 'ProtocolFeePendingUpdate',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      {\n        name: 'fee',\n        internalType: 'struct WithProtocolFee.ProtocolFee',\n        type: 'tuple',\n        components: [\n          { name: 'recipient', internalType: 'address', type: 'address' },\n          { name: 'fraction', internalType: 'uint256', type: 'uint256' },\n        ],\n        indexed: false,\n      },\n    ],\n    name: 'ProtocolFeeUpdated',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'newOwner', internalType: 'address', type: 'address', indexed: false }],\n    name: 'TransferOwnerRequested',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'contractAdded', internalType: 'address', type: 'address', indexed: false }],\n    name: 'WhitelistedCallbackContractAdded',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'contractRemoved', internalType: 'address', type: 'address', indexed: false }],\n    name: 'WhitelistedCallbackContractRemoved',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'FEE_UPDATE_NOTICE',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'MIN_WAIT_TIME',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '_contract', internalType: 'address', type: 'address' }],\n    name: 'addWhitelistedCallbackContract',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'getPendingProtocolFee',\n    outputs: [\n      {\n        name: '',\n        internalType: 'struct WithProtocolFee.ProtocolFee',\n        type: 'tuple',\n        components: [\n          { name: 'recipient', internalType: 'address', type: 'address' },\n          { name: 'fraction', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n    ],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'getPendingProtocolFeeSetTime',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'getProtocolFee',\n    outputs: [\n      {\n        name: '',\n        internalType: 'struct WithProtocolFee.ProtocolFee',\n        type: 'tuple',\n        components: [\n          { name: 'recipient', internalType: 'address', type: 'address' },\n          { name: 'fraction', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n    ],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '_contract', internalType: 'address', type: 'address' }],\n    name: 'isWhitelistedCallbackContract',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'owner',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'pendingOwner',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'pendingOwnerTime',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '_contract', internalType: 'address', type: 'address' }],\n    name: 'removeWhitelistedCallbackContract',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '_newOwner', internalType: 'address', type: 'address' }],\n    name: 'requestTransferOwner',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'setProtocolFee',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'transferOwnership',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'newOwner', internalType: 'address', type: 'address' }],\n    name: 'transferOwnership',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      {\n        name: '_newProtocolFee',\n        internalType: 'struct WithProtocolFee.ProtocolFee',\n        type: 'tuple',\n        components: [\n          { name: 'recipient', internalType: 'address', type: 'address' },\n          { name: 'fraction', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n    ],\n    name: 'updateProtocolFee',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// DSTest\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const dsTestAbi = [\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: '', internalType: 'string', type: 'string', indexed: false }],\n    name: 'log',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: '', internalType: 'address', type: 'address', indexed: false }],\n    name: 'log_address',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: '', internalType: 'bytes', type: 'bytes', indexed: false }],\n    name: 'log_bytes',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: '', internalType: 'bytes32', type: 'bytes32', indexed: false }],\n    name: 'log_bytes32',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: '', internalType: 'int256', type: 'int256', indexed: false }],\n    name: 'log_int',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'key', internalType: 'string', type: 'string', indexed: false },\n      { name: 'val', internalType: 'address', type: 'address', indexed: false },\n    ],\n    name: 'log_named_address',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'key', internalType: 'string', type: 'string', indexed: false },\n      { name: 'val', internalType: 'bytes', type: 'bytes', indexed: false },\n    ],\n    name: 'log_named_bytes',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'key', internalType: 'string', type: 'string', indexed: false },\n      { name: 'val', internalType: 'bytes32', type: 'bytes32', indexed: false },\n    ],\n    name: 'log_named_bytes32',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'key', internalType: 'string', type: 'string', indexed: false },\n      { name: 'val', internalType: 'int256', type: 'int256', indexed: false },\n      { name: 'decimals', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'log_named_decimal_int',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'key', internalType: 'string', type: 'string', indexed: false },\n      { name: 'val', internalType: 'uint256', type: 'uint256', indexed: false },\n      { name: 'decimals', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'log_named_decimal_uint',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'key', internalType: 'string', type: 'string', indexed: false },\n      { name: 'val', internalType: 'int256', type: 'int256', indexed: false },\n    ],\n    name: 'log_named_int',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'key', internalType: 'string', type: 'string', indexed: false },\n      { name: 'val', internalType: 'string', type: 'string', indexed: false },\n    ],\n    name: 'log_named_string',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'key', internalType: 'string', type: 'string', indexed: false },\n      { name: 'val', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'log_named_uint',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: '', internalType: 'string', type: 'string', indexed: false }],\n    name: 'log_string',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: '', internalType: 'uint256', type: 'uint256', indexed: false }],\n    name: 'log_uint',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: '', internalType: 'bytes', type: 'bytes', indexed: false }],\n    name: 'logs',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'IS_TEST',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'failed',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n    stateMutability: 'nonpayable',\n  },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// DelegateRegistry\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const delegateRegistryAbi = [\n  { type: 'error', inputs: [], name: 'MulticallFailed' },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address', indexed: true },\n      { name: 'to', internalType: 'address', type: 'address', indexed: true },\n      { name: 'rights', internalType: 'bytes32', type: 'bytes32', indexed: false },\n      { name: 'enable', internalType: 'bool', type: 'bool', indexed: false },\n    ],\n    name: 'DelegateAll',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address', indexed: true },\n      { name: 'to', internalType: 'address', type: 'address', indexed: true },\n      { name: 'contract_', internalType: 'address', type: 'address', indexed: true },\n      { name: 'rights', internalType: 'bytes32', type: 'bytes32', indexed: false },\n      { name: 'enable', internalType: 'bool', type: 'bool', indexed: false },\n    ],\n    name: 'DelegateContract',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address', indexed: true },\n      { name: 'to', internalType: 'address', type: 'address', indexed: true },\n      { name: 'contract_', internalType: 'address', type: 'address', indexed: true },\n      { name: 'tokenId', internalType: 'uint256', type: 'uint256', indexed: false },\n      { name: 'rights', internalType: 'bytes32', type: 'bytes32', indexed: false },\n      { name: 'amount', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'DelegateERC1155',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address', indexed: true },\n      { name: 'to', internalType: 'address', type: 'address', indexed: true },\n      { name: 'contract_', internalType: 'address', type: 'address', indexed: true },\n      { name: 'rights', internalType: 'bytes32', type: 'bytes32', indexed: false },\n      { name: 'amount', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'DelegateERC20',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address', indexed: true },\n      { name: 'to', internalType: 'address', type: 'address', indexed: true },\n      { name: 'contract_', internalType: 'address', type: 'address', indexed: true },\n      { name: 'tokenId', internalType: 'uint256', type: 'uint256', indexed: false },\n      { name: 'rights', internalType: 'bytes32', type: 'bytes32', indexed: false },\n      { name: 'enable', internalType: 'bool', type: 'bool', indexed: false },\n    ],\n    name: 'DelegateERC721',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'from', internalType: 'address', type: 'address' },\n      { name: 'rights', internalType: 'bytes32', type: 'bytes32' },\n    ],\n    name: 'checkDelegateForAll',\n    outputs: [{ name: 'valid', internalType: 'bool', type: 'bool' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'from', internalType: 'address', type: 'address' },\n      { name: 'contract_', internalType: 'address', type: 'address' },\n      { name: 'rights', internalType: 'bytes32', type: 'bytes32' },\n    ],\n    name: 'checkDelegateForContract',\n    outputs: [{ name: 'valid', internalType: 'bool', type: 'bool' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'from', internalType: 'address', type: 'address' },\n      { name: 'contract_', internalType: 'address', type: 'address' },\n      { name: 'tokenId', internalType: 'uint256', type: 'uint256' },\n      { name: 'rights', internalType: 'bytes32', type: 'bytes32' },\n    ],\n    name: 'checkDelegateForERC1155',\n    outputs: [{ name: 'amount', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'from', internalType: 'address', type: 'address' },\n      { name: 'contract_', internalType: 'address', type: 'address' },\n      { name: 'rights', internalType: 'bytes32', type: 'bytes32' },\n    ],\n    name: 'checkDelegateForERC20',\n    outputs: [{ name: 'amount', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'from', internalType: 'address', type: 'address' },\n      { name: 'contract_', internalType: 'address', type: 'address' },\n      { name: 'tokenId', internalType: 'uint256', type: 'uint256' },\n      { name: 'rights', internalType: 'bytes32', type: 'bytes32' },\n    ],\n    name: 'checkDelegateForERC721',\n    outputs: [{ name: 'valid', internalType: 'bool', type: 'bool' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'rights', internalType: 'bytes32', type: 'bytes32' },\n      { name: 'enable', internalType: 'bool', type: 'bool' },\n    ],\n    name: 'delegateAll',\n    outputs: [{ name: 'hash', internalType: 'bytes32', type: 'bytes32' }],\n    stateMutability: 'payable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'contract_', internalType: 'address', type: 'address' },\n      { name: 'rights', internalType: 'bytes32', type: 'bytes32' },\n      { name: 'enable', internalType: 'bool', type: 'bool' },\n    ],\n    name: 'delegateContract',\n    outputs: [{ name: 'hash', internalType: 'bytes32', type: 'bytes32' }],\n    stateMutability: 'payable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'contract_', internalType: 'address', type: 'address' },\n      { name: 'tokenId', internalType: 'uint256', type: 'uint256' },\n      { name: 'rights', internalType: 'bytes32', type: 'bytes32' },\n      { name: 'amount', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'delegateERC1155',\n    outputs: [{ name: 'hash', internalType: 'bytes32', type: 'bytes32' }],\n    stateMutability: 'payable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'contract_', internalType: 'address', type: 'address' },\n      { name: 'rights', internalType: 'bytes32', type: 'bytes32' },\n      { name: 'amount', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'delegateERC20',\n    outputs: [{ name: 'hash', internalType: 'bytes32', type: 'bytes32' }],\n    stateMutability: 'payable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'contract_', internalType: 'address', type: 'address' },\n      { name: 'tokenId', internalType: 'uint256', type: 'uint256' },\n      { name: 'rights', internalType: 'bytes32', type: 'bytes32' },\n      { name: 'enable', internalType: 'bool', type: 'bool' },\n    ],\n    name: 'delegateERC721',\n    outputs: [{ name: 'hash', internalType: 'bytes32', type: 'bytes32' }],\n    stateMutability: 'payable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'hashes', internalType: 'bytes32[]', type: 'bytes32[]' }],\n    name: 'getDelegationsFromHashes',\n    outputs: [\n      {\n        name: 'delegations_',\n        internalType: 'struct IDelegateRegistry.Delegation[]',\n        type: 'tuple[]',\n        components: [\n          { name: 'type_', internalType: 'enum IDelegateRegistry.DelegationType', type: 'uint8' },\n          { name: 'to', internalType: 'address', type: 'address' },\n          { name: 'from', internalType: 'address', type: 'address' },\n          { name: 'rights', internalType: 'bytes32', type: 'bytes32' },\n          { name: 'contract_', internalType: 'address', type: 'address' },\n          { name: 'tokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'amount', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n    ],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'to', internalType: 'address', type: 'address' }],\n    name: 'getIncomingDelegationHashes',\n    outputs: [{ name: 'delegationHashes', internalType: 'bytes32[]', type: 'bytes32[]' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'to', internalType: 'address', type: 'address' }],\n    name: 'getIncomingDelegations',\n    outputs: [\n      {\n        name: 'delegations_',\n        internalType: 'struct IDelegateRegistry.Delegation[]',\n        type: 'tuple[]',\n        components: [\n          { name: 'type_', internalType: 'enum IDelegateRegistry.DelegationType', type: 'uint8' },\n          { name: 'to', internalType: 'address', type: 'address' },\n          { name: 'from', internalType: 'address', type: 'address' },\n          { name: 'rights', internalType: 'bytes32', type: 'bytes32' },\n          { name: 'contract_', internalType: 'address', type: 'address' },\n          { name: 'tokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'amount', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n    ],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'from', internalType: 'address', type: 'address' }],\n    name: 'getOutgoingDelegationHashes',\n    outputs: [{ name: 'delegationHashes', internalType: 'bytes32[]', type: 'bytes32[]' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'from', internalType: 'address', type: 'address' }],\n    name: 'getOutgoingDelegations',\n    outputs: [\n      {\n        name: 'delegations_',\n        internalType: 'struct IDelegateRegistry.Delegation[]',\n        type: 'tuple[]',\n        components: [\n          { name: 'type_', internalType: 'enum IDelegateRegistry.DelegationType', type: 'uint8' },\n          { name: 'to', internalType: 'address', type: 'address' },\n          { name: 'from', internalType: 'address', type: 'address' },\n          { name: 'rights', internalType: 'bytes32', type: 'bytes32' },\n          { name: 'contract_', internalType: 'address', type: 'address' },\n          { name: 'tokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'amount', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n    ],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'data', internalType: 'bytes[]', type: 'bytes[]' }],\n    name: 'multicall',\n    outputs: [{ name: 'results', internalType: 'bytes[]', type: 'bytes[]' }],\n    stateMutability: 'payable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'location', internalType: 'bytes32', type: 'bytes32' }],\n    name: 'readSlot',\n    outputs: [{ name: 'contents', internalType: 'bytes32', type: 'bytes32' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'locations', internalType: 'bytes32[]', type: 'bytes32[]' }],\n    name: 'readSlots',\n    outputs: [{ name: 'contents', internalType: 'bytes32[]', type: 'bytes32[]' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'interfaceId', internalType: 'bytes4', type: 'bytes4' }],\n    name: 'supportsInterface',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n    stateMutability: 'pure',\n  },\n  { type: 'function', inputs: [], name: 'sweep', outputs: [], stateMutability: 'nonpayable' },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// ECDSA\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const ecdsaAbi = [\n  { type: 'error', inputs: [], name: 'ECDSAInvalidSignature' },\n  {\n    type: 'error',\n    inputs: [{ name: 'length', internalType: 'uint256', type: 'uint256' }],\n    name: 'ECDSAInvalidSignatureLength',\n  },\n  {\n    type: 'error',\n    inputs: [{ name: 's', internalType: 'bytes32', type: 'bytes32' }],\n    name: 'ECDSAInvalidSignatureS',\n  },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// ERC20\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const erc20Abi = [\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'owner', internalType: 'address', type: 'address', indexed: true },\n      { name: 'spender', internalType: 'address', type: 'address', indexed: true },\n      { name: 'amount', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'Approval',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address', indexed: true },\n      { name: 'to', internalType: 'address', type: 'address', indexed: true },\n      { name: 'amount', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'Transfer',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'DOMAIN_SEPARATOR',\n    outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'address', type: 'address' },\n    ],\n    name: 'allowance',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'spender', internalType: 'address', type: 'address' },\n      { name: 'amount', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'approve',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '', internalType: 'address', type: 'address' }],\n    name: 'balanceOf',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'decimals',\n    outputs: [{ name: '', internalType: 'uint8', type: 'uint8' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'name',\n    outputs: [{ name: '', internalType: 'string', type: 'string' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '', internalType: 'address', type: 'address' }],\n    name: 'nonces',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'owner', internalType: 'address', type: 'address' },\n      { name: 'spender', internalType: 'address', type: 'address' },\n      { name: 'value', internalType: 'uint256', type: 'uint256' },\n      { name: 'deadline', internalType: 'uint256', type: 'uint256' },\n      { name: 'v', internalType: 'uint8', type: 'uint8' },\n      { name: 'r', internalType: 'bytes32', type: 'bytes32' },\n      { name: 's', internalType: 'bytes32', type: 'bytes32' },\n    ],\n    name: 'permit',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'symbol',\n    outputs: [{ name: '', internalType: 'string', type: 'string' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'totalSupply',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'amount', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'transfer',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address' },\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'amount', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'transferFrom',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n    stateMutability: 'nonpayable',\n  },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// ERC4626\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const erc4626Abi = [\n  { type: 'error', inputs: [], name: 'MathOverflowedMulDiv' },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'owner', internalType: 'address', type: 'address', indexed: true },\n      { name: 'spender', internalType: 'address', type: 'address', indexed: true },\n      { name: 'amount', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'Approval',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'caller', internalType: 'address', type: 'address', indexed: true },\n      { name: 'owner', internalType: 'address', type: 'address', indexed: true },\n      { name: 'assets', internalType: 'uint256', type: 'uint256', indexed: false },\n      { name: 'shares', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'Deposit',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address', indexed: true },\n      { name: 'to', internalType: 'address', type: 'address', indexed: true },\n      { name: 'amount', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'Transfer',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'caller', internalType: 'address', type: 'address', indexed: true },\n      { name: 'receiver', internalType: 'address', type: 'address', indexed: true },\n      { name: 'owner', internalType: 'address', type: 'address', indexed: true },\n      { name: 'assets', internalType: 'uint256', type: 'uint256', indexed: false },\n      { name: 'shares', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'Withdraw',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'DOMAIN_SEPARATOR',\n    outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'address', type: 'address' },\n    ],\n    name: 'allowance',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'spender', internalType: 'address', type: 'address' },\n      { name: 'amount', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'approve',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'asset',\n    outputs: [{ name: '', internalType: 'contract ERC20', type: 'address' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '', internalType: 'address', type: 'address' }],\n    name: 'balanceOf',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'shares', internalType: 'uint256', type: 'uint256' }],\n    name: 'convertToAssets',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'assets', internalType: 'uint256', type: 'uint256' }],\n    name: 'convertToShares',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'decimals',\n    outputs: [{ name: '', internalType: 'uint8', type: 'uint8' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'decimalsOffset',\n    outputs: [{ name: '', internalType: 'uint8', type: 'uint8' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'assets', internalType: 'uint256', type: 'uint256' },\n      { name: 'receiver', internalType: 'address', type: 'address' },\n    ],\n    name: 'deposit',\n    outputs: [{ name: 'shares', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '', internalType: 'address', type: 'address' }],\n    name: 'maxDeposit',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '', internalType: 'address', type: 'address' }],\n    name: 'maxMint',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'owner', internalType: 'address', type: 'address' }],\n    name: 'maxRedeem',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'owner', internalType: 'address', type: 'address' }],\n    name: 'maxWithdraw',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'shares', internalType: 'uint256', type: 'uint256' },\n      { name: 'receiver', internalType: 'address', type: 'address' },\n    ],\n    name: 'mint',\n    outputs: [{ name: 'assets', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'name',\n    outputs: [{ name: '', internalType: 'string', type: 'string' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '', internalType: 'address', type: 'address' }],\n    name: 'nonces',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'owner', internalType: 'address', type: 'address' },\n      { name: 'spender', internalType: 'address', type: 'address' },\n      { name: 'value', internalType: 'uint256', type: 'uint256' },\n      { name: 'deadline', internalType: 'uint256', type: 'uint256' },\n      { name: 'v', internalType: 'uint8', type: 'uint8' },\n      { name: 'r', internalType: 'bytes32', type: 'bytes32' },\n      { name: 's', internalType: 'bytes32', type: 'bytes32' },\n    ],\n    name: 'permit',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'assets', internalType: 'uint256', type: 'uint256' }],\n    name: 'previewDeposit',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'shares', internalType: 'uint256', type: 'uint256' }],\n    name: 'previewMint',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'shares', internalType: 'uint256', type: 'uint256' }],\n    name: 'previewRedeem',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'assets', internalType: 'uint256', type: 'uint256' }],\n    name: 'previewWithdraw',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'shares', internalType: 'uint256', type: 'uint256' },\n      { name: 'receiver', internalType: 'address', type: 'address' },\n      { name: 'owner', internalType: 'address', type: 'address' },\n    ],\n    name: 'redeem',\n    outputs: [{ name: 'assets', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'symbol',\n    outputs: [{ name: '', internalType: 'string', type: 'string' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'totalAssets',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'totalSupply',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'amount', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'transfer',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address' },\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'amount', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'transferFrom',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'assets', internalType: 'uint256', type: 'uint256' },\n      { name: 'receiver', internalType: 'address', type: 'address' },\n      { name: 'owner', internalType: 'address', type: 'address' },\n    ],\n    name: 'withdraw',\n    outputs: [{ name: 'shares', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'nonpayable',\n  },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// ERC721\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const erc721Abi = [\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'owner', internalType: 'address', type: 'address', indexed: true },\n      { name: 'spender', internalType: 'address', type: 'address', indexed: true },\n      { name: 'id', internalType: 'uint256', type: 'uint256', indexed: true },\n    ],\n    name: 'Approval',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'owner', internalType: 'address', type: 'address', indexed: true },\n      { name: 'operator', internalType: 'address', type: 'address', indexed: true },\n      { name: 'approved', internalType: 'bool', type: 'bool', indexed: false },\n    ],\n    name: 'ApprovalForAll',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address', indexed: true },\n      { name: 'to', internalType: 'address', type: 'address', indexed: true },\n      { name: 'id', internalType: 'uint256', type: 'uint256', indexed: true },\n    ],\n    name: 'Transfer',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'spender', internalType: 'address', type: 'address' },\n      { name: 'id', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'approve',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'owner', internalType: 'address', type: 'address' }],\n    name: 'balanceOf',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    name: 'getApproved',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'address', type: 'address' },\n    ],\n    name: 'isApprovedForAll',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'name',\n    outputs: [{ name: '', internalType: 'string', type: 'string' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'id', internalType: 'uint256', type: 'uint256' }],\n    name: 'ownerOf',\n    outputs: [{ name: 'owner', internalType: 'address', type: 'address' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address' },\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'id', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'safeTransferFrom',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address' },\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'id', internalType: 'uint256', type: 'uint256' },\n      { name: 'data', internalType: 'bytes', type: 'bytes' },\n    ],\n    name: 'safeTransferFrom',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'operator', internalType: 'address', type: 'address' },\n      { name: 'approved', internalType: 'bool', type: 'bool' },\n    ],\n    name: 'setApprovalForAll',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'interfaceId', internalType: 'bytes4', type: 'bytes4' }],\n    name: 'supportsInterface',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'symbol',\n    outputs: [{ name: '', internalType: 'string', type: 'string' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'id', internalType: 'uint256', type: 'uint256' }],\n    name: 'tokenURI',\n    outputs: [{ name: '', internalType: 'string', type: 'string' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address' },\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'id', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'transferFrom',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// ERC721TokenReceiver\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const erc721TokenReceiverAbi = [\n  {\n    type: 'function',\n    inputs: [\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'uint256', type: 'uint256' },\n      { name: '', internalType: 'bytes', type: 'bytes' },\n    ],\n    name: 'onERC721Received',\n    outputs: [{ name: '', internalType: 'bytes4', type: 'bytes4' }],\n    stateMutability: 'nonpayable',\n  },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// FeeManager\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const feeManagerAbi = [\n  {\n    type: 'constructor',\n    inputs: [\n      {\n        name: '__fees',\n        internalType: 'struct IFeeManager.Fees',\n        type: 'tuple',\n        components: [\n          { name: 'managementFee', internalType: 'uint256', type: 'uint256' },\n          { name: 'performanceFee', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n    ],\n    stateMutability: 'nonpayable',\n  },\n  { type: 'error', inputs: [], name: 'InvalidFeesError' },\n  { type: 'error', inputs: [], name: 'InvalidInputError' },\n  { type: 'error', inputs: [], name: 'TooSoonError' },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'user', internalType: 'address', type: 'address', indexed: true },\n      { name: 'newOwner', internalType: 'address', type: 'address', indexed: true },\n    ],\n    name: 'OwnershipTransferred',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      {\n        name: 'fees',\n        internalType: 'struct IFeeManager.Fees',\n        type: 'tuple',\n        components: [\n          { name: 'managementFee', internalType: 'uint256', type: 'uint256' },\n          { name: 'performanceFee', internalType: 'uint256', type: 'uint256' },\n        ],\n        indexed: false,\n      },\n    ],\n    name: 'ProposedFeesConfirmed',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      {\n        name: 'fees',\n        internalType: 'struct IFeeManager.Fees',\n        type: 'tuple',\n        components: [\n          { name: 'managementFee', internalType: 'uint256', type: 'uint256' },\n          { name: 'performanceFee', internalType: 'uint256', type: 'uint256' },\n        ],\n        indexed: false,\n      },\n    ],\n    name: 'ProposedFeesSet',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'newOwner', internalType: 'address', type: 'address', indexed: false }],\n    name: 'TransferOwnerRequested',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'MIN_WAIT_TIME',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'PRECISION',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'WAIT_TIME',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      {\n        name: '__fees',\n        internalType: 'struct IFeeManager.Fees',\n        type: 'tuple',\n        components: [\n          { name: 'managementFee', internalType: 'uint256', type: 'uint256' },\n          { name: 'performanceFee', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n    ],\n    name: 'confirmFees',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'getFees',\n    outputs: [\n      {\n        name: '',\n        internalType: 'struct IFeeManager.Fees',\n        type: 'tuple',\n        components: [\n          { name: 'managementFee', internalType: 'uint256', type: 'uint256' },\n          { name: 'performanceFee', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n    ],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'getProposedFees',\n    outputs: [\n      {\n        name: '',\n        internalType: 'struct IFeeManager.Fees',\n        type: 'tuple',\n        components: [\n          { name: 'managementFee', internalType: 'uint256', type: 'uint256' },\n          { name: 'performanceFee', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n    ],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'getProposedFeesSetTime',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'owner',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'pendingOwner',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'pendingOwnerTime',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '_principal', internalType: 'uint256', type: 'uint256' },\n      { name: '_interest', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'processFees',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '_newOwner', internalType: 'address', type: 'address' }],\n    name: 'requestTransferOwner',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      {\n        name: '__fees',\n        internalType: 'struct IFeeManager.Fees',\n        type: 'tuple',\n        components: [\n          { name: 'managementFee', internalType: 'uint256', type: 'uint256' },\n          { name: 'performanceFee', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n    ],\n    name: 'setProposedFees',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'transferOwnership',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'newOwner', internalType: 'address', type: 'address' }],\n    name: 'transferOwnership',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n] as const;\n\nexport const iAuctionLoanLiquidatorAbi = [\n  {\n    type: 'function',\n    inputs: [{ name: '_loanContract', internalType: 'address', type: 'address' }],\n    name: 'addLoanContract',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '_contract', internalType: 'address', type: 'address' },\n      { name: '_tokenId', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'getAuctionHash',\n    outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'getLiquidationDistributor',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'getTriggerFee',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'getValidLoanContracts',\n    outputs: [{ name: '', internalType: 'address[]', type: 'address[]' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '_contract', internalType: 'address', type: 'address' },\n      { name: '_tokenId', internalType: 'uint256', type: 'uint256' },\n      {\n        name: '_auction',\n        internalType: 'struct IAuctionLoanLiquidator.Auction',\n        type: 'tuple',\n        components: [\n          { name: 'loanAddress', internalType: 'address', type: 'address' },\n          { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n          { name: 'highestBid', internalType: 'uint256', type: 'uint256' },\n          { name: 'triggerFee', internalType: 'uint256', type: 'uint256' },\n          { name: 'minBid', internalType: 'uint256', type: 'uint256' },\n          { name: 'highestBidder', internalType: 'address', type: 'address' },\n          { name: 'duration', internalType: 'uint96', type: 'uint96' },\n          { name: 'asset', internalType: 'address', type: 'address' },\n          { name: 'startTime', internalType: 'uint96', type: 'uint96' },\n          { name: 'originator', internalType: 'address', type: 'address' },\n          { name: 'lastBidTime', internalType: 'uint96', type: 'uint96' },\n        ],\n      },\n      { name: '_bid', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'placeBid',\n    outputs: [\n      {\n        name: '',\n        internalType: 'struct IAuctionLoanLiquidator.Auction',\n        type: 'tuple',\n        components: [\n          { name: 'loanAddress', internalType: 'address', type: 'address' },\n          { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n          { name: 'highestBid', internalType: 'uint256', type: 'uint256' },\n          { name: 'triggerFee', internalType: 'uint256', type: 'uint256' },\n          { name: 'minBid', internalType: 'uint256', type: 'uint256' },\n          { name: 'highestBidder', internalType: 'address', type: 'address' },\n          { name: 'duration', internalType: 'uint96', type: 'uint96' },\n          { name: 'asset', internalType: 'address', type: 'address' },\n          { name: 'startTime', internalType: 'uint96', type: 'uint96' },\n          { name: 'originator', internalType: 'address', type: 'address' },\n          { name: 'lastBidTime', internalType: 'uint96', type: 'uint96' },\n        ],\n      },\n    ],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '_loanContract', internalType: 'address', type: 'address' }],\n    name: 'removeLoanContract',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      {\n        name: '_auction',\n        internalType: 'struct IAuctionLoanLiquidator.Auction',\n        type: 'tuple',\n        components: [\n          { name: 'loanAddress', internalType: 'address', type: 'address' },\n          { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n          { name: 'highestBid', internalType: 'uint256', type: 'uint256' },\n          { name: 'triggerFee', internalType: 'uint256', type: 'uint256' },\n          { name: 'minBid', internalType: 'uint256', type: 'uint256' },\n          { name: 'highestBidder', internalType: 'address', type: 'address' },\n          { name: 'duration', internalType: 'uint96', type: 'uint96' },\n          { name: 'asset', internalType: 'address', type: 'address' },\n          { name: 'startTime', internalType: 'uint96', type: 'uint96' },\n          { name: 'originator', internalType: 'address', type: 'address' },\n          { name: 'lastBidTime', internalType: 'uint96', type: 'uint96' },\n        ],\n      },\n      {\n        name: '_loan',\n        internalType: 'struct IMultiSourceLoan.Loan',\n        type: 'tuple',\n        components: [\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'tranche',\n            internalType: 'struct IMultiSourceLoan.Tranche[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n              { name: 'floor', internalType: 'uint256', type: 'uint256' },\n              { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n              { name: 'lender', internalType: 'address', type: 'address' },\n              { name: 'accruedInterest', internalType: 'uint256', type: 'uint256' },\n              { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n              { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n            ],\n          },\n          { name: 'protocolFee', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n    ],\n    name: 'settleAuction',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '_liquidationDistributor', internalType: 'address', type: 'address' }],\n    name: 'updateLiquidationDistributor',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'triggerFee', internalType: 'uint256', type: 'uint256' }],\n    name: 'updateTriggerFee',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// IBaseInterestAllocator\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const iBaseInterestAllocatorAbi = [\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'total', internalType: 'uint256', type: 'uint256', indexed: false }],\n    name: 'AllTransfered',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'currentIdle', internalType: 'uint256', type: 'uint256', indexed: false },\n      { name: 'targetIdle', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'Reallocated',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'getAssetsAllocated',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'getBaseApr',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'getBaseAprWithUpdate',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '_currentIdle', internalType: 'uint256', type: 'uint256' },\n      { name: '_targetIdle', internalType: 'uint256', type: 'uint256' },\n      { name: '_force', internalType: 'bool', type: 'bool' },\n    ],\n    name: 'reallocate',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  { type: 'function', inputs: [], name: 'transferAll', outputs: [], stateMutability: 'nonpayable' },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// IBaseLoan\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const iBaseLoanAbi = [\n  {\n    type: 'function',\n    inputs: [{ name: '_minOfferId', internalType: 'uint256', type: 'uint256' }],\n    name: 'cancelAllOffers',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '_offerId', internalType: 'uint256', type: 'uint256' }],\n    name: 'cancelOffer',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '_renegotiationId', internalType: 'uint256', type: 'uint256' }],\n    name: 'cancelRenegotiationOffer',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'getTotalLoansIssued',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// ICryptoPunksMarket\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const iCryptoPunksMarketAbi = [\n  {\n    type: 'function',\n    inputs: [{ name: 'user', internalType: 'address', type: 'address' }],\n    name: 'pendingWithdrawals',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'punkIndex', internalType: 'uint256', type: 'uint256' }],\n    name: 'punkBids',\n    outputs: [\n      {\n        name: '',\n        internalType: 'struct ICryptoPunksMarket.Bid',\n        type: 'tuple',\n        components: [\n          { name: 'hasBid', internalType: 'bool', type: 'bool' },\n          { name: 'punkIndex', internalType: 'uint256', type: 'uint256' },\n          { name: 'bidder', internalType: 'address', type: 'address' },\n          { name: 'value', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n    ],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'punkIndex', internalType: 'uint256', type: 'uint256' }],\n    name: 'punkIndexToAddress',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'punkIndex', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'transferPunk',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  { type: 'function', inputs: [], name: 'withdraw', outputs: [], stateMutability: 'nonpayable' },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// ICurve\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const iCurveAbi = [\n  {\n    type: 'function',\n    inputs: [\n      { name: '_i', internalType: 'uint128', type: 'uint128' },\n      { name: '_j', internalType: 'uint128', type: 'uint128' },\n      { name: '_dx', internalType: 'uint256', type: 'uint256' },\n      { name: '_min_dy', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'exchange',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'payable',\n  },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// IDelegateRegistry\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const iDelegateRegistryAbi = [\n  { type: 'error', inputs: [], name: 'MulticallFailed' },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address', indexed: true },\n      { name: 'to', internalType: 'address', type: 'address', indexed: true },\n      { name: 'rights', internalType: 'bytes32', type: 'bytes32', indexed: false },\n      { name: 'enable', internalType: 'bool', type: 'bool', indexed: false },\n    ],\n    name: 'DelegateAll',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address', indexed: true },\n      { name: 'to', internalType: 'address', type: 'address', indexed: true },\n      { name: 'contract_', internalType: 'address', type: 'address', indexed: true },\n      { name: 'rights', internalType: 'bytes32', type: 'bytes32', indexed: false },\n      { name: 'enable', internalType: 'bool', type: 'bool', indexed: false },\n    ],\n    name: 'DelegateContract',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address', indexed: true },\n      { name: 'to', internalType: 'address', type: 'address', indexed: true },\n      { name: 'contract_', internalType: 'address', type: 'address', indexed: true },\n      { name: 'tokenId', internalType: 'uint256', type: 'uint256', indexed: false },\n      { name: 'rights', internalType: 'bytes32', type: 'bytes32', indexed: false },\n      { name: 'amount', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'DelegateERC1155',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address', indexed: true },\n      { name: 'to', internalType: 'address', type: 'address', indexed: true },\n      { name: 'contract_', internalType: 'address', type: 'address', indexed: true },\n      { name: 'rights', internalType: 'bytes32', type: 'bytes32', indexed: false },\n      { name: 'amount', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'DelegateERC20',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address', indexed: true },\n      { name: 'to', internalType: 'address', type: 'address', indexed: true },\n      { name: 'contract_', internalType: 'address', type: 'address', indexed: true },\n      { name: 'tokenId', internalType: 'uint256', type: 'uint256', indexed: false },\n      { name: 'rights', internalType: 'bytes32', type: 'bytes32', indexed: false },\n      { name: 'enable', internalType: 'bool', type: 'bool', indexed: false },\n    ],\n    name: 'DelegateERC721',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'from', internalType: 'address', type: 'address' },\n      { name: 'rights', internalType: 'bytes32', type: 'bytes32' },\n    ],\n    name: 'checkDelegateForAll',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'from', internalType: 'address', type: 'address' },\n      { name: 'contract_', internalType: 'address', type: 'address' },\n      { name: 'rights', internalType: 'bytes32', type: 'bytes32' },\n    ],\n    name: 'checkDelegateForContract',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'from', internalType: 'address', type: 'address' },\n      { name: 'contract_', internalType: 'address', type: 'address' },\n      { name: 'tokenId', internalType: 'uint256', type: 'uint256' },\n      { name: 'rights', internalType: 'bytes32', type: 'bytes32' },\n    ],\n    name: 'checkDelegateForERC1155',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'from', internalType: 'address', type: 'address' },\n      { name: 'contract_', internalType: 'address', type: 'address' },\n      { name: 'rights', internalType: 'bytes32', type: 'bytes32' },\n    ],\n    name: 'checkDelegateForERC20',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'from', internalType: 'address', type: 'address' },\n      { name: 'contract_', internalType: 'address', type: 'address' },\n      { name: 'tokenId', internalType: 'uint256', type: 'uint256' },\n      { name: 'rights', internalType: 'bytes32', type: 'bytes32' },\n    ],\n    name: 'checkDelegateForERC721',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'rights', internalType: 'bytes32', type: 'bytes32' },\n      { name: 'enable', internalType: 'bool', type: 'bool' },\n    ],\n    name: 'delegateAll',\n    outputs: [{ name: 'delegationHash', internalType: 'bytes32', type: 'bytes32' }],\n    stateMutability: 'payable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'contract_', internalType: 'address', type: 'address' },\n      { name: 'rights', internalType: 'bytes32', type: 'bytes32' },\n      { name: 'enable', internalType: 'bool', type: 'bool' },\n    ],\n    name: 'delegateContract',\n    outputs: [{ name: 'delegationHash', internalType: 'bytes32', type: 'bytes32' }],\n    stateMutability: 'payable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'contract_', internalType: 'address', type: 'address' },\n      { name: 'tokenId', internalType: 'uint256', type: 'uint256' },\n      { name: 'rights', internalType: 'bytes32', type: 'bytes32' },\n      { name: 'amount', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'delegateERC1155',\n    outputs: [{ name: 'delegationHash', internalType: 'bytes32', type: 'bytes32' }],\n    stateMutability: 'payable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'contract_', internalType: 'address', type: 'address' },\n      { name: 'rights', internalType: 'bytes32', type: 'bytes32' },\n      { name: 'amount', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'delegateERC20',\n    outputs: [{ name: 'delegationHash', internalType: 'bytes32', type: 'bytes32' }],\n    stateMutability: 'payable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'contract_', internalType: 'address', type: 'address' },\n      { name: 'tokenId', internalType: 'uint256', type: 'uint256' },\n      { name: 'rights', internalType: 'bytes32', type: 'bytes32' },\n      { name: 'enable', internalType: 'bool', type: 'bool' },\n    ],\n    name: 'delegateERC721',\n    outputs: [{ name: 'delegationHash', internalType: 'bytes32', type: 'bytes32' }],\n    stateMutability: 'payable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'delegationHashes', internalType: 'bytes32[]', type: 'bytes32[]' }],\n    name: 'getDelegationsFromHashes',\n    outputs: [\n      {\n        name: 'delegations',\n        internalType: 'struct IDelegateRegistry.Delegation[]',\n        type: 'tuple[]',\n        components: [\n          { name: 'type_', internalType: 'enum IDelegateRegistry.DelegationType', type: 'uint8' },\n          { name: 'to', internalType: 'address', type: 'address' },\n          { name: 'from', internalType: 'address', type: 'address' },\n          { name: 'rights', internalType: 'bytes32', type: 'bytes32' },\n          { name: 'contract_', internalType: 'address', type: 'address' },\n          { name: 'tokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'amount', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n    ],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'to', internalType: 'address', type: 'address' }],\n    name: 'getIncomingDelegationHashes',\n    outputs: [{ name: 'delegationHashes', internalType: 'bytes32[]', type: 'bytes32[]' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'to', internalType: 'address', type: 'address' }],\n    name: 'getIncomingDelegations',\n    outputs: [\n      {\n        name: 'delegations',\n        internalType: 'struct IDelegateRegistry.Delegation[]',\n        type: 'tuple[]',\n        components: [\n          { name: 'type_', internalType: 'enum IDelegateRegistry.DelegationType', type: 'uint8' },\n          { name: 'to', internalType: 'address', type: 'address' },\n          { name: 'from', internalType: 'address', type: 'address' },\n          { name: 'rights', internalType: 'bytes32', type: 'bytes32' },\n          { name: 'contract_', internalType: 'address', type: 'address' },\n          { name: 'tokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'amount', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n    ],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'from', internalType: 'address', type: 'address' }],\n    name: 'getOutgoingDelegationHashes',\n    outputs: [{ name: 'delegationHashes', internalType: 'bytes32[]', type: 'bytes32[]' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'from', internalType: 'address', type: 'address' }],\n    name: 'getOutgoingDelegations',\n    outputs: [\n      {\n        name: 'delegations',\n        internalType: 'struct IDelegateRegistry.Delegation[]',\n        type: 'tuple[]',\n        components: [\n          { name: 'type_', internalType: 'enum IDelegateRegistry.DelegationType', type: 'uint8' },\n          { name: 'to', internalType: 'address', type: 'address' },\n          { name: 'from', internalType: 'address', type: 'address' },\n          { name: 'rights', internalType: 'bytes32', type: 'bytes32' },\n          { name: 'contract_', internalType: 'address', type: 'address' },\n          { name: 'tokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'amount', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n    ],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'data', internalType: 'bytes[]', type: 'bytes[]' }],\n    name: 'multicall',\n    outputs: [{ name: 'results', internalType: 'bytes[]', type: 'bytes[]' }],\n    stateMutability: 'payable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'location', internalType: 'bytes32', type: 'bytes32' }],\n    name: 'readSlot',\n    outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'locations', internalType: 'bytes32[]', type: 'bytes32[]' }],\n    name: 'readSlots',\n    outputs: [{ name: '', internalType: 'bytes32[]', type: 'bytes32[]' }],\n    stateMutability: 'view',\n  },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// IERC1271\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const ierc1271Abi = [\n  {\n    type: 'function',\n    inputs: [\n      { name: 'hash', internalType: 'bytes32', type: 'bytes32' },\n      { name: 'signature', internalType: 'bytes', type: 'bytes' },\n    ],\n    name: 'isValidSignature',\n    outputs: [{ name: 'magicValue', internalType: 'bytes4', type: 'bytes4' }],\n    stateMutability: 'view',\n  },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// IERC721TokenReceiver\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const ierc721TokenReceiverAbi = [\n  {\n    type: 'function',\n    inputs: [\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'uint256', type: 'uint256' },\n      { name: '', internalType: 'bytes', type: 'bytes' },\n    ],\n    name: 'onERC721Received',\n    outputs: [{ name: '', internalType: 'bytes4', type: 'bytes4' }],\n    stateMutability: 'nonpayable',\n  },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// IFeeManager\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const iFeeManagerAbi = [\n  {\n    type: 'function',\n    inputs: [],\n    name: 'PRECISION',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      {\n        name: '_fees',\n        internalType: 'struct IFeeManager.Fees',\n        type: 'tuple',\n        components: [\n          { name: 'managementFee', internalType: 'uint256', type: 'uint256' },\n          { name: 'performanceFee', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n    ],\n    name: 'confirmFees',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'getFees',\n    outputs: [\n      {\n        name: '',\n        internalType: 'struct IFeeManager.Fees',\n        type: 'tuple',\n        components: [\n          { name: 'managementFee', internalType: 'uint256', type: 'uint256' },\n          { name: 'performanceFee', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n    ],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'getProposedFees',\n    outputs: [\n      {\n        name: '',\n        internalType: 'struct IFeeManager.Fees',\n        type: 'tuple',\n        components: [\n          { name: 'managementFee', internalType: 'uint256', type: 'uint256' },\n          { name: 'performanceFee', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n    ],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'getProposedFeesSetTime',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '_principal', internalType: 'uint256', type: 'uint256' },\n      { name: '_interest', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'processFees',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      {\n        name: '_fee',\n        internalType: 'struct IFeeManager.Fees',\n        type: 'tuple',\n        components: [\n          { name: 'managementFee', internalType: 'uint256', type: 'uint256' },\n          { name: 'performanceFee', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n    ],\n    name: 'setProposedFees',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// ILiquidationDistributor\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const iLiquidationDistributorAbi = [\n  {\n    type: 'function',\n    inputs: [\n      { name: '_repayment', internalType: 'uint256', type: 'uint256' },\n      {\n        name: '_loan',\n        internalType: 'struct IMultiSourceLoan.Loan',\n        type: 'tuple',\n        components: [\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'tranche',\n            internalType: 'struct IMultiSourceLoan.Tranche[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n              { name: 'floor', internalType: 'uint256', type: 'uint256' },\n              { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n              { name: 'lender', internalType: 'address', type: 'address' },\n              { name: 'accruedInterest', internalType: 'uint256', type: 'uint256' },\n              { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n              { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n            ],\n          },\n          { name: 'protocolFee', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n    ],\n    name: 'distribute',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// ILiquidationHandler\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const iLiquidationHandlerAbi = [\n  {\n    type: 'function',\n    inputs: [],\n    name: 'getLiquidationAuctionDuration',\n    outputs: [{ name: '', internalType: 'uint48', type: 'uint48' }],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'getLiquidator',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '_newDuration', internalType: 'uint48', type: 'uint48' }],\n    name: 'updateLiquidationAuctionDuration',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'loanLiquidator', internalType: 'address', type: 'address' }],\n    name: 'updateLiquidationContract',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// ILoanCallback\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const iLoanCallbackAbi = [\n  { type: 'error', inputs: [], name: 'InvalidCallbackError' },\n  {\n    type: 'function',\n    inputs: [\n      {\n        name: '_loan',\n        internalType: 'struct IMultiSourceLoan.Loan',\n        type: 'tuple',\n        components: [\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'tranche',\n            internalType: 'struct IMultiSourceLoan.Tranche[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n              { name: 'floor', internalType: 'uint256', type: 'uint256' },\n              { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n              { name: 'lender', internalType: 'address', type: 'address' },\n              { name: 'accruedInterest', internalType: 'uint256', type: 'uint256' },\n              { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n              { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n            ],\n          },\n          { name: 'protocolFee', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n      { name: '_executionData', internalType: 'bytes', type: 'bytes' },\n    ],\n    name: 'afterNFTTransfer',\n    outputs: [{ name: '', internalType: 'bytes4', type: 'bytes4' }],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      {\n        name: '_loan',\n        internalType: 'struct IMultiSourceLoan.Loan',\n        type: 'tuple',\n        components: [\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'tranche',\n            internalType: 'struct IMultiSourceLoan.Tranche[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n              { name: 'floor', internalType: 'uint256', type: 'uint256' },\n              { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n              { name: 'lender', internalType: 'address', type: 'address' },\n              { name: 'accruedInterest', internalType: 'uint256', type: 'uint256' },\n              { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n              { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n            ],\n          },\n          { name: 'protocolFee', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n      { name: '_fee', internalType: 'uint256', type: 'uint256' },\n      { name: '_executionData', internalType: 'bytes', type: 'bytes' },\n    ],\n    name: 'afterPrincipalTransfer',\n    outputs: [{ name: '', internalType: 'bytes4', type: 'bytes4' }],\n    stateMutability: 'nonpayable',\n  },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// ILoanLiquidator\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const iLoanLiquidatorAbi = [\n  {\n    type: 'function',\n    inputs: [\n      { name: '_loanId', internalType: 'uint256', type: 'uint256' },\n      { name: '_contract', internalType: 'address', type: 'address' },\n      { name: '_tokenId', internalType: 'uint256', type: 'uint256' },\n      { name: '_asset', internalType: 'address', type: 'address' },\n      { name: '_duration', internalType: 'uint96', type: 'uint96' },\n      { name: '_minBid', internalType: 'uint256', type: 'uint256' },\n      { name: '_originator', internalType: 'address', type: 'address' },\n    ],\n    name: 'liquidateLoan',\n    outputs: [{ name: '', internalType: 'bytes', type: 'bytes' }],\n    stateMutability: 'nonpayable',\n  },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// ILoanManager\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const iLoanManagerAbi = [\n  {\n    type: 'function',\n    inputs: [\n      {\n        name: '_callers',\n        internalType: 'struct ILoanManager.ProposedCaller[]',\n        type: 'tuple[]',\n        components: [\n          { name: 'caller', internalType: 'address', type: 'address' },\n          { name: 'isLoanContract', internalType: 'bool', type: 'bool' },\n        ],\n      },\n    ],\n    name: 'addCallers',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'getParameterSetter',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '_loanId', internalType: 'uint256', type: 'uint256' },\n      { name: '_principalAmount', internalType: 'uint256', type: 'uint256' },\n      { name: '_apr', internalType: 'uint256', type: 'uint256' },\n      { name: '_accruedInterest', internalType: 'uint256', type: 'uint256' },\n      { name: '_protocolFee', internalType: 'uint256', type: 'uint256' },\n      { name: '_received', internalType: 'uint256', type: 'uint256' },\n      { name: '_startTime', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'loanLiquidation',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '_loanId', internalType: 'uint256', type: 'uint256' },\n      { name: '_principalAmount', internalType: 'uint256', type: 'uint256' },\n      { name: '_apr', internalType: 'uint256', type: 'uint256' },\n      { name: '_accruedInterest', internalType: 'uint256', type: 'uint256' },\n      { name: '_protocolFee', internalType: 'uint256', type: 'uint256' },\n      { name: '_startTime', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'loanRepayment',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '_offerHandler', internalType: 'address', type: 'address' }],\n    name: 'updateOfferHandler',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '_offer', internalType: 'bytes', type: 'bytes' },\n      { name: '_protocolFee', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'validateOffer',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// ILoanManagerRegistry\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const iLoanManagerRegistryAbi = [\n  {\n    type: 'function',\n    inputs: [{ name: '_loanManager', internalType: 'address', type: 'address' }],\n    name: 'addLoanManager',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '_loanManager', internalType: 'address', type: 'address' }],\n    name: 'isLoanManager',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '_loanManager', internalType: 'address', type: 'address' }],\n    name: 'removeLoanManager',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// IMultiSourceLoan\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const iMultiSourceLoanAbi = [\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      {\n        name: 'loanId',\n        type: 'uint256',\n        indexed: false,\n        internalType: 'uint256',\n      },\n      {\n        name: 'delegate',\n        type: 'address',\n        indexed: false,\n        internalType: 'address',\n      },\n      {\n        name: '_rights',\n        type: 'bytes32',\n        indexed: false,\n        internalType: 'bytes32',\n      },\n      {\n        name: 'value',\n        type: 'bool',\n        indexed: false,\n        internalType: 'bool',\n      },\n    ],\n    name: 'Delegated',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'newFlashActionContract', internalType: 'address', type: 'address', indexed: false },\n    ],\n    name: 'FlashActionContractUpdated',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'loanId', internalType: 'uint256', type: 'uint256', indexed: false },\n      { name: 'target', internalType: 'address', type: 'address', indexed: false },\n      { name: 'data', internalType: 'bytes', type: 'bytes', indexed: false },\n    ],\n    name: 'FlashActionExecuted',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'loanId', internalType: 'uint256', type: 'uint256', indexed: false },\n      { name: 'offerId', internalType: 'uint256[]', type: 'uint256[]', indexed: false },\n      {\n        name: 'loan',\n        internalType: 'struct IMultiSourceLoan.Loan',\n        type: 'tuple',\n        components: [\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'tranche',\n            internalType: 'struct IMultiSourceLoan.Tranche[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n              { name: 'floor', internalType: 'uint256', type: 'uint256' },\n              { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n              { name: 'lender', internalType: 'address', type: 'address' },\n              { name: 'accruedInterest', internalType: 'uint256', type: 'uint256' },\n              { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n              { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n            ],\n          },\n          { name: 'protocolFee', internalType: 'uint256', type: 'uint256' },\n        ],\n        indexed: false,\n      },\n      { name: 'fee', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'LoanEmitted',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'loanId', internalType: 'uint256', type: 'uint256', indexed: false }],\n    name: 'LoanLiquidated',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'renegotiationId', internalType: 'uint256', type: 'uint256', indexed: false },\n      { name: 'oldLoanId', internalType: 'uint256', type: 'uint256', indexed: false },\n      { name: 'newLoanId', internalType: 'uint256', type: 'uint256', indexed: false },\n      {\n        name: 'loan',\n        internalType: 'struct IMultiSourceLoan.Loan',\n        type: 'tuple',\n        components: [\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'tranche',\n            internalType: 'struct IMultiSourceLoan.Tranche[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n              { name: 'floor', internalType: 'uint256', type: 'uint256' },\n              { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n              { name: 'lender', internalType: 'address', type: 'address' },\n              { name: 'accruedInterest', internalType: 'uint256', type: 'uint256' },\n              { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n              { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n            ],\n          },\n          { name: 'protocolFee', internalType: 'uint256', type: 'uint256' },\n        ],\n        indexed: false,\n      },\n      { name: 'fee', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'LoanRefinanced',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'loanId', internalType: 'uint256', type: 'uint256', indexed: false },\n      { name: 'newLoanId', internalType: 'uint256', type: 'uint256', indexed: false },\n      {\n        name: 'loan',\n        internalType: 'struct IMultiSourceLoan.Loan',\n        type: 'tuple',\n        components: [\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'tranche',\n            internalType: 'struct IMultiSourceLoan.Tranche[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n              { name: 'floor', internalType: 'uint256', type: 'uint256' },\n              { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n              { name: 'lender', internalType: 'address', type: 'address' },\n              { name: 'accruedInterest', internalType: 'uint256', type: 'uint256' },\n              { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n              { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n            ],\n          },\n          { name: 'protocolFee', internalType: 'uint256', type: 'uint256' },\n        ],\n        indexed: false,\n      },\n      { name: 'offerIds', internalType: 'uint256[]', type: 'uint256[]', indexed: false },\n      { name: 'totalFee', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'LoanRefinancedFromNewOffers',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'loanId', internalType: 'uint256', type: 'uint256', indexed: false },\n      { name: 'totalRepayment', internalType: 'uint256', type: 'uint256', indexed: false },\n      { name: 'fee', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'LoanRepaid',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'minLockPeriod', internalType: 'uint256', type: 'uint256', indexed: false }],\n    name: 'MinLockPeriodUpdated',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'delegate', internalType: 'address', type: 'address', indexed: false },\n      { name: 'collection', internalType: 'address', type: 'address', indexed: false },\n      { name: 'tokenId', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'RevokeDelegate',\n  },\n  {\n    type: 'function',\n    inputs: [\n      {\n        name: '_renegotiationOffer',\n        internalType: 'struct IMultiSourceLoan.RenegotiationOffer',\n        type: 'tuple',\n        components: [\n          { name: 'renegotiationId', internalType: 'uint256', type: 'uint256' },\n          { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n          { name: 'lender', internalType: 'address', type: 'address' },\n          { name: 'fee', internalType: 'uint256', type: 'uint256' },\n          { name: 'trancheIndex', internalType: 'uint256[]', type: 'uint256[]' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n          { name: 'expirationTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n      {\n        name: '_loan',\n        internalType: 'struct IMultiSourceLoan.Loan',\n        type: 'tuple',\n        components: [\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'tranche',\n            internalType: 'struct IMultiSourceLoan.Tranche[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n              { name: 'floor', internalType: 'uint256', type: 'uint256' },\n              { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n              { name: 'lender', internalType: 'address', type: 'address' },\n              { name: 'accruedInterest', internalType: 'uint256', type: 'uint256' },\n              { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n              { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n            ],\n          },\n          { name: 'protocolFee', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n      { name: '_renegotiationOfferSignature', internalType: 'bytes', type: 'bytes' },\n    ],\n    name: 'addNewTranche',\n    outputs: [\n      { name: '', internalType: 'uint256', type: 'uint256' },\n      {\n        name: '',\n        internalType: 'struct IMultiSourceLoan.Loan',\n        type: 'tuple',\n        components: [\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'tranche',\n            internalType: 'struct IMultiSourceLoan.Tranche[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n              { name: 'floor', internalType: 'uint256', type: 'uint256' },\n              { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n              { name: 'lender', internalType: 'address', type: 'address' },\n              { name: 'accruedInterest', internalType: 'uint256', type: 'uint256' },\n              { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n              { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n            ],\n          },\n          { name: 'protocolFee', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n    ],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '_loanId', internalType: 'uint256', type: 'uint256' },\n      {\n        name: '_loan',\n        internalType: 'struct IMultiSourceLoan.Loan',\n        type: 'tuple',\n        components: [\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'tranche',\n            internalType: 'struct IMultiSourceLoan.Tranche[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n              { name: 'floor', internalType: 'uint256', type: 'uint256' },\n              { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n              { name: 'lender', internalType: 'address', type: 'address' },\n              { name: 'accruedInterest', internalType: 'uint256', type: 'uint256' },\n              { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n              { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n            ],\n          },\n          { name: 'protocolFee', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n      { name: '_delegate', internalType: 'address', type: 'address' },\n      { name: '_rights', internalType: 'bytes32', type: 'bytes32' },\n      { name: '_value', internalType: 'bool', type: 'bool' },\n    ],\n    name: 'delegate',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      {\n        name: '_loanExecutionData',\n        internalType: 'struct IMultiSourceLoan.LoanExecutionData',\n        type: 'tuple',\n        components: [\n          {\n            name: 'executionData',\n            internalType: 'struct IMultiSourceLoan.ExecutionData',\n            type: 'tuple',\n            components: [\n              {\n                name: 'offerExecution',\n                internalType: 'struct IMultiSourceLoan.OfferExecution[]',\n                type: 'tuple[]',\n                components: [\n                  {\n                    name: 'offer',\n                    internalType: 'struct IMultiSourceLoan.LoanOffer',\n                    type: 'tuple',\n                    components: [\n                      { name: 'offerId', internalType: 'uint256', type: 'uint256' },\n                      { name: 'lender', internalType: 'address', type: 'address' },\n                      { name: 'fee', internalType: 'uint256', type: 'uint256' },\n                      { name: 'capacity', internalType: 'uint256', type: 'uint256' },\n                      { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n                      { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n                      { name: 'principalAddress', internalType: 'address', type: 'address' },\n                      { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n                      { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n                      { name: 'expirationTime', internalType: 'uint256', type: 'uint256' },\n                      { name: 'duration', internalType: 'uint256', type: 'uint256' },\n                      { name: 'maxSeniorRepayment', internalType: 'uint256', type: 'uint256' },\n                      {\n                        name: 'validators',\n                        internalType: 'struct IBaseLoan.OfferValidator[]',\n                        type: 'tuple[]',\n                        components: [\n                          { name: 'validator', internalType: 'address', type: 'address' },\n                          { name: 'arguments', internalType: 'bytes', type: 'bytes' },\n                        ],\n                      },\n                    ],\n                  },\n                  { name: 'amount', internalType: 'uint256', type: 'uint256' },\n                  { name: 'lenderOfferSignature', internalType: 'bytes', type: 'bytes' },\n                ],\n              },\n              { name: 'tokenId', internalType: 'uint256', type: 'uint256' },\n              { name: 'duration', internalType: 'uint256', type: 'uint256' },\n              { name: 'expirationTime', internalType: 'uint256', type: 'uint256' },\n              { name: 'principalReceiver', internalType: 'address', type: 'address' },\n              { name: 'callbackData', internalType: 'bytes', type: 'bytes' },\n            ],\n          },\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'borrowerOfferSignature', internalType: 'bytes', type: 'bytes' },\n        ],\n      },\n    ],\n    name: 'emitLoan',\n    outputs: [\n      { name: '', internalType: 'uint256', type: 'uint256' },\n      {\n        name: '',\n        internalType: 'struct IMultiSourceLoan.Loan',\n        type: 'tuple',\n        components: [\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'tranche',\n            internalType: 'struct IMultiSourceLoan.Tranche[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n              { name: 'floor', internalType: 'uint256', type: 'uint256' },\n              { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n              { name: 'lender', internalType: 'address', type: 'address' },\n              { name: 'accruedInterest', internalType: 'uint256', type: 'uint256' },\n              { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n              { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n            ],\n          },\n          { name: 'protocolFee', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n    ],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '_loanId', internalType: 'uint256', type: 'uint256' },\n      {\n        name: '_loan',\n        internalType: 'struct IMultiSourceLoan.Loan',\n        type: 'tuple',\n        components: [\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'tranche',\n            internalType: 'struct IMultiSourceLoan.Tranche[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n              { name: 'floor', internalType: 'uint256', type: 'uint256' },\n              { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n              { name: 'lender', internalType: 'address', type: 'address' },\n              { name: 'accruedInterest', internalType: 'uint256', type: 'uint256' },\n              { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n              { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n            ],\n          },\n          { name: 'protocolFee', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n      { name: '_target', internalType: 'address', type: 'address' },\n      { name: '_data', internalType: 'bytes', type: 'bytes' },\n    ],\n    name: 'executeFlashAction',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'getDelegateRegistry',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'getFlashActionContract',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '_loanId', internalType: 'uint256', type: 'uint256' }],\n    name: 'getLoanHash',\n    outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'getMaxTranches',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'getMinLockPeriod',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '_loanId', internalType: 'uint256', type: 'uint256' },\n      {\n        name: '_loan',\n        internalType: 'struct IMultiSourceLoan.Loan',\n        type: 'tuple',\n        components: [\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'tranche',\n            internalType: 'struct IMultiSourceLoan.Tranche[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n              { name: 'floor', internalType: 'uint256', type: 'uint256' },\n              { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n              { name: 'lender', internalType: 'address', type: 'address' },\n              { name: 'accruedInterest', internalType: 'uint256', type: 'uint256' },\n              { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n              { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n            ],\n          },\n          { name: 'protocolFee', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n    ],\n    name: 'liquidateLoan',\n    outputs: [{ name: '', internalType: 'bytes', type: 'bytes' }],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '_loanId', internalType: 'uint256', type: 'uint256' },\n      {\n        name: '_loan',\n        internalType: 'struct IMultiSourceLoan.Loan',\n        type: 'tuple',\n        components: [\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'tranche',\n            internalType: 'struct IMultiSourceLoan.Tranche[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n              { name: 'floor', internalType: 'uint256', type: 'uint256' },\n              { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n              { name: 'lender', internalType: 'address', type: 'address' },\n              { name: 'accruedInterest', internalType: 'uint256', type: 'uint256' },\n              { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n              { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n            ],\n          },\n          { name: 'protocolFee', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n    ],\n    name: 'loanLiquidated',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '_loanId', internalType: 'uint256', type: 'uint256' },\n      {\n        name: '_loan',\n        internalType: 'struct IMultiSourceLoan.Loan',\n        type: 'tuple',\n        components: [\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'tranche',\n            internalType: 'struct IMultiSourceLoan.Tranche[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n              { name: 'floor', internalType: 'uint256', type: 'uint256' },\n              { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n              { name: 'lender', internalType: 'address', type: 'address' },\n              { name: 'accruedInterest', internalType: 'uint256', type: 'uint256' },\n              { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n              { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n            ],\n          },\n          { name: 'protocolFee', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n      {\n        name: '_loanExecutionData',\n        internalType: 'struct IMultiSourceLoan.LoanExecutionData',\n        type: 'tuple',\n        components: [\n          {\n            name: 'executionData',\n            internalType: 'struct IMultiSourceLoan.ExecutionData',\n            type: 'tuple',\n            components: [\n              {\n                name: 'offerExecution',\n                internalType: 'struct IMultiSourceLoan.OfferExecution[]',\n                type: 'tuple[]',\n                components: [\n                  {\n                    name: 'offer',\n                    internalType: 'struct IMultiSourceLoan.LoanOffer',\n                    type: 'tuple',\n                    components: [\n                      { name: 'offerId', internalType: 'uint256', type: 'uint256' },\n                      { name: 'lender', internalType: 'address', type: 'address' },\n                      { name: 'fee', internalType: 'uint256', type: 'uint256' },\n                      { name: 'capacity', internalType: 'uint256', type: 'uint256' },\n                      { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n                      { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n                      { name: 'principalAddress', internalType: 'address', type: 'address' },\n                      { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n                      { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n                      { name: 'expirationTime', internalType: 'uint256', type: 'uint256' },\n                      { name: 'duration', internalType: 'uint256', type: 'uint256' },\n                      { name: 'maxSeniorRepayment', internalType: 'uint256', type: 'uint256' },\n                      {\n                        name: 'validators',\n                        internalType: 'struct IBaseLoan.OfferValidator[]',\n                        type: 'tuple[]',\n                        components: [\n                          { name: 'validator', internalType: 'address', type: 'address' },\n                          { name: 'arguments', internalType: 'bytes', type: 'bytes' },\n                        ],\n                      },\n                    ],\n                  },\n                  { name: 'amount', internalType: 'uint256', type: 'uint256' },\n                  { name: 'lenderOfferSignature', internalType: 'bytes', type: 'bytes' },\n                ],\n              },\n              { name: 'tokenId', internalType: 'uint256', type: 'uint256' },\n              { name: 'duration', internalType: 'uint256', type: 'uint256' },\n              { name: 'expirationTime', internalType: 'uint256', type: 'uint256' },\n              { name: 'principalReceiver', internalType: 'address', type: 'address' },\n              { name: 'callbackData', internalType: 'bytes', type: 'bytes' },\n            ],\n          },\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'borrowerOfferSignature', internalType: 'bytes', type: 'bytes' },\n        ],\n      },\n    ],\n    name: 'refinanceFromLoanExecutionData',\n    outputs: [\n      { name: '', internalType: 'uint256', type: 'uint256' },\n      {\n        name: '',\n        internalType: 'struct IMultiSourceLoan.Loan',\n        type: 'tuple',\n        components: [\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'tranche',\n            internalType: 'struct IMultiSourceLoan.Tranche[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n              { name: 'floor', internalType: 'uint256', type: 'uint256' },\n              { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n              { name: 'lender', internalType: 'address', type: 'address' },\n              { name: 'accruedInterest', internalType: 'uint256', type: 'uint256' },\n              { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n              { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n            ],\n          },\n          { name: 'protocolFee', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n    ],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      {\n        name: '_renegotiationOffer',\n        internalType: 'struct IMultiSourceLoan.RenegotiationOffer',\n        type: 'tuple',\n        components: [\n          { name: 'renegotiationId', internalType: 'uint256', type: 'uint256' },\n          { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n          { name: 'lender', internalType: 'address', type: 'address' },\n          { name: 'fee', internalType: 'uint256', type: 'uint256' },\n          { name: 'trancheIndex', internalType: 'uint256[]', type: 'uint256[]' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n          { name: 'expirationTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n      {\n        name: '_loan',\n        internalType: 'struct IMultiSourceLoan.Loan',\n        type: 'tuple',\n        components: [\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'tranche',\n            internalType: 'struct IMultiSourceLoan.Tranche[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n              { name: 'floor', internalType: 'uint256', type: 'uint256' },\n              { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n              { name: 'lender', internalType: 'address', type: 'address' },\n              { name: 'accruedInterest', internalType: 'uint256', type: 'uint256' },\n              { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n              { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n            ],\n          },\n          { name: 'protocolFee', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n      { name: '_renegotiationOfferSignature', internalType: 'bytes', type: 'bytes' },\n    ],\n    name: 'refinanceFull',\n    outputs: [\n      { name: '', internalType: 'uint256', type: 'uint256' },\n      {\n        name: '',\n        internalType: 'struct IMultiSourceLoan.Loan',\n        type: 'tuple',\n        components: [\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'tranche',\n            internalType: 'struct IMultiSourceLoan.Tranche[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n              { name: 'floor', internalType: 'uint256', type: 'uint256' },\n              { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n              { name: 'lender', internalType: 'address', type: 'address' },\n              { name: 'accruedInterest', internalType: 'uint256', type: 'uint256' },\n              { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n              { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n            ],\n          },\n          { name: 'protocolFee', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n    ],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      {\n        name: '_renegotiationOffer',\n        internalType: 'struct IMultiSourceLoan.RenegotiationOffer',\n        type: 'tuple',\n        components: [\n          { name: 'renegotiationId', internalType: 'uint256', type: 'uint256' },\n          { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n          { name: 'lender', internalType: 'address', type: 'address' },\n          { name: 'fee', internalType: 'uint256', type: 'uint256' },\n          { name: 'trancheIndex', internalType: 'uint256[]', type: 'uint256[]' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n          { name: 'expirationTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n      {\n        name: '_loan',\n        internalType: 'struct IMultiSourceLoan.Loan',\n        type: 'tuple',\n        components: [\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'tranche',\n            internalType: 'struct IMultiSourceLoan.Tranche[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n              { name: 'floor', internalType: 'uint256', type: 'uint256' },\n              { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n              { name: 'lender', internalType: 'address', type: 'address' },\n              { name: 'accruedInterest', internalType: 'uint256', type: 'uint256' },\n              { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n              { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n            ],\n          },\n          { name: 'protocolFee', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n    ],\n    name: 'refinancePartial',\n    outputs: [\n      { name: '', internalType: 'uint256', type: 'uint256' },\n      {\n        name: '',\n        internalType: 'struct IMultiSourceLoan.Loan',\n        type: 'tuple',\n        components: [\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'tranche',\n            internalType: 'struct IMultiSourceLoan.Tranche[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n              { name: 'floor', internalType: 'uint256', type: 'uint256' },\n              { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n              { name: 'lender', internalType: 'address', type: 'address' },\n              { name: 'accruedInterest', internalType: 'uint256', type: 'uint256' },\n              { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n              { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n            ],\n          },\n          { name: 'protocolFee', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n    ],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      {\n        name: '_repaymentData',\n        internalType: 'struct IMultiSourceLoan.LoanRepaymentData',\n        type: 'tuple',\n        components: [\n          {\n            name: 'data',\n            internalType: 'struct IMultiSourceLoan.SignableRepaymentData',\n            type: 'tuple',\n            components: [\n              { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n              { name: 'callbackData', internalType: 'bytes', type: 'bytes' },\n              { name: 'shouldDelegate', internalType: 'bool', type: 'bool' },\n            ],\n          },\n          {\n            name: 'loan',\n            internalType: 'struct IMultiSourceLoan.Loan',\n            type: 'tuple',\n            components: [\n              { name: 'borrower', internalType: 'address', type: 'address' },\n              { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n              { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n              { name: 'principalAddress', internalType: 'address', type: 'address' },\n              { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n              { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n              { name: 'duration', internalType: 'uint256', type: 'uint256' },\n              {\n                name: 'tranche',\n                internalType: 'struct IMultiSourceLoan.Tranche[]',\n                type: 'tuple[]',\n                components: [\n                  { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n                  { name: 'floor', internalType: 'uint256', type: 'uint256' },\n                  { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n                  { name: 'lender', internalType: 'address', type: 'address' },\n                  { name: 'accruedInterest', internalType: 'uint256', type: 'uint256' },\n                  { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n                  { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n                ],\n              },\n              { name: 'protocolFee', internalType: 'uint256', type: 'uint256' },\n            ],\n          },\n          { name: 'borrowerSignature', internalType: 'bytes', type: 'bytes' },\n        ],\n      },\n    ],\n    name: 'repayLoan',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '_delegate', internalType: 'address', type: 'address' },\n      { name: '_collection', internalType: 'address', type: 'address' },\n      { name: '_tokenId', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'revokeDelegate',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '_newFlashActionContract', internalType: 'address', type: 'address' }],\n    name: 'setFlashActionContract',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '_minLockPeriod', internalType: 'uint256', type: 'uint256' }],\n    name: 'setMinLockPeriod',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// IMulticall\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const iMulticallAbi = [\n  {\n    type: 'error',\n    inputs: [\n      { name: 'i', internalType: 'uint256', type: 'uint256' },\n      { name: 'returndata', internalType: 'bytes', type: 'bytes' },\n    ],\n    name: 'MulticallFailed',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'data', internalType: 'bytes[]', type: 'bytes[]' }],\n    name: 'multicall',\n    outputs: [{ name: 'results', internalType: 'bytes[]', type: 'bytes[]' }],\n    stateMutability: 'payable',\n  },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// IMulticall3\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const iMulticall3Abi = [\n  {\n    type: 'function',\n    inputs: [\n      {\n        name: 'calls',\n        internalType: 'struct IMulticall3.Call[]',\n        type: 'tuple[]',\n        components: [\n          { name: 'target', internalType: 'address', type: 'address' },\n          { name: 'callData', internalType: 'bytes', type: 'bytes' },\n        ],\n      },\n    ],\n    name: 'aggregate',\n    outputs: [\n      { name: 'blockNumber', internalType: 'uint256', type: 'uint256' },\n      { name: 'returnData', internalType: 'bytes[]', type: 'bytes[]' },\n    ],\n    stateMutability: 'payable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      {\n        name: 'calls',\n        internalType: 'struct IMulticall3.Call3[]',\n        type: 'tuple[]',\n        components: [\n          { name: 'target', internalType: 'address', type: 'address' },\n          { name: 'allowFailure', internalType: 'bool', type: 'bool' },\n          { name: 'callData', internalType: 'bytes', type: 'bytes' },\n        ],\n      },\n    ],\n    name: 'aggregate3',\n    outputs: [\n      {\n        name: 'returnData',\n        internalType: 'struct IMulticall3.Result[]',\n        type: 'tuple[]',\n        components: [\n          { name: 'success', internalType: 'bool', type: 'bool' },\n          { name: 'returnData', internalType: 'bytes', type: 'bytes' },\n        ],\n      },\n    ],\n    stateMutability: 'payable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      {\n        name: 'calls',\n        internalType: 'struct IMulticall3.Call3Value[]',\n        type: 'tuple[]',\n        components: [\n          { name: 'target', internalType: 'address', type: 'address' },\n          { name: 'allowFailure', internalType: 'bool', type: 'bool' },\n          { name: 'value', internalType: 'uint256', type: 'uint256' },\n          { name: 'callData', internalType: 'bytes', type: 'bytes' },\n        ],\n      },\n    ],\n    name: 'aggregate3Value',\n    outputs: [\n      {\n        name: 'returnData',\n        internalType: 'struct IMulticall3.Result[]',\n        type: 'tuple[]',\n        components: [\n          { name: 'success', internalType: 'bool', type: 'bool' },\n          { name: 'returnData', internalType: 'bytes', type: 'bytes' },\n        ],\n      },\n    ],\n    stateMutability: 'payable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      {\n        name: 'calls',\n        internalType: 'struct IMulticall3.Call[]',\n        type: 'tuple[]',\n        components: [\n          { name: 'target', internalType: 'address', type: 'address' },\n          { name: 'callData', internalType: 'bytes', type: 'bytes' },\n        ],\n      },\n    ],\n    name: 'blockAndAggregate',\n    outputs: [\n      { name: 'blockNumber', internalType: 'uint256', type: 'uint256' },\n      { name: 'blockHash', internalType: 'bytes32', type: 'bytes32' },\n      {\n        name: 'returnData',\n        internalType: 'struct IMulticall3.Result[]',\n        type: 'tuple[]',\n        components: [\n          { name: 'success', internalType: 'bool', type: 'bool' },\n          { name: 'returnData', internalType: 'bytes', type: 'bytes' },\n        ],\n      },\n    ],\n    stateMutability: 'payable',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'getBasefee',\n    outputs: [{ name: 'basefee', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'blockNumber', internalType: 'uint256', type: 'uint256' }],\n    name: 'getBlockHash',\n    outputs: [{ name: 'blockHash', internalType: 'bytes32', type: 'bytes32' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'getBlockNumber',\n    outputs: [{ name: 'blockNumber', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'getChainId',\n    outputs: [{ name: 'chainid', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'getCurrentBlockCoinbase',\n    outputs: [{ name: 'coinbase', internalType: 'address', type: 'address' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'getCurrentBlockDifficulty',\n    outputs: [{ name: 'difficulty', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'getCurrentBlockGasLimit',\n    outputs: [{ name: 'gaslimit', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'getCurrentBlockTimestamp',\n    outputs: [{ name: 'timestamp', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'addr', internalType: 'address', type: 'address' }],\n    name: 'getEthBalance',\n    outputs: [{ name: 'balance', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'getLastBlockHash',\n    outputs: [{ name: 'blockHash', internalType: 'bytes32', type: 'bytes32' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'requireSuccess', internalType: 'bool', type: 'bool' },\n      {\n        name: 'calls',\n        internalType: 'struct IMulticall3.Call[]',\n        type: 'tuple[]',\n        components: [\n          { name: 'target', internalType: 'address', type: 'address' },\n          { name: 'callData', internalType: 'bytes', type: 'bytes' },\n        ],\n      },\n    ],\n    name: 'tryAggregate',\n    outputs: [\n      {\n        name: 'returnData',\n        internalType: 'struct IMulticall3.Result[]',\n        type: 'tuple[]',\n        components: [\n          { name: 'success', internalType: 'bool', type: 'bool' },\n          { name: 'returnData', internalType: 'bytes', type: 'bytes' },\n        ],\n      },\n    ],\n    stateMutability: 'payable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'requireSuccess', internalType: 'bool', type: 'bool' },\n      {\n        name: 'calls',\n        internalType: 'struct IMulticall3.Call[]',\n        type: 'tuple[]',\n        components: [\n          { name: 'target', internalType: 'address', type: 'address' },\n          { name: 'callData', internalType: 'bytes', type: 'bytes' },\n        ],\n      },\n    ],\n    name: 'tryBlockAndAggregate',\n    outputs: [\n      { name: 'blockNumber', internalType: 'uint256', type: 'uint256' },\n      { name: 'blockHash', internalType: 'bytes32', type: 'bytes32' },\n      {\n        name: 'returnData',\n        internalType: 'struct IMulticall3.Result[]',\n        type: 'tuple[]',\n        components: [\n          { name: 'success', internalType: 'bool', type: 'bool' },\n          { name: 'returnData', internalType: 'bytes', type: 'bytes' },\n        ],\n      },\n    ],\n    stateMutability: 'payable',\n  },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// INFTFlashAction\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const inftFlashActionAbi = [\n  { type: 'error', inputs: [], name: 'InvalidOwnerError' },\n  {\n    type: 'function',\n    inputs: [\n      { name: '_collection', internalType: 'address', type: 'address' },\n      { name: '_tokenId', internalType: 'uint256', type: 'uint256' },\n      { name: '_target', internalType: 'address', type: 'address' },\n      { name: '_data', internalType: 'bytes', type: 'bytes' },\n    ],\n    name: 'execute',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// IOfferValidator\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const iOfferValidatorAbi = [\n  {\n    type: 'function',\n    inputs: [\n      {\n        name: '_offer',\n        internalType: 'struct IMultiSourceLoan.LoanOffer',\n        type: 'tuple',\n        components: [\n          { name: 'offerId', internalType: 'uint256', type: 'uint256' },\n          { name: 'lender', internalType: 'address', type: 'address' },\n          { name: 'fee', internalType: 'uint256', type: 'uint256' },\n          { name: 'capacity', internalType: 'uint256', type: 'uint256' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n          { name: 'expirationTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          { name: 'maxSeniorRepayment', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'validators',\n            internalType: 'struct IBaseLoan.OfferValidator[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'validator', internalType: 'address', type: 'address' },\n              { name: 'arguments', internalType: 'bytes', type: 'bytes' },\n            ],\n          },\n        ],\n      },\n      { name: '_tokenId', internalType: 'uint256', type: 'uint256' },\n      { name: '_validatorData', internalType: 'bytes', type: 'bytes' },\n    ],\n    name: 'validateOffer',\n    outputs: [],\n    stateMutability: 'view',\n  },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// IOldERC721\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const iOldErc721Abi = [\n  {\n    type: 'function',\n    inputs: [\n      { name: '_to', internalType: 'address', type: 'address' },\n      { name: '_tokenId', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'approve',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '_owner', internalType: 'address', type: 'address' }],\n    name: 'balanceOf',\n    outputs: [{ name: '_balance', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '_tokenId', internalType: 'uint256', type: 'uint256' }],\n    name: 'ownerOf',\n    outputs: [{ name: '_owner', internalType: 'address', type: 'address' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '_tokenId', internalType: 'uint256', type: 'uint256' }],\n    name: 'takeOwnership',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '_to', internalType: 'address', type: 'address' },\n      { name: '_tokenId', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'transfer',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// IOracle\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const iOracleAbi = [\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'collection', internalType: 'address', type: 'address', indexed: false },\n      { name: 'period', internalType: 'uint64', type: 'uint64', indexed: false },\n      { name: 'key', internalType: 'bytes4', type: 'bytes4', indexed: false },\n      { name: 'value', internalType: 'uint128', type: 'uint128', indexed: false },\n    ],\n    name: 'DataUpdated',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '_collection', internalType: 'address', type: 'address' },\n      { name: '_period', internalType: 'uint64', type: 'uint64' },\n      { name: '_key', internalType: 'bytes4', type: 'bytes4' },\n    ],\n    name: 'getData',\n    outputs: [\n      {\n        name: '',\n        internalType: 'struct IOracle.CollectionData',\n        type: 'tuple',\n        components: [\n          { name: 'value', internalType: 'uint128', type: 'uint128' },\n          { name: 'updated', internalType: 'uint128', type: 'uint128' },\n        ],\n      },\n    ],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '_collection', internalType: 'address', type: 'address' },\n      { name: '_period', internalType: 'uint64', type: 'uint64' },\n      { name: '_key', internalType: 'bytes4', type: 'bytes4' },\n      { name: '_value', internalType: 'uint128', type: 'uint128' },\n    ],\n    name: 'setData',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// IPurchaseBundler\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const iPurchaseBundlerAbi = [\n  {\n    type: 'function',\n    name: 'buy',\n    inputs: [\n      {\n        name: '_executionData',\n        type: 'bytes[]',\n        internalType: 'bytes[]',\n      },\n    ],\n    outputs: [\n      {\n        name: '',\n        type: 'uint256[]',\n        internalType: 'uint256[]',\n      },\n      {\n        name: '',\n        type: 'tuple[]',\n        internalType: 'struct IMultiSourceLoan.Loan[]',\n        components: [\n          {\n            name: 'borrower',\n            type: 'address',\n            internalType: 'address',\n          },\n          {\n            name: 'nftCollateralTokenId',\n            type: 'uint256',\n            internalType: 'uint256',\n          },\n          {\n            name: 'nftCollateralAddress',\n            type: 'address',\n            internalType: 'address',\n          },\n          {\n            name: 'principalAddress',\n            type: 'address',\n            internalType: 'address',\n          },\n          {\n            name: 'principalAmount',\n            type: 'uint256',\n            internalType: 'uint256',\n          },\n          {\n            name: 'startTime',\n            type: 'uint256',\n            internalType: 'uint256',\n          },\n          {\n            name: 'duration',\n            type: 'uint256',\n            internalType: 'uint256',\n          },\n          {\n            name: 'tranche',\n            type: 'tuple[]',\n            internalType: 'struct IMultiSourceLoan.Tranche[]',\n            components: [\n              {\n                name: 'loanId',\n                type: 'uint256',\n                internalType: 'uint256',\n              },\n              {\n                name: 'floor',\n                type: 'uint256',\n                internalType: 'uint256',\n              },\n              {\n                name: 'principalAmount',\n                type: 'uint256',\n                internalType: 'uint256',\n              },\n              {\n                name: 'lender',\n                type: 'address',\n                internalType: 'address',\n              },\n              {\n                name: 'accruedInterest',\n                type: 'uint256',\n                internalType: 'uint256',\n              },\n              {\n                name: 'startTime',\n                type: 'uint256',\n                internalType: 'uint256',\n              },\n              {\n                name: 'aprBps',\n                type: 'uint256',\n                internalType: 'uint256',\n              },\n            ],\n          },\n          {\n            name: 'protocolFee',\n            type: 'uint256',\n            internalType: 'uint256',\n          },\n        ],\n      },\n    ],\n    stateMutability: 'payable',\n  },\n  {\n    type: 'function',\n    name: 'executeSell',\n    inputs: [\n      {\n        name: '_currencies',\n        type: 'address[]',\n        internalType: 'contract ERC20[]',\n      },\n      {\n        name: '_currencyAmounts',\n        type: 'uint256[]',\n        internalType: 'uint256[]',\n      },\n      {\n        name: '_collections',\n        type: 'address[]',\n        internalType: 'contract ERC721[]',\n      },\n      {\n        name: '_tokenIds',\n        type: 'uint256[]',\n        internalType: 'uint256[]',\n      },\n      {\n        name: '_marketPlace',\n        type: 'address',\n        internalType: 'address',\n      },\n      {\n        name: '_executionData',\n        type: 'bytes[]',\n        internalType: 'bytes[]',\n      },\n    ],\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    name: 'finalUpdateMultiSourceLoanAddress',\n    inputs: [\n      {\n        name: '_newAddress',\n        type: 'address',\n        internalType: 'address',\n      },\n    ],\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    name: 'getMultiSourceLoanAddress',\n    inputs: [],\n    outputs: [\n      {\n        name: '',\n        type: 'address',\n        internalType: 'address',\n      },\n    ],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    name: 'getPendingTaxes',\n    inputs: [],\n    outputs: [\n      {\n        name: '',\n        type: 'tuple',\n        internalType: 'struct IPurchaseBundler.Taxes',\n        components: [\n          {\n            name: 'buyTax',\n            type: 'uint128',\n            internalType: 'uint128',\n          },\n          {\n            name: 'sellTax',\n            type: 'uint128',\n            internalType: 'uint128',\n          },\n        ],\n      },\n    ],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    name: 'getPendingTaxesSetTime',\n    inputs: [],\n    outputs: [\n      {\n        name: '',\n        type: 'uint256',\n        internalType: 'uint256',\n      },\n    ],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    name: 'getTaxes',\n    inputs: [],\n    outputs: [\n      {\n        name: '',\n        type: 'tuple',\n        internalType: 'struct IPurchaseBundler.Taxes',\n        components: [\n          {\n            name: 'buyTax',\n            type: 'uint128',\n            internalType: 'uint128',\n          },\n          {\n            name: 'sellTax',\n            type: 'uint128',\n            internalType: 'uint128',\n          },\n        ],\n      },\n    ],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    name: 'sell',\n    inputs: [\n      {\n        name: '_executionData',\n        type: 'bytes[]',\n        internalType: 'bytes[]',\n      },\n    ],\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    name: 'setTaxes',\n    inputs: [],\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    name: 'updateMultiSourceLoanAddressFirst',\n    inputs: [\n      {\n        name: '_newAddress',\n        type: 'address',\n        internalType: 'address',\n      },\n    ],\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    name: 'updateTaxes',\n    inputs: [\n      {\n        name: '_newTaxes',\n        type: 'tuple',\n        internalType: 'struct IPurchaseBundler.Taxes',\n        components: [\n          {\n            name: 'buyTax',\n            type: 'uint128',\n            internalType: 'uint128',\n          },\n          {\n            name: 'sellTax',\n            type: 'uint128',\n            internalType: 'uint128',\n          },\n        ],\n      },\n    ],\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// IReservoir\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const iReservoirAbi = [\n  {\n    type: 'function',\n    inputs: [\n      {\n        name: '_executionInfos',\n        internalType: 'struct IReservoir.ExecutionInfo[]',\n        type: 'tuple[]',\n        components: [\n          { name: 'module', internalType: 'address', type: 'address' },\n          { name: 'data', internalType: 'bytes', type: 'bytes' },\n          { name: 'value', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n    ],\n    name: 'execute',\n    outputs: [],\n    stateMutability: 'payable',\n  },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// IUserVault\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const iUserVaultAbi = [\n  {\n    type: 'function',\n    inputs: [\n      { name: '_vaultId', internalType: 'uint256', type: 'uint256' },\n      { name: '_token', internalType: 'address', type: 'address' },\n    ],\n    name: 'ERC20BalanceOf',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '_collection', internalType: 'address', type: 'address' },\n      { name: '_tokenId', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'ERC721OwnerOf',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '_vaultId', internalType: 'uint256', type: 'uint256' },\n      { name: '_assetRecipient', internalType: 'address', type: 'address' },\n    ],\n    name: 'burn',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '_vaultId', internalType: 'uint256', type: 'uint256' },\n      { name: '_collections', internalType: 'address[]', type: 'address[]' },\n      { name: '_tokenIds', internalType: 'uint256[]', type: 'uint256[]' },\n      { name: '_tokens', internalType: 'address[]', type: 'address[]' },\n      { name: '_erc1155Tokens', internalType: 'address[]', type: 'address[]' },\n      { name: '_erc1155TokensIds', internalType: 'uint256[]', type: 'uint256[]' },\n    ],\n    name: 'burnAndWithdraw',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '_vaultId', internalType: 'uint256', type: 'uint256' },\n      { name: '_token', internalType: 'address', type: 'address' },\n      { name: '_tokenId', internalType: 'uint256', type: 'uint256' },\n      { name: '_amount', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'depositERC1155',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '_vaultId', internalType: 'uint256', type: 'uint256' },\n      { name: '_token', internalType: 'address', type: 'address' },\n      { name: '_tokenIds', internalType: 'uint256[]', type: 'uint256[]' },\n      { name: '_amounts', internalType: 'uint256[]', type: 'uint256[]' },\n    ],\n    name: 'depositERC1155s',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '_vaultId', internalType: 'uint256', type: 'uint256' },\n      { name: '_token', internalType: 'address', type: 'address' },\n      { name: '_amount', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'depositERC20',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '_vaultId', internalType: 'uint256', type: 'uint256' },\n      { name: '_collection', internalType: 'address', type: 'address' },\n      { name: '_tokenId', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'depositERC721',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '_vaultId', internalType: 'uint256', type: 'uint256' },\n      { name: '_collection', internalType: 'address', type: 'address' },\n      { name: '_tokenIds', internalType: 'uint256[]', type: 'uint256[]' },\n    ],\n    name: 'depositERC721s',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '_vaultId', internalType: 'uint256', type: 'uint256' }],\n    name: 'depositEth',\n    outputs: [],\n    stateMutability: 'payable',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'mint',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '_vaultId', internalType: 'uint256', type: 'uint256' },\n      { name: '_token', internalType: 'address', type: 'address' },\n      { name: '_tokenId', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'withdrawERC1155',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '_vaultId', internalType: 'uint256', type: 'uint256' },\n      { name: '_tokens', internalType: 'address[]', type: 'address[]' },\n      { name: '_tokenIds', internalType: 'uint256[]', type: 'uint256[]' },\n    ],\n    name: 'withdrawERC1155s',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '_vaultId', internalType: 'uint256', type: 'uint256' },\n      { name: '_token', internalType: 'address', type: 'address' },\n    ],\n    name: 'withdrawERC20',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '_vaultId', internalType: 'uint256', type: 'uint256' },\n      { name: '_tokens', internalType: 'address[]', type: 'address[]' },\n    ],\n    name: 'withdrawERC20s',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '_vaultId', internalType: 'uint256', type: 'uint256' },\n      { name: '_collection', internalType: 'address', type: 'address' },\n      { name: '_tokenId', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'withdrawERC721',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '_vaultId', internalType: 'uint256', type: 'uint256' },\n      { name: '_collections', internalType: 'address[]', type: 'address[]' },\n      { name: '_tokenIds', internalType: 'uint256[]', type: 'uint256[]' },\n    ],\n    name: 'withdrawERC721s',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '_vaultId', internalType: 'uint256', type: 'uint256' }],\n    name: 'withdrawEth',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// IWrappedPunk\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const iWrappedPunkAbi = [\n  {\n    type: 'function',\n    inputs: [{ name: 'punkIndex', internalType: 'uint256', type: 'uint256' }],\n    name: 'burn',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'punkIndex', internalType: 'uint256', type: 'uint256' }],\n    name: 'mint',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'tokenId', internalType: 'uint256', type: 'uint256' }],\n    name: 'ownerOf',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'user', internalType: 'address', type: 'address' }],\n    name: 'proxyInfo',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'registerProxy',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address' },\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'tokenId', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'safeTransferFrom',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address' },\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'tokenId', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'transferFrom',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// InputChecker\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const inputCheckerAbi = [{ type: 'error', inputs: [], name: 'AddressZeroError' }] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// LiquidationDistributor\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const liquidationDistributorAbi = [\n  {\n    type: 'constructor',\n    inputs: [{ name: '_loanManagerRegistry', internalType: 'address', type: 'address' }],\n    stateMutability: 'nonpayable',\n  },\n  { type: 'error', inputs: [], name: 'InvalidCallerError' },\n  { type: 'error', inputs: [], name: 'LiquidatorCannotBeUpdatedError' },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'liquidator', internalType: 'address', type: 'address', indexed: false }],\n    name: 'LiquidatorSet',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'user', internalType: 'address', type: 'address', indexed: true },\n      { name: 'newOwner', internalType: 'address', type: 'address', indexed: true },\n    ],\n    name: 'OwnershipTransferred',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '_proceeds', internalType: 'uint256', type: 'uint256' },\n      {\n        name: '_loan',\n        internalType: 'struct IMultiSourceLoan.Loan',\n        type: 'tuple',\n        components: [\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'tranche',\n            internalType: 'struct IMultiSourceLoan.Tranche[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n              { name: 'floor', internalType: 'uint256', type: 'uint256' },\n              { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n              { name: 'lender', internalType: 'address', type: 'address' },\n              { name: 'accruedInterest', internalType: 'uint256', type: 'uint256' },\n              { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n              { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n            ],\n          },\n          { name: 'protocolFee', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n    ],\n    name: 'distribute',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'getLiquidator',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'getLoanManagerRegistry',\n    outputs: [{ name: '', internalType: 'contract ILoanManagerRegistry', type: 'address' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'owner',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '_liquidator', internalType: 'address', type: 'address' }],\n    name: 'setLiquidator',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'newOwner', internalType: 'address', type: 'address' }],\n    name: 'transferOwnership',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// LiquidationHandler\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const liquidationHandlerAbi = [\n  { type: 'error', inputs: [], name: 'AddressZeroError' },\n  { type: 'error', inputs: [], name: 'InvalidDurationError' },\n  { type: 'error', inputs: [], name: 'InvalidInputError' },\n  {\n    type: 'error',\n    inputs: [{ name: '_liquidator', internalType: 'address', type: 'address' }],\n    name: 'LiquidatorOnlyError',\n  },\n  {\n    type: 'error',\n    inputs: [{ name: '_expirationTime', internalType: 'uint256', type: 'uint256' }],\n    name: 'LoanNotDueError',\n  },\n  {\n    type: 'error',\n    inputs: [{ name: '_pendingProtocolFeeSetTime', internalType: 'uint256', type: 'uint256' }],\n    name: 'TooEarlyError',\n  },\n  { type: 'error', inputs: [], name: 'TooSoonError' },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'newDuration', internalType: 'uint256', type: 'uint256', indexed: false }],\n    name: 'LiquidationAuctionDurationUpdated',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'liquidator', internalType: 'address', type: 'address', indexed: false }],\n    name: 'LiquidationContractUpdated',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'loanId', internalType: 'uint256', type: 'uint256', indexed: false }],\n    name: 'LoanForeclosed',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'loanId', internalType: 'uint256', type: 'uint256', indexed: false },\n      { name: 'liquidator', internalType: 'address', type: 'address', indexed: false },\n    ],\n    name: 'LoanSentToLiquidator',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'newMinBid', internalType: 'uint256', type: 'uint256', indexed: false }],\n    name: 'MinBidLiquidationUpdated',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'user', internalType: 'address', type: 'address', indexed: true },\n      { name: 'newOwner', internalType: 'address', type: 'address', indexed: true },\n    ],\n    name: 'OwnershipTransferred',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      {\n        name: 'fee',\n        internalType: 'struct WithProtocolFee.ProtocolFee',\n        type: 'tuple',\n        components: [\n          { name: 'recipient', internalType: 'address', type: 'address' },\n          { name: 'fraction', internalType: 'uint256', type: 'uint256' },\n        ],\n        indexed: false,\n      },\n    ],\n    name: 'ProtocolFeePendingUpdate',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      {\n        name: 'fee',\n        internalType: 'struct WithProtocolFee.ProtocolFee',\n        type: 'tuple',\n        components: [\n          { name: 'recipient', internalType: 'address', type: 'address' },\n          { name: 'fraction', internalType: 'uint256', type: 'uint256' },\n        ],\n        indexed: false,\n      },\n    ],\n    name: 'ProtocolFeeUpdated',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'newOwner', internalType: 'address', type: 'address', indexed: false }],\n    name: 'TransferOwnerRequested',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'contractAdded', internalType: 'address', type: 'address', indexed: false }],\n    name: 'WhitelistedCallbackContractAdded',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'contractRemoved', internalType: 'address', type: 'address', indexed: false }],\n    name: 'WhitelistedCallbackContractRemoved',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'FEE_UPDATE_NOTICE',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'MAX_AUCTION_DURATION',\n    outputs: [{ name: '', internalType: 'uint48', type: 'uint48' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'MIN_AUCTION_DURATION',\n    outputs: [{ name: '', internalType: 'uint48', type: 'uint48' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'MIN_BID_LIQUIDATION',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'MIN_WAIT_TIME',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '_contract', internalType: 'address', type: 'address' }],\n    name: 'addWhitelistedCallbackContract',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'getLiquidationAuctionDuration',\n    outputs: [{ name: '', internalType: 'uint48', type: 'uint48' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'getLiquidator',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'getPendingProtocolFee',\n    outputs: [\n      {\n        name: '',\n        internalType: 'struct WithProtocolFee.ProtocolFee',\n        type: 'tuple',\n        components: [\n          { name: 'recipient', internalType: 'address', type: 'address' },\n          { name: 'fraction', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n    ],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'getPendingProtocolFeeSetTime',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'getProtocolFee',\n    outputs: [\n      {\n        name: '',\n        internalType: 'struct WithProtocolFee.ProtocolFee',\n        type: 'tuple',\n        components: [\n          { name: 'recipient', internalType: 'address', type: 'address' },\n          { name: 'fraction', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n    ],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '_contract', internalType: 'address', type: 'address' }],\n    name: 'isWhitelistedCallbackContract',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'owner',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'pendingOwner',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'pendingOwnerTime',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '_contract', internalType: 'address', type: 'address' }],\n    name: 'removeWhitelistedCallbackContract',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '_newOwner', internalType: 'address', type: 'address' }],\n    name: 'requestTransferOwner',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'setProtocolFee',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'transferOwnership',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'newOwner', internalType: 'address', type: 'address' }],\n    name: 'transferOwnership',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '_newDuration', internalType: 'uint48', type: 'uint48' }],\n    name: 'updateLiquidationAuctionDuration',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '__loanLiquidator', internalType: 'address', type: 'address' }],\n    name: 'updateLiquidationContract',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      {\n        name: '_newProtocolFee',\n        internalType: 'struct WithProtocolFee.ProtocolFee',\n        type: 'tuple',\n        components: [\n          { name: 'recipient', internalType: 'address', type: 'address' },\n          { name: 'fraction', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n    ],\n    name: 'updateProtocolFee',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// LoanManager\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const loanManagerAbi = [\n  { type: 'error', inputs: [], name: 'CallerNotAccepted' },\n  { type: 'error', inputs: [], name: 'InvalidCallerError' },\n  { type: 'error', inputs: [], name: 'InvalidInputError' },\n  { type: 'error', inputs: [], name: 'TooSoonError' },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      {\n        name: 'callers',\n        internalType: 'struct ILoanManager.ProposedCaller[]',\n        type: 'tuple[]',\n        components: [\n          { name: 'caller', internalType: 'address', type: 'address' },\n          { name: 'isLoanContract', internalType: 'bool', type: 'bool' },\n        ],\n        indexed: false,\n      },\n    ],\n    name: 'CallersAdded',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'user', internalType: 'address', type: 'address', indexed: true },\n      { name: 'newOwner', internalType: 'address', type: 'address', indexed: true },\n    ],\n    name: 'OwnershipTransferred',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'newOwner', internalType: 'address', type: 'address', indexed: false }],\n    name: 'TransferOwnerRequested',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'MIN_WAIT_TIME',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'UPDATE_WAITING_TIME',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      {\n        name: '_callers',\n        internalType: 'struct ILoanManager.ProposedCaller[]',\n        type: 'tuple[]',\n        components: [\n          { name: 'caller', internalType: 'address', type: 'address' },\n          { name: 'isLoanContract', internalType: 'bool', type: 'bool' },\n        ],\n      },\n    ],\n    name: 'addCallers',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'getOfferHandler',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'getParameterSetter',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '_caller', internalType: 'address', type: 'address' }],\n    name: 'isCallerAccepted',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '_loanId', internalType: 'uint256', type: 'uint256' },\n      { name: '_principalAmount', internalType: 'uint256', type: 'uint256' },\n      { name: '_apr', internalType: 'uint256', type: 'uint256' },\n      { name: '_accruedInterest', internalType: 'uint256', type: 'uint256' },\n      { name: '_protocolFee', internalType: 'uint256', type: 'uint256' },\n      { name: '_received', internalType: 'uint256', type: 'uint256' },\n      { name: '_startTime', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'loanLiquidation',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '_loanId', internalType: 'uint256', type: 'uint256' },\n      { name: '_principalAmount', internalType: 'uint256', type: 'uint256' },\n      { name: '_apr', internalType: 'uint256', type: 'uint256' },\n      { name: '_accruedInterest', internalType: 'uint256', type: 'uint256' },\n      { name: '_protocolFee', internalType: 'uint256', type: 'uint256' },\n      { name: '_startTime', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'loanRepayment',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'owner',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'pendingOwner',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'pendingOwnerTime',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '_newOwner', internalType: 'address', type: 'address' }],\n    name: 'requestTransferOwner',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'transferOwnership',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'newOwner', internalType: 'address', type: 'address' }],\n    name: 'transferOwnership',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '_offerHandler', internalType: 'address', type: 'address' }],\n    name: 'updateOfferHandler',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '_offer', internalType: 'bytes', type: 'bytes' },\n      { name: '_protocolFee', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'validateOffer',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// LoanManagerParameterSetter\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const loanManagerParameterSetterAbi = [\n  {\n    type: 'constructor',\n    inputs: [\n      { name: '__offerHandler', internalType: 'address', type: 'address' },\n      { name: '_updateWaitingTime', internalType: 'uint256', type: 'uint256' },\n    ],\n    stateMutability: 'nonpayable',\n  },\n  { type: 'error', inputs: [], name: 'AddressZeroError' },\n  { type: 'error', inputs: [], name: 'InvalidInputError' },\n  { type: 'error', inputs: [], name: 'LoanManagerSetError' },\n  { type: 'error', inputs: [], name: 'TooSoonError' },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'offerHandler', internalType: 'address', type: 'address', indexed: false }],\n    name: 'OfferHandlerSet',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'user', internalType: 'address', type: 'address', indexed: true },\n      { name: 'newOwner', internalType: 'address', type: 'address', indexed: true },\n    ],\n    name: 'OwnershipTransferred',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'offerHandler', internalType: 'address', type: 'address', indexed: false }],\n    name: 'ProposedOfferHandlerSet',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      {\n        name: 'callers',\n        internalType: 'struct ILoanManager.ProposedCaller[]',\n        type: 'tuple[]',\n        components: [\n          { name: 'caller', internalType: 'address', type: 'address' },\n          { name: 'isLoanContract', internalType: 'bool', type: 'bool' },\n        ],\n        indexed: false,\n      },\n    ],\n    name: 'RequestCallersAdded',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'newOwner', internalType: 'address', type: 'address', indexed: false }],\n    name: 'TransferOwnerRequested',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'MIN_WAIT_TIME',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'UPDATE_WAITING_TIME',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      {\n        name: '_callers',\n        internalType: 'struct ILoanManager.ProposedCaller[]',\n        type: 'tuple[]',\n        components: [\n          { name: 'caller', internalType: 'address', type: 'address' },\n          { name: 'isLoanContract', internalType: 'bool', type: 'bool' },\n        ],\n      },\n    ],\n    name: 'addCallers',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '__offerHandler', internalType: 'address', type: 'address' }],\n    name: 'confirmOfferHandler',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'getLoanManager',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'getOfferHandler',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    name: 'getProposedAcceptedCallers',\n    outputs: [\n      { name: 'caller', internalType: 'address', type: 'address' },\n      { name: 'isLoanContract', internalType: 'bool', type: 'bool' },\n    ],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'getProposedAcceptedCallersSetTime',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'getProposedOfferHandler',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'getProposedOfferHandlerSetTime',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'owner',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'pendingOwner',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'pendingOwnerTime',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      {\n        name: '_callers',\n        internalType: 'struct ILoanManager.ProposedCaller[]',\n        type: 'tuple[]',\n        components: [\n          { name: 'caller', internalType: 'address', type: 'address' },\n          { name: 'isLoanContract', internalType: 'bool', type: 'bool' },\n        ],\n      },\n    ],\n    name: 'requestAddCallers',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '_newOwner', internalType: 'address', type: 'address' }],\n    name: 'requestTransferOwner',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '__loanManager', internalType: 'address', type: 'address' }],\n    name: 'setLoanManager',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '__offerHandler', internalType: 'address', type: 'address' }],\n    name: 'setOfferHandler',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'transferOwnership',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'newOwner', internalType: 'address', type: 'address' }],\n    name: 'transferOwnership',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// LoanManagerRegistry\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const loanManagerRegistryAbi = [\n  { type: 'constructor', inputs: [], stateMutability: 'nonpayable' },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'loanManagerAdded', internalType: 'address', type: 'address', indexed: false },\n    ],\n    name: 'LoanManagerAdded',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'loanManagerRemoved', internalType: 'address', type: 'address', indexed: false },\n    ],\n    name: 'LoanManagerRemoved',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'user', internalType: 'address', type: 'address', indexed: true },\n      { name: 'newOwner', internalType: 'address', type: 'address', indexed: true },\n    ],\n    name: 'OwnershipTransferred',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '_loanManager', internalType: 'address', type: 'address' }],\n    name: 'addLoanManager',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '_loanManager', internalType: 'address', type: 'address' }],\n    name: 'isLoanManager',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'owner',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '_loanManager', internalType: 'address', type: 'address' }],\n    name: 'removeLoanManager',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'newOwner', internalType: 'address', type: 'address' }],\n    name: 'transferOwnership',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// Math\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const mathAbi = [{ type: 'error', inputs: [], name: 'MathOverflowedMulDiv' }] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// MockERC20\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const mockErc20Abi = [\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'owner', internalType: 'address', type: 'address', indexed: true },\n      { name: 'spender', internalType: 'address', type: 'address', indexed: true },\n      { name: 'amount', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'Approval',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address', indexed: true },\n      { name: 'to', internalType: 'address', type: 'address', indexed: true },\n      { name: 'amount', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'Transfer',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'DOMAIN_SEPARATOR',\n    outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'address', type: 'address' },\n    ],\n    name: 'allowance',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'spender', internalType: 'address', type: 'address' },\n      { name: 'amount', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'approve',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '', internalType: 'address', type: 'address' }],\n    name: 'balanceOf',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'decimals',\n    outputs: [{ name: '', internalType: 'uint8', type: 'uint8' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '_name', internalType: 'string', type: 'string' },\n      { name: '_symbol', internalType: 'string', type: 'string' },\n      { name: '_decimals', internalType: 'uint8', type: 'uint8' },\n    ],\n    name: 'initialize',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'name',\n    outputs: [{ name: '', internalType: 'string', type: 'string' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '', internalType: 'address', type: 'address' }],\n    name: 'nonces',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'owner', internalType: 'address', type: 'address' },\n      { name: 'spender', internalType: 'address', type: 'address' },\n      { name: 'value', internalType: 'uint256', type: 'uint256' },\n      { name: 'deadline', internalType: 'uint256', type: 'uint256' },\n      { name: 'v', internalType: 'uint8', type: 'uint8' },\n      { name: 'r', internalType: 'bytes32', type: 'bytes32' },\n      { name: 's', internalType: 'bytes32', type: 'bytes32' },\n    ],\n    name: 'permit',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'symbol',\n    outputs: [{ name: '', internalType: 'string', type: 'string' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'totalSupply',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'amount', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'transfer',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address' },\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'amount', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'transferFrom',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n    stateMutability: 'nonpayable',\n  },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// MockERC721\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const mockErc721Abi = [\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'owner', internalType: 'address', type: 'address', indexed: true },\n      { name: 'spender', internalType: 'address', type: 'address', indexed: true },\n      { name: 'id', internalType: 'uint256', type: 'uint256', indexed: true },\n    ],\n    name: 'Approval',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'owner', internalType: 'address', type: 'address', indexed: true },\n      { name: 'operator', internalType: 'address', type: 'address', indexed: true },\n      { name: 'approved', internalType: 'bool', type: 'bool', indexed: false },\n    ],\n    name: 'ApprovalForAll',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address', indexed: true },\n      { name: 'to', internalType: 'address', type: 'address', indexed: true },\n      { name: 'id', internalType: 'uint256', type: 'uint256', indexed: true },\n    ],\n    name: 'Transfer',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'spender', internalType: 'address', type: 'address' },\n      { name: 'id', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'approve',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'owner', internalType: 'address', type: 'address' }],\n    name: 'balanceOf',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    name: 'getApproved',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '_name', internalType: 'string', type: 'string' },\n      { name: '_symbol', internalType: 'string', type: 'string' },\n    ],\n    name: 'initialize',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'address', type: 'address' },\n    ],\n    name: 'isApprovedForAll',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'name',\n    outputs: [{ name: '', internalType: 'string', type: 'string' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'id', internalType: 'uint256', type: 'uint256' }],\n    name: 'ownerOf',\n    outputs: [{ name: 'owner', internalType: 'address', type: 'address' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address' },\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'id', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'safeTransferFrom',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address' },\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'id', internalType: 'uint256', type: 'uint256' },\n      { name: 'data', internalType: 'bytes', type: 'bytes' },\n    ],\n    name: 'safeTransferFrom',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'operator', internalType: 'address', type: 'address' },\n      { name: 'approved', internalType: 'bool', type: 'bool' },\n    ],\n    name: 'setApprovalForAll',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'interfaceId', internalType: 'bytes4', type: 'bytes4' }],\n    name: 'supportsInterface',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n    stateMutability: 'pure',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'symbol',\n    outputs: [{ name: '', internalType: 'string', type: 'string' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'id', internalType: 'uint256', type: 'uint256' }],\n    name: 'tokenURI',\n    outputs: [{ name: '', internalType: 'string', type: 'string' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address' },\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'id', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'transferFrom',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// MockedAave\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const mockedAaveAbi = [\n  {\n    type: 'constructor',\n    inputs: [{ name: '__baseAsset', internalType: 'contract SampleToken', type: 'address' }],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'aToken',\n    outputs: [{ name: '', internalType: 'contract SampleToken', type: 'address' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'baseAsset',\n    outputs: [{ name: '', internalType: 'contract ERC20', type: 'address' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '', internalType: 'address', type: 'address' },\n      { name: 'amount', internalType: 'uint256', type: 'uint256' },\n      { name: 'onBehalfOf', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'uint16', type: 'uint16' },\n    ],\n    name: 'deposit',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '', internalType: 'address', type: 'address' }],\n    name: 'getReserveData',\n    outputs: [\n      { name: '', internalType: 'uint256', type: 'uint256' },\n      { name: '', internalType: 'uint128', type: 'uint128' },\n      { name: '', internalType: 'uint128', type: 'uint128' },\n      { name: '', internalType: 'uint128', type: 'uint128' },\n      { name: '', internalType: 'uint128', type: 'uint128' },\n      { name: '', internalType: 'uint128', type: 'uint128' },\n      { name: '', internalType: 'uint40', type: 'uint40' },\n      { name: '', internalType: 'uint16', type: 'uint16' },\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'uint128', type: 'uint128' },\n      { name: '', internalType: 'uint128', type: 'uint128' },\n      { name: '', internalType: 'uint128', type: 'uint128' },\n    ],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '__apr', internalType: 'uint128', type: 'uint128' }],\n    name: 'setAprBps',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '', internalType: 'address', type: 'address' },\n      { name: 'amount', internalType: 'uint256', type: 'uint256' },\n      { name: 'to', internalType: 'address', type: 'address' },\n    ],\n    name: 'withdraw',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// MockedCurve\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const mockedCurveAbi = [\n  {\n    type: 'constructor',\n    inputs: [{ name: '_token', internalType: 'contract SampleToken', type: 'address' }],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'i', internalType: 'uint128', type: 'uint128' },\n      { name: '', internalType: 'uint128', type: 'uint128' },\n      { name: '', internalType: 'uint256', type: 'uint256' },\n      { name: '_min_dy', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'exchange',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'payable',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'nextDy',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '_nextDy', internalType: 'uint256', type: 'uint256' }],\n    name: 'setNextDy',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'token',\n    outputs: [{ name: '', internalType: 'contract SampleToken', type: 'address' }],\n    stateMutability: 'view',\n  },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// MultiSourceCommons\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const multiSourceCommonsAbi = [\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: '', internalType: 'string', type: 'string', indexed: false }],\n    name: 'log',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: '', internalType: 'address', type: 'address', indexed: false }],\n    name: 'log_address',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'val', internalType: 'uint256[]', type: 'uint256[]', indexed: false }],\n    name: 'log_array',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'val', internalType: 'int256[]', type: 'int256[]', indexed: false }],\n    name: 'log_array',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'val', internalType: 'address[]', type: 'address[]', indexed: false }],\n    name: 'log_array',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: '', internalType: 'bytes', type: 'bytes', indexed: false }],\n    name: 'log_bytes',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: '', internalType: 'bytes32', type: 'bytes32', indexed: false }],\n    name: 'log_bytes32',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: '', internalType: 'int256', type: 'int256', indexed: false }],\n    name: 'log_int',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'key', internalType: 'string', type: 'string', indexed: false },\n      { name: 'val', internalType: 'address', type: 'address', indexed: false },\n    ],\n    name: 'log_named_address',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'key', internalType: 'string', type: 'string', indexed: false },\n      { name: 'val', internalType: 'uint256[]', type: 'uint256[]', indexed: false },\n    ],\n    name: 'log_named_array',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'key', internalType: 'string', type: 'string', indexed: false },\n      { name: 'val', internalType: 'int256[]', type: 'int256[]', indexed: false },\n    ],\n    name: 'log_named_array',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'key', internalType: 'string', type: 'string', indexed: false },\n      { name: 'val', internalType: 'address[]', type: 'address[]', indexed: false },\n    ],\n    name: 'log_named_array',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'key', internalType: 'string', type: 'string', indexed: false },\n      { name: 'val', internalType: 'bytes', type: 'bytes', indexed: false },\n    ],\n    name: 'log_named_bytes',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'key', internalType: 'string', type: 'string', indexed: false },\n      { name: 'val', internalType: 'bytes32', type: 'bytes32', indexed: false },\n    ],\n    name: 'log_named_bytes32',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'key', internalType: 'string', type: 'string', indexed: false },\n      { name: 'val', internalType: 'int256', type: 'int256', indexed: false },\n      { name: 'decimals', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'log_named_decimal_int',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'key', internalType: 'string', type: 'string', indexed: false },\n      { name: 'val', internalType: 'uint256', type: 'uint256', indexed: false },\n      { name: 'decimals', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'log_named_decimal_uint',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'key', internalType: 'string', type: 'string', indexed: false },\n      { name: 'val', internalType: 'int256', type: 'int256', indexed: false },\n    ],\n    name: 'log_named_int',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'key', internalType: 'string', type: 'string', indexed: false },\n      { name: 'val', internalType: 'string', type: 'string', indexed: false },\n    ],\n    name: 'log_named_string',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'key', internalType: 'string', type: 'string', indexed: false },\n      { name: 'val', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'log_named_uint',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: '', internalType: 'string', type: 'string', indexed: false }],\n    name: 'log_string',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: '', internalType: 'uint256', type: 'uint256', indexed: false }],\n    name: 'log_uint',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: '', internalType: 'bytes', type: 'bytes', indexed: false }],\n    name: 'logs',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'IS_TEST',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'excludeArtifacts',\n    outputs: [{ name: 'excludedArtifacts_', internalType: 'string[]', type: 'string[]' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'excludeContracts',\n    outputs: [{ name: 'excludedContracts_', internalType: 'address[]', type: 'address[]' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'excludeSenders',\n    outputs: [{ name: 'excludedSenders_', internalType: 'address[]', type: 'address[]' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'failed',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n    stateMutability: 'nonpayable',\n  },\n  { type: 'function', inputs: [], name: 'setUp', outputs: [], stateMutability: 'nonpayable' },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'targetArtifactSelectors',\n    outputs: [\n      {\n        name: 'targetedArtifactSelectors_',\n        internalType: 'struct StdInvariant.FuzzSelector[]',\n        type: 'tuple[]',\n        components: [\n          { name: 'addr', internalType: 'address', type: 'address' },\n          { name: 'selectors', internalType: 'bytes4[]', type: 'bytes4[]' },\n        ],\n      },\n    ],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'targetArtifacts',\n    outputs: [{ name: 'targetedArtifacts_', internalType: 'string[]', type: 'string[]' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'targetContracts',\n    outputs: [{ name: 'targetedContracts_', internalType: 'address[]', type: 'address[]' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'targetInterfaces',\n    outputs: [\n      {\n        name: 'targetedInterfaces_',\n        internalType: 'struct StdInvariant.FuzzInterface[]',\n        type: 'tuple[]',\n        components: [\n          { name: 'addr', internalType: 'address', type: 'address' },\n          { name: 'artifacts', internalType: 'string[]', type: 'string[]' },\n        ],\n      },\n    ],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'targetSelectors',\n    outputs: [\n      {\n        name: 'targetedSelectors_',\n        internalType: 'struct StdInvariant.FuzzSelector[]',\n        type: 'tuple[]',\n        components: [\n          { name: 'addr', internalType: 'address', type: 'address' },\n          { name: 'selectors', internalType: 'bytes4[]', type: 'bytes4[]' },\n        ],\n      },\n    ],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'targetSenders',\n    outputs: [{ name: 'targetedSenders_', internalType: 'address[]', type: 'address[]' }],\n    stateMutability: 'view',\n  },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// MultiSourceLoan\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const multiSourceLoanAbi = [\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"loanLiquidator\",\n        \"type\": \"address\"\n      },\n      {\n        \"components\": [\n          {\n            \"internalType\": \"address\",\n            \"name\": \"recipient\",\n            \"type\": \"address\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"fraction\",\n            \"type\": \"uint256\"\n          }\n        ],\n        \"internalType\": \"struct WithProtocolFee.ProtocolFee\",\n        \"name\": \"protocolFee\",\n        \"type\": \"tuple\"\n      },\n      {\n        \"internalType\": \"address\",\n        \"name\": \"currencyManager\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"address\",\n        \"name\": \"collectionManager\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"maxTranches\",\n        \"type\": \"uint256\"\n      },\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"minLockPeriod\",\n        \"type\": \"uint256\"\n      },\n      {\n        \"internalType\": \"address\",\n        \"name\": \"delegateRegistry\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"address\",\n        \"name\": \"loanManagerRegistry\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"address\",\n        \"name\": \"flashActionContract\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"minWaitTime\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"constructor\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"DOMAIN_SEPARATOR\",\n    \"outputs\": [\n      {\n        \"internalType\": \"bytes32\",\n        \"name\": \"\",\n        \"type\": \"bytes32\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"FEE_UPDATE_NOTICE\",\n    \"outputs\": [\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"INITIAL_DOMAIN_SEPARATOR\",\n    \"outputs\": [\n      {\n        \"internalType\": \"bytes32\",\n        \"name\": \"\",\n        \"type\": \"bytes32\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"MAX_AUCTION_DURATION\",\n    \"outputs\": [\n      {\n        \"internalType\": \"uint48\",\n        \"name\": \"\",\n        \"type\": \"uint48\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"MIN_AUCTION_DURATION\",\n    \"outputs\": [\n      {\n        \"internalType\": \"uint48\",\n        \"name\": \"\",\n        \"type\": \"uint48\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"MIN_BID_LIQUIDATION\",\n    \"outputs\": [\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"MIN_WAIT_TIME\",\n    \"outputs\": [\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"VERSION\",\n    \"outputs\": [\n      {\n        \"internalType\": \"bytes\",\n        \"name\": \"\",\n        \"type\": \"bytes\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"components\": [\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"renegotiationId\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"loanId\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"internalType\": \"address\",\n            \"name\": \"lender\",\n            \"type\": \"address\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"fee\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"internalType\": \"uint256[]\",\n            \"name\": \"trancheIndex\",\n            \"type\": \"uint256[]\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"principalAmount\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"aprBps\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"expirationTime\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"duration\",\n            \"type\": \"uint256\"\n          }\n        ],\n        \"internalType\": \"struct IMultiSourceLoan.RenegotiationOffer\",\n        \"name\": \"_renegotiationOffer\",\n        \"type\": \"tuple\"\n      },\n      {\n        \"components\": [\n          {\n            \"internalType\": \"address\",\n            \"name\": \"borrower\",\n            \"type\": \"address\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"nftCollateralTokenId\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"internalType\": \"address\",\n            \"name\": \"nftCollateralAddress\",\n            \"type\": \"address\"\n          },\n          {\n            \"internalType\": \"address\",\n            \"name\": \"principalAddress\",\n            \"type\": \"address\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"principalAmount\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"startTime\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"duration\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"components\": [\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"loanId\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"floor\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"principalAmount\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"address\",\n                \"name\": \"lender\",\n                \"type\": \"address\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"accruedInterest\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"startTime\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"aprBps\",\n                \"type\": \"uint256\"\n              }\n            ],\n            \"internalType\": \"struct IMultiSourceLoan.Tranche[]\",\n            \"name\": \"tranche\",\n            \"type\": \"tuple[]\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"protocolFee\",\n            \"type\": \"uint256\"\n          }\n        ],\n        \"internalType\": \"struct IMultiSourceLoan.Loan\",\n        \"name\": \"_loan\",\n        \"type\": \"tuple\"\n      },\n      {\n        \"internalType\": \"bytes\",\n        \"name\": \"_renegotiationOfferSignature\",\n        \"type\": \"bytes\"\n      }\n    ],\n    \"name\": \"addNewTranche\",\n    \"outputs\": [\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"\",\n        \"type\": \"uint256\"\n      },\n      {\n        \"components\": [\n          {\n            \"internalType\": \"address\",\n            \"name\": \"borrower\",\n            \"type\": \"address\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"nftCollateralTokenId\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"internalType\": \"address\",\n            \"name\": \"nftCollateralAddress\",\n            \"type\": \"address\"\n          },\n          {\n            \"internalType\": \"address\",\n            \"name\": \"principalAddress\",\n            \"type\": \"address\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"principalAmount\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"startTime\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"duration\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"components\": [\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"loanId\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"floor\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"principalAmount\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"address\",\n                \"name\": \"lender\",\n                \"type\": \"address\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"accruedInterest\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"startTime\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"aprBps\",\n                \"type\": \"uint256\"\n              }\n            ],\n            \"internalType\": \"struct IMultiSourceLoan.Tranche[]\",\n            \"name\": \"tranche\",\n            \"type\": \"tuple[]\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"protocolFee\",\n            \"type\": \"uint256\"\n          }\n        ],\n        \"internalType\": \"struct IMultiSourceLoan.Loan\",\n        \"name\": \"\",\n        \"type\": \"tuple\"\n      }\n    ],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"_contract\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"addWhitelistedCallbackContract\",\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"_minOfferId\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"cancelAllOffers\",\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"_offerId\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"cancelOffer\",\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"_renegotiationId\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"cancelRenegotiationOffer\",\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"_loanId\",\n        \"type\": \"uint256\"\n      },\n      {\n        \"components\": [\n          {\n            \"internalType\": \"address\",\n            \"name\": \"borrower\",\n            \"type\": \"address\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"nftCollateralTokenId\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"internalType\": \"address\",\n            \"name\": \"nftCollateralAddress\",\n            \"type\": \"address\"\n          },\n          {\n            \"internalType\": \"address\",\n            \"name\": \"principalAddress\",\n            \"type\": \"address\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"principalAmount\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"startTime\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"duration\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"components\": [\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"loanId\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"floor\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"principalAmount\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"address\",\n                \"name\": \"lender\",\n                \"type\": \"address\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"accruedInterest\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"startTime\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"aprBps\",\n                \"type\": \"uint256\"\n              }\n            ],\n            \"internalType\": \"struct IMultiSourceLoan.Tranche[]\",\n            \"name\": \"tranche\",\n            \"type\": \"tuple[]\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"protocolFee\",\n            \"type\": \"uint256\"\n          }\n        ],\n        \"internalType\": \"struct IMultiSourceLoan.Loan\",\n        \"name\": \"loan\",\n        \"type\": \"tuple\"\n      },\n      {\n        \"internalType\": \"address\",\n        \"name\": \"_delegate\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"bytes32\",\n        \"name\": \"_rights\",\n        \"type\": \"bytes32\"\n      },\n      {\n        \"internalType\": \"bool\",\n        \"name\": \"_value\",\n        \"type\": \"bool\"\n      }\n    ],\n    \"name\": \"delegate\",\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"components\": [\n          {\n            \"components\": [\n              {\n                \"components\": [\n                  {\n                    \"components\": [\n                      {\n                        \"internalType\": \"uint256\",\n                        \"name\": \"offerId\",\n                        \"type\": \"uint256\"\n                      },\n                      {\n                        \"internalType\": \"address\",\n                        \"name\": \"lender\",\n                        \"type\": \"address\"\n                      },\n                      {\n                        \"internalType\": \"uint256\",\n                        \"name\": \"fee\",\n                        \"type\": \"uint256\"\n                      },\n                      {\n                        \"internalType\": \"uint256\",\n                        \"name\": \"capacity\",\n                        \"type\": \"uint256\"\n                      },\n                      {\n                        \"internalType\": \"address\",\n                        \"name\": \"nftCollateralAddress\",\n                        \"type\": \"address\"\n                      },\n                      {\n                        \"internalType\": \"uint256\",\n                        \"name\": \"nftCollateralTokenId\",\n                        \"type\": \"uint256\"\n                      },\n                      {\n                        \"internalType\": \"address\",\n                        \"name\": \"principalAddress\",\n                        \"type\": \"address\"\n                      },\n                      {\n                        \"internalType\": \"uint256\",\n                        \"name\": \"principalAmount\",\n                        \"type\": \"uint256\"\n                      },\n                      {\n                        \"internalType\": \"uint256\",\n                        \"name\": \"aprBps\",\n                        \"type\": \"uint256\"\n                      },\n                      {\n                        \"internalType\": \"uint256\",\n                        \"name\": \"expirationTime\",\n                        \"type\": \"uint256\"\n                      },\n                      {\n                        \"internalType\": \"uint256\",\n                        \"name\": \"duration\",\n                        \"type\": \"uint256\"\n                      },\n                      {\n                        \"internalType\": \"uint256\",\n                        \"name\": \"maxSeniorRepayment\",\n                        \"type\": \"uint256\"\n                      },\n                      {\n                        \"components\": [\n                          {\n                            \"internalType\": \"address\",\n                            \"name\": \"validator\",\n                            \"type\": \"address\"\n                          },\n                          {\n                            \"internalType\": \"bytes\",\n                            \"name\": \"arguments\",\n                            \"type\": \"bytes\"\n                          }\n                        ],\n                        \"internalType\": \"struct IBaseLoan.OfferValidator[]\",\n                        \"name\": \"validators\",\n                        \"type\": \"tuple[]\"\n                      }\n                    ],\n                    \"internalType\": \"struct IMultiSourceLoan.LoanOffer\",\n                    \"name\": \"offer\",\n                    \"type\": \"tuple\"\n                  },\n                  {\n                    \"internalType\": \"uint256\",\n                    \"name\": \"amount\",\n                    \"type\": \"uint256\"\n                  },\n                  {\n                    \"internalType\": \"bytes\",\n                    \"name\": \"lenderOfferSignature\",\n                    \"type\": \"bytes\"\n                  }\n                ],\n                \"internalType\": \"struct IMultiSourceLoan.OfferExecution[]\",\n                \"name\": \"offerExecution\",\n                \"type\": \"tuple[]\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"tokenId\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"duration\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"expirationTime\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"address\",\n                \"name\": \"principalReceiver\",\n                \"type\": \"address\"\n              },\n              {\n                \"internalType\": \"bytes\",\n                \"name\": \"callbackData\",\n                \"type\": \"bytes\"\n              }\n            ],\n            \"internalType\": \"struct IMultiSourceLoan.ExecutionData\",\n            \"name\": \"executionData\",\n            \"type\": \"tuple\"\n          },\n          {\n            \"internalType\": \"address\",\n            \"name\": \"borrower\",\n            \"type\": \"address\"\n          },\n          {\n            \"internalType\": \"bytes\",\n            \"name\": \"borrowerOfferSignature\",\n            \"type\": \"bytes\"\n          }\n        ],\n        \"internalType\": \"struct IMultiSourceLoan.LoanExecutionData\",\n        \"name\": \"_loanExecutionData\",\n        \"type\": \"tuple\"\n      }\n    ],\n    \"name\": \"emitLoan\",\n    \"outputs\": [\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"\",\n        \"type\": \"uint256\"\n      },\n      {\n        \"components\": [\n          {\n            \"internalType\": \"address\",\n            \"name\": \"borrower\",\n            \"type\": \"address\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"nftCollateralTokenId\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"internalType\": \"address\",\n            \"name\": \"nftCollateralAddress\",\n            \"type\": \"address\"\n          },\n          {\n            \"internalType\": \"address\",\n            \"name\": \"principalAddress\",\n            \"type\": \"address\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"principalAmount\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"startTime\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"duration\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"components\": [\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"loanId\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"floor\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"principalAmount\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"address\",\n                \"name\": \"lender\",\n                \"type\": \"address\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"accruedInterest\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"startTime\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"aprBps\",\n                \"type\": \"uint256\"\n              }\n            ],\n            \"internalType\": \"struct IMultiSourceLoan.Tranche[]\",\n            \"name\": \"tranche\",\n            \"type\": \"tuple[]\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"protocolFee\",\n            \"type\": \"uint256\"\n          }\n        ],\n        \"internalType\": \"struct IMultiSourceLoan.Loan\",\n        \"name\": \"\",\n        \"type\": \"tuple\"\n      }\n    ],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"_loanId\",\n        \"type\": \"uint256\"\n      },\n      {\n        \"components\": [\n          {\n            \"internalType\": \"address\",\n            \"name\": \"borrower\",\n            \"type\": \"address\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"nftCollateralTokenId\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"internalType\": \"address\",\n            \"name\": \"nftCollateralAddress\",\n            \"type\": \"address\"\n          },\n          {\n            \"internalType\": \"address\",\n            \"name\": \"principalAddress\",\n            \"type\": \"address\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"principalAmount\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"startTime\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"duration\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"components\": [\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"loanId\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"floor\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"principalAmount\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"address\",\n                \"name\": \"lender\",\n                \"type\": \"address\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"accruedInterest\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"startTime\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"aprBps\",\n                \"type\": \"uint256\"\n              }\n            ],\n            \"internalType\": \"struct IMultiSourceLoan.Tranche[]\",\n            \"name\": \"tranche\",\n            \"type\": \"tuple[]\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"protocolFee\",\n            \"type\": \"uint256\"\n          }\n        ],\n        \"internalType\": \"struct IMultiSourceLoan.Loan\",\n        \"name\": \"_loan\",\n        \"type\": \"tuple\"\n      },\n      {\n        \"internalType\": \"address\",\n        \"name\": \"_target\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"bytes\",\n        \"name\": \"_data\",\n        \"type\": \"bytes\"\n      }\n    ],\n    \"name\": \"executeFlashAction\",\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"getCollectionManager\",\n    \"outputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"\",\n        \"type\": \"address\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"getCurrencyManager\",\n    \"outputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"\",\n        \"type\": \"address\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"getDelegateRegistry\",\n    \"outputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"\",\n        \"type\": \"address\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"getFlashActionContract\",\n    \"outputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"\",\n        \"type\": \"address\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"getLiquidationAuctionDuration\",\n    \"outputs\": [\n      {\n        \"internalType\": \"uint48\",\n        \"name\": \"\",\n        \"type\": \"uint48\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"getLiquidator\",\n    \"outputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"\",\n        \"type\": \"address\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"_loanId\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"getLoanHash\",\n    \"outputs\": [\n      {\n        \"internalType\": \"bytes32\",\n        \"name\": \"\",\n        \"type\": \"bytes32\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"getLoanManagerRegistry\",\n    \"outputs\": [\n      {\n        \"internalType\": \"contract ILoanManagerRegistry\",\n        \"name\": \"\",\n        \"type\": \"address\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"getMaxTranches\",\n    \"outputs\": [\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"getMinImprovementApr\",\n    \"outputs\": [\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"getMinLockPeriod\",\n    \"outputs\": [\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"getPendingProtocolFee\",\n    \"outputs\": [\n      {\n        \"components\": [\n          {\n            \"internalType\": \"address\",\n            \"name\": \"recipient\",\n            \"type\": \"address\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"fraction\",\n            \"type\": \"uint256\"\n          }\n        ],\n        \"internalType\": \"struct WithProtocolFee.ProtocolFee\",\n        \"name\": \"\",\n        \"type\": \"tuple\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"getPendingProtocolFeeSetTime\",\n    \"outputs\": [\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"getProtocolFee\",\n    \"outputs\": [\n      {\n        \"components\": [\n          {\n            \"internalType\": \"address\",\n            \"name\": \"recipient\",\n            \"type\": \"address\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"fraction\",\n            \"type\": \"uint256\"\n          }\n        ],\n        \"internalType\": \"struct WithProtocolFee.ProtocolFee\",\n        \"name\": \"\",\n        \"type\": \"tuple\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"getTotalLoansIssued\",\n    \"outputs\": [\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"_lender\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"_offerId\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"getUsedCapacity\",\n    \"outputs\": [\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"user\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"offerId\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"isOfferCancelled\",\n    \"outputs\": [\n      {\n        \"internalType\": \"bool\",\n        \"name\": \"notActive\",\n        \"type\": \"bool\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"user\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"renegotiationIf\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"isRenegotiationOfferCancelled\",\n    \"outputs\": [\n      {\n        \"internalType\": \"bool\",\n        \"name\": \"notActive\",\n        \"type\": \"bool\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"_contract\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"isWhitelistedCallbackContract\",\n    \"outputs\": [\n      {\n        \"internalType\": \"bool\",\n        \"name\": \"\",\n        \"type\": \"bool\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"_loanId\",\n        \"type\": \"uint256\"\n      },\n      {\n        \"components\": [\n          {\n            \"internalType\": \"address\",\n            \"name\": \"borrower\",\n            \"type\": \"address\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"nftCollateralTokenId\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"internalType\": \"address\",\n            \"name\": \"nftCollateralAddress\",\n            \"type\": \"address\"\n          },\n          {\n            \"internalType\": \"address\",\n            \"name\": \"principalAddress\",\n            \"type\": \"address\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"principalAmount\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"startTime\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"duration\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"components\": [\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"loanId\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"floor\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"principalAmount\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"address\",\n                \"name\": \"lender\",\n                \"type\": \"address\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"accruedInterest\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"startTime\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"aprBps\",\n                \"type\": \"uint256\"\n              }\n            ],\n            \"internalType\": \"struct IMultiSourceLoan.Tranche[]\",\n            \"name\": \"tranche\",\n            \"type\": \"tuple[]\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"protocolFee\",\n            \"type\": \"uint256\"\n          }\n        ],\n        \"internalType\": \"struct IMultiSourceLoan.Loan\",\n        \"name\": \"_loan\",\n        \"type\": \"tuple\"\n      }\n    ],\n    \"name\": \"liquidateLoan\",\n    \"outputs\": [\n      {\n        \"internalType\": \"bytes\",\n        \"name\": \"\",\n        \"type\": \"bytes\"\n      }\n    ],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"_loanId\",\n        \"type\": \"uint256\"\n      },\n      {\n        \"components\": [\n          {\n            \"internalType\": \"address\",\n            \"name\": \"borrower\",\n            \"type\": \"address\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"nftCollateralTokenId\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"internalType\": \"address\",\n            \"name\": \"nftCollateralAddress\",\n            \"type\": \"address\"\n          },\n          {\n            \"internalType\": \"address\",\n            \"name\": \"principalAddress\",\n            \"type\": \"address\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"principalAmount\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"startTime\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"duration\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"components\": [\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"loanId\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"floor\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"principalAmount\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"address\",\n                \"name\": \"lender\",\n                \"type\": \"address\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"accruedInterest\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"startTime\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"aprBps\",\n                \"type\": \"uint256\"\n              }\n            ],\n            \"internalType\": \"struct IMultiSourceLoan.Tranche[]\",\n            \"name\": \"tranche\",\n            \"type\": \"tuple[]\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"protocolFee\",\n            \"type\": \"uint256\"\n          }\n        ],\n        \"internalType\": \"struct IMultiSourceLoan.Loan\",\n        \"name\": \"_loan\",\n        \"type\": \"tuple\"\n      }\n    ],\n    \"name\": \"loanLiquidated\",\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"user\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"minOfferId\",\n    \"outputs\": [\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"minOfferId\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"bytes[]\",\n        \"name\": \"data\",\n        \"type\": \"bytes[]\"\n      }\n    ],\n    \"name\": \"multicall\",\n    \"outputs\": [\n      {\n        \"internalType\": \"bytes[]\",\n        \"name\": \"results\",\n        \"type\": \"bytes[]\"\n      }\n    ],\n    \"stateMutability\": \"payable\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"name\",\n    \"outputs\": [\n      {\n        \"internalType\": \"string\",\n        \"name\": \"\",\n        \"type\": \"string\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"address\",\n        \"name\": \"\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"\",\n        \"type\": \"uint256\"\n      },\n      {\n        \"internalType\": \"bytes\",\n        \"name\": \"\",\n        \"type\": \"bytes\"\n      }\n    ],\n    \"name\": \"onERC721Received\",\n    \"outputs\": [\n      {\n        \"internalType\": \"bytes4\",\n        \"name\": \"\",\n        \"type\": \"bytes4\"\n      }\n    ],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"owner\",\n    \"outputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"\",\n        \"type\": \"address\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"pendingOwner\",\n    \"outputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"\",\n        \"type\": \"address\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"pendingOwnerTime\",\n    \"outputs\": [\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"_loanId\",\n        \"type\": \"uint256\"\n      },\n      {\n        \"components\": [\n          {\n            \"internalType\": \"address\",\n            \"name\": \"borrower\",\n            \"type\": \"address\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"nftCollateralTokenId\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"internalType\": \"address\",\n            \"name\": \"nftCollateralAddress\",\n            \"type\": \"address\"\n          },\n          {\n            \"internalType\": \"address\",\n            \"name\": \"principalAddress\",\n            \"type\": \"address\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"principalAmount\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"startTime\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"duration\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"components\": [\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"loanId\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"floor\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"principalAmount\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"address\",\n                \"name\": \"lender\",\n                \"type\": \"address\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"accruedInterest\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"startTime\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"aprBps\",\n                \"type\": \"uint256\"\n              }\n            ],\n            \"internalType\": \"struct IMultiSourceLoan.Tranche[]\",\n            \"name\": \"tranche\",\n            \"type\": \"tuple[]\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"protocolFee\",\n            \"type\": \"uint256\"\n          }\n        ],\n        \"internalType\": \"struct IMultiSourceLoan.Loan\",\n        \"name\": \"_loan\",\n        \"type\": \"tuple\"\n      },\n      {\n        \"components\": [\n          {\n            \"components\": [\n              {\n                \"components\": [\n                  {\n                    \"components\": [\n                      {\n                        \"internalType\": \"uint256\",\n                        \"name\": \"offerId\",\n                        \"type\": \"uint256\"\n                      },\n                      {\n                        \"internalType\": \"address\",\n                        \"name\": \"lender\",\n                        \"type\": \"address\"\n                      },\n                      {\n                        \"internalType\": \"uint256\",\n                        \"name\": \"fee\",\n                        \"type\": \"uint256\"\n                      },\n                      {\n                        \"internalType\": \"uint256\",\n                        \"name\": \"capacity\",\n                        \"type\": \"uint256\"\n                      },\n                      {\n                        \"internalType\": \"address\",\n                        \"name\": \"nftCollateralAddress\",\n                        \"type\": \"address\"\n                      },\n                      {\n                        \"internalType\": \"uint256\",\n                        \"name\": \"nftCollateralTokenId\",\n                        \"type\": \"uint256\"\n                      },\n                      {\n                        \"internalType\": \"address\",\n                        \"name\": \"principalAddress\",\n                        \"type\": \"address\"\n                      },\n                      {\n                        \"internalType\": \"uint256\",\n                        \"name\": \"principalAmount\",\n                        \"type\": \"uint256\"\n                      },\n                      {\n                        \"internalType\": \"uint256\",\n                        \"name\": \"aprBps\",\n                        \"type\": \"uint256\"\n                      },\n                      {\n                        \"internalType\": \"uint256\",\n                        \"name\": \"expirationTime\",\n                        \"type\": \"uint256\"\n                      },\n                      {\n                        \"internalType\": \"uint256\",\n                        \"name\": \"duration\",\n                        \"type\": \"uint256\"\n                      },\n                      {\n                        \"internalType\": \"uint256\",\n                        \"name\": \"maxSeniorRepayment\",\n                        \"type\": \"uint256\"\n                      },\n                      {\n                        \"components\": [\n                          {\n                            \"internalType\": \"address\",\n                            \"name\": \"validator\",\n                            \"type\": \"address\"\n                          },\n                          {\n                            \"internalType\": \"bytes\",\n                            \"name\": \"arguments\",\n                            \"type\": \"bytes\"\n                          }\n                        ],\n                        \"internalType\": \"struct IBaseLoan.OfferValidator[]\",\n                        \"name\": \"validators\",\n                        \"type\": \"tuple[]\"\n                      }\n                    ],\n                    \"internalType\": \"struct IMultiSourceLoan.LoanOffer\",\n                    \"name\": \"offer\",\n                    \"type\": \"tuple\"\n                  },\n                  {\n                    \"internalType\": \"uint256\",\n                    \"name\": \"amount\",\n                    \"type\": \"uint256\"\n                  },\n                  {\n                    \"internalType\": \"bytes\",\n                    \"name\": \"lenderOfferSignature\",\n                    \"type\": \"bytes\"\n                  }\n                ],\n                \"internalType\": \"struct IMultiSourceLoan.OfferExecution[]\",\n                \"name\": \"offerExecution\",\n                \"type\": \"tuple[]\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"tokenId\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"duration\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"expirationTime\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"address\",\n                \"name\": \"principalReceiver\",\n                \"type\": \"address\"\n              },\n              {\n                \"internalType\": \"bytes\",\n                \"name\": \"callbackData\",\n                \"type\": \"bytes\"\n              }\n            ],\n            \"internalType\": \"struct IMultiSourceLoan.ExecutionData\",\n            \"name\": \"executionData\",\n            \"type\": \"tuple\"\n          },\n          {\n            \"internalType\": \"address\",\n            \"name\": \"borrower\",\n            \"type\": \"address\"\n          },\n          {\n            \"internalType\": \"bytes\",\n            \"name\": \"borrowerOfferSignature\",\n            \"type\": \"bytes\"\n          }\n        ],\n        \"internalType\": \"struct IMultiSourceLoan.LoanExecutionData\",\n        \"name\": \"_loanExecutionData\",\n        \"type\": \"tuple\"\n      }\n    ],\n    \"name\": \"refinanceFromLoanExecutionData\",\n    \"outputs\": [\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"\",\n        \"type\": \"uint256\"\n      },\n      {\n        \"components\": [\n          {\n            \"internalType\": \"address\",\n            \"name\": \"borrower\",\n            \"type\": \"address\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"nftCollateralTokenId\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"internalType\": \"address\",\n            \"name\": \"nftCollateralAddress\",\n            \"type\": \"address\"\n          },\n          {\n            \"internalType\": \"address\",\n            \"name\": \"principalAddress\",\n            \"type\": \"address\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"principalAmount\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"startTime\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"duration\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"components\": [\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"loanId\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"floor\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"principalAmount\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"address\",\n                \"name\": \"lender\",\n                \"type\": \"address\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"accruedInterest\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"startTime\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"aprBps\",\n                \"type\": \"uint256\"\n              }\n            ],\n            \"internalType\": \"struct IMultiSourceLoan.Tranche[]\",\n            \"name\": \"tranche\",\n            \"type\": \"tuple[]\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"protocolFee\",\n            \"type\": \"uint256\"\n          }\n        ],\n        \"internalType\": \"struct IMultiSourceLoan.Loan\",\n        \"name\": \"\",\n        \"type\": \"tuple\"\n      }\n    ],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"components\": [\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"renegotiationId\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"loanId\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"internalType\": \"address\",\n            \"name\": \"lender\",\n            \"type\": \"address\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"fee\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"internalType\": \"uint256[]\",\n            \"name\": \"trancheIndex\",\n            \"type\": \"uint256[]\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"principalAmount\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"aprBps\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"expirationTime\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"duration\",\n            \"type\": \"uint256\"\n          }\n        ],\n        \"internalType\": \"struct IMultiSourceLoan.RenegotiationOffer\",\n        \"name\": \"_renegotiationOffer\",\n        \"type\": \"tuple\"\n      },\n      {\n        \"components\": [\n          {\n            \"internalType\": \"address\",\n            \"name\": \"borrower\",\n            \"type\": \"address\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"nftCollateralTokenId\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"internalType\": \"address\",\n            \"name\": \"nftCollateralAddress\",\n            \"type\": \"address\"\n          },\n          {\n            \"internalType\": \"address\",\n            \"name\": \"principalAddress\",\n            \"type\": \"address\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"principalAmount\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"startTime\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"duration\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"components\": [\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"loanId\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"floor\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"principalAmount\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"address\",\n                \"name\": \"lender\",\n                \"type\": \"address\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"accruedInterest\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"startTime\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"aprBps\",\n                \"type\": \"uint256\"\n              }\n            ],\n            \"internalType\": \"struct IMultiSourceLoan.Tranche[]\",\n            \"name\": \"tranche\",\n            \"type\": \"tuple[]\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"protocolFee\",\n            \"type\": \"uint256\"\n          }\n        ],\n        \"internalType\": \"struct IMultiSourceLoan.Loan\",\n        \"name\": \"_loan\",\n        \"type\": \"tuple\"\n      },\n      {\n        \"internalType\": \"bytes\",\n        \"name\": \"_renegotiationOfferSignature\",\n        \"type\": \"bytes\"\n      }\n    ],\n    \"name\": \"refinanceFull\",\n    \"outputs\": [\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"\",\n        \"type\": \"uint256\"\n      },\n      {\n        \"components\": [\n          {\n            \"internalType\": \"address\",\n            \"name\": \"borrower\",\n            \"type\": \"address\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"nftCollateralTokenId\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"internalType\": \"address\",\n            \"name\": \"nftCollateralAddress\",\n            \"type\": \"address\"\n          },\n          {\n            \"internalType\": \"address\",\n            \"name\": \"principalAddress\",\n            \"type\": \"address\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"principalAmount\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"startTime\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"duration\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"components\": [\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"loanId\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"floor\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"principalAmount\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"address\",\n                \"name\": \"lender\",\n                \"type\": \"address\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"accruedInterest\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"startTime\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"aprBps\",\n                \"type\": \"uint256\"\n              }\n            ],\n            \"internalType\": \"struct IMultiSourceLoan.Tranche[]\",\n            \"name\": \"tranche\",\n            \"type\": \"tuple[]\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"protocolFee\",\n            \"type\": \"uint256\"\n          }\n        ],\n        \"internalType\": \"struct IMultiSourceLoan.Loan\",\n        \"name\": \"\",\n        \"type\": \"tuple\"\n      }\n    ],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"components\": [\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"renegotiationId\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"loanId\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"internalType\": \"address\",\n            \"name\": \"lender\",\n            \"type\": \"address\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"fee\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"internalType\": \"uint256[]\",\n            \"name\": \"trancheIndex\",\n            \"type\": \"uint256[]\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"principalAmount\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"aprBps\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"expirationTime\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"duration\",\n            \"type\": \"uint256\"\n          }\n        ],\n        \"internalType\": \"struct IMultiSourceLoan.RenegotiationOffer\",\n        \"name\": \"_renegotiationOffer\",\n        \"type\": \"tuple\"\n      },\n      {\n        \"components\": [\n          {\n            \"internalType\": \"address\",\n            \"name\": \"borrower\",\n            \"type\": \"address\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"nftCollateralTokenId\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"internalType\": \"address\",\n            \"name\": \"nftCollateralAddress\",\n            \"type\": \"address\"\n          },\n          {\n            \"internalType\": \"address\",\n            \"name\": \"principalAddress\",\n            \"type\": \"address\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"principalAmount\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"startTime\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"duration\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"components\": [\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"loanId\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"floor\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"principalAmount\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"address\",\n                \"name\": \"lender\",\n                \"type\": \"address\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"accruedInterest\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"startTime\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"aprBps\",\n                \"type\": \"uint256\"\n              }\n            ],\n            \"internalType\": \"struct IMultiSourceLoan.Tranche[]\",\n            \"name\": \"tranche\",\n            \"type\": \"tuple[]\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"protocolFee\",\n            \"type\": \"uint256\"\n          }\n        ],\n        \"internalType\": \"struct IMultiSourceLoan.Loan\",\n        \"name\": \"_loan\",\n        \"type\": \"tuple\"\n      }\n    ],\n    \"name\": \"refinancePartial\",\n    \"outputs\": [\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"\",\n        \"type\": \"uint256\"\n      },\n      {\n        \"components\": [\n          {\n            \"internalType\": \"address\",\n            \"name\": \"borrower\",\n            \"type\": \"address\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"nftCollateralTokenId\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"internalType\": \"address\",\n            \"name\": \"nftCollateralAddress\",\n            \"type\": \"address\"\n          },\n          {\n            \"internalType\": \"address\",\n            \"name\": \"principalAddress\",\n            \"type\": \"address\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"principalAmount\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"startTime\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"duration\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"components\": [\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"loanId\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"floor\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"principalAmount\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"address\",\n                \"name\": \"lender\",\n                \"type\": \"address\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"accruedInterest\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"startTime\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"aprBps\",\n                \"type\": \"uint256\"\n              }\n            ],\n            \"internalType\": \"struct IMultiSourceLoan.Tranche[]\",\n            \"name\": \"tranche\",\n            \"type\": \"tuple[]\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"protocolFee\",\n            \"type\": \"uint256\"\n          }\n        ],\n        \"internalType\": \"struct IMultiSourceLoan.Loan\",\n        \"name\": \"\",\n        \"type\": \"tuple\"\n      }\n    ],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"_contract\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"removeWhitelistedCallbackContract\",\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"components\": [\n          {\n            \"components\": [\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"loanId\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"bytes\",\n                \"name\": \"callbackData\",\n                \"type\": \"bytes\"\n              },\n              {\n                \"internalType\": \"bool\",\n                \"name\": \"shouldDelegate\",\n                \"type\": \"bool\"\n              }\n            ],\n            \"internalType\": \"struct IMultiSourceLoan.SignableRepaymentData\",\n            \"name\": \"data\",\n            \"type\": \"tuple\"\n          },\n          {\n            \"components\": [\n              {\n                \"internalType\": \"address\",\n                \"name\": \"borrower\",\n                \"type\": \"address\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"nftCollateralTokenId\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"address\",\n                \"name\": \"nftCollateralAddress\",\n                \"type\": \"address\"\n              },\n              {\n                \"internalType\": \"address\",\n                \"name\": \"principalAddress\",\n                \"type\": \"address\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"principalAmount\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"startTime\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"duration\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"components\": [\n                  {\n                    \"internalType\": \"uint256\",\n                    \"name\": \"loanId\",\n                    \"type\": \"uint256\"\n                  },\n                  {\n                    \"internalType\": \"uint256\",\n                    \"name\": \"floor\",\n                    \"type\": \"uint256\"\n                  },\n                  {\n                    \"internalType\": \"uint256\",\n                    \"name\": \"principalAmount\",\n                    \"type\": \"uint256\"\n                  },\n                  {\n                    \"internalType\": \"address\",\n                    \"name\": \"lender\",\n                    \"type\": \"address\"\n                  },\n                  {\n                    \"internalType\": \"uint256\",\n                    \"name\": \"accruedInterest\",\n                    \"type\": \"uint256\"\n                  },\n                  {\n                    \"internalType\": \"uint256\",\n                    \"name\": \"startTime\",\n                    \"type\": \"uint256\"\n                  },\n                  {\n                    \"internalType\": \"uint256\",\n                    \"name\": \"aprBps\",\n                    \"type\": \"uint256\"\n                  }\n                ],\n                \"internalType\": \"struct IMultiSourceLoan.Tranche[]\",\n                \"name\": \"tranche\",\n                \"type\": \"tuple[]\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"protocolFee\",\n                \"type\": \"uint256\"\n              }\n            ],\n            \"internalType\": \"struct IMultiSourceLoan.Loan\",\n            \"name\": \"loan\",\n            \"type\": \"tuple\"\n          },\n          {\n            \"internalType\": \"bytes\",\n            \"name\": \"borrowerSignature\",\n            \"type\": \"bytes\"\n          }\n        ],\n        \"internalType\": \"struct IMultiSourceLoan.LoanRepaymentData\",\n        \"name\": \"_repaymentData\",\n        \"type\": \"tuple\"\n      }\n    ],\n    \"name\": \"repayLoan\",\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"_newOwner\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"requestTransferOwner\",\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"_delegate\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"address\",\n        \"name\": \"_collection\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"_tokenId\",\n        \"type\": \"uint256\"\n      },\n      {\n        \"internalType\": \"bytes32\",\n        \"name\": \"_rights\",\n        \"type\": \"bytes32\"\n      }\n    ],\n    \"name\": \"revokeDelegate\",\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"_newFlashActionContract\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"setFlashActionContract\",\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"__minLockPeriod\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"setMinLockPeriod\",\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"setProtocolFee\",\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"transferOwnership\",\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"newOwner\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"transferOwnership\",\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"uint48\",\n        \"name\": \"_newDuration\",\n        \"type\": \"uint48\"\n      }\n    ],\n    \"name\": \"updateLiquidationAuctionDuration\",\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"__loanLiquidator\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"updateLiquidationContract\",\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"_newMinimum\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"updateMinImprovementApr\",\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"components\": [\n          {\n            \"internalType\": \"address\",\n            \"name\": \"recipient\",\n            \"type\": \"address\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"fraction\",\n            \"type\": \"uint256\"\n          }\n        ],\n        \"internalType\": \"struct WithProtocolFee.ProtocolFee\",\n        \"name\": \"_newProtocolFee\",\n        \"type\": \"tuple\"\n      }\n    ],\n    \"name\": \"updateProtocolFee\",\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"anonymous\": false,\n    \"inputs\": [\n      {\n        \"indexed\": false,\n        \"internalType\": \"address\",\n        \"name\": \"lender\",\n        \"type\": \"address\"\n      },\n      {\n        \"indexed\": false,\n        \"internalType\": \"uint256\",\n        \"name\": \"minOfferId\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"AllOffersCancelled\",\n    \"type\": \"event\"\n  },\n  {\n    \"anonymous\": false,\n    \"inputs\": [\n      {\n        \"indexed\": false,\n        \"internalType\": \"uint256\",\n        \"name\": \"loanId\",\n        \"type\": \"uint256\"\n      },\n      {\n        \"indexed\": false,\n        \"internalType\": \"address\",\n        \"name\": \"delegate\",\n        \"type\": \"address\"\n      },\n      {\n        \"indexed\": false,\n        \"internalType\": \"bytes32\",\n        \"name\": \"_rights\",\n        \"type\": \"bytes32\"\n      },\n      {\n        \"indexed\": false,\n        \"internalType\": \"bool\",\n        \"name\": \"value\",\n        \"type\": \"bool\"\n      }\n    ],\n    \"name\": \"Delegated\",\n    \"type\": \"event\"\n  },\n  {\n    \"anonymous\": false,\n    \"inputs\": [\n      {\n        \"indexed\": false,\n        \"internalType\": \"address\",\n        \"name\": \"newFlashActionContract\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"FlashActionContractUpdated\",\n    \"type\": \"event\"\n  },\n  {\n    \"anonymous\": false,\n    \"inputs\": [\n      {\n        \"indexed\": false,\n        \"internalType\": \"uint256\",\n        \"name\": \"loanId\",\n        \"type\": \"uint256\"\n      },\n      {\n        \"indexed\": false,\n        \"internalType\": \"address\",\n        \"name\": \"target\",\n        \"type\": \"address\"\n      },\n      {\n        \"indexed\": false,\n        \"internalType\": \"bytes\",\n        \"name\": \"data\",\n        \"type\": \"bytes\"\n      }\n    ],\n    \"name\": \"FlashActionExecuted\",\n    \"type\": \"event\"\n  },\n  {\n    \"anonymous\": false,\n    \"inputs\": [\n      {\n        \"indexed\": false,\n        \"internalType\": \"uint256\",\n        \"name\": \"newDuration\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"LiquidationAuctionDurationUpdated\",\n    \"type\": \"event\"\n  },\n  {\n    \"anonymous\": false,\n    \"inputs\": [\n      {\n        \"indexed\": false,\n        \"internalType\": \"address\",\n        \"name\": \"liquidator\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"LiquidationContractUpdated\",\n    \"type\": \"event\"\n  },\n  {\n    \"anonymous\": false,\n    \"inputs\": [\n      {\n        \"indexed\": false,\n        \"internalType\": \"uint256\",\n        \"name\": \"loanId\",\n        \"type\": \"uint256\"\n      },\n      {\n        \"indexed\": false,\n        \"internalType\": \"uint256[]\",\n        \"name\": \"offerId\",\n        \"type\": \"uint256[]\"\n      },\n      {\n        \"components\": [\n          {\n            \"internalType\": \"address\",\n            \"name\": \"borrower\",\n            \"type\": \"address\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"nftCollateralTokenId\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"internalType\": \"address\",\n            \"name\": \"nftCollateralAddress\",\n            \"type\": \"address\"\n          },\n          {\n            \"internalType\": \"address\",\n            \"name\": \"principalAddress\",\n            \"type\": \"address\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"principalAmount\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"startTime\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"duration\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"components\": [\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"loanId\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"floor\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"principalAmount\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"address\",\n                \"name\": \"lender\",\n                \"type\": \"address\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"accruedInterest\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"startTime\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"aprBps\",\n                \"type\": \"uint256\"\n              }\n            ],\n            \"internalType\": \"struct IMultiSourceLoan.Tranche[]\",\n            \"name\": \"tranche\",\n            \"type\": \"tuple[]\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"protocolFee\",\n            \"type\": \"uint256\"\n          }\n        ],\n        \"indexed\": false,\n        \"internalType\": \"struct IMultiSourceLoan.Loan\",\n        \"name\": \"loan\",\n        \"type\": \"tuple\"\n      },\n      {\n        \"indexed\": false,\n        \"internalType\": \"uint256\",\n        \"name\": \"fee\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"LoanEmitted\",\n    \"type\": \"event\"\n  },\n  {\n    \"anonymous\": false,\n    \"inputs\": [\n      {\n        \"indexed\": false,\n        \"internalType\": \"uint256\",\n        \"name\": \"loanId\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"LoanForeclosed\",\n    \"type\": \"event\"\n  },\n  {\n    \"anonymous\": false,\n    \"inputs\": [\n      {\n        \"indexed\": false,\n        \"internalType\": \"uint256\",\n        \"name\": \"loanId\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"LoanLiquidated\",\n    \"type\": \"event\"\n  },\n  {\n    \"anonymous\": false,\n    \"inputs\": [\n      {\n        \"indexed\": false,\n        \"internalType\": \"uint256\",\n        \"name\": \"renegotiationId\",\n        \"type\": \"uint256\"\n      },\n      {\n        \"indexed\": false,\n        \"internalType\": \"uint256\",\n        \"name\": \"oldLoanId\",\n        \"type\": \"uint256\"\n      },\n      {\n        \"indexed\": false,\n        \"internalType\": \"uint256\",\n        \"name\": \"newLoanId\",\n        \"type\": \"uint256\"\n      },\n      {\n        \"components\": [\n          {\n            \"internalType\": \"address\",\n            \"name\": \"borrower\",\n            \"type\": \"address\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"nftCollateralTokenId\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"internalType\": \"address\",\n            \"name\": \"nftCollateralAddress\",\n            \"type\": \"address\"\n          },\n          {\n            \"internalType\": \"address\",\n            \"name\": \"principalAddress\",\n            \"type\": \"address\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"principalAmount\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"startTime\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"duration\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"components\": [\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"loanId\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"floor\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"principalAmount\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"address\",\n                \"name\": \"lender\",\n                \"type\": \"address\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"accruedInterest\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"startTime\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"aprBps\",\n                \"type\": \"uint256\"\n              }\n            ],\n            \"internalType\": \"struct IMultiSourceLoan.Tranche[]\",\n            \"name\": \"tranche\",\n            \"type\": \"tuple[]\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"protocolFee\",\n            \"type\": \"uint256\"\n          }\n        ],\n        \"indexed\": false,\n        \"internalType\": \"struct IMultiSourceLoan.Loan\",\n        \"name\": \"loan\",\n        \"type\": \"tuple\"\n      },\n      {\n        \"indexed\": false,\n        \"internalType\": \"uint256\",\n        \"name\": \"fee\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"LoanRefinanced\",\n    \"type\": \"event\"\n  },\n  {\n    \"anonymous\": false,\n    \"inputs\": [\n      {\n        \"indexed\": false,\n        \"internalType\": \"uint256\",\n        \"name\": \"loanId\",\n        \"type\": \"uint256\"\n      },\n      {\n        \"indexed\": false,\n        \"internalType\": \"uint256\",\n        \"name\": \"newLoanId\",\n        \"type\": \"uint256\"\n      },\n      {\n        \"components\": [\n          {\n            \"internalType\": \"address\",\n            \"name\": \"borrower\",\n            \"type\": \"address\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"nftCollateralTokenId\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"internalType\": \"address\",\n            \"name\": \"nftCollateralAddress\",\n            \"type\": \"address\"\n          },\n          {\n            \"internalType\": \"address\",\n            \"name\": \"principalAddress\",\n            \"type\": \"address\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"principalAmount\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"startTime\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"duration\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"components\": [\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"loanId\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"floor\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"principalAmount\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"address\",\n                \"name\": \"lender\",\n                \"type\": \"address\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"accruedInterest\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"startTime\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"aprBps\",\n                \"type\": \"uint256\"\n              }\n            ],\n            \"internalType\": \"struct IMultiSourceLoan.Tranche[]\",\n            \"name\": \"tranche\",\n            \"type\": \"tuple[]\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"protocolFee\",\n            \"type\": \"uint256\"\n          }\n        ],\n        \"indexed\": false,\n        \"internalType\": \"struct IMultiSourceLoan.Loan\",\n        \"name\": \"loan\",\n        \"type\": \"tuple\"\n      },\n      {\n        \"indexed\": false,\n        \"internalType\": \"uint256[]\",\n        \"name\": \"offerIds\",\n        \"type\": \"uint256[]\"\n      },\n      {\n        \"indexed\": false,\n        \"internalType\": \"uint256\",\n        \"name\": \"totalFee\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"LoanRefinancedFromNewOffers\",\n    \"type\": \"event\"\n  },\n  {\n    \"anonymous\": false,\n    \"inputs\": [\n      {\n        \"indexed\": false,\n        \"internalType\": \"uint256\",\n        \"name\": \"loanId\",\n        \"type\": \"uint256\"\n      },\n      {\n        \"indexed\": false,\n        \"internalType\": \"uint256\",\n        \"name\": \"totalRepayment\",\n        \"type\": \"uint256\"\n      },\n      {\n        \"indexed\": false,\n        \"internalType\": \"uint256\",\n        \"name\": \"fee\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"LoanRepaid\",\n    \"type\": \"event\"\n  },\n  {\n    \"anonymous\": false,\n    \"inputs\": [\n      {\n        \"indexed\": false,\n        \"internalType\": \"uint256\",\n        \"name\": \"loanId\",\n        \"type\": \"uint256\"\n      },\n      {\n        \"indexed\": false,\n        \"internalType\": \"address\",\n        \"name\": \"liquidator\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"LoanSentToLiquidator\",\n    \"type\": \"event\"\n  },\n  {\n    \"anonymous\": false,\n    \"inputs\": [\n      {\n        \"indexed\": false,\n        \"internalType\": \"uint256\",\n        \"name\": \"_minimum\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"MinAprImprovementUpdated\",\n    \"type\": \"event\"\n  },\n  {\n    \"anonymous\": false,\n    \"inputs\": [\n      {\n        \"indexed\": false,\n        \"internalType\": \"uint256\",\n        \"name\": \"newMinBid\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"MinBidLiquidationUpdated\",\n    \"type\": \"event\"\n  },\n  {\n    \"anonymous\": false,\n    \"inputs\": [\n      {\n        \"indexed\": false,\n        \"internalType\": \"uint256\",\n        \"name\": \"minLockPeriod\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"MinLockPeriodUpdated\",\n    \"type\": \"event\"\n  },\n  {\n    \"anonymous\": false,\n    \"inputs\": [\n      {\n        \"indexed\": false,\n        \"internalType\": \"address\",\n        \"name\": \"lender\",\n        \"type\": \"address\"\n      },\n      {\n        \"indexed\": false,\n        \"internalType\": \"uint256\",\n        \"name\": \"offerId\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"OfferCancelled\",\n    \"type\": \"event\"\n  },\n  {\n    \"anonymous\": false,\n    \"inputs\": [\n      {\n        \"indexed\": true,\n        \"internalType\": \"address\",\n        \"name\": \"user\",\n        \"type\": \"address\"\n      },\n      {\n        \"indexed\": true,\n        \"internalType\": \"address\",\n        \"name\": \"newOwner\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"OwnershipTransferred\",\n    \"type\": \"event\"\n  },\n  {\n    \"anonymous\": false,\n    \"inputs\": [\n      {\n        \"components\": [\n          {\n            \"internalType\": \"address\",\n            \"name\": \"recipient\",\n            \"type\": \"address\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"fraction\",\n            \"type\": \"uint256\"\n          }\n        ],\n        \"indexed\": false,\n        \"internalType\": \"struct WithProtocolFee.ProtocolFee\",\n        \"name\": \"fee\",\n        \"type\": \"tuple\"\n      }\n    ],\n    \"name\": \"ProtocolFeePendingUpdate\",\n    \"type\": \"event\"\n  },\n  {\n    \"anonymous\": false,\n    \"inputs\": [\n      {\n        \"components\": [\n          {\n            \"internalType\": \"address\",\n            \"name\": \"recipient\",\n            \"type\": \"address\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"fraction\",\n            \"type\": \"uint256\"\n          }\n        ],\n        \"indexed\": false,\n        \"internalType\": \"struct WithProtocolFee.ProtocolFee\",\n        \"name\": \"fee\",\n        \"type\": \"tuple\"\n      }\n    ],\n    \"name\": \"ProtocolFeeUpdated\",\n    \"type\": \"event\"\n  },\n  {\n    \"anonymous\": false,\n    \"inputs\": [\n      {\n        \"indexed\": false,\n        \"internalType\": \"address\",\n        \"name\": \"lender\",\n        \"type\": \"address\"\n      },\n      {\n        \"indexed\": false,\n        \"internalType\": \"uint256\",\n        \"name\": \"renegotiationId\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"RenegotiationOfferCancelled\",\n    \"type\": \"event\"\n  },\n  {\n    \"anonymous\": false,\n    \"inputs\": [\n      {\n        \"indexed\": false,\n        \"internalType\": \"address\",\n        \"name\": \"delegate\",\n        \"type\": \"address\"\n      },\n      {\n        \"indexed\": false,\n        \"internalType\": \"address\",\n        \"name\": \"collection\",\n        \"type\": \"address\"\n      },\n      {\n        \"indexed\": false,\n        \"internalType\": \"uint256\",\n        \"name\": \"tokenId\",\n        \"type\": \"uint256\"\n      },\n      {\n        \"indexed\": false,\n        \"internalType\": \"bytes32\",\n        \"name\": \"_rights\",\n        \"type\": \"bytes32\"\n      }\n    ],\n    \"name\": \"RevokeDelegate\",\n    \"type\": \"event\"\n  },\n  {\n    \"anonymous\": false,\n    \"inputs\": [\n      {\n        \"indexed\": false,\n        \"internalType\": \"address\",\n        \"name\": \"newOwner\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"TransferOwnerRequested\",\n    \"type\": \"event\"\n  },\n  {\n    \"anonymous\": false,\n    \"inputs\": [\n      {\n        \"indexed\": false,\n        \"internalType\": \"address\",\n        \"name\": \"contractAdded\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"WhitelistedCallbackContractAdded\",\n    \"type\": \"event\"\n  },\n  {\n    \"anonymous\": false,\n    \"inputs\": [\n      {\n        \"indexed\": false,\n        \"internalType\": \"address\",\n        \"name\": \"contractRemoved\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"WhitelistedCallbackContractRemoved\",\n    \"type\": \"event\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"AddressZeroError\",\n    \"type\": \"error\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"_lender\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"_offerId\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"CancelledOrExecutedOfferError\",\n    \"type\": \"error\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"CollectionNotWhitelistedError\",\n    \"type\": \"error\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"CurrencyNotWhitelistedError\",\n    \"type\": \"error\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"ECDSAInvalidSignature\",\n    \"type\": \"error\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"length\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"ECDSAInvalidSignatureLength\",\n    \"type\": \"error\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"bytes32\",\n        \"name\": \"s\",\n        \"type\": \"bytes32\"\n      }\n    ],\n    \"name\": \"ECDSAInvalidSignatureS\",\n    \"type\": \"error\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"_expirationTime\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"ExpiredOfferError\",\n    \"type\": \"error\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"InvalidAddressesError\",\n    \"type\": \"error\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"_amount\",\n        \"type\": \"uint256\"\n      },\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"_principalAmount\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"InvalidAmountError\",\n    \"type\": \"error\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"InvalidCallbackError\",\n    \"type\": \"error\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"InvalidCallerError\",\n    \"type\": \"error\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"InvalidCollateralIdError\",\n    \"type\": \"error\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"InvalidDurationError\",\n    \"type\": \"error\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"InvalidInputError\",\n    \"type\": \"error\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"_loanId\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"InvalidLoanError\",\n    \"type\": \"error\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"InvalidMethodError\",\n    \"type\": \"error\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"InvalidParametersError\",\n    \"type\": \"error\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"InvalidRenegotiationOfferError\",\n    \"type\": \"error\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"InvalidSignatureError\",\n    \"type\": \"error\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"InvalidTrancheError\",\n    \"type\": \"error\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"_liquidator\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"LiquidatorOnlyError\",\n    \"type\": \"error\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"LoanExpiredError\",\n    \"type\": \"error\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"LoanLockedError\",\n    \"type\": \"error\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"_expirationTime\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"LoanNotDueError\",\n    \"type\": \"error\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"_lender\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"_newMinOfferId\",\n        \"type\": \"uint256\"\n      },\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"_minOfferId\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"LowOfferIdError\",\n    \"type\": \"error\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"_lender\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"_newMinRenegotiationOfferId\",\n        \"type\": \"uint256\"\n      },\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"_minOfferId\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"LowRenegotiationOfferIdError\",\n    \"type\": \"error\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"MaxCapacityExceededError\",\n    \"type\": \"error\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"MismatchError\",\n    \"type\": \"error\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"i\",\n        \"type\": \"uint256\"\n      },\n      {\n        \"internalType\": \"bytes\",\n        \"name\": \"returndata\",\n        \"type\": \"bytes\"\n      }\n    ],\n    \"name\": \"MulticallFailed\",\n    \"type\": \"error\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"NFTNotReturnedError\",\n    \"type\": \"error\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"NotStrictlyImprovedError\",\n    \"type\": \"error\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"_pendingProtocolFeeSetTime\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"TooEarlyError\",\n    \"type\": \"error\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"TooManyTranchesError\",\n    \"type\": \"error\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"TooSoonError\",\n    \"type\": \"error\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"minTimestamp\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"TrancheCannotBeRefinancedError\",\n    \"type\": \"error\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"ZeroInterestError\",\n    \"type\": \"error\"\n  }\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// Multicall\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const multicallAbi = [\n  {\n    type: 'error',\n    inputs: [\n      { name: 'i', internalType: 'uint256', type: 'uint256' },\n      { name: 'returndata', internalType: 'bytes', type: 'bytes' },\n    ],\n    name: 'MulticallFailed',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'data', internalType: 'bytes[]', type: 'bytes[]' }],\n    name: 'multicall',\n    outputs: [{ name: 'results', internalType: 'bytes[]', type: 'bytes[]' }],\n    stateMutability: 'payable',\n  },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// NftBitVectorValidator\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const nftBitVectorValidatorAbi = [\n  {\n    type: 'error',\n    inputs: [{ name: '_tokenId', internalType: 'uint256', type: 'uint256' }],\n    name: 'BitVectorLengthExceededError',\n  },\n  {\n    type: 'error',\n    inputs: [{ name: '_tokenId', internalType: 'uint256', type: 'uint256' }],\n    name: 'TokenIdNotFoundError',\n  },\n  {\n    type: 'function',\n    inputs: [\n      {\n        name: '',\n        internalType: 'struct IMultiSourceLoan.LoanOffer',\n        type: 'tuple',\n        components: [\n          { name: 'offerId', internalType: 'uint256', type: 'uint256' },\n          { name: 'lender', internalType: 'address', type: 'address' },\n          { name: 'fee', internalType: 'uint256', type: 'uint256' },\n          { name: 'capacity', internalType: 'uint256', type: 'uint256' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n          { name: 'expirationTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          { name: 'maxSeniorRepayment', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'validators',\n            internalType: 'struct IBaseLoan.OfferValidator[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'validator', internalType: 'address', type: 'address' },\n              { name: 'arguments', internalType: 'bytes', type: 'bytes' },\n            ],\n          },\n        ],\n      },\n      { name: '_tokenId', internalType: 'uint256', type: 'uint256' },\n      { name: '_validatorData', internalType: 'bytes', type: 'bytes' },\n    ],\n    name: 'validateOffer',\n    outputs: [],\n    stateMutability: 'pure',\n  },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// NftPackedListValidator\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const nftPackedListValidatorAbi = [\n  { type: 'error', inputs: [], name: 'EmptyTokenIdListError' },\n  {\n    type: 'error',\n    inputs: [{ name: '_bytesPerTokenId', internalType: 'uint64', type: 'uint64' }],\n    name: 'InvalidBytesPerTokenIdError',\n  },\n  {\n    type: 'error',\n    inputs: [{ name: '_tokenId', internalType: 'uint256', type: 'uint256' }],\n    name: 'TokenIdNotFoundError',\n  },\n  {\n    type: 'function',\n    inputs: [\n      {\n        name: '',\n        internalType: 'struct IMultiSourceLoan.LoanOffer',\n        type: 'tuple',\n        components: [\n          { name: 'offerId', internalType: 'uint256', type: 'uint256' },\n          { name: 'lender', internalType: 'address', type: 'address' },\n          { name: 'fee', internalType: 'uint256', type: 'uint256' },\n          { name: 'capacity', internalType: 'uint256', type: 'uint256' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n          { name: 'expirationTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          { name: 'maxSeniorRepayment', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'validators',\n            internalType: 'struct IBaseLoan.OfferValidator[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'validator', internalType: 'address', type: 'address' },\n              { name: 'arguments', internalType: 'bytes', type: 'bytes' },\n            ],\n          },\n        ],\n      },\n      { name: '_tokenId', internalType: 'uint256', type: 'uint256' },\n      { name: '_validatorData', internalType: 'bytes', type: 'bytes' },\n    ],\n    name: 'validateOffer',\n    outputs: [],\n    stateMutability: 'pure',\n  },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// Oracle\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const oracleAbi = [\n  {\n    type: 'constructor',\n    inputs: [{ name: '_minWaitTime', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'nonpayable',\n  },\n  { type: 'error', inputs: [], name: 'InvalidInputError' },\n  { type: 'error', inputs: [], name: 'TooSoonError' },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'collection', internalType: 'address', type: 'address', indexed: false },\n      { name: 'period', internalType: 'uint64', type: 'uint64', indexed: false },\n      { name: 'key', internalType: 'bytes4', type: 'bytes4', indexed: false },\n      { name: 'value', internalType: 'uint128', type: 'uint128', indexed: false },\n    ],\n    name: 'DataUpdated',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'user', internalType: 'address', type: 'address', indexed: true },\n      { name: 'newOwner', internalType: 'address', type: 'address', indexed: true },\n    ],\n    name: 'OwnershipTransferred',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'newOwner', internalType: 'address', type: 'address', indexed: false }],\n    name: 'TransferOwnerRequested',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'MIN_WAIT_TIME',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '_collection', internalType: 'address', type: 'address' },\n      { name: '_period', internalType: 'uint64', type: 'uint64' },\n      { name: '_key', internalType: 'bytes4', type: 'bytes4' },\n    ],\n    name: 'getData',\n    outputs: [\n      {\n        name: '',\n        internalType: 'struct IOracle.CollectionData',\n        type: 'tuple',\n        components: [\n          { name: 'value', internalType: 'uint128', type: 'uint128' },\n          { name: 'updated', internalType: 'uint128', type: 'uint128' },\n        ],\n      },\n    ],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'owner',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'pendingOwner',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'pendingOwnerTime',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '_newOwner', internalType: 'address', type: 'address' }],\n    name: 'requestTransferOwner',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '_collection', internalType: 'address', type: 'address' },\n      { name: '_period', internalType: 'uint64', type: 'uint64' },\n      { name: '_key', internalType: 'bytes4', type: 'bytes4' },\n      { name: '_value', internalType: 'uint128', type: 'uint128' },\n    ],\n    name: 'setData',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'transferOwnership',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'newOwner', internalType: 'address', type: 'address' }],\n    name: 'transferOwnership',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// Owned\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const ownedAbi = [\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'user', internalType: 'address', type: 'address', indexed: true },\n      { name: 'newOwner', internalType: 'address', type: 'address', indexed: true },\n    ],\n    name: 'OwnershipTransferred',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'owner',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'newOwner', internalType: 'address', type: 'address' }],\n    name: 'transferOwnership',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// PurchaseBundler\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const purchaseBundlerAbi = [\n  {\n    type: 'constructor',\n    inputs: [\n      { name: 'name', type: 'string', internalType: 'string' },\n      { name: 'multiSourceLoanAddress', type: 'address', internalType: 'address' },\n      { name: 'marketplaceContracts', type: 'address', internalType: 'address' },\n      { name: 'wethAddress', type: 'address', internalType: 'address payable' },\n      { name: 'punkMarketAddress', type: 'address', internalType: 'address payable' },\n      { name: 'wrappedPunkAddress', type: 'address', internalType: 'address payable' },\n      { name: 'c721Address', type: 'address', internalType: 'address payable' },\n      { name: 'uniswapRouterAddress', type: 'address', internalType: 'address payable' },\n      { name: 'currencyManager', type: 'address', internalType: 'address' },\n      {\n        name: 'taxes',\n        type: 'tuple',\n        internalType: 'struct IPurchaseBundler.Taxes',\n        components: [\n          { name: 'buyTax', type: 'uint128', internalType: 'uint128' },\n          { name: 'sellTax', type: 'uint128', internalType: 'uint128' },\n        ],\n      },\n      { name: 'minWaitTime', type: 'uint256', internalType: 'uint256' },\n      {\n        name: 'protocolFee',\n        type: 'tuple',\n        internalType: 'struct WithProtocolFee.ProtocolFee',\n        components: [\n          { name: 'recipient', type: 'address', internalType: 'address' },\n          { name: 'fraction', type: 'uint256', internalType: 'uint256' },\n        ],\n      },\n    ],\n    stateMutability: 'nonpayable',\n  },\n  { type: 'fallback', stateMutability: 'payable' },\n  { type: 'receive', stateMutability: 'payable' },\n  {\n    type: 'function',\n    name: 'DOMAIN_SEPARATOR',\n    inputs: [],\n    outputs: [{ name: '', type: 'bytes32', internalType: 'bytes32' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    name: 'FEE_UPDATE_NOTICE',\n    inputs: [],\n    outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    name: 'INITIAL_DOMAIN_SEPARATOR',\n    inputs: [],\n    outputs: [{ name: '', type: 'bytes32', internalType: 'bytes32' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    name: 'MIN_WAIT_TIME',\n    inputs: [],\n    outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    name: 'TAX_UPDATE_NOTICE',\n    inputs: [],\n    outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    name: 'VERSION',\n    inputs: [],\n    outputs: [{ name: '', type: 'bytes', internalType: 'bytes' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    name: 'afterNFTTransfer',\n    inputs: [\n      {\n        name: '_loan',\n        type: 'tuple',\n        internalType: 'struct IMultiSourceLoan.Loan',\n        components: [\n          { name: 'borrower', type: 'address', internalType: 'address' },\n          { name: 'nftCollateralTokenId', type: 'uint256', internalType: 'uint256' },\n          { name: 'nftCollateralAddress', type: 'address', internalType: 'address' },\n          { name: 'principalAddress', type: 'address', internalType: 'address' },\n          { name: 'principalAmount', type: 'uint256', internalType: 'uint256' },\n          { name: 'startTime', type: 'uint256', internalType: 'uint256' },\n          { name: 'duration', type: 'uint256', internalType: 'uint256' },\n          {\n            name: 'tranche',\n            type: 'tuple[]',\n            internalType: 'struct IMultiSourceLoan.Tranche[]',\n            components: [\n              { name: 'loanId', type: 'uint256', internalType: 'uint256' },\n              { name: 'floor', type: 'uint256', internalType: 'uint256' },\n              { name: 'principalAmount', type: 'uint256', internalType: 'uint256' },\n              { name: 'lender', type: 'address', internalType: 'address' },\n              { name: 'accruedInterest', type: 'uint256', internalType: 'uint256' },\n              { name: 'startTime', type: 'uint256', internalType: 'uint256' },\n              { name: 'aprBps', type: 'uint256', internalType: 'uint256' },\n            ],\n          },\n          { name: 'protocolFee', type: 'uint256', internalType: 'uint256' },\n        ],\n      },\n      { name: '_executionData', type: 'bytes', internalType: 'bytes' },\n    ],\n    outputs: [{ name: '', type: 'bytes4', internalType: 'bytes4' }],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    name: 'afterNFTTransfer',\n    inputs: [\n      {\n        name: '_loan',\n        type: 'tuple',\n        internalType: 'struct IMultiSourceLoan.Loan',\n        components: [\n          { name: 'borrower', type: 'address', internalType: 'address' },\n          { name: 'nftCollateralTokenId', type: 'uint256', internalType: 'uint256' },\n          { name: 'nftCollateralAddress', type: 'address', internalType: 'address' },\n          { name: 'principalAddress', type: 'address', internalType: 'address' },\n          { name: 'principalAmount', type: 'uint256', internalType: 'uint256' },\n          { name: 'startTime', type: 'uint256', internalType: 'uint256' },\n          { name: 'duration', type: 'uint256', internalType: 'uint256' },\n          {\n            name: 'source',\n            type: 'tuple[]',\n            internalType: 'struct IMultiSourceLoan.Source[]',\n            components: [\n              { name: 'loanId', type: 'uint256', internalType: 'uint256' },\n              { name: 'lender', type: 'address', internalType: 'address' },\n              { name: 'principalAmount', type: 'uint256', internalType: 'uint256' },\n              { name: 'accruedInterest', type: 'uint256', internalType: 'uint256' },\n              { name: 'startTime', type: 'uint256', internalType: 'uint256' },\n              { name: 'aprBps', type: 'uint256', internalType: 'uint256' },\n            ],\n          },\n        ],\n      },\n      { name: '_executionData', type: 'bytes', internalType: 'bytes' },\n    ],\n    outputs: [{ name: '', type: 'bytes4', internalType: 'bytes4' }],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    name: 'afterPrincipalTransfer',\n    inputs: [\n      {\n        name: '_loan',\n        type: 'tuple',\n        internalType: 'struct IMultiSourceLoan.Loan',\n        components: [\n          { name: 'borrower', type: 'address', internalType: 'address' },\n          { name: 'nftCollateralTokenId', type: 'uint256', internalType: 'uint256' },\n          { name: 'nftCollateralAddress', type: 'address', internalType: 'address' },\n          { name: 'principalAddress', type: 'address', internalType: 'address' },\n          { name: 'principalAmount', type: 'uint256', internalType: 'uint256' },\n          { name: 'startTime', type: 'uint256', internalType: 'uint256' },\n          { name: 'duration', type: 'uint256', internalType: 'uint256' },\n          {\n            name: 'source',\n            type: 'tuple[]',\n            internalType: 'struct IMultiSourceLoan.Source[]',\n            components: [\n              { name: 'loanId', type: 'uint256', internalType: 'uint256' },\n              { name: 'lender', type: 'address', internalType: 'address' },\n              { name: 'principalAmount', type: 'uint256', internalType: 'uint256' },\n              { name: 'accruedInterest', type: 'uint256', internalType: 'uint256' },\n              { name: 'startTime', type: 'uint256', internalType: 'uint256' },\n              { name: 'aprBps', type: 'uint256', internalType: 'uint256' },\n            ],\n          },\n        ],\n      },\n      { name: '_fee', type: 'uint256', internalType: 'uint256' },\n      { name: '_executionData', type: 'bytes', internalType: 'bytes' },\n    ],\n    outputs: [{ name: '', type: 'bytes4', internalType: 'bytes4' }],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    name: 'afterPrincipalTransfer',\n    inputs: [\n      {\n        name: '_loan',\n        type: 'tuple',\n        internalType: 'struct IMultiSourceLoan.Loan',\n        components: [\n          { name: 'borrower', type: 'address', internalType: 'address' },\n          { name: 'nftCollateralTokenId', type: 'uint256', internalType: 'uint256' },\n          { name: 'nftCollateralAddress', type: 'address', internalType: 'address' },\n          { name: 'principalAddress', type: 'address', internalType: 'address' },\n          { name: 'principalAmount', type: 'uint256', internalType: 'uint256' },\n          { name: 'startTime', type: 'uint256', internalType: 'uint256' },\n          { name: 'duration', type: 'uint256', internalType: 'uint256' },\n          {\n            name: 'tranche',\n            type: 'tuple[]',\n            internalType: 'struct IMultiSourceLoan.Tranche[]',\n            components: [\n              { name: 'loanId', type: 'uint256', internalType: 'uint256' },\n              { name: 'floor', type: 'uint256', internalType: 'uint256' },\n              { name: 'principalAmount', type: 'uint256', internalType: 'uint256' },\n              { name: 'lender', type: 'address', internalType: 'address' },\n              { name: 'accruedInterest', type: 'uint256', internalType: 'uint256' },\n              { name: 'startTime', type: 'uint256', internalType: 'uint256' },\n              { name: 'aprBps', type: 'uint256', internalType: 'uint256' },\n            ],\n          },\n          { name: 'protocolFee', type: 'uint256', internalType: 'uint256' },\n        ],\n      },\n      { name: '_fee', type: 'uint256', internalType: 'uint256' },\n      { name: '_executionData', type: 'bytes', internalType: 'bytes' },\n    ],\n    outputs: [{ name: '', type: 'bytes4', internalType: 'bytes4' }],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    name: 'approveForSwap',\n    inputs: [{ name: 'currency', type: 'address', internalType: 'address' }],\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    name: 'buy',\n    inputs: [{ name: 'executionData', type: 'bytes[]', internalType: 'bytes[]' }],\n    outputs: [{ name: 'loanIds', type: 'uint256[]', internalType: 'uint256[]' }],\n    stateMutability: 'payable',\n  },\n  {\n    type: 'function',\n    name: 'cancelAllOrders',\n    inputs: [{ name: 'nonce', type: 'uint256', internalType: 'uint256' }],\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    name: 'cancelOrder',\n    inputs: [{ name: 'nonce', type: 'uint256', internalType: 'uint256' }],\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    name: 'cancelled',\n    inputs: [\n      { name: '', type: 'address', internalType: 'address' },\n      { name: '', type: 'uint256', internalType: 'uint256' },\n    ],\n    outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    name: 'executeOperation',\n    inputs: [\n      { name: 'assets', type: 'address[]', internalType: 'address[]' },\n      { name: 'amounts', type: 'uint256[]', internalType: 'uint256[]' },\n      { name: 'premiums', type: 'uint256[]', internalType: 'uint256[]' },\n      { name: '', type: 'address', internalType: 'address' },\n      { name: 'params', type: 'bytes', internalType: 'bytes' },\n    ],\n    outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    name: 'executeOrder',\n    inputs: [\n      {\n        name: 'order',\n        type: 'tuple',\n        internalType: 'struct ITradeMarketplace.Order',\n        components: [\n          { name: 'maker', type: 'address', internalType: 'address' },\n          { name: 'taker', type: 'address', internalType: 'address' },\n          { name: 'collection', type: 'address', internalType: 'address' },\n          { name: 'tokenId', type: 'uint256', internalType: 'uint256' },\n          { name: 'currency', type: 'address', internalType: 'address' },\n          { name: 'price', type: 'uint256', internalType: 'uint256' },\n          { name: 'nonce', type: 'uint256', internalType: 'uint256' },\n          { name: 'expiration', type: 'uint256', internalType: 'uint256' },\n          { name: 'isAsk', type: 'bool', internalType: 'bool' },\n          { name: 'signature', type: 'bytes', internalType: 'bytes' },\n        ],\n      },\n    ],\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    name: 'executeSell',\n    inputs: [\n      { name: 'currencies', type: 'address[]', internalType: 'contract ERC20[]' },\n      { name: 'currencyAmounts', type: 'uint256[]', internalType: 'uint256[]' },\n      { name: 'collections', type: 'address[]', internalType: 'contract ERC721[]' },\n      { name: 'tokenIds', type: 'uint256[]', internalType: 'uint256[]' },\n      { name: 'marketPlace', type: 'address', internalType: 'address' },\n      { name: 'executionData', type: 'bytes[]', internalType: 'bytes[]' },\n    ],\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    name: 'executeSellWithETH',\n    inputs: [\n      { name: 'wethPrincipalSwapData', type: 'bytes', internalType: 'bytes' },\n      { name: 'principal', type: 'address', internalType: 'contract ERC20' },\n      { name: 'collection', type: 'address', internalType: 'contract ERC721' },\n      { name: 'tokenId', type: 'uint256', internalType: 'uint256' },\n      { name: 'executionData', type: 'bytes[]', internalType: 'bytes[]' },\n    ],\n    outputs: [],\n    stateMutability: 'payable',\n  },\n  {\n    type: 'function',\n    name: 'executeSellWithLoan',\n    inputs: [\n      {\n        name: 'args',\n        type: 'tuple',\n        internalType: 'struct IPurchaseBundler.ExecuteSellWithLoanArgs',\n        components: [\n          {\n            name: 'borrowArgs',\n            type: 'tuple',\n            internalType: 'struct IPurchaseBundler.AaveBorrowArgs',\n            components: [\n              { name: 'pool', type: 'address', internalType: 'contract IPool' },\n              { name: 'assets', type: 'address[]', internalType: 'address[]' },\n              { name: 'amounts', type: 'uint256[]', internalType: 'uint256[]' },\n            ],\n          },\n          {\n            name: 'executeSellArgs',\n            type: 'tuple',\n            internalType: 'struct IPurchaseBundler.ExecuteSellArgs',\n            components: [\n              { name: 'currencies', type: 'address[]', internalType: 'contract ERC20[]' },\n              { name: 'currencyAmounts', type: 'uint256[]', internalType: 'uint256[]' },\n              { name: 'collections', type: 'address[]', internalType: 'contract ERC721[]' },\n              { name: 'tokenIds', type: 'uint256[]', internalType: 'uint256[]' },\n              { name: 'marketPlace', type: 'address', internalType: 'address' },\n              { name: 'executionData', type: 'bytes[]', internalType: 'bytes[]' },\n            ],\n          },\n          { name: 'loanExecutionData', type: 'bytes[]', internalType: 'bytes[]' },\n        ],\n      },\n    ],\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    name: 'finalUpdateMultiSourceLoanAddress',\n    inputs: [{ name: '_newAddress', type: 'address', internalType: 'address' }],\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    name: 'getMultiSourceLoanAddress',\n    inputs: [],\n    outputs: [{ name: '', type: 'address', internalType: 'address' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    name: 'getPendingProtocolFee',\n    inputs: [],\n    outputs: [\n      {\n        name: '',\n        type: 'tuple',\n        internalType: 'struct WithProtocolFee.ProtocolFee',\n        components: [\n          { name: 'recipient', type: 'address', internalType: 'address' },\n          { name: 'fraction', type: 'uint256', internalType: 'uint256' },\n        ],\n      },\n    ],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    name: 'getPendingProtocolFeeSetTime',\n    inputs: [],\n    outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    name: 'getPendingTaxes',\n    inputs: [],\n    outputs: [\n      {\n        name: '',\n        type: 'tuple',\n        internalType: 'struct IPurchaseBundler.Taxes',\n        components: [\n          { name: 'buyTax', type: 'uint128', internalType: 'uint128' },\n          { name: 'sellTax', type: 'uint128', internalType: 'uint128' },\n        ],\n      },\n    ],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    name: 'getPendingTaxesSetTime',\n    inputs: [],\n    outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    name: 'getProtocolFee',\n    inputs: [],\n    outputs: [\n      {\n        name: '',\n        type: 'tuple',\n        internalType: 'struct WithProtocolFee.ProtocolFee',\n        components: [\n          { name: 'recipient', type: 'address', internalType: 'address' },\n          { name: 'fraction', type: 'uint256', internalType: 'uint256' },\n        ],\n      },\n    ],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    name: 'getTaxes',\n    inputs: [],\n    outputs: [\n      {\n        name: '',\n        type: 'tuple',\n        internalType: 'struct IPurchaseBundler.Taxes',\n        components: [\n          { name: 'buyTax', type: 'uint128', internalType: 'uint128' },\n          { name: 'sellTax', type: 'uint128', internalType: 'uint128' },\n        ],\n      },\n    ],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    name: 'isOrderCancelled',\n    inputs: [\n      {\n        name: 'order',\n        type: 'tuple',\n        internalType: 'struct ITradeMarketplace.Order',\n        components: [\n          { name: 'maker', type: 'address', internalType: 'address' },\n          { name: 'taker', type: 'address', internalType: 'address' },\n          { name: 'collection', type: 'address', internalType: 'address' },\n          { name: 'tokenId', type: 'uint256', internalType: 'uint256' },\n          { name: 'currency', type: 'address', internalType: 'address' },\n          { name: 'price', type: 'uint256', internalType: 'uint256' },\n          { name: 'nonce', type: 'uint256', internalType: 'uint256' },\n          { name: 'expiration', type: 'uint256', internalType: 'uint256' },\n          { name: 'isAsk', type: 'bool', internalType: 'bool' },\n          { name: 'signature', type: 'bytes', internalType: 'bytes' },\n        ],\n      },\n    ],\n    outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    name: 'minNonce',\n    inputs: [{ name: '', type: 'address', internalType: 'address' }],\n    outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    name: 'name',\n    inputs: [],\n    outputs: [{ name: '', type: 'string', internalType: 'string' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    name: 'onERC721Received',\n    inputs: [\n      { name: '', type: 'address', internalType: 'address' },\n      { name: '', type: 'address', internalType: 'address' },\n      { name: '', type: 'uint256', internalType: 'uint256' },\n      { name: '', type: 'bytes', internalType: 'bytes' },\n    ],\n    outputs: [{ name: '', type: 'bytes4', internalType: 'bytes4' }],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    name: 'orderHash',\n    inputs: [\n      {\n        name: 'order',\n        type: 'tuple',\n        internalType: 'struct ITradeMarketplace.Order',\n        components: [\n          { name: 'maker', type: 'address', internalType: 'address' },\n          { name: 'taker', type: 'address', internalType: 'address' },\n          { name: 'collection', type: 'address', internalType: 'address' },\n          { name: 'tokenId', type: 'uint256', internalType: 'uint256' },\n          { name: 'currency', type: 'address', internalType: 'address' },\n          { name: 'price', type: 'uint256', internalType: 'uint256' },\n          { name: 'nonce', type: 'uint256', internalType: 'uint256' },\n          { name: 'expiration', type: 'uint256', internalType: 'uint256' },\n          { name: 'isAsk', type: 'bool', internalType: 'bool' },\n          { name: 'signature', type: 'bytes', internalType: 'bytes' },\n        ],\n      },\n    ],\n    outputs: [{ name: '', type: 'bytes32', internalType: 'bytes32' }],\n    stateMutability: 'pure',\n  },\n  {\n    type: 'function',\n    name: 'owner',\n    inputs: [],\n    outputs: [{ name: '', type: 'address', internalType: 'address' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    name: 'pendingOwner',\n    inputs: [],\n    outputs: [{ name: '', type: 'address', internalType: 'address' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    name: 'pendingOwnerTime',\n    inputs: [],\n    outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    name: 'requestTransferOwner',\n    inputs: [{ name: '_newOwner', type: 'address', internalType: 'address' }],\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    name: 'sell',\n    inputs: [{ name: 'executionData', type: 'bytes[]', internalType: 'bytes[]' }],\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    name: 'setProtocolFee',\n    inputs: [],\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  { type: 'function', name: 'setTaxes', inputs: [], outputs: [], stateMutability: 'nonpayable' },\n  {\n    type: 'function',\n    name: 'transferOwnership',\n    inputs: [],\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    name: 'transferOwnership',\n    inputs: [{ name: 'newOwner', type: 'address', internalType: 'address' }],\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    name: 'updateMultiSourceLoanAddressFirst',\n    inputs: [{ name: '_newAddress', type: 'address', internalType: 'address' }],\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    name: 'updateProtocolFee',\n    inputs: [\n      {\n        name: '_newProtocolFee',\n        type: 'tuple',\n        internalType: 'struct WithProtocolFee.ProtocolFee',\n        components: [\n          { name: 'recipient', type: 'address', internalType: 'address' },\n          { name: 'fraction', type: 'uint256', internalType: 'uint256' },\n        ],\n      },\n    ],\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    name: 'updateTaxes',\n    inputs: [\n      {\n        name: '_newTaxes',\n        type: 'tuple',\n        internalType: 'struct IPurchaseBundler.Taxes',\n        components: [\n          { name: 'buyTax', type: 'uint128', internalType: 'uint128' },\n          { name: 'sellTax', type: 'uint128', internalType: 'uint128' },\n        ],\n      },\n    ],\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'event',\n    name: 'AllOrdersCancelled',\n    inputs: [\n      { name: 'user', type: 'address', indexed: true, internalType: 'address' },\n      { name: 'nonce', type: 'uint256', indexed: false, internalType: 'uint256' },\n    ],\n    anonymous: false,\n  },\n  {\n    type: 'event',\n    name: 'BNPLLoansStarted',\n    inputs: [{ name: 'loanIds', type: 'uint256[]', indexed: false, internalType: 'uint256[]' }],\n    anonymous: false,\n  },\n  {\n    type: 'event',\n    name: 'MultiSourceLoanPendingUpdate',\n    inputs: [{ name: 'newAddress', type: 'address', indexed: false, internalType: 'address' }],\n    anonymous: false,\n  },\n  {\n    type: 'event',\n    name: 'MultiSourceLoanUpdated',\n    inputs: [{ name: 'newAddress', type: 'address', indexed: false, internalType: 'address' }],\n    anonymous: false,\n  },\n  {\n    type: 'event',\n    name: 'OrderExecuted',\n    inputs: [\n      { name: 'maker', type: 'address', indexed: true, internalType: 'address' },\n      { name: 'taker', type: 'address', indexed: true, internalType: 'address' },\n      { name: 'collection', type: 'address', indexed: true, internalType: 'address' },\n      { name: 'tokenId', type: 'uint256', indexed: false, internalType: 'uint256' },\n      { name: 'currency', type: 'address', indexed: false, internalType: 'address' },\n      { name: 'price', type: 'uint256', indexed: false, internalType: 'uint256' },\n      { name: 'nonce', type: 'uint256', indexed: false, internalType: 'uint256' },\n      { name: 'expiration', type: 'uint256', indexed: false, internalType: 'uint256' },\n      { name: 'isAsk', type: 'bool', indexed: false, internalType: 'bool' },\n    ],\n    anonymous: false,\n  },\n  {\n    type: 'event',\n    name: 'OwnershipTransferred',\n    inputs: [\n      { name: 'user', type: 'address', indexed: true, internalType: 'address' },\n      { name: 'newOwner', type: 'address', indexed: true, internalType: 'address' },\n    ],\n    anonymous: false,\n  },\n  {\n    type: 'event',\n    name: 'ProtocolFeePendingUpdate',\n    inputs: [\n      {\n        name: 'fee',\n        type: 'tuple',\n        indexed: false,\n        internalType: 'struct WithProtocolFee.ProtocolFee',\n        components: [\n          { name: 'recipient', type: 'address', internalType: 'address' },\n          { name: 'fraction', type: 'uint256', internalType: 'uint256' },\n        ],\n      },\n    ],\n    anonymous: false,\n  },\n  {\n    type: 'event',\n    name: 'ProtocolFeeUpdated',\n    inputs: [\n      {\n        name: 'fee',\n        type: 'tuple',\n        indexed: false,\n        internalType: 'struct WithProtocolFee.ProtocolFee',\n        components: [\n          { name: 'recipient', type: 'address', internalType: 'address' },\n          { name: 'fraction', type: 'uint256', internalType: 'uint256' },\n        ],\n      },\n    ],\n    anonymous: false,\n  },\n  {\n    type: 'event',\n    name: 'SellAndRepayExecuted',\n    inputs: [{ name: 'loanIds', type: 'uint256[]', indexed: false, internalType: 'uint256[]' }],\n    anonymous: false,\n  },\n  {\n    type: 'event',\n    name: 'TaxesPendingUpdate',\n    inputs: [\n      {\n        name: 'newTaxes',\n        type: 'tuple',\n        indexed: false,\n        internalType: 'struct IPurchaseBundler.Taxes',\n        components: [\n          { name: 'buyTax', type: 'uint128', internalType: 'uint128' },\n          { name: 'sellTax', type: 'uint128', internalType: 'uint128' },\n        ],\n      },\n    ],\n    anonymous: false,\n  },\n  {\n    type: 'event',\n    name: 'TaxesUpdated',\n    inputs: [\n      {\n        name: 'taxes',\n        type: 'tuple',\n        indexed: false,\n        internalType: 'struct IPurchaseBundler.Taxes',\n        components: [\n          { name: 'buyTax', type: 'uint128', internalType: 'uint128' },\n          { name: 'sellTax', type: 'uint128', internalType: 'uint128' },\n        ],\n      },\n    ],\n    anonymous: false,\n  },\n  {\n    type: 'event',\n    name: 'TransferOwnerRequested',\n    inputs: [{ name: 'newOwner', type: 'address', indexed: false, internalType: 'address' }],\n    anonymous: false,\n  },\n  { type: 'error', name: 'AddressZeroError', inputs: [] },\n  { type: 'error', name: 'CouldNotReturnEthError', inputs: [] },\n  { type: 'error', name: 'ECDSAInvalidSignature', inputs: [] },\n  {\n    type: 'error',\n    name: 'ECDSAInvalidSignatureLength',\n    inputs: [{ name: 'length', type: 'uint256', internalType: 'uint256' }],\n  },\n  {\n    type: 'error',\n    name: 'ECDSAInvalidSignatureS',\n    inputs: [{ name: 's', type: 'bytes32', internalType: 'bytes32' }],\n  },\n  { type: 'error', name: 'InvalidAddressUpdateError', inputs: [] },\n  { type: 'error', name: 'InvalidCallbackError', inputs: [] },\n  { type: 'error', name: 'InvalidInputError', inputs: [] },\n  { type: 'error', name: 'InvalidSignature', inputs: [] },\n  { type: 'error', name: 'InvalidTaker', inputs: [] },\n  {\n    type: 'error',\n    name: 'InvalidTaxesError',\n    inputs: [\n      {\n        name: 'newTaxes',\n        type: 'tuple',\n        internalType: 'struct IPurchaseBundler.Taxes',\n        components: [\n          { name: 'buyTax', type: 'uint128', internalType: 'uint128' },\n          { name: 'sellTax', type: 'uint128', internalType: 'uint128' },\n        ],\n      },\n    ],\n  },\n  {\n    type: 'error',\n    name: 'LowNonceError',\n    inputs: [\n      { name: 'user', type: 'address', internalType: 'address' },\n      { name: 'nonce', type: 'uint256', internalType: 'uint256' },\n      { name: 'currentMinNonce', type: 'uint256', internalType: 'uint256' },\n    ],\n  },\n  { type: 'error', name: 'MarketplaceAddressNotWhitelisted', inputs: [] },\n  { type: 'error', name: 'OnlyLoanCallableError', inputs: [] },\n  { type: 'error', name: 'OnlyWethSupportedError', inputs: [] },\n  { type: 'error', name: 'OrderCancelled', inputs: [] },\n  { type: 'error', name: 'OrderExpired', inputs: [] },\n  {\n    type: 'error',\n    name: 'TooEarlyError',\n    inputs: [{ name: '_pendingProtocolFeeSetTime', type: 'uint256', internalType: 'uint256' }],\n  },\n  { type: 'error', name: 'TooSoonError', inputs: [] },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// RangeValidator\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const rangeValidatorAbi = [\n  {\n    type: 'error',\n    inputs: [\n      { name: 'min', internalType: 'uint256', type: 'uint256' },\n      { name: 'max', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'TokenIdOutOfRangeError',\n  },\n  {\n    type: 'function',\n    inputs: [\n      {\n        name: '',\n        internalType: 'struct IMultiSourceLoan.LoanOffer',\n        type: 'tuple',\n        components: [\n          { name: 'offerId', internalType: 'uint256', type: 'uint256' },\n          { name: 'lender', internalType: 'address', type: 'address' },\n          { name: 'fee', internalType: 'uint256', type: 'uint256' },\n          { name: 'capacity', internalType: 'uint256', type: 'uint256' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n          { name: 'expirationTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          { name: 'maxSeniorRepayment', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'validators',\n            internalType: 'struct IBaseLoan.OfferValidator[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'validator', internalType: 'address', type: 'address' },\n              { name: 'arguments', internalType: 'bytes', type: 'bytes' },\n            ],\n          },\n        ],\n      },\n      { name: '_tokenId', internalType: 'uint256', type: 'uint256' },\n      { name: '_validatorData', internalType: 'bytes', type: 'bytes' },\n    ],\n    name: 'validateOffer',\n    outputs: [],\n    stateMutability: 'pure',\n  },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// SampleCollection\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const sampleCollectionAbi = [\n  { type: 'constructor', inputs: [], stateMutability: 'nonpayable' },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'owner', internalType: 'address', type: 'address', indexed: true },\n      { name: 'spender', internalType: 'address', type: 'address', indexed: true },\n      { name: 'id', internalType: 'uint256', type: 'uint256', indexed: true },\n    ],\n    name: 'Approval',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'owner', internalType: 'address', type: 'address', indexed: true },\n      { name: 'operator', internalType: 'address', type: 'address', indexed: true },\n      { name: 'approved', internalType: 'bool', type: 'bool', indexed: false },\n    ],\n    name: 'ApprovalForAll',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address', indexed: true },\n      { name: 'to', internalType: 'address', type: 'address', indexed: true },\n      { name: 'id', internalType: 'uint256', type: 'uint256', indexed: true },\n    ],\n    name: 'Transfer',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'spender', internalType: 'address', type: 'address' },\n      { name: 'id', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'approve',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'owner', internalType: 'address', type: 'address' }],\n    name: 'balanceOf',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    name: 'getApproved',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'address', type: 'address' },\n    ],\n    name: 'isApprovedForAll',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'lastId',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'id', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'mint',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'to', internalType: 'address', type: 'address' }],\n    name: 'mintNext',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'name',\n    outputs: [{ name: '', internalType: 'string', type: 'string' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'id', internalType: 'uint256', type: 'uint256' }],\n    name: 'ownerOf',\n    outputs: [{ name: 'owner', internalType: 'address', type: 'address' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address' },\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'id', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'safeTransferFrom',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address' },\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'id', internalType: 'uint256', type: 'uint256' },\n      { name: 'data', internalType: 'bytes', type: 'bytes' },\n    ],\n    name: 'safeTransferFrom',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'operator', internalType: 'address', type: 'address' },\n      { name: 'approved', internalType: 'bool', type: 'bool' },\n    ],\n    name: 'setApprovalForAll',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'interfaceId', internalType: 'bytes4', type: 'bytes4' }],\n    name: 'supportsInterface',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'symbol',\n    outputs: [{ name: '', internalType: 'string', type: 'string' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'id', internalType: 'uint256', type: 'uint256' }],\n    name: 'tokenURI',\n    outputs: [{ name: '', internalType: 'string', type: 'string' }],\n    stateMutability: 'pure',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address' },\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'id', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'transferFrom',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// SampleMarketplace\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const sampleMarketplaceAbi = [\n  { type: 'function', inputs: [], name: 'buy', outputs: [], stateMutability: 'nonpayable' },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// SampleOldCollection\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const sampleOldCollectionAbi = [\n  { type: 'constructor', inputs: [], stateMutability: 'nonpayable' },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'owner', internalType: 'address', type: 'address', indexed: true },\n      { name: 'spender', internalType: 'address', type: 'address', indexed: true },\n      { name: 'id', internalType: 'uint256', type: 'uint256', indexed: true },\n    ],\n    name: 'Approval',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'owner', internalType: 'address', type: 'address', indexed: true },\n      { name: 'operator', internalType: 'address', type: 'address', indexed: true },\n      { name: 'approved', internalType: 'bool', type: 'bool', indexed: false },\n    ],\n    name: 'ApprovalForAll',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address', indexed: true },\n      { name: 'to', internalType: 'address', type: 'address', indexed: true },\n      { name: 'id', internalType: 'uint256', type: 'uint256', indexed: true },\n    ],\n    name: 'Transfer',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '_to', internalType: 'address', type: 'address' },\n      { name: '_tokenId', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'approve',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '_owner', internalType: 'address', type: 'address' }],\n    name: 'balanceOf',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    name: 'getApproved',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'address', type: 'address' },\n    ],\n    name: 'isApprovedForAll',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'lastId',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'id', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'mint',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'to', internalType: 'address', type: 'address' }],\n    name: 'mintNext',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'name',\n    outputs: [{ name: '', internalType: 'string', type: 'string' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '_tokenId', internalType: 'uint256', type: 'uint256' }],\n    name: 'ownerOf',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address' },\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'id', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'safeTransferFrom',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address' },\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'id', internalType: 'uint256', type: 'uint256' },\n      { name: 'data', internalType: 'bytes', type: 'bytes' },\n    ],\n    name: 'safeTransferFrom',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'operator', internalType: 'address', type: 'address' },\n      { name: 'approved', internalType: 'bool', type: 'bool' },\n    ],\n    name: 'setApprovalForAll',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'interfaceId', internalType: 'bytes4', type: 'bytes4' }],\n    name: 'supportsInterface',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'symbol',\n    outputs: [{ name: '', internalType: 'string', type: 'string' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '_tokenId', internalType: 'uint256', type: 'uint256' }],\n    name: 'takeOwnership',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'id', internalType: 'uint256', type: 'uint256' }],\n    name: 'tokenURI',\n    outputs: [{ name: '', internalType: 'string', type: 'string' }],\n    stateMutability: 'pure',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '_to', internalType: 'address', type: 'address' },\n      { name: '_tokenId', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'transfer',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address' },\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'id', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'transferFrom',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// SampleToken\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const sampleTokenAbi = [\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'owner', internalType: 'address', type: 'address', indexed: true },\n      { name: 'spender', internalType: 'address', type: 'address', indexed: true },\n      { name: 'amount', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'Approval',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address', indexed: true },\n      { name: 'amount', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'Deposit',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address', indexed: true },\n      { name: 'to', internalType: 'address', type: 'address', indexed: true },\n      { name: 'amount', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'Transfer',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'to', internalType: 'address', type: 'address', indexed: true },\n      { name: 'amount', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'Withdrawal',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'DOMAIN_SEPARATOR',\n    outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'address', type: 'address' },\n    ],\n    name: 'allowance',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'spender', internalType: 'address', type: 'address' },\n      { name: 'amount', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'approve',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '', internalType: 'address', type: 'address' }],\n    name: 'balanceOf',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'decimals',\n    outputs: [{ name: '', internalType: 'uint8', type: 'uint8' }],\n    stateMutability: 'view',\n  },\n  { type: 'function', inputs: [], name: 'deposit', outputs: [], stateMutability: 'payable' },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'amount', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'mint',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'name',\n    outputs: [{ name: '', internalType: 'string', type: 'string' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '', internalType: 'address', type: 'address' }],\n    name: 'nonces',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'owner', internalType: 'address', type: 'address' },\n      { name: 'spender', internalType: 'address', type: 'address' },\n      { name: 'value', internalType: 'uint256', type: 'uint256' },\n      { name: 'deadline', internalType: 'uint256', type: 'uint256' },\n      { name: 'v', internalType: 'uint8', type: 'uint8' },\n      { name: 'r', internalType: 'bytes32', type: 'bytes32' },\n      { name: 's', internalType: 'bytes32', type: 'bytes32' },\n    ],\n    name: 'permit',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'symbol',\n    outputs: [{ name: '', internalType: 'string', type: 'string' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'totalSupply',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'amount', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'transfer',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address' },\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'amount', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'transferFrom',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'amount', internalType: 'uint256', type: 'uint256' }],\n    name: 'withdraw',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  { type: 'receive', stateMutability: 'payable' },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// Strings\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const stringsAbi = [\n  {\n    type: 'error',\n    inputs: [\n      { name: 'value', internalType: 'uint256', type: 'uint256' },\n      { name: 'length', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'StringsInsufficientHexLength',\n  },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// Test\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const testAbi = [\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: '', internalType: 'string', type: 'string', indexed: false }],\n    name: 'log',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: '', internalType: 'address', type: 'address', indexed: false }],\n    name: 'log_address',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'val', internalType: 'uint256[]', type: 'uint256[]', indexed: false }],\n    name: 'log_array',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'val', internalType: 'int256[]', type: 'int256[]', indexed: false }],\n    name: 'log_array',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'val', internalType: 'address[]', type: 'address[]', indexed: false }],\n    name: 'log_array',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: '', internalType: 'bytes', type: 'bytes', indexed: false }],\n    name: 'log_bytes',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: '', internalType: 'bytes32', type: 'bytes32', indexed: false }],\n    name: 'log_bytes32',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: '', internalType: 'int256', type: 'int256', indexed: false }],\n    name: 'log_int',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'key', internalType: 'string', type: 'string', indexed: false },\n      { name: 'val', internalType: 'address', type: 'address', indexed: false },\n    ],\n    name: 'log_named_address',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'key', internalType: 'string', type: 'string', indexed: false },\n      { name: 'val', internalType: 'uint256[]', type: 'uint256[]', indexed: false },\n    ],\n    name: 'log_named_array',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'key', internalType: 'string', type: 'string', indexed: false },\n      { name: 'val', internalType: 'int256[]', type: 'int256[]', indexed: false },\n    ],\n    name: 'log_named_array',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'key', internalType: 'string', type: 'string', indexed: false },\n      { name: 'val', internalType: 'address[]', type: 'address[]', indexed: false },\n    ],\n    name: 'log_named_array',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'key', internalType: 'string', type: 'string', indexed: false },\n      { name: 'val', internalType: 'bytes', type: 'bytes', indexed: false },\n    ],\n    name: 'log_named_bytes',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'key', internalType: 'string', type: 'string', indexed: false },\n      { name: 'val', internalType: 'bytes32', type: 'bytes32', indexed: false },\n    ],\n    name: 'log_named_bytes32',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'key', internalType: 'string', type: 'string', indexed: false },\n      { name: 'val', internalType: 'int256', type: 'int256', indexed: false },\n      { name: 'decimals', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'log_named_decimal_int',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'key', internalType: 'string', type: 'string', indexed: false },\n      { name: 'val', internalType: 'uint256', type: 'uint256', indexed: false },\n      { name: 'decimals', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'log_named_decimal_uint',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'key', internalType: 'string', type: 'string', indexed: false },\n      { name: 'val', internalType: 'int256', type: 'int256', indexed: false },\n    ],\n    name: 'log_named_int',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'key', internalType: 'string', type: 'string', indexed: false },\n      { name: 'val', internalType: 'string', type: 'string', indexed: false },\n    ],\n    name: 'log_named_string',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'key', internalType: 'string', type: 'string', indexed: false },\n      { name: 'val', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'log_named_uint',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: '', internalType: 'string', type: 'string', indexed: false }],\n    name: 'log_string',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: '', internalType: 'uint256', type: 'uint256', indexed: false }],\n    name: 'log_uint',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: '', internalType: 'bytes', type: 'bytes', indexed: false }],\n    name: 'logs',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'IS_TEST',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'excludeArtifacts',\n    outputs: [{ name: 'excludedArtifacts_', internalType: 'string[]', type: 'string[]' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'excludeContracts',\n    outputs: [{ name: 'excludedContracts_', internalType: 'address[]', type: 'address[]' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'excludeSenders',\n    outputs: [{ name: 'excludedSenders_', internalType: 'address[]', type: 'address[]' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'failed',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'targetArtifactSelectors',\n    outputs: [\n      {\n        name: 'targetedArtifactSelectors_',\n        internalType: 'struct StdInvariant.FuzzSelector[]',\n        type: 'tuple[]',\n        components: [\n          { name: 'addr', internalType: 'address', type: 'address' },\n          { name: 'selectors', internalType: 'bytes4[]', type: 'bytes4[]' },\n        ],\n      },\n    ],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'targetArtifacts',\n    outputs: [{ name: 'targetedArtifacts_', internalType: 'string[]', type: 'string[]' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'targetContracts',\n    outputs: [{ name: 'targetedContracts_', internalType: 'address[]', type: 'address[]' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'targetInterfaces',\n    outputs: [\n      {\n        name: 'targetedInterfaces_',\n        internalType: 'struct StdInvariant.FuzzInterface[]',\n        type: 'tuple[]',\n        components: [\n          { name: 'addr', internalType: 'address', type: 'address' },\n          { name: 'artifacts', internalType: 'string[]', type: 'string[]' },\n        ],\n      },\n    ],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'targetSelectors',\n    outputs: [\n      {\n        name: 'targetedSelectors_',\n        internalType: 'struct StdInvariant.FuzzSelector[]',\n        type: 'tuple[]',\n        components: [\n          { name: 'addr', internalType: 'address', type: 'address' },\n          { name: 'selectors', internalType: 'bytes4[]', type: 'bytes4[]' },\n        ],\n      },\n    ],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'targetSenders',\n    outputs: [{ name: 'targetedSenders_', internalType: 'address[]', type: 'address[]' }],\n    stateMutability: 'view',\n  },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// TestLoanSetup\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const testLoanSetupAbi = [\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: '', internalType: 'string', type: 'string', indexed: false }],\n    name: 'log',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: '', internalType: 'address', type: 'address', indexed: false }],\n    name: 'log_address',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'val', internalType: 'uint256[]', type: 'uint256[]', indexed: false }],\n    name: 'log_array',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'val', internalType: 'int256[]', type: 'int256[]', indexed: false }],\n    name: 'log_array',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'val', internalType: 'address[]', type: 'address[]', indexed: false }],\n    name: 'log_array',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: '', internalType: 'bytes', type: 'bytes', indexed: false }],\n    name: 'log_bytes',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: '', internalType: 'bytes32', type: 'bytes32', indexed: false }],\n    name: 'log_bytes32',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: '', internalType: 'int256', type: 'int256', indexed: false }],\n    name: 'log_int',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'key', internalType: 'string', type: 'string', indexed: false },\n      { name: 'val', internalType: 'address', type: 'address', indexed: false },\n    ],\n    name: 'log_named_address',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'key', internalType: 'string', type: 'string', indexed: false },\n      { name: 'val', internalType: 'uint256[]', type: 'uint256[]', indexed: false },\n    ],\n    name: 'log_named_array',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'key', internalType: 'string', type: 'string', indexed: false },\n      { name: 'val', internalType: 'int256[]', type: 'int256[]', indexed: false },\n    ],\n    name: 'log_named_array',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'key', internalType: 'string', type: 'string', indexed: false },\n      { name: 'val', internalType: 'address[]', type: 'address[]', indexed: false },\n    ],\n    name: 'log_named_array',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'key', internalType: 'string', type: 'string', indexed: false },\n      { name: 'val', internalType: 'bytes', type: 'bytes', indexed: false },\n    ],\n    name: 'log_named_bytes',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'key', internalType: 'string', type: 'string', indexed: false },\n      { name: 'val', internalType: 'bytes32', type: 'bytes32', indexed: false },\n    ],\n    name: 'log_named_bytes32',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'key', internalType: 'string', type: 'string', indexed: false },\n      { name: 'val', internalType: 'int256', type: 'int256', indexed: false },\n      { name: 'decimals', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'log_named_decimal_int',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'key', internalType: 'string', type: 'string', indexed: false },\n      { name: 'val', internalType: 'uint256', type: 'uint256', indexed: false },\n      { name: 'decimals', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'log_named_decimal_uint',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'key', internalType: 'string', type: 'string', indexed: false },\n      { name: 'val', internalType: 'int256', type: 'int256', indexed: false },\n    ],\n    name: 'log_named_int',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'key', internalType: 'string', type: 'string', indexed: false },\n      { name: 'val', internalType: 'string', type: 'string', indexed: false },\n    ],\n    name: 'log_named_string',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'key', internalType: 'string', type: 'string', indexed: false },\n      { name: 'val', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'log_named_uint',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: '', internalType: 'string', type: 'string', indexed: false }],\n    name: 'log_string',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: '', internalType: 'uint256', type: 'uint256', indexed: false }],\n    name: 'log_uint',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: '', internalType: 'bytes', type: 'bytes', indexed: false }],\n    name: 'logs',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'IS_TEST',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'excludeArtifacts',\n    outputs: [{ name: 'excludedArtifacts_', internalType: 'string[]', type: 'string[]' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'excludeContracts',\n    outputs: [{ name: 'excludedContracts_', internalType: 'address[]', type: 'address[]' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'excludeSenders',\n    outputs: [{ name: 'excludedSenders_', internalType: 'address[]', type: 'address[]' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'failed',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'targetArtifactSelectors',\n    outputs: [\n      {\n        name: 'targetedArtifactSelectors_',\n        internalType: 'struct StdInvariant.FuzzSelector[]',\n        type: 'tuple[]',\n        components: [\n          { name: 'addr', internalType: 'address', type: 'address' },\n          { name: 'selectors', internalType: 'bytes4[]', type: 'bytes4[]' },\n        ],\n      },\n    ],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'targetArtifacts',\n    outputs: [{ name: 'targetedArtifacts_', internalType: 'string[]', type: 'string[]' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'targetContracts',\n    outputs: [{ name: 'targetedContracts_', internalType: 'address[]', type: 'address[]' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'targetInterfaces',\n    outputs: [\n      {\n        name: 'targetedInterfaces_',\n        internalType: 'struct StdInvariant.FuzzInterface[]',\n        type: 'tuple[]',\n        components: [\n          { name: 'addr', internalType: 'address', type: 'address' },\n          { name: 'artifacts', internalType: 'string[]', type: 'string[]' },\n        ],\n      },\n    ],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'targetSelectors',\n    outputs: [\n      {\n        name: 'targetedSelectors_',\n        internalType: 'struct StdInvariant.FuzzSelector[]',\n        type: 'tuple[]',\n        components: [\n          { name: 'addr', internalType: 'address', type: 'address' },\n          { name: 'selectors', internalType: 'bytes4[]', type: 'bytes4[]' },\n        ],\n      },\n    ],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'targetSenders',\n    outputs: [{ name: 'targetedSenders_', internalType: 'address[]', type: 'address[]' }],\n    stateMutability: 'view',\n  },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// TestNFTFlashAction\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const testNftFlashActionAbi = [\n  { type: 'error', inputs: [], name: 'InvalidOwnerError' },\n  {\n    type: 'function',\n    inputs: [\n      { name: '_collection', internalType: 'address', type: 'address' },\n      { name: '_tokenId', internalType: 'uint256', type: 'uint256' },\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'bytes', type: 'bytes' },\n    ],\n    name: 'execute',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'uint256', type: 'uint256' },\n      { name: '', internalType: 'bytes', type: 'bytes' },\n    ],\n    name: 'onERC721Received',\n    outputs: [{ name: '', internalType: 'bytes4', type: 'bytes4' }],\n    stateMutability: 'pure',\n  },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// TestNFTMaliciousFlashAction\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const testNftMaliciousFlashActionAbi = [\n  { type: 'error', inputs: [], name: 'InvalidOwnerError' },\n  {\n    type: 'function',\n    inputs: [\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'uint256', type: 'uint256' },\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'bytes', type: 'bytes' },\n    ],\n    name: 'execute',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'uint256', type: 'uint256' },\n      { name: '', internalType: 'bytes', type: 'bytes' },\n    ],\n    name: 'onERC721Received',\n    outputs: [{ name: '', internalType: 'bytes4', type: 'bytes4' }],\n    stateMutability: 'pure',\n  },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// TwoStepOwned\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const twoStepOwnedAbi = [\n  { type: 'error', inputs: [], name: 'InvalidInputError' },\n  { type: 'error', inputs: [], name: 'TooSoonError' },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'user', internalType: 'address', type: 'address', indexed: true },\n      { name: 'newOwner', internalType: 'address', type: 'address', indexed: true },\n    ],\n    name: 'OwnershipTransferred',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'newOwner', internalType: 'address', type: 'address', indexed: false }],\n    name: 'TransferOwnerRequested',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'MIN_WAIT_TIME',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'owner',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'pendingOwner',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'pendingOwnerTime',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '_newOwner', internalType: 'address', type: 'address' }],\n    name: 'requestTransferOwner',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'transferOwnership',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'newOwner', internalType: 'address', type: 'address' }],\n    name: 'transferOwnership',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// USDCSampleToken\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const usdcSampleTokenAbi = [\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'owner', internalType: 'address', type: 'address', indexed: true },\n      { name: 'spender', internalType: 'address', type: 'address', indexed: true },\n      { name: 'amount', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'Approval',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address', indexed: true },\n      { name: 'to', internalType: 'address', type: 'address', indexed: true },\n      { name: 'amount', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'Transfer',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'DOMAIN_SEPARATOR',\n    outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'address', type: 'address' },\n    ],\n    name: 'allowance',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'spender', internalType: 'address', type: 'address' },\n      { name: 'amount', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'approve',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '', internalType: 'address', type: 'address' }],\n    name: 'balanceOf',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'decimals',\n    outputs: [{ name: '', internalType: 'uint8', type: 'uint8' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'amount', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'mint',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'name',\n    outputs: [{ name: '', internalType: 'string', type: 'string' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '', internalType: 'address', type: 'address' }],\n    name: 'nonces',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'owner', internalType: 'address', type: 'address' },\n      { name: 'spender', internalType: 'address', type: 'address' },\n      { name: 'value', internalType: 'uint256', type: 'uint256' },\n      { name: 'deadline', internalType: 'uint256', type: 'uint256' },\n      { name: 'v', internalType: 'uint8', type: 'uint8' },\n      { name: 'r', internalType: 'bytes32', type: 'bytes32' },\n      { name: 's', internalType: 'bytes32', type: 'bytes32' },\n    ],\n    name: 'permit',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'symbol',\n    outputs: [{ name: '', internalType: 'string', type: 'string' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'totalSupply',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'amount', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'transfer',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address' },\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'amount', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'transferFrom',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n    stateMutability: 'nonpayable',\n  },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// UserVault\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const userVaultAbi = [\n  {\n    type: 'constructor',\n    inputs: [\n      { name: 'currencyManager', internalType: 'address', type: 'address' },\n      { name: 'collectionManager', internalType: 'address', type: 'address' },\n    ],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '_vaultId', internalType: 'uint256', type: 'uint256' },\n      { name: '_token', internalType: 'address', type: 'address' },\n      { name: '_tokenId', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'ERC1155BalanceOf',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '_vaultId', internalType: 'uint256', type: 'uint256' },\n      { name: '_token', internalType: 'address', type: 'address' },\n    ],\n    name: 'ERC20BalanceOf',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '_collection', internalType: 'address', type: 'address' },\n      { name: '_tokenId', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'ERC721OwnerOf',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'ETH',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'spender', internalType: 'address', type: 'address' },\n      { name: 'id', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'approve',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'owner', internalType: 'address', type: 'address' }],\n    name: 'balanceOf',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '_vaultId', internalType: 'uint256', type: 'uint256' },\n      { name: '_assetRecipient', internalType: 'address', type: 'address' },\n    ],\n    name: 'burn',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '_vaultId', internalType: 'uint256', type: 'uint256' },\n      { name: '_collections', internalType: 'address[]', type: 'address[]' },\n      { name: '_tokenIds', internalType: 'uint256[]', type: 'uint256[]' },\n      { name: '_tokens', internalType: 'address[]', type: 'address[]' },\n      { name: '_erc1155Tokens', internalType: 'address[]', type: 'address[]' },\n      { name: '_erc1155TokensIds', internalType: 'uint256[]', type: 'uint256[]' },\n    ],\n    name: 'burnAndWithdraw',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '_vaultId', internalType: 'uint256', type: 'uint256' },\n      { name: '_token', internalType: 'address', type: 'address' },\n      { name: '_tokenId', internalType: 'uint256', type: 'uint256' },\n      { name: '_amount', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'depositERC1155',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '_vaultId', internalType: 'uint256', type: 'uint256' },\n      { name: '_collection', internalType: 'address', type: 'address' },\n      { name: '_tokenIds', internalType: 'uint256[]', type: 'uint256[]' },\n      { name: '_amounts', internalType: 'uint256[]', type: 'uint256[]' },\n    ],\n    name: 'depositERC1155s',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '_vaultId', internalType: 'uint256', type: 'uint256' },\n      { name: '_token', internalType: 'address', type: 'address' },\n      { name: '_amount', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'depositERC20',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '_vaultId', internalType: 'uint256', type: 'uint256' },\n      { name: '_collection', internalType: 'address', type: 'address' },\n      { name: '_tokenId', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'depositERC721',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '_vaultId', internalType: 'uint256', type: 'uint256' },\n      { name: '_collection', internalType: 'address', type: 'address' },\n      { name: '_tokenIds', internalType: 'uint256[]', type: 'uint256[]' },\n    ],\n    name: 'depositERC721s',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '_vaultId', internalType: 'uint256', type: 'uint256' }],\n    name: 'depositEth',\n    outputs: [],\n    stateMutability: 'payable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    name: 'getApproved',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'address', type: 'address' },\n    ],\n    name: 'isApprovedForAll',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'mint',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'name',\n    outputs: [{ name: '', internalType: 'string', type: 'string' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'uint256[]', type: 'uint256[]' },\n      { name: '', internalType: 'uint256[]', type: 'uint256[]' },\n      { name: '', internalType: 'bytes', type: 'bytes' },\n    ],\n    name: 'onERC1155BatchReceived',\n    outputs: [{ name: '', internalType: 'bytes4', type: 'bytes4' }],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'uint256', type: 'uint256' },\n      { name: '', internalType: 'uint256', type: 'uint256' },\n      { name: '', internalType: 'bytes', type: 'bytes' },\n    ],\n    name: 'onERC1155Received',\n    outputs: [{ name: '', internalType: 'bytes4', type: 'bytes4' }],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'uint256', type: 'uint256' },\n      { name: '', internalType: 'bytes', type: 'bytes' },\n    ],\n    name: 'onERC721Received',\n    outputs: [{ name: '', internalType: 'bytes4', type: 'bytes4' }],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'owner',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'id', internalType: 'uint256', type: 'uint256' }],\n    name: 'ownerOf',\n    outputs: [{ name: 'owner', internalType: 'address', type: 'address' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address' },\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'id', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'safeTransferFrom',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address' },\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'id', internalType: 'uint256', type: 'uint256' },\n      { name: 'data', internalType: 'bytes', type: 'bytes' },\n    ],\n    name: 'safeTransferFrom',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'operator', internalType: 'address', type: 'address' },\n      { name: 'approved', internalType: 'bool', type: 'bool' },\n    ],\n    name: 'setApprovalForAll',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'interfaceId', internalType: 'bytes4', type: 'bytes4' }],\n    name: 'supportsInterface',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'symbol',\n    outputs: [{ name: '', internalType: 'string', type: 'string' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '_vaultId', internalType: 'uint256', type: 'uint256' }],\n    name: 'tokenURI',\n    outputs: [{ name: '', internalType: 'string', type: 'string' }],\n    stateMutability: 'pure',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address' },\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'id', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'transferFrom',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'newOwner', internalType: 'address', type: 'address' }],\n    name: 'transferOwnership',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '_vaultId', internalType: 'uint256', type: 'uint256' },\n      { name: '_token', internalType: 'address', type: 'address' },\n      { name: '_tokenId', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'withdrawERC1155',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '_vaultId', internalType: 'uint256', type: 'uint256' },\n      { name: '_tokens', internalType: 'address[]', type: 'address[]' },\n      { name: '_tokenIds', internalType: 'uint256[]', type: 'uint256[]' },\n    ],\n    name: 'withdrawERC1155s',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '_vaultId', internalType: 'uint256', type: 'uint256' },\n      { name: '_token', internalType: 'address', type: 'address' },\n    ],\n    name: 'withdrawERC20',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '_vaultId', internalType: 'uint256', type: 'uint256' },\n      { name: '_tokens', internalType: 'address[]', type: 'address[]' },\n    ],\n    name: 'withdrawERC20s',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '_vaultId', internalType: 'uint256', type: 'uint256' },\n      { name: '_collection', internalType: 'address', type: 'address' },\n      { name: '_tokenId', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'withdrawERC721',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '_vaultId', internalType: 'uint256', type: 'uint256' },\n      { name: '_collections', internalType: 'address[]', type: 'address[]' },\n      { name: '_tokenIds', internalType: 'uint256[]', type: 'uint256[]' },\n    ],\n    name: 'withdrawERC721s',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '_vaultId', internalType: 'uint256', type: 'uint256' }],\n    name: 'withdrawEth',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'owner', internalType: 'address', type: 'address', indexed: true },\n      { name: 'spender', internalType: 'address', type: 'address', indexed: true },\n      { name: 'id', internalType: 'uint256', type: 'uint256', indexed: true },\n    ],\n    name: 'Approval',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'owner', internalType: 'address', type: 'address', indexed: true },\n      { name: 'operator', internalType: 'address', type: 'address', indexed: true },\n      { name: 'approved', internalType: 'bool', type: 'bool', indexed: false },\n    ],\n    name: 'ApprovalForAll',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'vaultId', internalType: 'uint256', type: 'uint256', indexed: false },\n      { name: 'token', internalType: 'address', type: 'address', indexed: false },\n      { name: 'tokenId', internalType: 'uint256', type: 'uint256', indexed: false },\n      { name: 'amount', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'ERC1155Deposited',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'vaultId', internalType: 'uint256', type: 'uint256', indexed: false },\n      { name: 'token', internalType: 'address', type: 'address', indexed: false },\n      { name: 'tokenId', internalType: 'uint256', type: 'uint256', indexed: false },\n      { name: 'amount', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'ERC1155Withdrawn',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'vaultId', internalType: 'uint256', type: 'uint256', indexed: false },\n      { name: 'token', internalType: 'address', type: 'address', indexed: false },\n      { name: 'amount', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'ERC20Deposited',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'vaultId', internalType: 'uint256', type: 'uint256', indexed: false },\n      { name: 'token', internalType: 'address', type: 'address', indexed: false },\n      { name: 'amount', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'ERC20Withdrawn',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'vaultId', internalType: 'uint256', type: 'uint256', indexed: false },\n      { name: 'collection', internalType: 'address', type: 'address', indexed: false },\n      { name: 'tokenId', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'ERC721Deposited',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'vaultId', internalType: 'uint256', type: 'uint256', indexed: false },\n      { name: 'collection', internalType: 'address', type: 'address', indexed: false },\n      { name: 'tokenId', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'ERC721Withdrawn',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'user', internalType: 'address', type: 'address', indexed: true },\n      { name: 'newOwner', internalType: 'address', type: 'address', indexed: true },\n    ],\n    name: 'OwnershipTransferred',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address', indexed: true },\n      { name: 'to', internalType: 'address', type: 'address', indexed: true },\n      { name: 'id', internalType: 'uint256', type: 'uint256', indexed: true },\n    ],\n    name: 'Transfer',\n  },\n  { type: 'error', inputs: [], name: 'AssetNotOwnedError' },\n  { type: 'error', inputs: [], name: 'CollectionNotWhitelistedError' },\n  { type: 'error', inputs: [], name: 'CurrencyNotWhitelistedError' },\n  { type: 'error', inputs: [], name: 'InvalidCallerError' },\n  { type: 'error', inputs: [], name: 'LengthMismatchError' },\n  {\n    type: 'error',\n    inputs: [{ name: 'vaultId', internalType: 'uint256', type: 'uint256' }],\n    name: 'NotApprovedError',\n  },\n  { type: 'error', inputs: [], name: 'VaultNotExistsError' },\n  { type: 'error', inputs: [], name: 'WithdrawingETHError' },\n  { type: 'error', inputs: [], name: 'WrongMethodError' },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// ValidatorHelpers\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const validatorHelpersAbi = [\n  {\n    type: 'error',\n    inputs: [{ name: '_tokenId', internalType: 'uint256', type: 'uint256' }],\n    name: 'BitVectorLengthExceededError',\n  },\n  { type: 'error', inputs: [], name: 'EmptyTokenIdListError' },\n  {\n    type: 'error',\n    inputs: [{ name: '_bytesPerTokenId', internalType: 'uint64', type: 'uint64' }],\n    name: 'InvalidBytesPerTokenIdError',\n  },\n  {\n    type: 'error',\n    inputs: [{ name: '_tokenId', internalType: 'uint256', type: 'uint256' }],\n    name: 'TokenIdNotFoundError',\n  },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// WETH\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const wethAbi = [\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'owner', internalType: 'address', type: 'address', indexed: true },\n      { name: 'spender', internalType: 'address', type: 'address', indexed: true },\n      { name: 'amount', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'Approval',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address', indexed: true },\n      { name: 'amount', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'Deposit',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address', indexed: true },\n      { name: 'to', internalType: 'address', type: 'address', indexed: true },\n      { name: 'amount', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'Transfer',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'to', internalType: 'address', type: 'address', indexed: true },\n      { name: 'amount', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'Withdrawal',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'DOMAIN_SEPARATOR',\n    outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'address', type: 'address' },\n    ],\n    name: 'allowance',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'spender', internalType: 'address', type: 'address' },\n      { name: 'amount', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'approve',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '', internalType: 'address', type: 'address' }],\n    name: 'balanceOf',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'decimals',\n    outputs: [{ name: '', internalType: 'uint8', type: 'uint8' }],\n    stateMutability: 'view',\n  },\n  { type: 'function', inputs: [], name: 'deposit', outputs: [], stateMutability: 'payable' },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'name',\n    outputs: [{ name: '', internalType: 'string', type: 'string' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '', internalType: 'address', type: 'address' }],\n    name: 'nonces',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'owner', internalType: 'address', type: 'address' },\n      { name: 'spender', internalType: 'address', type: 'address' },\n      { name: 'value', internalType: 'uint256', type: 'uint256' },\n      { name: 'deadline', internalType: 'uint256', type: 'uint256' },\n      { name: 'v', internalType: 'uint8', type: 'uint8' },\n      { name: 'r', internalType: 'bytes32', type: 'bytes32' },\n      { name: 's', internalType: 'bytes32', type: 'bytes32' },\n    ],\n    name: 'permit',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'symbol',\n    outputs: [{ name: '', internalType: 'string', type: 'string' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'totalSupply',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'amount', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'transfer',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address' },\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'amount', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'transferFrom',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'amount', internalType: 'uint256', type: 'uint256' }],\n    name: 'withdraw',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  { type: 'receive', stateMutability: 'payable' },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// WithProtocolFee\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const withProtocolFeeAbi = [\n  { type: 'error', inputs: [], name: 'AddressZeroError' },\n  { type: 'error', inputs: [], name: 'InvalidInputError' },\n  {\n    type: 'error',\n    inputs: [{ name: '_pendingProtocolFeeSetTime', internalType: 'uint256', type: 'uint256' }],\n    name: 'TooEarlyError',\n  },\n  { type: 'error', inputs: [], name: 'TooSoonError' },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'user', internalType: 'address', type: 'address', indexed: true },\n      { name: 'newOwner', internalType: 'address', type: 'address', indexed: true },\n    ],\n    name: 'OwnershipTransferred',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      {\n        name: 'fee',\n        internalType: 'struct WithProtocolFee.ProtocolFee',\n        type: 'tuple',\n        components: [\n          { name: 'recipient', internalType: 'address', type: 'address' },\n          { name: 'fraction', internalType: 'uint256', type: 'uint256' },\n        ],\n        indexed: false,\n      },\n    ],\n    name: 'ProtocolFeePendingUpdate',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      {\n        name: 'fee',\n        internalType: 'struct WithProtocolFee.ProtocolFee',\n        type: 'tuple',\n        components: [\n          { name: 'recipient', internalType: 'address', type: 'address' },\n          { name: 'fraction', internalType: 'uint256', type: 'uint256' },\n        ],\n        indexed: false,\n      },\n    ],\n    name: 'ProtocolFeeUpdated',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'newOwner', internalType: 'address', type: 'address', indexed: false }],\n    name: 'TransferOwnerRequested',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'FEE_UPDATE_NOTICE',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'MIN_WAIT_TIME',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'getPendingProtocolFee',\n    outputs: [\n      {\n        name: '',\n        internalType: 'struct WithProtocolFee.ProtocolFee',\n        type: 'tuple',\n        components: [\n          { name: 'recipient', internalType: 'address', type: 'address' },\n          { name: 'fraction', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n    ],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'getPendingProtocolFeeSetTime',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'getProtocolFee',\n    outputs: [\n      {\n        name: '',\n        internalType: 'struct WithProtocolFee.ProtocolFee',\n        type: 'tuple',\n        components: [\n          { name: 'recipient', internalType: 'address', type: 'address' },\n          { name: 'fraction', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n    ],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'owner',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'pendingOwner',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'pendingOwnerTime',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: '_newOwner', internalType: 'address', type: 'address' }],\n    name: 'requestTransferOwner',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'setProtocolFee',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'transferOwnership',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'newOwner', internalType: 'address', type: 'address' }],\n    name: 'transferOwnership',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      {\n        name: '_newProtocolFee',\n        internalType: 'struct WithProtocolFee.ProtocolFee',\n        type: 'tuple',\n        components: [\n          { name: 'recipient', internalType: 'address', type: 'address' },\n          { name: 'fraction', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n    ],\n    name: 'updateProtocolFee',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// ERC1155\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const erc1155Abi = [\n  {\n    type: 'function',\n    inputs: [\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'balanceOf',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'owners', internalType: 'address[]', type: 'address[]' },\n      { name: 'ids', internalType: 'uint256[]', type: 'uint256[]' },\n    ],\n    name: 'balanceOfBatch',\n    outputs: [{ name: 'balances', internalType: 'uint256[]', type: 'uint256[]' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'address', type: 'address' },\n    ],\n    name: 'isApprovedForAll',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address' },\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'ids', internalType: 'uint256[]', type: 'uint256[]' },\n      { name: 'amounts', internalType: 'uint256[]', type: 'uint256[]' },\n      { name: 'data', internalType: 'bytes', type: 'bytes' },\n    ],\n    name: 'safeBatchTransferFrom',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address' },\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'id', internalType: 'uint256', type: 'uint256' },\n      { name: 'amount', internalType: 'uint256', type: 'uint256' },\n      { name: 'data', internalType: 'bytes', type: 'bytes' },\n    ],\n    name: 'safeTransferFrom',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'operator', internalType: 'address', type: 'address' },\n      { name: 'approved', internalType: 'bool', type: 'bool' },\n    ],\n    name: 'setApprovalForAll',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'interfaceId', internalType: 'bytes4', type: 'bytes4' }],\n    name: 'supportsInterface',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'id', internalType: 'uint256', type: 'uint256' }],\n    name: 'uri',\n    outputs: [{ name: '', internalType: 'string', type: 'string' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'owner', internalType: 'address', type: 'address', indexed: true },\n      { name: 'operator', internalType: 'address', type: 'address', indexed: true },\n      { name: 'approved', internalType: 'bool', type: 'bool', indexed: false },\n    ],\n    name: 'ApprovalForAll',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'operator', internalType: 'address', type: 'address', indexed: true },\n      { name: 'from', internalType: 'address', type: 'address', indexed: true },\n      { name: 'to', internalType: 'address', type: 'address', indexed: true },\n      { name: 'ids', internalType: 'uint256[]', type: 'uint256[]', indexed: false },\n      { name: 'amounts', internalType: 'uint256[]', type: 'uint256[]', indexed: false },\n    ],\n    name: 'TransferBatch',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'operator', internalType: 'address', type: 'address', indexed: true },\n      { name: 'from', internalType: 'address', type: 'address', indexed: true },\n      { name: 'to', internalType: 'address', type: 'address', indexed: true },\n      { name: 'id', internalType: 'uint256', type: 'uint256', indexed: false },\n      { name: 'amount', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'TransferSingle',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'value', internalType: 'string', type: 'string', indexed: false },\n      { name: 'id', internalType: 'uint256', type: 'uint256', indexed: true },\n    ],\n    name: 'URI',\n  },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// ERC1155TokenReceiver\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const erc1155TokenReceiverAbi = [\n  {\n    type: 'function',\n    inputs: [\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'uint256[]', type: 'uint256[]' },\n      { name: '', internalType: 'uint256[]', type: 'uint256[]' },\n      { name: '', internalType: 'bytes', type: 'bytes' },\n    ],\n    name: 'onERC1155BatchReceived',\n    outputs: [{ name: '', internalType: 'bytes4', type: 'bytes4' }],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'uint256', type: 'uint256' },\n      { name: '', internalType: 'uint256', type: 'uint256' },\n      { name: '', internalType: 'bytes', type: 'bytes' },\n    ],\n    name: 'onERC1155Received',\n    outputs: [{ name: '', internalType: 'bytes4', type: 'bytes4' }],\n    stateMutability: 'nonpayable',\n  },\n] as const;\n", "import { Maybe } from 'graphql/jsutils/Maybe';\nimport { Address, decodeAbiParameters, Hex, PublicClient } from 'viem';\n\nimport { Wallet } from '@/clients/contracts';\nimport { MslV5 } from '@/clients/contracts/MslV5';\nimport { MslV6 } from '@/clients/contracts/MslV6';\nimport { getContracts, getCurrencies } from '@/deploys';\nimport { purchaseBundlerV2ABI } from '@/generated/blockchain/v7';\nimport { areSameAddress } from '@/utils/string';\n\nimport { BaseContract } from './BaseContract';\n\nexport class PurchaseBundlerV2 extends BaseContract<typeof purchaseBundlerV2ABI> {\n  msl: MslV5 | MslV6;\n  static AAVE_PREMIUM_BPS = 5n;\n\n  constructor({\n    address,\n    walletClient,\n    msl,\n    publicClient,\n  }: {\n    address: Address;\n    msl: MslV5 | MslV6;\n    walletClient: Wallet;\n    publicClient?: PublicClient;\n  }) {\n    super({\n      walletClient,\n      address,\n      abi: purchaseBundlerV2ABI,\n      publicClient,\n    });\n    this.msl = msl;\n  }\n\n  static EXECUTION_INFO = {\n    name: 'executionInfo',\n    type: 'tuple',\n    components: [\n      {\n        name: 'reservoirExecutionInfo',\n        type: 'tuple',\n        components: [\n          { name: 'module', type: 'address' },\n          { name: 'data', type: 'bytes' },\n          { name: 'value', type: 'uint256' },\n        ],\n      },\n      { name: 'contractMustBeOwner', type: 'bool' },\n      // Added fields in V2\n      { name: 'purchaseCurrency', type: 'address' },\n      { name: 'amount', type: 'uint256' },\n      { name: 'swapData', type: 'bytes' },\n      { name: 'swapValue', type: 'uint256' },\n      { name: 'maxSlippage', type: 'uint256' },\n    ],\n  } as const;\n\n  static ETH_SENTINEL = '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE';\n\n  async buy({ emitCalldata, value }: { emitCalldata: Hex; value: bigint }) {\n    const txHash = await this.safeContractWrite.buy([[emitCalldata]], { value });\n\n    return {\n      txHash,\n      waitTxInBlock: async () => {\n        const receipt = await this.bcClient.waitForTransactionReceipt({\n          hash: txHash,\n        });\n        const events = this.parseEventLogs('BNPLLoansStarted', receipt.logs);\n        if (events.length !== 1) {\n          throw new Error('Buy not executed');\n        }\n        return receipt;\n      },\n    };\n  }\n\n  async sell({ repaymentCalldata, swapData }: { repaymentCalldata: Hex; swapData?: Hex }) {\n    const txHash = await this.safeContractWrite.sell([\n      [repaymentCalldata],\n      swapData ? [swapData] : [],\n    ]);\n\n    return {\n      txHash,\n      waitTxInBlock: async () => {\n        const receipt = await this.bcClient.waitForTransactionReceipt({\n          hash: txHash,\n        });\n        const events = this.parseEventLogs('SellAndRepayExecuted', receipt.logs);\n        if (events.length !== 1) {\n          throw new Error('Sell and Repay not executed');\n        }\n        return receipt;\n      },\n    };\n  }\n\n  async executeSell({\n    repaymentCalldata,\n    price,\n    swapData,\n  }: {\n    repaymentCalldata: Hex;\n    price: bigint;\n    swapData: Maybe<Hex>;\n  }) {\n    const repaymentArgs = this.msl.decodeRepaymentCalldata(repaymentCalldata);\n\n    const callbackData = decodeAbiParameters(\n      [PurchaseBundlerV2.EXECUTION_INFO],\n      repaymentArgs.data.callbackData,\n    );\n\n    const { nftCollateralAddress, nftCollateralTokenId, principalAddress } = repaymentArgs.loan;\n\n    if (\n      !areSameAddress(principalAddress, callbackData[0].purchaseCurrency) &&\n      swapData === undefined\n    ) {\n      throw new Error(\n        'Swap data is required when paying with different currency than loan currency.',\n      );\n    }\n\n    const isNativeCurrency = areSameAddress(\n      callbackData[0].purchaseCurrency,\n      PurchaseBundlerV2.ETH_SENTINEL,\n    );\n\n    const txHash = await this.safeContractWrite.executeSell(\n      [\n        isNativeCurrency ? [] : [callbackData[0].purchaseCurrency],\n        isNativeCurrency ? [] : [price],\n        [nftCollateralAddress],\n        [nftCollateralTokenId],\n        callbackData[0].reservoirExecutionInfo.module,\n        [repaymentCalldata],\n        swapData ? [swapData] : [],\n      ],\n      { value: isNativeCurrency ? callbackData[0].reservoirExecutionInfo.value : undefined },\n    );\n\n    return {\n      txHash,\n      waitTxInBlock: async () => {\n        const receipt = await this.bcClient.waitForTransactionReceipt({\n          hash: txHash,\n        });\n        const events = this.parseEventLogs('SellAndRepayExecuted', receipt.logs);\n        if (events.length !== 1) {\n          throw new Error('Sell and Repay not executed');\n        }\n        return receipt;\n      },\n    };\n  }\n\n  async executeSellWithLoan({\n    repaymentCalldata,\n    emitCalldata,\n    price,\n    initialPayment,\n    executeSellSwapData,\n    repayFlashLoanSwapParams,\n  }: {\n    repaymentCalldata: Hex;\n    emitCalldata: Hex;\n    price: bigint;\n    initialPayment: bigint;\n    executeSellSwapData: Maybe<Hex>;\n    repayFlashLoanSwapParams: Maybe<{\n      inputCurrency: Address;\n      inputAmount: bigint;\n      swapData: Hex;\n    }>;\n  }) {\n    const { Aave } = getContracts(this.wallet.chain);\n    const repaymentArgs = this.msl.decodeRepaymentCalldata(repaymentCalldata);\n\n    const callbackData = decodeAbiParameters(\n      [PurchaseBundlerV2.EXECUTION_INFO],\n      repaymentArgs.data.callbackData,\n    );\n\n    const { nftCollateralAddress, nftCollateralTokenId } = repaymentArgs.loan;\n    const purchaseCurrency = callbackData[0].purchaseCurrency;\n\n    const isNativeCurrency = areSameAddress(purchaseCurrency, PurchaseBundlerV2.ETH_SENTINEL);\n\n    const txHash = await this.safeContractWrite.executeSellWithLoan(\n      [\n        {\n          borrowArgs: {\n            pool: Aave,\n            assets: isNativeCurrency\n              ? [getCurrencies(this.wallet.chain).WETH_ADDRESS]\n              : [purchaseCurrency],\n            amounts: isNativeCurrency ? [price - initialPayment] : [price], // TODO: This could be improved to be price-initialPayment everytime\n          },\n          executeSellArgs: {\n            currencies: isNativeCurrency ? [] : [purchaseCurrency],\n            currencyAmounts: isNativeCurrency ? [] : [price],\n            collections: [nftCollateralAddress],\n            tokenIds: [nftCollateralTokenId],\n            marketPlace: callbackData[0].reservoirExecutionInfo.module,\n            executionData: [repaymentCalldata],\n            swapData: executeSellSwapData ? [executeSellSwapData] : [],\n          },\n          loanExecutionData: [emitCalldata],\n          swapCurrencies: repayFlashLoanSwapParams ? [repayFlashLoanSwapParams.inputCurrency] : [],\n          swapAmounts: repayFlashLoanSwapParams ? [repayFlashLoanSwapParams.inputAmount] : [],\n          swapData: repayFlashLoanSwapParams ? [repayFlashLoanSwapParams.swapData] : [],\n          unwrap: isNativeCurrency,\n        },\n      ],\n      { value: isNativeCurrency ? initialPayment : undefined },\n    );\n\n    return {\n      txHash,\n      waitTxInBlock: async () => {\n        const receipt = await this.bcClient.waitForTransactionReceipt({\n          hash: txHash,\n        });\n        const events = this.parseEventLogs('SellAndRepayExecuted', receipt.logs);\n        if (events.length !== 1) {\n          throw new Error('Sell with Loan not executed');\n        }\n        return receipt;\n      },\n    };\n  }\n}\n", "export const multiSourceLoanAbi = [\n  {\n    \"type\": \"constructor\",\n    \"inputs\": [\n      {\n        \"name\": \"loanLiquidator\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"protocolFee\",\n        \"type\": \"tuple\",\n        \"internalType\": \"struct WithProtocolFee.ProtocolFee\",\n        \"components\": [\n          {\n            \"name\": \"recipient\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"fraction\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          }\n        ]\n      },\n      {\n        \"name\": \"currencyManager\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"collectionManager\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"maxTranches\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"minLockPeriod\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"delegateRegistry\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"loanManagerRegistry\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"flashActionContract\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"minWaitTime\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"DOMAIN_SEPARATOR\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"bytes32\",\n        \"internalType\": \"bytes32\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"FEE_UPDATE_NOTICE\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"INITIAL_DOMAIN_SEPARATOR\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"bytes32\",\n        \"internalType\": \"bytes32\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"MAX_AUCTION_DURATION\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"uint48\",\n        \"internalType\": \"uint48\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"MIN_AUCTION_DURATION\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"uint48\",\n        \"internalType\": \"uint48\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"MIN_BID_LIQUIDATION\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"MIN_WAIT_TIME\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"VERSION\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"bytes\",\n        \"internalType\": \"bytes\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"addNewTranche\",\n    \"inputs\": [\n      {\n        \"name\": \"_renegotiationOffer\",\n        \"type\": \"tuple\",\n        \"internalType\": \"struct IMultiSourceLoan.RenegotiationOffer\",\n        \"components\": [\n          {\n            \"name\": \"renegotiationId\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"loanId\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"lender\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"fee\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"trancheIndex\",\n            \"type\": \"uint256[]\",\n            \"internalType\": \"uint256[]\"\n          },\n          {\n            \"name\": \"principalAmount\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"aprBps\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"expirationTime\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"duration\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          }\n        ]\n      },\n      {\n        \"name\": \"_loan\",\n        \"type\": \"tuple\",\n        \"internalType\": \"struct IMultiSourceLoan.Loan\",\n        \"components\": [\n          {\n            \"name\": \"borrower\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"nftCollateralTokenId\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"nftCollateralAddress\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"principalAddress\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"principalAmount\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"startTime\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"duration\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"tranche\",\n            \"type\": \"tuple[]\",\n            \"internalType\": \"struct IMultiSourceLoan.Tranche[]\",\n            \"components\": [\n              {\n                \"name\": \"loanId\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"floor\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"principalAmount\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"lender\",\n                \"type\": \"address\",\n                \"internalType\": \"address\"\n              },\n              {\n                \"name\": \"accruedInterest\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"startTime\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"aprBps\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              }\n            ]\n          },\n          {\n            \"name\": \"protocolFee\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          }\n        ]\n      },\n      {\n        \"name\": \"_renegotiationOfferSignature\",\n        \"type\": \"bytes\",\n        \"internalType\": \"bytes\"\n      }\n    ],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"\",\n        \"type\": \"tuple\",\n        \"internalType\": \"struct IMultiSourceLoan.Loan\",\n        \"components\": [\n          {\n            \"name\": \"borrower\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"nftCollateralTokenId\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"nftCollateralAddress\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"principalAddress\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"principalAmount\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"startTime\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"duration\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"tranche\",\n            \"type\": \"tuple[]\",\n            \"internalType\": \"struct IMultiSourceLoan.Tranche[]\",\n            \"components\": [\n              {\n                \"name\": \"loanId\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"floor\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"principalAmount\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"lender\",\n                \"type\": \"address\",\n                \"internalType\": \"address\"\n              },\n              {\n                \"name\": \"accruedInterest\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"startTime\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"aprBps\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              }\n            ]\n          },\n          {\n            \"name\": \"protocolFee\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          }\n        ]\n      }\n    ],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"addWhitelistedCallbackContract\",\n    \"inputs\": [\n      {\n        \"name\": \"_contract\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      }\n    ],\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"cancelOffer\",\n    \"inputs\": [\n      {\n        \"name\": \"_offerId\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"cancelRenegotiationOffer\",\n    \"inputs\": [\n      {\n        \"name\": \"_renegotiationId\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"delegate\",\n    \"inputs\": [\n      {\n        \"name\": \"_loanId\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"loan\",\n        \"type\": \"tuple\",\n        \"internalType\": \"struct IMultiSourceLoan.Loan\",\n        \"components\": [\n          {\n            \"name\": \"borrower\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"nftCollateralTokenId\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"nftCollateralAddress\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"principalAddress\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"principalAmount\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"startTime\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"duration\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"tranche\",\n            \"type\": \"tuple[]\",\n            \"internalType\": \"struct IMultiSourceLoan.Tranche[]\",\n            \"components\": [\n              {\n                \"name\": \"loanId\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"floor\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"principalAmount\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"lender\",\n                \"type\": \"address\",\n                \"internalType\": \"address\"\n              },\n              {\n                \"name\": \"accruedInterest\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"startTime\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"aprBps\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              }\n            ]\n          },\n          {\n            \"name\": \"protocolFee\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          }\n        ]\n      },\n      {\n        \"name\": \"_delegate\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"_rights\",\n        \"type\": \"bytes32\",\n        \"internalType\": \"bytes32\"\n      },\n      {\n        \"name\": \"_value\",\n        \"type\": \"bool\",\n        \"internalType\": \"bool\"\n      }\n    ],\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"emitLoan\",\n    \"inputs\": [\n      {\n        \"name\": \"_loanExecutionData\",\n        \"type\": \"tuple\",\n        \"internalType\": \"struct IMultiSourceLoan.LoanExecutionData\",\n        \"components\": [\n          {\n            \"name\": \"executionData\",\n            \"type\": \"tuple\",\n            \"internalType\": \"struct IMultiSourceLoan.ExecutionData\",\n            \"components\": [\n              {\n                \"name\": \"offerExecution\",\n                \"type\": \"tuple[]\",\n                \"internalType\": \"struct IMultiSourceLoan.OfferExecution[]\",\n                \"components\": [\n                  {\n                    \"name\": \"offer\",\n                    \"type\": \"tuple\",\n                    \"internalType\": \"struct IMultiSourceLoan.LoanOffer\",\n                    \"components\": [\n                      {\n                        \"name\": \"offerId\",\n                        \"type\": \"uint256\",\n                        \"internalType\": \"uint256\"\n                      },\n                      {\n                        \"name\": \"lender\",\n                        \"type\": \"address\",\n                        \"internalType\": \"address\"\n                      },\n                      {\n                        \"name\": \"fee\",\n                        \"type\": \"uint256\",\n                        \"internalType\": \"uint256\"\n                      },\n                      {\n                        \"name\": \"capacity\",\n                        \"type\": \"uint256\",\n                        \"internalType\": \"uint256\"\n                      },\n                      {\n                        \"name\": \"nftCollateralAddress\",\n                        \"type\": \"address\",\n                        \"internalType\": \"address\"\n                      },\n                      {\n                        \"name\": \"nftCollateralTokenId\",\n                        \"type\": \"uint256\",\n                        \"internalType\": \"uint256\"\n                      },\n                      {\n                        \"name\": \"principalAddress\",\n                        \"type\": \"address\",\n                        \"internalType\": \"address\"\n                      },\n                      {\n                        \"name\": \"principalAmount\",\n                        \"type\": \"uint256\",\n                        \"internalType\": \"uint256\"\n                      },\n                      {\n                        \"name\": \"aprBps\",\n                        \"type\": \"uint256\",\n                        \"internalType\": \"uint256\"\n                      },\n                      {\n                        \"name\": \"expirationTime\",\n                        \"type\": \"uint256\",\n                        \"internalType\": \"uint256\"\n                      },\n                      {\n                        \"name\": \"duration\",\n                        \"type\": \"uint256\",\n                        \"internalType\": \"uint256\"\n                      },\n                      {\n                        \"name\": \"maxSeniorRepayment\",\n                        \"type\": \"uint256\",\n                        \"internalType\": \"uint256\"\n                      },\n                      {\n                        \"name\": \"validators\",\n                        \"type\": \"tuple[]\",\n                        \"internalType\": \"struct IBaseLoan.OfferValidator[]\",\n                        \"components\": [\n                          {\n                            \"name\": \"validator\",\n                            \"type\": \"address\",\n                            \"internalType\": \"address\"\n                          },\n                          {\n                            \"name\": \"arguments\",\n                            \"type\": \"bytes\",\n                            \"internalType\": \"bytes\"\n                          }\n                        ]\n                      }\n                    ]\n                  },\n                  {\n                    \"name\": \"amount\",\n                    \"type\": \"uint256\",\n                    \"internalType\": \"uint256\"\n                  },\n                  {\n                    \"name\": \"lenderOfferSignature\",\n                    \"type\": \"bytes\",\n                    \"internalType\": \"bytes\"\n                  }\n                ]\n              },\n              {\n                \"name\": \"loanId\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"nftCollateralAddress\",\n                \"type\": \"address\",\n                \"internalType\": \"address\"\n              },\n              {\n                \"name\": \"tokenId\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"duration\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"expirationTime\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"principalReceiver\",\n                \"type\": \"address\",\n                \"internalType\": \"address\"\n              },\n              {\n                \"name\": \"callbackData\",\n                \"type\": \"bytes\",\n                \"internalType\": \"bytes\"\n              }\n            ]\n          },\n          {\n            \"name\": \"borrower\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"borrowerOfferSignature\",\n            \"type\": \"bytes\",\n            \"internalType\": \"bytes\"\n          }\n        ]\n      }\n    ],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"\",\n        \"type\": \"tuple\",\n        \"internalType\": \"struct IMultiSourceLoan.Loan\",\n        \"components\": [\n          {\n            \"name\": \"borrower\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"nftCollateralTokenId\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"nftCollateralAddress\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"principalAddress\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"principalAmount\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"startTime\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"duration\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"tranche\",\n            \"type\": \"tuple[]\",\n            \"internalType\": \"struct IMultiSourceLoan.Tranche[]\",\n            \"components\": [\n              {\n                \"name\": \"loanId\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"floor\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"principalAmount\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"lender\",\n                \"type\": \"address\",\n                \"internalType\": \"address\"\n              },\n              {\n                \"name\": \"accruedInterest\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"startTime\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"aprBps\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              }\n            ]\n          },\n          {\n            \"name\": \"protocolFee\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          }\n        ]\n      }\n    ],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"executeFlashAction\",\n    \"inputs\": [\n      {\n        \"name\": \"_loanId\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"_loan\",\n        \"type\": \"tuple\",\n        \"internalType\": \"struct IMultiSourceLoan.Loan\",\n        \"components\": [\n          {\n            \"name\": \"borrower\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"nftCollateralTokenId\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"nftCollateralAddress\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"principalAddress\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"principalAmount\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"startTime\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"duration\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"tranche\",\n            \"type\": \"tuple[]\",\n            \"internalType\": \"struct IMultiSourceLoan.Tranche[]\",\n            \"components\": [\n              {\n                \"name\": \"loanId\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"floor\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"principalAmount\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"lender\",\n                \"type\": \"address\",\n                \"internalType\": \"address\"\n              },\n              {\n                \"name\": \"accruedInterest\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"startTime\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"aprBps\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              }\n            ]\n          },\n          {\n            \"name\": \"protocolFee\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          }\n        ]\n      },\n      {\n        \"name\": \"_target\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"_data\",\n        \"type\": \"bytes\",\n        \"internalType\": \"bytes\"\n      }\n    ],\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"getCollectionManager\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"getCurrencyManager\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"getDelegateRegistry\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"getFlashActionContract\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"getLiquidationAuctionDuration\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"uint48\",\n        \"internalType\": \"uint48\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"getLiquidator\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"getLoanHash\",\n    \"inputs\": [\n      {\n        \"name\": \"_loanId\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"bytes32\",\n        \"internalType\": \"bytes32\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"getLoanManagerRegistry\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"address\",\n        \"internalType\": \"contract ILoanManagerRegistry\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"getMaxTranches\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"getMinImprovementApr\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"getMinLockPeriod\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"getPendingProtocolFee\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"tuple\",\n        \"internalType\": \"struct WithProtocolFee.ProtocolFee\",\n        \"components\": [\n          {\n            \"name\": \"recipient\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"fraction\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          }\n        ]\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"getPendingProtocolFeeSetTime\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"getProtocolFee\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"tuple\",\n        \"internalType\": \"struct WithProtocolFee.ProtocolFee\",\n        \"components\": [\n          {\n            \"name\": \"recipient\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"fraction\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          }\n        ]\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"getTotalLoansIssued\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"getUsedCapacity\",\n    \"inputs\": [\n      {\n        \"name\": \"_lender\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"_offerId\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"isOfferCancelled\",\n    \"inputs\": [\n      {\n        \"name\": \"user\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"offerId\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"outputs\": [\n      {\n        \"name\": \"notActive\",\n        \"type\": \"bool\",\n        \"internalType\": \"bool\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"isRenegotiationOfferCancelled\",\n    \"inputs\": [\n      {\n        \"name\": \"user\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"renegotiationIf\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"outputs\": [\n      {\n        \"name\": \"notActive\",\n        \"type\": \"bool\",\n        \"internalType\": \"bool\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"isWhitelistedCallbackContract\",\n    \"inputs\": [\n      {\n        \"name\": \"_contract\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      }\n    ],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"bool\",\n        \"internalType\": \"bool\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"liquidateLoan\",\n    \"inputs\": [\n      {\n        \"name\": \"_loanId\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"_loan\",\n        \"type\": \"tuple\",\n        \"internalType\": \"struct IMultiSourceLoan.Loan\",\n        \"components\": [\n          {\n            \"name\": \"borrower\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"nftCollateralTokenId\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"nftCollateralAddress\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"principalAddress\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"principalAmount\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"startTime\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"duration\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"tranche\",\n            \"type\": \"tuple[]\",\n            \"internalType\": \"struct IMultiSourceLoan.Tranche[]\",\n            \"components\": [\n              {\n                \"name\": \"loanId\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"floor\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"principalAmount\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"lender\",\n                \"type\": \"address\",\n                \"internalType\": \"address\"\n              },\n              {\n                \"name\": \"accruedInterest\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"startTime\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"aprBps\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              }\n            ]\n          },\n          {\n            \"name\": \"protocolFee\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          }\n        ]\n      }\n    ],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"bytes\",\n        \"internalType\": \"bytes\"\n      }\n    ],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"loanLiquidated\",\n    \"inputs\": [\n      {\n        \"name\": \"_loanId\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"_loan\",\n        \"type\": \"tuple\",\n        \"internalType\": \"struct IMultiSourceLoan.Loan\",\n        \"components\": [\n          {\n            \"name\": \"borrower\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"nftCollateralTokenId\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"nftCollateralAddress\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"principalAddress\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"principalAmount\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"startTime\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"duration\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"tranche\",\n            \"type\": \"tuple[]\",\n            \"internalType\": \"struct IMultiSourceLoan.Tranche[]\",\n            \"components\": [\n              {\n                \"name\": \"loanId\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"floor\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"principalAmount\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"lender\",\n                \"type\": \"address\",\n                \"internalType\": \"address\"\n              },\n              {\n                \"name\": \"accruedInterest\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"startTime\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"aprBps\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              }\n            ]\n          },\n          {\n            \"name\": \"protocolFee\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          }\n        ]\n      }\n    ],\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"multicall\",\n    \"inputs\": [\n      {\n        \"name\": \"data\",\n        \"type\": \"bytes[]\",\n        \"internalType\": \"bytes[]\"\n      }\n    ],\n    \"outputs\": [\n      {\n        \"name\": \"results\",\n        \"type\": \"bytes[]\",\n        \"internalType\": \"bytes[]\"\n      }\n    ],\n    \"stateMutability\": \"payable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"name\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"string\",\n        \"internalType\": \"string\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"onERC721Received\",\n    \"inputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"\",\n        \"type\": \"bytes\",\n        \"internalType\": \"bytes\"\n      }\n    ],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"bytes4\",\n        \"internalType\": \"bytes4\"\n      }\n    ],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"owner\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"pendingOwner\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"pendingOwnerTime\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"refinanceFromLoanExecutionData\",\n    \"inputs\": [\n      {\n        \"name\": \"_loanId\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"_loan\",\n        \"type\": \"tuple\",\n        \"internalType\": \"struct IMultiSourceLoan.Loan\",\n        \"components\": [\n          {\n            \"name\": \"borrower\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"nftCollateralTokenId\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"nftCollateralAddress\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"principalAddress\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"principalAmount\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"startTime\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"duration\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"tranche\",\n            \"type\": \"tuple[]\",\n            \"internalType\": \"struct IMultiSourceLoan.Tranche[]\",\n            \"components\": [\n              {\n                \"name\": \"loanId\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"floor\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"principalAmount\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"lender\",\n                \"type\": \"address\",\n                \"internalType\": \"address\"\n              },\n              {\n                \"name\": \"accruedInterest\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"startTime\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"aprBps\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              }\n            ]\n          },\n          {\n            \"name\": \"protocolFee\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          }\n        ]\n      },\n      {\n        \"name\": \"_loanExecutionData\",\n        \"type\": \"tuple\",\n        \"internalType\": \"struct IMultiSourceLoan.LoanExecutionData\",\n        \"components\": [\n          {\n            \"name\": \"executionData\",\n            \"type\": \"tuple\",\n            \"internalType\": \"struct IMultiSourceLoan.ExecutionData\",\n            \"components\": [\n              {\n                \"name\": \"offerExecution\",\n                \"type\": \"tuple[]\",\n                \"internalType\": \"struct IMultiSourceLoan.OfferExecution[]\",\n                \"components\": [\n                  {\n                    \"name\": \"offer\",\n                    \"type\": \"tuple\",\n                    \"internalType\": \"struct IMultiSourceLoan.LoanOffer\",\n                    \"components\": [\n                      {\n                        \"name\": \"offerId\",\n                        \"type\": \"uint256\",\n                        \"internalType\": \"uint256\"\n                      },\n                      {\n                        \"name\": \"lender\",\n                        \"type\": \"address\",\n                        \"internalType\": \"address\"\n                      },\n                      {\n                        \"name\": \"fee\",\n                        \"type\": \"uint256\",\n                        \"internalType\": \"uint256\"\n                      },\n                      {\n                        \"name\": \"capacity\",\n                        \"type\": \"uint256\",\n                        \"internalType\": \"uint256\"\n                      },\n                      {\n                        \"name\": \"nftCollateralAddress\",\n                        \"type\": \"address\",\n                        \"internalType\": \"address\"\n                      },\n                      {\n                        \"name\": \"nftCollateralTokenId\",\n                        \"type\": \"uint256\",\n                        \"internalType\": \"uint256\"\n                      },\n                      {\n                        \"name\": \"principalAddress\",\n                        \"type\": \"address\",\n                        \"internalType\": \"address\"\n                      },\n                      {\n                        \"name\": \"principalAmount\",\n                        \"type\": \"uint256\",\n                        \"internalType\": \"uint256\"\n                      },\n                      {\n                        \"name\": \"aprBps\",\n                        \"type\": \"uint256\",\n                        \"internalType\": \"uint256\"\n                      },\n                      {\n                        \"name\": \"expirationTime\",\n                        \"type\": \"uint256\",\n                        \"internalType\": \"uint256\"\n                      },\n                      {\n                        \"name\": \"duration\",\n                        \"type\": \"uint256\",\n                        \"internalType\": \"uint256\"\n                      },\n                      {\n                        \"name\": \"maxSeniorRepayment\",\n                        \"type\": \"uint256\",\n                        \"internalType\": \"uint256\"\n                      },\n                      {\n                        \"name\": \"validators\",\n                        \"type\": \"tuple[]\",\n                        \"internalType\": \"struct IBaseLoan.OfferValidator[]\",\n                        \"components\": [\n                          {\n                            \"name\": \"validator\",\n                            \"type\": \"address\",\n                            \"internalType\": \"address\"\n                          },\n                          {\n                            \"name\": \"arguments\",\n                            \"type\": \"bytes\",\n                            \"internalType\": \"bytes\"\n                          }\n                        ]\n                      }\n                    ]\n                  },\n                  {\n                    \"name\": \"amount\",\n                    \"type\": \"uint256\",\n                    \"internalType\": \"uint256\"\n                  },\n                  {\n                    \"name\": \"lenderOfferSignature\",\n                    \"type\": \"bytes\",\n                    \"internalType\": \"bytes\"\n                  }\n                ]\n              },\n              {\n                \"name\": \"loanId\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"nftCollateralAddress\",\n                \"type\": \"address\",\n                \"internalType\": \"address\"\n              },\n              {\n                \"name\": \"tokenId\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"duration\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"expirationTime\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"principalReceiver\",\n                \"type\": \"address\",\n                \"internalType\": \"address\"\n              },\n              {\n                \"name\": \"callbackData\",\n                \"type\": \"bytes\",\n                \"internalType\": \"bytes\"\n              }\n            ]\n          },\n          {\n            \"name\": \"borrower\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"borrowerOfferSignature\",\n            \"type\": \"bytes\",\n            \"internalType\": \"bytes\"\n          }\n        ]\n      }\n    ],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"\",\n        \"type\": \"tuple\",\n        \"internalType\": \"struct IMultiSourceLoan.Loan\",\n        \"components\": [\n          {\n            \"name\": \"borrower\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"nftCollateralTokenId\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"nftCollateralAddress\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"principalAddress\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"principalAmount\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"startTime\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"duration\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"tranche\",\n            \"type\": \"tuple[]\",\n            \"internalType\": \"struct IMultiSourceLoan.Tranche[]\",\n            \"components\": [\n              {\n                \"name\": \"loanId\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"floor\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"principalAmount\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"lender\",\n                \"type\": \"address\",\n                \"internalType\": \"address\"\n              },\n              {\n                \"name\": \"accruedInterest\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"startTime\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"aprBps\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              }\n            ]\n          },\n          {\n            \"name\": \"protocolFee\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          }\n        ]\n      }\n    ],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"refinanceFull\",\n    \"inputs\": [\n      {\n        \"name\": \"_renegotiationOffer\",\n        \"type\": \"tuple\",\n        \"internalType\": \"struct IMultiSourceLoan.RenegotiationOffer\",\n        \"components\": [\n          {\n            \"name\": \"renegotiationId\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"loanId\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"lender\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"fee\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"trancheIndex\",\n            \"type\": \"uint256[]\",\n            \"internalType\": \"uint256[]\"\n          },\n          {\n            \"name\": \"principalAmount\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"aprBps\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"expirationTime\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"duration\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          }\n        ]\n      },\n      {\n        \"name\": \"_loan\",\n        \"type\": \"tuple\",\n        \"internalType\": \"struct IMultiSourceLoan.Loan\",\n        \"components\": [\n          {\n            \"name\": \"borrower\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"nftCollateralTokenId\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"nftCollateralAddress\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"principalAddress\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"principalAmount\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"startTime\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"duration\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"tranche\",\n            \"type\": \"tuple[]\",\n            \"internalType\": \"struct IMultiSourceLoan.Tranche[]\",\n            \"components\": [\n              {\n                \"name\": \"loanId\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"floor\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"principalAmount\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"lender\",\n                \"type\": \"address\",\n                \"internalType\": \"address\"\n              },\n              {\n                \"name\": \"accruedInterest\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"startTime\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"aprBps\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              }\n            ]\n          },\n          {\n            \"name\": \"protocolFee\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          }\n        ]\n      },\n      {\n        \"name\": \"_renegotiationOfferSignature\",\n        \"type\": \"bytes\",\n        \"internalType\": \"bytes\"\n      }\n    ],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"\",\n        \"type\": \"tuple\",\n        \"internalType\": \"struct IMultiSourceLoan.Loan\",\n        \"components\": [\n          {\n            \"name\": \"borrower\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"nftCollateralTokenId\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"nftCollateralAddress\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"principalAddress\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"principalAmount\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"startTime\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"duration\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"tranche\",\n            \"type\": \"tuple[]\",\n            \"internalType\": \"struct IMultiSourceLoan.Tranche[]\",\n            \"components\": [\n              {\n                \"name\": \"loanId\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"floor\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"principalAmount\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"lender\",\n                \"type\": \"address\",\n                \"internalType\": \"address\"\n              },\n              {\n                \"name\": \"accruedInterest\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"startTime\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"aprBps\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              }\n            ]\n          },\n          {\n            \"name\": \"protocolFee\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          }\n        ]\n      }\n    ],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"refinancePartial\",\n    \"inputs\": [\n      {\n        \"name\": \"_renegotiationOffer\",\n        \"type\": \"tuple\",\n        \"internalType\": \"struct IMultiSourceLoan.RenegotiationOffer\",\n        \"components\": [\n          {\n            \"name\": \"renegotiationId\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"loanId\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"lender\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"fee\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"trancheIndex\",\n            \"type\": \"uint256[]\",\n            \"internalType\": \"uint256[]\"\n          },\n          {\n            \"name\": \"principalAmount\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"aprBps\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"expirationTime\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"duration\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          }\n        ]\n      },\n      {\n        \"name\": \"_loan\",\n        \"type\": \"tuple\",\n        \"internalType\": \"struct IMultiSourceLoan.Loan\",\n        \"components\": [\n          {\n            \"name\": \"borrower\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"nftCollateralTokenId\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"nftCollateralAddress\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"principalAddress\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"principalAmount\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"startTime\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"duration\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"tranche\",\n            \"type\": \"tuple[]\",\n            \"internalType\": \"struct IMultiSourceLoan.Tranche[]\",\n            \"components\": [\n              {\n                \"name\": \"loanId\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"floor\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"principalAmount\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"lender\",\n                \"type\": \"address\",\n                \"internalType\": \"address\"\n              },\n              {\n                \"name\": \"accruedInterest\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"startTime\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"aprBps\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              }\n            ]\n          },\n          {\n            \"name\": \"protocolFee\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          }\n        ]\n      }\n    ],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"\",\n        \"type\": \"tuple\",\n        \"internalType\": \"struct IMultiSourceLoan.Loan\",\n        \"components\": [\n          {\n            \"name\": \"borrower\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"nftCollateralTokenId\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"nftCollateralAddress\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"principalAddress\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"principalAmount\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"startTime\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"duration\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"tranche\",\n            \"type\": \"tuple[]\",\n            \"internalType\": \"struct IMultiSourceLoan.Tranche[]\",\n            \"components\": [\n              {\n                \"name\": \"loanId\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"floor\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"principalAmount\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"lender\",\n                \"type\": \"address\",\n                \"internalType\": \"address\"\n              },\n              {\n                \"name\": \"accruedInterest\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"startTime\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"aprBps\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              }\n            ]\n          },\n          {\n            \"name\": \"protocolFee\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          }\n        ]\n      }\n    ],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"removeWhitelistedCallbackContract\",\n    \"inputs\": [\n      {\n        \"name\": \"_contract\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      }\n    ],\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"repayLoan\",\n    \"inputs\": [\n      {\n        \"name\": \"_repaymentData\",\n        \"type\": \"tuple\",\n        \"internalType\": \"struct IMultiSourceLoan.LoanRepaymentData\",\n        \"components\": [\n          {\n            \"name\": \"data\",\n            \"type\": \"tuple\",\n            \"internalType\": \"struct IMultiSourceLoan.SignableRepaymentData\",\n            \"components\": [\n              {\n                \"name\": \"loanId\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"callbackData\",\n                \"type\": \"bytes\",\n                \"internalType\": \"bytes\"\n              },\n              {\n                \"name\": \"shouldDelegate\",\n                \"type\": \"bool\",\n                \"internalType\": \"bool\"\n              }\n            ]\n          },\n          {\n            \"name\": \"loan\",\n            \"type\": \"tuple\",\n            \"internalType\": \"struct IMultiSourceLoan.Loan\",\n            \"components\": [\n              {\n                \"name\": \"borrower\",\n                \"type\": \"address\",\n                \"internalType\": \"address\"\n              },\n              {\n                \"name\": \"nftCollateralTokenId\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"nftCollateralAddress\",\n                \"type\": \"address\",\n                \"internalType\": \"address\"\n              },\n              {\n                \"name\": \"principalAddress\",\n                \"type\": \"address\",\n                \"internalType\": \"address\"\n              },\n              {\n                \"name\": \"principalAmount\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"startTime\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"duration\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"tranche\",\n                \"type\": \"tuple[]\",\n                \"internalType\": \"struct IMultiSourceLoan.Tranche[]\",\n                \"components\": [\n                  {\n                    \"name\": \"loanId\",\n                    \"type\": \"uint256\",\n                    \"internalType\": \"uint256\"\n                  },\n                  {\n                    \"name\": \"floor\",\n                    \"type\": \"uint256\",\n                    \"internalType\": \"uint256\"\n                  },\n                  {\n                    \"name\": \"principalAmount\",\n                    \"type\": \"uint256\",\n                    \"internalType\": \"uint256\"\n                  },\n                  {\n                    \"name\": \"lender\",\n                    \"type\": \"address\",\n                    \"internalType\": \"address\"\n                  },\n                  {\n                    \"name\": \"accruedInterest\",\n                    \"type\": \"uint256\",\n                    \"internalType\": \"uint256\"\n                  },\n                  {\n                    \"name\": \"startTime\",\n                    \"type\": \"uint256\",\n                    \"internalType\": \"uint256\"\n                  },\n                  {\n                    \"name\": \"aprBps\",\n                    \"type\": \"uint256\",\n                    \"internalType\": \"uint256\"\n                  }\n                ]\n              },\n              {\n                \"name\": \"protocolFee\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              }\n            ]\n          },\n          {\n            \"name\": \"borrowerSignature\",\n            \"type\": \"bytes\",\n            \"internalType\": \"bytes\"\n          }\n        ]\n      }\n    ],\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"requestTransferOwner\",\n    \"inputs\": [\n      {\n        \"name\": \"_newOwner\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      }\n    ],\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"revokeDelegate\",\n    \"inputs\": [\n      {\n        \"name\": \"_delegate\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"_collection\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"_tokenId\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"_rights\",\n        \"type\": \"bytes32\",\n        \"internalType\": \"bytes32\"\n      }\n    ],\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"setFlashActionContract\",\n    \"inputs\": [\n      {\n        \"name\": \"_newFlashActionContract\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      }\n    ],\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"setMinLockPeriod\",\n    \"inputs\": [\n      {\n        \"name\": \"__minLockPeriod\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"setProtocolFee\",\n    \"inputs\": [],\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"transferOwnership\",\n    \"inputs\": [],\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"transferOwnership\",\n    \"inputs\": [\n      {\n        \"name\": \"newOwner\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      }\n    ],\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"updateLiquidationAuctionDuration\",\n    \"inputs\": [\n      {\n        \"name\": \"_newDuration\",\n        \"type\": \"uint48\",\n        \"internalType\": \"uint48\"\n      }\n    ],\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"updateLiquidationContract\",\n    \"inputs\": [\n      {\n        \"name\": \"__loanLiquidator\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      }\n    ],\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"updateMinImprovementApr\",\n    \"inputs\": [\n      {\n        \"name\": \"_newMinimum\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"updateProtocolFee\",\n    \"inputs\": [\n      {\n        \"name\": \"_newProtocolFee\",\n        \"type\": \"tuple\",\n        \"internalType\": \"struct WithProtocolFee.ProtocolFee\",\n        \"components\": [\n          {\n            \"name\": \"recipient\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"fraction\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          }\n        ]\n      }\n    ],\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"event\",\n    \"name\": \"Delegated\",\n    \"inputs\": [\n      {\n        \"name\": \"loanId\",\n        \"type\": \"uint256\",\n        \"indexed\": false,\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"delegate\",\n        \"type\": \"address\",\n        \"indexed\": false,\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"_rights\",\n        \"type\": \"bytes32\",\n        \"indexed\": false,\n        \"internalType\": \"bytes32\"\n      },\n      {\n        \"name\": \"value\",\n        \"type\": \"bool\",\n        \"indexed\": false,\n        \"internalType\": \"bool\"\n      }\n    ],\n    \"anonymous\": false\n  },\n  {\n    \"type\": \"event\",\n    \"name\": \"FlashActionContractUpdated\",\n    \"inputs\": [\n      {\n        \"name\": \"newFlashActionContract\",\n        \"type\": \"address\",\n        \"indexed\": false,\n        \"internalType\": \"address\"\n      }\n    ],\n    \"anonymous\": false\n  },\n  {\n    \"type\": \"event\",\n    \"name\": \"FlashActionExecuted\",\n    \"inputs\": [\n      {\n        \"name\": \"loanId\",\n        \"type\": \"uint256\",\n        \"indexed\": false,\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"target\",\n        \"type\": \"address\",\n        \"indexed\": false,\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"data\",\n        \"type\": \"bytes\",\n        \"indexed\": false,\n        \"internalType\": \"bytes\"\n      }\n    ],\n    \"anonymous\": false\n  },\n  {\n    \"type\": \"event\",\n    \"name\": \"LiquidationAuctionDurationUpdated\",\n    \"inputs\": [\n      {\n        \"name\": \"newDuration\",\n        \"type\": \"uint256\",\n        \"indexed\": false,\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"anonymous\": false\n  },\n  {\n    \"type\": \"event\",\n    \"name\": \"LiquidationContractUpdated\",\n    \"inputs\": [\n      {\n        \"name\": \"liquidator\",\n        \"type\": \"address\",\n        \"indexed\": false,\n        \"internalType\": \"address\"\n      }\n    ],\n    \"anonymous\": false\n  },\n  {\n    \"type\": \"event\",\n    \"name\": \"LoanEmitted\",\n    \"inputs\": [\n      {\n        \"name\": \"loanId\",\n        \"type\": \"uint256\",\n        \"indexed\": false,\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"offerId\",\n        \"type\": \"uint256[]\",\n        \"indexed\": false,\n        \"internalType\": \"uint256[]\"\n      },\n      {\n        \"name\": \"loan\",\n        \"type\": \"tuple\",\n        \"indexed\": false,\n        \"internalType\": \"struct IMultiSourceLoan.Loan\",\n        \"components\": [\n          {\n            \"name\": \"borrower\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"nftCollateralTokenId\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"nftCollateralAddress\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"principalAddress\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"principalAmount\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"startTime\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"duration\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"tranche\",\n            \"type\": \"tuple[]\",\n            \"internalType\": \"struct IMultiSourceLoan.Tranche[]\",\n            \"components\": [\n              {\n                \"name\": \"loanId\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"floor\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"principalAmount\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"lender\",\n                \"type\": \"address\",\n                \"internalType\": \"address\"\n              },\n              {\n                \"name\": \"accruedInterest\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"startTime\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"aprBps\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              }\n            ]\n          },\n          {\n            \"name\": \"protocolFee\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          }\n        ]\n      },\n      {\n        \"name\": \"fee\",\n        \"type\": \"uint256\",\n        \"indexed\": false,\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"anonymous\": false\n  },\n  {\n    \"type\": \"event\",\n    \"name\": \"LoanForeclosed\",\n    \"inputs\": [\n      {\n        \"name\": \"loanId\",\n        \"type\": \"uint256\",\n        \"indexed\": false,\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"anonymous\": false\n  },\n  {\n    \"type\": \"event\",\n    \"name\": \"LoanLiquidated\",\n    \"inputs\": [\n      {\n        \"name\": \"loanId\",\n        \"type\": \"uint256\",\n        \"indexed\": false,\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"anonymous\": false\n  },\n  {\n    \"type\": \"event\",\n    \"name\": \"LoanRefinanced\",\n    \"inputs\": [\n      {\n        \"name\": \"renegotiationId\",\n        \"type\": \"uint256\",\n        \"indexed\": false,\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"oldLoanId\",\n        \"type\": \"uint256\",\n        \"indexed\": false,\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"newLoanId\",\n        \"type\": \"uint256\",\n        \"indexed\": false,\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"loan\",\n        \"type\": \"tuple\",\n        \"indexed\": false,\n        \"internalType\": \"struct IMultiSourceLoan.Loan\",\n        \"components\": [\n          {\n            \"name\": \"borrower\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"nftCollateralTokenId\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"nftCollateralAddress\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"principalAddress\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"principalAmount\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"startTime\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"duration\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"tranche\",\n            \"type\": \"tuple[]\",\n            \"internalType\": \"struct IMultiSourceLoan.Tranche[]\",\n            \"components\": [\n              {\n                \"name\": \"loanId\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"floor\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"principalAmount\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"lender\",\n                \"type\": \"address\",\n                \"internalType\": \"address\"\n              },\n              {\n                \"name\": \"accruedInterest\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"startTime\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"aprBps\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              }\n            ]\n          },\n          {\n            \"name\": \"protocolFee\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          }\n        ]\n      },\n      {\n        \"name\": \"fee\",\n        \"type\": \"uint256\",\n        \"indexed\": false,\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"anonymous\": false\n  },\n  {\n    \"type\": \"event\",\n    \"name\": \"LoanRefinancedFromNewOffers\",\n    \"inputs\": [\n      {\n        \"name\": \"loanId\",\n        \"type\": \"uint256\",\n        \"indexed\": false,\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"newLoanId\",\n        \"type\": \"uint256\",\n        \"indexed\": false,\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"loan\",\n        \"type\": \"tuple\",\n        \"indexed\": false,\n        \"internalType\": \"struct IMultiSourceLoan.Loan\",\n        \"components\": [\n          {\n            \"name\": \"borrower\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"nftCollateralTokenId\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"nftCollateralAddress\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"principalAddress\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"principalAmount\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"startTime\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"duration\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"tranche\",\n            \"type\": \"tuple[]\",\n            \"internalType\": \"struct IMultiSourceLoan.Tranche[]\",\n            \"components\": [\n              {\n                \"name\": \"loanId\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"floor\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"principalAmount\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"lender\",\n                \"type\": \"address\",\n                \"internalType\": \"address\"\n              },\n              {\n                \"name\": \"accruedInterest\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"startTime\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"aprBps\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              }\n            ]\n          },\n          {\n            \"name\": \"protocolFee\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          }\n        ]\n      },\n      {\n        \"name\": \"offerIds\",\n        \"type\": \"uint256[]\",\n        \"indexed\": false,\n        \"internalType\": \"uint256[]\"\n      },\n      {\n        \"name\": \"totalFee\",\n        \"type\": \"uint256\",\n        \"indexed\": false,\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"anonymous\": false\n  },\n  {\n    \"type\": \"event\",\n    \"name\": \"LoanRepaid\",\n    \"inputs\": [\n      {\n        \"name\": \"loanId\",\n        \"type\": \"uint256\",\n        \"indexed\": false,\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"totalRepayment\",\n        \"type\": \"uint256\",\n        \"indexed\": false,\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"fee\",\n        \"type\": \"uint256\",\n        \"indexed\": false,\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"anonymous\": false\n  },\n  {\n    \"type\": \"event\",\n    \"name\": \"LoanSentToLiquidator\",\n    \"inputs\": [\n      {\n        \"name\": \"loanId\",\n        \"type\": \"uint256\",\n        \"indexed\": false,\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"liquidator\",\n        \"type\": \"address\",\n        \"indexed\": false,\n        \"internalType\": \"address\"\n      }\n    ],\n    \"anonymous\": false\n  },\n  {\n    \"type\": \"event\",\n    \"name\": \"MinAprImprovementUpdated\",\n    \"inputs\": [\n      {\n        \"name\": \"_minimum\",\n        \"type\": \"uint256\",\n        \"indexed\": false,\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"anonymous\": false\n  },\n  {\n    \"type\": \"event\",\n    \"name\": \"MinBidLiquidationUpdated\",\n    \"inputs\": [\n      {\n        \"name\": \"newMinBid\",\n        \"type\": \"uint256\",\n        \"indexed\": false,\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"anonymous\": false\n  },\n  {\n    \"type\": \"event\",\n    \"name\": \"MinLockPeriodUpdated\",\n    \"inputs\": [\n      {\n        \"name\": \"minLockPeriod\",\n        \"type\": \"uint256\",\n        \"indexed\": false,\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"anonymous\": false\n  },\n  {\n    \"type\": \"event\",\n    \"name\": \"OfferCancelled\",\n    \"inputs\": [\n      {\n        \"name\": \"lender\",\n        \"type\": \"address\",\n        \"indexed\": false,\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"offerId\",\n        \"type\": \"uint256\",\n        \"indexed\": false,\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"anonymous\": false\n  },\n  {\n    \"type\": \"event\",\n    \"name\": \"OwnershipTransferred\",\n    \"inputs\": [\n      {\n        \"name\": \"user\",\n        \"type\": \"address\",\n        \"indexed\": true,\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"newOwner\",\n        \"type\": \"address\",\n        \"indexed\": true,\n        \"internalType\": \"address\"\n      }\n    ],\n    \"anonymous\": false\n  },\n  {\n    \"type\": \"event\",\n    \"name\": \"ProtocolFeePendingUpdate\",\n    \"inputs\": [\n      {\n        \"name\": \"fee\",\n        \"type\": \"tuple\",\n        \"indexed\": false,\n        \"internalType\": \"struct WithProtocolFee.ProtocolFee\",\n        \"components\": [\n          {\n            \"name\": \"recipient\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"fraction\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          }\n        ]\n      }\n    ],\n    \"anonymous\": false\n  },\n  {\n    \"type\": \"event\",\n    \"name\": \"ProtocolFeeUpdated\",\n    \"inputs\": [\n      {\n        \"name\": \"fee\",\n        \"type\": \"tuple\",\n        \"indexed\": false,\n        \"internalType\": \"struct WithProtocolFee.ProtocolFee\",\n        \"components\": [\n          {\n            \"name\": \"recipient\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"fraction\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          }\n        ]\n      }\n    ],\n    \"anonymous\": false\n  },\n  {\n    \"type\": \"event\",\n    \"name\": \"RenegotiationOfferCancelled\",\n    \"inputs\": [\n      {\n        \"name\": \"lender\",\n        \"type\": \"address\",\n        \"indexed\": false,\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"renegotiationId\",\n        \"type\": \"uint256\",\n        \"indexed\": false,\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"anonymous\": false\n  },\n  {\n    \"type\": \"event\",\n    \"name\": \"RevokeDelegate\",\n    \"inputs\": [\n      {\n        \"name\": \"delegate\",\n        \"type\": \"address\",\n        \"indexed\": false,\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"collection\",\n        \"type\": \"address\",\n        \"indexed\": false,\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"tokenId\",\n        \"type\": \"uint256\",\n        \"indexed\": false,\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"_rights\",\n        \"type\": \"bytes32\",\n        \"indexed\": false,\n        \"internalType\": \"bytes32\"\n      }\n    ],\n    \"anonymous\": false\n  },\n  {\n    \"type\": \"event\",\n    \"name\": \"TransferOwnerRequested\",\n    \"inputs\": [\n      {\n        \"name\": \"newOwner\",\n        \"type\": \"address\",\n        \"indexed\": false,\n        \"internalType\": \"address\"\n      }\n    ],\n    \"anonymous\": false\n  },\n  {\n    \"type\": \"event\",\n    \"name\": \"WhitelistedCallbackContractAdded\",\n    \"inputs\": [\n      {\n        \"name\": \"contractAdded\",\n        \"type\": \"address\",\n        \"indexed\": false,\n        \"internalType\": \"address\"\n      }\n    ],\n    \"anonymous\": false\n  },\n  {\n    \"type\": \"event\",\n    \"name\": \"WhitelistedCallbackContractRemoved\",\n    \"inputs\": [\n      {\n        \"name\": \"contractRemoved\",\n        \"type\": \"address\",\n        \"indexed\": false,\n        \"internalType\": \"address\"\n      }\n    ],\n    \"anonymous\": false\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"AddressZeroError\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"CancelledOrExecutedOfferError\",\n    \"inputs\": [\n      {\n        \"name\": \"_lender\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"_offerId\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ]\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"CollectionNotWhitelistedError\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"CurrencyNotWhitelistedError\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"ECDSAInvalidSignature\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"ECDSAInvalidSignatureLength\",\n    \"inputs\": [\n      {\n        \"name\": \"length\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ]\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"ECDSAInvalidSignatureS\",\n    \"inputs\": [\n      {\n        \"name\": \"s\",\n        \"type\": \"bytes32\",\n        \"internalType\": \"bytes32\"\n      }\n    ]\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"ExpiredOfferError\",\n    \"inputs\": [\n      {\n        \"name\": \"_expirationTime\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ]\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"InvalidAddressesError\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"InvalidAmountError\",\n    \"inputs\": [\n      {\n        \"name\": \"_amount\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"_principalAmount\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ]\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"InvalidCallbackError\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"InvalidCallerError\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"InvalidCollateralError\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"InvalidCollateralIdError\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"InvalidDurationError\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"InvalidInputError\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"InvalidLoanError\",\n    \"inputs\": [\n      {\n        \"name\": \"_loanId\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ]\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"InvalidMethodError\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"InvalidParametersError\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"InvalidRenegotiationOfferError\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"InvalidSignatureError\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"InvalidTrancheError\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"LiquidatorOnlyError\",\n    \"inputs\": [\n      {\n        \"name\": \"_liquidator\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      }\n    ]\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"LoanExpiredError\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"LoanLockedError\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"LoanNotDueError\",\n    \"inputs\": [\n      {\n        \"name\": \"_expirationTime\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ]\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"MaxCapacityExceededError\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"MismatchError\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"MulticallFailed\",\n    \"inputs\": [\n      {\n        \"name\": \"i\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"returndata\",\n        \"type\": \"bytes\",\n        \"internalType\": \"bytes\"\n      }\n    ]\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"NFTNotReturnedError\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"NotStrictlyImprovedError\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"TooEarlyError\",\n    \"inputs\": [\n      {\n        \"name\": \"_pendingProtocolFeeSetTime\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ]\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"TooManyTranchesError\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"TooSoonError\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"TrancheCannotBeRefinancedError\",\n    \"inputs\": [\n      {\n        \"name\": \"minTimestamp\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ]\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"ZeroInterestError\",\n    \"inputs\": []\n  }\n] as const;\n\nexport const purchaseBundlerV2ABI = [\n        {\n            \"type\": \"constructor\",\n            \"inputs\": [\n                {\n                    \"name\": \"name\",\n                    \"type\": \"string\",\n                    \"internalType\": \"string\"\n                },\n                {\n                    \"name\": \"multiSourceLoanAddress\",\n                    \"type\": \"address\",\n                    \"internalType\": \"address\"\n                },\n                {\n                    \"name\": \"marketplaceContracts\",\n                    \"type\": \"address\",\n                    \"internalType\": \"address\"\n                },\n                {\n                    \"name\": \"wethAddress\",\n                    \"type\": \"address\",\n                    \"internalType\": \"address payable\"\n                },\n                {\n                    \"name\": \"punkMarketAddress\",\n                    \"type\": \"address\",\n                    \"internalType\": \"address payable\"\n                },\n                {\n                    \"name\": \"wrappedPunkAddress\",\n                    \"type\": \"address\",\n                    \"internalType\": \"address payable\"\n                },\n                {\n                    \"name\": \"c721Address\",\n                    \"type\": \"address\",\n                    \"internalType\": \"address payable\"\n                },\n                {\n                    \"name\": \"uniswapRouterAddress\",\n                    \"type\": \"address\",\n                    \"internalType\": \"address payable\"\n                },\n                {\n                    \"name\": \"aaveAddressProvider\",\n                    \"type\": \"address\",\n                    \"internalType\": \"address payable\"\n                },\n                {\n                    \"name\": \"permit2Address\",\n                    \"type\": \"address\",\n                    \"internalType\": \"address payable\"\n                },\n                {\n                    \"name\": \"currencyManager\",\n                    \"type\": \"address\",\n                    \"internalType\": \"address\"\n                },\n                {\n                    \"name\": \"punkTaxes\",\n                    \"type\": \"tuple\",\n                    \"internalType\": \"struct IPurchaseBundler.Taxes\",\n                    \"components\": [\n                        {\n                            \"name\": \"buyTax\",\n                            \"type\": \"uint128\",\n                            \"internalType\": \"uint128\"\n                        },\n                        {\n                            \"name\": \"sellTax\",\n                            \"type\": \"uint128\",\n                            \"internalType\": \"uint128\"\n                        }\n                    ]\n                },\n                {\n                    \"name\": \"minWaitTime\",\n                    \"type\": \"uint256\",\n                    \"internalType\": \"uint256\"\n                },\n                {\n                    \"name\": \"protocolFee\",\n                    \"type\": \"tuple\",\n                    \"internalType\": \"struct WithProtocolFee.ProtocolFee\",\n                    \"components\": [\n                        {\n                            \"name\": \"recipient\",\n                            \"type\": \"address\",\n                            \"internalType\": \"address\"\n                        },\n                        {\n                            \"name\": \"fraction\",\n                            \"type\": \"uint256\",\n                            \"internalType\": \"uint256\"\n                        }\n                    ]\n                }\n            ],\n            \"stateMutability\": \"nonpayable\"\n        },\n        {\n            \"type\": \"fallback\",\n            \"stateMutability\": \"payable\"\n        },\n        {\n            \"type\": \"receive\",\n            \"stateMutability\": \"payable\"\n        },\n        {\n            \"type\": \"function\",\n            \"name\": \"DOMAIN_SEPARATOR\",\n            \"inputs\": [],\n            \"outputs\": [\n                {\n                    \"name\": \"\",\n                    \"type\": \"bytes32\",\n                    \"internalType\": \"bytes32\"\n                }\n            ],\n            \"stateMutability\": \"view\"\n        },\n        {\n            \"type\": \"function\",\n            \"name\": \"ETH\",\n            \"inputs\": [],\n            \"outputs\": [\n                {\n                    \"name\": \"\",\n                    \"type\": \"address\",\n                    \"internalType\": \"address\"\n                }\n            ],\n            \"stateMutability\": \"view\"\n        },\n        {\n            \"type\": \"function\",\n            \"name\": \"FEE_UPDATE_NOTICE\",\n            \"inputs\": [],\n            \"outputs\": [\n                {\n                    \"name\": \"\",\n                    \"type\": \"uint256\",\n                    \"internalType\": \"uint256\"\n                }\n            ],\n            \"stateMutability\": \"view\"\n        },\n        {\n            \"type\": \"function\",\n            \"name\": \"INITIAL_DOMAIN_SEPARATOR\",\n            \"inputs\": [],\n            \"outputs\": [\n                {\n                    \"name\": \"\",\n                    \"type\": \"bytes32\",\n                    \"internalType\": \"bytes32\"\n                }\n            ],\n            \"stateMutability\": \"view\"\n        },\n        {\n            \"type\": \"function\",\n            \"name\": \"MAX_SLIPPAGE_DENOMINATOR\",\n            \"inputs\": [],\n            \"outputs\": [\n                {\n                    \"name\": \"\",\n                    \"type\": \"uint256\",\n                    \"internalType\": \"uint256\"\n                }\n            ],\n            \"stateMutability\": \"view\"\n        },\n        {\n            \"type\": \"function\",\n            \"name\": \"MIN_WAIT_TIME\",\n            \"inputs\": [],\n            \"outputs\": [\n                {\n                    \"name\": \"\",\n                    \"type\": \"uint256\",\n                    \"internalType\": \"uint256\"\n                }\n            ],\n            \"stateMutability\": \"view\"\n        },\n        {\n            \"type\": \"function\",\n            \"name\": \"VERSION\",\n            \"inputs\": [],\n            \"outputs\": [\n                {\n                    \"name\": \"\",\n                    \"type\": \"bytes\",\n                    \"internalType\": \"bytes\"\n                }\n            ],\n            \"stateMutability\": \"view\"\n        },\n        {\n            \"type\": \"function\",\n            \"name\": \"afterNFTTransfer\",\n            \"inputs\": [\n                {\n                    \"name\": \"_loan\",\n                    \"type\": \"tuple\",\n                    \"internalType\": \"struct IMultiSourceLoan.Loan\",\n                    \"components\": [\n                        {\n                            \"name\": \"borrower\",\n                            \"type\": \"address\",\n                            \"internalType\": \"address\"\n                        },\n                        {\n                            \"name\": \"nftCollateralTokenId\",\n                            \"type\": \"uint256\",\n                            \"internalType\": \"uint256\"\n                        },\n                        {\n                            \"name\": \"nftCollateralAddress\",\n                            \"type\": \"address\",\n                            \"internalType\": \"address\"\n                        },\n                        {\n                            \"name\": \"principalAddress\",\n                            \"type\": \"address\",\n                            \"internalType\": \"address\"\n                        },\n                        {\n                            \"name\": \"principalAmount\",\n                            \"type\": \"uint256\",\n                            \"internalType\": \"uint256\"\n                        },\n                        {\n                            \"name\": \"startTime\",\n                            \"type\": \"uint256\",\n                            \"internalType\": \"uint256\"\n                        },\n                        {\n                            \"name\": \"duration\",\n                            \"type\": \"uint256\",\n                            \"internalType\": \"uint256\"\n                        },\n                        {\n                            \"name\": \"tranche\",\n                            \"type\": \"tuple[]\",\n                            \"internalType\": \"struct IMultiSourceLoan.Tranche[]\",\n                            \"components\": [\n                                {\n                                    \"name\": \"loanId\",\n                                    \"type\": \"uint256\",\n                                    \"internalType\": \"uint256\"\n                                },\n                                {\n                                    \"name\": \"floor\",\n                                    \"type\": \"uint256\",\n                                    \"internalType\": \"uint256\"\n                                },\n                                {\n                                    \"name\": \"principalAmount\",\n                                    \"type\": \"uint256\",\n                                    \"internalType\": \"uint256\"\n                                },\n                                {\n                                    \"name\": \"lender\",\n                                    \"type\": \"address\",\n                                    \"internalType\": \"address\"\n                                },\n                                {\n                                    \"name\": \"accruedInterest\",\n                                    \"type\": \"uint256\",\n                                    \"internalType\": \"uint256\"\n                                },\n                                {\n                                    \"name\": \"startTime\",\n                                    \"type\": \"uint256\",\n                                    \"internalType\": \"uint256\"\n                                },\n                                {\n                                    \"name\": \"aprBps\",\n                                    \"type\": \"uint256\",\n                                    \"internalType\": \"uint256\"\n                                }\n                            ]\n                        },\n                        {\n                            \"name\": \"protocolFee\",\n                            \"type\": \"uint256\",\n                            \"internalType\": \"uint256\"\n                        }\n                    ]\n                },\n                {\n                    \"name\": \"_executionData\",\n                    \"type\": \"bytes\",\n                    \"internalType\": \"bytes\"\n                }\n            ],\n            \"outputs\": [\n                {\n                    \"name\": \"\",\n                    \"type\": \"bytes4\",\n                    \"internalType\": \"bytes4\"\n                }\n            ],\n            \"stateMutability\": \"nonpayable\"\n        },\n        {\n            \"type\": \"function\",\n            \"name\": \"afterPrincipalTransfer\",\n            \"inputs\": [\n                {\n                    \"name\": \"_loan\",\n                    \"type\": \"tuple\",\n                    \"internalType\": \"struct IMultiSourceLoan.Loan\",\n                    \"components\": [\n                        {\n                            \"name\": \"borrower\",\n                            \"type\": \"address\",\n                            \"internalType\": \"address\"\n                        },\n                        {\n                            \"name\": \"nftCollateralTokenId\",\n                            \"type\": \"uint256\",\n                            \"internalType\": \"uint256\"\n                        },\n                        {\n                            \"name\": \"nftCollateralAddress\",\n                            \"type\": \"address\",\n                            \"internalType\": \"address\"\n                        },\n                        {\n                            \"name\": \"principalAddress\",\n                            \"type\": \"address\",\n                            \"internalType\": \"address\"\n                        },\n                        {\n                            \"name\": \"principalAmount\",\n                            \"type\": \"uint256\",\n                            \"internalType\": \"uint256\"\n                        },\n                        {\n                            \"name\": \"startTime\",\n                            \"type\": \"uint256\",\n                            \"internalType\": \"uint256\"\n                        },\n                        {\n                            \"name\": \"duration\",\n                            \"type\": \"uint256\",\n                            \"internalType\": \"uint256\"\n                        },\n                        {\n                            \"name\": \"tranche\",\n                            \"type\": \"tuple[]\",\n                            \"internalType\": \"struct IMultiSourceLoan.Tranche[]\",\n                            \"components\": [\n                                {\n                                    \"name\": \"loanId\",\n                                    \"type\": \"uint256\",\n                                    \"internalType\": \"uint256\"\n                                },\n                                {\n                                    \"name\": \"floor\",\n                                    \"type\": \"uint256\",\n                                    \"internalType\": \"uint256\"\n                                },\n                                {\n                                    \"name\": \"principalAmount\",\n                                    \"type\": \"uint256\",\n                                    \"internalType\": \"uint256\"\n                                },\n                                {\n                                    \"name\": \"lender\",\n                                    \"type\": \"address\",\n                                    \"internalType\": \"address\"\n                                },\n                                {\n                                    \"name\": \"accruedInterest\",\n                                    \"type\": \"uint256\",\n                                    \"internalType\": \"uint256\"\n                                },\n                                {\n                                    \"name\": \"startTime\",\n                                    \"type\": \"uint256\",\n                                    \"internalType\": \"uint256\"\n                                },\n                                {\n                                    \"name\": \"aprBps\",\n                                    \"type\": \"uint256\",\n                                    \"internalType\": \"uint256\"\n                                }\n                            ]\n                        },\n                        {\n                            \"name\": \"protocolFee\",\n                            \"type\": \"uint256\",\n                            \"internalType\": \"uint256\"\n                        }\n                    ]\n                },\n                {\n                    \"name\": \"_fee\",\n                    \"type\": \"uint256\",\n                    \"internalType\": \"uint256\"\n                },\n                {\n                    \"name\": \"_executionData\",\n                    \"type\": \"bytes\",\n                    \"internalType\": \"bytes\"\n                }\n            ],\n            \"outputs\": [\n                {\n                    \"name\": \"\",\n                    \"type\": \"bytes4\",\n                    \"internalType\": \"bytes4\"\n                }\n            ],\n            \"stateMutability\": \"nonpayable\"\n        },\n        {\n            \"type\": \"function\",\n            \"name\": \"approveForSwap\",\n            \"inputs\": [\n                {\n                    \"name\": \"currency\",\n                    \"type\": \"address\",\n                    \"internalType\": \"address\"\n                }\n            ],\n            \"outputs\": [],\n            \"stateMutability\": \"nonpayable\"\n        },\n        {\n            \"type\": \"function\",\n            \"name\": \"buy\",\n            \"inputs\": [\n                {\n                    \"name\": \"executionData\",\n                    \"type\": \"bytes[]\",\n                    \"internalType\": \"bytes[]\"\n                }\n            ],\n            \"outputs\": [\n                {\n                    \"name\": \"loanIds\",\n                    \"type\": \"uint256[]\",\n                    \"internalType\": \"uint256[]\"\n                }\n            ],\n            \"stateMutability\": \"payable\"\n        },\n        {\n            \"type\": \"function\",\n            \"name\": \"cancelAllOrders\",\n            \"inputs\": [\n                {\n                    \"name\": \"nonce\",\n                    \"type\": \"uint256\",\n                    \"internalType\": \"uint256\"\n                }\n            ],\n            \"outputs\": [],\n            \"stateMutability\": \"nonpayable\"\n        },\n        {\n            \"type\": \"function\",\n            \"name\": \"cancelOrder\",\n            \"inputs\": [\n                {\n                    \"name\": \"nonce\",\n                    \"type\": \"uint256\",\n                    \"internalType\": \"uint256\"\n                }\n            ],\n            \"outputs\": [],\n            \"stateMutability\": \"nonpayable\"\n        },\n        {\n            \"type\": \"function\",\n            \"name\": \"cancelled\",\n            \"inputs\": [\n                {\n                    \"name\": \"\",\n                    \"type\": \"address\",\n                    \"internalType\": \"address\"\n                },\n                {\n                    \"name\": \"\",\n                    \"type\": \"uint256\",\n                    \"internalType\": \"uint256\"\n                }\n            ],\n            \"outputs\": [\n                {\n                    \"name\": \"\",\n                    \"type\": \"bool\",\n                    \"internalType\": \"bool\"\n                }\n            ],\n            \"stateMutability\": \"view\"\n        },\n        {\n            \"type\": \"function\",\n            \"name\": \"executeOperation\",\n            \"inputs\": [\n                {\n                    \"name\": \"assets\",\n                    \"type\": \"address[]\",\n                    \"internalType\": \"address[]\"\n                },\n                {\n                    \"name\": \"amounts\",\n                    \"type\": \"uint256[]\",\n                    \"internalType\": \"uint256[]\"\n                },\n                {\n                    \"name\": \"premiums\",\n                    \"type\": \"uint256[]\",\n                    \"internalType\": \"uint256[]\"\n                },\n                {\n                    \"name\": \"initiator\",\n                    \"type\": \"address\",\n                    \"internalType\": \"address\"\n                },\n                {\n                    \"name\": \"params\",\n                    \"type\": \"bytes\",\n                    \"internalType\": \"bytes\"\n                }\n            ],\n            \"outputs\": [\n                {\n                    \"name\": \"\",\n                    \"type\": \"bool\",\n                    \"internalType\": \"bool\"\n                }\n            ],\n            \"stateMutability\": \"nonpayable\"\n        },\n        {\n            \"type\": \"function\",\n            \"name\": \"executeOrder\",\n            \"inputs\": [\n                {\n                    \"name\": \"order\",\n                    \"type\": \"tuple\",\n                    \"internalType\": \"struct ITradeMarketplace.Order\",\n                    \"components\": [\n                        {\n                            \"name\": \"maker\",\n                            \"type\": \"address\",\n                            \"internalType\": \"address\"\n                        },\n                        {\n                            \"name\": \"taker\",\n                            \"type\": \"address\",\n                            \"internalType\": \"address\"\n                        },\n                        {\n                            \"name\": \"collection\",\n                            \"type\": \"address\",\n                            \"internalType\": \"address\"\n                        },\n                        {\n                            \"name\": \"tokenId\",\n                            \"type\": \"uint256\",\n                            \"internalType\": \"uint256\"\n                        },\n                        {\n                            \"name\": \"currency\",\n                            \"type\": \"address\",\n                            \"internalType\": \"address\"\n                        },\n                        {\n                            \"name\": \"price\",\n                            \"type\": \"uint256\",\n                            \"internalType\": \"uint256\"\n                        },\n                        {\n                            \"name\": \"nonce\",\n                            \"type\": \"uint256\",\n                            \"internalType\": \"uint256\"\n                        },\n                        {\n                            \"name\": \"expiration\",\n                            \"type\": \"uint256\",\n                            \"internalType\": \"uint256\"\n                        },\n                        {\n                            \"name\": \"isAsk\",\n                            \"type\": \"bool\",\n                            \"internalType\": \"bool\"\n                        },\n                        {\n                            \"name\": \"signature\",\n                            \"type\": \"bytes\",\n                            \"internalType\": \"bytes\"\n                        }\n                    ]\n                }\n            ],\n            \"outputs\": [],\n            \"stateMutability\": \"nonpayable\"\n        },\n        {\n            \"type\": \"function\",\n            \"name\": \"executeSell\",\n            \"inputs\": [\n                {\n                    \"name\": \"currencies\",\n                    \"type\": \"address[]\",\n                    \"internalType\": \"address[]\"\n                },\n                {\n                    \"name\": \"currencyAmounts\",\n                    \"type\": \"uint256[]\",\n                    \"internalType\": \"uint256[]\"\n                },\n                {\n                    \"name\": \"collections\",\n                    \"type\": \"address[]\",\n                    \"internalType\": \"contract ERC721[]\"\n                },\n                {\n                    \"name\": \"tokenIds\",\n                    \"type\": \"uint256[]\",\n                    \"internalType\": \"uint256[]\"\n                },\n                {\n                    \"name\": \"marketPlace\",\n                    \"type\": \"address\",\n                    \"internalType\": \"address\"\n                },\n                {\n                    \"name\": \"executionData\",\n                    \"type\": \"bytes[]\",\n                    \"internalType\": \"bytes[]\"\n                },\n                {\n                    \"name\": \"swapData\",\n                    \"type\": \"bytes[]\",\n                    \"internalType\": \"bytes[]\"\n                }\n            ],\n            \"outputs\": [],\n            \"stateMutability\": \"payable\"\n        },\n        {\n            \"type\": \"function\",\n            \"name\": \"executeSellWithLoan\",\n            \"inputs\": [\n                {\n                    \"name\": \"args\",\n                    \"type\": \"tuple\",\n                    \"internalType\": \"struct IPurchaseBundler.ExecuteSellWithLoanArgs\",\n                    \"components\": [\n                        {\n                            \"name\": \"borrowArgs\",\n                            \"type\": \"tuple\",\n                            \"internalType\": \"struct IPurchaseBundler.AaveBorrowArgs\",\n                            \"components\": [\n                                {\n                                    \"name\": \"pool\",\n                                    \"type\": \"address\",\n                                    \"internalType\": \"contract IPool\"\n                                },\n                                {\n                                    \"name\": \"assets\",\n                                    \"type\": \"address[]\",\n                                    \"internalType\": \"address[]\"\n                                },\n                                {\n                                    \"name\": \"amounts\",\n                                    \"type\": \"uint256[]\",\n                                    \"internalType\": \"uint256[]\"\n                                }\n                            ]\n                        },\n                        {\n                            \"name\": \"executeSellArgs\",\n                            \"type\": \"tuple\",\n                            \"internalType\": \"struct IPurchaseBundler.ExecuteSellArgs\",\n                            \"components\": [\n                                {\n                                    \"name\": \"currencies\",\n                                    \"type\": \"address[]\",\n                                    \"internalType\": \"address[]\"\n                                },\n                                {\n                                    \"name\": \"currencyAmounts\",\n                                    \"type\": \"uint256[]\",\n                                    \"internalType\": \"uint256[]\"\n                                },\n                                {\n                                    \"name\": \"collections\",\n                                    \"type\": \"address[]\",\n                                    \"internalType\": \"contract ERC721[]\"\n                                },\n                                {\n                                    \"name\": \"tokenIds\",\n                                    \"type\": \"uint256[]\",\n                                    \"internalType\": \"uint256[]\"\n                                },\n                                {\n                                    \"name\": \"marketPlace\",\n                                    \"type\": \"address\",\n                                    \"internalType\": \"address\"\n                                },\n                                {\n                                    \"name\": \"executionData\",\n                                    \"type\": \"bytes[]\",\n                                    \"internalType\": \"bytes[]\"\n                                },\n                                {\n                                    \"name\": \"swapData\",\n                                    \"type\": \"bytes[]\",\n                                    \"internalType\": \"bytes[]\"\n                                }\n                            ]\n                        },\n                        {\n                            \"name\": \"loanExecutionData\",\n                            \"type\": \"bytes[]\",\n                            \"internalType\": \"bytes[]\"\n                        },\n                        {\n                            \"name\": \"swapCurrencies\",\n                            \"type\": \"address[]\",\n                            \"internalType\": \"contract ERC20[]\"\n                        },\n                        {\n                            \"name\": \"swapAmounts\",\n                            \"type\": \"uint160[]\",\n                            \"internalType\": \"uint160[]\"\n                        },\n                        {\n                            \"name\": \"swapData\",\n                            \"type\": \"bytes[]\",\n                            \"internalType\": \"bytes[]\"\n                        },\n                        {\n                            \"name\": \"unwrap\",\n                            \"type\": \"bool\",\n                            \"internalType\": \"bool\"\n                        }\n                    ]\n                }\n            ],\n            \"outputs\": [],\n            \"stateMutability\": \"payable\"\n        },\n        {\n            \"type\": \"function\",\n            \"name\": \"getMultiSourceLoanAddress\",\n            \"inputs\": [],\n            \"outputs\": [\n                {\n                    \"name\": \"\",\n                    \"type\": \"address\",\n                    \"internalType\": \"address\"\n                }\n            ],\n            \"stateMutability\": \"view\"\n        },\n        {\n            \"type\": \"function\",\n            \"name\": \"getPendingProtocolFee\",\n            \"inputs\": [],\n            \"outputs\": [\n                {\n                    \"name\": \"\",\n                    \"type\": \"tuple\",\n                    \"internalType\": \"struct WithProtocolFee.ProtocolFee\",\n                    \"components\": [\n                        {\n                            \"name\": \"recipient\",\n                            \"type\": \"address\",\n                            \"internalType\": \"address\"\n                        },\n                        {\n                            \"name\": \"fraction\",\n                            \"type\": \"uint256\",\n                            \"internalType\": \"uint256\"\n                        }\n                    ]\n                }\n            ],\n            \"stateMutability\": \"view\"\n        },\n        {\n            \"type\": \"function\",\n            \"name\": \"getPendingProtocolFeeSetTime\",\n            \"inputs\": [],\n            \"outputs\": [\n                {\n                    \"name\": \"\",\n                    \"type\": \"uint256\",\n                    \"internalType\": \"uint256\"\n                }\n            ],\n            \"stateMutability\": \"view\"\n        },\n        {\n            \"type\": \"function\",\n            \"name\": \"getPendingTaxes\",\n            \"inputs\": [\n                {\n                    \"name\": \"module\",\n                    \"type\": \"address\",\n                    \"internalType\": \"address\"\n                }\n            ],\n            \"outputs\": [\n                {\n                    \"name\": \"\",\n                    \"type\": \"tuple\",\n                    \"internalType\": \"struct IPurchaseBundler.Taxes\",\n                    \"components\": [\n                        {\n                            \"name\": \"buyTax\",\n                            \"type\": \"uint128\",\n                            \"internalType\": \"uint128\"\n                        },\n                        {\n                            \"name\": \"sellTax\",\n                            \"type\": \"uint128\",\n                            \"internalType\": \"uint128\"\n                        }\n                    ]\n                }\n            ],\n            \"stateMutability\": \"view\"\n        },\n        {\n            \"type\": \"function\",\n            \"name\": \"getPendingTaxesSetTime\",\n            \"inputs\": [\n                {\n                    \"name\": \"module\",\n                    \"type\": \"address\",\n                    \"internalType\": \"address\"\n                }\n            ],\n            \"outputs\": [\n                {\n                    \"name\": \"\",\n                    \"type\": \"uint256\",\n                    \"internalType\": \"uint256\"\n                }\n            ],\n            \"stateMutability\": \"view\"\n        },\n        {\n            \"type\": \"function\",\n            \"name\": \"getProtocolFee\",\n            \"inputs\": [],\n            \"outputs\": [\n                {\n                    \"name\": \"\",\n                    \"type\": \"tuple\",\n                    \"internalType\": \"struct WithProtocolFee.ProtocolFee\",\n                    \"components\": [\n                        {\n                            \"name\": \"recipient\",\n                            \"type\": \"address\",\n                            \"internalType\": \"address\"\n                        },\n                        {\n                            \"name\": \"fraction\",\n                            \"type\": \"uint256\",\n                            \"internalType\": \"uint256\"\n                        }\n                    ]\n                }\n            ],\n            \"stateMutability\": \"view\"\n        },\n        {\n            \"type\": \"function\",\n            \"name\": \"getTaxes\",\n            \"inputs\": [\n                {\n                    \"name\": \"module\",\n                    \"type\": \"address\",\n                    \"internalType\": \"address\"\n                }\n            ],\n            \"outputs\": [\n                {\n                    \"name\": \"\",\n                    \"type\": \"tuple\",\n                    \"internalType\": \"struct IPurchaseBundler.Taxes\",\n                    \"components\": [\n                        {\n                            \"name\": \"buyTax\",\n                            \"type\": \"uint128\",\n                            \"internalType\": \"uint128\"\n                        },\n                        {\n                            \"name\": \"sellTax\",\n                            \"type\": \"uint128\",\n                            \"internalType\": \"uint128\"\n                        }\n                    ]\n                }\n            ],\n            \"stateMutability\": \"view\"\n        },\n        {\n            \"type\": \"function\",\n            \"name\": \"isOrderCancelled\",\n            \"inputs\": [\n                {\n                    \"name\": \"order\",\n                    \"type\": \"tuple\",\n                    \"internalType\": \"struct ITradeMarketplace.Order\",\n                    \"components\": [\n                        {\n                            \"name\": \"maker\",\n                            \"type\": \"address\",\n                            \"internalType\": \"address\"\n                        },\n                        {\n                            \"name\": \"taker\",\n                            \"type\": \"address\",\n                            \"internalType\": \"address\"\n                        },\n                        {\n                            \"name\": \"collection\",\n                            \"type\": \"address\",\n                            \"internalType\": \"address\"\n                        },\n                        {\n                            \"name\": \"tokenId\",\n                            \"type\": \"uint256\",\n                            \"internalType\": \"uint256\"\n                        },\n                        {\n                            \"name\": \"currency\",\n                            \"type\": \"address\",\n                            \"internalType\": \"address\"\n                        },\n                        {\n                            \"name\": \"price\",\n                            \"type\": \"uint256\",\n                            \"internalType\": \"uint256\"\n                        },\n                        {\n                            \"name\": \"nonce\",\n                            \"type\": \"uint256\",\n                            \"internalType\": \"uint256\"\n                        },\n                        {\n                            \"name\": \"expiration\",\n                            \"type\": \"uint256\",\n                            \"internalType\": \"uint256\"\n                        },\n                        {\n                            \"name\": \"isAsk\",\n                            \"type\": \"bool\",\n                            \"internalType\": \"bool\"\n                        },\n                        {\n                            \"name\": \"signature\",\n                            \"type\": \"bytes\",\n                            \"internalType\": \"bytes\"\n                        }\n                    ]\n                }\n            ],\n            \"outputs\": [\n                {\n                    \"name\": \"\",\n                    \"type\": \"bool\",\n                    \"internalType\": \"bool\"\n                }\n            ],\n            \"stateMutability\": \"view\"\n        },\n        {\n            \"type\": \"function\",\n            \"name\": \"minNonce\",\n            \"inputs\": [\n                {\n                    \"name\": \"\",\n                    \"type\": \"address\",\n                    \"internalType\": \"address\"\n                }\n            ],\n            \"outputs\": [\n                {\n                    \"name\": \"\",\n                    \"type\": \"uint256\",\n                    \"internalType\": \"uint256\"\n                }\n            ],\n            \"stateMutability\": \"view\"\n        },\n        {\n            \"type\": \"function\",\n            \"name\": \"multicall\",\n            \"inputs\": [\n                {\n                    \"name\": \"data\",\n                    \"type\": \"bytes[]\",\n                    \"internalType\": \"bytes[]\"\n                }\n            ],\n            \"outputs\": [\n                {\n                    \"name\": \"results\",\n                    \"type\": \"bytes[]\",\n                    \"internalType\": \"bytes[]\"\n                }\n            ],\n            \"stateMutability\": \"payable\"\n        },\n        {\n            \"type\": \"function\",\n            \"name\": \"name\",\n            \"inputs\": [],\n            \"outputs\": [\n                {\n                    \"name\": \"\",\n                    \"type\": \"string\",\n                    \"internalType\": \"string\"\n                }\n            ],\n            \"stateMutability\": \"view\"\n        },\n        {\n            \"type\": \"function\",\n            \"name\": \"onERC721Received\",\n            \"inputs\": [\n                {\n                    \"name\": \"\",\n                    \"type\": \"address\",\n                    \"internalType\": \"address\"\n                },\n                {\n                    \"name\": \"\",\n                    \"type\": \"address\",\n                    \"internalType\": \"address\"\n                },\n                {\n                    \"name\": \"\",\n                    \"type\": \"uint256\",\n                    \"internalType\": \"uint256\"\n                },\n                {\n                    \"name\": \"\",\n                    \"type\": \"bytes\",\n                    \"internalType\": \"bytes\"\n                }\n            ],\n            \"outputs\": [\n                {\n                    \"name\": \"\",\n                    \"type\": \"bytes4\",\n                    \"internalType\": \"bytes4\"\n                }\n            ],\n            \"stateMutability\": \"nonpayable\"\n        },\n        {\n            \"type\": \"function\",\n            \"name\": \"orderHash\",\n            \"inputs\": [\n                {\n                    \"name\": \"order\",\n                    \"type\": \"tuple\",\n                    \"internalType\": \"struct ITradeMarketplace.Order\",\n                    \"components\": [\n                        {\n                            \"name\": \"maker\",\n                            \"type\": \"address\",\n                            \"internalType\": \"address\"\n                        },\n                        {\n                            \"name\": \"taker\",\n                            \"type\": \"address\",\n                            \"internalType\": \"address\"\n                        },\n                        {\n                            \"name\": \"collection\",\n                            \"type\": \"address\",\n                            \"internalType\": \"address\"\n                        },\n                        {\n                            \"name\": \"tokenId\",\n                            \"type\": \"uint256\",\n                            \"internalType\": \"uint256\"\n                        },\n                        {\n                            \"name\": \"currency\",\n                            \"type\": \"address\",\n                            \"internalType\": \"address\"\n                        },\n                        {\n                            \"name\": \"price\",\n                            \"type\": \"uint256\",\n                            \"internalType\": \"uint256\"\n                        },\n                        {\n                            \"name\": \"nonce\",\n                            \"type\": \"uint256\",\n                            \"internalType\": \"uint256\"\n                        },\n                        {\n                            \"name\": \"expiration\",\n                            \"type\": \"uint256\",\n                            \"internalType\": \"uint256\"\n                        },\n                        {\n                            \"name\": \"isAsk\",\n                            \"type\": \"bool\",\n                            \"internalType\": \"bool\"\n                        },\n                        {\n                            \"name\": \"signature\",\n                            \"type\": \"bytes\",\n                            \"internalType\": \"bytes\"\n                        }\n                    ]\n                }\n            ],\n            \"outputs\": [\n                {\n                    \"name\": \"\",\n                    \"type\": \"bytes32\",\n                    \"internalType\": \"bytes32\"\n                }\n            ],\n            \"stateMutability\": \"pure\"\n        },\n        {\n            \"type\": \"function\",\n            \"name\": \"owner\",\n            \"inputs\": [],\n            \"outputs\": [\n                {\n                    \"name\": \"\",\n                    \"type\": \"address\",\n                    \"internalType\": \"address\"\n                }\n            ],\n            \"stateMutability\": \"view\"\n        },\n        {\n            \"type\": \"function\",\n            \"name\": \"pendingOwner\",\n            \"inputs\": [],\n            \"outputs\": [\n                {\n                    \"name\": \"\",\n                    \"type\": \"address\",\n                    \"internalType\": \"address\"\n                }\n            ],\n            \"stateMutability\": \"view\"\n        },\n        {\n            \"type\": \"function\",\n            \"name\": \"pendingOwnerTime\",\n            \"inputs\": [],\n            \"outputs\": [\n                {\n                    \"name\": \"\",\n                    \"type\": \"uint256\",\n                    \"internalType\": \"uint256\"\n                }\n            ],\n            \"stateMutability\": \"view\"\n        },\n        {\n            \"type\": \"function\",\n            \"name\": \"requestTransferOwner\",\n            \"inputs\": [\n                {\n                    \"name\": \"_newOwner\",\n                    \"type\": \"address\",\n                    \"internalType\": \"address\"\n                }\n            ],\n            \"outputs\": [],\n            \"stateMutability\": \"nonpayable\"\n        },\n        {\n            \"type\": \"function\",\n            \"name\": \"sell\",\n            \"inputs\": [\n                {\n                    \"name\": \"executionData\",\n                    \"type\": \"bytes[]\",\n                    \"internalType\": \"bytes[]\"\n                },\n                {\n                    \"name\": \"swapData\",\n                    \"type\": \"bytes[]\",\n                    \"internalType\": \"bytes[]\"\n                }\n            ],\n            \"outputs\": [],\n            \"stateMutability\": \"nonpayable\"\n        },\n        {\n            \"type\": \"function\",\n            \"name\": \"setProtocolFee\",\n            \"inputs\": [],\n            \"outputs\": [],\n            \"stateMutability\": \"nonpayable\"\n        },\n        {\n            \"type\": \"function\",\n            \"name\": \"setTaxes\",\n            \"inputs\": [\n                {\n                    \"name\": \"module\",\n                    \"type\": \"address\",\n                    \"internalType\": \"address\"\n                }\n            ],\n            \"outputs\": [],\n            \"stateMutability\": \"nonpayable\"\n        },\n        {\n            \"type\": \"function\",\n            \"name\": \"swapAndExecute\",\n            \"inputs\": [\n                {\n                    \"name\": \"args\",\n                    \"type\": \"tuple\",\n                    \"internalType\": \"struct IPurchaseBundler.SwapAndExecuteParams\",\n                    \"components\": [\n                        {\n                            \"name\": \"inputCurrencies\",\n                            \"type\": \"address[]\",\n                            \"internalType\": \"address[]\"\n                        },\n                        {\n                            \"name\": \"outputCurrencies\",\n                            \"type\": \"address[]\",\n                            \"internalType\": \"address[]\"\n                        },\n                        {\n                            \"name\": \"amountsToSwap\",\n                            \"type\": \"uint256[]\",\n                            \"internalType\": \"uint256[]\"\n                        },\n                        {\n                            \"name\": \"swapData\",\n                            \"type\": \"bytes\",\n                            \"internalType\": \"bytes\"\n                        },\n                        {\n                            \"name\": \"target\",\n                            \"type\": \"address\",\n                            \"internalType\": \"address\"\n                        },\n                        {\n                            \"name\": \"executionCalldata\",\n                            \"type\": \"bytes\",\n                            \"internalType\": \"bytes\"\n                        },\n                        {\n                            \"name\": \"executionValue\",\n                            \"type\": \"uint256\",\n                            \"internalType\": \"uint256\"\n                        }\n                    ]\n                }\n            ],\n            \"outputs\": [],\n            \"stateMutability\": \"payable\"\n        },\n        {\n            \"type\": \"function\",\n            \"name\": \"transferOwnership\",\n            \"inputs\": [],\n            \"outputs\": [],\n            \"stateMutability\": \"nonpayable\"\n        },\n        {\n            \"type\": \"function\",\n            \"name\": \"transferOwnership\",\n            \"inputs\": [\n                {\n                    \"name\": \"newOwner\",\n                    \"type\": \"address\",\n                    \"internalType\": \"address\"\n                }\n            ],\n            \"outputs\": [],\n            \"stateMutability\": \"nonpayable\"\n        },\n        {\n            \"type\": \"function\",\n            \"name\": \"updateProtocolFee\",\n            \"inputs\": [\n                {\n                    \"name\": \"_newProtocolFee\",\n                    \"type\": \"tuple\",\n                    \"internalType\": \"struct WithProtocolFee.ProtocolFee\",\n                    \"components\": [\n                        {\n                            \"name\": \"recipient\",\n                            \"type\": \"address\",\n                            \"internalType\": \"address\"\n                        },\n                        {\n                            \"name\": \"fraction\",\n                            \"type\": \"uint256\",\n                            \"internalType\": \"uint256\"\n                        }\n                    ]\n                }\n            ],\n            \"outputs\": [],\n            \"stateMutability\": \"nonpayable\"\n        },\n        {\n            \"type\": \"function\",\n            \"name\": \"updateTaxes\",\n            \"inputs\": [\n                {\n                    \"name\": \"module\",\n                    \"type\": \"address\",\n                    \"internalType\": \"address\"\n                },\n                {\n                    \"name\": \"newTax\",\n                    \"type\": \"tuple\",\n                    \"internalType\": \"struct IPurchaseBundler.Taxes\",\n                    \"components\": [\n                        {\n                            \"name\": \"buyTax\",\n                            \"type\": \"uint128\",\n                            \"internalType\": \"uint128\"\n                        },\n                        {\n                            \"name\": \"sellTax\",\n                            \"type\": \"uint128\",\n                            \"internalType\": \"uint128\"\n                        }\n                    ]\n                }\n            ],\n            \"outputs\": [],\n            \"stateMutability\": \"nonpayable\"\n        },\n        {\n            \"type\": \"event\",\n            \"name\": \"AllOrdersCancelled\",\n            \"inputs\": [\n                {\n                    \"name\": \"user\",\n                    \"type\": \"address\",\n                    \"indexed\": true,\n                    \"internalType\": \"address\"\n                },\n                {\n                    \"name\": \"nonce\",\n                    \"type\": \"uint256\",\n                    \"indexed\": false,\n                    \"internalType\": \"uint256\"\n                }\n            ],\n            \"anonymous\": false\n        },\n        {\n            \"type\": \"event\",\n            \"name\": \"BNPLLoansStarted\",\n            \"inputs\": [\n                {\n                    \"name\": \"loanIds\",\n                    \"type\": \"uint256[]\",\n                    \"indexed\": false,\n                    \"internalType\": \"uint256[]\"\n                }\n            ],\n            \"anonymous\": false\n        },\n        {\n            \"type\": \"event\",\n            \"name\": \"OrderExecuted\",\n            \"inputs\": [\n                {\n                    \"name\": \"maker\",\n                    \"type\": \"address\",\n                    \"indexed\": true,\n                    \"internalType\": \"address\"\n                },\n                {\n                    \"name\": \"taker\",\n                    \"type\": \"address\",\n                    \"indexed\": true,\n                    \"internalType\": \"address\"\n                },\n                {\n                    \"name\": \"collection\",\n                    \"type\": \"address\",\n                    \"indexed\": true,\n                    \"internalType\": \"address\"\n                },\n                {\n                    \"name\": \"tokenId\",\n                    \"type\": \"uint256\",\n                    \"indexed\": false,\n                    \"internalType\": \"uint256\"\n                },\n                {\n                    \"name\": \"currency\",\n                    \"type\": \"address\",\n                    \"indexed\": false,\n                    \"internalType\": \"address\"\n                },\n                {\n                    \"name\": \"price\",\n                    \"type\": \"uint256\",\n                    \"indexed\": false,\n                    \"internalType\": \"uint256\"\n                },\n                {\n                    \"name\": \"nonce\",\n                    \"type\": \"uint256\",\n                    \"indexed\": false,\n                    \"internalType\": \"uint256\"\n                },\n                {\n                    \"name\": \"expiration\",\n                    \"type\": \"uint256\",\n                    \"indexed\": false,\n                    \"internalType\": \"uint256\"\n                },\n                {\n                    \"name\": \"isAsk\",\n                    \"type\": \"bool\",\n                    \"indexed\": false,\n                    \"internalType\": \"bool\"\n                }\n            ],\n            \"anonymous\": false\n        },\n        {\n            \"type\": \"event\",\n            \"name\": \"OwnershipTransferred\",\n            \"inputs\": [\n                {\n                    \"name\": \"user\",\n                    \"type\": \"address\",\n                    \"indexed\": true,\n                    \"internalType\": \"address\"\n                },\n                {\n                    \"name\": \"newOwner\",\n                    \"type\": \"address\",\n                    \"indexed\": true,\n                    \"internalType\": \"address\"\n                }\n            ],\n            \"anonymous\": false\n        },\n        {\n            \"type\": \"event\",\n            \"name\": \"ProtocolFeePendingUpdate\",\n            \"inputs\": [\n                {\n                    \"name\": \"fee\",\n                    \"type\": \"tuple\",\n                    \"indexed\": false,\n                    \"internalType\": \"struct WithProtocolFee.ProtocolFee\",\n                    \"components\": [\n                        {\n                            \"name\": \"recipient\",\n                            \"type\": \"address\",\n                            \"internalType\": \"address\"\n                        },\n                        {\n                            \"name\": \"fraction\",\n                            \"type\": \"uint256\",\n                            \"internalType\": \"uint256\"\n                        }\n                    ]\n                }\n            ],\n            \"anonymous\": false\n        },\n        {\n            \"type\": \"event\",\n            \"name\": \"ProtocolFeeUpdated\",\n            \"inputs\": [\n                {\n                    \"name\": \"fee\",\n                    \"type\": \"tuple\",\n                    \"indexed\": false,\n                    \"internalType\": \"struct WithProtocolFee.ProtocolFee\",\n                    \"components\": [\n                        {\n                            \"name\": \"recipient\",\n                            \"type\": \"address\",\n                            \"internalType\": \"address\"\n                        },\n                        {\n                            \"name\": \"fraction\",\n                            \"type\": \"uint256\",\n                            \"internalType\": \"uint256\"\n                        }\n                    ]\n                }\n            ],\n            \"anonymous\": false\n        },\n        {\n            \"type\": \"event\",\n            \"name\": \"SellAndRepayExecuted\",\n            \"inputs\": [\n                {\n                    \"name\": \"loanIds\",\n                    \"type\": \"uint256[]\",\n                    \"indexed\": false,\n                    \"internalType\": \"uint256[]\"\n                }\n            ],\n            \"anonymous\": false\n        },\n        {\n            \"type\": \"event\",\n            \"name\": \"TaxesPendingUpdate\",\n            \"inputs\": [\n                {\n                    \"name\": \"module\",\n                    \"type\": \"address\",\n                    \"indexed\": true,\n                    \"internalType\": \"address\"\n                },\n                {\n                    \"name\": \"newTax\",\n                    \"type\": \"tuple\",\n                    \"indexed\": false,\n                    \"internalType\": \"struct IPurchaseBundler.Taxes\",\n                    \"components\": [\n                        {\n                            \"name\": \"buyTax\",\n                            \"type\": \"uint128\",\n                            \"internalType\": \"uint128\"\n                        },\n                        {\n                            \"name\": \"sellTax\",\n                            \"type\": \"uint128\",\n                            \"internalType\": \"uint128\"\n                        }\n                    ]\n                }\n            ],\n            \"anonymous\": false\n        },\n        {\n            \"type\": \"event\",\n            \"name\": \"TaxesUpdated\",\n            \"inputs\": [\n                {\n                    \"name\": \"module\",\n                    \"type\": \"address\",\n                    \"indexed\": true,\n                    \"internalType\": \"address\"\n                },\n                {\n                    \"name\": \"newTax\",\n                    \"type\": \"tuple\",\n                    \"indexed\": false,\n                    \"internalType\": \"struct IPurchaseBundler.Taxes\",\n                    \"components\": [\n                        {\n                            \"name\": \"buyTax\",\n                            \"type\": \"uint128\",\n                            \"internalType\": \"uint128\"\n                        },\n                        {\n                            \"name\": \"sellTax\",\n                            \"type\": \"uint128\",\n                            \"internalType\": \"uint128\"\n                        }\n                    ]\n                }\n            ],\n            \"anonymous\": false\n        },\n        {\n            \"type\": \"event\",\n            \"name\": \"TransferOwnerRequested\",\n            \"inputs\": [\n                {\n                    \"name\": \"newOwner\",\n                    \"type\": \"address\",\n                    \"indexed\": false,\n                    \"internalType\": \"address\"\n                }\n            ],\n            \"anonymous\": false\n        },\n        {\n            \"type\": \"error\",\n            \"name\": \"AddressZeroError\",\n            \"inputs\": []\n        },\n        {\n            \"type\": \"error\",\n            \"name\": \"CouldNotReturnEthError\",\n            \"inputs\": []\n        },\n        {\n            \"type\": \"error\",\n            \"name\": \"CurrencyNotWhitelisted\",\n            \"inputs\": []\n        },\n        {\n            \"type\": \"error\",\n            \"name\": \"ECDSAInvalidSignature\",\n            \"inputs\": []\n        },\n        {\n            \"type\": \"error\",\n            \"name\": \"ECDSAInvalidSignatureLength\",\n            \"inputs\": [\n                {\n                    \"name\": \"length\",\n                    \"type\": \"uint256\",\n                    \"internalType\": \"uint256\"\n                }\n            ]\n        },\n        {\n            \"type\": \"error\",\n            \"name\": \"ECDSAInvalidSignatureS\",\n            \"inputs\": [\n                {\n                    \"name\": \"s\",\n                    \"type\": \"bytes32\",\n                    \"internalType\": \"bytes32\"\n                }\n            ]\n        },\n        {\n            \"type\": \"error\",\n            \"name\": \"InvalidCallbackError\",\n            \"inputs\": []\n        },\n        {\n            \"type\": \"error\",\n            \"name\": \"InvalidCollateralError\",\n            \"inputs\": []\n        },\n        {\n            \"type\": \"error\",\n            \"name\": \"InvalidCurrencyError\",\n            \"inputs\": []\n        },\n        {\n            \"type\": \"error\",\n            \"name\": \"InvalidExecutionData\",\n            \"inputs\": []\n        },\n        {\n            \"type\": \"error\",\n            \"name\": \"InvalidInputError\",\n            \"inputs\": []\n        },\n        {\n            \"type\": \"error\",\n            \"name\": \"InvalidSignature\",\n            \"inputs\": []\n        },\n        {\n            \"type\": \"error\",\n            \"name\": \"InvalidStateError\",\n            \"inputs\": []\n        },\n        {\n            \"type\": \"error\",\n            \"name\": \"InvalidSwapDataLengthError\",\n            \"inputs\": []\n        },\n        {\n            \"type\": \"error\",\n            \"name\": \"InvalidSwapError\",\n            \"inputs\": []\n        },\n        {\n            \"type\": \"error\",\n            \"name\": \"InvalidTaker\",\n            \"inputs\": []\n        },\n        {\n            \"type\": \"error\",\n            \"name\": \"InvalidTargetContractError\",\n            \"inputs\": []\n        },\n        {\n            \"type\": \"error\",\n            \"name\": \"InvalidTaxesError\",\n            \"inputs\": [\n                {\n                    \"name\": \"newTaxes\",\n                    \"type\": \"tuple\",\n                    \"internalType\": \"struct IPurchaseBundler.Taxes\",\n                    \"components\": [\n                        {\n                            \"name\": \"buyTax\",\n                            \"type\": \"uint128\",\n                            \"internalType\": \"uint128\"\n                        },\n                        {\n                            \"name\": \"sellTax\",\n                            \"type\": \"uint128\",\n                            \"internalType\": \"uint128\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"type\": \"error\",\n            \"name\": \"LowNonceError\",\n            \"inputs\": [\n                {\n                    \"name\": \"user\",\n                    \"type\": \"address\",\n                    \"internalType\": \"address\"\n                },\n                {\n                    \"name\": \"nonce\",\n                    \"type\": \"uint256\",\n                    \"internalType\": \"uint256\"\n                },\n                {\n                    \"name\": \"currentMinNonce\",\n                    \"type\": \"uint256\",\n                    \"internalType\": \"uint256\"\n                }\n            ]\n        },\n        {\n            \"type\": \"error\",\n            \"name\": \"MarketplaceAddressNotWhitelisted\",\n            \"inputs\": []\n        },\n        {\n            \"type\": \"error\",\n            \"name\": \"MulticallFailed\",\n            \"inputs\": [\n                {\n                    \"name\": \"i\",\n                    \"type\": \"uint256\",\n                    \"internalType\": \"uint256\"\n                },\n                {\n                    \"name\": \"returndata\",\n                    \"type\": \"bytes\",\n                    \"internalType\": \"bytes\"\n                }\n            ]\n        },\n        {\n            \"type\": \"error\",\n            \"name\": \"OnlyLoanCallableError\",\n            \"inputs\": []\n        },\n        {\n            \"type\": \"error\",\n            \"name\": \"OrderCancelled\",\n            \"inputs\": []\n        },\n        {\n            \"type\": \"error\",\n            \"name\": \"OrderExpired\",\n            \"inputs\": []\n        },\n        {\n            \"type\": \"error\",\n            \"name\": \"TooEarlyError\",\n            \"inputs\": [\n                {\n                    \"name\": \"_pendingProtocolFeeSetTime\",\n                    \"type\": \"uint256\",\n                    \"internalType\": \"uint256\"\n                }\n            ]\n        },\n        {\n            \"type\": \"error\",\n            \"name\": \"TooMuchSlippageError\",\n            \"inputs\": []\n        },\n        {\n            \"type\": \"error\",\n            \"name\": \"TooSoonError\",\n            \"inputs\": []\n        }\n    ] as const;\n", "export const cryptopunksABI = [\n  {\n    constant: true,\n    inputs: [],\n    name: \"name\",\n    outputs: [\n      {\n        name: \"\",\n        type: \"string\",\n      },\n    ],\n    payable: false,\n    type: \"function\",\n    stateMutability: \"view\",\n  },\n  {\n    constant: true,\n    inputs: [\n      {\n        name: \"\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"punksOfferedForSale\",\n    outputs: [\n      {\n        name: \"isForSale\",\n        type: \"bool\",\n      },\n      {\n        name: \"punkIndex\",\n        type: \"uint256\",\n      },\n      {\n        name: \"seller\",\n        type: \"address\",\n      },\n      {\n        name: \"minValue\",\n        type: \"uint256\",\n      },\n      {\n        name: \"onlySellTo\",\n        type: \"address\",\n      },\n    ],\n    payable: false,\n    type: \"function\",\n    stateMutability: \"view\",\n  },\n  {\n    constant: false,\n    inputs: [\n      {\n        name: \"punkIndex\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"enterBidForPunk\",\n    outputs: [],\n    payable: true,\n    type: \"function\",\n    stateMutability: \"payable\",\n  },\n  {\n    constant: true,\n    inputs: [],\n    name: \"totalSupply\",\n    outputs: [\n      {\n        name: \"\",\n        type: \"uint256\",\n      },\n    ],\n    payable: false,\n    type: \"function\",\n    stateMutability: \"view\",\n  },\n  {\n    constant: false,\n    inputs: [\n      {\n        name: \"punkIndex\",\n        type: \"uint256\",\n      },\n      {\n        name: \"minPrice\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"acceptBidForPunk\",\n    outputs: [],\n    payable: false,\n    type: \"function\",\n    stateMutability: \"nonpayable\",\n  },\n  {\n    constant: true,\n    inputs: [],\n    name: \"decimals\",\n    outputs: [\n      {\n        name: \"\",\n        type: \"uint8\",\n      },\n    ],\n    payable: false,\n    type: \"function\",\n    stateMutability: \"view\",\n  },\n  {\n    constant: false,\n    inputs: [\n      {\n        name: \"addresses\",\n        type: \"address[]\",\n      },\n      {\n        name: \"indices\",\n        type: \"uint256[]\",\n      },\n    ],\n    name: \"setInitialOwners\",\n    outputs: [],\n    payable: false,\n    type: \"function\",\n    stateMutability: \"nonpayable\",\n  },\n  {\n    constant: false,\n    inputs: [],\n    name: \"withdraw\",\n    outputs: [],\n    payable: false,\n    type: \"function\",\n    stateMutability: \"nonpayable\",\n  },\n  {\n    constant: true,\n    inputs: [],\n    name: \"imageHash\",\n    outputs: [\n      {\n        name: \"\",\n        type: \"string\",\n      },\n    ],\n    payable: false,\n    type: \"function\",\n    stateMutability: \"view\",\n  },\n  {\n    constant: true,\n    inputs: [],\n    name: \"nextPunkIndexToAssign\",\n    outputs: [\n      {\n        name: \"\",\n        type: \"uint256\",\n      },\n    ],\n    payable: false,\n    type: \"function\",\n    stateMutability: \"view\",\n  },\n  {\n    constant: true,\n    inputs: [\n      {\n        name: \"\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"punkIndexToAddress\",\n    outputs: [\n      {\n        name: \"\",\n        type: \"address\",\n      },\n    ],\n    payable: false,\n    type: \"function\",\n    stateMutability: \"view\",\n  },\n  {\n    constant: true,\n    inputs: [],\n    name: \"standard\",\n    outputs: [\n      {\n        name: \"\",\n        type: \"string\",\n      },\n    ],\n    payable: false,\n    type: \"function\",\n    stateMutability: \"view\",\n  },\n  {\n    constant: true,\n    inputs: [\n      {\n        name: \"\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"punkBids\",\n    outputs: [\n      {\n        name: \"hasBid\",\n        type: \"bool\",\n      },\n      {\n        name: \"punkIndex\",\n        type: \"uint256\",\n      },\n      {\n        name: \"bidder\",\n        type: \"address\",\n      },\n      {\n        name: \"value\",\n        type: \"uint256\",\n      },\n    ],\n    payable: false,\n    type: \"function\",\n    stateMutability: \"view\",\n  },\n  {\n    constant: true,\n    inputs: [\n      {\n        name: \"\",\n        type: \"address\",\n      },\n    ],\n    name: \"balanceOf\",\n    outputs: [\n      {\n        name: \"\",\n        type: \"uint256\",\n      },\n    ],\n    payable: false,\n    type: \"function\",\n    stateMutability: \"view\",\n  },\n  {\n    constant: false,\n    inputs: [],\n    name: \"allInitialOwnersAssigned\",\n    outputs: [],\n    payable: false,\n    type: \"function\",\n    stateMutability: \"nonpayable\",\n  },\n  {\n    constant: true,\n    inputs: [],\n    name: \"allPunksAssigned\",\n    outputs: [\n      {\n        name: \"\",\n        type: \"bool\",\n      },\n    ],\n    payable: false,\n    type: \"function\",\n    stateMutability: \"view\",\n  },\n  {\n    constant: false,\n    inputs: [\n      {\n        name: \"punkIndex\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"buyPunk\",\n    outputs: [],\n    payable: true,\n    type: \"function\",\n    stateMutability: \"payable\",\n  },\n  {\n    constant: false,\n    inputs: [\n      {\n        name: \"to\",\n        type: \"address\",\n      },\n      {\n        name: \"punkIndex\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"transferPunk\",\n    outputs: [],\n    payable: false,\n    type: \"function\",\n    stateMutability: \"nonpayable\",\n  },\n  {\n    constant: true,\n    inputs: [],\n    name: \"symbol\",\n    outputs: [\n      {\n        name: \"\",\n        type: \"string\",\n      },\n    ],\n    payable: false,\n    type: \"function\",\n    stateMutability: \"view\",\n  },\n  {\n    constant: false,\n    inputs: [\n      {\n        name: \"punkIndex\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"withdrawBidForPunk\",\n    outputs: [],\n    payable: false,\n    type: \"function\",\n    stateMutability: \"nonpayable\",\n  },\n  {\n    constant: false,\n    inputs: [\n      {\n        name: \"to\",\n        type: \"address\",\n      },\n      {\n        name: \"punkIndex\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"setInitialOwner\",\n    outputs: [],\n    payable: false,\n    type: \"function\",\n    stateMutability: \"nonpayable\",\n  },\n  {\n    constant: false,\n    inputs: [\n      {\n        name: \"punkIndex\",\n        type: \"uint256\",\n      },\n      {\n        name: \"minSalePriceInWei\",\n        type: \"uint256\",\n      },\n      {\n        name: \"toAddress\",\n        type: \"address\",\n      },\n    ],\n    name: \"offerPunkForSaleToAddress\",\n    outputs: [],\n    payable: false,\n    type: \"function\",\n    stateMutability: \"nonpayable\",\n  },\n  {\n    constant: true,\n    inputs: [],\n    name: \"punksRemainingToAssign\",\n    outputs: [\n      {\n        name: \"\",\n        type: \"uint256\",\n      },\n    ],\n    payable: false,\n    type: \"function\",\n    stateMutability: \"view\",\n  },\n  {\n    constant: false,\n    inputs: [\n      {\n        name: \"punkIndex\",\n        type: \"uint256\",\n      },\n      {\n        name: \"minSalePriceInWei\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"offerPunkForSale\",\n    outputs: [],\n    payable: false,\n    type: \"function\",\n    stateMutability: \"nonpayable\",\n  },\n  {\n    constant: false,\n    inputs: [\n      {\n        name: \"punkIndex\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"getPunk\",\n    outputs: [],\n    payable: false,\n    type: \"function\",\n    stateMutability: \"nonpayable\",\n  },\n  {\n    constant: true,\n    inputs: [\n      {\n        name: \"\",\n        type: \"address\",\n      },\n    ],\n    name: \"pendingWithdrawals\",\n    outputs: [\n      {\n        name: \"\",\n        type: \"uint256\",\n      },\n    ],\n    payable: false,\n    type: \"function\",\n    stateMutability: \"view\",\n  },\n  {\n    constant: false,\n    inputs: [\n      {\n        name: \"punkIndex\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"punkNoLongerForSale\",\n    outputs: [],\n    payable: false,\n    type: \"function\",\n    stateMutability: \"nonpayable\",\n  },\n  {\n    inputs: [],\n    payable: true,\n    type: \"constructor\",\n    stateMutability: \"payable\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        name: \"to\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        name: \"punkIndex\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"Assign\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        name: \"from\",\n        type: \"address\",\n      },\n      {\n        indexed: true,\n        name: \"to\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        name: \"value\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"Transfer\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        name: \"from\",\n        type: \"address\",\n      },\n      {\n        indexed: true,\n        name: \"to\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        name: \"punkIndex\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"PunkTransfer\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        name: \"punkIndex\",\n        type: \"uint256\",\n      },\n      {\n        indexed: false,\n        name: \"minValue\",\n        type: \"uint256\",\n      },\n      {\n        indexed: true,\n        name: \"toAddress\",\n        type: \"address\",\n      },\n    ],\n    name: \"PunkOffered\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        name: \"punkIndex\",\n        type: \"uint256\",\n      },\n      {\n        indexed: false,\n        name: \"value\",\n        type: \"uint256\",\n      },\n      {\n        indexed: true,\n        name: \"fromAddress\",\n        type: \"address\",\n      },\n    ],\n    name: \"PunkBidEntered\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        name: \"punkIndex\",\n        type: \"uint256\",\n      },\n      {\n        indexed: false,\n        name: \"value\",\n        type: \"uint256\",\n      },\n      {\n        indexed: true,\n        name: \"fromAddress\",\n        type: \"address\",\n      },\n    ],\n    name: \"PunkBidWithdrawn\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        name: \"punkIndex\",\n        type: \"uint256\",\n      },\n      {\n        indexed: false,\n        name: \"value\",\n        type: \"uint256\",\n      },\n      {\n        indexed: true,\n        name: \"fromAddress\",\n        type: \"address\",\n      },\n      {\n        indexed: true,\n        name: \"toAddress\",\n        type: \"address\",\n      },\n    ],\n    name: \"PunkBought\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        name: \"punkIndex\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"PunkNoLongerForSale\",\n    type: \"event\",\n  },\n] as const;\n", "export const iCryptoPunks721Abi = [\n  {\n    type: 'function',\n    inputs: [\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'tokenId', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'approve',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'owner', internalType: 'address', type: 'address' }],\n    name: 'balanceOf',\n    outputs: [{ name: 'balance', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'tokenId', internalType: 'uint256', type: 'uint256' }],\n    name: 'getApproved',\n    outputs: [{ name: 'operator', internalType: 'address', type: 'address' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'owner', internalType: 'address', type: 'address' },\n      { name: 'operator', internalType: 'address', type: 'address' },\n    ],\n    name: 'isApprovedForAll',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'licensingTerms',\n    outputs: [{ name: '', internalType: 'string', type: 'string' }],\n    stateMutability: 'pure',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'punkIndexes', internalType: 'uint256[]', type: 'uint256[]' },\n    ],\n    name: 'migrateLegacyWrappedPunks',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'tokenId', internalType: 'uint256', type: 'uint256' }],\n    name: 'ownerOf',\n    outputs: [{ name: 'owner', internalType: 'address', type: 'address' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'user', internalType: 'address', type: 'address' }],\n    name: 'punkProxyForUser',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'punkIndex', internalType: 'uint256', type: 'uint256' }],\n    name: 'rescuePunk',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address' },\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'tokenId', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'safeTransferFrom',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address' },\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'tokenId', internalType: 'uint256', type: 'uint256' },\n      { name: 'data', internalType: 'bytes', type: 'bytes' },\n    ],\n    name: 'safeTransferFrom',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'operator', internalType: 'address', type: 'address' },\n      { name: 'approved', internalType: 'bool', type: 'bool' },\n    ],\n    name: 'setApprovalForAll',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'interfaceId', internalType: 'bytes4', type: 'bytes4' }],\n    name: 'supportsInterface',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'owner', internalType: 'address', type: 'address' }],\n    name: 'tokensOfOwner',\n    outputs: [{ name: '', internalType: 'uint256[]', type: 'uint256[]' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [],\n    name: 'totalSupply',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    stateMutability: 'view',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address' },\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'tokenId', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'transferFrom',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'punkIndex', internalType: 'uint256', type: 'uint256' }],\n    name: 'unwrapPunk',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'punkIndexes', internalType: 'uint256[]', type: 'uint256[]' },\n    ],\n    name: 'unwrapPunkBatch',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [{ name: 'punkIndex', internalType: 'uint256', type: 'uint256' }],\n    name: 'wrapPunk',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'function',\n    inputs: [\n      { name: 'punkIndexes', internalType: 'uint256[]', type: 'uint256[]' },\n    ],\n    name: 'wrapPunkBatch',\n    outputs: [],\n    stateMutability: 'nonpayable',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      {\n        name: 'owner',\n        internalType: 'address',\n        type: 'address',\n        indexed: true,\n      },\n      {\n        name: 'approved',\n        internalType: 'address',\n        type: 'address',\n        indexed: true,\n      },\n      {\n        name: 'tokenId',\n        internalType: 'uint256',\n        type: 'uint256',\n        indexed: true,\n      },\n    ],\n    name: 'Approval',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      {\n        name: 'owner',\n        internalType: 'address',\n        type: 'address',\n        indexed: true,\n      },\n      {\n        name: 'operator',\n        internalType: 'address',\n        type: 'address',\n        indexed: true,\n      },\n      { name: 'approved', internalType: 'bool', type: 'bool', indexed: false },\n    ],\n    name: 'ApprovalForAll',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address', indexed: true },\n      { name: 'to', internalType: 'address', type: 'address', indexed: true },\n      {\n        name: 'tokenId',\n        internalType: 'uint256',\n        type: 'uint256',\n        indexed: true,\n      },\n    ],\n    name: 'Transfer',\n  },\n] as const\n", "export const oldErc721Abi = [\n  {\n    constant: false,\n    inputs: [\n      { name: '_uri', type: 'string' },\n      { name: '_editions', type: 'uint256' },\n      { name: '_salePrice', type: 'uint256' },\n    ],\n    name: 'addNewTokenWithEditions',\n    outputs: [],\n    payable: false,\n    stateMutability: 'nonpayable',\n    type: 'function',\n  },\n  {\n    constant: false,\n    inputs: [\n      { name: '_tokenId', type: 'uint256' },\n      { name: '_salePrice', type: 'uint256' },\n    ],\n    name: 'setSalePrice',\n    outputs: [],\n    payable: false,\n    stateMutability: 'nonpayable',\n    type: 'function',\n  },\n  {\n    constant: true,\n    inputs: [],\n    name: 'name',\n    outputs: [{ name: '_name', type: 'string' }],\n    payable: false,\n    stateMutability: 'pure',\n    type: 'function',\n  },\n  {\n    constant: false,\n    inputs: [\n      { name: '_to', type: 'address' },\n      { name: '_tokenId', type: 'uint256' },\n    ],\n    name: 'approve',\n    outputs: [],\n    payable: false,\n    stateMutability: 'nonpayable',\n    type: 'function',\n  },\n  {\n    constant: true,\n    inputs: [],\n    name: 'totalSupply',\n    outputs: [{ name: '', type: 'uint256' }],\n    payable: false,\n    stateMutability: 'view',\n    type: 'function',\n  },\n  {\n    constant: true,\n    inputs: [{ name: '_tokenId', type: 'uint256' }],\n    name: 'currentBidDetailsOfToken',\n    outputs: [\n      { name: '', type: 'uint256' },\n      { name: '', type: 'address' },\n    ],\n    payable: false,\n    stateMutability: 'view',\n    type: 'function',\n  },\n  {\n    constant: true,\n    inputs: [{ name: '_tokenId', type: 'uint256' }],\n    name: 'approvedFor',\n    outputs: [{ name: '', type: 'address' }],\n    payable: false,\n    stateMutability: 'view',\n    type: 'function',\n  },\n  {\n    constant: false,\n    inputs: [{ name: '_tokenId', type: 'uint256' }],\n    name: 'acceptBid',\n    outputs: [],\n    payable: false,\n    stateMutability: 'nonpayable',\n    type: 'function',\n  },\n  {\n    constant: true,\n    inputs: [{ name: '_creator', type: 'address' }],\n    name: 'isWhitelisted',\n    outputs: [{ name: '', type: 'bool' }],\n    payable: false,\n    stateMutability: 'view',\n    type: 'function',\n  },\n  {\n    constant: false,\n    inputs: [{ name: '_tokenId', type: 'uint256' }],\n    name: 'bid',\n    outputs: [],\n    payable: true,\n    stateMutability: 'payable',\n    type: 'function',\n  },\n  {\n    constant: true,\n    inputs: [{ name: '_owner', type: 'address' }],\n    name: 'tokensOf',\n    outputs: [{ name: '', type: 'uint256[]' }],\n    payable: false,\n    stateMutability: 'view',\n    type: 'function',\n  },\n  {\n    constant: false,\n    inputs: [{ name: '_percentage', type: 'uint256' }],\n    name: 'setMaintainerPercentage',\n    outputs: [],\n    payable: false,\n    stateMutability: 'nonpayable',\n    type: 'function',\n  },\n  {\n    constant: false,\n    inputs: [{ name: '_creator', type: 'address' }],\n    name: 'whitelistCreator',\n    outputs: [],\n    payable: false,\n    stateMutability: 'nonpayable',\n    type: 'function',\n  },\n  {\n    constant: true,\n    inputs: [{ name: '_tokenId', type: 'uint256' }],\n    name: 'ownerOf',\n    outputs: [{ name: '', type: 'address' }],\n    payable: false,\n    stateMutability: 'view',\n    type: 'function',\n  },\n  {\n    constant: true,\n    inputs: [{ name: '_uri', type: 'string' }],\n    name: 'originalTokenOfUri',\n    outputs: [{ name: '', type: 'uint256' }],\n    payable: false,\n    stateMutability: 'view',\n    type: 'function',\n  },\n  {\n    constant: true,\n    inputs: [{ name: '_owner', type: 'address' }],\n    name: 'balanceOf',\n    outputs: [{ name: '', type: 'uint256' }],\n    payable: false,\n    stateMutability: 'view',\n    type: 'function',\n  },\n  {\n    constant: true,\n    inputs: [],\n    name: 'owner',\n    outputs: [{ name: '', type: 'address' }],\n    payable: false,\n    stateMutability: 'view',\n    type: 'function',\n  },\n  {\n    constant: true,\n    inputs: [],\n    name: 'symbol',\n    outputs: [{ name: '_symbol', type: 'string' }],\n    payable: false,\n    stateMutability: 'pure',\n    type: 'function',\n  },\n  {\n    constant: false,\n    inputs: [{ name: '_tokenId', type: 'uint256' }],\n    name: 'cancelBid',\n    outputs: [],\n    payable: false,\n    stateMutability: 'nonpayable',\n    type: 'function',\n  },\n  {\n    constant: true,\n    inputs: [{ name: '_tokenId', type: 'uint256' }],\n    name: 'salePriceOfToken',\n    outputs: [{ name: '', type: 'uint256' }],\n    payable: false,\n    stateMutability: 'view',\n    type: 'function',\n  },\n  {\n    constant: false,\n    inputs: [\n      { name: '_to', type: 'address' },\n      { name: '_tokenId', type: 'uint256' },\n    ],\n    name: 'transfer',\n    outputs: [],\n    payable: false,\n    stateMutability: 'nonpayable',\n    type: 'function',\n  },\n  {\n    constant: false,\n    inputs: [{ name: '_tokenId', type: 'uint256' }],\n    name: 'takeOwnership',\n    outputs: [],\n    payable: false,\n    stateMutability: 'nonpayable',\n    type: 'function',\n  },\n  {\n    constant: false,\n    inputs: [{ name: '_percentage', type: 'uint256' }],\n    name: 'setCreatorPercentage',\n    outputs: [],\n    payable: false,\n    stateMutability: 'nonpayable',\n    type: 'function',\n  },\n  {\n    constant: true,\n    inputs: [{ name: '_tokenId', type: 'uint256' }],\n    name: 'tokenURI',\n    outputs: [{ name: '', type: 'string' }],\n    payable: false,\n    stateMutability: 'view',\n    type: 'function',\n  },\n  {\n    constant: true,\n    inputs: [{ name: '_tokenId', type: 'uint256' }],\n    name: 'creatorOfToken',\n    outputs: [{ name: '', type: 'address' }],\n    payable: false,\n    stateMutability: 'view',\n    type: 'function',\n  },\n  {\n    constant: false,\n    inputs: [{ name: '_tokenId', type: 'uint256' }],\n    name: 'buy',\n    outputs: [],\n    payable: true,\n    stateMutability: 'payable',\n    type: 'function',\n  },\n  {\n    constant: false,\n    inputs: [{ name: '_uri', type: 'string' }],\n    name: 'addNewToken',\n    outputs: [],\n    payable: false,\n    stateMutability: 'nonpayable',\n    type: 'function',\n  },\n  {\n    constant: true,\n    inputs: [],\n    name: 'creatorPercentage',\n    outputs: [{ name: '', type: 'uint256' }],\n    payable: false,\n    stateMutability: 'view',\n    type: 'function',\n  },\n  {\n    constant: true,\n    inputs: [],\n    name: 'maintainerPercentage',\n    outputs: [{ name: '', type: 'uint256' }],\n    payable: false,\n    stateMutability: 'view',\n    type: 'function',\n  },\n  {\n    constant: false,\n    inputs: [{ name: 'newOwner', type: 'address' }],\n    name: 'transferOwnership',\n    outputs: [],\n    payable: false,\n    stateMutability: 'nonpayable',\n    type: 'function',\n  },\n  {\n    anonymous: false,\n    inputs: [{ indexed: true, name: '_creator', type: 'address' }],\n    name: 'WhitelistCreator',\n    type: 'event',\n  },\n  {\n    anonymous: false,\n    inputs: [\n      { indexed: true, name: '_bidder', type: 'address' },\n      { indexed: true, name: '_amount', type: 'uint256' },\n      { indexed: true, name: '_tokenId', type: 'uint256' },\n    ],\n    name: 'Bid',\n    type: 'event',\n  },\n  {\n    anonymous: false,\n    inputs: [\n      { indexed: true, name: '_bidder', type: 'address' },\n      { indexed: true, name: '_seller', type: 'address' },\n      { indexed: false, name: '_amount', type: 'uint256' },\n      { indexed: true, name: '_tokenId', type: 'uint256' },\n    ],\n    name: 'AcceptBid',\n    type: 'event',\n  },\n  {\n    anonymous: false,\n    inputs: [\n      { indexed: true, name: '_bidder', type: 'address' },\n      { indexed: true, name: '_amount', type: 'uint256' },\n      { indexed: true, name: '_tokenId', type: 'uint256' },\n    ],\n    name: 'CancelBid',\n    type: 'event',\n  },\n  {\n    anonymous: false,\n    inputs: [\n      { indexed: true, name: '_buyer', type: 'address' },\n      { indexed: true, name: '_seller', type: 'address' },\n      { indexed: false, name: '_amount', type: 'uint256' },\n      { indexed: true, name: '_tokenId', type: 'uint256' },\n    ],\n    name: 'Sold',\n    type: 'event',\n  },\n  {\n    anonymous: false,\n    inputs: [\n      { indexed: true, name: '_tokenId', type: 'uint256' },\n      { indexed: true, name: '_price', type: 'uint256' },\n    ],\n    name: 'SalePriceSet',\n    type: 'event',\n  },\n  {\n    anonymous: false,\n    inputs: [\n      { indexed: true, name: 'previousOwner', type: 'address' },\n      { indexed: true, name: 'newOwner', type: 'address' },\n    ],\n    name: 'OwnershipTransferred',\n    type: 'event',\n  },\n  {\n    anonymous: false,\n    inputs: [\n      { indexed: true, name: '_from', type: 'address' },\n      { indexed: true, name: '_to', type: 'address' },\n      { indexed: false, name: '_tokenId', type: 'uint256' },\n    ],\n    name: 'Transfer',\n    type: 'event',\n  },\n  {\n    anonymous: false,\n    inputs: [\n      { indexed: true, name: '_owner', type: 'address' },\n      { indexed: true, name: '_approved', type: 'address' },\n      { indexed: false, name: '_tokenId', type: 'uint256' },\n    ],\n    name: 'Approval',\n    type: 'event',\n  },\n] as const;\n", "export const seaportABI = [\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"conduitController\",\n        type: \"address\",\n      },\n    ],\n    stateMutability: \"nonpayable\",\n    type: \"constructor\",\n  },\n  {\n    inputs: [],\n    name: \"BadContractSignature\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"BadFraction\",\n    type: \"error\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        internalType: \"address\",\n        name: \"from\",\n        type: \"address\",\n      },\n      {\n        internalType: \"address\",\n        name: \"to\",\n        type: \"address\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"amount\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"BadReturnValueFromERC20OnTransfer\",\n    type: \"error\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint8\",\n        name: \"v\",\n        type: \"uint8\",\n      },\n    ],\n    name: \"BadSignatureV\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"CannotCancelOrder\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"ConsiderationCriteriaResolverOutOfRange\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"ConsiderationLengthNotEqualToTotalOriginal\",\n    type: \"error\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint256\",\n        name: \"orderIndex\",\n        type: \"uint256\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"considerationIndex\",\n        type: \"uint256\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"shortfallAmount\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"ConsiderationNotMet\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"CriteriaNotEnabledForItem\",\n    type: \"error\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        internalType: \"address\",\n        name: \"from\",\n        type: \"address\",\n      },\n      {\n        internalType: \"address\",\n        name: \"to\",\n        type: \"address\",\n      },\n      {\n        internalType: \"uint256[]\",\n        name: \"identifiers\",\n        type: \"uint256[]\",\n      },\n      {\n        internalType: \"uint256[]\",\n        name: \"amounts\",\n        type: \"uint256[]\",\n      },\n    ],\n    name: \"ERC1155BatchTransferGenericFailure\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"InexactFraction\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"InsufficientNativeTokensSupplied\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"Invalid1155BatchTransferEncoding\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"InvalidBasicOrderParameterEncoding\",\n    type: \"error\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"conduit\",\n        type: \"address\",\n      },\n    ],\n    name: \"InvalidCallToConduit\",\n    type: \"error\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"bytes32\",\n        name: \"conduitKey\",\n        type: \"bytes32\",\n      },\n      {\n        internalType: \"address\",\n        name: \"conduit\",\n        type: \"address\",\n      },\n    ],\n    name: \"InvalidConduit\",\n    type: \"error\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"bytes32\",\n        name: \"orderHash\",\n        type: \"bytes32\",\n      },\n    ],\n    name: \"InvalidContractOrder\",\n    type: \"error\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint256\",\n        name: \"amount\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"InvalidERC721TransferAmount\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"InvalidFulfillmentComponentData\",\n    type: \"error\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint256\",\n        name: \"value\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"InvalidMsgValue\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"InvalidNativeOfferItem\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"InvalidProof\",\n    type: \"error\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"bytes32\",\n        name: \"orderHash\",\n        type: \"bytes32\",\n      },\n    ],\n    name: \"InvalidRestrictedOrder\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"InvalidSignature\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"InvalidSigner\",\n    type: \"error\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint256\",\n        name: \"startTime\",\n        type: \"uint256\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"endTime\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"InvalidTime\",\n    type: \"error\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint256\",\n        name: \"fulfillmentIndex\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"MismatchedFulfillmentOfferAndConsiderationComponents\",\n    type: \"error\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"enum Side\",\n        name: \"side\",\n        type: \"uint8\",\n      },\n    ],\n    name: \"MissingFulfillmentComponentOnAggregation\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"MissingItemAmount\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"MissingOriginalConsiderationItems\",\n    type: \"error\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"account\",\n        type: \"address\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"amount\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"NativeTokenTransferGenericFailure\",\n    type: \"error\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"account\",\n        type: \"address\",\n      },\n    ],\n    name: \"NoContract\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"NoReentrantCalls\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"NoSpecifiedOrdersAvailable\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"OfferAndConsiderationRequiredOnFulfillment\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"OfferCriteriaResolverOutOfRange\",\n    type: \"error\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"bytes32\",\n        name: \"orderHash\",\n        type: \"bytes32\",\n      },\n    ],\n    name: \"OrderAlreadyFilled\",\n    type: \"error\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"enum Side\",\n        name: \"side\",\n        type: \"uint8\",\n      },\n    ],\n    name: \"OrderCriteriaResolverOutOfRange\",\n    type: \"error\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"bytes32\",\n        name: \"orderHash\",\n        type: \"bytes32\",\n      },\n    ],\n    name: \"OrderIsCancelled\",\n    type: \"error\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"bytes32\",\n        name: \"orderHash\",\n        type: \"bytes32\",\n      },\n    ],\n    name: \"OrderPartiallyFilled\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"PartialFillsNotEnabledForOrder\",\n    type: \"error\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        internalType: \"address\",\n        name: \"from\",\n        type: \"address\",\n      },\n      {\n        internalType: \"address\",\n        name: \"to\",\n        type: \"address\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"identifier\",\n        type: \"uint256\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"amount\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"TokenTransferGenericFailure\",\n    type: \"error\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint256\",\n        name: \"orderIndex\",\n        type: \"uint256\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"considerationIndex\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"UnresolvedConsiderationCriteria\",\n    type: \"error\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint256\",\n        name: \"orderIndex\",\n        type: \"uint256\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"offerIndex\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"UnresolvedOfferCriteria\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"UnusedItemParameters\",\n    type: \"error\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"newCounter\",\n        type: \"uint256\",\n      },\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"offerer\",\n        type: \"address\",\n      },\n    ],\n    name: \"CounterIncremented\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: false,\n        internalType: \"bytes32\",\n        name: \"orderHash\",\n        type: \"bytes32\",\n      },\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"offerer\",\n        type: \"address\",\n      },\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"zone\",\n        type: \"address\",\n      },\n    ],\n    name: \"OrderCancelled\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: false,\n        internalType: \"bytes32\",\n        name: \"orderHash\",\n        type: \"bytes32\",\n      },\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"offerer\",\n        type: \"address\",\n      },\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"zone\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"address\",\n        name: \"recipient\",\n        type: \"address\",\n      },\n      {\n        components: [\n          {\n            internalType: \"enum ItemType\",\n            name: \"itemType\",\n            type: \"uint8\",\n          },\n          {\n            internalType: \"address\",\n            name: \"token\",\n            type: \"address\",\n          },\n          {\n            internalType: \"uint256\",\n            name: \"identifier\",\n            type: \"uint256\",\n          },\n          {\n            internalType: \"uint256\",\n            name: \"amount\",\n            type: \"uint256\",\n          },\n        ],\n        indexed: false,\n        internalType: \"struct SpentItem[]\",\n        name: \"offer\",\n        type: \"tuple[]\",\n      },\n      {\n        components: [\n          {\n            internalType: \"enum ItemType\",\n            name: \"itemType\",\n            type: \"uint8\",\n          },\n          {\n            internalType: \"address\",\n            name: \"token\",\n            type: \"address\",\n          },\n          {\n            internalType: \"uint256\",\n            name: \"identifier\",\n            type: \"uint256\",\n          },\n          {\n            internalType: \"uint256\",\n            name: \"amount\",\n            type: \"uint256\",\n          },\n          {\n            internalType: \"address payable\",\n            name: \"recipient\",\n            type: \"address\",\n          },\n        ],\n        indexed: false,\n        internalType: \"struct ReceivedItem[]\",\n        name: \"consideration\",\n        type: \"tuple[]\",\n      },\n    ],\n    name: \"OrderFulfilled\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: false,\n        internalType: \"bytes32\",\n        name: \"orderHash\",\n        type: \"bytes32\",\n      },\n      {\n        components: [\n          {\n            internalType: \"address\",\n            name: \"offerer\",\n            type: \"address\",\n          },\n          {\n            internalType: \"address\",\n            name: \"zone\",\n            type: \"address\",\n          },\n          {\n            components: [\n              {\n                internalType: \"enum ItemType\",\n                name: \"itemType\",\n                type: \"uint8\",\n              },\n              {\n                internalType: \"address\",\n                name: \"token\",\n                type: \"address\",\n              },\n              {\n                internalType: \"uint256\",\n                name: \"identifierOrCriteria\",\n                type: \"uint256\",\n              },\n              {\n                internalType: \"uint256\",\n                name: \"startAmount\",\n                type: \"uint256\",\n              },\n              {\n                internalType: \"uint256\",\n                name: \"endAmount\",\n                type: \"uint256\",\n              },\n            ],\n            internalType: \"struct OfferItem[]\",\n            name: \"offer\",\n            type: \"tuple[]\",\n          },\n          {\n            components: [\n              {\n                internalType: \"enum ItemType\",\n                name: \"itemType\",\n                type: \"uint8\",\n              },\n              {\n                internalType: \"address\",\n                name: \"token\",\n                type: \"address\",\n              },\n              {\n                internalType: \"uint256\",\n                name: \"identifierOrCriteria\",\n                type: \"uint256\",\n              },\n              {\n                internalType: \"uint256\",\n                name: \"startAmount\",\n                type: \"uint256\",\n              },\n              {\n                internalType: \"uint256\",\n                name: \"endAmount\",\n                type: \"uint256\",\n              },\n              {\n                internalType: \"address payable\",\n                name: \"recipient\",\n                type: \"address\",\n              },\n            ],\n            internalType: \"struct ConsiderationItem[]\",\n            name: \"consideration\",\n            type: \"tuple[]\",\n          },\n          {\n            internalType: \"enum OrderType\",\n            name: \"orderType\",\n            type: \"uint8\",\n          },\n          {\n            internalType: \"uint256\",\n            name: \"startTime\",\n            type: \"uint256\",\n          },\n          {\n            internalType: \"uint256\",\n            name: \"endTime\",\n            type: \"uint256\",\n          },\n          {\n            internalType: \"bytes32\",\n            name: \"zoneHash\",\n            type: \"bytes32\",\n          },\n          {\n            internalType: \"uint256\",\n            name: \"salt\",\n            type: \"uint256\",\n          },\n          {\n            internalType: \"bytes32\",\n            name: \"conduitKey\",\n            type: \"bytes32\",\n          },\n          {\n            internalType: \"uint256\",\n            name: \"totalOriginalConsiderationItems\",\n            type: \"uint256\",\n          },\n        ],\n        indexed: false,\n        internalType: \"struct OrderParameters\",\n        name: \"orderParameters\",\n        type: \"tuple\",\n      },\n    ],\n    name: \"OrderValidated\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: false,\n        internalType: \"bytes32[]\",\n        name: \"orderHashes\",\n        type: \"bytes32[]\",\n      },\n    ],\n    name: \"OrdersMatched\",\n    type: \"event\",\n  },\n  {\n    inputs: [\n      {\n        components: [\n          {\n            internalType: \"address\",\n            name: \"offerer\",\n            type: \"address\",\n          },\n          {\n            internalType: \"address\",\n            name: \"zone\",\n            type: \"address\",\n          },\n          {\n            components: [\n              {\n                internalType: \"enum ItemType\",\n                name: \"itemType\",\n                type: \"uint8\",\n              },\n              {\n                internalType: \"address\",\n                name: \"token\",\n                type: \"address\",\n              },\n              {\n                internalType: \"uint256\",\n                name: \"identifierOrCriteria\",\n                type: \"uint256\",\n              },\n              {\n                internalType: \"uint256\",\n                name: \"startAmount\",\n                type: \"uint256\",\n              },\n              {\n                internalType: \"uint256\",\n                name: \"endAmount\",\n                type: \"uint256\",\n              },\n            ],\n            internalType: \"struct OfferItem[]\",\n            name: \"offer\",\n            type: \"tuple[]\",\n          },\n          {\n            components: [\n              {\n                internalType: \"enum ItemType\",\n                name: \"itemType\",\n                type: \"uint8\",\n              },\n              {\n                internalType: \"address\",\n                name: \"token\",\n                type: \"address\",\n              },\n              {\n                internalType: \"uint256\",\n                name: \"identifierOrCriteria\",\n                type: \"uint256\",\n              },\n              {\n                internalType: \"uint256\",\n                name: \"startAmount\",\n                type: \"uint256\",\n              },\n              {\n                internalType: \"uint256\",\n                name: \"endAmount\",\n                type: \"uint256\",\n              },\n              {\n                internalType: \"address payable\",\n                name: \"recipient\",\n                type: \"address\",\n              },\n            ],\n            internalType: \"struct ConsiderationItem[]\",\n            name: \"consideration\",\n            type: \"tuple[]\",\n          },\n          {\n            internalType: \"enum OrderType\",\n            name: \"orderType\",\n            type: \"uint8\",\n          },\n          {\n            internalType: \"uint256\",\n            name: \"startTime\",\n            type: \"uint256\",\n          },\n          {\n            internalType: \"uint256\",\n            name: \"endTime\",\n            type: \"uint256\",\n          },\n          {\n            internalType: \"bytes32\",\n            name: \"zoneHash\",\n            type: \"bytes32\",\n          },\n          {\n            internalType: \"uint256\",\n            name: \"salt\",\n            type: \"uint256\",\n          },\n          {\n            internalType: \"bytes32\",\n            name: \"conduitKey\",\n            type: \"bytes32\",\n          },\n          {\n            internalType: \"uint256\",\n            name: \"counter\",\n            type: \"uint256\",\n          },\n        ],\n        internalType: \"struct OrderComponents[]\",\n        name: \"orders\",\n        type: \"tuple[]\",\n      },\n    ],\n    name: \"cancel\",\n    outputs: [\n      {\n        internalType: \"bool\",\n        name: \"cancelled\",\n        type: \"bool\",\n      },\n    ],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        components: [\n          {\n            components: [\n              {\n                internalType: \"address\",\n                name: \"offerer\",\n                type: \"address\",\n              },\n              {\n                internalType: \"address\",\n                name: \"zone\",\n                type: \"address\",\n              },\n              {\n                components: [\n                  {\n                    internalType: \"enum ItemType\",\n                    name: \"itemType\",\n                    type: \"uint8\",\n                  },\n                  {\n                    internalType: \"address\",\n                    name: \"token\",\n                    type: \"address\",\n                  },\n                  {\n                    internalType: \"uint256\",\n                    name: \"identifierOrCriteria\",\n                    type: \"uint256\",\n                  },\n                  {\n                    internalType: \"uint256\",\n                    name: \"startAmount\",\n                    type: \"uint256\",\n                  },\n                  {\n                    internalType: \"uint256\",\n                    name: \"endAmount\",\n                    type: \"uint256\",\n                  },\n                ],\n                internalType: \"struct OfferItem[]\",\n                name: \"offer\",\n                type: \"tuple[]\",\n              },\n              {\n                components: [\n                  {\n                    internalType: \"enum ItemType\",\n                    name: \"itemType\",\n                    type: \"uint8\",\n                  },\n                  {\n                    internalType: \"address\",\n                    name: \"token\",\n                    type: \"address\",\n                  },\n                  {\n                    internalType: \"uint256\",\n                    name: \"identifierOrCriteria\",\n                    type: \"uint256\",\n                  },\n                  {\n                    internalType: \"uint256\",\n                    name: \"startAmount\",\n                    type: \"uint256\",\n                  },\n                  {\n                    internalType: \"uint256\",\n                    name: \"endAmount\",\n                    type: \"uint256\",\n                  },\n                  {\n                    internalType: \"address payable\",\n                    name: \"recipient\",\n                    type: \"address\",\n                  },\n                ],\n                internalType: \"struct ConsiderationItem[]\",\n                name: \"consideration\",\n                type: \"tuple[]\",\n              },\n              {\n                internalType: \"enum OrderType\",\n                name: \"orderType\",\n                type: \"uint8\",\n              },\n              {\n                internalType: \"uint256\",\n                name: \"startTime\",\n                type: \"uint256\",\n              },\n              {\n                internalType: \"uint256\",\n                name: \"endTime\",\n                type: \"uint256\",\n              },\n              {\n                internalType: \"bytes32\",\n                name: \"zoneHash\",\n                type: \"bytes32\",\n              },\n              {\n                internalType: \"uint256\",\n                name: \"salt\",\n                type: \"uint256\",\n              },\n              {\n                internalType: \"bytes32\",\n                name: \"conduitKey\",\n                type: \"bytes32\",\n              },\n              {\n                internalType: \"uint256\",\n                name: \"totalOriginalConsiderationItems\",\n                type: \"uint256\",\n              },\n            ],\n            internalType: \"struct OrderParameters\",\n            name: \"parameters\",\n            type: \"tuple\",\n          },\n          {\n            internalType: \"uint120\",\n            name: \"numerator\",\n            type: \"uint120\",\n          },\n          {\n            internalType: \"uint120\",\n            name: \"denominator\",\n            type: \"uint120\",\n          },\n          {\n            internalType: \"bytes\",\n            name: \"signature\",\n            type: \"bytes\",\n          },\n          {\n            internalType: \"bytes\",\n            name: \"extraData\",\n            type: \"bytes\",\n          },\n        ],\n        internalType: \"struct AdvancedOrder\",\n        name: \"\",\n        type: \"tuple\",\n      },\n      {\n        components: [\n          {\n            internalType: \"uint256\",\n            name: \"orderIndex\",\n            type: \"uint256\",\n          },\n          {\n            internalType: \"enum Side\",\n            name: \"side\",\n            type: \"uint8\",\n          },\n          {\n            internalType: \"uint256\",\n            name: \"index\",\n            type: \"uint256\",\n          },\n          {\n            internalType: \"uint256\",\n            name: \"identifier\",\n            type: \"uint256\",\n          },\n          {\n            internalType: \"bytes32[]\",\n            name: \"criteriaProof\",\n            type: \"bytes32[]\",\n          },\n        ],\n        internalType: \"struct CriteriaResolver[]\",\n        name: \"\",\n        type: \"tuple[]\",\n      },\n      {\n        internalType: \"bytes32\",\n        name: \"fulfillerConduitKey\",\n        type: \"bytes32\",\n      },\n      {\n        internalType: \"address\",\n        name: \"recipient\",\n        type: \"address\",\n      },\n    ],\n    name: \"fulfillAdvancedOrder\",\n    outputs: [\n      {\n        internalType: \"bool\",\n        name: \"fulfilled\",\n        type: \"bool\",\n      },\n    ],\n    stateMutability: \"payable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        components: [\n          {\n            components: [\n              {\n                internalType: \"address\",\n                name: \"offerer\",\n                type: \"address\",\n              },\n              {\n                internalType: \"address\",\n                name: \"zone\",\n                type: \"address\",\n              },\n              {\n                components: [\n                  {\n                    internalType: \"enum ItemType\",\n                    name: \"itemType\",\n                    type: \"uint8\",\n                  },\n                  {\n                    internalType: \"address\",\n                    name: \"token\",\n                    type: \"address\",\n                  },\n                  {\n                    internalType: \"uint256\",\n                    name: \"identifierOrCriteria\",\n                    type: \"uint256\",\n                  },\n                  {\n                    internalType: \"uint256\",\n                    name: \"startAmount\",\n                    type: \"uint256\",\n                  },\n                  {\n                    internalType: \"uint256\",\n                    name: \"endAmount\",\n                    type: \"uint256\",\n                  },\n                ],\n                internalType: \"struct OfferItem[]\",\n                name: \"offer\",\n                type: \"tuple[]\",\n              },\n              {\n                components: [\n                  {\n                    internalType: \"enum ItemType\",\n                    name: \"itemType\",\n                    type: \"uint8\",\n                  },\n                  {\n                    internalType: \"address\",\n                    name: \"token\",\n                    type: \"address\",\n                  },\n                  {\n                    internalType: \"uint256\",\n                    name: \"identifierOrCriteria\",\n                    type: \"uint256\",\n                  },\n                  {\n                    internalType: \"uint256\",\n                    name: \"startAmount\",\n                    type: \"uint256\",\n                  },\n                  {\n                    internalType: \"uint256\",\n                    name: \"endAmount\",\n                    type: \"uint256\",\n                  },\n                  {\n                    internalType: \"address payable\",\n                    name: \"recipient\",\n                    type: \"address\",\n                  },\n                ],\n                internalType: \"struct ConsiderationItem[]\",\n                name: \"consideration\",\n                type: \"tuple[]\",\n              },\n              {\n                internalType: \"enum OrderType\",\n                name: \"orderType\",\n                type: \"uint8\",\n              },\n              {\n                internalType: \"uint256\",\n                name: \"startTime\",\n                type: \"uint256\",\n              },\n              {\n                internalType: \"uint256\",\n                name: \"endTime\",\n                type: \"uint256\",\n              },\n              {\n                internalType: \"bytes32\",\n                name: \"zoneHash\",\n                type: \"bytes32\",\n              },\n              {\n                internalType: \"uint256\",\n                name: \"salt\",\n                type: \"uint256\",\n              },\n              {\n                internalType: \"bytes32\",\n                name: \"conduitKey\",\n                type: \"bytes32\",\n              },\n              {\n                internalType: \"uint256\",\n                name: \"totalOriginalConsiderationItems\",\n                type: \"uint256\",\n              },\n            ],\n            internalType: \"struct OrderParameters\",\n            name: \"parameters\",\n            type: \"tuple\",\n          },\n          {\n            internalType: \"uint120\",\n            name: \"numerator\",\n            type: \"uint120\",\n          },\n          {\n            internalType: \"uint120\",\n            name: \"denominator\",\n            type: \"uint120\",\n          },\n          {\n            internalType: \"bytes\",\n            name: \"signature\",\n            type: \"bytes\",\n          },\n          {\n            internalType: \"bytes\",\n            name: \"extraData\",\n            type: \"bytes\",\n          },\n        ],\n        internalType: \"struct AdvancedOrder[]\",\n        name: \"\",\n        type: \"tuple[]\",\n      },\n      {\n        components: [\n          {\n            internalType: \"uint256\",\n            name: \"orderIndex\",\n            type: \"uint256\",\n          },\n          {\n            internalType: \"enum Side\",\n            name: \"side\",\n            type: \"uint8\",\n          },\n          {\n            internalType: \"uint256\",\n            name: \"index\",\n            type: \"uint256\",\n          },\n          {\n            internalType: \"uint256\",\n            name: \"identifier\",\n            type: \"uint256\",\n          },\n          {\n            internalType: \"bytes32[]\",\n            name: \"criteriaProof\",\n            type: \"bytes32[]\",\n          },\n        ],\n        internalType: \"struct CriteriaResolver[]\",\n        name: \"\",\n        type: \"tuple[]\",\n      },\n      {\n        components: [\n          {\n            internalType: \"uint256\",\n            name: \"orderIndex\",\n            type: \"uint256\",\n          },\n          {\n            internalType: \"uint256\",\n            name: \"itemIndex\",\n            type: \"uint256\",\n          },\n        ],\n        internalType: \"struct FulfillmentComponent[][]\",\n        name: \"\",\n        type: \"tuple[][]\",\n      },\n      {\n        components: [\n          {\n            internalType: \"uint256\",\n            name: \"orderIndex\",\n            type: \"uint256\",\n          },\n          {\n            internalType: \"uint256\",\n            name: \"itemIndex\",\n            type: \"uint256\",\n          },\n        ],\n        internalType: \"struct FulfillmentComponent[][]\",\n        name: \"\",\n        type: \"tuple[][]\",\n      },\n      {\n        internalType: \"bytes32\",\n        name: \"fulfillerConduitKey\",\n        type: \"bytes32\",\n      },\n      {\n        internalType: \"address\",\n        name: \"recipient\",\n        type: \"address\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"maximumFulfilled\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"fulfillAvailableAdvancedOrders\",\n    outputs: [\n      {\n        internalType: \"bool[]\",\n        name: \"\",\n        type: \"bool[]\",\n      },\n      {\n        components: [\n          {\n            components: [\n              {\n                internalType: \"enum ItemType\",\n                name: \"itemType\",\n                type: \"uint8\",\n              },\n              {\n                internalType: \"address\",\n                name: \"token\",\n                type: \"address\",\n              },\n              {\n                internalType: \"uint256\",\n                name: \"identifier\",\n                type: \"uint256\",\n              },\n              {\n                internalType: \"uint256\",\n                name: \"amount\",\n                type: \"uint256\",\n              },\n              {\n                internalType: \"address payable\",\n                name: \"recipient\",\n                type: \"address\",\n              },\n            ],\n            internalType: \"struct ReceivedItem\",\n            name: \"item\",\n            type: \"tuple\",\n          },\n          {\n            internalType: \"address\",\n            name: \"offerer\",\n            type: \"address\",\n          },\n          {\n            internalType: \"bytes32\",\n            name: \"conduitKey\",\n            type: \"bytes32\",\n          },\n        ],\n        internalType: \"struct Execution[]\",\n        name: \"\",\n        type: \"tuple[]\",\n      },\n    ],\n    stateMutability: \"payable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        components: [\n          {\n            components: [\n              {\n                internalType: \"address\",\n                name: \"offerer\",\n                type: \"address\",\n              },\n              {\n                internalType: \"address\",\n                name: \"zone\",\n                type: \"address\",\n              },\n              {\n                components: [\n                  {\n                    internalType: \"enum ItemType\",\n                    name: \"itemType\",\n                    type: \"uint8\",\n                  },\n                  {\n                    internalType: \"address\",\n                    name: \"token\",\n                    type: \"address\",\n                  },\n                  {\n                    internalType: \"uint256\",\n                    name: \"identifierOrCriteria\",\n                    type: \"uint256\",\n                  },\n                  {\n                    internalType: \"uint256\",\n                    name: \"startAmount\",\n                    type: \"uint256\",\n                  },\n                  {\n                    internalType: \"uint256\",\n                    name: \"endAmount\",\n                    type: \"uint256\",\n                  },\n                ],\n                internalType: \"struct OfferItem[]\",\n                name: \"offer\",\n                type: \"tuple[]\",\n              },\n              {\n                components: [\n                  {\n                    internalType: \"enum ItemType\",\n                    name: \"itemType\",\n                    type: \"uint8\",\n                  },\n                  {\n                    internalType: \"address\",\n                    name: \"token\",\n                    type: \"address\",\n                  },\n                  {\n                    internalType: \"uint256\",\n                    name: \"identifierOrCriteria\",\n                    type: \"uint256\",\n                  },\n                  {\n                    internalType: \"uint256\",\n                    name: \"startAmount\",\n                    type: \"uint256\",\n                  },\n                  {\n                    internalType: \"uint256\",\n                    name: \"endAmount\",\n                    type: \"uint256\",\n                  },\n                  {\n                    internalType: \"address payable\",\n                    name: \"recipient\",\n                    type: \"address\",\n                  },\n                ],\n                internalType: \"struct ConsiderationItem[]\",\n                name: \"consideration\",\n                type: \"tuple[]\",\n              },\n              {\n                internalType: \"enum OrderType\",\n                name: \"orderType\",\n                type: \"uint8\",\n              },\n              {\n                internalType: \"uint256\",\n                name: \"startTime\",\n                type: \"uint256\",\n              },\n              {\n                internalType: \"uint256\",\n                name: \"endTime\",\n                type: \"uint256\",\n              },\n              {\n                internalType: \"bytes32\",\n                name: \"zoneHash\",\n                type: \"bytes32\",\n              },\n              {\n                internalType: \"uint256\",\n                name: \"salt\",\n                type: \"uint256\",\n              },\n              {\n                internalType: \"bytes32\",\n                name: \"conduitKey\",\n                type: \"bytes32\",\n              },\n              {\n                internalType: \"uint256\",\n                name: \"totalOriginalConsiderationItems\",\n                type: \"uint256\",\n              },\n            ],\n            internalType: \"struct OrderParameters\",\n            name: \"parameters\",\n            type: \"tuple\",\n          },\n          {\n            internalType: \"bytes\",\n            name: \"signature\",\n            type: \"bytes\",\n          },\n        ],\n        internalType: \"struct Order[]\",\n        name: \"\",\n        type: \"tuple[]\",\n      },\n      {\n        components: [\n          {\n            internalType: \"uint256\",\n            name: \"orderIndex\",\n            type: \"uint256\",\n          },\n          {\n            internalType: \"uint256\",\n            name: \"itemIndex\",\n            type: \"uint256\",\n          },\n        ],\n        internalType: \"struct FulfillmentComponent[][]\",\n        name: \"\",\n        type: \"tuple[][]\",\n      },\n      {\n        components: [\n          {\n            internalType: \"uint256\",\n            name: \"orderIndex\",\n            type: \"uint256\",\n          },\n          {\n            internalType: \"uint256\",\n            name: \"itemIndex\",\n            type: \"uint256\",\n          },\n        ],\n        internalType: \"struct FulfillmentComponent[][]\",\n        name: \"\",\n        type: \"tuple[][]\",\n      },\n      {\n        internalType: \"bytes32\",\n        name: \"fulfillerConduitKey\",\n        type: \"bytes32\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"maximumFulfilled\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"fulfillAvailableOrders\",\n    outputs: [\n      {\n        internalType: \"bool[]\",\n        name: \"\",\n        type: \"bool[]\",\n      },\n      {\n        components: [\n          {\n            components: [\n              {\n                internalType: \"enum ItemType\",\n                name: \"itemType\",\n                type: \"uint8\",\n              },\n              {\n                internalType: \"address\",\n                name: \"token\",\n                type: \"address\",\n              },\n              {\n                internalType: \"uint256\",\n                name: \"identifier\",\n                type: \"uint256\",\n              },\n              {\n                internalType: \"uint256\",\n                name: \"amount\",\n                type: \"uint256\",\n              },\n              {\n                internalType: \"address payable\",\n                name: \"recipient\",\n                type: \"address\",\n              },\n            ],\n            internalType: \"struct ReceivedItem\",\n            name: \"item\",\n            type: \"tuple\",\n          },\n          {\n            internalType: \"address\",\n            name: \"offerer\",\n            type: \"address\",\n          },\n          {\n            internalType: \"bytes32\",\n            name: \"conduitKey\",\n            type: \"bytes32\",\n          },\n        ],\n        internalType: \"struct Execution[]\",\n        name: \"\",\n        type: \"tuple[]\",\n      },\n    ],\n    stateMutability: \"payable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        components: [\n          {\n            internalType: \"address\",\n            name: \"considerationToken\",\n            type: \"address\",\n          },\n          {\n            internalType: \"uint256\",\n            name: \"considerationIdentifier\",\n            type: \"uint256\",\n          },\n          {\n            internalType: \"uint256\",\n            name: \"considerationAmount\",\n            type: \"uint256\",\n          },\n          {\n            internalType: \"address payable\",\n            name: \"offerer\",\n            type: \"address\",\n          },\n          {\n            internalType: \"address\",\n            name: \"zone\",\n            type: \"address\",\n          },\n          {\n            internalType: \"address\",\n            name: \"offerToken\",\n            type: \"address\",\n          },\n          {\n            internalType: \"uint256\",\n            name: \"offerIdentifier\",\n            type: \"uint256\",\n          },\n          {\n            internalType: \"uint256\",\n            name: \"offerAmount\",\n            type: \"uint256\",\n          },\n          {\n            internalType: \"enum BasicOrderType\",\n            name: \"basicOrderType\",\n            type: \"uint8\",\n          },\n          {\n            internalType: \"uint256\",\n            name: \"startTime\",\n            type: \"uint256\",\n          },\n          {\n            internalType: \"uint256\",\n            name: \"endTime\",\n            type: \"uint256\",\n          },\n          {\n            internalType: \"bytes32\",\n            name: \"zoneHash\",\n            type: \"bytes32\",\n          },\n          {\n            internalType: \"uint256\",\n            name: \"salt\",\n            type: \"uint256\",\n          },\n          {\n            internalType: \"bytes32\",\n            name: \"offererConduitKey\",\n            type: \"bytes32\",\n          },\n          {\n            internalType: \"bytes32\",\n            name: \"fulfillerConduitKey\",\n            type: \"bytes32\",\n          },\n          {\n            internalType: \"uint256\",\n            name: \"totalOriginalAdditionalRecipients\",\n            type: \"uint256\",\n          },\n          {\n            components: [\n              {\n                internalType: \"uint256\",\n                name: \"amount\",\n                type: \"uint256\",\n              },\n              {\n                internalType: \"address payable\",\n                name: \"recipient\",\n                type: \"address\",\n              },\n            ],\n            internalType: \"struct AdditionalRecipient[]\",\n            name: \"additionalRecipients\",\n            type: \"tuple[]\",\n          },\n          {\n            internalType: \"bytes\",\n            name: \"signature\",\n            type: \"bytes\",\n          },\n        ],\n        internalType: \"struct BasicOrderParameters\",\n        name: \"parameters\",\n        type: \"tuple\",\n      },\n    ],\n    name: \"fulfillBasicOrder\",\n    outputs: [\n      {\n        internalType: \"bool\",\n        name: \"fulfilled\",\n        type: \"bool\",\n      },\n    ],\n    stateMutability: \"payable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        components: [\n          {\n            internalType: \"address\",\n            name: \"considerationToken\",\n            type: \"address\",\n          },\n          {\n            internalType: \"uint256\",\n            name: \"considerationIdentifier\",\n            type: \"uint256\",\n          },\n          {\n            internalType: \"uint256\",\n            name: \"considerationAmount\",\n            type: \"uint256\",\n          },\n          {\n            internalType: \"address payable\",\n            name: \"offerer\",\n            type: \"address\",\n          },\n          {\n            internalType: \"address\",\n            name: \"zone\",\n            type: \"address\",\n          },\n          {\n            internalType: \"address\",\n            name: \"offerToken\",\n            type: \"address\",\n          },\n          {\n            internalType: \"uint256\",\n            name: \"offerIdentifier\",\n            type: \"uint256\",\n          },\n          {\n            internalType: \"uint256\",\n            name: \"offerAmount\",\n            type: \"uint256\",\n          },\n          {\n            internalType: \"enum BasicOrderType\",\n            name: \"basicOrderType\",\n            type: \"uint8\",\n          },\n          {\n            internalType: \"uint256\",\n            name: \"startTime\",\n            type: \"uint256\",\n          },\n          {\n            internalType: \"uint256\",\n            name: \"endTime\",\n            type: \"uint256\",\n          },\n          {\n            internalType: \"bytes32\",\n            name: \"zoneHash\",\n            type: \"bytes32\",\n          },\n          {\n            internalType: \"uint256\",\n            name: \"salt\",\n            type: \"uint256\",\n          },\n          {\n            internalType: \"bytes32\",\n            name: \"offererConduitKey\",\n            type: \"bytes32\",\n          },\n          {\n            internalType: \"bytes32\",\n            name: \"fulfillerConduitKey\",\n            type: \"bytes32\",\n          },\n          {\n            internalType: \"uint256\",\n            name: \"totalOriginalAdditionalRecipients\",\n            type: \"uint256\",\n          },\n          {\n            components: [\n              {\n                internalType: \"uint256\",\n                name: \"amount\",\n                type: \"uint256\",\n              },\n              {\n                internalType: \"address payable\",\n                name: \"recipient\",\n                type: \"address\",\n              },\n            ],\n            internalType: \"struct AdditionalRecipient[]\",\n            name: \"additionalRecipients\",\n            type: \"tuple[]\",\n          },\n          {\n            internalType: \"bytes\",\n            name: \"signature\",\n            type: \"bytes\",\n          },\n        ],\n        internalType: \"struct BasicOrderParameters\",\n        name: \"parameters\",\n        type: \"tuple\",\n      },\n    ],\n    name: \"fulfillBasicOrder_efficient_6GL6yc\",\n    outputs: [\n      {\n        internalType: \"bool\",\n        name: \"fulfilled\",\n        type: \"bool\",\n      },\n    ],\n    stateMutability: \"payable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        components: [\n          {\n            components: [\n              {\n                internalType: \"address\",\n                name: \"offerer\",\n                type: \"address\",\n              },\n              {\n                internalType: \"address\",\n                name: \"zone\",\n                type: \"address\",\n              },\n              {\n                components: [\n                  {\n                    internalType: \"enum ItemType\",\n                    name: \"itemType\",\n                    type: \"uint8\",\n                  },\n                  {\n                    internalType: \"address\",\n                    name: \"token\",\n                    type: \"address\",\n                  },\n                  {\n                    internalType: \"uint256\",\n                    name: \"identifierOrCriteria\",\n                    type: \"uint256\",\n                  },\n                  {\n                    internalType: \"uint256\",\n                    name: \"startAmount\",\n                    type: \"uint256\",\n                  },\n                  {\n                    internalType: \"uint256\",\n                    name: \"endAmount\",\n                    type: \"uint256\",\n                  },\n                ],\n                internalType: \"struct OfferItem[]\",\n                name: \"offer\",\n                type: \"tuple[]\",\n              },\n              {\n                components: [\n                  {\n                    internalType: \"enum ItemType\",\n                    name: \"itemType\",\n                    type: \"uint8\",\n                  },\n                  {\n                    internalType: \"address\",\n                    name: \"token\",\n                    type: \"address\",\n                  },\n                  {\n                    internalType: \"uint256\",\n                    name: \"identifierOrCriteria\",\n                    type: \"uint256\",\n                  },\n                  {\n                    internalType: \"uint256\",\n                    name: \"startAmount\",\n                    type: \"uint256\",\n                  },\n                  {\n                    internalType: \"uint256\",\n                    name: \"endAmount\",\n                    type: \"uint256\",\n                  },\n                  {\n                    internalType: \"address payable\",\n                    name: \"recipient\",\n                    type: \"address\",\n                  },\n                ],\n                internalType: \"struct ConsiderationItem[]\",\n                name: \"consideration\",\n                type: \"tuple[]\",\n              },\n              {\n                internalType: \"enum OrderType\",\n                name: \"orderType\",\n                type: \"uint8\",\n              },\n              {\n                internalType: \"uint256\",\n                name: \"startTime\",\n                type: \"uint256\",\n              },\n              {\n                internalType: \"uint256\",\n                name: \"endTime\",\n                type: \"uint256\",\n              },\n              {\n                internalType: \"bytes32\",\n                name: \"zoneHash\",\n                type: \"bytes32\",\n              },\n              {\n                internalType: \"uint256\",\n                name: \"salt\",\n                type: \"uint256\",\n              },\n              {\n                internalType: \"bytes32\",\n                name: \"conduitKey\",\n                type: \"bytes32\",\n              },\n              {\n                internalType: \"uint256\",\n                name: \"totalOriginalConsiderationItems\",\n                type: \"uint256\",\n              },\n            ],\n            internalType: \"struct OrderParameters\",\n            name: \"parameters\",\n            type: \"tuple\",\n          },\n          {\n            internalType: \"bytes\",\n            name: \"signature\",\n            type: \"bytes\",\n          },\n        ],\n        internalType: \"struct Order\",\n        name: \"\",\n        type: \"tuple\",\n      },\n      {\n        internalType: \"bytes32\",\n        name: \"fulfillerConduitKey\",\n        type: \"bytes32\",\n      },\n    ],\n    name: \"fulfillOrder\",\n    outputs: [\n      {\n        internalType: \"bool\",\n        name: \"fulfilled\",\n        type: \"bool\",\n      },\n    ],\n    stateMutability: \"payable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"contractOfferer\",\n        type: \"address\",\n      },\n    ],\n    name: \"getContractOffererNonce\",\n    outputs: [\n      {\n        internalType: \"uint256\",\n        name: \"nonce\",\n        type: \"uint256\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"offerer\",\n        type: \"address\",\n      },\n    ],\n    name: \"getCounter\",\n    outputs: [\n      {\n        internalType: \"uint256\",\n        name: \"counter\",\n        type: \"uint256\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        components: [\n          {\n            internalType: \"address\",\n            name: \"offerer\",\n            type: \"address\",\n          },\n          {\n            internalType: \"address\",\n            name: \"zone\",\n            type: \"address\",\n          },\n          {\n            components: [\n              {\n                internalType: \"enum ItemType\",\n                name: \"itemType\",\n                type: \"uint8\",\n              },\n              {\n                internalType: \"address\",\n                name: \"token\",\n                type: \"address\",\n              },\n              {\n                internalType: \"uint256\",\n                name: \"identifierOrCriteria\",\n                type: \"uint256\",\n              },\n              {\n                internalType: \"uint256\",\n                name: \"startAmount\",\n                type: \"uint256\",\n              },\n              {\n                internalType: \"uint256\",\n                name: \"endAmount\",\n                type: \"uint256\",\n              },\n            ],\n            internalType: \"struct OfferItem[]\",\n            name: \"offer\",\n            type: \"tuple[]\",\n          },\n          {\n            components: [\n              {\n                internalType: \"enum ItemType\",\n                name: \"itemType\",\n                type: \"uint8\",\n              },\n              {\n                internalType: \"address\",\n                name: \"token\",\n                type: \"address\",\n              },\n              {\n                internalType: \"uint256\",\n                name: \"identifierOrCriteria\",\n                type: \"uint256\",\n              },\n              {\n                internalType: \"uint256\",\n                name: \"startAmount\",\n                type: \"uint256\",\n              },\n              {\n                internalType: \"uint256\",\n                name: \"endAmount\",\n                type: \"uint256\",\n              },\n              {\n                internalType: \"address payable\",\n                name: \"recipient\",\n                type: \"address\",\n              },\n            ],\n            internalType: \"struct ConsiderationItem[]\",\n            name: \"consideration\",\n            type: \"tuple[]\",\n          },\n          {\n            internalType: \"enum OrderType\",\n            name: \"orderType\",\n            type: \"uint8\",\n          },\n          {\n            internalType: \"uint256\",\n            name: \"startTime\",\n            type: \"uint256\",\n          },\n          {\n            internalType: \"uint256\",\n            name: \"endTime\",\n            type: \"uint256\",\n          },\n          {\n            internalType: \"bytes32\",\n            name: \"zoneHash\",\n            type: \"bytes32\",\n          },\n          {\n            internalType: \"uint256\",\n            name: \"salt\",\n            type: \"uint256\",\n          },\n          {\n            internalType: \"bytes32\",\n            name: \"conduitKey\",\n            type: \"bytes32\",\n          },\n          {\n            internalType: \"uint256\",\n            name: \"counter\",\n            type: \"uint256\",\n          },\n        ],\n        internalType: \"struct OrderComponents\",\n        name: \"\",\n        type: \"tuple\",\n      },\n    ],\n    name: \"getOrderHash\",\n    outputs: [\n      {\n        internalType: \"bytes32\",\n        name: \"orderHash\",\n        type: \"bytes32\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"bytes32\",\n        name: \"orderHash\",\n        type: \"bytes32\",\n      },\n    ],\n    name: \"getOrderStatus\",\n    outputs: [\n      {\n        internalType: \"bool\",\n        name: \"isValidated\",\n        type: \"bool\",\n      },\n      {\n        internalType: \"bool\",\n        name: \"isCancelled\",\n        type: \"bool\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"totalFilled\",\n        type: \"uint256\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"totalSize\",\n        type: \"uint256\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [],\n    name: \"incrementCounter\",\n    outputs: [\n      {\n        internalType: \"uint256\",\n        name: \"newCounter\",\n        type: \"uint256\",\n      },\n    ],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [],\n    name: \"information\",\n    outputs: [\n      {\n        internalType: \"string\",\n        name: \"version\",\n        type: \"string\",\n      },\n      {\n        internalType: \"bytes32\",\n        name: \"domainSeparator\",\n        type: \"bytes32\",\n      },\n      {\n        internalType: \"address\",\n        name: \"conduitController\",\n        type: \"address\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        components: [\n          {\n            components: [\n              {\n                internalType: \"address\",\n                name: \"offerer\",\n                type: \"address\",\n              },\n              {\n                internalType: \"address\",\n                name: \"zone\",\n                type: \"address\",\n              },\n              {\n                components: [\n                  {\n                    internalType: \"enum ItemType\",\n                    name: \"itemType\",\n                    type: \"uint8\",\n                  },\n                  {\n                    internalType: \"address\",\n                    name: \"token\",\n                    type: \"address\",\n                  },\n                  {\n                    internalType: \"uint256\",\n                    name: \"identifierOrCriteria\",\n                    type: \"uint256\",\n                  },\n                  {\n                    internalType: \"uint256\",\n                    name: \"startAmount\",\n                    type: \"uint256\",\n                  },\n                  {\n                    internalType: \"uint256\",\n                    name: \"endAmount\",\n                    type: \"uint256\",\n                  },\n                ],\n                internalType: \"struct OfferItem[]\",\n                name: \"offer\",\n                type: \"tuple[]\",\n              },\n              {\n                components: [\n                  {\n                    internalType: \"enum ItemType\",\n                    name: \"itemType\",\n                    type: \"uint8\",\n                  },\n                  {\n                    internalType: \"address\",\n                    name: \"token\",\n                    type: \"address\",\n                  },\n                  {\n                    internalType: \"uint256\",\n                    name: \"identifierOrCriteria\",\n                    type: \"uint256\",\n                  },\n                  {\n                    internalType: \"uint256\",\n                    name: \"startAmount\",\n                    type: \"uint256\",\n                  },\n                  {\n                    internalType: \"uint256\",\n                    name: \"endAmount\",\n                    type: \"uint256\",\n                  },\n                  {\n                    internalType: \"address payable\",\n                    name: \"recipient\",\n                    type: \"address\",\n                  },\n                ],\n                internalType: \"struct ConsiderationItem[]\",\n                name: \"consideration\",\n                type: \"tuple[]\",\n              },\n              {\n                internalType: \"enum OrderType\",\n                name: \"orderType\",\n                type: \"uint8\",\n              },\n              {\n                internalType: \"uint256\",\n                name: \"startTime\",\n                type: \"uint256\",\n              },\n              {\n                internalType: \"uint256\",\n                name: \"endTime\",\n                type: \"uint256\",\n              },\n              {\n                internalType: \"bytes32\",\n                name: \"zoneHash\",\n                type: \"bytes32\",\n              },\n              {\n                internalType: \"uint256\",\n                name: \"salt\",\n                type: \"uint256\",\n              },\n              {\n                internalType: \"bytes32\",\n                name: \"conduitKey\",\n                type: \"bytes32\",\n              },\n              {\n                internalType: \"uint256\",\n                name: \"totalOriginalConsiderationItems\",\n                type: \"uint256\",\n              },\n            ],\n            internalType: \"struct OrderParameters\",\n            name: \"parameters\",\n            type: \"tuple\",\n          },\n          {\n            internalType: \"uint120\",\n            name: \"numerator\",\n            type: \"uint120\",\n          },\n          {\n            internalType: \"uint120\",\n            name: \"denominator\",\n            type: \"uint120\",\n          },\n          {\n            internalType: \"bytes\",\n            name: \"signature\",\n            type: \"bytes\",\n          },\n          {\n            internalType: \"bytes\",\n            name: \"extraData\",\n            type: \"bytes\",\n          },\n        ],\n        internalType: \"struct AdvancedOrder[]\",\n        name: \"\",\n        type: \"tuple[]\",\n      },\n      {\n        components: [\n          {\n            internalType: \"uint256\",\n            name: \"orderIndex\",\n            type: \"uint256\",\n          },\n          {\n            internalType: \"enum Side\",\n            name: \"side\",\n            type: \"uint8\",\n          },\n          {\n            internalType: \"uint256\",\n            name: \"index\",\n            type: \"uint256\",\n          },\n          {\n            internalType: \"uint256\",\n            name: \"identifier\",\n            type: \"uint256\",\n          },\n          {\n            internalType: \"bytes32[]\",\n            name: \"criteriaProof\",\n            type: \"bytes32[]\",\n          },\n        ],\n        internalType: \"struct CriteriaResolver[]\",\n        name: \"\",\n        type: \"tuple[]\",\n      },\n      {\n        components: [\n          {\n            components: [\n              {\n                internalType: \"uint256\",\n                name: \"orderIndex\",\n                type: \"uint256\",\n              },\n              {\n                internalType: \"uint256\",\n                name: \"itemIndex\",\n                type: \"uint256\",\n              },\n            ],\n            internalType: \"struct FulfillmentComponent[]\",\n            name: \"offerComponents\",\n            type: \"tuple[]\",\n          },\n          {\n            components: [\n              {\n                internalType: \"uint256\",\n                name: \"orderIndex\",\n                type: \"uint256\",\n              },\n              {\n                internalType: \"uint256\",\n                name: \"itemIndex\",\n                type: \"uint256\",\n              },\n            ],\n            internalType: \"struct FulfillmentComponent[]\",\n            name: \"considerationComponents\",\n            type: \"tuple[]\",\n          },\n        ],\n        internalType: \"struct Fulfillment[]\",\n        name: \"\",\n        type: \"tuple[]\",\n      },\n      {\n        internalType: \"address\",\n        name: \"recipient\",\n        type: \"address\",\n      },\n    ],\n    name: \"matchAdvancedOrders\",\n    outputs: [\n      {\n        components: [\n          {\n            components: [\n              {\n                internalType: \"enum ItemType\",\n                name: \"itemType\",\n                type: \"uint8\",\n              },\n              {\n                internalType: \"address\",\n                name: \"token\",\n                type: \"address\",\n              },\n              {\n                internalType: \"uint256\",\n                name: \"identifier\",\n                type: \"uint256\",\n              },\n              {\n                internalType: \"uint256\",\n                name: \"amount\",\n                type: \"uint256\",\n              },\n              {\n                internalType: \"address payable\",\n                name: \"recipient\",\n                type: \"address\",\n              },\n            ],\n            internalType: \"struct ReceivedItem\",\n            name: \"item\",\n            type: \"tuple\",\n          },\n          {\n            internalType: \"address\",\n            name: \"offerer\",\n            type: \"address\",\n          },\n          {\n            internalType: \"bytes32\",\n            name: \"conduitKey\",\n            type: \"bytes32\",\n          },\n        ],\n        internalType: \"struct Execution[]\",\n        name: \"\",\n        type: \"tuple[]\",\n      },\n    ],\n    stateMutability: \"payable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        components: [\n          {\n            components: [\n              {\n                internalType: \"address\",\n                name: \"offerer\",\n                type: \"address\",\n              },\n              {\n                internalType: \"address\",\n                name: \"zone\",\n                type: \"address\",\n              },\n              {\n                components: [\n                  {\n                    internalType: \"enum ItemType\",\n                    name: \"itemType\",\n                    type: \"uint8\",\n                  },\n                  {\n                    internalType: \"address\",\n                    name: \"token\",\n                    type: \"address\",\n                  },\n                  {\n                    internalType: \"uint256\",\n                    name: \"identifierOrCriteria\",\n                    type: \"uint256\",\n                  },\n                  {\n                    internalType: \"uint256\",\n                    name: \"startAmount\",\n                    type: \"uint256\",\n                  },\n                  {\n                    internalType: \"uint256\",\n                    name: \"endAmount\",\n                    type: \"uint256\",\n                  },\n                ],\n                internalType: \"struct OfferItem[]\",\n                name: \"offer\",\n                type: \"tuple[]\",\n              },\n              {\n                components: [\n                  {\n                    internalType: \"enum ItemType\",\n                    name: \"itemType\",\n                    type: \"uint8\",\n                  },\n                  {\n                    internalType: \"address\",\n                    name: \"token\",\n                    type: \"address\",\n                  },\n                  {\n                    internalType: \"uint256\",\n                    name: \"identifierOrCriteria\",\n                    type: \"uint256\",\n                  },\n                  {\n                    internalType: \"uint256\",\n                    name: \"startAmount\",\n                    type: \"uint256\",\n                  },\n                  {\n                    internalType: \"uint256\",\n                    name: \"endAmount\",\n                    type: \"uint256\",\n                  },\n                  {\n                    internalType: \"address payable\",\n                    name: \"recipient\",\n                    type: \"address\",\n                  },\n                ],\n                internalType: \"struct ConsiderationItem[]\",\n                name: \"consideration\",\n                type: \"tuple[]\",\n              },\n              {\n                internalType: \"enum OrderType\",\n                name: \"orderType\",\n                type: \"uint8\",\n              },\n              {\n                internalType: \"uint256\",\n                name: \"startTime\",\n                type: \"uint256\",\n              },\n              {\n                internalType: \"uint256\",\n                name: \"endTime\",\n                type: \"uint256\",\n              },\n              {\n                internalType: \"bytes32\",\n                name: \"zoneHash\",\n                type: \"bytes32\",\n              },\n              {\n                internalType: \"uint256\",\n                name: \"salt\",\n                type: \"uint256\",\n              },\n              {\n                internalType: \"bytes32\",\n                name: \"conduitKey\",\n                type: \"bytes32\",\n              },\n              {\n                internalType: \"uint256\",\n                name: \"totalOriginalConsiderationItems\",\n                type: \"uint256\",\n              },\n            ],\n            internalType: \"struct OrderParameters\",\n            name: \"parameters\",\n            type: \"tuple\",\n          },\n          {\n            internalType: \"bytes\",\n            name: \"signature\",\n            type: \"bytes\",\n          },\n        ],\n        internalType: \"struct Order[]\",\n        name: \"\",\n        type: \"tuple[]\",\n      },\n      {\n        components: [\n          {\n            components: [\n              {\n                internalType: \"uint256\",\n                name: \"orderIndex\",\n                type: \"uint256\",\n              },\n              {\n                internalType: \"uint256\",\n                name: \"itemIndex\",\n                type: \"uint256\",\n              },\n            ],\n            internalType: \"struct FulfillmentComponent[]\",\n            name: \"offerComponents\",\n            type: \"tuple[]\",\n          },\n          {\n            components: [\n              {\n                internalType: \"uint256\",\n                name: \"orderIndex\",\n                type: \"uint256\",\n              },\n              {\n                internalType: \"uint256\",\n                name: \"itemIndex\",\n                type: \"uint256\",\n              },\n            ],\n            internalType: \"struct FulfillmentComponent[]\",\n            name: \"considerationComponents\",\n            type: \"tuple[]\",\n          },\n        ],\n        internalType: \"struct Fulfillment[]\",\n        name: \"\",\n        type: \"tuple[]\",\n      },\n    ],\n    name: \"matchOrders\",\n    outputs: [\n      {\n        components: [\n          {\n            components: [\n              {\n                internalType: \"enum ItemType\",\n                name: \"itemType\",\n                type: \"uint8\",\n              },\n              {\n                internalType: \"address\",\n                name: \"token\",\n                type: \"address\",\n              },\n              {\n                internalType: \"uint256\",\n                name: \"identifier\",\n                type: \"uint256\",\n              },\n              {\n                internalType: \"uint256\",\n                name: \"amount\",\n                type: \"uint256\",\n              },\n              {\n                internalType: \"address payable\",\n                name: \"recipient\",\n                type: \"address\",\n              },\n            ],\n            internalType: \"struct ReceivedItem\",\n            name: \"item\",\n            type: \"tuple\",\n          },\n          {\n            internalType: \"address\",\n            name: \"offerer\",\n            type: \"address\",\n          },\n          {\n            internalType: \"bytes32\",\n            name: \"conduitKey\",\n            type: \"bytes32\",\n          },\n        ],\n        internalType: \"struct Execution[]\",\n        name: \"\",\n        type: \"tuple[]\",\n      },\n    ],\n    stateMutability: \"payable\",\n    type: \"function\",\n  },\n  {\n    inputs: [],\n    name: \"name\",\n    outputs: [\n      {\n        internalType: \"string\",\n        name: \"\",\n        type: \"string\",\n      },\n    ],\n    stateMutability: \"pure\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        components: [\n          {\n            components: [\n              {\n                internalType: \"address\",\n                name: \"offerer\",\n                type: \"address\",\n              },\n              {\n                internalType: \"address\",\n                name: \"zone\",\n                type: \"address\",\n              },\n              {\n                components: [\n                  {\n                    internalType: \"enum ItemType\",\n                    name: \"itemType\",\n                    type: \"uint8\",\n                  },\n                  {\n                    internalType: \"address\",\n                    name: \"token\",\n                    type: \"address\",\n                  },\n                  {\n                    internalType: \"uint256\",\n                    name: \"identifierOrCriteria\",\n                    type: \"uint256\",\n                  },\n                  {\n                    internalType: \"uint256\",\n                    name: \"startAmount\",\n                    type: \"uint256\",\n                  },\n                  {\n                    internalType: \"uint256\",\n                    name: \"endAmount\",\n                    type: \"uint256\",\n                  },\n                ],\n                internalType: \"struct OfferItem[]\",\n                name: \"offer\",\n                type: \"tuple[]\",\n              },\n              {\n                components: [\n                  {\n                    internalType: \"enum ItemType\",\n                    name: \"itemType\",\n                    type: \"uint8\",\n                  },\n                  {\n                    internalType: \"address\",\n                    name: \"token\",\n                    type: \"address\",\n                  },\n                  {\n                    internalType: \"uint256\",\n                    name: \"identifierOrCriteria\",\n                    type: \"uint256\",\n                  },\n                  {\n                    internalType: \"uint256\",\n                    name: \"startAmount\",\n                    type: \"uint256\",\n                  },\n                  {\n                    internalType: \"uint256\",\n                    name: \"endAmount\",\n                    type: \"uint256\",\n                  },\n                  {\n                    internalType: \"address payable\",\n                    name: \"recipient\",\n                    type: \"address\",\n                  },\n                ],\n                internalType: \"struct ConsiderationItem[]\",\n                name: \"consideration\",\n                type: \"tuple[]\",\n              },\n              {\n                internalType: \"enum OrderType\",\n                name: \"orderType\",\n                type: \"uint8\",\n              },\n              {\n                internalType: \"uint256\",\n                name: \"startTime\",\n                type: \"uint256\",\n              },\n              {\n                internalType: \"uint256\",\n                name: \"endTime\",\n                type: \"uint256\",\n              },\n              {\n                internalType: \"bytes32\",\n                name: \"zoneHash\",\n                type: \"bytes32\",\n              },\n              {\n                internalType: \"uint256\",\n                name: \"salt\",\n                type: \"uint256\",\n              },\n              {\n                internalType: \"bytes32\",\n                name: \"conduitKey\",\n                type: \"bytes32\",\n              },\n              {\n                internalType: \"uint256\",\n                name: \"totalOriginalConsiderationItems\",\n                type: \"uint256\",\n              },\n            ],\n            internalType: \"struct OrderParameters\",\n            name: \"parameters\",\n            type: \"tuple\",\n          },\n          {\n            internalType: \"bytes\",\n            name: \"signature\",\n            type: \"bytes\",\n          },\n        ],\n        internalType: \"struct Order[]\",\n        name: \"\",\n        type: \"tuple[]\",\n      },\n    ],\n    name: \"validate\",\n    outputs: [\n      {\n        internalType: \"bool\",\n        name: \"\",\n        type: \"bool\",\n      },\n    ],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    stateMutability: \"payable\",\n    type: \"receive\",\n  },\n] as const;\n", "import { Address, encodeAbiParameters, PublicClient } from 'viem';\n\nimport { LoanV4 } from '@/blockchain';\nimport { Wallet } from '@/clients/contracts';\nimport { auctionLoanLiquidatorABI as auctionLoanLiquidatorABIV4 } from '@/generated/blockchain/v4';\n\nimport { AllV6 } from './AllV6';\nimport { BaseContract } from './BaseContract';\n\nexport class AllV4 extends BaseContract<typeof auctionLoanLiquidatorABIV4> {\n  static LOAN_SETTLEMENT_ENCODE_TYPES = [\n    {\n      name: '',\n      type: 'tuple',\n      components: [\n        { name: 'borrower', type: 'address' },\n        { name: 'nftCollateralTokenId', type: 'uint256' },\n        { name: 'nftCollateralAddress', type: 'address' },\n        { name: 'principalAddress', type: 'address' },\n        { name: 'principalAmount', type: 'uint256' },\n        { name: 'startTime', type: 'uint256' },\n        { name: 'duration', type: 'uint256' },\n        {\n          name: 'source',\n          type: 'tuple[]',\n          components: [\n            { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n            { name: 'lender', internalType: 'address', type: 'address' },\n            {\n              name: 'principalAmount',\n              internalType: 'uint256',\n              type: 'uint256',\n            },\n            {\n              name: 'accruedInterest',\n              internalType: 'uint256',\n              type: 'uint256',\n            },\n            { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n            { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n          ],\n        },\n      ],\n    },\n  ];\n\n  constructor({\n    walletClient,\n    address,\n    publicClient,\n  }: {\n    walletClient: Wallet;\n    address: Address;\n    publicClient?: PublicClient;\n  }) {\n    super({\n      walletClient,\n      address,\n      abi: auctionLoanLiquidatorABIV4,\n      publicClient,\n    });\n  }\n\n  async placeBid({\n    collectionContractAddress,\n    tokenId,\n    bid,\n  }: {\n    collectionContractAddress: Address;\n    tokenId: bigint;\n    bid: bigint;\n  }) {\n    const txHash = await this.safeContractWrite.placeBid([collectionContractAddress, tokenId, bid]);\n    return {\n      txHash,\n      waitTxInBlock: async () => {\n        const receipt = await this.bcClient.waitForTransactionReceipt({\n          hash: txHash,\n        });\n        const events = this.parseEventLogs('BidPlaced', receipt.logs);\n        if (events.length === 0) throw new Error('Bid not placed');\n        return { ...events[0].args, ...receipt };\n      },\n    };\n  }\n\n  getRemainingLockupSeconds() {\n    return 0;\n  }\n\n  async settleAuctionWithBuyout(): ReturnType<AllV6['settleAuctionWithBuyout']> {\n    throw new Error('Not implemented for V1');\n  }\n\n  async settleAuction({ loan }: { loan: LoanV4 }) {\n    const loanStruct = {\n      ...loan,\n      source: loan.source.map((source) => [\n        Number(source.loanId),\n        source.lender,\n        source.principalAmount,\n        source.accruedInterest,\n        source.startTime,\n        source.aprBps,\n      ]),\n    };\n\n    const txHash = await this.safeContractWrite.settleAuction([\n      loan.nftCollateralAddress,\n      loan.nftCollateralTokenId,\n      encodeAbiParameters(AllV4.LOAN_SETTLEMENT_ENCODE_TYPES, [loanStruct]),\n    ]);\n\n    return {\n      txHash,\n      waitTxInBlock: async () => {\n        const receipt = await this.bcClient.waitForTransactionReceipt({\n          hash: txHash,\n        });\n        const events = this.parseEventLogs('AuctionSettled', receipt.logs);\n        if (events.length === 0) throw new Error('Auction not settled');\n        return { ...events[0].args, ...receipt };\n      },\n    };\n  }\n}\n", "// Generated by @wagmi/cli@1.1.0 on 7/10/2023 at 8:24:47 PM\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// AddressManager\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const addressManagerABI = [\n  {\n    stateMutability: 'nonpayable',\n    type: 'constructor',\n    inputs: [{ name: '_original', internalType: 'address[]', type: 'address[]' }],\n  },\n  {\n    type: 'error',\n    inputs: [{ name: '_address', internalType: 'address', type: 'address' }],\n    name: 'AddressAlreadyAddedError',\n  },\n  {\n    type: 'error',\n    inputs: [{ name: '_address', internalType: 'address', type: 'address' }],\n    name: 'AddressNotAddedError',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'address_added', internalType: 'address', type: 'address', indexed: false }],\n    name: 'AddressAdded',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'address_removed', internalType: 'address', type: 'address', indexed: false }],\n    name: 'AddressRemovedFromWhitelist',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'address_whitelisted', internalType: 'address', type: 'address', indexed: false },\n    ],\n    name: 'AddressWhitelisted',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'user', internalType: 'address', type: 'address', indexed: true },\n      { name: 'newOwner', internalType: 'address', type: 'address', indexed: true },\n    ],\n    name: 'OwnershipTransferred',\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: '_entry', internalType: 'address', type: 'address' }],\n    name: 'add',\n    outputs: [{ name: '', internalType: 'uint16', type: 'uint16' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: '_entry', internalType: 'address', type: 'address' }],\n    name: 'addToWhitelist',\n    outputs: [],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: '_address', internalType: 'address', type: 'address' }],\n    name: 'addressToIndex',\n    outputs: [{ name: '', internalType: 'uint16', type: 'uint16' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: '_index', internalType: 'uint16', type: 'uint16' }],\n    name: 'indexToAddress',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: '_entry', internalType: 'address', type: 'address' }],\n    name: 'isWhitelisted',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'owner',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: '_entry', internalType: 'address', type: 'address' }],\n    name: 'removeFromWhitelist',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: 'newOwner', internalType: 'address', type: 'address' }],\n    name: 'transferOwnership',\n    outputs: [],\n  },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// AuctionLoanLiquidator\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const auctionLoanLiquidatorABI = [\n  {\n    stateMutability: 'nonpayable',\n    type: 'constructor',\n    inputs: [\n      { name: 'currencyManager', internalType: 'address', type: 'address' },\n      { name: 'collectionManager', internalType: 'address', type: 'address' },\n      { name: 'triggerFee', internalType: 'uint256', type: 'uint256' },\n    ],\n  },\n  { type: 'error', inputs: [], name: 'AuctionAlreadyInProgressError' },\n  {\n    type: 'error',\n    inputs: [\n      { name: '_contract', internalType: 'address', type: 'address' },\n      { name: '_tokenId', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'AuctionNotExistsError',\n  },\n  {\n    type: 'error',\n    inputs: [{ name: '_expiration', internalType: 'uint96', type: 'uint96' }],\n    name: 'AuctionNotOverError',\n  },\n  {\n    type: 'error',\n    inputs: [{ name: '_expiration', internalType: 'uint96', type: 'uint96' }],\n    name: 'AuctionOverError',\n  },\n  { type: 'error', inputs: [], name: 'CollectionNotWhitelistedError' },\n  { type: 'error', inputs: [], name: 'CurrencyNotWhitelistedError' },\n  {\n    type: 'error',\n    inputs: [{ name: 'triggerFee', internalType: 'uint256', type: 'uint256' }],\n    name: 'InvalidTriggerFee',\n  },\n  {\n    type: 'error',\n    inputs: [{ name: '_loan', internalType: 'address', type: 'address' }],\n    name: 'LoanNotAcceptedError',\n  },\n  {\n    type: 'error',\n    inputs: [{ name: '_minBid', internalType: 'uint256', type: 'uint256' }],\n    name: 'MinBidError',\n  },\n  {\n    type: 'error',\n    inputs: [{ name: '_owner', internalType: 'address', type: 'address' }],\n    name: 'NFTNotOwnedError',\n  },\n  { type: 'error', inputs: [], name: 'NoBidsError' },\n  { type: 'error', inputs: [], name: 'ZeroAddressError' },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'loanContract', internalType: 'address', type: 'address', indexed: false },\n      { name: 'loanId', internalType: 'uint256', type: 'uint256', indexed: false },\n      { name: 'auctionContract', internalType: 'address', type: 'address', indexed: false },\n      { name: 'tokenId', internalType: 'uint256', type: 'uint256', indexed: false },\n      { name: 'asset', internalType: 'address', type: 'address', indexed: false },\n      { name: 'highestBid', internalType: 'uint256', type: 'uint256', indexed: false },\n      { name: 'settler', internalType: 'address', type: 'address', indexed: false },\n      { name: 'triggerFee', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'AuctionSettled',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'auctionContract', internalType: 'address', type: 'address', indexed: false },\n      { name: 'tokenId', internalType: 'uint256', type: 'uint256', indexed: false },\n      { name: 'newBidder', internalType: 'address', type: 'address', indexed: false },\n      { name: 'bid', internalType: 'uint256', type: 'uint256', indexed: false },\n      { name: 'loanAddress', internalType: 'address', type: 'address', indexed: false },\n      { name: 'loanId', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'BidPlaced',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'loan', internalType: 'address', type: 'address', indexed: false }],\n    name: 'LoanContractAdded',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'loan', internalType: 'address', type: 'address', indexed: false }],\n    name: 'LoanContractRemoved',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'loanAddress', internalType: 'address', type: 'address', indexed: false },\n      { name: 'loanId', internalType: 'uint256', type: 'uint256', indexed: false },\n      { name: 'duration', internalType: 'uint96', type: 'uint96', indexed: false },\n      { name: 'asset', internalType: 'address', type: 'address', indexed: false },\n    ],\n    name: 'LoanLiquidationStarted',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'user', internalType: 'address', type: 'address', indexed: true },\n      { name: 'newOwner', internalType: 'address', type: 'address', indexed: true },\n    ],\n    name: 'OwnershipTransferred',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'triggerFee', internalType: 'uint256', type: 'uint256', indexed: false }],\n    name: 'TriggerFeeUpdated',\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'MAX_TRIGGER_FEE',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'MIN_INCREMENT_BPS',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: '_loanContract', internalType: 'address', type: 'address' }],\n    name: 'addLoanContract',\n    outputs: [],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [\n      { name: '_contract', internalType: 'address', type: 'address' },\n      { name: '_tokenId', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'getAuction',\n    outputs: [\n      {\n        name: '',\n        internalType: 'struct AuctionLoanLiquidator.Auction',\n        type: 'tuple',\n        components: [\n          { name: 'loanAddress', internalType: 'address', type: 'address' },\n          { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n          { name: 'highestBid', internalType: 'uint256', type: 'uint256' },\n          { name: 'highestBidder', internalType: 'address', type: 'address' },\n          { name: 'duration', internalType: 'uint96', type: 'uint96' },\n          { name: 'asset', internalType: 'address', type: 'address' },\n          { name: 'startTime', internalType: 'uint96', type: 'uint96' },\n          { name: 'originator', internalType: 'address', type: 'address' },\n          { name: 'lastBidTime', internalType: 'uint96', type: 'uint96' },\n        ],\n      },\n    ],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getTriggerFee',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getValidLoanContracts',\n    outputs: [{ name: '', internalType: 'address[]', type: 'address[]' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: '_loanId', internalType: 'uint256', type: 'uint256' },\n      { name: '_contract', internalType: 'address', type: 'address' },\n      { name: '_tokenId', internalType: 'uint256', type: 'uint256' },\n      { name: '_asset', internalType: 'address', type: 'address' },\n      { name: '_duration', internalType: 'uint96', type: 'uint96' },\n      { name: '_originator', internalType: 'address', type: 'address' },\n    ],\n    name: 'liquidateLoan',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'uint256', type: 'uint256' },\n      { name: '', internalType: 'bytes', type: 'bytes' },\n    ],\n    name: 'onERC721Received',\n    outputs: [{ name: '', internalType: 'bytes4', type: 'bytes4' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'owner',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: '_contract', internalType: 'address', type: 'address' },\n      { name: '_tokenId', internalType: 'uint256', type: 'uint256' },\n      { name: '_bid', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'placeBid',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: '_loanContract', internalType: 'address', type: 'address' }],\n    name: 'removeLoanContract',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: '_contract', internalType: 'address', type: 'address' },\n      { name: '_tokenId', internalType: 'uint256', type: 'uint256' },\n      { name: '_loan', internalType: 'bytes', type: 'bytes' },\n    ],\n    name: 'settleAuction',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: 'newOwner', internalType: 'address', type: 'address' }],\n    name: 'transferOwnership',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: 'triggerFee', internalType: 'uint256', type: 'uint256' }],\n    name: 'updateTriggerFee',\n    outputs: [],\n  },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// BaseLoan\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const baseLoanABI = [\n  { type: 'error', inputs: [], name: 'AddressZeroError' },\n  {\n    type: 'error',\n    inputs: [\n      { name: '_lender', internalType: 'address', type: 'address' },\n      { name: '_offerId', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'CancelledOrExecutedOfferError',\n  },\n  {\n    type: 'error',\n    inputs: [\n      { name: '_lender', internalType: 'address', type: 'address' },\n      { name: '_offerId', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'CancelledRenegotiationOffer',\n  },\n  {\n    type: 'error',\n    inputs: [\n      { name: '_lender', internalType: 'address', type: 'address' },\n      { name: '_renegotiationId', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'CancelledRenegotiationOfferError',\n  },\n  { type: 'error', inputs: [], name: 'CannotLiquidateError' },\n  { type: 'error', inputs: [], name: 'CollectionNotWhitelistedError' },\n  { type: 'error', inputs: [], name: 'CurrencyNotWhitelistedError' },\n  { type: 'error', inputs: [], name: 'ExpiredLoanError' },\n  {\n    type: 'error',\n    inputs: [{ name: '_expirationTime', internalType: 'uint256', type: 'uint256' }],\n    name: 'ExpiredOfferError',\n  },\n  {\n    type: 'error',\n    inputs: [{ name: '_expirationTime', internalType: 'uint256', type: 'uint256' }],\n    name: 'ExpiredRenegotiationOfferError',\n  },\n  { type: 'error', inputs: [], name: 'InvalidBorrowerError' },\n  { type: 'error', inputs: [], name: 'InvalidCollateralIdError' },\n  { type: 'error', inputs: [], name: 'InvalidLiquidationError' },\n  {\n    type: 'error',\n    inputs: [{ name: '_loanId', internalType: 'uint256', type: 'uint256' }],\n    name: 'InvalidLoanError',\n  },\n  {\n    type: 'error',\n    inputs: [{ name: '_fraction', internalType: 'uint256', type: 'uint256' }],\n    name: 'InvalidProtocolFeeError',\n  },\n  { type: 'error', inputs: [], name: 'InvalidSignatureError' },\n  { type: 'error', inputs: [], name: 'InvalidSignerError' },\n  {\n    type: 'error',\n    inputs: [{ name: '_liquidator', internalType: 'address', type: 'address' }],\n    name: 'LiquidatorOnlyError',\n  },\n  {\n    type: 'error',\n    inputs: [{ name: '_expirationTime', internalType: 'uint256', type: 'uint256' }],\n    name: 'LoanNotDueError',\n  },\n  {\n    type: 'error',\n    inputs: [{ name: '_loanId', internalType: 'uint256', type: 'uint256' }],\n    name: 'LoanNotFoundError',\n  },\n  {\n    type: 'error',\n    inputs: [\n      { name: '_lender', internalType: 'address', type: 'address' },\n      { name: '_newMinOfferId', internalType: 'uint256', type: 'uint256' },\n      { name: '_minOfferId', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'LowOfferIdError',\n  },\n  {\n    type: 'error',\n    inputs: [\n      { name: '_lender', internalType: 'address', type: 'address' },\n      { name: '_newMinRenegotiationOfferId', internalType: 'uint256', type: 'uint256' },\n      { name: '_minOfferId', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'LowRenegotiationOfferIdError',\n  },\n  { type: 'error', inputs: [], name: 'MaxCapacityExceededError' },\n  {\n    type: 'error',\n    inputs: [{ name: '_id', internalType: 'uint256', type: 'uint256' }],\n    name: 'NotMintedError',\n  },\n  { type: 'error', inputs: [], name: 'NotStrictlyImprovedError' },\n  { type: 'error', inputs: [], name: 'OnlyBorrowerCallableError' },\n  { type: 'error', inputs: [], name: 'OnlyLenderOrSignerCallableError' },\n  { type: 'error', inputs: [], name: 'RepaymentError' },\n  {\n    type: 'error',\n    inputs: [{ name: '_pendingProtocolFeeSetTime', internalType: 'uint256', type: 'uint256' }],\n    name: 'TooEarlyError',\n  },\n  { type: 'error', inputs: [], name: 'Unauthorized' },\n  {\n    type: 'error',\n    inputs: [{ name: '_authorized', internalType: 'address', type: 'address' }],\n    name: 'UnauthorizedError',\n  },\n  { type: 'error', inputs: [], name: 'ZeroAddressError' },\n  { type: 'error', inputs: [], name: 'ZeroDurationError' },\n  { type: 'error', inputs: [], name: 'ZeroInterestError' },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'lender', internalType: 'address', type: 'address', indexed: false },\n      { name: 'minOfferId', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'AllOffersCancelled',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'lender', internalType: 'address', type: 'address', indexed: false },\n      { name: 'minRenegotiationId', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'AllRenegotiationOffersCancelled',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'lender', internalType: 'address', type: 'address', indexed: false },\n      { name: 'signer', internalType: 'address', type: 'address', indexed: false },\n    ],\n    name: 'ApprovedSigner',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      {\n        name: 'minimum',\n        internalType: 'struct IBaseLoan.ImprovementMinimum',\n        type: 'tuple',\n        components: [\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'interest', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n        ],\n        indexed: false,\n      },\n    ],\n    name: 'ImprovementMinimumUpdated',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'newDuration', internalType: 'uint256', type: 'uint256', indexed: false }],\n    name: 'LiquidationAuctionDurationUpdated',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'liquidator', internalType: 'address', type: 'address', indexed: false }],\n    name: 'LiquidationContractUpdated',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'loanId', internalType: 'uint256', type: 'uint256', indexed: false }],\n    name: 'LoanForeclosed',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'loanId', internalType: 'uint256', type: 'uint256', indexed: false },\n      { name: 'repayment', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'LoanLiquidated',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'loanId', internalType: 'uint256', type: 'uint256', indexed: false },\n      { name: 'liquidator', internalType: 'address', type: 'address', indexed: false },\n    ],\n    name: 'LoanSentToLiquidator',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'lender', internalType: 'address', type: 'address', indexed: false },\n      { name: 'offerId', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'OfferCancelled',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'user', internalType: 'address', type: 'address', indexed: true },\n      { name: 'newOwner', internalType: 'address', type: 'address', indexed: true },\n    ],\n    name: 'OwnershipTransferred',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      {\n        name: 'fee',\n        internalType: 'struct IBaseLoan.ProtocolFee',\n        type: 'tuple',\n        components: [\n          { name: 'recipient', internalType: 'address', type: 'address' },\n          { name: 'fraction', internalType: 'uint256', type: 'uint256' },\n        ],\n        indexed: false,\n      },\n    ],\n    name: 'ProtocolFeePendingUpdate',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      {\n        name: 'fee',\n        internalType: 'struct IBaseLoan.ProtocolFee',\n        type: 'tuple',\n        components: [\n          { name: 'recipient', internalType: 'address', type: 'address' },\n          { name: 'fraction', internalType: 'uint256', type: 'uint256' },\n        ],\n        indexed: false,\n      },\n    ],\n    name: 'ProtocolFeeUpdated',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'lender', internalType: 'address', type: 'address', indexed: false },\n      { name: 'renegotiationId', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'RenegotiationOfferCancelled',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'contract_added', internalType: 'address', type: 'address', indexed: false }],\n    name: 'WhitelistedCallbackContractAdded',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'contract_removed', internalType: 'address', type: 'address', indexed: false },\n    ],\n    name: 'WhitelistedCallbackContractRemoved',\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'DOMAIN_SEPARATOR',\n    outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'FEE_UPDATE_NOTICE',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'INITIAL_DOMAIN_SEPARATOR',\n    outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'MAX_PROTOCOL_FEE',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: '_contract', internalType: 'address', type: 'address' }],\n    name: 'addWhitelistedCallbackContract',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: '_signer', internalType: 'address', type: 'address' }],\n    name: 'approveSigner',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: '_lender', internalType: 'address', type: 'address' },\n      { name: '_minOfferId', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'cancelAllOffers',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: '_lender', internalType: 'address', type: 'address' },\n      { name: '_minRenegotiationId', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'cancelAllRenegotiationOffers',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: '_lender', internalType: 'address', type: 'address' },\n      { name: '_offerId', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'cancelOffer',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: '_lender', internalType: 'address', type: 'address' },\n      { name: '_offerIds', internalType: 'uint256[]', type: 'uint256[]' },\n    ],\n    name: 'cancelOffers',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: '_lender', internalType: 'address', type: 'address' },\n      { name: '_renegotiationId', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'cancelRenegotiationOffer',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: '_lender', internalType: 'address', type: 'address' },\n      { name: '_renegotiationIds', internalType: 'uint256[]', type: 'uint256[]' },\n    ],\n    name: 'cancelRenegotiationOffers',\n    outputs: [],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: '', internalType: 'address', type: 'address' }],\n    name: 'getApprovedSigner',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getCollectionManager',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getCurrencyManager',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getImprovementMinimum',\n    outputs: [\n      {\n        name: '',\n        internalType: 'struct IBaseLoan.ImprovementMinimum',\n        type: 'tuple',\n        components: [\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'interest', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n    ],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getLiquidationAuctionDuration',\n    outputs: [{ name: '', internalType: 'uint48', type: 'uint48' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getLiquidator',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getPendingProtocolFee',\n    outputs: [\n      {\n        name: '',\n        internalType: 'struct IBaseLoan.ProtocolFee',\n        type: 'tuple',\n        components: [\n          { name: 'recipient', internalType: 'address', type: 'address' },\n          { name: 'fraction', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n    ],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getPendingProtocolFeeSetTime',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getProtocolFee',\n    outputs: [\n      {\n        name: '',\n        internalType: 'struct IBaseLoan.ProtocolFee',\n        type: 'tuple',\n        components: [\n          { name: 'recipient', internalType: 'address', type: 'address' },\n          { name: 'fraction', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n    ],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getTotalLoansIssued',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [\n      { name: '_lender', internalType: 'address', type: 'address' },\n      { name: '_offerId', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'getUsedCapacity',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'isOfferCancelled',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'isRenegotiationOfferCancelled',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: '_contract', internalType: 'address', type: 'address' }],\n    name: 'isWhitelistedCallbackContract',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: '', internalType: 'address', type: 'address' }],\n    name: 'lenderMinOfferId',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: '', internalType: 'address', type: 'address' }],\n    name: 'lenderMinRenegotiationOfferId',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: '_collateralAddress', internalType: 'address', type: 'address' },\n      { name: '_collateralTokenId', internalType: 'uint256', type: 'uint256' },\n      { name: '_loanId', internalType: 'uint256', type: 'uint256' },\n      { name: '_repayment', internalType: 'uint256', type: 'uint256' },\n      { name: '_loan', internalType: 'bytes', type: 'bytes' },\n    ],\n    name: 'loanLiquidated',\n    outputs: [],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'name',\n    outputs: [{ name: '', internalType: 'string', type: 'string' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'uint256', type: 'uint256' },\n      { name: '', internalType: 'bytes', type: 'bytes' },\n    ],\n    name: 'onERC721Received',\n    outputs: [{ name: '', internalType: 'bytes4', type: 'bytes4' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'owner',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: '_contract', internalType: 'address', type: 'address' }],\n    name: 'removeWhitelistedCallbackContract',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [],\n    name: 'setProtocolFee',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: 'newOwner', internalType: 'address', type: 'address' }],\n    name: 'transferOwnership',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      {\n        name: '_newMinimum',\n        internalType: 'struct IBaseLoan.ImprovementMinimum',\n        type: 'tuple',\n        components: [\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'interest', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n    ],\n    name: 'updateImprovementMinimum',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: '_newDuration', internalType: 'uint48', type: 'uint48' }],\n    name: 'updateLiquidationAuctionDuration',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: 'loanLiquidator', internalType: 'contract ILoanLiquidator', type: 'address' }],\n    name: 'updateLiquidationContract',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      {\n        name: '_newProtocolFee',\n        internalType: 'struct IBaseLoan.ProtocolFee',\n        type: 'tuple',\n        components: [\n          { name: 'recipient', internalType: 'address', type: 'address' },\n          { name: 'fraction', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n    ],\n    name: 'updateProtocolFee',\n    outputs: [],\n  },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// CollectionOracle\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const collectionOracleABI = [\n  { stateMutability: 'nonpayable', type: 'constructor', inputs: [] },\n  { type: 'error', inputs: [], name: 'InvalidLengthsError' },\n  {\n    type: 'error',\n    inputs: [\n      { name: '_nftAddress', internalType: 'address', type: 'address' },\n      { name: '_tokenId', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'NftNotFoundError',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'user', internalType: 'address', type: 'address', indexed: true },\n      { name: 'newOwner', internalType: 'address', type: 'address', indexed: true },\n    ],\n    name: 'OwnershipTransferred',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: '_collection', internalType: 'address', type: 'address', indexed: false },\n      { name: '_asset', internalType: 'address', type: 'address', indexed: false },\n      { name: '_price', internalType: 'uint128', type: 'uint128', indexed: false },\n      { name: '_timestamp', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'PriceUpdated',\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [\n      { name: '_nftAddress', internalType: 'address', type: 'address' },\n      { name: '_tokenId', internalType: 'uint256', type: 'uint256' },\n      { name: '_asset', internalType: 'address', type: 'address' },\n    ],\n    name: 'getPrice',\n    outputs: [\n      {\n        name: '',\n        internalType: 'struct IOracle.PriceUpdate',\n        type: 'tuple',\n        components: [\n          { name: 'price', internalType: 'uint128', type: 'uint128' },\n          { name: 'updatedTimestamp', internalType: 'uint128', type: 'uint128' },\n        ],\n      },\n    ],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'owner',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: 'newOwner', internalType: 'address', type: 'address' }],\n    name: 'transferOwnership',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: 'collections', internalType: 'address[]', type: 'address[]' },\n      { name: 'assets', internalType: 'address[]', type: 'address[]' },\n      { name: 'price', internalType: 'uint128[]', type: 'uint128[]' },\n      { name: 'timestamp', internalType: 'uint128', type: 'uint128' },\n    ],\n    name: 'updatePrices',\n    outputs: [],\n  },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// ERC165\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const erc165ABI = [\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: 'interfaceId', internalType: 'bytes4', type: 'bytes4' }],\n    name: 'supportsInterface',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n  },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// ERC20\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const erc20ABI = [\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'owner', internalType: 'address', type: 'address', indexed: true },\n      { name: 'spender', internalType: 'address', type: 'address', indexed: true },\n      { name: 'amount', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'Approval',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address', indexed: true },\n      { name: 'to', internalType: 'address', type: 'address', indexed: true },\n      { name: 'amount', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'Transfer',\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'DOMAIN_SEPARATOR',\n    outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'address', type: 'address' },\n    ],\n    name: 'allowance',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: 'spender', internalType: 'address', type: 'address' },\n      { name: 'amount', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'approve',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: '', internalType: 'address', type: 'address' }],\n    name: 'balanceOf',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'decimals',\n    outputs: [{ name: '', internalType: 'uint8', type: 'uint8' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'name',\n    outputs: [{ name: '', internalType: 'string', type: 'string' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: '', internalType: 'address', type: 'address' }],\n    name: 'nonces',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: 'owner', internalType: 'address', type: 'address' },\n      { name: 'spender', internalType: 'address', type: 'address' },\n      { name: 'value', internalType: 'uint256', type: 'uint256' },\n      { name: 'deadline', internalType: 'uint256', type: 'uint256' },\n      { name: 'v', internalType: 'uint8', type: 'uint8' },\n      { name: 'r', internalType: 'bytes32', type: 'bytes32' },\n      { name: 's', internalType: 'bytes32', type: 'bytes32' },\n    ],\n    name: 'permit',\n    outputs: [],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'symbol',\n    outputs: [{ name: '', internalType: 'string', type: 'string' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'totalSupply',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'amount', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'transfer',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address' },\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'amount', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'transferFrom',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n  },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// ERC721\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const erc721ABI = [\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'owner', internalType: 'address', type: 'address', indexed: true },\n      { name: 'spender', internalType: 'address', type: 'address', indexed: true },\n      { name: 'id', internalType: 'uint256', type: 'uint256', indexed: true },\n    ],\n    name: 'Approval',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'owner', internalType: 'address', type: 'address', indexed: true },\n      { name: 'operator', internalType: 'address', type: 'address', indexed: true },\n      { name: 'approved', internalType: 'bool', type: 'bool', indexed: false },\n    ],\n    name: 'ApprovalForAll',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address', indexed: true },\n      { name: 'to', internalType: 'address', type: 'address', indexed: true },\n      { name: 'id', internalType: 'uint256', type: 'uint256', indexed: true },\n    ],\n    name: 'Transfer',\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: 'spender', internalType: 'address', type: 'address' },\n      { name: 'id', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'approve',\n    outputs: [],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: 'owner', internalType: 'address', type: 'address' }],\n    name: 'balanceOf',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    name: 'getApproved',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'address', type: 'address' },\n    ],\n    name: 'isApprovedForAll',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'name',\n    outputs: [{ name: '', internalType: 'string', type: 'string' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: 'id', internalType: 'uint256', type: 'uint256' }],\n    name: 'ownerOf',\n    outputs: [{ name: 'owner', internalType: 'address', type: 'address' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address' },\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'id', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'safeTransferFrom',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address' },\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'id', internalType: 'uint256', type: 'uint256' },\n      { name: 'data', internalType: 'bytes', type: 'bytes' },\n    ],\n    name: 'safeTransferFrom',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: 'operator', internalType: 'address', type: 'address' },\n      { name: 'approved', internalType: 'bool', type: 'bool' },\n    ],\n    name: 'setApprovalForAll',\n    outputs: [],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: 'interfaceId', internalType: 'bytes4', type: 'bytes4' }],\n    name: 'supportsInterface',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'symbol',\n    outputs: [{ name: '', internalType: 'string', type: 'string' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: 'id', internalType: 'uint256', type: 'uint256' }],\n    name: 'tokenURI',\n    outputs: [{ name: '', internalType: 'string', type: 'string' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address' },\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'id', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'transferFrom',\n    outputs: [],\n  },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// ERC721TokenReceiver\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const erc721TokenReceiverABI = [\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'uint256', type: 'uint256' },\n      { name: '', internalType: 'bytes', type: 'bytes' },\n    ],\n    name: 'onERC721Received',\n    outputs: [{ name: '', internalType: 'bytes4', type: 'bytes4' }],\n  },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// IBaseLoan\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const iBaseLoanABI = [\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: '_contract', internalType: 'address', type: 'address' }],\n    name: 'addWhitelistedCallbackContract',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: '_signer', internalType: 'address', type: 'address' }],\n    name: 'approveSigner',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: '_lender', internalType: 'address', type: 'address' },\n      { name: '_minOfferId', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'cancelAllOffers',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: '_lender', internalType: 'address', type: 'address' },\n      { name: '_minRenegotiationId', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'cancelAllRenegotiationOffers',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: '_lender', internalType: 'address', type: 'address' },\n      { name: '_offerId', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'cancelOffer',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: '_lender', internalType: 'address', type: 'address' },\n      { name: '_offerIds', internalType: 'uint256[]', type: 'uint256[]' },\n    ],\n    name: 'cancelOffers',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: '_lender', internalType: 'address', type: 'address' },\n      { name: '_renegotiationId', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'cancelRenegotiationOffer',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: '_lender', internalType: 'address', type: 'address' },\n      { name: '_renegotiationIds', internalType: 'uint256[]', type: 'uint256[]' },\n    ],\n    name: 'cancelRenegotiationOffers',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: '_lender', internalType: 'address', type: 'address' }],\n    name: 'getApprovedSigner',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [],\n    name: 'getLiquidationAuctionDuration',\n    outputs: [{ name: '', internalType: 'uint48', type: 'uint48' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [],\n    name: 'getLiquidator',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getPendingProtocolFee',\n    outputs: [\n      {\n        name: '',\n        internalType: 'struct IBaseLoan.ProtocolFee',\n        type: 'tuple',\n        components: [\n          { name: 'recipient', internalType: 'address', type: 'address' },\n          { name: 'fraction', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n    ],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getPendingProtocolFeeSetTime',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getProtocolFee',\n    outputs: [\n      {\n        name: '',\n        internalType: 'struct IBaseLoan.ProtocolFee',\n        type: 'tuple',\n        components: [\n          { name: 'recipient', internalType: 'address', type: 'address' },\n          { name: 'fraction', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n    ],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getTotalLoansIssued',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: '_contract', internalType: 'address', type: 'address' }],\n    name: 'isWhitelistedCallbackContract',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: '_collateralAddress', internalType: 'address', type: 'address' },\n      { name: '_collateralTokenId', internalType: 'uint256', type: 'uint256' },\n      { name: '_loanId', internalType: 'uint256', type: 'uint256' },\n      { name: '_repayment', internalType: 'uint256', type: 'uint256' },\n      { name: '_loan', internalType: 'bytes', type: 'bytes' },\n    ],\n    name: 'loanLiquidated',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: '_contract', internalType: 'address', type: 'address' }],\n    name: 'removeWhitelistedCallbackContract',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [],\n    name: 'setProtocolFee',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: '_newDuration', internalType: 'uint48', type: 'uint48' }],\n    name: 'updateLiquidationAuctionDuration',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: 'loanLiquidator', internalType: 'contract ILoanLiquidator', type: 'address' }],\n    name: 'updateLiquidationContract',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      {\n        name: '_newProtocolFee',\n        internalType: 'struct IBaseLoan.ProtocolFee',\n        type: 'tuple',\n        components: [\n          { name: 'recipient', internalType: 'address', type: 'address' },\n          { name: 'fraction', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n    ],\n    name: 'updateProtocolFee',\n    outputs: [],\n  },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// IBaseOfferValidator\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const iBaseOfferValidatorABI = [\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      {\n        name: '_offer',\n        internalType: 'struct IBaseLoan.LoanOffer',\n        type: 'tuple',\n        components: [\n          { name: 'offerId', internalType: 'uint256', type: 'uint256' },\n          { name: 'lender', internalType: 'address', type: 'address' },\n          { name: 'fee', internalType: 'uint256', type: 'uint256' },\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'capacity', internalType: 'uint256', type: 'uint256' },\n          { name: 'signer', internalType: 'address', type: 'address' },\n          { name: 'requiresLiquidation', internalType: 'bool', type: 'bool' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n          { name: 'expirationTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'validators',\n            internalType: 'struct IBaseLoan.OfferValidator[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'validator', internalType: 'address', type: 'address' },\n              { name: 'arguments', internalType: 'bytes', type: 'bytes' },\n            ],\n          },\n        ],\n      },\n      { name: '_tokenId', internalType: 'uint256', type: 'uint256' },\n      { name: '_validatorData', internalType: 'bytes', type: 'bytes' },\n    ],\n    name: 'validateOffer',\n    outputs: [],\n  },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// IERC1271\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const ierc1271ABI = [\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [\n      { name: 'hash', internalType: 'bytes32', type: 'bytes32' },\n      { name: 'signature', internalType: 'bytes', type: 'bytes' },\n    ],\n    name: 'isValidSignature',\n    outputs: [{ name: 'magicValue', internalType: 'bytes4', type: 'bytes4' }],\n  },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// IERC165\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const ierc165ABI = [\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: 'interfaceId', internalType: 'bytes4', type: 'bytes4' }],\n    name: 'supportsInterface',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n  },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// ILoanLiquidator\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const iLoanLiquidatorABI = [\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: '_loanId', internalType: 'uint256', type: 'uint256' },\n      { name: '_contract', internalType: 'address', type: 'address' },\n      { name: '_tokenId', internalType: 'uint256', type: 'uint256' },\n      { name: '_asset', internalType: 'address', type: 'address' },\n      { name: '_duration', internalType: 'uint96', type: 'uint96' },\n      { name: '_originator', internalType: 'address', type: 'address' },\n    ],\n    name: 'liquidateLoan',\n    outputs: [],\n  },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// IMultiSourceLoan\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const iMultiSourceLoanABI = [\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      {\n        name: '_loanOffer',\n        internalType: 'struct IBaseLoan.LoanOffer',\n        type: 'tuple',\n        components: [\n          { name: 'offerId', internalType: 'uint256', type: 'uint256' },\n          { name: 'lender', internalType: 'address', type: 'address' },\n          { name: 'fee', internalType: 'uint256', type: 'uint256' },\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'capacity', internalType: 'uint256', type: 'uint256' },\n          { name: 'signer', internalType: 'address', type: 'address' },\n          { name: 'requiresLiquidation', internalType: 'bool', type: 'bool' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n          { name: 'expirationTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'validators',\n            internalType: 'struct IBaseLoan.OfferValidator[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'validator', internalType: 'address', type: 'address' },\n              { name: 'arguments', internalType: 'bytes', type: 'bytes' },\n            ],\n          },\n        ],\n      },\n      { name: '_tokenId', internalType: 'uint256', type: 'uint256' },\n      { name: '_lenderOfferSignature', internalType: 'bytes', type: 'bytes' },\n      { name: '_withCallback', internalType: 'bool', type: 'bool' },\n    ],\n    name: 'emitLoan',\n    outputs: [\n      { name: '', internalType: 'uint256', type: 'uint256' },\n      {\n        name: '',\n        internalType: 'struct IMultiSourceLoan.Loan',\n        type: 'tuple',\n        components: [\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'source',\n            internalType: 'struct IMultiSourceLoan.Source[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n              { name: 'lender', internalType: 'address', type: 'address' },\n              { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n              { name: 'accruedInterest', internalType: 'uint256', type: 'uint256' },\n              { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n              { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n            ],\n          },\n        ],\n      },\n    ],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getMaxSources',\n    outputs: [{ name: '', internalType: 'uint8', type: 'uint8' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: '_loanId', internalType: 'uint256', type: 'uint256' },\n      {\n        name: '_loan',\n        internalType: 'struct IMultiSourceLoan.Loan',\n        type: 'tuple',\n        components: [\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'source',\n            internalType: 'struct IMultiSourceLoan.Source[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n              { name: 'lender', internalType: 'address', type: 'address' },\n              { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n              { name: 'accruedInterest', internalType: 'uint256', type: 'uint256' },\n              { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n              { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n            ],\n          },\n        ],\n      },\n    ],\n    name: 'liquidateLoan',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      {\n        name: '_renegotiationOffer',\n        internalType: 'struct IMultiSourceLoan.RenegotiationOffer',\n        type: 'tuple',\n        components: [\n          { name: 'renegotiationId', internalType: 'uint256', type: 'uint256' },\n          { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n          { name: 'lender', internalType: 'address', type: 'address' },\n          { name: 'fee', internalType: 'uint256', type: 'uint256' },\n          { name: 'signer', internalType: 'address', type: 'address' },\n          { name: 'targetPrincipal', internalType: 'uint256[]', type: 'uint256[]' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n          { name: 'expirationTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          { name: 'strictImprovement', internalType: 'bool', type: 'bool' },\n        ],\n      },\n      {\n        name: '_loan',\n        internalType: 'struct IMultiSourceLoan.Loan',\n        type: 'tuple',\n        components: [\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'source',\n            internalType: 'struct IMultiSourceLoan.Source[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n              { name: 'lender', internalType: 'address', type: 'address' },\n              { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n              { name: 'accruedInterest', internalType: 'uint256', type: 'uint256' },\n              { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n              { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n            ],\n          },\n        ],\n      },\n      { name: '_renegotiationOfferSignature', internalType: 'bytes', type: 'bytes' },\n    ],\n    name: 'refinanceFull',\n    outputs: [\n      { name: '', internalType: 'uint256', type: 'uint256' },\n      {\n        name: '',\n        internalType: 'struct IMultiSourceLoan.Loan',\n        type: 'tuple',\n        components: [\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'source',\n            internalType: 'struct IMultiSourceLoan.Source[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n              { name: 'lender', internalType: 'address', type: 'address' },\n              { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n              { name: 'accruedInterest', internalType: 'uint256', type: 'uint256' },\n              { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n              { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n            ],\n          },\n        ],\n      },\n    ],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      {\n        name: '_renegotiationOffer',\n        internalType: 'struct IMultiSourceLoan.RenegotiationOffer',\n        type: 'tuple',\n        components: [\n          { name: 'renegotiationId', internalType: 'uint256', type: 'uint256' },\n          { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n          { name: 'lender', internalType: 'address', type: 'address' },\n          { name: 'fee', internalType: 'uint256', type: 'uint256' },\n          { name: 'signer', internalType: 'address', type: 'address' },\n          { name: 'targetPrincipal', internalType: 'uint256[]', type: 'uint256[]' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n          { name: 'expirationTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          { name: 'strictImprovement', internalType: 'bool', type: 'bool' },\n        ],\n      },\n      {\n        name: '_loan',\n        internalType: 'struct IMultiSourceLoan.Loan',\n        type: 'tuple',\n        components: [\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'source',\n            internalType: 'struct IMultiSourceLoan.Source[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n              { name: 'lender', internalType: 'address', type: 'address' },\n              { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n              { name: 'accruedInterest', internalType: 'uint256', type: 'uint256' },\n              { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n              { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n            ],\n          },\n        ],\n      },\n    ],\n    name: 'refinancePartial',\n    outputs: [\n      { name: '', internalType: 'uint256', type: 'uint256' },\n      {\n        name: '',\n        internalType: 'struct IMultiSourceLoan.Loan',\n        type: 'tuple',\n        components: [\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'source',\n            internalType: 'struct IMultiSourceLoan.Source[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n              { name: 'lender', internalType: 'address', type: 'address' },\n              { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n              { name: 'accruedInterest', internalType: 'uint256', type: 'uint256' },\n              { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n              { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n            ],\n          },\n        ],\n      },\n    ],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      {\n        name: '_renegotiationOffer',\n        internalType: 'struct IMultiSourceLoan.RenegotiationOffer[]',\n        type: 'tuple[]',\n        components: [\n          { name: 'renegotiationId', internalType: 'uint256', type: 'uint256' },\n          { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n          { name: 'lender', internalType: 'address', type: 'address' },\n          { name: 'fee', internalType: 'uint256', type: 'uint256' },\n          { name: 'signer', internalType: 'address', type: 'address' },\n          { name: 'targetPrincipal', internalType: 'uint256[]', type: 'uint256[]' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n          { name: 'expirationTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          { name: 'strictImprovement', internalType: 'bool', type: 'bool' },\n        ],\n      },\n      {\n        name: '_loan',\n        internalType: 'struct IMultiSourceLoan.Loan[]',\n        type: 'tuple[]',\n        components: [\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'source',\n            internalType: 'struct IMultiSourceLoan.Source[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n              { name: 'lender', internalType: 'address', type: 'address' },\n              { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n              { name: 'accruedInterest', internalType: 'uint256', type: 'uint256' },\n              { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n              { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n            ],\n          },\n        ],\n      },\n    ],\n    name: 'refinancePartialBatch',\n    outputs: [\n      { name: 'loanId', internalType: 'uint256[]', type: 'uint256[]' },\n      {\n        name: 'loan',\n        internalType: 'struct IMultiSourceLoan.Loan[]',\n        type: 'tuple[]',\n        components: [\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'source',\n            internalType: 'struct IMultiSourceLoan.Source[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n              { name: 'lender', internalType: 'address', type: 'address' },\n              { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n              { name: 'accruedInterest', internalType: 'uint256', type: 'uint256' },\n              { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n              { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n            ],\n          },\n        ],\n      },\n    ],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: '_collateralTo', internalType: 'address', type: 'address' },\n      { name: '_loanId', internalType: 'uint256', type: 'uint256' },\n      {\n        name: '_loan',\n        internalType: 'struct IMultiSourceLoan.Loan',\n        type: 'tuple',\n        components: [\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'source',\n            internalType: 'struct IMultiSourceLoan.Source[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n              { name: 'lender', internalType: 'address', type: 'address' },\n              { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n              { name: 'accruedInterest', internalType: 'uint256', type: 'uint256' },\n              { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n              { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n            ],\n          },\n        ],\n      },\n      { name: '_withCallback', internalType: 'bool', type: 'bool' },\n    ],\n    name: 'repayLoan',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: 'maxSources', internalType: 'uint8', type: 'uint8' }],\n    name: 'setMaxSources',\n    outputs: [],\n  },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// ILoanCallback\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const iLoanCallbackABI = [\n  { type: 'error', inputs: [], name: 'InvalidCallbackError' },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: '_loan', internalType: 'bytes', type: 'bytes' }],\n    name: 'afterNFTTransfer',\n    outputs: [{ name: '', internalType: 'bytes4', type: 'bytes4' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: '_loan', internalType: 'bytes', type: 'bytes' }],\n    name: 'afterPrincipalTransfer',\n    outputs: [{ name: '', internalType: 'bytes4', type: 'bytes4' }],\n  },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// IMulticall3\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const iMulticall3ABI = [\n  {\n    stateMutability: 'payable',\n    type: 'function',\n    inputs: [\n      {\n        name: 'calls',\n        internalType: 'struct IMulticall3.Call[]',\n        type: 'tuple[]',\n        components: [\n          { name: 'target', internalType: 'address', type: 'address' },\n          { name: 'callData', internalType: 'bytes', type: 'bytes' },\n        ],\n      },\n    ],\n    name: 'aggregate',\n    outputs: [\n      { name: 'blockNumber', internalType: 'uint256', type: 'uint256' },\n      { name: 'returnData', internalType: 'bytes[]', type: 'bytes[]' },\n    ],\n  },\n  {\n    stateMutability: 'payable',\n    type: 'function',\n    inputs: [\n      {\n        name: 'calls',\n        internalType: 'struct IMulticall3.Call3[]',\n        type: 'tuple[]',\n        components: [\n          { name: 'target', internalType: 'address', type: 'address' },\n          { name: 'allowFailure', internalType: 'bool', type: 'bool' },\n          { name: 'callData', internalType: 'bytes', type: 'bytes' },\n        ],\n      },\n    ],\n    name: 'aggregate3',\n    outputs: [\n      {\n        name: 'returnData',\n        internalType: 'struct IMulticall3.Result[]',\n        type: 'tuple[]',\n        components: [\n          { name: 'success', internalType: 'bool', type: 'bool' },\n          { name: 'returnData', internalType: 'bytes', type: 'bytes' },\n        ],\n      },\n    ],\n  },\n  {\n    stateMutability: 'payable',\n    type: 'function',\n    inputs: [\n      {\n        name: 'calls',\n        internalType: 'struct IMulticall3.Call3Value[]',\n        type: 'tuple[]',\n        components: [\n          { name: 'target', internalType: 'address', type: 'address' },\n          { name: 'allowFailure', internalType: 'bool', type: 'bool' },\n          { name: 'value', internalType: 'uint256', type: 'uint256' },\n          { name: 'callData', internalType: 'bytes', type: 'bytes' },\n        ],\n      },\n    ],\n    name: 'aggregate3Value',\n    outputs: [\n      {\n        name: 'returnData',\n        internalType: 'struct IMulticall3.Result[]',\n        type: 'tuple[]',\n        components: [\n          { name: 'success', internalType: 'bool', type: 'bool' },\n          { name: 'returnData', internalType: 'bytes', type: 'bytes' },\n        ],\n      },\n    ],\n  },\n  {\n    stateMutability: 'payable',\n    type: 'function',\n    inputs: [\n      {\n        name: 'calls',\n        internalType: 'struct IMulticall3.Call[]',\n        type: 'tuple[]',\n        components: [\n          { name: 'target', internalType: 'address', type: 'address' },\n          { name: 'callData', internalType: 'bytes', type: 'bytes' },\n        ],\n      },\n    ],\n    name: 'blockAndAggregate',\n    outputs: [\n      { name: 'blockNumber', internalType: 'uint256', type: 'uint256' },\n      { name: 'blockHash', internalType: 'bytes32', type: 'bytes32' },\n      {\n        name: 'returnData',\n        internalType: 'struct IMulticall3.Result[]',\n        type: 'tuple[]',\n        components: [\n          { name: 'success', internalType: 'bool', type: 'bool' },\n          { name: 'returnData', internalType: 'bytes', type: 'bytes' },\n        ],\n      },\n    ],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getBasefee',\n    outputs: [{ name: 'basefee', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: 'blockNumber', internalType: 'uint256', type: 'uint256' }],\n    name: 'getBlockHash',\n    outputs: [{ name: 'blockHash', internalType: 'bytes32', type: 'bytes32' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getBlockNumber',\n    outputs: [{ name: 'blockNumber', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getChainId',\n    outputs: [{ name: 'chainid', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getCurrentBlockCoinbase',\n    outputs: [{ name: 'coinbase', internalType: 'address', type: 'address' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getCurrentBlockDifficulty',\n    outputs: [{ name: 'difficulty', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getCurrentBlockGasLimit',\n    outputs: [{ name: 'gaslimit', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getCurrentBlockTimestamp',\n    outputs: [{ name: 'timestamp', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: 'addr', internalType: 'address', type: 'address' }],\n    name: 'getEthBalance',\n    outputs: [{ name: 'balance', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getLastBlockHash',\n    outputs: [{ name: 'blockHash', internalType: 'bytes32', type: 'bytes32' }],\n  },\n  {\n    stateMutability: 'payable',\n    type: 'function',\n    inputs: [\n      { name: 'requireSuccess', internalType: 'bool', type: 'bool' },\n      {\n        name: 'calls',\n        internalType: 'struct IMulticall3.Call[]',\n        type: 'tuple[]',\n        components: [\n          { name: 'target', internalType: 'address', type: 'address' },\n          { name: 'callData', internalType: 'bytes', type: 'bytes' },\n        ],\n      },\n    ],\n    name: 'tryAggregate',\n    outputs: [\n      {\n        name: 'returnData',\n        internalType: 'struct IMulticall3.Result[]',\n        type: 'tuple[]',\n        components: [\n          { name: 'success', internalType: 'bool', type: 'bool' },\n          { name: 'returnData', internalType: 'bytes', type: 'bytes' },\n        ],\n      },\n    ],\n  },\n  {\n    stateMutability: 'payable',\n    type: 'function',\n    inputs: [\n      { name: 'requireSuccess', internalType: 'bool', type: 'bool' },\n      {\n        name: 'calls',\n        internalType: 'struct IMulticall3.Call[]',\n        type: 'tuple[]',\n        components: [\n          { name: 'target', internalType: 'address', type: 'address' },\n          { name: 'callData', internalType: 'bytes', type: 'bytes' },\n        ],\n      },\n    ],\n    name: 'tryBlockAndAggregate',\n    outputs: [\n      { name: 'blockNumber', internalType: 'uint256', type: 'uint256' },\n      { name: 'blockHash', internalType: 'bytes32', type: 'bytes32' },\n      {\n        name: 'returnData',\n        internalType: 'struct IMulticall3.Result[]',\n        type: 'tuple[]',\n        components: [\n          { name: 'success', internalType: 'bool', type: 'bool' },\n          { name: 'returnData', internalType: 'bytes', type: 'bytes' },\n        ],\n      },\n    ],\n  },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// IOracle\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const iOracleABI = [\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [\n      { name: '_nftAddress', internalType: 'address', type: 'address' },\n      { name: '_tokenId', internalType: 'uint256', type: 'uint256' },\n      { name: '_asset', internalType: 'address', type: 'address' },\n    ],\n    name: 'getPrice',\n    outputs: [\n      {\n        name: '',\n        internalType: 'struct IOracle.PriceUpdate',\n        type: 'tuple',\n        components: [\n          { name: 'price', internalType: 'uint128', type: 'uint128' },\n          { name: 'updatedTimestamp', internalType: 'uint128', type: 'uint128' },\n        ],\n      },\n    ],\n  },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// MultiSourceCommons\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const multiSourceCommonsABI = [\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: '', internalType: 'string', type: 'string', indexed: false }],\n    name: 'log',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: '', internalType: 'address', type: 'address', indexed: false }],\n    name: 'log_address',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'val', internalType: 'uint256[]', type: 'uint256[]', indexed: false }],\n    name: 'log_array',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'val', internalType: 'int256[]', type: 'int256[]', indexed: false }],\n    name: 'log_array',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'val', internalType: 'address[]', type: 'address[]', indexed: false }],\n    name: 'log_array',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: '', internalType: 'bytes', type: 'bytes', indexed: false }],\n    name: 'log_bytes',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: '', internalType: 'bytes32', type: 'bytes32', indexed: false }],\n    name: 'log_bytes32',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: '', internalType: 'int256', type: 'int256', indexed: false }],\n    name: 'log_int',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'key', internalType: 'string', type: 'string', indexed: false },\n      { name: 'val', internalType: 'address', type: 'address', indexed: false },\n    ],\n    name: 'log_named_address',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'key', internalType: 'string', type: 'string', indexed: false },\n      { name: 'val', internalType: 'uint256[]', type: 'uint256[]', indexed: false },\n    ],\n    name: 'log_named_array',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'key', internalType: 'string', type: 'string', indexed: false },\n      { name: 'val', internalType: 'int256[]', type: 'int256[]', indexed: false },\n    ],\n    name: 'log_named_array',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'key', internalType: 'string', type: 'string', indexed: false },\n      { name: 'val', internalType: 'address[]', type: 'address[]', indexed: false },\n    ],\n    name: 'log_named_array',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'key', internalType: 'string', type: 'string', indexed: false },\n      { name: 'val', internalType: 'bytes', type: 'bytes', indexed: false },\n    ],\n    name: 'log_named_bytes',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'key', internalType: 'string', type: 'string', indexed: false },\n      { name: 'val', internalType: 'bytes32', type: 'bytes32', indexed: false },\n    ],\n    name: 'log_named_bytes32',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'key', internalType: 'string', type: 'string', indexed: false },\n      { name: 'val', internalType: 'int256', type: 'int256', indexed: false },\n      { name: 'decimals', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'log_named_decimal_int',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'key', internalType: 'string', type: 'string', indexed: false },\n      { name: 'val', internalType: 'uint256', type: 'uint256', indexed: false },\n      { name: 'decimals', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'log_named_decimal_uint',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'key', internalType: 'string', type: 'string', indexed: false },\n      { name: 'val', internalType: 'int256', type: 'int256', indexed: false },\n    ],\n    name: 'log_named_int',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'key', internalType: 'string', type: 'string', indexed: false },\n      { name: 'val', internalType: 'string', type: 'string', indexed: false },\n    ],\n    name: 'log_named_string',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'key', internalType: 'string', type: 'string', indexed: false },\n      { name: 'val', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'log_named_uint',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: '', internalType: 'string', type: 'string', indexed: false }],\n    name: 'log_string',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: '', internalType: 'uint256', type: 'uint256', indexed: false }],\n    name: 'log_uint',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: '', internalType: 'bytes', type: 'bytes', indexed: false }],\n    name: 'logs',\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'IS_TEST',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [],\n    name: 'failed',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n  },\n  { stateMutability: 'nonpayable', type: 'function', inputs: [], name: 'setUp', outputs: [] },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// MultiSourceLoan\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const multiSourceLoanABI = [\n  {\n    stateMutability: 'nonpayable',\n    type: 'constructor',\n    inputs: [\n      { name: 'loanLiquidator', internalType: 'address', type: 'address' },\n      {\n        name: 'protocolFee',\n        internalType: 'struct IBaseLoan.ProtocolFee',\n        type: 'tuple',\n        components: [\n          { name: 'recipient', internalType: 'address', type: 'address' },\n          { name: 'fraction', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n      { name: 'currencyManager', internalType: 'address', type: 'address' },\n      { name: 'collectionManager', internalType: 'address', type: 'address' },\n      { name: 'maxSources', internalType: 'uint8', type: 'uint8' },\n    ],\n  },\n  { type: 'error', inputs: [], name: 'AddressZeroError' },\n  {\n    type: 'error',\n    inputs: [\n      { name: '_lender', internalType: 'address', type: 'address' },\n      { name: '_offerId', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'CancelledOrExecutedOfferError',\n  },\n  {\n    type: 'error',\n    inputs: [\n      { name: '_lender', internalType: 'address', type: 'address' },\n      { name: '_offerId', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'CancelledRenegotiationOffer',\n  },\n  {\n    type: 'error',\n    inputs: [\n      { name: '_lender', internalType: 'address', type: 'address' },\n      { name: '_renegotiationId', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'CancelledRenegotiationOfferError',\n  },\n  { type: 'error', inputs: [], name: 'CannotLiquidateError' },\n  { type: 'error', inputs: [], name: 'CollectionNotWhitelistedError' },\n  { type: 'error', inputs: [], name: 'CurrencyNotWhitelistedError' },\n  { type: 'error', inputs: [], name: 'ExpiredLoanError' },\n  {\n    type: 'error',\n    inputs: [{ name: '_expirationTime', internalType: 'uint256', type: 'uint256' }],\n    name: 'ExpiredOfferError',\n  },\n  {\n    type: 'error',\n    inputs: [{ name: '_expirationTime', internalType: 'uint256', type: 'uint256' }],\n    name: 'ExpiredRenegotiationOfferError',\n  },\n  { type: 'error', inputs: [], name: 'InvalidBorrowerError' },\n  { type: 'error', inputs: [], name: 'InvalidCallbackError' },\n  { type: 'error', inputs: [], name: 'InvalidCollateralIdError' },\n  { type: 'error', inputs: [], name: 'InvalidLiquidationError' },\n  {\n    type: 'error',\n    inputs: [{ name: '_loanId', internalType: 'uint256', type: 'uint256' }],\n    name: 'InvalidLoanError',\n  },\n  {\n    type: 'error',\n    inputs: [{ name: '_fraction', internalType: 'uint256', type: 'uint256' }],\n    name: 'InvalidProtocolFeeError',\n  },\n  { type: 'error', inputs: [], name: 'InvalidRenegotiationOfferError' },\n  { type: 'error', inputs: [], name: 'InvalidSignatureError' },\n  { type: 'error', inputs: [], name: 'InvalidSignerError' },\n  { type: 'error', inputs: [], name: 'LengthMismatchError' },\n  {\n    type: 'error',\n    inputs: [{ name: '_liquidator', internalType: 'address', type: 'address' }],\n    name: 'LiquidatorOnlyError',\n  },\n  { type: 'error', inputs: [], name: 'LoanExpiredError' },\n  {\n    type: 'error',\n    inputs: [{ name: '_expirationTime', internalType: 'uint256', type: 'uint256' }],\n    name: 'LoanNotDueError',\n  },\n  {\n    type: 'error',\n    inputs: [{ name: '_loanId', internalType: 'uint256', type: 'uint256' }],\n    name: 'LoanNotFoundError',\n  },\n  {\n    type: 'error',\n    inputs: [\n      { name: '_lender', internalType: 'address', type: 'address' },\n      { name: '_newMinOfferId', internalType: 'uint256', type: 'uint256' },\n      { name: '_minOfferId', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'LowOfferIdError',\n  },\n  {\n    type: 'error',\n    inputs: [\n      { name: '_lender', internalType: 'address', type: 'address' },\n      { name: '_newMinRenegotiationOfferId', internalType: 'uint256', type: 'uint256' },\n      { name: '_minOfferId', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'LowRenegotiationOfferIdError',\n  },\n  { type: 'error', inputs: [], name: 'MaxCapacityExceededError' },\n  {\n    type: 'error',\n    inputs: [{ name: '_id', internalType: 'uint256', type: 'uint256' }],\n    name: 'NotMintedError',\n  },\n  { type: 'error', inputs: [], name: 'NotStrictlyImprovedError' },\n  { type: 'error', inputs: [], name: 'OnlyBorrowerCallableError' },\n  { type: 'error', inputs: [], name: 'OnlyLenderOrSignerCallableError' },\n  { type: 'error', inputs: [], name: 'PartialOfferCannotChangeDurationError' },\n  { type: 'error', inputs: [], name: 'PartialOfferCannotHaveFeeError' },\n  { type: 'error', inputs: [], name: 'RefinanceFullError' },\n  { type: 'error', inputs: [], name: 'RepaymentError' },\n  {\n    type: 'error',\n    inputs: [\n      { name: 'sourcePrincipal', internalType: 'uint256', type: 'uint256' },\n      { name: 'loanPrincipal', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'TargetPrincipalTooLowError',\n  },\n  {\n    type: 'error',\n    inputs: [{ name: '_pendingProtocolFeeSetTime', internalType: 'uint256', type: 'uint256' }],\n    name: 'TooEarlyError',\n  },\n  {\n    type: 'error',\n    inputs: [{ name: 'sources', internalType: 'uint8', type: 'uint8' }],\n    name: 'TooManySourcesError',\n  },\n  { type: 'error', inputs: [], name: 'Unauthorized' },\n  {\n    type: 'error',\n    inputs: [{ name: '_authorized', internalType: 'address', type: 'address' }],\n    name: 'UnauthorizedError',\n  },\n  { type: 'error', inputs: [], name: 'ZeroAddressError' },\n  { type: 'error', inputs: [], name: 'ZeroDurationError' },\n  { type: 'error', inputs: [], name: 'ZeroInterestError' },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'lender', internalType: 'address', type: 'address', indexed: false },\n      { name: 'minOfferId', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'AllOffersCancelled',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'lender', internalType: 'address', type: 'address', indexed: false },\n      { name: 'minRenegotiationId', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'AllRenegotiationOffersCancelled',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'lender', internalType: 'address', type: 'address', indexed: false },\n      { name: 'signer', internalType: 'address', type: 'address', indexed: false },\n    ],\n    name: 'ApprovedSigner',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      {\n        name: 'minimum',\n        internalType: 'struct IBaseLoan.ImprovementMinimum',\n        type: 'tuple',\n        components: [\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'interest', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n        ],\n        indexed: false,\n      },\n    ],\n    name: 'ImprovementMinimumUpdated',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'newDuration', internalType: 'uint256', type: 'uint256', indexed: false }],\n    name: 'LiquidationAuctionDurationUpdated',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'liquidator', internalType: 'address', type: 'address', indexed: false }],\n    name: 'LiquidationContractUpdated',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'loanId', internalType: 'uint256', type: 'uint256', indexed: false },\n      { name: 'offerId', internalType: 'uint256', type: 'uint256', indexed: false },\n      {\n        name: 'loan',\n        internalType: 'struct IMultiSourceLoan.Loan',\n        type: 'tuple',\n        components: [\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'source',\n            internalType: 'struct IMultiSourceLoan.Source[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n              { name: 'lender', internalType: 'address', type: 'address' },\n              { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n              { name: 'accruedInterest', internalType: 'uint256', type: 'uint256' },\n              { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n              { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n            ],\n          },\n        ],\n        indexed: false,\n      },\n      { name: 'fee', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'LoanEmitted',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'loanId', internalType: 'uint256', type: 'uint256', indexed: false }],\n    name: 'LoanForeclosed',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'loanId', internalType: 'uint256', type: 'uint256', indexed: false },\n      { name: 'repayment', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'LoanLiquidated',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'renegotiationId', internalType: 'uint256', type: 'uint256', indexed: false },\n      { name: 'oldLoanId', internalType: 'uint256', type: 'uint256', indexed: false },\n      { name: 'newLoanId', internalType: 'uint256', type: 'uint256', indexed: false },\n      {\n        name: 'loan',\n        internalType: 'struct IMultiSourceLoan.Loan',\n        type: 'tuple',\n        components: [\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'source',\n            internalType: 'struct IMultiSourceLoan.Source[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n              { name: 'lender', internalType: 'address', type: 'address' },\n              { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n              { name: 'accruedInterest', internalType: 'uint256', type: 'uint256' },\n              { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n              { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n            ],\n          },\n        ],\n        indexed: false,\n      },\n      { name: 'fee', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'LoanRefinanced',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'loanId', internalType: 'uint256', type: 'uint256', indexed: false },\n      { name: 'totalRepayment', internalType: 'uint256', type: 'uint256', indexed: false },\n      { name: 'fee', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'LoanRepaid',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'loanId', internalType: 'uint256', type: 'uint256', indexed: false },\n      { name: 'liquidator', internalType: 'address', type: 'address', indexed: false },\n    ],\n    name: 'LoanSentToLiquidator',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'newMax', internalType: 'uint8', type: 'uint8', indexed: false }],\n    name: 'MaxSourcesUpdated',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'lender', internalType: 'address', type: 'address', indexed: false },\n      { name: 'offerId', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'OfferCancelled',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'user', internalType: 'address', type: 'address', indexed: true },\n      { name: 'newOwner', internalType: 'address', type: 'address', indexed: true },\n    ],\n    name: 'OwnershipTransferred',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      {\n        name: 'fee',\n        internalType: 'struct IBaseLoan.ProtocolFee',\n        type: 'tuple',\n        components: [\n          { name: 'recipient', internalType: 'address', type: 'address' },\n          { name: 'fraction', internalType: 'uint256', type: 'uint256' },\n        ],\n        indexed: false,\n      },\n    ],\n    name: 'ProtocolFeePendingUpdate',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      {\n        name: 'fee',\n        internalType: 'struct IBaseLoan.ProtocolFee',\n        type: 'tuple',\n        components: [\n          { name: 'recipient', internalType: 'address', type: 'address' },\n          { name: 'fraction', internalType: 'uint256', type: 'uint256' },\n        ],\n        indexed: false,\n      },\n    ],\n    name: 'ProtocolFeeUpdated',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'lender', internalType: 'address', type: 'address', indexed: false },\n      { name: 'renegotiationId', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'RenegotiationOfferCancelled',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'contract_added', internalType: 'address', type: 'address', indexed: false }],\n    name: 'WhitelistedCallbackContractAdded',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'contract_removed', internalType: 'address', type: 'address', indexed: false },\n    ],\n    name: 'WhitelistedCallbackContractRemoved',\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'DOMAIN_SEPARATOR',\n    outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'FEE_UPDATE_NOTICE',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'INITIAL_DOMAIN_SEPARATOR',\n    outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'MAX_PROTOCOL_FEE',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: '_contract', internalType: 'address', type: 'address' }],\n    name: 'addWhitelistedCallbackContract',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: '_signer', internalType: 'address', type: 'address' }],\n    name: 'approveSigner',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: '_lender', internalType: 'address', type: 'address' },\n      { name: '_minOfferId', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'cancelAllOffers',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: '_lender', internalType: 'address', type: 'address' },\n      { name: '_minRenegotiationId', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'cancelAllRenegotiationOffers',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: '_lender', internalType: 'address', type: 'address' },\n      { name: '_offerId', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'cancelOffer',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: '_lender', internalType: 'address', type: 'address' },\n      { name: '_offerIds', internalType: 'uint256[]', type: 'uint256[]' },\n    ],\n    name: 'cancelOffers',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: '_lender', internalType: 'address', type: 'address' },\n      { name: '_renegotiationId', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'cancelRenegotiationOffer',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: '_lender', internalType: 'address', type: 'address' },\n      { name: '_renegotiationIds', internalType: 'uint256[]', type: 'uint256[]' },\n    ],\n    name: 'cancelRenegotiationOffers',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      {\n        name: '_loanOffer',\n        internalType: 'struct IBaseLoan.LoanOffer',\n        type: 'tuple',\n        components: [\n          { name: 'offerId', internalType: 'uint256', type: 'uint256' },\n          { name: 'lender', internalType: 'address', type: 'address' },\n          { name: 'fee', internalType: 'uint256', type: 'uint256' },\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'capacity', internalType: 'uint256', type: 'uint256' },\n          { name: 'signer', internalType: 'address', type: 'address' },\n          { name: 'requiresLiquidation', internalType: 'bool', type: 'bool' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n          { name: 'expirationTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'validators',\n            internalType: 'struct IBaseLoan.OfferValidator[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'validator', internalType: 'address', type: 'address' },\n              { name: 'arguments', internalType: 'bytes', type: 'bytes' },\n            ],\n          },\n        ],\n      },\n      { name: '_tokenId', internalType: 'uint256', type: 'uint256' },\n      { name: '_lenderOfferSignature', internalType: 'bytes', type: 'bytes' },\n      { name: '_withCallback', internalType: 'bool', type: 'bool' },\n    ],\n    name: 'emitLoan',\n    outputs: [\n      { name: '', internalType: 'uint256', type: 'uint256' },\n      {\n        name: '',\n        internalType: 'struct IMultiSourceLoan.Loan',\n        type: 'tuple',\n        components: [\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'source',\n            internalType: 'struct IMultiSourceLoan.Source[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n              { name: 'lender', internalType: 'address', type: 'address' },\n              { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n              { name: 'accruedInterest', internalType: 'uint256', type: 'uint256' },\n              { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n              { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n            ],\n          },\n        ],\n      },\n    ],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: '', internalType: 'address', type: 'address' }],\n    name: 'getApprovedSigner',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getCollectionManager',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getCurrencyManager',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getImprovementMinimum',\n    outputs: [\n      {\n        name: '',\n        internalType: 'struct IBaseLoan.ImprovementMinimum',\n        type: 'tuple',\n        components: [\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'interest', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n    ],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getLiquidationAuctionDuration',\n    outputs: [{ name: '', internalType: 'uint48', type: 'uint48' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getLiquidator',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: '_loanId', internalType: 'uint256', type: 'uint256' }],\n    name: 'getLoanHash',\n    outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getMaxSources',\n    outputs: [{ name: '', internalType: 'uint8', type: 'uint8' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: '_loanPrincipal', internalType: 'uint256', type: 'uint256' }],\n    name: 'getMinSourcePrincipal',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getPendingProtocolFee',\n    outputs: [\n      {\n        name: '',\n        internalType: 'struct IBaseLoan.ProtocolFee',\n        type: 'tuple',\n        components: [\n          { name: 'recipient', internalType: 'address', type: 'address' },\n          { name: 'fraction', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n    ],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getPendingProtocolFeeSetTime',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getProtocolFee',\n    outputs: [\n      {\n        name: '',\n        internalType: 'struct IBaseLoan.ProtocolFee',\n        type: 'tuple',\n        components: [\n          { name: 'recipient', internalType: 'address', type: 'address' },\n          { name: 'fraction', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n    ],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'getTotalLoansIssued',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [\n      { name: '_lender', internalType: 'address', type: 'address' },\n      { name: '_offerId', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'getUsedCapacity',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'isOfferCancelled',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'isRenegotiationOfferCancelled',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: '_contract', internalType: 'address', type: 'address' }],\n    name: 'isWhitelistedCallbackContract',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: '', internalType: 'address', type: 'address' }],\n    name: 'lenderMinOfferId',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: '', internalType: 'address', type: 'address' }],\n    name: 'lenderMinRenegotiationOfferId',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: '_loanId', internalType: 'uint256', type: 'uint256' },\n      {\n        name: '_loan',\n        internalType: 'struct IMultiSourceLoan.Loan',\n        type: 'tuple',\n        components: [\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'source',\n            internalType: 'struct IMultiSourceLoan.Source[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n              { name: 'lender', internalType: 'address', type: 'address' },\n              { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n              { name: 'accruedInterest', internalType: 'uint256', type: 'uint256' },\n              { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n              { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n            ],\n          },\n        ],\n      },\n    ],\n    name: 'liquidateLoan',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: '_collateralAddress', internalType: 'address', type: 'address' },\n      { name: '_collateralTokenId', internalType: 'uint256', type: 'uint256' },\n      { name: '_loanId', internalType: 'uint256', type: 'uint256' },\n      { name: '_repayment', internalType: 'uint256', type: 'uint256' },\n      { name: '_loan', internalType: 'bytes', type: 'bytes' },\n    ],\n    name: 'loanLiquidated',\n    outputs: [],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'name',\n    outputs: [{ name: '', internalType: 'string', type: 'string' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'uint256', type: 'uint256' },\n      { name: '', internalType: 'bytes', type: 'bytes' },\n    ],\n    name: 'onERC721Received',\n    outputs: [{ name: '', internalType: 'bytes4', type: 'bytes4' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'owner',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      {\n        name: '_renegotiationOffer',\n        internalType: 'struct IMultiSourceLoan.RenegotiationOffer',\n        type: 'tuple',\n        components: [\n          { name: 'renegotiationId', internalType: 'uint256', type: 'uint256' },\n          { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n          { name: 'lender', internalType: 'address', type: 'address' },\n          { name: 'fee', internalType: 'uint256', type: 'uint256' },\n          { name: 'signer', internalType: 'address', type: 'address' },\n          { name: 'targetPrincipal', internalType: 'uint256[]', type: 'uint256[]' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n          { name: 'expirationTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          { name: 'strictImprovement', internalType: 'bool', type: 'bool' },\n        ],\n      },\n      {\n        name: '_loan',\n        internalType: 'struct IMultiSourceLoan.Loan',\n        type: 'tuple',\n        components: [\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'source',\n            internalType: 'struct IMultiSourceLoan.Source[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n              { name: 'lender', internalType: 'address', type: 'address' },\n              { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n              { name: 'accruedInterest', internalType: 'uint256', type: 'uint256' },\n              { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n              { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n            ],\n          },\n        ],\n      },\n      { name: '_renegotiationOfferSignature', internalType: 'bytes', type: 'bytes' },\n    ],\n    name: 'refinanceFull',\n    outputs: [\n      { name: '', internalType: 'uint256', type: 'uint256' },\n      {\n        name: '',\n        internalType: 'struct IMultiSourceLoan.Loan',\n        type: 'tuple',\n        components: [\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'source',\n            internalType: 'struct IMultiSourceLoan.Source[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n              { name: 'lender', internalType: 'address', type: 'address' },\n              { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n              { name: 'accruedInterest', internalType: 'uint256', type: 'uint256' },\n              { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n              { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n            ],\n          },\n        ],\n      },\n    ],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      {\n        name: '_renegotiationOffer',\n        internalType: 'struct IMultiSourceLoan.RenegotiationOffer',\n        type: 'tuple',\n        components: [\n          { name: 'renegotiationId', internalType: 'uint256', type: 'uint256' },\n          { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n          { name: 'lender', internalType: 'address', type: 'address' },\n          { name: 'fee', internalType: 'uint256', type: 'uint256' },\n          { name: 'signer', internalType: 'address', type: 'address' },\n          { name: 'targetPrincipal', internalType: 'uint256[]', type: 'uint256[]' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n          { name: 'expirationTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          { name: 'strictImprovement', internalType: 'bool', type: 'bool' },\n        ],\n      },\n      {\n        name: '_loan',\n        internalType: 'struct IMultiSourceLoan.Loan',\n        type: 'tuple',\n        components: [\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'source',\n            internalType: 'struct IMultiSourceLoan.Source[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n              { name: 'lender', internalType: 'address', type: 'address' },\n              { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n              { name: 'accruedInterest', internalType: 'uint256', type: 'uint256' },\n              { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n              { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n            ],\n          },\n        ],\n      },\n    ],\n    name: 'refinancePartial',\n    outputs: [\n      { name: '', internalType: 'uint256', type: 'uint256' },\n      {\n        name: '',\n        internalType: 'struct IMultiSourceLoan.Loan',\n        type: 'tuple',\n        components: [\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'source',\n            internalType: 'struct IMultiSourceLoan.Source[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n              { name: 'lender', internalType: 'address', type: 'address' },\n              { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n              { name: 'accruedInterest', internalType: 'uint256', type: 'uint256' },\n              { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n              { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n            ],\n          },\n        ],\n      },\n    ],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      {\n        name: '_renegotiationOffer',\n        internalType: 'struct IMultiSourceLoan.RenegotiationOffer[]',\n        type: 'tuple[]',\n        components: [\n          { name: 'renegotiationId', internalType: 'uint256', type: 'uint256' },\n          { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n          { name: 'lender', internalType: 'address', type: 'address' },\n          { name: 'fee', internalType: 'uint256', type: 'uint256' },\n          { name: 'signer', internalType: 'address', type: 'address' },\n          { name: 'targetPrincipal', internalType: 'uint256[]', type: 'uint256[]' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n          { name: 'expirationTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          { name: 'strictImprovement', internalType: 'bool', type: 'bool' },\n        ],\n      },\n      {\n        name: '_loan',\n        internalType: 'struct IMultiSourceLoan.Loan[]',\n        type: 'tuple[]',\n        components: [\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'source',\n            internalType: 'struct IMultiSourceLoan.Source[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n              { name: 'lender', internalType: 'address', type: 'address' },\n              { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n              { name: 'accruedInterest', internalType: 'uint256', type: 'uint256' },\n              { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n              { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n            ],\n          },\n        ],\n      },\n    ],\n    name: 'refinancePartialBatch',\n    outputs: [\n      { name: 'loanId', internalType: 'uint256[]', type: 'uint256[]' },\n      {\n        name: 'loans',\n        internalType: 'struct IMultiSourceLoan.Loan[]',\n        type: 'tuple[]',\n        components: [\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'source',\n            internalType: 'struct IMultiSourceLoan.Source[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n              { name: 'lender', internalType: 'address', type: 'address' },\n              { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n              { name: 'accruedInterest', internalType: 'uint256', type: 'uint256' },\n              { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n              { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n            ],\n          },\n        ],\n      },\n    ],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: '_contract', internalType: 'address', type: 'address' }],\n    name: 'removeWhitelistedCallbackContract',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: '_collateralTo', internalType: 'address', type: 'address' },\n      { name: '_loanId', internalType: 'uint256', type: 'uint256' },\n      {\n        name: '_loan',\n        internalType: 'struct IMultiSourceLoan.Loan',\n        type: 'tuple',\n        components: [\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'source',\n            internalType: 'struct IMultiSourceLoan.Source[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'loanId', internalType: 'uint256', type: 'uint256' },\n              { name: 'lender', internalType: 'address', type: 'address' },\n              { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n              { name: 'accruedInterest', internalType: 'uint256', type: 'uint256' },\n              { name: 'startTime', internalType: 'uint256', type: 'uint256' },\n              { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n            ],\n          },\n        ],\n      },\n      { name: '_withCallback', internalType: 'bool', type: 'bool' },\n    ],\n    name: 'repayLoan',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: 'maxSources', internalType: 'uint8', type: 'uint8' }],\n    name: 'setMaxSources',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [],\n    name: 'setProtocolFee',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: 'newOwner', internalType: 'address', type: 'address' }],\n    name: 'transferOwnership',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      {\n        name: '_newMinimum',\n        internalType: 'struct IBaseLoan.ImprovementMinimum',\n        type: 'tuple',\n        components: [\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'interest', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n    ],\n    name: 'updateImprovementMinimum',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: '_newDuration', internalType: 'uint48', type: 'uint48' }],\n    name: 'updateLiquidationAuctionDuration',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: 'loanLiquidator', internalType: 'contract ILoanLiquidator', type: 'address' }],\n    name: 'updateLiquidationContract',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      {\n        name: '_newProtocolFee',\n        internalType: 'struct IBaseLoan.ProtocolFee',\n        type: 'tuple',\n        components: [\n          { name: 'recipient', internalType: 'address', type: 'address' },\n          { name: 'fraction', internalType: 'uint256', type: 'uint256' },\n        ],\n      },\n    ],\n    name: 'updateProtocolFee',\n    outputs: [],\n  },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// NftPackedListValidator\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const nftPackedListValidatorABI = [\n  { type: 'error', inputs: [], name: 'EmptyTokenIdListError' },\n  {\n    type: 'error',\n    inputs: [{ name: '_bytesPerTokenId', internalType: 'uint64', type: 'uint64' }],\n    name: 'InvalidBytesPerTokenIdError',\n  },\n  {\n    type: 'error',\n    inputs: [{ name: '_tokenId', internalType: 'uint256', type: 'uint256' }],\n    name: 'TokenIdNotFoundError',\n  },\n  {\n    stateMutability: 'pure',\n    type: 'function',\n    inputs: [\n      {\n        name: '',\n        internalType: 'struct IBaseLoan.LoanOffer',\n        type: 'tuple',\n        components: [\n          { name: 'offerId', internalType: 'uint256', type: 'uint256' },\n          { name: 'lender', internalType: 'address', type: 'address' },\n          { name: 'fee', internalType: 'uint256', type: 'uint256' },\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'capacity', internalType: 'uint256', type: 'uint256' },\n          { name: 'signer', internalType: 'address', type: 'address' },\n          { name: 'requiresLiquidation', internalType: 'bool', type: 'bool' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n          { name: 'expirationTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'validators',\n            internalType: 'struct IBaseLoan.OfferValidator[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'validator', internalType: 'address', type: 'address' },\n              { name: 'arguments', internalType: 'bytes', type: 'bytes' },\n            ],\n          },\n        ],\n      },\n      { name: '_tokenId', internalType: 'uint256', type: 'uint256' },\n      { name: '_validatorData', internalType: 'bytes', type: 'bytes' },\n    ],\n    name: 'validateOffer',\n    outputs: [],\n  },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// NftBitVectorValidator\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const nftBitVectorValidatorABI = [\n  {\n    type: 'error',\n    inputs: [{ name: '_tokenId', internalType: 'uint256', type: 'uint256' }],\n    name: 'BitVectorLengthExceededError',\n  },\n  {\n    type: 'error',\n    inputs: [{ name: '_tokenId', internalType: 'uint256', type: 'uint256' }],\n    name: 'TokenIdNotFoundError',\n  },\n  {\n    stateMutability: 'pure',\n    type: 'function',\n    inputs: [\n      {\n        name: '',\n        internalType: 'struct IBaseLoan.LoanOffer',\n        type: 'tuple',\n        components: [\n          { name: 'offerId', internalType: 'uint256', type: 'uint256' },\n          { name: 'lender', internalType: 'address', type: 'address' },\n          { name: 'fee', internalType: 'uint256', type: 'uint256' },\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'capacity', internalType: 'uint256', type: 'uint256' },\n          { name: 'signer', internalType: 'address', type: 'address' },\n          { name: 'requiresLiquidation', internalType: 'bool', type: 'bool' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n          { name: 'expirationTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'validators',\n            internalType: 'struct IBaseLoan.OfferValidator[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'validator', internalType: 'address', type: 'address' },\n              { name: 'arguments', internalType: 'bytes', type: 'bytes' },\n            ],\n          },\n        ],\n      },\n      { name: '_tokenId', internalType: 'uint256', type: 'uint256' },\n      { name: '_validatorData', internalType: 'bytes', type: 'bytes' },\n    ],\n    name: 'validateOffer',\n    outputs: [],\n  },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// RangeValidator\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const rangeValidatorABI = [\n  {\n    type: 'error',\n    inputs: [\n      { name: 'min', internalType: 'uint256', type: 'uint256' },\n      { name: 'max', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'TokenIdOutOfRangeError',\n  },\n  {\n    stateMutability: 'pure',\n    type: 'function',\n    inputs: [\n      {\n        name: '',\n        internalType: 'struct IBaseLoan.LoanOffer',\n        type: 'tuple',\n        components: [\n          { name: 'offerId', internalType: 'uint256', type: 'uint256' },\n          { name: 'lender', internalType: 'address', type: 'address' },\n          { name: 'fee', internalType: 'uint256', type: 'uint256' },\n          { name: 'borrower', internalType: 'address', type: 'address' },\n          { name: 'capacity', internalType: 'uint256', type: 'uint256' },\n          { name: 'signer', internalType: 'address', type: 'address' },\n          { name: 'requiresLiquidation', internalType: 'bool', type: 'bool' },\n          { name: 'nftCollateralAddress', internalType: 'address', type: 'address' },\n          { name: 'nftCollateralTokenId', internalType: 'uint256', type: 'uint256' },\n          { name: 'principalAddress', internalType: 'address', type: 'address' },\n          { name: 'principalAmount', internalType: 'uint256', type: 'uint256' },\n          { name: 'aprBps', internalType: 'uint256', type: 'uint256' },\n          { name: 'expirationTime', internalType: 'uint256', type: 'uint256' },\n          { name: 'duration', internalType: 'uint256', type: 'uint256' },\n          {\n            name: 'validators',\n            internalType: 'struct IBaseLoan.OfferValidator[]',\n            type: 'tuple[]',\n            components: [\n              { name: 'validator', internalType: 'address', type: 'address' },\n              { name: 'arguments', internalType: 'bytes', type: 'bytes' },\n            ],\n          },\n        ],\n      },\n      { name: '_tokenId', internalType: 'uint256', type: 'uint256' },\n      { name: '_validatorData', internalType: 'bytes', type: 'bytes' },\n    ],\n    name: 'validateOffer',\n    outputs: [],\n  },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// Owned\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const ownedABI = [\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'user', internalType: 'address', type: 'address', indexed: true },\n      { name: 'newOwner', internalType: 'address', type: 'address', indexed: true },\n    ],\n    name: 'OwnershipTransferred',\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'owner',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: 'newOwner', internalType: 'address', type: 'address' }],\n    name: 'transferOwnership',\n    outputs: [],\n  },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// SampleCollection\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const sampleCollectionABI = [\n  { stateMutability: 'nonpayable', type: 'constructor', inputs: [] },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'owner', internalType: 'address', type: 'address', indexed: true },\n      { name: 'spender', internalType: 'address', type: 'address', indexed: true },\n      { name: 'id', internalType: 'uint256', type: 'uint256', indexed: true },\n    ],\n    name: 'Approval',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'owner', internalType: 'address', type: 'address', indexed: true },\n      { name: 'operator', internalType: 'address', type: 'address', indexed: true },\n      { name: 'approved', internalType: 'bool', type: 'bool', indexed: false },\n    ],\n    name: 'ApprovalForAll',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address', indexed: true },\n      { name: 'to', internalType: 'address', type: 'address', indexed: true },\n      { name: 'id', internalType: 'uint256', type: 'uint256', indexed: true },\n    ],\n    name: 'Transfer',\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: 'spender', internalType: 'address', type: 'address' },\n      { name: 'id', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'approve',\n    outputs: [],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: 'owner', internalType: 'address', type: 'address' }],\n    name: 'balanceOf',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n    name: 'getApproved',\n    outputs: [{ name: '', internalType: 'address', type: 'address' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'address', type: 'address' },\n    ],\n    name: 'isApprovedForAll',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'lastId',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'id', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'mint',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [{ name: 'to', internalType: 'address', type: 'address' }],\n    name: 'mintNext',\n    outputs: [],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'name',\n    outputs: [{ name: '', internalType: 'string', type: 'string' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: 'id', internalType: 'uint256', type: 'uint256' }],\n    name: 'ownerOf',\n    outputs: [{ name: 'owner', internalType: 'address', type: 'address' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address' },\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'id', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'safeTransferFrom',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address' },\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'id', internalType: 'uint256', type: 'uint256' },\n      { name: 'data', internalType: 'bytes', type: 'bytes' },\n    ],\n    name: 'safeTransferFrom',\n    outputs: [],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: 'operator', internalType: 'address', type: 'address' },\n      { name: 'approved', internalType: 'bool', type: 'bool' },\n    ],\n    name: 'setApprovalForAll',\n    outputs: [],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: 'interfaceId', internalType: 'bytes4', type: 'bytes4' }],\n    name: 'supportsInterface',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'symbol',\n    outputs: [{ name: '', internalType: 'string', type: 'string' }],\n  },\n  {\n    stateMutability: 'pure',\n    type: 'function',\n    inputs: [{ name: 'id', internalType: 'uint256', type: 'uint256' }],\n    name: 'tokenURI',\n    outputs: [{ name: '', internalType: 'string', type: 'string' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address' },\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'id', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'transferFrom',\n    outputs: [],\n  },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// SampleToken\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const sampleTokenABI = [\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'owner', internalType: 'address', type: 'address', indexed: true },\n      { name: 'spender', internalType: 'address', type: 'address', indexed: true },\n      { name: 'amount', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'Approval',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address', indexed: true },\n      { name: 'to', internalType: 'address', type: 'address', indexed: true },\n      { name: 'amount', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'Transfer',\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'DOMAIN_SEPARATOR',\n    outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [\n      { name: '', internalType: 'address', type: 'address' },\n      { name: '', internalType: 'address', type: 'address' },\n    ],\n    name: 'allowance',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: 'spender', internalType: 'address', type: 'address' },\n      { name: 'amount', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'approve',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: '', internalType: 'address', type: 'address' }],\n    name: 'balanceOf',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'decimals',\n    outputs: [{ name: '', internalType: 'uint8', type: 'uint8' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'amount', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'mint',\n    outputs: [],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'name',\n    outputs: [{ name: '', internalType: 'string', type: 'string' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [{ name: '', internalType: 'address', type: 'address' }],\n    name: 'nonces',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: 'owner', internalType: 'address', type: 'address' },\n      { name: 'spender', internalType: 'address', type: 'address' },\n      { name: 'value', internalType: 'uint256', type: 'uint256' },\n      { name: 'deadline', internalType: 'uint256', type: 'uint256' },\n      { name: 'v', internalType: 'uint8', type: 'uint8' },\n      { name: 'r', internalType: 'bytes32', type: 'bytes32' },\n      { name: 's', internalType: 'bytes32', type: 'bytes32' },\n    ],\n    name: 'permit',\n    outputs: [],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'symbol',\n    outputs: [{ name: '', internalType: 'string', type: 'string' }],\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'totalSupply',\n    outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'amount', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'transfer',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [\n      { name: 'from', internalType: 'address', type: 'address' },\n      { name: 'to', internalType: 'address', type: 'address' },\n      { name: 'amount', internalType: 'uint256', type: 'uint256' },\n    ],\n    name: 'transferFrom',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n  },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// TestLoanSetup\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const testLoanSetupABI = [\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: '', internalType: 'string', type: 'string', indexed: false }],\n    name: 'log',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: '', internalType: 'address', type: 'address', indexed: false }],\n    name: 'log_address',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'val', internalType: 'uint256[]', type: 'uint256[]', indexed: false }],\n    name: 'log_array',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'val', internalType: 'int256[]', type: 'int256[]', indexed: false }],\n    name: 'log_array',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: 'val', internalType: 'address[]', type: 'address[]', indexed: false }],\n    name: 'log_array',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: '', internalType: 'bytes', type: 'bytes', indexed: false }],\n    name: 'log_bytes',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: '', internalType: 'bytes32', type: 'bytes32', indexed: false }],\n    name: 'log_bytes32',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: '', internalType: 'int256', type: 'int256', indexed: false }],\n    name: 'log_int',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'key', internalType: 'string', type: 'string', indexed: false },\n      { name: 'val', internalType: 'address', type: 'address', indexed: false },\n    ],\n    name: 'log_named_address',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'key', internalType: 'string', type: 'string', indexed: false },\n      { name: 'val', internalType: 'uint256[]', type: 'uint256[]', indexed: false },\n    ],\n    name: 'log_named_array',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'key', internalType: 'string', type: 'string', indexed: false },\n      { name: 'val', internalType: 'int256[]', type: 'int256[]', indexed: false },\n    ],\n    name: 'log_named_array',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'key', internalType: 'string', type: 'string', indexed: false },\n      { name: 'val', internalType: 'address[]', type: 'address[]', indexed: false },\n    ],\n    name: 'log_named_array',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'key', internalType: 'string', type: 'string', indexed: false },\n      { name: 'val', internalType: 'bytes', type: 'bytes', indexed: false },\n    ],\n    name: 'log_named_bytes',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'key', internalType: 'string', type: 'string', indexed: false },\n      { name: 'val', internalType: 'bytes32', type: 'bytes32', indexed: false },\n    ],\n    name: 'log_named_bytes32',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'key', internalType: 'string', type: 'string', indexed: false },\n      { name: 'val', internalType: 'int256', type: 'int256', indexed: false },\n      { name: 'decimals', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'log_named_decimal_int',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'key', internalType: 'string', type: 'string', indexed: false },\n      { name: 'val', internalType: 'uint256', type: 'uint256', indexed: false },\n      { name: 'decimals', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'log_named_decimal_uint',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'key', internalType: 'string', type: 'string', indexed: false },\n      { name: 'val', internalType: 'int256', type: 'int256', indexed: false },\n    ],\n    name: 'log_named_int',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'key', internalType: 'string', type: 'string', indexed: false },\n      { name: 'val', internalType: 'string', type: 'string', indexed: false },\n    ],\n    name: 'log_named_string',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [\n      { name: 'key', internalType: 'string', type: 'string', indexed: false },\n      { name: 'val', internalType: 'uint256', type: 'uint256', indexed: false },\n    ],\n    name: 'log_named_uint',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: '', internalType: 'string', type: 'string', indexed: false }],\n    name: 'log_string',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: '', internalType: 'uint256', type: 'uint256', indexed: false }],\n    name: 'log_uint',\n  },\n  {\n    type: 'event',\n    anonymous: false,\n    inputs: [{ name: '', internalType: 'bytes', type: 'bytes', indexed: false }],\n    name: 'logs',\n  },\n  {\n    stateMutability: 'view',\n    type: 'function',\n    inputs: [],\n    name: 'IS_TEST',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n  },\n  {\n    stateMutability: 'nonpayable',\n    type: 'function',\n    inputs: [],\n    name: 'failed',\n    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n  },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// ValidatorHelpers\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const validatorHelpersABI = [\n  {\n    type: 'error',\n    inputs: [{ name: '_tokenId', internalType: 'uint256', type: 'uint256' }],\n    name: 'BitVectorLengthExceededError',\n  },\n  { type: 'error', inputs: [], name: 'EmptyTokenIdListError' },\n  {\n    type: 'error',\n    inputs: [{ name: '_bytesPerTokenId', internalType: 'uint64', type: 'uint64' }],\n    name: 'InvalidBytesPerTokenIdError',\n  },\n  {\n    type: 'error',\n    inputs: [{ name: '_tokenId', internalType: 'uint256', type: 'uint256' }],\n    name: 'TokenIdNotFoundError',\n  },\n] as const\n", "import { Address, PublicClient } from 'viem';\n\nimport { Auction, LoanV5 } from '@/blockchain';\nimport { Wallet } from '@/clients/contracts';\nimport { auctionLoanLiquidatorABI as auctionLoanLiquidatorABIV5 } from '@/generated/blockchain/v5';\n\nimport { AllV6 } from './AllV6';\nimport { BaseContract } from './BaseContract';\n\nexport class AllV5 extends BaseContract<typeof auctionLoanLiquidatorABIV5> {\n  constructor({\n    walletClient,\n    address,\n    publicClient,\n  }: {\n    walletClient: Wallet;\n    address: Address;\n    publicClient?: PublicClient;\n  }) {\n    super({\n      walletClient,\n      address,\n      abi: auctionLoanLiquidatorABIV5,\n      publicClient,\n    });\n  }\n\n  async placeBid({\n    collectionContractAddress,\n    tokenId,\n    bid,\n    auction,\n  }: {\n    collectionContractAddress: Address;\n    tokenId: bigint;\n    bid: bigint;\n    auction: Auction;\n  }) {\n    const txHash = await this.safeContractWrite.placeBid([\n      collectionContractAddress,\n      tokenId,\n      auction,\n      bid,\n    ]);\n    return {\n      txHash,\n      waitTxInBlock: async () => {\n        const receipt = await this.bcClient.waitForTransactionReceipt({\n          hash: txHash,\n        });\n        const events = this.parseEventLogs('BidPlaced', receipt.logs);\n        if (events.length === 0) throw new Error('Bid not placed');\n        return { ...events[0].args, ...receipt };\n      },\n    };\n  }\n\n  getRemainingLockupSeconds() {\n    return 0;\n  }\n\n  async settleAuctionWithBuyout(): ReturnType<AllV6['settleAuctionWithBuyout']> {\n    throw new Error('Not implemented for V2');\n  }\n\n  async settleAuction({ auction, loan }: { auction: Auction; loan: LoanV5 }) {\n    const txHash = await this.safeContractWrite.settleAuction([auction, loan]);\n\n    return {\n      txHash,\n      waitTxInBlock: async () => {\n        const receipt = await this.bcClient.waitForTransactionReceipt({\n          hash: txHash,\n        });\n        const events = this.parseEventLogs('AuctionSettled', receipt.logs);\n        if (events.length === 0) throw new Error('Auction not settled');\n        return { ...events[0].args, ...receipt };\n      },\n    };\n  }\n}\n", "import { Address, PublicClient } from 'viem';\n\nimport { Auction, LoanV6 } from '@/blockchain';\nimport { Wallet } from '@/clients/contracts';\nimport { auctionWithBuyoutLoanLiquidatorAbi as auctionWithBuyoutLoanLiquidatorABIV6 } from '@/generated/blockchain/v6';\nimport { millisToSeconds } from '@/utils/dates';\n\nimport { BaseContract } from './BaseContract';\n\nexport class AllV6 extends BaseContract<typeof auctionWithBuyoutLoanLiquidatorABIV6> {\n  constructor({\n    walletClient,\n    address,\n    publicClient,\n  }: {\n    walletClient: Wallet;\n    address: Address;\n    publicClient?: PublicClient;\n  }) {\n    super({\n      walletClient,\n      address,\n      abi: auctionWithBuyoutLoanLiquidatorABIV6,\n      publicClient,\n    });\n  }\n\n  async placeBid({\n    collectionContractAddress,\n    tokenId,\n    bid,\n    auction,\n  }: {\n    collectionContractAddress: Address;\n    tokenId: bigint;\n    bid: bigint;\n    auction: Auction;\n  }) {\n    const txHash = await this.safeContractWrite.placeBid([\n      collectionContractAddress,\n      tokenId,\n      this.mapAuctionToAuctionArgs(auction),\n      bid,\n    ]);\n    return {\n      txHash,\n      waitTxInBlock: async () => {\n        const receipt = await this.bcClient.waitForTransactionReceipt({\n          hash: txHash,\n        });\n        const events = this.parseEventLogs('BidPlaced', receipt.logs);\n        if (events.length === 0) throw new Error('Bid not placed');\n        return { ...events[0].args, ...receipt };\n      },\n    };\n  }\n\n  async getRemainingLockupSeconds({ auction }: { auction: Pick<Auction, 'startTime'> }) {\n    const lockupTimeSeconds = await this.contract.read.getTimeForMainLenderToBuy();\n    const lockupSeconds = Number(lockupTimeSeconds);\n    const ellapsedSeconds = Math.ceil(millisToSeconds(Date.now()) - Number(auction.startTime));\n\n    if (ellapsedSeconds >= lockupSeconds) return 0;\n    return lockupSeconds - ellapsedSeconds;\n  }\n\n  async settleAuctionWithBuyout({ auction, loan }: { auction: Auction; loan: LoanV6 }) {\n    const txHash = await this.safeContractWrite.settleWithBuyout([\n      loan.nftCollateralAddress,\n      loan.nftCollateralTokenId,\n      this.mapAuctionToAuctionArgs(auction),\n      loan,\n    ]);\n\n    return {\n      txHash,\n      waitTxInBlock: async () => {\n        const receipt = await this.bcClient.waitForTransactionReceipt({\n          hash: txHash,\n        });\n        const events = this.parseEventLogs('AuctionSettledWithBuyout', receipt.logs);\n        if (events.length === 0) throw new Error('Auction not settled');\n        return { ...events[0].args, ...receipt };\n      },\n    };\n  }\n\n  async settleAuction({ auction, loan }: { auction: Auction; loan: LoanV6 }) {\n    const txHash = await this.safeContractWrite.settleAuction([\n      this.mapAuctionToAuctionArgs(auction),\n      loan,\n    ]);\n\n    return {\n      txHash,\n      waitTxInBlock: async () => {\n        const receipt = await this.bcClient.waitForTransactionReceipt({\n          hash: txHash,\n        });\n        const events = this.parseEventLogs('AuctionSettled', receipt.logs);\n        if (events.length === 0) throw new Error('Auction not settled');\n        return { ...events[0].args, ...receipt };\n      },\n    };\n  }\n\n  private mapAuctionToAuctionArgs(auction: Auction) {\n    if ('minBid' in auction) {\n      return auction;\n    }\n    throw new Error('minBid is required for v6 auctions');\n  }\n}\n", "import { Address, decodeFunctionData, Hash, Hex, PublicClient, zeroAddress } from 'viem';\n\nimport { LoanV4, OfferV4, RenegotiationV4 } from '@/blockchain';\nimport { Wallet } from '@/clients/contracts';\nimport { multiSourceLoanABI as multiSourceLoanABIV4 } from '@/generated/blockchain/v4';\nimport { EmitLoanArgs } from '@/gondi';\nimport { millisToSeconds, SECONDS_IN_MIN } from '@/utils/dates';\nimport { getMslLoanId } from '@/utils/loan';\nimport { sumBy } from '@/utils/number';\nimport { CONTRACT_DOMAIN_NAME } from '@/utils/string';\nimport { sanitizeTypedDataMessage } from '@/utils/typedData';\n\nimport { BaseContract } from './BaseContract';\nimport { MslV5 } from './MslV5';\nimport { MslV6 } from './MslV6';\n\nexport class MslV4 extends BaseContract<typeof multiSourceLoanABIV4> {\n  version = '1' as const;\n\n  constructor({\n    walletClient,\n    address,\n    publicClient,\n  }: {\n    walletClient: Wallet;\n    address: Address;\n    publicClient?: PublicClient;\n  }) {\n    super({\n      walletClient,\n      address,\n      abi: multiSourceLoanABIV4,\n      publicClient,\n    });\n  }\n\n  private getDomain() {\n    return {\n      name: CONTRACT_DOMAIN_NAME,\n      version: this.version,\n      chainId: this.wallet.chain.id,\n      verifyingContract: this.address,\n    };\n  }\n\n  async signOffer({ structToSign }: { structToSign: OfferV4 }) {\n    return this.wallet.signTypedData(\n      sanitizeTypedDataMessage({\n        domain: this.getDomain(),\n        primaryType: 'LoanOffer',\n        types: {\n          LoanOffer: [\n            { name: 'offerId', type: 'uint256' },\n            { name: 'lender', type: 'address' },\n            { name: 'fee', type: 'uint256' },\n            { name: 'borrower', type: 'address' },\n            { name: 'capacity', type: 'uint256' },\n            { name: 'signer', type: 'address' },\n            { name: 'requiresLiquidation', type: 'bool' },\n            { name: 'nftCollateralAddress', type: 'address' },\n            { name: 'nftCollateralTokenId', type: 'uint256' },\n            { name: 'principalAddress', type: 'address' },\n            { name: 'principalAmount', type: 'uint256' },\n            { name: 'aprBps', type: 'uint256' },\n            { name: 'expirationTime', type: 'uint256' },\n            { name: 'duration', type: 'uint256' },\n            { name: 'validators', type: 'OfferValidator[]' },\n          ],\n          OfferValidator: [\n            { name: 'validator', type: 'address' },\n            { name: 'arguments', type: 'bytes' },\n          ],\n        },\n        message: structToSign,\n      }),\n    );\n  }\n\n  async signRenegotiationOffer({ structToSign }: { structToSign: RenegotiationV4 }) {\n    return this.wallet.signTypedData(\n      sanitizeTypedDataMessage({\n        domain: this.getDomain(),\n        primaryType: 'RenegotiationOffer',\n        types: {\n          RenegotiationOffer: [\n            { name: 'renegotiationId', type: 'uint256' },\n            { name: 'loanId', type: 'uint256' },\n            { name: 'lender', type: 'address' },\n            { name: 'fee', type: 'uint256' },\n            { name: 'signer', type: 'address' },\n            { name: 'targetPrincipal', type: 'uint256[]' },\n            { name: 'principalAmount', type: 'uint256' },\n            { name: 'aprBps', type: 'uint256' },\n            { name: 'expirationTime', type: 'uint256' },\n            { name: 'duration', type: 'uint256' },\n            { name: 'strictImprovement', type: 'bool' },\n          ],\n        },\n        message: structToSign,\n      }),\n    );\n  }\n\n  async cancelOffer({ id }: { id: bigint }) {\n    const txHash = await this.safeContractWrite.cancelOffer([this.wallet.account.address, id]);\n    return {\n      txHash,\n      waitTxInBlock: async () => {\n        const receipt = await this.bcClient.waitForTransactionReceipt({\n          hash: txHash,\n        });\n\n        const events = this.parseEventLogs('OfferCancelled', receipt.logs);\n        if (events.length === 0) throw new Error('Offer not cancelled');\n        return { ...events[0].args, ...receipt };\n      },\n    };\n  }\n\n  async cancelOffers(_: { ids: bigint[] }): Promise<never> {\n    throw new Error('Not implemented for V1');\n  }\n\n  async cancelAllOffers({ minId }: { minId: bigint }) {\n    const txHash = await this.safeContractWrite.cancelAllOffers([\n      this.wallet.account.address,\n      minId,\n    ]);\n\n    return {\n      txHash,\n      waitTxInBlock: async () => {\n        const receipt = await this.bcClient.waitForTransactionReceipt({\n          hash: txHash,\n        });\n        const events = this.parseEventLogs('AllOffersCancelled', receipt.logs);\n        if (events.length === 0) throw new Error('Offers not cancelled');\n        return { ...events[0].args, ...receipt };\n      },\n    };\n  }\n\n  async cancelRefinanceOffer({ id }: { id: bigint }) {\n    const txHash = await this.safeContractWrite.cancelRenegotiationOffer([\n      this.wallet.account.address,\n      id,\n    ]);\n    return {\n      txHash,\n      waitTxInBlock: async () => {\n        const receipt = await this.bcClient.waitForTransactionReceipt({\n          hash: txHash,\n        });\n        const events = this.parseEventLogs('RenegotiationOfferCancelled', receipt.logs);\n        if (events.length === 0) throw new Error('Offer not cancelled');\n        return { ...events[0].args, ...receipt };\n      },\n    };\n  }\n\n  async cancelAllRenegotiations({ minId }: { minId: bigint }) {\n    const txHash = await this.safeContractWrite.cancelAllRenegotiationOffers([\n      this.wallet.account.address,\n      minId,\n    ]);\n    return {\n      txHash,\n      waitTxInBlock: async () => {\n        const receipt = await this.bcClient.waitForTransactionReceipt({\n          hash: txHash,\n        });\n        const events = this.parseEventLogs('AllRenegotiationOffersCancelled', receipt.logs);\n        if (events.length === 0) throw new Error('Offer not cancelled');\n        return { ...events[0].args, ...receipt };\n      },\n    };\n  }\n\n  private mapEmitLoanToMslEmitLoanArgs({ offerExecution, tokenId }: EmitLoanArgs) {\n    const { offer, lenderOfferSignature } = offerExecution[0];\n    const mappedOffer = {\n      ...offer,\n      signer: offer.signerAddress ?? zeroAddress,\n      lender: offer.lenderAddress,\n      borrower: offer.borrowerAddress,\n      validators: offer.offerValidators,\n      requiresLiquidation: !!offer.requiresLiquidation,\n    };\n    return [mappedOffer, tokenId, lenderOfferSignature, false] as const;\n  }\n\n  async emitLoan(emitArgs: EmitLoanArgs) {\n    const mslEmitArgs = this.mapEmitLoanToMslEmitLoanArgs(emitArgs);\n    const txHash = await this.safeContractWrite.emitLoan(mslEmitArgs);\n\n    return {\n      txHash,\n      waitTxInBlock: async () => {\n        const receipt = await this.bcClient.waitForTransactionReceipt({\n          hash: txHash,\n        });\n        const events = this.parseEventLogs('LoanEmitted', receipt.logs);\n        if (events.length === 0) throw new Error('Loan not emitted');\n        const args = events[0].args;\n        return {\n          loan: {\n            id: `${this.contract.address.toLowerCase()}.${args.loanId}`,\n            ...args.loan,\n            contractAddress: this.contract.address,\n          },\n          loanId: args.loanId,\n          offerId: `${this.contract.address.toLowerCase()}.${mslEmitArgs[0].lender.toLowerCase()}.${\n            args.offerId\n          }`,\n          ...receipt,\n        };\n      },\n    };\n  }\n\n  async repayLoan({\n    loan,\n    nftReceiver,\n    loanId,\n  }: {\n    loan: LoanV4;\n    loanId: bigint;\n    nftReceiver?: Address;\n  }) {\n    const receiver = nftReceiver ?? this.wallet.account.address;\n\n    const txHash = await this.safeContractWrite.repayLoan([receiver, loanId, loan, false]);\n\n    return {\n      txHash,\n      waitTxInBlock: async () => {\n        const receipt = await this.bcClient.waitForTransactionReceipt({\n          hash: txHash,\n        });\n        const events = this.parseEventLogs('LoanRepaid', receipt.logs);\n        if (events.length === 0) throw new Error('Loan not repaid');\n        return { ...events[0].args, ...receipt };\n      },\n    };\n  }\n\n  getRemainingLockupSeconds() {\n    return 0;\n  }\n\n  isEndLockedUp() {\n    return false;\n  }\n\n  async refinanceBatch({\n    renegotiationId,\n    refinancings,\n  }: {\n    renegotiationId: bigint;\n    refinancings: {\n      loan: LoanV4;\n      newAprBps: bigint;\n      sources: {\n        source: LoanV4['source'][number];\n        refinancingPrincipal: bigint;\n      }[];\n    }[];\n  }) {\n    const offers: RenegotiationV4[] = [];\n    const loans: LoanV4[] = [];\n\n    // Generate (renegotiation offer, loan) pairs\n    refinancings.forEach(({ loan, sources, newAprBps }, index) => {\n      const targetPrincipal = loan.source.map(({ principalAmount, loanId }) => {\n        const refinancingSource = sources.find(({ source }) => source.loanId === loanId);\n        return principalAmount - (refinancingSource?.refinancingPrincipal ?? 0n);\n      });\n      const refinancingPrincipalAmount = sumBy(sources, 'refinancingPrincipal') ?? 0n;\n\n      offers.push({\n        renegotiationId: renegotiationId + BigInt(index),\n        loanId: getMslLoanId(loan),\n        lender: this.wallet.account.address,\n        fee: 0n,\n        signer: this.wallet.account.address,\n        targetPrincipal,\n        principalAmount: refinancingPrincipalAmount,\n        aprBps: newAprBps,\n        expirationTime: BigInt(millisToSeconds(Date.now()) + SECONDS_IN_MIN),\n        duration: 0n,\n        strictImprovement: true,\n      });\n      loans.push(loan);\n    });\n\n    const txHash = await this.safeContractWrite.refinancePartialBatch([offers, loans]);\n    return {\n      txHash,\n      waitTxInBlock: async () => {\n        const receipt = await this.bcClient.waitForTransactionReceipt({\n          hash: txHash,\n        });\n        const events = this.parseEventLogs('LoanRefinanced', receipt.logs);\n        if (events.length !== refinancings.length) throw new Error('Loan not refinanced');\n\n        const results = events.map(({ args }) => args);\n        return { results, ...receipt };\n      },\n    };\n  }\n\n  async refinanceFullLoan({\n    offer,\n    signature,\n    loan,\n  }: {\n    offer: RenegotiationV4;\n    signature: Hash;\n    loan: LoanV4;\n  }) {\n    return this.executeRenegotiation({\n      offer,\n      executeRenegotiationTxn: () => this.safeContractWrite.refinanceFull([offer, loan, signature]),\n    });\n  }\n\n  async refinancePartialLoan({ offer, loan }: { offer: RenegotiationV4; loan: LoanV4 }) {\n    return this.executeRenegotiation({\n      offer,\n      executeRenegotiationTxn: () => this.safeContractWrite.refinancePartial([offer, loan]),\n    });\n  }\n\n  private async executeRenegotiation({\n    offer,\n    executeRenegotiationTxn,\n  }: {\n    offer: RenegotiationV4;\n    executeRenegotiationTxn: () => Promise<Hash>;\n  }) {\n    const txHash = await executeRenegotiationTxn();\n    return {\n      txHash,\n      waitTxInBlock: async () => {\n        const receipt = await this.bcClient.waitForTransactionReceipt({\n          hash: txHash,\n        });\n        const events = this.parseEventLogs('LoanRefinanced', receipt.logs);\n        if (events.length === 0) throw new Error('Loan not refinanced');\n        const args = events[0].args;\n        return {\n          loan: {\n            id: `${this.contract.address.toLowerCase()}.${args.newLoanId}`,\n            ...args.loan,\n            contractAddress: this.contract.address,\n          },\n          loanId: args.newLoanId,\n          renegotiationId: `${this.contract.address.toLowerCase()}.${offer.lender.toLowerCase()}.${\n            args.renegotiationId\n          }`,\n          ...receipt,\n        };\n      },\n    };\n  }\n\n  async addTranche(): ReturnType<MslV6['addTranche']> {\n    throw new Error('Not implemented for V1');\n  }\n\n  async refinanceFromOffers(): ReturnType<MslV6['refinanceFromOffers']> {\n    throw new Error('Not implemented for V1');\n  }\n\n  async delegateMulticall(): ReturnType<MslV5['delegateMulticall']> {\n    throw new Error('Not implemented for V1');\n  }\n\n  async delegate(): ReturnType<MslV5['delegate']> {\n    throw new Error('Not implemented for V1');\n  }\n\n  async revokeDelegate(): ReturnType<MslV5['revokeDelegate']> {\n    throw new Error('Not implemented for V1');\n  }\n\n  async revokeDelegationsAndEmitLoan(): ReturnType<MslV5['revokeDelegationsAndEmitLoan']> {\n    throw new Error('Not implemented for V1');\n  }\n  async liquidateLoan({ loan, loanId }: { loan: LoanV4; loanId: bigint }) {\n    const txHash = await this.safeContractWrite.liquidateLoan([loanId, loan]);\n\n    return {\n      txHash,\n      waitTxInBlock: async () => {\n        const receipt = await this.bcClient.waitForTransactionReceipt({\n          hash: txHash,\n        });\n        const foreclosedEvents = this.parseEventLogs('LoanForeclosed', receipt.logs);\n        const sentToLiquidatorEvents = this.parseEventLogs('LoanSentToLiquidator', receipt.logs);\n        if (foreclosedEvents.length === 0 && sentToLiquidatorEvents.length === 0)\n          throw new Error('Loan not liquidated');\n        return {\n          ...(foreclosedEvents?.[0]?.args ?? sentToLiquidatorEvents?.[0]?.args),\n          ...receipt,\n        };\n      },\n    };\n  }\n\n  decodeRepaymentCalldata(calldata: Hex) {\n    const decoded = decodeFunctionData({\n      abi: multiSourceLoanABIV4,\n      data: calldata,\n    });\n    if (decoded.functionName !== 'repayLoan') {\n      throw new Error('Wrong calldata');\n    }\n    return decoded.args[0];\n  }\n\n  async getProtocolFee(): ReturnType<MslV6['getProtocolFee']> {\n    throw new Error('Not implemented for V1');\n  }\n}\n", "import { Address, decodeFunctionData, encodeFunctionData, Hash, Hex, PublicClient } from 'viem';\n\nimport {\n  LoanV5,\n  OfferV5,\n  RenegotiationV5,\n  REORG_SAFETY_BUFFER,\n  SignableRepaymentDataV5,\n  zeroHash,\n} from '@/blockchain';\nimport { Wallet } from '@/clients/contracts';\nimport { multiSourceLoanABI as multiSourceLoanABIV5 } from '@/generated/blockchain/v5';\nimport { EmitLoanArgs } from '@/gondi';\nimport { millisToSeconds, SECONDS_IN_DAY } from '@/utils/dates';\nimport { LoanDelegation } from '@/utils/delegation';\nimport { getMslLoanId, getRemainingSeconds } from '@/utils/loan';\nimport { bpsToPercentage, sumBy } from '@/utils/number';\nimport { CONTRACT_DOMAIN_NAME } from '@/utils/string';\nimport { sanitizeTypedDataMessage } from '@/utils/typedData';\n\nimport { BaseContract } from './BaseContract';\nimport { MslV6 } from './MslV6';\n\ntype RepayArgs = {\n  loan: LoanV5;\n  signableRepaymentData: SignableRepaymentDataV5;\n};\n\nexport class MslV5 extends BaseContract<typeof multiSourceLoanABIV5> {\n  version = '2' as const;\n\n  constructor({\n    walletClient,\n    address,\n    publicClient,\n  }: {\n    walletClient: Wallet;\n    address: Address;\n    publicClient?: PublicClient;\n  }) {\n    super({\n      walletClient,\n      address,\n      abi: multiSourceLoanABIV5,\n      publicClient,\n    });\n  }\n\n  private getDomain() {\n    return {\n      name: CONTRACT_DOMAIN_NAME,\n      version: this.version,\n      chainId: this.wallet.chain.id,\n      verifyingContract: this.address,\n    };\n  }\n\n  async signOffer({ structToSign }: { structToSign: OfferV5 }) {\n    return this.wallet.signTypedData(\n      sanitizeTypedDataMessage({\n        domain: this.getDomain(),\n        primaryType: 'LoanOffer',\n        types: {\n          LoanOffer: [\n            { name: 'offerId', type: 'uint256' },\n            { name: 'lender', type: 'address' },\n            { name: 'fee', type: 'uint256' },\n            { name: 'borrower', type: 'address' },\n            { name: 'capacity', type: 'uint256' },\n            { name: 'nftCollateralAddress', type: 'address' },\n            { name: 'nftCollateralTokenId', type: 'uint256' },\n            { name: 'principalAddress', type: 'address' },\n            { name: 'principalAmount', type: 'uint256' },\n            { name: 'aprBps', type: 'uint256' },\n            { name: 'expirationTime', type: 'uint256' },\n            { name: 'duration', type: 'uint256' },\n            { name: 'validators', type: 'OfferValidator[]' },\n          ],\n          OfferValidator: [\n            { name: 'validator', type: 'address' },\n            { name: 'arguments', type: 'bytes' },\n          ],\n        },\n        message: structToSign,\n      }),\n    );\n  }\n\n  async signRenegotiationOffer({ structToSign }: { structToSign: RenegotiationV5 }) {\n    return this.wallet.signTypedData(\n      sanitizeTypedDataMessage({\n        domain: this.getDomain(),\n        primaryType: 'RenegotiationOffer',\n        types: {\n          RenegotiationOffer: [\n            { name: 'renegotiationId', type: 'uint256' },\n            { name: 'loanId', type: 'uint256' },\n            { name: 'lender', type: 'address' },\n            { name: 'fee', type: 'uint256' },\n            { name: 'targetPrincipal', type: 'uint256[]' },\n            { name: 'principalAmount', type: 'uint256' },\n            { name: 'aprBps', type: 'uint256' },\n            { name: 'expirationTime', type: 'uint256' },\n            { name: 'duration', type: 'uint256' },\n          ],\n        },\n        message: structToSign,\n      }),\n    );\n  }\n\n  async cancelOffer({ id }: { id: bigint }) {\n    const txHash = await this.safeContractWrite.cancelOffer([id]);\n    return {\n      txHash,\n      waitTxInBlock: async () => {\n        const receipt = await this.bcClient.waitForTransactionReceipt({\n          hash: txHash,\n        });\n\n        const events = this.parseEventLogs('OfferCancelled', receipt.logs);\n        if (events.length === 0) throw new Error('Offer not cancelled');\n        return { ...events[0].args, ...receipt };\n      },\n    };\n  }\n\n  async cancelOffers({ ids }: { ids: bigint[] }) {\n    const encoded = ids.map((id) =>\n      encodeFunctionData({ abi: this.abi, functionName: 'cancelOffer', args: [id] }),\n    );\n    const txHash = await this.safeContractWrite.multicall([encoded]);\n    return {\n      txHash,\n      waitTxInBlock: async () => {\n        const receipt = await this.bcClient.waitForTransactionReceipt({ hash: txHash });\n        const events = this.parseEventLogs('OfferCancelled', receipt.logs);\n        if (events.length !== ids.length) throw new Error('Offers not cancelled');\n        return { events: events.map(({ args }) => args), ...receipt };\n      },\n    };\n  }\n\n  async cancelAllOffers({ minId }: { minId: bigint }) {\n    const txHash = await this.safeContractWrite.cancelAllOffers([minId]);\n\n    return {\n      txHash,\n      waitTxInBlock: async () => {\n        const receipt = await this.bcClient.waitForTransactionReceipt({\n          hash: txHash,\n        });\n        const events = this.parseEventLogs('AllOffersCancelled', receipt.logs);\n        if (events.length === 0) throw new Error('Offers not cancelled');\n        return { ...events[0].args, ...receipt };\n      },\n    };\n  }\n\n  async cancelRefinanceOffer({ id }: { id: bigint }) {\n    const txHash = await this.safeContractWrite.cancelRenegotiationOffer([id]);\n    return {\n      txHash,\n      waitTxInBlock: async () => {\n        const receipt = await this.bcClient.waitForTransactionReceipt({\n          hash: txHash,\n        });\n        const events = this.parseEventLogs('RenegotiationOfferCancelled', receipt.logs);\n        if (events.length === 0) throw new Error('Renegotiation offer not cancelled');\n        return { ...events[0].args, ...receipt };\n      },\n    };\n  }\n\n  async cancelAllRenegotiations({ minId }: { minId: bigint }) {\n    const txHash = await this.safeContractWrite.cancelAllRenegotiationOffers([minId]);\n    return {\n      txHash,\n      waitTxInBlock: async () => {\n        const receipt = await this.bcClient.waitForTransactionReceipt({\n          hash: txHash,\n        });\n        const events = this.parseEventLogs('AllRenegotiationOffersCancelled', receipt.logs);\n        if (events.length === 0) throw new Error('Renegotiation offers not cancelled');\n        return { ...events[0].args, ...receipt };\n      },\n    };\n  }\n\n  private mapEmitLoanToMslEmitLoanArgs({ offerExecution, tokenId, expirationTime }: EmitLoanArgs) {\n    const { offer, amount, lenderOfferSignature } = offerExecution[0];\n    const executionData = {\n      offer: {\n        ...offer,\n        lender: offer.lenderAddress,\n        borrower: offer.borrowerAddress,\n        validators: offer.offerValidators,\n      },\n      tokenId,\n      amount: amount ?? offer.principalAmount,\n      expirationTime: expirationTime ?? BigInt(millisToSeconds(Date.now()) + SECONDS_IN_DAY),\n      callbackData: '0x' as Hash, // No callback data is expected here, only for BNPL [Levearage call]\n    };\n\n    return {\n      executionData,\n      lender: offer.lenderAddress,\n      borrower: this.wallet.account.address,\n      lenderOfferSignature,\n      borrowerOfferSignature: '0x' as Hash, // No signature data is expected here, only for BNPL [Levearage call]\n    };\n  }\n\n  async emitLoan(emitArgs: EmitLoanArgs) {\n    const mslEmitArgs = this.mapEmitLoanToMslEmitLoanArgs(emitArgs);\n    const txHash = await this.safeContractWrite.emitLoan([mslEmitArgs]);\n\n    return {\n      txHash,\n      waitTxInBlock: async () => {\n        const receipt = await this.bcClient.waitForTransactionReceipt({\n          hash: txHash,\n        });\n        const events = this.parseEventLogs('LoanEmitted', receipt.logs);\n        if (events.length === 0) throw new Error('Loan not emitted');\n        const args = events[0].args;\n        return {\n          loan: {\n            id: `${this.contract.address.toLowerCase()}.${args.loanId}`,\n            ...args.loan,\n            contractAddress: this.contract.address,\n          },\n          loanId: args.loanId,\n          offerId: `${this.contract.address.toLowerCase()}.${mslEmitArgs.lender.toLowerCase()}.${\n            args.offerId\n          }`,\n          ...receipt,\n        };\n      },\n    };\n  }\n\n  /** This version's `revokeDelegate` takes no rights, so each delegate is revoked once. */\n  async revokeDelegationsAndEmitLoan({\n    delegations,\n    emit,\n  }: {\n    delegations: readonly LoanDelegation[];\n    emit: EmitLoanArgs;\n  }) {\n    if (delegations.length === 0) throw new Error('At least one delegation must be revoked');\n\n    const mslEmitArgs = this.mapEmitLoanToMslEmitLoanArgs(emit);\n    const { tokenId, offer } = mslEmitArgs.executionData;\n    const delegates = new Set(\n      delegations.map((delegation) =>\n        typeof delegation === 'string' ? delegation : delegation.to,\n      ),\n    );\n    const encodedRevokeDelegations = [...delegates].map((delegate) =>\n      encodeFunctionData({\n        abi: multiSourceLoanABIV5,\n        functionName: 'revokeDelegate',\n        args: [delegate, offer.nftCollateralAddress, tokenId],\n      }),\n    );\n\n    const encodedEmitLoan = encodeFunctionData({\n      abi: multiSourceLoanABIV5,\n      functionName: 'emitLoan',\n      args: [mslEmitArgs],\n    });\n\n    const txHash = await this.safeContractWrite.multicall([\n      [...encodedRevokeDelegations, encodedEmitLoan],\n    ]);\n\n    return {\n      txHash,\n      waitTxInBlock: async () => {\n        const receipt = await this.bcClient.waitForTransactionReceipt({\n          hash: txHash,\n        });\n\n        const revokeEvents = this.parseEventLogs('RevokeDelegate', receipt.logs);\n        if (revokeEvents.length !== encodedRevokeDelegations.length)\n          throw new Error('Revoke delegations failed');\n\n        const emitEvents = this.parseEventLogs('LoanEmitted', receipt.logs);\n        if (emitEvents.length === 0) throw new Error('Loan not emitted');\n\n        const results = [\n          ...revokeEvents.map(({ args }) => args),\n          ...emitEvents.map(({ args }) => args),\n        ];\n        const emitLoanArgs = emitEvents[0].args;\n        return {\n          loan: {\n            id: `${this.contract.address.toLowerCase()}.${emitLoanArgs.loanId}`,\n            ...emitLoanArgs.loan,\n            contractAddress: this.contract.address,\n          },\n          loanId: emitLoanArgs.loanId,\n          ...receipt,\n          results,\n        };\n      },\n    };\n  }\n\n  async repayLoan({ loan, loanId }: { loan: LoanV5; loanId: bigint }) {\n    const signableRepaymentData = {\n      loanId,\n      callbackData: '0x' as Hash, // No callback data is expected here, only for BNPL [Levearage call]\n      shouldDelegate: false, // No need to delegate\n    };\n    const txHash = await this.safeContractWrite.repayLoan([\n      {\n        data: signableRepaymentData,\n        loan,\n        borrowerSignature: '0x', // No signature data is expected here, only for BNPL [Levearage call]\n      },\n    ]);\n    return {\n      txHash,\n      waitTxInBlock: async () => {\n        const receipt = await this.bcClient.waitForTransactionReceipt({\n          hash: txHash,\n        });\n        const events = this.parseEventLogs('LoanRepaid', receipt.logs);\n        if (events.length === 0) throw new Error('Loan not repaid');\n        return { ...events[0].args, ...receipt };\n      },\n    };\n  }\n\n  async getRemainingLockupSeconds({ loan }: { loan: LoanV5 }) {\n    const newestSource = loan.source[0];\n    const loanEndDate = loan.startTime + loan.duration;\n    const newestSourceDuration = loanEndDate - newestSource.startTime;\n\n    const lockPeriodBps = await this.contract.read.getMinLockPeriod();\n    const lockPercentage = bpsToPercentage(lockPeriodBps);\n\n    const lockupTimeSeconds = Math.ceil(Number(newestSourceDuration) * lockPercentage);\n\n    const ellapsedSeconds = Math.ceil(millisToSeconds(Date.now()) - Number(newestSource.startTime));\n\n    if (ellapsedSeconds >= lockupTimeSeconds) return 0;\n    return lockupTimeSeconds - ellapsedSeconds;\n  }\n\n  isEndLockedUp() {\n    return false;\n  }\n\n  async refinanceBatch({\n    renegotiationId,\n    refinancings,\n  }: {\n    renegotiationId: bigint;\n    refinancings: {\n      loan: LoanV5;\n      newAprBps: bigint;\n      sources: {\n        source: LoanV5['source'][number];\n        refinancingPrincipal: bigint;\n      }[];\n    }[];\n  }) {\n    // Generate multicall encoded function data for (renegotiation offer, loan) pairs\n    const data = refinancings.map(({ loan, sources, newAprBps }, index) => {\n      const targetPrincipal = loan.source.map(({ principalAmount, loanId }) => {\n        const refinancingSource = sources.find(({ source }) => source.loanId === loanId);\n        return principalAmount - (refinancingSource?.refinancingPrincipal ?? 0n);\n      });\n      const refinancingPrincipalAmount = sumBy(sources, 'refinancingPrincipal') ?? 0n;\n\n      const offer = {\n        renegotiationId: renegotiationId + BigInt(index),\n        loanId: getMslLoanId(loan),\n        lender: this.wallet.account.address,\n        fee: 0n,\n        targetPrincipal,\n        principalAmount: refinancingPrincipalAmount,\n        aprBps: newAprBps,\n        expirationTime: BigInt(millisToSeconds(Date.now())) + REORG_SAFETY_BUFFER,\n        duration: BigInt(getRemainingSeconds(loan)) + REORG_SAFETY_BUFFER,\n      };\n\n      const isFullRefinance = refinancingPrincipalAmount === loan.principalAmount;\n      if (isFullRefinance) {\n        return encodeFunctionData({\n          abi: multiSourceLoanABIV5,\n          functionName: 'refinanceFull',\n          args: [offer, loan, zeroHash],\n        });\n      }\n      return encodeFunctionData({\n        abi: multiSourceLoanABIV5,\n        functionName: 'refinancePartial',\n        args: [{ ...offer, duration: 0n }, loan],\n      });\n    });\n\n    const txHash = await this.safeContractWrite.multicall([data]);\n    return {\n      txHash,\n      waitTxInBlock: async () => {\n        const receipt = await this.bcClient.waitForTransactionReceipt({\n          hash: txHash,\n        });\n        const events = this.parseEventLogs('LoanRefinanced', receipt.logs);\n        if (events.length !== refinancings.length) throw new Error('Loan not refinanced');\n\n        const results = events.map(({ args }) => args);\n        return { results, ...receipt };\n      },\n    };\n  }\n\n  async refinanceFullLoan({\n    offer,\n    signature,\n    loan,\n  }: {\n    offer: RenegotiationV5;\n    signature: Hash;\n    loan: LoanV5;\n  }) {\n    return this.executeRenegotiation({\n      offer,\n      executeRenegotiationTxn: () => this.safeContractWrite.refinanceFull([offer, loan, signature]),\n    });\n  }\n\n  async refinancePartialLoan({ offer, loan }: { offer: RenegotiationV5; loan: LoanV5 }) {\n    return this.executeRenegotiation({\n      offer,\n      executeRenegotiationTxn: () => this.safeContractWrite.refinancePartial([offer, loan]),\n    });\n  }\n\n  private async executeRenegotiation({\n    offer,\n    executeRenegotiationTxn,\n  }: {\n    offer: RenegotiationV5;\n    executeRenegotiationTxn: () => Promise<Hash>;\n  }) {\n    const txHash = await executeRenegotiationTxn();\n    return {\n      txHash,\n      waitTxInBlock: async () => {\n        const receipt = await this.bcClient.waitForTransactionReceipt({\n          hash: txHash,\n        });\n        const events = this.parseEventLogs('LoanRefinanced', receipt.logs);\n        if (events.length === 0) throw new Error('Loan not refinanced');\n        const args = events[0].args;\n        return {\n          loan: {\n            id: `${this.contract.address.toLowerCase()}.${args.newLoanId}`,\n            ...args.loan,\n            contractAddress: this.contract.address,\n          },\n          loanId: args.newLoanId,\n          renegotiationId: `${this.contract.address.toLowerCase()}.${offer.lender.toLowerCase()}.${\n            args.renegotiationId\n          }`,\n          ...receipt,\n        };\n      },\n    };\n  }\n\n  async addTranche(): ReturnType<MslV6['addTranche']> {\n    throw new Error('Not implemented for V2');\n  }\n\n  async refinanceFromOffers(): ReturnType<MslV6['refinanceFromOffers']> {\n    throw new Error('Not implemented for V2');\n  }\n\n  async delegateMulticall(delegations: Parameters<MslV5['delegate']>[0][]) {\n    if (delegations.length === 0) throw new Error('At least one delegation must be revoked');\n\n    const txHash = await this.safeContractWrite.multicall([\n      delegations.map((delegation) =>\n        encodeFunctionData({\n          abi: multiSourceLoanABIV5,\n          functionName: 'delegate',\n          args: [\n            delegation.loanId,\n            delegation.loan,\n            delegation.to,\n            delegation.rights ?? zeroHash,\n            delegation.enable,\n          ],\n        }),\n      ),\n    ]);\n\n    return {\n      txHash,\n      waitTxInBlock: async () => {\n        const receipt = await this.bcClient.waitForTransactionReceipt({\n          hash: txHash,\n        });\n        const events = this.parseEventLogs('Delegated', receipt.logs);\n        if (events.length !== delegations.length) throw new Error('Delegate multicall failed');\n\n        return {\n          ...receipt,\n          results: events.map(({ args }) => args),\n        };\n      },\n    };\n  }\n\n  async delegate({\n    loan,\n    loanId,\n    to,\n    rights = zeroHash,\n    enable,\n  }: {\n    loan: LoanV5;\n    loanId: bigint;\n    to: Address;\n    rights?: Hash;\n    enable: boolean;\n  }) {\n    const txHash = await this.safeContractWrite.delegate([loanId, loan, to, rights, enable]);\n\n    return {\n      txHash,\n      waitTxInBlock: async () => {\n        const receipt = await this.bcClient.waitForTransactionReceipt({\n          hash: txHash,\n        });\n        const events = this.parseEventLogs('Delegated', receipt.logs);\n        if (events.length === 0) throw new Error('Token not delegated');\n        const args = events[0].args;\n        return {\n          loan: {\n            ...loan,\n            loanId,\n            contractAddress: this.contract.address,\n          },\n          value: args.value,\n          ...receipt,\n        };\n      },\n    };\n  }\n\n  async revokeDelegate({\n    to,\n    collection,\n    tokenId,\n  }: {\n    to: Address;\n    collection: Address;\n    tokenId: bigint;\n  }) {\n    const txHash = await this.safeContractWrite.revokeDelegate([to, collection, tokenId]);\n\n    return {\n      txHash,\n      waitTxInBlock: async () => {\n        const receipt = await this.bcClient.waitForTransactionReceipt({\n          hash: txHash,\n        });\n        const events = this.parseEventLogs('RevokeDelegate', receipt.logs);\n        if (events.length === 0) throw new Error('Token delegation not revoked');\n        const args = events[0].args;\n        return { ...args, ...receipt };\n      },\n    };\n  }\n\n  async liquidateLoan({ loan, loanId }: { loan: LoanV5; loanId: bigint }) {\n    const txHash = await this.safeContractWrite.liquidateLoan([loanId, loan]);\n    return {\n      txHash,\n      waitTxInBlock: async () => {\n        const receipt = await this.bcClient.waitForTransactionReceipt({\n          hash: txHash,\n        });\n        const foreclosedEvents = this.parseEventLogs('LoanForeclosed', receipt.logs);\n        const sentToLiquidatorEvents = this.parseEventLogs('LoanSentToLiquidator', receipt.logs);\n        if (foreclosedEvents.length === 0 && sentToLiquidatorEvents.length === 0)\n          throw new Error('Loan not liquidated');\n        return {\n          ...(foreclosedEvents?.[0]?.args ?? sentToLiquidatorEvents?.[0]?.args),\n          ...receipt,\n        };\n      },\n    };\n  }\n\n  decodeRepaymentCalldata(calldata: Hex) {\n    const decoded = decodeFunctionData({\n      abi: this.abi,\n      data: calldata,\n    });\n    if (decoded.functionName !== 'repayLoan') {\n      throw new Error('Wrong calldata');\n    }\n    return decoded.args[0];\n  }\n\n  async getProtocolFee(): ReturnType<MslV6['getProtocolFee']> {\n    throw new Error('Not implemented for V2');\n  }\n\n  async signRepaymentData({ structToSign }: { structToSign: SignableRepaymentDataV5 }) {\n    return this.wallet.signTypedData(\n      sanitizeTypedDataMessage({\n        domain: this.getDomain(),\n        primaryType: 'SignableRepaymentData',\n        types: {\n          SignableRepaymentData: [\n            { name: 'loanId', type: 'uint256' },\n            { name: 'callbackData', type: 'bytes' },\n            { name: 'shouldDelegate', type: 'bool' },\n          ],\n        },\n        message: structToSign,\n      }),\n    );\n  }\n\n  async encodeRepayLoan({\n    repayArgs,\n    withSignature,\n  }: {\n    repayArgs: RepayArgs;\n    withSignature: boolean;\n  }) {\n    const repayLoanArgs = {\n      data: repayArgs.signableRepaymentData,\n      loan: repayArgs.loan,\n      borrowerSignature: withSignature\n        ? await this.signRepaymentData({ structToSign: repayArgs.signableRepaymentData })\n        : '0x',\n    };\n\n    return encodeFunctionData({\n      abi: this.abi,\n      functionName: 'repayLoan',\n      args: [repayLoanArgs],\n    });\n  }\n}\n", "import {\n  Address,\n  decodeFunctionData,\n  encodeFunctionData,\n  Hash,\n  Hex,\n  parseEventLogs,\n  PublicClient,\n  zeroAddress,\n} from 'viem';\n\nimport {\n  BORROWER_SIGNATURE_LIFETIME,\n  ExecutionDataV6,\n  ExecutionDataV7,\n  ExecutionDataV8,\n  LoanV6,\n  OfferV6,\n  OfferV8,\n  RenegotiationV6,\n  REORG_SAFETY_BUFFER,\n  SignableRepaymentDataV6,\n  zeroHash,\n} from '@/blockchain';\nimport { Wallet } from '@/clients/contracts';\nimport { multiSourceLoanAbi as multiSourceLoanAbiV6 } from '@/generated/blockchain/v6';\nimport { multiSourceLoanAbi as multiSourceLoanAbiV7 } from '@/generated/blockchain/v7';\nimport { multiSourceLoanAbi as multiSourceLoanAbiV8 } from '@/generated/blockchain/v8';\nimport { EmitLoanArgs } from '@/gondi';\nimport { millisToSeconds, SECONDS_IN_DAY, secondsToMillis } from '@/utils/dates';\nimport { delegationRevocations, LoanDelegation } from '@/utils/delegation';\nimport { getMslLoanId, getRemainingSeconds, LoanToMslLoanType } from '@/utils/loan';\nimport { bpsToPercentage, sumBy } from '@/utils/number';\nimport { areSameAddress, CONTRACT_DOMAIN_NAME } from '@/utils/string';\nimport { sanitizeTypedDataMessage } from '@/utils/typedData';\n\nimport { BaseContract } from './BaseContract';\n\ntype RepayArgs = {\n  loan: LoanV6;\n  signableRepaymentData: SignableRepaymentDataV6;\n};\n\nconst MSL_V6_ABI_BY_VERSION = {\n  '3': multiSourceLoanAbiV6,\n  '3.1': multiSourceLoanAbiV7,\n  '3.2': multiSourceLoanAbiV8,\n} as const;\n\nexport type MslV6Version = keyof typeof MSL_V6_ABI_BY_VERSION;\n\ntype LoanEmittedArgs = ReturnType<\n  typeof parseEventLogs<(typeof MSL_V6_ABI_BY_VERSION)[MslV6Version], true, 'LoanEmitted'>\n>[number]['args'];\n\nexport class MslV6 extends BaseContract<\n  typeof multiSourceLoanAbiV6 | typeof multiSourceLoanAbiV7 | typeof multiSourceLoanAbiV8\n> {\n  version: MslV6Version;\n\n  constructor({\n    walletClient,\n    address,\n    version,\n    publicClient,\n  }: {\n    walletClient: Wallet;\n    address: Address;\n    version: MslV6Version;\n    publicClient?: PublicClient;\n  }) {\n    super({\n      walletClient,\n      address,\n      abi: MSL_V6_ABI_BY_VERSION[version],\n      publicClient,\n    });\n    this.version = version;\n  }\n\n  private getDomain() {\n    return {\n      name: CONTRACT_DOMAIN_NAME,\n      version: this.version,\n      chainId: this.wallet.chain.id,\n      verifyingContract: this.address,\n    };\n  }\n\n  private loanOfferType() {\n    return [\n      { name: 'offerId', type: 'uint256' },\n      { name: 'lender', type: 'address' },\n      { name: 'fee', type: 'uint256' },\n      { name: 'capacity', type: 'uint256' },\n      { name: 'nftCollateralAddress', type: 'address' },\n      { name: 'nftCollateralTokenId', type: 'uint256' },\n      { name: 'principalAddress', type: 'address' },\n      { name: 'principalAmount', type: 'uint256' },\n      { name: 'aprBps', type: 'uint256' },\n      { name: 'expirationTime', type: 'uint256' },\n      { name: 'duration', type: 'uint256' },\n      { name: 'maxSeniorRepayment', type: 'uint256' },\n      { name: 'validators', type: 'OfferValidator[]' },\n      ...(this.version === '3.2'\n        ? [\n            { name: 'lenderRefinanceDisabled', type: 'bool' },\n            { name: 'borrower', type: 'address' },\n          ]\n        : []),\n    ];\n  }\n\n  private executionDataType() {\n    return [\n      { name: 'offerExecution', type: 'OfferExecution[]' },\n      ...(this.version !== '3'\n        ? [\n            { name: 'loanId', type: 'uint256' },\n            { name: 'nftCollateralAddress', type: 'address' },\n          ]\n        : []),\n      { name: 'tokenId', type: 'uint256' },\n      { name: 'duration', type: 'uint256' },\n      { name: 'expirationTime', type: 'uint256' },\n      { name: 'principalReceiver', type: 'address' },\n      { name: 'callbackData', type: 'bytes' },\n    ];\n  }\n\n  async signOffer({ structToSign }: { structToSign: OfferV6 | OfferV8 }) {\n    return this.wallet.signTypedData(\n      sanitizeTypedDataMessage({\n        domain: this.getDomain(),\n        primaryType: 'LoanOffer',\n        types: {\n          LoanOffer: this.loanOfferType(),\n          OfferValidator: [\n            { name: 'validator', type: 'address' },\n            { name: 'arguments', type: 'bytes' },\n          ],\n        },\n        message: structToSign,\n      }),\n    );\n  }\n\n  async signRenegotiationOffer({ structToSign }: { structToSign: RenegotiationV6 }) {\n    return this.wallet.signTypedData(\n      sanitizeTypedDataMessage({\n        domain: this.getDomain(),\n        primaryType: 'RenegotiationOffer',\n        types: {\n          RenegotiationOffer: [\n            { name: 'renegotiationId', type: 'uint256' },\n            { name: 'loanId', type: 'uint256' },\n            { name: 'lender', type: 'address' },\n            { name: 'fee', type: 'uint256' },\n            { name: 'trancheIndex', type: 'uint256[]' },\n            { name: 'principalAmount', type: 'uint256' },\n            { name: 'aprBps', type: 'uint256' },\n            { name: 'expirationTime', type: 'uint256' },\n            { name: 'duration', type: 'uint256' },\n          ],\n        },\n        message: structToSign,\n      }),\n    );\n  }\n\n  async signRepaymentData({ structToSign }: { structToSign: SignableRepaymentDataV6 }) {\n    return this.wallet.signTypedData(\n      sanitizeTypedDataMessage({\n        domain: this.getDomain(),\n        primaryType: 'SignableRepaymentData',\n        types: {\n          SignableRepaymentData: [\n            { name: 'loanId', type: 'uint256' },\n            { name: 'callbackData', type: 'bytes' },\n            { name: 'shouldDelegate', type: 'bool' },\n          ],\n        },\n        message: structToSign,\n      }),\n    );\n  }\n\n  /** Builds the canonical authorization without requesting a wallet signature. */\n  getExecutionTypedData<T extends ExecutionDataV6 | ExecutionDataV7 | ExecutionDataV8>(\n    structToSign: T,\n  ) {\n    return sanitizeTypedDataMessage({\n      domain: this.getDomain(),\n      primaryType: 'ExecutionData',\n      types: {\n        ExecutionData: this.executionDataType(),\n        OfferExecution: [\n          { name: 'offer', type: 'LoanOffer' },\n          { name: 'amount', type: 'uint256' },\n          { name: 'lenderOfferSignature', type: 'bytes' },\n        ],\n        LoanOffer: this.loanOfferType(),\n        OfferValidator: [\n          { name: 'validator', type: 'address' },\n          { name: 'arguments', type: 'bytes' },\n        ],\n      },\n      message: structToSign,\n    });\n  }\n\n  async signExecutionData<T extends ExecutionDataV6 | ExecutionDataV7 | ExecutionDataV8>({\n    structToSign,\n  }: {\n    structToSign: T;\n  }) {\n    return this.wallet.signTypedData(this.getExecutionTypedData(structToSign));\n  }\n\n  async cancelOffer({ id }: { id: bigint }) {\n    const txHash = await this.safeContractWrite.cancelOffer([id]);\n    return {\n      txHash,\n      waitTxInBlock: async () => {\n        const receipt = await this.bcClient.waitForTransactionReceipt({\n          hash: txHash,\n        });\n\n        const events = this.parseEventLogs('OfferCancelled', receipt.logs);\n        if (events.length === 0) throw new Error('Offer not cancelled');\n        return { ...events[0].args, ...receipt };\n      },\n    };\n  }\n\n  async cancelOffers({ ids }: { ids: bigint[] }) {\n    const encoded = ids.map((id) =>\n      encodeFunctionData({ abi: this.abi, functionName: 'cancelOffer', args: [id] }),\n    );\n    const txHash = await this.safeContractWrite.multicall([encoded]);\n    return {\n      txHash,\n      waitTxInBlock: async () => {\n        const receipt = await this.bcClient.waitForTransactionReceipt({ hash: txHash });\n        const events = this.parseEventLogs('OfferCancelled', receipt.logs);\n        if (events.length !== ids.length) throw new Error('Offers not cancelled');\n        return { events: events.map(({ args }) => args), ...receipt };\n      },\n    };\n  }\n\n  async cancelAllOffers({ minId }: { minId: bigint }) {\n    if (this.version === '3.1') {\n      throw new Error('Not implemented for V3.1');\n    }\n\n    const txHash = await this.safeContractWrite.cancelAllOffers([minId]);\n\n    return {\n      txHash,\n      waitTxInBlock: async () => {\n        const receipt = await this.bcClient.waitForTransactionReceipt({\n          hash: txHash,\n        });\n        const events = this.parseEventLogs('AllOffersCancelled', receipt.logs);\n        if (events.length === 0) throw new Error('Offers not cancelled');\n        return { ...events[0].args, ...receipt };\n      },\n    };\n  }\n\n  async cancelRefinanceOffer({ id }: { id: bigint }) {\n    const txHash = await this.safeContractWrite.cancelRenegotiationOffer([id]);\n    return {\n      txHash,\n      waitTxInBlock: async () => {\n        const receipt = await this.bcClient.waitForTransactionReceipt({\n          hash: txHash,\n        });\n        const events = this.parseEventLogs('RenegotiationOfferCancelled', receipt.logs);\n        if (events.length === 0) throw new Error('Renegotiation offer not cancelled');\n        return { ...events[0].args, ...receipt };\n      },\n    };\n  }\n\n  async cancelAllRenegotiations(_: { minId: bigint }) {\n    throw new Error('Not implemented for V3');\n  }\n\n  /**\n   * Maps SDK emit arguments to the contract's `LoanExecutionData`.\n   *\n   * @remarks\n   * Without an `expirationTime` the execution data expires `lifetime` seconds from now: a day for\n   * a loan the borrower sends, `BORROWER_SIGNATURE_LIFETIME` when the borrower signs it.\n   */\n  private mapEmitLoanToMslEmitLoanArgs(\n    {\n      offerExecution,\n      nftCollateralAddress,\n      tokenId,\n      duration,\n      principalReceiver,\n      expirationTime,\n      callbackData,\n    }: EmitLoanArgs,\n    lifetime = BigInt(SECONDS_IN_DAY),\n  ) {\n    const executionData = {\n      offerExecution: offerExecution.map(({ offer, amount, ...rest }) => ({\n        ...rest,\n        amount: amount ?? offer.principalAmount,\n        offer: {\n          ...offer,\n          lender: offer.lenderAddress,\n          validators: offer.offerValidators,\n          // Only encoded from version 3.2, where the lender opts out of refinances.\n          lenderRefinanceDisabled: offer.lenderRefinanceDisabled ?? false,\n          // Only encoded from version 3.2, where the zero address leaves the offer open.\n          borrower: offer.borrowerAddress ?? zeroAddress,\n        },\n      })),\n      nftCollateralAddress,\n      loanId: 0n, // This is only checked for refi from offers not borrower initiated\n      tokenId,\n      duration,\n      expirationTime: expirationTime ?? BigInt(millisToSeconds(Date.now())) + lifetime,\n      principalReceiver: principalReceiver ?? this.wallet.account.address,\n      callbackData: callbackData ?? ('0x' as Hash), // Tipically, no callback data is expected here, only for BNPL [PB call]\n    };\n\n    return {\n      executionData,\n      borrower: this.wallet.account.address,\n      borrowerOfferSignature: '0x' as Hash, // Typically, no signature data is expected here, only for BNPL [PB call]\n    };\n  }\n\n  /**\n   * Shapes a `LoanEmitted` event as `emitLoan` returns it: the loan under its SDK id\n   * (`<contract>.<loanId>`) with its contract address, its on-chain id, and the SDK ids\n   * (`<contract>.<lender>.<offerId>`) of the offers its execution data spent.\n   */\n  private toEmittedLoan(\n    { loanId, loan }: LoanEmittedArgs,\n    { executionData }: ReturnType<MslV6['mapEmitLoanToMslEmitLoanArgs']>,\n  ) {\n    return {\n      loan: {\n        id: `${this.contract.address.toLowerCase()}.${loanId}`,\n        ...loan,\n        contractAddress: this.contract.address,\n      },\n      loanId,\n      offerIds: executionData.offerExecution.map(\n        ({ offer }) =>\n          `${this.contract.address.toLowerCase()}.${offer.lender.toLowerCase()}.${offer.offerId}`,\n      ),\n    };\n  }\n\n  async emitLoan(emitArgs: EmitLoanArgs) {\n    const mslEmitArgs = this.mapEmitLoanToMslEmitLoanArgs(emitArgs);\n    const txHash = await this.safeContractWrite.emitLoan([mslEmitArgs]);\n\n    return {\n      txHash,\n      waitTxInBlock: async () => {\n        const receipt = await this.bcClient.waitForTransactionReceipt({\n          hash: txHash,\n        });\n        const events = this.parseEventLogs('LoanEmitted', receipt.logs);\n        if (events.length === 0) throw new Error('Loan not emitted');\n        return { ...this.toEmittedLoan(events[0].args, mslEmitArgs), ...receipt };\n      },\n    };\n  }\n\n  /**\n   * Emits one loan per item of `emitArgs` in a single transaction, as one `emitLoan` call each\n   * inside the contract's `multicall`, which reverts every loan when one of them fails.\n   *\n   * @remarks\n   * `waitTxInBlock` resolves to `loans`, in the order of `emitArgs`, each shaped as `emitLoan`\n   * returns it. Each item is paired with the `LoanEmitted` event of its collateral\n   * (`nftCollateralAddress`, `tokenId`) rather than by position, so a result can never\n   * describe another item's loan; two items with the same collateral, which cannot both be\n   * emitted, would take their events in order. It throws when the transaction emitted a\n   * different number of loans than it was sent, or none for an item's collateral.\n   */\n  async emitLoans(emitArgs: EmitLoanArgs[]) {\n    const mslEmits = emitArgs.map((emit) => this.mapEmitLoanToMslEmitLoanArgs(emit));\n    const encodedEmitLoans = mslEmits.map((mslEmit) =>\n      encodeFunctionData({ abi: this.abi, functionName: 'emitLoan', args: [mslEmit] }),\n    );\n    const txHash = await this.safeContractWrite.multicall([encodedEmitLoans]);\n\n    return {\n      txHash,\n      waitTxInBlock: async () => {\n        const receipt = await this.bcClient.waitForTransactionReceipt({ hash: txHash });\n        const events = this.parseEventLogs('LoanEmitted', receipt.logs);\n        if (events.length !== emitArgs.length) throw new Error('Loans not emitted');\n\n        const unpairedEvents = [...events];\n        const loans = mslEmits.map((mslEmit) => {\n          const { nftCollateralAddress, tokenId } = mslEmit.executionData;\n          const eventIndex = unpairedEvents.findIndex(\n            ({ args: { loan } }) =>\n              areSameAddress(loan.nftCollateralAddress, nftCollateralAddress) &&\n              loan.nftCollateralTokenId === tokenId,\n          );\n          if (eventIndex === -1) {\n            throw new Error(`No LoanEmitted event for ${nftCollateralAddress} #${tokenId}`);\n          }\n          const [event] = unpairedEvents.splice(eventIndex, 1);\n          return this.toEmittedLoan(event.args, mslEmit);\n        });\n        return { loans, ...receipt };\n      },\n    };\n  }\n\n  async revokeDelegationsAndEmitLoan({\n    delegations,\n    emit,\n  }: {\n    delegations: readonly LoanDelegation[];\n    emit: EmitLoanArgs;\n  }) {\n    if (delegations.length === 0) throw new Error('At least one delegation must be revoked');\n\n    const mslEmitArgs = this.mapEmitLoanToMslEmitLoanArgs(emit);\n    const { tokenId, offerExecution } = mslEmitArgs.executionData;\n    const collateralAddress = offerExecution[0].offer.nftCollateralAddress;\n    const encodedRevokeDelegations = delegationRevocations(delegations).map(({ to, rights }) =>\n      encodeFunctionData({\n        abi: this.abi,\n        functionName: 'revokeDelegate',\n        args: [to, collateralAddress, tokenId, rights],\n      }),\n    );\n\n    const encodedEmitLoan = encodeFunctionData({\n      abi: this.abi,\n      functionName: 'emitLoan',\n      args: [mslEmitArgs],\n    });\n\n    const txHash = await this.safeContractWrite.multicall([\n      [...encodedRevokeDelegations, encodedEmitLoan],\n    ]);\n\n    return {\n      txHash,\n      waitTxInBlock: async () => {\n        const receipt = await this.bcClient.waitForTransactionReceipt({\n          hash: txHash,\n        });\n\n        const revokeEvents = this.parseEventLogs('RevokeDelegate', receipt.logs);\n        if (revokeEvents.length !== encodedRevokeDelegations.length)\n          throw new Error('Revoke delegations failed');\n\n        const emitEvents = this.parseEventLogs('LoanEmitted', receipt.logs);\n        if (emitEvents.length === 0) throw new Error('Loan not emitted');\n\n        const results = [\n          ...revokeEvents.map(({ args }) => args),\n          ...emitEvents.map(({ args }) => args),\n        ];\n        const { loan, loanId } = this.toEmittedLoan(emitEvents[0].args, mslEmitArgs);\n        return { loan, loanId, ...receipt, results };\n      },\n    };\n  }\n\n  async repayLoan({ loan, loanId }: { loan: LoanV6; loanId: bigint }) {\n    const signableRepaymentData = {\n      loanId,\n      callbackData: '0x' as Hash, // No callback data is expected here, only for BNPL [Levearage call]\n      shouldDelegate: false, // No need to delegate\n    };\n    const txHash = await this.safeContractWrite.repayLoan([\n      {\n        data: signableRepaymentData,\n        loan,\n        borrowerSignature: '0x', // No signature data is expected here, only for BNPL [Levearage call]\n      },\n    ]);\n    return {\n      txHash,\n      waitTxInBlock: async () => {\n        const receipt = await this.bcClient.waitForTransactionReceipt({\n          hash: txHash,\n        });\n        const events = this.parseEventLogs('LoanRepaid', receipt.logs);\n        if (events.length === 0) throw new Error('Loan not repaid');\n        return { ...events[0].args, ...receipt };\n      },\n    };\n  }\n\n  async getRemainingLockupSeconds({ loan }: { loan: LoanV6 }) {\n    const newestSource = loan.tranche[loan.tranche.length - 1];\n    const loanEndDate = loan.startTime + loan.duration;\n    const newestSourceDuration = loanEndDate - newestSource.startTime;\n\n    const lockPeriodBps = await this.contract.read.getMinLockPeriod();\n    const lockPercentage = bpsToPercentage(lockPeriodBps);\n\n    const lockupTimeSeconds = Math.ceil(Number(newestSourceDuration) * lockPercentage);\n\n    const ellapsedSeconds = Math.ceil(millisToSeconds(Date.now()) - Number(newestSource.startTime));\n\n    if (ellapsedSeconds >= lockupTimeSeconds) return 0;\n    return lockupTimeSeconds - ellapsedSeconds;\n  }\n\n  async isEndLockedUp({\n    loan,\n  }: {\n    loan: LoanToMslLoanType & { durationFromRenegotiationOrStart: bigint };\n  }) {\n    const lockPeriodBps = await this.contract.read.getMinLockPeriod();\n    const lockPercentage = bpsToPercentage(lockPeriodBps);\n\n    const loanEndDate = Number(loan.startTime + loan.duration);\n    const endLockupSeconds = Math.ceil(\n      Number(loan.durationFromRenegotiationOrStart) * lockPercentage,\n    );\n\n    return Date.now() > secondsToMillis(loanEndDate - endLockupSeconds);\n  }\n\n  async refinanceBatch({\n    renegotiationId,\n    refinancings,\n  }: {\n    renegotiationId: bigint;\n    refinancings: {\n      loan: LoanV6;\n      newAprBps: bigint;\n      sources: {\n        source: LoanV6['tranche'][number] & { loanIndex: number };\n        refinancingPrincipal: bigint;\n      }[];\n    }[];\n  }) {\n    // Generate multicall encoded function data for (renegotiation offer, loan) pairs\n    const data = refinancings.map(({ loan, sources, newAprBps }, index) => {\n      const trancheIndex = sources.map(({ source }) => BigInt(source.loanIndex));\n      const refinancingPrincipalAmount = sumBy(sources, 'refinancingPrincipal') ?? 0n;\n\n      const offer = {\n        renegotiationId: renegotiationId + BigInt(index),\n        loanId: getMslLoanId(loan),\n        lender: this.wallet.account.address,\n        fee: 0n,\n        trancheIndex,\n        principalAmount: refinancingPrincipalAmount,\n        aprBps: newAprBps,\n        expirationTime: BigInt(millisToSeconds(Date.now())) + REORG_SAFETY_BUFFER,\n        duration: BigInt(getRemainingSeconds(loan)) + REORG_SAFETY_BUFFER,\n      };\n\n      const isFullRefinance = refinancingPrincipalAmount === loan.principalAmount;\n      if (isFullRefinance) {\n        return encodeFunctionData({\n          abi: this.abi,\n          functionName: 'refinanceFull',\n          args: [offer, loan, zeroHash],\n        });\n      }\n      return encodeFunctionData({\n        abi: this.abi,\n        functionName: 'refinancePartial',\n        args: [offer, loan],\n      });\n    });\n\n    const txHash = await this.safeContractWrite.multicall([data]);\n    return {\n      txHash,\n      waitTxInBlock: async () => {\n        const receipt = await this.bcClient.waitForTransactionReceipt({\n          hash: txHash,\n        });\n        const events = this.parseEventLogs('LoanRefinanced', receipt.logs);\n        if (events.length !== refinancings.length) throw new Error('Loan not refinanced');\n\n        const results = events.map(({ args }) => args);\n        return { results, ...receipt };\n      },\n    };\n  }\n\n  async refinanceFullLoan({\n    offer,\n    signature,\n    loan,\n  }: {\n    offer: RenegotiationV6;\n    signature: Hash;\n    loan: LoanV6;\n  }) {\n    return this.executeRenegotiation({\n      offer,\n      executeRenegotiationTxn: () => this.safeContractWrite.refinanceFull([offer, loan, signature]),\n    });\n  }\n\n  async refinancePartialLoan({ offer, loan }: { offer: RenegotiationV6; loan: LoanV6 }) {\n    return this.executeRenegotiation({\n      offer,\n      executeRenegotiationTxn: () => this.safeContractWrite.refinancePartial([offer, loan]),\n    });\n  }\n\n  async addTranche({\n    offer,\n    signature,\n    loan,\n  }: {\n    offer: RenegotiationV6;\n    signature: Hash;\n    loan: LoanV6;\n  }) {\n    return this.executeRenegotiation({\n      offer,\n      executeRenegotiationTxn: () => this.safeContractWrite.addNewTranche([offer, loan, signature]),\n    });\n  }\n\n  async refinanceFromOffers({\n    loan,\n    loanId,\n    executionData,\n  }: {\n    loan: LoanV6;\n    loanId: bigint;\n    executionData: EmitLoanArgs;\n  }) {\n    const mslEmitArgs = this.mapEmitLoanToMslEmitLoanArgs(executionData);\n    const txHash = await this.safeContractWrite.refinanceFromLoanExecutionData([\n      loanId,\n      loan,\n      mslEmitArgs,\n    ]);\n\n    return {\n      txHash,\n      waitTxInBlock: async () => {\n        const receipt = await this.bcClient.waitForTransactionReceipt({\n          hash: txHash,\n        });\n        const events = this.parseEventLogs('LoanRefinancedFromNewOffers', receipt.logs);\n        if (events.length === 0) throw new Error('LoanRefinancedFromNewOffers not emitted');\n        const args = events[0].args;\n        return {\n          loan: {\n            id: `${this.contract.address.toLowerCase()}.${args.newLoanId}`,\n            ...args.loan,\n            contractAddress: this.contract.address,\n          },\n          loanId: args.newLoanId,\n          offerIds: mslEmitArgs.executionData.offerExecution.map(\n            ({ offer }) =>\n              `${this.contract.address.toLowerCase()}.${offer.lender.toLowerCase()}.${\n                offer.offerId\n              }`,\n          ),\n          ...receipt,\n        };\n      },\n    };\n  }\n\n  private async executeRenegotiation({\n    offer,\n    executeRenegotiationTxn,\n  }: {\n    offer: RenegotiationV6;\n    executeRenegotiationTxn: () => Promise<Hash>;\n  }) {\n    const txHash = await executeRenegotiationTxn();\n    return {\n      txHash,\n      waitTxInBlock: async () => {\n        const receipt = await this.bcClient.waitForTransactionReceipt({\n          hash: txHash,\n        });\n        const events = this.parseEventLogs('LoanRefinanced', receipt.logs);\n        if (events.length === 0) throw new Error('Loan not refinanced');\n        const args = events[0].args;\n        return {\n          loan: {\n            id: `${this.contract.address.toLowerCase()}.${args.newLoanId}`,\n            ...args.loan,\n            contractAddress: this.contract.address,\n          },\n          loanId: args.newLoanId,\n          renegotiationId: `${this.contract.address.toLowerCase()}.${offer.lender.toLowerCase()}.${\n            args.renegotiationId\n          }`,\n          ...receipt,\n        };\n      },\n    };\n  }\n\n  async delegateMulticall(delegations: Parameters<MslV6['delegate']>[0][]) {\n    if (delegations.length === 0) throw new Error('At least one delegation must be revoked');\n\n    const txHash = await this.safeContractWrite.multicall([\n      delegations.map((delegation) =>\n        encodeFunctionData({\n          abi: this.abi,\n          functionName: 'delegate',\n          args: [\n            delegation.loanId,\n            delegation.loan,\n            delegation.to,\n            delegation.rights ?? zeroHash,\n            delegation.enable,\n          ],\n        }),\n      ),\n    ]);\n\n    return {\n      txHash,\n      waitTxInBlock: async () => {\n        const receipt = await this.bcClient.waitForTransactionReceipt({\n          hash: txHash,\n        });\n        const events = this.parseEventLogs('Delegated', receipt.logs);\n        if (events.length !== delegations.length) throw new Error('Delegate multicall failed');\n\n        return {\n          ...receipt,\n          results: events.map(({ args }) => args),\n        };\n      },\n    };\n  }\n\n  async delegate({\n    loan,\n    loanId,\n    to,\n    rights = zeroHash,\n    enable,\n  }: {\n    loan: LoanV6;\n    loanId: bigint;\n    to: Address;\n    rights?: Hash;\n    enable: boolean;\n  }) {\n    const txHash = await this.safeContractWrite.delegate([loanId, loan, to, rights, enable]);\n\n    return {\n      txHash,\n      waitTxInBlock: async () => {\n        const receipt = await this.bcClient.waitForTransactionReceipt({\n          hash: txHash,\n        });\n        const events = this.parseEventLogs('Delegated', receipt.logs);\n        if (events.length === 0) throw new Error('Token not delegated');\n        const args = events[0].args;\n        return {\n          loan: {\n            ...loan,\n            loanId,\n            contractAddress: this.contract.address,\n          },\n          value: args.value,\n          ...receipt,\n        };\n      },\n    };\n  }\n\n  async revokeDelegate({\n    to,\n    collection,\n    tokenId,\n  }: {\n    to: Address;\n    collection: Address;\n    tokenId: bigint;\n  }) {\n    const txHash = await this.safeContractWrite.revokeDelegate([to, collection, tokenId, zeroHash]);\n\n    return {\n      txHash,\n      waitTxInBlock: async () => {\n        const receipt = await this.bcClient.waitForTransactionReceipt({\n          hash: txHash,\n        });\n        const events = this.parseEventLogs('RevokeDelegate', receipt.logs);\n        if (events.length === 0) throw new Error('Token delegation not revoked');\n        const args = events[0].args;\n        return { ...args, ...receipt };\n      },\n    };\n  }\n\n  async liquidateLoan({ loan, loanId }: { loan: LoanV6; loanId: bigint }) {\n    const txHash = await this.safeContractWrite.liquidateLoan([loanId, loan]);\n    return {\n      txHash,\n      waitTxInBlock: async () => {\n        const receipt = await this.bcClient.waitForTransactionReceipt({\n          hash: txHash,\n        });\n        const foreclosedEvents = this.parseEventLogs('LoanForeclosed', receipt.logs);\n        const sentToLiquidatorEvents = this.parseEventLogs('LoanSentToLiquidator', receipt.logs);\n        if (foreclosedEvents.length === 0 && sentToLiquidatorEvents.length === 0)\n          throw new Error('Loan not liquidated');\n        return {\n          ...(foreclosedEvents?.[0]?.args ?? sentToLiquidatorEvents?.[0]?.args),\n          ...receipt,\n        };\n      },\n    };\n  }\n\n  decodeRepaymentCalldata(calldata: Hex) {\n    const decoded = decodeFunctionData({\n      abi: this.abi,\n      data: calldata,\n    });\n    if (decoded.functionName !== 'repayLoan') {\n      throw new Error('Wrong calldata');\n    }\n    return decoded.args[0];\n  }\n\n  async getProtocolFee() {\n    return await this.contract.read.getProtocolFee();\n  }\n\n  async encodeRepayLoan({\n    repayArgs,\n    withSignature,\n  }: {\n    repayArgs: RepayArgs;\n    withSignature: boolean;\n  }) {\n    const repayLoanArgs = {\n      data: repayArgs.signableRepaymentData,\n      loan: repayArgs.loan,\n      borrowerSignature: withSignature\n        ? await this.signRepaymentData({ structToSign: repayArgs.signableRepaymentData })\n        : '0x',\n    };\n\n    return encodeFunctionData({\n      abi: this.abi,\n      functionName: 'repayLoan',\n      args: [repayLoanArgs],\n    });\n  }\n\n  async encodeEmitLoan({\n    emitArgs,\n    withSignature,\n  }: {\n    emitArgs: EmitLoanArgs;\n    withSignature: boolean;\n  }) {\n    const emitLoanArgs = this.mapEmitLoanToMslEmitLoanArgs(\n      emitArgs,\n      withSignature ? BORROWER_SIGNATURE_LIFETIME : undefined,\n    );\n    if (withSignature) {\n      emitLoanArgs.borrowerOfferSignature = await this.signExecutionData({\n        structToSign: emitLoanArgs.executionData,\n      });\n    }\n    return encodeFunctionData({\n      abi: this.abi,\n      functionName: 'emitLoan',\n      args: [emitLoanArgs],\n    });\n  }\n}\n", "export const multiSourceLoanAbi = [\n  {\n    \"type\": \"constructor\",\n    \"inputs\": [\n      {\n        \"name\": \"loanLiquidator\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"protocolFee\",\n        \"type\": \"tuple\",\n        \"internalType\": \"struct WithProtocolFee.ProtocolFee\",\n        \"components\": [\n          {\n            \"name\": \"recipient\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"fraction\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          }\n        ]\n      },\n      {\n        \"name\": \"currencyManager\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"collectionManager\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"maxTranches\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"minLockPeriod\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"delegateRegistry\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"loanManagerRegistry\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"flashActionContract\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"minWaitTime\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"DOMAIN_SEPARATOR\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"bytes32\",\n        \"internalType\": \"bytes32\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"FEE_UPDATE_NOTICE\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"INITIAL_DOMAIN_SEPARATOR\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"bytes32\",\n        \"internalType\": \"bytes32\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"MAX_AUCTION_DURATION\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"uint48\",\n        \"internalType\": \"uint48\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"MIN_AUCTION_DURATION\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"uint48\",\n        \"internalType\": \"uint48\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"MIN_BID_LIQUIDATION\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"MIN_WAIT_TIME\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"VERSION\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"bytes\",\n        \"internalType\": \"bytes\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"addNewTranche\",\n    \"inputs\": [\n      {\n        \"name\": \"_renegotiationOffer\",\n        \"type\": \"tuple\",\n        \"internalType\": \"struct IMultiSourceLoan.RenegotiationOffer\",\n        \"components\": [\n          {\n            \"name\": \"renegotiationId\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"loanId\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"lender\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"fee\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"trancheIndex\",\n            \"type\": \"uint256[]\",\n            \"internalType\": \"uint256[]\"\n          },\n          {\n            \"name\": \"principalAmount\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"aprBps\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"expirationTime\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"duration\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          }\n        ]\n      },\n      {\n        \"name\": \"_loan\",\n        \"type\": \"tuple\",\n        \"internalType\": \"struct IMultiSourceLoan.Loan\",\n        \"components\": [\n          {\n            \"name\": \"borrower\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"nftCollateralTokenId\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"nftCollateralAddress\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"principalAddress\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"principalAmount\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"startTime\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"duration\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"tranche\",\n            \"type\": \"tuple[]\",\n            \"internalType\": \"struct IMultiSourceLoan.Tranche[]\",\n            \"components\": [\n              {\n                \"name\": \"loanId\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"floor\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"principalAmount\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"lender\",\n                \"type\": \"address\",\n                \"internalType\": \"address\"\n              },\n              {\n                \"name\": \"accruedInterest\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"startTime\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"aprBps\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              }\n            ]\n          },\n          {\n            \"name\": \"protocolFee\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"lenderRefinanceDisabled\",\n            \"type\": \"bool\",\n            \"internalType\": \"bool\"\n          }\n        ]\n      },\n      {\n        \"name\": \"_renegotiationOfferSignature\",\n        \"type\": \"bytes\",\n        \"internalType\": \"bytes\"\n      }\n    ],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"\",\n        \"type\": \"tuple\",\n        \"internalType\": \"struct IMultiSourceLoan.Loan\",\n        \"components\": [\n          {\n            \"name\": \"borrower\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"nftCollateralTokenId\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"nftCollateralAddress\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"principalAddress\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"principalAmount\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"startTime\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"duration\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"tranche\",\n            \"type\": \"tuple[]\",\n            \"internalType\": \"struct IMultiSourceLoan.Tranche[]\",\n            \"components\": [\n              {\n                \"name\": \"loanId\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"floor\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"principalAmount\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"lender\",\n                \"type\": \"address\",\n                \"internalType\": \"address\"\n              },\n              {\n                \"name\": \"accruedInterest\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"startTime\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"aprBps\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              }\n            ]\n          },\n          {\n            \"name\": \"protocolFee\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"lenderRefinanceDisabled\",\n            \"type\": \"bool\",\n            \"internalType\": \"bool\"\n          }\n        ]\n      }\n    ],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"addWhitelistedCallbackContract\",\n    \"inputs\": [\n      {\n        \"name\": \"_contract\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      }\n    ],\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"cancelOffer\",\n    \"inputs\": [\n      {\n        \"name\": \"_offerId\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"cancelRenegotiationOffer\",\n    \"inputs\": [\n      {\n        \"name\": \"_renegotiationId\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"delegate\",\n    \"inputs\": [\n      {\n        \"name\": \"_loanId\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"loan\",\n        \"type\": \"tuple\",\n        \"internalType\": \"struct IMultiSourceLoan.Loan\",\n        \"components\": [\n          {\n            \"name\": \"borrower\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"nftCollateralTokenId\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"nftCollateralAddress\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"principalAddress\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"principalAmount\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"startTime\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"duration\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"tranche\",\n            \"type\": \"tuple[]\",\n            \"internalType\": \"struct IMultiSourceLoan.Tranche[]\",\n            \"components\": [\n              {\n                \"name\": \"loanId\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"floor\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"principalAmount\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"lender\",\n                \"type\": \"address\",\n                \"internalType\": \"address\"\n              },\n              {\n                \"name\": \"accruedInterest\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"startTime\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"aprBps\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              }\n            ]\n          },\n          {\n            \"name\": \"protocolFee\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"lenderRefinanceDisabled\",\n            \"type\": \"bool\",\n            \"internalType\": \"bool\"\n          }\n        ]\n      },\n      {\n        \"name\": \"_delegate\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"_rights\",\n        \"type\": \"bytes32\",\n        \"internalType\": \"bytes32\"\n      },\n      {\n        \"name\": \"_value\",\n        \"type\": \"bool\",\n        \"internalType\": \"bool\"\n      }\n    ],\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"emitLoan\",\n    \"inputs\": [\n      {\n        \"name\": \"_loanExecutionData\",\n        \"type\": \"tuple\",\n        \"internalType\": \"struct IMultiSourceLoan.LoanExecutionData\",\n        \"components\": [\n          {\n            \"name\": \"executionData\",\n            \"type\": \"tuple\",\n            \"internalType\": \"struct IMultiSourceLoan.ExecutionData\",\n            \"components\": [\n              {\n                \"name\": \"offerExecution\",\n                \"type\": \"tuple[]\",\n                \"internalType\": \"struct IMultiSourceLoan.OfferExecution[]\",\n                \"components\": [\n                  {\n                    \"name\": \"offer\",\n                    \"type\": \"tuple\",\n                    \"internalType\": \"struct IMultiSourceLoan.LoanOffer\",\n                    \"components\": [\n                      {\n                        \"name\": \"offerId\",\n                        \"type\": \"uint256\",\n                        \"internalType\": \"uint256\"\n                      },\n                      {\n                        \"name\": \"lender\",\n                        \"type\": \"address\",\n                        \"internalType\": \"address\"\n                      },\n                      {\n                        \"name\": \"fee\",\n                        \"type\": \"uint256\",\n                        \"internalType\": \"uint256\"\n                      },\n                      {\n                        \"name\": \"capacity\",\n                        \"type\": \"uint256\",\n                        \"internalType\": \"uint256\"\n                      },\n                      {\n                        \"name\": \"nftCollateralAddress\",\n                        \"type\": \"address\",\n                        \"internalType\": \"address\"\n                      },\n                      {\n                        \"name\": \"nftCollateralTokenId\",\n                        \"type\": \"uint256\",\n                        \"internalType\": \"uint256\"\n                      },\n                      {\n                        \"name\": \"principalAddress\",\n                        \"type\": \"address\",\n                        \"internalType\": \"address\"\n                      },\n                      {\n                        \"name\": \"principalAmount\",\n                        \"type\": \"uint256\",\n                        \"internalType\": \"uint256\"\n                      },\n                      {\n                        \"name\": \"aprBps\",\n                        \"type\": \"uint256\",\n                        \"internalType\": \"uint256\"\n                      },\n                      {\n                        \"name\": \"expirationTime\",\n                        \"type\": \"uint256\",\n                        \"internalType\": \"uint256\"\n                      },\n                      {\n                        \"name\": \"duration\",\n                        \"type\": \"uint256\",\n                        \"internalType\": \"uint256\"\n                      },\n                      {\n                        \"name\": \"maxSeniorRepayment\",\n                        \"type\": \"uint256\",\n                        \"internalType\": \"uint256\"\n                      },\n                      {\n                        \"name\": \"validators\",\n                        \"type\": \"tuple[]\",\n                        \"internalType\": \"struct IBaseLoan.OfferValidator[]\",\n                        \"components\": [\n                          {\n                            \"name\": \"validator\",\n                            \"type\": \"address\",\n                            \"internalType\": \"address\"\n                          },\n                          {\n                            \"name\": \"arguments\",\n                            \"type\": \"bytes\",\n                            \"internalType\": \"bytes\"\n                          }\n                        ]\n                      },\n                      {\n                        \"name\": \"lenderRefinanceDisabled\",\n                        \"type\": \"bool\",\n                        \"internalType\": \"bool\"\n                      },\n                      {\n                        \"name\": \"borrower\",\n                        \"type\": \"address\",\n                        \"internalType\": \"address\"\n                      }\n                    ]\n                  },\n                  {\n                    \"name\": \"amount\",\n                    \"type\": \"uint256\",\n                    \"internalType\": \"uint256\"\n                  },\n                  {\n                    \"name\": \"lenderOfferSignature\",\n                    \"type\": \"bytes\",\n                    \"internalType\": \"bytes\"\n                  }\n                ]\n              },\n              {\n                \"name\": \"loanId\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"nftCollateralAddress\",\n                \"type\": \"address\",\n                \"internalType\": \"address\"\n              },\n              {\n                \"name\": \"tokenId\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"duration\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"expirationTime\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"principalReceiver\",\n                \"type\": \"address\",\n                \"internalType\": \"address\"\n              },\n              {\n                \"name\": \"callbackData\",\n                \"type\": \"bytes\",\n                \"internalType\": \"bytes\"\n              }\n            ]\n          },\n          {\n            \"name\": \"borrower\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"borrowerOfferSignature\",\n            \"type\": \"bytes\",\n            \"internalType\": \"bytes\"\n          }\n        ]\n      }\n    ],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"\",\n        \"type\": \"tuple\",\n        \"internalType\": \"struct IMultiSourceLoan.Loan\",\n        \"components\": [\n          {\n            \"name\": \"borrower\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"nftCollateralTokenId\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"nftCollateralAddress\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"principalAddress\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"principalAmount\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"startTime\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"duration\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"tranche\",\n            \"type\": \"tuple[]\",\n            \"internalType\": \"struct IMultiSourceLoan.Tranche[]\",\n            \"components\": [\n              {\n                \"name\": \"loanId\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"floor\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"principalAmount\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"lender\",\n                \"type\": \"address\",\n                \"internalType\": \"address\"\n              },\n              {\n                \"name\": \"accruedInterest\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"startTime\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"aprBps\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              }\n            ]\n          },\n          {\n            \"name\": \"protocolFee\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"lenderRefinanceDisabled\",\n            \"type\": \"bool\",\n            \"internalType\": \"bool\"\n          }\n        ]\n      }\n    ],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"executeFlashAction\",\n    \"inputs\": [\n      {\n        \"name\": \"_loanId\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"_loan\",\n        \"type\": \"tuple\",\n        \"internalType\": \"struct IMultiSourceLoan.Loan\",\n        \"components\": [\n          {\n            \"name\": \"borrower\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"nftCollateralTokenId\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"nftCollateralAddress\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"principalAddress\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"principalAmount\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"startTime\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"duration\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"tranche\",\n            \"type\": \"tuple[]\",\n            \"internalType\": \"struct IMultiSourceLoan.Tranche[]\",\n            \"components\": [\n              {\n                \"name\": \"loanId\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"floor\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"principalAmount\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"lender\",\n                \"type\": \"address\",\n                \"internalType\": \"address\"\n              },\n              {\n                \"name\": \"accruedInterest\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"startTime\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"aprBps\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              }\n            ]\n          },\n          {\n            \"name\": \"protocolFee\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"lenderRefinanceDisabled\",\n            \"type\": \"bool\",\n            \"internalType\": \"bool\"\n          }\n        ]\n      },\n      {\n        \"name\": \"_target\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"_data\",\n        \"type\": \"bytes\",\n        \"internalType\": \"bytes\"\n      }\n    ],\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"getCollectionManager\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"getCurrencyManager\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"getDelegateRegistry\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"getFlashActionContract\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"getLiquidationAuctionDuration\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"uint48\",\n        \"internalType\": \"uint48\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"getLiquidator\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"getLoanHash\",\n    \"inputs\": [\n      {\n        \"name\": \"_loanId\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"bytes32\",\n        \"internalType\": \"bytes32\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"getLoanManagerRegistry\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"address\",\n        \"internalType\": \"contract ILoanManagerRegistry\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"getMaxTranches\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"getMinImprovementApr\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"getMinLockPeriod\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"getPendingProtocolFee\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"tuple\",\n        \"internalType\": \"struct WithProtocolFee.ProtocolFee\",\n        \"components\": [\n          {\n            \"name\": \"recipient\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"fraction\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          }\n        ]\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"getPendingProtocolFeeSetTime\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"getProtocolFee\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"tuple\",\n        \"internalType\": \"struct WithProtocolFee.ProtocolFee\",\n        \"components\": [\n          {\n            \"name\": \"recipient\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"fraction\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          }\n        ]\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"getTotalLoansIssued\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"getUsedCapacity\",\n    \"inputs\": [\n      {\n        \"name\": \"_lender\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"_offerId\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"isOfferCancelled\",\n    \"inputs\": [\n      {\n        \"name\": \"user\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"offerId\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"outputs\": [\n      {\n        \"name\": \"notActive\",\n        \"type\": \"bool\",\n        \"internalType\": \"bool\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"isRenegotiationOfferCancelled\",\n    \"inputs\": [\n      {\n        \"name\": \"user\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"renegotiationIf\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"outputs\": [\n      {\n        \"name\": \"notActive\",\n        \"type\": \"bool\",\n        \"internalType\": \"bool\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"isWhitelistedCallbackContract\",\n    \"inputs\": [\n      {\n        \"name\": \"_contract\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      }\n    ],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"bool\",\n        \"internalType\": \"bool\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"liquidateLoan\",\n    \"inputs\": [\n      {\n        \"name\": \"_loanId\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"_loan\",\n        \"type\": \"tuple\",\n        \"internalType\": \"struct IMultiSourceLoan.Loan\",\n        \"components\": [\n          {\n            \"name\": \"borrower\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"nftCollateralTokenId\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"nftCollateralAddress\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"principalAddress\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"principalAmount\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"startTime\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"duration\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"tranche\",\n            \"type\": \"tuple[]\",\n            \"internalType\": \"struct IMultiSourceLoan.Tranche[]\",\n            \"components\": [\n              {\n                \"name\": \"loanId\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"floor\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"principalAmount\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"lender\",\n                \"type\": \"address\",\n                \"internalType\": \"address\"\n              },\n              {\n                \"name\": \"accruedInterest\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"startTime\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"aprBps\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              }\n            ]\n          },\n          {\n            \"name\": \"protocolFee\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"lenderRefinanceDisabled\",\n            \"type\": \"bool\",\n            \"internalType\": \"bool\"\n          }\n        ]\n      }\n    ],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"bytes\",\n        \"internalType\": \"bytes\"\n      }\n    ],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"multicall\",\n    \"inputs\": [\n      {\n        \"name\": \"data\",\n        \"type\": \"bytes[]\",\n        \"internalType\": \"bytes[]\"\n      }\n    ],\n    \"outputs\": [\n      {\n        \"name\": \"results\",\n        \"type\": \"bytes[]\",\n        \"internalType\": \"bytes[]\"\n      }\n    ],\n    \"stateMutability\": \"payable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"name\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"string\",\n        \"internalType\": \"string\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"onERC721Received\",\n    \"inputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"\",\n        \"type\": \"bytes\",\n        \"internalType\": \"bytes\"\n      }\n    ],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"bytes4\",\n        \"internalType\": \"bytes4\"\n      }\n    ],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"owner\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"pendingOwner\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"pendingOwnerTime\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"refinanceFromLoanExecutionData\",\n    \"inputs\": [\n      {\n        \"name\": \"_loanId\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"_loan\",\n        \"type\": \"tuple\",\n        \"internalType\": \"struct IMultiSourceLoan.Loan\",\n        \"components\": [\n          {\n            \"name\": \"borrower\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"nftCollateralTokenId\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"nftCollateralAddress\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"principalAddress\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"principalAmount\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"startTime\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"duration\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"tranche\",\n            \"type\": \"tuple[]\",\n            \"internalType\": \"struct IMultiSourceLoan.Tranche[]\",\n            \"components\": [\n              {\n                \"name\": \"loanId\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"floor\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"principalAmount\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"lender\",\n                \"type\": \"address\",\n                \"internalType\": \"address\"\n              },\n              {\n                \"name\": \"accruedInterest\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"startTime\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"aprBps\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              }\n            ]\n          },\n          {\n            \"name\": \"protocolFee\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"lenderRefinanceDisabled\",\n            \"type\": \"bool\",\n            \"internalType\": \"bool\"\n          }\n        ]\n      },\n      {\n        \"name\": \"_loanExecutionData\",\n        \"type\": \"tuple\",\n        \"internalType\": \"struct IMultiSourceLoan.LoanExecutionData\",\n        \"components\": [\n          {\n            \"name\": \"executionData\",\n            \"type\": \"tuple\",\n            \"internalType\": \"struct IMultiSourceLoan.ExecutionData\",\n            \"components\": [\n              {\n                \"name\": \"offerExecution\",\n                \"type\": \"tuple[]\",\n                \"internalType\": \"struct IMultiSourceLoan.OfferExecution[]\",\n                \"components\": [\n                  {\n                    \"name\": \"offer\",\n                    \"type\": \"tuple\",\n                    \"internalType\": \"struct IMultiSourceLoan.LoanOffer\",\n                    \"components\": [\n                      {\n                        \"name\": \"offerId\",\n                        \"type\": \"uint256\",\n                        \"internalType\": \"uint256\"\n                      },\n                      {\n                        \"name\": \"lender\",\n                        \"type\": \"address\",\n                        \"internalType\": \"address\"\n                      },\n                      {\n                        \"name\": \"fee\",\n                        \"type\": \"uint256\",\n                        \"internalType\": \"uint256\"\n                      },\n                      {\n                        \"name\": \"capacity\",\n                        \"type\": \"uint256\",\n                        \"internalType\": \"uint256\"\n                      },\n                      {\n                        \"name\": \"nftCollateralAddress\",\n                        \"type\": \"address\",\n                        \"internalType\": \"address\"\n                      },\n                      {\n                        \"name\": \"nftCollateralTokenId\",\n                        \"type\": \"uint256\",\n                        \"internalType\": \"uint256\"\n                      },\n                      {\n                        \"name\": \"principalAddress\",\n                        \"type\": \"address\",\n                        \"internalType\": \"address\"\n                      },\n                      {\n                        \"name\": \"principalAmount\",\n                        \"type\": \"uint256\",\n                        \"internalType\": \"uint256\"\n                      },\n                      {\n                        \"name\": \"aprBps\",\n                        \"type\": \"uint256\",\n                        \"internalType\": \"uint256\"\n                      },\n                      {\n                        \"name\": \"expirationTime\",\n                        \"type\": \"uint256\",\n                        \"internalType\": \"uint256\"\n                      },\n                      {\n                        \"name\": \"duration\",\n                        \"type\": \"uint256\",\n                        \"internalType\": \"uint256\"\n                      },\n                      {\n                        \"name\": \"maxSeniorRepayment\",\n                        \"type\": \"uint256\",\n                        \"internalType\": \"uint256\"\n                      },\n                      {\n                        \"name\": \"validators\",\n                        \"type\": \"tuple[]\",\n                        \"internalType\": \"struct IBaseLoan.OfferValidator[]\",\n                        \"components\": [\n                          {\n                            \"name\": \"validator\",\n                            \"type\": \"address\",\n                            \"internalType\": \"address\"\n                          },\n                          {\n                            \"name\": \"arguments\",\n                            \"type\": \"bytes\",\n                            \"internalType\": \"bytes\"\n                          }\n                        ]\n                      },\n                      {\n                        \"name\": \"lenderRefinanceDisabled\",\n                        \"type\": \"bool\",\n                        \"internalType\": \"bool\"\n                      },\n                      {\n                        \"name\": \"borrower\",\n                        \"type\": \"address\",\n                        \"internalType\": \"address\"\n                      }\n                    ]\n                  },\n                  {\n                    \"name\": \"amount\",\n                    \"type\": \"uint256\",\n                    \"internalType\": \"uint256\"\n                  },\n                  {\n                    \"name\": \"lenderOfferSignature\",\n                    \"type\": \"bytes\",\n                    \"internalType\": \"bytes\"\n                  }\n                ]\n              },\n              {\n                \"name\": \"loanId\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"nftCollateralAddress\",\n                \"type\": \"address\",\n                \"internalType\": \"address\"\n              },\n              {\n                \"name\": \"tokenId\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"duration\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"expirationTime\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"principalReceiver\",\n                \"type\": \"address\",\n                \"internalType\": \"address\"\n              },\n              {\n                \"name\": \"callbackData\",\n                \"type\": \"bytes\",\n                \"internalType\": \"bytes\"\n              }\n            ]\n          },\n          {\n            \"name\": \"borrower\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"borrowerOfferSignature\",\n            \"type\": \"bytes\",\n            \"internalType\": \"bytes\"\n          }\n        ]\n      }\n    ],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"\",\n        \"type\": \"tuple\",\n        \"internalType\": \"struct IMultiSourceLoan.Loan\",\n        \"components\": [\n          {\n            \"name\": \"borrower\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"nftCollateralTokenId\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"nftCollateralAddress\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"principalAddress\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"principalAmount\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"startTime\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"duration\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"tranche\",\n            \"type\": \"tuple[]\",\n            \"internalType\": \"struct IMultiSourceLoan.Tranche[]\",\n            \"components\": [\n              {\n                \"name\": \"loanId\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"floor\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"principalAmount\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"lender\",\n                \"type\": \"address\",\n                \"internalType\": \"address\"\n              },\n              {\n                \"name\": \"accruedInterest\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"startTime\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"aprBps\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              }\n            ]\n          },\n          {\n            \"name\": \"protocolFee\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"lenderRefinanceDisabled\",\n            \"type\": \"bool\",\n            \"internalType\": \"bool\"\n          }\n        ]\n      }\n    ],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"refinanceFull\",\n    \"inputs\": [\n      {\n        \"name\": \"_renegotiationOffer\",\n        \"type\": \"tuple\",\n        \"internalType\": \"struct IMultiSourceLoan.RenegotiationOffer\",\n        \"components\": [\n          {\n            \"name\": \"renegotiationId\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"loanId\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"lender\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"fee\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"trancheIndex\",\n            \"type\": \"uint256[]\",\n            \"internalType\": \"uint256[]\"\n          },\n          {\n            \"name\": \"principalAmount\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"aprBps\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"expirationTime\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"duration\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          }\n        ]\n      },\n      {\n        \"name\": \"_loan\",\n        \"type\": \"tuple\",\n        \"internalType\": \"struct IMultiSourceLoan.Loan\",\n        \"components\": [\n          {\n            \"name\": \"borrower\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"nftCollateralTokenId\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"nftCollateralAddress\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"principalAddress\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"principalAmount\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"startTime\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"duration\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"tranche\",\n            \"type\": \"tuple[]\",\n            \"internalType\": \"struct IMultiSourceLoan.Tranche[]\",\n            \"components\": [\n              {\n                \"name\": \"loanId\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"floor\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"principalAmount\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"lender\",\n                \"type\": \"address\",\n                \"internalType\": \"address\"\n              },\n              {\n                \"name\": \"accruedInterest\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"startTime\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"aprBps\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              }\n            ]\n          },\n          {\n            \"name\": \"protocolFee\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"lenderRefinanceDisabled\",\n            \"type\": \"bool\",\n            \"internalType\": \"bool\"\n          }\n        ]\n      },\n      {\n        \"name\": \"_renegotiationOfferSignature\",\n        \"type\": \"bytes\",\n        \"internalType\": \"bytes\"\n      }\n    ],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"\",\n        \"type\": \"tuple\",\n        \"internalType\": \"struct IMultiSourceLoan.Loan\",\n        \"components\": [\n          {\n            \"name\": \"borrower\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"nftCollateralTokenId\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"nftCollateralAddress\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"principalAddress\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"principalAmount\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"startTime\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"duration\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"tranche\",\n            \"type\": \"tuple[]\",\n            \"internalType\": \"struct IMultiSourceLoan.Tranche[]\",\n            \"components\": [\n              {\n                \"name\": \"loanId\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"floor\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"principalAmount\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"lender\",\n                \"type\": \"address\",\n                \"internalType\": \"address\"\n              },\n              {\n                \"name\": \"accruedInterest\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"startTime\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"aprBps\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              }\n            ]\n          },\n          {\n            \"name\": \"protocolFee\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"lenderRefinanceDisabled\",\n            \"type\": \"bool\",\n            \"internalType\": \"bool\"\n          }\n        ]\n      }\n    ],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"refinancePartial\",\n    \"inputs\": [\n      {\n        \"name\": \"_renegotiationOffer\",\n        \"type\": \"tuple\",\n        \"internalType\": \"struct IMultiSourceLoan.RenegotiationOffer\",\n        \"components\": [\n          {\n            \"name\": \"renegotiationId\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"loanId\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"lender\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"fee\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"trancheIndex\",\n            \"type\": \"uint256[]\",\n            \"internalType\": \"uint256[]\"\n          },\n          {\n            \"name\": \"principalAmount\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"aprBps\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"expirationTime\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"duration\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          }\n        ]\n      },\n      {\n        \"name\": \"_loan\",\n        \"type\": \"tuple\",\n        \"internalType\": \"struct IMultiSourceLoan.Loan\",\n        \"components\": [\n          {\n            \"name\": \"borrower\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"nftCollateralTokenId\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"nftCollateralAddress\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"principalAddress\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"principalAmount\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"startTime\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"duration\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"tranche\",\n            \"type\": \"tuple[]\",\n            \"internalType\": \"struct IMultiSourceLoan.Tranche[]\",\n            \"components\": [\n              {\n                \"name\": \"loanId\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"floor\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"principalAmount\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"lender\",\n                \"type\": \"address\",\n                \"internalType\": \"address\"\n              },\n              {\n                \"name\": \"accruedInterest\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"startTime\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"aprBps\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              }\n            ]\n          },\n          {\n            \"name\": \"protocolFee\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"lenderRefinanceDisabled\",\n            \"type\": \"bool\",\n            \"internalType\": \"bool\"\n          }\n        ]\n      }\n    ],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"\",\n        \"type\": \"tuple\",\n        \"internalType\": \"struct IMultiSourceLoan.Loan\",\n        \"components\": [\n          {\n            \"name\": \"borrower\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"nftCollateralTokenId\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"nftCollateralAddress\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"principalAddress\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"principalAmount\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"startTime\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"duration\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"tranche\",\n            \"type\": \"tuple[]\",\n            \"internalType\": \"struct IMultiSourceLoan.Tranche[]\",\n            \"components\": [\n              {\n                \"name\": \"loanId\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"floor\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"principalAmount\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"lender\",\n                \"type\": \"address\",\n                \"internalType\": \"address\"\n              },\n              {\n                \"name\": \"accruedInterest\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"startTime\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"aprBps\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              }\n            ]\n          },\n          {\n            \"name\": \"protocolFee\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"lenderRefinanceDisabled\",\n            \"type\": \"bool\",\n            \"internalType\": \"bool\"\n          }\n        ]\n      }\n    ],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"removeWhitelistedCallbackContract\",\n    \"inputs\": [\n      {\n        \"name\": \"_contract\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      }\n    ],\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"repayLoan\",\n    \"inputs\": [\n      {\n        \"name\": \"_repaymentData\",\n        \"type\": \"tuple\",\n        \"internalType\": \"struct IMultiSourceLoan.LoanRepaymentData\",\n        \"components\": [\n          {\n            \"name\": \"data\",\n            \"type\": \"tuple\",\n            \"internalType\": \"struct IMultiSourceLoan.SignableRepaymentData\",\n            \"components\": [\n              {\n                \"name\": \"loanId\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"callbackData\",\n                \"type\": \"bytes\",\n                \"internalType\": \"bytes\"\n              },\n              {\n                \"name\": \"shouldDelegate\",\n                \"type\": \"bool\",\n                \"internalType\": \"bool\"\n              }\n            ]\n          },\n          {\n            \"name\": \"loan\",\n            \"type\": \"tuple\",\n            \"internalType\": \"struct IMultiSourceLoan.Loan\",\n            \"components\": [\n              {\n                \"name\": \"borrower\",\n                \"type\": \"address\",\n                \"internalType\": \"address\"\n              },\n              {\n                \"name\": \"nftCollateralTokenId\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"nftCollateralAddress\",\n                \"type\": \"address\",\n                \"internalType\": \"address\"\n              },\n              {\n                \"name\": \"principalAddress\",\n                \"type\": \"address\",\n                \"internalType\": \"address\"\n              },\n              {\n                \"name\": \"principalAmount\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"startTime\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"duration\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"tranche\",\n                \"type\": \"tuple[]\",\n                \"internalType\": \"struct IMultiSourceLoan.Tranche[]\",\n                \"components\": [\n                  {\n                    \"name\": \"loanId\",\n                    \"type\": \"uint256\",\n                    \"internalType\": \"uint256\"\n                  },\n                  {\n                    \"name\": \"floor\",\n                    \"type\": \"uint256\",\n                    \"internalType\": \"uint256\"\n                  },\n                  {\n                    \"name\": \"principalAmount\",\n                    \"type\": \"uint256\",\n                    \"internalType\": \"uint256\"\n                  },\n                  {\n                    \"name\": \"lender\",\n                    \"type\": \"address\",\n                    \"internalType\": \"address\"\n                  },\n                  {\n                    \"name\": \"accruedInterest\",\n                    \"type\": \"uint256\",\n                    \"internalType\": \"uint256\"\n                  },\n                  {\n                    \"name\": \"startTime\",\n                    \"type\": \"uint256\",\n                    \"internalType\": \"uint256\"\n                  },\n                  {\n                    \"name\": \"aprBps\",\n                    \"type\": \"uint256\",\n                    \"internalType\": \"uint256\"\n                  }\n                ]\n              },\n              {\n                \"name\": \"protocolFee\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"lenderRefinanceDisabled\",\n                \"type\": \"bool\",\n                \"internalType\": \"bool\"\n              }\n            ]\n          },\n          {\n            \"name\": \"borrowerSignature\",\n            \"type\": \"bytes\",\n            \"internalType\": \"bytes\"\n          }\n        ]\n      }\n    ],\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"requestTransferOwner\",\n    \"inputs\": [\n      {\n        \"name\": \"_newOwner\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      }\n    ],\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"revokeDelegate\",\n    \"inputs\": [\n      {\n        \"name\": \"_delegate\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"_collection\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"_tokenId\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"_rights\",\n        \"type\": \"bytes32\",\n        \"internalType\": \"bytes32\"\n      }\n    ],\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"setFlashActionContract\",\n    \"inputs\": [\n      {\n        \"name\": \"_newFlashActionContract\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      }\n    ],\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"setMinLockPeriod\",\n    \"inputs\": [\n      {\n        \"name\": \"__minLockPeriod\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"setProtocolFee\",\n    \"inputs\": [],\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"transferOwnership\",\n    \"inputs\": [],\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"updateLiquidationAuctionDuration\",\n    \"inputs\": [\n      {\n        \"name\": \"_newDuration\",\n        \"type\": \"uint48\",\n        \"internalType\": \"uint48\"\n      }\n    ],\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"updateLiquidationContract\",\n    \"inputs\": [\n      {\n        \"name\": \"__loanLiquidator\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      }\n    ],\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"updateMinImprovementApr\",\n    \"inputs\": [\n      {\n        \"name\": \"_newMinimum\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"updateProtocolFee\",\n    \"inputs\": [\n      {\n        \"name\": \"_newProtocolFee\",\n        \"type\": \"tuple\",\n        \"internalType\": \"struct WithProtocolFee.ProtocolFee\",\n        \"components\": [\n          {\n            \"name\": \"recipient\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"fraction\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          }\n        ]\n      }\n    ],\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"event\",\n    \"name\": \"Delegated\",\n    \"inputs\": [\n      {\n        \"name\": \"loanId\",\n        \"type\": \"uint256\",\n        \"indexed\": false,\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"delegate\",\n        \"type\": \"address\",\n        \"indexed\": false,\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"_rights\",\n        \"type\": \"bytes32\",\n        \"indexed\": false,\n        \"internalType\": \"bytes32\"\n      },\n      {\n        \"name\": \"value\",\n        \"type\": \"bool\",\n        \"indexed\": false,\n        \"internalType\": \"bool\"\n      }\n    ],\n    \"anonymous\": false\n  },\n  {\n    \"type\": \"event\",\n    \"name\": \"FlashActionContractUpdated\",\n    \"inputs\": [\n      {\n        \"name\": \"newFlashActionContract\",\n        \"type\": \"address\",\n        \"indexed\": false,\n        \"internalType\": \"address\"\n      }\n    ],\n    \"anonymous\": false\n  },\n  {\n    \"type\": \"event\",\n    \"name\": \"FlashActionExecuted\",\n    \"inputs\": [\n      {\n        \"name\": \"loanId\",\n        \"type\": \"uint256\",\n        \"indexed\": false,\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"target\",\n        \"type\": \"address\",\n        \"indexed\": false,\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"data\",\n        \"type\": \"bytes\",\n        \"indexed\": false,\n        \"internalType\": \"bytes\"\n      }\n    ],\n    \"anonymous\": false\n  },\n  {\n    \"type\": \"event\",\n    \"name\": \"LiquidationAuctionDurationUpdated\",\n    \"inputs\": [\n      {\n        \"name\": \"newDuration\",\n        \"type\": \"uint256\",\n        \"indexed\": false,\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"anonymous\": false\n  },\n  {\n    \"type\": \"event\",\n    \"name\": \"LiquidationContractUpdated\",\n    \"inputs\": [\n      {\n        \"name\": \"liquidator\",\n        \"type\": \"address\",\n        \"indexed\": false,\n        \"internalType\": \"address\"\n      }\n    ],\n    \"anonymous\": false\n  },\n  {\n    \"type\": \"event\",\n    \"name\": \"LoanEmitted\",\n    \"inputs\": [\n      {\n        \"name\": \"loanId\",\n        \"type\": \"uint256\",\n        \"indexed\": false,\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"offerId\",\n        \"type\": \"uint256[]\",\n        \"indexed\": false,\n        \"internalType\": \"uint256[]\"\n      },\n      {\n        \"name\": \"loan\",\n        \"type\": \"tuple\",\n        \"indexed\": false,\n        \"internalType\": \"struct IMultiSourceLoan.Loan\",\n        \"components\": [\n          {\n            \"name\": \"borrower\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"nftCollateralTokenId\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"nftCollateralAddress\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"principalAddress\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"principalAmount\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"startTime\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"duration\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"tranche\",\n            \"type\": \"tuple[]\",\n            \"internalType\": \"struct IMultiSourceLoan.Tranche[]\",\n            \"components\": [\n              {\n                \"name\": \"loanId\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"floor\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"principalAmount\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"lender\",\n                \"type\": \"address\",\n                \"internalType\": \"address\"\n              },\n              {\n                \"name\": \"accruedInterest\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"startTime\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"aprBps\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              }\n            ]\n          },\n          {\n            \"name\": \"protocolFee\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"lenderRefinanceDisabled\",\n            \"type\": \"bool\",\n            \"internalType\": \"bool\"\n          }\n        ]\n      },\n      {\n        \"name\": \"fee\",\n        \"type\": \"uint256\",\n        \"indexed\": false,\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"anonymous\": false\n  },\n  {\n    \"type\": \"event\",\n    \"name\": \"LoanForeclosed\",\n    \"inputs\": [\n      {\n        \"name\": \"loanId\",\n        \"type\": \"uint256\",\n        \"indexed\": false,\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"anonymous\": false\n  },\n  {\n    \"type\": \"event\",\n    \"name\": \"LoanLiquidated\",\n    \"inputs\": [\n      {\n        \"name\": \"loanId\",\n        \"type\": \"uint256\",\n        \"indexed\": false,\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"foreclosed\",\n        \"type\": \"bool\",\n        \"indexed\": false,\n        \"internalType\": \"bool\"\n      }\n    ],\n    \"anonymous\": false\n  },\n  {\n    \"type\": \"event\",\n    \"name\": \"LoanRefinanced\",\n    \"inputs\": [\n      {\n        \"name\": \"renegotiationId\",\n        \"type\": \"uint256\",\n        \"indexed\": false,\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"oldLoanId\",\n        \"type\": \"uint256\",\n        \"indexed\": false,\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"newLoanId\",\n        \"type\": \"uint256\",\n        \"indexed\": false,\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"loan\",\n        \"type\": \"tuple\",\n        \"indexed\": false,\n        \"internalType\": \"struct IMultiSourceLoan.Loan\",\n        \"components\": [\n          {\n            \"name\": \"borrower\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"nftCollateralTokenId\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"nftCollateralAddress\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"principalAddress\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"principalAmount\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"startTime\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"duration\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"tranche\",\n            \"type\": \"tuple[]\",\n            \"internalType\": \"struct IMultiSourceLoan.Tranche[]\",\n            \"components\": [\n              {\n                \"name\": \"loanId\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"floor\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"principalAmount\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"lender\",\n                \"type\": \"address\",\n                \"internalType\": \"address\"\n              },\n              {\n                \"name\": \"accruedInterest\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"startTime\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"aprBps\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              }\n            ]\n          },\n          {\n            \"name\": \"protocolFee\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"lenderRefinanceDisabled\",\n            \"type\": \"bool\",\n            \"internalType\": \"bool\"\n          }\n        ]\n      },\n      {\n        \"name\": \"fee\",\n        \"type\": \"uint256\",\n        \"indexed\": false,\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"anonymous\": false\n  },\n  {\n    \"type\": \"event\",\n    \"name\": \"LoanRefinancedFromNewOffers\",\n    \"inputs\": [\n      {\n        \"name\": \"loanId\",\n        \"type\": \"uint256\",\n        \"indexed\": false,\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"newLoanId\",\n        \"type\": \"uint256\",\n        \"indexed\": false,\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"loan\",\n        \"type\": \"tuple\",\n        \"indexed\": false,\n        \"internalType\": \"struct IMultiSourceLoan.Loan\",\n        \"components\": [\n          {\n            \"name\": \"borrower\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"nftCollateralTokenId\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"nftCollateralAddress\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"principalAddress\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"principalAmount\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"startTime\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"duration\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"tranche\",\n            \"type\": \"tuple[]\",\n            \"internalType\": \"struct IMultiSourceLoan.Tranche[]\",\n            \"components\": [\n              {\n                \"name\": \"loanId\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"floor\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"principalAmount\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"lender\",\n                \"type\": \"address\",\n                \"internalType\": \"address\"\n              },\n              {\n                \"name\": \"accruedInterest\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"startTime\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              },\n              {\n                \"name\": \"aprBps\",\n                \"type\": \"uint256\",\n                \"internalType\": \"uint256\"\n              }\n            ]\n          },\n          {\n            \"name\": \"protocolFee\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"lenderRefinanceDisabled\",\n            \"type\": \"bool\",\n            \"internalType\": \"bool\"\n          }\n        ]\n      },\n      {\n        \"name\": \"offerIds\",\n        \"type\": \"uint256[]\",\n        \"indexed\": false,\n        \"internalType\": \"uint256[]\"\n      },\n      {\n        \"name\": \"totalFee\",\n        \"type\": \"uint256\",\n        \"indexed\": false,\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"anonymous\": false\n  },\n  {\n    \"type\": \"event\",\n    \"name\": \"LoanRepaid\",\n    \"inputs\": [\n      {\n        \"name\": \"loanId\",\n        \"type\": \"uint256\",\n        \"indexed\": false,\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"totalRepayment\",\n        \"type\": \"uint256\",\n        \"indexed\": false,\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"fee\",\n        \"type\": \"uint256\",\n        \"indexed\": false,\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"anonymous\": false\n  },\n  {\n    \"type\": \"event\",\n    \"name\": \"LoanSentToLiquidator\",\n    \"inputs\": [\n      {\n        \"name\": \"loanId\",\n        \"type\": \"uint256\",\n        \"indexed\": false,\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"liquidator\",\n        \"type\": \"address\",\n        \"indexed\": false,\n        \"internalType\": \"address\"\n      }\n    ],\n    \"anonymous\": false\n  },\n  {\n    \"type\": \"event\",\n    \"name\": \"MinAprImprovementUpdated\",\n    \"inputs\": [\n      {\n        \"name\": \"_minimum\",\n        \"type\": \"uint256\",\n        \"indexed\": false,\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"anonymous\": false\n  },\n  {\n    \"type\": \"event\",\n    \"name\": \"MinBidLiquidationUpdated\",\n    \"inputs\": [\n      {\n        \"name\": \"newMinBid\",\n        \"type\": \"uint256\",\n        \"indexed\": false,\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"anonymous\": false\n  },\n  {\n    \"type\": \"event\",\n    \"name\": \"MinLockPeriodUpdated\",\n    \"inputs\": [\n      {\n        \"name\": \"minLockPeriod\",\n        \"type\": \"uint256\",\n        \"indexed\": false,\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"anonymous\": false\n  },\n  {\n    \"type\": \"event\",\n    \"name\": \"OfferCancelled\",\n    \"inputs\": [\n      {\n        \"name\": \"lender\",\n        \"type\": \"address\",\n        \"indexed\": false,\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"offerId\",\n        \"type\": \"uint256\",\n        \"indexed\": false,\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"anonymous\": false\n  },\n  {\n    \"type\": \"event\",\n    \"name\": \"OwnershipTransferred\",\n    \"inputs\": [\n      {\n        \"name\": \"user\",\n        \"type\": \"address\",\n        \"indexed\": true,\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"newOwner\",\n        \"type\": \"address\",\n        \"indexed\": true,\n        \"internalType\": \"address\"\n      }\n    ],\n    \"anonymous\": false\n  },\n  {\n    \"type\": \"event\",\n    \"name\": \"ProtocolFeePendingUpdate\",\n    \"inputs\": [\n      {\n        \"name\": \"fee\",\n        \"type\": \"tuple\",\n        \"indexed\": false,\n        \"internalType\": \"struct WithProtocolFee.ProtocolFee\",\n        \"components\": [\n          {\n            \"name\": \"recipient\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"fraction\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          }\n        ]\n      }\n    ],\n    \"anonymous\": false\n  },\n  {\n    \"type\": \"event\",\n    \"name\": \"ProtocolFeeUpdated\",\n    \"inputs\": [\n      {\n        \"name\": \"fee\",\n        \"type\": \"tuple\",\n        \"indexed\": false,\n        \"internalType\": \"struct WithProtocolFee.ProtocolFee\",\n        \"components\": [\n          {\n            \"name\": \"recipient\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"fraction\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          }\n        ]\n      }\n    ],\n    \"anonymous\": false\n  },\n  {\n    \"type\": \"event\",\n    \"name\": \"RenegotiationOfferCancelled\",\n    \"inputs\": [\n      {\n        \"name\": \"lender\",\n        \"type\": \"address\",\n        \"indexed\": false,\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"renegotiationId\",\n        \"type\": \"uint256\",\n        \"indexed\": false,\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"anonymous\": false\n  },\n  {\n    \"type\": \"event\",\n    \"name\": \"RevokeDelegate\",\n    \"inputs\": [\n      {\n        \"name\": \"delegate\",\n        \"type\": \"address\",\n        \"indexed\": false,\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"collection\",\n        \"type\": \"address\",\n        \"indexed\": false,\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"tokenId\",\n        \"type\": \"uint256\",\n        \"indexed\": false,\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"_rights\",\n        \"type\": \"bytes32\",\n        \"indexed\": false,\n        \"internalType\": \"bytes32\"\n      }\n    ],\n    \"anonymous\": false\n  },\n  {\n    \"type\": \"event\",\n    \"name\": \"TransferOwnerRequested\",\n    \"inputs\": [\n      {\n        \"name\": \"newOwner\",\n        \"type\": \"address\",\n        \"indexed\": false,\n        \"internalType\": \"address\"\n      }\n    ],\n    \"anonymous\": false\n  },\n  {\n    \"type\": \"event\",\n    \"name\": \"WhitelistedCallbackContractAdded\",\n    \"inputs\": [\n      {\n        \"name\": \"contractAdded\",\n        \"type\": \"address\",\n        \"indexed\": false,\n        \"internalType\": \"address\"\n      }\n    ],\n    \"anonymous\": false\n  },\n  {\n    \"type\": \"event\",\n    \"name\": \"WhitelistedCallbackContractRemoved\",\n    \"inputs\": [\n      {\n        \"name\": \"contractRemoved\",\n        \"type\": \"address\",\n        \"indexed\": false,\n        \"internalType\": \"address\"\n      }\n    ],\n    \"anonymous\": false\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"AddressZeroError\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"CancelledOrExecutedOfferError\",\n    \"inputs\": [\n      {\n        \"name\": \"_lender\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"_offerId\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ]\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"CollectionNotWhitelistedError\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"CurrencyNotWhitelistedError\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"ECDSAInvalidSignature\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"ECDSAInvalidSignatureLength\",\n    \"inputs\": [\n      {\n        \"name\": \"length\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ]\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"ECDSAInvalidSignatureS\",\n    \"inputs\": [\n      {\n        \"name\": \"s\",\n        \"type\": \"bytes32\",\n        \"internalType\": \"bytes32\"\n      }\n    ]\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"ExpiredOfferError\",\n    \"inputs\": [\n      {\n        \"name\": \"_expirationTime\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ]\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"InvalidAddressesError\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"InvalidAmountError\",\n    \"inputs\": [\n      {\n        \"name\": \"_amount\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"_principalAmount\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ]\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"InvalidBorrowerError\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"InvalidCallbackError\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"InvalidCallerError\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"InvalidCollateralError\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"InvalidCollateralIdError\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"InvalidDurationError\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"InvalidInputError\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"InvalidLoanError\",\n    \"inputs\": [\n      {\n        \"name\": \"_loanId\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ]\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"InvalidLockPeriodError\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"InvalidMethodError\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"InvalidRenegotiationOfferError\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"InvalidSignatureError\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"InvalidTrancheError\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"LenderRefinanceDisabledError\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"LoanExpiredError\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"LoanLockedError\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"LoanNotDueError\",\n    \"inputs\": [\n      {\n        \"name\": \"_expirationTime\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ]\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"MaxCapacityExceededError\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"MulticallFailed\",\n    \"inputs\": [\n      {\n        \"name\": \"i\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"returndata\",\n        \"type\": \"bytes\",\n        \"internalType\": \"bytes\"\n      }\n    ]\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"NFTNotReturnedError\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"NotStrictlyImprovedError\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"TooEarlyError\",\n    \"inputs\": [\n      {\n        \"name\": \"_pendingProtocolFeeSetTime\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ]\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"TooManyTranchesError\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"TooSoonError\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"TrancheCannotBeRefinancedError\",\n    \"inputs\": [\n      {\n        \"name\": \"minTimestamp\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ]\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"ZeroInterestError\",\n    \"inputs\": []\n  }\n] as const;\n", "import { Address, Hash, zeroHash } from 'viem';\n\n/**\n * A delegation the loan contract holds for a token: its delegate and every rights value enabled\n * for it, as the API's `Delegation.delegateTo` and `Delegation.rights` report them. A bare address\n * stands for the delegate's full-rights (`zeroHash`) delegation.\n */\nexport type LoanDelegation = Address | { to: Address; rights: readonly Hash[] };\n\n/**\n * One `revokeDelegate` call per (delegate, rights) pair of `delegations`.\n *\n * IMPLEMENTATION NOTE: the delegate.xyz registry keys each delegation by its rights, so a\n * revocation names the exact value it removes, and revoking one that was never enabled is a no-op\n * (https://docs.delegate.xyz/technical-documentation/delegate-registry/idelegateregistry.sol).\n */\nexport const delegationRevocations = (delegations: readonly LoanDelegation[]) =>\n  delegations.flatMap((delegation) => {\n    const { to, rights } =\n      typeof delegation === 'string' ? { to: delegation, rights: [zeroHash] } : delegation;\n    return rights.map((right) => ({ to, rights: right }));\n  });\n", "import { Address, PublicClient } from 'viem';\n\nimport { Wallet } from '@/clients/contracts';\nimport { UserVaultV6 } from '@/clients/contracts/UserVaultV6';\nimport { userVaultABI as userVaultABIV5 } from '@/generated/blockchain/v5';\nimport {\n  BurnAndWithdrawArgs,\n  CreateVaultCurrencies,\n  CreateVaultNfts,\n  DepositERC721sArgs,\n} from '@/gondi';\n\nimport { BaseContract } from './BaseContract';\n\nexport class UserVaultV5 extends BaseContract<typeof userVaultABIV5> {\n  constructor({\n    walletClient,\n    address,\n    publicClient,\n  }: {\n    walletClient: Wallet;\n    address: Address;\n    publicClient?: PublicClient;\n  }) {\n    super({\n      walletClient,\n      address,\n      abi: userVaultABIV5,\n      publicClient,\n    });\n  }\n\n  async burnAndWithdraw({\n    vaultId,\n    collections,\n    tokenIds,\n    tokens = [],\n  }: BurnAndWithdrawArgs): ReturnType<UserVaultV6['burnAndWithdraw']> {\n    if (collections.length != tokenIds.length) {\n      throw new Error('collections and tokenIds must have the same length');\n    }\n    const txHash = await this.safeContractWrite.burnAndWithdraw([\n      vaultId,\n      collections,\n      tokenIds,\n      tokens,\n    ]);\n\n    return {\n      txHash,\n      waitTxInBlock: async () => {\n        const receipt = await this.bcClient.waitForTransactionReceipt({\n          hash: txHash,\n        });\n        const events = this.parseEventLogs('ERC721Withdrawn', receipt.logs);\n        if (events.length !== tokenIds.length) throw new Error('Withdrawn count mismatch');\n        return {\n          events: events.map((event) => event.args),\n          oldEvents: [],\n          ...receipt,\n        };\n      },\n    };\n  }\n\n  async createVault(nfts: CreateVaultNfts, currencies: CreateVaultCurrencies) {\n    const { id: vaultId } = await this.#mintVault();\n    const receipts = [];\n    if (nfts.length !== nfts.length || currencies.length > 0) {\n      throw new Error('Unsupported standars for UserVault');\n    }\n\n    // Regroup all elements in the same collection in case users send tokenIds as separate elements of the array\n    const groupedNfts: Record<Address, (typeof nfts)[number]> = {};\n    for (const nft of nfts) {\n      const { collection, tokenIds } = nft;\n      if (groupedNfts[collection]) {\n        groupedNfts[collection].tokenIds.push(...tokenIds);\n      } else {\n        groupedNfts[collection] = { ...nft, tokenIds: [...tokenIds] };\n      }\n    }\n\n    for (const nft of Object.values(groupedNfts)) {\n      const deposit = await this.depositERC721s({ vaultId, ...nft });\n      const receipt = await deposit.waitTxInBlock();\n      receipts.push(receipt);\n    }\n\n    return { vaultId, receipts };\n  }\n\n  async depositERC721s({ vaultId, collection, tokenIds }: DepositERC721sArgs) {\n    const txHash = await this.safeContractWrite.depositERC721s([vaultId, collection, tokenIds]);\n\n    return {\n      txHash,\n      waitTxInBlock: async () => {\n        const receipt = await this.bcClient.waitForTransactionReceipt({\n          hash: txHash,\n        });\n        const events = this.parseEventLogs('ERC721Deposited', receipt.logs);\n        if (events.length === 0) throw new Error('Deposit not created');\n        return { ...events[0].args, ...receipt };\n      },\n    };\n  }\n\n  async depositERC1155s(): ReturnType<UserVaultV6['depositERC1155s']> {\n    throw new Error('Not implemented');\n  }\n\n  async depositERC20(): ReturnType<UserVaultV6['depositERC20']> {\n    throw new Error('Not implemented');\n  }\n\n  async #mintVault() {\n    const txHash = await this.safeContractWrite.mint(undefined);\n    const receipt = await this.bcClient.waitForTransactionReceipt({\n      hash: txHash,\n    });\n\n    const events = this.parseEventLogs('Transfer', receipt.logs);\n    if (events.length === 0) throw new Error('Vault not created');\n    return { ...events[0].args, ...receipt };\n  }\n}\n", "import { Address, PublicClient } from 'viem';\n\nimport { Wallet } from '@/clients/contracts';\nimport { userVaultAbi as userVaultABIV6 } from '@/generated/blockchain/v6';\nimport {\n  BurnAndWithdrawArgs,\n  CreateVaultCurrencies,\n  CreateVaultNfts,\n  DepositERC20Args,\n  DepositERC721sArgs,\n  DepositERC1155sArgs,\n} from '@/gondi';\n\nimport { BaseContract } from './BaseContract';\n\nexport class UserVaultV6 extends BaseContract<typeof userVaultABIV6> {\n  constructor({\n    walletClient,\n    address,\n    publicClient,\n  }: {\n    walletClient: Wallet;\n    address: Address;\n    publicClient?: PublicClient;\n  }) {\n    super({\n      walletClient,\n      address,\n      abi: userVaultABIV6,\n      publicClient,\n    });\n  }\n\n  async burnAndWithdraw({\n    vaultId,\n    collections,\n    tokenIds,\n    tokens = [],\n    erc1155Collections = [],\n    erc1155TokenIds = [],\n  }: BurnAndWithdrawArgs) {\n    if (collections.length != tokenIds.length) {\n      throw new Error('collections and tokenIds must have the same length');\n    }\n    if (erc1155Collections.length != erc1155TokenIds.length) {\n      throw new Error('erc1155Collections and erc1155TokenIds must have the same length');\n    }\n    const txHash = await this.safeContractWrite.burnAndWithdraw([\n      vaultId,\n      collections,\n      tokenIds,\n      tokens,\n      erc1155Collections,\n      erc1155TokenIds,\n    ]);\n\n    return {\n      txHash,\n      waitTxInBlock: async () => {\n        const receipt = await this.bcClient.waitForTransactionReceipt({\n          hash: txHash,\n        });\n        const events = this.parseEventLogs('ERC721Withdrawn', receipt.logs);\n        const tokenEvents = this.parseEventLogs('ERC20Withdrawn', receipt.logs);\n        const erc1155Events = this.parseEventLogs('ERC1155Withdrawn', receipt.logs);\n        if (\n          events.length !== tokenIds.length ||\n          tokenEvents.length !== tokens.length ||\n          erc1155Events.length !== erc1155TokenIds.length\n        )\n          throw new Error('Withdrawn count mismatch');\n        return {\n          events: events.map((event) => event.args),\n          oldEvents: events.map((event) => event.args),\n          ...receipt,\n        };\n      },\n    };\n  }\n\n  async createVault(nfts: CreateVaultNfts, currencies: CreateVaultCurrencies) {\n    const { id: vaultId } = await this.#mintVault();\n    const receipts = [];\n\n    // Regroup all elements in the same collection in case users send tokenIds as separate elements of the array\n    const groupedNfts: Record<Address, (typeof nfts)[number]> = {};\n    for (const nft of nfts) {\n      const { collection, tokenIds, amounts } = nft;\n      if (groupedNfts[collection]) {\n        groupedNfts[collection].tokenIds.push(...tokenIds);\n        groupedNfts[collection].amounts.push(...amounts);\n      } else {\n        groupedNfts[collection] = { ...nft, tokenIds: [...tokenIds], amounts: [...amounts] };\n      }\n    }\n\n    for (const nft of Object.values(groupedNfts)) {\n      const deposit =\n        nft.standard === 'ERC721'\n          ? await this.depositERC721s({ vaultId, ...nft })\n          : await this.depositERC1155s({ vaultId, ...nft });\n      const receipt = await deposit.waitTxInBlock();\n      receipts.push(receipt);\n    }\n\n    for (const currencyAmount of currencies) {\n      const { address, amount } = currencyAmount;\n      const deposit = await this.depositERC20({ vaultId, tokenAddress: address, amount });\n      const receipt = await deposit.waitTxInBlock();\n      receipts.push(receipt);\n    }\n\n    return { vaultId, receipts };\n  }\n\n  async depositERC721s({ vaultId, collection, tokenIds }: DepositERC721sArgs) {\n    const txHash = await this.safeContractWrite.depositERC721s([vaultId, collection, tokenIds]);\n\n    return {\n      txHash,\n      waitTxInBlock: async () => {\n        const receipt = await this.bcClient.waitForTransactionReceipt({\n          hash: txHash,\n        });\n        const events = this.parseEventLogs('ERC721Deposited', receipt.logs);\n        if (events.length === 0) throw new Error('Deposit not created');\n        return { ...events[0].args, ...receipt };\n      },\n    };\n  }\n\n  async depositERC1155s({ vaultId, collection, tokenIds, amounts }: DepositERC1155sArgs) {\n    const txHash = await this.safeContractWrite.depositERC1155s([\n      vaultId,\n      collection,\n      tokenIds,\n      amounts,\n    ]);\n\n    return {\n      txHash,\n      waitTxInBlock: async () => {\n        const receipt = await this.bcClient.waitForTransactionReceipt({\n          hash: txHash,\n        });\n        const events = this.parseEventLogs('ERC1155Deposited', receipt.logs);\n        if (events.length === 0) throw new Error('Deposit not created');\n        return { ...events[0].args, ...receipt };\n      },\n    };\n  }\n\n  async depositERC20({ vaultId, tokenAddress, amount }: DepositERC20Args) {\n    const txHash = await this.safeContractWrite.depositERC20([vaultId, tokenAddress, amount]);\n\n    return {\n      txHash,\n      waitTxInBlock: async () => {\n        const receipt = await this.bcClient.waitForTransactionReceipt({\n          hash: txHash,\n        });\n        const events = this.parseEventLogs('ERC20Deposited', receipt.logs);\n        if (events.length === 0) throw new Error('Deposit not created');\n        return { ...events[0].args, ...receipt };\n      },\n    };\n  }\n\n  async #mintVault() {\n    const txHash = await this.safeContractWrite.mint(undefined);\n    const receipt = await this.bcClient.waitForTransactionReceipt({\n      hash: txHash,\n    });\n\n    const events = this.parseEventLogs('Transfer', receipt.logs);\n    if (events.length === 0) throw new Error('Vault not created');\n    return { ...events[0].args, ...receipt };\n  }\n}\n", "import { Abi, Account, Address, Chain, PublicClient, Transport, WalletClient } from 'viem';\n\nimport { Erc20 } from '@/clients/contracts/Erc20';\nimport { OldERC721Wrapper } from '@/clients/contracts/OldERC721Wrapper';\nimport { PositionMigrator } from '@/clients/contracts/PositionMigrator';\nimport { PurchaseBundlerV1 } from '@/clients/contracts/PurchaseBundlerV1';\nimport { PurchaseBundlerV2 } from '@/clients/contracts/PurchaseBundlerV2';\nimport {\n  getContracts,\n  getVersionFromMslAddress,\n  getVersionFromPurchaseBundlerAddress,\n  getVersionFromUserVaultAddress,\n} from '@/deploys';\nimport { cryptopunksABI } from '@/generated/blockchain/cryptopunks';\nimport { iCryptoPunks721Abi } from '@/generated/blockchain/cryptopunks721';\nimport { oldErc721Abi } from '@/generated/blockchain/oldERC721';\nimport { seaportABI } from '@/generated/blockchain/seaport';\nimport { erc721ABI } from '@/generated/blockchain/v5';\nimport { erc1155Abi } from '@/generated/blockchain/v6';\nimport { NftStandard } from '@/model';\nimport { areSameAddress } from '@/utils/string';\n\nimport { AllV4 } from './AllV4';\nimport { AllV5 } from './AllV5';\nimport { AllV6 } from './AllV6';\nimport { BaseContract } from './BaseContract';\nimport { MslV4 } from './MslV4';\nimport { MslV5 } from './MslV5';\nimport { MslV6 } from './MslV6';\nimport { UserVaultV5 } from './UserVaultV5';\nimport { UserVaultV6 } from './UserVaultV6';\n\nexport type Wallet = WalletClient<Transport, Chain, Account>;\nexport type GondiPublicClient = PublicClient<Transport, Chain>;\n\nexport interface KeyedClient {\n  public: GondiPublicClient;\n  wallet: Wallet;\n}\n\ntype Erc721Or1155ABI = typeof erc721ABI | typeof erc1155Abi;\n\ntype MslArgs = { walletClient: Wallet; address: Address; publicClient?: PublicClient };\n\nexport class Contracts {\n  publicClient: GondiPublicClient;\n  walletClient: Wallet;\n\n  constructor(publicClient: GondiPublicClient, walletClient: Wallet) {\n    this.walletClient = walletClient;\n    this.publicClient = publicClient;\n  }\n\n  // Each entry supplies its own version so the abi is picked without a cast.\n  _Msls = {\n    '1': (args: MslArgs) => new MslV4(args),\n    '2': (args: MslArgs) => new MslV5(args),\n    '3': (args: MslArgs) => new MslV6({ ...args, version: '3' }),\n    '3.1': (args: MslArgs) => new MslV6({ ...args, version: '3.1' }),\n    '3.2': (args: MslArgs) => new MslV6({ ...args, version: '3.2' }),\n  };\n\n  _Alls = {\n    '1': AllV4,\n    '2': AllV5,\n    '3': AllV6,\n    '3.1': AllV6,\n    '3.2': AllV6,\n  };\n\n  _PBs = {\n    '2': PurchaseBundlerV1,\n    '3': PurchaseBundlerV2,\n    '3.1': PurchaseBundlerV1,\n    '3.1_PB_V2': PurchaseBundlerV2,\n    '3.2': PurchaseBundlerV2,\n  };\n\n  _UserVaults = {\n    '2': UserVaultV5,\n    '3': UserVaultV6,\n  };\n\n  GenericContract(address: Address) {\n    const contracts = getContracts(this.walletClient.chain);\n\n    let abi: Abi = [];\n\n    if (areSameAddress(address, contracts.Seaport)) {\n      abi = seaportABI;\n    } else if (areSameAddress(address, contracts.Cryptopunks)) {\n      abi = cryptopunksABI;\n    }\n\n    return new BaseContract({\n      address,\n      abi,\n      walletClient: this.walletClient,\n      publicClient: this.publicClient,\n    });\n  }\n\n  Msl(address: Address) {\n    const version = getVersionFromMslAddress(this.walletClient.chain, address);\n\n    return this._Msls[version]({\n      walletClient: this.walletClient,\n      address,\n      publicClient: this.publicClient,\n    });\n  }\n\n  /**\n   *\n   * @param contractAddress The contract address of the MSL contract\n   * @returns The corresponding AuctionLoanLiquidator contract\n   */\n  All(mslContractAddress: Address) {\n    const version = getVersionFromMslAddress(this.walletClient.chain, mslContractAddress);\n    const All = this._Alls[version];\n    const contracts = getContracts(this.walletClient.chain);\n\n    return new All({\n      walletClient: this.walletClient,\n      address: contracts.AuctionLoanLiquidator[version],\n      publicClient: this.publicClient,\n    });\n  }\n\n  /**\n   * @param address The contract address of the PurchaseBundler contract\n   * @param mslContractAddress The contract address of the MSL contract\n   * @returns The corresponding PurchaseBundler contract\n   */\n  PurchaseBundler(address: Address | undefined, mslContractAddress: Address) {\n    const mslVersion = getVersionFromMslAddress(this.walletClient.chain, mslContractAddress);\n    if (mslVersion === '1') {\n      throw new Error('V1 has no support for PurchaseBundler');\n    }\n\n    const msl = this.Msl(mslContractAddress);\n    if (msl instanceof MslV4 || msl instanceof MslV5) {\n      // Enforce type cast, this should never happen.\n      throw new Error('Loan version not supported for PurchaseBundler');\n    }\n\n    const contracts = getContracts(this.walletClient.chain);\n    const resolvedAddress = address ?? contracts.PurchaseBundler[mslVersion];\n    const version = getVersionFromPurchaseBundlerAddress(this.walletClient.chain, resolvedAddress);\n    const PurchaseBundler = this._PBs[version];\n\n    return new PurchaseBundler({\n      walletClient: this.walletClient,\n      address: resolvedAddress,\n      msl,\n      publicClient: this.publicClient,\n    });\n  }\n\n  UserVault(address: Address) {\n    const version = getVersionFromUserVaultAddress(this.walletClient.chain, address);\n    const UserVault = this._UserVaults[version];\n\n    return new UserVault({\n      walletClient: this.walletClient,\n      address,\n      publicClient: this.publicClient,\n    });\n  }\n\n  Nft(address: Address, standard: NftStandard) {\n    if (standard === 'ERC721') {\n      return this.ERC721(address) as BaseContract<Erc721Or1155ABI>;\n    }\n    if (standard === 'ERC1155') {\n      return this.ERC1155(address) as BaseContract<Erc721Or1155ABI>;\n    }\n    throw new Error(`Invalid NFT standard ${standard}`);\n  }\n\n  ERC721(address: Address) {\n    return new BaseContract({\n      address,\n      abi: erc721ABI,\n      walletClient: this.walletClient,\n      publicClient: this.publicClient,\n    });\n  }\n\n  OldERC721(address: Address) {\n    return new BaseContract({\n      address,\n      abi: oldErc721Abi,\n      walletClient: this.walletClient,\n      publicClient: this.publicClient,\n    });\n  }\n\n  Cryptopunks(address: Address) {\n    return new BaseContract({\n      address,\n      abi: cryptopunksABI,\n      walletClient: this.walletClient,\n      publicClient: this.publicClient,\n    });\n  }\n\n  Cryptopunks721(address: Address) {\n    return new BaseContract({\n      address,\n      abi: iCryptoPunks721Abi,\n      walletClient: this.walletClient,\n      publicClient: this.publicClient,\n    });\n  }\n\n  ERC1155(address: Address) {\n    return new BaseContract({\n      address,\n      abi: erc1155Abi,\n      walletClient: this.walletClient,\n      publicClient: this.publicClient,\n    });\n  }\n\n  OldERC721Wrapper(address: Address) {\n    return new OldERC721Wrapper({\n      walletClient: this.walletClient,\n      contractAddress: address,\n      publicClient: this.publicClient,\n    });\n  }\n\n  ERC20(address: Address) {\n    return new Erc20({\n      address,\n      walletClient: this.walletClient,\n      publicClient: this.publicClient,\n    });\n  }\n\n  PositionMigrator(address: Address, msl: MslV6) {\n    return new PositionMigrator({\n      walletClient: this.walletClient,\n      address,\n      msl,\n      publicClient: this.publicClient,\n    });\n  }\n}\n", "import {\n  Address,\n  encodeFunctionData,\n  encodePacked,\n  erc20Abi,\n  erc721Abi,\n  Hex,\n  keccak256,\n  parseAbi,\n  zeroAddress,\n  zeroHash,\n} from 'viem';\n\nimport { GondiPublicClient, Wallet } from '@/clients/contracts';\nimport { BaseContract } from '@/clients/contracts/BaseContract';\nimport { MslV6 } from '@/clients/contracts/MslV6';\nimport { getContracts, getCurrencies } from '@/deploys';\nimport { positionMigratorAbi } from '@/generated/blockchain/positionMigrator';\nimport { purchaseBundlerV2ABI } from '@/generated/blockchain/v7';\nimport { EmitLoanArgs } from '@/gondi';\nimport {\n  buildCrossCurrencySwap,\n  calculateCrossCurrencyBudget,\n  CROSS_CURRENCY_DEFAULT_SLIPPAGE_BPS,\n  crossCurrencyDeadline,\n} from '@/utils/crossCurrencyRenegotiation';\nimport { BPS, getTotalOwedAt, loanToMslLoan, LoanToMslLoanType } from '@/utils/loan';\nimport { mulDivUp } from '@/utils/number';\nimport { areSameAddress } from '@/utils/string';\n\nconst aaveAbi = parseAbi([\n  'function FLASHLOAN_PREMIUM_TOTAL() view returns (uint128)',\n  'function getReserveData(address) view returns (((uint256 data) configuration, uint128 liquidityIndex, uint128 currentLiquidityRate, uint128 variableBorrowIndex, uint128 currentVariableBorrowRate, uint128 currentStableBorrowRate, uint40 lastUpdateTimestamp, uint16 id, address aTokenAddress, address stableDebtTokenAddress, address variableDebtTokenAddress, address interestRateStrategyAddress, uint128 accruedToTreasury, uint128 unbacked, uint128 isolationModeTotalDebt))',\n]);\nconst managerAbi = parseAbi(['function isWhitelisted(address) view returns (bool)']);\nconst bundlerReadAbi = parseAbi([\n  'function paused() view returns (bool)',\n  'function getMultiSourceLoanAddress() view returns (address)',\n]);\nconst quoterAbi = parseAbi([\n  'function quoteExactOutput(bytes path, uint256 amountOut) returns (uint256 amountIn, uint160[] sqrtPriceX96AfterList, uint32[] initializedTicksCrossedList, uint256 gasEstimate)',\n]);\n\n/** Borrower-authorized replacement of an Ethereum v3.1/v3.2 USDC or WETH loan. */\nexport interface CrossCurrencyRenegotiationInput {\n  /** Complete current on-chain loan, normalized with loanToMslLoan by the SDK. */\n  loan: LoanToMslLoanType;\n  /** Current on-chain loan ID, rather than the API's logical string ID. */\n  loanId: bigint;\n  /** Signed offers for the same collateral, with homogeneous contract and currency. */\n  executionData: EmitLoanArgs;\n  /** Maximum price movement in basis points; defaults to 100 (1%). */\n  slippageBps?: bigint;\n}\n\n/** A short-lived quote; repayment and old-currency approval use oldCurrency units. */\nexport type CrossCurrencyRenegotiationQuote = Readonly<{\n  borrower: Address;\n  previousContract: Address;\n  replacementContract: Address;\n  purchaseBundler: Address;\n  positionMigrator: Address;\n  loanId: bigint;\n  loanHash: Hex;\n  executionHash: Hex;\n  oldCurrency: Address;\n  newCurrency: Address;\n  repaymentAmount: bigint;\n  /** Stable repayment ceiling through maturity; prepare this approval before the final quote. */\n  oldCurrencyApprovalAmount: bigint;\n  quotedInput: bigint;\n  maximumInput: bigint;\n  premiumBps: bigint;\n  premium: bigint;\n  maximumFlashRepayment: bigint;\n  newPrincipal: bigint;\n  originationFee: bigint;\n  /** Live target-contract fee on lender earnings, fixed for this confirmation. */\n  replacementProtocolFeeBps: bigint;\n  netNewPrincipal: bigint;\n  maximumTopUp: bigint;\n  minimumSurplus: bigint;\n  slippageBps: bigint;\n  deadline: bigint;\n  blockNumber: bigint;\n}>;\n\n/** Builds the fixed swap/repay/originate composition using deployed contracts. */\nexport class CrossCurrencyRenegotiation extends BaseContract<typeof positionMigratorAbi> {\n  readonly previousMsl: MslV6;\n  readonly msl: MslV6;\n\n  constructor({\n    previousMsl,\n    msl,\n    walletClient,\n    publicClient,\n  }: {\n    previousMsl: MslV6;\n    msl: MslV6;\n    walletClient: Wallet;\n    publicClient: GondiPublicClient;\n  }) {\n    super({\n      address: getContracts(walletClient.chain).PositionMigrator,\n      abi: positionMigratorAbi,\n      walletClient,\n      publicClient,\n    });\n    this.previousMsl = previousMsl;\n    this.msl = msl;\n  }\n\n  /**\n   * Quotes deadline-bounded repayment, conversion, flash fees and borrower spending.\n   *\n   * IMPLEMENTATION NOTE: QuoterV2's non-view quoteExactOutput is simulated with eth_call;\n   * its first result is the new currency required for an exact old-currency output.\n   * Aave's fee is read from FLASHLOAN_PREMIUM_TOTAL. Reserve configuration flags and the\n   * legacy reserve tuple follow Aave V3's ReserveConfiguration and DataTypes libraries.\n   * https://docs.uniswap.org/contracts/v3/reference/periphery/lens/QuoterV2\n   * https://aave.com/docs/aave-v3/guides/flash-loans\n   */\n  async quote(input: CrossCurrencyRenegotiationInput): Promise<CrossCurrencyRenegotiationQuote> {\n    const parsed = this._parseInput(input);\n    const block = await this.bcClient.getBlock();\n    if (block.number === null) throw new Error('Cannot quote a pending block');\n    const deadline = crossCurrencyDeadline({\n      now: block.timestamp,\n      maturity: parsed.loan.startTime + parsed.loan.duration,\n      expirations: [\n        ...input.executionData.offerExecution.map(({ offer }) => offer.expirationTime),\n        ...(input.executionData.expirationTime === undefined\n          ? []\n          : [input.executionData.expirationTime]),\n      ],\n    });\n    const executionData = this._executionData(input.executionData, deadline);\n    const repaymentAmount = getTotalOwedAt(parsed.loan, deadline);\n    const { Aave } = getContracts(this.wallet.chain);\n    const [loanHash, premiumBps, reserve, quote] = await Promise.all([\n      this.previousMsl.contract.read.getLoanHash([input.loanId]),\n      this.bcClient.readContract({\n        address: Aave,\n        abi: aaveAbi,\n        functionName: 'FLASHLOAN_PREMIUM_TOTAL',\n      }),\n      this.bcClient.readContract({\n        address: Aave,\n        abi: aaveAbi,\n        functionName: 'getReserveData',\n        args: [parsed.newCurrency],\n      }),\n      this.bcClient.simulateContract({\n        address: getContracts(this.wallet.chain).UniswapQuoterV2,\n        abi: quoterAbi,\n        functionName: 'quoteExactOutput',\n        args: [\n          encodePacked(\n            ['address', 'uint24', 'address'],\n            [parsed.loan.principalAddress, 500, parsed.newCurrency],\n          ),\n          repaymentAmount,\n        ],\n      }),\n    ]);\n    if (loanHash === zeroHash) throw new Error('The old loan is no longer active');\n    const configuration = reserve.configuration.data;\n    if (\n      !(configuration & (1n << 56n)) ||\n      configuration & (1n << 60n) ||\n      !(configuration & (1n << 63n))\n    ) {\n      throw new Error('Aave flash loans are unavailable for the replacement currency');\n    }\n    const budget = calculateCrossCurrencyBudget({\n      quotedInput: quote.result[0],\n      premiumBps,\n      slippageBps: input.slippageBps ?? CROSS_CURRENCY_DEFAULT_SLIPPAGE_BPS,\n      netNewPrincipal: parsed.newPrincipal - parsed.originationFee,\n    });\n    const liquidity = await this.bcClient.readContract({\n      address: parsed.newCurrency,\n      abi: erc20Abi,\n      functionName: 'balanceOf',\n      args: [reserve.aTokenAddress],\n    });\n    if (liquidity < budget.maximumInput) throw new Error('Insufficient Aave flash liquidity');\n    await this._checkRoute(parsed.purchaseBundler, parsed.newCurrency, budget.maximumInput);\n    const [currencyManager, collectionManager] = await Promise.all([\n      this.msl.contract.read.getCurrencyManager(),\n      this.msl.contract.read.getCollectionManager(),\n    ]);\n    const [currencySupported, collateralSupported] = await Promise.all([\n      this.bcClient.readContract({\n        address: currencyManager,\n        abi: managerAbi,\n        functionName: 'isWhitelisted',\n        args: [parsed.newCurrency],\n      }),\n      this.bcClient.readContract({\n        address: collectionManager,\n        abi: managerAbi,\n        functionName: 'isWhitelisted',\n        args: [parsed.loan.nftCollateralAddress],\n      }),\n    ]);\n    if (!currencySupported || !collateralSupported)\n      throw new Error('Replacement currency or collateral is not whitelisted');\n    const replacementProtocolFeeBps = await this._checkLenders(executionData, parsed.newCurrency);\n    const executionCalldata = await this.msl.encodeEmitLoan({\n      emitArgs: executionData,\n      withSignature: false,\n    });\n    return Object.freeze({\n      borrower: this.wallet.account.address,\n      previousContract: this.previousMsl.address,\n      replacementContract: this.msl.address,\n      purchaseBundler: parsed.purchaseBundler,\n      positionMigrator: this.address,\n      loanId: input.loanId,\n      loanHash,\n      executionHash: keccak256(executionCalldata),\n      oldCurrency: parsed.loan.principalAddress,\n      newCurrency: parsed.newCurrency,\n      repaymentAmount,\n      oldCurrencyApprovalAmount: getTotalOwedAt(\n        parsed.loan,\n        parsed.loan.startTime + parsed.loan.duration,\n      ),\n      quotedInput: quote.result[0],\n      premiumBps,\n      ...budget,\n      newPrincipal: parsed.newPrincipal,\n      originationFee: parsed.originationFee,\n      replacementProtocolFeeBps,\n      netNewPrincipal: parsed.newPrincipal - parsed.originationFee,\n      slippageBps: input.slippageBps ?? CROSS_CURRENCY_DEFAULT_SLIPPAGE_BPS,\n      deadline,\n      blockNumber: block.number,\n    });\n  }\n\n  /** Checks the bound quote and capped approvals, then simulates and broadcasts atomically. */\n  async execute({\n    quote,\n    ...input\n  }: CrossCurrencyRenegotiationInput & {\n    quote: CrossCurrencyRenegotiationQuote;\n  }) {\n    const parsed = this._parseInput(input);\n    const executionData = this._executionData(input.executionData, quote.deadline);\n    const [\n      block,\n      loanHash,\n      allowance,\n      oldAllowance,\n      borrowerBalance,\n      nftApproval,\n      unsignedEmit,\n      protocolFee,\n    ] = await Promise.all([\n      this.bcClient.getBlock(),\n      this.previousMsl.contract.read.getLoanHash([input.loanId]),\n      this.bcClient.readContract({\n        address: parsed.newCurrency,\n        abi: erc20Abi,\n        functionName: 'allowance',\n        args: [this.wallet.account.address, this.address],\n      }),\n      this.bcClient.readContract({\n        address: parsed.loan.principalAddress,\n        abi: erc20Abi,\n        functionName: 'allowance',\n        args: [this.wallet.account.address, this.previousMsl.address],\n      }),\n      this.bcClient.readContract({\n        address: parsed.newCurrency,\n        abi: erc20Abi,\n        functionName: 'balanceOf',\n        args: [this.wallet.account.address],\n      }),\n      this.bcClient.readContract({\n        address: parsed.loan.nftCollateralAddress,\n        abi: erc721Abi,\n        functionName: 'isApprovedForAll',\n        args: [this.wallet.account.address, this.msl.address],\n      }),\n      this.msl.encodeEmitLoan({ emitArgs: executionData, withSignature: false }),\n      this.msl.getProtocolFee(),\n    ]);\n    if (protocolFee.fraction !== quote.replacementProtocolFeeBps)\n      throw new Error('The replacement protocol fee changed; refresh and confirm a new quote');\n    if (\n      block.timestamp >= quote.deadline ||\n      loanHash !== quote.loanHash ||\n      !areSameAddress(quote.borrower, this.wallet.account.address) ||\n      !areSameAddress(quote.previousContract, this.previousMsl.address) ||\n      !areSameAddress(quote.replacementContract, this.msl.address) ||\n      input.loanId !== quote.loanId ||\n      keccak256(unsignedEmit) !== quote.executionHash\n    ) {\n      throw new Error('The replacement quote is stale or does not match this execution');\n    }\n    const budget = calculateCrossCurrencyBudget({\n      quotedInput: quote.quotedInput,\n      slippageBps: quote.slippageBps,\n      premiumBps: quote.premiumBps,\n      netNewPrincipal: parsed.newPrincipal - parsed.originationFee,\n    });\n    if (\n      quote.repaymentAmount !== getTotalOwedAt(parsed.loan, quote.deadline) ||\n      budget.maximumInput !== quote.maximumInput ||\n      budget.maximumFlashRepayment !== quote.maximumFlashRepayment\n    ) {\n      throw new Error('The replacement quote has an invalid spending budget');\n    }\n    if (allowance !== budget.maximumFlashRepayment) {\n      throw new Error('Set the migrator allowance to the exact quoted maximum flash repayment');\n    }\n    if (oldAllowance < quote.repaymentAmount || !nftApproval) {\n      throw new Error('Approve old-loan repayment and collateral transfer before execution');\n    }\n    if (borrowerBalance < budget.maximumTopUp)\n      throw new Error('Insufficient borrower top-up balance');\n    const repaymentCalldata = await this.previousMsl.encodeRepayLoan({\n      repayArgs: {\n        loan: parsed.loan,\n        signableRepaymentData: {\n          loanId: input.loanId,\n          callbackData: '0x',\n          shouldDelegate: false,\n        },\n      },\n      withSignature: true,\n    });\n    const emitCalldata = await this.msl.encodeEmitLoan({\n      emitArgs: executionData,\n      withSignature: true,\n    });\n    const swapData = buildCrossCurrencySwap({\n      borrower: this.wallet.account.address,\n      oldCurrency: parsed.loan.principalAddress,\n      newCurrency: parsed.newCurrency,\n      router: getContracts(this.wallet.chain).UniversalRouter,\n      repaymentAmount: quote.repaymentAmount,\n      maximumInput: quote.maximumInput,\n      deadline: quote.deadline,\n    });\n    const closeCalldata = encodeFunctionData({\n      abi: purchaseBundlerV2ABI,\n      functionName: 'swapAndExecute',\n      args: [\n        {\n          inputCurrencies: [parsed.newCurrency],\n          outputCurrencies: [],\n          amountsToSwap: [quote.maximumInput],\n          swapData,\n          target: this.previousMsl.address,\n          executionCalldata: repaymentCalldata,\n          executionValue: 0n,\n        },\n      ],\n    });\n    const txHash = await this.safeContractWrite.smartMigrate([\n      {\n        migrationArgs: {\n          close: { contractAddress: parsed.purchaseBundler, callData: closeCalldata, value: 0n },\n          open: { contractAddress: this.msl.address, callData: emitCalldata, value: 0n },\n          borrowArgs: {\n            pool: getContracts(this.wallet.chain).Aave,\n            recipient: this.address,\n            assets: [parsed.newCurrency],\n            amounts: [quote.maximumInput],\n          },\n          approvalContract: parsed.purchaseBundler,\n          migrator: this.wallet.account.address,\n          nonce: await this.contract.read.getNonce([this.wallet.account.address]),\n        },\n        migratorSignature: '0x',\n      },\n    ]);\n    return {\n      txHash,\n      waitTxInBlock: async () => {\n        const receipt = await this.bcClient.waitForTransactionReceipt({ hash: txHash });\n        const initiated = this.msl\n          .parseEventLogs('LoanEmitted', receipt.logs)\n          .filter((event) => areSameAddress(event.address, this.msl.address));\n        const repaid = this.previousMsl\n          .parseEventLogs('LoanRepaid', receipt.logs)\n          .filter(\n            (event) =>\n              areSameAddress(event.address, this.previousMsl.address) &&\n              event.args.loanId === input.loanId,\n          );\n        if (receipt.status !== 'success' || initiated.length !== 1 || repaid.length !== 1) {\n          throw new Error('Cross-currency loan replacement was not completed');\n        }\n        const args = initiated[0].args;\n        return {\n          ...receipt,\n          previousLoanId: input.loanId,\n          loanId: args.loanId,\n          loan: {\n            ...args.loan,\n            id: `${this.msl.address.toLowerCase()}.${args.loanId}`,\n            contractAddress: this.msl.address,\n          },\n        };\n      },\n    };\n  }\n\n  private _parseInput(input: CrossCurrencyRenegotiationInput) {\n    const contracts = getContracts(this.wallet.chain);\n    if (\n      [\n        contracts.PositionMigrator,\n        contracts.MigratorManager,\n        contracts.UniversalRouter,\n        contracts.Permit2,\n        contracts.UniswapQuoterV2,\n        contracts.Aave,\n      ].some((address) => areSameAddress(address, zeroAddress)) ||\n      this.previousMsl.version === '3' ||\n      this.msl.version === '3'\n    ) {\n      throw new Error('Cross-currency replacement supports Ethereum v3.1/v3.2 loans only');\n    }\n    const loan = loanToMslLoan(input.loan);\n    if (!areSameAddress(loan.borrower, this.wallet.account.address))\n      throw new Error('Only the borrower can replace this loan');\n    if (!areSameAddress(input.loan.contractAddress, this.previousMsl.address))\n      throw new Error('Invalid previous loan contract');\n    const { executionData } = input;\n    if (\n      !areSameAddress(loan.nftCollateralAddress, executionData.nftCollateralAddress) ||\n      loan.nftCollateralTokenId !== executionData.tokenId\n    )\n      throw new Error('Replacement collateral must match the old loan');\n    if (\n      !executionData.offerExecution.length ||\n      executionData.duration <= 0n ||\n      (executionData.callbackData && executionData.callbackData !== '0x') ||\n      (executionData.principalReceiver &&\n        !areSameAddress(executionData.principalReceiver, loan.borrower))\n    ) {\n      throw new Error('Invalid replacement loan execution');\n    }\n    const newCurrency = executionData.offerExecution[0].offer.principalAddress;\n    const currencies = getCurrencies(this.wallet.chain);\n    const supported = [currencies.USDC_ADDRESS, currencies.WETH_ADDRESS];\n    if (areSameAddress(loan.principalAddress, newCurrency))\n      throw new Error('Choose a different replacement currency');\n    if (\n      ![loan.principalAddress, newCurrency].every((currency) =>\n        supported.some((supportedCurrency) => areSameAddress(currency, supportedCurrency)),\n      )\n    ) {\n      throw new Error('Only USDC and WETH are supported for cross-currency replacement');\n    }\n    let newPrincipal = 0n;\n    let originationFee = 0n;\n    const offerIdentities = new Set<string>();\n    for (const { offer, amount = offer.principalAmount } of executionData.offerExecution) {\n      const identity = `${offer.lenderAddress.toLowerCase()}.${offer.offerId}`;\n      if (offerIdentities.has(identity)) throw new Error('Replacement contains a duplicate offer');\n      offerIdentities.add(identity);\n      if (\n        !areSameAddress(offer.contractAddress, this.msl.address) ||\n        !areSameAddress(offer.principalAddress, newCurrency) ||\n        amount <= 0n ||\n        amount > offer.principalAmount ||\n        offer.principalAmount <= 0n ||\n        offer.fee < 0n ||\n        offer.fee >= offer.principalAmount ||\n        executionData.duration > offer.duration\n      )\n        throw new Error('Replacement offers must share a supported contract and currency');\n      newPrincipal += amount;\n      originationFee += this._originationFee(offer, amount);\n    }\n    const purchaseBundler =\n      contracts.PurchaseBundler[this.previousMsl.version === '3.1' ? '3.1_PB_V2' : '3.2'];\n    return { loan, newCurrency, newPrincipal, originationFee, purchaseBundler };\n  }\n\n  private _executionData(executionData: EmitLoanArgs, deadline: bigint): EmitLoanArgs {\n    return {\n      ...executionData,\n      principalReceiver: this.wallet.account.address,\n      callbackData: '0x',\n      expirationTime: deadline,\n    };\n  }\n\n  private async _checkRoute(purchaseBundler: Address, newCurrency: Address, maximumInput: bigint) {\n    const [bundlerWhitelisted, mslWhitelisted, paused, pairedMsl, permitAllowance] =\n      await Promise.all([\n        this.bcClient.readContract({\n          address: getContracts(this.wallet.chain).MigratorManager,\n          abi: managerAbi,\n          functionName: 'isWhitelisted',\n          args: [purchaseBundler],\n        }),\n        this.bcClient.readContract({\n          address: getContracts(this.wallet.chain).MigratorManager,\n          abi: managerAbi,\n          functionName: 'isWhitelisted',\n          args: [this.msl.address],\n        }),\n        this.bcClient.readContract({\n          address: purchaseBundler,\n          abi: bundlerReadAbi,\n          functionName: 'paused',\n        }),\n        this.bcClient.readContract({\n          address: purchaseBundler,\n          abi: bundlerReadAbi,\n          functionName: 'getMultiSourceLoanAddress',\n        }),\n        this.bcClient.readContract({\n          address: newCurrency,\n          abi: erc20Abi,\n          functionName: 'allowance',\n          args: [purchaseBundler, getContracts(this.wallet.chain).Permit2],\n        }),\n      ]);\n    if (!bundlerWhitelisted || !mslWhitelisted)\n      throw new Error('Cross-currency route is not activated in the migrator whitelist');\n    if (\n      paused ||\n      !areSameAddress(pairedMsl, this.previousMsl.address) ||\n      permitAllowance < maximumInput\n    ) {\n      throw new Error('Cross-currency Purchase Bundler is unavailable or uninitialized');\n    }\n  }\n\n  private async _checkLenders(executionData: EmitLoanArgs, currency: Address) {\n    const protocolFee = await this.msl.getProtocolFee();\n    const fundsByLender = new Map<Address, bigint>();\n    for (const { offer, amount = offer.principalAmount } of executionData.offerExecution) {\n      const lender = offer.lenderAddress.toLowerCase() as Address;\n      const fee = this._originationFee(offer, amount);\n      const required = amount - fee + mulDivUp(fee, protocolFee.fraction, BPS);\n      fundsByLender.set(lender, (fundsByLender.get(lender) ?? 0n) + required);\n      const [cancelled, used] = await Promise.all([\n        this.msl.contract.read.isOfferCancelled([lender, offer.offerId]),\n        this.msl.contract.read.getUsedCapacity([lender, offer.offerId]),\n      ]);\n      if (cancelled || (offer.capacity > 0n && used + amount > offer.capacity))\n        throw new Error('Replacement offer is cancelled or lacks capacity');\n    }\n    await Promise.all(\n      [...fundsByLender].map(async ([lender, required]) => {\n        const [balance, allowance] = await Promise.all([\n          this.bcClient.readContract({\n            address: currency,\n            abi: erc20Abi,\n            functionName: 'balanceOf',\n            args: [lender],\n          }),\n          this.bcClient.readContract({\n            address: currency,\n            abi: erc20Abi,\n            functionName: 'allowance',\n            args: [lender, this.msl.address],\n          }),\n        ]);\n        if (balance < required || allowance < required)\n          throw new Error('Lender lacks replacement-currency funds or allowance');\n      }),\n    );\n    return protocolFee.fraction;\n  }\n\n  private _originationFee(offer: EmitLoanArgs['offerExecution'][number]['offer'], amount: bigint) {\n    return mulDivUp(offer.fee, amount, offer.principalAmount);\n  }\n}\n", "import { Address, encodeAbiParameters, encodeFunctionData, encodePacked, parseAbi } from 'viem';\n\nimport { BPS } from '@/utils/loan';\nimport { max, mulDivUp } from '@/utils/number';\n\n/** Quote and calldata boundaries use actual basis points, with a denominator of 10,000. */\nexport const CROSS_CURRENCY_DEFAULT_SLIPPAGE_BPS = 100n;\nexport const CROSS_CURRENCY_QUOTE_SECONDS = 120n;\n\nexport const universalRouterExecuteAbi = parseAbi([\n  'function execute(bytes commands, bytes[] inputs, uint256 deadline) payable',\n]);\n\n/** Bounds the transaction by the old loan's maturity and every incoming offer's expiry. */\nexport const crossCurrencyDeadline = ({\n  now,\n  maturity,\n  expirations,\n}: {\n  now: bigint;\n  maturity: bigint;\n  expirations: bigint[];\n}) => {\n  const deadline = [now + CROSS_CURRENCY_QUOTE_SECONDS, maturity - 1n, ...expirations].reduce(\n    (earliest, expiration) => (expiration < earliest ? expiration : earliest),\n  );\n  if (deadline <= now) throw new Error('The loan or replacement offer has expired');\n  return deadline;\n};\n\n/** All arguments and returned budget amounts are denominated in the NEW loan currency. */\nexport const calculateCrossCurrencyBudget = ({\n  quotedInput,\n  slippageBps,\n  premiumBps,\n  netNewPrincipal,\n}: {\n  quotedInput: bigint;\n  slippageBps: bigint;\n  premiumBps: bigint;\n  netNewPrincipal: bigint;\n}) => {\n  if (\n    quotedInput <= 0n ||\n    netNewPrincipal <= 0n ||\n    slippageBps < 0n ||\n    slippageBps > BPS ||\n    premiumBps < 0n ||\n    premiumBps > BPS\n  ) {\n    throw new Error('Invalid cross-currency settlement budget');\n  }\n  const maximumInput = mulDivUp(quotedInput, BPS + slippageBps, BPS);\n  const premium = mulDivUp(maximumInput, premiumBps, BPS);\n  const maximumFlashRepayment = maximumInput + premium;\n  return {\n    maximumInput,\n    premium,\n    maximumFlashRepayment,\n    maximumTopUp: max(0n, maximumFlashRepayment - netNewPrincipal),\n    minimumSurplus: max(0n, netNewPrincipal - maximumFlashRepayment),\n  };\n};\n\n/**\n * Pays old debt and refunds unused NEW currency directly to the borrower.\n *\n * IMPLEMENTATION NOTE: Universal Router exact-output paths are reversed. Commands 0x02,\n * 0x01 and 0x04 move the full budget to the router, pay the old currency to the borrower,\n * and sweep remaining input to the borrower. The swap uses the router's balance, so the\n * PurchaseBundler cannot refund user input to its caller (the migrator).\n * https://developers.uniswap.org/docs/protocols/universal-router/concepts/commands\n */\nexport const buildCrossCurrencySwap = ({\n  borrower,\n  oldCurrency,\n  newCurrency,\n  router,\n  repaymentAmount,\n  maximumInput,\n  deadline,\n}: {\n  borrower: Address;\n  oldCurrency: Address;\n  newCurrency: Address;\n  router: Address;\n  repaymentAmount: bigint;\n  maximumInput: bigint;\n  deadline: bigint;\n}) => {\n  if (maximumInput <= 0n || maximumInput >= 2n ** 160n || repaymentAmount <= 0n) {\n    throw new Error('Invalid swap amount');\n  }\n  const path = encodePacked(['address', 'uint24', 'address'], [oldCurrency, 500, newCurrency]);\n  return encodeFunctionData({\n    abi: universalRouterExecuteAbi,\n    functionName: 'execute',\n    args: [\n      '0x020104',\n      [\n        encodeAbiParameters(\n          [{ type: 'address' }, { type: 'address' }, { type: 'uint160' }],\n          [newCurrency, router, maximumInput],\n        ),\n        encodeAbiParameters(\n          [\n            { type: 'address' },\n            { type: 'uint256' },\n            { type: 'uint256' },\n            { type: 'bytes' },\n            { type: 'bool' },\n          ],\n          [borrower, repaymentAmount, maximumInput, path, false],\n        ),\n        encodeAbiParameters(\n          [{ type: 'address' }, { type: 'address' }, { type: 'uint256' }],\n          [newCurrency, borrower, 0n],\n        ),\n      ],\n      deadline,\n    ],\n  });\n};\n", "import { Address, Hash } from 'viem';\n\nimport { Signature } from '@/blockchain';\nimport {\n  CollectionOfferInput as ApiCollectionOfferInput,\n  CollectionSignedOfferInput,\n  LoanSortInput,\n  LoanStatusType,\n  MarketplaceEnum,\n  OffersSortInput,\n  OfferStatus,\n  RenegotiationOfferInput as ApiRenegotiationInput,\n  SignedRenegotiationOfferInput,\n  SingleNftOfferInput as ApiSingleNftOfferInput,\n  SingleNftSignedOfferInput,\n  TermsFilter,\n  TraitOfferInput as ApiTraitOfferInput,\n  UserFilter,\n} from '@/generated/graphql';\nimport { Optional } from '@/utils/types';\n\ntype MaxSeniorRepaymentArg = {\n  maxSeniorRepayment: Exclude<ApiSingleNftOfferInput['maxSeniorRepayment'], null | undefined>;\n};\n\nexport type SingleNftOfferInput = Optional<\n  ApiSingleNftOfferInput,\n  'borrowerAddress' | 'lenderAddress' | 'signerAddress' | 'offerValidators' | 'contractAddress'\n> &\n  MaxSeniorRepaymentArg;\n\nexport type UnsignedSingleNftOffer = Omit<SingleNftSignedOfferInput, 'signature'> & {\n  nftCollateralAddress: Address;\n  nftCollateralTokenId: bigint;\n};\n\nexport type SingleNftOffer = UnsignedSingleNftOffer &\n  SingleNftSignedOfferInput & {\n    signature: Hash;\n  } & MaxSeniorRepaymentArg;\n\nexport type CollectionOfferInput = Optional<\n  ApiCollectionOfferInput,\n  'borrowerAddress' | 'lenderAddress' | 'signerAddress' | 'offerValidators' | 'contractAddress'\n> &\n  MaxSeniorRepaymentArg;\n\nexport type UnsignedCollectionOffer = Omit<\n  CollectionSignedOfferInput,\n  'signature' | 'collectionId'\n> & {\n  nftCollateralAddress: Address;\n};\n\nexport type CollectionOffer = UnsignedCollectionOffer & {\n  signature: Hash;\n  nftCollateralTokenId: 0n;\n} & MaxSeniorRepaymentArg;\n\n/** Terms of a loan offer on the NFTs of a collection carrying every one of `traitIds`; the API fills the validator. */\nexport type TraitOfferInput = Optional<\n  ApiTraitOfferInput,\n  'borrowerAddress' | 'lenderAddress' | 'signerAddress' | 'offerValidators' | 'contractAddress'\n> &\n  MaxSeniorRepaymentArg;\n\nexport type RenegotiationInput = Optional<\n  ApiRenegotiationInput,\n  'lenderAddress' | 'signerAddress'\n> &\n  (\n    | {\n        trancheIndex: Exclude<ApiRenegotiationInput['trancheIndex'], null | undefined>;\n        targetPrincipal?: undefined;\n      }\n    | {\n        trancheIndex?: undefined;\n        targetPrincipal: Exclude<ApiRenegotiationInput['targetPrincipal'], null | undefined>;\n      }\n  );\n\nexport type UnsignedRenegotiationOffer = Omit<SignedRenegotiationOfferInput, 'signature'>;\n\nexport type RenegotiationOffer = UnsignedRenegotiationOffer & {\n  signature: Signature;\n};\n\n/** @ignore */\nexport const MAX_NUMBER =\n  115792089237316195423570985008687907853269984665640564039457584007913129639935n;\n\nexport type ListOffersProps = {\n  limit?: number;\n  cursor?: string | null;\n  sortBy?: OffersSortInput;\n  filterBy?: {\n    nft?: number;\n    onlySingleNftOffers?: boolean;\n    collection?: number;\n    onlyCollectionOffers?: boolean;\n    borrower?: Address;\n    lenders?: Address[];\n    status?: OfferStatus[];\n    contractAddresses?: Address[];\n  };\n};\n\nexport interface ListLoansProps {\n  limit?: number;\n  cursor?: string | null;\n  borrowers?: Address[];\n  collections?: number[];\n  nfts?: number[];\n  statuses?: LoanStatusType[];\n  sortBy?: LoanSortInput;\n  terms?: TermsFilter;\n  orderByStatuses?: boolean;\n  loansCurrencyAddress?: Address;\n}\n\nexport type ListListingsProps = {\n  collections?: number[];\n  user?: UserFilter;\n  marketPlaces?: MarketplaceEnum[];\n  limit?: number;\n  cursor?: string | null;\n};\n\nexport type NftStandard = 'ERC721' | 'ERC1155';\n\nexport type TransferNftStandard = NftStandard | 'CryptoPunks' | 'OldERC721';\n", "import {\n  Address,\n  decodeFunctionData,\n  erc20Abi,\n  hashTypedData,\n  Hex,\n  parseAbi,\n  TypedDataDefinition,\n  zeroAddress,\n  zeroHash,\n} from 'viem';\nimport { mainnet } from 'viem/chains';\n\nimport { ExecutionDataV7, isNativeCurrency } from '@/blockchain';\nimport { MslV6 } from '@/clients/contracts/MslV6';\nimport { getContracts, getCurrencies } from '@/deploys';\nimport { multiSourceLoanAbi } from '@/generated/blockchain/v7';\nimport { BnplOrderInput, BuyWithLoanListingQuery } from '@/generated/graphql';\nimport type { Gondi } from '@/gondi';\nimport {\n  assertCreditPurchaseExecution,\n  assertCreditPurchaseRoute,\n  callbackPurchaseCurrency,\n  CreditPurchaseQuote,\n  decodePurchaseCallback,\n  quotePurchaseFunding,\n} from '@/utils/creditPurchase';\nimport { crossCurrencyDeadline } from '@/utils/crossCurrencyRenegotiation';\nimport { BPS } from '@/utils/loan';\nimport { mulDivUp } from '@/utils/number';\nimport { assertPurchaseMarketplace } from '@/utils/purchaseMarketplace';\nimport { areSameAddress } from '@/utils/string';\n\nconst routeAbi = parseAbi([\n  'function paused() view returns (bool)',\n  'function getMultiSourceLoanAddress() view returns (address)',\n  'function getTaxes(address) view returns ((uint128 buyTax,uint128 sellTax))',\n  'function FLASHLOAN_PREMIUM_TOTAL() view returns (uint128)',\n]);\nconst managerAbi = parseAbi(['function isWhitelisted(address,bytes4) view returns (bool)']);\ntype Context = Pick<\n  Gondi,\n  'wallet' | 'bcClient' | 'apiClient' | 'contracts' | 'quoteCreditPurchase'\n>;\ntype PurchaseInput = Parameters<Gondi['buyNowPayLater']>[0];\ntype Listing = BuyWithLoanListingQuery['listOrdersV2']['edges'][number]['node'];\ntype SellerListing = Extract<Listing, { __typename?: 'SellAndRepayOrder' }>;\ntype PurchaseCallback = ReturnType<typeof decodePurchaseCallback>;\n\n/** Selected buyer financing; quote preparation never requests a wallet signature. */\nexport type BuyWithLoanInput = Pick<\n  PurchaseInput,\n  'amounts' | 'contractAddress' | 'loanDuration' | 'offers' | 'tokenId'\n> & {\n  orderId: number;\n  minimumInitialPayment?: bigint;\n  sellAndRepaySwapData?: PurchaseInput['sellAndRepaySwapData'];\n  slippageBps?: bigint;\n};\n\ntype QuoteBase = {\n  orderId: number;\n  price: bigint;\n  totalPrice: bigint;\n  buyer: Address;\n  buyerBundler: Address;\n  buyerLoanContract: Address;\n  loanCurrency: Address;\n  purchaseCurrency: Address;\n  netPrincipal: bigint;\n  initialPayment: bigint;\n  inputAmount: bigint;\n  deadline: bigint;\n  module: Address;\n  execution: ExecutionDataV7;\n  approvalCaps: readonly { currency: Address; amount: bigint }[];\n  extraSeaportData?: Hex;\n  loanSwapData: Hex;\n  repaymentSwapData: Hex;\n};\n/** The quote fields fixed before a route is chosen. */\ntype QuoteFields = Omit<\n  QuoteBase,\n  | 'initialPayment'\n  | 'inputAmount'\n  | 'module'\n  | 'execution'\n  | 'approvalCaps'\n  | 'extraSeaportData'\n  | 'loanSwapData'\n>;\ntype SellerQuote = {\n  sellerContract: Address;\n  loanId: bigint;\n  loanHash: Hex;\n  repaymentCalldata: Hex;\n};\n\n/** A short-lived, token-bounded authorization for one exact listing and buyer execution. */\nexport type BuyWithLoanQuote = Readonly<\n  QuoteBase &\n    (\n      | { route: 'ordinary' }\n      | (SellerQuote & { route: 'flash'; premiumBps: bigint })\n      | (SellerQuote & { route: 'nested'; creditPurchaseQuote: CreditPurchaseQuote })\n    )\n>;\n\ntype UnpreparedQuote = BuyWithLoanQuote extends infer Quote\n  ? Quote extends BuyWithLoanQuote\n    ? Omit<Quote, 'execution' | 'approvalCaps'>\n    : never\n  : never;\n\n/** Caps every collection from the buyer, including zeroing unquoted flash fallback allowances. */\nexport const buyWithLoanApprovals = (\n  quote: BuyWithLoanQuote,\n): { currency: Address; amount: bigint }[] => {\n  if (quote.route !== 'flash')\n    return isNativeCurrency(quote.purchaseCurrency)\n      ? []\n      : [{ currency: quote.purchaseCurrency, amount: quote.initialPayment }];\n  const native = isNativeCurrency(quote.purchaseCurrency);\n  const currency = native ? getCurrencies(mainnet).WETH_ADDRESS : quote.purchaseCurrency;\n  const flashPrincipal = native ? quote.price - quote.initialPayment : quote.price;\n  const repayment = flashPrincipal + mulDivUp(flashPrincipal, quote.premiumBps, BPS);\n  return areSameAddress(currency, quote.loanCurrency)\n    ? [{ currency, amount: repayment }]\n    : [\n        { currency: quote.loanCurrency, amount: quote.inputAmount },\n        { currency, amount: native ? 0n : quote.initialPayment },\n      ];\n};\n\n/** Resolves the canonical listing and prepares a bounded unsigned execution before confirmation. */\nexport const quoteBuyWithLoan = async (\n  context: Context,\n  input: BuyWithLoanInput,\n): Promise<BuyWithLoanQuote> => {\n  const deployments = getContracts(context.wallet.chain);\n  const currencies = getCurrencies(context.wallet.chain);\n  if (context.wallet.chain.id !== 1)\n    throw new Error('Bounded purchase financing requires Ethereum');\n  const loanCurrency = buyWithLoanCurrency(context, input);\n  const listing = await buyWithLoanListing(context, input.orderId);\n  if (\n    !('nft' in listing) ||\n    !listing.nft.collection ||\n    listing.nft.tokenId !== input.tokenId ||\n    !areSameAddress(listing.nft.collection.contractData.contractAddress, input.contractAddress) ||\n    listing.nft.collection.contractData.blockchain.toLowerCase() !== 'ethereum'\n  )\n    throw new Error('Purchase collateral changed; refresh the quote');\n  const purchaseCurrency = isNativeCurrency(listing.currencyAddress)\n    ? zeroAddress\n    : listing.currencyAddress;\n  if (\n    ![zeroAddress, currencies.USDC_ADDRESS, currencies.WETH_ADDRESS].some((currency) =>\n      areSameAddress(currency, purchaseCurrency),\n    )\n  )\n    throw new Error('Unsupported listing currency');\n  const netPrincipal = input.amounts.reduce(\n    (principal, amount, index) =>\n      principal +\n      amount -\n      mulDivUp(input.offers[index].fee, amount, input.offers[index].principalAmount),\n    0n,\n  );\n  const block = await context.bcClient.getBlock();\n  const expiration = BigInt(Math.floor(listing.expiration.getTime() / 1000));\n  const offerExpirations = [expiration, ...input.offers.map((offer) => offer.expirationTime)];\n  const seller = listing.__typename === 'SellAndRepayOrder' ? listing : undefined;\n  const deadline = crossCurrencyDeadline({\n    now: block.timestamp,\n    maturity: seller\n      ? BigInt(Math.floor(seller.loan.startTime.getTime() / 1000)) + seller.loan.duration\n      : expiration,\n    expirations: offerExpirations,\n  });\n  const totalPrice =\n    listing.price +\n    (seller\n      ? 0n\n      : listing.platformFees.reduce((fees, fee) => fees + (listing.price * fee.bps) / BPS, 0n));\n  const buyerBundler = deployments.PurchaseBundler['3.1_PB_V2'];\n  const base: QuoteFields = {\n    orderId: input.orderId,\n    price: listing.price,\n    totalPrice,\n    buyer: context.wallet.account.address,\n    buyerBundler,\n    buyerLoanContract: deployments.MultiSourceLoan['3.1'],\n    loanCurrency,\n    purchaseCurrency,\n    netPrincipal,\n    deadline,\n    repaymentSwapData: input.sellAndRepaySwapData ?? ('0x' as Hex),\n  };\n  let quote: UnpreparedQuote;\n  if (seller && areSameAddress(seller.loan.address, deployments.MultiSourceLoan['3.2'])) {\n    const creditPurchaseQuote = await context.quoteCreditPurchase({\n      orderId: input.orderId,\n      price: listing.price,\n      sellerContract: seller.loan.address,\n      repaymentCalldata: seller.repaymentCalldata,\n      repaymentSwapData: input.sellAndRepaySwapData ?? undefined,\n      loanCurrency,\n      netPrincipal,\n      minimumInitialPayment: input.minimumInitialPayment,\n      slippageBps: input.slippageBps,\n      offerExpirations,\n    });\n    quote = {\n      ...base,\n      route: 'nested',\n      ...sellerQuote(seller),\n      loanHash: creditPurchaseQuote.loanHash,\n      creditPurchaseQuote,\n      deadline: creditPurchaseQuote.deadline,\n      initialPayment: creditPurchaseQuote.initialPayment,\n      inputAmount: creditPurchaseQuote.inputAmount,\n      loanSwapData: creditPurchaseQuote.loanSwapData,\n      module: creditPurchaseQuote.sellerBundler,\n    };\n  } else if (seller) quote = await quoteFlashRoute(context, input, seller, base);\n  else\n    quote = {\n      ...base,\n      ...(await quoteRouteFunding(context, input, base, 'ordinary', 0n)),\n      route: 'ordinary',\n      module: listing.marketPlaceAddress,\n    };\n  const orderInput = buyWithLoanOrderInput(input, quote);\n  const typed = await unsignedBuyWithLoanExecution(context, orderInput);\n  const callbackData = (typed.message as ExecutionDataV7).callbackData;\n  if (quote.route === 'ordinary') {\n    const callback = decodePurchaseCallback(callbackData);\n    assertOrdinaryPurchaseCallback(quote, callback);\n    const mustBeOwner = assertPurchaseMarketplace(\n      listing,\n      quote,\n      input,\n      callback.reservoirExecutionInfo.data,\n    );\n    if (callback.contractMustBeOwner !== mustBeOwner)\n      throw new Error('Marketplace custody authorization changed');\n  }\n  const execution = buyWithLoanExecution(\n    context,\n    input,\n    quote,\n    quote.route === 'nested'\n      ? quote.creditPurchaseQuote.callbackData\n      : quote.route === 'flash'\n        ? '0x'\n        : callbackData,\n  );\n  assertBuyWithLoanTypedData(context, execution, typed);\n  const result = Object.freeze({\n    ...quote,\n    execution,\n    approvalCaps: Object.freeze(buyWithLoanApprovals({ ...quote, execution } as BuyWithLoanQuote)),\n    extraSeaportData: orderInput.extraSeaportData ?? undefined,\n  }) as BuyWithLoanQuote;\n  await assertBuyWithLoanRoute(context, result);\n  return result;\n};\n\n/** Parses one supported, homogeneous set of signed buyer offers. */\nconst buyWithLoanCurrency = (context: Context, input: BuyWithLoanInput) => {\n  const deployments = getContracts(context.wallet.chain);\n  const currencies = getCurrencies(context.wallet.chain);\n  if (\n    !input.offers.length ||\n    input.offers.length > 50 ||\n    input.offers.length !== input.amounts.length ||\n    new Set(input.offers.map((offer) => offer.id)).size !== input.offers.length ||\n    input.loanDuration <= 0n ||\n    input.offers.some(\n      (offer, index) =>\n        !areSameAddress(offer.contractAddress, deployments.MultiSourceLoan['3.1']) ||\n        !areSameAddress(offer.principalAddress, input.offers[0].principalAddress) ||\n        input.amounts[index] <= 0n ||\n        input.amounts[index] > offer.principalAmount ||\n        input.loanDuration > offer.duration ||\n        !offer.signature ||\n        !offer.lenderAddress,\n    )\n  )\n    throw new Error('Purchase requires signed, homogeneous and available v3.1 buyer offers');\n  const loanCurrency = input.offers[0].principalAddress;\n  if (\n    ![currencies.USDC_ADDRESS, currencies.WETH_ADDRESS].some((currency) =>\n      areSameAddress(currency, loanCurrency),\n    )\n  )\n    throw new Error('Unsupported buyer loan currency');\n  return loanCurrency;\n};\n\n/** Quotes the buyer's loan-to-purchase conversion for the ordinary or flash route. */\nconst quoteRouteFunding = (\n  context: Context,\n  input: BuyWithLoanInput,\n  base: QuoteFields,\n  route: 'ordinary' | 'flash',\n  premiumBps: bigint,\n) =>\n  quotePurchaseFunding({\n    client: context.bcClient,\n    loanCurrency: base.loanCurrency,\n    purchaseCurrency: base.purchaseCurrency,\n    price: base.totalPrice,\n    netPrincipal: base.netPrincipal,\n    deadline: base.deadline,\n    slippageBps: input.slippageBps ?? 100n,\n    minimumInitialPayment: input.minimumInitialPayment ?? 0n,\n    route,\n    premiumBps,\n  });\n\n/** Quotes an Aave flash-loan purchase of a v3.1 seller loan after checking its signed repayment. */\nconst quoteFlashRoute = async (\n  context: Context,\n  input: BuyWithLoanInput,\n  seller: SellerListing,\n  base: QuoteFields,\n): Promise<UnpreparedQuote> => {\n  const deployments = getContracts(context.wallet.chain);\n  const currencies = getCurrencies(context.wallet.chain);\n  if (!areSameAddress(seller.loan.address, deployments.MultiSourceLoan['3.1']))\n    throw new Error('Purchase requires a v3.1 or v3.2 seller loan');\n  const premiumBps = await context.bcClient.readContract({\n    address: deployments.Aave,\n    abi: routeAbi,\n    functionName: 'FLASHLOAN_PREMIUM_TOTAL',\n  });\n  const funding = await quoteRouteFunding(context, input, base, 'flash', premiumBps);\n  const sellerMsl = context.contracts.Msl(seller.loan.address);\n  if (!(sellerMsl instanceof MslV6)) throw new Error('Unsupported seller contract');\n  const repayment = sellerMsl.decodeRepaymentCalldata(seller.repaymentCalldata);\n  if (\n    repayment.data.loanId !== BigInt(seller.loan.loanId) ||\n    !areSameAddress(repayment.loan.nftCollateralAddress, input.contractAddress) ||\n    repayment.loan.nftCollateralTokenId !== input.tokenId\n  )\n    throw new Error('Seller repayment collateral changed');\n  const callback = decodePurchaseCallback(repayment.data.callbackData);\n  if (\n    !areSameAddress(callbackPurchaseCurrency(callback), base.purchaseCurrency) ||\n    callback.amount <= 0n ||\n    callback.amount > base.price ||\n    (!areSameAddress(\n      repayment.loan.principalAddress,\n      isNativeCurrency(base.purchaseCurrency) ? currencies.WETH_ADDRESS : base.purchaseCurrency,\n    ) &&\n      base.repaymentSwapData === '0x')\n  )\n    throw new Error('Seller repayment terms or conversion changed');\n  const loanHash = await sellerMsl.contract.read.getLoanHash([repayment.data.loanId]);\n  if (loanHash === zeroHash) throw new Error('Seller loan is no longer active');\n  return {\n    ...base,\n    ...funding,\n    route: 'flash',\n    ...sellerQuote(seller),\n    loanHash,\n    premiumBps,\n    module: callback.reservoirExecutionInfo.module,\n  };\n};\n\n/** Refuses inactive or substituted listings using one bounded, exact-ID query. */\nconst buyWithLoanListing = async (context: Context, orderId: number) => {\n  const response = await context.apiClient.api.buyWithLoanListing(\n    {\n      orderId,\n      buyer: context.wallet.account.address,\n    },\n    { fetchPolicy: 'no-cache' },\n  );\n  const listing = response.listOrdersV2.edges[0]?.node;\n  if (\n    !listing ||\n    Number(listing.id) !== orderId ||\n    !listing.isAsk ||\n    !['active', 'orderstatus.active'].includes(listing.status.toLowerCase()) ||\n    (!areSameAddress(listing.taker, zeroAddress) &&\n      !areSameAddress(listing.taker, context.wallet.account.address))\n  )\n    throw new Error('The selected listing is no longer available');\n  return listing;\n};\n\n/** Carries the signed seller authorization while its active hash is checked separately. */\nconst sellerQuote = (seller: SellerListing) => ({\n  sellerContract: seller.loan.address,\n  loanId: BigInt(seller.loan.loanId),\n  repaymentCalldata: seller.repaymentCalldata,\n});\n\n/** Builds the opt-in publication request without a wallet authorization. */\nconst buyWithLoanOrderInput = (\n  input: BuyWithLoanInput,\n  quote: UnpreparedQuote,\n): BnplOrderInput => ({\n  amounts: input.amounts,\n  contractAddress: input.contractAddress,\n  tokenId: input.tokenId,\n  loanDuration: input.loanDuration,\n  offerIds: input.offers.map((offer) => offer.id),\n  creditPurchaseExecution: {\n    orderId: quote.orderId,\n    price: quote.price,\n    totalPrice: quote.totalPrice,\n    initialPayment: quote.initialPayment,\n    loanSwapData: quote.loanSwapData,\n    repaymentSwapData: quote.repaymentSwapData,\n    expirationTime: quote.deadline,\n  },\n});\n\n/** Preparation may refresh server-side marketplace extra data, but never saves a signed buyer order. */\nconst unsignedBuyWithLoanExecution = async (\n  context: Context,\n  orderInput: BnplOrderInput,\n): Promise<TypedDataDefinition> => {\n  for (let attempt = 0; attempt < 3; attempt++) {\n    const response = await context.apiClient.publishBuyNowPayLaterOrder(orderInput);\n    if (response.__typename === 'ExtraSeaportData')\n      orderInput.extraSeaportData = response.extraData;\n    else if (response.__typename === 'SignatureRequest' && response.key === 'emitSignature')\n      return response.typedData as TypedDataDefinition;\n    else throw new Error('Expected an unsigned buyer execution during quote preparation');\n  }\n  throw new Error('Marketplace preparation did not stabilize; refresh the quote');\n};\n\n/** Reconstructs all buyer-loan fields independently from API typed data. */\nconst buyWithLoanExecution = (\n  context: Context,\n  input: BuyWithLoanInput,\n  quote: UnpreparedQuote,\n  callbackData: Hex,\n): ExecutionDataV7 => ({\n  offerExecution: input.offers.map((offer, index) => {\n    if (!offer.signature || !offer.lenderAddress) throw new Error('Signed buyer offer required');\n    return {\n      offer: {\n        ...offer,\n        lender: offer.lenderAddress,\n        nftCollateralAddress: buyWithLoanCollateral(context, offer.nftCollateralAddress),\n        validators: offer.offerValidators,\n        maxSeniorRepayment: offer.maxSeniorRepayment ?? 0n,\n      },\n      amount: input.amounts[index],\n      lenderOfferSignature: offer.signature,\n    };\n  }),\n  loanId: 0n,\n  nftCollateralAddress: buyWithLoanCollateral(context, input.contractAddress),\n  tokenId: input.tokenId,\n  duration: input.loanDuration,\n  expirationTime: quote.deadline,\n  principalReceiver: quote.route === 'flash' ? quote.buyer : quote.buyerBundler,\n  callbackData,\n});\n\n/** Verifies the complete EIP-712 domain, types and message against the SDK's canonical authorization. */\nconst assertBuyWithLoanTypedData = (\n  context: Context,\n  execution: ExecutionDataV7,\n  received: TypedDataDefinition,\n) => {\n  const buyerMsl = context.contracts.Msl(getContracts(context.wallet.chain).MultiSourceLoan['3.1']);\n  if (!(buyerMsl instanceof MslV6)) throw new Error('Unsupported buyer contract');\n  assertCreditPurchaseExecution(execution, received.message);\n  if (hashTypedData(buyerMsl.getExecutionTypedData(execution)) !== hashTypedData(received))\n    throw new Error('API authorization differs from the confirmed purchase quote');\n};\n\n/** Requires the marketplace callback to honor the separately quoted listing and loan units. */\nconst assertOrdinaryPurchaseCallback = (quote: UnpreparedQuote, callback: PurchaseCallback) => {\n  if (\n    !areSameAddress(callback.reservoirExecutionInfo.module, quote.module) ||\n    !areSameAddress(callbackPurchaseCurrency(callback), quote.purchaseCurrency) ||\n    callback.amount !== quote.initialPayment ||\n    callback.swapData !== quote.loanSwapData ||\n    callback.swapValue !== 0n ||\n    callback.maxSlippage !== 0n ||\n    callback.reservoirExecutionInfo.value > quote.totalPrice ||\n    (!isNativeCurrency(quote.purchaseCurrency) && callback.reservoirExecutionInfo.value !== 0n)\n  )\n    throw new Error('Marketplace execution differs from the quoted spending limits');\n};\n\n/** Checks activation, currency permissions, seller state and the live flash premium again. */\nexport const assertBuyWithLoanRoute = async (context: Context, quote: BuyWithLoanQuote) => {\n  const deployments = getContracts(context.wallet.chain);\n  const [block, paused, pair, taxes] = await Promise.all([\n    context.bcClient.getBlock(),\n    context.bcClient.readContract({\n      address: quote.buyerBundler,\n      abi: routeAbi,\n      functionName: 'paused',\n    }),\n    context.bcClient.readContract({\n      address: quote.buyerBundler,\n      abi: routeAbi,\n      functionName: 'getMultiSourceLoanAddress',\n    }),\n    context.bcClient.readContract({\n      address: quote.buyerBundler,\n      abi: routeAbi,\n      functionName: 'getTaxes',\n      args: [quote.module],\n    }),\n  ]);\n  if (\n    context.wallet.chain.id !== 1 ||\n    block.timestamp >= quote.deadline ||\n    paused ||\n    !areSameAddress(quote.buyer, context.wallet.account.address) ||\n    !areSameAddress(quote.buyerBundler, deployments.PurchaseBundler['3.1_PB_V2']) ||\n    !areSameAddress(pair, deployments.MultiSourceLoan['3.1']) ||\n    taxes.buyTax !== 0n ||\n    taxes.sellTax !== 0n\n  )\n    throw new Error('Purchase route changed or expired; confirm a fresh quote');\n  if (quote.route === 'nested')\n    await assertCreditPurchaseRoute(context.bcClient, quote.creditPurchaseQuote);\n  else {\n    const callback = decodePurchaseCallback(\n      quote.route === 'ordinary'\n        ? quote.execution.callbackData\n        : (context.contracts.Msl(quote.sellerContract) as MslV6).decodeRepaymentCalldata(\n            quote.repaymentCalldata,\n          ).data.callbackData,\n    );\n    const whitelisted = await context.bcClient.readContract({\n      address: deployments.MethodManager,\n      abi: managerAbi,\n      functionName: 'isWhitelisted',\n      args: [quote.module, callback.reservoirExecutionInfo.data.slice(0, 10) as Hex],\n    });\n    if (!whitelisted) throw new Error('Purchase marketplace method is not enabled');\n    if (quote.loanSwapData !== '0x') {\n      const allowance = await context.bcClient.readContract({\n        address: quote.loanCurrency,\n        abi: erc20Abi,\n        functionName: 'allowance',\n        args: [quote.buyerBundler, deployments.Permit2],\n      });\n      if (allowance < quote.inputAmount)\n        throw new Error('Buyer bundler currency approval is not initialized');\n    }\n  }\n  if (quote.route !== 'ordinary') {\n    const seller = context.contracts.Msl(quote.sellerContract);\n    if (\n      !(seller instanceof MslV6) ||\n      (await seller.contract.read.getLoanHash([quote.loanId])) !== quote.loanHash\n    )\n      throw new Error('Seller loan changed; confirm a fresh quote');\n    if (\n      quote.route === 'flash' &&\n      (await context.bcClient.readContract({\n        address: deployments.Aave,\n        abi: routeAbi,\n        functionName: 'FLASHLOAN_PREMIUM_TOTAL',\n      })) !== quote.premiumBps\n    )\n      throw new Error('Flash-loan premium changed; confirm a fresh quote');\n  }\n};\n\n/** Publishes only the confirmed authorization and broadcasts through the existing simulated route. */\nexport const buyWithLoan = async (\n  context: Context,\n  input: PurchaseInput & { buyWithLoanQuote: BuyWithLoanQuote },\n) => {\n  const quote = input.buyWithLoanQuote;\n  const expected = buyWithLoanExecution(\n    context,\n    { ...input, orderId: quote.orderId },\n    quote,\n    quote.execution.callbackData,\n  );\n  assertCreditPurchaseExecution(quote.execution, expected);\n  await assertBuyWithLoanRoute(context, quote);\n  await assertBuyWithLoanApprovals(context, quote);\n  const orderInput = buyWithLoanOrderInput({ ...input, orderId: quote.orderId }, quote);\n  orderInput.extraSeaportData = quote.extraSeaportData;\n  const typed = await unsignedBuyWithLoanExecution(context, orderInput);\n  assertBuyWithLoanTypedData(context, expected, typed);\n  await assertBuyWithLoanRoute(context, quote);\n  const buyerMsl = context.contracts.Msl(quote.buyerLoanContract);\n  if (!(buyerMsl instanceof MslV6)) throw new Error('Unsupported buyer contract');\n  orderInput.emitSignature = await buyerMsl.signExecutionData({ structToSign: expected });\n  const response = await context.apiClient.publishBuyNowPayLaterOrder(orderInput);\n  if (\n    response.__typename !== 'BuyNowPayLaterOrder' ||\n    response.price !== quote.totalPrice ||\n    !areSameAddress(response.currencyAddress, quote.purchaseCurrency)\n  )\n    throw new Error('Published purchase terms changed');\n  const decoded = decodeFunctionData({ abi: multiSourceLoanAbi, data: response.emitCalldata });\n  if (decoded.functionName !== 'emitLoan' || !areSameAddress(decoded.args[0].borrower, quote.buyer))\n    throw new Error('Unexpected buyer execution');\n  assertCreditPurchaseExecution(expected, decoded.args[0].executionData);\n  await assertBuyWithLoanRoute(context, quote);\n  await assertBuyWithLoanApprovals(context, quote);\n  const bundler = context.contracts.PurchaseBundler(quote.buyerBundler, quote.buyerLoanContract);\n  if (quote.route === 'flash')\n    return bundler.executeSellWithLoan({\n      repaymentCalldata: quote.repaymentCalldata,\n      emitCalldata: response.emitCalldata,\n      price: quote.price,\n      initialPayment: quote.initialPayment,\n      executeSellSwapData: quote.repaymentSwapData === '0x' ? undefined : quote.repaymentSwapData,\n      repayFlashLoanSwapParams:\n        quote.loanSwapData === '0x'\n          ? undefined\n          : {\n              inputCurrency: quote.loanCurrency,\n              inputAmount: quote.inputAmount,\n              swapData: quote.loanSwapData,\n            },\n    });\n  return bundler.buy({\n    emitCalldata: response.emitCalldata,\n    value: isNativeCurrency(quote.purchaseCurrency) ? quote.initialPayment : 0n,\n  });\n};\n\n/** Refuses allowances that exceed or no longer cover the quoted spending caps. */\nconst assertBuyWithLoanApprovals = async (context: Context, quote: BuyWithLoanQuote) => {\n  for (const approval of buyWithLoanApprovals(quote)) {\n    const allowance = await context.bcClient.readContract({\n      address: approval.currency,\n      abi: erc20Abi,\n      functionName: 'allowance',\n      args: [quote.buyer, quote.buyerBundler],\n    });\n    if (allowance !== approval.amount)\n      throw new Error('Approve exactly the quoted token spending caps to the buyer bundler');\n  }\n};\n\n/** The deployed Ethereum bundler escrows CryptoPunks in the ERC721 wrapper. */\nconst buyWithLoanCollateral = (context: Context, address: Address) =>\n  areSameAddress(address, getContracts(context.wallet.chain).Cryptopunks)\n    ? ('0x000000000000003607fce1ac9e043a86675c5c2f' as Address)\n    : address;\n", "import {\n  Address,\n  decodeAbiParameters,\n  encodeAbiParameters,\n  encodeFunctionData,\n  encodePacked,\n  erc20Abi,\n  getAbiItem,\n  Hex,\n  keccak256,\n  parseAbi,\n  toFunctionSelector,\n  zeroAddress,\n  zeroHash,\n} from 'viem';\nimport { mainnet } from 'viem/chains';\n\nimport { ExecutionDataV7, isNativeCurrency } from '@/blockchain';\nimport { GondiPublicClient, Wallet } from '@/clients/contracts';\nimport { MslV6 } from '@/clients/contracts/MslV6';\nimport { PurchaseBundlerV2 } from '@/clients/contracts/PurchaseBundlerV2';\nimport { getContracts, getCurrencies } from '@/deploys';\nimport { multiSourceLoanAbi, purchaseBundlerV2ABI } from '@/generated/blockchain/v7';\nimport {\n  crossCurrencyDeadline,\n  universalRouterExecuteAbi,\n} from '@/utils/crossCurrencyRenegotiation';\nimport { BPS } from '@/utils/loan';\nimport { min, mulDivUp } from '@/utils/number';\nimport { areSameAddress } from '@/utils/string';\n\nconst executeSellSelector = toFunctionSelector(\n  getAbiItem({ abi: purchaseBundlerV2ABI, name: 'executeSell' }),\n);\nconst managerAbi = parseAbi(['function isWhitelisted(address,bytes4) view returns (bool)']);\nconst quoterAbi = parseAbi([\n  'function quoteExactOutput(bytes,uint256) returns (uint256,uint160[],uint32[],uint256)',\n  'function quoteExactInput(bytes,uint256) returns (uint256,uint160[],uint32[],uint256)',\n]);\nconst readAbi = parseAbi([\n  'function paused() view returns (bool)',\n  'function getMultiSourceLoanAddress() view returns (address)',\n  'function getTaxes(address) view returns ((uint128 buyTax,uint128 sellTax))',\n]);\n\n/** Fixed listing-currency contribution and signed settlement for v3.1 credit against a v3.2 seller. */\nexport type CreditPurchaseQuote = Readonly<{\n  orderId: number;\n  price: bigint;\n  buyer: Address;\n  sellerContract: Address;\n  sellerBundler: Address;\n  buyerBundler: Address;\n  loanCurrency: Address;\n  purchaseCurrency: Address;\n  netPrincipal: bigint;\n  inputAmount: bigint;\n  initialPayment: bigint;\n  deadline: bigint;\n  loanId: bigint;\n  nftCollateralAddress: Address;\n  tokenId: bigint;\n  loanHash: Hex;\n  repaymentHash: Hex;\n  repaymentSwapData: Hex;\n  loanSwapData: Hex;\n  callbackData: Hex;\n}>;\n\n/** Decodes the purchase bundler's `executionInfo` callback carried by an execution or a seller repayment. */\nexport const decodePurchaseCallback = (data: Hex) =>\n  decodeAbiParameters([PurchaseBundlerV2.EXECUTION_INFO], data)[0];\n\n/** The callback's purchase currency, with every native spelling (including the ETH sentinel) as `zeroAddress`. */\nexport const callbackPurchaseCurrency = (\n  callback: ReturnType<typeof decodePurchaseCallback>,\n): Address =>\n  isNativeCurrency(callback.purchaseCurrency) ||\n  areSameAddress(callback.purchaseCurrency, PurchaseBundlerV2.ETH_SENTINEL)\n    ? zeroAddress\n    : callback.purchaseCurrency;\n\n/** Compares every ABI field against the confirmed terms before signing or submitting an API execution. */\nexport const assertCreditPurchaseExecution = (expected: ExecutionDataV7, received: unknown) => {\n  const parameter = getAbiItem({ abi: multiSourceLoanAbi, name: 'emitLoan' }).inputs[0]\n    .components[0];\n  try {\n    if (\n      encodeAbiParameters([parameter], [expected]) ===\n      encodeAbiParameters([parameter], [received as ExecutionDataV7])\n    )\n      return;\n  } catch {\n    throw new Error('API execution differs from the confirmed purchase quote');\n  }\n  throw new Error('API execution differs from the confirmed purchase quote');\n};\n\n/** Rechecks activation, zero additional taxes and router funding before buyer signing. */\nexport const assertCreditPurchaseRoute = async (\n  client: GondiPublicClient,\n  quote: Pick<\n    CreditPurchaseQuote,\n    'buyerBundler' | 'sellerBundler' | 'loanCurrency' | 'loanSwapData' | 'netPrincipal'\n  >,\n) => {\n  const [whitelisted, taxes, allowance] = await Promise.all([\n    client.readContract({\n      address: getContracts(mainnet).MethodManager,\n      abi: managerAbi,\n      functionName: 'isWhitelisted',\n      args: [quote.sellerBundler, executeSellSelector],\n    }),\n    client.readContract({\n      address: quote.buyerBundler,\n      abi: readAbi,\n      functionName: 'getTaxes',\n      args: [quote.sellerBundler],\n    }),\n    quote.loanSwapData === '0x'\n      ? Promise.resolve(quote.netPrincipal)\n      : client.readContract({\n          address: quote.loanCurrency,\n          abi: erc20Abi,\n          functionName: 'allowance',\n          args: [quote.buyerBundler, getContracts(mainnet).Permit2],\n        }),\n  ]);\n  if (!whitelisted) throw new Error('The nested credit purchase route is not enabled');\n  if (taxes.buyTax !== 0n || taxes.sellTax !== 0n)\n    throw new Error('Nested purchase taxes changed; a new fee quote is required');\n  if (allowance < quote.netPrincipal)\n    throw new Error('The buyer bundler needs its currency approval initialized before swapping');\n};\n\nexport type CreditPurchaseInput = {\n  orderId: number;\n  price: bigint;\n  sellerContract: Address;\n  repaymentCalldata: Hex;\n  repaymentSwapData?: Hex;\n  loanCurrency: Address;\n  netPrincipal: bigint;\n  minimumInitialPayment?: bigint;\n  offerExpirations: bigint[];\n  slippageBps?: bigint;\n};\n\n/**\n * Funds the purchase bundler in listing currency, with capped spend or minimum output.\n *\n * IMPLEMENTATION NOTE: Universal Router's address 0x1 is its caller, the buyer bundler.\n * Exact-output paths are reversed; native output unwraps WETH to that caller.\n * https://developers.uniswap.org/docs/protocols/universal-router/technical-reference\n */\nexport const buildCreditPurchaseSwap = ({\n  loanCurrency,\n  purchaseCurrency,\n  amount,\n  limit,\n  exactInput,\n  deadline,\n}: {\n  loanCurrency: Address;\n  purchaseCurrency: Address;\n  amount: bigint;\n  limit: bigint;\n  exactInput: boolean;\n  deadline: bigint;\n}): Hex => {\n  const caller = '0x0000000000000000000000000000000000000001';\n  const router = '0x0000000000000000000000000000000000000002';\n  const weth = getCurrencies(mainnet).WETH_ADDRESS;\n  const native = isNativeCurrency(purchaseCurrency);\n  const outputCurrency = native ? weth : purchaseCurrency;\n  if (areSameAddress(loanCurrency, outputCurrency)) {\n    return native\n      ? encodeFunctionData({\n          abi: universalRouterExecuteAbi,\n          functionName: 'execute',\n          args: [\n            '0x020c',\n            [\n              encodeAbiParameters(\n                [{ type: 'address' }, { type: 'address' }, { type: 'uint160' }],\n                [weth, router, amount],\n              ),\n              encodeAbiParameters([{ type: 'address' }, { type: 'uint256' }], [caller, amount]),\n            ],\n            deadline,\n          ],\n        })\n      : '0x';\n  }\n  const path = encodePacked(\n    ['address', 'uint24', 'address'],\n    exactInput ? [loanCurrency, 500, outputCurrency] : [outputCurrency, 500, loanCurrency],\n  );\n  const inputs = [\n    encodeAbiParameters(\n      [\n        { type: 'address' },\n        { type: 'uint256' },\n        { type: 'uint256' },\n        { type: 'bytes' },\n        { type: 'bool' },\n      ],\n      [\n        native ? router : caller,\n        exactInput ? limit : amount,\n        exactInput ? amount : limit,\n        path,\n        true,\n      ],\n    ),\n  ];\n  if (native)\n    inputs.push(encodeAbiParameters([{ type: 'address' }, { type: 'uint256' }], [caller, amount]));\n  return encodeFunctionData({\n    abi: universalRouterExecuteAbi,\n    functionName: 'execute',\n    args: [`${exactInput ? '0x00' : '0x01'}${native ? '0c' : ''}` as Hex, inputs, deadline],\n  });\n};\n\n/** Quotes gross buyer funding; signed seller callbacks record net proceeds after marketplace fees. */\nexport const quoteCreditPurchase = async ({\n  input,\n  wallet,\n  client,\n  sellerMsl,\n}: {\n  input: CreditPurchaseInput;\n  wallet: Wallet;\n  client: GondiPublicClient;\n  sellerMsl: MslV6;\n}): Promise<CreditPurchaseQuote> => {\n  const deployments = getContracts(mainnet);\n  const currencies = getCurrencies(mainnet);\n  if (\n    wallet.chain.id !== 1 ||\n    !areSameAddress(input.sellerContract, deployments.MultiSourceLoan['3.2'])\n  )\n    throw new Error('Nested credit purchase requires an Ethereum v3.2 seller loan');\n  if (\n    ![currencies.USDC_ADDRESS, currencies.WETH_ADDRESS].some((currency) =>\n      areSameAddress(currency, input.loanCurrency),\n    ) ||\n    input.netPrincipal <= 0n ||\n    input.price <= 0n\n  )\n    throw new Error('Invalid buyer credit currency or funding');\n  const repayment = sellerMsl.decodeRepaymentCalldata(input.repaymentCalldata);\n  const sellerCallback = decodePurchaseCallback(repayment.data.callbackData);\n  const purchaseCurrency = callbackPurchaseCurrency(sellerCallback);\n  const native = isNativeCurrency(purchaseCurrency);\n  if (\n    !native &&\n    ![currencies.USDC_ADDRESS, currencies.WETH_ADDRESS].some((currency) =>\n      areSameAddress(currency, purchaseCurrency),\n    )\n  )\n    throw new Error('Unsupported listing currency');\n  if (\n    sellerCallback.amount <= 0n ||\n    sellerCallback.amount > input.price ||\n    !sellerCallback.contractMustBeOwner\n  )\n    throw new Error('The listing price or collateral route changed');\n  const buyerBundler = deployments.PurchaseBundler['3.1_PB_V2'];\n  const sellerBundler = deployments.PurchaseBundler['3.2'];\n  const block = await client.getBlock();\n  const deadline = crossCurrencyDeadline({\n    now: block.timestamp,\n    maturity: repayment.loan.startTime + repayment.loan.duration,\n    expirations: input.offerExpirations,\n  });\n  const slippage = input.slippageBps ?? 100n;\n  const requested = input.minimumInitialPayment ?? 0n;\n  if (\n    slippage < 0n ||\n    slippage > BPS ||\n    requested < 0n ||\n    requested > input.price ||\n    input.netPrincipal >= 2n ** 160n\n  )\n    throw new Error('Invalid purchase spending limits');\n  const [buyerPaused, sellerPaused, buyerPair, sellerPair, loanHash] = await Promise.all([\n    client.readContract({ address: buyerBundler, abi: readAbi, functionName: 'paused' }),\n    client.readContract({ address: sellerBundler, abi: readAbi, functionName: 'paused' }),\n    client.readContract({\n      address: buyerBundler,\n      abi: readAbi,\n      functionName: 'getMultiSourceLoanAddress',\n    }),\n    client.readContract({\n      address: sellerBundler,\n      abi: readAbi,\n      functionName: 'getMultiSourceLoanAddress',\n    }),\n    sellerMsl.contract.read.getLoanHash([repayment.data.loanId]),\n  ]);\n  if (\n    buyerPaused ||\n    sellerPaused ||\n    !areSameAddress(buyerPair, deployments.MultiSourceLoan['3.1']) ||\n    !areSameAddress(sellerPair, input.sellerContract)\n  )\n    throw new Error('The nested credit purchase route is not enabled');\n  if (loanHash === zeroHash) throw new Error('The seller loan is no longer active');\n  const { initialPayment, inputAmount, loanSwapData } = await quotePurchaseFunding({\n    client,\n    loanCurrency: input.loanCurrency,\n    purchaseCurrency,\n    price: input.price,\n    netPrincipal: input.netPrincipal,\n    deadline,\n    slippageBps: slippage,\n    minimumInitialPayment: requested,\n    route: 'nested',\n  });\n  const repaymentSwapData = input.repaymentSwapData ?? '0x';\n  if (\n    !areSameAddress(repayment.loan.principalAddress, sellerCallback.purchaseCurrency) &&\n    repaymentSwapData === '0x'\n  )\n    throw new Error('Seller currency conversion data is required');\n  const sellCalldata = encodeFunctionData({\n    abi: purchaseBundlerV2ABI,\n    functionName: 'executeSell',\n    args: [\n      [native ? (PurchaseBundlerV2.ETH_SENTINEL as Address) : purchaseCurrency],\n      [input.price],\n      [repayment.loan.nftCollateralAddress],\n      [repayment.loan.nftCollateralTokenId],\n      sellerCallback.reservoirExecutionInfo.module,\n      [input.repaymentCalldata],\n      repaymentSwapData === '0x' ? [] : [repaymentSwapData],\n    ],\n  });\n  const callbackData = encodeAbiParameters(\n    [PurchaseBundlerV2.EXECUTION_INFO],\n    [\n      {\n        reservoirExecutionInfo: {\n          module: sellerBundler,\n          data: sellCalldata,\n          value: native ? input.price : 0n,\n        },\n        contractMustBeOwner: true,\n        purchaseCurrency: native ? (PurchaseBundlerV2.ETH_SENTINEL as Address) : purchaseCurrency,\n        amount: initialPayment,\n        swapData: loanSwapData,\n        swapValue: 0n,\n        maxSlippage: 0n,\n      },\n    ],\n  );\n  const quote = Object.freeze({\n    orderId: input.orderId,\n    price: input.price,\n    buyer: wallet.account.address,\n    sellerContract: input.sellerContract,\n    sellerBundler,\n    buyerBundler,\n    loanCurrency: input.loanCurrency,\n    purchaseCurrency,\n    netPrincipal: input.netPrincipal,\n    inputAmount,\n    initialPayment,\n    deadline,\n    loanId: repayment.data.loanId,\n    nftCollateralAddress: repayment.loan.nftCollateralAddress,\n    tokenId: repayment.loan.nftCollateralTokenId,\n    loanHash,\n    repaymentHash: keccak256(input.repaymentCalldata),\n    repaymentSwapData,\n    loanSwapData,\n    callbackData,\n  });\n  await assertCreditPurchaseRoute(client, quote);\n  return quote;\n};\n\n/** Quotes each amount in its token units and includes route-specific flash settlement. */\nexport const quotePurchaseFunding = async ({\n  client,\n  loanCurrency,\n  purchaseCurrency,\n  price,\n  netPrincipal,\n  deadline,\n  slippageBps,\n  minimumInitialPayment,\n  route,\n  premiumBps = 0n,\n}: {\n  client: GondiPublicClient;\n  loanCurrency: Address;\n  purchaseCurrency: Address;\n  price: bigint;\n  netPrincipal: bigint;\n  deadline: bigint;\n  slippageBps: bigint;\n  minimumInitialPayment: bigint;\n  route: 'ordinary' | 'flash' | 'nested';\n  premiumBps?: bigint;\n}) => {\n  if (\n    price <= 0n ||\n    netPrincipal <= 0n ||\n    netPrincipal >= 2n ** 160n ||\n    slippageBps < 0n ||\n    slippageBps >= BPS ||\n    premiumBps < 0n ||\n    premiumBps > BPS ||\n    minimumInitialPayment < 0n ||\n    minimumInitialPayment > price\n  )\n    throw new Error('Invalid purchase spending limits');\n  const native = isNativeCurrency(purchaseCurrency);\n  const outputCurrency = native ? getCurrencies(mainnet).WETH_ADDRESS : purchaseCurrency;\n  const flash = route === 'flash';\n  const flashPrincipal = native ? price - minimumInitialPayment : price;\n  const needed = flash\n    ? flashPrincipal +\n      mulDivUp(flashPrincipal, premiumBps, BPS) -\n      (native ? 0n : minimumInitialPayment)\n    : price - minimumInitialPayment;\n  let funded = min(needed, netPrincipal);\n  let inputAmount = funded;\n  let exactInput = false;\n  if (needed > 0n && !areSameAddress(loanCurrency, outputCurrency)) {\n    const deployments = getContracts(mainnet);\n    const quoted = await client.simulateContract({\n      address: deployments.UniswapQuoterV2,\n      abi: quoterAbi,\n      functionName: 'quoteExactOutput',\n      args: [\n        encodePacked(['address', 'uint24', 'address'], [outputCurrency, 500, loanCurrency]),\n        needed,\n      ],\n    });\n    inputAmount = mulDivUp(quoted.result[0], BPS + slippageBps, BPS);\n    funded = needed;\n    if (inputAmount > netPrincipal) {\n      const partial = await client.simulateContract({\n        address: deployments.UniswapQuoterV2,\n        abi: quoterAbi,\n        functionName: 'quoteExactInput',\n        args: [\n          encodePacked(['address', 'uint24', 'address'], [loanCurrency, 500, outputCurrency]),\n          netPrincipal,\n        ],\n      });\n      funded = min(needed, (partial.result[0] * (BPS - slippageBps)) / BPS);\n      inputAmount = netPrincipal;\n      exactInput = true;\n    }\n  }\n  const initialPayment = flash\n    ? native\n      ? price - min(flashPrincipal, (funded * BPS) / (BPS + premiumBps))\n      : price + mulDivUp(price, premiumBps, BPS) - funded\n    : price - funded;\n  const loanSwapData =\n    funded === 0n || (flash && areSameAddress(loanCurrency, outputCurrency))\n      ? '0x'\n      : buildCreditPurchaseSwap({\n          loanCurrency,\n          purchaseCurrency: flash ? outputCurrency : purchaseCurrency,\n          amount: funded,\n          limit: inputAmount,\n          exactInput,\n          deadline,\n        });\n  return { initialPayment, inputAmount, funded, loanSwapData: loanSwapData as Hex };\n};\n", "import {\n  Address,\n  ContractFunctionArgs,\n  decodeFunctionData,\n  encodeAbiParameters,\n  Hex,\n  isAddress,\n  isHex,\n  parseAbi,\n  zeroAddress,\n} from 'viem';\n\nimport type { BuyWithLoanListingQuery } from '@/generated/graphql';\nimport type { BuyWithLoanInput, BuyWithLoanQuote } from '@/utils/buyWithLoan';\nimport { BPS } from '@/utils/loan';\nimport { areSameAddress } from '@/utils/string';\n\nconst seaportABI = parseAbi([\n  'struct OfferItem { uint8 itemType; address token; uint256 identifierOrCriteria; uint256 startAmount; uint256 endAmount; }',\n  'struct ConsiderationItem { uint8 itemType; address token; uint256 identifierOrCriteria; uint256 startAmount; uint256 endAmount; address recipient; }',\n  'struct OrderParameters { address offerer; address zone; OfferItem[] offer; ConsiderationItem[] consideration; uint8 orderType; uint256 startTime; uint256 endTime; bytes32 zoneHash; uint256 salt; bytes32 conduitKey; uint256 totalOriginalConsiderationItems; }',\n  'struct AdvancedOrder { OrderParameters parameters; uint120 numerator; uint120 denominator; bytes signature; bytes extraData; }',\n  'struct CriteriaResolver { uint256 orderIndex; uint8 side; uint256 index; uint256 identifier; bytes32[] criteriaProof; }',\n  'struct FulfillmentComponent { uint256 orderIndex; uint256 itemIndex; }',\n  'struct Fulfillment { FulfillmentComponent[] offerComponents; FulfillmentComponent[] considerationComponents; }',\n  'function matchAdvancedOrders(AdvancedOrder[] orders, CriteriaResolver[] criteriaResolvers, Fulfillment[] fulfillments, address recipient) payable',\n]);\n\ntype Listing = BuyWithLoanListingQuery['listOrdersV2']['edges'][number]['node'];\ntype AdvancedOrder = ContractFunctionArgs<\n  typeof seaportABI,\n  'payable',\n  'matchAdvancedOrders'\n>[0][number];\ntype Parameters = AdvancedOrder['parameters'];\nconst parametersAbi = seaportABI[0].inputs[0].components[0];\nconst tokenSaleAbi = parseAbi([\n  'function buyPunk(uint256 tokenId)',\n  'function sellTargetNFT(uint256 tokenId)',\n]);\n\n/** Decodes an exact-token sale or verifies both Seaport orders before borrowing. */\nexport const assertPurchaseMarketplace = (\n  listing: Listing,\n  quote: Pick<BuyWithLoanQuote, 'buyer' | 'buyerBundler' | 'totalPrice' | 'purchaseCurrency'>,\n  input: Pick<BuyWithLoanInput, 'contractAddress' | 'tokenId'>,\n  data: Hex,\n) => {\n  const marketplace = listing.marketPlace\n    .replace(/^MarketPlace\\./, '')\n    .toUpperCase()\n    .replaceAll('_', '');\n  if (marketplace === 'CRYPTOPUNKS' || marketplace === 'NFTSTRATEGY') {\n    if (quote.totalPrice !== listing.price)\n      throw new Error('Marketplace fee collection is unsupported for this route');\n    const decoded = decodeFunctionData({ abi: tokenSaleAbi, data });\n    if (\n      decoded.functionName !== (marketplace === 'CRYPTOPUNKS' ? 'buyPunk' : 'sellTargetNFT') ||\n      decoded.args[0] !== input.tokenId\n    )\n      throw new Error('Marketplace collateral changed');\n    return marketplace === 'NFTSTRATEGY';\n  }\n  if (\n    !['NATIVE', 'OPENSEA'].includes(marketplace) ||\n    listing.__typename !== 'SingleNFTOrder' ||\n    !listing.evmOrder\n  )\n    throw new Error('Unsupported purchase marketplace');\n  const decoded = decodeFunctionData({ abi: seaportABI, data });\n  if (decoded.functionName !== 'matchAdvancedOrders')\n    throw new Error('Unexpected marketplace execution');\n  const [orders, criteria, , recipient] = decoded.args;\n  if (orders.length !== 2 || criteria.length || !areSameAddress(recipient, zeroAddress))\n    throw new Error('Unexpected marketplace order count or recipient');\n  const [ask, bid] = orders;\n  const expectedAsk = parseSeaportParameters(listing.evmOrder);\n  if (\n    encodeAbiParameters([parametersAbi], [ask.parameters]) !==\n      encodeAbiParameters([parametersAbi], [expectedAsk]) ||\n    ask.signature !== listing.signature ||\n    ask.numerator !== 1n ||\n    ask.denominator !== 1n ||\n    expectedAsk.offer.length !== 1 ||\n    expectedAsk.offer[0].itemType !== 2 ||\n    !areSameAddress(expectedAsk.offer[0].token, input.contractAddress) ||\n    expectedAsk.offer[0].identifierOrCriteria !== input.tokenId\n  )\n    throw new Error('Marketplace seller authorization or collateral changed');\n  const currencyType = areSameAddress(quote.purchaseCurrency, zeroAddress) ? 0 : 1;\n  const isPayment = (item: Parameters['offer'][number]) =>\n    item.itemType === currencyType &&\n    areSameAddress(item.token, quote.purchaseCurrency) &&\n    item.identifierOrCriteria === 0n &&\n    item.startAmount === item.endAmount;\n  const expectedFees = listing.platformFees.map((fee) => ({\n    itemType: currencyType,\n    token: quote.purchaseCurrency,\n    identifierOrCriteria: 0n,\n    startAmount: (listing.price * fee.bps) / BPS,\n    endAmount: (listing.price * fee.bps) / BPS,\n    recipient: fee.beneficiary,\n  }));\n  const nft = expectedAsk.offer[0];\n  const privateRecipient = expectedAsk.consideration.find((item) => item.itemType === 2);\n  if (privateRecipient && !areSameAddress(privateRecipient.recipient, quote.buyer))\n    throw new Error('Private listing cannot deliver to this buyer');\n  const expectedConsideration = [\n    ...(privateRecipient ? [] : [{ ...nft, recipient: quote.buyerBundler }]),\n    ...expectedFees,\n  ];\n  const counter = bid.parameters;\n  if (\n    bid.numerator !== 1n ||\n    bid.denominator !== 1n ||\n    bid.signature !== '0x' ||\n    !areSameAddress(counter.offerer, quote.buyerBundler) ||\n    !areSameAddress(counter.zone, zeroAddress) ||\n    counter.orderType !== 0 ||\n    counter.offer.length !== 1 ||\n    !isPayment(counter.offer[0]) ||\n    counter.offer[0].startAmount !== quote.totalPrice ||\n    encodeAbiParameters(\n      [parametersAbi],\n      [\n        {\n          ...counter,\n          consideration: expectedConsideration,\n          totalOriginalConsiderationItems: BigInt(expectedConsideration.length),\n        },\n      ],\n    ) !== encodeAbiParameters([parametersAbi], [counter]) ||\n    expectedAsk.consideration\n      .filter((item) => item.itemType < 2)\n      .some((item) => !isPayment(item)) ||\n    expectedAsk.consideration\n      .filter((item) => item.itemType < 2)\n      .reduce((sum, item) => sum + item.startAmount, 0n) !== listing.price\n  )\n    throw new Error('Marketplace payment, fee recipients or NFT recipient changed');\n  return !privateRecipient;\n};\n\n/** Parses the API's JSON order once, into the exact Seaport ABI shape. */\nconst parseSeaportParameters = (value: object): Parameters => {\n  const record = value as Record<string, unknown>;\n  const offer = parseItems(record.offer);\n  const consideration = parseItems(record.consideration).map((item, index) => ({\n    ...item,\n    recipient: address((record.consideration as Record<string, unknown>[])[index].recipient),\n  }));\n  return {\n    offerer: address(record.offerer),\n    zone: address(record.zone),\n    offer,\n    consideration,\n    orderType: Number(integer(record.orderType)),\n    startTime: integer(record.startTime),\n    endTime: integer(record.endTime),\n    zoneHash: hash(record.zoneHash),\n    salt: integer(record.salt),\n    conduitKey: hash(record.conduitKey),\n    totalOriginalConsiderationItems: BigInt(consideration.length),\n  };\n};\nconst parseItems = (value: unknown): Parameters['offer'] => {\n  if (!Array.isArray(value)) throw new Error('Invalid marketplace items');\n  return value.map((value: unknown) => {\n    if (!value || typeof value !== 'object') throw new Error('Invalid marketplace item');\n    const item = value as Record<string, unknown>;\n    return {\n      itemType: Number(integer(item.itemType)),\n      token: address(item.token),\n      identifierOrCriteria: integer(item.identifierOrCriteria),\n      startAmount: integer(item.startAmount),\n      endAmount: integer(item.endAmount),\n    };\n  });\n};\nconst integer = (value: unknown): bigint => {\n  if (\n    (typeof value !== 'string' || !/^(0x[\\da-f]+|\\d+)$/i.test(value)) &&\n    typeof value !== 'bigint' &&\n    !(typeof value === 'number' && Number.isSafeInteger(value))\n  )\n    throw new Error('Invalid marketplace integer');\n  const parsed = BigInt(value as string | number | bigint);\n  if (parsed < 0n) throw new Error('Invalid marketplace integer');\n  return parsed;\n};\nconst address = (value: unknown): Address => {\n  if (typeof value !== 'string' || !isAddress(value, { strict: false }))\n    throw new Error('Invalid marketplace address');\n  return value;\n};\nconst hash = (value: unknown): Hex => {\n  if (typeof value !== 'string' || !isHex(value) || value.length !== 66)\n    throw new Error('Invalid marketplace hash');\n  return value;\n};\n", "export const isNative = (marketplace: string) => marketplace === 'MarketPlace.Native';\nexport const isOpensea = (marketplace: string) => marketplace === 'MarketPlace.OpenSea';\n\n/**\n * Listings are not hideable in either direction; the API rejects them, so the\n * caller is told here instead of spending a round trip on a doomed call.\n */\nexport const assertHideableOrder = (isAsk: boolean) => {\n  if (isAsk)\n    throw new Error('Listings can no longer be hidden. Cancel the listing on-chain instead.');\n};\n", "// Smallest x in [lo, hi] with predicate(x) true, assuming predicate flips\n// from false to true monotonically. Returns hi if no x in range satisfies it.\nexport const lowerBound = (lo: bigint, hi: bigint, predicate: (x: bigint) => boolean): bigint => {\n  while (lo < hi) {\n    // `lo + (hi - lo) / 2n` instead of `(lo + hi) / 2n` \u2014 BigInt division\n    // truncates toward zero, which breaks the invariant for negative ranges.\n    const mid = lo + (hi - lo) / 2n;\n    if (predicate(mid)) {\n      hi = mid;\n    } else {\n      lo = mid + 1n;\n    }\n  }\n  return lo;\n};\n", "import { lowerBound } from '@/utils/algorithm';\nimport { SECONDS_IN_YEAR } from '@/utils/dates';\nimport { BPS } from '@/utils/loan';\nimport { max, perToBps } from '@/utils/number';\n\nexport const calculateProratedOriginationFee = ({\n  principal,\n  aprBps,\n  duration,\n  effectiveApr,\n}: {\n  principal: bigint;\n  aprBps: bigint;\n  duration: bigint;\n  effectiveApr: number;\n}) => {\n  // eAPR_BPS = (APR_BPS * principal + fee * 1_YEAR * BPS / duration) / (principal - fee)\n  // eAPR is monotonically increasing in fee, so we binary search for the smallest fee\n  // that yields the target eAPR. Upper bound corresponds to +10 bps extra eAPR.\n  // Callers detect unreachable targets by comparing actualEaprBps to the expected value.\n\n  if (principal <= 0n || aprBps < 0n || duration <= 0n || effectiveApr <= 0) {\n    return { fee: 0n, actualEaprBps: 0n };\n  }\n\n  // This is the formula used in the backend to calculate the effectiveApr\n  const backendGetEaprBps = (fee: bigint) => {\n    const adjustedPrincipal = principal - fee;\n    if (adjustedPrincipal <= 0) return 0n;\n    return (\n      (aprBps * principal + (fee * BigInt(SECONDS_IN_YEAR) * BPS) / duration) / adjustedPrincipal\n    );\n  };\n\n  const eaprBps = BigInt(perToBps(effectiveApr));\n  if (eaprBps <= aprBps) return { fee: 0n, actualEaprBps: aprBps };\n\n  const getFeeBasedOnExtraAprBps = (extraAprBps: bigint) => {\n    return (\n      (extraAprBps * principal * duration) / (BigInt(SECONDS_IN_YEAR) * BPS + eaprBps * duration)\n    );\n  };\n\n  const left = max(0n, getFeeBasedOnExtraAprBps(eaprBps - aprBps - 10n));\n  const right = getFeeBasedOnExtraAprBps(eaprBps - aprBps + 10n);\n\n  const fee = lowerBound(left, right, (f) => backendGetEaprBps(f) >= eaprBps);\n  return { fee, actualEaprBps: backendGetEaprBps(fee) };\n};\n", "export const FULFILLED = 'fulfilled' as const;\nexport const REJECTED = 'rejected' as const;\n"],
  "mappings": "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AAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;A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;AAAA;AAAA;AAAA;AAAA;AAAA,EAQlC2C,GAA0B3C;AAAA;AAAA;AAAA;AAAA,EAK1B4C,GAA0C5C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAuB1C6C,GAA0C7C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EA4BhD,SAAS8C,GAAaC,EAA4B,CACvD,MAAO,CACL,QAAQC,EAAqCC,EAAuC,CAClF,OAAOF,EACL5C,GACA6C,EACAC,CACF,CACF,EACA,UAAUD,EAAuCC,EAAyC,CACxF,OAAOF,EACL3C,GACA4C,EACAC,CACF,CACF,EACA,4BACED,EACAC,EAC8C,CAC9C,OAAOF,EAIL1C,GACA2C,EACAC,CACF,CACF,EACA,oBACED,EACAC,EACsC,CACtC,OAAOF,EACLzC,GACA0C,EACAC,CACF,CACF,EACA,UAAUD,EAAuCC,EAAyC,CACxF,OAAOF,EACLxC,GACAyC,EACAC,CACF,CACF,EACA,WAAWD,EAAwCC,EAA0C,CAC3F,OAAOF,EACLvC,GACAwC,EACAC,CACF,CACF,EACA,2BACED,EACAC,EAC6C,CAC7C,OAAOF,EAILtC,GACAuC,EACAC,CACF,CACF,EACA,mBACED,EACAC,EACqC,CACrC,OAAOF,EACLrC,GACAsC,EACAC,CACF,CACF,EACA,uBACED,EACAC,EACyC,CACzC,OAAOF,EACLpC,GACAqC,EACAC,CACF,CACF,EACA,eACED,EACAC,EACiC,CACjC,OAAOF,EACLnC,GACAoC,EACAC,CACF,CACF,EACA,YACED,EACAC,EAC8B,CAC9B,OAAOF,EACLlC,GACAmC,EACAC,CACF,CACF,EACA,kBACED,EACAC,EACoC,CACpC,OAAOF,EACLjC,GACAkC,EACAC,CACF,CACF,EACA,UAAUD,EAAuCC,EAAyC,CACxF,OAAOF,EACLhC,GACAiC,EACAC,CACF,CACF,EACA,kBACED,EACAC,EACoC,CACpC,OAAOF,EACL/B,GACAgC,EACAC,CACF,CACF,EACA,2BACED,EACAC,EAC6C,CAC7C,OAAOF,EAIL9B,GACA+B,EACAC,CACF,CACF,EACA,YACED,EACAC,EAC8B,CAC9B,OAAOF,EACL7B,GACA8B,EACAC,CACF,CACF,EACA,0BACED,EACAC,EAC4C,CAC5C,OAAOF,EAIL5B,GACA6B,EACAC,CACF,CACF,EACA,mBACED,EACAC,EACqC,CACrC,OAAOF,EACL3B,GACA4B,EACAC,CACF,CACF,EACA,sBACED,EACAC,EACwC,CACxC,OAAOF,EACL1B,GACA2B,EACAC,CACF,CACF,EACA,qBACED,EACAC,EACuC,CACvC,OAAOF,EACLzB,GACA0B,EACAC,CACF,CACF,EACA,yBACED,EACAC,EAC2C,CAC3C,OAAOF,EACLxB,GACAyB,EACAC,CACF,CACF,EACA,UAAUD,EAAuCC,EAAyC,CACxF,OAAOF,EACLvB,GACAwB,EACAC,CACF,CACF,EACA,+BACED,EACAC,EACiD,CACjD,OAAOF,EAILtB,GACAuB,EACAC,CACF,CACF,EACA,uBACED,EACAC,EACyC,CACzC,OAAOF,EACLrB,GACAsB,EACAC,CACF,CACF,EACA,uBACED,EACAC,EACyC,CACzC,OAAOF,EACLpB,GACAqB,EACAC,CACF,CACF,EACA,yBACED,EACAC,EAC2C,CAC3C,OAAOF,EACLnB,GACAoB,EACAC,CACF,CACF,EACA,YAAYD,EAAsCC,EAAwC,CACxF,OAAOF,EACLlB,GACAmB,EACAC,CACF,CACF,EACA,4BACED,EACAC,EAC2C,CAC3C,OAAOF,EACLjB,GACAkB,EACAC,CACF,CACF,EACA,+BACED,EACAC,EAC8C,CAC9C,OAAOF,EAILhB,GACAiB,EACAC,CACF,CACF,EACA,mBACED,EACAC,EACkC,CAClC,OAAOF,EACLf,GACAgB,EACAC,CACF,CACF,EACA,oBACED,EACAC,EACmC,CACnC,OAAOF,EACLd,GACAe,EACAC,CACF,CACF,EACA,aAAaD,EAAwCC,EAAyC,CAC5F,OAAOF,EACLb,GACAc,EACAC,CACF,CACF,EACA,UAAUD,EAAqCC,EAAsC,CACnF,OAAOF,EACLZ,GACAa,EACAC,CACF,CACF,EACA,sCACED,EACAC,EACqD,CACrD,OAAOF,EAILX,GACAY,EACAC,CACF,CACF,EACA,iCACED,EACAC,EACgD,CAChD,OAAOF,EAILV,GACAW,EACAC,CACF,CACF,EACA,mBACED,EACAC,EACkC,CAClC,OAAOF,EACLT,GACAU,EACAC,CACF,CACF,EACA,UAAUD,EAAqCC,EAAsC,CACnF,OAAOF,EACLR,GACAS,EACAC,CACF,CACF,EACA,WAAWD,EAAqCC,EAAuC,CACrF,OAAOF,EACLP,GACAQ,EACAC,CACF,CACF,EACA,mBACED,EACAC,EACkC,CAClC,OAAOF,EACLN,GACAO,EACAC,CACF,CACF,EACA,wBACED,EACAC,EACuC,CACvC,OAAOF,EACLL,GACAM,EACAC,CACF,CACF,EACA,gBACED,EACAC,EAC+B,CAC/B,OAAOF,EACLJ,GACAK,EACAC,CACF,CACF,EACA,gCACED,EACAC,EAC+C,CAC/C,OAAOF,EAILH,GACAI,EACAC,CACF,CACF,EACA,gCACED,EACAC,EAC+C,CAC/C,OAAOF,EAILF,GACAG,EACAC,CACF,CACF,CACF,CACF,CA9agBC,EAAAJ,GAAA,UC1/hBhB,IAAMK,GAAiB,CAAC,WAAY,QAAS,cAAc,EAGpD,SAASC,GAAgBC,EAAyBC,EAA6B,CAsFpF,OAAOC,GArFsBC,EAAA,MAC3BC,EACAC,EACAC,IACe,CACfA,EAAU,CACR,GAAGA,EACH,QAAS,CACP,GAAGA,GAAS,QACZ,WAAY,SACd,CACF,EACA,IAAMC,EAAkBF,EAExB,GACED,EAAI,YAAY,OACb,GAAM,EAAE,OAAS,uBAAyBN,GAAe,SAAS,EAAE,SAAS,CAChF,EAAE,SAAW,EAEb,MAAM,IAAI,MAAM,4EAA4E,EAG9F,IAAMU,EAAaJ,EAAI,YAAY,CAAC,EAGpC,GAAII,EAAW,OAAS,sBACtB,MAAM,IAAI,MAAM,4EAA4E,EAG9F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AyB,QAAQ,EAAI,CAAC,EAC5E,OAAQH,CACV,CACF,EACA,CAAE,MAAOA,EAAmBC,EAAiB,MAAU,CACzD,EAEA,MAAO,CACL,OAAAb,EACA,cAAeR,EAAA,SAAY,CACzB,IAAMS,EAAU,MAAM,KAAK,SAAS,0BAA0B,CAC5D,KAAMD,CACR,CAAC,EAED,GADe,KAAK,eAAe,uBAAwBC,EAAQ,IAAI,EAC5D,SAAW,EACpB,MAAM,IAAI,MAAM,6BAA6B,EAE/C,OAAOA,CACT,EATe,gBAUjB,CACF,CACF,EE3OO,IAAMmB,GAAiB,CAC5B,CACE,SAAU,GACV,OAAQ,CAAC,EACT,KAAM,OACN,QAAS,CACP,CACE,KAAM,GACN,KAAM,QACR,CACF,EACA,QAAS,GACT,KAAM,WACN,gBAAiB,MACnB,EACA,CACE,SAAU,GACV,OAAQ,CACN,CACE,KAAM,GACN,KAAM,SACR,CACF,EACA,KAAM,sBACN,QAAS,CACP,CACE,KAAM,YACN,KAAM,MACR,EACA,CACE,KAAM,YACN,KAAM,SACR,EACA,CACE,KAAM,SACN,KAAM,SACR,EACA,CACE,KAAM,WACN,KAAM,SACR,EACA,CACE,KAAM,aACN,KAAM,SACR,CACF,EACA,QAAS,GACT,KAAM,WACN,gBAAiB,MACnB,EACA,CACE,SAAU,GACV,OAAQ,CACN,CACE,KAAM,YACN,KAAM,SACR,CACF,EACA,KAAM,kBACN,QAAS,CAAC,EACV,QAAS,GACT,KAAM,WACN,gBAAiB,SACnB,EACA,CACE,SAAU,GACV,OAAQ,CAAC,EACT,KAAM,cACN,QAAS,CACP,CACE,KAAM,GACN,KAAM,SACR,CACF,EACA,QAAS,GACT,KAAM,WACN,gBAAiB,MACnB,EACA,CACE,SAAU,GACV,OAAQ,CACN,CACE,KAAM,YACN,KAAM,SACR,EACA,CACE,KAAM,WACN,KAAM,SACR,CACF,EACA,KAAM,mBACN,QAAS,CAAC,EACV,QAAS,GACT,KAAM,WACN,gBAAiB,YACnB,EACA,CACE,SAAU,GACV,OAAQ,CAAC,EACT,KAAM,WACN,QAAS,CACP,CACE,KAAM,GACN,KAAM,OACR,CACF,EACA,QAAS,GACT,KAAM,WACN,gBAAiB,MACnB,EACA,CACE,SAAU,GACV,OAAQ,CACN,CACE,KAAM,YACN,KAAM,WACR,EACA,CACE,KAAM,UACN,KAAM,WACR,CACF,EACA,KAAM,mBACN,QAAS,CAAC,EACV,QAAS,GACT,KAAM,WACN,gBAAiB,YACnB,EACA,CACE,SAAU,GACV,OAAQ,CAAC,EACT,KAAM,WACN,QAAS,CAAC,EACV,QAAS,GACT,KAAM,WACN,gBAAiB,YACnB,EACA,CACE,SAAU,GACV,OAAQ,CAAC,EACT,KAAM,YACN,QAAS,CACP,CACE,KAAM,GACN,KAAM,QACR,CACF,EACA,QAAS,GACT,KAAM,WACN,gBAAiB,MACnB,EACA,CACE,SAAU,GACV,OAAQ,CAAC,EACT,KAAM,wBACN,QAAS,CACP,CACE,KAAM,GACN,KAAM,SACR,CACF,EACA,QAAS,GACT,KAAM,WACN,gBAAiB,MACnB,EACA,CACE,SAAU,GACV,OAAQ,CACN,CACE,KAAM,GACN,KAAM,SACR,CACF,EACA,KAAM,qBACN,QAAS,CACP,CACE,KAAM,GACN,KAAM,SACR,CACF,EACA,QAAS,GACT,KAAM,WACN,gBAAiB,MACnB,EACA,CACE,SAAU,GACV,OAAQ,CAAC,EACT,KAAM,WACN,QAAS,CACP,CACE,KAAM,GACN,KAAM,QACR,CACF,EACA,QAAS,GACT,KAAM,WACN,gBAAiB,MACnB,EACA,CACE,SAAU,GACV,OAAQ,CACN,CACE,KAAM,GACN,KAAM,SACR,CACF,EACA,KAAM,WACN,QAAS,CACP,CACE,KAAM,SACN,KAAM,MACR,EACA,CACE,KAAM,YACN,KAAM,SACR,EACA,CACE,KAAM,SACN,KAAM,SACR,EACA,CACE,KAAM,QACN,KAAM,SACR,CACF,EACA,QAAS,GACT,KAAM,WACN,gBAAiB,MACnB,EACA,CACE,SAAU,GACV,OAAQ,CACN,CACE,KAAM,GACN,KAAM,SACR,CACF,EACA,KAAM,YACN,QAAS,CACP,CACE,KAAM,GACN,KAAM,SACR,CACF,EACA,QAAS,GACT,KAAM,WACN,gBAAiB,MACnB,EACA,CACE,SAAU,GACV,OAAQ,CAAC,EACT,KAAM,2BACN,QAAS,CAAC,EACV,QAAS,GACT,KAAM,WACN,gBAAiB,YACnB,EACA,CACE,SAAU,GACV,OAAQ,CAAC,EACT,KAAM,mBACN,QAAS,CACP,CACE,KAAM,GACN,KAAM,MACR,CACF,EACA,QAAS,GACT,KAAM,WACN,gBAAiB,MACnB,EACA,CACE,SAAU,GACV,OAAQ,CACN,CACE,KAAM,YACN,KAAM,SACR,CACF,EACA,KAAM,UACN,QAAS,CAAC,EACV,QAAS,GACT,KAAM,WACN,gBAAiB,SACnB,EACA,CACE,SAAU,GACV,OAAQ,CACN,CACE,KAAM,KACN,KAAM,SACR,EACA,CACE,KAAM,YACN,KAAM,SACR,CACF,EACA,KAAM,eACN,QAAS,CAAC,EACV,QAAS,GACT,KAAM,WACN,gBAAiB,YACnB,EACA,CACE,SAAU,GACV,OAAQ,CAAC,EACT,KAAM,SACN,QAAS,CACP,CACE,KAAM,GACN,KAAM,QACR,CACF,EACA,QAAS,GACT,KAAM,WACN,gBAAiB,MACnB,EACA,CACE,SAAU,GACV,OAAQ,CACN,CACE,KAAM,YACN,KAAM,SACR,CACF,EACA,KAAM,qBACN,QAAS,CAAC,EACV,QAAS,GACT,KAAM,WACN,gBAAiB,YACnB,EACA,CACE,SAAU,GACV,OAAQ,CACN,CACE,KAAM,KACN,KAAM,SACR,EACA,CACE,KAAM,YACN,KAAM,SACR,CACF,EACA,KAAM,kBACN,QAAS,CAAC,EACV,QAAS,GACT,KAAM,WACN,gBAAiB,YACnB,EACA,CACE,SAAU,GACV,OAAQ,CACN,CACE,KAAM,YACN,KAAM,SACR,EACA,CACE,KAAM,oBACN,KAAM,SACR,EACA,CACE,KAAM,YACN,KAAM,SACR,CACF,EACA,KAAM,4BACN,QAAS,CAAC,EACV,QAAS,GACT,KAAM,WACN,gBAAiB,YACnB,EACA,CACE,SAAU,GACV,OAAQ,CAAC,EACT,KAAM,yBACN,QAAS,CACP,CACE,KAAM,GACN,KAAM,SACR,CACF,EACA,QAAS,GACT,KAAM,WACN,gBAAiB,MACnB,EACA,CACE,SAAU,GACV,OAAQ,CACN,CACE,KAAM,YACN,KAAM,SACR,EACA,CACE,KAAM,oBACN,KAAM,SACR,CACF,EACA,KAAM,mBACN,QAAS,CAAC,EACV,QAAS,GACT,KAAM,WACN,gBAAiB,YACnB,EACA,CACE,SAAU,GACV,OAAQ,CACN,CACE,KAAM,YACN,KAAM,SACR,CACF,EACA,KAAM,UACN,QAAS,CAAC,EACV,QAAS,GACT,KAAM,WACN,gBAAiB,YACnB,EACA,CACE,SAAU,GACV,OAAQ,CACN,CACE,KAAM,GACN,KAAM,SACR,CACF,EACA,KAAM,qBACN,QAAS,CACP,CACE,KAAM,GACN,KAAM,SACR,CACF,EACA,QAAS,GACT,KAAM,WACN,gBAAiB,MACnB,EACA,CACE,SAAU,GACV,OAAQ,CACN,CACE,KAAM,YACN,KAAM,SACR,CACF,EACA,KAAM,sBACN,QAAS,CAAC,EACV,QAAS,GACT,KAAM,WACN,gBAAiB,YACnB,EACA,CACE,OAAQ,CAAC,EACT,QAAS,GACT,KAAM,cACN,gBAAiB,SACnB,EACA,CACE,UAAW,GACX,OAAQ,CACN,CACE,QAAS,GACT,KAAM,KACN,KAAM,SACR,EACA,CACE,QAAS,GACT,KAAM,YACN,KAAM,SACR,CACF,EACA,KAAM,SACN,KAAM,OACR,EACA,CACE,UAAW,GACX,OAAQ,CACN,CACE,QAAS,GACT,KAAM,OACN,KAAM,SACR,EACA,CACE,QAAS,GACT,KAAM,KACN,KAAM,SACR,EACA,CACE,QAAS,GACT,KAAM,QACN,KAAM,SACR,CACF,EACA,KAAM,WACN,KAAM,OACR,EACA,CACE,UAAW,GACX,OAAQ,CACN,CACE,QAAS,GACT,KAAM,OACN,KAAM,SACR,EACA,CACE,QAAS,GACT,KAAM,KACN,KAAM,SACR,EACA,CACE,QAAS,GACT,KAAM,YACN,KAAM,SACR,CACF,EACA,KAAM,eACN,KAAM,OACR,EACA,CACE,UAAW,GACX,OAAQ,CACN,CACE,QAAS,GACT,KAAM,YACN,KAAM,SACR,EACA,CACE,QAAS,GACT,KAAM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OAAQ,CACN,CACE,aAAc,UACd,KAAM,aACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,qBACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,kBACN,KAAM,SACR,CACF,EACA,KAAM,sBACN,KAAM,OACR,EACA,CACE,OAAQ,CAAC,EACT,KAAM,4BACN,KAAM,OACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,QACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,OACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,KACN,KAAM,SACR,EACA,CACE,aAAc,YACd,KAAM,cACN,KAAM,WACR,EACA,CACE,aAAc,YACd,KAAM,UACN,KAAM,WACR,CACF,EACA,KAAM,qCACN,KAAM,OACR,EACA,CACE,OAAQ,CAAC,EACT,KAAM,kBACN,KAAM,OACR,EACA,CACE,OAAQ,CAAC,EACT,KAAM,mCACN,KAAM,OACR,EACA,CACE,OAAQ,CAAC,EACT,KAAM,mCACN,KAAM,OACR,EACA,CACE,OAAQ,CAAC,EACT,KAAM,qCACN,KAAM,OACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,UACN,KAAM,SACR,CACF,EACA,KAAM,uBACN,KAAM,OACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,aACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,UACN,KAAM,SACR,CACF,EACA,KAAM,iBACN,KAAM,OACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,YACN,KAAM,SACR,CACF,EACA,KAAM,uBACN,KAAM,OACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,SACN,KAAM,SACR,CACF,EACA,KAAM,8BACN,KAAM,OACR,EACA,CACE,OAAQ,CAAC,EACT,KAAM,kCACN,KAAM,OACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,QACN,KAAM,SACR,CACF,EACA,KAAM,kBACN,KAAM,OACR,EACA,CACE,OAAQ,CAAC,EACT,KAAM,yBACN,KAAM,OACR,EACA,CACE,OAAQ,CAAC,EACT,KAAM,eACN,KAAM,OACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,YACN,KAAM,SACR,CACF,EACA,KAAM,yBACN,KAAM,OACR,EACA,CACE,OAAQ,CAAC,EACT,KAAM,mBACN,KAAM,OACR,EACA,CACE,OAAQ,CAAC,EACT,KAAM,gBACN,KAAM,OACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,YACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,UACN,KAAM,SACR,CACF,EACA,KAAM,cACN,KAAM,OACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,mBACN,KAAM,SACR,CACF,EACA,KAAM,uDACN,KAAM,OACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,YACd,KAAM,OACN,KAAM,OACR,CACF,EACA,KAAM,2CACN,KAAM,OACR,EACA,CACE,OAAQ,CAAC,EACT,KAAM,oBACN,KAAM,OACR,EACA,CACE,OAAQ,CAAC,EACT,KAAM,oCACN,KAAM,OACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,UACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,SACN,KAAM,SACR,CACF,EACA,KAAM,oCACN,KAAM,OACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,UACN,KAAM,SACR,CACF,EACA,KAAM,aACN,KAAM,OACR,EACA,CACE,OAAQ,CAAC,EACT,KAAM,mBACN,KAAM,OACR,EACA,CACE,OAAQ,CAAC,EACT,KAAM,6BACN,KAAM,OACR,EACA,CACE,OAAQ,CAAC,EACT,KAAM,6CACN,KAAM,OACR,EACA,CACE,OAAQ,CAAC,EACT,KAAM,kCACN,KAAM,OACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,YACN,KAAM,SACR,CACF,EACA,KAAM,qBACN,KAAM,OACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,YACd,KAAM,OACN,KAAM,OACR,CACF,EACA,KAAM,kCACN,KAAM,OACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,YACN,KAAM,SACR,CACF,EACA,KAAM,mBACN,KAAM,OACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,YACN,KAAM,SACR,CACF,EACA,KAAM,uBACN,KAAM,OACR,EACA,CACE,OAAQ,CAAC,EACT,KAAM,iCACN,KAAM,OACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,QACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,OACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,KACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,aACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,SACN,KAAM,SACR,CACF,EACA,KAAM,8BACN,KAAM,OACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,aACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,qBACN,KAAM,SACR,CACF,EACA,KAAM,kCACN,KAAM,OACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,aACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,aACN,KAAM,SACR,CACF,EACA,KAAM,0BACN,KAAM,OACR,EACA,CACE,OAAQ,CAAC,EACT,KAAM,uBACN,KAAM,OACR,EACA,CACE,UAAW,GACX,OAAQ,CACN,CACE,QAAS,GACT,aAAc,UACd,KAAM,aACN,KAAM,SACR,EACA,CACE,QAAS,GACT,aAAc,UACd,KAAM,UACN,KAAM,SACR,CACF,EACA,KAAM,qBACN,KAAM,OACR,EACA,CACE,UAAW,GACX,OAAQ,CACN,CACE,QAAS,GACT,aAAc,UACd,KAAM,YACN,KAAM,SACR,EACA,CACE,QAAS,GACT,aAAc,UACd,KAAM,UACN,KAAM,SACR,EACA,CACE,QAAS,GACT,aAAc,UACd,KAAM,OACN,KAAM,SACR,CACF,EACA,KAAM,iBACN,KAAM,OACR,EACA,CACE,UAAW,GACX,OAAQ,CACN,CACE,QAAS,GACT,aAAc,UACd,KAAM,YACN,KAAM,SACR,EACA,CACE,QAAS,GACT,aAAc,UACd,KAAM,UACN,KAAM,SACR,EACA,CACE,QAAS,GACT,aAAc,UACd,KAAM,OACN,KAAM,SACR,EACA,CACE,QAAS,GACT,aAAc,UACd,KAAM,YACN,KAAM,SACR,EACA,CACE,WAAY,CACV,CACE,aAAc,gBACd,KAAM,WACN,KAAM,OACR,EACA,CACE,aAAc,UACd,KAAM,QACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,aACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,SACN,KAAM,SACR,CACF,EACA,QAAS,GACT,aAAc,qBACd,KAAM,QACN,KAAM,SACR,EACA,CACE,WAAY,CACV,CACE,aAAc,gBACd,KAAM,WACN,KAAM,OACR,EACA,CACE,aAAc,UACd,KAAM,QACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,aACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,SACN,KAAM,SACR,EACA,CACE,aAAc,kBACd,KAAM,YACN,KAAM,SACR,CACF,EACA,QAAS,GACT,aAAc,wBACd,KAAM,gBACN,KAAM,SACR,CACF,EACA,KAAM,iBACN,KAAM,OACR,EACA,CACE,UAAW,GACX,OAAQ,CACN,CACE,QAAS,GACT,aAAc,UACd,KAAM,YACN,KAAM,SACR,EACA,CACE,WAAY,CACV,CACE,aAAc,UACd,KAAM,UACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,OACN,KAAM,SACR,EACA,CACE,WAAY,CACV,CACE,aAAc,gBACd,KAAM,WACN,KAAM,OACR,EACA,CACE,aAAc,UACd,KAAM,QACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,uBACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,cACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,YACN,KAAM,SACR,CACF,EACA,aAAc,qBACd,KAAM,QACN,KAAM,SACR,EACA,CACE,WAAY,CACV,CACE,aAAc,gBACd,KAAM,WACN,KAAM,OACR,EACA,CACE,aAAc,UACd,KAAM,QACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,uBACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,cACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,YACN,KAAM,SACR,EACA,CACE,aAAc,kBACd,KAAM,YACN,KAAM,SACR,CACF,EACA,aAAc,6BACd,KAAM,gBACN,KAAM,SACR,EACA,CACE,aAAc,iBACd,KAAM,YACN,KAAM,OACR,EACA,CACE,aAAc,UACd,KAAM,YACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,UACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,WACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,OACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,aACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,kCACN,KAAM,SACR,CACF,EACA,QAAS,GACT,aAAc,yBACd,KAAM,kBACN,KAAM,OACR,CACF,EACA,KAAM,iBACN,KAAM,OACR,EACA,CACE,UAAW,GACX,OAAQ,CACN,CACE,QAAS,GACT,aAAc,YACd,KAAM,cACN,KAAM,WACR,CACF,EACA,KAAM,gBACN,KAAM,OACR,EACA,CACE,OAAQ,CACN,CACE,WAAY,CACV,CACE,aAAc,UACd,KAAM,UACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,OACN,KAAM,SACR,EACA,CACE,WAAY,CACV,CACE,aAAc,gBACd,KAAM,WACN,KAAM,OACR,EACA,CACE,aAAc,UACd,KAAM,QACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,uBACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,cACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,YACN,KAAM,SACR,CACF,EACA,aAAc,qBACd,KAAM,QACN,KAAM,SACR,EACA,CACE,WAAY,CACV,CACE,aAAc,gBACd,KAAM,WACN,KAAM,OACR,EACA,CACE,aAAc,UACd,KAAM,QACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,uBACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,cACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,YACN,KAAM,SACR,EACA,CACE,aAAc,kBACd,KAAM,YACN,KAAM,SACR,CACF,EACA,aAAc,6BACd,KAAM,gBACN,KAAM,SACR,EACA,CACE,aAAc,iBACd,KAAM,YACN,KAAM,OACR,EACA,CACE,aAAc,UACd,KAAM,YACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,UACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,WACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,OACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,aACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,UACN,KAAM,SACR,CACF,EACA,aAAc,2BACd,KAAM,SACN,KAAM,SACR,CACF,EACA,KAAM,SACN,QAAS,CACP,CACE,aAAc,OACd,KAAM,YACN,KAAM,MACR,CACF,EACA,gBAAiB,aACjB,KAAM,UACR,EACA,CACE,OAAQ,CACN,CACE,WAAY,CACV,CACE,WAAY,CACV,CACE,aAAc,UACd,KAAM,UACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,OACN,KAAM,SACR,EACA,CACE,WAAY,CACV,CACE,aAAc,gBACd,KAAM,WACN,KAAM,OACR,EACA,CACE,aAAc,UACd,KAAM,QACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,uBACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,cACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,YACN,KAAM,SACR,CACF,EACA,aAAc,qBACd,KAAM,QACN,KAAM,SACR,EACA,CACE,WAAY,CACV,CACE,aAAc,gBACd,KAAM,WACN,KAAM,OACR,EACA,CACE,aAAc,UACd,KAAM,QACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,uBACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,cACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,YACN,KAAM,SACR,EACA,CACE,aAAc,kBACd,KAAM,YACN,KAAM,SACR,CACF,EACA,aAAc,6BACd,KAAM,gBACN,KAAM,SACR,EACA,CACE,aAAc,iBACd,KAAM,YACN,KAAM,OACR,EACA,CACE,aAAc,UACd,KAAM,YACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,UACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,WACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,OACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,aACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,kCACN,KAAM,SACR,CACF,EACA,aAAc,yBACd,KAAM,aACN,KAAM,OACR,EACA,CACE,aAAc,UACd,KAAM,YACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,cACN,KAAM,SACR,EACA,CACE,aAAc,QACd,KAAM,YACN,KAAM,OACR,EACA,CACE,aAAc,QACd,KAAM,YACN,KAAM,OACR,CACF,EACA,aAAc,uBACd,KAAM,GACN,KAAM,OACR,EACA,CACE,WAAY,CACV,CACE,aAAc,UACd,KAAM,aACN,KAAM,SACR,EACA,CACE,aAAc,YACd,KAAM,OACN,KAAM,OACR,EACA,CACE,aAAc,UACd,KAAM,QACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,aACN,KAAM,SACR,EACA,CACE,aAAc,YACd,KAAM,gBACN,KAAM,WACR,CACF,EACA,aAAc,4BACd,KAAM,GACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,sBACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,YACN,KAAM,SACR,CACF,EACA,KAAM,uBACN,QAAS,CACP,CACE,aAAc,OACd,KAAM,YACN,KAAM,MACR,CACF,EACA,gBAAiB,UACjB,KAAM,UACR,EACA,CACE,OAAQ,CACN,CACE,WAAY,CACV,CACE,WAAY,CACV,CACE,aAAc,UACd,KAAM,UACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,OACN,KAAM,SACR,EACA,CACE,WAAY,CACV,CACE,aAAc,gBACd,KAAM,WACN,KAAM,OACR,EACA,CACE,aAAc,UACd,KAAM,QACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,uBACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,cACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,YACN,KAAM,SACR,CACF,EACA,aAAc,qBACd,KAAM,QACN,KAAM,SACR,EACA,CACE,WAAY,CACV,CACE,aAAc,gBACd,KAAM,WACN,KAAM,OACR,EACA,CACE,aAAc,UACd,KAAM,QACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,uBACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,cACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,YACN,KAAM,SACR,EACA,CACE,aAAc,kBACd,KAAM,YACN,KAAM,SACR,CACF,EACA,aAAc,6BACd,KAAM,gBACN,KAAM,SACR,EACA,CACE,aAAc,iBACd,KAAM,YACN,KAAM,OACR,EACA,CACE,aAAc,UACd,KAAM,YACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,UACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,WACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,OACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,aACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,kCACN,KAAM,SACR,CACF,EACA,aAAc,yBACd,KAAM,aACN,KAAM,OACR,EACA,CACE,aAAc,UACd,KAAM,YACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,cACN,KAAM,SACR,EACA,CACE,aAAc,QACd,KAAM,YACN,KAAM,OACR,EACA,CACE,aAAc,QACd,KAAM,YACN,KAAM,OACR,CACF,EACA,aAAc,yBACd,KAAM,GACN,KAAM,SACR,EACA,CACE,WAAY,CACV,CACE,aAAc,UACd,KAAM,aACN,KAAM,SACR,EACA,CACE,aAAc,YACd,KAAM,OACN,KAAM,OACR,EACA,CACE,aAAc,UACd,KAAM,QACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,aACN,KAAM,SACR,EACA,CACE,aAAc,YACd,KAAM,gBACN,KAAM,WACR,CACF,EACA,aAAc,4BACd,KAAM,GACN,KAAM,SACR,EACA,CACE,WAAY,CACV,CACE,aAAc,UACd,KAAM,aACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,YACN,KAAM,SACR,CACF,EACA,aAAc,kCACd,KAAM,GACN,KAAM,WACR,EACA,CACE,WAAY,CACV,CACE,aAAc,UACd,KAAM,aACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,YACN,KAAM,SACR,CACF,EACA,aAAc,kCACd,KAAM,GACN,KAAM,WACR,EACA,CACE,aAAc,UACd,KAAM,sBACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,YACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,mBACN,KAAM,SACR,CACF,EACA,KAAM,iCACN,QAAS,CACP,CACE,aAAc,SACd,KAAM,GACN,KAAM,QACR,EACA,CACE,WAAY,CACV,CACE,WAAY,CACV,CACE,aAAc,gBACd,KAAM,WACN,KAAM,OACR,EACA,CACE,aAAc,UACd,KAAM,QACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,aACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,SACN,KAAM,SACR,EACA,CACE,aAAc,kBACd,KAAM,YACN,KAAM,SACR,CACF,EACA,aAAc,sBACd,KAAM,OACN,KAAM,OACR,EACA,CACE,aAAc,UACd,KAAM,UACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,aACN,KAAM,SACR,CACF,EACA,aAAc,qBACd,KAAM,GACN,KAAM,SACR,CACF,EACA,gBAAiB,UACjB,KAAM,UACR,EACA,CACE,OAAQ,CACN,CACE,WAAY,CACV,CACE,WAAY,CACV,CACE,aAAc,UACd,KAAM,UACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,OACN,KAAM,SACR,EACA,CACE,WAAY,CACV,CACE,aAAc,gBACd,KAAM,WACN,KAAM,OACR,EACA,CACE,aAAc,UACd,KAAM,QACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,uBACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,cACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,YACN,KAAM,SACR,CACF,EACA,aAAc,qBACd,KAAM,QACN,KAAM,SACR,EACA,CACE,WAAY,CACV,CACE,aAAc,gBACd,KAAM,WACN,KAAM,OACR,EACA,CACE,aAAc,UACd,KAAM,QACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,uBACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,cACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,YACN,KAAM,SACR,EACA,CACE,aAAc,kBACd,KAAM,YACN,KAAM,SACR,CACF,EACA,aAAc,6BACd,KAAM,gBACN,KAAM,SACR,EACA,CACE,aAAc,iBACd,KAAM,YACN,KAAM,OACR,EACA,CACE,aAAc,UACd,KAAM,YACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,UACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,WACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,OACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,aACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,kCACN,KAAM,SACR,CACF,EACA,aAAc,yBACd,KAAM,aACN,KAAM,OACR,EACA,CACE,aAAc,QACd,KAAM,YACN,KAAM,OACR,CACF,EACA,aAAc,iBACd,KAAM,GACN,KAAM,SACR,EACA,CACE,WAAY,CACV,CACE,aAAc,UACd,KAAM,aACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,YACN,KAAM,SACR,CACF,EACA,aAAc,kCACd,KAAM,GACN,KAAM,WACR,EACA,CACE,WAAY,CACV,CACE,aAAc,UACd,KAAM,aACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,YACN,KAAM,SACR,CACF,EACA,aAAc,kCACd,KAAM,GACN,KAAM,WACR,EACA,CACE,aAAc,UACd,KAAM,sBACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,mBACN,KAAM,SACR,CACF,EACA,KAAM,yBACN,QAAS,CACP,CACE,aAAc,SACd,KAAM,GACN,KAAM,QACR,EACA,CACE,WAAY,CACV,CACE,WAAY,CACV,CACE,aAAc,gBACd,KAAM,WACN,KAAM,OACR,EACA,CACE,aAAc,UACd,KAAM,QACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,aACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,SACN,KAAM,SACR,EACA,CACE,aAAc,kBACd,KAAM,YACN,KAAM,SACR,CACF,EACA,aAAc,sBACd,KAAM,OACN,KAAM,OACR,EACA,CACE,aAAc,UACd,KAAM,UACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,aACN,KAAM,SACR,CACF,EACA,aAAc,qBACd,KAAM,GACN,KAAM,SACR,CACF,EACA,gBAAiB,UACjB,KAAM,UACR,EACA,CACE,OAAQ,CACN,CACE,WAAY,CACV,CACE,aAAc,UACd,KAAM,qBACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,0BACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,sBACN,KAAM,SACR,EACA,CACE,aAAc,kBACd,KAAM,UACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,OACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,aACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,kBACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,cACN,KAAM,SACR,EACA,CACE,aAAc,sBACd,KAAM,iBACN,KAAM,OACR,EACA,CACE,aAAc,UACd,KAAM,YACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,UACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,WACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,OACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,oBACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,sBACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,oCACN,KAAM,SACR,EACA,CACE,WAAY,CACV,CACE,aAAc,UACd,KAAM,SACN,KAAM,SACR,EACA,CACE,aAAc,kBACd,KAAM,YACN,KAAM,SACR,CACF,EACA,aAAc,+BACd,KAAM,uBACN,KAAM,SACR,EACA,CACE,aAAc,QACd,KAAM,YACN,KAAM,OACR,CACF,EACA,aAAc,8BACd,KAAM,aACN,KAAM,OACR,CACF,EACA,KAAM,oBACN,QAAS,CACP,CACE,aAAc,OACd,KAAM,YACN,KAAM,MACR,CACF,EACA,gBAAiB,UACjB,KAAM,UACR,EACA,CACE,OAAQ,CACN,CACE,WAAY,CACV,CACE,aAAc,UACd,KAAM,qBACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,0BACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,sBACN,KAAM,SACR,EACA,CACE,aAAc,kBACd,KAAM,UACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,OACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,aACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,kBACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,cACN,KAAM,SACR,EACA,CACE,aAAc,sBACd,KAAM,iBACN,KAAM,OACR,EACA,CACE,aAAc,UACd,KAAM,YACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,UACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,WACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,OACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,oBACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,sBACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,oCACN,KAAM,SACR,EACA,CACE,WAAY,CACV,CACE,aAAc,UACd,KAAM,SACN,KAAM,SACR,EACA,CACE,aAAc,kBACd,KAAM,YACN,KAAM,SACR,CACF,EACA,aAAc,+BACd,KAAM,uBACN,KAAM,SACR,EACA,CACE,aAAc,QACd,KAAM,YACN,KAAM,OACR,CACF,EACA,aAAc,8BACd,KAAM,aACN,KAAM,OACR,CACF,EACA,KAAM,qCACN,QAAS,CACP,CACE,aAAc,OACd,KAAM,YACN,KAAM,MACR,CACF,EACA,gBAAiB,UACjB,KAAM,UACR,EACA,CACE,OAAQ,CACN,CACE,WAAY,CACV,CACE,WAAY,CACV,CACE,aAAc,UACd,KAAM,UACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,OACN,KAAM,SACR,EACA,CACE,WAAY,CACV,CACE,aAAc,gBACd,KAAM,WACN,KAAM,OACR,EACA,CACE,aAAc,UACd,KAAM,QACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,uBACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,cACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,YACN,KAAM,SACR,CACF,EACA,aAAc,qBACd,KAAM,QACN,KAAM,SACR,EACA,CACE,WAAY,CACV,CACE,aAAc,gBACd,KAAM,WACN,KAAM,OACR,EACA,CACE,aAAc,UACd,KAAM,QACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,uBACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,cACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,YACN,KAAM,SACR,EACA,CACE,aAAc,kBACd,KAAM,YACN,KAAM,SACR,CACF,EACA,aAAc,6BACd,KAAM,gBACN,KAAM,SACR,EACA,CACE,aAAc,iBACd,KAAM,YACN,KAAM,OACR,EACA,CACE,aAAc,UACd,KAAM,YACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,UACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,WACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,OACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,aACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,kCACN,KAAM,SACR,CACF,EACA,aAAc,yBACd,KAAM,aACN,KAAM,OACR,EACA,CACE,aAAc,QACd,KAAM,YACN,KAAM,OACR,CACF,EACA,aAAc,eACd,KAAM,GACN,KAAM,OACR,EACA,CACE,aAAc,UACd,KAAM,sBACN,KAAM,SACR,CACF,EACA,KAAM,eACN,QAAS,CACP,CACE,aAAc,OACd,KAAM,YACN,KAAM,MACR,CACF,EACA,gBAAiB,UACjB,KAAM,UACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,kBACN,KAAM,SACR,CACF,EACA,KAAM,0BACN,QAAS,CACP,CACE,aAAc,UACd,KAAM,QACN,KAAM,SACR,CACF,EACA,gBAAiB,OACjB,KAAM,UACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,UACN,KAAM,SACR,CACF,EACA,KAAM,aACN,QAAS,CACP,CACE,aAAc,UACd,KAAM,UACN,KAAM,SACR,CACF,EACA,gBAAiB,OACjB,KAAM,UACR,EACA,CACE,OAAQ,CACN,CACE,WAAY,CACV,CACE,aAAc,UACd,KAAM,UACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,OACN,KAAM,SACR,EACA,CACE,WAAY,CACV,CACE,aAAc,gBACd,KAAM,WACN,KAAM,OACR,EACA,CACE,aAAc,UACd,KAAM,QACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,uBACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,cACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,YACN,KAAM,SACR,CACF,EACA,aAAc,qBACd,KAAM,QACN,KAAM,SACR,EACA,CACE,WAAY,CACV,CACE,aAAc,gBACd,KAAM,WACN,KAAM,OACR,EACA,CACE,aAAc,UACd,KAAM,QACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,uBACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,cACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,YACN,KAAM,SACR,EACA,CACE,aAAc,kBACd,KAAM,YACN,KAAM,SACR,CACF,EACA,aAAc,6BACd,KAAM,gBACN,KAAM,SACR,EACA,CACE,aAAc,iBACd,KAAM,YACN,KAAM,OACR,EACA,CACE,aAAc,UACd,KAAM,YACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,UACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,WACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,OACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,aACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,UACN,KAAM,SACR,CACF,EACA,aAAc,yBACd,KAAM,GACN,KAAM,OACR,CACF,EACA,KAAM,eACN,QAAS,CACP,CACE,aAAc,UACd,KAAM,YACN,KAAM,SACR,CACF,EACA,gBAAiB,OACjB,KAAM,UACR,EACA,CACE,OAAQ,CACN,CACE,aAAc,UACd,KAAM,YACN,KAAM,SACR,CACF,EACA,KAAM,iBACN,QAAS,CACP,CACE,aAAc,OACd,KAAM,cACN,KAAM,MACR,EACA,CACE,aAAc,OACd,KAAM,cACN,KAAM,MACR,EACA,CACE,aAAc,UACd,KAAM,cACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,YACN,KAAM,SACR,CACF,EACA,gBAAiB,OACjB,KAAM,UACR,EACA,CACE,OAAQ,CAAC,EACT,KAAM,mBACN,QAAS,CACP,CACE,aAAc,UACd,KAAM,aACN,KAAM,SACR,CACF,EACA,gBAAiB,aACjB,KAAM,UACR,EACA,CACE,OAAQ,CAAC,EACT,KAAM,cACN,QAAS,CACP,CACE,aAAc,SACd,KAAM,UACN,KAAM,QACR,EACA,CACE,aAAc,UACd,KAAM,kBACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,oBACN,KAAM,SACR,CACF,EACA,gBAAiB,OACjB,KAAM,UACR,EACA,CACE,OAAQ,CACN,CACE,WAAY,CACV,CACE,WAAY,CACV,CACE,aAAc,UACd,KAAM,UACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,OACN,KAAM,SACR,EACA,CACE,WAAY,CACV,CACE,aAAc,gBACd,KAAM,WACN,KAAM,OACR,EACA,CACE,aAAc,UACd,KAAM,QACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,uBACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,cACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,YACN,KAAM,SACR,CACF,EACA,aAAc,qBACd,KAAM,QACN,KAAM,SACR,EACA,CACE,WAAY,CACV,CACE,aAAc,gBACd,KAAM,WACN,KAAM,OACR,EACA,CACE,aAAc,UACd,KAAM,QACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,uBACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,cACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,YACN,KAAM,SACR,EACA,CACE,aAAc,kBACd,KAAM,YACN,KAAM,SACR,CACF,EACA,aAAc,6BACd,KAAM,gBACN,KAAM,SACR,EACA,CACE,aAAc,iBACd,KAAM,YACN,KAAM,OACR,EACA,CACE,aAAc,UACd,KAAM,YACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,UACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,WACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,OACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,aACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,kCACN,KAAM,SACR,CACF,EACA,aAAc,yBACd,KAAM,aACN,KAAM,OACR,EACA,CACE,aAAc,UACd,KAAM,YACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,cACN,KAAM,SACR,EACA,CACE,aAAc,QACd,KAAM,YACN,KAAM,OACR,EACA,CACE,aAAc,QACd,KAAM,YACN,KAAM,OACR,CACF,EACA,aAAc,yBACd,KAAM,GACN,KAAM,SACR,EACA,CACE,WAAY,CACV,CACE,aAAc,UACd,KAAM,aACN,KAAM,SACR,EACA,CACE,aAAc,YACd,KAAM,OACN,KAAM,OACR,EACA,CACE,aAAc,UACd,KAAM,QACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,aACN,KAAM,SACR,EACA,CACE,aAAc,YACd,KAAM,gBACN,KAAM,WACR,CACF,EACA,aAAc,4BACd,KAAM,GACN,KAAM,SACR,EACA,CACE,WAAY,CACV,CACE,WAAY,CACV,CACE,aAAc,UACd,KAAM,aACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,YACN,KAAM,SACR,CACF,EACA,aAAc,gCACd,KAAM,kBACN,KAAM,SACR,EACA,CACE,WAAY,CACV,CACE,aAAc,UACd,KAAM,aACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,YACN,KAAM,SACR,CACF,EACA,aAAc,gCACd,KAAM,0BACN,KAAM,SACR,CACF,EACA,aAAc,uBACd,KAAM,GACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,YACN,KAAM,SACR,CACF,EACA,KAAM,sBACN,QAAS,CACP,CACE,WAAY,CACV,CACE,WAAY,CACV,CACE,aAAc,gBACd,KAAM,WACN,KAAM,OACR,EACA,CACE,aAAc,UACd,KAAM,QACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,aACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,SACN,KAAM,SACR,EACA,CACE,aAAc,kBACd,KAAM,YACN,KAAM,SACR,CACF,EACA,aAAc,sBACd,KAAM,OACN,KAAM,OACR,EACA,CACE,aAAc,UACd,KAAM,UACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,aACN,KAAM,SACR,CACF,EACA,aAAc,qBACd,KAAM,GACN,KAAM,SACR,CACF,EACA,gBAAiB,UACjB,KAAM,UACR,EACA,CACE,OAAQ,CACN,CACE,WAAY,CACV,CACE,WAAY,CACV,CACE,aAAc,UACd,KAAM,UACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,OACN,KAAM,SACR,EACA,CACE,WAAY,CACV,CACE,aAAc,gBACd,KAAM,WACN,KAAM,OACR,EACA,CACE,aAAc,UACd,KAAM,QACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,uBACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,cACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,YACN,KAAM,SACR,CACF,EACA,aAAc,qBACd,KAAM,QACN,KAAM,SACR,EACA,CACE,WAAY,CACV,CACE,aAAc,gBACd,KAAM,WACN,KAAM,OACR,EACA,CACE,aAAc,UACd,KAAM,QACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,uBACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,cACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,YACN,KAAM,SACR,EACA,CACE,aAAc,kBACd,KAAM,YACN,KAAM,SACR,CACF,EACA,aAAc,6BACd,KAAM,gBACN,KAAM,SACR,EACA,CACE,aAAc,iBACd,KAAM,YACN,KAAM,OACR,EACA,CACE,aAAc,UACd,KAAM,YACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,UACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,WACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,OACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,aACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,kCACN,KAAM,SACR,CACF,EACA,aAAc,yBACd,KAAM,aACN,KAAM,OACR,EACA,CACE,aAAc,QACd,KAAM,YACN,KAAM,OACR,CACF,EACA,aAAc,iBACd,KAAM,GACN,KAAM,SACR,EACA,CACE,WAAY,CACV,CACE,WAAY,CACV,CACE,aAAc,UACd,KAAM,aACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,YACN,KAAM,SACR,CACF,EACA,aAAc,gCACd,KAAM,kBACN,KAAM,SACR,EACA,CACE,WAAY,CACV,CACE,aAAc,UACd,KAAM,aACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,YACN,KAAM,SACR,CACF,EACA,aAAc,gCACd,KAAM,0BACN,KAAM,SACR,CACF,EACA,aAAc,uBACd,KAAM,GACN,KAAM,SACR,CACF,EACA,KAAM,cACN,QAAS,CACP,CACE,WAAY,CACV,CACE,WAAY,CACV,CACE,aAAc,gBACd,KAAM,WACN,KAAM,OACR,EACA,CACE,aAAc,UACd,KAAM,QACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,aACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,SACN,KAAM,SACR,EACA,CACE,aAAc,kBACd,KAAM,YACN,KAAM,SACR,CACF,EACA,aAAc,sBACd,KAAM,OACN,KAAM,OACR,EACA,CACE,aAAc,UACd,KAAM,UACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,aACN,KAAM,SACR,CACF,EACA,aAAc,qBACd,KAAM,GACN,KAAM,SACR,CACF,EACA,gBAAiB,UACjB,KAAM,UACR,EACA,CACE,OAAQ,CAAC,EACT,KAAM,OACN,QAAS,CACP,CACE,aAAc,SACd,KAAM,GACN,KAAM,QACR,CACF,EACA,gBAAiB,OACjB,KAAM,UACR,EACA,CACE,OAAQ,CACN,CACE,WAAY,CACV,CACE,WAAY,CACV,CACE,aAAc,UACd,KAAM,UACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,OACN,KAAM,SACR,EACA,CACE,WAAY,CACV,CACE,aAAc,gBACd,KAAM,WACN,KAAM,OACR,EACA,CACE,aAAc,UACd,KAAM,QACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,uBACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,cACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,YACN,KAAM,SACR,CACF,EACA,aAAc,qBACd,KAAM,QACN,KAAM,SACR,EACA,CACE,WAAY,CACV,CACE,aAAc,gBACd,KAAM,WACN,KAAM,OACR,EACA,CACE,aAAc,UACd,KAAM,QACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,uBACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,cACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,YACN,KAAM,SACR,EACA,CACE,aAAc,kBACd,KAAM,YACN,KAAM,SACR,CACF,EACA,aAAc,6BACd,KAAM,gBACN,KAAM,SACR,EACA,CACE,aAAc,iBACd,KAAM,YACN,KAAM,OACR,EACA,CACE,aAAc,UACd,KAAM,YACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,UACN,KAAM,SACR,EACA,CACE,aAAc,UACd,KAAM,WACN,KAAM,SACR,EACA,CACE,aAAc,UAC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",
  "names": ["FlaggedNftError", "__name", "nftCollateralAddress", "tokenId", "createPublicClient", "createTransport", "decodeFunctionData", "erc20Abi", "keccak256", "parseEventLogs", "createPublicClient", "createTransport", "TransactionNotFoundError", "TransactionReceiptNotFoundError", "WaitForTransactionReceiptTimeoutError", "isEmptyCalldata", "__name", "calldata", "assertTransactionSucceeded", "receipt", "WAIT_FOR_RECEIPT_TIMEOUT_MILLIS", "RECEIPT_RETRY_DELAY_MILLIS", "withRetriedReceiptWait", "client", "options", "timeoutMillis", "retryDelayMillis", "args", "deadline", "error", "TransactionReceiptNotFoundError", "TransactionNotFoundError", "WaitForTransactionReceiptTimeoutError", "resolve", "addStepCallback", "__name", "props", "wallet", "onStepChange", "publicClient", "withRetriedReceiptWait", "createPublicClient", "createTransport", "originalSignTypedData", "originalWriteContract", "originalSendTransaction", "waitForSentCallReceipt", "transactionHash", "replacementReason", "receipt", "reason", "assertTransactionSucceeded", "signTypedData", "typedData", "step", "signature", "trackTransaction", "to", "functionNameOrSelector", "broadcast", "call", "chainId", "params", "data", "zeroAddressViem", "isDefined", "__name", "value", "CONTRACT_DOMAIN_NAME", "areSameAddress", "__name", "adr1", "adr2", "isDefined", "zeroAddress", "zeroAddressViem", "zeroHash", "zeroHex", "REORG_SAFETY_BUFFER", "BORROWER_SIGNATURE_LIFETIME", "__ETH_ADDRESS", "__HYPE_ADDRESS", "__RETH_ADDRESS", "isNativeCurrency", "__name", "address", "nativeAddress", "areSameAddress", "getAddress", "ApolloClient", "ApolloLink", "createHttpLink", "InMemoryCache", "setContext", "withScalars", "buildSchema", "ApolloClient", "ApolloLink", "createHttpLink", "InMemoryCache", "gql", "getAddress", "buildSiweMessage", "__name", "domain", "address", "statement", "uri", "version", "chainId", "nonce", "issuedAt", "checksummed", "getAddress", "messageIssuedAt", "authApiUrl", "__name", "apiDomain", "getAuthClient", "link", "ApolloLink", "createHttpLink", "operationName", "ApolloClient", "InMemoryCache", "signIn", "wallet", "issuedAt", "authClient", "data", "errors", "gql", "e", "nonce", "message", "buildSiweMessage", "signature", "siweData", "siweErrors", "accessToken", "SessionToken", "token", "request", "headers", "lending_schema_default", "apiUrl", "__name", "lendingApiDomain", "lendingSchema", "buildSchema", "lending_schema_default", "typesMap", "parsed", "raw", "authLink", "credential", "setContext", "request", "link", "ApolloLink", "withScalars", "createHttpLink", "operationName", "apolloClient", "wallet", "SessionToken", "ApolloClient", "InMemoryCache", "gql", "LoanStatusType", "MarketplaceEnum", "OfferStatus", "OffersSortField", "Ordering", "TokenStandardType", "CurrencyInfoFragmentDoc", "gql", "CurrencyAmountInfoFragmentDoc", "SaleOfferInfoFragmentDoc", "ListNftDocument", "UnlistNftDocument", "GenerateCollectionOfferHashDocument", "SaveCollectionOfferDocument", "HideOfferDocument", "HideOffersDocument", "GenerateSingleNftOfferHashDocument", "SaveSingleNftOfferDocument", "GenerateTraitOfferHashDocument", "SaveTraitOfferDocument", "UnhideOfferDocument", "CancelTradeOrdersDocument", "HideOrderDocument", "PublishBulkOrdersDocument", "PublishBuyNowPayLaterOrderDocument", "PublishDealDocument", "PublishOrderForCollectionDocument", "PublishOrderForNftDocument", "PublishOrderForNftSetDocument", "PublishOrderForTraitDocument", "PublishSellAndRepayOrderDocument", "ShowOrderDocument", "GenerateRenegotiationOfferHashDocument", "HideRenegotiationOfferDocument", "SaveRenegotiationOfferDocument", "UnhideRenegotiationOfferDocument", "CollectionsDocument", "CollectionByContractAddressDocument", "CollectionsIdByContractAddressDocument", "CollectionIdBySlugDocument", "CollectionStepsByIdDocument", "ListListingsDocument", "ListLoansDocument", "NftFlaggedByContractAddressAndTokenIdDocument", "NftIdByContractAddressAndTokenIdDocument", "NftIdBySlugTokenIdDocument", "OwnedNftsDocument", "ListOffersDocument", "BuyWithLoanListingDocument", "GetCancelOrdersCalldataDocument", "GetSaleCalldataDocument", "PreviewItemLoanOfferCompetitionDocument", "PreviewRenegotiationCompetitionDocument", "getSdk", "requester", "variables", "options", "__name", "validDocDefOps", "getSdkApollo", "client", "onStepChange", "getSdk", "__name", "doc", "variables", "options", "apolloVariables", "definition", "response", "mapPageInfo", "__name", "endCursor", "hasNextPage", "qualifyingPreview", "preview", "apiDomain", "lendingApiDomain", "Api", "apiClient", "wallet", "onStepChange", "gqlClient", "apolloClient", "getSdkApollo", "offerInput", "publication", "renegotiationInput", "offer", "zeroAddress", "response", "nftCollateralAddress", "orderInput", "dealInput", "bulkInput", "renegotiation", "fallbackOffer", "props", "edges", "pageInfo", "offers", "edge", "__typename", "node", "nftCollateralTokenId", "isDefined", "loans", "source", "getAddress", "listings", "collection", "collections", "wrapperAddress", "decodeFunctionData", "auctionLoanLiquidatorABI", "erc20ABI", "erc721ABI", "multiSourceLoanABI", "userVaultABI", "createPublicClient", "createTransport", "decodeFunctionData", "encodeFunctionData", "getContract", "parseEventLogs", "BaseContract", "__name", "walletClient", "address", "abi", "publicClient", "bcClient", "withRetriedReceiptWait", "createPublicClient", "createTransport", "getContract", "eventName", "logs", "parseEventLogs", "_", "functionName", "args", "options", "request", "data", "value", "txHash", "receipt", "decoded", "decodeFunctionData", "reencoded", "encodeFunctionData", "dataSuffix", "Erc20", "BaseContract", "__name", "address", "walletClient", "publicClient", "erc20ABI", "calldata", "decoded", "decodeFunctionData", "oldErc721WrapperAbi", "OldERC721Wrapper", "BaseContract", "__name", "walletClient", "contractAddress", "publicClient", "oldErc721WrapperAbi", "tokenId", "txHash", "assertTransactionSucceeded", "zeroAddress", "isAddress", "zeroAddress", "hyperliquid", "mainnet", "robinhood", "entries", "__name", "obj", "ANVIL_DEFAULT_CHAIN_ID", "anvilChainId", "__name", "rawChainId", "parsedChainId", "ensureAddress", "value", "isAddress", "buildContractsByChain", "__name", "anvilChainId", "ensureAddress", "zeroAddress", "mainnet", "hyperliquid", "robinhood", "getContracts", "chain", "contracts", "findDeployedVersion", "deployments", "address", "entries", "_", "versionAddress", "areSameAddress", "getVersionFromMslAddress", "version", "getVersionFromPurchaseBundlerAddress", "getVersionFromUserVaultAddress", "buildCurrenciesByChain", "__name", "anvilChainId", "zeroAddress", "mainnet", "hyperliquid", "robinhood", "getCurrencies", "chain", "currencies", "positionMigratorAbi", "toInteger", "__name", "bn", "bpsToPercentage", "bps", "perToBps", "percent", "sumBy", "__name", "array", "key", "acc", "item", "sumBigInt", "a", "sum", "cur", "maxBy", "min", "b", "max", "mulDivUp", "c", "SECONDS_IN_MIN", "SECONDS_IN_HOUR", "SECONDS_IN_DAY", "DAYS_IN_YEAR", "SECONDS_IN_YEAR", "millisToSeconds", "__name", "millis", "toInteger", "secondsToMillis", "seconds", "toDate", "__name", "date", "secondsToMillis", "isAddress", "BPS", "renegotiationToMslRenegotiation", "__name", "renegotiation", "loanId", "zeroAddress", "loanToMslLoan", "loan", "nftCollateralAddress", "areSameAddress", "isAddress", "source", "s", "protocolFee", "dateStartTime", "toDate", "dateContractStartTime", "millisDelta", "duration", "millisToSeconds", "startTime", "getMslLoanId", "mslLoan", "maxBy", "getRemainingSeconds", "now", "finishDate", "secondsToMillis", "isLoanVersion", "address", "chainId", "version", "getVersionFromMslAddress", "getTotalOwed", "bufferSeconds", "getTotalOwedAt", "timestamp", "sumBigInt", "getInterest", "mulDivUp", "SECONDS_IN_YEAR", "ARRAY_SUFFIX_REGEX", "pickTypedFields", "__name", "value", "type", "types", "elementType", "element", "fields", "struct", "field", "sanitizeTypedDataMessage", "parameters", "PositionMigrator", "BaseContract", "__name", "structToSign", "sanitizeTypedDataMessage", "address", "walletClient", "msl", "publicClient", "positionMigratorAbi", "currentBalance", "previousMsl", "repaymentCalldata", "emitCalldata", "Aave", "getContracts", "repaymentArgs", "totalOwed", "getTotalOwed", "SECONDS_IN_HOUR", "borrowArgs", "max", "migrationArgs", "zeroAddress", "txHash", "receipt", "decodeAbiParameters", "auctionWithBuyoutLoanLiquidatorAbi", "multiSourceLoanAbi", "purchaseBundlerAbi", "userVaultAbi", "erc1155Abi", "PurchaseBundlerV1", "_PurchaseBundlerV1", "BaseContract", "__name", "address", "walletClient", "msl", "publicClient", "purchaseBundlerAbi", "emitCalldata", "value", "txHash", "receipt", "repaymentCalldata", "price", "repaymentArgs", "callbackData", "decodeAbiParameters", "principalAddress", "nftCollateralAddress", "nftCollateralTokenId", "Aave", "getContracts", "decodeAbiParameters", "multiSourceLoanAbi", "purchaseBundlerV2ABI", "PurchaseBundlerV2", "_PurchaseBundlerV2", "BaseContract", "__name", "address", "walletClient", "msl", "publicClient", "purchaseBundlerV2ABI", "emitCalldata", "value", "txHash", "receipt", "repaymentCalldata", "swapData", "price", "repaymentArgs", "callbackData", "decodeAbiParameters", "nftCollateralAddress", "nftCollateralTokenId", "principalAddress", "areSameAddress", "isNativeCurrency", "initialPayment", "executeSellSwapData", "repayFlashLoanSwapParams", "Aave", "getContracts", "purchaseCurrency", "getCurrencies", "cryptopunksABI", "iCryptoPunks721Abi", "oldErc721Abi", "seaportABI", "encodeAbiParameters", "auctionLoanLiquidatorABI", "multiSourceLoanABI", "AllV4", "_AllV4", "BaseContract", "__name", "walletClient", "address", "publicClient", "auctionLoanLiquidatorABI", "collectionContractAddress", "tokenId", "bid", "txHash", "receipt", "events", "loan", "loanStruct", "source", "encodeAbiParameters", "AllV5", "BaseContract", "__name", "walletClient", "address", "publicClient", "auctionLoanLiquidatorABI", "collectionContractAddress", "tokenId", "bid", "auction", "txHash", "receipt", "events", "loan", "AllV6", "BaseContract", "__name", "walletClient", "address", "publicClient", "auctionWithBuyoutLoanLiquidatorAbi", "collectionContractAddress", "tokenId", "bid", "auction", "txHash", "receipt", "events", "lockupTimeSeconds", "lockupSeconds", "ellapsedSeconds", "millisToSeconds", "loan", "decodeFunctionData", "zeroAddress", "MslV4", "BaseContract", "__name", "walletClient", "address", "publicClient", "multiSourceLoanABI", "CONTRACT_DOMAIN_NAME", "structToSign", "sanitizeTypedDataMessage", "id", "txHash", "receipt", "events", "_", "minId", "offerExecution", "tokenId", "offer", "lenderOfferSignature", "zeroAddress", "emitArgs", "mslEmitArgs", "args", "loan", "nftReceiver", "loanId", "receiver", "renegotiationId", "refinancings", "offers", "loans", "sources", "newAprBps", "index", "targetPrincipal", "principalAmount", "refinancingSource", "source", "refinancingPrincipalAmount", "sumBy", "getMslLoanId", "millisToSeconds", "SECONDS_IN_MIN", "signature", "executeRenegotiationTxn", "foreclosedEvents", "sentToLiquidatorEvents", "calldata", "decoded", "decodeFunctionData", "decodeFunctionData", "encodeFunctionData", "MslV5", "BaseContract", "__name", "walletClient", "address", "publicClient", "multiSourceLoanABI", "CONTRACT_DOMAIN_NAME", "structToSign", "sanitizeTypedDataMessage", "id", "txHash", "receipt", "events", "ids", "encoded", "encodeFunctionData", "args", "minId", "offerExecution", "tokenId", "expirationTime", "offer", "amount", "lenderOfferSignature", "millisToSeconds", "SECONDS_IN_DAY", "emitArgs", "mslEmitArgs", "delegations", "emit", "encodedRevokeDelegations", "delegation", "delegate", "encodedEmitLoan", "revokeEvents", "emitEvents", "results", "emitLoanArgs", "loan", "loanId", "signableRepaymentData", "newestSource", "newestSourceDuration", "lockPeriodBps", "lockPercentage", "bpsToPercentage", "lockupTimeSeconds", "ellapsedSeconds", "renegotiationId", "refinancings", "data", "sources", "newAprBps", "index", "targetPrincipal", "principalAmount", "refinancingSource", "source", "refinancingPrincipalAmount", "sumBy", "getMslLoanId", "REORG_SAFETY_BUFFER", "getRemainingSeconds", "zeroHash", "signature", "executeRenegotiationTxn", "to", "rights", "enable", "collection", "foreclosedEvents", "sentToLiquidatorEvents", "calldata", "decoded", "decodeFunctionData", "repayArgs", "withSignature", "repayLoanArgs", "decodeFunctionData", "encodeFunctionData", "zeroAddress", "multiSourceLoanAbi", "zeroHash", "delegationRevocations", "__name", "delegations", "delegation", "to", "rights", "zeroHash", "right", "MSL_V6_ABI_BY_VERSION", "multiSourceLoanAbi", "MslV6", "BaseContract", "__name", "walletClient", "address", "version", "publicClient", "CONTRACT_DOMAIN_NAME", "structToSign", "sanitizeTypedDataMessage", "id", "txHash", "receipt", "events", "ids", "encoded", "encodeFunctionData", "args", "minId", "_", "offerExecution", "nftCollateralAddress", "tokenId", "duration", "principalReceiver", "expirationTime", "callbackData", "lifetime", "SECONDS_IN_DAY", "offer", "amount", "rest", "zeroAddress", "millisToSeconds", "loanId", "loan", "executionData", "emitArgs", "mslEmitArgs", "mslEmits", "emit", "encodedEmitLoans", "mslEmit", "unpairedEvents", "eventIndex", "areSameAddress", "event", "delegations", "collateralAddress", "encodedRevokeDelegations", "delegationRevocations", "to", "rights", "encodedEmitLoan", "revokeEvents", "emitEvents", "results", "signableRepaymentData", "newestSource", "newestSourceDuration", "lockPeriodBps", "lockPercentage", "bpsToPercentage", "lockupTimeSeconds", "ellapsedSeconds", "loanEndDate", "endLockupSeconds", "secondsToMillis", "renegotiationId", "refinancings", "data", "sources", "newAprBps", "index", "trancheIndex", "source", "refinancingPrincipalAmount", "sumBy", "getMslLoanId", "REORG_SAFETY_BUFFER", "getRemainingSeconds", "zeroHash", "signature", "executeRenegotiationTxn", "delegation", "enable", "collection", "foreclosedEvents", "sentToLiquidatorEvents", "calldata", "decoded", "decodeFunctionData", "repayArgs", "withSignature", "repayLoanArgs", "emitLoanArgs", "BORROWER_SIGNATURE_LIFETIME", "UserVaultV5", "BaseContract", "__name", "walletClient", "address", "publicClient", "userVaultABI", "vaultId", "collections", "tokenIds", "tokens", "txHash", "receipt", "events", "event", "nfts", "currencies", "#mintVault", "receipts", "groupedNfts", "nft", "collection", "UserVaultV6", "BaseContract", "__name", "walletClient", "address", "publicClient", "userVaultAbi", "vaultId", "collections", "tokenIds", "tokens", "erc1155Collections", "erc1155TokenIds", "txHash", "receipt", "events", "tokenEvents", "erc1155Events", "event", "nfts", "currencies", "#mintVault", "receipts", "groupedNfts", "nft", "collection", "amounts", "currencyAmount", "amount", "tokenAddress", "Contracts", "__name", "publicClient", "walletClient", "args", "MslV4", "MslV5", "MslV6", "AllV4", "AllV5", "AllV6", "PurchaseBundlerV1", "PurchaseBundlerV2", "UserVaultV5", "UserVaultV6", "address", "contracts", "getContracts", "abi", "areSameAddress", "seaportABI", "cryptopunksABI", "BaseContract", "version", "getVersionFromMslAddress", "mslContractAddress", "All", "mslVersion", "msl", "resolvedAddress", "getVersionFromPurchaseBundlerAddress", "PurchaseBundler", "getVersionFromUserVaultAddress", "UserVault", "standard", "erc721ABI", "oldErc721Abi", "iCryptoPunks721Abi", "erc1155Abi", "OldERC721Wrapper", "Erc20", "PositionMigrator", "encodeFunctionData", "encodePacked", "erc20Abi", "erc721Abi", "keccak256", "parseAbi", "zeroAddress", "zeroHash", "encodeAbiParameters", "encodeFunctionData", "encodePacked", "parseAbi", "CROSS_CURRENCY_DEFAULT_SLIPPAGE_BPS", "CROSS_CURRENCY_QUOTE_SECONDS", "universalRouterExecuteAbi", "parseAbi", "crossCurrencyDeadline", "__name", "now", "maturity", "expirations", "deadline", "earliest", "expiration", "calculateCrossCurrencyBudget", "quotedInput", "slippageBps", "premiumBps", "netNewPrincipal", "BPS", "maximumInput", "mulDivUp", "premium", "maximumFlashRepayment", "max", "buildCrossCurrencySwap", "borrower", "oldCurrency", "newCurrency", "router", "repaymentAmount", "path", "encodePacked", "encodeFunctionData", "encodeAbiParameters", "aaveAbi", "parseAbi", "managerAbi", "bundlerReadAbi", "quoterAbi", "CrossCurrencyRenegotiation", "BaseContract", "__name", "previousMsl", "msl", "walletClient", "publicClient", "getContracts", "positionMigratorAbi", "input", "parsed", "block", "deadline", "crossCurrencyDeadline", "offer", "executionData", "repaymentAmount", "getTotalOwedAt", "Aave", "loanHash", "premiumBps", "reserve", "quote", "encodePacked", "zeroHash", "configuration", "budget", "calculateCrossCurrencyBudget", "CROSS_CURRENCY_DEFAULT_SLIPPAGE_BPS", "erc20Abi", "currencyManager", "collectionManager", "currencySupported", "collateralSupported", "replacementProtocolFeeBps", "executionCalldata", "keccak256", "allowance", "oldAllowance", "borrowerBalance", "nftApproval", "unsignedEmit", "protocolFee", "erc721Abi", "areSameAddress", "repaymentCalldata", "emitCalldata", "swapData", "buildCrossCurrencySwap", "closeCalldata", "encodeFunctionData", "purchaseBundlerV2ABI", "txHash", "receipt", "initiated", "event", "repaid", "args", "contracts", "address", "zeroAddress", "loan", "loanToMslLoan", "newCurrency", "currencies", "getCurrencies", "supported", "currency", "supportedCurrency", "newPrincipal", "originationFee", "offerIdentities", "amount", "identity", "purchaseBundler", "maximumInput", "bundlerWhitelisted", "mslWhitelisted", "paused", "pairedMsl", "permitAllowance", "fundsByLender", "lender", "fee", "required", "mulDivUp", "BPS", "cancelled", "used", "balance", "MAX_NUMBER", "decodeFunctionData", "erc20Abi", "hashTypedData", "parseAbi", "zeroAddress", "zeroHash", "mainnet", "decodeAbiParameters", "encodeAbiParameters", "encodeFunctionData", "encodePacked", "erc20Abi", "getAbiItem", "keccak256", "parseAbi", "toFunctionSelector", "zeroAddress", "zeroHash", "mainnet", "executeSellSelector", "toFunctionSelector", "getAbiItem", "purchaseBundlerV2ABI", "managerAbi", "parseAbi", "quoterAbi", "readAbi", "decodePurchaseCallback", "__name", "data", "decodeAbiParameters", "PurchaseBundlerV2", "callbackPurchaseCurrency", "callback", "isNativeCurrency", "areSameAddress", "zeroAddress", "assertCreditPurchaseExecution", "expected", "received", "parameter", "multiSourceLoanAbi", "encodeAbiParameters", "assertCreditPurchaseRoute", "client", "quote", "whitelisted", "taxes", "allowance", "getContracts", "mainnet", "erc20Abi", "buildCreditPurchaseSwap", "loanCurrency", "purchaseCurrency", "amount", "limit", "exactInput", "deadline", "caller", "router", "weth", "getCurrencies", "native", "outputCurrency", "encodeFunctionData", "universalRouterExecuteAbi", "path", "encodePacked", "inputs", "quoteCreditPurchase", "input", "wallet", "sellerMsl", "deployments", "currencies", "currency", "repayment", "sellerCallback", "buyerBundler", "sellerBundler", "block", "crossCurrencyDeadline", "slippage", "requested", "BPS", "buyerPaused", "sellerPaused", "buyerPair", "sellerPair", "loanHash", "zeroHash", "initialPayment", "inputAmount", "loanSwapData", "quotePurchaseFunding", "repaymentSwapData", "sellCalldata", "callbackData", "keccak256", "price", "netPrincipal", "slippageBps", "minimumInitialPayment", "route", "premiumBps", "flash", "flashPrincipal", "needed", "mulDivUp", "funded", "min", "quoted", "partial", "decodeFunctionData", "encodeAbiParameters", "isAddress", "isHex", "parseAbi", "zeroAddress", "seaportABI", "parseAbi", "parametersAbi", "tokenSaleAbi", "assertPurchaseMarketplace", "__name", "listing", "quote", "input", "data", "marketplace", "decoded", "decodeFunctionData", "orders", "criteria", "recipient", "areSameAddress", "zeroAddress", "ask", "bid", "expectedAsk", "parseSeaportParameters", "encodeAbiParameters", "currencyType", "isPayment", "item", "expectedFees", "fee", "BPS", "nft", "privateRecipient", "expectedConsideration", "counter", "sum", "value", "record", "offer", "parseItems", "consideration", "index", "address", "integer", "hash", "parsed", "isAddress", "isHex", "routeAbi", "parseAbi", "managerAbi", "buyWithLoanApprovals", "__name", "quote", "isNativeCurrency", "native", "currency", "getCurrencies", "mainnet", "flashPrincipal", "repayment", "mulDivUp", "BPS", "areSameAddress", "quoteBuyWithLoan", "context", "input", "deployments", "getContracts", "currencies", "loanCurrency", "buyWithLoanCurrency", "listing", "buyWithLoanListing", "purchaseCurrency", "zeroAddress", "netPrincipal", "principal", "amount", "index", "block", "expiration", "offerExpirations", "offer", "seller", "deadline", "crossCurrencyDeadline", "totalPrice", "fees", "fee", "buyerBundler", "base", "creditPurchaseQuote", "sellerQuote", "quoteFlashRoute", "quoteRouteFunding", "orderInput", "buyWithLoanOrderInput", "typed", "unsignedBuyWithLoanExecution", "callbackData", "callback", "decodePurchaseCallback", "assertOrdinaryPurchaseCallback", "mustBeOwner", "assertPurchaseMarketplace", "execution", "buyWithLoanExecution", "assertBuyWithLoanTypedData", "result", "assertBuyWithLoanRoute", "route", "premiumBps", "quotePurchaseFunding", "funding", "sellerMsl", "MslV6", "callbackPurchaseCurrency", "loanHash", "zeroHash", "orderId", "attempt", "response", "buyWithLoanCollateral", "received", "buyerMsl", "assertCreditPurchaseExecution", "hashTypedData", "paused", "pair", "taxes", "assertCreditPurchaseRoute", "erc20Abi", "buyWithLoan", "expected", "assertBuyWithLoanApprovals", "decoded", "decodeFunctionData", "multiSourceLoanAbi", "bundler", "approval", "address", "isNative", "__name", "marketplace", "isOpensea", "assertHideableOrder", "isAsk", "lowerBound", "__name", "lo", "hi", "predicate", "mid", "calculateProratedOriginationFee", "__name", "principal", "aprBps", "duration", "effectiveApr", "backendGetEaprBps", "fee", "adjustedPrincipal", "SECONDS_IN_YEAR", "BPS", "eaprBps", "perToBps", "getFeeBasedOnExtraAprBps", "extraAprBps", "left", "max", "right", "lowerBound", "f", "MAX_CANCEL_ORDERS", "PUBLISHED_ORDER_TYPENAMES", "isPublishedOrder", "__name", "response", "publishedTypename", "Gondi", "_Gondi", "publications", "key", "value", "offer", "contract", "publication", "_", "wallet", "publicClient", "apiClient", "onStepChange", "skipFlaggedNftCheck", "withRetriedReceiptWait", "createPublicClient", "createTransport", "Contracts", "Api", "props", "walletWithSteps", "addStepCallback", "calculateProratedOriginationFee", "buildSiweMessage", "mslContractAddress", "skipSave", "contractAddress", "publicationKey", "pending", "saved", "offerInput", "zeroAddress", "offerHash", "offerId", "validators", "lenderAddress", "signerAddress", "borrowerAddress", "fee", "collateralAddress", "structToSign", "signature", "signedOffer", "validator", "zeroHash", "generateOfferHash", "saveOffer", "baseOffer", "defaults", "zeroHex", "orderInput", "orders", "bulkInput", "dealInput", "sellAndRepayOrderInput", "amounts", "purchaseBundlerAddress", "loanDuration", "offers", "tokenId", "repaymentCalldata", "sellAndRepaySwapData", "repayFlashLoanSwapParams", "creditPurchaseQuote", "buyWithLoanQuote", "buyWithLoan", "millisToSeconds", "BORROWER_SIGNATURE_LIFETIME", "borrowed", "acc", "amount", "index", "mulDivUp", "isDefined", "pb", "PurchaseBundlerV1", "max", "PurchaseBundlerV2", "BPS", "isNativeCurrency", "quote", "deployments", "getContracts", "areSameAddress", "keccak256", "seller", "MslV6", "assertCreditPurchaseRoute", "erc20Abi", "confirmedExecution", "typed", "assertCreditPurchaseExecution", "buyerMsl", "decoded", "decodeFunctionData", "multiSourceLoanAbi", "execution", "input", "quoteBuyWithLoan", "sellerMsl", "quoteCreditPurchase", "order", "orderIds", "onChain", "offChainOrderIds", "cancelOrdersCalldata", "transactions", "calldata", "marketPlaceAddress", "cancelledOrders", "id", "ids", "minId", "renegotiation", "isV1", "isV2", "isLoanVersion", "renegotiationInput", "renegotiationId", "loanId", "renegotiationOffer", "aprBps", "duration", "expirationTime", "principalAmount", "fallbackOffer", "isAsk", "assertHideableOrder", "idx", "nftCollateralAddress", "nft", "wrappedNft", "FlaggedNftError", "args", "loans", "offerExecution", "msl", "loan", "executionData", "loanToMslLoan", "previousMsl", "nextMsl", "emitCalldata", "currentBalance", "CrossCurrencyRenegotiation", "nftReceiver", "limit", "cursor", "sortBy", "filterBy", "status", "collection", "borrower", "contractAddresses", "fields", "rest", "collections", "user", "marketPlaces", "result", "currency", "standards", "edges", "pageInfo", "edge", "ownedNfts", "contracts", "renegotiationToMslRenegotiation", "delegations", "delegation", "to", "enable", "rights", "externalContract", "emit", "collectionContractAddress", "bid", "auction", "nftAddress", "standard", "externalTo", "txHash", "receipt", "events", "from", "buildTransferResult", "getTransferEvents", "logs", "cryptopunks", "tokenAddress", "erc20", "MAX_NUMBER", "nfts", "currencies", "userVaultAddress", "userVault", "data", "wrapperAddress", "wrapper", "naked", "stashAddress", "currentOwner", "txTransfer", "state", "stash", "punksAddress", "account", "holder", "assertTransactionSucceeded", "price", "swapData", "isNative", "isOpensea", "saleCalldata", "isEmptyCalldata", "waitTxInBlock", "parseEventLogs", "seaportABI", "FULFILLED", "REJECTED"]
}
