/**
 * Read public records in Node and browsers environments.
 *
 * ## Purpose
 *
 * The `core` module of the Self.ID SDK exports the `Core` and `PublicID` classes to provide APIs
 * for reading public records in Node and browsers environments.
 *
 * It can therefore be used both client-side and server-side by applications wanting to access
 * records associated to a DID on a Ceramic network.
 *
 * ## Installation
 *
 * ```sh
 * npm install @self.id/core
 * ```
 *
 * ## Common use-cases
 *
 * ### Read the basic profile of a known DID
 *
 * ```ts
 * import { Core } from '@self.id/core'
 *
 * const core = new Core({ ceramic: 'testnet-clay' })
 *
 * async function getProfile() {
 *   // Replace by the wanted DID string
 *   const did = 'did:3:...'
 *   return await core.get('basicProfile', did)
 * }
 * ```
 *
 * ### Connect to a custom Ceramic node
 *
 * ```ts
 * import { Core } from '@self.id/core'
 *
 * // You can provide the URL of a custom node as the `ceramic` parameter
 * const core = new Core({ ceramic: 'https://ceramic-clay.3boxlabs.com' })
 * ```
 *
 * ### Use a custom data model
 *
 * ```ts
 * import { Core } from '@self.id/core'
 *
 * const aliases = {
 *   definitions: {
 *     basicProfile: 'kjzl6cwe1jw145cjbeko9kil8g9bxszjhyde21ob8epxuxkaon1izyqsu8wgcic',
 *     notes: 'kjzl6cwe1jw14688v7zhf5eo1uiblt0thkgdedb5gaiq99isj224g6v8uza2r4m',
 *   },
 *   schemas: {
 *     BasicProfile: 'ceramic://k3y52l7qbv1frxt706gqfzmq6cbqdkptzk8uudaryhlkf6ly9vx21hqu4r6k1jqio',
 *     Note: 'ceramic://k3y52l7qbv1fryg3uy4gz50pj3ivni18h6younsgd2kb5u7mivx3h258m01tkwk5c',
 *     Notes: 'ceramic://k3y52l7qbv1frxk024s7ds2456qo3rwa02k31uf98loz8lm1lodlgv3eeqh4cxgjk',
 *   },
 *   tiles: {
 *     placeholderNote: 'kjzl6cwe1jw148snra9bmyf32y5pj2ysnvenqx59k7n2lz3gnri72axvp25fo1v',
 *   },
 * }
 * const core = new Core({ ceramic: 'testnet-clay', aliases })
 *
 * async function getNotes(did) {
 *   return await core.get('notes', did)
 * }
 * ```
 *
 * ### Use a PublicID instance
 *
 * ```ts
 * import { Core, PublicID } from '@self.id/core'
 *
 * const core = new Core({ ceramic: 'testnet-clay' })
 * // Replace the `id` parameter by the wanted DID string
 * const currentUser = new PublicID({ core, id: 'did:3:...' })
 *
 * async function getCurrentUserProfile() {
 *   return await currentUser.get('basicProfile')
 * }
 * ```
 *
 * @module core
 */
export * from './core.js';
export * from './public.js';
export * from './types.js';
export * from './utils.js';
