/// <reference path="./hooks.d.ts" />
/// <reference path="./-private.d.ts" />
/// <reference path="./migration-support.type-test.d.ts" />
/// <reference path="./migration-support.d.ts" />
/// <reference path="./-private/model-methods.d.ts" />
/// <reference path="./-private/belongs-to.d.ts" />
/// <reference path="./-private/legacy-relationships-support.d.ts" />
/// <reference path="./-private/has-many.type-test.d.ts" />
/// <reference path="./-private/promise-belongs-to.d.ts" />
/// <reference path="./-private/util.d.ts" />
/// <reference path="./-private/record-state.d.ts" />
/// <reference path="./-private/hooks.d.ts" />
/// <reference path="./-private/notify-changes.d.ts" />
/// <reference path="./-private/promise-many-array.d.ts" />
/// <reference path="./-private/belongs-to.type-test.d.ts" />
/// <reference path="./-private/errors.d.ts" />
/// <reference path="./-private/model-for-mixin.d.ts" />
/// <reference path="./-private/attr.type-test.d.ts" />
/// <reference path="./-private/attr.d.ts" />
/// <reference path="./-private/has-many.d.ts" />
/// <reference path="./-private/type-utils.d.ts" />
/// <reference path="./-private/schema-provider.d.ts" />
/// <reference path="./-private/model.type-test.d.ts" />
/// <reference path="./-private/model.d.ts" />
/// <reference path="./-private/promise-proxy-base.d.ts" />
/// <reference path="./-private/references/belongs-to.d.ts" />
/// <reference path="./-private/references/has-many.d.ts" />
/// <reference path="./-private/debug/assert-polymorphic-type.d.ts" />
declare module '@ember-data/model' {
  /**
   * This package provides a Presentation Model for resource data in an EmberData Cache.
   *
   * Models are defined as classes extending from `import Model from '@ember-data/model';` and the
   * attributes and relationships on these classes are parsed at runtime to supply static "schema"
   * to EmberData's SchemaService.
   *
   * Resource data for individual resources fetched from your API is presented to the UI via instances
   * of the `Model`s you define. An instantiated `Model` is referred to as a `record`.
  
    When we refer to the `ModelClass` as opposed to a `Model` or `Record` we are referring
    specifically to the class definition and the static schema methods present on it.
  
    When we refer to a `record` we refer to a specific class instance presenting
    the resource data for a given `type` and `id`.
  
    ### Defining a Model
  
    ```js [app/models/person.js]
    import Model, { attr, belongsTo, hasMany } from '@ember-data/model';
  
    export default class PersonModel extends Model {
      @attr name;
  
      @belongsTo('pet', { inverse: 'owners', async: false }) dog;
  
      @hasMany('person', { inverse: 'friends', async: true }) friends;
    }
    ```
  
    ### modelName convention
  
    By convention, the name of a given model (its `type`) matches the name
    of the file in the `app/models` folder and should be lowercase, singular
    and dasherized.
  
    @module
   */
  export { attr } from '@ember-data/model/-private/attr';
  export { belongsTo } from '@ember-data/model/-private/belongs-to';
  export { hasMany } from '@ember-data/model/-private/has-many';
  export { Model } from '@ember-data/model/-private/model';
  export { Model as default } from '@ember-data/model/-private/model';
  export type { PromiseBelongsTo as AsyncBelongsTo } from '@ember-data/model/-private/promise-belongs-to';
  export type { PromiseManyArray as AsyncHasMany } from '@ember-data/model/-private/promise-many-array';
  export type { RelatedCollection as ManyArray } from '@ember-data/store/-private';
  export type { RelatedCollection as HasMany } from '@ember-data/store/-private';
  export { instantiateRecord, teardownRecord, modelFor } from '@ember-data/model/-private/hooks';
  export { ModelSchemaProvider } from '@ember-data/model/-private/schema-provider';
}
//# sourceMappingURL=index.d.ts.map