import * as plugins from '../plugins.js';
import type * as authInterfaces from '../data/auth.js';
import type { IMergedRoute, IRouteWarning, IRouteMetadata } from '../data/route-management.js';
import type { IRouteConfig } from '@push.rocks/smartproxy';
/**
 * Get all merged routes (hardcoded + programmatic) with warnings.
 */
export interface IReq_GetMergedRoutes extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_GetMergedRoutes> {
    method: 'getMergedRoutes';
    request: {
        identity?: authInterfaces.IIdentity;
        apiToken?: string;
    };
    response: {
        routes: IMergedRoute[];
        warnings: IRouteWarning[];
    };
}
/**
 * Create a new programmatic route.
 */
export interface IReq_CreateRoute extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_CreateRoute> {
    method: 'createRoute';
    request: {
        identity?: authInterfaces.IIdentity;
        apiToken?: string;
        route: IRouteConfig;
        enabled?: boolean;
        metadata?: IRouteMetadata;
    };
    response: {
        success: boolean;
        storedRouteId?: string;
        message?: string;
    };
}
/**
 * Update a programmatic route.
 */
export interface IReq_UpdateRoute extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_UpdateRoute> {
    method: 'updateRoute';
    request: {
        identity?: authInterfaces.IIdentity;
        apiToken?: string;
        id: string;
        route?: Partial<IRouteConfig>;
        enabled?: boolean;
        metadata?: Partial<IRouteMetadata>;
    };
    response: {
        success: boolean;
        message?: string;
    };
}
/**
 * Delete a programmatic route.
 */
export interface IReq_DeleteRoute extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_DeleteRoute> {
    method: 'deleteRoute';
    request: {
        identity?: authInterfaces.IIdentity;
        apiToken?: string;
        id: string;
    };
    response: {
        success: boolean;
        message?: string;
    };
}
/**
 * Set an override on a hardcoded route (disable/enable by name).
 */
export interface IReq_SetRouteOverride extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_SetRouteOverride> {
    method: 'setRouteOverride';
    request: {
        identity?: authInterfaces.IIdentity;
        apiToken?: string;
        routeName: string;
        enabled: boolean;
    };
    response: {
        success: boolean;
        message?: string;
    };
}
/**
 * Remove an override from a hardcoded route (restore default behavior).
 */
export interface IReq_RemoveRouteOverride extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_RemoveRouteOverride> {
    method: 'removeRouteOverride';
    request: {
        identity?: authInterfaces.IIdentity;
        apiToken?: string;
        routeName: string;
    };
    response: {
        success: boolean;
        message?: string;
    };
}
/**
 * Toggle a programmatic route on/off by id.
 */
export interface IReq_ToggleRoute extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_ToggleRoute> {
    method: 'toggleRoute';
    request: {
        identity?: authInterfaces.IIdentity;
        apiToken?: string;
        id: string;
        enabled: boolean;
    };
    response: {
        success: boolean;
        message?: string;
    };
}
