plugin_options: TObject<
    {
        accessTokenExpiration: TOptional<TString>;
        ajv: TOptional<TAny>;
        authorizationEndpoint: TString;
        includeErrorDescription: TOptional<TBoolean>;
        isAccessTokenRevoked: TFunction<[TString], TPromise<TBoolean>>;
        issuer: TString;
        jwks: TObject<
            {
                keys: TArray<
                    TObject<
                        {
                            alg: TOptional<TString>;
                            d: TOptional<TString>;
                            dp: TOptional<TString>;
                            dq: TOptional<TString>;
                            e: TOptional<TString>;
                            kid: TOptional<TString>;
                            kty: TString;
                            n: TOptional<TString>;
                            p: TOptional<TString>;
                            q: TOptional<TString>;
                            qi: TOptional<TString>;
                        },
                    >,
                >;
            },
        >;
        logPrefix: TOptional<TString>;
        onIssuedTokens: TFunction<
            [
                TObject<
                    {
                        access_token: TString;
                        access_token_expires_in: TNumber;
                        client_id: TString;
                        issuer: TString;
                        jti: TString;
                        kid: TString;
                        me: TString;
                        redirect_uri: TString;
                        refresh_token: TString;
                        refresh_token_expires_at: TNumber;
                        scope: TString;
                    },
                >,
            ],
            TPromise<TVoid>,
        >;
        refreshTokenExpiration: TOptional<TString>;
        reportAllAjvErrors: TOptional<TBoolean>;
        retrieveRefreshToken: TFunction<
            [TString],
            TPromise<
                TUnion<
                    [
                        TObject<
                            {
                                client_id: TString;
                                created_at: TNumber;
                                exp: TNumber;
                                id: TUnion<[TNumber, TString]>;
                                iss: TString;
                                jti: TString;
                                me: TString;
                                redirect_uri: TString;
                                refresh_token: TString;
                                revocation_reason: TOptional<TString>;
                                revoked: TOptional<TBoolean>;
                                scope: TString;
                            },
                        >,
                        TObject<
                            {
                                client_id: TString;
                                created_at: TUnion<[TNumber, TNull]>;
                                deleted_at: TOptional<TUnion<[(...), (...)]>>;
                                exp: TNumber;
                                id: TUnion<[TNumber, TString]>;
                                iss: TString;
                                jti: TString;
                                me: TString;
                                redirect_uri: TString;
                                refresh_token: TString;
                                revocation_reason: TOptional<TString>;
                                revoked: TOptional<TBoolean>;
                                scope: TString;
                                undeleted_at: TOptional<TUnion<[(...), (...)]>>;
                                updated_at: TOptional<TUnion<[(...), (...)]>>;
                            },
                        >,
                    ],
                >,
            >,
        >;
        revocationEndpoint: TString;
        userinfoEndpoint: TString;
    },
> = ...