import { Container } from "inversify";
import Renderer from "../renderer";
import { render } from "react-dom";
import { renderToString } from "react-dom/server";
import Core from "../classes/core";
import registry from "../classes/registry";
import {
  ICore,
  IRenderer,
  IRequire,
  IRenderOptions,
  IAuthOptionsDefaults,
} from "../interfaces";

import TYPES from "../types";

const container = new Container();

container.bind<IAuthOptionsDefaults>(TYPES.IAuthConfigDefaults).toConstantValue({
  host: "https://connect.lonelyplanet.com",
  options: {
    clientId: "foymu5r6sscxe",
    scope: [
      "openid",
    ],
  }
});
container.bind<ICore>(TYPES.ICore).to(Core);
container.bind<IRequire>(TYPES.IRequire).toFunction(registry);
container.bind<IRenderer>(TYPES.IRenderer).to(Renderer);
container.bind(TYPES.render).toFunction(render);
container.bind(TYPES.renderToString).toFunction(renderToString);

export default container;
