/**
 * 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.
 */
/**
 * A CurationTaskProperties for record-based metadata
 * @export
 * @interface RecordBasedMetadataTaskProperties
 */
export interface RecordBasedMetadataTaskProperties {
    /**
     * Indicates which implementation of CurationTaskProperties this object represents. Possible values include: 'org.sagebionetworks.repo.model.curation.metadata.FileBasedMetadataTaskProperties' and 'org.sagebionetworks.repo.model.curation.metadata.RecordBasedMetadataTaskProperties'.
     * @type {string}
     * @memberof RecordBasedMetadataTaskProperties
     */
    concreteType: RecordBasedMetadataTaskPropertiesConcreteTypeEnum;
    /**
     * The set of principal IDs that should collaborate on the grid session. This field may be used to set the ownerPrincipalId(s) of a linked <a href="${org.sagebionetworks.repo.model.grid.GridSession}">GridSession</a> if the suggestedAuthorizationMode is SESSION_OWNER
     * @type {Array<string>}
     * @memberof RecordBasedMetadataTaskProperties
     */
    collaboratorPrincipalIds?: Array<string>;
    /**
     * Defines the authorization mode used to gate access to a grid session. The mode is set at session creation time and cannot be changed. It controls both who may join the session (create a replica) and which rows are included in the session's initial snapshot.
     *
     * SESSION_OWNER (default): Access is determined by the session owner. Only the owner (or members of the owner's team) may join. When the source is a view, the snapshot includes rows that the owner has access to; non-owner members see data through the owner's access scope.
     *
     * SOURCE_BENEFACTOR: Access is determined by EDIT access on the source entity's benefactor(s). At session creation the set of benefactor IDs that the creating user (the 'action user') has EDIT access on is captured and stored on the session. Any user who has EDIT access on all of those captured benefactors may join the session and see all rows in the snapshot. This mode is useful when a project administrator wants all editors of a project to be able to collaborate on a grid, without needing to manage a separate owner team.
     * @type {string}
     * @memberof RecordBasedMetadataTaskProperties
     */
    suggestedAuthorizationMode?: RecordBasedMetadataTaskPropertiesSuggestedAuthorizationModeEnum;
    /**
     * The synId of the RecordSet that will contain all record-based metadata for a specific type.  This RecordSet will be used to start new grid sessions for both 'upsert' and record-based curation for this type.
     * @type {string}
     * @memberof RecordBasedMetadataTaskProperties
     */
    recordSetId?: string;
}
/**
 * @export
 */
export declare const RecordBasedMetadataTaskPropertiesConcreteTypeEnum: {
    readonly org_sagebionetworks_repo_model_curation_metadata_RecordBasedMetadataTaskProperties: "org.sagebionetworks.repo.model.curation.metadata.RecordBasedMetadataTaskProperties";
};
export type RecordBasedMetadataTaskPropertiesConcreteTypeEnum = typeof RecordBasedMetadataTaskPropertiesConcreteTypeEnum[keyof typeof RecordBasedMetadataTaskPropertiesConcreteTypeEnum];
/**
 * @export
 */
export declare const RecordBasedMetadataTaskPropertiesSuggestedAuthorizationModeEnum: {
    readonly SESSION_OWNER: "SESSION_OWNER";
    readonly SOURCE_BENEFACTOR: "SOURCE_BENEFACTOR";
};
export type RecordBasedMetadataTaskPropertiesSuggestedAuthorizationModeEnum = typeof RecordBasedMetadataTaskPropertiesSuggestedAuthorizationModeEnum[keyof typeof RecordBasedMetadataTaskPropertiesSuggestedAuthorizationModeEnum];
/**
 * Check if a given object implements the RecordBasedMetadataTaskProperties interface.
 */
export declare function instanceOfRecordBasedMetadataTaskProperties(value: object): value is RecordBasedMetadataTaskProperties;
export declare function RecordBasedMetadataTaskPropertiesFromJSON(json: any): RecordBasedMetadataTaskProperties;
export declare function RecordBasedMetadataTaskPropertiesFromJSONTyped(json: any, ignoreDiscriminator: boolean): RecordBasedMetadataTaskProperties;
export declare function RecordBasedMetadataTaskPropertiesToJSON(json: any): RecordBasedMetadataTaskProperties;
export declare function RecordBasedMetadataTaskPropertiesToJSONTyped(value?: RecordBasedMetadataTaskProperties | null, ignoreDiscriminator?: boolean): any;
