Skip to main content

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​

ParameterType
detailsOptionDetails
registryAssetRegistry
utilsOvercastUtils

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;