// Signature format: 3.0
package androidx.compose.dispatch {

  public final class AndroidUiDispatcher extends kotlinx.coroutines.CoroutineDispatcher {
    method public void dispatch(kotlin.coroutines.CoroutineContext context, Runnable block);
    method public android.view.Choreographer getChoreographer();
    method public androidx.compose.dispatch.MonotonicFrameClock getFrameClock();
    property public final androidx.compose.dispatch.MonotonicFrameClock frameClock;
    field public static final androidx.compose.dispatch.AndroidUiDispatcher.Companion Companion;
  }

  public static final class AndroidUiDispatcher.Companion {
    method public androidx.compose.dispatch.AndroidUiDispatcher getCurrentThread();
    method public androidx.compose.dispatch.AndroidUiDispatcher getMain();
    property public final androidx.compose.dispatch.AndroidUiDispatcher CurrentThread;
    property public final androidx.compose.dispatch.AndroidUiDispatcher Main;
  }

  public final class AndroidUiDispatcherKt {
  }

  public final class AndroidUiFrameClock implements androidx.compose.dispatch.MonotonicFrameClock {
    ctor public AndroidUiFrameClock(android.view.Choreographer choreographer);
    method public android.view.Choreographer getChoreographer();
    method public suspend <R> Object? withFrameNanos(kotlin.jvm.functions.Function1<? super java.lang.Long,? extends R> onFrame, kotlin.coroutines.Continuation<? super R> p);
  }

  public interface MonotonicFrameClock {
    method public suspend <R> Object? withFrameNanos(kotlin.jvm.functions.Function1<? super java.lang.Long,? extends R> onFrame, kotlin.coroutines.Continuation<? super R> p);
  }

  public final class MonotonicFrameClockKt {
    method public static suspend inline <R> Object? withFrameMillis(androidx.compose.dispatch.MonotonicFrameClock, kotlin.jvm.functions.Function1<? super java.lang.Long,? extends R> onFrame, kotlin.coroutines.Continuation<? super R> p);
  }

}

