directDeposit is the default way to fund a flow with a caller-specified amount. At compile time, it resolves the input amount to the exact amount you pass in (a decimal string of base units). At execution time, the VM transfers that amount into itself — via msg.value for native inputs, or transferFrom(sender) for ERC-20 inputs (the caller must have pre-approved the execution proxy). Pass allowNonExact: true to treat amount as a cap rather than an exact value, or omit amount (with allowNonExact: true) to sweep the proxy’s full approved balance; see the schema below.
Use directDeposit when the UI already knows the exact amount the user wants to spend. For “spend my whole balance” UX, prefer balanceOf instead.

