export type ReviewerProviderName = 'ollama' | 'anthropic' | 'openai' | 'bedrock' | 'azure'; export type ReviewerProviderConfig = { /** A {@link ReviewerProviderName}, or any future provider name. */ name: string; model: string; endpoint?: string | undefined; apiKeyEnv?: string | undefined; }; export type ReviewerSelectionMode = 'round-robin' | 'hash' | 'random'; export type ReviewerFallbackMode = 'skip' | 'error'; export type ReviewerConfig = { providers: ReadonlyArray; selection: ReviewerSelectionMode; rdProviderName: string | null; requireDistinctModelFamily: boolean; fallbackOnError: ReviewerFallbackMode; schemaPath: string; }; /** A4.1 — the reviewer needs at least two provider families to be usable. */ export declare const MIN_REVIEWER_PROVIDERS = 2; /** * Three states, so `peaks reviewer status` can tell "nothing configured" * apart from "configured, but not enough providers" (backlog §7.10 ③). * `providerCount` is the number of VALID entries after parsing, which is * what the >=2 requirement is measured on. */ export type ReviewerConfigStatus = { ok: true; config: ReviewerConfig; } | { ok: false; reason: 'no-reviewer-config' | 'insufficient-providers'; providerCount: number; requiredProviders: number; }; export declare function defaultReviewerConfigPath(): string; /** Where a resolved ReviewerEnvelope schema came from. */ export type ReviewerSchemaSource = 'absolute' | 'project' | 'package'; export type ReviewerSchemaResolution = { ok: true; path: string; source: ReviewerSchemaSource; } | { ok: false; searched: string[]; }; /** * Resolve the configured ReviewerEnvelope schema: an absolute path as-is, * else the project-root copy (a project may override), else the copy bundled * with the peaks-loop package — a consumer project does NOT ship `schemas/`, * so the packaged copy is what makes the default path work there. When * nothing resolves, every candidate is returned for the refusal message. */ export declare function resolveReviewerSchema(projectRoot: string, schemaPath: string): ReviewerSchemaResolution; /** * Read + parse `~/.peaks/config.json` (or override path) and return the * `reviewer` section if present. NEVER throws on missing file — the CLI * records the skip reason in the envelope instead. */ export declare function loadReviewerConfig(options?: { path?: string; }): ReviewerConfigStatus;