import { DEFAULT_DELIMITER, DEFAULT_QUOTATION } from '../../../core/constants'; import { BinaryArrayCSVParser, BinaryCSVParserFactoryOptions, BinaryObjectCSVParser, ColumnCountStrategy } from '../../../core/types'; /** * Factory function to create the appropriate Binary CSV parser based on options. * * @template Header - The type of the header row * @param options - Parser options including binary CSV processing specification and engine * @returns A parser instance configured for the specified output format * * @remarks * This function provides both compile-time and runtime type safety. * The return type is determined by the outputFormat option: * - `outputFormat: 'object'` (default) → BinaryObjectCSVParser (FlexibleBinaryObjectCSVParser) * - `outputFormat: 'array'` → BinaryArrayCSVParser (FlexibleBinaryArrayCSVParser) * * **Design Intent**: This factory function accepts options including engine configuration * to enable future execution path optimization. The function may select the optimal internal * parser implementation based on the provided options. Currently, this optimization * is not implemented, but the API is designed to support it without breaking changes. * * @example Object format (default) * ```ts * const parser = createBinaryCSVParser({ * header: ['name', 'age'], * charset: 'utf-8', * decompression: 'gzip', * signal: abortController.signal, * }); * const encoder = new TextEncoder(); * for (const record of parser.parse(encoder.encode('Alice,30\nBob,25'))) { * console.log(record); // { name: 'Alice', age: '30' } * } * ``` * * @example Array format * ```ts * const parser = createBinaryCSVParser({ * header: ['name', 'age'], * outputFormat: 'array', * charset: 'utf-8', * }); * const encoder = new TextEncoder(); * for (const record of parser.parse(encoder.encode('Alice,30\nBob,25'))) { * console.log(record); // ['Alice', '30'] * } * ``` */ export declare function createBinaryCSVParser = readonly string[], const Delimiter extends string = DEFAULT_DELIMITER, const Quotation extends string = DEFAULT_QUOTATION, const Charset extends string = "utf-8", const Strategy extends ColumnCountStrategy = ColumnCountStrategy>(options: BinaryCSVParserFactoryOptions & { outputFormat: "array"; }): BinaryArrayCSVParser
; export declare function createBinaryCSVParser = readonly string[], const Delimiter extends string = DEFAULT_DELIMITER, const Quotation extends string = DEFAULT_QUOTATION, const Charset extends string = "utf-8", const Strategy extends ColumnCountStrategy = ColumnCountStrategy>(options: BinaryCSVParserFactoryOptions & { outputFormat: "object"; }): BinaryObjectCSVParser
; export declare function createBinaryCSVParser = readonly string[], const Delimiter extends string = DEFAULT_DELIMITER, const Quotation extends string = DEFAULT_QUOTATION, const Charset extends string = "utf-8", const Strategy extends ColumnCountStrategy = ColumnCountStrategy>(options?: Omit, "outputFormat">): BinaryObjectCSVParser
; export declare function createBinaryCSVParser = readonly string[], const Delimiter extends string = DEFAULT_DELIMITER, const Quotation extends string = DEFAULT_QUOTATION, const Charset extends string = "utf-8", const OutputFormat extends "object" | "array" = "object" | "array", const Strategy extends ColumnCountStrategy = ColumnCountStrategy>(options: BinaryCSVParserFactoryOptions): BinaryArrayCSVParser
| BinaryObjectCSVParser
;