import { Primitive } from '../../../../Primitive';
import { System } from '../../../../system';
import { Dict } from '../../../../types/Dict';
export interface I<T> {
    init: T;
    next: T;
    test: boolean;
}
export interface O<T> {
    local: T;
    current: T;
    final: T;
}
export default class Loop<T> extends Primitive<I<T>, O<T>> {
    private _current;
    private _next;
    private _test;
    private _looping;
    private _nexting;
    constructor(system: System);
    private _reset;
    onDataInputData(name: string, data: I<T>[keyof I<T>]): void;
    onDataInputDrop(name: string): void;
    onDataOutputDrop(name: string): void;
    onDataInputInvalid(name: string): void;
    private _pull_next;
    private _loop;
    private _iterate;
    private _done;
    private _forward_if_ready;
    snapshotSelf(): Dict<any>;
    restoreSelf(state: Dict<any>): void;
}
