import { IMessageRegistry, MessageDefinition } from './types.js';

/**
 * Registry for MAVLink message definitions.
 * Provides O(1) lookup by both ID and name.
 */
declare class MessageRegistry implements IMessageRegistry {
    private definitionsById;
    private definitionsByName;
    private crcExtraTable;
    /**
     * Register a message definition
     */
    register(def: MessageDefinition, crcExtra: number): void;
    /**
     * Get CRC extra value for a message ID
     */
    getCrcExtra(messageId: number): number | undefined;
    /**
     * Get the full CRC extra table
     */
    getCrcExtraTable(): Record<number, number>;
    /**
     * Get message definition by ID
     */
    getMessageDefinition(id: number): MessageDefinition | undefined;
    /**
     * Get message definition by name
     */
    getMessageDefinitionByName(name: string): MessageDefinition | undefined;
    /**
     * Check if a message ID is supported
     */
    supportsMessage(messageId: number): boolean;
    /**
     * Check if a message name is supported
     */
    supportsMessageName(messageName: string): boolean;
    /**
     * Get all supported message IDs
     */
    getSupportedMessageIds(): number[];
    /**
     * Get all supported message names
     */
    getSupportedMessageNames(): string[];
}

export { MessageRegistry };
