import { dA as SSOActiveConnection, eh as WebAuthnAuthenticateResponse, a as StytchProjectConfigurationInput, cK as OTPMethods, b_ as IDPConsentScreenManifest, s as Callbacks, t as StringsOptions, S as StyleConfig } from './ui-BfG6bZHf.js';
import { X as B2BOAuthProviders, b1 as CommonLoginConfig, b2 as CommonB2BLoginConfig } from './createAuthUrlHandler-Bx2xzMj7.js';
import { S as StytchB2BClient } from './StytchB2BClient-DIYd3AFp.js';
import { S as StytchClient } from './StytchClient-gRUDfu-Z.js';
import * as react from 'react';
import { ComponentType } from 'react';
import { I as IconRegistry, T as Theme, P as PresentationOptions } from './PresentationConfig-8F8YQD0F.js';

declare const oauthIcons: {
    amazon: (props: react.SVGProps<SVGSVGElement>) => JSX.Element;
    apple: (props: react.SVGProps<SVGSVGElement>) => JSX.Element;
    bitbucket: (props: react.SVGProps<SVGSVGElement>) => JSX.Element;
    coinbase: (props: react.SVGProps<SVGSVGElement>) => JSX.Element;
    discord: (props: react.SVGProps<SVGSVGElement>) => JSX.Element;
    facebook: (props: react.SVGProps<SVGSVGElement>) => JSX.Element;
    figma: (props: react.SVGProps<SVGSVGElement>) => JSX.Element;
    github: (props: react.SVGProps<SVGSVGElement>) => JSX.Element;
    gitlab: (props: react.SVGProps<SVGSVGElement>) => JSX.Element;
    google: (props: react.SVGProps<SVGSVGElement>) => JSX.Element;
    linkedin: (props: react.SVGProps<SVGSVGElement>) => JSX.Element;
    microsoft: (props: react.SVGProps<SVGSVGElement>) => JSX.Element;
    salesforce: (props: react.SVGProps<SVGSVGElement>) => JSX.Element;
    slack: (props: react.SVGProps<SVGSVGElement>) => JSX.Element;
    snapchat: (props: react.SVGProps<SVGSVGElement>) => JSX.Element;
    tiktok: (props: react.SVGProps<SVGSVGElement>) => JSX.Element;
    twitch: (props: react.SVGProps<SVGSVGElement>) => JSX.Element;
    xTwitter: (props: react.SVGProps<SVGSVGElement>) => JSX.Element;
    yahoo: (props: react.SVGProps<SVGSVGElement>) => JSX.Element;
};
declare const cryptoIcons: {
    phantom: (props: react.SVGProps<SVGSVGElement>) => JSX.Element;
    metamask: (props: react.SVGProps<SVGSVGElement>) => JSX.Element;
    binance: (props: react.SVGProps<SVGSVGElement>) => JSX.Element;
    coinbase: (props: react.SVGProps<SVGSVGElement>) => JSX.Element;
};
declare const emailIcons: {
    gmail: (props: react.SVGProps<SVGSVGElement>) => JSX.Element;
    outlook: (props: react.SVGProps<SVGSVGElement>) => JSX.Element;
    yahoo: (props: react.SVGProps<SVGSVGElement>) => JSX.Element;
};
type IconNames = keyof typeof oauthIcons | keyof typeof cryptoIcons | keyof typeof emailIcons;

type B2BOneTapProps = {
    customScopes?: string[];
    providerParams?: Record<string, string>;
    cancelOnTapOutside?: boolean;
};

type OauthB2BButtonProps = {
    providerType: B2BOAuthProviders;
    loginRedirectUrl?: string;
    signupRedirectUrl?: string;
    discoveryRedirectUrl?: string;
    customScopes?: string[];
    providerParams?: Record<string, string>;
    onSuccess?: () => void;
};

interface SSOButtonProps {
    connection: SSOActiveConnection;
    onStart?: (connection: SSOActiveConnection) => void;
}

type Values<T extends object> = T[keyof T];

declare const AppScreens$1: {
    readonly Main: "Main";
    readonly EmailConfirmation: "Email Confirmation";
    readonly LoggedIn: "Logged In";
    readonly Discovery: "Discovery";
    readonly Error: "Error";
    readonly PasswordEmailForm: "Password Email";
    readonly PasswordAuthenticate: "Password Authenticate";
    readonly PasswordResetForm: "Password Reset Form";
    readonly PasswordResetVerifyConfirmation: "Password Reset Verify Confirmation";
    readonly PasswordForgotForm: "Password Forgot Form";
    readonly PasswordSetNewConfirmation: "Password Set New Confirmation";
    readonly MFAEnrollmentSelection: "MFA Enrollment Selection";
    readonly RecoveryCodeEntry: "Recovery Code Entry";
    readonly RecoveryCodeSave: "Recovery Code Save";
    readonly SMSOTPEnrollment: "SMS OTP Enrollment";
    readonly SMSOTPEntry: "SMS OTP Entry";
    readonly TOTPEnrollmentManual: "TOTP Enrollment Manual";
    readonly TOTPEnrollmentQRCode: "TOTP Enrollment QR Code";
    readonly TOTPEntry: "TOTP Entry";
    readonly EmailMethodSelection: "Email Method Selection";
    readonly EmailOTPEntry: "Email OTP Entry";
    readonly SSODiscoveryEmail: "SSO Discovery Email";
    readonly SSODiscoveryFallback: "SSO Discovery Fallback";
    readonly SSODiscoveryMenu: "SSO Discovery Menu";
};
type AppScreens$1 = Values<typeof AppScreens$1>;
declare const MainScreenComponent: {
    readonly EmailForm: "EmailForm";
    readonly EmailDiscoveryForm: "EmailDiscoveryForm";
    readonly OAuthButtons: "OAuthButtons";
    readonly SSOButtons: "SSOButtons";
    readonly PasswordsEmailForm: "PasswordsEmailForm";
    readonly PasswordEmailCombined: "PasswordEmailCombined";
    readonly PasswordEmailCombinedDiscovery: "PasswordEmailCombinedDiscovery";
    readonly Divider: "Divider";
};
type MainScreenComponent = Values<typeof MainScreenComponent>;
type ButtonComponent = typeof MainScreenComponent.SSOButtons | typeof MainScreenComponent.OAuthButtons;

type ProductId$1 = 'emailMagicLinks' | 'emailOtp' | 'sso' | 'passwords' | 'oauth';
type StytchB2BProduct = {
    id: ProductId$1;
    screens: Partial<Record<AppScreens$1, ComponentType>>;
    mainScreen?: Partial<Record<MainScreenComponent, ComponentType>>;
    icons?: Partial<IconRegistry<IconNames>>;
    ssoAndOAuthButtons?: Partial<{
        SsoAndOAuthButtons: ComponentType<{
            buttons: ButtonComponent[];
        }>;
        B2BGoogleOneTap: ComponentType<B2BOneTapProps>;
        OAuthB2BButton: ComponentType<OauthB2BButtonProps>;
        SSOButton: ComponentType<SSOButtonProps>;
    }>;
};

type StartPasskeyAuth = () => Promise<WebAuthnAuthenticateResponse<StytchProjectConfigurationInput>>;

declare const AppScreens: {
    readonly Main: "Main";
    readonly FloatingOneTap: "FloatingOneTap";
    readonly PasskeyRegistrationStart: "PasskeyRegistrationStart";
    readonly PasskeyRegistrationSuccess: "PasskeyRegistrationSuccess";
    readonly PasskeyConfirmation: "PasskeyConfirmation";
    readonly PasswordCreateOrLogin: "PasswordCreateOrLogin";
    readonly PasswordResetForm: "PasswordResetForm";
    readonly PasswordForgot: "PasswordForgot";
    readonly PasswordBreached: "PasswordBreached";
    readonly PasswordSetNew: "PasswordSetNew";
    readonly PasswordDedupe: "PasswordDedupe";
    readonly PasswordConfirmation: "PasswordConfirmation";
    readonly EmailConfirmation: "EmailConfirmation";
    readonly OTPAuthenticate: "OTPAuthenticate";
    readonly OTPConfirmation: "OTPConfirmation";
    readonly CryptoConnect: "CryptoConnect";
    readonly CryptoSignMessage: "CryptoSignMessage";
    readonly CryptoOtherScreen: "CryptoOtherScreen";
    readonly CryptoSetupWallet: "CryptoSetupWallet";
    readonly CryptoError: "CryptoError";
    readonly CryptoConfirmation: "CryptoConfirmation";
};
type AppScreens = keyof typeof AppScreens;

type ProductId = 'emailMagicLinks' | 'oauth' | 'otp' | 'crypto' | 'passwords' | 'passkeys' | 'passkeyRegistration';
declare const MagicLinkMethods: {
    readonly Email: "emailMagicLinks";
};
type MagicLinkMethods = Values<typeof MagicLinkMethods>;
declare const PasswordMethods: {
    readonly Email: "passwords";
};
type PasswordMethods = Values<typeof PasswordMethods>;
type TabMethods = OTPMethods | MagicLinkMethods | PasswordMethods;
type MainScreenKey = 'oauth' | 'crypto' | 'login-form' | 'divider' | 'passkey-button';
type MainScreenChildProps = {
    startPasskeyAuth: StartPasskeyAuth;
};
type StytchProduct = Readonly<{
    id: ProductId;
    screens: Partial<Record<AppScreens, ComponentType>>;
    tabs?: Partial<Record<TabMethods, ComponentType>>;
    mainScreen?: Partial<Record<MainScreenKey, ComponentType<MainScreenChildProps>>>;
    icons?: Partial<IconRegistry<IconNames>>;
}>;

type PresentationConfig = {
    theme?: Partial<Theme> | readonly [light: Partial<Theme>, dark: Partial<Theme>];
    options?: Partial<PresentationOptions>;
    icons?: Partial<IconRegistry<IconNames>>;
};
/**
 * The products array allows you to specify the authentication methods that you would like to
 * expose to your users. The order of the products that you include here will also be the order
 * in which they appear in the login form,
 */
type StytchLoginConfig = CommonLoginConfig & {
    products: StytchProduct[];
};
/**
 * The products array allows you to specify the authentication methods that you would like to
 * expose to your users. The order of the products that you include here will also be the order
 * in which they appear in the login form,
 */
type StytchB2BUIConfig = CommonB2BLoginConfig & {
    /**
     * The products array allows you to specify the authentication methods that you would like to
     * expose to your users. The order of the products that you include here will also be the order
     * in which they appear in the login form,
     */
    products: StytchB2BProduct[];
};
type SDKConfig<TProjectConfiguration extends StytchProjectConfigurationInput> = {
    client: StytchClient<TProjectConfiguration>;
    config: StytchLoginConfig;
    presentation?: PresentationConfig;
    callbacks?: Callbacks<TProjectConfiguration>;
} & StringsOptions;
type B2BSDKConfig<TProjectConfiguration extends StytchProjectConfigurationInput> = {
    client: StytchB2BClient<TProjectConfiguration>;
    config: StytchB2BUIConfig;
    presentation?: PresentationConfig;
    callbacks?: Callbacks<TProjectConfiguration>;
} & StringsOptions;
type ResetPasswordSDKConfig<TProjectConfiguration extends StytchProjectConfigurationInput> = SDKConfig<TProjectConfiguration> & {
    passwordResetToken?: string;
};
type IDPConsentManifestGenerator = (input: {
    scopes: string[];
    clientName: string;
}) => IDPConsentScreenManifest;
type AuthTokenParams = {
    trustedAuthToken: string;
    tokenProfileID: string;
};
type IDPSDKConfig<TProjectConfiguration extends StytchProjectConfigurationInput> = Pick<SDKConfig<TProjectConfiguration>, 'client' | 'presentation' | 'callbacks' | 'strings'> & {
    /**
     * Optional {@link IDPConsentManifestGenerator} to customize the consent screen.
     */
    getIDPConsentManifest?: IDPConsentManifestGenerator;
    /**
     * Optional {@link AuthTokenParams} to provide a trusted auth token to provide for attestation prior to running OAuth flow.
     */
    authTokenParams?: AuthTokenParams;
};
type B2BIDPConsentManifestGenerator = (input: {
    scopes: string[];
    clientName: string;
}) => IDPConsentScreenManifest;
type B2BIDPSDKConfig<TProjectConfiguration extends StytchProjectConfigurationInput> = Pick<B2BSDKConfig<TProjectConfiguration>, 'client' | 'presentation' | 'callbacks' | 'strings'> & {
    /**
     * Optional {@link B2BIDPConsentManifestGenerator} to customize the consent screen.
     */
    getIDPConsentManifest?: B2BIDPConsentManifestGenerator;
    /**
     * Optional {@link AuthTokenParams} to provide a trusted auth token to provide for attestation prior to running OAuth flow.
     */
    trustedAuthTokenParams?: AuthTokenParams;
};
type DeprecatedSDKConfig = {
    styles?: StyleConfig;
};

declare const iconsWhite: {
    amazon: (props: react.SVGProps<SVGSVGElement>) => JSX.Element;
    apple: (props: react.SVGProps<SVGSVGElement>) => JSX.Element;
    bitbucket: (props: react.SVGProps<SVGSVGElement>) => JSX.Element;
    coinbase: (props: react.SVGProps<SVGSVGElement>) => JSX.Element;
    discord: (props: react.SVGProps<SVGSVGElement>) => JSX.Element;
    facebook: (props: react.SVGProps<SVGSVGElement>) => JSX.Element;
    figma: (props: react.SVGProps<SVGSVGElement>) => JSX.Element;
    github: (props: react.SVGProps<SVGSVGElement>) => JSX.Element;
    gitlab: (props: react.SVGProps<SVGSVGElement>) => JSX.Element;
    google: (props: react.SVGProps<SVGSVGElement>) => JSX.Element;
    linkedin: (props: react.SVGProps<SVGSVGElement>) => JSX.Element;
    microsoft: (props: react.SVGProps<SVGSVGElement>) => JSX.Element;
    salesforce: (props: react.SVGProps<SVGSVGElement>) => JSX.Element;
    slack: (props: react.SVGProps<SVGSVGElement>) => JSX.Element;
    snapchat: (props: react.SVGProps<SVGSVGElement>) => JSX.Element;
    tiktok: (props: react.SVGProps<SVGSVGElement>) => JSX.Element;
    twitch: (props: react.SVGProps<SVGSVGElement>) => JSX.Element;
    xTwitter: (props: react.SVGProps<SVGSVGElement>) => JSX.Element;
    yahoo: (props: react.SVGProps<SVGSVGElement>) => JSX.Element;
    phantom: (props: react.SVGProps<SVGSVGElement>) => JSX.Element;
    metamask: (props: react.SVGProps<SVGSVGElement>) => JSX.Element;
    binance: (props: react.SVGProps<SVGSVGElement>) => JSX.Element;
    gmail: (props: react.SVGProps<SVGSVGElement>) => JSX.Element;
    outlook: (props: react.SVGProps<SVGSVGElement>) => JSX.Element;
};
declare const iconsBlack: {
    amazon: (props: react.SVGProps<SVGSVGElement>) => JSX.Element;
    apple: (props: react.SVGProps<SVGSVGElement>) => JSX.Element;
    bitbucket: (props: react.SVGProps<SVGSVGElement>) => JSX.Element;
    coinbase: (props: react.SVGProps<SVGSVGElement>) => JSX.Element;
    discord: (props: react.SVGProps<SVGSVGElement>) => JSX.Element;
    facebook: (props: react.SVGProps<SVGSVGElement>) => JSX.Element;
    figma: (props: react.SVGProps<SVGSVGElement>) => JSX.Element;
    github: (props: react.SVGProps<SVGSVGElement>) => JSX.Element;
    gitlab: (props: react.SVGProps<SVGSVGElement>) => JSX.Element;
    google: (props: react.SVGProps<SVGSVGElement>) => JSX.Element;
    linkedin: (props: react.SVGProps<SVGSVGElement>) => JSX.Element;
    microsoft: (props: react.SVGProps<SVGSVGElement>) => JSX.Element;
    salesforce: (props: react.SVGProps<SVGSVGElement>) => JSX.Element;
    slack: (props: react.SVGProps<SVGSVGElement>) => JSX.Element;
    snapchat: (props: react.SVGProps<SVGSVGElement>) => JSX.Element;
    tiktok: (props: react.SVGProps<SVGSVGElement>) => JSX.Element;
    twitch: (props: react.SVGProps<SVGSVGElement>) => JSX.Element;
    xTwitter: (props: react.SVGProps<SVGSVGElement>) => JSX.Element;
    yahoo: (props: react.SVGProps<SVGSVGElement>) => JSX.Element;
    phantom: (props: react.SVGProps<SVGSVGElement>) => JSX.Element;
    metamask: (props: react.SVGProps<SVGSVGElement>) => JSX.Element;
    binance: (props: react.SVGProps<SVGSVGElement>) => JSX.Element;
    gmail: (props: react.SVGProps<SVGSVGElement>) => JSX.Element;
    outlook: (props: react.SVGProps<SVGSVGElement>) => JSX.Element;
};

declare const shadcnTheme: Theme;

declare const defaultTheme: Theme;
declare const defaultDarkTheme: Theme;

export { defaultDarkTheme as d, defaultTheme as e, iconsWhite as f, iconsBlack as i, shadcnTheme as s };
export type { AuthTokenParams as A, B2BSDKConfig as B, DeprecatedSDKConfig as D, IDPConsentManifestGenerator as I, PresentationConfig as P, ResetPasswordSDKConfig as R, StytchProduct as S, SDKConfig as a, StytchLoginConfig as b, IDPSDKConfig as c, StytchB2BProduct as g, B2BIDPConsentManifestGenerator as h, StytchB2BUIConfig as j, B2BIDPSDKConfig as k };
