import { QueryResult } from 'pg';
import Config from '../config-interface';
import { PegGiven, ResultRow } from '../../models/database';
import { DbUsers } from './db-interfaces';
import { PockyDB as PockyDbInterface } from './db-interfaces';
import QueryHandler from './query-handler-interface';
import Utilities from '../utilities';
export default class PockyDB implements PockyDbInterface {
    private readonly sqlGivePegWithComment;
    private readonly sqlPegsGiven;
    private readonly sqlPegsReceived;
    private readonly sqlReset;
    private readonly sqlReturnResults;
    private readonly sqlReturnGives;
    private config;
    private queryHandler;
    private dbUsers;
    private readonly utilities;
    constructor(queryHandler: QueryHandler, dbUsers: DbUsers, utilities: Utilities);
    loadConfig(config: Config): void;
    /**
     * Returns 0 on success,
     *         1 on 'you have no more pegs left to give' failure
     *         2 on error
     */
    givePegWithComment(comment: string, receiver: string, sender?: string): Promise<number>;
    countPegsGiven(user: string, keywords: string[], penaltyKeywords: string[]): Promise<number>;
    countPenaltyPegsGiven(user: string, keywords: string[], penaltyKeywords: string[]): Promise<number>;
    countPegsReceived(user: string): Promise<number>;
    senderCanPeg(user: string, comment: string): Promise<boolean>;
    reset(): Promise<QueryResult>;
    returnResults(): Promise<ResultRow[]>;
    getPegsGiven(user: string): Promise<PegGiven[]>;
}
