Variable: COMMON_CONFIG_SCHEMA
const COMMON_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";
}>;
domain: ConfigField<number, {
arg: "<n>";
describe: "protocol domain separator of the deployment; read from chain when omitted";
env: "DOMAIN";
flag: "--domain";
}>;
socketConfig: ConfigField<{
transports: ("websocket" | "polling")[];
}, {
arg: "<transport>";
describe: "pin the RFQ socket to one transport instead of negotiating";
env: "TRANSPORT";
flag: "--transport";
scope: "host";
}>;
}, $strip>;
Defined in: packages/overcast-core/src/config-schema.ts:644
The OvercastConfig fields that mean the same thing on every chain, so
every layer schema can spread its shape in rather than restating them.
Three OvercastConfig fields are deliberately not here:
chainName, because which name a deployment is filed under is the host's decision (a preset's name, or the one an operator declared), not something read from a per-field source;privateKeyandowner, because their encoding is a per-chain fact —0x-hex on EVM, base58 on Solana — so each layer schema states its own and gets a parser that can actually reject a wrong-chain value;socketUrl, whose meaningful values include""(a same-origin proxy), and readConfig reads a blank string as "unset". A programmatic caller sets it directly.
Everything but domain is ConfigScope "host": how this process
reaches the backend rather than a fact about the chain.