import * as OAuthServer from "oauth2-server";
import * as express from "express";
import { TokenUser, Base, NoderedUtil, User } from "@openiap/openflow-api";
import { Config } from "./Config";
import { Crypt } from "./Crypt";
const fs = require("fs");
import { Provider, KoaContextWithOIDC } from "oidc-provider";
import { MongoAdapter } from "./MongoAdapter";
import { DBHelper } from "./DBHelper";
import { Span } from "@opentelemetry/api";
import { Logger } from "./Logger";
// import * as Provider from "oidc-provider";
const Request = OAuthServer.Request;
const Response = OAuthServer.Response;
export class OAuthProvider {
private app: express.Express;
public static instance: OAuthProvider = null;
private clients = [];
private codes = {};
public oauthServer: any = null;
private authorizationCodeStore: any = {};
public oidc: Provider;
static async interactionsUrl(ctx: KoaContextWithOIDC, interaction): PromiseDo you want to sign-out from ${ctx.host}?
${form}