import type { ExecutionContext, TypedExecutionContext } from '../../types/core';
import type { ASTNode, ExpressionNode } from '../../types/base-types';
import type { ExpressionEvaluator } from '../../core/expression-evaluator';
import type { EventOptions } from '../helpers/event-helpers';
import { type DecoratedCommand, type CommandMetadata } from '../decorators';
export type { EventOptions } from '../helpers/event-helpers';
export type EventDispatchMode = 'trigger' | 'send';
export interface EventDispatchInput {
    eventName: string;
    detail?: any;
    targets: EventTarget[];
    options: EventOptions;
    mode: EventDispatchMode;
}
export type TriggerCommandInput = Omit<EventDispatchInput, 'mode'>;
export type SendCommandInput = Omit<EventDispatchInput, 'mode'>;
export declare class EventDispatchCommand implements DecoratedCommand {
    readonly name: string;
    readonly metadata: CommandMetadata;
    parseInput(raw: {
        args: ASTNode[];
        modifiers: Record<string, ExpressionNode>;
        commandName?: string;
    }, evaluator: ExpressionEvaluator, context: ExecutionContext): Promise<EventDispatchInput>;
    execute(input: EventDispatchInput, context: TypedExecutionContext): Promise<void>;
    private resolveTargets;
    private parseEventDetail;
    private parseEventOptions;
}
export { EventDispatchCommand as TriggerCommand };
export { EventDispatchCommand as SendCommand };
export declare const createEventDispatchCommand: () => EventDispatchCommand;
export declare const createTriggerCommand: () => EventDispatchCommand;
export declare const createSendCommand: () => EventDispatchCommand;
export default EventDispatchCommand;
//# sourceMappingURL=trigger.d.ts.map