import { IExecuteFunctions, ILoadOptionsFunctions } from 'n8n-workflow';
import { AirCredentials } from '../../../../credentials/AirApi.credentials';
export interface InterACTSession {
    _id: string;
    sessionId: string;
    endpointId: string;
    status: string;
    createdAt: string;
    createdBy: string;
    updatedAt: string;
    lastActivity: string;
}
export interface InterACTCommand {
    _id: string;
    sessionId: string;
    command: string;
    status: string;
    result?: string;
    output?: string;
    error?: string;
    executedAt: string;
    completedAt?: string;
}
export interface InterACTMessage {
    _id: string;
    messageId: string;
    sessionId: string;
    type: string;
    content: string;
    timestamp: string;
    status: string;
}
export interface ExecuteCommandRequest {
    command: string;
    timeout?: number;
    workingDirectory?: string;
    environment?: Record<string, string>;
}
export interface ExecuteCommandResponse {
    success: boolean;
    result: {
        messageId: string;
        command?: string;
        status?: string;
        output?: string;
        error?: string;
        session?: {
            id: string;
        };
        exitCode?: number;
        cwd?: string;
        body?: string;
    };
    statusCode: number;
    errors: string[];
}
export interface ExecuteAsyncCommandRequest {
    command: string;
    timeout?: number;
    workingDirectory?: string;
    environment?: Record<string, string>;
}
export interface ExecuteAsyncCommandResponse {
    success: boolean;
    result: {
        messageId: string;
        command: string;
        status: string;
        jobId: string;
    };
    statusCode: number;
    errors: string[];
}
export interface InterruptCommandResponse {
    success: boolean;
    result: {
        messageId: string;
        status: string;
        message: string;
    };
    statusCode: number;
    errors: string[];
}
export interface CloseSessionResponse {
    success: boolean;
    result: {
        sessionId: string;
        status: string;
        message: string;
    };
    statusCode: number;
    errors: string[];
}
export interface GetCommandMessageResponse {
    success: boolean;
    result: InterACTMessage & {
        output?: string;
        error?: string;
        exitCode?: number;
    };
    statusCode: number;
    errors: string[];
}
export interface AssignInterACTTaskRequest {
    sessionType: string;
    commands?: string[];
    timeout?: number;
    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?: (string | number)[];
    };
}
export interface CreateInterACTSessionRequest {
    assetId: string;
    caseId?: string | null;
    taskConfig: {
        choice: string;
    };
}
export interface AssignInterACTTaskResponse {
    success: boolean;
    result: Array<{
        _id: string;
        name: string;
        sessionId: string;
        endpointId: string;
        organizationId: number;
        loginUrl?: string;
        shellUrl?: string;
        reportUrl?: string;
    }>;
    statusCode: number;
    errors: string[];
}
export interface CreateInterACTSessionResponse {
    success: boolean;
    result: {
        id: string;
        type: string;
        data: {
            sessionId: string;
            idleTimeout: number;
            config: any;
            privileges: string[];
        };
        assetId: string;
        loginUrl: string;
        shellUrl: string;
        reportUrl: string;
    };
    statusCode: number;
    errors: string[];
}
export declare const api: {
    executeCommand(context: IExecuteFunctions | ILoadOptionsFunctions, credentials: AirCredentials, sessionId: string, data: ExecuteCommandRequest): Promise<ExecuteCommandResponse>;
    executeAsyncCommand(context: IExecuteFunctions | ILoadOptionsFunctions, credentials: AirCredentials, sessionId: string, data: ExecuteAsyncCommandRequest): Promise<ExecuteAsyncCommandResponse>;
    interruptCommand(context: IExecuteFunctions | ILoadOptionsFunctions, credentials: AirCredentials, sessionId: string, messageId: string): Promise<InterruptCommandResponse>;
    closeSession(context: IExecuteFunctions | ILoadOptionsFunctions, credentials: AirCredentials, sessionId: string): Promise<CloseSessionResponse>;
    getCommandMessage(context: IExecuteFunctions | ILoadOptionsFunctions, credentials: AirCredentials, sessionId: string, messageId: string): Promise<GetCommandMessageResponse>;
    assignInterACTTask(context: IExecuteFunctions | ILoadOptionsFunctions, credentials: AirCredentials, data: AssignInterACTTaskRequest): Promise<AssignInterACTTaskResponse>;
    createInterACTSession(context: IExecuteFunctions | ILoadOptionsFunctions, credentials: AirCredentials, data: CreateInterACTSessionRequest): Promise<CreateInterACTSessionResponse>;
};
