import { ChatInputCommandInteraction, Message } from 'discord.js';
import type { CommandOptions } from '../types';
import type { VerseDatabase } from '../types';
import type { CooldownController } from '../core/BotStarter';
type CooldownBackend = {
    type: 'verse';
    instance: VerseDatabase;
};
export declare class CooldownManager implements CooldownController {
    private backend?;
    private store;
    constructor(backend?: CooldownBackend | undefined);
    private key;
    getRemaining(userId: string, command: string): Promise<number>;
    set(userId: string, command: string, seconds: number): Promise<void>;
    checkAndSet(userId: string, command: string, seconds: number): Promise<number>;
    clear(userId: string, command: string): Promise<void>;
}
export declare function isOwner(userId: string): boolean;
export declare function isDev(userId: string): boolean;
export declare function checkContext(inGuild: boolean, options: CommandOptions): {
    ok: boolean;
    message?: string;
};
export declare function checkPermsSlash(interaction: ChatInputCommandInteraction, options: CommandOptions): {
    ok: boolean;
    userMissing: string[];
    botMissing: string[];
};
export declare function checkPermsPrefix(message: Message, options: CommandOptions): {
    ok: boolean;
    userMissing: string[];
    botMissing: string[];
};
export declare function enforceSlashGuards(interaction: ChatInputCommandInteraction, commandName: string, options: CommandOptions, cooldowns: CooldownController): Promise<boolean>;
export declare function enforcePrefixGuards(message: Message, commandName: string, options: CommandOptions, cooldowns: CooldownController): Promise<boolean>;
export {};
//# sourceMappingURL=commandGuards.d.ts.map