Context
@openzeppelin/miden-multisig-client's createP2idProposal only accepts (recipientId, faucetId, amount, nonce?, { noteType? }) — there is no way to set a reclaim height (or timelock height), so every multisig send builds a plain P2ID note.
In the Miden wallet, sends carry a user-picked expiration date that maps to a P2IDE reclaim height (reclaimAfter). On Guardian accounts that value was silently dropped by the proposal layer, making every guardian send permanently non-recallable — the wallet UI showed an expiration that never reached the chain (wallet-side issue: 0xMiden/wallet#308 has the P2IDE background).
Request
Extend the send proposal API to carry the P2IDE heights, e.g.:
createP2idProposal(recipientId, faucetId, amount, nonce?, {
noteType?: NoteType;
reclaimHeight?: number; // absolute block height; presence selects P2IDE over P2ID
timelockHeight?: number; // optional consume-not-before height
})
- Presence of either height should build a P2IDE note instead of P2ID (mirroring the SDK's
reclaimAfter/timelockUntil semantics on SendOptions).
- The guardian server should treat these like any other send proposal (no new proposal type needed).
Context
@openzeppelin/miden-multisig-client'screateP2idProposalonly accepts(recipientId, faucetId, amount, nonce?, { noteType? })— there is no way to set a reclaim height (or timelock height), so every multisig send builds a plain P2ID note.In the Miden wallet, sends carry a user-picked expiration date that maps to a P2IDE reclaim height (
reclaimAfter). On Guardian accounts that value was silently dropped by the proposal layer, making every guardian send permanently non-recallable — the wallet UI showed an expiration that never reached the chain (wallet-side issue: 0xMiden/wallet#308 has the P2IDE background).Request
Extend the send proposal API to carry the P2IDE heights, e.g.:
reclaimAfter/timelockUntilsemantics onSendOptions).