import { GalleryItemCardType } from '../../../types/src/gallery-item';
import { TimecodeMode } from '../../../types/src/video-editor';

/**
 * Converts a string to kebab-case.
 *
 * The function handles various cases such as spaces, underscores, and camelCase.
 * It first replaces spaces and underscores with hyphens. Then it handles camelCase
 * by inserting hyphens before uppercase letters, converting the string to lowercase,
 * and trimming hyphens from the start and end of the result.
 */
export declare function toKebabCase(str: string): string;
/**
 * Converts a string to PascalCase.
 *
 * The function handles various cases such as kebab-case, snake_case, and spaces.
 * It first replaces spaces, hyphens, and underscores with a single space.
 * Then it capitalizes the first letter of each word and joins them together.
 */
export declare function toPascalCase(str: string): string;
/**
 * Converts a string to camelCase.
 *
 * The function handles various cases such as kebab-case, snake_case, and spaces.
 * It first replaces hyphens, underscores, and spaces with a single space.
 * Then it lowers the first character of the string and capitalizes the first letter
 * of each subsequent word, joining them together without spaces.
 */
export declare function toCamelCase(str: string): string;
/**
 * Converts from pascal case into title case (Ex: MyPackTest → My Pack Test)
 */
export declare function toTitleCase(strInPascal: string): string;
/**
 * Converts the first character of string to upper case
 */
export declare function upperFirst(str: unknown): string | null;
/**
 * Truncate text from the middle
 * @param str The string to truncate
 * @param threshold The threshold at which to truncate
 * @param before The number of characters to keep before the truncation
 * @param after The number of characters to keep after the truncation
 * @returns The truncated string
 */
export declare const truncateTextMiddle: (str: string, threshold: number, before: number, after: number) => string;
/**
 * Splits a camelCase formatted string into words, keeping the first word as is
 * and converting subsequent words to lowercase.
 *
 * @param input The camelCase formatted string to split.
 * @returns A string with the first word unchanged and subsequent words in lowercase.
 */
export declare const splitCamelCaseFormatted: (input: string) => string;
/**
 * Options for formatting time
 */
export interface TimeFormatOptions {
    /** Frame rate for SMPTE and frames modes (default: 24 fps) */
    frameRate?: number;
    /** The timecode mode to use */
    mode?: TimecodeMode;
    /** Whether to show hours in standard mode */
    showHours?: boolean;
    /** Whether to show milliseconds in standard mode */
    showMilliseconds?: boolean;
}
/**
 * Formats a number of seconds into a string based on the specified timecode mode.
 *
 * @param seconds The number of seconds to format
 * @param options Formatting options
 * @returns A formatted time string
 *
 * @example
 * // Standard mode (default) - MM:SS format
 * formatSecondsToTime(3661.5) // "01:01:01.5"
 * formatSecondsToTime(3661.5, { showHours: true }) // "01:01:01"
 * formatSecondsToTime(3661.5, { showMilliseconds: true }) // "01:01:01.50"
 *
 * // SMPTE mode - HH:MM:SS:FF format
 * formatSecondsToTime(3661.5, { mode: 'smpte', frameRate: 24 }) // "01:01:01:12"
 * formatSecondsToTime(3661.5, { mode: 'smpte', frameRate: 30 }) // "01:01:01:15"
 *
 * // Frames mode - total frame count
 * formatSecondsToTime(3661.5, { mode: 'frames', frameRate: 24 }) // "87876"
 * formatSecondsToTime(3661.5, { mode: 'frames', frameRate: 30 }) // "109845"
 */
export declare function formatSecondsToTime(seconds: number, options?: TimeFormatOptions): string;
/**
 * Pads a path with a trailing slash if it doesn't already have one
 * @param path The path to pad
 * @returns The padded path
 */
export declare function padPath(path: string): string;
/**
 * Splits a `${path}-${id}` rootID string back into its parts.
 * The separator is a single dash; since paths may contain dashes, only the
 * last segment is treated as the id.
 *
 * @example
 * extractRootData('Root/Library-2Y1O3RQM3D')
 * // → { id: '2Y1O3RQM3D', path: 'Root/Library' }
 */
export declare function extractRootData(rootID: string): {
    id: string;
    path: string;
};
/**
 * Inverse of `extractRootData` — encodes a path + id pair as `${path}-${id}`.
 *
 * @example
 * getRootIDString({ id: '2Y1O3RQM3D', path: 'Root/Library' })
 * // → 'Root/Library-2Y1O3RQM3D'
 */
export declare function getRootIDString({ id, path, }: {
    id: string;
    path: string;
}): string;
/**
 * Trims `full` to the segment that's exactly one level below `base`.
 *
 * @example
 * reducePathToDirectChild('Root/A/B/C/D', 'Root/A')
 * // → 'Root/A/B'
 */
export declare function reducePathToDirectChild(full: string, base: string): string;
/**
 * Parses a time string and converts it to seconds.
 * This function reverses the effect of formatSecondsToTime.
 *
 * @param timeString The time string to parse
 * @param options Parsing options
 * @returns The number of seconds, or null if parsing fails
 *
 * @example
 * // Standard time formats
 * formatTimeToSeconds('01:15') // 75
 * formatTimeToSeconds('01:01:01.50') // 3661.5
 * formatTimeToSeconds('01:01:01') // 3661
 *
 * // SMPTE timecode format
 * formatTimeToSeconds('01:01:01:12', { mode: TimecodeMode.SMPTE, frameRate: 24 }) // 3661.5
 *
 * // Frames format
 * formatTimeToSeconds('87876', { mode: TimecodeMode.Frames, frameRate: 24 }) // 3661.5
 */
export declare function formatTimeToSeconds(timeString: string, options?: TimeFormatOptions): number;
export declare function extractExtension(filename: string): string | null;
export declare function sanitizeHTML(html: string): string;
export declare function safeString(value: any): string;
export declare function emptyToSpace(value: any): string;
export declare function isGalleryItemCardType(value: unknown): value is GalleryItemCardType;
export declare function safeExtension(ext: string | null | undefined): string;
export declare function parseBooleanString(boolString: string | null | undefined): boolean;
