export interface IRenderOptions {
  component: string,
  el?: Element,
  props?: Object,
};

export interface IRequire {
  (id: string): any,
}

export interface IRenderer {
  render(options: IRenderOptions): any;
}

export interface ICore {
  render(options: IRenderOptions): any;
}

export interface IAuthOptionsDefaults {
  host: string;
  options: {
    clientId: string;
    scope: string[];
  }
}

export interface IAuthOptions {
  host?: string;
  clientId?: string;
  redirectUri?: string;
  scope?: string[];
  targetLinkUri?: string;
};

export interface IAuthRequestOptions {
    clientId?: string,
    scope?: string[],
    responseType?: string,
    redirectUri?: string,
    state?: string,
    nonce?: string,
    display?: string,
    prompt?: string[],
    uiLocales?: string[],
    claims?: Object,
    claimsLocales?: string[],
    codeChallenge?: string,
    codeChallengeMethod?: string,
    loginHint?: string,
    idTokenHint?: string,
    targetLinkUri?: string,
    authMethod?: string,
}

export interface IAuthRequestParams {
  host?: string,
  options?: IAuthRequestOptions,
}
