import type { BotonicContext, ResolvedPlugins } from '@botonic/core';
import type { AiAgentArgs, EventAction, HtEventProps, InferenceResponse, UserExtraData } from '@botonic/shared';
import type { FlowContent } from './content-fields';
import { HtFlowBuilderData, HtRatingButton } from './content-fields/hubtype-fields/index';
export declare enum ProcessEnvNodeEnvs {
    PRODUCTION = "production",
    DEVELOPMENT = "development"
}
export declare enum FlowBuilderJSONVersion {
    DRAFT = "draft",
    LATEST = "latest"
}
export interface KnowledgeBaseResponse {
    inferenceId: string;
    hasKnowledge: boolean;
    isFaithful: boolean;
    chunkIds: string[];
    answer: string;
}
export type AiAgentFunction<TPlugins extends ResolvedPlugins = ResolvedPlugins, TExtraData extends UserExtraData = UserExtraData> = (context: BotonicContext<TPlugins, TExtraData>, aiAgentArgs: AiAgentArgs) => Promise<InferenceResponse>;
export type TrackEventFunction<TPlugins extends ResolvedPlugins = ResolvedPlugins, TExtraData extends UserExtraData = UserExtraData> = (context: BotonicContext<TPlugins, TExtraData>, eventAction: EventAction, args: Omit<HtEventProps, 'action'>) => Promise<void>;
export type KnowledgeBaseFunction<TPlugins extends ResolvedPlugins = ResolvedPlugins, TExtraData extends UserExtraData = UserExtraData> = (context: BotonicContext<TPlugins, TExtraData>, sources: string[], instructions: string, messageId: string, memoryLength: number) => Promise<KnowledgeBaseResponse>;
export interface BotonicPluginFlowBuilderOptions<TPlugins extends ResolvedPlugins = ResolvedPlugins, TExtraData extends UserExtraData = UserExtraData> {
    apiUrl?: string;
    flowVersion?: FlowBuilderJSONVersion;
    flow?: HtFlowBuilderData;
    customFunctions?: Record<any, any>;
    trackEvent?: TrackEventFunction<TPlugins, TExtraData>;
    getKnowledgeBaseResponse?: KnowledgeBaseFunction<TPlugins, TExtraData>;
    getAiAgentResponse?: AiAgentFunction<TPlugins, TExtraData>;
    smartIntentsConfig?: {
        numSmartIntentsToUse: number;
    };
    contentFilters?: ContentFilter<TPlugins, TExtraData>[];
    inShadowing?: Partial<InShadowingConfig>;
    disableAIAgentInFirstInteraction?: boolean;
}
export interface InShadowingConfig {
    allowKeywords: boolean;
    allowSmartIntents: boolean;
    allowKnowledgeBases: boolean;
    allowAiAgents: boolean;
}
export interface SmartIntentsInferenceConfig {
    useLatest: boolean;
    numSmartIntentsToUse?: number;
}
export interface SmartIntentsInferenceRequestData {
    bot_id: string;
    text: string;
    num_smart_intents_to_use?: number;
    use_latest: boolean;
}
export interface SmartIntentResponse {
    smart_intent_title: string;
    text: string;
    smart_intents_used: {
        title: string;
        description: string;
    }[];
}
export interface PayloadParamsBase {
    followUpContentID?: string;
}
export type ContentFilter<TPlugins extends ResolvedPlugins = ResolvedPlugins, TExtraData extends UserExtraData = UserExtraData> = (context: BotonicContext<TPlugins, TExtraData>, content: FlowContent) => Promise<FlowContent> | FlowContent;
export type { HtFlowBuilderData };
export interface RatingSubmittedInfo extends HtRatingButton {
    possibleOptions: string[];
    possibleValues: number[];
}
