import { PartialDeep, TFunction } from '../../../../types';
export declare class Container<TPayload extends object = object> {
    provided: {
        key: string;
        payload: TPayload;
        /** Seconds */
        ttl: number;
        timestamp: number;
        prefix?: string;
        hooks?: {
            onBind?: TFunction<unknown, [string, Container<any>]>;
            onUnbind?: TFunction<unknown, [Container<any>]>;
        };
    };
    TPlain: Pick<Container<TPayload>, 'key' | 'prefix' | 'payload' | 'ttl'>;
    ttl: number;
    expiresAt: number;
    payload: TPayload;
    prefix: string | undefined;
    key: string;
    constructor(provided: {
        key: string;
        payload: TPayload;
        /** Seconds */
        ttl: number;
        timestamp: number;
        prefix?: string;
        hooks?: {
            onBind?: TFunction<unknown, [string, Container<any>]>;
            onUnbind?: TFunction<unknown, [Container<any>]>;
        };
    });
    assign(predicate: Partial<TPayload> | TFunction<Partial<TPayload>, [TPayload]>): this & {
        payload: TPayload & Partial<TPayload>;
    };
    merge(predicate: PartialDeep<TPayload> | TFunction<PartialDeep<TPayload>, [TPayload]>): this & {
        payload: unknown;
    };
    bind(key: string | object): this;
    unbind(): this;
    clone(): Container<TPayload>;
    toPlain(): Container<TPayload>['TPlain'];
    static build<T extends object>(provided: Container<T>['provided']): Container<T>;
}
//# sourceMappingURL=model.d.ts.map