import React, { JSX } from 'react'; import type { StripeConnectInitParams, StripeConnectUpdateParams, LoadConnectAndInitialize, StripeConnectInstance } from './connectTypes'; import { AnalyticsClient } from './analytics/AnalyticsClient'; declare class ConnectInstance implements StripeConnectInstance { initParams: StripeConnectInitParams; onUpdate?: (options: StripeConnectUpdateParams) => void; constructor(initParams: StripeConnectInitParams); update(options: StripeConnectUpdateParams): void; } /** * Creates a Connect instance for use with ConnectComponentsProvider. * This instance manages the configuration and state for Connect embedded components. * * @param initParams - Initialization parameters including publishableKey and fetchClientSecret * @returns A StripeConnectInstance that can be passed to ConnectComponentsProvider * * @example * ```ts * const connectInstance = loadConnectAndInitialize({ * publishableKey: 'pk_test_123', * fetchClientSecret: async () => { * const response = await fetch('/account_session'); * const { client_secret } = await response.json(); * return client_secret; * }, * appearance: { * variables: { colorPrimary: '#635BFF' } * } * }); * ``` * @category Connect */ export declare const loadConnectAndInitialize: LoadConnectAndInitialize; type ConnectComponentsProviderProps = { connectInstance: StripeConnectInstance; children: React.ReactNode; }; export type ConnectComponentsPayload = { appearance: StripeConnectInitParams['appearance']; locale: StripeConnectInitParams['locale']; connectInstance: ConnectInstance; analyticsClient: AnalyticsClient; }; /** * Context provider that makes Connect instance configuration available to embedded components. * Wrap your Connect components with this provider to enable them to access the shared configuration. * * @param props.connectInstance - Instance created via loadConnectAndInitialize * @param props.children - React components to render within the provider * @returns JSX.Element * * @throws Error if connectInstance is not created via loadConnectAndInitialize * * @example * ```tsx * function App() { * const [connectInstance] = useState(() => { * const fetchClientSecret = async () => { * const response = await fetch('/account_session', { method: "POST" }); * const { client_secret: clientSecret } = await response.json(); * return clientSecret; * }; * * return loadConnectAndInitialize({ * publishableKey: 'pk_test_123', * fetchClientSecret: fetchClientSecret, * appearance, * }); * }); * * return ( * * * * ); * } * ``` * @category Connect */ export declare const ConnectComponentsProvider: ({ children, connectInstance, }: ConnectComponentsProviderProps) => JSX.Element; export declare const useConnectComponents: () => ConnectComponentsPayload; export {}; //# sourceMappingURL=ConnectComponentsProvider.d.ts.map