import type { UmbDataSourceErrorResponse, UmbDataSourceResponse } from './data-source-response.interface.js';
import type { Observable } from '../../../external/rxjs/index.js';
export interface UmbPagedModel<T> {
    items: Array<T>;
    total: number;
}
export interface UmbTargetPagedModel<T> extends UmbPagedModel<T> {
    totalAfter?: number;
    totalBefore?: number;
}
export interface UmbRepositoryResponse<T> extends UmbDataSourceResponse<T> {
}
export interface UmbRepositoryErrorResponse extends UmbDataSourceErrorResponse {
}
export interface UmbRepositoryItemsStatus {
    state: {
        type: 'success' | 'error' | 'loading';
        error?: string;
    };
    unique: string;
}
/**
 * Interface for a repository that can return a paged model.
 * @template T - The type of items in the paged model.
 * @template T$ - The type of items returned by the asObservable method, defaults to T. You should only use this if you want to return a different type from the asObservable method.
 */
export interface UmbRepositoryResponseWithAsObservable<T, T$ = T> extends UmbRepositoryResponse<T> {
    asObservable?: () => Observable<T$> | undefined;
}
export type * from './data-mapper/mapping/types.js';
