Part of epic #3602.
Scope
Extend ProviderEntry with the new fields needed to declare a native gonka provider, and add the Gonka variant to ProviderKind. No provider implementation yet — that lands in #9.
Files to modify
crates/zeph-config/src/providers.rs:
ProviderKind::Gonka variant; as_str() returns \"gonka\".
- New
GonkaNode { base_url: String, address: String } struct.
- New fields on
ProviderEntry (both #[serde(default)]):
pub gonka_nodes: Option<Vec<GonkaNode>>
pub gonka_chain_prefix: Option<String> (default \"gonka\")
- Validator: when
type = \"gonka\", gonka_nodes must be non-empty; otherwise return a config error.
Acceptance
cargo nextest run -p zeph-config -- providers includes new tests:
- Round-trip of a gonka entry with three nodes
- Validator rejects empty
gonka_nodes
- Default chain_prefix is
\"gonka\" when omitted
- Existing configs (which never set these fields) still parse correctly.
cargo +nightly fmt --check and cargo clippy --workspace --features full -- -D warnings pass.
Depends on
None.
Size
S (~1.5h)
Part of epic #3602.
Scope
Extend
ProviderEntrywith the new fields needed to declare a native gonka provider, and add theGonkavariant toProviderKind. No provider implementation yet — that lands in #9.Files to modify
crates/zeph-config/src/providers.rs:ProviderKind::Gonkavariant;as_str()returns\"gonka\".GonkaNode { base_url: String, address: String }struct.ProviderEntry(both#[serde(default)]):pub gonka_nodes: Option<Vec<GonkaNode>>pub gonka_chain_prefix: Option<String>(default\"gonka\")type = \"gonka\",gonka_nodesmust be non-empty; otherwise return a config error.Acceptance
cargo nextest run -p zeph-config -- providersincludes new tests:gonka_nodes\"gonka\"when omittedcargo +nightly fmt --checkandcargo clippy --workspace --features full -- -D warningspass.Depends on
None.
Size
S (~1.5h)