Function: curateOptionDetails()
function curateOptionDetails(
details,
registry,
utils): object;
Defined in: packages/overcast-core/src/curation/curate.ts:42
Resolve every asset field of OptionDetails against the registry, on the domain the details themselves name. An asset with no curated metadata defaults to a bare Asset carrying just the address (see AssetRegistry.getOrDefault) rather than throwing — the terms are canonical either way, and curation only annotates them.
Parameters
| Parameter | Type |
|---|---|
details | OptionDetails |
registry | AssetRegistry |
utils | OvercastUtils |
Returns
object
borrowAllowed
borrowAllowed: boolean;
collateralAmount
collateralAmount: string;
collateralAsset
collateralAsset: object = assetSchema;
collateralAsset.address
address: string;
The on-chain address (mint) identifying the asset, in the layer's own
encoding (base58 on Solana, 0x… on an EVM chain) — see Address.
collateralAsset.cashLike?
optional cashLike?: boolean;
Whether or not the asset can be treated similar to cash
collateralAsset.chain?
optional chain?: string;
The 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.
collateralAsset.coinGeckoId?
optional coinGeckoId?: string;
CoinGecko id for price lookups, e.g. usd-coin.
collateralAsset.decimals?
optional decimals?: number;
Number of decimal places in the asset's native units.
collateralAsset.domain?
optional domain?: number;
The 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.
collateralAsset.lastKnownPriceUsd?
optional lastKnownPriceUsd?: number;
Last 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.
collateralAsset.logoUrl?
optional logoUrl?: string;
Logo of the coin
collateralAsset.name?
optional name?: string;
Human name of the asset.
collateralAsset.rwa?
optional rwa?: boolean;
Whether the asset is a real-world asset (RWA) — e.g. tokenized private equity — rather than a native crypto asset.
collateralAsset.symbol?
optional symbol?: string;
Human ticker, e.g. USDC.
collateralAsset.volatility?
optional volatility?: number;
Volatility of the asset
domain
domain: number;
endTimestamp
endTimestamp: number;
premiumAmount
premiumAmount: string;
premiumAsset
premiumAsset: object = assetSchema;
premiumAsset.address
address: string;
The on-chain address (mint) identifying the asset, in the layer's own
encoding (base58 on Solana, 0x… on an EVM chain) — see Address.
premiumAsset.cashLike?
optional cashLike?: boolean;
Whether or not the asset can be treated similar to cash
premiumAsset.chain?
optional chain?: string;
The 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.
premiumAsset.coinGeckoId?
optional coinGeckoId?: string;
CoinGecko id for price lookups, e.g. usd-coin.
premiumAsset.decimals?
optional decimals?: number;
Number of decimal places in the asset's native units.
premiumAsset.domain?
optional domain?: number;
The 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.
premiumAsset.lastKnownPriceUsd?
optional lastKnownPriceUsd?: number;
Last 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.
premiumAsset.logoUrl?
optional logoUrl?: string;
Logo of the coin
premiumAsset.name?
optional name?: string;
Human name of the asset.
premiumAsset.rwa?
optional rwa?: boolean;
Whether the asset is a real-world asset (RWA) — e.g. tokenized private equity — rather than a native crypto asset.
premiumAsset.symbol?
optional symbol?: string;
Human ticker, e.g. USDC.
premiumAsset.volatility?
optional volatility?: number;
Volatility of the asset
settlementAmount
settlementAmount: string;
settlementAsset
settlementAsset: object = assetSchema;
settlementAsset.address
address: string;
The on-chain address (mint) identifying the asset, in the layer's own
encoding (base58 on Solana, 0x… on an EVM chain) — see Address.
settlementAsset.cashLike?
optional cashLike?: boolean;
Whether or not the asset can be treated similar to cash
settlementAsset.chain?
optional chain?: string;
The 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.
settlementAsset.coinGeckoId?
optional coinGeckoId?: string;
CoinGecko id for price lookups, e.g. usd-coin.
settlementAsset.decimals?
optional decimals?: number;
Number of decimal places in the asset's native units.
settlementAsset.domain?
optional domain?: number;
The 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.
settlementAsset.lastKnownPriceUsd?
optional lastKnownPriceUsd?: number;
Last 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.
settlementAsset.logoUrl?
optional logoUrl?: string;
Logo of the coin
settlementAsset.name?
optional name?: string;
Human name of the asset.
settlementAsset.rwa?
optional rwa?: boolean;
Whether the asset is a real-world asset (RWA) — e.g. tokenized private equity — rather than a native crypto asset.
settlementAsset.symbol?
optional symbol?: string;
Human ticker, e.g. USDC.
settlementAsset.volatility?
optional volatility?: number;
Volatility of the asset
settlementLayer
settlementLayer: string;
startTimestamp
startTimestamp: number;