import { PrismaClient } from "@prisma/client";
import { Client as LDAPClient } from "ldapts";
import { ApolloClient, InMemoryCache } from "@apollo/client";
import { LLDAPAuthResponse } from "@/ldap";
import { Logger } from "pino";

declare global {
  var prisma: PrismaClient | undefined;
  var ldapClient: LDAPClient | undefined;
  var authResponse: LLDAPAuthResponse | undefined;
  var logger: Logger;

  namespace NodeJS {
    interface ProcessEnv {
      DISCORD_CLIENT_ID: string;
      DISCORD_CLIENT_SECRET: string;
      DISCORD_ALLOWED_GUILDS: string;

      LDAP_HOST: string;
      LDAP_DC: string;
      LDAP_BIND_USER: string;
      LDAP_BIND_PASSWORD: string;

      GITHUB_CLIENT_ID: string;
      GITHUB_CLIENT_SECRET: string;
      GITHUB_TOKEN: string;
      GITHUB_ORG: string;

      BASE_DOMAIN: string;
    }
  }
}

export {};
