import { JsonapiDocument, JsonapiResourceRequest } from './interfaces/jsonapi.interface';
import { ModelDecoratorOptions } from './decorators/option.interfaces';
export declare abstract class ResourceBase {
    id: string;
    modelInitialization: boolean;
    modelSerialization: boolean;
    private __method;
    private __isRelation;
    private __mdwrapper;
    private readonly __wrapper;
    private __resSerializer;
    private readonly __serializer;
    [key: string]: any;
    static getModel<T extends ResourceBase>(constructor: any, data?: JsonapiDocument): T;
    static getAsRelationship<T extends ResourceBase>(constructor: any, data: ResourceBase, options?: any): T;
    constructor(data?: Partial<ResourceBase>);
    isModelInitialization(): boolean;
    readonly modelOptions: ModelDecoratorOptions;
    readonly type: string;
    readonly hasBeenTouched: boolean;
    readonly hasDirtyAttributes: boolean;
    readonly hasDirtyBelongsTos: boolean;
    readonly hasDirtyHasManys: boolean;
    readonly isRelation: boolean;
    readonly relationMethod: "update" | "create" | "destroy" | "disassociate" | "untouched";
    rollbackAttributes(): void;
    assign(data: any): void;
    disassociate(): void;
    destroy(): void;
    toJsonapi(): JsonapiResourceRequest;
    toHash(): {
        [attrName: string]: any;
    };
    sideload(): {
        id: string;
        type: string;
        __method: "update" | "destroy" | "disassociate";
    };
    serialize(): {
        [attrName: string]: any;
    };
    private translateKeys;
}
