# @gauntlet/types (/docs/reference/packages/types)



`@gauntlet/types` is pure types: the contracts your code implements against. Every block, config shape, and product structure in the platform is typed here.

## BaseBlockProps [#baseblockprops]

The contract every block component receives ([Screens and blocks](/docs/concepts/screens-and-blocks)):

```ts
import { BaseBlockProps } from '@gauntlet/types'

export interface BaseBlockProps {
  componentId: string
  instanceId: string
  screenId: string
  setDynamicFooter?: (element: ReactElement) => void
  index: number
  length: number
}
```

Extend it for your own block's props:

```ts
export interface PromoBannerProps extends BaseBlockProps {}
```

## Contract modules you will use [#contract-modules-you-will-use]

| Import                                 | What it types                                                                                    |
| -------------------------------------- | ------------------------------------------------------------------------------------------------ |
| `BaseBlockProps`, `BaseComponentProps` | Block component contracts and the `style`/`source`/`options` shapes                              |
| `AppConfig`, `IntegrationsConfig`      | The app config document and the `integrations.<configKey>` map                                   |
| `BaseProduct`, `BaseProductVariant`    | Product and variant data as hooks return them                                                    |
| Theme and style types                  | Theme tokens plus zod style schemas (`baseStyleSchema`, `baseTextStyleSchema`, …)                |
| `AnalyticsEvent`, `AnalyticsPayload`   | Event names and payloads trackers receive ([Analytics trackers](/docs/build/analytics-trackers)) |

Everything is exported from the package root:

```ts
import { AppConfig, BaseProduct, AnalyticsEvent } from '@gauntlet/types'
```
