import { AccessRole, IItem, IUser } from '@awhere/interfaces';
import PrototypeBase from '../PrototypeBase';
import { Watcher } from '../Watcher';
export default class ItemBase extends PrototypeBase implements IItem {
    static generateId(): string;
    protected _name: string;
    get name(): string;
    set name(value: string);
    protected _description?: string;
    get description(): string | undefined;
    set description(value: string | undefined);
    protected _type: IItem['type'];
    get type(): IItem['type'];
    set type(value: IItem['type']);
    protected _subtype?: IItem['subtype'];
    get subtype(): IItem['subtype'];
    set subtype(value: IItem['subtype']);
    protected _owner: IUser | string;
    get owner(): IUser | string;
    set owner(value: IUser | string);
    protected _parent?: IItem['parent'];
    get parent(): IItem['parent'];
    set parent(value: IItem['parent']);
    protected _permission: IItem['permission'];
    get permission(): IItem['permission'];
    set permission(value: IItem['permission']);
    protected _thumbnail?: IItem['thumbnail'];
    get thumbnail(): IItem['thumbnail'];
    set thumbnail(value: IItem['thumbnail']);
    protected _progress?: IItem['progress'];
    get progress(): IItem['progress'];
    set progress(value: IItem['progress']);
    protected _trashed?: IItem['trashed'];
    get trashed(): IItem['trashed'];
    set trashed(value: IItem['trashed']);
    protected _lastModified?: IItem['lastModified'];
    get lastModified(): IItem['lastModified'];
    set lastModified(value: IItem['lastModified']);
    protected _deletable?: IItem['deletable'];
    get deletable(): IItem['deletable'];
    set deletable(value: IItem['deletable']);
    protected _hidden?: IItem['hidden'];
    get hidden(): IItem['hidden'];
    set hidden(value: IItem['hidden']);
    protected _accessRole: AccessRole | keyof typeof AccessRole | undefined;
    get accessRole(): AccessRole | keyof typeof AccessRole | undefined;
    protected _importable?: IItem['importable'];
    get importable(): IItem['importable'];
    protected _exportable?: IItem['exportable'];
    get exportable(): IItem['exportable'];
    protected _executable?: IItem['executable'];
    get executable(): IItem['executable'];
    private _isNew;
    constructor(props?: IItem);
    isOwner(profile: IUser): boolean;
    getAccessRole(user?: IUser | string): AccessRole | keyof typeof AccessRole | undefined;
    save(): Promise<any>;
    delete(): Promise<any>;
    toJSON(): {
        _id: string;
        name: string;
        description: string | undefined;
        type: string | undefined;
        subtype: string | undefined;
        owner: string | undefined;
        parent: string | undefined;
        permission: import("@awhere/interfaces").IPermission | undefined;
        thumbnail: string | undefined;
        progress: "inprogress" | "done" | import("@awhere/interfaces").Progress | undefined;
        trashed: boolean | undefined;
        lastModified: string | undefined;
        deletable: boolean | undefined;
        hidden: boolean | undefined;
        createdAt: string | undefined;
        createdBy: string | undefined;
        updatedAt: string | undefined;
        updatedBy: string | undefined;
        deleted: boolean;
        deletedAt: string | undefined;
        deletedBy: string | undefined;
        props: any;
        extendedProps: any;
        organization: string | undefined;
        accessRole: "owner" | "organizer" | "itemOrganizer" | "writer" | "commenter" | "reader" | AccessRole | undefined;
        importable: boolean | undefined;
        exportable: boolean | undefined;
        executable: boolean | undefined;
    };
    watch(): Promise<Watcher>;
}
