import { APIKeysTheme, AlphaColorScale, Appearance, BaseTheme, CaptchaAppearanceOptions, CheckoutTheme, ColorScale, ColorScaleWithRequiredBase, CreateOrganizationTheme, CssColorOrAlphaScale, CssColorOrScale, ElementObjectKey, ElementState, Elements, ElementsConfig, FontFamily, IdSelectors, OAuthConsentTheme, Options, OrganizationListTheme, OrganizationProfileTheme, OrganizationSwitcherTheme, PlanDetailTheme, PricingTableTheme, SignInTheme, SignUpTheme, StateSelectors, SubscriptionDetailsTheme, TaskChooseOrganizationTheme, Theme, UserAvatarTheme, UserButtonTheme, UserProfileTheme, UserVerificationTheme, Variables, WaitlistTheme } from "./appearance.js";
import { ComponentControls, MountComponentRenderer } from "../Components.js";
import { WithInternalRouting } from "./routing.js";

//#region src/internal/index.d.ts

/**
 * Extracts the appearance type from a Ui object. We got 3 cases:
 * - If the Ui type has __appearanceType with a specific type, extract it
 * - If __appearanceType is 'any', fallback to base Appearance type
 * - Otherwise, fallback to the base Appearance type
 */
type ExtractAppearanceType<T, Default> = T extends {
  __appearanceType?: infer A;
} ? 0 extends 1 & A ? Default : A : Default;
declare const Tags: unique symbol;
type Tagged<BaseType, Tag extends PropertyKey> = BaseType & {
  [Tags]: { [K in Tag]: void };
};
/**
 * Ui type that carries appearance type information via phantom property
 * Tagged to ensure only official ui objects from @clerk/ui can be used
 */
type Ui<A$1 = any> = Tagged<{
  version: string;
  url?: string;
  /**
   * Phantom property for type-level appearance inference
   * This property never exists at runtime
   */
  __appearanceType?: A$1;
}, 'ClerkUi'>;
/**
 * @internal
 * Local ui object for testing purposes
 * Do not use
 */
declare const localUiForTesting: Ui<Appearance & {
  newprop?: string;
}>;
//#endregion
export { type APIKeysTheme, type AlphaColorScale, type Appearance, type BaseTheme, type CaptchaAppearanceOptions, type CheckoutTheme, type ColorScale, type ColorScaleWithRequiredBase, type ComponentControls, type CreateOrganizationTheme, type CssColorOrAlphaScale, type CssColorOrScale, type ElementObjectKey, type ElementState, type Elements, type ElementsConfig, ExtractAppearanceType, type FontFamily, type IdSelectors, type MountComponentRenderer, type OAuthConsentTheme, type Options, type OrganizationListTheme, type OrganizationProfileTheme, type OrganizationSwitcherTheme, type PlanDetailTheme, type PricingTableTheme, type SignInTheme, type SignUpTheme, type StateSelectors, type SubscriptionDetailsTheme, type TaskChooseOrganizationTheme, type Theme, Ui, type UserAvatarTheme, type UserButtonTheme, type UserProfileTheme, type UserVerificationTheme, type Variables, type WaitlistTheme, type WithInternalRouting, localUiForTesting };
//# sourceMappingURL=index.d.ts.map