import type {HydrogenSession} from '@shopify/hydrogen'
import {Session} from 'react-router'
import {SessionStorage} from 'react-router'

/**
 * Utility to check if preview mode is enabled based on session detection.
 *
 * @param projectId - Project ID to check against
 * @param session - Preview session to check
 * @returns true if preview mode is enabled, false otherwise
 */
export declare function isPreviewEnabled(
  projectId: string,
  session: SanityPreviewSession | HydrogenSession | undefined,
): boolean

declare interface PreviewSessionData {
  perspective: string
}

/**
 * Interface for Sanity preview session management.
 */
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']>
}

/**
 * Returns whether Sanity preview mode is currently enabled.
 */
export declare function usePreviewMode(): boolean

export {}
