export class PluginReferenceContext {
    /**
     *
     * @param {EnginePlugin} instance
     * @param {Class<T>} klass
     */
    constructor(instance: EnginePlugin, klass: Class<T>);
    /**
     *
     * @type {Class<T>}
     * @private
     */
    private __klass;
    /**
     *
     * @type {EnginePlugin}
     * @private
     */
    private __instance;
    /**
     *
     * @type {List<Reference> }
     * @private
     */
    private __references;
    /**
     *
     * @type {List<Reference<EnginePlugin>>}
     */
    dependency_references: List<Reference<EnginePlugin>>;
    on: {
        lastReleased: Signal<any, any, any, any, any, any, any, any>;
    };
    /**
     *
     * @type {Promise<void>}
     * @private
     */
    private __transition;
    /**
     * Returns promise to the latest transition, useful to synchronization
     * @example await ctx.synchronize();
     * @returns {Promise<void>}
     */
    synchronize(): Promise<void>;
    /**
     *
     * @param {ProcessState} target_state
     * @param {Engine} engine
     * @returns {Promise<unknown>}
     */
    transition(target_state: ProcessState, engine: Engine): Promise<unknown>;
    dispose(): Promise<void>;
    /**
     *
     * @param {Reference} ref
     * @private
     */
    private __handle_reference_released;
    getKlass(): Class<T>;
    /**
     *
     * @returns {Reference}
     */
    getReference(): Reference<any>;
    /**
     *
     * @returns {number}
     */
    get referenceCount(): number;
    /**
     *
     * @returns {EnginePlugin}
     */
    get instance(): EnginePlugin;
}
import List from "../../core/collection/list/List.js";
import { Reference } from "../reference/v2/Reference.js";
import Signal from "../../core/events/signal/Signal.js";
import { ProcessState } from "../../core/process/ProcessState.js";
//# sourceMappingURL=PluginReferenceContext.d.ts.map