State Variables
balances- User token balances keyed by hash of (user, token)verifiedMarket- Markets authorized to debit/credit user accounts
Core Functions
initialize
One-time initialization of the MarginAccount contract.User Operations
deposit
Deposit tokens into margin account._token is native (address(0)), requires msg.value. For ERC20 tokens, transfers from caller to contract.
withdraw
Withdraw tokens from margin account.batchWithdrawMaxTokens
Withdraw all balances for multiple tokens.getBalance
Query user balance for a token.Market Operations
debitUser
Debit user balance for trades.creditUser
Credit user balance for trades._useMargin is false, transfers tokens directly to user. If true, updates balance mapping.
creditUsersEncoded
Batch credit multiple users.creditUser for gas efficiency. Encoded data contains array of (user, token, amount, useMargin) tuples.