import type { ControllerOptions, ModuleMetadata, Type } from '@nestjs/common'; import type { VersionValue } from '@nestjs/common/interfaces'; import type { AdapterFactory, Configuration, OidcProviderModule, Provider } from '../types/oidc.types'; export interface OidcConfiguration extends Configuration { } export interface OidcModuleFactoryArgs { issuer: string; config?: Configuration; module: OidcProviderModule; } export type OidcModuleFactoryFn = (args: OidcModuleFactoryArgs) => Provider | Promise; export interface OidcModuleOptions { path?: string; host?: ControllerOptions['host']; version?: VersionValue; issuer: string; oidc?: OidcConfiguration; proxy?: boolean; factory?: OidcModuleFactoryFn; } export interface OidcModuleOptionsFactory { /** * OidcModule options factory */ createModuleOptions(): OidcModuleOptions | Promise; /** * Adapter factory */ createAdapterFactory?(): AdapterFactory | Promise; } export interface OidcModuleAsyncOptions extends Pick { useExisting?: Type; useClass?: Type; useFactory?: (...args: any[]) => OidcModuleOptions | Promise; inject?: any[]; }