Shared TypeScript type definitions for the OpenZeppelin UI ecosystem.
# Using npm
npm install @openzeppelin/ui-types
# Using yarn
yarn add @openzeppelin/ui-types
# Using pnpm
pnpm add @openzeppelin/ui-typesThis package serves as the single source of truth for all shared types used across the OpenZeppelin UI packages, including:
- Capability and runtime types —
EcosystemRuntime, per-capability interfaces, and profile names used by adapter packages and apps - Contract and blockchain-related types (
ContractSchema, networks, execution) - Form field and layout definitions
- Transaction and execution configuration types
By centralizing type definitions, we ensure consistency across all packages and eliminate type duplication.
The package is organized into namespaces for better organization and to prevent naming collisions.
import type {
EcosystemRuntime,
NetworkConfig,
ProfileName,
TransactionFormCapabilities,
} from '@openzeppelin/ui-types';
// Example: narrowing form props
function describeFormAdapter(adapter: TransactionFormCapabilities): string {
return adapter.networkConfig.id;
}Import capability groups from the main entry (they are re-exported from ./adapters):
import type { QueryCapability, SchemaCapability, WalletCapability } from '@openzeppelin/ui-types';types/
├── src/
│ ├── adapters/ # Capability interfaces, profiles, runtime, ecosystem export
│ │ ├── capabilities/ # Tier 2/3 capability contracts (wallet, query, schema, …)
│ │ ├── profiles/ # Profile-narrowed EcosystemRuntime shapes (viewer, transactor, …)
│ │ ├── runtime.ts # EcosystemRuntime, RuntimeCapability
│ │ ├── ecosystem-export.ts # EcosystemExport (createRuntime, networks, metadata)
│ │ ├── common.ts # Shared adapter primitives
│ │ └── index.ts
│ ├── common/ # NetworkEcosystem, address book helpers, …
│ ├── config/ # AppRuntimeConfig and app config types
│ ├── contracts/ # ContractSchema, ContractFunction, …
│ ├── execution/ # EOA / relayer execution config types
│ ├── forms/ # Form fields, layout, schema, validation
│ ├── networks/ # NetworkConfig unions and guards
│ ├── transactions/ # TransactionStatus, progress types
│ └── index.ts # Main entry re-exports all modules
├── package.json
└── tsconfig.json
EcosystemRuntime: Per-network bundle of optional capabilities (wallet,query,schema,execution,accessControl, …). Created by each ecosystem’screateRuntime(profile, networkConfig, options)(see published@openzeppelin/adapter-*packages).RuntimeCapability: Base for Tier 2+ capabilities; includesnetworkConfiganddispose().ProfileName:'declarative' | 'viewer' | 'transactor' | 'composer' | 'operator'— selects which capabilities are required for a runtime.EcosystemExport: Metadata +networks+capabilitiesfactories +createRuntime— the object adapter packages publish asecosystemDefinition.- Individual capability interfaces (e.g.
WalletCapability,QueryCapability,TransactionFormCapabilities) live under./capabilitiesand are re-exported from the package root.
Legacy monolithic ContractAdapter types are not part of the current public model; apps compose EcosystemRuntime and pass capability intersections (e.g. TransactionFormProps['adapter']) into UI packages.
AppRuntimeConfig: Shape ofapp.config.jsonfor exported applications.
NetworkEcosystem: Supported blockchain ecosystems (e.g.'evm','stellar').AddressLabelResolver,AddressSuggestion,AddressSuggestionResolver,AddressBookAlias,AddressBookWidgetProps: shared contracts for address book and labeling (used with@openzeppelin/ui-components).
ContractSchema,ContractFunction,ContractParameter: ABI-level schema types.
FieldType,FormField,RenderFormSchema,BuilderFormConfig,FieldValidation,FormValues.
BaseNetworkConfig, discriminatedNetworkConfig, and guards such asisEvmNetworkConfig.
EoaExecutionConfig,RelayerExecutionConfig,RelayerDetails, etc.
TransactionStatus,TransactionProgress, and related UI progress types.
- @openzeppelin/ui-components: Form and layout types
- @openzeppelin/ui-renderer:
TransactionFormProps,ContractStateCapabilityProps, etc. - @openzeppelin/ui-utils: Shared utilities typed against these definitions
# From the monorepo root
pnpm --filter @openzeppelin/ui-types build
# Or from within the types package directory
pnpm build# From the monorepo root
pnpm --filter @openzeppelin/ui-types test
# Or from within the types package directory
pnpm test