import { ImportMemberRequest } from './dto/ImportMemberRequest';
import { ChangeOrganisationDomainRequest } from './dto/ChangeOrganisationDomain';
import { CloneOrganisationRequest } from './dto/CloneOrganisation';
import { RemoveOrganisationAdminRequest } from './dto/RemoveOrganisationAdminRequest';
import { Config, Context, FormModel, Invitation, MeetingGoalConfig, Organisation, User } from './models';
interface ListResponse<T> {
  results: Array<T>;
  meta: {
    count: number;
    skipped: number;
    total: number;
  };
}
export interface CreateItemResponse {
  _id: string;
  createdAt: number;
  updatedAt: number;
}
export declare class MentornityApi {
  private api;
  constructor(endpoint: string, defaultHeaders?: object);
  create: (collection: string, body: object) => Promise<unknown>;
  find: (collection: string, params?: object) => Promise<unknown>;
  get: (collection: string, id: string, params?: object) => Promise<unknown>;
  update: (collection: string, id: string, body: object) => Promise<unknown>;
  delete: (collection: string, id: string) => Promise<unknown>;
  /**
   * Used to gets session data. Returns only white label info if there is no account.
   *
   * @param domain of the current web site. (used to determine the white label)
   */
  getSessionData: (domain: string) => Promise<{
    contexts: Context[];
  }>;
  getOrganisation: (organisationId: string) => Promise<Organisation>;
  getOrganisationConfig: (organisationId: string) => Promise<Config>;
  getOrganisationMeetingGoalConfig: (organisationId: string) => Promise<MeetingGoalConfig>;
  createInvitation: (data: Invitation) => Promise<CreateItemResponse>;
  getMentees: (organisationId: string, query?: {}, skip?: number, sort?: string, limit?: number) => Promise<ListResponse<User>>;
  getMentors: (organisationId: string, query?: {}, skip?: number, sort?: string, limit?: number) => Promise<ListResponse<User>>;
  getMentorshipOfUser: (organisationId: string, userId: string) => Promise<ListResponse<User>>;
  getMembershipApplicationForm: (organisationId: string, role: string) => Promise<FormModel>;
  createMembershipApplication: (organisationId: string, role: string, data: any) => Promise<CreateItemResponse>;
  getMetadataOfUser: (organisationId: string, role: string, userId: string) => Promise<ListResponse<User>>;
  getOrganisations: (query?: {}, skip?: number, sort?: string, limit?: number) => Promise<ListResponse<Organisation>>;
  getSubscriptionsOfMentors: (id: string, query?: {}, skip?: number, sort?: string, limit?: number) => Promise<ListResponse<User>>;
  completeSubscription: (subscriptionId: string) => Promise<unknown>;
  deleteSubscription: (subscriptionId: string) => Promise<unknown>;
  getMeetingsInMeetingGoal: (id: string, query?: {}, skip?: number, sort?: string, limit?: number) => Promise<ListResponse<Event>>;
  cloneOrganisation(body: CloneOrganisationRequest): Promise<unknown>;
  importUser(id: string, userType: 'admins' | 'mentees' | 'mentors', body: ImportMemberRequest): Promise<CreateItemResponse>;
  removeOrganisationAdmin(userId: string, body: RemoveOrganisationAdminRequest): Promise<unknown>;
  changeOrganisationDomain({ domain, organisationId }: ChangeOrganisationDomainRequest): Promise<unknown>;
}
export {};
