// Code generated by sqlc. DO NOT EDIT.
// versions:
//   sqlc v1.29.0

package sqlc

import (
	"context"
	"database/sql"
	"time"
)

type Querier interface {
	AddSourceNode(ctx context.Context, nodeID int64) error
	AddV1ChannelProof(ctx context.Context, arg AddV1ChannelProofParams) (sql.Result, error)
	AddV2ChannelProof(ctx context.Context, arg AddV2ChannelProofParams) (sql.Result, error)
	ClearKVInvoiceHashIndex(ctx context.Context) error
	CountPayments(ctx context.Context) (int64, error)
	CountZombieChannels(ctx context.Context, version int16) (int64, error)
	CreateChannel(ctx context.Context, arg CreateChannelParams) (int64, error)
	DeleteCanceledInvoices(ctx context.Context) (sql.Result, error)
	DeleteChannelPolicyExtraTypes(ctx context.Context, channelPolicyID int64) error
	DeleteChannels(ctx context.Context, ids []int64) error
	DeleteExtraNodeType(ctx context.Context, arg DeleteExtraNodeTypeParams) error
	// Delete all failed HTLC attempts for the given payment. Resolution type 2
	// indicates a failed attempt. Uses EXISTS to scope the resolution lookup to
	// only this payment's attempts, avoiding an O(N) scan of all failed
	// resolutions across all payments.
	DeleteFailedAttempts(ctx context.Context, paymentID int64) error
	DeleteInvoice(ctx context.Context, arg DeleteInvoiceParams) (sql.Result, error)
	DeleteNode(ctx context.Context, id int64) error
	DeleteNodeAddresses(ctx context.Context, nodeID int64) error
	DeleteNodeByPubKey(ctx context.Context, arg DeleteNodeByPubKeyParams) (sql.Result, error)
	DeleteNodeFeature(ctx context.Context, arg DeleteNodeFeatureParams) error
	DeletePayment(ctx context.Context, id int64) error
	DeletePruneLogEntriesInRange(ctx context.Context, arg DeletePruneLogEntriesInRangeParams) error
	DeleteUnconnectedNodes(ctx context.Context) ([][]byte, error)
	DeleteZombieChannel(ctx context.Context, arg DeleteZombieChannelParams) (sql.Result, error)
	FailAttempt(ctx context.Context, arg FailAttemptParams) error
	FailPayment(ctx context.Context, arg FailPaymentParams) (sql.Result, error)
	FetchAMPSubInvoiceHTLCs(ctx context.Context, arg FetchAMPSubInvoiceHTLCsParams) ([]FetchAMPSubInvoiceHTLCsRow, error)
	FetchAMPSubInvoices(ctx context.Context, arg FetchAMPSubInvoicesParams) ([]AmpSubInvoice, error)
	FetchHopLevelCustomRecords(ctx context.Context, hopIds []int64) ([]PaymentHopCustomRecord, error)
	FetchHopsForAttempts(ctx context.Context, htlcAttemptIndices []int64) ([]FetchHopsForAttemptsRow, error)
	// Batch query to fetch only HTLC resolution status for multiple payments.
	// We don't need to order by payment_id and attempt_time because we will
	// group the resolutions by payment_id in the background.
	FetchHtlcAttemptResolutionsForPayments(ctx context.Context, paymentIds []int64) ([]FetchHtlcAttemptResolutionsForPaymentsRow, error)
	FetchHtlcAttemptsForPayments(ctx context.Context, paymentIds []int64) ([]FetchHtlcAttemptsForPaymentsRow, error)
	// Fetch all non-terminal payments using pagination. A payment is
	// non-terminal if it has an unresolved attempt, or if it has not been
	// permanently failed and has no settled attempt yet.
	FetchNonTerminalPayments(ctx context.Context, arg FetchNonTerminalPaymentsParams) ([]FetchNonTerminalPaymentsRow, error)
	FetchPayment(ctx context.Context, paymentIdentifier []byte) (FetchPaymentRow, error)
	// Fetch all duplicate payment records from the payment_duplicates table for
	// a given payment ID.
	FetchPaymentDuplicates(ctx context.Context, paymentID int64) ([]PaymentDuplicate, error)
	FetchPaymentLevelFirstHopCustomRecords(ctx context.Context, paymentIds []int64) ([]PaymentFirstHopCustomRecord, error)
	// Batch fetch payment and intent data for a set of payment IDs.
	// Used to avoid fetching redundant payment data when processing multiple
	// attempts for the same payment.
	FetchPaymentsByIDs(ctx context.Context, paymentIds []int64) ([]FetchPaymentsByIDsRow, error)
	// Migration-specific batch fetch that returns payment data along with HTLC
	// attempt counts for structural validation during KV to SQL migration.
	FetchPaymentsByIDsMig(ctx context.Context, paymentIds []int64) ([]FetchPaymentsByIDsMigRow, error)
	// FetchPendingInvoices returns all invoices in a pending state (open or
	// accepted). The invoices_state_idx index on the state column makes this a
	// fast index scan rather than a full table scan. id_cursor is an exclusive
	// lower bound on the primary key used for cursor-based pagination; the caller
	// must supply 0 when starting from the beginning.
	FetchPendingInvoices(ctx context.Context, arg FetchPendingInvoicesParams) ([]Invoice, error)
	FetchRouteLevelFirstHopCustomRecords(ctx context.Context, htlcAttemptIndices []int64) ([]PaymentAttemptFirstHopCustomRecord, error)
	FetchSettledAMPSubInvoices(ctx context.Context, arg FetchSettledAMPSubInvoicesParams) ([]FetchSettledAMPSubInvoicesRow, error)
	// FilterInvoicesByAddIndex returns invoices whose add_index (primary key id)
	// is greater than or equal to the given value, ordered by id. Because id is
	// the primary key, this is always an efficient range scan on the clustered
	// index. For cursor-based pagination the caller advances add_index_get to
	// last_returned_id + 1 on each subsequent page.
	FilterInvoicesByAddIndex(ctx context.Context, arg FilterInvoicesByAddIndexParams) ([]Invoice, error)
	// FilterInvoicesBySettleIndex returns settled invoices whose settle_index is
	// greater than or equal to the given value, ordered by id. The caller must
	// always supply a concrete lower bound so the invoices_settle_index_idx index
	// can be used. id_cursor is an exclusive lower bound on the primary key used
	// for cursor-based pagination; the caller must supply 0 when starting from
	// the beginning.
	FilterInvoicesBySettleIndex(ctx context.Context, arg FilterInvoicesBySettleIndexParams) ([]Invoice, error)
	// FilterInvoicesForward returns invoices in ascending id order. All parameters
	// are non-nullable so the planner always sees plain range predicates and can
	// use the primary-key index. For cursor-based pagination the caller advances
	// add_index_get to last_returned_id + 1 on each subsequent page. The caller
	// is responsible for supplying Go-side defaults when a filter is not needed:
	//   add_index_get  → 1                             (first valid invoice id)
	//   created_after  → time.Unix(0, 0).UTC()         (epoch – before any invoice)
	//   created_before → time.Date(9999, …)             (far future – no upper cap)
	//   pending_only   → false                          (include all states)
	FilterInvoicesForward(ctx context.Context, arg FilterInvoicesForwardParams) ([]Invoice, error)
	// FilterInvoicesReverse is the descending counterpart of FilterInvoicesForward.
	// It returns invoices in descending id order. For cursor-based pagination the
	// caller advances add_index_let to last_returned_id - 1 on each subsequent
	// page; pass math.MaxInt64 to start from the most recent invoice. See
	// FilterInvoicesForward for the expected Go-side defaults.
	FilterInvoicesReverse(ctx context.Context, arg FilterInvoicesReverseParams) ([]Invoice, error)
	FilterPayments(ctx context.Context, arg FilterPaymentsParams) ([]FilterPaymentsRow, error)
	FilterPaymentsDesc(ctx context.Context, arg FilterPaymentsDescParams) ([]FilterPaymentsDescRow, error)
	GetAMPInvoiceID(ctx context.Context, setID []byte) (int64, error)
	GetChainNetwork(ctx context.Context) (string, error)
	GetChannelAndNodesBySCID(ctx context.Context, arg GetChannelAndNodesBySCIDParams) (GetChannelAndNodesBySCIDRow, error)
	GetChannelByOutpointWithPolicies(ctx context.Context, arg GetChannelByOutpointWithPoliciesParams) (GetChannelByOutpointWithPoliciesRow, error)
	GetChannelBySCID(ctx context.Context, arg GetChannelBySCIDParams) (GraphChannel, error)
	GetChannelBySCIDWithPolicies(ctx context.Context, arg GetChannelBySCIDWithPoliciesParams) (GetChannelBySCIDWithPoliciesRow, error)
	GetChannelExtrasBatch(ctx context.Context, chanIds []int64) ([]GraphChannelExtraType, error)
	GetChannelFeaturesBatch(ctx context.Context, chanIds []int64) ([]GraphChannelFeature, error)
	GetChannelPolicyByChannelAndNode(ctx context.Context, arg GetChannelPolicyByChannelAndNodeParams) (GraphChannelPolicy, error)
	GetChannelPolicyExtraTypesBatch(ctx context.Context, policyIds []int64) ([]GetChannelPolicyExtraTypesBatchRow, error)
	GetChannelsByIDs(ctx context.Context, ids []int64) ([]GetChannelsByIDsRow, error)
	GetChannelsByOutpoints(ctx context.Context, outpoints []string) ([]GetChannelsByOutpointsRow, error)
	GetChannelsByPolicyBlockRange(ctx context.Context, arg GetChannelsByPolicyBlockRangeParams) ([]GetChannelsByPolicyBlockRangeRow, error)
	GetChannelsByPolicyLastUpdateRange(ctx context.Context, arg GetChannelsByPolicyLastUpdateRangeParams) ([]GetChannelsByPolicyLastUpdateRangeRow, error)
	GetChannelsBySCIDRange(ctx context.Context, arg GetChannelsBySCIDRangeParams) ([]GetChannelsBySCIDRangeRow, error)
	GetChannelsBySCIDWithPolicies(ctx context.Context, arg GetChannelsBySCIDWithPoliciesParams) ([]GetChannelsBySCIDWithPoliciesRow, error)
	GetChannelsBySCIDs(ctx context.Context, arg GetChannelsBySCIDsParams) ([]GraphChannel, error)
	GetClosedChannelsSCIDs(ctx context.Context, scids [][]byte) ([][]byte, error)
	GetDatabaseVersion(ctx context.Context) (int32, error)
	GetExtraNodeTypes(ctx context.Context, nodeID int64) ([]GraphNodeExtraType, error)
	GetInvoiceByAddr(ctx context.Context, paymentAddr []byte) (Invoice, error)
	GetInvoiceByHash(ctx context.Context, hash []byte) (Invoice, error)
	// TODO(ziggie): This query can only return one invoice if the set_id is
	// the primary key of amp_sub_invoices table.
	GetInvoiceBySetID(ctx context.Context, setID []byte) ([]Invoice, error)
	GetInvoiceFeatures(ctx context.Context, invoiceID int64) ([]InvoiceFeature, error)
	GetInvoiceHTLCCustomRecords(ctx context.Context, invoiceID int64) ([]GetInvoiceHTLCCustomRecordsRow, error)
	GetInvoiceHTLCs(ctx context.Context, invoiceID int64) ([]InvoiceHtlc, error)
	GetKVInvoicePaymentHashByAddIndex(ctx context.Context, addIndex int64) ([]byte, error)
	GetMigration(ctx context.Context, version int32) (time.Time, error)
	GetNodeAddresses(ctx context.Context, nodeID int64) ([]GetNodeAddressesRow, error)
	GetNodeAddressesBatch(ctx context.Context, ids []int64) ([]GraphNodeAddress, error)
	GetNodeByPubKey(ctx context.Context, arg GetNodeByPubKeyParams) (GraphNode, error)
	GetNodeExtraTypesBatch(ctx context.Context, ids []int64) ([]GraphNodeExtraType, error)
	GetNodeFeatures(ctx context.Context, nodeID int64) ([]GraphNodeFeature, error)
	GetNodeFeaturesBatch(ctx context.Context, ids []int64) ([]GraphNodeFeature, error)
	GetNodeFeaturesByPubKey(ctx context.Context, arg GetNodeFeaturesByPubKeyParams) ([]int32, error)
	GetNodeIDByPubKey(ctx context.Context, arg GetNodeIDByPubKeyParams) (int64, error)
	GetNodesByBlockHeightRange(ctx context.Context, arg GetNodesByBlockHeightRangeParams) ([]GraphNode, error)
	GetNodesByIDs(ctx context.Context, ids []int64) ([]GraphNode, error)
	GetNodesByLastUpdateRange(ctx context.Context, arg GetNodesByLastUpdateRangeParams) ([]GraphNode, error)
	GetPruneEntriesForHeights(ctx context.Context, heights []int64) ([]GraphPruneLog, error)
	GetPruneHashByHeight(ctx context.Context, blockHeight int64) ([]byte, error)
	GetPruneTip(ctx context.Context) (GraphPruneLog, error)
	// Returns only public V1 nodes within the given last_update range. A V1 node
	// is public if it has at least one channel with a bitcoin_1_signature set. The
	// public check uses two separate EXISTS probes (one per node_id column)
	// instead of a single OR on node_id_1/node_id_2 so the planner can use the
	// channel node-id indexes directly.
	GetPublicNodesByLastUpdateRange(ctx context.Context, arg GetPublicNodesByLastUpdateRangeParams) ([]GraphNode, error)
	GetPublicV1ChannelsBySCID(ctx context.Context, arg GetPublicV1ChannelsBySCIDParams) ([]GraphChannel, error)
	GetPublicV2ChannelsBySCID(ctx context.Context, arg GetPublicV2ChannelsBySCIDParams) ([]GraphChannel, error)
	GetSCIDByOutpoint(ctx context.Context, arg GetSCIDByOutpointParams) ([]byte, error)
	GetSourceNodesByVersion(ctx context.Context, version int16) ([]GetSourceNodesByVersionRow, error)
	// NOTE: this is V1 specific since for V1, disabled is a
	// simple, single boolean. The proposed V2 policy
	// structure will have a more complex disabled bit vector
	// and so the query for V2 may differ.
	GetV1DisabledSCIDs(ctx context.Context) ([][]byte, error)
	// NOTE: this is V2 specific since V2 uses a disable flag
	// bit vector instead of a single boolean.
	GetV2DisabledSCIDs(ctx context.Context) ([][]byte, error)
	GetZombieChannel(ctx context.Context, arg GetZombieChannelParams) (GraphZombieChannel, error)
	GetZombieChannelsSCIDs(ctx context.Context, arg GetZombieChannelsSCIDsParams) ([]GraphZombieChannel, error)
	HighestSCID(ctx context.Context, version int16) ([]byte, error)
	InsertAMPSubInvoice(ctx context.Context, arg InsertAMPSubInvoiceParams) error
	InsertAMPSubInvoiceHTLC(ctx context.Context, arg InsertAMPSubInvoiceHTLCParams) error
	InsertChainNetwork(ctx context.Context, network string) error
	InsertChannelFeature(ctx context.Context, arg InsertChannelFeatureParams) error
	// NOTE: This query is only meant to be used by the graph SQL migration since
	// for that migration, in order to be retry-safe, we don't want to error out if
	// we re-insert the same channel again (which would error if the normal
	// CreateChannel query is used because of the uniqueness constraint on the scid
	// and version columns).
	InsertChannelMig(ctx context.Context, arg InsertChannelMigParams) (int64, error)
	InsertClosedChannel(ctx context.Context, scid []byte) error
	// NOTE: This query is only meant to be used by the graph SQL migration since
	// for that migration, in order to be retry-safe, we don't want to error out if
	// we re-insert the same policy (which would error if the normal
	// UpsertEdgePolicy query is used because of the constraint in that query that
	// requires a policy update to have a newer last_update than the existing one).
	InsertEdgePolicyMig(ctx context.Context, arg InsertEdgePolicyMigParams) (int64, error)
	InsertHtlcAttempt(ctx context.Context, arg InsertHtlcAttemptParams) (int64, error)
	InsertInvoice(ctx context.Context, arg InsertInvoiceParams) (int64, error)
	InsertInvoiceFeature(ctx context.Context, arg InsertInvoiceFeatureParams) error
	InsertInvoiceHTLC(ctx context.Context, arg InsertInvoiceHTLCParams) (int64, error)
	InsertInvoiceHTLCCustomRecord(ctx context.Context, arg InsertInvoiceHTLCCustomRecordParams) error
	InsertKVInvoiceKeyAndAddIndex(ctx context.Context, arg InsertKVInvoiceKeyAndAddIndexParams) error
	InsertMigratedInvoice(ctx context.Context, arg InsertMigratedInvoiceParams) (int64, error)
	InsertNodeFeature(ctx context.Context, arg InsertNodeFeatureParams) error
	// NOTE: This query is only meant to be used by the graph SQL migration since
	// for that migration, in order to be retry-safe, we don't want to error out if
	// we re-insert the same node (which would error if the normal UpsertNode query
	// is used because of the constraint in that query that requires a node update
	// to have a newer last_update than the existing node).
	InsertNodeMig(ctx context.Context, arg InsertNodeMigParams) (int64, error)
	// Insert a new payment and return its ID.
	// When creating a payment we don't have a fail reason because we start the
	// payment process.
	InsertPayment(ctx context.Context, arg InsertPaymentParams) (int64, error)
	InsertPaymentAttemptFirstHopCustomRecord(ctx context.Context, arg InsertPaymentAttemptFirstHopCustomRecordParams) error
	// Insert a duplicate payment record into the payment_duplicates table and
	// return its ID.
	InsertPaymentDuplicateMig(ctx context.Context, arg InsertPaymentDuplicateMigParams) (int64, error)
	InsertPaymentFirstHopCustomRecord(ctx context.Context, arg InsertPaymentFirstHopCustomRecordParams) error
	InsertPaymentHopCustomRecord(ctx context.Context, arg InsertPaymentHopCustomRecordParams) error
	// Insert a payment intent for a given payment and return its ID.
	InsertPaymentIntent(ctx context.Context, arg InsertPaymentIntentParams) (int64, error)
	// Migration-specific payment insert that allows setting fail_reason.
	// Normal InsertPayment forces fail_reason to NULL since new payments
	// aren't failed yet. During migration, we're inserting historical data
	// that may already be failed.
	InsertPaymentMig(ctx context.Context, arg InsertPaymentMigParams) (int64, error)
	InsertRouteHop(ctx context.Context, arg InsertRouteHopParams) (int64, error)
	InsertRouteHopAmp(ctx context.Context, arg InsertRouteHopAmpParams) error
	InsertRouteHopBlinded(ctx context.Context, arg InsertRouteHopBlindedParams) error
	InsertRouteHopMpp(ctx context.Context, arg InsertRouteHopMppParams) error
	IsClosedChannel(ctx context.Context, scid []byte) (bool, error)
	IsPublicV1Node(ctx context.Context, pubKey []byte) (bool, error)
	IsPublicV2Node(ctx context.Context, pubKey []byte) (bool, error)
	IsZombieChannel(ctx context.Context, arg IsZombieChannelParams) (bool, error)
	ListChannelsByNodeID(ctx context.Context, arg ListChannelsByNodeIDParams) ([]ListChannelsByNodeIDRow, error)
	ListChannelsForNodeIDs(ctx context.Context, arg ListChannelsForNodeIDsParams) ([]ListChannelsForNodeIDsRow, error)
	ListChannelsPaginated(ctx context.Context, arg ListChannelsPaginatedParams) ([]ListChannelsPaginatedRow, error)
	ListChannelsPaginatedV2(ctx context.Context, arg ListChannelsPaginatedV2Params) ([]ListChannelsPaginatedV2Row, error)
	ListChannelsWithPoliciesForCachePaginated(ctx context.Context, arg ListChannelsWithPoliciesForCachePaginatedParams) ([]ListChannelsWithPoliciesForCachePaginatedRow, error)
	ListChannelsWithPoliciesPaginated(ctx context.Context, arg ListChannelsWithPoliciesPaginatedParams) ([]ListChannelsWithPoliciesPaginatedRow, error)
	ListNodeIDsAndPubKeys(ctx context.Context, arg ListNodeIDsAndPubKeysParams) ([]ListNodeIDsAndPubKeysRow, error)
	ListNodesPaginated(ctx context.Context, arg ListNodesPaginatedParams) ([]GraphNode, error)
	NextInvoiceSettleIndex(ctx context.Context) (int64, error)
	NodeExists(ctx context.Context, arg NodeExistsParams) (bool, error)
	OnAMPSubInvoiceCanceled(ctx context.Context, arg OnAMPSubInvoiceCanceledParams) error
	OnAMPSubInvoiceCreated(ctx context.Context, arg OnAMPSubInvoiceCreatedParams) error
	OnAMPSubInvoiceSettled(ctx context.Context, arg OnAMPSubInvoiceSettledParams) error
	OnInvoiceCanceled(ctx context.Context, arg OnInvoiceCanceledParams) error
	OnInvoiceCreated(ctx context.Context, arg OnInvoiceCreatedParams) error
	OnInvoiceSettled(ctx context.Context, arg OnInvoiceSettledParams) error
	SetKVInvoicePaymentHash(ctx context.Context, arg SetKVInvoicePaymentHashParams) error
	SetMigration(ctx context.Context, arg SetMigrationParams) error
	SettleAttempt(ctx context.Context, arg SettleAttemptParams) error
	UpdateAMPSubInvoiceHTLCPreimage(ctx context.Context, arg UpdateAMPSubInvoiceHTLCPreimageParams) (sql.Result, error)
	UpdateAMPSubInvoiceState(ctx context.Context, arg UpdateAMPSubInvoiceStateParams) error
	UpdateInvoiceAmountPaid(ctx context.Context, arg UpdateInvoiceAmountPaidParams) (sql.Result, error)
	UpdateInvoiceHTLC(ctx context.Context, arg UpdateInvoiceHTLCParams) error
	UpdateInvoiceHTLCs(ctx context.Context, arg UpdateInvoiceHTLCsParams) error
	UpdateInvoiceState(ctx context.Context, arg UpdateInvoiceStateParams) (sql.Result, error)
	UpsertAMPSubInvoice(ctx context.Context, arg UpsertAMPSubInvoiceParams) (sql.Result, error)
	UpsertChanPolicyExtraType(ctx context.Context, arg UpsertChanPolicyExtraTypeParams) error
	UpsertChannelExtraType(ctx context.Context, arg UpsertChannelExtraTypeParams) error
	UpsertEdgePolicy(ctx context.Context, arg UpsertEdgePolicyParams) (int64, error)
	UpsertNode(ctx context.Context, arg UpsertNodeParams) (int64, error)
	UpsertNodeAddress(ctx context.Context, arg UpsertNodeAddressParams) error
	UpsertNodeExtraType(ctx context.Context, arg UpsertNodeExtraTypeParams) error
	UpsertPruneLogEntry(ctx context.Context, arg UpsertPruneLogEntryParams) error
	// We use a separate upsert for our own node since we want to be less strict
	// about the last_update field. For our own node, we always want to
	// update the record even if the last_update is the same as what we have.
	UpsertSourceNode(ctx context.Context, arg UpsertSourceNodeParams) (int64, error)
	UpsertZombieChannel(ctx context.Context, arg UpsertZombieChannelParams) error
}

var _ Querier = (*Queries)(nil)
