Skip to main content

Class: SolanaFactory<N>

Defined in: solana-client/src/factory.ts:35

The Solana ProtocolFactory: a single SolanaConfig is all the SDK needs to build every per-layer piece — the SolanaChainSigner, the transaction-building SolanaWriter, the SolanaReader and the SolanaIndexerClient. Hand it to OvercastApp.create and the rest of the SDK stays chain-agnostic. (Protocol-payload signing is chain-agnostic and lives in core — see createProtocolSigner.)

The chain signer is built once and shared: the writer runs against the signer's Anchor program, so the fee payer it bakes into each transaction (provider.publicKey) and the key the signer signs with are guaranteed to match, and the reader / indexer reuse the same RPC connection.

Extends​

Type Parameters​

Type Parameter
N extends ChainName

Constructors​

Constructor​

new SolanaFactory<N>(config): SolanaFactory<N>;

Defined in: solana-client/src/factory.ts:46

Parameters​

ParameterType
configInputConfig<SolanaConfig<N>, N>

Returns​

SolanaFactory<N>

Overrides​

ProtocolFactory<
N,
SolanaLayer
>.constructor

Properties​

config​

readonly config: SolanaConfig<string> & OvercastConfig<N>;

Defined in: overcast-core/dist/layer/factory.d.ts:47

The config this factory was built with, with its chainName narrowed to the literal N — so factory.config.chainName is "base", not string.

Inherited from​

ProtocolFactory.config

name​

readonly name: N;

Defined in: overcast-core/dist/layer/factory.d.ts:35

The chain this factory builds for, at its literal type — the runtime value of config's chainName, surfaced separately because this is the one place N is inferrable from. A MultiOvercastApp keys its chains by it, which is what makes multi.get("base") resolve to this factory's layer rather than a union over every chain passed.

Inherited from​

ProtocolFactory.name

protocol​

readonly protocol: "svm" = SolanaFactory.protocol;

Defined in: solana-client/src/factory.ts:42

Which settlement-layer protocol this factory speaks — "evm", "svm".

Mirrored as a static on each implementation, so a host can key a table by it before it has an instance to ask.

Overrides​

ProtocolFactory.protocol

protocol​

readonly static protocol: "svm" = "svm";

Defined in: solana-client/src/factory.ts:40

See ProtocolFactory.protocol.

Accessors​

settlementLayers​

Get Signature​

get settlementLayers(): SettlementLayerRegistry<SolanaLayer>;

Defined in: solana-client/src/factory.ts:99

The settlement layers Solana implements. The exhaustive map over keyof SolanaLayer["settlements"] makes the compiler enforce every declared layer is registered — add "cash" to SolanaLayer and this won't compile until it's wired up here.

Each layer is handed the shared Anchor Provider so its read() can fetch and decode its on-chain config account through the layer program's own IDL account coder.

Returns​

SettlementLayerRegistry<SolanaLayer>

Overrides​

ProtocolFactory.settlementLayers

utils​

Get Signature​

get utils(): OvercastUtils;

Defined in: solana-client/src/factory.ts:85

The Solana address helpers — stateless, so a shared instance is reused.

Returns​

OvercastUtils

Overrides​

ProtocolFactory.utils

Methods​

createChainSigner()​

createChainSigner(): Promise<
| OvercastChainSigner<SolanaLayer>
| undefined>;

Defined in: solana-client/src/factory.ts:58

The chain signer — or undefined when the config carries no key material (no wallet, no privateKey), which makes the app read-only. Note the SolanaChainSigner is still built internally in that case: it owns the connection / provider / program the reader, writer and indexer run on, and only its signing half is unusable. Withholding it here is what keeps a keyless app from submitting through a wallet that cannot sign.

Returns​

Promise< | OvercastChainSigner<SolanaLayer> | undefined>

Overrides​

ProtocolFactory.createChainSigner

createIndexerClient()​

createIndexerClient(): Promise<OvercastIndexerClient>;

Defined in: solana-client/src/factory.ts:75

Returns​

Promise<OvercastIndexerClient>

Overrides​

ProtocolFactory.createIndexerClient

createReader()​

createReader(): Promise<OvercastReader>;

Defined in: solana-client/src/factory.ts:68

Returns​

Promise<OvercastReader>

Overrides​

ProtocolFactory.createReader

createWriter()​

createWriter(): Promise<OvercastWriter<SolanaLayer, Transaction>>;

Defined in: solana-client/src/factory.ts:64

Returns​

Promise<OvercastWriter<SolanaLayer, Transaction>>

Overrides​

ProtocolFactory.createWriter

withConfig()​

withConfig(config): ProtocolFactory<N, SolanaLayer>;

Defined in: solana-client/src/factory.ts:127

Returns a new factory based on the config that is passed

Parameters​

ParameterTypeDescription
configPartial<SolanaConfig<N>>-

Returns​

ProtocolFactory<N, SolanaLayer>

Overrides​

ProtocolFactory.withConfig