import { Components, IParameter, LanguageDetails } from './components';
import { Extensions } from './extensions';
import { ProgramaticOperationDetails, ProgrammaticOperation } from './programatic-operation';
import { VirtualProperty } from './schema';
import { Schema } from '@autorest/codemodel';
import { DeepPartial } from '@azure-tools/codegen';
import { Operation } from '@autorest/codemodel';
import { Dictionary } from '@azure-tools/linq';
export declare enum OperationType {
    Create = "create",
    Update = "update",
    Other = "other"
}
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>;
    operationType: OperationType;
}
export interface VirtualParameter {
    name: string;
    description: string;
    required: boolean;
    schema: Schema;
    nameOptions: Array<string>;
    origin: VirtualProperty | IParameter;
    alias: Array<string>;
    completerInfo?: CompleterInfo;
    hidden?: boolean;
    type?: string;
}
export declare enum CommandType {
    Atomic = 0,
    GetPut = 1,
    ManagedIdentityUpdate = 2,
    ManagedIdentityNew = 3
}
export declare class CommandOperation extends Extensions implements CommandOperation {
    extensions: Dictionary<any>;
    details: LanguageDetails<CommandOperationDetails>;
    commandType: CommandType;
    responses: Dictionary<Dictionary<Schema>>;
    constructor(name: string, initializer?: DeepPartial<CommandOperation>, commandType?: CommandType);
}
export interface CommandComponents extends Components<CommandOperation, IParameter> {
}
export declare class CommandComponents extends Components<CommandOperation, IParameter> {
}
export declare function isWritableCmdlet(operation: CommandOperation): boolean;
//# sourceMappingURL=command-operation.d.ts.map