// Copyright (c) 2015, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

import 'dart:_internal';

patch bool _isDartStreamEnabled() native "Timeline_isDartStreamEnabled";

patch int _getTraceClock() native "Timeline_getTraceClock";

patch int _getThreadCpuClock() native "Timeline_getThreadCpuClock";

patch int _getNextAsyncId() native "Timeline_getNextAsyncId";

patch int _getIsolateNum() native "Timeline_getIsolateNum";

patch void _reportTaskEvent(
    int start,
    int taskId,
    String phase,
    String category,
    String name,
    String argumentsAsJson) native "Timeline_reportTaskEvent";

patch void _reportCompleteEvent(
    int start,
    int end,
    String category,
    String name,
    String argumentsAsJson) native "Timeline_reportCompleteEvent";

patch void _reportInstantEvent(
    int start,
    String category,
    String name,
    String argumentsAsJson) native "Timeline_reportInstantEvent";
