/**
 * @categoryDescription Factory
A collection of utility functions and types for model-specific token handling.
 *
 * @showCategories
 */
import { AutoConfig, AutoModelForTokenClassification, AutoTokenizer, PretrainedConfig, TransformersJSConfig } from "@huggingface/transformers";
import { Tiktoken } from "js-tiktoken";
import { PromptCompressorLLMLingua2 } from "./prompt-compressor.js";
import { Logger } from "./utils.js";
type PreTrainedTokenizerOptions = Parameters<typeof AutoTokenizer.from_pretrained>[1];
type PretrainedModelOptions = Parameters<typeof AutoModelForTokenClassification.from_pretrained>[1];
/**
 * Options for the LLMLingua-2 factory functions.
 *
 * @category Factory
 */
export interface LLMLingua2FactoryOptions {
    /**
     * Configuration for Transformers.js.
     */
    transformerJSConfig: TransformersJSConfig;
    /**
     * The tokenizer to use calculating the compression rate.
     */
    oaiTokenizer: Tiktoken;
    /**
     * Optional pretrained configuration.
     */
    pretrainedConfig?: PretrainedConfig | null;
    /**
     * Optional pretrained tokenizer options.
     */
    pretrainedTokenizerOptions?: PreTrainedTokenizerOptions | null;
    /**
     * Optional model-specific options.
     */
    modelSpecificOptions?: PretrainedModelOptions | null;
    /**
     * Optional logger function.
     */
    logger?: Logger;
}
/**
 * Return type for the LLMLingua-2 factory functions. Use `promptCompressor` to compress prompts.
 *
 * @category Factory
 */
export interface LLMLingua2FactoryReturn {
    /**
     * Instance of LLMLingua-2 PromptCompressor.
     *
     * @see {@link PromptCompressorLLMLingua2}
     */
    promptCompressor: PromptCompressorLLMLingua2;
    /**
     * The model used for token classification.
     */
    model: AutoModelForTokenClassification;
    /**
     * The tokenizer used for tokenization.
     */
    tokenizer: AutoTokenizer;
    /**
     * The configuration used for the model.
     */
    config: AutoConfig;
}
/**
 * Factory functions to create instances of LLMLingua-2 PromptCompressor
 * with XLM-RoBERTa model.
 *
 * @category Factory
 *
 * @example
 * ```ts
import { LLMLingua2 } from "@atjsh/llmlingua-2";

import { Tiktoken } from "js-tiktoken/lite";
import o200k_base from "js-tiktoken/ranks/o200k_base";

const modelName = "atjsh/llmlingua-2-js-xlm-roberta-large-meetingbank";
const oai_tokenizer = new Tiktoken(o200k_base);

const { promptCompressor } = await LLMLingua2.WithXLMRoBERTa(modelName,
  {
    transformerJSConfig: {
      device: "auto",
      dtype: "fp32",
    },
    oaiTokenizer: oai_tokenizer,
    modelSpecificOptions: {
      use_external_data_format: true,
    },
  }
);

const compressedText: string = await promptCompressor.compress_prompt(
  "LLMLingua-2, a small-size yet powerful prompt compression method trained via data distillation from GPT-4 for token classification with a BERT-level encoder, excels in task-agnostic compression. It surpasses LLMLingua in handling out-of-domain data, offering 3x-6x faster performance.",
  { rate: 0.8 }
);

console.log({ compressedText });
```
 */
export declare function WithXLMRoBERTa(modelName: string, options: LLMLingua2FactoryOptions): Promise<LLMLingua2FactoryReturn>;
/**
 * Factory functions to create instances of LLMLingua-2 PromptCompressor
 * with BERT Multilingual model.
 *
 * @category Factory
 *
 * @example
 * ```ts
import { LLMLingua2 } from "@atjsh/llmlingua-2";

import { Tiktoken } from "js-tiktoken/lite";
import o200k_base from "js-tiktoken/ranks/o200k_base";

const modelName = "Arcoldd/llmlingua4j-bert-base-onnx";
const oai_tokenizer = new Tiktoken(o200k_base);

const { promptCompressor } = await LLMLingua2.WithBERTMultilingual(modelName,
  {
    transformerJSConfig: {
      device: "auto",
      dtype: "fp32",
    },
    oaiTokenizer: oai_tokenizer,
    modelSpecificOptions: {
      subfolder: "",
    },
  }
);

const compressedText: string = await promptCompressor.compress_prompt(
  "LLMLingua-2, a small-size yet powerful prompt compression method trained via data distillation from GPT-4 for token classification with a BERT-level encoder, excels in task-agnostic compression. It surpasses LLMLingua in handling out-of-domain data, offering 3x-6x faster performance.",
  { rate: 0.8 }
);

console.log({ compressedText });
```
 */
export declare function WithBERTMultilingual(modelName: string, options: LLMLingua2FactoryOptions): Promise<LLMLingua2FactoryReturn>;
export {};
//# sourceMappingURL=factory.d.ts.map