// Copyright (c) 2020, 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.
//
// @dart=2.9

// ignore: deprecated_member_use
export 'package:test_api/backend.dart' show SuitePlatform, Runtime;
export 'package:test_core/src/runner/configuration.dart' show Configuration;
export 'package:test_core/src/runner/environment.dart'
    show PluginEnvironment, Environment;
export 'package:test_core/src/runner/hack_register_platform.dart'
    show registerPlatformPlugin;
export 'package:test_core/src/runner/platform.dart' show PlatformPlugin;
export 'package:test_core/src/runner/plugin/platform_helpers.dart'
    show deserializeSuite;
export 'package:test_core/src/runner/runner_suite.dart'
    show RunnerSuite, RunnerSuiteController;
export 'package:test_core/src/runner/suite.dart' show SuiteConfiguration;
