import { PartialDeep, TFunction } from '../../../../types';
export declare class Container<TPayload extends object = object> {
    protected provided: Pick<Container<TPayload>, 'key' | 'group' | 'payload' | 'ttl' | 'timestamp'> & {
        aliases?: Container<TPayload>['aliases'] | string[];
        hooks?: Container<TPayload>['hooks'];
    };
    TPlain: Pick<Container<TPayload>, 'key' | 'payload' | 'ttl'>;
    TBackup: Pick<Container<TPayload>, 'key' | 'group' | 'payload' | 'ttl' | 'timestamp'> & {
        aliases: string[];
    };
    key: string;
    group: string;
    aliases: Set<string>;
    /** Seconds */
    ttl: number;
    payload: TPayload;
    timestamp: number;
    protected hooks?: {
        bind?: TFunction<unknown, [string, Container<any>]>;
        unbind?: TFunction<unknown, [string, Container<any>]>;
    };
    constructor(provided: Pick<Container<TPayload>, 'key' | 'group' | 'payload' | 'ttl' | 'timestamp'> & {
        aliases?: Container<TPayload>['aliases'] | string[];
        hooks?: Container<TPayload>['hooks'];
    });
    /** Updates internal timestamp to increase TTL */
    renew(): this;
    /** Checks expiration by TTL */
    checkIsExpired(timestamp?: number): boolean;
    assign(predicate: Partial<TPayload> | TFunction<Partial<TPayload>, [TPayload]>): this & {
        payload: TPayload & Partial<TPayload>;
    };
    merge(predicate: PartialDeep<TPayload> | TFunction<PartialDeep<TPayload>, [TPayload]>): this & {
        payload: unknown;
    };
    /** Binds this container to another alias key */
    bind(key: string | object): this;
    /** Unbinds this container by provided key */
    unbind(key?: string | object): this;
    /** Setups hooks to work with storage */
    configure(payload: Partial<Pick<Container<TPayload>['provided'], 'hooks'>>): this;
    clone(): Container<TPayload>;
    toPlain(): Container<TPayload>['TPlain'];
    toBackup(): Container<TPayload>['TBackup'];
    static build<T extends object>(provided: Container<T>['provided']): Container<T>;
}
//# sourceMappingURL=model.d.ts.map