import { ProjectionAttributeState, SearchResult } from '../../internal';
/**
 * Structure to help search the ProjectionAttributeState previous state tree for leaf node and top node for a given attribute name
 * E.g.: Given the following tree
 *
 *     11  12  13 =====      14    15  17
 *     |   |   |       |     |     |   |
 *     |   |   |       |     |     |   |
 *     7   8   9 ==    10    16    7   8
 *     |   |   |   |   |     |     |   |
 *     |   |   |   |   |     |     |   |
 *     2   1   4   5   6     1     2   1
 *     |                           |
 *     |                           |
 *     1                           1
 *
 * Leaf Node Searches:
 * - Search for 11's leaf nodes would be 1
 * - Search for 10's leaf nodes would be 6
 * - Search for 9's leaf nodes would be 4, 5
 * - Search for 4's leaf nodes would be 4
 *
 * Top Node Searches:
 * - Search for 1's top node would be 12 14 17
 * - Search for 13's top node would be 13
 * - Search for 5's top node would be 13
 * - Search for 2's top node would be 11 15
 *
 * Smallest Depth Wins
 * @internal
 */
export declare class SearchStructure {
    private structure;
    /**
     * @internal
     */
    result: SearchResult;
    /**
     * @internal
     */
    get count(): number;
    /**
     * @internal
     */
    constructor();
    dispose(): void;
    /**
     * @internal
     */
    add(pas: ProjectionAttributeState): void;
    /**
     * Build a structure using a stack
     * @internal
     */
    static buildStructure(curr: ProjectionAttributeState, top: ProjectionAttributeState, attrName: string, st: SearchStructure, foundFlag: boolean, foundDepth: number): SearchStructure;
}
