import { ClassInterface } from "classInterface";
import type { Character, Dict, NewCharacter, PlayerMetadata, CharacterLicense, BanDetails } from "../../types";
export declare class OxPlayer extends ClassInterface {
    #private;
    source: number | string;
    userId: number;
    charId?: number;
    stateId?: string;
    username: string;
    identifier: string;
    ped: number;
    protected static members: Dict<OxPlayer>;
    protected static keys: Dict<Dict<OxPlayer>>;
    static get(id: string | number): OxPlayer;
    static getFromUserId(id: number): OxPlayer;
    static getFromCharId(id: number): OxPlayer;
    static formatBanReason(ban: BanDetails): string;
    private filter;
    static getFromFilter(filter: Dict<any>): OxPlayer | undefined;
    static getAll(filter?: Dict<any>, asArray?: false): Dict<OxPlayer>;
    static getAll(filter?: Dict<any>, asArray?: true): OxPlayer[];
    static saveAll(kickWithReason?: string): void;
    constructor(source: number);
    emit(eventName: string, ...args: any[]): void;
    set<K extends string>(key: K | keyof PlayerMetadata, value: K extends keyof PlayerMetadata ? PlayerMetadata[K] : any, replicated?: boolean): void;
    get<K extends string>(key: K | keyof PlayerMetadata): K extends keyof PlayerMetadata ? PlayerMetadata[K] : any;
    payInvoice(invoiceId: number): Promise<{
        success: boolean;
        message?: string;
    } | undefined>;
    setActiveGroup(groupName?: string, temp?: boolean): boolean;
    setGroup(groupName: string, grade?: number, force?: boolean): Promise<boolean | void>;
    getGroup(filter: string): number;
    getGroup(filter: string[] | Record<string, number>): [string, number] | [];
    getGroupByType(type: string): [] | [string, number];
    getGroups(): Dict<number>;
    hasPermission(permission: string): boolean;
    setStatus(statusName: string, value?: number): true | undefined;
    getStatus(statusName: string): number;
    getStatuses(): Dict<number>;
    addStatus(statusName: string, value: number): true | undefined;
    removeStatus(statusName: string, value: number): true | undefined;
    getLicense(licenseName: string): CharacterLicense;
    getLicenses(): Dict<CharacterLicense>;
    addLicense(licenseName: string): Promise<boolean>;
    removeLicense(licenseName: string): Promise<boolean>;
    updateLicense(licenseName: string, key: string, value: any): Promise<boolean>;
    save(): Promise<number> | Promise<import("mariadb").UpsertResult | import("mariadb").UpsertResult[]> | undefined;
    setAsJoined(): Promise<void>;
    logout(save?: boolean, dropped?: boolean): Promise<void>;
    createCharacter(data: NewCharacter): Promise<number | undefined>;
    setActiveCharacter(data: number | NewCharacter): Promise<Character | undefined>;
    deleteCharacter(charId: number): Promise<true | undefined>;
}
