/** * Shared CLI configuration for pull/push commands * * Handles API URL, authentication tokens, and project resolution. * @module cli/shared/config */ import type { InferSchema } from "../../src/extensions/schema/index.js"; import { type EnvironmentConfig } from "../../src/config/index.js"; /** * Classify failures from an idempotent API read conservatively. * * A structured HTTP status is authoritative: authentication, validation, and * other client failures must not become retryable merely because an attached * cause resembles a connection error. */ export declare function isRetryableApiReadError(error: unknown): boolean; export declare const getVeryfrontConfigSchema: () => import("../../src/internal-agents/schema.js").Schema; /** List of project slugs for multi-project pull */ projects: import("../../src/internal-agents/schema.js").Schema; apiToken: import("../../src/internal-agents/schema.js").Schema; apiUrl: import("../../src/internal-agents/schema.js").Schema; }>>; export declare const VeryfrontConfigSchema: import("../../src/internal-agents/schema.js").Schema; /** List of project slugs for multi-project pull */ projects: import("../../src/internal-agents/schema.js").Schema; apiToken: import("../../src/internal-agents/schema.js").Schema; apiUrl: import("../../src/internal-agents/schema.js").Schema; }>>; export type VeryfrontConfig = InferSchema>; export declare const getResolvedConfigSchema: () => import("../../src/internal-agents/schema.js").Schema; apiToken: import("../../src/internal-agents/schema.js").Schema; apiTokenSource: import("../../src/internal-agents/schema.js").Schema<"env" | "env-file" | "config-file" | "token-store" | undefined>; projectSlug: import("../../src/internal-agents/schema.js").Schema; projectId: import("../../src/internal-agents/schema.js").Schema; }>>; export declare const ResolvedConfigSchema: import("../../src/internal-agents/schema.js").Schema; apiToken: import("../../src/internal-agents/schema.js").Schema; apiTokenSource: import("../../src/internal-agents/schema.js").Schema<"env" | "env-file" | "config-file" | "token-store" | undefined>; projectSlug: import("../../src/internal-agents/schema.js").Schema; projectId: import("../../src/internal-agents/schema.js").Schema; }>>; export type ResolvedConfig = InferSchema>; export type ApiTokenSource = NonNullable; export interface ApiCredentialCandidate { apiToken: string; apiTokenSource: ApiTokenSource; validationEnv: EnvironmentConfig; authoritative: boolean; } export type ProjectReferenceSource = { kind: "argument"; name: "--project"; } | { kind: "environment"; name: "environment configuration"; } | { kind: "module-config"; name: string; } | { kind: "json-config"; name: "veryfront.json"; } | { kind: "tenant-environment"; name: string; } | { kind: "local-link"; name: ".veryfront/project.json"; } | { kind: "inferred"; name: "project files"; }; export interface ResolvedConfigDetails { config: ResolvedConfig; projectReferenceSource: ProjectReferenceSource; } export declare const ENVIRONMENT_PROJECT_REFERENCE_NAMES: readonly ["VERYFRONT_PROJECT_SLUG", "TENANT_PROJECT_SLUG", "VERYFRONT_PROJECT_ID", "TENANT_PROJECT_ID"]; export type EnvironmentProjectReferenceName = typeof ENVIRONMENT_PROJECT_REFERENCE_NAMES[number]; export declare function readConfigFile(projectDir: string): Promise; export declare function readConfigJsonFile(projectDir: string): Promise; export declare function writeProjectSlug(projectDir: string, slug: string): Promise; export declare function resolveEnvironmentProjectReference(): { reference: string; name: EnvironmentProjectReferenceName; } | undefined; export declare function resolveApiCredentialCandidatesForAuth(env?: EnvironmentConfig, projectDir?: string, interactive?: boolean): Promise; export declare const resolveConfig: (projectDir?: string, env?: EnvironmentConfig) => Promise; /** * Resolve config with interactive authentication. * * If no token is available, prompts the user to login interactively. * Use this for commands that require authentication (push, pull, deploy). */ export declare const resolveConfigWithAuth: (projectDir?: string, env?: EnvironmentConfig) => Promise; export declare function resolveConfigWithAuthDetails(projectDir?: string, env?: EnvironmentConfig): Promise; export interface ApiReadOptions { /** Abort the in-flight HTTP request when this signal fires. */ signal?: AbortSignal; /** Use `none` when a caller owns retry timing or replaying a write would be ambiguous. */ retryPolicy?: "default" | "none"; } export interface ApiClient { get(path: string, params?: Record, options?: ApiReadOptions): Promise; post(path: string, body?: unknown): Promise; put(path: string, body?: unknown, options?: ApiReadOptions): Promise; patch(path: string, body?: unknown): Promise; delete(path: string): Promise; } export declare const getApiErrorSchema: () => import("../../src/internal-agents/schema.js").Schema; message: import("../../src/internal-agents/schema.js").Schema; detail: import("../../src/internal-agents/schema.js").Schema; title: import("../../src/internal-agents/schema.js").Schema; suggestion: import("../../src/internal-agents/schema.js").Schema; code: import("../../src/internal-agents/schema.js").Schema; slug: import("../../src/internal-agents/schema.js").Schema; }>>; export declare const ApiErrorSchema: import("../../src/internal-agents/schema.js").Schema; message: import("../../src/internal-agents/schema.js").Schema; detail: import("../../src/internal-agents/schema.js").Schema; title: import("../../src/internal-agents/schema.js").Schema; suggestion: import("../../src/internal-agents/schema.js").Schema; code: import("../../src/internal-agents/schema.js").Schema; slug: import("../../src/internal-agents/schema.js").Schema; }>>; export type ApiError = InferSchema>; export declare function formatApiError(data: ApiError, fallback: string): string; export declare function createApiClient(config: ResolvedConfig): ApiClient; //# sourceMappingURL=config.d.ts.map