import type { InitializedService } from '@owlmeans/context'; import type { ServerConfig, ServerContext } from '@owlmeans/server-context'; import type { OidcProviderConfig, OidcSharedConfig, WithSharedConfig, ProviderProfileDetails, OidcUserDetails, OidcProviderSettings } from '@owlmeans/oidc'; import type { AuthCredentials, AuthPayload, Profile } from '@owlmeans/auth'; import type { Configuration, ServerMetadata, TokenEndpointResponse, TokenEndpointResponseHelpers } from 'openid-client'; /** Opaque descriptor for an OIDC client configuration obtained via discovery. * Consumers receive and pass it back; they must never read its internals. */ export type OidcClientDescriptor = Configuration; /** Token set returned from any grant. Includes the standard OAuth2 fields * plus the openid-client helper method `claims()` for ID-token claim access. */ export interface OidcTokenSet { access_token?: string; refresh_token?: string; id_token?: string; token_type?: string; expires_in?: number; scope?: string; /** Decode and return claims from the ID token. */ claims: () => Record; } /** Subset of OidcTokenSet without helper methods; used for storage/serialization. */ export interface OidcTokenSetParameters extends Pick { } /** PKCE + ID-token check parameters for the authorization-code grant. */ export interface OidcGrantChecks { pkceCodeVerifier?: string; idTokenExpected?: boolean; } /** Issuer/endpoint metadata from the OIDC discovery document. */ export type OidcServerMetadata = ServerMetadata; /** Response from token introspection. */ export interface OidcIntrospectionResponse { active: boolean; scope?: string; sub?: string; client_id?: string; token_type?: string; exp?: number; iat?: number; [key: string]: unknown; } /** @internal — internal alias; do not export from index.ts */ export type TokenSet = TokenEndpointResponse & TokenEndpointResponseHelpers; /** @internal */ export type TokenSetParameters = TokenEndpointResponse; export interface OidcClientService extends InitializedService { getConfiguration: (clientId: string | Partial) => Promise; getClient: (clientId: string | OidcClientDescriptor | Partial) => Promise; getConfig: (clientId: string | Partial) => Promise; getDefault: () => string | undefined; registerTemporaryProvider: (config: OidcProviderConfig) => OidcProviderConfig; unregisterTemporaryProvider: (params: Partial) => void; hasProvider: (params: string | Partial) => boolean; entityToClientId: (params: Partial) => string; providerApi: () => ProviderApiService | null; accountLinking: () => AccountLinkingService | null; findProvider: (predicate: (provider: OidcProviderConfig) => boolean) => OidcProviderConfig | undefined; } export interface OidcClientAdapter { getMetadata: () => OidcServerMetadata; getClientId: () => string; getConfig: () => OidcProviderConfig; makeAuthUrl: (params: Record) => string; grantWithCredentials: () => Promise; grantWithCode: (currentUrl: string, checks: OidcGrantChecks, params: Record) => Promise; refresh: (tokenSet: OidcTokenSetParameters | string) => Promise; introspect: (tokenSet: OidcTokenSetParameters, type?: string) => Promise; /** Read current claims for an active access token and bind them to its subject. */ userinfo: (tokenSet: OidcTokenSetParameters, expectedSubject: string) => Promise>; } export interface OidcRpConfig extends OidcSharedConfig { accountLinkingService?: string; providerApiService?: string; } export interface Config extends ServerConfig, WithSharedConfig { oidc: OidcRpConfig; } export interface Context extends ServerContext { } export interface AccountLinkingService extends InitializedService { getLinkedProfile: (details: ProviderProfileDetails) => Promise; linkProfile: (details: ProviderProfileDetails, meta: AccountMeta) => Promise; linkCredentials: (details: ProviderProfileDetails) => Promise; getOwnerProfiles: (entityId: string) => Promise; getOwnerCredentials: (userId: string, entityId?: string, type?: string) => Promise; } export interface AccountMeta { username: string; } export interface ProviderApiService extends InitializedService { getUserDetails: (token: string, userId: string) => Promise; getSettings: (token: string, realm: string) => Promise; } //# sourceMappingURL=types.d.ts.map