import { Components, IParameter, LanguageDetails } from './components';
import { Extensions } from './extensions';
import { ProgramaticOperationDetails, ProgrammaticOperation } from './programatic-operation';
import { VirtualProperty } from './schema';
import { Schema } from '@azure-tools/codemodel';
import { DeepPartial } from '@azure-tools/codegen';
import { Operation } from '@azure-tools/codemodel';
import { Dictionary } from '@azure-tools/linq';
export interface VirtualParameters {
    body: Array<VirtualParameter>;
    operation: Array<VirtualParameter>;
}
export interface CommandOperationDetails extends ProgramaticOperationDetails {
    virtualParameters?: VirtualParameters;
}
export interface CompleterInfo {
    script: string;
    name: string;
    description: string;
}
export interface CommandOperation extends ProgrammaticOperation {
    alias: Array<string>;
    verb: string;
    noun: string;
    variant: string;
    category: string;
    asjob: boolean;
    callGraph: Array<Operation>;
}
export interface VirtualParameter {
    name: string;
    description: string;
    required: boolean;
    schema: Schema;
    nameOptions: Array<string>;
    origin: VirtualProperty | IParameter;
    alias: Array<string>;
    completerInfo?: CompleterInfo;
    hidden?: boolean;
}
export declare class CommandOperation extends Extensions implements CommandOperation {
    extensions: Dictionary<any>;
    details: LanguageDetails<CommandOperationDetails>;
    responses: Dictionary<Dictionary<Schema>>;
    constructor(name: string, initializer?: DeepPartial<CommandOperation>);
}
export interface CommandComponents extends Components<CommandOperation, IParameter> {
}
export declare class CommandComponents extends Components<CommandOperation, IParameter> {
}
//# sourceMappingURL=command-operation.d.ts.map