---
title: PlanUsageOptions
description: "A plan's phases, in plain seconds, before anything is spent."
---

A plan's phases, in plain seconds, before anything is spent.

Separate from \[`RunUsageOptions`] on purpose (COST-10): every field is a number, so there
is no field an accidentally-measured duration could be written into. The wrapping into
projected durations happens in the core, in one place.

## Properties

### imageGb?

```ts
optional imageGb?: number;
```

***

### imageRetainedSeconds?

```ts
optional imageRetainedSeconds?: number;
```

***

### label?

```ts
optional label?: string;
```

What the report is of. Left out, `"estimate"`: the core's label, the one
`microvm cost --estimate` uses for the same plan (#255).

***

### launched?

```ts
optional launched?: boolean;
```

Whether the plan launches, which reads a snapshot. Left out, the core infers it: running
time, or an image of non-zero size, so suspended time alone reads no launch snapshot.

***

### runningSeconds?

```ts
optional runningSeconds?: number;
```

***

### snapshotGb?

```ts
optional snapshotGb?: number;
```

***

### suspendedSeconds?

```ts
optional suspendedSeconds?: number;
```

***

### suspendResumeCycles?

```ts
optional suspendResumeCycles?: number;
```

Each cycle pays a snapshot write plus a read. Left out, the plan counts none, as
`microvm cost --estimate` does.

## Provenance

This page is generated from `bindings/microvms-js/index.d.ts` by TypeDoc 0.28.20 and typedoc-plugin-markdown 4.13.1, run from `site/scripts/gen-reference.mjs` on every `pnpm run sync`, so an edit made here is overwritten by the next run.

To change the page, change the doc comment in the binding's Rust source, then regenerate the declarations with `mise run dts`. `mise run dts:check` fails when the committed file no longer matches the source.