Static createOptional publication: LoanOfferPublicationInputOptional unsigned admission metadata. Previews before signing
and throws the backend rejection reason. Identical retries after failed saves
reuse the signature; a successful save clears it. Throws Offer expired once
expirationTime has passed, before asking for a signature.
Signs and saves a collection offer without an item preview.
A lenderRefinanceDisabled offer signs for MultiSourceLoan v3.2, the only version
that signs the flag; any other offer signs for v3.1.
Optional publication: LoanOfferPublicationInputOptional unsigned admission metadata. Identical retries after
failed saves reuse the signature; a successful save clears it. Throws Offer expired
once expirationTime has passed, before asking for a signature.
The backend evaluates collection offers independently for each item.
A loan offer any NFT of the collection carrying every one of offer.traitIds can borrow against.
A lenderRefinanceDisabled offer signs for MultiSourceLoan v3.2, the only version
that signs the flag; any other offer signs for v3.1.
Publishes a bid or listing, signing the order when the API asks for it.
The input picks the kind: tokenId for one NFT, traitIds for a trait bid,
nftIds for a set bid that fills with any of the listed NFTs of
collectionId (2 to 1,000), condition.anyTraitIds for an OR trait bid that
fills with any NFT of collectionId carrying one of those values of a trait
key, condition.expression for a condition bid that fills with any NFT of
collectionId an all/any/not tree of traits and NFTs matches, and
collectionId alone for a collection bid.
A trait, set or collection bid fills up to maxExecutions times.
Publishes orders like makeOrders and lists each one on OpenSea too, under the same
signature. Public asks on Ethereum only; the owner must have approved OpenSea's conduit for
each collection. A refusal never touches the GONDI ask: openSeaListings holds one entry per
ask with its status. PENDING means the listing waits to be posted to OpenSea: follow it
with openSeaListingResults. POSTED carries its orderHash, and FAILED the error
saying why OpenSea did not take it, with a failureReason when the caller can act on it:
relistOrdersOnOpenSea signs a failed listing again. An order's openSeaPrice, at least its
price, prices its OpenSea listing on its own, so the seller can receive there what they do
on GONDI after OpenSea's higher fees.
Signs again the OpenSea listings of the wallet's asks orderIds that failed, for example
because OpenSea's fees for the collection changed after makeOrdersOnOpenSea signed them
(failureReason: TERMS_CHANGED). The GONDI asks are not touched: same orders, same ids. Each
listing is rebuilt on OpenSea's current terms at the OpenSea price it was first signed at,
and one signature covers them all.
A listing that cannot be signed again, because its ask ended or OpenSea no longer lists the
collection, is left out of the signature and returned as FAILED with its error; when none
can be, the wallet is not asked to sign.
The ids of the GONDI asks whose OpenSea listing is FAILED, 1 to 50.
One entry per order: PENDING once its newly signed listing waits to be posted to
OpenSea, or FAILED with the error. Follow the pending ones with openSeaListingResults.
When the API refuses the whole call: an order has no failed
OpenSea listing (NOT_FAILED), or the signature did not match the current listings, usually
because the terms changed again while signing (STALE_SIGNATURE: call the method again, a
bounded number of times). Any other failure, such as the wallet rejecting the signature, is
thrown as it is.
What became of the OpenSea listing of each of the wallet's asks among orderIds, as signed
by makeOrdersOnOpenSea or relistOrdersOnOpenSea: PENDING until it is POSTED to
OpenSea or FAILED, then with its error and, when the caller can act on it, its
failureReason. An order with no OpenSea listing has no entry.
Optional purchaseOptional creditOptional buyOptional repaymentOptional sellOptional repayQuotes ordinary, v3.1 flash and v3.2 nested purchases without signing or publishing an active order.
Quotes capped buyer funding for v3.1 credit against an Ethereum v3.2 seller.
Cancels the wallet's trade orders by id, at most 100 per call, with one API call. Every order ends up unfillable: the default only skips the transaction for the bids no one can fill without the API, and cancels every other order on-chain.
cancelTradeOrders cancels the bids that cancelsOffChain (restricted to the GONDI signed
zone, so they only fill with a signature the API issues) without a transaction, and returns
the Seaport cancel calldata of the rest. Each calldata entry is sent as its own transaction,
one after another: usually one per marketplace, and more when the API splits a marketplace's
cancel because it would not fit in one transaction. So the number of transactions is only
known from the result, and a later one can fail after an earlier one was sent.
An off-chain cancel is final once the last fill signature already issued for the bid expires,
a few minutes at most. Pass onChain: true to cancel every order on-chain instead, final as
soon as the transaction is mined.
Optional onThe ids cancelled off-chain, and one { txHash, waitTxInBlock } per transaction
sent, in the order they were sent.
Hides a loan offer from the GONDI API's listings. Off-chain only: the lender's signature stays valid, so anyone already holding it can still start a loan with the offer. Use cancelOffer to make it unexecutable on-chain.
Hides several loan offers from the GONDI API's listings. Off-chain only, like hideOffer: use cancelOffers to make them unexecutable on-chain.
Lists a loan offer hidden with hideOffer in the GONDI API again.
Signs and saves a refinance offer, optionally with a matching fallback.
Hides a renegotiation offer from the GONDI API's listings. Off-chain only: the lender's signature stays valid, so anyone already holding it can still refinance with the offer. Use cancelRefinanceOffer to make it unexecutable on-chain.
Lists a renegotiation offer hidden with hideRenegotiationOffer again.
Hides a bid. isAsk is required so a listing is rejected here rather than
by the API, which refuses it either way.
Listings can no longer be hidden — cancel one on-chain instead. Still hides bids.
Unhides a bid. isAsk is required so a listing is rejected here rather than
by the API, which refuses it either way.
Listings can no longer be hidden — a listing hidden before that change stays hidden and is cancelled on-chain. Still unhides bids.
Optional amounts: bigint[]Emits several loans in one transaction: either every loan is emitted or none is.
Every offer of every loan must belong to the same MultiSourceLoan contract, of version 3 or
later, and each NFT goes through the flagged-NFT check emitLoan runs before anything is sent.
waitTxInBlock resolves to loans, one per item and in the same order, each shaped as
emitLoan returns it.
IMPLEMENTATION NOTE: each loan is an encoded emitLoan call inside the contract's
multicall(bytes[]), which MultiSourceLoan inherits from Multicall
(florida-contracts src/lib/loans/MultiSourceLoan.sol, src/lib/Multicall.sol). It
delegatecalls the calls in order, so msg.sender stays the borrower, and reverts the whole
transaction with MulticallFailed(index, reason) as soon as one of them fails.
Repays loan and emits its replacement from executionData in one flash-loan backed
transaction. The borrower signs the expiring execution data first and the repayment data,
which carries no nonce or expiry, last, so declining an earlier prompt never leaves a
repayment signature behind. Every read, the migrator nonce included, finishes before the
first prompt, so a failed read cannot strand a signature either.
Quotes atomic USDC/WETH loan replacement, including capped borrower spending.
Prepare old-currency repayment and NFT approvals before obtaining the final quote. Approve its exact maximumFlashRepayment, then execute that same quote before expiry.
Optional nftOptional statsOptional standards?: TokenStandardType[]Optional collections?: number[]Optional cursor?: stringOptional contractOptional slug?: undefinedLists trade orders — bids and listings — across the marketplaces GONDI indexes, newest first
unless sortBy says otherwise. Only active orders unless statuses is given.
One page of orders, with the cursor of the next one.
Reads what pricing and placing a bid or a listing on a collection needs: its id and contract
address, the Seaport conduit key its listings are approved through (zero for Seaport itself),
its floor (the cheapest active listing in currencies, any currency when omitted), its highest
bid that any item can fill, and its royalties (required ones must be paid as listing fees).
Looks the collection up by slug, the lookup the API answers fastest.
Optional currencies?: `0x${string}`[]Error when no collection has slug.
Lists the NFTs the wallet holds, one page at a time.
The page's NFTs, newest NFT id first, and its pageInfo.
The MultiSourceLoan address makeSingleNftOffer, makeCollectionOffer and
makeTraitOffer sign for on the wallet's chain when the caller names none:
the to a lender approves the principal for before publishing those offers.
v3.2 is the only version whose signed LoanOffer carries
lenderRefinanceDisabled, so a flagged offer signs for it and throws on a
chain without a v3.2 deployment; any other offer, or no offer, signs for the
default contract.
Optional lenderDelegate Multicall should be used when token is used as collateral for an active loan. Multicall will be performed to the contract address of the first delegation.
Delegate should be used when token is used as collateral for an active loan.
Optional rights?: `0x${string}`RevokeDelegate should be used when token is not being used as collateral.
Optional contract?: `0x${string}`RevokeDelegationsAndEmitLoan should be used when token has been delegated without being revoked, and a new loan wants to be emitted, erasing the delegations provided as argument in the same transaction as the emit.
The token's delegations, as the API's Delegation.delegateTo and
Delegation.rights report them: each { to, rights } is revoked with every rights value it
lists, and a bare address with the full-rights zeroHash.
The bid refund in token that the auction liquidator of the loan contract at loanAddress
holds for bidder (the wallet by default) because returning it on an outbid failed.
Only contract version 3.2 holds refunds; older versions always read 0.
Optional bidder?: `0x${string}`Claims the wallet's bid refund in token from the auction liquidator of the loan contract at
loanAddress. Only contract version 3.2 holds refunds.
Whether the wallet has approved to as operator for every NFT of nftAddress.
Approves to, the contract that will pull the NFT, as operator for all of nftAddress.
Transfer an NFT to another wallet. The sender is the connected wallet account.
Supports ERC721 (default), ERC1155, naked CryptoPunks and old (pre-ERC721) collections.
amount only applies to ERC1155 transfers.
Optional standard?: TransferNftStandardOptional amount?: bigintWhether the wallet's allowance of tokenAddress to to covers amount.
Approves to, the contract that will pull it, to spend amount (default unlimited).
Optional amount?: bigintOptional currencies?: CreateVaultCurrenciesOptional currencies?: CreateVaultCurrenciesOptional userWhere the wallet's CryptoPunk tokenId stands on its way into CryptoPunks 721, read from
chain: 'wallet' while the wallet holds it naked, 'stash' once it sits in the wallet's
Stash waiting for wrapPunk721, 'wrapped' once the wallet holds its 721 token, and
'other' when none of these holds.
IMPLEMENTATION NOTE: the punks market's punkIndexToAddress names the punk's holder and
CryptoPunks721.punkProxyForUser the wallet's Stash, deployed or not yet; a wrapped punk is
held by the 721 contract, which mints its token to the wallet
(https://721.cryptopunks.app, https://etherscan.io/address/0x000000000000003607fce1ac9e043a86675c5c2f#code).
Moves the wallet's naked CryptoPunk tokenId into its Stash, the first of the two
transactions that wrap it into CryptoPunks 721. Refuses a punk the wallet does not hold.
Wraps the CryptoPunk tokenId waiting in the wallet's Stash into CryptoPunks 721, minting
its 721 token to the wallet. Refuses a punk that is not in the Stash: move it there first
with transferPunkToStash721.
Unwraps the wallet's CryptoPunks 721 token tokenId back into a naked CryptoPunk: the 721
contract burns the token and hands the punk to the wallet, in one transaction with no
approval. Refuses unless the wallet holds the 721 token, so a token held by a loan, a vault
or someone else is never sent.
Optional purchaseOptional swapOptional purchaseOptional swapSells nft into order, a Native or OpenSea bid. The Gondi API builds the
sale calldata for both marketplaces, so OpenSea bids need no client-side
OpenSea credentials and no approval beyond the collateral's.
The order's currency as reported by the Gondi API. A native-currency order carries the
zero address on Ethereum, but a synthetic sentinel on other chains (__HYPE_ADDRESS on
HyperEVM, __RETH_ADDRESS on Robinhood) — check it with isNativeCurrency.
Static calculateStatic buildOptional issued
Signs and saves an item offer. A
lenderRefinanceDisabledoffer signs for MultiSourceLoan v3.2, the only version that signs the flag; any other offer signs for v3.1.