## API Report File for "@backstage/types"

> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).

```ts
// @public
export function createDeferred<
  TResolved = void,
  TRejected = Error,
>(): DeferredPromise<TResolved, TRejected>;

// @public
export type DeferredPromise<
  TResolved = void,
  TRejected = Error,
> = Promise<TResolved> & {
  resolve(value: TResolved | PromiseLike<TResolved>): void;
  reject(reason?: TRejected): void;
};

// @public
export function durationToMilliseconds(duration: HumanDuration): number;

// @public
export type Expand<T> = T extends infer O
  ? {
      [K in keyof O]: O[K];
    }
  : never;

// @public
export type ExpandRecursive<T> = T extends infer O
  ? {
      [K in keyof O]: ExpandRecursive<O[K]>;
    }
  : never;

// @public
export type HumanDuration = {
  years?: number;
  months?: number;
  weeks?: number;
  days?: number;
  hours?: number;
  minutes?: number;
  seconds?: number;
  milliseconds?: number;
};

// @public
export interface JsonArray extends Array<JsonValue> {}

// @public
export type JsonObject = {
  [key in string]?: JsonValue;
};

// @public
export type JsonPrimitive = number | string | boolean | null;

// @public
export type JsonValue = JsonObject | JsonArray | JsonPrimitive;

// @public
export type Observable<T> = {
  [Symbol.observable](): Observable<T>;
  subscribe(observer: Observer<T>): Subscription;
  subscribe(
    onNext?: (value: T) => void,
    onError?: (error: Error) => void,
    onComplete?: () => void,
  ): Subscription;
};

// @public
export type Observer<T> = {
  next?(value: T): void;
  error?(error: Error): void;
  complete?(): void;
};

// @public
export type Subscription = {
  unsubscribe(): void;
  readonly closed: boolean;
};
```
