Skip to main content

Class: RfqClient

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

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:131

Parameters

ParameterType
__namedParametersRfqClientOptions

Returns

RfqClient

Properties

onError?

optional onError?: (payload) => void;

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

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:77

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; operation: { curve: SignatureCurve; digest: Bytes32; expiry: number; salt: Bytes32; signature: Hex; signingKey: Bytes32; }; 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.operation{ curve: SignatureCurve; digest: Bytes32; expiry: number; salt: Bytes32; signature: Hex; signingKey: Bytes32; }The signed offer operation the quoter authorized this quote with.
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-
payload.rfqIdstring-

Returns

void


onNewRfq?

optional onNewRfq?: (payload) => void;

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

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:78

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


onRfqCancelled?

optional onRfqCancelled?: (payload) => void;

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

Parameters

ParameterType
payload{ rfqId: string; }
payload.rfqIdstring

Returns

void


onRfqExpired?

optional onRfqExpired?: (payload) => void;

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

Parameters

ParameterType
payload{ rfqId: string; }
payload.rfqIdstring

Returns

void


socket

socket: Socket<ServerToClientEvents, ClientToServerEvents>;

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

Methods

acceptQuote()

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

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

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[]; }>


cancelRfq()

cancelRfq(payload): Promise<void>;

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

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:304

Parameters

ParameterType
payloadCreateRfqPayload

Returns

Promise<{ rfqId: string; }>


disconnect()

disconnect(): void;

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

Tear the channel down — disconnects the underlying socket.

Returns

void


registerRole()

registerRole(role): Promise<void>;

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

Parameters

ParameterType
roleOptionSide

Returns

Promise<void>


submitQuote()

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

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

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; }>