import type { DataCatalogLifecycle } from './DataCatalogVersion.js';
import { DataCatalogKind } from './kinds.js';
export type DataCatalogScope = 'public' | 'private' | 'organization';
export interface DataCatalogSchema {
    /**
     * The key of the data catalog entry.
     * When the value is missing it will be generated by the API.
     *
     * The key can only be set when creating a new data catalog entry.
     * @readonly
     */
    key: string;
    /**
     * The kind of the schema
     * This is set by the API and is used to identify the schema.
     * @readonly
     */
    readonly kind: typeof DataCatalogKind;
    /**
     * The key of the organization.
     * @required
     */
    organization: string;
    /**
     * The key of the related data catalog file entry.
     * @required
     */
    file: string;
    /**
     * The scope of the data catalog entry.
     * @required
     */
    scope: DataCatalogScope;
    /**
     * The name of the data catalog entry.
     * It is required when creating a new data catalog entry.
     * @required
     */
    name: string;
    /**
     * A short description of the data catalog entry.
     * @required
     */
    description: string;
    /**
     * The id of the user who created the data catalog entry.
     * It is ignored when creating or updating a data catalog entry.
     * @readonly
     */
    publishedBy: string;
    /**
     * The time when the last version was published.
     * It is ignored when creating or updating a data catalog entry.
     * @readonly
     */
    publishedAt: number;
    /**
     * The time when the data catalog entry was created.
     * It is ignored when creating or updating a data catalog entry.
     * @readonly
     */
    createdAt: number;
    /**
     * The time when the data catalog entry was last updated.
     * It is ignored when creating or updating a data catalog entry.
     * @readonly
     */
    updatedAt: number;
    /**
     * The timestamp when this entry was unpublished.
     * Only set when the entry was unpublished.
     * @readonly
     */
    unpublishedAt?: number;
    /**
     * A flag indicating if the entry is deprecated.
     * @readonly
     */
    deprecated?: boolean;
    /**
     * The timestamp when the entry was deprecated.
     * Only set when the entry was deprecated.
     * @readonly
     */
    deprecatedAt?: number;
    /**
     * The id of the user who deprecated the entry.
     * Only set when the entry was deprecated.
     * @readonly
     */
    deprecatedBy?: string;
    /**
     * The reason why the entry was deprecated.
     * Only set when the entry was deprecated.
     */
    deprecationReason?: string;
    /**
     * The list of tags associated with the data catalog entry.
     * @readonly Use the API endpoints to manage tags.
     */
    tags: string[];
}
export interface DataCatalogSchemaVersion {
    /**
     * The version of the data catalog entry.
     */
    version: string;
    /**
     * The lifecycle of the data catalog version.
     */
    lifecycle: DataCatalogLifecycle;
}
/**
 * Used with API communication when listing data catalog entries.
 */
export interface DataCatalogSchemaWithVersion extends DataCatalogSchema {
    /**
     * The list of published versions of the data catalog entry.
     * Note, this is limited to the last 20 versions.
     */
    versions: DataCatalogSchemaVersion[];
}
/**
 * Simplified information about a data catalog version.
 * It is used when listing versions of a data catalog entry.
 */
export interface DataCatalogVersionInfo {
    /**
     * The key of the version.
     */
    key: string;
    /**
     * The version string according to the [semantic versioning](https://semver.org/) specification.
     * Note, this value is limited to 32 characters by the API.
     */
    version: string;
    /**
     * The timestamp when this version was published.
     */
    published: number;
}
export interface DataCatalogStatus extends DataCatalogSchema {
    versions: DataCatalogVersionInfo[];
}
export declare class DataCatalog implements DataCatalogSchema {
    key: string;
    get kind(): typeof DataCatalogKind;
    organization: string;
    file: string;
    scope: DataCatalogScope;
    name: string;
    description: string;
    publishedBy: string;
    publishedAt: number;
    createdAt: number;
    updatedAt: number;
    unpublishedAt?: number | undefined;
    deprecated?: boolean | undefined;
    deprecatedAt?: number | undefined;
    deprecatedBy?: string | undefined;
    deprecationReason?: string | undefined;
    tags: string[];
    static createSchema(input: Partial<DataCatalogSchema>): DataCatalogSchema;
    constructor(input?: Partial<DataCatalogSchema>);
    toJSON(): DataCatalogSchema;
}
//# sourceMappingURL=DataCatalog.d.ts.map