import { Cancellable } from "@lincode/promiselikes";
import { GetGlobalState } from "@lincode/reactivity";
import { Object3D } from "three";
import IEventLoop from "../../interface/IEventLoop";
import Appendable from "./Appendable";
export default abstract class EventLoopItem<T extends Object3D = Object3D> extends Appendable<T> implements IEventLoop {
    private _proxy?;
    get proxy(): EventLoopItem<Object3D<import("three").Event>> | undefined;
    set proxy(val: EventLoopItem<Object3D<import("three").Event>> | undefined);
    timer(time: number, repeat: number, cb: () => void): Cancellable;
    beforeRender(cb: () => void): Cancellable;
    queueMicrotask(cb: () => void): void;
    protected cancellable(cb?: () => void): Cancellable;
    protected createEffect(cb: () => (() => void) | void, getStates: Array<GetGlobalState<any> | any>): Cancellable;
    private handles?;
    protected cancelHandle(name: string, lazyHandle: undefined | false | "" | (() => Cancellable)): Cancellable | undefined;
    dispose(): this;
    private _onLoop?;
    get onLoop(): (() => void) | undefined;
    set onLoop(cb: (() => void) | undefined);
}
