export interface ProviderTypeDto {
    providerId: string;
    displayName: string;
    defaultBaseUrl: string;
    /** Whether the model catalog is a static/hardcoded list rather than fetched from an API */
    isStaticCatalog: boolean;
}
export interface ProviderDto {
    id: string;
    name: string;
    type: string;
    baseUrl: string;
}
export declare function providerSupportsModelImport(provider: Pick<ProviderDto, "type"> | null | undefined, providerTypes: ProviderTypeDto[]): boolean;
export declare function getImportableProviders(providers: ProviderDto[], providerTypes: ProviderTypeDto[]): ProviderDto[];
export interface ModelPricingDto {
    inputCostPerMillionTokens?: number;
    outputCostPerMillionTokens?: number;
    cachedInputCostPerMillionTokens?: number;
    cacheWriteCostPerMillionTokens?: number;
    batchInputCostPerMillionTokens?: number;
    inputTextTokenCostPerMillion?: number;
    inputImageTokenCostPerMillion?: number;
    outputImageTokenCostPerMillion?: number;
    providerPricingJson?: string;
}
export interface ModelDto {
    id: string;
    /** Parent item ID for editor operations (e.g. duplicate under the same folder). */
    parentId?: string;
    key: string;
    /** Sitecore item name (may differ from API model id in `name`). */
    itemName?: string;
    name: string;
    templateType: string;
    providerId?: string;
    providerName?: string;
    sourceRevision?: string;
    installedRevision?: string;
    status: string;
    pricing?: ModelPricingDto;
    maxContextWindowTokens?: number;
    maxResponseTokens?: number;
}
export interface AgentDto {
    id: string;
    key: string;
    name: string;
    status: string;
    isMandatory: boolean;
    /** True if the agent has required fields that are not yet configured (e.g., Default Model is empty) */
    needsConfiguration: boolean;
    /** The name of the default model configured for this agent profile */
    defaultModel?: string;
    /** The description of the agent profile */
    description?: string;
    /** SVG icon markup configured on the agent profile, if any */
    svgIcon?: string;
}
export interface JavaScriptToolDto {
    id: string;
    name: string;
    description?: string;
    path: string;
    hasSchema: boolean;
    hasApprovalScript: boolean;
    needsConfiguration: boolean;
}
export interface CreateJavaScriptToolRequest {
    name: string;
}
export interface CreateMcpServerRequest {
    name: string;
    type: "SSE" | "STDIO";
    url: string;
    authToken?: string;
    connectionStringName?: string;
}
export interface JavaScriptToolAgentSession {
    javaScriptToolId: string;
    agentId: string;
    profileId?: string | null;
    profileName?: string | null;
    created: boolean;
}
export interface CreateAgentRequest {
    name: string;
}
export interface CopyResultDto {
    createdCount: number;
    updatedCount: number;
    appliedKeys: string[];
}
export interface CreateProviderRequest {
    type: string;
    name: string;
    apiKey?: string;
    /**
     * Connection string key name from ConnectionStrings.config
     * (for example: parhelia.ai.provider.<providerId>).
     */
    connectionString?: string;
    baseUrl?: string;
}
export interface ModelSelection {
    sourceModelKey: string;
    providerId: string;
}
export interface CopyModelsRequest {
    models: ModelSelection[];
}
export interface UpdateModelRequest {
    modelId: string;
    sourceModelKey: string;
}
export interface SetEmbeddingsConfigRequest {
    modelId: string;
    providerId?: string;
}
export interface SetValidationConfigRequest {
    modelId?: string;
}
export interface SetDefaultModelsRequest {
    chatModelId?: string;
    imageModelId?: string;
}
export interface GetEmbeddingsConfigResponse {
    modelId?: string;
}
export interface GetValidationConfigResponse {
    modelId?: string;
}
export interface SearchSettingsInfoResponse {
    exists: boolean;
    itemId?: string;
}
export interface CreateModelRequest {
    templateType: "Ai Chat Model" | "Ai Embeddings Model" | "Ai Image Model";
    modelName: string;
    itemName?: string;
    providerId: string;
    pricing?: ModelPricingDto;
}
export interface ProviderModelPricingDto {
    inputCostPerMillionTokens?: number;
    outputCostPerMillionTokens?: number;
    cachedInputCostPerMillionTokens?: number;
    cacheWriteCostPerMillionTokens?: number;
    batchInputCostPerMillionTokens?: number;
    requestCost?: number;
    imageCost?: number;
    imageOutputCost?: number;
    inputTextTokenCostPerMillion?: number;
    inputImageTokenCostPerMillion?: number;
    outputImageTokenCostPerMillion?: number;
}
export interface ProviderModelDto {
    id: string;
    name: string;
    provider: string;
    description?: string;
    contextLength?: number;
    maxCompletionTokens?: number;
    modelType: "chat" | "embeddings" | "image";
    inputModalities: string[];
    outputModalities: string[];
    pricing?: ProviderModelPricingDto;
    isInstalled: boolean;
    installedItemId?: string;
    pricingDiffers: boolean;
    rawPricingJson?: string;
}
export interface UpsertProviderModelsRequest {
    providerId: string;
    selectedModelIds: string[];
    mode: "createMissing" | "updatePricing";
}
export interface UpsertProviderModelsResult {
    createdCount: number;
    updatedCount: number;
    skippedCount: number;
    errors: string[];
}
export interface ToolFunctionDto {
    functionName: string;
    description: string;
    templateId: string;
    defaultFolderName: string;
    isInstalled: boolean;
    installedItemId?: string;
    installedItemPath?: string;
    /** True if the tool has required fields that are not yet configured */
    needsConfiguration: boolean;
    /** Number of configurable fields on this tool's template */
    configurableFieldCount: number;
    /** The name of the MCP server this tool belongs to (for MCP tools only) */
    serverName?: string;
}
export interface UpdateToolsResult {
    createdCount: number;
    skippedCount: number;
    createdFunctions: string[];
    errors: string[];
}
/** Configuration details for a single tool */
export interface ToolConfigurationDto {
    functionName: string;
    toolItemId: string;
    fields: ToolConfigFieldDto[];
}
/** A single configurable field on a tool item */
export interface ToolConfigFieldDto {
    fieldName: string;
    /** Field type from template: "Droptree", "Checkbox", "Single-Line Text", etc. */
    fieldType: string;
    /** Field description/tooltip from template */
    description: string;
    /** Sitecore query or datasource for selection fields */
    source: string;
    /** True if this field is required for the tool to function */
    isRequired: boolean;
    /** Current value of the field on the tool item */
    currentValue?: string;
    /** Display name of the current value (for references) */
    currentDisplayName?: string;
    /** Suggested default value from GetDefaultConfiguration */
    suggestedValue?: string;
    /** Display name of the suggested value (for references) */
    suggestedDisplayName?: string;
}
/** Request to apply configuration values to a tool */
export interface ApplyToolConfigRequest {
    functionName: string;
    fieldValues: Record<string, string>;
}
/** Result of applying default configuration to all tools */
export interface ApplyDefaultsResult {
    configuredCount: number;
    skippedCount: number;
    configuredFunctions: string[];
    errors: string[];
}
/** Result of installing MCP tools from configured servers */
export interface InstallMcpToolsResult {
    newToolsDiscoveredCount: number;
    updatedCount: number;
    toolsDiscovered: string[];
    errors: string[];
}
/** Summary status info for non-admin status checks */
export interface StatusSummaryDto {
    /** Whether any AI providers are configured */
    hasProviders: boolean;
    /** Whether any AI models are installed */
    hasModels: boolean;
    /** Whether any embeddings models are installed */
    hasEmbeddingsModels: boolean;
    /** Whether an embeddings model is selected in the search config */
    hasEmbeddingsConfigured: boolean;
    /** Number of agent profiles that have updates available */
    outdatedAgentsCount: number;
}
export declare const setupWizardService: {
    getProviderTypes(): Promise<ProviderTypeDto[]>;
    applyBaseSettings(): Promise<CopyResultDto>;
    getProviders(): Promise<ProviderDto[]>;
    createProvider(request: CreateProviderRequest): Promise<string>;
    deleteProvider(providerId: string): Promise<void>;
    getInstalledModels(): Promise<ModelDto[]>;
    updateModel(request: UpdateModelRequest): Promise<void>;
    getInstalledAgents(): Promise<AgentDto[]>;
    createAgent(request: CreateAgentRequest): Promise<string>;
    getJavaScriptTools(): Promise<JavaScriptToolDto[]>;
    createJavaScriptTool(request: CreateJavaScriptToolRequest): Promise<string>;
    createMcpServer(request: CreateMcpServerRequest): Promise<string>;
    deleteJavaScriptTool(javaScriptToolId: string): Promise<void>;
    getJavaScriptToolAgent(javaScriptToolId: string): Promise<JavaScriptToolAgentSession>;
    resetJavaScriptToolAgent(javaScriptToolId: string): Promise<JavaScriptToolAgentSession>;
    getEmbeddingsModels(): Promise<ModelDto[]>;
    getChatModels(): Promise<ModelDto[]>;
    getImageModels(): Promise<ModelDto[]>;
    setEmbeddingsConfig(request: SetEmbeddingsConfigRequest): Promise<void>;
    getEmbeddingsConfig(): Promise<GetEmbeddingsConfigResponse>;
    setValidationConfig(request: SetValidationConfigRequest): Promise<void>;
    getValidationConfig(): Promise<GetValidationConfigResponse>;
    getSearchSettingsInfo(): Promise<SearchSettingsInfoResponse>;
    createSearchSettingsItem(): Promise<string>;
    createModel(request: CreateModelRequest): Promise<string>;
    getProviderModels(providerId: string): Promise<ProviderModelDto[]>;
    upsertProviderModels(request: UpsertProviderModelsRequest): Promise<UpsertProviderModelsResult>;
    getToolFunctions(): Promise<ToolFunctionDto[]>;
    getMcpToolFunctions(): Promise<ToolFunctionDto[]>;
    installMcpTools(): Promise<InstallMcpToolsResult>;
    updateTools(): Promise<UpdateToolsResult>;
    getToolConfiguration(functionName: string): Promise<ToolConfigurationDto>;
    applyToolConfiguration(request: ApplyToolConfigRequest): Promise<void>;
    applyToolDefaults(): Promise<ApplyDefaultsResult>;
    createSettingsItem(): Promise<string>;
    setDefaultModels(request: SetDefaultModelsRequest): Promise<void>;
    getDefaultModels(): Promise<SetDefaultModelsRequest>;
    completeSetup(): Promise<void>;
    getSettingsExists(): Promise<boolean>;
    /**
     * Gets a summary of setup status. This endpoint is accessible to all authenticated users,
     * not just admins, and returns only boolean/count data for status checks.
     */
    getStatusSummary(): Promise<StatusSummaryDto>;
};
