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