package market import ( "context" "github.com/ipfs/go-cid" "go.uber.org/fx" "github.com/filecoin-project/go-address" "github.com/filecoin-project/lotus/chain/actors" marketactor "github.com/filecoin-project/lotus/chain/actors/builtin/market" "github.com/filecoin-project/lotus/chain/market" "github.com/filecoin-project/lotus/chain/types" "github.com/filecoin-project/lotus/node/impl/full" ) type MarketAPI struct { fx.In full.MpoolAPI FMgr *market.FundManager } func (a *MarketAPI) MarketAddBalance(ctx context.Context, wallet, addr address.Address, amt types.BigInt) (cid.Cid, error) { params, err := actors.SerializeParams(&addr) if err != nil { return cid.Undef, err } smsg, aerr := a.MpoolPushMessage(ctx, &types.Message{ To: marketactor.Address, From: wallet, Value: amt, Method: marketactor.Methods.AddBalance, Params: params, }, nil) if aerr != nil { return cid.Undef, aerr } return smsg.Cid(), nil } func (a *MarketAPI) MarketGetReserved(ctx context.Context, addr address.Address) (types.BigInt, error) { return a.FMgr.GetReserved(addr), nil } func (a *MarketAPI) MarketReserveFunds(ctx context.Context, wallet address.Address, addr address.Address, amt types.BigInt) (cid.Cid, error) { return a.FMgr.Reserve(ctx, wallet, addr, amt) } func (a *MarketAPI) MarketReleaseFunds(ctx context.Context, addr address.Address, amt types.BigInt) error { return a.FMgr.Release(addr, amt) } func (a *MarketAPI) MarketWithdraw(ctx context.Context, wallet, addr address.Address, amt types.BigInt) (cid.Cid, error) { return a.FMgr.Withdraw(ctx, wallet, addr, amt) }