/**
 * Configuration options for retrieving an access token.
 *
 * @internal
 *
 * @example
 * ```typescript
 * // Get access token from URL or local storage using default options
 * const token = getAccessToken();
 * ```
 *
 * @example
 * ```typescript
 * // Get access token from custom local storage key
 * const token = getAccessToken({ storageKey: 'my_app_token' });
 * ```
 *
 * @example
 * ```typescript
 * // Get token from URL but don't save or remove from URL
 * const token = getAccessToken({
 *   saveToStorage: false,
 *   removeFromUrl: false
 * });
 * ```
 */
export interface GetAccessTokenOptions {
    /**
     * The key to use when storing or retrieving the token in local storage.
     * @default 'base44_access_token'
     */
    storageKey?: string;
    /**
     * The URL parameter name to check for the access token.
     * @default 'access_token'
     */
    paramName?: string;
    /**
     * Whether to save the token to local storage if found in the URL.
     * @default true
     */
    saveToStorage?: boolean;
    /**
     * Whether to remove the token from the URL after retrieval for security.
     * @default true
     */
    removeFromUrl?: boolean;
}
/**
 * Configuration options for saving an access token.
 *
 * @internal
 *
 * @example
 * ```typescript
 * // Use default storage key
 * saveAccessToken('my-token-123', {});
 *
 * // Use custom storage key
 * saveAccessToken('my-token-123', { storageKey: 'my_app_token' });
 * ```
 */
export interface SaveAccessTokenOptions {
    /**
     * The key to use when storing the token in local storage.
     * @default 'base44_access_token'
     */
    storageKey?: string;
}
/**
 * Configuration options for removing an access token.
 *
 * @internal
 *
 * @example
 * ```typescript
 * // Remove token from default storage key
 * removeAccessToken({});
 *
 * // Remove token from custom storage key
 * removeAccessToken({ storageKey: 'my_app_token' });
 * ```
 */
export interface RemoveAccessTokenOptions {
    /**
     * The key to use when removing the token from local storage.
     * @default 'base44_access_token'
     */
    storageKey?: string;
}
/**
 * Configuration options for constructing a login URL.
 *
 * @internal
 *
 * @example
 * ```typescript
 * const loginUrl = getLoginUrl('/dashboard', {
 *   serverUrl: 'https://base44.app',
 *   appId: 'my-app-123'
 * });
 * // Returns: 'https://base44.app/login?from_url=%2Fdashboard&app_id=my-app-123'
 *
 * // Custom login path
 * const loginUrl = getLoginUrl('/dashboard', {
 *   serverUrl: 'https://base44.app',
 *   appId: 'my-app-123',
 *   loginPath: '/auth/login'
 * });
 * ```
 */
export interface GetLoginUrlOptions {
    /**
     * The base server URL (e.g., 'https://base44.app').
     */
    serverUrl: string;
    /**
     * The app ID.
     */
    appId: string;
    /**
     * The path to the login endpoint.
     * @default '/login'
     */
    loginPath?: string;
}
/**
 * Type definition for getAccessToken function.
 * @internal
 */
export type GetAccessTokenFunction = (options?: GetAccessTokenOptions) => string | null;
/**
 * Type definition for saveAccessToken function.
 * @internal
 */
export type SaveAccessTokenFunction = (token: string, options: SaveAccessTokenOptions) => boolean;
/**
 * Type definition for removeAccessToken function.
 * @internal
 */
export type RemoveAccessTokenFunction = (options: RemoveAccessTokenOptions) => boolean;
/**
 * Type definition for getLoginUrl function.
 * @internal
 */
export type GetLoginUrlFunction = (nextUrl: string, options: GetLoginUrlOptions) => string;
