import { BpSdkStore, getCurrentActiveQuestionSet, getEligibilityResults, pushAnswer, removeActiveAnswerId, saveQuestionSet, switchActiveQuestionSet, updateErrors, setAddressValidationStatus, setAddressValidationTriggerOverridden } from '@boldpenguin/sdk-redux';
import { AddressValidationId, IAnalyticsTrackEventDetail, IAnswer, IApplicationFormProcesses, IApplicationFormQuestionSet, INextButtonContainerComponent, IPartnerEngineConfig, IQuestionSetState, LoadingStates, ValidationStatus } from '@boldpenguin/sdk-types';
import { EventEmitter } from '../../stencil-public-runtime';
import { Unsubscribe } from '../../services/redux-store.service';
export declare class BpSdkNextButtonContainer implements INextButtonContainerComponent {
    storeUnsubscribe?: Unsubscribe;
    updateErrors: typeof updateErrors;
    removeActiveAnswerId: typeof removeActiveAnswerId;
    saveQuestionSet: typeof saveQuestionSet;
    switchActiveQuestionSet: typeof switchActiveQuestionSet;
    getCurrentActiveQuestionSet: typeof getCurrentActiveQuestionSet;
    pushAnswer: typeof pushAnswer;
    getEligibilityResults: typeof getEligibilityResults;
    setAddressValidationStatus: typeof setAddressValidationStatus;
    setAddressValidationTriggerOverridden: typeof setAddressValidationTriggerOverridden;
    activeQuestionSet: IApplicationFormQuestionSet;
    /**
     * Controls disabled state of button
     */
    buttonDisabled: boolean;
    /**
     * IPartnerEngineConfig injected from redux
     */
    config: IPartnerEngineConfig;
    /**
     * Answer queue
     */
    queue: IAnswer[];
    /**
     * Disable navigation if active question set is incomplete
     */
    shouldDisableIfIncomplete: boolean;
    /**
     * Answer resource states injected from redux
     */
    answersResourceState: LoadingStates;
    /**
     * Application form resource states injected from redux
     */
    applicationFormResourceState: LoadingStates;
    /**
     * Question pool resource states injected from redux
     */
    questionPoolResourceState: LoadingStates;
    /**
     * Question set resource states injected from redux
     */
    questionSetResourceState: LoadingStates;
    /**
     * Question Set State from Store
     */
    questionSetState: IQuestionSetState;
    /**
     * Application form state injected from redux
     */
    locked: boolean;
    /**
     * Pending processes of application form state injected from redux
     */
    pendingProcesses: IApplicationFormProcesses[];
    /**
     * Is owner of application
     */
    isOwner: boolean;
    /**
     * Has permission to edit application
     */
    hasPermissionToEdit: boolean;
    /**
     * Does the active question have a pending process
     */
    isActiveQuestionSetPendingProcess: boolean;
    /**
     * Enabled user check for application
     */
    enableUserApplicationGuard: boolean;
    /**
     * Current application form id
     */
    applicationId: string;
    /**
     * A list of address validation statuses
     */
    addressValidationStatuses: {
        [key: string]: ValidationStatus;
    };
    /**
     * A list of address group IDs that are pending validation
     */
    addressIdsToBeValidated: AddressValidationId[];
    /**
     * Is true when validation has been triggered elsewhere
     */
    isValidationTriggerOverridden: boolean | null;
    /**
     * Emits an analytics tracking event, see `AnalyticsTrackingEventName` (sdk-types) for event names
     */
    bpAnalyticsTrack: EventEmitter<IAnalyticsTrackEventDetail>;
    useExternal: boolean;
    canSave: boolean;
    areResourcesReady: boolean;
    isDisabled: boolean;
    caDisabled: boolean;
    isReady: boolean;
    isLocked: boolean;
    isFirstRun: boolean;
    classes: string;
    isActiveQuestionSetBeingValidated: boolean;
    resetState(): void;
    handleSubscriptions: () => void;
    connectedCallback(): void;
    componentWillLoad(): void;
    onEnableUserApplicationGuard(enableUserApplicationGuard: boolean): void;
    onHasPermissionToEdit(hasPermission: boolean): void;
    onIsOwner(isOwner: boolean): void;
    onLocked(locked: boolean): void;
    updateIsLocked(locked: boolean, isOwner: boolean, hasPermission: boolean, enableUserApplicationGuard: boolean): void;
    onIsFirstRun(isFirstRun: boolean): void;
    onIsReady(isReady: boolean): void;
    updateAreResourcesReady(isFirstRun: boolean, isReady: boolean): void;
    onAnswersResourcesStateChange(state: LoadingStates): void;
    onApplicationFormResourceStateChange(state: LoadingStates): void;
    onQuestionPoolResourcesStateChange(state: LoadingStates): void;
    onQuestionSetResourcesStateChange(state: LoadingStates): void;
    calculateResourcesReady(resources?: {
        answers?: LoadingStates;
        applicationForm?: LoadingStates;
        questionPools?: LoadingStates;
        questionSets?: LoadingStates;
    }): boolean;
    onShouldDisableIfIncompleteChange(shouldDisableIfIncomplete: boolean): void;
    onActiveQuestionSetChange(activeQuestionSet: IApplicationFormQuestionSet): void;
    onQueueChange(queue: IAnswer[]): void;
    onAddressValidationStatusChange(statuses: {
        [key: string]: ValidationStatus;
    }): void;
    onIsActiveQuestionSetPendingProcess(isQSPending: boolean): void;
    disableIfCAQuestionSet(shouldDisableIfIncomplete: boolean, activeQuestionSet: IApplicationFormQuestionSet): void;
    updateOnDisableIfIncomplete(shouldDisableIfIncomplete: boolean, activeQuestionSet: IApplicationFormQuestionSet): void;
    mapStateToProps: (state: BpSdkStore) => {
        activeQuestionSet: IApplicationFormQuestionSet;
        applicationId: string;
        config: IPartnerEngineConfig;
        answersResourceState: LoadingStates;
        applicationFormResourceState: LoadingStates;
        pendingProcesses: IApplicationFormProcesses[];
        questionPoolResourceState: LoadingStates;
        questionSetResourceState: LoadingStates;
        questionSetState: IQuestionSetState;
        queue: IAnswer[];
        enableUserApplicationGuard: boolean;
        locked: boolean;
        isActiveQuestionSetPendingProcess: boolean;
        isOwner: boolean;
        hasPermissionToEdit: boolean;
        addressValidationStatuses: {
            [k: string]: ValidationStatus;
        };
        addressIdsToBeValidated: string[];
        isValidationTriggerOverridden: boolean;
        isActiveQuestionSetBeingValidated: boolean;
    };
    render(): any[];
    renderExternal(): any;
    handleNavigateNext(): void;
    renderInternal(): any;
    private parentQuestionSetCanSave;
    private saveQuestionSetAndProceed;
    private callSaveQuestionSet;
    private handleStep;
    private isDisabledStatusByActiveQuestionSet;
    private shouldCallSaveQuestionSet;
    private isNextButtonClickable;
    private isAddressValidationRequired;
    private handleValidation;
}
