/**
 * 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 { AccessorChange } from './AccessorChange';
import type { ResearchProject } from './ResearchProject';
/**
 * A submission to request access to controlled data.
 * @export
 * @interface DataaccessSubmission
 */
export interface DataaccessSubmission {
    /**
     * The unique immutable ID for this submission. A new ID will be generated for new Submission. Once issued, this ID is guaranteed to never change or be re-issued.
     * @type {string}
     * @memberof DataaccessSubmission
     */
    id?: string;
    /**
     * The ID of the Access Requirement which requires a request to be submitted to gain access to a dataset. This submission contains information that satisfies those requirements.
     * @type {string}
     * @memberof DataaccessSubmission
     */
    accessRequirementId?: string;
    /**
     * The version of the Access Requirement which requires a request to be submitted to gain access to a dataset. This submission contains information that satisfies those requirements.
     * @type {number}
     * @memberof DataaccessSubmission
     */
    accessRequirementVersion?: number;
    /**
     * The ID of the Request which is used to create this submission.
     * @type {string}
     * @memberof DataaccessSubmission
     */
    requestId?: string;
    /**
     * The Data Use Certificate uploaded by user.
     * @type {string}
     * @memberof DataaccessSubmission
     */
    ducFileHandleId?: string;
    /**
     * The Institutional Review Board Approval document uploaded by user.
     * @type {string}
     * @memberof DataaccessSubmission
     */
    irbFileHandleId?: string;
    /**
     * The set of file handle ID of attached files to this request.
     * @type {Array<string>}
     * @memberof DataaccessSubmission
     */
    attachments?: Array<string>;
    /**
     * List of user changes. A user can gain access, renew access or have access revoked.
     * @type {Array<AccessorChange>}
     * @memberof DataaccessSubmission
     */
    accessorChanges?: Array<AccessorChange>;
    /**
     *
     * @type {ResearchProject}
     * @memberof DataaccessSubmission
     */
    researchProjectSnapshot?: ResearchProject;
    /**
     * True if this submission is a renewal submission.
     * @type {boolean}
     * @memberof DataaccessSubmission
     */
    isRenewalSubmission?: boolean;
    /**
     * Link(s) to publication that used the controlled data.
     * @type {string}
     * @memberof DataaccessSubmission
     */
    publication?: string;
    /**
     * Summary of how the data has been used.
     * @type {string}
     * @memberof DataaccessSubmission
     */
    summaryOfUse?: string;
    /**
     * The date this submission was created.
     * @type {string}
     * @memberof DataaccessSubmission
     */
    submittedOn?: string;
    /**
     * The date this submission was reviewed or was cancelled.
     * @type {string}
     * @memberof DataaccessSubmission
     */
    modifiedOn?: string;
    /**
     * The ID of the user that submitted this submission.
     * @type {string}
     * @memberof DataaccessSubmission
     */
    submittedBy?: string;
    /**
     * The ID of the user that last modified the status of this submission.
     * @type {string}
     * @memberof DataaccessSubmission
     */
    modifiedBy?: string;
    /**
     * The state of a Submission.
     * @type {string}
     * @memberof DataaccessSubmission
     */
    state?: DataaccessSubmissionStateEnum;
    /**
     * The reason this submission is rejected, if it's rejected.
     * @type {string}
     * @memberof DataaccessSubmission
     */
    rejectedReason?: string;
    /**
     * 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 DataaccessSubmission
     */
    etag?: string;
    /**
     * The ID of the subject user interested in. This information will be used to help user navigate back to where they were to continue their work.
     * @type {string}
     * @memberof DataaccessSubmission
     */
    subjectId?: string;
    /**
     * JSON enum for the types of objects which can be restricted by an AccessRequirement.
     * @type {string}
     * @memberof DataaccessSubmission
     */
    subjectType?: DataaccessSubmissionSubjectTypeEnum;
}
/**
 * @export
 */
export declare const DataaccessSubmissionStateEnum: {
    readonly SUBMITTED: "SUBMITTED";
    readonly APPROVED: "APPROVED";
    readonly REJECTED: "REJECTED";
    readonly CANCELLED: "CANCELLED";
};
export type DataaccessSubmissionStateEnum = typeof DataaccessSubmissionStateEnum[keyof typeof DataaccessSubmissionStateEnum];
/**
 * @export
 */
export declare const DataaccessSubmissionSubjectTypeEnum: {
    readonly ENTITY: "ENTITY";
    readonly EVALUATION: "EVALUATION";
    readonly TEAM: "TEAM";
};
export type DataaccessSubmissionSubjectTypeEnum = typeof DataaccessSubmissionSubjectTypeEnum[keyof typeof DataaccessSubmissionSubjectTypeEnum];
/**
 * Check if a given object implements the DataaccessSubmission interface.
 */
export declare function instanceOfDataaccessSubmission(value: object): value is DataaccessSubmission;
export declare function DataaccessSubmissionFromJSON(json: any): DataaccessSubmission;
export declare function DataaccessSubmissionFromJSONTyped(json: any, ignoreDiscriminator: boolean): DataaccessSubmission;
export declare function DataaccessSubmissionToJSON(json: any): DataaccessSubmission;
export declare function DataaccessSubmissionToJSONTyped(value?: DataaccessSubmission | null, ignoreDiscriminator?: boolean): any;
