import type { ParseOptions } from './lrc'; export declare const SQUARE_TAGS_REGEXP: RegExp; export declare const INFO_REGEXP: RegExp; export declare const TIME_REGEXP: RegExp; export declare const ENHANCED_TAG_WORD_REGEXP: RegExp; export declare enum LineType { INVALID = "INVALID", INFO = "INFO", TIME = "TIME" } export interface InvalidLine { type: LineType.INVALID; } interface TimeWordTimestamp { timestamp: number; content: string; } export interface TimeLine { type: LineType.TIME; timestamps: number[]; wordTimestamps?: TimeWordTimestamp[]; rawContent: string; content: string; } export interface InfoLine { type: LineType.INFO; key: string; value: string; } export declare function parseSquareTags(line: string): null | { tags: string[]; rawContent: string; }; export declare function parseEnhancedWords(timestamps: number[], rawContent: string): TimeLine | null; export declare function parseTime(tags: string[], rawContent: string, { enhanced }?: ParseOptions): TimeLine; export declare function parseInfo(tag: string): InfoLine | null; /** * line parse lrc of timestamp * @example * const lp = parseLine('[ti: Song title]') * lp.type === LineParser.TYPE.INFO * lp.key === 'ti' * lp.value === 'Song title' * * const lp = parseLine('[10:10.10]hello') * lp.type === LineParser.TYPE.TIME * lp.timestamps === [10*60+10.10] * lp.content === 'hello' * * const lp = parseLine('[10:10.10] <10:10.12> hello <10:11.02> world') * lp.type === LineParser.TYPE.TIME * lp.timestamps === [10*60+10.10] * lp.content === 'hello world' * lp.wordTimestamps === [ * { timestamp: 10*60+10.12, content: 'hello' }, * { timestamp: 10*60+11.02, content: 'world' } * ] */ export declare function parseLine(line: string, options?: ParseOptions): InfoLine | TimeLine | InvalidLine; export {};