import React, { ReactNode } from 'react';
import { PersSDK, PersConfig, DefaultAuthProvider } from '@explorins/pers-sdk/core';
import { UserDTO, AdminDTO } from '@explorins/pers-shared';
export type { PersConfig } from '@explorins/pers-sdk/core';
/**
 * Context interface for PERS SDK React Native integration
 *
 * @property sdk - Main SDK instance (null until initialized)
 * @property authProvider - Platform-specific auth provider
 * @property isInitialized - Whether SDK has been initialized
 * @property isAuthenticated - Whether user is currently authenticated
 * @property user - Current user data (null if not authenticated)
 */
export interface PersSDKContext {
    sdk: PersSDK | null;
    authProvider: DefaultAuthProvider | null;
    isInitialized: boolean;
    isAuthenticated: boolean;
    user: UserDTO | AdminDTO | null;
    initialize: (config: PersConfig) => Promise<void>;
    setAuthenticationState: (user: UserDTO | AdminDTO | null, isAuthenticated: boolean) => void;
    refreshUserData: () => Promise<void>;
    restoreSession: () => Promise<UserDTO | null>;
}
/**
 * PERS SDK Provider for React Native
 *
 * Wraps your app to provide SDK context to all child components.
 * Handles platform-specific initialization (DPoP, storage, etc.).
 *
 * @param config - SDK configuration (see PersConfig)
 * @param config.apiProjectKey - Your PERS project key (required)
 * @param config.environment - 'staging' | 'production' (default: 'staging')
 * @param config.captureWalletEvents - Enable real-time blockchain events (default: true)
 * @param config.dpop - DPoP configuration for enhanced security
 *
 * @example Basic usage
 * ```tsx
 * <PersSDKProvider config={{ apiProjectKey: 'my-project' }}>
 *   <App />
 * </PersSDKProvider>
 * ```
 *
 * @example Disable wallet events
 * ```tsx
 * <PersSDKProvider config={{
 *   apiProjectKey: 'my-project',
 *   captureWalletEvents: false  // Disable auto-connect to blockchain events
 * }}>
 *   <App />
 * </PersSDKProvider>
 * ```
 */
export declare const PersSDKProvider: React.FC<{
    children: ReactNode;
    config?: PersConfig;
}>;
export declare const usePersSDK: () => PersSDKContext;
//# sourceMappingURL=PersSDKProvider.d.ts.map