/// <reference types="command-line-args" />
import 'reflect-metadata';
import { CommandLineOptions } from 'command-line-args';
import * as Discord from 'discord.js';
import { BotPlugin } from 'psyduck-contracts';
import { PluginQuoteUser, UserQuote } from 'psyduck-models';
import { ConnectionOptions, Repository } from 'typeorm';
export declare const commandOptions: ({
    name: string;
    alias: string;
    type: NumberConstructor;
    defaultOption?: undefined;
} | {
    name: string;
    alias: string;
    type: BooleanConstructor;
    defaultOption?: undefined;
} | {
    name: string;
    alias: string;
    type: StringConstructor;
    defaultOption: boolean;
})[];
export declare const userFormatRegex: RegExp;
export declare enum CommandType {
    Quote = 0,
    Random = 1,
}
export default class PsyduckQuotes implements BotPlugin {
    users: Repository<PluginQuoteUser>;
    quotes: Repository<UserQuote>;
    connectionOptions: ConnectionOptions;
    constructor(options: any);
    connect(): void;
    onMessage(message: Discord.Message): void;
    parseParameters(messageContent: string): string[];
    hydrateOptions(parameters: string[]): CommandLineOptions;
    extractUserId(userId: string): string | undefined;
    prepareHandler(message: Discord.Message, commandType: CommandType): void;
    sendHelp(message: Discord.Message): void;
    getUser(userId: string): Promise<PluginQuoteUser | undefined>;
    createUser(guildId: string, serverName: string, guildAvatarUrl: string, userId: string, userName: string, avatarUrl: string): PluginQuoteUser;
    recallQuote(message: Discord.Message, userId: string): Promise<void>;
    buildQuote(capturerId: string, content: string): UserQuote;
    saveQuote(message: Discord.Message, userId: string, pluck?: number): Promise<void>;
}
