/**
 * 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 { ValidationSummaryStatistics } from './ValidationSummaryStatistics';
import type { CsvTableDescriptor } from './CsvTableDescriptor';
/**
 * Captures record-based metadata as a special type of CSV. The record set content can be curated using the grid services. When a grid is created from a record set, its data can be exported back to a new version of the record set. The export will include the validation summary as well as a validation file handle that contains detailed validation results for each row in the record set.
 * @export
 * @interface RecordSet
 */
export interface RecordSet {
    /**
     * The name of this entity.  Must be 256 characters or less. Names may only contain: letters, numbers, spaces, underscores, hyphens, periods, plus signs, apostrophes, and parentheses
     * @type {string}
     * @memberof RecordSet
     */
    name?: string;
    /**
     * The description of this entity.  Must be 1000 characters or less.
     * @type {string}
     * @memberof RecordSet
     */
    description?: string;
    /**
     * The unique immutable ID for this entity.  A new ID will be generated for new Entities.  Once issued, this ID is guaranteed to never change or be re-issued
     * @type {string}
     * @memberof RecordSet
     */
    id?: string;
    /**
     * Synapse employs an Optimistic Concurrency Control (OCC) scheme to handle concurrent updates. Since the E-Tag changes every time an entity is updated it is used to detect when a client's current representation of an entity is out-of-date.
     * @type {string}
     * @memberof RecordSet
     */
    etag?: string;
    /**
     * The date this entity was created.
     * @type {string}
     * @memberof RecordSet
     */
    createdOn?: string;
    /**
     * The date this entity was last modified.
     * @type {string}
     * @memberof RecordSet
     */
    modifiedOn?: string;
    /**
     * The ID of the user that created this entity.
     * @type {string}
     * @memberof RecordSet
     */
    createdBy?: string;
    /**
     * The ID of the user that last modified this entity.
     * @type {string}
     * @memberof RecordSet
     */
    modifiedBy?: string;
    /**
     * The ID of the Entity that is the parent of this Entity.
     * @type {string}
     * @memberof RecordSet
     */
    parentId?: string;
    /**
     * Indicates which implementation of Entity this object represents.  The value is the fully qualified class name, e.g. org.sagebionetworks.repo.model.FileEntity.
     * @type {string}
     * @memberof RecordSet
     */
    concreteType: RecordSetConcreteTypeEnum;
    /**
     * The version number issued to this version on the object.
     * @type {number}
     * @memberof RecordSet
     */
    versionNumber?: number;
    /**
     * The version label for this entity
     * @type {string}
     * @memberof RecordSet
     */
    versionLabel?: string;
    /**
     * The version comment for this entity
     * @type {string}
     * @memberof RecordSet
     */
    versionComment?: string;
    /**
     * If this is the latest version of the object.
     * @type {boolean}
     * @memberof RecordSet
     */
    isLatestVersion?: boolean;
    /**
     * ID of the file associated with this entity.
     * @type {string}
     * @memberof RecordSet
     */
    dataFileHandleId?: string;
    /**
     * One or more column names that define this upsert key for this set.  This key is used to determine if a new record should be treated as an update or an insert.
     * @type {Array<string>}
     * @memberof RecordSet
     */
    upsertKey?: Array<string>;
    /**
     *
     * @type {CsvTableDescriptor}
     * @memberof RecordSet
     */
    csvDescriptor?: CsvTableDescriptor;
    /**
     *
     * @type {ValidationSummaryStatistics}
     * @memberof RecordSet
     */
    validationSummary?: ValidationSummaryStatistics;
    /**
     * Pointer to a CSV file that contains the detailed validation results for each row in the record set. The CSV file will contain for each row the following columns: row_index, is_valid, validation_error_message, all_validation_messages. The file can be donwnloaded using the FileEntity association type using the RecordSet id as the object id. Generated only from a grid session export, cannot be changed by the user.
     * @type {string}
     * @memberof RecordSet
     */
    validationFileHandleId?: string;
    /**
     * An optional replacement for the name of the uploaded file.  This is distinct from the entity name.  If omitted the file will retain its original name.
     * @type {string}
     * @memberof RecordSet
     */
    fileNameOverride?: string;
}
/**
 * @export
 */
export declare const RecordSetConcreteTypeEnum: {
    readonly org_sagebionetworks_repo_model_RecordSet: "org.sagebionetworks.repo.model.RecordSet";
};
export type RecordSetConcreteTypeEnum = typeof RecordSetConcreteTypeEnum[keyof typeof RecordSetConcreteTypeEnum];
/**
 * Check if a given object implements the RecordSet interface.
 */
export declare function instanceOfRecordSet(value: object): value is RecordSet;
export declare function RecordSetFromJSON(json: any): RecordSet;
export declare function RecordSetFromJSONTyped(json: any, ignoreDiscriminator: boolean): RecordSet;
export declare function RecordSetToJSON(json: any): RecordSet;
export declare function RecordSetToJSONTyped(value?: RecordSet | null, ignoreDiscriminator?: boolean): any;
