import { Primitive, PrimitiveEvents } from '../../Primitive';
import { System } from '../../system';
import { Dict } from '../../types/Dict';
import { Functional } from '../Functional';
import { Done } from '../Functional/Done';
import { Opt } from '../Unit';
export type Semifunctional_EE = {};
export type SemifunctionalEvents<_EE extends Dict<any[]>> = PrimitiveEvents<_EE & Semifunctional_EE> & Semifunctional_EE;
export interface SFIO {
    fi?: string[];
    fo?: string[];
    i?: string[];
    o?: string[];
}
export declare class Semifunctional<I = {}, O = {}, _EE extends SemifunctionalEvents<_EE> = SemifunctionalEvents<Semifunctional_EE>> extends Primitive<I, O, _EE> {
    private _f_i;
    private _f_o;
    protected _functional: Functional<any, any>;
    protected _primitive: Primitive;
    constructor({ fi, fo, i, o }: SFIO, opt: Opt, system: System, id: string);
    f(i: Partial<I>, done: Done<O>): void;
    d(): void;
    fd(): void;
    i(): void;
    fi(): void;
    protected _done: Done<O>;
    onIterDataInputData(name: string, data: any): void;
    onIterRefInputData(name: any, data: any): void;
    onIterDataInputDrop(name: string): void;
    onIterRefInputDrop(name: string): void;
    onIterDataOutputDrop(name: string): void;
    onIterRefOutputDrop(name: string): void;
    onIterDataInputInvalid(name: string): void;
    onIterRefInputInvalid(name: string): void;
    destroy(): void;
}
