import type { CookieSerializeOptions } from "./utils/cookie";
import type { BinaryLike } from "./utils/crypto/types";
export interface SessionOptions {
    key?: string;
    secret: BinaryLike | {
        id: number;
        secret: BinaryLike;
    }[];
    expires?: number;
    rolling?: boolean;
    cookie?: Omit<CookieSerializeOptions, "expires" | "maxAge" | "encode">;
}
export interface Session<SessionType = Record<string, any>> {
    data: SessionType & {
        expires?: Date;
    };
    refresh: (expires_in_days?: number) => boolean;
    destroy: () => boolean;
}
export declare function initializeSession<SessionType = Record<string, any>>(headers: Record<string, string>, options: SessionOptions): Session<SessionType>;
