import { ObjectId, IUser, AuthProvider } from ".";
export declare const hooks: {
    /**
     * Triggered before registering or authenticating a user.
     */
    beforeAuthenticate: {
        (this: any, cb: (provider: AuthProvider, $setOnInsert: Partial<IUser>, $set?: Partial<IUser>) => void): import("strong-events/lib").EventEmitter<(provider: AuthProvider, $setOnInsert: Partial<IUser>, $set?: Partial<IUser>) => void>;
        once(cb: (provider: AuthProvider, $setOnInsert: Partial<IUser>, $set?: Partial<IUser>) => void): void;
        remove(cb: (provider: AuthProvider, $setOnInsert: Partial<IUser>, $set?: Partial<IUser>) => void): void;
        invoke(provider: AuthProvider, $setOnInsert: Partial<IUser<any>>, $set?: Partial<IUser<any>>): void;
        invokeAsync(provider: AuthProvider, $setOnInsert: Partial<IUser<any>>, $set?: Partial<IUser<any>>): Promise<any[]>;
        clear(): void;
    };
    /**
     * Triggered before updating a user.
     */
    beforeUserUpdate: {
        (this: any, cb: (_id: ObjectId, fields: Partial<IUser>) => void): import("strong-events/lib").EventEmitter<(_id: ObjectId, fields: Partial<IUser>) => void>;
        once(cb: (_id: ObjectId, fields: Partial<IUser>) => void): void;
        remove(cb: (_id: ObjectId, fields: Partial<IUser>) => void): void;
        invoke(_id: ObjectId, fields: Partial<IUser<any>>): void;
        invokeAsync(_id: ObjectId, fields: Partial<IUser<any>>): Promise<any[]>;
        clear(): void;
    };
    /**
     * Triggered after friend request receiver accept it
     * senderId -> who initiate friend request
     * receiverId -> who processed friend request
     * accepted -> true for accept and false for rejected
     */
    afterFriendRequestProcessed: {
        (this: any, cb: (senderId: ObjectId, receiverId: ObjectId, accepted: boolean) => void): import("strong-events/lib").EventEmitter<(senderId: ObjectId, receiverId: ObjectId, accepted: boolean) => void>;
        once(cb: (senderId: ObjectId, receiverId: ObjectId, accepted: boolean) => void): void;
        remove(cb: (senderId: ObjectId, receiverId: ObjectId, accepted: boolean) => void): void;
        invoke(senderId: ObjectId, receiverId: ObjectId, accepted: boolean): void;
        invokeAsync(senderId: ObjectId, receiverId: ObjectId, accepted: boolean): Promise<any[]>;
        clear(): void;
    };
    /**
     * Triggered when a user send a request for a friendship
     */
    onNewFriendRequest: {
        (this: any, cb: (senderId: ObjectId, receiverId: ObjectId) => void): import("strong-events/lib").EventEmitter<(senderId: ObjectId, receiverId: ObjectId) => void>;
        once(cb: (senderId: ObjectId, receiverId: ObjectId) => void): void;
        remove(cb: (senderId: ObjectId, receiverId: ObjectId) => void): void;
        invoke(senderId: ObjectId, receiverId: ObjectId): void;
        invokeAsync(senderId: ObjectId, receiverId: ObjectId): Promise<any[]>;
        clear(): void;
    };
    /**
     * Triggered when a friend send a personal message to his/her friend
     */
    onFriendMessage: {
        (this: any, cb: (senderId: ObjectId, friendId: ObjectId, message: any) => void): import("strong-events/lib").EventEmitter<(senderId: ObjectId, friendId: ObjectId, message: any) => void>;
        once(cb: (senderId: ObjectId, friendId: ObjectId, message: any) => void): void;
        remove(cb: (senderId: ObjectId, friendId: ObjectId, message: any) => void): void;
        invoke(senderId: ObjectId, friendId: ObjectId, message: any): void;
        invokeAsync(senderId: ObjectId, friendId: ObjectId, message: any): Promise<any[]>;
        clear(): void;
    };
    /**
     * Triggered on Level Up of a user
     */
    onLevelUp: {
        (this: any, cb: (_id: ObjectId, level: number) => void): import("strong-events/lib").EventEmitter<(_id: ObjectId, level: number) => void>;
        once(cb: (_id: ObjectId, level: number) => void): void;
        remove(cb: (_id: ObjectId, level: number) => void): void;
        invoke(_id: ObjectId, level: number): void;
        invokeAsync(_id: ObjectId, level: number): Promise<any[]>;
        clear(): void;
    };
    /**
     * Triggered if User data update by updateUser and addXp methods
     */
    afterUserUpdate: {
        (this: any, cb: (_id: ObjectId) => void): import("strong-events/lib").EventEmitter<(_id: ObjectId) => void>;
        once(cb: (_id: ObjectId) => void): void;
        remove(cb: (_id: ObjectId) => void): void;
        invoke(_id: ObjectId): void;
        invokeAsync(_id: ObjectId): Promise<any[]>;
        clear(): void;
    };
};
