/// <reference types="lodash" />
import { BpSdkStore, lazyLoadVehicleOptions, loadConfigurations, loadFullVehicleOptions, loadMakes, loadModels, loadSingleApplicationForm, loadSingleQuestionSet, loadYears, resetSelectedVehicle, selectVehicle, setVehicleSelection } from '@boldpenguin/sdk-redux';
import { IAnswer, IMappedQuestionGroupAnswers, IPartnerEngineConfig, IVehiclePanelContainerComponent, IVehicleSelection, IVehicleSummary, IVehicleYearOptions, IYearMakeModelConfigurationUpdate, LoadingStates, VehicleFlowTypes, VehicleTypes, IAnswerUpdatedEvent } from '@boldpenguin/sdk-types';
import { EventEmitter } from '../../stencil-public-runtime';
import { Unsubscribe } from '../../services/redux-store.service';
export declare class BpSdkVehiclePanelContainer implements IVehiclePanelContainerComponent {
    storeUnsubscribe?: Unsubscribe;
    loadYears: typeof loadYears;
    loadMakes: typeof loadMakes;
    loadModels: typeof loadModels;
    loadConfigurations: typeof loadConfigurations;
    loadFullVehicleOptions: typeof loadFullVehicleOptions;
    lazyLoadVehicleOptions: typeof lazyLoadVehicleOptions;
    selectVehicle: typeof selectVehicle;
    loadSingleApplicationForm: typeof loadSingleApplicationForm;
    loadSingleQuestionSet: typeof loadSingleQuestionSet;
    resetSelectedVehicle: typeof resetSelectedVehicle;
    setVehicleSelection: typeof setVehicleSelection;
    /**
     * Code
     */
    code: string;
    /**
     * Non-vehicle specific answers
     */
    answers: IAnswer[];
    /**
     * Question Group
     */
    questionGroup: IMappedQuestionGroupAnswers;
    /**
     * Can delete
     */
    canDelete: boolean;
    /**
     * App Form ID injected by redux
     */
    appFormId: string;
    /**
     * IPartnerEngineConfig injected from redux
     */
    config: IPartnerEngineConfig;
    /**
     * Vehicle options injected by redux
     */
    yearOptions: IVehicleYearOptions;
    /**
     * Vehicle options resource injected by redux
     */
    selectionStatus: LoadingStates;
    /**
     * Should show trailers?
     */
    shouldShowTrailers: boolean;
    /**
     * Is vehicle trailer?
     */
    isVehicleTrailer: boolean;
    vehicleInformation: IVehicleSummary;
    canEdit: boolean;
    canSave: boolean;
    isEditing: boolean;
    isExpanded: boolean;
    isSaving: boolean;
    isValid: boolean;
    useExternal: boolean;
    vehicleSelection: IVehicleSelection;
    _currentYear: number;
    _currentMakeId: string;
    _currentModelId: string;
    _currentConfigId: string;
    questionGroupId: string;
    type: VehicleTypes | undefined;
    tabIndex: number;
    vehicleLabel: string;
    deleteItem: EventEmitter<string>;
    /**
     * Passes information needed to update answer
     */
    saveAnswer: EventEmitter<IAnswerUpdatedEvent>;
    el: HTMLBpSdkVehiclePanelContainerElement;
    makeDisplayValue: string;
    resetState(): void;
    handleSubscriptions: () => void;
    connectedCallback(): void;
    componentWillLoad(): void;
    mapStateToProps: (state: BpSdkStore) => {
        config: IPartnerEngineConfig;
        appFormId: string;
        yearOptions: IVehicleYearOptions;
        selectionStatus: LoadingStates;
        vehicleInformation: {
            year: string | number;
            make: string;
            model: string;
            configuration: string;
        };
        vehicleSelection: IVehicleSelection;
    };
    handleTabChanged({ detail }: CustomEvent): void;
    onTabChanged(tab: number): void;
    onIsVehicleTrailerChanged(isVehicleTrailer: boolean): void;
    onVehicleSelctionChanged(selection: IVehicleSelection): void;
    updateType(tab: number, isVehicleTrailer: boolean): void;
    isTrailerTab(tab: number): boolean;
    populateVehicleOptions(questionGroup: IMappedQuestionGroupAnswers): void;
    loadOptions: import("lodash").DebouncedFunc<(selection: IVehicleSelection) => void>;
    setOptions: import("lodash").DebouncedFunc<(selection: Partial<IVehicleSelection>) => void>;
    onQuestionGroupChange(questionGroup: IMappedQuestionGroupAnswers, oldQuestionGroup?: IMappedQuestionGroupAnswers): void;
    onVehicleInformationChange(vehicleInformation: IVehicleSummary): void;
    onOptionsUpdate(updateEvent: CustomEvent<IYearMakeModelConfigurationUpdate>): void;
    fetchYears(): void;
    fetchMakes(): void;
    fetchModels(): void;
    fetchConfigurations(): void;
    onMakeDirty(): void;
    onVinUpdate(event: {
        detail: {
            vin: string;
            answerId: string;
        };
    }): void;
    onVehicleSaveCallback: () => void;
    onVehicleSave(saveEvent: CustomEvent<VehicleFlowTypes>): void;
    onVehicleResourceChange(vehicleSelectionState: LoadingStates): void;
    disconnectedCallback(): void;
    onEdit(): void;
    editVehicle: (e: MouseEvent) => void;
    deleteVehicle: () => void;
    onOpen: () => void;
    onClose: () => void;
    render(): any[];
    renderExternal(): any;
    renderInternal(): any;
    private getVehicleLabel;
    private isVehicleInputComplete;
    private isFreeFill;
}
