import {Session} from 'react-router'
import {SessionStorage} from 'react-router'

/**
 * Cookie-based session storage for Sanity preview mode.
 * Manages perspective state and authentication for preview mode.
 */
export declare class PreviewSession implements SanityPreviewSession {
  #private
  constructor(sessionStorage: SessionStorage, session: Session)
  static init(request: Request, secrets: string[]): Promise<PreviewSession>
  get has(): SanityPreviewSession['has']
  get get(): SanityPreviewSession['get']
  get unset(): SanityPreviewSession['unset']
  get set(): SanityPreviewSession['set']
  destroy(): ReturnType<SanityPreviewSession['destroy']>
  commit(): ReturnType<SanityPreviewSession['commit']>
}

declare interface PreviewSessionData {
  perspective: string
}

/**
 * Interface for Sanity preview session management.
 */
export declare interface SanityPreviewSession {
  has: Session<PreviewSessionData, never>['has']
  get: Session<PreviewSessionData, never>['get']
  set: Session<PreviewSessionData, never>['set']
  unset: Session<PreviewSessionData, never>['unset']
  commit: () => ReturnType<SessionStorage<PreviewSessionData, never>['commitSession']>
  destroy: () => ReturnType<SessionStorage<PreviewSessionData, never>['destroySession']>
}

export {}
