import { KeyObject } from 'node:crypto';
import { IncomingMessage } from 'node:http';
import * as jose from 'jose';
import { IdResolver } from '@atproto/identity';
import { AtIdentifierString, DidString } from '@atproto/lex';
import { OAuthVerifier } from '@atproto/oauth-provider';
import { ScopePermissions } from '@atproto/oauth-scopes';
import { Awaitable, MethodAuthContext, MethodAuthVerifier, Params } from '@atproto/xrpc-server';
import { AccountManager } from './account-manager/account-manager';
import { ActorAccount } from './account-manager/helpers/account';
import { AccessOutput, AdminTokenOutput, ModServiceOutput, OAuthOutput, RefreshOutput, UnauthenticatedOutput, UserServiceAuthOutput } from './auth-output';
import { AuthScope } from './auth-scope';
import { WithRequired } from './util/types';
export type VerifiedOptions = {
checkTakedown?: boolean;
checkDeactivated?: boolean;
};
export type ScopedOptions = {
scopes?: readonly S[];
};
export type ExtraScopedOptions = {
additional?: readonly S[];
};
export type AuthorizedOptions
= { authorize: (permissions: ScopePermissions, ctx: MethodAuthContext
) => Awaitable ({ scopes, additional, ...options }: VerifiedOptions & ScopedOptions & ExtraScopedOptions & AuthorizedOptions ): MethodAuthVerifier (opts: VerifiedOptions & ExtraScopedOptions & AuthorizedOptions ): MethodAuthVerifier (options: VerifiedOptions & ScopedOptions & ExtraScopedOptions & AuthorizedOptions ): MethodAuthVerifier ({ authorize, ...verifyStatusOptions }: VerifiedOptions & AuthorizedOptions ): MethodAuthVerifier = WithRequired = {
sub: DidString;
aud: string;
jti: string | undefined;
scope: S;
};
export declare class AuthVerifier {
accountManager: AccountManager;
idResolver: IdResolver;
oauthVerifier: OAuthVerifier;
private _publicUrl;
private _jwtKey;
private _adminPass;
dids: AuthVerifierOpts['dids'];
constructor(accountManager: AccountManager, idResolver: IdResolver, oauthVerifier: OAuthVerifier, opts: AuthVerifierOpts);
unauthenticated: MethodAuthVerifier(options: VerifiedOptions & Required(req: IncomingMessage, { scopes, ...options }: VerifyBearerJwtOptions): Promise