import { Pin } from '../Pin';
import { PinOpt } from '../PinOpt';
import { Primitive } from '../Primitive';
import { System } from '../system';
import { Dict } from '../types/Dict';
export declare const ID_SYSTEM_MERGE = "_d2c4b19b-aa58-438b-8541-9df478b80aa3";
export default class Merge<T = any, I extends Dict<T> = any, O extends Dict<T> = any> extends Primitive<I, O> {
    private _current;
    private _loop_invalid_o;
    constructor(system: System);
    onInputRemoved<K extends keyof I>(name: K, input: Pin<any>, propagate: boolean): void;
    onInputRenamed<K extends keyof I>(name: K, newName: K, opt: PinOpt, newOpt: PinOpt): void;
    onOutputRenamed<K extends keyof O>(name: K, newName: K, opt: PinOpt, newOpt: PinOpt): void;
    onInputSet<K extends keyof I>(name: K, input: Pin<any>, opt: PinOpt, propagate: boolean): void;
    onOutputSet<K extends keyof O>(name: K, output: Pin<any>, opt: PinOpt, propagate: boolean): void;
    onOutputRemoved<K extends keyof O>(name: K, output: Pin, propagate: boolean): void;
    private _on_input_data;
    onDataInputData<K extends keyof I>(name: K): void;
    onRefInputData<K extends keyof I>(name: K): void;
    onDataInputDrop<K extends keyof I>(name: K): void;
    private _on_output_drop;
    onOutputInvalid(name: string): void;
    onDataOutputData<K extends keyof O>(name: K): void;
    onDataOutputDrop<K extends keyof O>(name: K): void;
    onRefOutputDrop<K extends keyof O>(name: K): void;
    onDataInputStart<K extends keyof I>(name: K): void;
    onDataInputInvalid<K extends keyof I>(name: K): void;
    onDataInputEnd(name: string): void;
    private _forward_all_valid_empty;
    private _reset;
    private _forward_if_ready;
    private _backward_if_ready;
    private _run;
    snapshotSelf(): Dict<any>;
    restoreSelf(state: Dict<any>): void;
    getData(): Partial<I>[keyof I];
}
