import { IGroup, IMember } from '@awhere/interfaces';
import PrototypeBase from '../PrototypeBase';
import User from '../User';
import Member from './Member';
declare class Group extends PrototypeBase implements IGroup {
    static generateId(): string;
    private static basePath;
    static fromId(id: string): Promise<Group>;
    static explore(paramters?: IGroupExploreParameter): Promise<any>;
    static create(data: undefined | string | IGroup): Promise<any>;
    static update(id: string, data: IGroup): Promise<any>;
    static delete(id: string): Promise<any>;
    save(): Promise<any>;
    delete(): Promise<any>;
    private _name;
    get name(): string;
    set name(value: string);
    private _owner;
    get owner(): IGroup['owner'];
    set owner(value: IGroup['owner']);
    private _thumbnail?;
    get thumbnail(): string | undefined;
    set thumbnail(value: string | undefined);
    private _members?;
    get members(): IMember[] | undefined;
    set members(value: IMember[] | undefined);
    constructor(props?: IGroup);
    getMemberAtIndex(index: number): IMember;
    addMember(user: User, role: IMember['role']): Member;
}
export default Group;
declare enum SortWithoutKeyword {
    name = "name"
}
declare enum SortWithKeyword {
    relavent = "relevant"
}
declare enum SortOrder {
    ascending = "ascending",
    descending = "descending"
}
interface IGroupExploreParameter {
    keyword?: string;
    skip?: number | string;
    limit?: number | string;
    sortBy?: SortWithoutKeyword | SortWithKeyword | keyof typeof SortWithoutKeyword | keyof typeof SortWithKeyword;
    sortOrder?: SortOrder | keyof typeof SortOrder;
}
