/**
 * Authorization management module for Expo Finance Kit
 * Handles FinanceKit authorization flows and status management
 */
import { AuthorizationStatus, AuthorizationResult, AuthorizationStatusChangedPayload } from '../ExpoFinanceKit.types';
/**
 * Requests authorization to access financial data
 * @returns Promise resolving to authorization result
 */
export declare function requestAuthorization(): Promise<AuthorizationResult>;
/**
 * Gets current authorization status
 * @returns Promise resolving to current authorization status
 */
export declare function getAuthorizationStatus(): Promise<AuthorizationStatus>;
/**
 * Checks if FinanceKit is available on the device
 * @returns Boolean indicating availability
 */
export declare function isFinanceKitAvailable(): boolean;
/**
 * Ensures user has authorized access before proceeding
 * @param requestIfNeeded - Whether to request authorization if not determined
 * @returns Promise resolving to boolean indicating authorization status
 */
export declare function ensureAuthorized(requestIfNeeded?: boolean): Promise<boolean>;
/**
 * Authorization status change listener manager
 */
declare class AuthorizationListener {
    private listeners;
    /**
     * Adds a listener for authorization status changes
     * @param callback - Function to call when status changes
     * @returns Function to remove the listener
     */
    addStatusChangeListener(callback: (payload: AuthorizationStatusChangedPayload) => void): () => void;
    /**
     * Removes a specific listener
     * @param listenerId - ID of the listener to remove
     */
    private removeListener;
    /**
     * Removes all authorization listeners
     */
    removeAllListeners(): void;
}
export declare const authorizationListener: AuthorizationListener;
/**
 * Waits for authorization with timeout
 * @param timeoutMs - Maximum time to wait in milliseconds
 * @returns Promise resolving to authorization result
 */
export declare function waitForAuthorization(timeoutMs?: number): Promise<AuthorizationResult>;
/**
 * Gets human-readable description for authorization status
 * @param status - Authorization status
 * @returns Human-readable description
 */
export declare function getAuthorizationStatusDescription(status: AuthorizationStatus): string;
/**
 * Checks if authorization can be requested
 * @returns Promise resolving to boolean
 */
export declare function canRequestAuthorization(): Promise<boolean>;
export {};
//# sourceMappingURL=authorization.d.ts.map