import { Printer } from './printer';
import { StateStreamFactory } from './state-stream';
import { ApiRouteConfig, CronConfig, EventConfig, Flow, InternalStateManager, Step } from './types';
import { Stream } from './types-stream';
type FlowEvent = 'flow-created' | 'flow-removed' | 'flow-updated';
type StepEvent = 'step-created' | 'step-removed' | 'step-updated';
type StreamEvent = 'stream-created' | 'stream-removed' | 'stream-updated';
type StreamWrapper<TData> = (streamName: string, factory: StateStreamFactory<TData>) => StateStreamFactory<TData>;
export declare class LockedData {
    readonly baseDir: string;
    flows: Record<string, Flow>;
    activeSteps: Step[];
    devSteps: Step[];
    printer: Printer;
    private stepsMap;
    private handlers;
    private stepHandlers;
    private streamHandlers;
    private streams;
    private state;
    private streamWrapper?;
    constructor(baseDir: string);
    applyStreamWrapper<TData>(state: InternalStateManager, streamWrapper: StreamWrapper<TData>): void;
    saveTypes(): void;
    on(event: FlowEvent, handler: (flowName: string) => void): void;
    onStep(event: StepEvent, handler: (step: Step) => void): void;
    onStream(event: StreamEvent, handler: (stream: Stream) => void): void;
    eventSteps(): Step<EventConfig>[];
    apiSteps(): Step<ApiRouteConfig>[];
    cronSteps(): Step<CronConfig>[];
    pythonSteps(): Step[];
    tsSteps(): Step[];
    getStreams(): Record<string, StateStreamFactory<any>>;
    findStream(path: string): Stream | undefined;
    updateStep(oldStep: Step, newStep: Step, options?: {
        disableTypeCreation?: boolean;
    }): boolean;
    createStep(step: Step, options?: {
        disableTypeCreation?: boolean;
    }): boolean;
    deleteStep(step: Step, options?: {
        disableTypeCreation?: boolean;
    }): void;
    private createFactoryWrapper;
    createStream<TData>(stream: Stream, options?: {
        disableTypeCreation?: boolean;
    }): StateStreamFactory<TData>;
    deleteStream(stream: Stream, options?: {
        disableTypeCreation?: boolean;
    }): void;
    updateStream(oldStream: Stream, stream: Stream, options?: {
        disableTypeCreation?: boolean;
    }): void;
    private createFlow;
    private removeFlow;
    private onFlowUpdated;
    private isValidStep;
}
export {};
