Skip to main content

Interface: CuratedOffer

Defined in: packages/overcast-core/src/curation/shapes.ts:78

Offer over CuratedOptionDetails.

Properties​

counterparty?​

optional counterparty?: Address;

Defined in: packages/overcast-core/src/curation/shapes.ts:105

The allowed counterparty of that option


createdAt​

createdAt: number;

Defined in: packages/overcast-core/src/curation/shapes.ts:96

In unix ms


creator​

creator: Address;

Defined in: packages/overcast-core/src/curation/shapes.ts:80

The offer's creator, in the layer's own address encoding.


details​

details: object;

Defined in: packages/overcast-core/src/curation/shapes.ts:81

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;

expiry​

expiry: number;

Defined in: packages/overcast-core/src/curation/shapes.ts:89

When the offer expires — a signable term, retained for re-derivation.


matchedOptionId?​

optional matchedOptionId?: Bytes32;

Defined in: packages/overcast-core/src/curation/shapes.ts:103

The option this offer was matched into, so a caller can tell a matched offer from an open one (and jump straight to the option) without a second query. Absent unless status is matched. A content-address, so it is not formatted — see salt.


salt​

salt: Bytes32;

Defined in: packages/overcast-core/src/curation/shapes.ts:87

The offer's content-address salt — a signable term, retained for re-derivation. Stays a Bytes32: it is raw entropy, identical on every chain, so there is nothing to format it into.


side​

side: OptionSide;

Defined in: packages/overcast-core/src/curation/shapes.ts:90


status​

status: OfferStatus;

Defined in: packages/overcast-core/src/curation/shapes.ts:92

Lifecycle at curation time — see offerStatus.