// Code generated by github.com/Khan/genqlient, DO NOT EDIT.

package mutations

import (
	"context"
	"time"

	"github.com/Khan/genqlient/graphql"
	"github.com/google/uuid"
)

// This is an enum identifying a particular Bitcoin Network.
type BitcoinNetwork string

const (
	// The production version of the Bitcoin Blockchain.
	BitcoinNetworkMAINNET BitcoinNetwork = "MAINNET"
	// A test version of the Bitcoin Blockchain, maintained by Lightspark.
	BitcoinNetworkREGTEST BitcoinNetwork = "REGTEST"
	// A test version of the Bitcoin Blockchain, maintained by a centralized organization. Not in use at Lightspark.
	BitcoinNetworkSIGNET BitcoinNetwork = "SIGNET"
	// A test version of the Bitcoin Blockchain, publicly available.
	BitcoinNetworkTESTNET BitcoinNetwork = "TESTNET"
)

var AllBitcoinNetwork = []BitcoinNetwork{
	BitcoinNetworkMAINNET,
	BitcoinNetworkREGTEST,
	BitcoinNetworkSIGNET,
	BitcoinNetworkTESTNET,
}

// CompleteCoopExitCompleteCoopExitCompleteCoopExitOutput includes the requested fields of the GraphQL type CompleteCoopExitOutput.
type CompleteCoopExitCompleteCoopExitCompleteCoopExitOutput struct {
	Request CompleteCoopExitCompleteCoopExitCompleteCoopExitOutputRequestCoopExitRequest `json:"request"`
}

// GetRequest returns CompleteCoopExitCompleteCoopExitCompleteCoopExitOutput.Request, and is useful for accessing the field via an interface.
func (v *CompleteCoopExitCompleteCoopExitCompleteCoopExitOutput) GetRequest() CompleteCoopExitCompleteCoopExitCompleteCoopExitOutputRequestCoopExitRequest {
	return v.Request
}

// CompleteCoopExitCompleteCoopExitCompleteCoopExitOutputRequestCoopExitRequest includes the requested fields of the GraphQL type CoopExitRequest.
type CompleteCoopExitCompleteCoopExitCompleteCoopExitOutputRequestCoopExitRequest struct {
	// The unique identifier of this entity across all Lightspark systems. Should be treated as an opaque string.
	Id string `json:"id"`
}

// GetId returns CompleteCoopExitCompleteCoopExitCompleteCoopExitOutputRequestCoopExitRequest.Id, and is useful for accessing the field via an interface.
func (v *CompleteCoopExitCompleteCoopExitCompleteCoopExitOutputRequestCoopExitRequest) GetId() string {
	return v.Id
}

// CompleteCoopExitResponse is returned by CompleteCoopExit on success.
type CompleteCoopExitResponse struct {
	// This API will broadcast the coop exit transaction.
	CompleteCoopExit CompleteCoopExitCompleteCoopExitCompleteCoopExitOutput `json:"complete_coop_exit"`
}

// GetCompleteCoopExit returns CompleteCoopExitResponse.CompleteCoopExit, and is useful for accessing the field via an interface.
func (v *CompleteCoopExitResponse) GetCompleteCoopExit() CompleteCoopExitCompleteCoopExitCompleteCoopExitOutput {
	return v.CompleteCoopExit
}

// CompleteLeavesSwapCompleteLeavesSwapCompleteLeavesSwapOutput includes the requested fields of the GraphQL type CompleteLeavesSwapOutput.
type CompleteLeavesSwapCompleteLeavesSwapCompleteLeavesSwapOutput struct {
	Request CompleteLeavesSwapCompleteLeavesSwapCompleteLeavesSwapOutputRequestLeavesSwapRequest `json:"request"`
}

// GetRequest returns CompleteLeavesSwapCompleteLeavesSwapCompleteLeavesSwapOutput.Request, and is useful for accessing the field via an interface.
func (v *CompleteLeavesSwapCompleteLeavesSwapCompleteLeavesSwapOutput) GetRequest() CompleteLeavesSwapCompleteLeavesSwapCompleteLeavesSwapOutputRequestLeavesSwapRequest {
	return v.Request
}

// CompleteLeavesSwapCompleteLeavesSwapCompleteLeavesSwapOutputRequestLeavesSwapRequest includes the requested fields of the GraphQL type LeavesSwapRequest.
type CompleteLeavesSwapCompleteLeavesSwapCompleteLeavesSwapOutputRequestLeavesSwapRequest struct {
	// The unique identifier of this entity across all Lightspark systems. Should be treated as an opaque string.
	Id string `json:"id"`
}

// GetId returns CompleteLeavesSwapCompleteLeavesSwapCompleteLeavesSwapOutputRequestLeavesSwapRequest.Id, and is useful for accessing the field via an interface.
func (v *CompleteLeavesSwapCompleteLeavesSwapCompleteLeavesSwapOutputRequestLeavesSwapRequest) GetId() string {
	return v.Id
}

// CompleteLeavesSwapResponse is returned by CompleteLeavesSwap on success.
type CompleteLeavesSwapResponse struct {
	// For spark users to complete a leaves swap.
	CompleteLeavesSwap CompleteLeavesSwapCompleteLeavesSwapCompleteLeavesSwapOutput `json:"complete_leaves_swap"`
}

// GetCompleteLeavesSwap returns CompleteLeavesSwapResponse.CompleteLeavesSwap, and is useful for accessing the field via an interface.
func (v *CompleteLeavesSwapResponse) GetCompleteLeavesSwap() CompleteLeavesSwapCompleteLeavesSwapCompleteLeavesSwapOutput {
	return v.CompleteLeavesSwap
}

// CompleteReleaseSeedCompleteSeedReleaseCompleteSeedReleaseOutput includes the requested fields of the GraphQL type CompleteSeedReleaseOutput.
type CompleteReleaseSeedCompleteSeedReleaseCompleteSeedReleaseOutput struct {
	Seed string `json:"seed"`
}

// GetSeed returns CompleteReleaseSeedCompleteSeedReleaseCompleteSeedReleaseOutput.Seed, and is useful for accessing the field via an interface.
func (v *CompleteReleaseSeedCompleteSeedReleaseCompleteSeedReleaseOutput) GetSeed() string {
	return v.Seed
}

// CompleteReleaseSeedResponse is returned by CompleteReleaseSeed on success.
type CompleteReleaseSeedResponse struct {
	// Complete the process to request releasing seed.
	CompleteSeedRelease CompleteReleaseSeedCompleteSeedReleaseCompleteSeedReleaseOutput `json:"complete_seed_release"`
}

// GetCompleteSeedRelease returns CompleteReleaseSeedResponse.CompleteSeedRelease, and is useful for accessing the field via an interface.
func (v *CompleteReleaseSeedResponse) GetCompleteSeedRelease() CompleteReleaseSeedCompleteSeedReleaseCompleteSeedReleaseOutput {
	return v.CompleteSeedRelease
}

// This enum identifies the unit of currency associated with a CurrencyAmount.
type CurrencyUnit string

const (
	// Bitcoin is the cryptocurrency native to the Bitcoin network. It is used as the native medium for value transfer for the Lightning Network.
	CurrencyUnitBITCOIN CurrencyUnit = "BITCOIN"
	// 0.00000001 (10e-8) Bitcoin or one hundred millionth of a Bitcoin. This is the unit most commonly used in Lightning transactions.
	CurrencyUnitSATOSHI CurrencyUnit = "SATOSHI"
	// 0.001 Satoshi, or 10e-11 Bitcoin. We recommend using the Satoshi unit instead when possible.
	CurrencyUnitMILLISATOSHI CurrencyUnit = "MILLISATOSHI"
	// United States Dollar.
	CurrencyUnitUSD CurrencyUnit = "USD"
	// Mexican Peso.
	CurrencyUnitMXN CurrencyUnit = "MXN"
	// Philippine Peso.
	CurrencyUnitPHP CurrencyUnit = "PHP"
	// Euro.
	CurrencyUnitEUR CurrencyUnit = "EUR"
	// British Pound.
	CurrencyUnitGBP CurrencyUnit = "GBP"
	// Indian Rupee.
	CurrencyUnitINR CurrencyUnit = "INR"
	// 0.000000001 (10e-9) Bitcoin or a billionth of a Bitcoin. We recommend using the Satoshi unit instead when possible.
	CurrencyUnitNANOBITCOIN CurrencyUnit = "NANOBITCOIN"
	// 0.000001 (10e-6) Bitcoin or a millionth of a Bitcoin. We recommend using the Satoshi unit instead when possible.
	CurrencyUnitMICROBITCOIN CurrencyUnit = "MICROBITCOIN"
	// 0.001 (10e-3) Bitcoin or a thousandth of a Bitcoin. We recommend using the Satoshi unit instead when possible.
	CurrencyUnitMILLIBITCOIN CurrencyUnit = "MILLIBITCOIN"
)

var AllCurrencyUnit = []CurrencyUnit{
	CurrencyUnitBITCOIN,
	CurrencyUnitSATOSHI,
	CurrencyUnitMILLISATOSHI,
	CurrencyUnitUSD,
	CurrencyUnitMXN,
	CurrencyUnitPHP,
	CurrencyUnitEUR,
	CurrencyUnitGBP,
	CurrencyUnitINR,
	CurrencyUnitNANOBITCOIN,
	CurrencyUnitMICROBITCOIN,
	CurrencyUnitMILLIBITCOIN,
}

type ExitSpeed string

const (
	ExitSpeedFAST   ExitSpeed = "FAST"
	ExitSpeedMEDIUM ExitSpeed = "MEDIUM"
	ExitSpeedSLOW   ExitSpeed = "SLOW"
)

var AllExitSpeed = []ExitSpeed{
	ExitSpeedFAST,
	ExitSpeedMEDIUM,
	ExitSpeedSLOW,
}

type LightningSendRequestStatus string

const (
	LightningSendRequestStatusCREATED                   LightningSendRequestStatus = "CREATED"
	LightningSendRequestStatusREQUESTVALIDATED          LightningSendRequestStatus = "REQUEST_VALIDATED"
	LightningSendRequestStatusLIGHTNINGPAYMENTINITIATED LightningSendRequestStatus = "LIGHTNING_PAYMENT_INITIATED"
	LightningSendRequestStatusLIGHTNINGPAYMENTFAILED    LightningSendRequestStatus = "LIGHTNING_PAYMENT_FAILED"
	LightningSendRequestStatusLIGHTNINGPAYMENTSUCCEEDED LightningSendRequestStatus = "LIGHTNING_PAYMENT_SUCCEEDED"
	LightningSendRequestStatusPREIMAGEPROVIDED          LightningSendRequestStatus = "PREIMAGE_PROVIDED"
	LightningSendRequestStatusTRANSFERCOMPLETED         LightningSendRequestStatus = "TRANSFER_COMPLETED"
)

var AllLightningSendRequestStatus = []LightningSendRequestStatus{
	LightningSendRequestStatusCREATED,
	LightningSendRequestStatusREQUESTVALIDATED,
	LightningSendRequestStatusLIGHTNINGPAYMENTINITIATED,
	LightningSendRequestStatusLIGHTNINGPAYMENTFAILED,
	LightningSendRequestStatusLIGHTNINGPAYMENTSUCCEEDED,
	LightningSendRequestStatusPREIMAGEPROVIDED,
	LightningSendRequestStatusTRANSFERCOMPLETED,
}

// NotifyReceiverTransferResponse is returned by NotifyReceiverTransfer on success.
type NotifyReceiverTransferResponse struct {
	// Send SMS to receiver they received transfer.
	NotifyReceiverTransfer any `json:"notify_receiver_transfer"`
}

// GetNotifyReceiverTransfer returns NotifyReceiverTransferResponse.NotifyReceiverTransfer, and is useful for accessing the field via an interface.
func (v *NotifyReceiverTransferResponse) GetNotifyReceiverTransfer() any {
	return v.NotifyReceiverTransfer
}

// RequestCoopExitRequestCoopExitRequestCoopExitOutput includes the requested fields of the GraphQL type RequestCoopExitOutput.
type RequestCoopExitRequestCoopExitRequestCoopExitOutput struct {
	Request RequestCoopExitRequestCoopExitRequestCoopExitOutputRequestCoopExitRequest `json:"request"`
}

// GetRequest returns RequestCoopExitRequestCoopExitRequestCoopExitOutput.Request, and is useful for accessing the field via an interface.
func (v *RequestCoopExitRequestCoopExitRequestCoopExitOutput) GetRequest() RequestCoopExitRequestCoopExitRequestCoopExitOutputRequestCoopExitRequest {
	return v.Request
}

// RequestCoopExitRequestCoopExitRequestCoopExitOutputRequestCoopExitRequest includes the requested fields of the GraphQL type CoopExitRequest.
type RequestCoopExitRequestCoopExitRequestCoopExitOutputRequestCoopExitRequest struct {
	// The unique identifier of this entity across all Lightspark systems. Should be treated as an opaque string.
	Id string `json:"id"`
	// The date and time when the entity was first created.
	CreatedAt time.Time `json:"created_at"`
	// The date and time when the entity was last updated.
	UpdatedAt time.Time `json:"updated_at"`
	// The fee user pays for the coop exit not including the L1 broadcast fee.
	Fee RequestCoopExitRequestCoopExitRequestCoopExitOutputRequestCoopExitRequestFeeCurrencyAmount `json:"fee"`
	// The status of this coop exit request.
	Status SparkCoopExitRequestStatus `json:"status"`
	// The raw connector transaction.
	RawConnectorTransaction string `json:"raw_connector_transaction"`
	// The time when the coop exit request expires and the UTXOs are released.
	ExpiresAt time.Time `json:"expires_at"`
}

// GetId returns RequestCoopExitRequestCoopExitRequestCoopExitOutputRequestCoopExitRequest.Id, and is useful for accessing the field via an interface.
func (v *RequestCoopExitRequestCoopExitRequestCoopExitOutputRequestCoopExitRequest) GetId() string {
	return v.Id
}

// GetCreatedAt returns RequestCoopExitRequestCoopExitRequestCoopExitOutputRequestCoopExitRequest.CreatedAt, and is useful for accessing the field via an interface.
func (v *RequestCoopExitRequestCoopExitRequestCoopExitOutputRequestCoopExitRequest) GetCreatedAt() time.Time {
	return v.CreatedAt
}

// GetUpdatedAt returns RequestCoopExitRequestCoopExitRequestCoopExitOutputRequestCoopExitRequest.UpdatedAt, and is useful for accessing the field via an interface.
func (v *RequestCoopExitRequestCoopExitRequestCoopExitOutputRequestCoopExitRequest) GetUpdatedAt() time.Time {
	return v.UpdatedAt
}

// GetFee returns RequestCoopExitRequestCoopExitRequestCoopExitOutputRequestCoopExitRequest.Fee, and is useful for accessing the field via an interface.
func (v *RequestCoopExitRequestCoopExitRequestCoopExitOutputRequestCoopExitRequest) GetFee() RequestCoopExitRequestCoopExitRequestCoopExitOutputRequestCoopExitRequestFeeCurrencyAmount {
	return v.Fee
}

// GetStatus returns RequestCoopExitRequestCoopExitRequestCoopExitOutputRequestCoopExitRequest.Status, and is useful for accessing the field via an interface.
func (v *RequestCoopExitRequestCoopExitRequestCoopExitOutputRequestCoopExitRequest) GetStatus() SparkCoopExitRequestStatus {
	return v.Status
}

// GetRawConnectorTransaction returns RequestCoopExitRequestCoopExitRequestCoopExitOutputRequestCoopExitRequest.RawConnectorTransaction, and is useful for accessing the field via an interface.
func (v *RequestCoopExitRequestCoopExitRequestCoopExitOutputRequestCoopExitRequest) GetRawConnectorTransaction() string {
	return v.RawConnectorTransaction
}

// GetExpiresAt returns RequestCoopExitRequestCoopExitRequestCoopExitOutputRequestCoopExitRequest.ExpiresAt, and is useful for accessing the field via an interface.
func (v *RequestCoopExitRequestCoopExitRequestCoopExitOutputRequestCoopExitRequest) GetExpiresAt() time.Time {
	return v.ExpiresAt
}

// RequestCoopExitRequestCoopExitRequestCoopExitOutputRequestCoopExitRequestFeeCurrencyAmount includes the requested fields of the GraphQL type CurrencyAmount.
// The GraphQL type's documentation follows.
//
// This object represents the value and unit for an amount of currency.
type RequestCoopExitRequestCoopExitRequestCoopExitOutputRequestCoopExitRequestFeeCurrencyAmount struct {
	// The original numeric value for this CurrencyAmount.
	OriginalValue int64 `json:"original_value"`
	// The original unit of currency for this CurrencyAmount.
	OriginalUnit CurrencyUnit `json:"original_unit"`
}

// GetOriginalValue returns RequestCoopExitRequestCoopExitRequestCoopExitOutputRequestCoopExitRequestFeeCurrencyAmount.OriginalValue, and is useful for accessing the field via an interface.
func (v *RequestCoopExitRequestCoopExitRequestCoopExitOutputRequestCoopExitRequestFeeCurrencyAmount) GetOriginalValue() int64 {
	return v.OriginalValue
}

// GetOriginalUnit returns RequestCoopExitRequestCoopExitRequestCoopExitOutputRequestCoopExitRequestFeeCurrencyAmount.OriginalUnit, and is useful for accessing the field via an interface.
func (v *RequestCoopExitRequestCoopExitRequestCoopExitOutputRequestCoopExitRequestFeeCurrencyAmount) GetOriginalUnit() CurrencyUnit {
	return v.OriginalUnit
}

// RequestCoopExitResponse is returned by RequestCoopExit on success.
type RequestCoopExitResponse struct {
	// For spark users to initiate coop exit.
	RequestCoopExit RequestCoopExitRequestCoopExitRequestCoopExitOutput `json:"request_coop_exit"`
}

// GetRequestCoopExit returns RequestCoopExitResponse.RequestCoopExit, and is useful for accessing the field via an interface.
func (v *RequestCoopExitResponse) GetRequestCoopExit() RequestCoopExitRequestCoopExitRequestCoopExitOutput {
	return v.RequestCoopExit
}

// RequestLeavesSwapRequestLeavesSwapRequestLeavesSwapOutput includes the requested fields of the GraphQL type RequestLeavesSwapOutput.
type RequestLeavesSwapRequestLeavesSwapRequestLeavesSwapOutput struct {
	Request RequestLeavesSwapRequestLeavesSwapRequestLeavesSwapOutputRequestLeavesSwapRequest `json:"request"`
}

// GetRequest returns RequestLeavesSwapRequestLeavesSwapRequestLeavesSwapOutput.Request, and is useful for accessing the field via an interface.
func (v *RequestLeavesSwapRequestLeavesSwapRequestLeavesSwapOutput) GetRequest() RequestLeavesSwapRequestLeavesSwapRequestLeavesSwapOutputRequestLeavesSwapRequest {
	return v.Request
}

// RequestLeavesSwapRequestLeavesSwapRequestLeavesSwapOutputRequestLeavesSwapRequest includes the requested fields of the GraphQL type LeavesSwapRequest.
type RequestLeavesSwapRequestLeavesSwapRequestLeavesSwapOutputRequestLeavesSwapRequest struct {
	// The unique identifier of this entity across all Lightspark systems. Should be treated as an opaque string.
	Id string `json:"id"`
	// The swap leaves returned to the user
	SwapLeaves []RequestLeavesSwapRequestLeavesSwapRequestLeavesSwapOutputRequestLeavesSwapRequestSwapLeavesSwapLeaf `json:"swap_leaves"`
}

// GetId returns RequestLeavesSwapRequestLeavesSwapRequestLeavesSwapOutputRequestLeavesSwapRequest.Id, and is useful for accessing the field via an interface.
func (v *RequestLeavesSwapRequestLeavesSwapRequestLeavesSwapOutputRequestLeavesSwapRequest) GetId() string {
	return v.Id
}

// GetSwapLeaves returns RequestLeavesSwapRequestLeavesSwapRequestLeavesSwapOutputRequestLeavesSwapRequest.SwapLeaves, and is useful for accessing the field via an interface.
func (v *RequestLeavesSwapRequestLeavesSwapRequestLeavesSwapOutputRequestLeavesSwapRequest) GetSwapLeaves() []RequestLeavesSwapRequestLeavesSwapRequestLeavesSwapOutputRequestLeavesSwapRequestSwapLeavesSwapLeaf {
	return v.SwapLeaves
}

// RequestLeavesSwapRequestLeavesSwapRequestLeavesSwapOutputRequestLeavesSwapRequestSwapLeavesSwapLeaf includes the requested fields of the GraphQL type SwapLeaf.
type RequestLeavesSwapRequestLeavesSwapRequestLeavesSwapOutputRequestLeavesSwapRequestSwapLeavesSwapLeaf struct {
	LeafId                       uuid.UUID `json:"leaf_id"`
	RawUnsignedRefundTransaction string    `json:"raw_unsigned_refund_transaction"`
	AdaptorSignedSignature       string    `json:"adaptor_signed_signature"`
}

// GetLeafId returns RequestLeavesSwapRequestLeavesSwapRequestLeavesSwapOutputRequestLeavesSwapRequestSwapLeavesSwapLeaf.LeafId, and is useful for accessing the field via an interface.
func (v *RequestLeavesSwapRequestLeavesSwapRequestLeavesSwapOutputRequestLeavesSwapRequestSwapLeavesSwapLeaf) GetLeafId() uuid.UUID {
	return v.LeafId
}

// GetRawUnsignedRefundTransaction returns RequestLeavesSwapRequestLeavesSwapRequestLeavesSwapOutputRequestLeavesSwapRequestSwapLeavesSwapLeaf.RawUnsignedRefundTransaction, and is useful for accessing the field via an interface.
func (v *RequestLeavesSwapRequestLeavesSwapRequestLeavesSwapOutputRequestLeavesSwapRequestSwapLeavesSwapLeaf) GetRawUnsignedRefundTransaction() string {
	return v.RawUnsignedRefundTransaction
}

// GetAdaptorSignedSignature returns RequestLeavesSwapRequestLeavesSwapRequestLeavesSwapOutputRequestLeavesSwapRequestSwapLeavesSwapLeaf.AdaptorSignedSignature, and is useful for accessing the field via an interface.
func (v *RequestLeavesSwapRequestLeavesSwapRequestLeavesSwapOutputRequestLeavesSwapRequestSwapLeavesSwapLeaf) GetAdaptorSignedSignature() string {
	return v.AdaptorSignedSignature
}

// RequestLeavesSwapResponse is returned by RequestLeavesSwap on success.
type RequestLeavesSwapResponse struct {
	// For spark users to initiate a leaves swap.
	RequestLeavesSwap RequestLeavesSwapRequestLeavesSwapRequestLeavesSwapOutput `json:"request_leaves_swap"`
}

// GetRequestLeavesSwap returns RequestLeavesSwapResponse.RequestLeavesSwap, and is useful for accessing the field via an interface.
func (v *RequestLeavesSwapResponse) GetRequestLeavesSwap() RequestLeavesSwapRequestLeavesSwapRequestLeavesSwapOutput {
	return v.RequestLeavesSwap
}

// RequestLightningReceiveRequestLightningReceiveRequestLightningReceiveOutput includes the requested fields of the GraphQL type RequestLightningReceiveOutput.
type RequestLightningReceiveRequestLightningReceiveRequestLightningReceiveOutput struct {
	Request RequestLightningReceiveRequestLightningReceiveRequestLightningReceiveOutputRequestLightningReceiveRequest `json:"request"`
}

// GetRequest returns RequestLightningReceiveRequestLightningReceiveRequestLightningReceiveOutput.Request, and is useful for accessing the field via an interface.
func (v *RequestLightningReceiveRequestLightningReceiveRequestLightningReceiveOutput) GetRequest() RequestLightningReceiveRequestLightningReceiveRequestLightningReceiveOutputRequestLightningReceiveRequest {
	return v.Request
}

// RequestLightningReceiveRequestLightningReceiveRequestLightningReceiveOutputRequestLightningReceiveRequest includes the requested fields of the GraphQL type LightningReceiveRequest.
type RequestLightningReceiveRequestLightningReceiveRequestLightningReceiveOutputRequestLightningReceiveRequest struct {
	// The unique identifier of this entity across all Lightspark systems. Should be treated as an opaque string.
	Id string `json:"id"`
	// The date and time when the entity was first created.
	CreatedAt time.Time `json:"created_at"`
	// The date and time when the entity was last updated.
	UpdatedAt time.Time `json:"updated_at"`
	// The lightning invoice generated to receive lightning payment.
	Invoice RequestLightningReceiveRequestLightningReceiveRequestLightningReceiveOutputRequestLightningReceiveRequestInvoice `json:"invoice"`
}

// GetId returns RequestLightningReceiveRequestLightningReceiveRequestLightningReceiveOutputRequestLightningReceiveRequest.Id, and is useful for accessing the field via an interface.
func (v *RequestLightningReceiveRequestLightningReceiveRequestLightningReceiveOutputRequestLightningReceiveRequest) GetId() string {
	return v.Id
}

// GetCreatedAt returns RequestLightningReceiveRequestLightningReceiveRequestLightningReceiveOutputRequestLightningReceiveRequest.CreatedAt, and is useful for accessing the field via an interface.
func (v *RequestLightningReceiveRequestLightningReceiveRequestLightningReceiveOutputRequestLightningReceiveRequest) GetCreatedAt() time.Time {
	return v.CreatedAt
}

// GetUpdatedAt returns RequestLightningReceiveRequestLightningReceiveRequestLightningReceiveOutputRequestLightningReceiveRequest.UpdatedAt, and is useful for accessing the field via an interface.
func (v *RequestLightningReceiveRequestLightningReceiveRequestLightningReceiveOutputRequestLightningReceiveRequest) GetUpdatedAt() time.Time {
	return v.UpdatedAt
}

// GetInvoice returns RequestLightningReceiveRequestLightningReceiveRequestLightningReceiveOutputRequestLightningReceiveRequest.Invoice, and is useful for accessing the field via an interface.
func (v *RequestLightningReceiveRequestLightningReceiveRequestLightningReceiveOutputRequestLightningReceiveRequest) GetInvoice() RequestLightningReceiveRequestLightningReceiveRequestLightningReceiveOutputRequestLightningReceiveRequestInvoice {
	return v.Invoice
}

// RequestLightningReceiveRequestLightningReceiveRequestLightningReceiveOutputRequestLightningReceiveRequestInvoice includes the requested fields of the GraphQL type Invoice.
type RequestLightningReceiveRequestLightningReceiveRequestLightningReceiveOutputRequestLightningReceiveRequestInvoice struct {
	EncodedInvoice string `json:"encoded_invoice"`
}

// GetEncodedInvoice returns RequestLightningReceiveRequestLightningReceiveRequestLightningReceiveOutputRequestLightningReceiveRequestInvoice.EncodedInvoice, and is useful for accessing the field via an interface.
func (v *RequestLightningReceiveRequestLightningReceiveRequestLightningReceiveOutputRequestLightningReceiveRequestInvoice) GetEncodedInvoice() string {
	return v.EncodedInvoice
}

// RequestLightningReceiveResponse is returned by RequestLightningReceive on success.
type RequestLightningReceiveResponse struct {
	// For spark users to receive through lightning invoices.
	RequestLightningReceive RequestLightningReceiveRequestLightningReceiveRequestLightningReceiveOutput `json:"request_lightning_receive"`
}

// GetRequestLightningReceive returns RequestLightningReceiveResponse.RequestLightningReceive, and is useful for accessing the field via an interface.
func (v *RequestLightningReceiveResponse) GetRequestLightningReceive() RequestLightningReceiveRequestLightningReceiveRequestLightningReceiveOutput {
	return v.RequestLightningReceive
}

// RequestLightningSendRequestLightningSendRequestLightningSendOutput includes the requested fields of the GraphQL type RequestLightningSendOutput.
type RequestLightningSendRequestLightningSendRequestLightningSendOutput struct {
	Request RequestLightningSendRequestLightningSendRequestLightningSendOutputRequestLightningSendRequest `json:"request"`
}

// GetRequest returns RequestLightningSendRequestLightningSendRequestLightningSendOutput.Request, and is useful for accessing the field via an interface.
func (v *RequestLightningSendRequestLightningSendRequestLightningSendOutput) GetRequest() RequestLightningSendRequestLightningSendRequestLightningSendOutputRequestLightningSendRequest {
	return v.Request
}

// RequestLightningSendRequestLightningSendRequestLightningSendOutputRequestLightningSendRequest includes the requested fields of the GraphQL type LightningSendRequest.
type RequestLightningSendRequestLightningSendRequestLightningSendOutputRequestLightningSendRequest struct {
	// The unique identifier of this entity across all Lightspark systems. Should be treated as an opaque string.
	Id string `json:"id"`
	// The date and time when the entity was first created.
	CreatedAt time.Time `json:"created_at"`
	// The date and time when the entity was last updated.
	UpdatedAt time.Time `json:"updated_at"`
	// The lightning invoice user requested to pay.
	EncodedInvoice string `json:"encoded_invoice"`
	// The fee charged for paying the lightning invoice.
	Fee RequestLightningSendRequestLightningSendRequestLightningSendOutputRequestLightningSendRequestFeeCurrencyAmount `json:"fee"`
	// The status of the request.
	Status LightningSendRequestStatus `json:"status"`
}

// GetId returns RequestLightningSendRequestLightningSendRequestLightningSendOutputRequestLightningSendRequest.Id, and is useful for accessing the field via an interface.
func (v *RequestLightningSendRequestLightningSendRequestLightningSendOutputRequestLightningSendRequest) GetId() string {
	return v.Id
}

// GetCreatedAt returns RequestLightningSendRequestLightningSendRequestLightningSendOutputRequestLightningSendRequest.CreatedAt, and is useful for accessing the field via an interface.
func (v *RequestLightningSendRequestLightningSendRequestLightningSendOutputRequestLightningSendRequest) GetCreatedAt() time.Time {
	return v.CreatedAt
}

// GetUpdatedAt returns RequestLightningSendRequestLightningSendRequestLightningSendOutputRequestLightningSendRequest.UpdatedAt, and is useful for accessing the field via an interface.
func (v *RequestLightningSendRequestLightningSendRequestLightningSendOutputRequestLightningSendRequest) GetUpdatedAt() time.Time {
	return v.UpdatedAt
}

// GetEncodedInvoice returns RequestLightningSendRequestLightningSendRequestLightningSendOutputRequestLightningSendRequest.EncodedInvoice, and is useful for accessing the field via an interface.
func (v *RequestLightningSendRequestLightningSendRequestLightningSendOutputRequestLightningSendRequest) GetEncodedInvoice() string {
	return v.EncodedInvoice
}

// GetFee returns RequestLightningSendRequestLightningSendRequestLightningSendOutputRequestLightningSendRequest.Fee, and is useful for accessing the field via an interface.
func (v *RequestLightningSendRequestLightningSendRequestLightningSendOutputRequestLightningSendRequest) GetFee() RequestLightningSendRequestLightningSendRequestLightningSendOutputRequestLightningSendRequestFeeCurrencyAmount {
	return v.Fee
}

// GetStatus returns RequestLightningSendRequestLightningSendRequestLightningSendOutputRequestLightningSendRequest.Status, and is useful for accessing the field via an interface.
func (v *RequestLightningSendRequestLightningSendRequestLightningSendOutputRequestLightningSendRequest) GetStatus() LightningSendRequestStatus {
	return v.Status
}

// RequestLightningSendRequestLightningSendRequestLightningSendOutputRequestLightningSendRequestFeeCurrencyAmount includes the requested fields of the GraphQL type CurrencyAmount.
// The GraphQL type's documentation follows.
//
// This object represents the value and unit for an amount of currency.
type RequestLightningSendRequestLightningSendRequestLightningSendOutputRequestLightningSendRequestFeeCurrencyAmount struct {
	// The original numeric value for this CurrencyAmount.
	OriginalValue int64 `json:"original_value"`
	// The original unit of currency for this CurrencyAmount.
	OriginalUnit CurrencyUnit `json:"original_unit"`
}

// GetOriginalValue returns RequestLightningSendRequestLightningSendRequestLightningSendOutputRequestLightningSendRequestFeeCurrencyAmount.OriginalValue, and is useful for accessing the field via an interface.
func (v *RequestLightningSendRequestLightningSendRequestLightningSendOutputRequestLightningSendRequestFeeCurrencyAmount) GetOriginalValue() int64 {
	return v.OriginalValue
}

// GetOriginalUnit returns RequestLightningSendRequestLightningSendRequestLightningSendOutputRequestLightningSendRequestFeeCurrencyAmount.OriginalUnit, and is useful for accessing the field via an interface.
func (v *RequestLightningSendRequestLightningSendRequestLightningSendOutputRequestLightningSendRequestFeeCurrencyAmount) GetOriginalUnit() CurrencyUnit {
	return v.OriginalUnit
}

// RequestLightningSendResponse is returned by RequestLightningSend on success.
type RequestLightningSendResponse struct {
	// For spark users to pay lightning invoices.
	RequestLightningSend RequestLightningSendRequestLightningSendRequestLightningSendOutput `json:"request_lightning_send"`
}

// GetRequestLightningSend returns RequestLightningSendResponse.RequestLightningSend, and is useful for accessing the field via an interface.
func (v *RequestLightningSendResponse) GetRequestLightningSend() RequestLightningSendRequestLightningSendRequestLightningSendOutput {
	return v.RequestLightningSend
}

type SparkCoopExitRequestStatus string

const (
	SparkCoopExitRequestStatusINITIATED                SparkCoopExitRequestStatus = "INITIATED"
	SparkCoopExitRequestStatusINBOUNDTRANSFERCHECKED   SparkCoopExitRequestStatus = "INBOUND_TRANSFER_CHECKED"
	SparkCoopExitRequestStatusTXSIGNED                 SparkCoopExitRequestStatus = "TX_SIGNED"
	SparkCoopExitRequestStatusTXBROADCASTED            SparkCoopExitRequestStatus = "TX_BROADCASTED"
	SparkCoopExitRequestStatusWAITINGONTXCONFIRMATIONS SparkCoopExitRequestStatus = "WAITING_ON_TX_CONFIRMATIONS"
	SparkCoopExitRequestStatusSUCCEEDED                SparkCoopExitRequestStatus = "SUCCEEDED"
	SparkCoopExitRequestStatusEXPIRED                  SparkCoopExitRequestStatus = "EXPIRED"
	SparkCoopExitRequestStatusFAILED                   SparkCoopExitRequestStatus = "FAILED"
)

var AllSparkCoopExitRequestStatus = []SparkCoopExitRequestStatus{
	SparkCoopExitRequestStatusINITIATED,
	SparkCoopExitRequestStatusINBOUNDTRANSFERCHECKED,
	SparkCoopExitRequestStatusTXSIGNED,
	SparkCoopExitRequestStatusTXBROADCASTED,
	SparkCoopExitRequestStatusWAITINGONTXCONFIRMATIONS,
	SparkCoopExitRequestStatusSUCCEEDED,
	SparkCoopExitRequestStatusEXPIRED,
	SparkCoopExitRequestStatusFAILED,
}

// StartReleaseSeedResponse is returned by StartReleaseSeed on success.
type StartReleaseSeedResponse struct {
	// Start the process to request releasing seed. SSP will send an OTP code to the phone number.
	StartSeedRelease any `json:"start_seed_release"`
}

// GetStartSeedRelease returns StartReleaseSeedResponse.StartSeedRelease, and is useful for accessing the field via an interface.
func (v *StartReleaseSeedResponse) GetStartSeedRelease() any { return v.StartSeedRelease }

type UserLeafInput struct {
	LeafId                                     uuid.UUID `json:"leaf_id"`
	RawUnsignedRefundTransaction               string    `json:"raw_unsigned_refund_transaction"`
	AdaptorAddedSignature                      string    `json:"adaptor_added_signature"`
	DirectRawUnsignedRefundTransaction         string    `json:"direct_raw_unsigned_refund_transaction"`
	DirectFromCpfpRawUnsignedRefundTransaction string    `json:"direct_from_cpfp_raw_unsigned_refund_transaction"`
	DirectAdaptorAddedSignature                string    `json:"direct_adaptor_added_signature"`
	DirectFromCpfpAdaptorAddedSignature        string    `json:"direct_from_cpfp_adaptor_added_signature"`
}

// GetLeafId returns UserLeafInput.LeafId, and is useful for accessing the field via an interface.
func (v *UserLeafInput) GetLeafId() uuid.UUID { return v.LeafId }

// GetRawUnsignedRefundTransaction returns UserLeafInput.RawUnsignedRefundTransaction, and is useful for accessing the field via an interface.
func (v *UserLeafInput) GetRawUnsignedRefundTransaction() string {
	return v.RawUnsignedRefundTransaction
}

// GetAdaptorAddedSignature returns UserLeafInput.AdaptorAddedSignature, and is useful for accessing the field via an interface.
func (v *UserLeafInput) GetAdaptorAddedSignature() string { return v.AdaptorAddedSignature }

// GetDirectRawUnsignedRefundTransaction returns UserLeafInput.DirectRawUnsignedRefundTransaction, and is useful for accessing the field via an interface.
func (v *UserLeafInput) GetDirectRawUnsignedRefundTransaction() string {
	return v.DirectRawUnsignedRefundTransaction
}

// GetDirectFromCpfpRawUnsignedRefundTransaction returns UserLeafInput.DirectFromCpfpRawUnsignedRefundTransaction, and is useful for accessing the field via an interface.
func (v *UserLeafInput) GetDirectFromCpfpRawUnsignedRefundTransaction() string {
	return v.DirectFromCpfpRawUnsignedRefundTransaction
}

// GetDirectAdaptorAddedSignature returns UserLeafInput.DirectAdaptorAddedSignature, and is useful for accessing the field via an interface.
func (v *UserLeafInput) GetDirectAdaptorAddedSignature() string { return v.DirectAdaptorAddedSignature }

// GetDirectFromCpfpAdaptorAddedSignature returns UserLeafInput.DirectFromCpfpAdaptorAddedSignature, and is useful for accessing the field via an interface.
func (v *UserLeafInput) GetDirectFromCpfpAdaptorAddedSignature() string {
	return v.DirectFromCpfpAdaptorAddedSignature
}

// WalletUserIdentityPublicKeyResponse is returned by WalletUserIdentityPublicKey on success.
type WalletUserIdentityPublicKeyResponse struct {
	// Get wallet's identity public key from phone number.
	WalletUserIdentityPublicKey WalletUserIdentityPublicKeyWalletUserIdentityPublicKeyWalletUserIdentityPublicKeyOutput `json:"wallet_user_identity_public_key"`
}

// GetWalletUserIdentityPublicKey returns WalletUserIdentityPublicKeyResponse.WalletUserIdentityPublicKey, and is useful for accessing the field via an interface.
func (v *WalletUserIdentityPublicKeyResponse) GetWalletUserIdentityPublicKey() WalletUserIdentityPublicKeyWalletUserIdentityPublicKeyWalletUserIdentityPublicKeyOutput {
	return v.WalletUserIdentityPublicKey
}

// WalletUserIdentityPublicKeyWalletUserIdentityPublicKeyWalletUserIdentityPublicKeyOutput includes the requested fields of the GraphQL type WalletUserIdentityPublicKeyOutput.
type WalletUserIdentityPublicKeyWalletUserIdentityPublicKeyWalletUserIdentityPublicKeyOutput struct {
	IdentityPublicKey string `json:"identity_public_key"`
}

// GetIdentityPublicKey returns WalletUserIdentityPublicKeyWalletUserIdentityPublicKeyWalletUserIdentityPublicKeyOutput.IdentityPublicKey, and is useful for accessing the field via an interface.
func (v *WalletUserIdentityPublicKeyWalletUserIdentityPublicKeyWalletUserIdentityPublicKeyOutput) GetIdentityPublicKey() string {
	return v.IdentityPublicKey
}

// __CompleteCoopExitInput is used internally by genqlient
type __CompleteCoopExitInput struct {
	UserOutboundTransferExternalId uuid.UUID `json:"user_outbound_transfer_external_id"`
	CoopExitRequestId              string    `json:"coop_exit_request_id"`
}

// GetUserOutboundTransferExternalId returns __CompleteCoopExitInput.UserOutboundTransferExternalId, and is useful for accessing the field via an interface.
func (v *__CompleteCoopExitInput) GetUserOutboundTransferExternalId() uuid.UUID {
	return v.UserOutboundTransferExternalId
}

// GetCoopExitRequestId returns __CompleteCoopExitInput.CoopExitRequestId, and is useful for accessing the field via an interface.
func (v *__CompleteCoopExitInput) GetCoopExitRequestId() string { return v.CoopExitRequestId }

// __CompleteLeavesSwapInput is used internally by genqlient
type __CompleteLeavesSwapInput struct {
	AdaptorSecretKey               string    `json:"adaptor_secret_key"`
	UserOutboundTransferExternalId uuid.UUID `json:"user_outbound_transfer_external_id"`
	LeavesSwapRequestId            string    `json:"leaves_swap_request_id"`
}

// GetAdaptorSecretKey returns __CompleteLeavesSwapInput.AdaptorSecretKey, and is useful for accessing the field via an interface.
func (v *__CompleteLeavesSwapInput) GetAdaptorSecretKey() string { return v.AdaptorSecretKey }

// GetUserOutboundTransferExternalId returns __CompleteLeavesSwapInput.UserOutboundTransferExternalId, and is useful for accessing the field via an interface.
func (v *__CompleteLeavesSwapInput) GetUserOutboundTransferExternalId() uuid.UUID {
	return v.UserOutboundTransferExternalId
}

// GetLeavesSwapRequestId returns __CompleteLeavesSwapInput.LeavesSwapRequestId, and is useful for accessing the field via an interface.
func (v *__CompleteLeavesSwapInput) GetLeavesSwapRequestId() string { return v.LeavesSwapRequestId }

// __CompleteReleaseSeedInput is used internally by genqlient
type __CompleteReleaseSeedInput struct {
	PhoneNumber string `json:"phone_number"`
	Code        string `json:"code"`
}

// GetPhoneNumber returns __CompleteReleaseSeedInput.PhoneNumber, and is useful for accessing the field via an interface.
func (v *__CompleteReleaseSeedInput) GetPhoneNumber() string { return v.PhoneNumber }

// GetCode returns __CompleteReleaseSeedInput.Code, and is useful for accessing the field via an interface.
func (v *__CompleteReleaseSeedInput) GetCode() string { return v.Code }

// __NotifyReceiverTransferInput is used internally by genqlient
type __NotifyReceiverTransferInput struct {
	PhoneNumber string `json:"phone_number"`
	AmountSats  int64  `json:"amount_sats"`
}

// GetPhoneNumber returns __NotifyReceiverTransferInput.PhoneNumber, and is useful for accessing the field via an interface.
func (v *__NotifyReceiverTransferInput) GetPhoneNumber() string { return v.PhoneNumber }

// GetAmountSats returns __NotifyReceiverTransferInput.AmountSats, and is useful for accessing the field via an interface.
func (v *__NotifyReceiverTransferInput) GetAmountSats() int64 { return v.AmountSats }

// __RequestCoopExitInput is used internally by genqlient
type __RequestCoopExitInput struct {
	LeafExternalIds   []uuid.UUID `json:"leaf_external_ids"`
	WithdrawalAddress string      `json:"withdrawal_address"`
	IdempotencyKey    string      `json:"idempotency_key"`
	ExitSpeed         ExitSpeed   `json:"exit_speed"`
}

// GetLeafExternalIds returns __RequestCoopExitInput.LeafExternalIds, and is useful for accessing the field via an interface.
func (v *__RequestCoopExitInput) GetLeafExternalIds() []uuid.UUID { return v.LeafExternalIds }

// GetWithdrawalAddress returns __RequestCoopExitInput.WithdrawalAddress, and is useful for accessing the field via an interface.
func (v *__RequestCoopExitInput) GetWithdrawalAddress() string { return v.WithdrawalAddress }

// GetIdempotencyKey returns __RequestCoopExitInput.IdempotencyKey, and is useful for accessing the field via an interface.
func (v *__RequestCoopExitInput) GetIdempotencyKey() string { return v.IdempotencyKey }

// GetExitSpeed returns __RequestCoopExitInput.ExitSpeed, and is useful for accessing the field via an interface.
func (v *__RequestCoopExitInput) GetExitSpeed() ExitSpeed { return v.ExitSpeed }

// __RequestLeavesSwapInput is used internally by genqlient
type __RequestLeavesSwapInput struct {
	AdaptorPubkey    string          `json:"adaptor_pubkey"`
	TotalAmountSats  int64           `json:"total_amount_sats"`
	TargetAmountSats int64           `json:"target_amount_sats"`
	FeeSats          int64           `json:"fee_sats"`
	UserLeaves       []UserLeafInput `json:"user_leaves"`
	IdempotencyKey   string          `json:"idempotency_key"`
}

// GetAdaptorPubkey returns __RequestLeavesSwapInput.AdaptorPubkey, and is useful for accessing the field via an interface.
func (v *__RequestLeavesSwapInput) GetAdaptorPubkey() string { return v.AdaptorPubkey }

// GetTotalAmountSats returns __RequestLeavesSwapInput.TotalAmountSats, and is useful for accessing the field via an interface.
func (v *__RequestLeavesSwapInput) GetTotalAmountSats() int64 { return v.TotalAmountSats }

// GetTargetAmountSats returns __RequestLeavesSwapInput.TargetAmountSats, and is useful for accessing the field via an interface.
func (v *__RequestLeavesSwapInput) GetTargetAmountSats() int64 { return v.TargetAmountSats }

// GetFeeSats returns __RequestLeavesSwapInput.FeeSats, and is useful for accessing the field via an interface.
func (v *__RequestLeavesSwapInput) GetFeeSats() int64 { return v.FeeSats }

// GetUserLeaves returns __RequestLeavesSwapInput.UserLeaves, and is useful for accessing the field via an interface.
func (v *__RequestLeavesSwapInput) GetUserLeaves() []UserLeafInput { return v.UserLeaves }

// GetIdempotencyKey returns __RequestLeavesSwapInput.IdempotencyKey, and is useful for accessing the field via an interface.
func (v *__RequestLeavesSwapInput) GetIdempotencyKey() string { return v.IdempotencyKey }

// __RequestLightningReceiveInput is used internally by genqlient
type __RequestLightningReceiveInput struct {
	Network     BitcoinNetwork `json:"network"`
	AmountSats  int64          `json:"amount_sats"`
	PaymentHash []byte         `json:"payment_hash"`
	ExpirySecs  int            `json:"expiry_secs"`
	Memo        string         `json:"memo"`
}

// GetNetwork returns __RequestLightningReceiveInput.Network, and is useful for accessing the field via an interface.
func (v *__RequestLightningReceiveInput) GetNetwork() BitcoinNetwork { return v.Network }

// GetAmountSats returns __RequestLightningReceiveInput.AmountSats, and is useful for accessing the field via an interface.
func (v *__RequestLightningReceiveInput) GetAmountSats() int64 { return v.AmountSats }

// GetPaymentHash returns __RequestLightningReceiveInput.PaymentHash, and is useful for accessing the field via an interface.
func (v *__RequestLightningReceiveInput) GetPaymentHash() []byte { return v.PaymentHash }

// GetExpirySecs returns __RequestLightningReceiveInput.ExpirySecs, and is useful for accessing the field via an interface.
func (v *__RequestLightningReceiveInput) GetExpirySecs() int { return v.ExpirySecs }

// GetMemo returns __RequestLightningReceiveInput.Memo, and is useful for accessing the field via an interface.
func (v *__RequestLightningReceiveInput) GetMemo() string { return v.Memo }

// __RequestLightningSendInput is used internally by genqlient
type __RequestLightningSendInput struct {
	EncodedInvoice string `json:"encoded_invoice"`
	IdempotencyKey string `json:"idempotency_key"`
}

// GetEncodedInvoice returns __RequestLightningSendInput.EncodedInvoice, and is useful for accessing the field via an interface.
func (v *__RequestLightningSendInput) GetEncodedInvoice() string { return v.EncodedInvoice }

// GetIdempotencyKey returns __RequestLightningSendInput.IdempotencyKey, and is useful for accessing the field via an interface.
func (v *__RequestLightningSendInput) GetIdempotencyKey() string { return v.IdempotencyKey }

// __StartReleaseSeedInput is used internally by genqlient
type __StartReleaseSeedInput struct {
	PhoneNumber string `json:"phone_number"`
}

// GetPhoneNumber returns __StartReleaseSeedInput.PhoneNumber, and is useful for accessing the field via an interface.
func (v *__StartReleaseSeedInput) GetPhoneNumber() string { return v.PhoneNumber }

// __WalletUserIdentityPublicKeyInput is used internally by genqlient
type __WalletUserIdentityPublicKeyInput struct {
	PhoneNumber string `json:"phone_number"`
}

// GetPhoneNumber returns __WalletUserIdentityPublicKeyInput.PhoneNumber, and is useful for accessing the field via an interface.
func (v *__WalletUserIdentityPublicKeyInput) GetPhoneNumber() string { return v.PhoneNumber }

// The mutation executed by CompleteCoopExit.
const CompleteCoopExit_Operation = `
mutation CompleteCoopExit ($user_outbound_transfer_external_id: UUID!, $coop_exit_request_id: ID!) {
	complete_coop_exit(input: {user_outbound_transfer_external_id:$user_outbound_transfer_external_id,coop_exit_request_id:$coop_exit_request_id}) {
		request {
			id
		}
	}
}
`

func CompleteCoopExit(
	ctx_ context.Context,
	client_ graphql.Client,
	user_outbound_transfer_external_id uuid.UUID,
	coop_exit_request_id string,
) (data_ *CompleteCoopExitResponse, err_ error) {
	req_ := &graphql.Request{
		OpName: "CompleteCoopExit",
		Query:  CompleteCoopExit_Operation,
		Variables: &__CompleteCoopExitInput{
			UserOutboundTransferExternalId: user_outbound_transfer_external_id,
			CoopExitRequestId:              coop_exit_request_id,
		},
	}

	data_ = &CompleteCoopExitResponse{}
	resp_ := &graphql.Response{Data: data_}

	err_ = client_.MakeRequest(
		ctx_,
		req_,
		resp_,
	)

	return data_, err_
}

// The mutation executed by CompleteLeavesSwap.
const CompleteLeavesSwap_Operation = `
mutation CompleteLeavesSwap ($adaptor_secret_key: String!, $user_outbound_transfer_external_id: UUID!, $leaves_swap_request_id: ID!) {
	complete_leaves_swap(input: {adaptor_secret_key:$adaptor_secret_key,user_outbound_transfer_external_id:$user_outbound_transfer_external_id,leaves_swap_request_id:$leaves_swap_request_id}) {
		request {
			id
		}
	}
}
`

func CompleteLeavesSwap(
	ctx_ context.Context,
	client_ graphql.Client,
	adaptor_secret_key string,
	user_outbound_transfer_external_id uuid.UUID,
	leaves_swap_request_id string,
) (data_ *CompleteLeavesSwapResponse, err_ error) {
	req_ := &graphql.Request{
		OpName: "CompleteLeavesSwap",
		Query:  CompleteLeavesSwap_Operation,
		Variables: &__CompleteLeavesSwapInput{
			AdaptorSecretKey:               adaptor_secret_key,
			UserOutboundTransferExternalId: user_outbound_transfer_external_id,
			LeavesSwapRequestId:            leaves_swap_request_id,
		},
	}

	data_ = &CompleteLeavesSwapResponse{}
	resp_ := &graphql.Response{Data: data_}

	err_ = client_.MakeRequest(
		ctx_,
		req_,
		resp_,
	)

	return data_, err_
}

// The mutation executed by CompleteReleaseSeed.
const CompleteReleaseSeed_Operation = `
mutation CompleteReleaseSeed ($phone_number: String!, $code: String!) {
	complete_seed_release(input: {phone_number:$phone_number,code:$code}) {
		seed
	}
}
`

func CompleteReleaseSeed(
	ctx_ context.Context,
	client_ graphql.Client,
	phone_number string,
	code string,
) (data_ *CompleteReleaseSeedResponse, err_ error) {
	req_ := &graphql.Request{
		OpName: "CompleteReleaseSeed",
		Query:  CompleteReleaseSeed_Operation,
		Variables: &__CompleteReleaseSeedInput{
			PhoneNumber: phone_number,
			Code:        code,
		},
	}

	data_ = &CompleteReleaseSeedResponse{}
	resp_ := &graphql.Response{Data: data_}

	err_ = client_.MakeRequest(
		ctx_,
		req_,
		resp_,
	)

	return data_, err_
}

// The mutation executed by NotifyReceiverTransfer.
const NotifyReceiverTransfer_Operation = `
mutation NotifyReceiverTransfer ($phone_number: String!, $amount_sats: Long!) {
	notify_receiver_transfer(input: {phone_number:$phone_number,amount_sats:$amount_sats})
}
`

func NotifyReceiverTransfer(
	ctx_ context.Context,
	client_ graphql.Client,
	phone_number string,
	amount_sats int64,
) (data_ *NotifyReceiverTransferResponse, err_ error) {
	req_ := &graphql.Request{
		OpName: "NotifyReceiverTransfer",
		Query:  NotifyReceiverTransfer_Operation,
		Variables: &__NotifyReceiverTransferInput{
			PhoneNumber: phone_number,
			AmountSats:  amount_sats,
		},
	}

	data_ = &NotifyReceiverTransferResponse{}
	resp_ := &graphql.Response{Data: data_}

	err_ = client_.MakeRequest(
		ctx_,
		req_,
		resp_,
	)

	return data_, err_
}

// The mutation executed by RequestCoopExit.
const RequestCoopExit_Operation = `
mutation RequestCoopExit ($leaf_external_ids: [UUID!]!, $withdrawal_address: String!, $idempotency_key: String!, $exit_speed: ExitSpeed!) {
	request_coop_exit(input: {leaf_external_ids:$leaf_external_ids,withdrawal_address:$withdrawal_address,idempotency_key:$idempotency_key,exit_speed:$exit_speed}) {
		request {
			id
			created_at
			updated_at
			fee {
				original_value
				original_unit
			}
			status
			raw_connector_transaction
			expires_at
		}
	}
}
`

func RequestCoopExit(
	ctx_ context.Context,
	client_ graphql.Client,
	leaf_external_ids []uuid.UUID,
	withdrawal_address string,
	idempotency_key string,
	exit_speed ExitSpeed,
) (data_ *RequestCoopExitResponse, err_ error) {
	req_ := &graphql.Request{
		OpName: "RequestCoopExit",
		Query:  RequestCoopExit_Operation,
		Variables: &__RequestCoopExitInput{
			LeafExternalIds:   leaf_external_ids,
			WithdrawalAddress: withdrawal_address,
			IdempotencyKey:    idempotency_key,
			ExitSpeed:         exit_speed,
		},
	}

	data_ = &RequestCoopExitResponse{}
	resp_ := &graphql.Response{Data: data_}

	err_ = client_.MakeRequest(
		ctx_,
		req_,
		resp_,
	)

	return data_, err_
}

// The mutation executed by RequestLeavesSwap.
const RequestLeavesSwap_Operation = `
mutation RequestLeavesSwap ($adaptor_pubkey: PublicKey!, $total_amount_sats: Long!, $target_amount_sats: Long!, $fee_sats: Long!, $user_leaves: [UserLeafInput!]!, $idempotency_key: String!) {
	request_leaves_swap(input: {adaptor_pubkey:$adaptor_pubkey,total_amount_sats:$total_amount_sats,target_amount_sats:$target_amount_sats,idempotency_key:$idempotency_key,fee_sats:$fee_sats,user_leaves:$user_leaves}) {
		request {
			id
			swap_leaves {
				leaf_id
				raw_unsigned_refund_transaction
				adaptor_signed_signature
			}
		}
	}
}
`

func RequestLeavesSwap(
	ctx_ context.Context,
	client_ graphql.Client,
	adaptor_pubkey string,
	total_amount_sats int64,
	target_amount_sats int64,
	fee_sats int64,
	user_leaves []UserLeafInput,
	idempotency_key string,
) (data_ *RequestLeavesSwapResponse, err_ error) {
	req_ := &graphql.Request{
		OpName: "RequestLeavesSwap",
		Query:  RequestLeavesSwap_Operation,
		Variables: &__RequestLeavesSwapInput{
			AdaptorPubkey:    adaptor_pubkey,
			TotalAmountSats:  total_amount_sats,
			TargetAmountSats: target_amount_sats,
			FeeSats:          fee_sats,
			UserLeaves:       user_leaves,
			IdempotencyKey:   idempotency_key,
		},
	}

	data_ = &RequestLeavesSwapResponse{}
	resp_ := &graphql.Response{Data: data_}

	err_ = client_.MakeRequest(
		ctx_,
		req_,
		resp_,
	)

	return data_, err_
}

// The mutation executed by RequestLightningReceive.
const RequestLightningReceive_Operation = `
mutation RequestLightningReceive ($network: BitcoinNetwork!, $amount_sats: Long!, $payment_hash: Hash32!, $expiry_secs: Int, $memo: String) {
	request_lightning_receive(input: {network:$network,amount_sats:$amount_sats,payment_hash:$payment_hash,expiry_secs:$expiry_secs,memo:$memo}) {
		request {
			id
			created_at
			updated_at
			invoice {
				encoded_invoice
			}
		}
	}
}
`

func RequestLightningReceive(
	ctx_ context.Context,
	client_ graphql.Client,
	network BitcoinNetwork,
	amount_sats int64,
	payment_hash []byte,
	expiry_secs int,
	memo string,
) (data_ *RequestLightningReceiveResponse, err_ error) {
	req_ := &graphql.Request{
		OpName: "RequestLightningReceive",
		Query:  RequestLightningReceive_Operation,
		Variables: &__RequestLightningReceiveInput{
			Network:     network,
			AmountSats:  amount_sats,
			PaymentHash: payment_hash,
			ExpirySecs:  expiry_secs,
			Memo:        memo,
		},
	}

	data_ = &RequestLightningReceiveResponse{}
	resp_ := &graphql.Response{Data: data_}

	err_ = client_.MakeRequest(
		ctx_,
		req_,
		resp_,
	)

	return data_, err_
}

// The mutation executed by RequestLightningSend.
const RequestLightningSend_Operation = `
mutation RequestLightningSend ($encoded_invoice: String!, $idempotency_key: String!) {
	request_lightning_send(input: {encoded_invoice:$encoded_invoice,idempotency_key:$idempotency_key}) {
		request {
			id
			created_at
			updated_at
			encoded_invoice
			fee {
				original_value
				original_unit
			}
			status
		}
	}
}
`

func RequestLightningSend(
	ctx_ context.Context,
	client_ graphql.Client,
	encoded_invoice string,
	idempotency_key string,
) (data_ *RequestLightningSendResponse, err_ error) {
	req_ := &graphql.Request{
		OpName: "RequestLightningSend",
		Query:  RequestLightningSend_Operation,
		Variables: &__RequestLightningSendInput{
			EncodedInvoice: encoded_invoice,
			IdempotencyKey: idempotency_key,
		},
	}

	data_ = &RequestLightningSendResponse{}
	resp_ := &graphql.Response{Data: data_}

	err_ = client_.MakeRequest(
		ctx_,
		req_,
		resp_,
	)

	return data_, err_
}

// The mutation executed by StartReleaseSeed.
const StartReleaseSeed_Operation = `
mutation StartReleaseSeed ($phone_number: String!) {
	start_seed_release(input: {phone_number:$phone_number})
}
`

func StartReleaseSeed(
	ctx_ context.Context,
	client_ graphql.Client,
	phone_number string,
) (data_ *StartReleaseSeedResponse, err_ error) {
	req_ := &graphql.Request{
		OpName: "StartReleaseSeed",
		Query:  StartReleaseSeed_Operation,
		Variables: &__StartReleaseSeedInput{
			PhoneNumber: phone_number,
		},
	}

	data_ = &StartReleaseSeedResponse{}
	resp_ := &graphql.Response{Data: data_}

	err_ = client_.MakeRequest(
		ctx_,
		req_,
		resp_,
	)

	return data_, err_
}

// The mutation executed by WalletUserIdentityPublicKey.
const WalletUserIdentityPublicKey_Operation = `
mutation WalletUserIdentityPublicKey ($phone_number: String!) {
	wallet_user_identity_public_key(input: {phone_number:$phone_number}) {
		identity_public_key
	}
}
`

func WalletUserIdentityPublicKey(
	ctx_ context.Context,
	client_ graphql.Client,
	phone_number string,
) (data_ *WalletUserIdentityPublicKeyResponse, err_ error) {
	req_ := &graphql.Request{
		OpName: "WalletUserIdentityPublicKey",
		Query:  WalletUserIdentityPublicKey_Operation,
		Variables: &__WalletUserIdentityPublicKeyInput{
			PhoneNumber: phone_number,
		},
	}

	data_ = &WalletUserIdentityPublicKeyResponse{}
	resp_ := &graphql.Response{Data: data_}

	err_ = client_.MakeRequest(
		ctx_,
		req_,
		resp_,
	)

	return data_, err_
}
