@juspay/neurolink
Version:
Universal AI Development Platform with working MCP integration, multi-provider support, voice (TTS/STT/realtime), and professional CLI. 58+ external MCP servers discoverable, multimodal file processing, RAG pipelines. Build, test, and deploy AI applicatio
94 lines (93 loc) • 3.09 kB
TypeScript
/**
* OAuth 2.1 Client Provider for MCP HTTP Transport
* Implements OAuth 2.1 authentication with PKCE support
*/
import type { OAuthTokens, TokenStorage, MCPOAuthConfig, OAuthClientInformation, AuthorizationUrlResult, TokenExchangeRequest } from "../../types/index.js";
/**
* NeuroLink OAuth Provider for MCP HTTP Transport
* Handles OAuth 2.1 authentication flow with optional PKCE support
*/
export declare class NeuroLinkOAuthProvider {
private config;
private storage;
private pendingChallenges;
private pendingStates;
constructor(config: MCPOAuthConfig, storage?: TokenStorage);
/**
* Get stored tokens for a server
* Returns null if tokens are not available or expired (without refresh token)
*/
tokens(serverId: string): Promise<OAuthTokens | null>;
/**
* Save tokens for a server
*/
saveTokens(serverId: string, tokens: OAuthTokens): Promise<void>;
/**
* Delete tokens for a server
*/
deleteTokens(serverId: string): Promise<void>;
/**
* Get client information for MCP SDK
*/
clientInformation(): OAuthClientInformation;
/**
* Generate authorization URL for OAuth flow
* Returns the URL to redirect the user to for authorization
* @param _serverId - Server ID (reserved for future use in state management)
*/
redirectToAuthorization(_serverId: string): AuthorizationUrlResult;
/**
* Exchange authorization code for tokens
*/
exchangeCode(serverId: string, request: TokenExchangeRequest): Promise<OAuthTokens>;
/**
* Refresh tokens using refresh token
*/
refreshTokens(serverId: string, refreshToken: string): Promise<OAuthTokens>;
/**
* Revoke tokens (if supported by the OAuth server)
*/
revokeTokens(serverId: string, revocationUrl: string): Promise<void>;
/**
* Get authorization header value for API requests
*/
getAuthorizationHeader(serverId: string): Promise<string | null>;
/**
* Check if a server has valid (non-expired) tokens
*/
hasValidTokens(serverId: string): Promise<boolean>;
/**
* Generate a cryptographically secure state parameter
*/
private generateState;
/**
* Generate PKCE code verifier and challenge
* Uses SHA-256 for code challenge method (required by OAuth 2.1)
*/
private generatePKCE;
/**
* Get the OAuth configuration
*/
getConfig(): Readonly<MCPOAuthConfig>;
/**
* Get the token storage instance
*/
getStorage(): TokenStorage;
/**
* Clean up expired pending states and challenges
* Should be called periodically to prevent memory leaks
*/
cleanupPendingRequests(): void;
}
/**
* Create an OAuth provider from MCP server auth configuration
*/
export declare function createOAuthProviderFromConfig(authConfig: {
clientId: string;
clientSecret?: string;
authorizationUrl: string;
tokenUrl: string;
redirectUrl: string;
scope?: string;
usePKCE?: boolean;
}, storage?: TokenStorage): NeuroLinkOAuthProvider;