import * as plugins from '../plugins.js';
import type { IService } from '../data/service.js';
import type { IIdentity } from '../data/user.js';
import type { IServiceRessources } from '../data/docker.js';

export interface IRequest_Any_Cloudly_GetServiceById 
extends plugins.typedrequestInterfaces.implementsTR<
  plugins.typedrequestInterfaces.ITypedRequest,
  IRequest_Any_Cloudly_GetServiceById
> {
  method: 'getServiceById';
  request: {
    identity: IIdentity;
    serviceId: string;
  };
  response: {
    service: IService;
  };
}

export interface IRequest_Any_Cloudly_GetServices
extends plugins.typedrequestInterfaces.implementsTR<
  plugins.typedrequestInterfaces.ITypedRequest,
  IRequest_Any_Cloudly_GetServices
> {
  method: 'getServices';
  request: {
    identity: IIdentity;
  };
  response: {
    services: IService[];
  };
}

export interface IRequest_Any_Cloudly_CreateService
extends plugins.typedrequestInterfaces.implementsTR<
  plugins.typedrequestInterfaces.ITypedRequest,
  IRequest_Any_Cloudly_CreateService
> {
  method: 'createService';
  request: {
    identity: IIdentity;
    serviceData: IService['data'];
  };
  response: {
    service: IService;
  };
}

export interface IRequest_Any_Cloudly_UpdateService
extends plugins.typedrequestInterfaces.implementsTR<
  plugins.typedrequestInterfaces.ITypedRequest,
  IRequest_Any_Cloudly_UpdateService
> {
  method: 'updateService';
  request: {
    identity: IIdentity;
    serviceId: string;
    serviceData: IService['data'];
  };
  response: {
    service: IService;
  };
}

export interface IRequest_Any_Cloudly_DeleteServiceById
extends plugins.typedrequestInterfaces.implementsTR<
  plugins.typedrequestInterfaces.ITypedRequest,
  IRequest_Any_Cloudly_DeleteServiceById
> {
  method: 'deleteServiceById';
  request: {
    identity: IIdentity;
    serviceId: string;
  };
  response: {
    success: boolean;
  };
}

export interface IRequest_Any_Cloudly_GetServiceSecretBundlesAsFlatObject
extends plugins.typedrequestInterfaces.implementsTR<
  plugins.typedrequestInterfaces.ITypedRequest,
  IRequest_Any_Cloudly_GetServiceSecretBundlesAsFlatObject
> {
  method: 'getServiceSecretBundlesAsFlatObject';
  request: {
    identity: IIdentity;
    serviceId: string;
    environment: string;
  };
  response: {
    flatKeyValueObject: {[key: string]: string};
  };
}
