import { Primitive, PrimitiveEvents } from '../../Primitive';
import { System } from '../../system';
import { Dict } from '../../types/Dict';
import { ION, Opt } from '../Unit';
import { Done } from './Done';
export type Functional_EE = {};
export type FunctionalEvents<_EE extends Dict<any[]>> = PrimitiveEvents<_EE & Functional_EE> & Functional_EE;
export type Functional_S = {
    _looping: boolean;
};
export type FunctionalState<T extends Omit<Dict<any>, keyof Functional_S> = {}> = T & Functional_S;
export declare class Functional<I extends Dict<any> = {}, O extends Dict<any> = {}, _EE extends FunctionalEvents<_EE> = FunctionalEvents<Functional_EE>> extends Primitive<I, O, _EE> {
    private _looping;
    constructor({ i, o }: ION<I, O>, opt: Opt, system: System, id: string);
    private _on_input_data;
    private _on_input_drop;
    private _on_input_invalid;
    onDataInputData(name: string): void;
    onDataInputDrop(name: string, data: any): void;
    onDataInputStart(name: string): void;
    onDataInputInvalid(name: string): void;
    onDataInputEnd(name: string): void;
    onRefInputData(name: string): void;
    onRefInputDrop(name: string, data: any): void;
    onRefInputInvalid(name: string): void;
    private _on_data_output_drop;
    onDataOutputDrop(name: string): void;
    f(i: Partial<I>, done: Done<O>): void;
    i(name: string): void;
    d(name: string, data: any): void;
    private _backward_if_ready;
    private _forward_if_ready;
    _done: Done<O>;
    snapshotSelf(): any;
    restoreSelf(state: Dict<any>): void;
}
