import { GsbEntityDef, GsbProperty } from '../../models/gsb-entity-def.model';
/**
 * Service for managing schema creation and updates with intelligent reference property handling
 */
export declare class SchemaManagerService {
    private useCache;
    private entityDefService;
    private cacheService;
    private static instance;
    private entityService;
    constructor(useCache?: boolean);
    /**
     * Get the singleton instance of SchemaManagerService
     * @param useCache Whether to use cache for entity definitions
     * @returns The SchemaManagerService instance
     */
    static getInstance(useCache?: boolean): SchemaManagerService;
    /**
     * Create or update schema entities and properties
     * @param entityDefs Array of entity definitions to process
     */
    createOrUpdateSchema(entityDefs: GsbEntityDef[], authToken: string, tenantCode: string): Promise<{
        createdEntities: GsbEntityDef[];
        updatedEntities: GsbEntityDef[];
        errors: string[];
    }>;
    /**
     * Delete schema entities
     * @param entityDefs Array of entity definitions to delete
     */
    deleteSchema(entityDefs: GsbEntityDef[], authToken: string, tenantCode: string): Promise<void>;
    /**
     * Create or update a table
     * @param entityDef The entity definition to create or update
     */
    creaateOrUpdateTable(entityDef: GsbEntityDef, authToken: string, tenantCode: string): Promise<void>;
    /**
     * Delete a table
     * @param entityDef The entity definition to delete
     */
    deleteTable(entityDef: GsbEntityDef, authToken: string, tenantCode: string): Promise<void>;
    /**
     * Create or update a column
     * @param property The property to create or update
     */
    createOrUpdateColumn(property: GsbProperty, authToken: string, tenantCode: string): Promise<void>;
    /**
     * Delete a column
     * @param property The property to delete
     */
    deleteColumn(property: GsbProperty, authToken: string, tenantCode: string): Promise<void>;
}
