/**
 * 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 { SigningOfficial } from './SigningOfficial';
import type { AccessorChange } from './AccessorChange';
import type { PrincipalInvestigator } from './PrincipalInvestigator';
/**
 * A Request contains information required by an AccessRequirement.
 * @export
 * @interface Request
 */
export interface Request {
    /**
     * The unique immutable ID for this request. A new ID will be generated for new Request. Once issued, this ID is guaranteed to never change or be re-issued.
     * @type {string}
     * @memberof Request
     */
    id?: string;
    /**
     * The ID of the Access Requirement which requires a request to be submitted to gain access to a dataset. This request contains information that satisfies those requirements.
     * @type {string}
     * @memberof Request
     */
    accessRequirementId?: string;
    /**
     * The ID of the research project associated with this request.
     * @type {string}
     * @memberof Request
     */
    researchProjectId?: string;
    /**
     * The date this request was created.
     * @type {string}
     * @memberof Request
     */
    createdOn?: string;
    /**
     * The date this request was last modified.
     * @type {string}
     * @memberof Request
     */
    modifiedOn?: string;
    /**
     * The ID of the user that created this request.
     * @type {string}
     * @memberof Request
     */
    createdBy?: string;
    /**
     * The ID of the user that last modified this request.
     * @type {string}
     * @memberof Request
     */
    modifiedBy?: string;
    /**
     * The Data Use Certificate uploaded by user.
     * @type {string}
     * @memberof Request
     */
    ducFileHandleId?: string;
    /**
     * The Institutional Review Board Approval document uploaded by user.
     * @type {string}
     * @memberof Request
     */
    irbFileHandleId?: string;
    /**
     * The set of file handle ID of attached files to this request.
     * @type {Array<string>}
     * @memberof Request
     */
    attachments?: Array<string>;
    /**
     * List of user changes. A user can gain access, renew access or have access revoked.
     * @type {Array<AccessorChange>}
     * @memberof Request
     */
    accessorChanges?: Array<AccessorChange>;
    /**
     * Synapse employs an Optimistic Concurrency Control (OCC) scheme to handle concurrent updates. Since the E-Tag changes every time a request is updated it is used to detect when a client's current representation of a request is out-of-date.
     * @type {string}
     * @memberof Request
     */
    etag?: string;
    /**
     * Indicates which implementation of RequestInterface this object represents.
     * @type {string}
     * @memberof Request
     */
    concreteType: RequestConcreteTypeEnum;
    /**
     * The name of the institution where the collaborators work.
     * @type {string}
     * @memberof Request
     */
    institution?: string;
    /**
     *
     * @type {PrincipalInvestigator}
     * @memberof Request
     */
    principalInvestigator?: PrincipalInvestigator;
    /**
     *
     * @type {SigningOfficial}
     * @memberof Request
     */
    signingOfficial?: SigningOfficial;
    /**
     * The envelope ID for the routed eDUC signature document.
     * @type {string}
     * @memberof Request
     */
    eDucSignatureEnvelopeId?: string;
}
/**
 * @export
 */
export declare const RequestConcreteTypeEnum: {
    readonly org_sagebionetworks_repo_model_dataaccess_Request: "org.sagebionetworks.repo.model.dataaccess.Request";
};
export type RequestConcreteTypeEnum = typeof RequestConcreteTypeEnum[keyof typeof RequestConcreteTypeEnum];
/**
 * Check if a given object implements the Request interface.
 */
export declare function instanceOfRequest(value: object): value is Request;
export declare function RequestFromJSON(json: any): Request;
export declare function RequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): Request;
export declare function RequestToJSON(json: any): Request;
export declare function RequestToJSONTyped(value?: Request | null, ignoreDiscriminator?: boolean): any;
