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; }; export type AuthVerifierOpts = { publicUrl: string; jwtKey: KeyObject; adminPass: string; dids: { pds: string; entryway?: string; modService?: string; }; }; export type VerifyBearerJwtOptions = WithRequired & { scopes: readonly S[]; }, 'audience' | 'typ'>; export type VerifyBearerJwtResult = { 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; adminToken: MethodAuthVerifier; modService: MethodAuthVerifier; moderator: MethodAuthVerifier; protected access(options: VerifiedOptions & Required>): MethodAuthVerifier>; refresh(options?: { allowExpired?: boolean; }): MethodAuthVerifier; authorization

({ scopes, additional, ...options }: VerifiedOptions & ScopedOptions & ExtraScopedOptions & AuthorizedOptions

): MethodAuthVerifier; authorizationOrAdminTokenOptional

(opts: VerifiedOptions & ExtraScopedOptions & AuthorizedOptions

): MethodAuthVerifier; userServiceAuth: MethodAuthVerifier; userServiceAuthOptional: MethodAuthVerifier; authorizationOrUserServiceAuth

(options: VerifiedOptions & ScopedOptions & ExtraScopedOptions & AuthorizedOptions

): MethodAuthVerifier; protected oauth

({ authorize, ...verifyStatusOptions }: VerifiedOptions & AuthorizedOptions

): MethodAuthVerifier; protected verifyStatus(did: DidString, options: VerifiedOptions): Promise; /** * Finds an account by its handle or DID, returning possibly deactivated or * taken down accounts (unless `options.checkDeactivated` or * `options.checkTakedown` are set to true, respectively). */ findAccount(handleOrDid: AtIdentifierString, options: VerifiedOptions): Promise; /** * Wraps {@link jose.jwtVerify} into a function that also validates the token * payload's type and wraps errors into {@link InvalidRequestError}. */ protected verifyBearerJwt(req: IncomingMessage, { scopes, ...options }: VerifyBearerJwtOptions): Promise>; protected verifyServiceJwt(req: IncomingMessage, opts?: { iss?: string[]; }): Promise<{ iss: DidString | `${DidString}#${string}`; aud: string; exp: number; lxm?: string; jti?: string; }>; } export declare function isUserOrAdmin(auth: AccessOutput | OAuthOutput | AdminTokenOutput | UnauthenticatedOutput, did: string): boolean; export declare const createSecretKeyObject: (secret: string) => KeyObject; export declare const createPublicKeyObject: (publicKeyHex: string) => KeyObject; //# sourceMappingURL=auth-verifier.d.ts.map