import { BpSdkStore, pushAnswer, removeActiveAnswerId, saveQuestionSet, updateActiveAnswerId, updateErrors } from '@boldpenguin/sdk-redux';
import { IAnalyticsTrackEventDetail, IAnswer, IApplicationFormProcesses, IApplicationFormQuestionSet, IMappedQuestionGroupAnswers, IPartnerEngineConfig, IQuestionSetContainerComponent, IQuestionSetState, LoadingStates, IAnswerUpdatedEvent } from '@boldpenguin/sdk-types';
import { EventEmitter } from '../../stencil-public-runtime';
import { Unsubscribe } from '../../services/redux-store.service';
export declare class BpSdkQuestionSetContainer implements IQuestionSetContainerComponent {
    storeUnsubscribe?: Unsubscribe;
    saveQuestionSet: typeof saveQuestionSet;
    updateErrors: typeof updateErrors;
    pushAnswer: typeof pushAnswer;
    removeActiveAnswerId: typeof removeActiveAnswerId;
    updateActiveAnswerId: typeof updateActiveAnswerId;
    /**
     * Question sets injected from redux
     */
    questionSets: IQuestionSetState;
    /**
     * IPartnerEngineConfig injected from redux
     */
    config: IPartnerEngineConfig;
    /**
     * 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;
    /**
     * Application form state injected from redux
     */
    locked: boolean;
    /**
     * Pending processes of application form state injected from redux
     */
    pendingProcesses: IApplicationFormProcesses[];
    /**
     * Answer queue injected from redux
     */
    queue: IAnswer[];
    /**
     * Is owner of application
     */
    isOwner: boolean;
    /**
     * Has permission to edit application
     */
    hasPermissionToEdit: boolean;
    /**
     * Enabled user check for application
     */
    enableUserApplicationGuard: boolean;
    /**
     * Emits an analytics tracking event, see `AnalyticsTrackingEventName` (sdk-types) for event names
     */
    bpAnalyticsTrack: EventEmitter<IAnalyticsTrackEventDetail>;
    areResourcesReady: boolean;
    useExternal: boolean;
    canSave: boolean;
    isLocked: boolean;
    isReady: boolean;
    isFirstRun: boolean;
    isLoadingApplication: boolean;
    el: HTMLBpSdkQuestionSetContainerElement;
    resetState(): void;
    handleSubscriptions: () => void;
    connectedCallback(): void;
    componentWillLoad(): void;
    mapStateToProps: (state: BpSdkStore) => {
        questionSets: IQuestionSetState;
        config: IPartnerEngineConfig;
        enableUserApplicationGuard: boolean;
        locked: boolean;
        isOwner: boolean;
        hasPermissionToEdit: boolean;
        pendingProcesses: IApplicationFormProcesses[];
        queue: IAnswer[];
        answersResourceState: LoadingStates;
        applicationFormResourceState: LoadingStates;
        questionPoolResourceState: LoadingStates;
        questionSetResourceState: LoadingStates;
    };
    onQueueChange(queue: IAnswer[]): void;
    onEnableUserApplicationGuard(enableUserApplicationGuard: boolean): void;
    onHasPermissionToEdit(hasPermission: boolean): void;
    onIsOwner(isOwner: boolean): void;
    onLocked(locked: boolean): void;
    onPendingProcessesChange(processes: IApplicationFormProcesses[]): 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;
    disconnectedCallback(): void;
    onRemoveActiveAnswerRequest(): void;
    onUpdateActiveAnswerRequest({ detail }: {
        detail: string;
    }): void;
    handleSaveQuestionSet: (questionSet: IApplicationFormQuestionSet) => 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;
    handleSaveAnswer(event: CustomEvent<IAnswerUpdatedEvent>): void;
    componentWillUpdate(): void;
    render(): any[];
    renderExternal(): any;
    renderQuestionSetHeader(set: IApplicationFormQuestionSet): any;
    shouldRenderQuestionGroup(questionGroupsWithAnswersAsKey: Map<string, IMappedQuestionGroupAnswers>, answer: IAnswer): boolean;
    renderQuestionSet(set: IApplicationFormQuestionSet): any;
    renderPendingProcessesContainer(): any;
    renderInternal(): any;
    private doesCurrentQuestionSetHaveAPendingProcess;
}
