// Signature format: 4.0
package androidx.wear.watchface {

  public interface CanvasComplication {
    method public void clearIdAndData();
    method public androidx.wear.complications.data.IdAndComplicationData? getIdAndData();
    method public boolean isHighlighted();
    method @UiThread public void onAttach(androidx.wear.watchface.Complication complication);
    method @UiThread public void onDetach();
    method @UiThread public void render(android.graphics.Canvas canvas, android.graphics.Rect bounds, android.icu.util.Calendar calendar, androidx.wear.watchface.RenderParameters renderParameters);
    method public void setIdAndData(androidx.wear.complications.data.IdAndComplicationData? idAndComplicationData, boolean loadDrawablesAsynchronous);
    method public void setIsHighlighted(boolean p);
    property public abstract boolean isHighlighted;
  }

  public class CanvasComplicationDrawable implements androidx.wear.watchface.CanvasComplication {
    ctor public CanvasComplicationDrawable(androidx.wear.watchface.complications.rendering.ComplicationDrawable drawable, androidx.wear.watchface.WatchState watchState);
    method public void clearIdAndData();
    method public void drawOutline(android.graphics.Canvas canvas, android.graphics.Rect bounds, android.icu.util.Calendar calendar, @ColorInt int color);
    method public final androidx.wear.watchface.complications.rendering.ComplicationDrawable getDrawable();
    method public androidx.wear.complications.data.IdAndComplicationData? getIdAndData();
    method @UiThread public boolean isHighlighted();
    method public void onAttach(androidx.wear.watchface.Complication complication);
    method public void onDetach();
    method public void render(android.graphics.Canvas canvas, android.graphics.Rect bounds, android.icu.util.Calendar calendar, androidx.wear.watchface.RenderParameters renderParameters);
    method public final void setDrawable(androidx.wear.watchface.complications.rendering.ComplicationDrawable value);
    method public void setIdAndData(androidx.wear.complications.data.IdAndComplicationData? idAndComplicationData, boolean loadDrawablesAsynchronous);
    method @UiThread public void setIsHighlighted(boolean value);
    property public final androidx.wear.watchface.complications.rendering.ComplicationDrawable drawable;
    property @UiThread public boolean isHighlighted;
  }

  public final class Complication {
    method public android.graphics.Rect computeBounds(android.graphics.Rect screen);
    method public static androidx.wear.watchface.Complication.Builder createBackgroundComplicationBuilder(int id, androidx.wear.watchface.CanvasComplication renderer, java.util.List<? extends androidx.wear.complications.data.ComplicationType> supportedTypes, androidx.wear.complications.DefaultComplicationProviderPolicy defaultProviderPolicy);
    method public static androidx.wear.watchface.Complication.Builder createRoundRectComplicationBuilder(int id, androidx.wear.watchface.CanvasComplication renderer, java.util.List<? extends androidx.wear.complications.data.ComplicationType> supportedTypes, androidx.wear.complications.DefaultComplicationProviderPolicy defaultProviderPolicy, androidx.wear.complications.ComplicationBounds complicationBounds);
    method public int getBoundsType();
    method @UiThread public androidx.wear.complications.ComplicationBounds getComplicationBounds();
    method public android.os.Bundle? getComplicationConfigExtras();
    method public androidx.wear.watchface.ObservableWatchData<androidx.wear.complications.data.ComplicationData> getComplicationData();
    method @UiThread public androidx.wear.complications.DefaultComplicationProviderPolicy getDefaultProviderPolicy();
    method @UiThread public androidx.wear.complications.data.ComplicationType getDefaultProviderType();
    method @UiThread public androidx.wear.watchface.CanvasComplication getRenderer();
    method @UiThread public java.util.List<androidx.wear.complications.data.ComplicationType> getSupportedTypes();
    method public void invalidate();
    method public boolean isActiveAt(long dateTimeMillis);
    method @UiThread public boolean isEnabled();
    method public boolean isFixedComplicationProvider();
    method public boolean isInitiallyEnabled();
    method @UiThread public void render(android.graphics.Canvas canvas, android.icu.util.Calendar calendar, androidx.wear.watchface.RenderParameters renderParameters);
    method @UiThread public void setComplicationBounds(androidx.wear.complications.ComplicationBounds value);
    method @UiThread public void setRenderer(androidx.wear.watchface.CanvasComplication value);
    property public final int boundsType;
    property @UiThread public final androidx.wear.complications.ComplicationBounds complicationBounds;
    property public final android.os.Bundle? complicationConfigExtras;
    property public final androidx.wear.watchface.ObservableWatchData<androidx.wear.complications.data.ComplicationData> complicationData;
    property @UiThread public final androidx.wear.complications.DefaultComplicationProviderPolicy defaultProviderPolicy;
    property @UiThread public final androidx.wear.complications.data.ComplicationType defaultProviderType;
    property @UiThread public final boolean enabled;
    property public final boolean fixedComplicationProvider;
    property public final boolean initiallyEnabled;
    property @UiThread public final androidx.wear.watchface.CanvasComplication renderer;
    property @UiThread public final java.util.List<androidx.wear.complications.data.ComplicationType> supportedTypes;
    field public static final androidx.wear.watchface.Complication.Companion Companion;
  }

  public static final class Complication.Builder {
    method public androidx.wear.watchface.Complication build();
    method public androidx.wear.watchface.Complication.Builder setComplicationConfigExtras(android.os.Bundle? extras);
    method public androidx.wear.watchface.Complication.Builder setDefaultProviderType(androidx.wear.complications.data.ComplicationType defaultProviderType);
    method public androidx.wear.watchface.Complication.Builder setEnabled(boolean enabled);
    method public androidx.wear.watchface.Complication.Builder setFixedComplicationProvider(boolean fixedComplicationProvider);
  }

  public static final class Complication.Companion {
    method public androidx.wear.watchface.Complication.Builder createBackgroundComplicationBuilder(int id, androidx.wear.watchface.CanvasComplication renderer, java.util.List<? extends androidx.wear.complications.data.ComplicationType> supportedTypes, androidx.wear.complications.DefaultComplicationProviderPolicy defaultProviderPolicy);
    method public androidx.wear.watchface.Complication.Builder createRoundRectComplicationBuilder(int id, androidx.wear.watchface.CanvasComplication renderer, java.util.List<? extends androidx.wear.complications.data.ComplicationType> supportedTypes, androidx.wear.complications.DefaultComplicationProviderPolicy defaultProviderPolicy, androidx.wear.complications.ComplicationBounds complicationBounds);
  }

  public final class ComplicationOutlineRenderer {
    ctor public ComplicationOutlineRenderer();
    method public static void drawComplicationSelectOutline(android.graphics.Canvas canvas, android.graphics.Rect bounds, @ColorInt int color);
    field public static final androidx.wear.watchface.ComplicationOutlineRenderer.Companion Companion;
  }

  public static final class ComplicationOutlineRenderer.Companion {
    method public void drawComplicationSelectOutline(android.graphics.Canvas canvas, android.graphics.Rect bounds, @ColorInt int color);
  }

  public final class ComplicationsManager {
    ctor public ComplicationsManager(java.util.Collection<androidx.wear.watchface.Complication> complicationCollection, androidx.wear.watchface.style.UserStyleRepository userStyleRepository);
    method @UiThread public void addTapListener(androidx.wear.watchface.ComplicationsManager.TapCallback tapCallback);
    method @UiThread public void bringAttentionToComplication(int complicationId);
    method public operator androidx.wear.watchface.Complication? get(int id);
    method public androidx.wear.watchface.Complication? getBackgroundComplication();
    method public androidx.wear.watchface.Complication? getComplicationAt(int x, int y);
    method public java.util.Map<java.lang.Integer,androidx.wear.watchface.Complication> getComplications();
    method @UiThread public void removeTapListener(androidx.wear.watchface.ComplicationsManager.TapCallback tapCallback);
    property public final java.util.Map<java.lang.Integer,androidx.wear.watchface.Complication> complications;
  }

  public static interface ComplicationsManager.TapCallback {
    method public default void onComplicationSingleTapped(int complicationId);
  }

  public final class ComplicationsManagerKt {
  }

  public enum DrawMode {
    enum_constant public static final androidx.wear.watchface.DrawMode AMBIENT;
    enum_constant public static final androidx.wear.watchface.DrawMode INTERACTIVE;
    enum_constant public static final androidx.wear.watchface.DrawMode LOW_BATTERY_INTERACTIVE;
    enum_constant public static final androidx.wear.watchface.DrawMode MUTE;
  }

  public final class GlesTextureComplication {
    ctor public GlesTextureComplication(androidx.wear.watchface.CanvasComplication canvasComplication, @Px int textureWidth, @Px int textureHeight, int textureType);
    method public void bind();
    method public androidx.wear.watchface.CanvasComplication getCanvasComplication();
    method public void renderToTexture(android.icu.util.Calendar calendar, androidx.wear.watchface.RenderParameters renderParameters);
    property public final androidx.wear.watchface.CanvasComplication canvasComplication;
  }

  public enum LayerMode {
    enum_constant public static final androidx.wear.watchface.LayerMode DRAW;
    enum_constant public static final androidx.wear.watchface.LayerMode DRAW_OUTLINED;
    enum_constant public static final androidx.wear.watchface.LayerMode HIDE;
  }

  public final class MutableObservableWatchData<T> extends androidx.wear.watchface.ObservableWatchData<T> {
    ctor public MutableObservableWatchData(T? initialValue);
    ctor public MutableObservableWatchData();
    method @UiThread public void setValue(T v);
    property @UiThread public T value;
  }

  public class ObservableWatchData<T> {
    method @UiThread public final void addObserver(androidx.wear.watchface.Observer<T> observer);
    method @UiThread public T getValue();
    method @UiThread public final T getValueOr(T p);
    method @UiThread public final boolean hasValue();
    method @UiThread public final void removeObserver(androidx.wear.watchface.Observer<T> observer);
    method @UiThread protected void setValue(T v);
    property @UiThread public T value;
  }

  public interface Observer<T> {
    method public void onChanged(T);
  }

  public final class RenderParameters {
    ctor public RenderParameters(androidx.wear.watchface.DrawMode drawMode, java.util.Map<androidx.wear.watchface.style.Layer,? extends androidx.wear.watchface.LayerMode> layerParameters, Integer? selectedComplicationId, @ColorInt int outlineTint);
    ctor public RenderParameters(androidx.wear.watchface.DrawMode drawMode, java.util.Map<androidx.wear.watchface.style.Layer,? extends androidx.wear.watchface.LayerMode> layerParameters, Integer? selectedComplicationId);
    method public androidx.wear.watchface.DrawMode getDrawMode();
    method public java.util.Map<androidx.wear.watchface.style.Layer,androidx.wear.watchface.LayerMode> getLayerParameters();
    method public int getOutlineTint();
    method public Integer? getSelectedComplicationId();
    property public final androidx.wear.watchface.DrawMode drawMode;
    property public final java.util.Map<androidx.wear.watchface.style.Layer,androidx.wear.watchface.LayerMode> layerParameters;
    property public final int outlineTint;
    property public final Integer? selectedComplicationId;
    field public static final androidx.wear.watchface.RenderParameters.Companion Companion;
    field public static final androidx.wear.watchface.RenderParameters DEFAULT_INTERACTIVE;
    field public static final java.util.Map<androidx.wear.watchface.style.Layer,androidx.wear.watchface.LayerMode> DRAW_ALL_LAYERS;
  }

  public static final class RenderParameters.Companion {
  }

  public abstract sealed class Renderer {
    method public final float getCenterX();
    method public final float getCenterY();
    method public final long getInteractiveDrawModeUpdateDelayMillis();
    method @UiThread public android.graphics.Rect getMainClockElementBounds();
    method public final androidx.wear.watchface.RenderParameters getRenderParameters();
    method public final android.graphics.Rect getScreenBounds();
    method public final android.view.SurfaceHolder getSurfaceHolder();
    method @UiThread public final void invalidate();
    method @UiThread public void onDestroy();
    method @UiThread protected void onRenderParametersChanged(androidx.wear.watchface.RenderParameters renderParameters);
    method public final void postInvalidate();
    method public final void setInteractiveDrawModeUpdateDelayMillis(long p);
    method @UiThread public boolean shouldAnimate();
    property public final float centerX;
    property public final float centerY;
    property public final long interactiveDrawModeUpdateDelayMillis;
    property public final androidx.wear.watchface.RenderParameters renderParameters;
    property public final android.graphics.Rect screenBounds;
    property public final android.view.SurfaceHolder surfaceHolder;
  }

  public abstract static class Renderer.CanvasRenderer extends androidx.wear.watchface.Renderer {
    ctor public Renderer.CanvasRenderer(android.view.SurfaceHolder surfaceHolder, androidx.wear.watchface.style.UserStyleRepository userStyleRepository, androidx.wear.watchface.WatchState watchState, int canvasType, @IntRange(from=0, to=10000) long interactiveDrawModeUpdateDelayMillis);
    method @UiThread public abstract void render(android.graphics.Canvas canvas, android.graphics.Rect bounds, android.icu.util.Calendar calendar);
  }

  public abstract static class Renderer.GlesRenderer extends androidx.wear.watchface.Renderer {
    ctor public Renderer.GlesRenderer(android.view.SurfaceHolder surfaceHolder, androidx.wear.watchface.style.UserStyleRepository userStyleRepository, androidx.wear.watchface.WatchState watchState, @IntRange(from=0, to=10000) long interactiveDrawModeUpdateDelayMillis, optional int[] eglConfigAttribList, optional int[] eglSurfaceAttribList);
    ctor public Renderer.GlesRenderer(android.view.SurfaceHolder surfaceHolder, androidx.wear.watchface.style.UserStyleRepository userStyleRepository, androidx.wear.watchface.WatchState watchState, @IntRange(from=0, to=10000) long interactiveDrawModeUpdateDelayMillis, optional int[] eglConfigAttribList);
    ctor public Renderer.GlesRenderer(android.view.SurfaceHolder surfaceHolder, androidx.wear.watchface.style.UserStyleRepository userStyleRepository, androidx.wear.watchface.WatchState watchState, @IntRange(from=0, to=10000) long interactiveDrawModeUpdateDelayMillis);
    method @UiThread public void onGlContextCreated();
    method @UiThread public void onGlSurfaceCreated(int width, int height);
    method @UiThread public abstract void render(android.icu.util.Calendar calendar);
  }

  public final class RendererKt {
  }

  public final class WatchFace {
    ctor public WatchFace(int watchFaceType, androidx.wear.watchface.style.UserStyleRepository userStyleRepository, androidx.wear.watchface.Renderer renderer, optional androidx.wear.watchface.ComplicationsManager complicationsManager);
    ctor public WatchFace(int watchFaceType, androidx.wear.watchface.style.UserStyleRepository userStyleRepository, androidx.wear.watchface.Renderer renderer);
    method public androidx.wear.watchface.WatchFace.LegacyWatchFaceOverlayStyle getLegacyWatchFaceStyle();
    method public Long? getOverridePreviewReferenceTimeMillis();
    method public androidx.wear.watchface.style.UserStyleRepository getUserStyleRepository();
    method public static boolean isLegacyWatchFaceOverlayStyleSupported();
    method public androidx.wear.watchface.WatchFace setLegacyWatchFaceStyle(androidx.wear.watchface.WatchFace.LegacyWatchFaceOverlayStyle legacyWatchFaceStyle);
    method public androidx.wear.watchface.WatchFace setOverridePreviewReferenceTimeMillis(@IntRange(from=0) long previewReferenceTimeMillis);
    method public androidx.wear.watchface.WatchFace setTapListener(androidx.wear.watchface.WatchFace.TapListener? tapListener);
    property public final androidx.wear.watchface.WatchFace.LegacyWatchFaceOverlayStyle legacyWatchFaceStyle;
    property public final Long? overridePreviewReferenceTimeMillis;
    property public final androidx.wear.watchface.style.UserStyleRepository userStyleRepository;
    field public static final androidx.wear.watchface.WatchFace.Companion Companion;
  }

  public static final class WatchFace.Companion {
    method public boolean isLegacyWatchFaceOverlayStyleSupported();
  }

  public static final class WatchFace.LegacyWatchFaceOverlayStyle {
    ctor public WatchFace.LegacyWatchFaceOverlayStyle(int viewProtectionMode, int statusBarGravity, boolean tapEventsAccepted, optional @ColorInt int accentColor);
    ctor public WatchFace.LegacyWatchFaceOverlayStyle(int viewProtectionMode, int statusBarGravity, boolean tapEventsAccepted);
    method public int getAccentColor();
    method public int getStatusBarGravity();
    method public int getViewProtectionMode();
    method public boolean isTapEventsAccepted();
    property public final int accentColor;
    property public final int statusBarGravity;
    property public final boolean tapEventsAccepted;
    property public final int viewProtectionMode;
  }

  public static interface WatchFace.TapListener {
    method @UiThread public void onTap(int originalTapType, @Px int xPos, @Px int yPos);
  }

  public final class WatchFaceKt {
  }

  public abstract class WatchFaceService extends android.service.wallpaper.WallpaperService {
    ctor public WatchFaceService();
    method protected abstract suspend Object? createWatchFace(android.view.SurfaceHolder surfaceHolder, androidx.wear.watchface.WatchState watchState, kotlin.coroutines.Continuation<? super androidx.wear.watchface.WatchFace> p);
    method public final android.service.wallpaper.WallpaperService.Engine onCreateEngine();
  }

  public final class WatchFaceServiceKt {
  }

  public final class WatchState {
    ctor public WatchState(androidx.wear.watchface.ObservableWatchData<java.lang.Integer> interruptionFilter, androidx.wear.watchface.ObservableWatchData<java.lang.Boolean> isAmbient, androidx.wear.watchface.ObservableWatchData<java.lang.Boolean> isBatteryLowAndNotCharging, androidx.wear.watchface.ObservableWatchData<java.lang.Boolean> isVisible, boolean hasLowBitAmbient, boolean hasBurnInProtection, long analogPreviewReferenceTimeMillis, long digitalPreviewReferenceTimeMillis, boolean isHeadless);
    method public long getAnalogPreviewReferenceTimeMillis();
    method public long getDigitalPreviewReferenceTimeMillis();
    method public androidx.wear.watchface.ObservableWatchData<java.lang.Integer> getInterruptionFilter();
    method public boolean hasBurnInProtection();
    method public boolean hasLowBitAmbient();
    method public androidx.wear.watchface.ObservableWatchData<java.lang.Boolean> isAmbient();
    method public boolean isHeadless();
    method public androidx.wear.watchface.ObservableWatchData<java.lang.Boolean> isVisible();
    property public final long analogPreviewReferenceTimeMillis;
    property public final long digitalPreviewReferenceTimeMillis;
    property public final boolean hasBurnInProtection;
    property public final boolean hasLowBitAmbient;
    property public final androidx.wear.watchface.ObservableWatchData<java.lang.Integer> interruptionFilter;
    property public final androidx.wear.watchface.ObservableWatchData<java.lang.Boolean> isAmbient;
    property public final boolean isHeadless;
    property public final androidx.wear.watchface.ObservableWatchData<java.lang.Boolean> isVisible;
  }

}

package androidx.wear.watchface.control {

  @RequiresApi(27) public final class WatchFaceControlServiceFactory {
    ctor public WatchFaceControlServiceFactory();
    method public static androidx.wear.watchface.control.IWatchFaceControlService createWatchFaceControlService(android.content.Context context, android.os.Handler uiThreadHandler);
    field public static final androidx.wear.watchface.control.WatchFaceControlServiceFactory.Companion Companion;
  }

  public static final class WatchFaceControlServiceFactory.Companion {
    method public androidx.wear.watchface.control.IWatchFaceControlService createWatchFaceControlService(android.content.Context context, android.os.Handler uiThreadHandler);
  }

}

