/**
 * Synapse REST API
 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
 *
 * The version of the OpenAPI document: v1
 *
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */
import type { ACTAccessRequirement } from './ACTAccessRequirement';
import type { LockAccessRequirement } from './LockAccessRequirement';
import type { ManagedACTAccessRequirement } from './ManagedACTAccessRequirement';
import type { PostMessageContentAccessRequirement } from './PostMessageContentAccessRequirement';
import type { SelfSignAccessRequirement } from './SelfSignAccessRequirement';
import type { TermsOfUseAccessRequirement } from './TermsOfUseAccessRequirement';
/**
 * @type AccessRequirement
 * Interface for JSON schema for AccessRequirement.  The Access Requirement mechanism is distinct from the access control list in that it is controlled not by the entity owner but by a separate authority:  Access Requirements are created and maintained by the Synapse Access and Compliance Team (ACT).  ACTAccessRequirements can only be approved by the ACT.  Self-sign Access Requirements can be approved by the user desiring access, but said user first has to meet 'terms of use' associated with the requirement.
 * @export
 */
export type AccessRequirement = {
    concreteType: 'org.sagebionetworks.repo.model.ACTAccessRequirement';
} & ACTAccessRequirement | {
    concreteType: 'org.sagebionetworks.repo.model.LockAccessRequirement';
} & LockAccessRequirement | {
    concreteType: 'org.sagebionetworks.repo.model.ManagedACTAccessRequirement';
} & ManagedACTAccessRequirement | {
    concreteType: 'org.sagebionetworks.repo.model.PostMessageContentAccessRequirement';
} & PostMessageContentAccessRequirement | {
    concreteType: 'org.sagebionetworks.repo.model.SelfSignAccessRequirement';
} & SelfSignAccessRequirement | {
    concreteType: 'org.sagebionetworks.repo.model.TermsOfUseAccessRequirement';
} & TermsOfUseAccessRequirement;
export declare function AccessRequirementFromJSON(json: any): AccessRequirement;
export declare function AccessRequirementFromJSONTyped(json: any, ignoreDiscriminator: boolean): AccessRequirement;
export declare function AccessRequirementToJSON(json: any): any;
export declare function AccessRequirementToJSONTyped(value?: AccessRequirement | null, ignoreDiscriminator?: boolean): any;
