import type { InstanceAiContext, ExecutionResult, ExecutionDebugInfo, NodeOutputResult, ServiceProxyConfig } from '@n8n/instance-ai';
import { GlobalConfig } from '@n8n/config';
import type { User } from '@n8n/db';
import { InstanceAiSettingsService } from './instance-ai-settings.service';
import { AiBuilderTemporaryWorkflowRepository, ExecutionRepository, ProjectRepository, SharedWorkflowRepository, WorkflowRepository } from '@n8n/db';
import { Logger } from '@n8n/backend-common';
import { type ExecutionError } from 'n8n-workflow';
import { InstanceSettings } from 'n8n-core';
import { ActiveExecutions } from '../../active-executions';
import { CredentialsFinderService } from '../../credentials/credentials-finder.service';
import { CredentialsService } from '../../credentials/credentials.service';
import { EventService } from '../../events/event.service';
import { ExecutionPersistence } from '../../executions/execution-persistence';
import { License } from '../../license';
import { LoadNodesAndCredentials } from '../../load-nodes-and-credentials';
import { NodeTypes } from '../../node-types';
import { DataTableRepository } from '../../modules/data-table/data-table.repository';
import { DataTableService } from '../../modules/data-table/data-table.service';
import { SourceControlPreferencesService } from '../../modules/source-control.ee/source-control-preferences.service.ee';
import { DynamicNodeParametersService } from '../../services/dynamic-node-parameters.service';
import { FolderService } from '../../services/folder.service';
import { ProjectService } from '../../services/project.service.ee';
import { RoleService } from '../../services/role.service';
import { SsrfProtectionService } from '../../services/ssrf/ssrf-protection.service';
import { TagService } from '../../services/tag.service';
import { WorkflowFinderService } from '../../workflows/workflow-finder.service';
import { WorkflowHistoryService } from '../../workflows/workflow-history/workflow-history.service';
import { WorkflowService } from '../../workflows/workflow.service';
import { EnterpriseWorkflowService } from '../../workflows/workflow.service.ee';
import { Telemetry } from '../../telemetry';
import { WorkflowRunner } from '../../workflow-runner';
export declare class InstanceAiAdapterService {
    private readonly workflowService;
    private readonly workflowFinderService;
    private readonly workflowRepository;
    private readonly sharedWorkflowRepository;
    private readonly projectRepository;
    private readonly executionRepository;
    private readonly credentialsService;
    private readonly credentialsFinderService;
    private readonly activeExecutions;
    private readonly workflowRunner;
    private readonly loadNodesAndCredentials;
    private readonly nodeTypes;
    private readonly instanceSettings;
    private readonly dataTableService;
    private readonly dataTableRepository;
    private readonly dynamicNodeParametersService;
    private readonly folderService;
    private readonly projectService;
    private readonly tagService;
    private readonly sourceControlPreferencesService;
    private readonly settingsService;
    private readonly workflowHistoryService;
    private readonly enterpriseWorkflowService;
    private readonly license;
    private readonly executionPersistence;
    private readonly eventService;
    private readonly roleService;
    private readonly telemetry;
    private readonly aiBuilderTemporaryWorkflowRepository;
    private readonly ssrfProtectionService;
    private readonly logger;
    private readonly allowSendingParameterValues;
    private nodesCache;
    private readonly NODES_CACHE_TTL_MS;
    private getNodesFromCache;
    constructor(logger: Logger, globalConfig: GlobalConfig, workflowService: WorkflowService, workflowFinderService: WorkflowFinderService, workflowRepository: WorkflowRepository, sharedWorkflowRepository: SharedWorkflowRepository, projectRepository: ProjectRepository, executionRepository: ExecutionRepository, credentialsService: CredentialsService, credentialsFinderService: CredentialsFinderService, activeExecutions: ActiveExecutions, workflowRunner: WorkflowRunner, loadNodesAndCredentials: LoadNodesAndCredentials, nodeTypes: NodeTypes, instanceSettings: InstanceSettings, dataTableService: DataTableService, dataTableRepository: DataTableRepository, dynamicNodeParametersService: DynamicNodeParametersService, folderService: FolderService, projectService: ProjectService, tagService: TagService, sourceControlPreferencesService: SourceControlPreferencesService, settingsService: InstanceAiSettingsService, workflowHistoryService: WorkflowHistoryService, enterpriseWorkflowService: EnterpriseWorkflowService, license: License, executionPersistence: ExecutionPersistence, eventService: EventService, roleService: RoleService, telemetry: Telemetry, aiBuilderTemporaryWorkflowRepository: AiBuilderTemporaryWorkflowRepository, ssrfProtectionService: SsrfProtectionService);
    createContext(user: User, options?: {
        searchProxyConfig?: ServiceProxyConfig;
        pushRef?: string;
        threadId?: string;
    }): InstanceAiContext;
    private buildLicenseHints;
    private assertInstanceNotReadOnly;
    private createProjectScopeHelpers;
    private createWorkflowAdapter;
    private createExecutionAdapter;
    private createCredentialAdapter;
    private createDataTableAdapter;
    private readonly webResearchCache;
    private readonly searchCache;
    private createWebResearchAdapter;
    private buildSearchMethod;
    private _nodeDefinitionDirs?;
    getNodeDefinitionDirs(): string[];
    private createNodeAdapter;
    private createWorkspaceAdapter;
}
interface DataTableRecord {
    id: string;
    name: string;
    projectId: string;
}
interface DataTableIdOrNameRepository {
    findOneBy: (where: {
        id: string;
    }) => Promise<DataTableRecord | null>;
    findBy: (where: {
        name: string;
        projectId?: string;
    }) => Promise<DataTableRecord[]>;
}
interface DataTableResolverLogger {
    warn: (message: string, meta?: Record<string, unknown>) => void;
}
export type ResolveDataTableResult = {
    kind: 'hit';
    table: DataTableRecord;
} | {
    kind: 'miss';
} | {
    kind: 'ambiguous';
    candidates: DataTableRecord[];
};
export declare function resolveDataTableByIdOrName(repository: DataTableIdOrNameRepository, logger: DataTableResolverLogger, idOrName: string, options?: {
    projectIdFilter?: string;
    accessFilter?: (id: string) => Promise<boolean>;
}): Promise<ResolveDataTableResult>;
export declare function truncateResultData(resultData: Record<string, unknown>): Record<string, unknown>;
export declare function extractExecutionResult(executionRepository: ExecutionRepository, executionId: string, includeOutputData?: boolean): Promise<ExecutionResult>;
export declare function formatExecutionError(error: ExecutionError, includeUpstreamDetails: boolean): string;
export declare function truncateNodeOutput(items: unknown[]): unknown[] | unknown;
export declare function extractNodeOutput(executionRepository: ExecutionRepository, executionId: string, nodeName: string, options?: {
    startIndex?: number;
    maxItems?: number;
}): Promise<NodeOutputResult>;
export declare function extractExecutionDebugInfo(executionRepository: ExecutionRepository, executionId: string, includeOutputData?: boolean): Promise<ExecutionDebugInfo>;
export {};
