import type { AgentModelRequirements } from '../_misc/AgentModelRequirements';
import type { CommitmentDefinition } from './CommitmentDefinition';
/**
 * Base implementation of CommitmentDefinition that provides common functionality
 * Most commitments can extend this class and only override the applyToAgentModelRequirements method
 *
 * @private
 */
export declare abstract class BaseCommitmentDefinition<TBookCommitment extends string> implements CommitmentDefinition {
    readonly type: TBookCommitment;
    constructor(type: TBookCommitment);
    /**
     * Short one-line markdown description; concise, may use inline **markdown**.
     * Must be implemented by each concrete commitment.
     */
    abstract get description(): string;
    /**
     * Human-readable markdown documentation for this commitment, available at runtime.
     * Must be implemented by each concrete commitment.
     */
    abstract get documentation(): string;
    /**
     * Creates a regex pattern to match this commitment in agent source
     * Uses the existing createCommitmentRegex function as internal helper
     */
    createRegex(): RegExp;
    /**
     * Creates a regex pattern to match just the commitment type
     * Uses the existing createCommitmentTypeRegex function as internal helper
     */
    createTypeRegex(): RegExp;
    /**
     * Applies this commitment's logic to the agent model requirements
     * This method must be implemented by each specific commitment
     */
    abstract applyToAgentModelRequirements(requirements: AgentModelRequirements, content: string): AgentModelRequirements;
    /**
     * Helper method to create a new requirements object with updated system message
     * This is commonly used by many commitments
     */
    protected updateSystemMessage(requirements: AgentModelRequirements, messageUpdate: string | ((currentMessage: string) => string)): AgentModelRequirements;
    /**
     * Helper method to append content to the system message
     */
    protected appendToSystemMessage(requirements: AgentModelRequirements, content: string, separator?: string): AgentModelRequirements;
    /**
     * Helper method to add a comment section to the system message
     * Comments are lines starting with # that will be removed from the final system message
     * but can be useful for organizing and structuring the message during processing
     */
    protected addCommentSection(requirements: AgentModelRequirements, commentTitle: string, content: string, position?: 'beginning' | 'end'): AgentModelRequirements;
}
