// Signature format: 4.0
package androidx.core.haptics {

  public final class HapticAttributes {
    ctor @RequiresApi(android.os.Build.VERSION_CODES.LOLLIPOP) public HapticAttributes(android.media.AudioAttributes attrs);
    ctor @RequiresApi(android.os.Build.VERSION_CODES.R) public HapticAttributes(android.os.VibrationAttributes attrs);
    ctor public HapticAttributes(int usage);
    ctor public HapticAttributes(int usage, optional int flags);
    method public int getFlags();
    method public int getUsage();
    property public final int flags;
    property public final int usage;
    field public static final androidx.core.haptics.HapticAttributes.Companion Companion;
    field public static final int FLAG_BYPASS_INTERRUPTION_POLICY = 1; // 0x1
    field public static final int USAGE_ACCESSIBILITY = 66; // 0x42
    field public static final int USAGE_ALARM = 1; // 0x1
    field public static final int USAGE_COMMUNICATION_REQUEST = 65; // 0x41
    field public static final int USAGE_HARDWARE_FEEDBACK = 50; // 0x32
    field public static final int USAGE_MEDIA = 19; // 0x13
    field public static final int USAGE_NOTIFICATION = 49; // 0x31
    field public static final int USAGE_PHYSICAL_EMULATION = 34; // 0x22
    field public static final int USAGE_RINGTONE = 33; // 0x21
    field public static final int USAGE_TOUCH = 18; // 0x12
    field public static final int USAGE_UNKNOWN = 0; // 0x0
  }

  public static final class HapticAttributes.Builder {
    ctor @RequiresApi(android.os.Build.VERSION_CODES.LOLLIPOP) public HapticAttributes.Builder(android.media.AudioAttributes attrs);
    ctor @RequiresApi(android.os.Build.VERSION_CODES.R) public HapticAttributes.Builder(android.os.VibrationAttributes attrs);
    ctor public HapticAttributes.Builder(androidx.core.haptics.HapticAttributes attrs);
    ctor public HapticAttributes.Builder(int usage);
    method public androidx.core.haptics.HapticAttributes build();
    method public androidx.core.haptics.HapticAttributes.Builder setFlags(int flags);
    method public androidx.core.haptics.HapticAttributes.Builder setUsage(int usage);
  }

  public static final class HapticAttributes.Companion {
  }

  public interface HapticManager {
    method @RequiresPermission(android.Manifest.permission.VIBRATE) public void cancel();
    method public static androidx.core.haptics.HapticManager? create(android.content.Context context);
    method public androidx.core.haptics.device.HapticDeviceProfile getDeviceProfile();
    method @RequiresPermission(android.Manifest.permission.VIBRATE) public void play(androidx.core.haptics.signal.HapticSignal signal, androidx.core.haptics.HapticAttributes attrs);
    method @RequiresPermission(android.Manifest.permission.VIBRATE) public default void play(androidx.core.haptics.signal.ResolvableSignal signal, androidx.core.haptics.HapticAttributes attrs);
    property public abstract androidx.core.haptics.device.HapticDeviceProfile deviceProfile;
    field public static final androidx.core.haptics.HapticManager.Companion Companion;
  }

  public static final class HapticManager.Companion {
    method public androidx.core.haptics.HapticManager? create(android.content.Context context);
  }

}

package androidx.core.haptics.device {

  public final class HapticCompositionProfile {
    ctor public HapticCompositionProfile();
    ctor public HapticCompositionProfile(optional java.util.Set<java.lang.Integer> supportedPrimitiveTypesHint);
    ctor public HapticCompositionProfile(optional java.util.Set<java.lang.Integer> supportedPrimitiveTypesHint, optional java.util.Map<java.lang.Integer,java.lang.Long>? primitiveDurationMillisMapHint);
    method public long getPrimitiveDurationMillis(int primitiveType);
    method public java.util.Set<java.lang.Integer> getSupportedPrimitiveTypes();
    method public boolean isPrimitiveDurationReported();
    property public final boolean isPrimitiveDurationReported;
    property public final java.util.Set<java.lang.Integer> supportedPrimitiveTypes;
  }

  public final class HapticDeviceProfile {
    ctor public HapticDeviceProfile();
    ctor public HapticDeviceProfile(optional boolean amplitudeControlSupportHint);
    ctor public HapticDeviceProfile(optional boolean amplitudeControlSupportHint, optional java.util.Set<androidx.core.haptics.signal.PredefinedEffectSignal> hardwareOptimizedPredefinedEffectsHint);
    ctor public HapticDeviceProfile(optional boolean amplitudeControlSupportHint, optional java.util.Set<androidx.core.haptics.signal.PredefinedEffectSignal> hardwareOptimizedPredefinedEffectsHint, optional androidx.core.haptics.device.HapticCompositionProfile compositionProfile);
    method public androidx.core.haptics.device.HapticCompositionProfile getCompositionProfile();
    method public java.util.Set<androidx.core.haptics.signal.PredefinedEffectSignal> getHardwareOptimizedPredefinedEffects();
    method public boolean isAmplitudeControlSupported();
    method public boolean supports(androidx.core.haptics.signal.HapticSignal signal);
    property public final androidx.core.haptics.device.HapticCompositionProfile compositionProfile;
    property public final java.util.Set<androidx.core.haptics.signal.PredefinedEffectSignal> hardwareOptimizedPredefinedEffects;
    property public final boolean isAmplitudeControlSupported;
  }

}

package androidx.core.haptics.extensions {

  public final class HapticAttributesUtils {
    method @RequiresApi(android.os.Build.VERSION_CODES.LOLLIPOP) public static android.media.AudioAttributes toAudioAttributes(androidx.core.haptics.HapticAttributes);
    method @RequiresApi(android.os.Build.VERSION_CODES.R) public static android.os.VibrationAttributes toVibrationAttributes(androidx.core.haptics.HapticAttributes);
  }

}

package androidx.core.haptics.signal {

  public final class CompositionSignal extends androidx.core.haptics.signal.FiniteSignal {
    ctor public CompositionSignal(java.util.List<? extends androidx.core.haptics.signal.CompositionSignal.Atom> atoms);
    method public static androidx.core.haptics.signal.CompositionSignal.PrimitiveAtom click();
    method public static androidx.core.haptics.signal.CompositionSignal.PrimitiveAtom click(optional @FloatRange(from=0.0, to=1.0) float amplitudeScale);
    method public static androidx.core.haptics.signal.CompositionSignal compositionOf(androidx.core.haptics.signal.CompositionSignal.Atom... atoms);
    method public java.util.List<androidx.core.haptics.signal.CompositionSignal.Atom> getAtoms();
    method public static androidx.core.haptics.signal.CompositionSignal.PrimitiveAtom lowTick();
    method public static androidx.core.haptics.signal.CompositionSignal.PrimitiveAtom lowTick(optional @FloatRange(from=0.0, to=1.0) float amplitudeScale);
    method @RequiresApi(android.os.Build.VERSION_CODES.O) public static androidx.core.haptics.signal.CompositionSignal.OffAtom off(java.time.Duration duration);
    method public static androidx.core.haptics.signal.CompositionSignal.OffAtom off(long durationMillis);
    method public static androidx.core.haptics.signal.CompositionSignal.PrimitiveAtom quickFall();
    method public static androidx.core.haptics.signal.CompositionSignal.PrimitiveAtom quickFall(optional @FloatRange(from=0.0, to=1.0) float amplitudeScale);
    method public static androidx.core.haptics.signal.CompositionSignal.PrimitiveAtom quickRise();
    method public static androidx.core.haptics.signal.CompositionSignal.PrimitiveAtom quickRise(optional @FloatRange(from=0.0, to=1.0) float amplitudeScale);
    method public static androidx.core.haptics.signal.CompositionSignal.PrimitiveAtom slowRise();
    method public static androidx.core.haptics.signal.CompositionSignal.PrimitiveAtom slowRise(optional @FloatRange(from=0.0, to=1.0) float amplitudeScale);
    method public static androidx.core.haptics.signal.CompositionSignal.PrimitiveAtom spin();
    method public static androidx.core.haptics.signal.CompositionSignal.PrimitiveAtom spin(optional @FloatRange(from=0.0, to=1.0) float amplitudeScale);
    method public static androidx.core.haptics.signal.CompositionSignal.PrimitiveAtom thud();
    method public static androidx.core.haptics.signal.CompositionSignal.PrimitiveAtom thud(optional @FloatRange(from=0.0, to=1.0) float amplitudeScale);
    method public static androidx.core.haptics.signal.CompositionSignal.PrimitiveAtom tick();
    method public static androidx.core.haptics.signal.CompositionSignal.PrimitiveAtom tick(optional @FloatRange(from=0.0, to=1.0) float amplitudeScale);
    property public final java.util.List<androidx.core.haptics.signal.CompositionSignal.Atom> atoms;
    field public static final androidx.core.haptics.signal.CompositionSignal.Companion Companion;
  }

  public abstract static class CompositionSignal.Atom {
  }

  public static final class CompositionSignal.Companion {
    method public androidx.core.haptics.signal.CompositionSignal.PrimitiveAtom click();
    method public androidx.core.haptics.signal.CompositionSignal.PrimitiveAtom click(optional @FloatRange(from=0.0, to=1.0) float amplitudeScale);
    method public androidx.core.haptics.signal.CompositionSignal compositionOf(androidx.core.haptics.signal.CompositionSignal.Atom... atoms);
    method public androidx.core.haptics.signal.CompositionSignal.PrimitiveAtom lowTick();
    method public androidx.core.haptics.signal.CompositionSignal.PrimitiveAtom lowTick(optional @FloatRange(from=0.0, to=1.0) float amplitudeScale);
    method @RequiresApi(android.os.Build.VERSION_CODES.O) public androidx.core.haptics.signal.CompositionSignal.OffAtom off(java.time.Duration duration);
    method public androidx.core.haptics.signal.CompositionSignal.OffAtom off(long durationMillis);
    method public androidx.core.haptics.signal.CompositionSignal.PrimitiveAtom quickFall();
    method public androidx.core.haptics.signal.CompositionSignal.PrimitiveAtom quickFall(optional @FloatRange(from=0.0, to=1.0) float amplitudeScale);
    method public androidx.core.haptics.signal.CompositionSignal.PrimitiveAtom quickRise();
    method public androidx.core.haptics.signal.CompositionSignal.PrimitiveAtom quickRise(optional @FloatRange(from=0.0, to=1.0) float amplitudeScale);
    method public androidx.core.haptics.signal.CompositionSignal.PrimitiveAtom slowRise();
    method public androidx.core.haptics.signal.CompositionSignal.PrimitiveAtom slowRise(optional @FloatRange(from=0.0, to=1.0) float amplitudeScale);
    method public androidx.core.haptics.signal.CompositionSignal.PrimitiveAtom spin();
    method public androidx.core.haptics.signal.CompositionSignal.PrimitiveAtom spin(optional @FloatRange(from=0.0, to=1.0) float amplitudeScale);
    method public androidx.core.haptics.signal.CompositionSignal.PrimitiveAtom thud();
    method public androidx.core.haptics.signal.CompositionSignal.PrimitiveAtom thud(optional @FloatRange(from=0.0, to=1.0) float amplitudeScale);
    method public androidx.core.haptics.signal.CompositionSignal.PrimitiveAtom tick();
    method public androidx.core.haptics.signal.CompositionSignal.PrimitiveAtom tick(optional @FloatRange(from=0.0, to=1.0) float amplitudeScale);
  }

  public static final class CompositionSignal.OffAtom extends androidx.core.haptics.signal.CompositionSignal.Atom {
    method public long getDurationMillis();
    property public final long durationMillis;
  }

  public static final class CompositionSignal.PrimitiveAtom extends androidx.core.haptics.signal.CompositionSignal.Atom {
    method public float getAmplitudeScale();
    method public int getType();
    method public androidx.core.haptics.signal.CompositionSignal.PrimitiveAtom withAmplitudeScale(@FloatRange(from=0.0, to=1.0) float newAmplitudeScale);
    property public final float amplitudeScale;
    property public final int type;
    field public static final int CLICK = 1; // 0x1
    field public static final androidx.core.haptics.signal.CompositionSignal.PrimitiveAtom.Companion Companion;
    field public static final int LOW_TICK = 8; // 0x8
    field public static final int QUICK_FALL = 6; // 0x6
    field public static final int QUICK_RISE = 4; // 0x4
    field public static final int SLOW_RISE = 5; // 0x5
    field public static final int SPIN = 3; // 0x3
    field public static final int THUD = 2; // 0x2
    field public static final int TICK = 7; // 0x7
  }

  public static final class CompositionSignal.PrimitiveAtom.Companion {
  }

  public final class FallbackChainSignal implements androidx.core.haptics.signal.ResolvableSignal {
    ctor public FallbackChainSignal(java.util.List<? extends androidx.core.haptics.signal.ResolvableSignal> signals);
    method public static androidx.core.haptics.signal.FallbackChainSignal fallbackChainOf(androidx.core.haptics.signal.ResolvableSignal... signals);
    method public java.util.List<androidx.core.haptics.signal.ResolvableSignal> getSignals();
    method public androidx.core.haptics.signal.HapticSignal? resolve(androidx.core.haptics.device.HapticDeviceProfile deviceProfile);
    property public final java.util.List<androidx.core.haptics.signal.ResolvableSignal> signals;
    field public static final androidx.core.haptics.signal.FallbackChainSignal.Companion Companion;
  }

  public static final class FallbackChainSignal.Companion {
    method public androidx.core.haptics.signal.FallbackChainSignal fallbackChainOf(androidx.core.haptics.signal.ResolvableSignal... signals);
  }

  public abstract class FiniteSignal extends androidx.core.haptics.signal.HapticSignal {
  }

  public abstract class HapticSignal implements androidx.core.haptics.signal.ResolvableSignal {
    method public androidx.core.haptics.signal.HapticSignal? resolve(androidx.core.haptics.device.HapticDeviceProfile deviceProfile);
  }

  public abstract class InfiniteSignal extends androidx.core.haptics.signal.HapticSignal {
  }

  public final class PredefinedEffectSignal extends androidx.core.haptics.signal.FiniteSignal {
    method public static androidx.core.haptics.signal.PredefinedEffectSignal predefinedClick();
    method public static androidx.core.haptics.signal.PredefinedEffectSignal predefinedDoubleClick();
    method public static androidx.core.haptics.signal.PredefinedEffectSignal predefinedHeavyClick();
    method public static androidx.core.haptics.signal.PredefinedEffectSignal predefinedTick();
    field public static final androidx.core.haptics.signal.PredefinedEffectSignal.Companion Companion;
  }

  public static final class PredefinedEffectSignal.Companion {
    method public androidx.core.haptics.signal.PredefinedEffectSignal predefinedClick();
    method public androidx.core.haptics.signal.PredefinedEffectSignal predefinedDoubleClick();
    method public androidx.core.haptics.signal.PredefinedEffectSignal predefinedHeavyClick();
    method public androidx.core.haptics.signal.PredefinedEffectSignal predefinedTick();
  }

  public final class RepeatingWaveformSignal extends androidx.core.haptics.signal.InfiniteSignal {
    method public androidx.core.haptics.signal.WaveformSignal? getInitialWaveform();
    method public androidx.core.haptics.signal.WaveformSignal getRepeatingWaveform();
    property public final androidx.core.haptics.signal.WaveformSignal? initialWaveform;
    property public final androidx.core.haptics.signal.WaveformSignal repeatingWaveform;
  }

  public fun interface ResolvableSignal {
    method public androidx.core.haptics.signal.HapticSignal? resolve(androidx.core.haptics.device.HapticDeviceProfile deviceProfile);
  }

  public final class WaveformSignal extends androidx.core.haptics.signal.FiniteSignal {
    ctor public WaveformSignal(java.util.List<? extends androidx.core.haptics.signal.WaveformSignal.Atom> atoms);
    method public java.util.List<androidx.core.haptics.signal.WaveformSignal.Atom> getAtoms();
    method @RequiresApi(android.os.Build.VERSION_CODES.O) public static androidx.core.haptics.signal.WaveformSignal.ConstantVibrationAtom off(java.time.Duration duration);
    method public static androidx.core.haptics.signal.WaveformSignal.ConstantVibrationAtom off(long durationMillis);
    method @RequiresApi(android.os.Build.VERSION_CODES.O) public static androidx.core.haptics.signal.WaveformSignal.ConstantVibrationAtom on(java.time.Duration duration);
    method @RequiresApi(android.os.Build.VERSION_CODES.O) public static androidx.core.haptics.signal.WaveformSignal.ConstantVibrationAtom on(java.time.Duration duration, @FloatRange(from=0.0, to=1.0) float amplitude);
    method public static androidx.core.haptics.signal.WaveformSignal.ConstantVibrationAtom on(long durationMillis);
    method public static androidx.core.haptics.signal.WaveformSignal.ConstantVibrationAtom on(long durationMillis, @FloatRange(from=0.0, to=1.0) float amplitude);
    method public androidx.core.haptics.signal.RepeatingWaveformSignal repeat();
    method public static androidx.core.haptics.signal.RepeatingWaveformSignal repeatingWaveformOf(androidx.core.haptics.signal.WaveformSignal.Atom... atoms);
    method public androidx.core.haptics.signal.RepeatingWaveformSignal thenRepeat(androidx.core.haptics.signal.WaveformSignal waveformToRepeat);
    method public androidx.core.haptics.signal.RepeatingWaveformSignal thenRepeat(androidx.core.haptics.signal.WaveformSignal.Atom... atoms);
    method public static androidx.core.haptics.signal.WaveformSignal waveformOf(androidx.core.haptics.signal.WaveformSignal.Atom... atoms);
    property public final java.util.List<androidx.core.haptics.signal.WaveformSignal.Atom> atoms;
    field public static final androidx.core.haptics.signal.WaveformSignal.Companion Companion;
  }

  public abstract static class WaveformSignal.Atom {
  }

  public static final class WaveformSignal.Companion {
    method @RequiresApi(android.os.Build.VERSION_CODES.O) public androidx.core.haptics.signal.WaveformSignal.ConstantVibrationAtom off(java.time.Duration duration);
    method public androidx.core.haptics.signal.WaveformSignal.ConstantVibrationAtom off(long durationMillis);
    method @RequiresApi(android.os.Build.VERSION_CODES.O) public androidx.core.haptics.signal.WaveformSignal.ConstantVibrationAtom on(java.time.Duration duration);
    method @RequiresApi(android.os.Build.VERSION_CODES.O) public androidx.core.haptics.signal.WaveformSignal.ConstantVibrationAtom on(java.time.Duration duration, @FloatRange(from=0.0, to=1.0) float amplitude);
    method public androidx.core.haptics.signal.WaveformSignal.ConstantVibrationAtom on(long durationMillis);
    method public androidx.core.haptics.signal.WaveformSignal.ConstantVibrationAtom on(long durationMillis, @FloatRange(from=0.0, to=1.0) float amplitude);
    method public androidx.core.haptics.signal.RepeatingWaveformSignal repeatingWaveformOf(androidx.core.haptics.signal.WaveformSignal.Atom... atoms);
    method public androidx.core.haptics.signal.WaveformSignal waveformOf(androidx.core.haptics.signal.WaveformSignal.Atom... atoms);
  }

  public static final class WaveformSignal.ConstantVibrationAtom extends androidx.core.haptics.signal.WaveformSignal.Atom {
    method public float getAmplitude();
    method public long getDurationMillis();
    property public final float amplitude;
    property public final long durationMillis;
    field public static final androidx.core.haptics.signal.WaveformSignal.ConstantVibrationAtom.Companion Companion;
    field public static final float DEFAULT_AMPLITUDE = -1.0f;
  }

  public static final class WaveformSignal.ConstantVibrationAtom.Companion {
  }

}

