Files
ark/pkg/client-sdk/client/client.go
Pietralberto Mazza 89df461623 Update client sdk (#207)
* Add bitcoin networks

* Refactor client

* Refactor explorer

* Refactor store

* Refactor wallet

* Refactor sdk client

* Refactor wasm & Update examples

* Move common util funcs to internal/utils

* Move to constants for service types

* Add unit tests

* Parallelize tests

* Lint

* Add job to gh action

* go mod tidy

* Fixes

* Fixes

* Fix compose file

* Fixes

* Fixes after review:
* Drop factory pattern
* Drop password from ark client methods
* Make singlekey wallet manage store and wallet store instead of defining WalletStore as extension of Store
* Move constants to arksdk module
* Drop config and expect directory store and wallet as ark client factory args

* Fix

* Add constants for bitcoin/liquid explorer

* Fix test

* Fix wasm

* Rename client.Client to client.ASPClient

* Rename store.Store to store.ConfigStore

* Rename wallet.Wallet to wallet.WalletService

* Renamings

* Lint

* Fixes

* Move everything to internal/utils & move ComputeVtxoTaprootScript to common

* Go mod tidy
2024-07-30 16:08:23 +02:00

61 lines
1.7 KiB
Go

package client
import (
"context"
"time"
"github.com/ark-network/ark-sdk/explorer"
arkv1 "github.com/ark-network/ark/api-spec/protobuf/gen/ark/v1"
)
const (
GrpcClient = "grpc"
RestClient = "rest"
)
type RoundEventChannel struct {
Event *arkv1.GetEventStreamResponse
Err error
}
type Vtxo struct {
Amount uint64
Txid string
VOut uint32
RoundTxid string
ExpiresAt *time.Time
}
type ASPClient interface {
GetInfo(ctx context.Context) (*arkv1.GetInfoResponse, error)
ListVtxos(ctx context.Context, addr string) (*arkv1.ListVtxosResponse, error)
GetSpendableVtxos(
ctx context.Context, addr string, explorerSvc explorer.Explorer,
) ([]*Vtxo, error)
GetRound(ctx context.Context, txID string) (*arkv1.GetRoundResponse, error)
GetRoundByID(ctx context.Context, roundID string) (*arkv1.GetRoundByIdResponse, error)
GetRedeemBranches(
ctx context.Context, vtxos []*Vtxo, explorerSvc explorer.Explorer,
) (map[string]*RedeemBranch, error)
GetOffchainBalance(
ctx context.Context, addr string, explorerSvc explorer.Explorer,
) (uint64, map[int64]uint64, error)
Onboard(
ctx context.Context, req *arkv1.OnboardRequest,
) (*arkv1.OnboardResponse, error)
RegisterPayment(
ctx context.Context, req *arkv1.RegisterPaymentRequest,
) (*arkv1.RegisterPaymentResponse, error)
ClaimPayment(
ctx context.Context, req *arkv1.ClaimPaymentRequest,
) (*arkv1.ClaimPaymentResponse, error)
GetEventStream(
ctx context.Context, paymentID string, req *arkv1.GetEventStreamRequest,
) (<-chan RoundEventChannel, error)
Ping(ctx context.Context, req *arkv1.PingRequest) (*arkv1.PingResponse, error)
FinalizePayment(
ctx context.Context, req *arkv1.FinalizePaymentRequest,
) (*arkv1.FinalizePaymentResponse, error)
Close()
}