From 4a7201468367d822dbfabfa52127fb4c9482a265 Mon Sep 17 00:00:00 2001 From: "oz-release-app[bot]" <205211949+oz-release-app[bot]@users.noreply.github.com> Date: Thu, 6 Aug 2026 11:25:35 +0000 Subject: [PATCH] chore(release): version packages --- .changeset/write-completion-vocabulary.md | 53 ----------------------- packages/types/CHANGELOG.md | 53 +++++++++++++++++++++++ packages/types/package.json | 2 +- 3 files changed, 54 insertions(+), 54 deletions(-) delete mode 100644 .changeset/write-completion-vocabulary.md diff --git a/.changeset/write-completion-vocabulary.md b/.changeset/write-completion-vocabulary.md deleted file mode 100644 index dade0c2e..00000000 --- a/.changeset/write-completion-vocabulary.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -'@openzeppelin/ui-types': minor ---- - -Add the shared write-completion vocabulary and widen `IRSCapability.deployOnchainId` to a -completion-keyed result. - -**New exports** - -- `WriteCompletion` — `'submitted' | 'confirmed'`. How far a write must progress before the - capability call resolves; absent ≡ `'confirmed'`, so today's behaviour is unchanged. -- `WriteCompletionOptions` — the known keys (`completion`, `onSubmitted`) for - `RelayerExecutionConfig.transactionOptions`. -- `DeployOnchainIdConfirmedResult` / `DeployOnchainIdSubmittedResult` / - `DeployOnchainIdOutcome` — the completion-keyed union returned by `deployOnchainId`. - -**`RelayerExecutionConfig.transactionOptions`** is now typed as known-keys-plus-passthrough -(`WriteCompletionOptions & Record`). Known keys become compile-checked across -consumers and adapters; residual keys remain passthrough, so existing callers keep compiling. - -**`IRSCapability.deployOnchainId` now returns `Promise`** instead of -`Promise`. - -This is the migration-relevant change. `DeployOnchainIdResult` is unchanged and still exported — -it is the confirmed arm's base — but the method's return type is now a union, because on the -submit-only path the ONCHAINID address does not exist yet. The submit-only arm therefore has -**no `onchainId` property at all** rather than an optional `onchainId?: string` on one shared -shape, so a caller cannot read a fabricated or empty address without narrowing first. - -Migration — narrow on `completion` before reading `onchainId`: - -```ts -// Before -const { onchainId } = await irs.deployOnchainId({ holder }, executionConfig); -use(onchainId); - -// After -const outcome = await irs.deployOnchainId({ holder }, executionConfig); -if (outcome.completion === 'confirmed') { - use(outcome.onchainId); // required on this arm -} else { - // submit-only: persist outcome.id and resolve the address on resume - // (e.g. via findIdentityByWallet once the deployment is mined) -} -``` - -Callers that never request submit-only still only ever receive the `'confirmed'` arm at runtime, -so the narrowing is the only change required. Code that already destructured `onchainId` -directly will now fail to compile until the check above is added — that is intentional, and is -what prevents a submit-only deploy from silently yielding an undefined address. - -Vocabulary and result shapes only: receipt-waiting, IRS / ERC-3643 behaviour, and per-operation -semantics stay in the adapters. diff --git a/packages/types/CHANGELOG.md b/packages/types/CHANGELOG.md index f215f1c1..c77bf2e2 100644 --- a/packages/types/CHANGELOG.md +++ b/packages/types/CHANGELOG.md @@ -1,5 +1,58 @@ # @openzeppelin/ui-types +## 3.5.0 + +### Minor Changes + +- [#206](https://github.com/OpenZeppelin/openzeppelin-ui/pull/206) [`f2d90e3`](https://github.com/OpenZeppelin/openzeppelin-ui/commit/f2d90e3da2924506a37eed42322d3400c9e9f265) Thanks [@pasevin](https://github.com/pasevin)! - Add the shared write-completion vocabulary and widen `IRSCapability.deployOnchainId` to a + completion-keyed result. + + **New exports** + - `WriteCompletion` — `'submitted' | 'confirmed'`. How far a write must progress before the + capability call resolves; absent ≡ `'confirmed'`, so today's behaviour is unchanged. + - `WriteCompletionOptions` — the known keys (`completion`, `onSubmitted`) for + `RelayerExecutionConfig.transactionOptions`. + - `DeployOnchainIdConfirmedResult` / `DeployOnchainIdSubmittedResult` / + `DeployOnchainIdOutcome` — the completion-keyed union returned by `deployOnchainId`. + + **`RelayerExecutionConfig.transactionOptions`** is now typed as known-keys-plus-passthrough + (`WriteCompletionOptions & Record`). Known keys become compile-checked across + consumers and adapters; residual keys remain passthrough, so existing callers keep compiling. + + **`IRSCapability.deployOnchainId` now returns `Promise`** instead of + `Promise`. + + This is the migration-relevant change. `DeployOnchainIdResult` is unchanged and still exported — + it is the confirmed arm's base — but the method's return type is now a union, because on the + submit-only path the ONCHAINID address does not exist yet. The submit-only arm therefore has + **no `onchainId` property at all** rather than an optional `onchainId?: string` on one shared + shape, so a caller cannot read a fabricated or empty address without narrowing first. + + Migration — narrow on `completion` before reading `onchainId`: + + ```ts + // Before + const { onchainId } = await irs.deployOnchainId({ holder }, executionConfig); + use(onchainId); + + // After + const outcome = await irs.deployOnchainId({ holder }, executionConfig); + if (outcome.completion === 'confirmed') { + use(outcome.onchainId); // required on this arm + } else { + // submit-only: persist outcome.id and resolve the address on resume + // (e.g. via findIdentityByWallet once the deployment is mined) + } + ``` + + Callers that never request submit-only still only ever receive the `'confirmed'` arm at runtime, + so the narrowing is the only change required. Code that already destructured `onchainId` + directly will now fail to compile until the check above is added — that is intentional, and is + what prevents a submit-only deploy from silently yielding an undefined address. + + Vocabulary and result shapes only: receipt-waiting, IRS / ERC-3643 behaviour, and per-operation + semantics stay in the adapters. + ## 3.4.0 ### Minor Changes diff --git a/packages/types/package.json b/packages/types/package.json index 2b211fb8..2131fe25 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -1,6 +1,6 @@ { "name": "@openzeppelin/ui-types", - "version": "3.4.0", + "version": "3.5.0", "private": false, "description": "Shared TypeScript type definitions for the OpenZeppelin UI ecosystem.", "type": "module",