using System;
using System.Runtime.InteropServices;
namespace System.Security
{
/// Defines methods implemented by permission types.
// Token: 0x020005C1 RID: 1473
[ComVisible(true)]
public interface IPermission : ISecurityEncodable
{
/// Creates and returns an identical copy of the current permission.
/// A copy of the current permission.
// Token: 0x060035C3 RID: 13763
IPermission Copy();
/// Throws a at run time if the security requirement is not met.
// Token: 0x060035C4 RID: 13764
void Demand();
/// Creates and returns a permission that is the intersection of the current permission and the specified permission.
/// A new permission that represents the intersection of the current permission and the specified permission. This new permission is null if the intersection is empty.
/// A permission to intersect with the current permission. It must be of the same type as the current permission.
/// The parameter is not null and is not an instance of the same class as the current permission.
// Token: 0x060035C5 RID: 13765
IPermission Intersect(IPermission target);
/// Determines whether the current permission is a subset of the specified permission.
/// true if the current permission is a subset of the specified permission; otherwise, false.
/// A permission that is to be tested for the subset relationship. This permission must be of the same type as the current permission.
/// The parameter is not null and is not of the same type as the current permission.
// Token: 0x060035C6 RID: 13766
bool IsSubsetOf(IPermission target);
/// Creates a permission that is the union of the current permission and the specified permission.
/// A new permission that represents the union of the current permission and the specified permission.
/// A permission to combine with the current permission. It must be of the same type as the current permission.
/// The parameter is not null and is not of the same type as the current permission.
// Token: 0x060035C7 RID: 13767
IPermission Union(IPermission target);
}
}