// Copyright (c) 2014, 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.5

part of dart.isolate;

/**
 * An unforgeable object that comes back as equal when passed through other
 * isolates.
 *
 * Sending a capability object to another isolate, and getting it back,
 * will produce an object that is equal to the original.
 * There is no other way to create objects equal to a capability object.
 *
 * Capabilities can be used as access guards: A remote isolate can send
 * a request for an operation, but it is only allowed if the request contains
 * the correct capability object.
 *
 * This allows exposing the same interface to multiple clients,
 * but restricting some operations to only those clients
 * that have also been given the corresponding capability.
 *
 * Capabilities can be used inside a single isolate,
 * but they have no advantage over
 * just using `new Object` to create a unique object,
 * and it offers no real security against other code
 * running in the same isolate.
 */
class Capability {
  /**
   * Create a new unforgeable capability object.
   */
  external factory Capability();
}
