jb-terminal-wrapper
Terminal wrapper pattern for extending JBMultiTerminal functionality. Use when: (1) need dynamic\nsplits at pay time, (2) revnet can't modify ruleset data hooks, (3) want atomic pay + distribute\noperations, (4) need to intercept/redirect tokens before delivery, (5) implementing
Installation
Pick a client and clone the repository into its skills directory.
Installation
About this skill
Terminal wrapper pattern for extending JBMultiTerminal functionality. Use when: (1) need dynamic\nsplits at pay time, (2) revnet can't modify ruleset data hooks, (3) want atomic pay + distribute\noperations, (4) need to intercept/redirect tokens before delivery, (5) implementing pay-time\nconfiguration, (6) cash out + bridge/swap in one tx, (7) cash out + stake redeemed funds.\nCovers IJBTerminal implementation, _acceptFunds pattern from JBSwapTerminalRegistry, beneficiary\nmanipulation for both pay and cash out flows, and the critical mental model that wrappers are\nadditive (not restrictive).
How to use
Sklonuj repozytorium openclaw/skills i przejdź do katalogu skills/mejango/juicy/jb-terminal-wrapper.
Zapoznaj się z architekturą: utwórz kontrakt implementujący interfejs IJBTerminal, który opakowuje JBMultiTerminal. Kontrakt powinien zawierać referencje do MULTI_TERMINAL i CONTROLLER jako zmienne immutable.
Zaimplementuj funkcję pay() w swoim wrapperie, która przyjmuje parametry: projectId, token, oraz kwotę. Użyj wspólnego helpera _acceptFunds (wzorzec z JBSwapTerminalRegistry) do obsługi zarówno ETH jak i tokenów ERC20.
Dodaj logikę dla swoich przypadków użycia: dynamiczne podziały w momencie płatności, przechwycenie tokenów przed dostarczeniem, lub połączenie operacji płatności z dystrybucją w jedną transakcję atomową.
Pamiętaj, że wrapper jest warstwą addytywną — rozszerza funkcjonalność bez ograniczania dostępu permissionless. Manipulacja beneficjentem powinna działać zarówno dla przepływów płatności jak i wypłat.
Przetestuj wrapper z rzeczywistym projektem revnet, szczególnie scenariusze gdzie ruleset data hooks nie mogą być modyfikowane bezpośrednio.