/// <reference types="@rbxts/types" />
/// <reference types="@rbxts/compiler-types" />
/// <reference types="roact" />
import Roact from "@rbxts/roact";
import { IconEnum } from "./Icon";
interface ItemData<T> {
    Id: T;
    SelectedText?: string;
    Text: string;
    Icon?: IconEnum;
    TextColor3?: Color3;
}
interface DropdownProps<T = string> {
    readonly Items: Array<ItemData<T>>;
    readonly SelectedItemIndex?: number;
    readonly SelectedItemId?: T;
    Size?: UDim2;
    Position?: UDim2;
    Disabled?: boolean;
    ItemSelected?: (item: ItemData<T>) => void;
}
interface DropdownState {
    active: boolean;
    selectedItemIndex: number;
}
export default class Dropdown<T = string> extends Roact.Component<DropdownProps<T>, DropdownState> {
    private dropdownRef;
    private maid;
    private portalPosition;
    private setPortalPosition;
    private portalSizeX;
    private setPortalSizeX;
    constructor(props: DropdownProps<T>);
    setPortalPositionRelativeTo(frame: Frame): void;
    didUpdate(prevProps: DropdownProps<T>): void;
    didMount(): void;
    willUnmount(): void;
    renderDropdownItems(): Roact.Element[];
    renderDropdown(): Roact.Element;
    render(): Roact.Element;
}
export {};
