/**
 * OAuth Provider Metadata Manager
 *
 * Handles fetching and storing provider-specific metadata:
 * - Facebook: Pages, page access tokens, page info
 * - Instagram: Business accounts, usernames, profile info
 * - Google: Email, name, profile picture (for future Drive/Calendar)
 *
 * Metadata is stored in the account.metadata JSONB field
 */
import { OAuthProvider, ProviderMetadata } from './types';
/**
 * Metadata Manager
 */
export declare class MetadataManager {
    /**
     * Fetch metadata from provider API
     *
     * @param provider - OAuth provider
     * @param accessToken - Valid access token with appropriate scopes
     * @returns Provider-specific metadata
     */
    static fetchMetadata(provider: OAuthProvider, accessToken: string): Promise<ProviderMetadata>;
    /**
     * Fetch Facebook metadata (pages, page info)
     */
    private static fetchFacebookMetadata;
    /**
     * Fetch Instagram metadata (business account info)
     */
    private static fetchInstagramMetadata;
    /**
     * Fetch Google metadata (basic profile info)
     */
    private static fetchGoogleMetadata;
    /**
     * Validate metadata structure
     *
     * @param provider - OAuth provider
     * @param metadata - Metadata to validate
     * @returns true if valid
     */
    static validateMetadata(provider: OAuthProvider, metadata: ProviderMetadata): boolean;
    /**
     * Refresh metadata (re-fetch from provider)
     *
     * @param provider - OAuth provider
     * @param accessToken - Current access token
     * @returns Updated metadata
     */
    static refreshMetadata(provider: OAuthProvider, accessToken: string): Promise<ProviderMetadata>;
    /**
     * Merge existing metadata with new metadata (for partial updates)
     *
     * @param existing - Existing metadata
     * @param updates - New metadata to merge
     * @returns Merged metadata
     */
    static mergeMetadata(existing: ProviderMetadata, updates: Partial<ProviderMetadata>): ProviderMetadata;
    /**
     * Extract display name from metadata (for UI)
     *
     * @param provider - OAuth provider
     * @param metadata - Provider metadata
     * @returns Display name
     */
    static getDisplayName(provider: OAuthProvider, metadata: ProviderMetadata): string;
    /**
     * Extract profile picture URL from metadata (for UI)
     *
     * @param provider - OAuth provider
     * @param metadata - Provider metadata
     * @returns Profile picture URL or undefined
     */
    static getProfilePicture(provider: OAuthProvider, metadata: ProviderMetadata): string | undefined;
}
//# sourceMappingURL=metadata.d.ts.map