import { type ExecutionResult } from "../../editor/services/serviceHelper";
import type { AddProjectDependencyRequest, ApplyDecisionRequest, AddMemberRequest, AddTaskCommentRequest, DeleteTaskCommentRequest, AddTaskDependencyRequest, ProjectDependency, RemoveTaskDependencyRequest, RemoveProjectDependencyRequest, CreateProjectRequest, CreateTaskRequest, DeleteProjectPropertyRequest, ProjectTemplateAgentSession, ProjectTemplate, UpsertProjectTemplateRequest, ProjectMember, PersistentLogsAdminFilters, PersistentLogsAdminResponse, ProjectProperty, ProjectWithPermission, TaskAttachment, WizardGuidanceResponse, TaskAssignableUser, TaskComment, TaskDependency, TaskGraphLayout, TaskExecutionRecord, TaskExecutionStateRequest, TaskItem, TaskboardPersistentLogsResponse, SaveTaskGraphLayoutRequest, UpdateProjectRequest, UpdateTaskRequest, UploadTaskAttachmentRequest, UpsertProjectPropertiesRequest } from "../types";
export declare function getProjects(options?: {
    includeAll?: boolean;
}): Promise<ExecutionResult<ProjectWithPermission[]>>;
export declare function createProject(data: CreateProjectRequest): Promise<ExecutionResult<ProjectWithPermission>>;
export declare function deleteProject(projectId: string): Promise<ExecutionResult<{
    success: boolean;
}>>;
export declare function restartProject(projectId: string): Promise<ExecutionResult<{
    success: boolean;
}>>;
export declare function updateProject(data: UpdateProjectRequest): Promise<ExecutionResult<ProjectWithPermission>>;
export declare function getProject(projectId: string): Promise<ExecutionResult<ProjectWithPermission>>;
export declare function getProjectTemplates(options?: {
    includeDisabled?: boolean;
}): Promise<ExecutionResult<ProjectTemplate[]>>;
export declare function getProjectTemplate(projectTemplateId: string): Promise<ExecutionResult<ProjectTemplate>>;
export declare function upsertProjectTemplate(data: UpsertProjectTemplateRequest): Promise<ExecutionResult<ProjectTemplate>>;
export declare function deleteProjectTemplate(projectTemplateId: string): Promise<ExecutionResult<{
    success: boolean;
}>>;
export declare function getProjectTemplateAgent(projectTemplateId: string): Promise<ExecutionResult<ProjectTemplateAgentSession>>;
export declare function resetProjectTemplateAgent(projectTemplateId: string): Promise<ExecutionResult<ProjectTemplateAgentSession>>;
export declare function getProjectProperties(projectId: string): Promise<ExecutionResult<ProjectProperty[]>>;
export declare function upsertProjectProperties(data: UpsertProjectPropertiesRequest): Promise<ExecutionResult<ProjectProperty[]>>;
export declare function deleteProjectProperty(data: DeleteProjectPropertyRequest): Promise<ExecutionResult<ProjectProperty[]>>;
export type CreateItemCollectionRequest = {
    name?: string;
    items: Array<{
        descriptor: {
            id: string;
            language: string;
            version?: number;
        };
        includeSubitems: boolean;
    }>;
};
export type ItemCollectionSummary = {
    name: string | null;
    itemCount: number;
    itemNames: string[];
    hasMore: boolean;
};
export declare function getItemCollectionSummary(collectionId: string): Promise<ExecutionResult<ItemCollectionSummary>>;
export type ItemCollectionDetailItem = {
    itemId: string;
    language: string;
    includeSubitems: boolean;
};
export type ItemCollectionDetails = {
    name: string | null;
    items: ItemCollectionDetailItem[];
};
export declare function getItemCollectionDetails(collectionId: string): Promise<ExecutionResult<ItemCollectionDetails>>;
export type UpdateItemCollectionRequest = {
    collectionId: string;
    name?: string | null;
    items: Array<{
        descriptor: {
            id: string;
            language: string;
            version?: number;
        };
        includeSubitems: boolean;
    }>;
};
export declare function updateItemCollection(data: UpdateItemCollectionRequest): Promise<ExecutionResult<{
    collectionId: string;
}>>;
export type CreateItemCollectionResponse = {
    collectionId: string;
};
export declare function createItemCollection(data: CreateItemCollectionRequest): Promise<ExecutionResult<CreateItemCollectionResponse>>;
export declare function getProjectMembers(projectId: string): Promise<ExecutionResult<ProjectMember[]>>;
export declare function addProjectMember(data: AddMemberRequest): Promise<ExecutionResult<ProjectMember>>;
export declare function searchTaskAssignableUsers(projectId: string, query: string, limit?: number): Promise<ExecutionResult<TaskAssignableUser[]>>;
export declare function searchTemplateAssignableUsers(projectTemplateId: string, query: string, limit?: number): Promise<ExecutionResult<TaskAssignableUser[]>>;
export declare function removeProjectMember(memberId: string): Promise<ExecutionResult<{
    success: boolean;
}>>;
export declare function getTasks(projectId: string): Promise<ExecutionResult<TaskItem[]>>;
export type MyTaskListItem = {
    task: TaskItem;
    projectTitle: string | null;
};
export declare function getMyTasks(options?: {
    excludeDone?: boolean;
}): Promise<ExecutionResult<MyTaskListItem[]>>;
export declare function getExecutionState(data: TaskExecutionStateRequest): Promise<ExecutionResult<{
    records: TaskExecutionRecord[];
}>>;
export declare function getProjectPersistentLogs(projectId: string, options?: {
    taskId?: string | null;
    limit?: number;
}): Promise<ExecutionResult<TaskboardPersistentLogsResponse>>;
export declare function getTaskPersistentLogs(taskId: string, options?: {
    limit?: number;
}): Promise<ExecutionResult<TaskboardPersistentLogsResponse>>;
export declare function getPersistentLogsAdmin(filters?: PersistentLogsAdminFilters): Promise<ExecutionResult<PersistentLogsAdminResponse>>;
export declare function purgePersistentLogs(): Promise<ExecutionResult<{
    success: boolean;
}>>;
export declare function createTask(data: CreateTaskRequest): Promise<ExecutionResult<TaskItem>>;
export declare function updateTask(data: UpdateTaskRequest): Promise<ExecutionResult<{
    success: boolean;
}>>;
export declare function applyDecision(data: ApplyDecisionRequest): Promise<ExecutionResult<TaskItem>>;
export declare function deleteTask(taskId: string): Promise<ExecutionResult<{
    success: boolean;
}>>;
export declare function addComment(data: AddTaskCommentRequest): Promise<ExecutionResult<TaskComment>>;
export declare function deleteComment(data: DeleteTaskCommentRequest): Promise<ExecutionResult<{
    success: boolean;
}>>;
export declare function getDependencies(projectId: string): Promise<ExecutionResult<TaskDependency[]>>;
export declare function getGraphLayout(projectId: string): Promise<ExecutionResult<TaskGraphLayout>>;
export declare function saveGraphLayout(data: SaveTaskGraphLayoutRequest): Promise<ExecutionResult<TaskGraphLayout>>;
export declare function addDependency(data: AddTaskDependencyRequest): Promise<ExecutionResult<TaskDependency>>;
export declare function removeDependency(data: RemoveTaskDependencyRequest): Promise<ExecutionResult<{
    removedCount: number;
}>>;
export declare function getProjectDependencies(projectId: string): Promise<ExecutionResult<ProjectDependency[]>>;
export declare function addProjectDependency(data: AddProjectDependencyRequest): Promise<ExecutionResult<ProjectDependency>>;
export declare function removeProjectDependency(data: RemoveProjectDependencyRequest): Promise<ExecutionResult<{
    removedCount: number;
}>>;
export declare function uploadAttachment(data: UploadTaskAttachmentRequest): Promise<ExecutionResult<TaskAttachment>>;
export declare function getAttachments(taskId: string): Promise<ExecutionResult<TaskAttachment[]>>;
export declare function uploadAttachmentFile(taskId: string, file: File): Promise<ExecutionResult<TaskAttachment>>;
export declare function getAttachmentDownloadUrl(attachmentId: string): string;
export declare function deleteAttachment(attachmentId: string): Promise<ExecutionResult<{
    success: boolean;
}>>;
export interface OrchestratorStatus {
    projectId: string;
    costLimit: number | null;
    costUsed: number;
    runningAgentCount: number;
    queuedTaskCount: number;
    runnableTaskCount: number;
    costLimitReached: boolean;
    concurrencyLimitReached: boolean;
}
export interface OrchestratorResult {
    projectId: string;
    tasksDispatched: string[];
    tasksLaunched: string[];
    errors: string[];
    costLimitReached: boolean;
}
export declare function getOrchestratorStatus(projectId: string): Promise<ExecutionResult<OrchestratorStatus>>;
export declare function runOrchestrator(projectId: string): Promise<ExecutionResult<OrchestratorResult>>;
export declare function triggerPlanning(projectId: string): Promise<ExecutionResult<{
    success: boolean;
}>>;
export declare function getWizardGuidance(projectId: string, selectedTaskId?: string | null): Promise<ExecutionResult<WizardGuidanceResponse>>;
