import type { AppResponse } from './api.js';
import type { AssetResponse } from './asset.js';
export declare const ASSET_SPEC_NAME_REGEX: RegExp;
export declare const ASSET_SPEC_CONTRACT_MAX_BYTES: number;
export declare const ASSET_SPEC_VISIBILITY_VALUES: readonly ["PRIVATE", "PUBLIC"];
export type AssetSpecVisibility = (typeof ASSET_SPEC_VISIBILITY_VALUES)[number];
export declare const ASSET_SPEC_VALIDATION_KIND_VALUES: readonly ["NONE", "JSON_SCHEMA"];
export type AssetSpecValidationKind = (typeof ASSET_SPEC_VALIDATION_KIND_VALUES)[number];
export declare const ASSET_VALIDATION_STATUS_VALUES: readonly ["NOT_RUN", "PASSED", "FAILED"];
export type AssetValidationStatus = (typeof ASSET_VALIDATION_STATUS_VALUES)[number];
export declare const ASSET_SPEC_STATUS_VALUES: readonly ["ACTIVE", "DEPRECATED", "RETRACTED"];
export type AssetSpecStatus = (typeof ASSET_SPEC_STATUS_VALUES)[number];
export declare const ASSET_SPEC_CAPABILITY_VALUES: readonly ["READ", "WRITE", "EDIT", "PREVIEW", "IMPORT"];
export type AssetSpecCapability = (typeof ASSET_SPEC_CAPABILITY_VALUES)[number];
export declare const ASSET_SPEC_ROLE_MODE_VALUES: readonly ["TEXT", "BINARY"];
export type AssetSpecRoleMode = (typeof ASSET_SPEC_ROLE_MODE_VALUES)[number];
export declare const ASSET_SPEC_REFERENCE_TARGET_KIND_VALUES: readonly ["ASSET"];
export type AssetSpecReferenceTargetKind = (typeof ASSET_SPEC_REFERENCE_TARGET_KIND_VALUES)[number];
export declare const ASSET_SPEC_REFERENCE_CARDINALITY_VALUES: readonly ["ONE", "MANY"];
export type AssetSpecReferenceCardinality = (typeof ASSET_SPEC_REFERENCE_CARDINALITY_VALUES)[number];
export interface AssetSpecFamilyRef {
    kind: 'asset-spec';
    creatorUsername: string;
    name: string;
}
export interface AssetSpecVersionRef extends AssetSpecFamilyRef {
    version: string;
}
export interface AssetSpecRoleContract {
    name: string;
    required: boolean;
    contentTypes: string[];
    extensions?: string[];
    mode: AssetSpecRoleMode;
    jsonSchema?: Record<string, unknown> | null;
}
export interface AssetSpecReferenceContract {
    name: string;
    required: boolean;
    targetKind: AssetSpecReferenceTargetKind;
    cardinality: AssetSpecReferenceCardinality;
    targetSpec?: string | null;
    versionRange?: string | null;
}
export interface AssetSpecContract {
    primaryRole: string;
    roles: AssetSpecRoleContract[];
    references?: AssetSpecReferenceContract[];
}
export interface AppMetadataAssetSpecSupport {
    assetSpecRef: string;
    versionRange: string;
    capabilities: AssetSpecCapability[];
}
export interface AssetSpecVersionResponse {
    id: number;
    version: string;
    major: number;
    minor: number;
    patch: number;
    visibility: AssetSpecVisibility;
    status: AssetSpecStatus;
    validationKind: AssetSpecValidationKind;
    contractJson: AssetSpecContract | Record<string, unknown>;
    documentationUrl?: string | null;
    validatorUrl?: string | null;
    releaseNotes?: string | null;
    successorVersionRef?: string | null;
    createdAt: string;
    updatedAt: string;
}
export interface AssetSpecResponse {
    id: number;
    name: string;
    displayName: string;
    description?: string | null;
    creatorId: number;
    creatorUsername: string;
    symbolUrl?: string | null;
    currentVersion?: AssetSpecVersionResponse | null;
    currentVersionRef?: string | null;
    status?: AssetSpecStatus | null;
    publicAssetCount: number;
    supportingAppCount: number;
    documentationAvailable: boolean;
    createdAt: string;
    updatedAt: string;
}
export declare const ASSET_SPEC_LIST_SORT_VALUES: readonly ["recent", "assets", "apps", "alpha"];
export type AssetSpecListSort = (typeof ASSET_SPEC_LIST_SORT_VALUES)[number];
export interface AssetSpecListResponse {
    assetSpecs: AssetSpecResponse[];
    pagination: {
        limit: number;
        offset: number;
        count: number;
        hasMore: boolean;
    };
}
export interface AssetSpecDetailResponse {
    assetSpec: AssetSpecResponse;
}
export interface AssetSpecVersionsListResponse {
    versions: AssetSpecVersionResponse[];
    pagination?: {
        limit: number;
        offset: number;
        count: number;
        hasMore: boolean;
    };
}
export interface AssetSpecAssetsListResponse {
    assetSpec: AssetSpecResponse;
    assets: AssetResponse[];
    pagination: {
        limit: number;
        offset: number;
        count: number;
        hasMore: boolean;
    };
}
export interface AssetSpecAppsListResponse {
    assetSpec: AssetSpecResponse;
    apps: AppResponse[];
    pagination: {
        limit: number;
        offset: number;
        count: number;
        hasMore: boolean;
    };
}
export interface AssetSpecSearchResult {
    kind: 'asset-spec';
    targetPath: string;
    assetSpec: AssetSpecResponse;
}
export interface CreateAssetSpecVersionResponse {
    assetSpec: AssetSpecResponse;
    version: AssetSpecVersionResponse;
}
export interface UpdateAssetSpecVersionResponse {
    assetSpec: AssetSpecResponse;
    version: AssetSpecVersionResponse;
}
export interface DeleteAssetSpecVersionResponse {
    success: boolean;
}
export interface DeleteAssetSpecResponse {
    success: boolean;
}
export declare const ASSET_SPEC_CONTRACT_META_SCHEMA: Record<string, unknown>;
export declare function isAssetSpecVisibility(value: unknown): value is AssetSpecVisibility;
export declare function isAssetSpecValidationKind(value: unknown): value is AssetSpecValidationKind;
export declare function isAssetValidationStatus(value: unknown): value is AssetValidationStatus;
export declare function isAssetSpecStatus(value: unknown): value is AssetSpecStatus;
export declare function isAssetSpecCapability(value: unknown): value is AssetSpecCapability;
export declare function isJsonLikeAssetSpecContentType(value: string): boolean;
export declare function isValidAssetSpecName(value: unknown): value is string;
export declare function parseAssetSpecFamilyRef(raw: string): AssetSpecFamilyRef | null;
export declare function parseAssetSpecVersionRef(raw: string): AssetSpecVersionRef | null;
export declare function formatAssetSpecFamilyRef(ref: AssetSpecFamilyRef): string;
export declare function formatAssetSpecVersionRef(ref: AssetSpecVersionRef): string;
//# sourceMappingURL=asset-spec.d.ts.map