Skip to main content

Class: RfqClient

Defined in: packages/overcast-core/src/rfq/client.ts:78

The realtime RFQ channel: a typed socket.io client that registers with the backend, emits request/response (ack-style) calls, and surfaces server broadcasts through the on* callbacks. Owned by OvercastApp as its rfq field; the on-chain write/read sides live on the app itself.

Constructors​

Constructor​

new RfqClient(__namedParameters): RfqClient;

Defined in: packages/overcast-core/src/rfq/client.ts:139

Parameters​

ParameterType
__namedParametersRfqClientOptions

Returns​

RfqClient

Properties​

onError?​

optional onError?: (payload) => void;

Defined in: packages/overcast-core/src/rfq/client.ts:88

Parameters​

ParameterType
payload{ code: | "NOT_REGISTERED" | "WRONG_ROLE" | "VALIDATION_FAILED" | "RFQ_NOT_FOUND" | "RFQ_NOT_OPEN" | "QUOTE_NOT_FOUND" | "NOT_OWNER" | "ALREADY_ACCEPTED" | "BAD_SIGNATURE" | "SETTLEMENT_SUBMIT_FAILED" | "COLLATERAL_SUBMIT_FAILED" | "ACCEPT_OFFER_FAILED" | "INTERNAL"; message: string; }
payload.code| "NOT_REGISTERED" | "WRONG_ROLE" | "VALIDATION_FAILED" | "RFQ_NOT_FOUND" | "RFQ_NOT_OPEN" | "QUOTE_NOT_FOUND" | "NOT_OWNER" | "ALREADY_ACCEPTED" | "BAD_SIGNATURE" | "SETTLEMENT_SUBMIT_FAILED" | "COLLATERAL_SUBMIT_FAILED" | "ACCEPT_OFFER_FAILED" | "INTERNAL"
payload.messagestring

Returns​

void


onNewQuote?​

optional onNewQuote?: (payload) => void;

Defined in: packages/overcast-core/src/rfq/client.ts:82

Parameters​

ParameterTypeDescription
payload{ creator: Address; details: { borrowAllowed: boolean; collateralAmount: string; collateralAsset: { address: string; cashLike?: boolean; chain?: string; coinGeckoId?: string; decimals?: number; domain?: number; lastKnownPriceUsd?: number; logoUrl?: string; name?: string; rwa?: boolean; symbol?: string; volatility?: number; }; domain: number; endTimestamp: number; premiumAmount: string; premiumAsset: { address: string; cashLike?: boolean; chain?: string; coinGeckoId?: string; decimals?: number; domain?: number; lastKnownPriceUsd?: number; logoUrl?: string; name?: string; rwa?: boolean; symbol?: string; volatility?: number; }; settlementAmount: string; settlementAsset: { address: string; cashLike?: boolean; chain?: string; coinGeckoId?: string; decimals?: number; domain?: number; lastKnownPriceUsd?: number; logoUrl?: string; name?: string; rwa?: boolean; symbol?: string; volatility?: number; }; settlementLayer: string; startTimestamp: number; }; expiry: number; quoteId: string; rfqId: string; }-
payload.creatorAddressThe creator of the quote.
payload.details{ borrowAllowed: boolean; collateralAmount: string; collateralAsset: { address: string; cashLike?: boolean; chain?: string; coinGeckoId?: string; decimals?: number; domain?: number; lastKnownPriceUsd?: number; logoUrl?: string; name?: string; rwa?: boolean; symbol?: string; volatility?: number; }; domain: number; endTimestamp: number; premiumAmount: string; premiumAsset: { address: string; cashLike?: boolean; chain?: string; coinGeckoId?: string; decimals?: number; domain?: number; lastKnownPriceUsd?: number; logoUrl?: string; name?: string; rwa?: boolean; symbol?: string; volatility?: number; }; settlementAmount: string; settlementAsset: { address: string; cashLike?: boolean; chain?: string; coinGeckoId?: string; decimals?: number; domain?: number; lastKnownPriceUsd?: number; logoUrl?: string; name?: string; rwa?: boolean; symbol?: string; volatility?: number; }; settlementLayer: string; startTimestamp: number; }-
payload.details.borrowAllowedboolean-
payload.details.collateralAmountstring-
payload.details.collateralAsset{ address: string; cashLike?: boolean; chain?: string; coinGeckoId?: string; decimals?: number; domain?: number; lastKnownPriceUsd?: number; logoUrl?: string; name?: string; rwa?: boolean; symbol?: string; volatility?: number; }-
payload.details.collateralAsset.addressstringThe on-chain address (mint) identifying the asset, in the layer's own encoding (base58 on Solana, 0x… on an EVM chain) — see Address.
payload.details.collateralAsset.cashLike?booleanWhether or not the asset can be treated similar to cash
payload.details.collateralAsset.chain?stringThe chain the asset lives on, e.g. "base". A display label only — it is a caller-chosen name (see ChainName), carried by no wire payload and never used to key or look up an asset. domain is the identity.
payload.details.collateralAsset.coinGeckoId?stringCoinGecko id for price lookups, e.g. usd-coin.
payload.details.collateralAsset.decimals?numberNumber of decimal places in the asset's native units.
payload.details.collateralAsset.domain?numberThe protocol domain the asset lives on — the same separator OptionDetails.domain carries and every indexed event is tagged with, and the first half of the asset's key in an AssetRegistry. Optional because a single-domain deployment has nothing to disambiguate; such an asset registers as a wildcard, matching any domain that has no asset of its own at that address. Populate it as soon as one backend serves two domains — an address is only unique within a domain.
payload.details.collateralAsset.lastKnownPriceUsd?numberLast known USD price, sourced best-effort from an external feed (CoinGecko). Untrusted — do not use for settlement, signing, valuation, or any value transfer. It is informational only (e.g. showing an approximate notional in a picker), may be stale, missing, or wrong, and is never part of the canonical, content-addressed asset identity. Present only once a price has actually been fetched for the asset.
payload.details.collateralAsset.logoUrl?stringLogo of the coin
payload.details.collateralAsset.name?stringHuman name of the asset.
payload.details.collateralAsset.rwa?booleanWhether the asset is a real-world asset (RWA) — e.g. tokenized private equity — rather than a native crypto asset.
payload.details.collateralAsset.symbol?stringHuman ticker, e.g. USDC.
payload.details.collateralAsset.volatility?numberVolatility of the asset
payload.details.domainnumber-
payload.details.endTimestampnumber-
payload.details.premiumAmountstring-
payload.details.premiumAsset{ address: string; cashLike?: boolean; chain?: string; coinGeckoId?: string; decimals?: number; domain?: number; lastKnownPriceUsd?: number; logoUrl?: string; name?: string; rwa?: boolean; symbol?: string; volatility?: number; }-
payload.details.premiumAsset.addressstringThe on-chain address (mint) identifying the asset, in the layer's own encoding (base58 on Solana, 0x… on an EVM chain) — see Address.
payload.details.premiumAsset.cashLike?booleanWhether or not the asset can be treated similar to cash
payload.details.premiumAsset.chain?stringThe chain the asset lives on, e.g. "base". A display label only — it is a caller-chosen name (see ChainName), carried by no wire payload and never used to key or look up an asset. domain is the identity.
payload.details.premiumAsset.coinGeckoId?stringCoinGecko id for price lookups, e.g. usd-coin.
payload.details.premiumAsset.decimals?numberNumber of decimal places in the asset's native units.
payload.details.premiumAsset.domain?numberThe protocol domain the asset lives on — the same separator OptionDetails.domain carries and every indexed event is tagged with, and the first half of the asset's key in an AssetRegistry. Optional because a single-domain deployment has nothing to disambiguate; such an asset registers as a wildcard, matching any domain that has no asset of its own at that address. Populate it as soon as one backend serves two domains — an address is only unique within a domain.
payload.details.premiumAsset.lastKnownPriceUsd?numberLast known USD price, sourced best-effort from an external feed (CoinGecko). Untrusted — do not use for settlement, signing, valuation, or any value transfer. It is informational only (e.g. showing an approximate notional in a picker), may be stale, missing, or wrong, and is never part of the canonical, content-addressed asset identity. Present only once a price has actually been fetched for the asset.
payload.details.premiumAsset.logoUrl?stringLogo of the coin
payload.details.premiumAsset.name?stringHuman name of the asset.
payload.details.premiumAsset.rwa?booleanWhether the asset is a real-world asset (RWA) — e.g. tokenized private equity — rather than a native crypto asset.
payload.details.premiumAsset.symbol?stringHuman ticker, e.g. USDC.
payload.details.premiumAsset.volatility?numberVolatility of the asset
payload.details.settlementAmountstring-
payload.details.settlementAsset{ address: string; cashLike?: boolean; chain?: string; coinGeckoId?: string; decimals?: number; domain?: number; lastKnownPriceUsd?: number; logoUrl?: string; name?: string; rwa?: boolean; symbol?: string; volatility?: number; }-
payload.details.settlementAsset.addressstringThe on-chain address (mint) identifying the asset, in the layer's own encoding (base58 on Solana, 0x… on an EVM chain) — see Address.
payload.details.settlementAsset.cashLike?booleanWhether or not the asset can be treated similar to cash
payload.details.settlementAsset.chain?stringThe chain the asset lives on, e.g. "base". A display label only — it is a caller-chosen name (see ChainName), carried by no wire payload and never used to key or look up an asset. domain is the identity.
payload.details.settlementAsset.coinGeckoId?stringCoinGecko id for price lookups, e.g. usd-coin.
payload.details.settlementAsset.decimals?numberNumber of decimal places in the asset's native units.
payload.details.settlementAsset.domain?numberThe protocol domain the asset lives on — the same separator OptionDetails.domain carries and every indexed event is tagged with, and the first half of the asset's key in an AssetRegistry. Optional because a single-domain deployment has nothing to disambiguate; such an asset registers as a wildcard, matching any domain that has no asset of its own at that address. Populate it as soon as one backend serves two domains — an address is only unique within a domain.
payload.details.settlementAsset.lastKnownPriceUsd?numberLast known USD price, sourced best-effort from an external feed (CoinGecko). Untrusted — do not use for settlement, signing, valuation, or any value transfer. It is informational only (e.g. showing an approximate notional in a picker), may be stale, missing, or wrong, and is never part of the canonical, content-addressed asset identity. Present only once a price has actually been fetched for the asset.
payload.details.settlementAsset.logoUrl?stringLogo of the coin
payload.details.settlementAsset.name?stringHuman name of the asset.
payload.details.settlementAsset.rwa?booleanWhether the asset is a real-world asset (RWA) — e.g. tokenized private equity — rather than a native crypto asset.
payload.details.settlementAsset.symbol?stringHuman ticker, e.g. USDC.
payload.details.settlementAsset.volatility?numberVolatility of the asset
payload.details.settlementLayerstring-
payload.details.startTimestampnumber-
payload.expirynumberWhen this quote becomes invalid.
payload.quoteIdstring-
payload.rfqIdstring-

Returns​

void


onNewRfq?​

optional onNewRfq?: (payload) => void;

Defined in: packages/overcast-core/src/rfq/client.ts:81

Parameters​

ParameterTypeDescription
payload{ creator: Address; details: { borrowAllowed?: boolean; collateralAmount?: string; collateralAsset?: { address: string; cashLike?: boolean; chain?: string; coinGeckoId?: string; decimals?: number; domain?: number; lastKnownPriceUsd?: number; logoUrl?: string; name?: string; rwa?: boolean; symbol?: string; volatility?: number; }; domain?: number; endTimestamp?: number; premiumAmount?: string; premiumAsset?: { address: string; cashLike?: boolean; chain?: string; coinGeckoId?: string; decimals?: number; domain?: number; lastKnownPriceUsd?: number; logoUrl?: string; name?: string; rwa?: boolean; symbol?: string; volatility?: number; }; settlementAmount?: string; settlementAsset?: { address: string; cashLike?: boolean; chain?: string; coinGeckoId?: string; decimals?: number; domain?: number; lastKnownPriceUsd?: number; logoUrl?: string; name?: string; rwa?: boolean; symbol?: string; volatility?: number; }; settlementLayer?: string; startTimestamp?: number; }; domain: number; expiry: number; options?: { [key: string]: unknown; responder?: Bytes32[]; }; rfqId: string; side: "TAKER" | "MAKER"; }-
payload.creatorAddressThe creator of the RFQ.
payload.details{ borrowAllowed?: boolean; collateralAmount?: string; collateralAsset?: { address: string; cashLike?: boolean; chain?: string; coinGeckoId?: string; decimals?: number; domain?: number; lastKnownPriceUsd?: number; logoUrl?: string; name?: string; rwa?: boolean; symbol?: string; volatility?: number; }; domain?: number; endTimestamp?: number; premiumAmount?: string; premiumAsset?: { address: string; cashLike?: boolean; chain?: string; coinGeckoId?: string; decimals?: number; domain?: number; lastKnownPriceUsd?: number; logoUrl?: string; name?: string; rwa?: boolean; symbol?: string; volatility?: number; }; settlementAmount?: string; settlementAsset?: { address: string; cashLike?: boolean; chain?: string; coinGeckoId?: string; decimals?: number; domain?: number; lastKnownPriceUsd?: number; logoUrl?: string; name?: string; rwa?: boolean; symbol?: string; volatility?: number; }; settlementLayer?: string; startTimestamp?: number; }Curated details of the RFQ.
payload.details.borrowAllowed?boolean-
payload.details.collateralAmount?string-
payload.details.collateralAsset?{ address: string; cashLike?: boolean; chain?: string; coinGeckoId?: string; decimals?: number; domain?: number; lastKnownPriceUsd?: number; logoUrl?: string; name?: string; rwa?: boolean; symbol?: string; volatility?: number; }-
payload.details.collateralAsset.addressstringThe on-chain address (mint) identifying the asset, in the layer's own encoding (base58 on Solana, 0x… on an EVM chain) — see Address.
payload.details.collateralAsset.cashLike?booleanWhether or not the asset can be treated similar to cash
payload.details.collateralAsset.chain?stringThe chain the asset lives on, e.g. "base". A display label only — it is a caller-chosen name (see ChainName), carried by no wire payload and never used to key or look up an asset. domain is the identity.
payload.details.collateralAsset.coinGeckoId?stringCoinGecko id for price lookups, e.g. usd-coin.
payload.details.collateralAsset.decimals?numberNumber of decimal places in the asset's native units.
payload.details.collateralAsset.domain?numberThe protocol domain the asset lives on — the same separator OptionDetails.domain carries and every indexed event is tagged with, and the first half of the asset's key in an AssetRegistry. Optional because a single-domain deployment has nothing to disambiguate; such an asset registers as a wildcard, matching any domain that has no asset of its own at that address. Populate it as soon as one backend serves two domains — an address is only unique within a domain.
payload.details.collateralAsset.lastKnownPriceUsd?numberLast known USD price, sourced best-effort from an external feed (CoinGecko). Untrusted — do not use for settlement, signing, valuation, or any value transfer. It is informational only (e.g. showing an approximate notional in a picker), may be stale, missing, or wrong, and is never part of the canonical, content-addressed asset identity. Present only once a price has actually been fetched for the asset.
payload.details.collateralAsset.logoUrl?stringLogo of the coin
payload.details.collateralAsset.name?stringHuman name of the asset.
payload.details.collateralAsset.rwa?booleanWhether the asset is a real-world asset (RWA) — e.g. tokenized private equity — rather than a native crypto asset.
payload.details.collateralAsset.symbol?stringHuman ticker, e.g. USDC.
payload.details.collateralAsset.volatility?numberVolatility of the asset
payload.details.domain?number-
payload.details.endTimestamp?number-
payload.details.premiumAmount?string-
payload.details.premiumAsset?{ address: string; cashLike?: boolean; chain?: string; coinGeckoId?: string; decimals?: number; domain?: number; lastKnownPriceUsd?: number; logoUrl?: string; name?: string; rwa?: boolean; symbol?: string; volatility?: number; }-
payload.details.premiumAsset.addressstringThe on-chain address (mint) identifying the asset, in the layer's own encoding (base58 on Solana, 0x… on an EVM chain) — see Address.
payload.details.premiumAsset.cashLike?booleanWhether or not the asset can be treated similar to cash
payload.details.premiumAsset.chain?stringThe chain the asset lives on, e.g. "base". A display label only — it is a caller-chosen name (see ChainName), carried by no wire payload and never used to key or look up an asset. domain is the identity.
payload.details.premiumAsset.coinGeckoId?stringCoinGecko id for price lookups, e.g. usd-coin.
payload.details.premiumAsset.decimals?numberNumber of decimal places in the asset's native units.
payload.details.premiumAsset.domain?numberThe protocol domain the asset lives on — the same separator OptionDetails.domain carries and every indexed event is tagged with, and the first half of the asset's key in an AssetRegistry. Optional because a single-domain deployment has nothing to disambiguate; such an asset registers as a wildcard, matching any domain that has no asset of its own at that address. Populate it as soon as one backend serves two domains — an address is only unique within a domain.
payload.details.premiumAsset.lastKnownPriceUsd?numberLast known USD price, sourced best-effort from an external feed (CoinGecko). Untrusted — do not use for settlement, signing, valuation, or any value transfer. It is informational only (e.g. showing an approximate notional in a picker), may be stale, missing, or wrong, and is never part of the canonical, content-addressed asset identity. Present only once a price has actually been fetched for the asset.
payload.details.premiumAsset.logoUrl?stringLogo of the coin
payload.details.premiumAsset.name?stringHuman name of the asset.
payload.details.premiumAsset.rwa?booleanWhether the asset is a real-world asset (RWA) — e.g. tokenized private equity — rather than a native crypto asset.
payload.details.premiumAsset.symbol?stringHuman ticker, e.g. USDC.
payload.details.premiumAsset.volatility?numberVolatility of the asset
payload.details.settlementAmount?string-
payload.details.settlementAsset?{ address: string; cashLike?: boolean; chain?: string; coinGeckoId?: string; decimals?: number; domain?: number; lastKnownPriceUsd?: number; logoUrl?: string; name?: string; rwa?: boolean; symbol?: string; volatility?: number; }-
payload.details.settlementAsset.addressstringThe on-chain address (mint) identifying the asset, in the layer's own encoding (base58 on Solana, 0x… on an EVM chain) — see Address.
payload.details.settlementAsset.cashLike?booleanWhether or not the asset can be treated similar to cash
payload.details.settlementAsset.chain?stringThe chain the asset lives on, e.g. "base". A display label only — it is a caller-chosen name (see ChainName), carried by no wire payload and never used to key or look up an asset. domain is the identity.
payload.details.settlementAsset.coinGeckoId?stringCoinGecko id for price lookups, e.g. usd-coin.
payload.details.settlementAsset.decimals?numberNumber of decimal places in the asset's native units.
payload.details.settlementAsset.domain?numberThe protocol domain the asset lives on — the same separator OptionDetails.domain carries and every indexed event is tagged with, and the first half of the asset's key in an AssetRegistry. Optional because a single-domain deployment has nothing to disambiguate; such an asset registers as a wildcard, matching any domain that has no asset of its own at that address. Populate it as soon as one backend serves two domains — an address is only unique within a domain.
payload.details.settlementAsset.lastKnownPriceUsd?numberLast known USD price, sourced best-effort from an external feed (CoinGecko). Untrusted — do not use for settlement, signing, valuation, or any value transfer. It is informational only (e.g. showing an approximate notional in a picker), may be stale, missing, or wrong, and is never part of the canonical, content-addressed asset identity. Present only once a price has actually been fetched for the asset.
payload.details.settlementAsset.logoUrl?stringLogo of the coin
payload.details.settlementAsset.name?stringHuman name of the asset.
payload.details.settlementAsset.rwa?booleanWhether the asset is a real-world asset (RWA) — e.g. tokenized private equity — rather than a native crypto asset.
payload.details.settlementAsset.symbol?stringHuman ticker, e.g. USDC.
payload.details.settlementAsset.volatility?numberVolatility of the asset
payload.details.settlementLayer?string-
payload.details.startTimestamp?number-
payload.domainnumberThe deployment this RFQ is for, so a subscriber can filter by chain even though details is partial. Authoritative over details.domain.
payload.expirynumberWhen this RFQ becomes invalid.
payload.options?{ [key: string]: unknown; responder?: Bytes32[]; }RFQ options; there might be an unknown option in the future.
payload.options.responder?Bytes32[]Optional list that are allowed to respond. If not provided, everyone can respond
payload.rfqIdstring-
payload.side"TAKER" | "MAKER"RFQ is designed in a way that it is side un-aware. Both makers or takers of options can create RFQs.

Returns​

void


onQuoteAccepted?​

optional onQuoteAccepted?: (payload) => void;

Defined in: packages/overcast-core/src/rfq/client.ts:83

Parameters​

ParameterTypeDescription
payload{ details: { borrowAllowed: boolean; collateralAmount: string; collateralAsset: { address: string; cashLike?: boolean; chain?: string; coinGeckoId?: string; decimals?: number; domain?: number; lastKnownPriceUsd?: number; logoUrl?: string; name?: string; rwa?: boolean; symbol?: string; volatility?: number; }; domain: number; endTimestamp: number; premiumAmount: string; premiumAsset: { address: string; cashLike?: boolean; chain?: string; coinGeckoId?: string; decimals?: number; domain?: number; lastKnownPriceUsd?: number; logoUrl?: string; name?: string; rwa?: boolean; symbol?: string; volatility?: number; }; settlementAmount: string; settlementAsset: { address: string; cashLike?: boolean; chain?: string; coinGeckoId?: string; decimals?: number; domain?: number; lastKnownPriceUsd?: number; logoUrl?: string; name?: string; rwa?: boolean; symbol?: string; volatility?: number; }; settlementLayer: string; startTimestamp: number; }; maker: Address; optionId: Bytes32; quoteId: string; rfqId: string; taker: Address; }-
payload.details{ borrowAllowed: boolean; collateralAmount: string; collateralAsset: { address: string; cashLike?: boolean; chain?: string; coinGeckoId?: string; decimals?: number; domain?: number; lastKnownPriceUsd?: number; logoUrl?: string; name?: string; rwa?: boolean; symbol?: string; volatility?: number; }; domain: number; endTimestamp: number; premiumAmount: string; premiumAsset: { address: string; cashLike?: boolean; chain?: string; coinGeckoId?: string; decimals?: number; domain?: number; lastKnownPriceUsd?: number; logoUrl?: string; name?: string; rwa?: boolean; symbol?: string; volatility?: number; }; settlementAmount: string; settlementAsset: { address: string; cashLike?: boolean; chain?: string; coinGeckoId?: string; decimals?: number; domain?: number; lastKnownPriceUsd?: number; logoUrl?: string; name?: string; rwa?: boolean; symbol?: string; volatility?: number; }; settlementLayer: string; startTimestamp: number; }-
payload.details.borrowAllowedboolean-
payload.details.collateralAmountstring-
payload.details.collateralAsset{ address: string; cashLike?: boolean; chain?: string; coinGeckoId?: string; decimals?: number; domain?: number; lastKnownPriceUsd?: number; logoUrl?: string; name?: string; rwa?: boolean; symbol?: string; volatility?: number; }-
payload.details.collateralAsset.addressstringThe on-chain address (mint) identifying the asset, in the layer's own encoding (base58 on Solana, 0x… on an EVM chain) — see Address.
payload.details.collateralAsset.cashLike?booleanWhether or not the asset can be treated similar to cash
payload.details.collateralAsset.chain?stringThe chain the asset lives on, e.g. "base". A display label only — it is a caller-chosen name (see ChainName), carried by no wire payload and never used to key or look up an asset. domain is the identity.
payload.details.collateralAsset.coinGeckoId?stringCoinGecko id for price lookups, e.g. usd-coin.
payload.details.collateralAsset.decimals?numberNumber of decimal places in the asset's native units.
payload.details.collateralAsset.domain?numberThe protocol domain the asset lives on — the same separator OptionDetails.domain carries and every indexed event is tagged with, and the first half of the asset's key in an AssetRegistry. Optional because a single-domain deployment has nothing to disambiguate; such an asset registers as a wildcard, matching any domain that has no asset of its own at that address. Populate it as soon as one backend serves two domains — an address is only unique within a domain.
payload.details.collateralAsset.lastKnownPriceUsd?numberLast known USD price, sourced best-effort from an external feed (CoinGecko). Untrusted — do not use for settlement, signing, valuation, or any value transfer. It is informational only (e.g. showing an approximate notional in a picker), may be stale, missing, or wrong, and is never part of the canonical, content-addressed asset identity. Present only once a price has actually been fetched for the asset.
payload.details.collateralAsset.logoUrl?stringLogo of the coin
payload.details.collateralAsset.name?stringHuman name of the asset.
payload.details.collateralAsset.rwa?booleanWhether the asset is a real-world asset (RWA) — e.g. tokenized private equity — rather than a native crypto asset.
payload.details.collateralAsset.symbol?stringHuman ticker, e.g. USDC.
payload.details.collateralAsset.volatility?numberVolatility of the asset
payload.details.domainnumber-
payload.details.endTimestampnumber-
payload.details.premiumAmountstring-
payload.details.premiumAsset{ address: string; cashLike?: boolean; chain?: string; coinGeckoId?: string; decimals?: number; domain?: number; lastKnownPriceUsd?: number; logoUrl?: string; name?: string; rwa?: boolean; symbol?: string; volatility?: number; }-
payload.details.premiumAsset.addressstringThe on-chain address (mint) identifying the asset, in the layer's own encoding (base58 on Solana, 0x… on an EVM chain) — see Address.
payload.details.premiumAsset.cashLike?booleanWhether or not the asset can be treated similar to cash
payload.details.premiumAsset.chain?stringThe chain the asset lives on, e.g. "base". A display label only — it is a caller-chosen name (see ChainName), carried by no wire payload and never used to key or look up an asset. domain is the identity.
payload.details.premiumAsset.coinGeckoId?stringCoinGecko id for price lookups, e.g. usd-coin.
payload.details.premiumAsset.decimals?numberNumber of decimal places in the asset's native units.
payload.details.premiumAsset.domain?numberThe protocol domain the asset lives on — the same separator OptionDetails.domain carries and every indexed event is tagged with, and the first half of the asset's key in an AssetRegistry. Optional because a single-domain deployment has nothing to disambiguate; such an asset registers as a wildcard, matching any domain that has no asset of its own at that address. Populate it as soon as one backend serves two domains — an address is only unique within a domain.
payload.details.premiumAsset.lastKnownPriceUsd?numberLast known USD price, sourced best-effort from an external feed (CoinGecko). Untrusted — do not use for settlement, signing, valuation, or any value transfer. It is informational only (e.g. showing an approximate notional in a picker), may be stale, missing, or wrong, and is never part of the canonical, content-addressed asset identity. Present only once a price has actually been fetched for the asset.
payload.details.premiumAsset.logoUrl?stringLogo of the coin
payload.details.premiumAsset.name?stringHuman name of the asset.
payload.details.premiumAsset.rwa?booleanWhether the asset is a real-world asset (RWA) — e.g. tokenized private equity — rather than a native crypto asset.
payload.details.premiumAsset.symbol?stringHuman ticker, e.g. USDC.
payload.details.premiumAsset.volatility?numberVolatility of the asset
payload.details.settlementAmountstring-
payload.details.settlementAsset{ address: string; cashLike?: boolean; chain?: string; coinGeckoId?: string; decimals?: number; domain?: number; lastKnownPriceUsd?: number; logoUrl?: string; name?: string; rwa?: boolean; symbol?: string; volatility?: number; }-
payload.details.settlementAsset.addressstringThe on-chain address (mint) identifying the asset, in the layer's own encoding (base58 on Solana, 0x… on an EVM chain) — see Address.
payload.details.settlementAsset.cashLike?booleanWhether or not the asset can be treated similar to cash
payload.details.settlementAsset.chain?stringThe chain the asset lives on, e.g. "base". A display label only — it is a caller-chosen name (see ChainName), carried by no wire payload and never used to key or look up an asset. domain is the identity.
payload.details.settlementAsset.coinGeckoId?stringCoinGecko id for price lookups, e.g. usd-coin.
payload.details.settlementAsset.decimals?numberNumber of decimal places in the asset's native units.
payload.details.settlementAsset.domain?numberThe protocol domain the asset lives on — the same separator OptionDetails.domain carries and every indexed event is tagged with, and the first half of the asset's key in an AssetRegistry. Optional because a single-domain deployment has nothing to disambiguate; such an asset registers as a wildcard, matching any domain that has no asset of its own at that address. Populate it as soon as one backend serves two domains — an address is only unique within a domain.
payload.details.settlementAsset.lastKnownPriceUsd?numberLast known USD price, sourced best-effort from an external feed (CoinGecko). Untrusted — do not use for settlement, signing, valuation, or any value transfer. It is informational only (e.g. showing an approximate notional in a picker), may be stale, missing, or wrong, and is never part of the canonical, content-addressed asset identity. Present only once a price has actually been fetched for the asset.
payload.details.settlementAsset.logoUrl?stringLogo of the coin
payload.details.settlementAsset.name?stringHuman name of the asset.
payload.details.settlementAsset.rwa?booleanWhether the asset is a real-world asset (RWA) — e.g. tokenized private equity — rather than a native crypto asset.
payload.details.settlementAsset.symbol?stringHuman ticker, e.g. USDC.
payload.details.settlementAsset.volatility?numberVolatility of the asset
payload.details.settlementLayerstring-
payload.details.startTimestampnumber-
payload.makerAddress-
payload.optionIdBytes32Content-address of the option the accepted quote settled into.
payload.quoteIdstring-
payload.rfqIdstring-
payload.takerAddress-

Returns​

void


onQuoteCancelled?​

optional onQuoteCancelled?: (payload) => void;

Defined in: packages/overcast-core/src/rfq/client.ts:85

Parameters​

ParameterType
payload{ quoteId: string; }
payload.quoteIdstring

Returns​

void


onRfqCancelled?​

optional onRfqCancelled?: (payload) => void;

Defined in: packages/overcast-core/src/rfq/client.ts:84

Parameters​

ParameterType
payload{ rfqId: string; }
payload.rfqIdstring

Returns​

void


onRfqExpired?​

optional onRfqExpired?: (payload) => void;

Defined in: packages/overcast-core/src/rfq/client.ts:86

Parameters​

ParameterType
payload{ rfqId: string; }
payload.rfqIdstring

Returns​

void


onRfqSkipped?​

optional onRfqSkipped?: (payload) => void;

Defined in: packages/overcast-core/src/rfq/client.ts:87

Parameters​

ParameterTypeDescription
payload{ quoter: Address; reason?: string; rfqId: string; }-
payload.quoterAddressThe quoter that skipped.
payload.reason?stringThe quoter's optional reason, as given in SkipRfqPayload.
payload.rfqIdstring-

Returns​

void


socket​

socket: Socket<ServerToClientEvents, ClientToServerEvents>;

Defined in: packages/overcast-core/src/rfq/client.ts:79

Methods​

acceptQuote()​

acceptQuote(payload): Promise<{
optionId: Bytes32;
txHashes: string[];
}>;

Defined in: packages/overcast-core/src/rfq/client.ts:388

Accept a quote and settle it on-chain. The acceptor authors the opposite offer to the quote (a MAKER's CollateralOffer against a TAKER's quote, or vice-versa), which the client builds and signs as an offer operation from side + details — so neither the operation nor the offer's expiry is the caller's job. Alternatively, pass a chainOfferId to accept against an already on-chain offer, in which case nothing is signed.

Parameters​

ParameterType
payloadAcceptQuoteInput

Returns​

Promise<{ optionId: Bytes32; txHashes: string[]; }>


cancelQuote()​

cancelQuote(payload): Promise<void>;

Defined in: packages/overcast-core/src/rfq/client.ts:452

Parameters​

ParameterTypeDescription
payload{ operation?: { curve: SignatureCurve; digest: Bytes32; expiry: number; salt: Bytes32; signature: Hex; signingKey: Bytes32; }; quoteId: string; }-
payload.operation?{ curve: SignatureCurve; digest: Bytes32; expiry: number; salt: Bytes32; signature: Hex; signingKey: Bytes32; }-
payload.operation.curveSignatureCurveThe curve that was used to sign the digest
payload.operation.digestBytes32The digest that has been signed
payload.operation.expirynumberUnix seconds after which the operation is no longer valid.
payload.operation.saltBytes32Random per-operation salt (nonce) for replay protection.
payload.operation.signatureHexed25519 signature over the operation digest — 64 raw bytes in hex.
payload.operation.signingKeyBytes32The public key that produced signature.
payload.quoteIdstring-

Returns​

Promise<void>


cancelRfq()​

cancelRfq(payload): Promise<void>;

Defined in: packages/overcast-core/src/rfq/client.ts:446

Parameters​

ParameterType
payload{ rfqId: string; }
payload.rfqIdstring

Returns​

Promise<void>


createRfq()​

createRfq(payload): Promise<{
rfqId: string;
}>;

Defined in: packages/overcast-core/src/rfq/client.ts:324

Parameters​

ParameterType
payloadCreateRfqPayload

Returns​

Promise<{ rfqId: string; }>


disconnect()​

disconnect(): void;

Defined in: packages/overcast-core/src/rfq/client.ts:470

Tear the channel down — disconnects the underlying socket.

Returns​

void


registerRole()​

registerRole(role): Promise<void>;

Defined in: packages/overcast-core/src/rfq/client.ts:302

Parameters​

ParameterType
roleOptionSide

Returns​

Promise<void>


skipRfq()​

skipRfq(payload): Promise<void>;

Defined in: packages/overcast-core/src/rfq/client.ts:463

Explicitly pass on an RFQ, optionally with a reason that is relayed to its creator (see onRfqSkipped). Advisory only — the RFQ can still be quoted afterwards.

Parameters​

ParameterTypeDescription
payload{ reason?: string; rfqId: string; }-
payload.reason?stringOptional human-readable reason, relayed to the RFQ's creator.
payload.rfqIdstringThe RFQ being skipped.

Returns​

Promise<void>


submitQuote()​

submitQuote(payload, operationParams?): Promise<{
quoteId: string;
}>;

Defined in: packages/overcast-core/src/rfq/client.ts:338

Submit a quote in response to an RFQ. The caller supplies the terms; the client authors the offer for the quoter's side and signs it as a full offer operation with the OvercastProtocolSigner (see signOfferOperation) — so the operation and the offer's resolved expiry are filled in here rather than by the caller.

Parameters​

ParameterType
payloadOmit<SubmitQuotePayload, "expiry" | "salt" | "operation"> & object
operationParams?OperationParams

Returns​

Promise<{ quoteId: string; }>