import * as plugins from '../plugins.js';
import type * as authInterfaces from '../data/auth.js';
import type { INetworkTarget } from '../data/route-management.js';
/**
 * Get all network targets.
 */
export interface IReq_GetNetworkTargets extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_GetNetworkTargets> {
    method: 'getNetworkTargets';
    request: {
        identity?: authInterfaces.IIdentity;
        apiToken?: string;
    };
    response: {
        targets: INetworkTarget[];
    };
}
/**
 * Get a single network target by ID.
 */
export interface IReq_GetNetworkTarget extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_GetNetworkTarget> {
    method: 'getNetworkTarget';
    request: {
        identity?: authInterfaces.IIdentity;
        apiToken?: string;
        id: string;
    };
    response: {
        target: INetworkTarget | null;
    };
}
/**
 * Create a new network target.
 */
export interface IReq_CreateNetworkTarget extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_CreateNetworkTarget> {
    method: 'createNetworkTarget';
    request: {
        identity?: authInterfaces.IIdentity;
        apiToken?: string;
        name: string;
        description?: string;
        host: string | string[];
        port: number;
    };
    response: {
        success: boolean;
        id?: string;
        message?: string;
    };
}
/**
 * Update a network target.
 */
export interface IReq_UpdateNetworkTarget extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_UpdateNetworkTarget> {
    method: 'updateNetworkTarget';
    request: {
        identity?: authInterfaces.IIdentity;
        apiToken?: string;
        id: string;
        name?: string;
        description?: string;
        host?: string | string[];
        port?: number;
    };
    response: {
        success: boolean;
        affectedRouteCount?: number;
        message?: string;
    };
}
/**
 * Delete a network target.
 */
export interface IReq_DeleteNetworkTarget extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_DeleteNetworkTarget> {
    method: 'deleteNetworkTarget';
    request: {
        identity?: authInterfaces.IIdentity;
        apiToken?: string;
        id: string;
        force?: boolean;
    };
    response: {
        success: boolean;
        message?: string;
    };
}
/**
 * Get which routes reference a network target.
 */
export interface IReq_GetNetworkTargetUsage extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_GetNetworkTargetUsage> {
    method: 'getNetworkTargetUsage';
    request: {
        identity?: authInterfaces.IIdentity;
        apiToken?: string;
        id: string;
    };
    response: {
        routes: Array<{
            id: string;
            name: string;
        }>;
    };
}
