import type { CommandMetadata, CommandCategory, CommandSideEffect } from '../../types/command-metadata';
export interface CommandConfig {
    name: string;
    category: CommandCategory;
}
export interface MetaConfig {
    description: string;
    syntax: string | readonly string[];
    examples: readonly string[];
    sideEffects?: readonly CommandSideEffect[];
    deprecated?: boolean;
    deprecationMessage?: string;
    aliases?: readonly string[];
    relatedCommands?: readonly string[];
    isBlocking?: boolean;
    hasBody?: boolean;
}
export interface DecoratedCommand {
    readonly name: string;
    readonly metadata: CommandMetadata;
}
export declare function command(config: CommandConfig): <T extends new (...args: unknown[]) => object>(target: T, context: ClassDecoratorContext) => T | void;
export declare function meta(config: MetaConfig): <T extends new (...args: unknown[]) => object>(target: T, context: ClassDecoratorContext) => T | void;
export declare function getCommandName<T extends new (...args: unknown[]) => object>(target: T): string | undefined;
export declare function getCommandCategory<T extends new (...args: unknown[]) => object>(target: T): CommandCategory | undefined;
export declare function getCommandMetadata<T extends new (...args: unknown[]) => object>(target: T): CommandMetadata | undefined;
export declare function createFactory<T extends new () => object>(CommandClass: T): () => InstanceType<T>;
export type { CommandMetadata, CommandCategory, CommandSideEffect };
//# sourceMappingURL=index.d.ts.map