import * as plugins from '../plugins.js';
import * as data from '../data/index.js';
import * as userInterfaces from '../data/user.js';

export interface IReq_GetSecretBundles extends plugins.typedrequestInterfaces.implementsTR<
  plugins.typedrequestInterfaces.ITypedRequest,
  IReq_GetSecretBundles
> {
  method: 'getSecretBundles';
  request: {
    identity: userInterfaces.IIdentity;
  };
  response: {
    secretBundles: data.ISecretBundle[];
  };

}

export interface IReq_GetSecretBundleById extends plugins.typedrequestInterfaces.implementsTR<
  plugins.typedrequestInterfaces.ITypedRequest,
  IReq_GetSecretBundleById
> {
  method: 'getSecretBundleById';
  request: {
    identity: userInterfaces.IIdentity;
    secretBundleId: string;
  };
  response: {
    secretBundle: data.ISecretBundle;
  };

}

export interface IReq_CreateSecretBundle extends plugins.typedrequestInterfaces.implementsTR<
  plugins.typedrequestInterfaces.ITypedRequest,
  IReq_CreateSecretBundle
> {
  method: 'createSecretBundle';
  request: {
    identity: userInterfaces.IIdentity;
    secretBundle: data.ISecretBundle;
  };
  response: {
    resultSecretBundle: data.ISecretBundle;
  };
}

export interface IReq_UpdateSecretBundle extends plugins.typedrequestInterfaces.implementsTR<
  plugins.typedrequestInterfaces.ITypedRequest,
  IReq_UpdateSecretBundle
> {
  method: 'updateSecretBundle';
  request: {
    identity: userInterfaces.IIdentity;
    secretBundle: data.ISecretBundle;
  };
  response: {
    resultSecretBundle: data.ISecretBundle;
  };
}

export interface IReq_DeleteSecretBundleById extends plugins.typedrequestInterfaces.implementsTR<
  plugins.typedrequestInterfaces.ITypedRequest,
  IReq_DeleteSecretBundleById
> {
  method: 'deleteSecretBundleById';
  request: {
    identity: userInterfaces.IIdentity;
    secretBundleId: string;
  };
  response: {
    ok: boolean;
  };
}

export interface IReq_GetSecretBundleByAuthorization extends plugins.typedrequestInterfaces.implementsTR<
  plugins.typedrequestInterfaces.ITypedRequest,
  IReq_GetSecretBundleByAuthorization
> {
  method: 'getSecretBundleByAuthorization';
  request: {
    identity: userInterfaces.IIdentity;
    secretBundleAuthorization: data.ISecretBundleAuthorization;
  };
  response: {
    secretBundle: data.ISecretBundle;
  };
}

export interface IReq_GetFlatKeyValueObject extends plugins.typedrequestInterfaces.implementsTR<
  plugins.typedrequestInterfaces.ITypedRequest,
  IReq_GetFlatKeyValueObject
> {
  method: 'getFlatKeyValueObject';
  request: {
    identity: userInterfaces.IIdentity;
    seccretBundleId: string;
    secretBundleAuthorization: data.ISecretBundleAuthorization;
  };
  response: {
    flatKeyValueObject: {[key: string]: string};
  };
}
