import "./DisposePolyfill.js";
import { ConcatenatedValue } from "@itwin/presentation-shared";
import { HierarchyNodeKey } from "../HierarchyNodeKey.js";
/**
 * This is a logging namespace for public log messages that may be interesting to consumers.
 * @internal
 */
export declare const LOGGING_NAMESPACE = "Presentation.Hierarchies";
/**
 * This is a logging namespace for public performance-related log messages that may be interesting to consumers.
 * @internal
 */
export declare const LOGGING_NAMESPACE_PERFORMANCE = "Presentation.Hierarchies.Performance";
/**
 * This is a logging namespace for internal log messages that are only interesting to package contributors,
 * but not the consumers.
 * @internal
 */
export declare const LOGGING_NAMESPACE_INTERNAL = "Presentation.HierarchiesInternal";
/**
 * This is a logging namespace for internal performance-related log messages that are only interesting
 * to package contributors, but not the consumers.
 * @internal
 */
export declare const LOGGING_NAMESPACE_PERFORMANCE_INTERNAL = "Presentation.HierarchiesInternal.Performance";
/** @internal */
export declare function createOperatorLoggingNamespace(operatorName: string, baseCategory: typeof LOGGING_NAMESPACE | typeof LOGGING_NAMESPACE_PERFORMANCE | typeof LOGGING_NAMESPACE_INTERNAL | typeof LOGGING_NAMESPACE_PERFORMANCE_INTERNAL): string;
/** @internal */
export declare function createNodeIdentifierForLogging(node: {
    label: string | ConcatenatedValue;
    key: HierarchyNodeKey;
    parentKeys?: HierarchyNodeKey[];
} | undefined): string;
/** @internal */
export declare function hasChildren<TNode extends {
    children?: boolean | Array<unknown>;
}>(node: TNode): boolean;
/** @internal */
export declare function compareNodesByLabel<TLhsNode extends {
    label: string;
}, TRhsNode extends {
    label: string;
}>(lhs: TLhsNode, rhs: TRhsNode): number;
/**
 * A helper that disposes the given object, if it's disposable.
 *
 * The first option is to dispose using the deprecated `dispose` method if it exists on the object.
 * If not, we use the new `Symbol.dispose` method. If that doesn't exist either, the object is
 * considered as non-disposable and nothing is done with it.
 *
 * @internal
 */
export declare function safeDispose(disposable: {} | {
    [Symbol.dispose]: () => void;
} | {
    dispose: () => void;
}): void;
//# sourceMappingURL=Common.d.ts.map