Skip to main content

Variable: SOLANA_CONFIG_SCHEMA

const SOLANA_CONFIG_SCHEMA: ZodObject<{
ackTimeoutMs: ConfigField<number, {
describe: "how long to wait for an RFQ server ack, in milliseconds";
env: "ACK_TIMEOUT_MS";
scope: "host";
}>;
apiKey: ConfigField<string, {
arg: "<key>";
describe: "Overcast backend API key";
env: "API_KEY";
flag: "--api-key";
scope: "host";
secret: true;
}>;
backend: ConfigField<string, {
arg: "<url>";
describe: "Overcast backend url";
env: "BACKEND_URL";
flag: "--backend";
scope: "host";
}>;
commitment: ConfigField<"processed" | "confirmed" | "finalized", {
describe: "commitment for the connection and for confirmations";
env: "COMMITMENT";
}>;
domain: ConfigField<number, {
arg: "<n>";
describe: "protocol domain separator of the deployment; read from chain when omitted";
env: "DOMAIN";
flag: "--domain";
}>;
feeHookProgramId: ConfigField<string, {
describe: "address of the deployed protocol-fee hook program";
env: "FEE_HOOK_PROGRAM_ID";
}>;
owner: ConfigField<string, {
arg: "<address>";
describe: "the wallet this app acts as when it holds no key of its own";
env: "OWNER";
flag: "--owner";
}>;
privateKey: ConfigField<string, {
describe: "the wallet's signing key, as base58 or a JSON byte array";
env: "PRIVATE_KEY";
secret: true;
}>;
programId: ConfigField<string, {
arg: "<address>";
describe: "address of the deployed core program";
env: "PROGRAM_ID";
flag: "--program-id";
}>;
rpcTimeoutMs: ConfigField<number, {
describe: "max time a single RPC request may take, in milliseconds";
env: "RPC_TIMEOUT_MS";
}>;
rpcUrl: ConfigField<string, {
arg: "<url>";
describe: "the cluster's JSON-RPC endpoint";
env: "RPC_URL";
flag: "--rpc";
}>;
settlementOracleProgramId: ConfigField<string, {
describe: "address of the deployed oracle-settlement layer program";
env: "SETTLEMENT_ORACLE_PROGRAM_ID";
}>;
settlementPhysicalProgramId: ConfigField<string, {
describe: "address of the deployed physical-settlement layer program";
env: "SETTLEMENT_PHYSICAL_PROGRAM_ID";
}>;
socketConfig: ConfigField<{
transports: ("polling" | "websocket")[];
}, {
arg: "<transport>";
describe: "pin the RFQ socket to one transport instead of negotiating";
env: "TRANSPORT";
flag: "--transport";
scope: "host";
}>;
}, $strip>;

Defined in: solana-client/src/schema.ts:22

How a Solana deployment is configured from strings. See EVM_CONFIG_SCHEMA for the shape and the reasoning; this is the same contract for the svm layer.

The program ids are all here rather than only programId, because a deployment that is not the canonical one is not the canonical one for any of them: a local validator has its own core, layer and hook programs, and an operator who could override only the first would get a config that half pointed at devnet.