/**@class android.accounts.AbstractAccountAuthenticator
@extends java.lang.Object

 Abstract base class for creating AccountAuthenticators.
 In order to be an authenticator one must extend this class, provider implementations for the
 abstract methods and write a service that returns the result of {@link #getIBinder}()
 in the service's {@link android.app.Service#onBind(android.content.Intent)} when invoked
 with an intent with action {@link android.accounts.AccountManager#ACTION_AUTHENTICATOR_INTENT}. This service
 must specify the following intent filter and metadata tags in its AndroidManifest.xml file
 <pre>
   &lt;intent-filter&gt;
     &lt;action android:name="android.accounts.AccountAuthenticator" /&gt;
   &lt;/intent-filter&gt;
   &lt;meta-data android:name="android.accounts.AccountAuthenticator"
             android:resource="@xml/authenticator" /&gt;
 </pre>
 The <code>android:resource</code> attribute must point to a resource that looks like:
 <pre>
 &lt;account-authenticator xmlns:android="http://schemas.android.com/apk/res/android"
    android:accountType="typeOfAuthenticator"
    android:icon="@drawable/icon"
    android:smallIcon="@drawable/miniIcon"
    android:label="@string/label"
    android:accountPreferences="@xml/account_preferences"
 /&gt;
 </pre>
 Replace the icons and labels with your own resources. The <code>android:accountType</code>
 attribute must be a string that uniquely identifies your authenticator and will be the same
 string that user will use when making calls on the {@link android.accounts.AccountManager} and it also
 corresponds to {@link android.accounts.Account#type} for your accounts. One user of the android:icon is the
 "Account & Sync" settings page and one user of the android:smallIcon is the Contact Application's
 tab panels.
 <p>
 The preferences attribute points to a PreferenceScreen xml hierarchy that contains
 a list of PreferenceScreens that can be invoked to manage the authenticator. An example is:
 <pre>
 &lt;PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"&gt;
    &lt;PreferenceCategory android:title="@string/title_fmt" /&gt;
    &lt;PreferenceScreen
         android:key="key1"
         android:title="@string/key1_action"
         android:summary="@string/key1_summary"&gt;
         &lt;intent
             android:action="key1.ACTION"
             android:targetPackage="key1.package"
             android:targetClass="key1.class" /&gt;
     &lt;/PreferenceScreen&gt;
 &lt;/PreferenceScreen&gt;
 </pre>

 <p>
 The standard pattern for implementing any of the abstract methods is the following:
 <ul>
 <li> If the supplied arguments are enough for the authenticator to fully satisfy the request
 then it will do so and return a {@link Bundle} that contains the results.
 <li> If the authenticator needs information from the user to satisfy the request then it
 will create an {@link Intent} to an activity that will prompt the user for the information
 and then carry out the request. This intent must be returned in a Bundle as key
 {@link android.accounts.AccountManager#KEY_INTENT}.
 <p>
 The activity needs to return the final result when it is complete so the Intent should contain
 the {@link android.accounts.AccountAuthenticatorResponse} as {@link android.accounts.AccountManager#KEY_ACCOUNT_MANAGER_RESPONSE}.
 The activity must then call {@link android.accounts.AccountAuthenticatorResponse#onResult} or
 {@link android.accounts.AccountAuthenticatorResponse#onError} when it is complete.
 <li> If the authenticator cannot synchronously process the request and return a result then it
 may choose to return null and then use the AccountManagerResponse to send the result
 when it has completed the request.
 </ul>
 <p>
 The following descriptions of each of the abstract authenticator methods will not describe the
 possible asynchronous nature of the request handling and will instead just describe the input
 parameters and the expected result.
 <p>
 When writing an activity to satisfy these requests one must pass in the AccountManagerResponse
 and return the result via that response when the activity finishes (or whenever else  the
 activity author deems it is the correct time to respond).
 The {@link android.accounts.AccountAuthenticatorActivity} handles this, so one may wish to extend that when
 writing activities to handle these requests.
*/
var AbstractAccountAuthenticator = {

/** Bundle key used for the {@code long} expiration time (in millis from the unix epoch) of the
 associated auth token.

 @see #getAuthToken
*/
KEY_CUSTOM_TOKEN_EXPIRY : "android.accounts.expiry",
/**
@return {Object {android.os.IBinder}} the IBinder for the AccountAuthenticator
*/
getIBinder : function(  ) {},

/**Returns a Bundle that contains the Intent of the activity that can be used to edit the
 properties. In order to indicate success the activity should call response.setResult()
 with a non-null Bundle.
@param {Object {AccountAuthenticatorResponse}} response used to set the result for the request. If the Constants.INTENT_KEY
   is set in the bundle then this response field is to be used for sending future
   results if and when the Intent is started.
@param {String} accountType the AccountType whose properties are to be edited.
@return {Object {android.os.Bundle}} a Bundle containing the result or the Intent to start to continue the request.
   If this is null then the request is considered to still be active and the result should
   sent later using response.
*/
editProperties : function(  ) {},

/**Adds an account of the specified accountType.
@param {Object {AccountAuthenticatorResponse}} response to send the result back to the AccountManager, will never be null
@param {String} accountType the type of account to add, will never be null
@param {String} authTokenType the type of auth token to retrieve after adding the account, may be null
@param {Object {java.lang.String[]}} requiredFeatures a String array of authenticator-specific features that the added
 account must support, may be null
@param {Object {Bundle}} options a Bundle of authenticator-specific options, may be null
@return {Object {android.os.Bundle}} a Bundle result or null if the result is to be returned via the response. The result
 will contain either:
 <ul>
 <li> {@link AccountManager#KEY_INTENT}, or
 <li> {@link AccountManager#KEY_ACCOUNT_NAME} and {@link AccountManager#KEY_ACCOUNT_TYPE} of
 the account that was added, or
 <li> {@link AccountManager#KEY_ERROR_CODE} and {@link AccountManager#KEY_ERROR_MESSAGE} to
 indicate an error
 </ul>
@throws NetworkErrorException if the authenticator could not honor the request due to a
 network error
*/
addAccount : function(  ) {},

/**Checks that the user knows the credentials of an account.
@param {Object {AccountAuthenticatorResponse}} response to send the result back to the AccountManager, will never be null
@param {Object {Account}} account the account whose credentials are to be checked, will never be null
@param {Object {Bundle}} options a Bundle of authenticator-specific options, may be null
@return {Object {android.os.Bundle}} a Bundle result or null if the result is to be returned via the response. The result
 will contain either:
 <ul>
 <li> {@link AccountManager#KEY_INTENT}, or
 <li> {@link AccountManager#KEY_BOOLEAN_RESULT}, true if the check succeeded, false otherwise
 <li> {@link AccountManager#KEY_ERROR_CODE} and {@link AccountManager#KEY_ERROR_MESSAGE} to
 indicate an error
 </ul>
@throws NetworkErrorException if the authenticator could not honor the request due to a
 network error
*/
confirmCredentials : function(  ) {},

/**Gets an authtoken for an account.

 If not {@code null}, the resultant {@link Bundle} will contain different sets of keys
 depending on whether a token was successfully issued and, if not, whether one
 could be issued via some {@link android.app.Activity}.
 <p>
 If a token cannot be provided without some additional activity, the Bundle should contain
 {@link android.accounts.AccountManager#KEY_INTENT} with an associated {@link Intent}. On the other hand, if
 there is no such activity, then a Bundle containing
 {@link android.accounts.AccountManager#KEY_ERROR_CODE} and {@link android.accounts.AccountManager#KEY_ERROR_MESSAGE} should be
 returned.
 <p>
 If a token can be successfully issued, the implementation should return the
 {@link android.accounts.AccountManager#KEY_ACCOUNT_NAME} and {@link android.accounts.AccountManager#KEY_ACCOUNT_TYPE} of the
 account associated with the token as well as the {@link android.accounts.AccountManager#KEY_AUTHTOKEN}. In
 addition {@link android.accounts.AbstractAccountAuthenticator} implementations that declare themselves
 {@code android:customTokens=true} may also provide a non-negative {@link #KEY_CUSTOM_TOKEN_EXPIRY} long value containing the expiration timestamp of the expiration
 time (in millis since the unix epoch).
 <p>
 Implementers should assume that tokens will be cached on the basis of account and
 authTokenType. The system may ignore the contents of the supplied options Bundle when
 determining to re-use a cached token. Furthermore, implementers should assume a supplied
 expiration time will be treated as non-binding advice.
 <p>
 Finally, note that for android:customTokens=false authenticators, tokens are cached
 indefinitely until some client calls {@link android.accounts.AccountManager#invalidateAuthToken(String,String)}.
@param {Object {AccountAuthenticatorResponse}} response to send the result back to the AccountManager, will never be null
@param {Object {Account}} account the account whose credentials are to be retrieved, will never be null
@param {String} authTokenType the type of auth token to retrieve, will never be null
@param {Object {Bundle}} options a Bundle of authenticator-specific options, may be null
@return {Object {android.os.Bundle}} a Bundle result or null if the result is to be returned via the response.
@throws NetworkErrorException if the authenticator could not honor the request due to a
 network error
*/
getAuthToken : function(  ) {},

/**Ask the authenticator for a localized label for the given authTokenType.
@param {String} authTokenType the authTokenType whose label is to be returned, will never be null
@return {String} the localized label of the auth token type, may be null if the type isn't known
*/
getAuthTokenLabel : function(  ) {},

/**Update the locally stored credentials for an account.
@param {Object {AccountAuthenticatorResponse}} response to send the result back to the AccountManager, will never be null
@param {Object {Account}} account the account whose credentials are to be updated, will never be null
@param {String} authTokenType the type of auth token to retrieve after updating the credentials,
 may be null
@param {Object {Bundle}} options a Bundle of authenticator-specific options, may be null
@return {Object {android.os.Bundle}} a Bundle result or null if the result is to be returned via the response. The result
 will contain either:
 <ul>
 <li> {@link AccountManager#KEY_INTENT}, or
 <li> {@link AccountManager#KEY_ACCOUNT_NAME} and {@link AccountManager#KEY_ACCOUNT_TYPE} of
 the account whose credentials were updated, or
 <li> {@link AccountManager#KEY_ERROR_CODE} and {@link AccountManager#KEY_ERROR_MESSAGE} to
 indicate an error
 </ul>
@throws NetworkErrorException if the authenticator could not honor the request due to a
 network error
*/
updateCredentials : function(  ) {},

/**Checks if the account supports all the specified authenticator specific features.
@param {Object {AccountAuthenticatorResponse}} response to send the result back to the AccountManager, will never be null
@param {Object {Account}} account the account to check, will never be null
@param {Object {java.lang.String[]}} features an array of features to check, will never be null
@return {Object {android.os.Bundle}} a Bundle result or null if the result is to be returned via the response. The result
 will contain either:
 <ul>
 <li> {@link AccountManager#KEY_INTENT}, or
 <li> {@link AccountManager#KEY_BOOLEAN_RESULT}, true if the account has all the features,
 false otherwise
 <li> {@link AccountManager#KEY_ERROR_CODE} and {@link AccountManager#KEY_ERROR_MESSAGE} to
 indicate an error
 </ul>
@throws NetworkErrorException if the authenticator could not honor the request due to a
 network error
*/
hasFeatures : function(  ) {},

/**Checks if the removal of this account is allowed.
@param {Object {AccountAuthenticatorResponse}} response to send the result back to the AccountManager, will never be null
@param {Object {Account}} account the account to check, will never be null
@return {Object {android.os.Bundle}} a Bundle result or null if the result is to be returned via the response. The result
 will contain either:
 <ul>
 <li> {@link AccountManager#KEY_INTENT}, or
 <li> {@link AccountManager#KEY_BOOLEAN_RESULT}, true if the removal of the account is
 allowed, false otherwise
 <li> {@link AccountManager#KEY_ERROR_CODE} and {@link AccountManager#KEY_ERROR_MESSAGE} to
 indicate an error
 </ul>
@throws NetworkErrorException if the authenticator could not honor the request due to a
 network error
*/
getAccountRemovalAllowed : function(  ) {},

/**Returns a Bundle that contains whatever is required to clone the account on a different
 user. The Bundle is passed to the authenticator instance in the target user via
 {@link #addandroid.accounts.AccountFromCredentials(android.accounts.AccountAuthenticatorResponse, android.accounts.Account, Bundle)}.
 The default implementation returns null, indicating that cloning is not supported.
@param {Object {AccountAuthenticatorResponse}} response to send the result back to the AccountManager, will never be null
@param {Object {Account}} account the account to clone, will never be null
@return {Object {android.os.Bundle}} a Bundle result or null if the result is to be returned via the response.
@throws NetworkErrorException
@see {@link #addAccountFromCredentials(AccountAuthenticatorResponse, Account, Bundle)}
*/
getAccountCredentialsForCloning : function(  ) {},

/**Creates an account based on credentials provided by the authenticator instance of another
 user on the device, who has chosen to share the account with this user.
@param {Object {AccountAuthenticatorResponse}} response to send the result back to the AccountManager, will never be null
@param {Object {Account}} account the account to clone, will never be null
@param {Object {Bundle}} accountCredentials the Bundle containing the required credentials to create the
 account. Contents of the Bundle are only meaningful to the authenticator. This Bundle is
 provided by {@link #getAccountCredentialsForCloning(AccountAuthenticatorResponse, Account)}.
@return {Object {android.os.Bundle}} a Bundle result or null if the result is to be returned via the response.
@throws NetworkErrorException
@see {@link #getAccountCredentialsForCloning(AccountAuthenticatorResponse, Account)}
*/
addAccountFromCredentials : function(  ) {},


};