Skip to content

feat: typesafe definePermissions helper for session keys#410

Draft
zeroknots wants to merge 4 commits intomainfrom
feat/session-key-permissions
Draft

feat: typesafe definePermissions helper for session keys#410
zeroknots wants to merge 4 commits intomainfrom
feat/session-key-permissions

Conversation

@zeroknots
Copy link
Copy Markdown
Member

Description

Adds definePermissions(), a typesafe helper that lets developers define session key permissions using contract ABIs instead of raw hex selectors and manual calldata offsets. Given an ABI (as const), it provides full autocomplete for function names and parameter names, auto-computes selectors and calldataOffset values, and enforces correct value types per ABI parameter (e.g. Address for address params, bigint for uint). Returns ScopedAction[] that spreads directly into Session.actions.

Includes an example showing a complex multi-contract setup combining param constraints (universal-action), spending limits, time frames, usage limits, and value limits across ERC-20 and Uniswap router functions.

Checklist

  • Changeset

zeroknots and others added 4 commits April 8, 2026 21:43
Introduces definePermissions() which takes a contract ABI and generates
ScopedAction[] with auto-computed selectors and calldataOffsets. Provides
full autocomplete for function names and parameter names, and enforces
correct value types per ABI parameter.

Co-Authored-By: Claude Opus 4.6 <[email protected]>
Shows universal-action policy generation across deposit (3 constrained
params), borrow (4 of 5 params, skipping referralCode), repay, and
liquidationCall (all 5 params including bool).

Co-Authored-By: Claude Opus 4.6 <[email protected]>
Shows the complete lifecycle: definePermissions → getSessionDetails →
signEnableSession → enableSession on-chain → execute with session signer.

Co-Authored-By: Claude Opus 4.6 <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant