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;