import type { ControlPlaneStore } from '../control-plane';
import type { RegionalExecution, RegionalOperationKind, RegionalTarget, RegionalTopology, RegionalTrafficRoute, ReplicationChannel } from './types';
export declare class RegionStore {
    readonly control: ControlPlaneStore;
    private now;
    private id;
    constructor(control: ControlPlaneStore, now?: () => Date, id?: () => string);
    create(input: {
        organizationId: string;
        projectId: string;
        environmentId?: string;
        name: string;
        hostname: string;
        regions: RegionalTopology['regions'];
        trafficPolicy: RegionalTopology['trafficPolicy'];
        dataPolicy: RegionalTopology['dataPolicy'];
        dnsProvider?: string;
        cdnEnabled?: boolean;
        wafEnabled?: boolean;
    }): RegionalTopology;
    get(id: string): RegionalTopology | undefined;
    list(projectId: string): RegionalTopology[];
    targets(id: string): RegionalTarget[];
    channels(id: string): ReplicationChannel[];
    route(id: string): RegionalTrafficRoute | undefined;
    updateTopology(id: string, patch: Partial<Pick<RegionalTopology, 'status' | 'activeRegion' | 'revision' | 'regions'>>): RegionalTopology;
    updateTarget(id: string, patch: Partial<Pick<RegionalTarget, 'role' | 'stackId' | 'stackRevision' | 'status' | 'health' | 'lastHealthyAt'>>): RegionalTarget;
    updateChannel(id: string, patch: Partial<Pick<ReplicationChannel, 'status' | 'checkpoint' | 'lagSeconds' | 'lastVerifiedAt'>>): ReplicationChannel;
    updateRoute(id: string, patch: Partial<Pick<RegionalTrafficRoute, 'weights' | 'desiredWeights' | 'status' | 'providerState'>>): RegionalTrafficRoute;
    createExecution(input: {
        topologyId: string;
        operationId?: string;
        kind: RegionalOperationKind;
        requestedRegion?: string;
        revision?: string;
        plan: string[];
    }): RegionalExecution;
    execution(id: string): RegionalExecution | undefined;
    executions(id: string): RegionalExecution[];
    updateExecution(id: string, patch: Partial<Pick<RegionalExecution, 'operationId' | 'currentStep' | 'completedSteps' | 'status' | 'error'>>): RegionalExecution;
}
