import { CommandProperties } from './commandProperties';
import { AbstractCommand } from './abstractCommand';
import { Semaphore } from './semaphore';
import { ExecutionResult } from './executionResult';
export interface CommandInfo {
    commandKey: string;
    commandGroup: string;
    timeout: number;
    isErrorHandler: (error: any) => any;
    metricsConfig: any;
    circuitConfig: any;
    requestVolumeRejectionThreshold: number;
}
export declare class HystrixCommand {
    private properties;
    private command;
    private context;
    status: ExecutionResult;
    private running;
    private _arguments;
    private metrics;
    constructor(properties: CommandProperties, command: AbstractCommand<any>, context: any);
    readonly circuitBreaker: any;
    readonly semaphore: Semaphore;
    setSchemaOnCommandAsync(schema: string): Promise<void>;
    executeAsync<T>(...args: any[]): Promise<T>;
    private getFallbackOrThrowException(eventType, failureType, message, error);
    private onExecutionError(ms, e);
    private logInfo(msg);
    private isUnrecoverable(e);
    private getLogMessagePrefix();
    protected recordTotalExecutionTime(duration: any): void;
}
