# Function: createHostNode()

```ts
function createHostNode(config): Promise<Readonly<{
  did: string;
  evaluate: () => Promise<Changes>;
  fullUntil: (subscription) => 
     | {
     since: number;
     until: number;
   }
    | null;
  get: (id) => Promise<Subscription | null>;
  heldBack: (spaceId) => boolean;
  limits: HostLimits | null;
  linksAt: (topic) => readonly string[];
  list: () => Promise<Subscription[]>;
  outOfRoom: (subscription) => boolean;
  paysItself: (spaceId) => Promise<boolean>;
  plan: (subscription) => "paid" | "free" | null;
  recheck: () => Promise<void>;
  spaces: () => Promise<readonly CarriedSpace[]>;
  state: (subscription) => SubscriptionState;
  subscribe: (id) => Promise<Subscription>;
  subscribeEvents: (listener) => () => void;
  attach(id, account, invite): Promise<Subscription>;
  authenticator(spaceId): Promise<ServerAuth | null>;
  carriedFor(id): Promise<number>;
  carrySpace(id, pass): Promise<Subscription>;
  close(): Promise<void>;
  detach(id): Promise<void>;
  extend(id, until, customer?): Promise<Subscription>;
  holdForRoom(id, spaceIds): Promise<void>;
  namedFor(id): Promise<readonly string[]>;
  overFor(id): Promise<readonly OverSpace[]>;
  read(spaceId, session): void;
  readKeyOf(id): string | null;
  refuse(id): Promise<void>;
  seen(id): Promise<void>;
  setFull(id, over): Promise<void>;
  setInvoice(id, invoice): Promise<Subscription>;
  setPaidUntil(id, until): Promise<Subscription>;
  spacesOf(id): Promise<readonly string[]>;
  sweep(): Promise<readonly string[]>;
  usage(spaceId): Promise<SpaceUsage | null>;
}>>;
```

Defined in: [packages/core/src/node/host.ts:170](https://github.com/leifriksheim/minca/blob/main/core/src/node/host.ts#L170)

Starts a host

## Parameters

| Parameter | Type |
| ------ | ------ |
| `config` | [`HostConfig`](https://minca.dev/api/core/interfaces/HostConfig.md) |

## Returns

`Promise`\<`Readonly`\<\{
  `did`: `string`;
  `evaluate`: () => `Promise`\<`Changes`\>;
  `fullUntil`: (`subscription`) => 
     \| \{
     `since`: `number`;
     `until`: `number`;
   \}
    \| `null`;
  `get`: (`id`) => `Promise`\<[`Subscription`](https://minca.dev/api/core/interfaces/Subscription.md) \| `null`\>;
  `heldBack`: (`spaceId`) => `boolean`;
  `limits`: [`HostLimits`](https://minca.dev/api/core/interfaces/HostLimits.md) \| `null`;
  `linksAt`: (`topic`) => readonly `string`[];
  `list`: () => `Promise`\<[`Subscription`](https://minca.dev/api/core/interfaces/Subscription.md)[]\>;
  `outOfRoom`: (`subscription`) => `boolean`;
  `paysItself`: (`spaceId`) => `Promise`\<`boolean`\>;
  `plan`: (`subscription`) => `"paid"` \| `"free"` \| `null`;
  `recheck`: () => `Promise`\<`void`\>;
  `spaces`: () => `Promise`\<readonly [`CarriedSpace`](https://minca.dev/api/core/interfaces/CarriedSpace.md)[]\>;
  `state`: (`subscription`) => [`SubscriptionState`](https://minca.dev/api/core/type-aliases/SubscriptionState.md);
  `subscribe`: (`id`) => `Promise`\<[`Subscription`](https://minca.dev/api/core/interfaces/Subscription.md)\>;
  `subscribeEvents`: (`listener`) => () => `void`;
  `attach`(`id`, `account`, `invite`): `Promise`\<[`Subscription`](https://minca.dev/api/core/interfaces/Subscription.md)\>;
  `authenticator`(`spaceId`): `Promise`\<[`ServerAuth`](https://minca.dev/api/core/interfaces/ServerAuth.md) \| `null`\>;
  `carriedFor`(`id`): `Promise`\<`number`\>;
  `carrySpace`(`id`, `pass`): `Promise`\<[`Subscription`](https://minca.dev/api/core/interfaces/Subscription.md)\>;
  `close`(): `Promise`\<`void`\>;
  `detach`(`id`): `Promise`\<`void`\>;
  `extend`(`id`, `until`, `customer?`): `Promise`\<[`Subscription`](https://minca.dev/api/core/interfaces/Subscription.md)\>;
  `holdForRoom`(`id`, `spaceIds`): `Promise`\<`void`\>;
  `namedFor`(`id`): `Promise`\<readonly `string`[]\>;
  `overFor`(`id`): `Promise`\<readonly [`OverSpace`](https://minca.dev/api/core/interfaces/OverSpace.md)[]\>;
  `read`(`spaceId`, `session`): `void`;
  `readKeyOf`(`id`): `string` \| `null`;
  `refuse`(`id`): `Promise`\<`void`\>;
  `seen`(`id`): `Promise`\<`void`\>;
  `setFull`(`id`, `over`): `Promise`\<`void`\>;
  `setInvoice`(`id`, `invoice`): `Promise`\<[`Subscription`](https://minca.dev/api/core/interfaces/Subscription.md)\>;
  `setPaidUntil`(`id`, `until`): `Promise`\<[`Subscription`](https://minca.dev/api/core/interfaces/Subscription.md)\>;
  `spacesOf`(`id`): `Promise`\<readonly `string`[]\>;
  `sweep`(): `Promise`\<readonly `string`[]\>;
  `usage`(`spaceId`): `Promise`\<[`SpaceUsage`](https://minca.dev/api/core/interfaces/SpaceUsage.md) \| `null`\>;
\}\>\>
