import { ARCCookie as LegacyARCCookie } from './legacy/models/Cookies.js';
export type CookieSameSiteType = 'unspecified' | 'no_restriction' | 'lax' | 'strict';
export type CookieChangeReason = 'explicit' | 'overwrite' | 'expired' | 'evicted' | 'expired-overwrite';
export interface IElectronCookie {
    name: string;
    value: string;
    /**
     * The domain of the cookie; this will be normalized with a preceding dot so that it's also valid for subdomains.
     */
    domain?: string;
    /**
     * Whether the cookie is a host-only cookie; this will only be true if no domain was passed.
     */
    hostOnly?: boolean;
    /**
     * The path of the cookie.
     */
    path?: string;
    secure?: boolean;
    httpOnly?: boolean;
    session?: boolean;
    expirationDate?: number;
    sameSite?: CookieSameSiteType;
}
export interface IHttpCookieChangeRecord {
    /**
     * The cookie that was changed.
     */
    cookie: IHttpCookie;
    /**
     * The cause of the change with one of the following values:
     * - `explicit` - The cookie was changed directly by a consumer's action.
     * - `overwrite` - The cookie was automatically removed due to an insert operation that overwrote it.
     * - `expired` - The cookie was automatically removed as it expired.
     * - `evicted` - The cookie was automatically evicted during garbage collection.
     * - `expired-overwrite` - The cookie was overwritten with an already-expired expiration date.
     */
    cause: CookieChangeReason;
    /**
     * `true` if the cookie was removed, `false` otherwise.
     */
    removed: boolean;
}
export interface IHttpCookie {
    /**
     * The name of the cookie.
     */
    name: string;
    /**
     * The value of the cookie.
     */
    value: string;
    /**
     * The domain of the cookie; this will be normalized with a preceding dot so that
     * it's also valid for subdomains.
     */
    domain?: string;
    /**
     * Whether the cookie is a host-only cookie; this will only be `true` if no domain
     * was passed.
     */
    hostOnly?: boolean;
    /**
     * The path of the cookie.
     */
    path?: string;
    /**
     * Whether the cookie is marked as secure.
     */
    secure?: boolean;
    /**
     * Whether the cookie is marked as HTTP only.
     */
    httpOnly?: boolean;
    /**
     * Whether the cookie is a session cookie or a persistent cookie with an expiration
     * date.
     */
    session?: boolean;
    /**
     * The expiration date of the cookie as the number of seconds since the UNIX epoch.
     * Not provided for session cookies.
     */
    expirationDate?: number;
    /**
     * The Same Site policy applied to this cookie. Can be `unspecified`, `no_restriction`, `lax` or `strict`.
     * @default unspecified
     */
    sameSite?: CookieSameSiteType;
}
export declare class HttpCookie {
    /**
     * The name of the cookie.
     */
    name: string;
    /**
     * The value of the cookie.
     */
    value: string;
    /**
     * Whether the cookie is a host-only cookie; this will only be `true` if no domain
     * was passed.
     */
    hostOnly?: boolean;
    /**
     * The path of the cookie.
     */
    path?: string;
    /**
     * Whether the cookie is marked as secure.
     */
    secure?: boolean;
    /**
     * Whether the cookie is marked as HTTP only.
     */
    httpOnly?: boolean;
    /**
     * Whether the cookie is a session cookie or a persistent cookie with an expiration
     * date.
     */
    session?: boolean;
    /**
     * The Same Site policy applied to this cookie. Can be `unspecified`, `no_restriction`, `lax` or `strict`.
     * @default unspecified
     */
    sameSite: CookieSameSiteType;
    protected _domain?: string;
    protected _maxAge?: number;
    protected _expirationDate?: number | undefined;
    /**
     * @param max The max age value
     */
    set maxAge(max: number | undefined);
    /**
     * @return Returns a value of maxAge property
     */
    get maxAge(): number | undefined;
    /**
     * The expiration date of the cookie as the number of seconds since the UNIX epoch.
     * Not provided for session cookies.
     */
    set expirationDate(expires: number | Date | string | undefined);
    get expirationDate(): number | undefined;
    /**
     * The domain of the cookie; this will be normalized with a preceding dot so that
     * it's also valid for subdomains.
     */
    set domain(domain: string | undefined);
    get domain(): string | undefined;
    set samesite(value: CookieSameSiteType | undefined);
    set httponly(value: boolean | undefined);
    set hostonly(value: boolean | undefined);
    set ['max-age'](value: number | undefined);
    set expires(value: string | number | Date | undefined);
    static fromLegacy(old: LegacyARCCookie): HttpCookie;
    static fromValue(name: string, value?: string): HttpCookie;
    constructor(input?: string | IHttpCookie);
    new(init: IHttpCookie): void;
    /**
     * Sets value for `expirationDate` property.
     * @param expires The value as string, date, or a number
     */
    setExpirationTime(expires: Date | string | number | undefined): void;
    /**
     * @return Cookie's `name=value` string.
     */
    toString(): string;
    toJSON(): IHttpCookie;
    /**
     * Returns a Cookie as a HTTP header string.
     * @return Cookie string as a HTTP header value
     */
    toHeader(): string;
}
//# sourceMappingURL=HttpCookie.d.ts.map