package android.support.text.emoji {

  public class EmojiCompat {
    method public static android.support.text.emoji.EmojiCompat get();
    method public java.lang.String getAssetSignature();
    method public int getLoadState();
    method public static boolean handleDeleteSurroundingText(android.view.inputmethod.InputConnection, android.text.Editable, int, int, boolean);
    method public static boolean handleOnKeyDown(android.text.Editable, int, android.view.KeyEvent);
    method public boolean hasEmojiGlyph(java.lang.CharSequence);
    method public boolean hasEmojiGlyph(java.lang.CharSequence, int);
    method public static android.support.text.emoji.EmojiCompat init(android.support.text.emoji.EmojiCompat.Config);
    method public java.lang.CharSequence process(java.lang.CharSequence);
    method public java.lang.CharSequence process(java.lang.CharSequence, int, int);
    method public java.lang.CharSequence process(java.lang.CharSequence, int, int, int);
    method public java.lang.CharSequence process(java.lang.CharSequence, int, int, int, int);
    method public void registerInitCallback(android.support.text.emoji.EmojiCompat.InitCallback);
    method public void unregisterInitCallback(android.support.text.emoji.EmojiCompat.InitCallback);
    field public static final java.lang.String EDITOR_INFO_METAVERSION_KEY = "android.support.text.emoji.emojiCompat_metadataVersion";
    field public static final java.lang.String EDITOR_INFO_REPLACE_ALL_KEY = "android.support.text.emoji.emojiCompat_replaceAll";
    field public static final int LOAD_STATE_FAILED = 2; // 0x2
    field public static final int LOAD_STATE_LOADING = 0; // 0x0
    field public static final int LOAD_STATE_SUCCEEDED = 1; // 0x1
    field public static final int REPLACE_STRATEGY_ALL = 1; // 0x1
    field public static final int REPLACE_STRATEGY_DEFAULT = 0; // 0x0
    field public static final int REPLACE_STRATEGY_NON_EXISTENT = 2; // 0x2
  }

  public static abstract class EmojiCompat.Config {
    ctor protected EmojiCompat.Config(android.support.text.emoji.EmojiCompat.MetadataRepoLoader);
    method protected final android.support.text.emoji.EmojiCompat.MetadataRepoLoader getMetadataRepoLoader();
    method public android.support.text.emoji.EmojiCompat.Config registerInitCallback(android.support.text.emoji.EmojiCompat.InitCallback);
    method public android.support.text.emoji.EmojiCompat.Config setEmojiSpanIndicatorColor(int);
    method public android.support.text.emoji.EmojiCompat.Config setEmojiSpanIndicatorEnabled(boolean);
    method public android.support.text.emoji.EmojiCompat.Config setReplaceAll(boolean);
    method public android.support.text.emoji.EmojiCompat.Config unregisterInitCallback(android.support.text.emoji.EmojiCompat.InitCallback);
  }

  public static abstract class EmojiCompat.InitCallback {
    ctor public EmojiCompat.InitCallback();
    method public void onFailed(java.lang.Throwable);
    method public void onInitialized();
  }

  public static abstract interface EmojiCompat.MetadataRepoLoader {
    method public abstract void load(android.support.text.emoji.EmojiCompat.MetadataRepoLoaderCallback);
  }

  public static abstract class EmojiCompat.MetadataRepoLoaderCallback {
    ctor public EmojiCompat.MetadataRepoLoaderCallback();
    method public abstract void onFailed(java.lang.Throwable);
    method public abstract void onLoaded(android.support.text.emoji.MetadataRepo);
  }

  public abstract class EmojiSpan extends android.text.style.ReplacementSpan {
    method public int getSize(android.graphics.Paint, java.lang.CharSequence, int, int, android.graphics.Paint.FontMetricsInt);
  }

  public class FontRequestEmojiCompatConfig extends android.support.text.emoji.EmojiCompat.Config {
    ctor public FontRequestEmojiCompatConfig(android.content.Context, android.support.v4.provider.FontRequest);
    method public android.support.text.emoji.FontRequestEmojiCompatConfig setHandler(android.os.Handler);
    method public android.support.text.emoji.FontRequestEmojiCompatConfig setRetryPolicy(android.support.text.emoji.FontRequestEmojiCompatConfig.RetryPolicy);
  }

  public static class FontRequestEmojiCompatConfig.ExponentialBackoffRetryPolicy extends android.support.text.emoji.FontRequestEmojiCompatConfig.RetryPolicy {
    ctor public FontRequestEmojiCompatConfig.ExponentialBackoffRetryPolicy(long);
    method public long getRetryDelay();
  }

  public static abstract class FontRequestEmojiCompatConfig.RetryPolicy {
    ctor public FontRequestEmojiCompatConfig.RetryPolicy();
    method public abstract long getRetryDelay();
  }

  public final class MetadataRepo {
    method public static android.support.text.emoji.MetadataRepo create(android.graphics.Typeface, java.io.InputStream) throws java.io.IOException;
    method public static android.support.text.emoji.MetadataRepo create(android.graphics.Typeface, java.nio.ByteBuffer) throws java.io.IOException;
    method public static android.support.text.emoji.MetadataRepo create(android.content.res.AssetManager, java.lang.String) throws java.io.IOException;
  }

}

package android.support.text.emoji.widget {

  public class EmojiButton extends android.widget.Button {
    ctor public EmojiButton(android.content.Context);
    ctor public EmojiButton(android.content.Context, android.util.AttributeSet);
    ctor public EmojiButton(android.content.Context, android.util.AttributeSet, int);
    ctor public EmojiButton(android.content.Context, android.util.AttributeSet, int, int);
  }

  public class EmojiEditText extends android.widget.EditText {
    ctor public EmojiEditText(android.content.Context);
    ctor public EmojiEditText(android.content.Context, android.util.AttributeSet);
    ctor public EmojiEditText(android.content.Context, android.util.AttributeSet, int);
    ctor public EmojiEditText(android.content.Context, android.util.AttributeSet, int, int);
    method public int getMaxEmojiCount();
    method public void setMaxEmojiCount(int);
  }

  public final class EmojiEditTextHelper {
    ctor public EmojiEditTextHelper(android.widget.EditText);
    method public android.text.method.KeyListener getKeyListener(android.text.method.KeyListener);
    method public int getMaxEmojiCount();
    method public android.view.inputmethod.InputConnection onCreateInputConnection(android.view.inputmethod.InputConnection, android.view.inputmethod.EditorInfo);
    method public void setMaxEmojiCount(int);
  }

  public class EmojiExtractTextLayout extends android.widget.LinearLayout {
    ctor public EmojiExtractTextLayout(android.content.Context);
    ctor public EmojiExtractTextLayout(android.content.Context, android.util.AttributeSet);
    ctor public EmojiExtractTextLayout(android.content.Context, android.util.AttributeSet, int);
    ctor public EmojiExtractTextLayout(android.content.Context, android.util.AttributeSet, int, int);
    method public int getEmojiReplaceStrategy();
    method public void onUpdateExtractingViews(android.inputmethodservice.InputMethodService, android.view.inputmethod.EditorInfo);
    method public void setEmojiReplaceStrategy(int);
  }

  public class EmojiTextView extends android.widget.TextView {
    ctor public EmojiTextView(android.content.Context);
    ctor public EmojiTextView(android.content.Context, android.util.AttributeSet);
    ctor public EmojiTextView(android.content.Context, android.util.AttributeSet, int);
    ctor public EmojiTextView(android.content.Context, android.util.AttributeSet, int, int);
  }

  public final class EmojiTextViewHelper {
    ctor public EmojiTextViewHelper(android.widget.TextView);
    method public android.text.InputFilter[] getFilters(android.text.InputFilter[]);
    method public void setAllCaps(boolean);
    method public void updateTransformationMethod();
    method public android.text.method.TransformationMethod wrapTransformationMethod(android.text.method.TransformationMethod);
  }

}

