import { IPage, IPanel, IQuestion, Question } from 'survey-core';
import { SurveyPDF } from '../survey';
import { DocController } from '../doc_controller';
import { IFlatQuestion } from './flat_question';
import { IPanelStyle, IQuestionStyle } from '../style/types';
import { IFlatPanel } from './flat_panel';
import { IFlatPage } from './flat_page';
import { IFlatSurvey } from './flat_survey';
export type FlatConstructor = new (survey: SurveyPDF, question: IQuestion, controller: DocController, style: IQuestionStyle) => IFlatQuestion;
export type FlatPanelConstructor = new (survey: SurveyPDF, panel: IPanel, controller: DocController, style: IPanelStyle) => IFlatPanel;
export type FlatPageConstructor = new (survey: SurveyPDF, panel: IPage, controller: DocController, style: IPanelStyle) => IFlatPage;
export type FlatSurveyConstructor = new (survey: SurveyPDF, controller: DocController, style: IPanelStyle) => IFlatSurvey;
export declare class FlatRepository {
    private questions;
    private panel;
    private page;
    private survey;
    private static instance;
    static getInstance(): FlatRepository;
    register(modelType: string, rendererConstructor: FlatConstructor): void;
    registerPanel(rendererConstructor: FlatPanelConstructor): void;
    registerPage(rendererConstructor: FlatPageConstructor): void;
    registerSurvey(rendererConstructor: FlatSurveyConstructor): void;
    isTypeRegistered(type: string): boolean;
    getRenderer(type: string): FlatConstructor;
    create(survey: SurveyPDF, question: Question, docController: DocController, style: IQuestionStyle, type?: string): IFlatQuestion;
    createPanel(survey: SurveyPDF, panel: IPanel, docController: DocController, style: IPanelStyle): IFlatPanel;
    createPage(survey: SurveyPDF, page: IPage, docController: DocController, style: IPanelStyle): IFlatPage;
    createSurvey(survey: SurveyPDF, docController: DocController, style: IPanelStyle): IFlatSurvey;
    static registerPanel(rendererConstructor: FlatPanelConstructor): void;
    static registerPage(rendererConstructor: FlatPageConstructor): void;
    static registerSurvey(rendererConstructor: FlatSurveyConstructor): void;
    static register(type: string, rendererConstructor: FlatConstructor): void;
    static getRenderer(type: string): FlatConstructor;
}
