import { NgZone } from '@angular/core';
import { Observable, ReplaySubject } from 'rxjs';
export interface FacebookInitParams {
    appId?: string;
    status?: boolean;
    xfbml?: boolean;
    version?: string;
}
export interface FacebookAuth {
    accessToken: string;
    expiresIn: number;
    signedRequest: string;
    userID: string;
}
export interface FacebookLoginResponse {
    status: string;
    authResponse: FacebookAuth;
}
export interface FacebookLoginOptions {
    auth_type?: 'rerequest';
    scope?: string;
    return_scopes?: boolean;
    enable_profile_selector?: boolean;
    profile_selector_ids?: string;
}
export interface FacebookApiError {
    message: string;
}
export declare const enum FacebookApiMethod {
    Get = "get",
    Post = "post",
    Delete = "delete",
}
export interface FacebookApiParams {
    [propName: string]: any;
}
export declare type FacebookApiCallback = (response?: {
    error?: FacebookApiError;
    [propName: string]: any;
}) => void;
export interface Facebook {
    XFBML: {
        parse: (element: HTMLElement, cb?: () => void) => void;
    };
    init: (params: FacebookInitParams) => void;
    login: (callback?: (response: FacebookLoginResponse) => void, options?: FacebookLoginOptions) => void;
    api: (path: string, method?: FacebookApiMethod | FacebookApiParams | FacebookApiCallback, params?: FacebookApiParams | FacebookApiCallback, callback?: FacebookApiCallback) => void;
}
export declare const FACEBOOK_DEFAULTS: FacebookInitParams;
export declare class FacebookService {
    private ngZone;
    private platformId;
    sdk: ReplaySubject<Facebook>;
    constructor(ngZone: NgZone, platformId: string);
    load(locale?: string): Observable<Facebook>;
    init(params?: FacebookInitParams, locale?: string): Observable<Facebook>;
    login(options?: FacebookLoginOptions): Observable<FacebookAuth>;
    api(path: string, method?: FacebookApiMethod | FacebookApiParams, params?: FacebookApiParams): Observable<Object>;
    parse(element: HTMLElement): Observable<HTMLElement>;
    reloadRenderedElements(): Observable<HTMLElement>;
}
