Skip to main content

Interface: OvercastSettlementLayer<L, C>

Defined in: packages/overcast-core/src/protocol/settlement-layer.ts:37

The logic for one settlement layer on a given chain (L): the config (Bytes32) an offer commits to, and — for layers that have one — a convenience helper for the exercise/redeem metadata.

A layer defines this once per chain (e.g. a Solana physical layer) and is registered by its type key in the chain's SettlementLayerRegistry. The registry is a caller-side helper: it produces the config a caller pins into details.settlementLayer before signing. The writer never consults it — it commits whatever the offer already carries, verbatim.

Type Parameters​

Type ParameterDefault typeDescription
L extends OvercastLayer-the OvercastLayer describing this settlement layer.
Cunknownthe shape read decodes this layer's config account into.

Properties​

type​

readonly type: SettlementKey<L>;

Defined in: packages/overcast-core/src/protocol/settlement-layer.ts:39

This layer's type key — matches the on-chain discriminator and the registry key.

Methods​

buildMetadata()?​

optional buildMetadata(option): Promise<Metadata>;

Defined in: packages/overcast-core/src/protocol/settlement-layer.ts:96

Optional helper producing this layer's conventional exercise/redeem metadata. Purely a convenience: the writer forwards whatever bytes the caller passes verbatim, so a caller with an intent the SDK has no model for can ignore this and supply its own bytes.

Parameters​

ParameterType
optionMarketOption

Returns​

Promise<Metadata>


configId()​

configId(config): Promise<Bytes32>;

Defined in: packages/overcast-core/src/protocol/settlement-layer.ts:69

The id config lives at: the value a caller pins into details.settlementLayer before signing. Nothing need be deployed there yet — the id is derived from the configuration (a hash of its contents, a CREATE2 address, a PDA), which is what lets an offer commit to a layer before it exists.

Asynchronous because deriving it is not a purely local computation on every chain: a layer whose id is a hash of its own contents derives it offline, while one whose id depends on code the SDK does not hold has to ask the chain that owns that code.

Parameters​

ParameterType
configC

Returns​

Promise<Bytes32>


createConfig()?​

optional createConfig(config): Promise<L["tx"]>;

Defined in: packages/overcast-core/src/protocol/settlement-layer.ts:88

Build a transaction that deploys a config for this layer, described by the same shape read decodes one into and defaultConfig derives — so a config read off one cluster can be replayed onto another verbatim, and the layer an offer's default id commits to can be placed by handing back what defaultConfig returned. Optional: layers whose configs are all pre-deployed need not offer it.

Parameters​

ParameterType
configC

Returns​

Promise<L["tx"]>


defaultConfig()​

defaultConfig(details): Promise<C>;

Defined in: packages/overcast-core/src/protocol/settlement-layer.ts:55

The config this layer settles details under when a caller selects the layer without naming a specific one — the layer's own defaults (exercise mode, price feeds, staleness bounds) applied to the option's terms.

Returns the config itself rather than its id, because a caller needs both and only the layer can produce it: configId turns it into the id pinned into details.settlementLayer, and createConfig turns the same value into the transaction that deploys it, which is what a caller does when the id turns out to hold nothing yet.

Asynchronous for the same reason configId is — on some chains a default is not a purely local computation.

Parameters​

ParameterType
detailsPartial<OptionDetails>

Returns​

Promise<C>


read()​

read(id): Promise<C>;

Defined in: packages/overcast-core/src/protocol/settlement-layer.ts:78

Read the on-chain config account this layer owns at id and decode it into this layer's typed config C. Because SettlementLayerRegistry.resolve is generic over the layer key, a caller who selects a concrete layer (resolve("oracle")) gets a precisely-typed result here with no casts. Throws if the account doesn't exist or isn't a config this layer owns.

Parameters​

ParameterType
idBytes32

Returns​

Promise<C>