import type { TwitchContext } from './TwitchContext';
import type { DefaultConnection, OptionsRecord, PermissionOrArray, RequiredPerms } from '../types';
import type { EventSubConnection } from '../enums';
/**
 * The command structure.
 */
export declare class ChatCommand<T extends EventSubConnection = DefaultConnection> {
    /**
     * The name of the command.
     */
    readonly name?: string;
    /**
     * The options of the command.
     */
    readonly options?: OptionsRecord;
    /**
     * The permissions of the command.
     */
    readonly permissions?: PermissionOrArray<T>[];
    /**
     * The run function of the command.
     */
    run?(ctx: TwitchContext<typeof this.options, T>): any;
    /**
     * The fallback function of the command if the permissions aren't satisfied.
     */
    onPermissionFallback?(ctx: TwitchContext<typeof this.options, T>, permissions: RequiredPerms): any;
}
