shield.euler.*, which wraps Euler Earn. For Euler Vault Kit base lending vault governor actions such as setLTV, setCaps, and setInterestRateModel, use the Euler Guide.
Install Packages
Attach the Euler Earn Overlay
Create or attach to a Shield, then extend the client witheulerActions:
shield.euler.* produces calldata from Euler Earn’s ABI and routes the call through shield.sendCall(...). The composite policy pack still owns wasmArgs; pass per-call policy inputs through prepareQueryOptions.
Grant the Shield an Euler Earn Role
Euler Earn manager actions are not end-user deposit or withdrawal flows. The Shield clone must hold a role that can call the forwarded function on the Euler Earn vault:| Role | Typical actions |
|---|---|
| Owner | setCurator, setIsAllocator, setFeeRecipient, setFee, submitTimelock, submitGuardian, setName, setSymbol |
| Curator | submitCap, acceptCap, revokePendingCap, submitMarketRemoval, revokePendingMarketRemoval |
| Allocator | reallocate, setSupplyQueue, updateWithdrawQueue |
| Guardian | revokePendingTimelock, revokePendingGuardian, and other veto-style pending changes |
Reallocate
Use the typed reallocation helper for the allocator hot path:reallocate takes positional arguments: (vault, allocations, options?). Each allocation uses Euler Earn’s { id, assets } shape, where id is the market address and assets is the amount in the vault asset’s smallest unit.
Manage Queues and Caps
Allocator queue updates:Wrapped Actions
| Category | Helpers |
|---|---|
| Role setup | setCurator, setIsAllocator |
| Allocator operations | reallocate, setSupplyQueue, updateWithdrawQueue |
| Market caps | submitCap, acceptCap, revokePendingCap |
| Market removal | submitMarketRemoval, revokePendingMarketRemoval |
| Timelock | submitTimelock, acceptTimelock, revokePendingTimelock |
| Guardian | submitGuardian, acceptGuardian, revokePendingGuardian |
| Fees and metadata | setFee, setFeeRecipient, setName, setSymbol |
deposit, mint, withdraw, or redeem actions. Ownership transfer helpers are also omitted; use direct governance operations or the raw shield.sendCall(...) escape hatch only when your policy explicitly models that action.
Troubleshooting
| Symptom | Likely cause | Fix |
|---|---|---|
| Euler Earn role revert | The Shield clone is not owner, curator, allocator, or guardian for that action. | Grant the clone the correct Euler Earn role, then rerun the action. |
PolicyDeniedError | Newton evaluated the configured policy and denied the intent. | Inspect the policy result, params, and per-call prepareQueryOptions. |
| Module-set mismatch | The modules passed to defineComposite(...) do not match the deployed policy. | Use the module set from the policy’s onchain getPolicyData(). |
| Unexpected calldata | The wrong overlay or vault address was used. | Use shield.euler.* only for Euler Earn vaults; use shield.eulerVault.* for EVault governor actions. |
Euler Guide
Gate Euler Vault Kit EVault governor actions with
shield.eulerVault.*.Reference
Review the generic
sendCall API and expected error types.