import { Future, Optional } from '@ephox/katamari';
import { LazySink } from '../api/component/CommonTypes';
import { AlloyComponent } from '../api/component/ComponentApi';
import { AlloySpec } from '../api/component/SpecTypes';
import { TieredData } from '../api/ui/TieredMenu';
import { CommonDropdownDetail } from '../ui/types/DropdownTypes';
import { HighlightOnOpen } from '../ui/types/TieredMenuTypes';
declare type OnOpenSyncFunc = (sandbox: AlloyComponent) => void;
declare type MapFetch = (tdata: Optional<TieredData>) => Optional<TieredData>;
export interface SandboxExtras {
    onClose?: (component: AlloyComponent, menu: AlloyComponent) => void;
    onOpen?: (component: AlloyComponent, menu: AlloyComponent) => void;
}
declare const open: (detail: CommonDropdownDetail<TieredData>, mapFetch: MapFetch, hotspot: AlloyComponent, sandbox: AlloyComponent, externals: any, onOpenSync: OnOpenSyncFunc, highlightOnOpen: HighlightOnOpen) => Future<AlloyComponent>;
declare const togglePopup: (detail: CommonDropdownDetail<TieredData>, mapFetch: MapFetch, hotspot: AlloyComponent, externals: any, onOpenSync: OnOpenSyncFunc, highlightOnOpen: HighlightOnOpen) => Future<AlloyComponent>;
interface SinkDetail {
    uid: string;
    lazySink: Optional<LazySink>;
}
declare const getSink: (anyInSystem: AlloyComponent, sinkDetail: SinkDetail) => () => ReturnType<LazySink>;
declare const makeSandbox: (detail: CommonDropdownDetail<TieredData>, hotspot: AlloyComponent, extras?: SandboxExtras) => AlloySpec;
declare const repositionMenus: (comp: AlloyComponent) => void;
export { makeSandbox, togglePopup, open, repositionMenus, getSink };
//# sourceMappingURL=DropdownUtils.d.ts.map