import { TableColumnResolver } from 'rawsql-ts';
import { PrismaClientType, PrismaModelInfo, RawSqlClientOptions, PrismaSchemaInfo } from './types';
/**
 * Resolves Prisma schema information from the client
 *
 * This class analyzes the Prisma client to extract model definitions,
 * field types, relationships, and other metadata needed for dynamic SQL generation.
 */
export declare class PrismaSchemaResolver {
    private readonly options;
    private schemaInfo?;
    constructor(options: RawSqlClientOptions);
    /**
     * Resolve complete schema information from Prisma client
     *
     * @param prisma - The Prisma client instance
     * @returns Complete schema information
     */
    resolveSchema(prisma: PrismaClientType): Promise<PrismaSchemaInfo>;
    /**
     * Create a TableColumnResolver function for rawsql-ts
     *
     * @returns TableColumnResolver function
     */
    createTableColumnResolver(): TableColumnResolver;
    /**
     * Get all available table names
     *
     * @returns Array of table names
     */
    getTableNames(): string[];
    /**
     * Get all column names for a specific table
     *
     * @param tableName - The table name
     * @returns Array of column names, or undefined if table not found
     */
    getColumnNames(tableName: string): string[] | undefined;
    /**
     * Check if a table exists in the schema
     *
     * @param tableName - The table name to check
     * @returns true if table exists, false otherwise
     */
    hasTable(tableName: string): boolean;
    /**
     * Check if a column exists in a specific table
     *
     * @param tableName - The table name
     * @param columnName - The column name to check
     * @returns true if column exists, false otherwise
     */
    hasColumn(tableName: string, columnName: string): boolean;
    /**
     * Get DMMF directly from schema.prisma file
     *
     * @returns Promise resolving to DMMF object or null if not found
     */
    private getDMMFFromSchema;
    /**
     * Find schema.prisma file in common locations
     *
     * @returns Promise resolving to schema file path or null if not found
     */
    private findSchemaFile;
    /**
     * Find schema file synchronously
     *
     * @returns Path to schema.prisma file or null if not found
     */
    private findSchemaFileSync;
    /**
     * Extract DMMF from Prisma client using various access methods
     * Supports multiple Prisma versions and deployment environments
     */
    private extractDmmfFromClient;
    /**
     * Validate if the extracted object is a valid DMMF
     */
    private isValidDmmf;
    /**
     * Parse model information from Prisma DMMF
     *
     * @param dmmf - Data Model Meta Format from Prisma
     * @returns Parsed model information
     */
    private parseModelsFromDmmf;
    /**
     * Get table name with custom mappings applied
     */
    private getTableName;
    /**
     * Parse field information from model
     */
    private parseFieldsFromModel;
    /**
     * Get column name with custom mappings applied
     */
    private getColumnName;
    /**
     * Parse relation information from model
     */
    private parseRelationsFromModel;
    /**
     * Determine relation type from field information
     */
    private determineRelationType;
    /**
     * Extract primary key fields from model
     */
    private extractPrimaryKey;
    /**
     * Extract unique constraints from model
     */
    private extractUniqueConstraints;
    /**
     * Find model by table name
     *
     * @param tableName - The table name to search for
     * @returns Model information if found, undefined otherwise
     */
    private findModelByTableName;
    /**
     * Get model information by model name
     *
     * @param modelName - The Prisma model name
     * @returns Model information if found, undefined otherwise
     */
    getModelInfo(modelName: string): PrismaModelInfo | undefined;
    /**
     * Get all model names
     *
     * @returns Array of model names
     */
    getModelNames(): string[];
    /**
     * Extract database provider from DMMF
     *
     * @param dmmf - The DMMF object
     * @returns Database provider string (postgresql, mysql, sqlite, etc.)
     */
    private extractDatabaseProvider;
}
