export type Options = { /** String to use as replacement for reserved filename characters. Cannot contain: `<` `>` `:` `"` `/` `\` `|` `?` `*` or control characters. @default '!' */ readonly replacement?: string; /** Truncate the filename to the given length. Only the base of the filename is truncated, preserving the extension. If the extension itself is longer than `maxLength`, you will get a string that is longer than `maxLength`, so you need to check for that if you allow arbitrary extensions. Truncation is grapheme-aware and will not split Unicode characters (surrogate pairs or extended grapheme clusters). If the remaining budget (after accounting for the extension) is smaller than a whole grapheme, the base filename may be truncated to an empty string to avoid splitting. Systems generally allow up to 255 characters, but we default to 100 for usability reasons. @default 100 */ readonly maxLength?: number; }; /** Convert a string to a valid filename. @example ``` import filenamify from 'filenamify'; filenamify(''); //=> '!foo!bar!' filenamify('foo:"bar"', {replacement: '🐴'}); //=> 'foo🐴bar🐴' ``` */ export default function filenamify(string: string, options?: Options): string;