import type { MOSConfig } from '../config'; import type { MOSProxyLogger } from '../logger'; import type { SurfaceDecisionResponse } from '../types'; export type Identity = { createAnonymousIdentifier: true; } | { userJwt: string; createAnonymousIdentifierFallback?: true; } | { anonymousIdentifier: string; }; export interface ResolveIdentityArgs { request: Request; originResponse?: Response; config: MOSConfig; logger: MOSProxyLogger; } export interface PersistIdentityArgs { resolved: Identity; decisions: SurfaceDecisionResponse; response: Response; request: Request; config: MOSConfig; logger: MOSProxyLogger; } /** * Either method is optional; omitted methods use the built-in defaults. Both fail open: a throwing * `resolve` skips surface decisions; a throwing `persist` keeps the pre-persist response. */ export interface IdentityProvider { resolve?(args: ResolveIdentityArgs): Identity | Promise; persist?(args: PersistIdentityArgs): Response | Promise; } export declare const getExistingCookies: (request: Request, originResponse: Response | undefined, config: MOSConfig) => { anonymousIdentifier?: string; userJwt?: string; }; export declare const buildIdentity: ({ anonymousIdentifier, userJwt, createAnonymousIdentifierFallback, }: { anonymousIdentifier?: string; userJwt?: string; createAnonymousIdentifierFallback?: boolean; }) => Identity; export declare const defaultResolveIdentity: (args: ResolveIdentityArgs) => Identity; export declare const defaultPersistIdentity: (args: PersistIdentityArgs) => Response;