import { type ISpecGroups } from '../spec/SpecGroups.ts';
/**
 * Class for managing FIX protocol groups.
 * Provides functionality to find and filter groups based on various criteria.
 * Uses caching to improve performance when looking up groups.
 */
export declare class Groups {
    /** Array of all available groups from the FIX specification */
    groups: ISpecGroups[];
    /** Cache map for looking up groups by their ID */
    cacheMap: Map<number, ISpecGroups>;
    /** Cache map for looking up groups by their name */
    cacheMapByName: Map<string, ISpecGroups>;
    /**
     * Creates a new Groups instance and initializes the cache maps.
     * Populates both the ID-based and name-based cache maps for efficient lookups.
     */
    constructor();
    /**
     * Finds a group by its component ID.
     *
     * @param {number} componentId - The ID of the group to find
     * @returns {ISpecGroups | undefined} The found group, or undefined if not found
     */
    find(componentId: number): ISpecGroups | undefined;
    /**
     * Finds a group by its name.
     *
     * @param {string} name - The name of the group to find
     * @returns {ISpecGroups | undefined} The found group, or undefined if not found
     */
    findByName(name: string): ISpecGroups | undefined;
    /**
     * Filters and finds a group based on the numInGroup tag and message type.
     * Handles special cases where multiple groups share the same numInGroup ID
     * but are used by different message types.
     * Falls back to searching by numInGroup ID if no special case matches.
     *
     * @param {number} tag - The tag number to filter by (e.g., NoMDEntries, NoOrders)
     * @param {string} messageType - The type of the message being processed
     * @returns {ISpecGroups | undefined} The found group, or undefined if not found
     */
    filterMapByNumInGroupId(tag: number, messageType: string): ISpecGroups | undefined;
}
