import type { GeneratorConfig } from '../config/parser';
/**
 * Context information for strict mode resolution
 */
export interface StrictModeContext {
    /** The model name (if applicable) */
    modelName?: string;
    /** The operation name (if applicable) */
    operation?: string;
    /** The schema type: 'operation', 'object', 'variant' */
    schemaType: 'operation' | 'object' | 'variant';
    /** The variant type (if applicable) */
    variant?: 'pure' | 'input' | 'result';
}
/**
 * Utility class for resolving strict mode settings based on configuration hierarchy
 */
export declare class StrictModeResolver {
    private config;
    constructor(config: GeneratorConfig);
    /**
     * Normalize operation names for backward compatibility
     * Maps both short names (create, update) and full names (createOne, updateOne)
     */
    private normalizeOperationName;
    /**
     * Resolve whether strict mode should be applied for a given context
     */
    shouldApplyStrictMode(context: StrictModeContext): boolean;
    /**
     * Resolve strict mode from the complete hierarchy
     */
    private resolveFromHierarchy;
    /**
     * Get global setting for a specific schema type
     */
    private getGlobalSchemaTypeSetting;
    /**
     * Resolve model-specific strict mode settings
     */
    private resolveModelSpecific;
    /**
     * Resolve variant-specific strict mode settings
     */
    private resolveVariantSpecific;
    /**
     * Convenience method for operation schemas
     */
    shouldApplyStrictModeToOperation(modelName: string, operation: string): boolean;
    /**
     * Convenience method for object schemas
     */
    shouldApplyStrictModeToObject(modelName?: string): boolean;
    /**
     * Convenience method for variant schemas
     */
    shouldApplyStrictModeToVariant(modelName: string, variant: 'pure' | 'input' | 'result'): boolean;
    /**
     * Get the strict mode suffix to append to schema definitions
     */
    getStrictModeSuffix(context: StrictModeContext): string;
    /**
     * Get the strict mode suffix for operation schemas
     */
    getOperationStrictModeSuffix(modelName: string, operation: string): string;
    /**
     * Get the strict mode suffix for object schemas
     */
    getObjectStrictModeSuffix(modelName?: string): string;
    /**
     * Get the strict mode suffix for variant schemas
     */
    getVariantStrictModeSuffix(modelName: string, variant: 'pure' | 'input' | 'result'): string;
}
/**
 * Create a strict mode resolver instance
 */
export declare function createStrictModeResolver(config: GeneratorConfig): StrictModeResolver;
