diff --git a/phonegap-facebook-plugin/phonegap-facebook-plugin-tests.ts b/phonegap-facebook-plugin/phonegap-facebook-plugin-tests.ts
new file mode 100644
index 0000000000..4053255108
--- /dev/null
+++ b/phonegap-facebook-plugin/phonegap-facebook-plugin-tests.ts
@@ -0,0 +1,114 @@
+///
+
+facebookConnectPlugin.api("a", ["b", "c"]);
+facebookConnectPlugin.api("a", ["b", "c"], (result: any) => {});
+facebookConnectPlugin.api("a", ["b", "c"], (result: any) => {}, (error: string) => {});
+
+facebookConnectPlugin.getAccessToken((token: string) => {});
+facebookConnectPlugin.getAccessToken((token: string) => {}, (error: string) => {});
+
+facebookConnectPlugin.getLoginStatus();
+facebookConnectPlugin.getLoginStatus((status: PhonegapFacebookPlugin.LoginResult) => {
+ var accessToken: string = status.authResponse.accessToken;
+ var expiresIn: string = status.authResponse.expiresIn;
+ var secret: string = status.authResponse.secret;
+ var session_key: boolean = status.authResponse.session_key;
+ var sig: string = status.authResponse.sig;
+ var userID: string = status.authResponse.userID;
+ var status1: string = status.status;
+}, (error: string) => {});
+
+facebookConnectPlugin.logEvent("a");
+facebookConnectPlugin.logEvent("a", {});
+facebookConnectPlugin.logEvent("a", {}, 42);
+facebookConnectPlugin.logEvent("a", {}, 42, () => {});
+facebookConnectPlugin.logEvent("a", {}, 42, () => {}, (error: string) => {});
+
+facebookConnectPlugin.logPurchase(42, "a");
+facebookConnectPlugin.logPurchase(42, "a", () => {});
+facebookConnectPlugin.logPurchase(42, "a", () => {}, (error: string) => {});
+
+facebookConnectPlugin.login(["a", "b"], (result: PhonegapFacebookPlugin.LoginResult) => {
+ var accessToken: string = result.authResponse.accessToken;
+ var expiresIn: string = result.authResponse.expiresIn;
+ var secret: string = result.authResponse.secret;
+ var session_key: boolean = result.authResponse.session_key;
+ var sig: string = result.authResponse.sig;
+ var userID: string = result.authResponse.userID;
+ var status: string = result.status;
+}, (error: string) => {});
+
+facebookConnectPlugin.logout();
+facebookConnectPlugin.logout(() => {});
+facebookConnectPlugin.logout(() => {}, (error: string) => {});
+
+//#region BaseDialog
+
+var baseDialogOptions: PhonegapFacebookPlugin.BaseDialogOptions = {
+ method: "a"
+};
+
+facebookConnectPlugin.showDialog(baseDialogOptions, (status: PhonegapFacebookPlugin.BaseDialogResult) => {}, (error: string) => {});
+
+//#endregion
+
+//#region Feed Dialog
+
+var feedDialogOptions: PhonegapFacebookPlugin.FeedDialogOptions = {
+ method: "feed",
+ from: "a",
+ to: "b",
+ link: "c",
+ picture: "d",
+ source: "e",
+ name: "f",
+ caption: "g",
+ description: "h",
+ ref: "i"
+};
+
+facebookConnectPlugin.showDialog(feedDialogOptions, (status: PhonegapFacebookPlugin.FeedDialogResult) => {
+ var post_id: string = status.post_id;
+}, (error: string) => {});
+
+//#endregion
+
+//#region Send Dialog
+
+var sendDialogOptions: PhonegapFacebookPlugin.SendDialogOptions = {
+ method: "send",
+ to: "a",
+ link: "b"
+};
+
+facebookConnectPlugin.showDialog(sendDialogOptions, (status: PhonegapFacebookPlugin.SendDialogResult) => {
+}, (error: string) => {});
+
+//#endregion
+
+//#region Share Dialog
+
+var shareDialogOptions: PhonegapFacebookPlugin.ShareDialogOptions = {
+ method: "share",
+ href: "a"
+};
+
+facebookConnectPlugin.showDialog(shareDialogOptions, (status: PhonegapFacebookPlugin.ShareDialogResult) => {
+ var post_id: string = status.post_id;
+}, (error: string) => {});
+
+//#endregion
+
+//#region Share Open Graph Dialog
+
+var shareOpenGraphDialogOptions: PhonegapFacebookPlugin.ShareOpenGraphDialogOptions = {
+ method: "share_open_graph",
+ action_type: "a",
+ action_properties: "b"
+};
+
+facebookConnectPlugin.showDialog(shareOpenGraphDialogOptions, (status: PhonegapFacebookPlugin.ShareDialogResult) => {
+ var post_id: string = status.post_id;
+}, (error: string) => {});
+
+//#endregion
\ No newline at end of file
diff --git a/phonegap-facebook-plugin/phonegap-facebook-plugin.d.ts b/phonegap-facebook-plugin/phonegap-facebook-plugin.d.ts
new file mode 100644
index 0000000000..02544b3b86
--- /dev/null
+++ b/phonegap-facebook-plugin/phonegap-facebook-plugin.d.ts
@@ -0,0 +1,292 @@
+// Type definitions for phonegap-facebook-plugin 0.11.0
+// Project: https://github.com/Wizcorp/phonegap-facebook-plugin
+// Definitions by: Justin Unterreiner
+// Definitions: https://github.com/borisyankov/DefinitelyTyped
+
+declare module PhonegapFacebookPlugin {
+
+ //#region API Methods
+
+ interface FacebookConnectPluginStatic {
+
+ /**
+ * Allows access to the Facebook Graph API. This API allows for additional permission because, unlike login, the Graph API can
+ * accept multiple permissions. In order to make calls to the Graph API on behalf of a user, the user has to be logged into your
+ * app using Facebook login.
+ *
+ * @param graphPath The graph API path to use for the query.
+ * @param permissions The permissions to request.
+ * @param successCallback The callback to be executed when the call completes successfully.
+ * @param failureCallback The callback to be executed when the call fails.
+ */
+ api: (graphPath: string, permissions: string[], successCallback?: (result: any) => void, failureCallback?: (error: string) => void) => void;
+
+ /**
+ * Used to retreive the access token for the current user.
+ *
+ * @param successCallback The callback to be executed when the call completes successfully.
+ * @param failureCallback The callback to be executed when the call fails.
+ */
+ getAccessToken: (successCallback?: (token: string) => void, failureCallback?: (error: string) => void) => void;
+
+ /**
+ * Used to get the login status for the current user.
+ *
+ * @param successCallback The callback to be executed when the call completes successfully.
+ * @param failureCallback The callback to be executed when the call fails.
+ */
+ getLoginStatus: (successCallback?: (status: LoginResult) => void, failureCallback?: (error: string) => void) => void;
+
+ /**
+ * Used to log an event.
+ *
+ * @param name Name of the event.
+ * @param params Extra data to log with the event (optional).
+ * @param valueToSum a property which is an arbitrary number that can represent any value (e.g., a price or a quantity).
+ * When reported, all of the valueToSum properties will be summed together. For example, if 10 people each purchased
+ * one item that cost $10 (and passed in valueToSum) then they would be summed to report a number of $100. (optional)
+ * @param successCallback The callback to be executed when the call completes successfully.
+ * @param failureCallback The callback to be executed when the call fails.
+ */
+ logEvent: (name: string, params?: any, valueToSum?: number, successCallback?: () => void, failureCallback?: (error: string) => void) => void;
+
+ /**
+ * Used to log a purchase.
+ *
+ * @param value The value of the purchase.
+ * @param currency An ISO-4217 currency code.
+ * @param successCallback The callback to be executed when the call completes successfully.
+ * @param failureCallback The callback to be executed when the call fails.
+ */
+ logPurchase: (value: number, currency: string, successCallback?: () => void, failureCallback?: (error: string) => void) => void;
+
+ /**
+ * Used to log the user in via Facebook. Calling this will result in a Facebook login dialog (or external
+ * webpage) launching. Once the user completes the flow, one of the two callbacks will be executed.
+ *
+ * @param permissions The permissions to request during login.
+ * @param successCallback The callback to be executed when the call completes successfully.
+ * @param failureCallback The callback to be executed when the call fails.
+ */
+ login: (permissions: string[], successCallback?: (result: LoginResult) => void, failureCallback?: (error: string) => void) => void;
+
+ /**
+ * Used to log the user out of Facebook. This will invalidate their access token.
+ *
+ * @param successCallback The callback to be executed when the call completes successfully.
+ * @param failureCallback The callback to be executed when the call fails.
+ */
+ logout: (successCallback?: () => void, failureCallback?: (error: string) => void) => void;
+
+ /**
+ * Used to open a Facebook dialog.
+ *
+ * @param options The options that control the dialog and it's behavior.
+ * @param successCallback The callback to be executed when the call completes successfully.
+ * @param failureCallback The callback to be executed when the call fails.
+ */
+ showDialog: (options: BaseDialogOptions, successCallback?: (status: BaseDialogResult) => void, failureCallback?: (error: string) => void) => void;
+ }
+
+ //#endregion
+
+ //#region Method Parameters
+
+ interface BaseDialogOptions {
+
+ /**
+ * The type of dialog to show, can be one of the following.
+ *
+ * Depeneding on the type, a different options object will be used:
+ *
+ * Method Options Type
+ * feed FeedDialogOptions
+ * send SendDialogOptions
+ * share ShareDialogOptions
+ * share_open_graph ShareOpenGraphDialogOptions
+ */
+ method: string;
+ }
+
+ /**
+ * You can add the Feed Dialog to your app so people can publish individual stories to their timeline. This
+ * includes captions that your app manages and a personal comment from the person sharing the content.
+ *
+ * For use with showDialog() of method type 'feed'.
+ */
+ interface FeedDialogOptions extends BaseDialogOptions {
+
+ /**
+ * The ID of the person posting the message. If this is unspecified, it defaults to the current person.
+ * If specified, it must be the ID of the person or of a page that the person administers.
+ */
+ from?: string;
+
+ /**
+ * The ID of the profile that this story will be published to. If this is unspecified, it defaults to
+ * the value of from. The ID must be a friend who also uses your app.
+ */
+ to?: string;
+
+ /**
+ * The link attached to this post.
+ */
+ link?: string;
+
+ /**
+ * The URL of a picture attached to this post. The picture must be at least 200px by 200px.
+ */
+ picture?: string;
+
+ /**
+ * The URL of a media file (either SWF or MP3) attached to this post. If SWF, you must also specify
+ * 'picture' to provide a thumbnail for the video.
+ */
+ source?: string;
+
+ /**
+ * The name of the link attachment.
+ */
+ name?: string;
+
+ /**
+ * The caption of the link (appears beneath the link name). If not specified, this field is automatically
+ * populated with the URL of the link.
+ */
+ caption?: string;
+
+ /**
+ * The description of the link (appears beneath the link caption). If not specified, this field is
+ * automatically populated by information scraped from the link, typically the title of the page.
+ */
+ description?: string;
+
+ /**
+ * This argument is a comma-separated list, consisting of at most 5 distinct items, each of length at
+ * least 1 and at most 15 characters drawn from the set
+ * '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_'.
+ * Each category is used in Facebook Insights to help you measure the performance of different types
+ * of post.
+ */
+ ref?: string;
+ }
+
+ /**
+ * The Send Dialog lets people privately send content to specific friends. They'll have the option to privately
+ * share a link as a Facebook message or group post. The Send Dialog does not require any extended permissions.
+ *
+ * For use with showDialog() of method type 'send'.
+ */
+ interface SendDialogOptions extends BaseDialogOptions {
+
+ /**
+ * A user ID of a recipient. Once the dialog comes up, the sender can specify additional people, and groups
+ * addresses as recipients. Sending content to a Facebook group will post it to the group's wall.
+ */
+ to: string;
+
+ /**
+ * Required parameter. The URL that is being sent in the message.
+ */
+ link: string;
+ }
+
+ /**
+ * The Share dialog prompts a person to publish an individual story or an Open Graph story to their timeline.
+ * This does not require Facebook Login or any extended permissions, so it is the easiest way to enable
+ * sharing on web.
+ *
+ * For use with showDialog() of method type 'share'.
+ */
+ interface ShareDialogOptions extends BaseDialogOptions {
+
+ /**
+ * The link attached to this post. Required when using method share. Include open graph meta tags in the
+ * page at this URL to customize the story that is shared.
+ */
+ href: string;
+ }
+
+ /**
+ * The Share dialog prompts a person to publish an individual story or an Open Graph story to their timeline.
+ * This does not require Facebook Login or any extended permissions, so it is the easiest way to enable
+ * sharing on web.
+ *
+ * For use with showDialog() of method type 'share_open_graph'.
+ */
+ interface ShareOpenGraphDialogOptions extends BaseDialogOptions {
+
+ /**
+ * A string specifying which Open Graph action type to publish, e.g., og.likes for the built in like type.
+ * The dialog also supports approved custom types.
+ */
+ action_type: string;
+
+ /**
+ * A JSON object of key/value pairs specifying parameters which correspond to the action_type being used.
+ * Valid key/value pairs are the same parameters that can be used when publishing Open Graph Actions using
+ * the API.
+ */
+ action_properties: string;
+ }
+
+ //#endregion
+
+ //#region Callback Results
+
+ /**
+ * Result for the login() and getLoginStatus() success callbacks.
+ */
+ interface LoginResult {
+ authResponse: {
+ accessToken: string;
+ expiresIn: string;
+ secret: string;
+ session_key: boolean;
+ sig: string;
+ userID: string;
+ },
+ status: string;
+ }
+
+ /**
+ * The base result type for all showDialog() success callbacks.
+ */
+ interface BaseDialogResult {
+ error_code: string;
+ error_message: string;
+ }
+
+ /**
+ * The response object returned from a success callback for showDialog() of type 'feed'.
+ */
+ interface FeedDialogResult extends BaseDialogResult {
+
+ /**
+ * The ID of the posted story, if the person chose to publish.
+ */
+ post_id: string;
+ }
+
+ /**
+ * The response object returned from a success callback for showDialog() of type 'send'.
+ */
+ interface SendDialogResult extends BaseDialogResult {
+ }
+
+ /**
+ * The response object returned from a success callback for showDialog() of type 'share' or 'share_open_graph'.
+ */
+ interface ShareDialogResult extends BaseDialogResult {
+
+ /**
+ * Only available if the user is logged into your app using Facebook and has granted publish_actions.
+ * If present, this is the ID of the published Open Graph story.
+ */
+ post_id: string;
+ }
+
+ //#endregion
+}
+
+declare var facebookConnectPlugin: PhonegapFacebookPlugin.FacebookConnectPluginStatic;
\ No newline at end of file