import { EventData } from '@nativescript/core/data/observable';
import { ImageSource } from '@nativescript/core/image-source';
import { Color, CssProperty, Property, Style, View } from '@nativescript/core/ui/core/view';
export interface TabPressedEventData extends EventData {
    index: number;
}
export interface TabSelectedEventData extends EventData {
    oldIndex: number;
    newIndex: number;
}
export interface TabReselectedEventData extends EventData {
    index: number;
}
export declare enum TitleVisibility {
    Selected = 0,
    Always = 1,
    Never = 2
}
export declare abstract class BottomNavigationBarBase extends View {
    static tabPressedEvent: string;
    static tabSelectedEvent: string;
    static tabReselectedEvent: string;
    activeColor: Color;
    inactiveColor: Color;
    selectedTabIndex: number;
    titleVisibility: TitleVisibility;
    protected _items: BottomNavigationTabBase[];
    get items(): BottomNavigationTabBase[];
    onLoaded(): void;
    selectTab(index: number): void;
    _emitTabPressed(index: number): void;
    _emitTabSelected(index: number): void;
    _emitTabReselected(index: number): void;
    _addChildFromBuilder(name: string, value: BottomNavigationTabBase): void;
    showBadge(index: number, value?: number): void;
    removeBadge(index: number): void;
    protected abstract selectTabNative(index: number): void;
    protected abstract createTabs(tabs: BottomNavigationTabBase[] | undefined): void;
}
export declare const tabsProperty: Property<BottomNavigationBarBase, BottomNavigationTabBase[]>;
export declare const titleVisibilityProperty: Property<BottomNavigationBarBase, TitleVisibility>;
export declare const activeColorCssProperty: CssProperty<Style, Color>;
export declare const inactiveColorCssProperty: CssProperty<Style, Color>;
interface BottomNavigationTabProps {
    title: string;
    icon: string | ImageSource;
    isSelectable?: boolean;
}
export declare abstract class BottomNavigationTabBase extends View implements BottomNavigationTabProps {
    title: string;
    icon: ImageSource;
    isSelectable?: boolean;
    activeColor: Color;
    inactiveColor: Color;
    constructor(args?: BottomNavigationTabProps);
    abstract getNativeIcon(): any;
    abstract showBadge(value?: number): void;
    abstract removeBadge(): void;
}
export declare const isSelectableProperty: Property<BottomNavigationTabBase, boolean>;
export declare const iconProperty: Property<BottomNavigationTabBase, ImageSource>;
export {};
