/** * Environment configuration schemas and types. * * The env.json document is the single source of truth for a Log10x environment: * cluster identity, SIEM destination, offload destinations (multi-target so we * can drain a legacy bucket while a new one is primary), streamer + retriever * endpoints. Everything tools need to act on a given environment is described * here, validated by zod, and persisted to whichever on-prem store the * customer's cloud uses (Kubernetes ConfigMap, AWS SSM, GCP Secret Manager, * Azure App Configuration, or a local file for dev). * * Schema is versioned (`schema_version`) so we can evolve the document without * breaking older readers — readers refuse on mismatch rather than guess. */ import { z } from 'zod'; /** * A single offload destination — where the Receiver can write objects when a * pattern is tagged `offload`. The array is non-empty because the resolver * needs at least one default to point new offload rules at. `status` lets us * keep historical buckets in the document while signalling they're no longer * being written to (`draining` = still being read, `archived` = read-only * reference, `failed` = quarantined after write errors). */ export declare const offloadDestinationSchema: z.ZodObject<{ nickname: z.ZodString; type: z.ZodEnum<{ s3: "s3"; gcs: "gcs"; azure_blob: "azure_blob"; file: "file"; }>; status: z.ZodDefault>; bucket: z.ZodOptional; prefix: z.ZodOptional; region: z.ZodOptional; project_id: z.ZodOptional; storage_account: z.ZodOptional; path: z.ZodOptional; auth: z.ZodOptional; role: z.ZodOptional; sa: z.ZodOptional; note: z.ZodOptional; }, z.core.$strip>>; archived_at: z.ZodOptional; first_used_at: z.ZodOptional; note: z.ZodOptional; }, z.core.$strip>; /** * Where this environment lives. `type` is the cluster flavour; the rest are * cloud-specific locators that let us emit the right offload-recipe IAM and * choose the right on-prem store implementation (EKS → SSM, GKE → GCP SM, * AKS → Azure App Config). */ export declare const clusterIdentitySchema: z.ZodObject<{ type: z.ZodEnum<{ kind: "kind"; eks: "eks"; gke: "gke"; aks: "aks"; minikube: "minikube"; bare_metal: "bare_metal"; other: "other"; }>; region: z.ZodOptional; account: z.ZodOptional; project_id: z.ZodOptional; subscription: z.ZodOptional; context_name: z.ZodOptional; }, z.core.$strip>; /** * The SIEM this environment's logs ultimately land in. Drives action * eligibility (e.g. `tier_down` only makes sense for Datadog/CloudWatch/Azure) * and the explainer copy on commitment_report. */ export declare const siemDestinationSchema: z.ZodObject<{ siem_vendor: z.ZodEnum<{ datadog: "datadog"; other: "other"; splunk: "splunk"; elasticsearch: "elasticsearch"; clickhouse: "clickhouse"; cloudwatch: "cloudwatch"; "azure-monitor": "azure-monitor"; "gcp-logging": "gcp-logging"; sumo: "sumo"; coralogix: "coralogix"; "elastic-serverless": "elastic-serverless"; }>; region: z.ZodOptional; log_group_prefix: z.ZodOptional; ingest_url: z.ZodOptional; }, z.core.$strip>; /** * Streamer endpoint — the in-cluster service that fronts the Receiver's * compact/sample/drop/offload decisions. `target_path` is the optional * sub-path when the streamer is mounted behind a shared ingress. */ export declare const streamerConfigSchema: z.ZodObject<{ url: z.ZodString; target_path: z.ZodOptional; }, z.core.$strip>; /** * Retriever endpoint and the queues it owns. The retriever reads from * `input_bucket` (the customer-owned overflow bucket), serves queries via `url`, and uses the four * SQS queues for index/subquery/stream/query coordination. `query_log_group` * is the CloudWatch group we tail when investigating retriever failures. */ export declare const retrieverConfigSchema: z.ZodObject<{ url: z.ZodString; input_bucket: z.ZodString; input_prefix: z.ZodOptional; query_queues: z.ZodObject<{ index: z.ZodString; subquery: z.ZodString; stream: z.ZodString; query: z.ZodString; }, z.core.$strip>; query_log_group: z.ZodOptional; helm_release: z.ZodOptional; }, z.core.$strip>>; }, z.core.$strip>; /** * The full environment document persisted to the on-prem store. `env_id` is * the stable identifier (UUID); `nickname` is the human-friendly key that * users type at the prompt. Both must resolve to the same document. */ export declare const environmentConfigSchema: z.ZodObject<{ schema_version: z.ZodLiteral<"1.0">; env_id: z.ZodString; nickname: z.ZodString; cluster: z.ZodObject<{ type: z.ZodEnum<{ kind: "kind"; eks: "eks"; gke: "gke"; aks: "aks"; minikube: "minikube"; bare_metal: "bare_metal"; other: "other"; }>; region: z.ZodOptional; account: z.ZodOptional; project_id: z.ZodOptional; subscription: z.ZodOptional; context_name: z.ZodOptional; }, z.core.$strip>; destination: z.ZodObject<{ siem_vendor: z.ZodEnum<{ datadog: "datadog"; other: "other"; splunk: "splunk"; elasticsearch: "elasticsearch"; clickhouse: "clickhouse"; cloudwatch: "cloudwatch"; "azure-monitor": "azure-monitor"; "gcp-logging": "gcp-logging"; sumo: "sumo"; coralogix: "coralogix"; "elastic-serverless": "elastic-serverless"; }>; region: z.ZodOptional; log_group_prefix: z.ZodOptional; ingest_url: z.ZodOptional; }, z.core.$strip>; offload_destinations: z.ZodArray; status: z.ZodDefault>; bucket: z.ZodOptional; prefix: z.ZodOptional; region: z.ZodOptional; project_id: z.ZodOptional; storage_account: z.ZodOptional; path: z.ZodOptional; auth: z.ZodOptional; role: z.ZodOptional; sa: z.ZodOptional; note: z.ZodOptional; }, z.core.$strip>>; archived_at: z.ZodOptional; first_used_at: z.ZodOptional; note: z.ZodOptional; }, z.core.$strip>>; streamer: z.ZodObject<{ url: z.ZodString; target_path: z.ZodOptional; }, z.core.$strip>; retriever: z.ZodObject<{ url: z.ZodString; input_bucket: z.ZodString; input_prefix: z.ZodOptional; query_queues: z.ZodObject<{ index: z.ZodString; subquery: z.ZodString; stream: z.ZodString; query: z.ZodString; }, z.core.$strip>; query_log_group: z.ZodOptional; helm_release: z.ZodOptional; }, z.core.$strip>>; }, z.core.$strip>; updated_at: z.ZodOptional; updated_by: z.ZodOptional; }, z.core.$strip>; export type EnvironmentConfig = z.infer; export type OffloadDestination = z.infer; export type ClusterIdentity = z.infer; export type SiemDestination = z.infer; export type StreamerConfig = z.infer; export type RetrieverConfig = z.infer;