import type { Operation } from '../operation';
import type { Observer } from '../observable';
import type { Planner } from '../planner';
import type { Sensor } from '../sensor';
import type { StrictTarget } from '../target';
import { Target } from '../target';
import type { AgentOpts, Result } from './types';
import { Path } from '../path';
export declare class Runtime<TState> {
    private readonly observer;
    private readonly target;
    private readonly planner;
    private readonly sensors;
    private readonly opts;
    private readonly strict;
    private promise;
    private running;
    private stopped;
    private subscriptions;
    private stateRef;
    constructor(observer: Observer<Operation<TState>>, state: TState, target: Target<TState> | StrictTarget<TState>, planner: Planner<TState>, sensors: Array<Sensor<TState, Path>>, opts: AgentOpts<TState>, strict: boolean);
    get state(): TState;
    private findPlan;
    private updateSensors;
    private runAction;
    private runPlan;
    start(): void;
    stop(): Promise<void>;
    wait(timeout?: number): Promise<Result<TState>>;
}
