import type { BrowsingContextBrowsingContext } from './browsing_context.js';
import type { Extensible, JsUint } from './common.js';
import type { NetworkBytesValue, NetworkCookie, NetworkSameSite } from './network.js';
export type StorageCommand = StorageDeleteCookies | StorageGetCookies | StorageSetCookie;
export type StorageResult = StorageDeleteCookiesResult | StorageGetCookiesResult | StorageSetCookieResult;
export type StoragePartitionKey = Extensible & {
    userContext?: string;
    sourceOrigin?: string;
};
export interface StorageGetCookies {
    method: "storage.getCookies";
    params: StorageGetCookiesParameters;
}
export type StorageCookieFilter = Extensible & {
    name?: string;
    value?: NetworkBytesValue;
    domain?: string;
    path?: string;
    size?: JsUint;
    httpOnly?: boolean;
    secure?: boolean;
    sameSite?: NetworkSameSite;
    expiry?: JsUint;
};
export interface StorageBrowsingContextPartitionDescriptor {
    type: "context";
    context: BrowsingContextBrowsingContext;
}
export type StorageStorageKeyPartitionDescriptor = Extensible & {
    type: "storageKey";
    userContext?: string;
    sourceOrigin?: string;
};
export type StoragePartitionDescriptor = StorageBrowsingContextPartitionDescriptor | StorageStorageKeyPartitionDescriptor;
export interface StorageGetCookiesParameters {
    filter?: StorageCookieFilter;
    partition?: StoragePartitionDescriptor;
}
export interface StorageGetCookiesResult {
    cookies: NetworkCookie[];
    partitionKey: StoragePartitionKey;
}
export interface StorageSetCookie {
    method: "storage.setCookie";
    params: StorageSetCookieParameters;
}
export type StoragePartialCookie = Extensible & {
    name: string;
    value: NetworkBytesValue;
    domain: string;
    path?: string;
    httpOnly?: boolean;
    secure?: boolean;
    sameSite?: NetworkSameSite;
    expiry?: JsUint;
};
export interface StorageSetCookieParameters {
    cookie: StoragePartialCookie;
    partition?: StoragePartitionDescriptor;
}
export interface StorageSetCookieResult {
    partitionKey: StoragePartitionKey;
}
export interface StorageDeleteCookies {
    method: "storage.deleteCookies";
    params: StorageDeleteCookiesParameters;
}
export interface StorageDeleteCookiesParameters {
    filter?: StorageCookieFilter;
    partition?: StoragePartitionDescriptor;
}
export interface StorageDeleteCookiesResult {
    partitionKey: StoragePartitionKey;
}
/** @deprecated Use {@link Storage.create} instead — will be removed in a future major version. */
export declare function getStorageInstance(driver: unknown): Promise<Storage>;
export declare class Storage {
    private readonly bidi;
    private constructor();
    static create(driver: unknown): Promise<Storage>;
    deleteCookies(params: StorageDeleteCookiesParameters): Promise<StorageDeleteCookiesResult>;
    getCookies(params: StorageGetCookiesParameters): Promise<StorageGetCookiesResult>;
    setCookie(params: StorageSetCookieParameters): Promise<StorageSetCookieResult>;
}
