/**
 * Copyright 2025 kmbro.
 *
 * This is a TypeScript translation of the original Python LangExtract library
 * by Google LLC (https://github.com/google/langextract).
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
import { Document, AnnotatedDocument, FormatType } from "./types";
import { BaseLanguageModel } from "./inference";
import { PromptTemplateStructured } from "./prompting";
import { AbstractResolver } from "./resolver";
export declare class DocumentRepeatError extends Error {
    constructor(message: string);
}
export interface AnnotatorOptions {
    formatType?: FormatType;
    attributeSuffix?: string;
    fenceOutput?: boolean;
    maxTokens?: number;
}
export declare class Annotator {
    private languageModel;
    private promptTemplate;
    private formatType;
    private attributeSuffix;
    private fenceOutput;
    private maxTokens?;
    constructor(languageModel: BaseLanguageModel, promptTemplate: PromptTemplateStructured, options?: AnnotatorOptions);
    annotateDocuments(documents: Document[], resolver: AbstractResolver, options?: {
        maxCharBuffer?: number;
        batchLength?: number;
        debug?: boolean;
        extractionPasses?: number;
    }): Promise<AnnotatedDocument[]>;
    annotateText(text: string, resolver: AbstractResolver, options?: {
        maxCharBuffer?: number;
        batchLength?: number;
        additionalContext?: string;
        debug?: boolean;
        extractionPasses?: number;
    }): Promise<AnnotatedDocument>;
    private annotateDocumentsSinglePass;
    private annotateDocumentsSequentialPasses;
    private processDocumentBatch;
    private processDocumentBatchSequentialPasses;
    private chunkDocument;
    private generatePrompt;
}
//# sourceMappingURL=annotation.d.ts.map