import type { DirectoryListing } from './share-store.js'; import type { ShareRecord } from './share-types.js'; export interface ShareLandingOgOptions { /** Absolute https/http URL of this landing page (for og:url). Omit if non-public. */ absoluteShareUrl?: string | null; /** Absolute URL of the thumbnail image (for og:image). Omit if non-public. */ absoluteThumbnailUrl?: string | null; /** Title override (default: fileName). */ title?: string; /** Description override (default: type + size). */ description?: string; } /** Render the file download confirmation landing page (does not consume downloadCount). */ export declare function renderShareLandingPage(record: ShareRecord, downloadPath: string, options?: { /** Path to open the file inline (?inline=1) for browser-native rendering. */ inlineUrl?: string | null; /** SPA preview URL (for markdown / docs / code that benefit from rich rendering). */ previewUrl?: string | null; /** Social card / unfurl metadata. */ og?: ShareLandingOgOptions; }): string; /** Render the folder landing page (browse mode shows a tree, zip-only shows a single button). */ export declare function renderFolderLandingPage(record: ShareRecord, listing: DirectoryListing | null, urls: { tree: (path: string) => string; file: (path: string) => string; zip: (path: string) => string; }, options?: { og?: ShareLandingOgOptions; }): string; export type ShareExpiredReason = 'expired' | 'revoked' | 'max_views' | 'not_found' | 'file_deleted'; /** Render the "share no longer valid" page — does NOT reveal file name or path. */ export declare function renderShareExpiredPage(reason: ShareExpiredReason): string;