import type { Strings } from 'hotscript';
import type { Piped } from './pipe.js';
import type { SerializableTransformer, Transformer } from './transformer.js';
interface PrefixerOptions<DELIMITER extends string> {
    delimiter?: DELIMITER;
}
export interface PrefixerDTO {
    transformerId: 'prefix';
    prefix: string;
    delimiter: string;
}
export declare class Prefixer<PREFIX extends string, DELIMITER extends string = '#'> implements SerializableTransformer<string, string, string, Strings.Prepend<`${PREFIX}${DELIMITER}`>, PrefixerDTO> {
    _typeModifier: Strings.Prepend<`${PREFIX}${DELIMITER}`>;
    transformerId: 'prefix';
    prefix: PREFIX;
    delimiter: DELIMITER;
    constructor(prefix: PREFIX, { delimiter }?: PrefixerOptions<DELIMITER>);
    encode(decoded: string): string;
    decode(encoded: string): string;
    toJSON(): {
        transformerId: "prefix";
        prefix: PREFIX;
        delimiter: DELIMITER;
    };
    pipe<TRANSFORMER extends Transformer<string>>(transformer: TRANSFORMER): Piped<[this, TRANSFORMER]>;
}
type Prefix = <PREFIX extends string, DELIMITER extends string = '#'>(prefix: PREFIX, options?: PrefixerOptions<DELIMITER>) => Prefixer<PREFIX, DELIMITER>;
export declare const prefix: Prefix;
export {};
