import { IVoxaSheet } from "./VoxaSheet";
export declare abstract class Schema {
    intents: IIntent[];
    slots: ISlot[];
    downloads: IDownload[];
    AVAILABLE_LOCALES: string[];
    fileContent: IFileContent[];
    views: IView[];
    invocations: IInvocation[];
    publishing: IPublishingInformation[];
    NAMESPACE: string;
    interactionOptions: any;
    constructor(namespace: string | undefined, availableLocales: string[] | undefined, voxaSheets: IVoxaSheet[], interactionOption: any);
    abstract validate(locale: string, environment: string): void;
    abstract build(locale: string, environment: string): void;
    intentsByPlatformAndEnvironments(locale: string, environment: string): IIntent[];
    buildDownloads(): void;
    buildViewsMapping(): void;
    buildViews(): void;
    buildSynonyms(): void;
    getIntentsDefinition(locale: string, environment: string): {
        name: string;
        samples: string[];
        slots: {
            type: any;
            name: any;
            samples: any;
        }[];
    }[];
    getSlotsByIntentsDefinition(locale: string, environment: string): ISlot[];
    mergeManifest(environment: string): any;
    protected filterByPlatform(slot: ISlotDefinition): boolean;
    protected buildFilePath(...names: string[]): string;
}
export interface IIntent {
    name: string;
    samples: string[];
    responses: string[];
    confirmations: string[];
    slotsDefinition: ISlotDefinition[];
    canFulfillIntent: boolean;
    webhookUsed: boolean;
    webhookForSlotFilling: boolean;
    startIntent: boolean;
    signInRequired: boolean;
    endIntent: boolean;
    events: string[] | IEvent[];
    environments: string[];
    platforms: string[];
    locale: string;
    delegationStrategy?: "ALWAYS" | "SKILL_RESPONSE";
    confirmationRequired: boolean;
    parameterName?: string;
    parameterValue?: string;
}
export interface IEvent {
    name: string;
}
export interface IFileContent {
    path: string;
    content: any;
}
export interface IInvocation {
    locale: string;
    name: string;
    environment: string;
}
export interface ISlotDefinition {
    name: string;
    type: string;
    platform?: string;
    required: boolean;
    requiresConfirmation: boolean;
    requiresElicitation: boolean;
    samples: string[];
    prompts: {
        confirmation: string[];
        elicitation: string[];
    };
}
export interface ISlot {
    locale: string;
    name: string;
    values: ISlotSynonymns[];
}
export interface ISlotSynonymns {
    value: string;
    synonyms: string[];
}
export interface IView {
    locale: string;
    data: {};
}
export interface IDownload {
    name: string;
    data: {}[];
    locale: string;
}
export interface IPublishingInformation {
    key: string;
    value: string | object;
    environments: string[];
}
