import * as plugins from '../plugins.js';
import type * as authInterfaces from '../data/auth.js';
import type { ISourceProfile, IRouteSecurity } from '../data/route-management.js';
/**
 * Get all source profiles.
 */
export interface IReq_GetSourceProfiles extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_GetSourceProfiles> {
    method: 'getSourceProfiles';
    request: {
        identity?: authInterfaces.IIdentity;
        apiToken?: string;
    };
    response: {
        profiles: ISourceProfile[];
    };
}
/**
 * Get a single source profile by ID.
 */
export interface IReq_GetSourceProfile extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_GetSourceProfile> {
    method: 'getSourceProfile';
    request: {
        identity?: authInterfaces.IIdentity;
        apiToken?: string;
        id: string;
    };
    response: {
        profile: ISourceProfile | null;
    };
}
/**
 * Create a new source profile.
 */
export interface IReq_CreateSourceProfile extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_CreateSourceProfile> {
    method: 'createSourceProfile';
    request: {
        identity?: authInterfaces.IIdentity;
        apiToken?: string;
        name: string;
        description?: string;
        security: IRouteSecurity;
        extendsProfiles?: string[];
    };
    response: {
        success: boolean;
        id?: string;
        message?: string;
    };
}
/**
 * Update a source profile.
 */
export interface IReq_UpdateSourceProfile extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_UpdateSourceProfile> {
    method: 'updateSourceProfile';
    request: {
        identity?: authInterfaces.IIdentity;
        apiToken?: string;
        id: string;
        name?: string;
        description?: string;
        security?: IRouteSecurity;
        extendsProfiles?: string[];
    };
    response: {
        success: boolean;
        affectedRouteCount?: number;
        message?: string;
    };
}
/**
 * Delete a source profile.
 */
export interface IReq_DeleteSourceProfile extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_DeleteSourceProfile> {
    method: 'deleteSourceProfile';
    request: {
        identity?: authInterfaces.IIdentity;
        apiToken?: string;
        id: string;
        force?: boolean;
    };
    response: {
        success: boolean;
        message?: string;
    };
}
/**
 * Get which routes reference a source profile.
 */
export interface IReq_GetSourceProfileUsage extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_GetSourceProfileUsage> {
    method: 'getSourceProfileUsage';
    request: {
        identity?: authInterfaces.IIdentity;
        apiToken?: string;
        id: string;
    };
    response: {
        routes: Array<{
            id: string;
            name: string;
        }>;
    };
}
