Well, there is no need to add methods for topping up the wallet/nutstash. We should assume the wallet is already plugged in and has funds. If you read CEP-8, the responsibilities of servers and clients are clarified there. tldr; Servers act as payment processors, emitting payment requests and then validating that the payment was done. Clients act as payment handlers, being responsible for paying the requests emitted by the server. The funds that the wallet has available are a separate matter and are better kept out of scope, so there is no need for deposit or withdraw methods.
A way this could work is as follows: the server (payment processor) receives a request for a paid capability. It then goes to the mint it has configured, gets a quote, obtains the BOLT11 invoice from it, and sends the payment request. The client (payment handler) takes the BOLT11 invoice, gets a melt quote for it, and the mint handles the payment. At that point, the server can check its quote status and verify if it's fulfilled. Then the lifecycle is completed. Extra steps could include redeeming the tokens from the quote and storing them either locally or in the NIP-60 wallet.
What do you think?
If there are some concepts that are not clear, we have written a couple of guides and resources to understand how payments work in CVM:
Payments, Paid Servers, and Clients https://github.com/ContextVM/sdk/blob/e2096b7c94658e1f7b5a3f06ad53738d1e3eacea/docs/payments-paid-servers-and-clients.md
Payments Architecture https://github.com/ContextVM/sdk/blob/e2096b7c94658e1f7b5a3f06ad53738d1e3eacea/docs/payments-architecture.md
There is also the spec CEP-8: https://github.com/ContextVM/contextvm-docs/blob/8d0dbfc95a929ac6dd49cab556b18874df758b73/src/content/docs/spec/ceps/cep-8.md
Happy to solve any doubts if you have any!
