import { PartialModelObject, Pojo, RelationMappings } from 'objection';
import BaseModel, { TrxOption, TrxAndRelatedOptions } from '../base.model';
import Identity from '../identity/identity.model';
import Team from '../team/team.model';
declare class User extends BaseModel {
    agreedTc: boolean;
    givenNames: string;
    invitationToken: string;
    invitationTokenTimestamp: Date;
    isActive: boolean;
    password: string;
    passwordHash: string;
    passwordResetTimestamp: Date;
    passwordResetToken: string;
    surname: string;
    titlePost: string;
    titlePre: string;
    username: string;
    defaultIdentity: Identity;
    identities: Identity[];
    teams: Team[];
    constructor();
    static get tableName(): string;
    static get schema(): object;
    static get relationMappings(): RelationMappings;
    patch(data: PartialModelObject<this>, options?: TrxOption): Promise<this>;
    static patchAndFetchById<T extends BaseModel>(this: new () => T, id: string, data: PartialModelObject<T>, options?: TrxAndRelatedOptions): Promise<T>;
    update(data: PartialModelObject<this>, options?: TrxOption): Promise<this>;
    static updateAndFetchById<T extends BaseModel>(this: new () => T, id: string, data: PartialModelObject<T>, options?: TrxAndRelatedOptions): Promise<T>;
    static hasGlobalRole(userId: string, role: string, options?: TrxOption): Promise<boolean>;
    hasGlobalRole(role: string, options?: TrxOption): Promise<boolean>;
    static hasRoleOnObject(userId: string, role: string, objectId: string, options?: TrxOption): Promise<boolean>;
    hasRoleOnObject(role: string, objectId: string, options?: TrxOption): Promise<boolean>;
    static getTeams(userId: string, options?: TrxOption): Promise<Team[]>;
    getTeams(): Promise<Team[]>;
    static updatePassword(userId: string, currentPassword: string, newPassword: string, passwordResetToken?: string, options?: TrxOption): Promise<User>;
    updatePassword(currentPassword: string, newPassword: string, passwordResetToken: string, options?: TrxOption): Promise<User>;
    $formatJson(json: Pojo): Pojo;
    static hashPassword(plaintext: string): Promise<string>;
    hashPassword(plaintext: string): Promise<void>;
    $beforeInsert(): Promise<void>;
    $beforeUpdate(): Promise<void>;
    isPasswordValid(plaintext: string): Promise<boolean>;
    static activateUsers(ids: string[], options?: TrxOption): Promise<User[]>;
    static deactivateUsers(ids: string[], options?: TrxOption): Promise<User[]>;
}
export default User;
//# sourceMappingURL=user.model.d.ts.map