import type { UmbEntityModel } from '../../../core/entity/index.js';
import type { UmbApi } from '../../../../libs/extension-api/index.js';
import type { DefaultReferenceResponseModel, DocumentReferenceResponseModel, MediaReferenceResponseModel, MemberReferenceResponseModel } from '../../../core/backend-api/index.js';
import type { UmbDataSourceResponse, UmbPagedModel, UmbRepositoryResponse } from '../../../core/repository/index.js';
export interface UmbReferenceItemModel extends UmbEntityModel {
}
export type UmbReferenceModel = DefaultReferenceResponseModel | DocumentReferenceResponseModel | MediaReferenceResponseModel | MemberReferenceResponseModel;
export interface UmbEntityReferenceRepository extends UmbApi {
    requestReferencedBy(unique: string, skip?: number, take?: number): Promise<UmbRepositoryResponse<UmbPagedModel<UmbReferenceItemModel>>>;
    requestAreReferenced(uniques: Array<string>, skip?: number, take?: number): Promise<UmbRepositoryResponse<UmbPagedModel<UmbEntityModel>>>;
    requestDescendantsWithReferences?(unique: string, skip?: number, take?: number): Promise<UmbRepositoryResponse<UmbPagedModel<UmbEntityModel>>>;
}
export interface UmbEntityReferenceDataSource {
    getReferencedBy(unique: string, skip?: number, take?: number): Promise<UmbDataSourceResponse<UmbPagedModel<UmbReferenceItemModel>>>;
    getAreReferenced(uniques: Array<string>, skip?: number, take?: number): Promise<UmbDataSourceResponse<UmbPagedModel<UmbEntityModel>>>;
    getReferencedDescendants?(unique: string, skip?: number, take?: number): Promise<UmbDataSourceResponse<UmbPagedModel<UmbEntityModel>>>;
}
