import { ProviderResult } from 'vscode';
import { ClientCapabilities, ServerCapabilities, ExecuteCommandRegistrationOptions, RegistrationType } from 'vscode-languageserver-protocol';
import { FeatureClient, DynamicFeature, FeatureState, RegistrationData } from './features.js';
export interface ExecuteCommandSignature {
    (this: void, command: string, args: any[]): ProviderResult<any>;
}
export interface ExecuteCommandMiddleware {
    executeCommand?: (this: void, command: string, args: any[], next: ExecuteCommandSignature) => ProviderResult<any>;
}
export declare class ExecuteCommandFeature implements DynamicFeature<ExecuteCommandRegistrationOptions> {
    private readonly _client;
    private readonly _commands;
constructor(client: FeatureClient<ExecuteCommandMiddleware>);
constructor(): FeatureState;
    get registrationType(): RegistrationType<ExecuteCommandRegistrationOptions>;
constructor(capabilities: ClientCapabilities): void;
constructor(capabilities: ServerCapabilities): void;
constructor(data: RegistrationData<ExecuteCommandRegistrationOptions>): void;
constructor(id: string): void;
constructor(): void;
}
