import { UrlBuilder } from '@poppinss/oauth-client'; import { type LiteralStringUnion } from './types.ts'; /** * Redirect request with first-class support for defining OAuth scopes. * Extends the UrlBuilder from the OAuth client to provide scope management * capabilities specific to social authentication providers. */ export declare class RedirectRequest extends UrlBuilder { #private; /** * Create a redirect request builder with scope helpers. * * @param baseUrl - The authorization URL for the OAuth provider * @param scopeParamName - The query parameter name for scopes (e.g., 'scope') * @param scopeSeparator - The character used to separate multiple scopes (e.g., ' ' or ',') */ constructor(baseUrl: string, scopeParamName: string, scopeSeparator: string); /** * Register a custom function to transform scopes before they are * added to the authorization URL. This is useful for providers that * require scope prefixes or transformations. * * @param callback - Function that transforms the scopes array * @returns The current redirect request instance. * * @example * ```ts * request.transformScopes((scopes) => { * return scopes.map(scope => `https://provider.com/auth/${scope}`) * }) * ``` */ transformScopes(callback: (scopes: LiteralStringUnion[]) => string[]): this; /** * Define the scopes to request during authorization. This replaces * any previously set scopes. * * @param scopes - Array of scope strings to request * @returns The current redirect request instance. * * @example * ```ts * request.scopes(['user:email', 'read:org']) * ``` */ scopes(scopes: LiteralStringUnion[]): this; /** * Merge additional scopes with any existing scopes. This is useful * for adding scopes without replacing the default ones. * * @param scopes - Array of scope strings to merge * @returns The current redirect request instance. * * @example * ```ts * request * .scopes(['user:email']) * .mergeScopes(['read:org']) * ``` */ mergeScopes(scopes: LiteralStringUnion[]): this; /** * Clear all existing scopes from the authorization request. * * @returns The current redirect request instance. * * @example * ```ts * request.clearScopes().scopes(['user']) * ``` */ clearScopes(): this; }