/**
 * Metadata for command handlers
 */
export interface CommandHandlerMetadata {
    commandType: string;
    aggregateType?: string;
    async?: boolean;
    timeout?: number;
}
/**
 * Key for command handler metadata
 */
export declare const COMMAND_HANDLER_METADATA: unique symbol;
/**
 * Key for command metadata
 */
export declare const COMMAND_METADATA: unique symbol;
/**
 * Decorator to mark method as command handler
 *
 * @param commandType - command type (command class)
 * @param metadata - additional metadata
 * @returns method decorator
 */
export declare function CommandHandler(commandType: new (...args: any[]) => any, metadata?: Partial<Omit<CommandHandlerMetadata, 'commandType'>>): (target: any, propertyKey: string, descriptor: PropertyDescriptor) => void;
/**
 * Decorator to mark class as command
 *
 * @param metadata - command metadata
 * @returns class decorator
 */
export declare function Command(metadata?: {
    aggregateType?: string;
}): <T extends new (...args: any[]) => any>(constructor: T) => T;
/**
 * Function to get command handler metadata
 */
export declare function getCommandHandlerMetadata(target: any, propertyKey: string): CommandHandlerMetadata | undefined;
/**
 * Function to get command metadata
 */
export declare function getCommandMetadata(target: any): any;
/**
 * Function to get all command handlers in class
 */
export declare function getCommandHandlers(target: any): Array<{
    propertyKey: string;
    metadata: CommandHandlerMetadata;
}>;
//# sourceMappingURL=command.decorator.d.ts.map