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;
