import type { AbstractType, ExistingProvider, FactoryProvider, Type } from '@angular/core'; import type { CuiPoint } from '../types'; export declare abstract class CuiAccessor { abstract readonly type: string; } export declare abstract class CuiPositionAccessor extends CuiAccessor { abstract getPosition(rect: DOMRect, element?: HTMLElement): CuiPoint; } export declare abstract class CuiRectAccessor extends CuiAccessor { abstract getClientRect(): DOMRect; } export declare function cuiProvideAccessor(provide: AbstractType, type: string, fallback: Type): FactoryProvider; export declare function cuiFallbackAccessor(type: string): (accessors: readonly T[] | null, fallback: T) => T; export declare function cuiPositionAccessorFor(type: string, fallback: Type): FactoryProvider; export declare function cuiRectAccessorFor(type: string, fallback: Type): FactoryProvider; export declare function cuiAsPositionAccessor(accessor: Type): ExistingProvider; export declare function cuiAsRectAccessor(accessor: Type): ExistingProvider;