diff --git a/pkg/client-sdk/ark_sdk.go b/pkg/client-sdk/ark_sdk.go index 31e4f1c..0853580 100644 --- a/pkg/client-sdk/ark_sdk.go +++ b/pkg/client-sdk/ark_sdk.go @@ -3,6 +3,7 @@ package arksdk import ( "context" + "github.com/ark-network/ark/pkg/client-sdk/client" "github.com/ark-network/ark/pkg/client-sdk/store" ) @@ -26,6 +27,7 @@ type ArkClient interface { ) (string, error) SendAsync(ctx context.Context, withExpiryCoinselect bool, receivers []Receiver) (string, error) ClaimAsync(ctx context.Context) (string, error) + ListVtxos(ctx context.Context) ([]client.Vtxo, []client.Vtxo, error) } type Receiver interface { diff --git a/pkg/client-sdk/client.go b/pkg/client-sdk/client.go index e460ab7..ab0b026 100644 --- a/pkg/client-sdk/client.go +++ b/pkg/client-sdk/client.go @@ -209,6 +209,26 @@ func (a *arkClient) Receive(ctx context.Context) (string, string, error) { return offchainAddr, onchainAddr, nil } +func (a *arkClient) ListVtxos( + ctx context.Context, +) (spendableVtxos, spentVtxos []client.Vtxo, err error) { + offchainAddrs, _, _, err := a.wallet.GetAddresses(ctx) + if err != nil { + return + } + + for _, addr := range offchainAddrs { + spendable, spent, err := a.client.ListVtxos(ctx, addr) + if err != nil { + return nil, nil, err + } + spendableVtxos = append(spendableVtxos, spendable...) + spentVtxos = append(spentVtxos, spent...) + } + + return +} + func (a *arkClient) ping( ctx context.Context, paymentID string, ) func() {