import { ApproveMembershipRequestResult, AuthResult, GetProjectMembersOptions, IdpProvider, McpOAuthProjectMemberContext, McpScope, McpTokenPayload, OAuthAuthorizationCode, OAuthAuthorizationRequest, OAuthJwksResult, OAuthTokenExchangeRequest, OAuthTokenExchangeResult, Payload, Project, ProjectMember, ProjectMemberInvitation, ProjectMembershipRequest, Projects, RequestProjectAccessResult, Role, UserProvisioningRequestAccessContext } from '@owox/idp-protocol'; import type { CreateNewProjectResult, UserProvisioningSettings, UserProvisioningSettingsUpdate } from '@owox/idp-protocol'; import e, { Express, NextFunction } from 'express'; import type { BetterAuthProviderConfig } from './config/index.js'; /** * Main IdP implementation that wires core PKCE flow and Better Auth. */ export declare class OwoxBetterAuthIdp implements IdpProvider { private readonly config; private readonly magicLinkService; private readonly auth; private readonly store; private readonly betterAuthProxyHandler; private readonly authErrorController; private readonly pageController; private readonly passwordFlowController; private readonly googleSheetsAuthController; private readonly betterAuthSessionService; private readonly authFlowMiddleware; private readonly identityClient; private readonly logger; private readonly tokenFacade; private readonly userContextService; private readonly userAuthInfoPersistenceService; private readonly platformAuthFlowClient; private readonly pkceFlowOrchestrator; private readonly projectMembersService; private readonly membershipRequestsService; private readonly onboardingService; private readonly onboardingController; private constructor(); getProjectMembers(projectId: string, options?: GetProjectMembersOptions): Promise; inviteMember(projectId: string, email: string, role: Role, actorUserId: string): Promise; removeMember(projectId: string, userId: string, actorUserId: string): Promise; changeMemberRole(projectId: string, userId: string, newRole: Role, actorUserId: string): Promise; getUserProvisioningSettings(projectId: string, actorUserId: string): Promise; updateUserProvisioningSettings(projectId: string, actorUserId: string, settings: UserProvisioningSettingsUpdate): Promise; listMembershipRequests(projectId: string, actorUserId: string, _options?: { forceFresh?: boolean; }): Promise; approveMembershipRequest(projectId: string, requestId: string, role: Role, actorUserId: string): Promise; declineMembershipRequest(projectId: string, requestId: string, actorUserId: string): Promise; getUserProvisioningRequestAccessContext(userId: string, projectId: string): Promise; requestProjectAccess(userId: string, projectId: string, role: Role): Promise; createNewProject(userId: string, integration: string): Promise; static create(config: BetterAuthProviderConfig): Promise; initialize(): Promise; registerRoutes(app: Express): void; signInMiddleware(req: e.Request, res: e.Response, next: NextFunction): Promise; /** * Handles sign-in when no query state is present. * Attempts fast-path IDP start or refresh token reuse, otherwise redirects to platform. */ private handleNoState; private hasOAuthAuthorizeContinuation; /** * Attempts to use an existing refresh token for silent re-authentication. * Returns true if the user was redirected, false if the token was invalid. */ private handleExistingRefreshToken; private resolveExistingRefreshRedirect; signUpMiddleware(req: e.Request, res: e.Response, _next: NextFunction): Promise; signOutMiddleware(req: e.Request, res: e.Response, _next: NextFunction): Promise; userApiMiddleware(req: e.Request, res: e.Response, _next: NextFunction): Promise>; projectsApiMiddleware(req: e.Request, res: e.Response, _next: NextFunction): Promise>; getProjects(accessToken: string): Promise; getProjectForUser(userId: string, projectId: string): Promise; introspectToken(token: string): Promise; parseToken(token: string): Promise; verifyToken(token: string): Promise; private resolveMcpServerUrl; refreshToken(refreshToken: string): Promise; issueAccessTokenForProjectMemberApiKey(apiKeyId: string, userId: string, projectId: string, role: Role | null, readOnly: boolean): Promise; issueAccessTokenForPluginRuntime(pluginId: string, installationId: string, userId: string, projectId: string): Promise; createMcpOAuthAuthorizationCode(request: OAuthAuthorizationRequest, projectMember: McpOAuthProjectMemberContext): Promise; exchangeMcpOAuthToken(request: OAuthTokenExchangeRequest): Promise; verifyMcpAccessToken(token: string, resource: string, requiredScopes: McpScope[]): Promise; getMcpOAuthJwks(): Promise; revokeToken(token: string): Promise; /** * Best-effort revocation of the OWOX platform refresh token carried by the * current request (the `refreshToken` cookie), then clears that cookie. * * Used after a password reset so the platform session tied to THIS request * is invalidated at the OWOX Identity level — not only the Better Auth UI * session. Revocation failures are non-fatal (logged, not thrown) so they * never block completing the password flow. * * Scope note: this revokes the platform token carried by the request. Broader * multi-device platform-session revocation is handled by the OWOX Identity * service and tracked separately. */ private revokePlatformRefreshTokenFromRequest; accessTokenMiddleware(req: e.Request, res: e.Response, _next: NextFunction): Promise; shutdown(): Promise; isHealthy(): Promise; private redirectToPlatform; } //# sourceMappingURL=owox-better-auth-idp.d.ts.map