import type { Broker, CallMethod, EmitMethod, EventOptions, EventPayload, EventRecord, EventReturn, Events, Listener, OffMethod, OnceMethod, OnMethod } from '@glandjs/events';
import { Dictionary } from '@medishn/toolkit';
export declare class Context<TEvents extends EventRecord> implements CallMethod<TEvents>, OnMethod<TEvents>, EmitMethod<TEvents>, OnceMethod<TEvents>, OffMethod<TEvents> {
    protected broker: Broker<TEvents>;
    private _state;
    error?: any;
    constructor(broker: Broker<TEvents>);
    get state(): Dictionary<any>;
    set state(data: Dictionary<any>);
    emit<K extends Events<TEvents>>(event: K, payload: EventPayload<TEvents, K>, options?: EventOptions): this;
    on<K extends Events<TEvents>>(event: K, listener: Listener<EventPayload<TEvents, K>, void>, options?: EventOptions): this;
    on<K extends Events<TEvents>>(event: K, listener: null | Listener<EventPayload<TEvents, K>, void>, options: EventOptions & {
        watch: true;
    }): Promise<EventPayload<TEvents, K>>;
    off<K extends Events<TEvents>>(event: K, listener?: Listener<EventPayload<TEvents, K>, void>): this;
    once<K extends Events<TEvents>>(event: K, listener: Listener<EventPayload<TEvents, K>, void>): this;
    once<K extends Events<TEvents>>(event: K, listener: Listener<EventPayload<TEvents, K>, void> | null, options: EventOptions & {
        watch: true;
    }): Promise<EventPayload<TEvents, K>>;
    call<K extends Events<TEvents>>(event: K, data: EventPayload<TEvents, K>): EventReturn<TEvents, K>;
    call<K extends Events<TEvents>>(event: K, data: EventPayload<TEvents, K>, strategy: 'all'): EventReturn<TEvents, K>[];
}
