60 lines
1.6 KiB
Go
60 lines
1.6 KiB
Go
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)
|
|
}
|