import { type ButtonHTMLAttributes, type MouseEvent, type ReactNode } from 'react';
import { type VariantProps } from 'class-variance-authority';
type Provider = 'apple-pay' | 'google-pay';
type ButtonStyle = 'black' | 'white' | 'white-outline';
type LabelType = 'buy' | 'pay' | 'checkout' | 'book' | 'plain';
declare const rootVariants: (props?: ({
provider?: "apple-pay" | "google-pay" | null | undefined;
buttonStyle?: "black" | "white" | "white-outline" | null | undefined;
size?: "sm" | "md" | "lg" | null | undefined;
fullWidth?: boolean | null | undefined;
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
export interface WalletPayButtonProps extends Omit, 'children' | 'type'>, Omit, 'provider'> {
/**
* Which wallet the button represents. Drives the inline brand mark,
* the default label key, the brand-locked surface tokens, and the
* `data-provider` hook. Required — there is no sensible default
* wallet.
*/
provider: Provider;
/**
* Brand-mandated button type. Apple Pay supports
* `black` / `white` / `white-outline`; Google Pay supports
* `black` / `white` only. Passing `white-outline` with
* `provider="google-pay"` falls back to `white` and dev-warns —
* Google's branding has no outline type.
*/
buttonStyle?: ButtonStyle;
/**
* Brand-approved call-to-action phrasing. `plain` renders the bare
* mark (mark-only) with an sr-only accessible name. The verb portion
* is i18n; the wallet brand name ("Apple Pay" / "Google Pay") is a
* non-translated constant.
*/
labelType?: LabelType;
/**
* Fired on click / Enter / Space when not loading and not disabled.
* Open the native wallet sheet here (Payment Request API). Named
* `onActivate` rather than `onClick` to signal it triggers a payment
* flow. A native `onClick` still forwards through `...rest`.
*/
onActivate?: (event: MouseEvent) => void;
/**
* Wallet sheet is opening / payment in flight. Swaps the mark for the
* kit Spinner, sets `aria-busy` and `aria-disabled`, and suppresses
* activation so the user cannot double-open the sheet. The button stays
* focusable, so keyboard focus stays on it. Changed in 1.72.0: before,
* it set native `disabled`, which dropped focus to the page.
*/
loading?: boolean;
/**
* Override the resolved accessible / visible label. Defaults to the
* `provider` + `labelType` i18n string. The brand wordmark constant
* ("Apple Pay" / "Google Pay") is never overridable via this prop —
* pass a fully-translated verb phrase only.
*/
label?: ReactNode;
/**
* Native button type. Defaults to `'button'` so the wallet trigger
* never implicitly submits an ambient `