import { z } from 'zod';
import type { HandlerResponse } from './types.js';
declare const QuickstartSpecSchema: z.ZodObject<{
    appType: z.ZodEnum<{
        spa: "spa";
        webapp: "webapp";
        native: "native";
    }>;
    defaultAppOrigin: z.ZodObject<{
        scheme: z.ZodString;
        domain: z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
            inputKey: z.ZodString;
        }, z.core.$strip>]>;
        port: z.ZodOptional<z.ZodNumber>;
    }, z.core.$strip>;
    callbackPath: z.ZodString;
    logoutPath: z.ZodString;
    llmPromptPath: z.ZodOptional<z.ZodString>;
    envSnippet: z.ZodOptional<z.ZodObject<{
        type: z.ZodString;
        language: z.ZodString;
        fileName: z.ZodString;
        entries: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
            type: z.ZodLiteral<"separator">;
        }, z.core.$strip>, z.ZodObject<{
            type: z.ZodLiteral<"var">;
            name: z.ZodString;
            value: z.ZodString;
            comment: z.ZodOptional<z.ZodString>;
            sensitive: z.ZodOptional<z.ZodBoolean>;
        }, z.core.$strip>], "type">>;
    }, z.core.$strip>>;
    placeholders: z.ZodRecord<z.ZodString, z.ZodUnknown>;
    inputs: z.ZodRecord<z.ZodString, z.ZodUnknown>;
    environment: z.ZodRecord<z.ZodString, z.ZodString>;
}, z.core.$strip>;
export type QuickstartSpec = z.infer<typeof QuickstartSpecSchema> & {
    llmPromptUrl?: string;
};
export type QuickstartAppType = QuickstartSpec['appType'];
export type DefaultAppOrigin = QuickstartSpec['defaultAppOrigin'];
export declare const fetchQuickstartSpec: (framework: string) => Promise<QuickstartSpec | null>;
/**
 * Whether `raw` is a well-formed SHA256 certificate fingerprint (64 hex digits). Deliberately
 * lenient on separators and case so a paste from `./gradlew signingReport` or `keytool` is accepted
 * either way. Does not transform the value; the original is registered as-is.
 */
export declare function isValidSha256Fingerprint(raw: string): boolean;
/**
 * Whether `raw` is a well-formed Android package name. Beyond catching typos, this keeps the value
 * safe to concatenate into the callback URL path (%APPLICATION_ID%), which is never re-parsed or
 * escaped downstream.
 */
export declare function isValidAndroidPackageName(raw: string): boolean;
/**
 * Whether `raw` is a scheme usable in Auth0.Android's `<data android:scheme>` intent filter.
 * Lowercase-only: `WebAuthProvider.withScheme` warns but does not normalize, so an uppercase value
 * survives into the redirect_uri and fails as a dead redirect after login. Also gated because the
 * value reaches the `%AUTH0_SCHEME%` prompt token and the callback URL unescaped.
 */
export declare function isValidAndroidScheme(raw: string): boolean;
/**
 * Canonical identity form of a fingerprint: separators stripped, lowercased. Used only for
 * equality/dedup — the caller's original text is what gets registered.
 */
export declare function normalizeFingerprint(raw: string): string;
/**
 * Validate the Android-only callback configuration inputs. Returns null when they are valid (or
 * not Android).
 *
 * Values are format-checked, not just checked for presence: each flows unescaped into the
 * registered callback URL and/or the LLM prompt. Every problem is reported in one message, with a
 * hint on where to source each value, so the caller can gather everything in a single pass.
 */
export declare function validateAndroidInputs(params: {
    isAndroid: boolean;
    applicationId?: string;
    callbackUrlType?: string;
    androidSha256Fingerprint?: string;
    auth0Scheme?: string;
    baseUrl?: string;
}): HandlerResponse | null;
export {};
