import { ALObject, ALSymbolDatabase, ALReference, ALFieldReference, ALField, ALProcedure } from '../types/al-types'; export declare class OptimizedSymbolDatabase implements ALSymbolDatabase { private objectsByName; private objectsByType; private objectsById; private allObjects; private fieldsByTable; private proceduresByObject; private extensionsByBase; private fieldReferencesByTarget; private fieldReferencesBySource; private allFieldReferences; private packageObjects; private dependencyGraph; private lastIndexTime; private objectCount; /** * Add an object to the database with full indexing */ addObject(object: ALObject, packageName: string): void; /** * Search objects by pattern with optional type and package filters */ searchObjects(pattern?: string, type?: string, packageName?: string): ALObject[]; /** * Get object by ID and type */ getObjectById(key: string): ALObject | undefined; /** * Get all objects with a specific name */ getObjectsByName(name: string): ALObject[]; /** * Get all objects of a specific type */ getObjectsByType(type: string): ALObject[]; /** * Get all objects (for enumeration) */ getAllObjects(): ALObject[]; /** * Get all field references (for enumeration and debugging) */ getAllFieldReferences(): ALFieldReference[]; /** * Get fields for a specific table */ getTableFields(tableName: string): ALField[]; /** * Get procedures for a specific object */ getObjectProcedures(objectName: string): ALProcedure[]; /** * Get controls for a specific page */ getPageControls(objectName: string): any[]; /** * Get data items for a specific report or xmlport */ getDataItems(objectName: string): any[]; /** * Find references to a target object */ findReferences(targetName: string, referenceType?: string, sourceType?: string): ALReference[]; /** * Get objects that extend a base object */ getExtensions(baseObjectName: string): ALObject[]; /** * Get package names and their object counts */ getPackageSummary(): Map; /** * Get database statistics */ getStatistics(): { totalObjects: number; objectsByType: Map; packages: number; lastIndexTime: number; }; /** * Find field references - all references to a specific table/field */ findFieldReferences(tableName: string, fieldName?: string): ALFieldReference[]; /** * Find field usage - where a specific field is used */ findFieldUsage(tableName: string, fieldName: string): ALFieldReference[]; /** * Clear all data */ clear(): void; /** * Helper method to add items to map arrays */ private addToMapArray; /** * Index type-specific data for fast lookups */ private indexTypeSpecificData; /** * Find references within a single object */ private findReferencesInObject; /** * Extract object type reference from TypeDefinition */ private extractObjectTypeReference; /** * Map TypeDefinition.Name to AL object type */ private mapTypeToObjectType; /** * Extract field references from an AL object */ private extractFieldReferences; /** * Extract field references from page controls */ private extractPageFieldReferences; /** * Recursively extract field references from controls */ private extractControlFieldReferences; /** * Extract field references from report data items and columns */ private extractReportFieldReferences; /** * Extract field references from query data items and columns */ private extractQueryFieldReferences; /** * Extract field references from XMLPort schema elements */ private extractXmlPortFieldReferences; /** * Extract field references from table relations */ private extractTableFieldReferences; /** * Add a field reference to the indices */ private addFieldReference; /** * Get page source table from properties and resolve table ID to name */ private getPageSourceTable; /** * Get property value by name */ private getPropertyValue; /** * Parse field name from expression (e.g., "No." from "Rec.\"No.\"") */ private parseFieldFromExpression; /** * Parse table relation string to extract table and field references */ private parseTableRelation; /** * Build final optimized indices (called after all objects are added) */ buildOptimizedIndices(): void; } //# sourceMappingURL=symbol-database.d.ts.map