import * as data from '../data/index.js';
import * as plugins from '../loint-reception.plugins.js';

export interface IReq_GetOrganizationById
  extends plugins.typedRequestInterfaces.implementsTR<
    plugins.typedRequestInterfaces.ITypedRequest,
    IReq_GetOrganizationById
  > {
  method: 'getOrganizationById';
  request: {
    jwt: string;
    id: string;
  };
  response: {
    organization: data.IOrganization;
  };
}

export interface IReq_CreateOrganization
  extends plugins.typedRequestInterfaces.implementsTR<
    plugins.typedRequestInterfaces.ITypedRequest,
    IReq_CreateOrganization
  > {
  method: 'createOrganization';
  request: {
    jwt: string;
    userId: string;
    organizationName: string;
    organizationSlug: string;
    action: 'checkAvailability' | 'manifest';
  };
  response: {
    nameAvailable: boolean;
    resultingOrganization?: data.IOrganization;
    role?: data.IRole;
  };
}

export interface IReq_UpdateOrganization
  extends plugins.typedRequestInterfaces.implementsTR<
    plugins.typedRequestInterfaces.ITypedRequest,
    IReq_UpdateOrganization
  > {
  method: 'updateOrganization';
  request: {
    organization: data.IOrganization;
  };
  response: {
    organization: data.IOrganization;
  };
}
