import * as polytype from 'polytype';
import * as _angular_core from '@angular/core';
import { MXInputBaseValueComponent, MXLookComponent, AXDataSource, AXValueChangedEvent } from '@acorex/cdk/common';
import { CountryItem } from '@acorex/core/constants';
import * as i1 from '@angular/common';
import * as i2 from '@angular/forms';
import * as i3 from 'angular-imask';
import * as i4 from '@acorex/components/select-box';
import * as i5 from '@acorex/components/search-box';
import * as i6 from '@acorex/components/decorators';
import * as i7 from '@acorex/components/button';
import * as i8 from '@acorex/components/text-box';

declare const AXPhoneBoxComponent_base: polytype.Polytype.ClusteredConstructor<[{
    new (): MXInputBaseValueComponent<string>;
    ɵfac: _angular_core.ɵɵFactoryDeclaration<MXInputBaseValueComponent<any>, never>;
    ɵprov: _angular_core.ɵɵInjectableDeclaration<MXInputBaseValueComponent<any>>;
}, typeof MXLookComponent]>;
/**
 * @category
 * A component that handles phone number input with various configurations.
 */
declare class AXPhoneBoxComponent extends AXPhoneBoxComponent_base {
    #private;
    /** @ignore */
    protected _updateOn: 'change' | 'blur' | 'submit';
    /** @ignore */
    private textbox;
    protected flags: _angular_core.WritableSignal<string>;
    /**
     * CSS classes to apply to the component.
     */
    classNames: string;
    /**
     * static precode.
     */
    precode: _angular_core.InputSignal<unknown>;
    /**
     * The default country value for the component.
     */
    country: _angular_core.ModelSignal<string>;
    /**
     * List of included values for the component.
     */
    included: _angular_core.InputSignal<string[]>;
    /**
     * List of excluded values for the component.
     */
    excluded: _angular_core.InputSignal<string[]>;
    private selectBox;
    /** @ignore */
    protected countries: _angular_core.WritableSignal<CountryItem[]>;
    /** @ignore */
    protected selectedCountry: _angular_core.WritableSignal<CountryItem>;
    /** @ignore */
    protected _handleModelChange(value: string | null): void;
    /** @ignore */
    protected dataSource: AXDataSource<CountryItem>;
    /** @ignore */
    protected handleCountryOnClosed(): void;
    /**
     * Determines if the keyboard event is a valid action based on allowed keys and key codes.
     *
     * @param event - The keyboard event to validate
     * @returns boolean - True if the key action is valid, false otherwise
     */
    isValidKeyboardAction: (event: KeyboardEvent) => boolean;
    /**
     * Updates the list of countries based on included or excluded codes.
     *
     * @returns void - No return value. Updates the internal countries list.
     */
    setCountries(): void;
    /**
     * Sets the default selected country based on the provided country code or the first country in the list.
     *
     * @returns void - No return value. Updates the selected country.
     */
    setDefaultValue(): void;
    protected handleKeyDown(e: KeyboardEvent): void;
    /** @ignore */
    _handleCountryValueChanged(event: AXValueChangedEvent): void;
    private get __hostName();
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPhoneBoxComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPhoneBoxComponent, "ax-phone-box", never, { "disabled": { "alias": "disabled"; "required": false; }; "tabIndex": { "alias": "tabIndex"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "value": { "alias": "value"; "required": false; }; "state": { "alias": "state"; "required": false; }; "name": { "alias": "name"; "required": false; }; "id": { "alias": "id"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "maxLength": { "alias": "maxLength"; "required": false; }; "allowNull": { "alias": "allowNull"; "required": false; }; "type": { "alias": "type"; "required": false; }; "autoComplete": { "alias": "autoComplete"; "required": false; }; "look": { "alias": "look"; "required": false; }; "classNames": { "alias": "class"; "required": false; }; "precode": { "alias": "precode"; "required": false; "isSignal": true; }; "country": { "alias": "country"; "required": false; "isSignal": true; }; "included": { "alias": "included"; "required": false; "isSignal": true; }; "excluded": { "alias": "excluded"; "required": false; "isSignal": true; }; }, { "onBlur": "onBlur"; "onFocus": "onFocus"; "valueChange": "valueChange"; "stateChange": "stateChange"; "onValueChanged": "onValueChanged"; "readonlyChange": "readonlyChange"; "disabledChange": "disabledChange"; "onKeyDown": "onKeyDown"; "onKeyUp": "onKeyUp"; "onKeyPress": "onKeyPress"; "country": "countryChange"; }, never, ["ax-clear-button ", "ax-validation-rule"], true, never>;
}

declare class AXPhoneBoxModule {
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPhoneBoxModule, never>;
    static ɵmod: _angular_core.ɵɵNgModuleDeclaration<AXPhoneBoxModule, never, [typeof i1.CommonModule, typeof i2.FormsModule, typeof i3.IMaskModule, typeof i4.AXSelectBoxModule, typeof i5.AXSearchBoxModule, typeof i6.AXDecoratorModule, typeof i7.AXButtonModule, typeof i8.AXTextBoxModule, typeof AXPhoneBoxComponent], [typeof AXPhoneBoxComponent]>;
    static ɵinj: _angular_core.ɵɵInjectorDeclaration<AXPhoneBoxModule>;
}

export { AXPhoneBoxComponent, AXPhoneBoxModule };
