/**
 * 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 { DoiResourceType } from './DoiResourceType';
import type { DoiTitle } from './DoiTitle';
import type { DoiCreator } from './DoiCreator';
/**
 * JSON schema for fields associated with a DOI and its metadata. This object contains fields from both <a href="${org.sagebionetworks.repo.model.doi.v2.DoiAssociation}">DoiAssociation</a> and <a href="${org.sagebionetworks.repo.model.doi.v2.DataciteMetadata}">DataciteMetadata</a>.<br>To mint a DOI, the following fields are required: <ul> <li>Information that uniquely identifies an object in Synapse <ul><li> The object ID <i>(e.g. "syn12345")</i></li><li>The object type <i>(Note: as of this writing, only ENTITY is supported)</i></li><li>The version number of the object <i>(Optional. A "null" version will mint a DOI that will point to the most recent version of the object, even if the object changes)</i></li><li>An eTag <i>(Necessary when updating an existing DOI)</i></li></ul></li> <li>Additional supplementary information to mint a DOI <ul><li>Creator(s)</li><li>Title(s)</li><li>The general resource type</li><li>A publication year (no later than one year after the current year)</li></ul></li> </ul><br>For more information, see the <a href="${org.sagebionetworks.repo.model.doi.v2.DoiAssociation}">DoiAssociation</a> and <a href="${org.sagebionetworks.repo.model.doi.v2.DataciteMetadata}">DataciteMetadata</a> objects.
 * @export
 * @interface V2Doi
 */
export interface V2Doi {
    /**
     * Required. The main researchers involved in producing the data, or the authors of the publication, in priority order.
     * @type {Array<DoiCreator>}
     * @memberof V2Doi
     */
    creators?: Array<DoiCreator>;
    /**
     * Required. A name or title by which a resource is known.
     * @type {Array<DoiTitle>}
     * @memberof V2Doi
     */
    titles?: Array<DoiTitle>;
    /**
     * Required. The year that this resource became publicly accessible. Must be in YYYY format.
     * @type {number}
     * @memberof V2Doi
     */
    publicationYear?: number;
    /**
     *
     * @type {DoiResourceType}
     * @memberof V2Doi
     */
    resourceType?: DoiResourceType;
    /**
     * The publisher of the DOI, for a portal DOI matches the Portal name
     * @type {string}
     * @memberof V2Doi
     */
    publisher?: string;
    /**
     * The unique ID of this DOI stored in Synapse. Provided by Synapse.
     * @type {string}
     * @memberof V2Doi
     */
    associationId?: string;
    /**
     * For Optimistic Concurrency Control (OCC). Required to successfully update a DOI.
     * @type {string}
     * @memberof V2Doi
     */
    etag?: string;
    /**
     * The unique URI of this DOI to which the resource can be resolved. Provided by Synapse.
     * @type {string}
     * @memberof V2Doi
     */
    doiUri?: string;
    /**
     * The DOI URL that will point to the Synapse object.  Provided by Synapse.
     * @type {string}
     * @memberof V2Doi
     */
    doiUrl?: string;
    /**
     * The id of the portal that this DOI is associated with.
     * @type {string}
     * @memberof V2Doi
     */
    portalId?: string;
    /**
     * Required. The ID of the digital object in Synapse for which this DOI is created.
     * @type {string}
     * @memberof V2Doi
     */
    objectId?: string;
    /**
     * The type of objects that support DOI minting
     * @type {string}
     * @memberof V2Doi
     */
    objectType?: V2DoiObjectTypeEnum;
    /**
     * Optional. The version of the digital object. When null, the DOI is associated with the current version of the object.
     * @type {number}
     * @memberof V2Doi
     */
    objectVersion?: number;
    /**
     * The ID of the user that creates this DOI. Provided by Synapse.
     * @type {string}
     * @memberof V2Doi
     */
    associatedBy?: string;
    /**
     * The date time this DOI is first created. Provided by Synapse.
     * @type {string}
     * @memberof V2Doi
     */
    associatedOn?: string;
    /**
     * The ID of the user that last updated this DOI. Provided by Synapse.
     * @type {string}
     * @memberof V2Doi
     */
    updatedBy?: string;
    /**
     * The date time this DOI is last updated. Provided by Synapse.
     * @type {string}
     * @memberof V2Doi
     */
    updatedOn?: string;
}
/**
 * @export
 */
export declare const V2DoiObjectTypeEnum: {
    readonly ENTITY: "ENTITY";
    readonly PORTAL_RESOURCE: "PORTAL_RESOURCE";
};
export type V2DoiObjectTypeEnum = typeof V2DoiObjectTypeEnum[keyof typeof V2DoiObjectTypeEnum];
/**
 * Check if a given object implements the V2Doi interface.
 */
export declare function instanceOfV2Doi(value: object): value is V2Doi;
export declare function V2DoiFromJSON(json: any): V2Doi;
export declare function V2DoiFromJSONTyped(json: any, ignoreDiscriminator: boolean): V2Doi;
export declare function V2DoiToJSON(json: any): V2Doi;
export declare function V2DoiToJSONTyped(value?: V2Doi | null, ignoreDiscriminator?: boolean): any;
