import { BeanPath, StringPath } from '../expression/';
import { QTypedManyResourceRelationship, QTypedOneResourceRelationship } from '../stub/';
import { MetaDataObject, QMetaDataObject } from './meta.data.object';
import { MetaElement, QMetaElement } from './meta.element';
import { MetaResource, QMetaResource } from './meta.resource';
import { ManyQueryResult, OneQueryResult, ResourceRelationship, TypedOneResourceRelationship } from 'ngrx-json-api';
export declare module MetaResourceRepository {
    interface Relationships extends MetaElement.Relationships {
        [key: string]: ResourceRelationship;
        resourceType?: TypedOneResourceRelationship<MetaResource>;
        listMetaType?: TypedOneResourceRelationship<MetaDataObject>;
        listLinksType?: TypedOneResourceRelationship<MetaDataObject>;
    }
}
export interface MetaResourceRepository extends MetaElement {
    relationships?: MetaResourceRepository.Relationships;
}
export interface MetaResourceRepositoryResult extends OneQueryResult {
    data?: MetaResourceRepository;
}
export interface MetaResourceRepositoryListResult extends ManyQueryResult {
    data?: Array<MetaResourceRepository>;
}
export declare class QMetaResourceRepository extends BeanPath<MetaResourceRepository> {
    metaId: string;
    id: StringPath;
    type: StringPath;
    relationships: QMetaResourceRepository.QRelationships;
    attributes: QMetaElement.QAttributes;
}
export declare module QMetaResourceRepository {
    class QRelationships extends BeanPath<MetaResourceRepository.Relationships> {
        private _resourceType;
        readonly resourceType: QTypedOneResourceRelationship<QMetaResource, MetaResource>;
        private _listMetaType;
        readonly listMetaType: QTypedOneResourceRelationship<QMetaDataObject, MetaDataObject>;
        private _listLinksType;
        readonly listLinksType: QTypedOneResourceRelationship<QMetaDataObject, MetaDataObject>;
        private _parent;
        readonly parent: QTypedOneResourceRelationship<QMetaElement, MetaElement>;
        private _children;
        readonly children: QTypedManyResourceRelationship<QMetaElement, MetaElement>;
    }
}
export declare let createEmptyMetaResourceRepository: (id: string) => MetaResourceRepository;
