type TClientId = `${string}.apps.googleusercontent.com`; type TResponseType = "id_token" | "code"; type TLaunchWebAuthFlowParams = { clientId: TClientId; responseType: TResponseType | readonly TResponseType[]; state?: string; nonce?: string; interactive?: boolean; }; type TMapping = { id_token: { id_token: string; }; code: { code: string; }; }; type TResult = T extends TResponseType ? TMapping[T] : T extends readonly (infer Element)[] ? { [K in Element & keyof TMapping]: string; } : never; /** * 根据 responseType 推断返回类型 * 例如: TResult<"code"> => { code: string } * TResult<["id_token", "code"]> => { id_token: string; code: string } * TResult<["code", "id_token"]> => { id_token: string; code: string } */ /** * 支持 Google OAuth2 登录的 client_id 类型(参数 clientId) * 需要 identity 权限 * @param clientId - Google OAuth2 Web 应用 类型的 client_id,例如: "xxxxxx.apps.googleusercontent.com" * @param responseType - 响应类型,默认: "code" * @returns Promise - 返回 id_token 或 code */ export declare function launchWebAuthFlow

({ clientId, responseType, state, nonce, interactive, }: P): Promise & (P extends { state: string; } ? { state: string; } : {})>; /** * 解码 JWT * @param idToken - JWT * @returns 返回 JWT 的 payload */ export declare function decodeJWT(idToken: string): Record; export {};