import { BaseClient } from 'openid-client'; import { SocialProvider } from '..'; import { Role } from '../../entity-module'; import { SelectivelyPartial } from '../../lib/SelectivelyPartial'; import { MapSocialUserToOrganizationMember, SocialValidation } from './social-provider'; export type OidcResponseType = 'id_token' | 'token' | 'code'; export type OidcResponseMode = 'form_post' | 'fragment' | 'query'; export type OpenIdConnectSocialProviderOptions = Record> = { key: string; label: string; issuer: string; clientId: string; clientSecret?: string; redirectUri: string; /** * @default ['id_token'] */ responseType: OidcResponseType[]; /** * @default 'form_post' */ responseMode: OidcResponseMode; additionalScopes?: string[]; mapToMembership?: MapSocialUserToOrganizationMember | SimpleRoleMap; }; export type OpenIdConnectSocialProviderOptionsInput = Record> = SelectivelyPartial, 'responseType' | 'responseMode'>; export declare class OpenIdConnectSocialProvider = Record> implements SocialProvider { name: string; label: string; client?: BaseClient; options: OpenIdConnectSocialProviderOptions; mapToMembership: MapSocialUserToOrganizationMember | undefined; constructor(options: OpenIdConnectSocialProviderOptionsInput); init(): Promise; createAuthorizationUrl(): Promise<{ nonce: string; authUrl: string; }>; validate(request: SocialValidation): Promise<{ socialProfile: { provider: string; providerUserId: string; accessToken: string | undefined; email: string; emailVerified: boolean | undefined; name: { givenName: string | undefined; familyName: string | undefined; }; }; providerTokenClaims: TProviderTokenClaims; }>; } export type SimpleRoleMap = { organization: string; roles?: Map; defaultRole?: Role[]; }; export declare function mapProviderRoles>(roleMap: SimpleRoleMap): MapSocialUserToOrganizationMember;