import { IExecuteFunctions, ILoadOptionsFunctions } from 'n8n-workflow';
import { AirCredentials } from '../../../../credentials/AirApi.credentials';
export interface Case {
    _id: string;
    name: string;
    notes: any[];
    createdAt: string;
    updatedAt: string;
    ownerUserId: string;
    organizationId: number;
    status: 'open' | 'closed' | 'archived';
    startedOn: string;
    visibility: string;
    source: string;
    totalDays: number;
    totalEndpoints: number;
    assignedUserIds: string[];
    closedOn?: string;
}
export interface CasesResponse {
    success: boolean;
    result: {
        entities: Case[];
        filters: Array<{
            name: string;
            type: string;
            options: string[];
            filterUrl: string | null;
        }>;
        sortables: string[];
        totalEntityCount: number;
        currentPage: number;
        pageSize: number;
        previousPage: number;
        totalPageCount: number;
        nextPage: number;
    };
    statusCode: number;
    errors: string[];
}
export interface CaseActivity {
    _id: number;
    createdAt: string;
    updatedAt: string;
    type: string;
    performedBy: string;
    data: any;
    organizationIds: number[];
    description: string;
}
export interface CaseActivitiesResponse {
    success: boolean;
    result: {
        entities: CaseActivity[];
        filters: Array<{
            name: string;
            type: string;
            options: string[];
            filterUrl: string | null;
        }>;
        sortables: string[];
        totalEntityCount: number;
        currentPage: number;
        pageSize: number;
        previousPage: number;
        totalPageCount: number;
        nextPage: number;
    };
    statusCode: number;
    errors: string[];
}
export interface CaseEndpoint {
    platform: string;
    tags: string[];
    isolationStatus: string;
    _id: string;
    createdAt: string;
    updatedAt: string;
    organizationId: number;
    ipAddress: string;
    name: string;
    groupId: string;
    groupFullPath: string;
    os: string;
    isServer: boolean;
    isManaged: boolean;
    lastSeen: string;
    version: string;
    versionNo: number;
    registeredAt: string;
    securityToken: string;
    onlineStatus: string;
    issues: string[];
    label: string | null;
    waitingForVersionUpdateFix: boolean;
}
export interface CaseEndpointsResponse {
    success: boolean;
    result: {
        entities: CaseEndpoint[];
        filters: Array<{
            name: string;
            type: string;
            options: any[];
            filterUrl: string | null;
        }>;
        sortables: string[];
        totalEntityCount: number;
        currentPage: number;
        pageSize: number;
        previousPage: number;
        totalPageCount: number;
        nextPage: number;
    };
    statusCode: number;
    errors: string[];
}
export interface CaseTask {
    _id: string;
    taskId: string;
    name: string;
    type: string;
    endpointId: string;
    endpointName: string;
    organizationId: number;
    status: string;
    recurrence: string | null;
    progress: number;
    duration: number | null;
    caseIds: string[];
    isComparable: boolean;
    createdAt: string;
    updatedAt: string;
    response: any | null;
}
export interface CaseTasksResponse {
    success: boolean;
    result: {
        entities: CaseTask[];
        filters: Array<{
            name: string;
            type: string;
            options: string[];
            filterUrl: string | null;
        }>;
        sortables: string[];
        totalEntityCount: number;
        currentPage: number;
        pageSize: number;
        previousPage: number;
        totalPageCount: number;
        nextPage: number;
    };
    statusCode: number;
    errors: string[];
}
export interface UserProfile {
    name: string;
    surname: string;
    department: string;
}
export interface Role {
    _id: string;
    name: string;
    createdBy: string;
    tag: string;
    privilegeTypes: string[];
    createdAt: string;
    updatedAt: string;
}
export interface User {
    _id: string;
    email: string;
    username: string;
    organizationIds: number[] | string;
    strategy: string;
    profile: UserProfile;
    tfaEnabled: boolean;
    createdAt: string;
    updatedAt: string;
    roles: Role[];
}
export interface CaseUsersResponse {
    success: boolean;
    result: {
        entities: User[];
        filters: Array<{
            name: string;
            type: string;
            options: string[];
            filterUrl: string | null;
        }>;
        sortables: string[];
        totalEntityCount: number;
        currentPage: number;
        pageSize: number;
        previousPage: number;
        totalPageCount: number;
        nextPage: number;
    };
    statusCode: number;
    errors: string[];
}
export declare const api: {
    getCases(context: IExecuteFunctions | ILoadOptionsFunctions, credentials: AirCredentials, organizationIds?: string | string[], additionalParams?: {
        pageNumber?: number;
        pageSize?: number;
        status?: string;
        ownerUserId?: string;
        sortBy?: string;
        sortType?: string;
        searchTerm?: string;
    }): Promise<CasesResponse>;
    createCase(context: IExecuteFunctions | ILoadOptionsFunctions, credentials: AirCredentials, caseData: {
        organizationId: number;
        name: string;
        ownerUserId: string;
        visibility: string;
        assignedUserIds: string[];
    }): Promise<{
        success: boolean;
        result: Case;
        statusCode: number;
        errors: string[];
    }>;
    updateCase(context: IExecuteFunctions | ILoadOptionsFunctions, credentials: AirCredentials, id: string, updateData: Partial<{
        name: string;
        ownerUserId: string;
        visibility: string;
        status: "open" | "closed" | "archived";
        notes: any[];
        assignedUserIds: string[];
    }>): Promise<{
        success: boolean;
        result: Case;
        statusCode: number;
        errors: string[];
    }>;
    getCase(context: IExecuteFunctions | ILoadOptionsFunctions, credentials: AirCredentials, id: string): Promise<{
        success: boolean;
        result: Case;
        statusCode: number;
        errors: string[];
    }>;
    closeCase(context: IExecuteFunctions | ILoadOptionsFunctions, credentials: AirCredentials, id: string): Promise<{
        success: boolean;
        result: Case;
        statusCode: number;
        errors: string[];
    }>;
    openCase(context: IExecuteFunctions | ILoadOptionsFunctions, credentials: AirCredentials, id: string): Promise<{
        success: boolean;
        result: Case;
        statusCode: number;
        errors: string[];
    }>;
    archiveCase(context: IExecuteFunctions | ILoadOptionsFunctions, credentials: AirCredentials, id: string): Promise<{
        success: boolean;
        result: Case;
        statusCode: number;
        errors: string[];
    }>;
    changeOwner(context: IExecuteFunctions | ILoadOptionsFunctions, credentials: AirCredentials, id: string, newOwnerId: string): Promise<{
        success: boolean;
        result: Case;
        statusCode: number;
        errors: string[];
    }>;
    checkCaseName(context: IExecuteFunctions | ILoadOptionsFunctions, credentials: AirCredentials, name: string): Promise<{
        success: boolean;
        result: boolean;
        statusCode: number;
        errors: string[];
    }>;
    getCaseActivities(context: IExecuteFunctions | ILoadOptionsFunctions, credentials: AirCredentials, id: string): Promise<CaseActivitiesResponse>;
    getCaseEndpoints(context: IExecuteFunctions | ILoadOptionsFunctions, credentials: AirCredentials, id: string, organizationIds?: string | number): Promise<CaseEndpointsResponse>;
    getCaseTasksById(context: IExecuteFunctions | ILoadOptionsFunctions, credentials: AirCredentials, id: string, organizationIds?: string | number): Promise<CaseTasksResponse>;
    getCaseUsers(context: IExecuteFunctions | ILoadOptionsFunctions, credentials: AirCredentials, caseId: string, organizationIds?: string): Promise<CaseUsersResponse>;
    removeEndpointsFromCase(context: IExecuteFunctions | ILoadOptionsFunctions, credentials: AirCredentials, id: string, filter: {
        searchTerm?: string;
        name?: string;
        ipAddress?: string;
        groupId?: string;
        groupFullPath?: string;
        managedStatus?: string[];
        isolationStatus?: string[];
        platform?: string[];
        issue?: string;
        onlineStatus?: string[];
        tags?: string[];
        version?: string;
        policy?: string;
        includedEndpointIds?: string[];
        excludedEndpointIds?: string[];
        organizationIds?: number[];
    }): Promise<{
        success: boolean;
        result: null;
        statusCode: number;
        errors: string[];
    }>;
    removeTaskAssignmentFromCase(context: IExecuteFunctions | ILoadOptionsFunctions, credentials: AirCredentials, caseId: string, taskAssignmentId: string): Promise<{
        success: boolean;
        result: null;
        statusCode: number;
        errors: string[];
    }>;
    importTaskAssignmentsToCase(context: IExecuteFunctions | ILoadOptionsFunctions, credentials: AirCredentials, caseId: string, taskAssignmentIds: string[]): Promise<{
        success: boolean;
        result: null;
        statusCode: number;
        errors: string[];
    }>;
};
