import { ElementRef, OnDestroy, Renderer2 } from "@angular/core";
import { ControlValueAccessor } from "@angular/forms";
import { BsSelectComponent } from "../component/select.component";
import * as i0 from "@angular/core";
export declare class BsSelectValueAccessor implements ControlValueAccessor {
    private _renderer;
    private _elementRef;
    private selectBox;
    constructor(_renderer: Renderer2, _elementRef: ElementRef, selectBox: BsSelectComponent);
    onChange: (_: any) => void;
    onTouched: () => void;
    registerOnTouched(fn: () => void): void;
    registerOnChange(fn: (p: any) => {}): void;
    setDisabledState(isDisabled: boolean): void;
    protected setProperty(key: string, value: any): void;
    hostOnChange(ev: InputEvent): void;
    hostBlur(ev: Event): void;
    value: any;
    optionMap: Map<string, any>;
    idCounter: number;
    private compareWithFunction;
    set compareWith(value: (value1: any, value2: any) => boolean);
    buildValueString(id: string | null, value: any): string;
    extractId(valueString: string): string;
    writeValue(value: any): void;
    registerOption(): string;
    getOptionId(value: any): string | null;
    getOptionValue(valueString: string): any;
    static ɵfac: i0.ɵɵFactoryDeclaration<BsSelectValueAccessor, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<BsSelectValueAccessor, "bs-select", never, { "compareWith": "compareWith"; }, {}, never, never, false, never>;
}
export declare class BsSelectOption implements OnDestroy {
    private element;
    private renderer;
    private select;
    constructor(element: ElementRef, renderer: Renderer2, select: BsSelectValueAccessor);
    id: string;
    set ngValue(value: any);
    set value(value: any);
    setElementValue(value: string): void;
    ngOnDestroy(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<BsSelectOption, [null, null, { optional: true; host: true; }]>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<BsSelectOption, "option", never, { "ngValue": "ngValue"; "value": "value"; }, {}, never, never, false, never>;
}
