// Code generated by ent, DO NOT EDIT.

package tokenmint

import (
	"time"

	"entgo.io/ent/dialect/sql"
	"entgo.io/ent/dialect/sql/sqlgraph"
	"github.com/google/uuid"
	"github.com/lightsparkdev/spark/common/keys"
	"github.com/lightsparkdev/spark/so/ent/predicate"
)

// ID filters vertices based on their ID field.
func ID(id uuid.UUID) predicate.TokenMint {
	return predicate.TokenMint(sql.FieldEQ(FieldID, id))
}

// IDEQ applies the EQ predicate on the ID field.
func IDEQ(id uuid.UUID) predicate.TokenMint {
	return predicate.TokenMint(sql.FieldEQ(FieldID, id))
}

// IDNEQ applies the NEQ predicate on the ID field.
func IDNEQ(id uuid.UUID) predicate.TokenMint {
	return predicate.TokenMint(sql.FieldNEQ(FieldID, id))
}

// IDIn applies the In predicate on the ID field.
func IDIn(ids ...uuid.UUID) predicate.TokenMint {
	return predicate.TokenMint(sql.FieldIn(FieldID, ids...))
}

// IDNotIn applies the NotIn predicate on the ID field.
func IDNotIn(ids ...uuid.UUID) predicate.TokenMint {
	return predicate.TokenMint(sql.FieldNotIn(FieldID, ids...))
}

// IDGT applies the GT predicate on the ID field.
func IDGT(id uuid.UUID) predicate.TokenMint {
	return predicate.TokenMint(sql.FieldGT(FieldID, id))
}

// IDGTE applies the GTE predicate on the ID field.
func IDGTE(id uuid.UUID) predicate.TokenMint {
	return predicate.TokenMint(sql.FieldGTE(FieldID, id))
}

// IDLT applies the LT predicate on the ID field.
func IDLT(id uuid.UUID) predicate.TokenMint {
	return predicate.TokenMint(sql.FieldLT(FieldID, id))
}

// IDLTE applies the LTE predicate on the ID field.
func IDLTE(id uuid.UUID) predicate.TokenMint {
	return predicate.TokenMint(sql.FieldLTE(FieldID, id))
}

// CreateTime applies equality check predicate on the "create_time" field. It's identical to CreateTimeEQ.
func CreateTime(v time.Time) predicate.TokenMint {
	return predicate.TokenMint(sql.FieldEQ(FieldCreateTime, v))
}

// UpdateTime applies equality check predicate on the "update_time" field. It's identical to UpdateTimeEQ.
func UpdateTime(v time.Time) predicate.TokenMint {
	return predicate.TokenMint(sql.FieldEQ(FieldUpdateTime, v))
}

// IssuerPublicKey applies equality check predicate on the "issuer_public_key" field. It's identical to IssuerPublicKeyEQ.
func IssuerPublicKey(v keys.Public) predicate.TokenMint {
	return predicate.TokenMint(sql.FieldEQ(FieldIssuerPublicKey, v))
}

// WalletProvidedTimestamp applies equality check predicate on the "wallet_provided_timestamp" field. It's identical to WalletProvidedTimestampEQ.
func WalletProvidedTimestamp(v uint64) predicate.TokenMint {
	return predicate.TokenMint(sql.FieldEQ(FieldWalletProvidedTimestamp, v))
}

// IssuerSignature applies equality check predicate on the "issuer_signature" field. It's identical to IssuerSignatureEQ.
func IssuerSignature(v []byte) predicate.TokenMint {
	return predicate.TokenMint(sql.FieldEQ(FieldIssuerSignature, v))
}

// OperatorSpecificIssuerSignature applies equality check predicate on the "operator_specific_issuer_signature" field. It's identical to OperatorSpecificIssuerSignatureEQ.
func OperatorSpecificIssuerSignature(v []byte) predicate.TokenMint {
	return predicate.TokenMint(sql.FieldEQ(FieldOperatorSpecificIssuerSignature, v))
}

// TokenIdentifier applies equality check predicate on the "token_identifier" field. It's identical to TokenIdentifierEQ.
func TokenIdentifier(v []byte) predicate.TokenMint {
	return predicate.TokenMint(sql.FieldEQ(FieldTokenIdentifier, v))
}

// CreateTimeEQ applies the EQ predicate on the "create_time" field.
func CreateTimeEQ(v time.Time) predicate.TokenMint {
	return predicate.TokenMint(sql.FieldEQ(FieldCreateTime, v))
}

// CreateTimeNEQ applies the NEQ predicate on the "create_time" field.
func CreateTimeNEQ(v time.Time) predicate.TokenMint {
	return predicate.TokenMint(sql.FieldNEQ(FieldCreateTime, v))
}

// CreateTimeIn applies the In predicate on the "create_time" field.
func CreateTimeIn(vs ...time.Time) predicate.TokenMint {
	return predicate.TokenMint(sql.FieldIn(FieldCreateTime, vs...))
}

// CreateTimeNotIn applies the NotIn predicate on the "create_time" field.
func CreateTimeNotIn(vs ...time.Time) predicate.TokenMint {
	return predicate.TokenMint(sql.FieldNotIn(FieldCreateTime, vs...))
}

// CreateTimeGT applies the GT predicate on the "create_time" field.
func CreateTimeGT(v time.Time) predicate.TokenMint {
	return predicate.TokenMint(sql.FieldGT(FieldCreateTime, v))
}

// CreateTimeGTE applies the GTE predicate on the "create_time" field.
func CreateTimeGTE(v time.Time) predicate.TokenMint {
	return predicate.TokenMint(sql.FieldGTE(FieldCreateTime, v))
}

// CreateTimeLT applies the LT predicate on the "create_time" field.
func CreateTimeLT(v time.Time) predicate.TokenMint {
	return predicate.TokenMint(sql.FieldLT(FieldCreateTime, v))
}

// CreateTimeLTE applies the LTE predicate on the "create_time" field.
func CreateTimeLTE(v time.Time) predicate.TokenMint {
	return predicate.TokenMint(sql.FieldLTE(FieldCreateTime, v))
}

// UpdateTimeEQ applies the EQ predicate on the "update_time" field.
func UpdateTimeEQ(v time.Time) predicate.TokenMint {
	return predicate.TokenMint(sql.FieldEQ(FieldUpdateTime, v))
}

// UpdateTimeNEQ applies the NEQ predicate on the "update_time" field.
func UpdateTimeNEQ(v time.Time) predicate.TokenMint {
	return predicate.TokenMint(sql.FieldNEQ(FieldUpdateTime, v))
}

// UpdateTimeIn applies the In predicate on the "update_time" field.
func UpdateTimeIn(vs ...time.Time) predicate.TokenMint {
	return predicate.TokenMint(sql.FieldIn(FieldUpdateTime, vs...))
}

// UpdateTimeNotIn applies the NotIn predicate on the "update_time" field.
func UpdateTimeNotIn(vs ...time.Time) predicate.TokenMint {
	return predicate.TokenMint(sql.FieldNotIn(FieldUpdateTime, vs...))
}

// UpdateTimeGT applies the GT predicate on the "update_time" field.
func UpdateTimeGT(v time.Time) predicate.TokenMint {
	return predicate.TokenMint(sql.FieldGT(FieldUpdateTime, v))
}

// UpdateTimeGTE applies the GTE predicate on the "update_time" field.
func UpdateTimeGTE(v time.Time) predicate.TokenMint {
	return predicate.TokenMint(sql.FieldGTE(FieldUpdateTime, v))
}

// UpdateTimeLT applies the LT predicate on the "update_time" field.
func UpdateTimeLT(v time.Time) predicate.TokenMint {
	return predicate.TokenMint(sql.FieldLT(FieldUpdateTime, v))
}

// UpdateTimeLTE applies the LTE predicate on the "update_time" field.
func UpdateTimeLTE(v time.Time) predicate.TokenMint {
	return predicate.TokenMint(sql.FieldLTE(FieldUpdateTime, v))
}

// IssuerPublicKeyEQ applies the EQ predicate on the "issuer_public_key" field.
func IssuerPublicKeyEQ(v keys.Public) predicate.TokenMint {
	return predicate.TokenMint(sql.FieldEQ(FieldIssuerPublicKey, v))
}

// IssuerPublicKeyNEQ applies the NEQ predicate on the "issuer_public_key" field.
func IssuerPublicKeyNEQ(v keys.Public) predicate.TokenMint {
	return predicate.TokenMint(sql.FieldNEQ(FieldIssuerPublicKey, v))
}

// IssuerPublicKeyIn applies the In predicate on the "issuer_public_key" field.
func IssuerPublicKeyIn(vs ...keys.Public) predicate.TokenMint {
	return predicate.TokenMint(sql.FieldIn(FieldIssuerPublicKey, vs...))
}

// IssuerPublicKeyNotIn applies the NotIn predicate on the "issuer_public_key" field.
func IssuerPublicKeyNotIn(vs ...keys.Public) predicate.TokenMint {
	return predicate.TokenMint(sql.FieldNotIn(FieldIssuerPublicKey, vs...))
}

// IssuerPublicKeyGT applies the GT predicate on the "issuer_public_key" field.
func IssuerPublicKeyGT(v keys.Public) predicate.TokenMint {
	return predicate.TokenMint(sql.FieldGT(FieldIssuerPublicKey, v))
}

// IssuerPublicKeyGTE applies the GTE predicate on the "issuer_public_key" field.
func IssuerPublicKeyGTE(v keys.Public) predicate.TokenMint {
	return predicate.TokenMint(sql.FieldGTE(FieldIssuerPublicKey, v))
}

// IssuerPublicKeyLT applies the LT predicate on the "issuer_public_key" field.
func IssuerPublicKeyLT(v keys.Public) predicate.TokenMint {
	return predicate.TokenMint(sql.FieldLT(FieldIssuerPublicKey, v))
}

// IssuerPublicKeyLTE applies the LTE predicate on the "issuer_public_key" field.
func IssuerPublicKeyLTE(v keys.Public) predicate.TokenMint {
	return predicate.TokenMint(sql.FieldLTE(FieldIssuerPublicKey, v))
}

// WalletProvidedTimestampEQ applies the EQ predicate on the "wallet_provided_timestamp" field.
func WalletProvidedTimestampEQ(v uint64) predicate.TokenMint {
	return predicate.TokenMint(sql.FieldEQ(FieldWalletProvidedTimestamp, v))
}

// WalletProvidedTimestampNEQ applies the NEQ predicate on the "wallet_provided_timestamp" field.
func WalletProvidedTimestampNEQ(v uint64) predicate.TokenMint {
	return predicate.TokenMint(sql.FieldNEQ(FieldWalletProvidedTimestamp, v))
}

// WalletProvidedTimestampIn applies the In predicate on the "wallet_provided_timestamp" field.
func WalletProvidedTimestampIn(vs ...uint64) predicate.TokenMint {
	return predicate.TokenMint(sql.FieldIn(FieldWalletProvidedTimestamp, vs...))
}

// WalletProvidedTimestampNotIn applies the NotIn predicate on the "wallet_provided_timestamp" field.
func WalletProvidedTimestampNotIn(vs ...uint64) predicate.TokenMint {
	return predicate.TokenMint(sql.FieldNotIn(FieldWalletProvidedTimestamp, vs...))
}

// WalletProvidedTimestampGT applies the GT predicate on the "wallet_provided_timestamp" field.
func WalletProvidedTimestampGT(v uint64) predicate.TokenMint {
	return predicate.TokenMint(sql.FieldGT(FieldWalletProvidedTimestamp, v))
}

// WalletProvidedTimestampGTE applies the GTE predicate on the "wallet_provided_timestamp" field.
func WalletProvidedTimestampGTE(v uint64) predicate.TokenMint {
	return predicate.TokenMint(sql.FieldGTE(FieldWalletProvidedTimestamp, v))
}

// WalletProvidedTimestampLT applies the LT predicate on the "wallet_provided_timestamp" field.
func WalletProvidedTimestampLT(v uint64) predicate.TokenMint {
	return predicate.TokenMint(sql.FieldLT(FieldWalletProvidedTimestamp, v))
}

// WalletProvidedTimestampLTE applies the LTE predicate on the "wallet_provided_timestamp" field.
func WalletProvidedTimestampLTE(v uint64) predicate.TokenMint {
	return predicate.TokenMint(sql.FieldLTE(FieldWalletProvidedTimestamp, v))
}

// IssuerSignatureEQ applies the EQ predicate on the "issuer_signature" field.
func IssuerSignatureEQ(v []byte) predicate.TokenMint {
	return predicate.TokenMint(sql.FieldEQ(FieldIssuerSignature, v))
}

// IssuerSignatureNEQ applies the NEQ predicate on the "issuer_signature" field.
func IssuerSignatureNEQ(v []byte) predicate.TokenMint {
	return predicate.TokenMint(sql.FieldNEQ(FieldIssuerSignature, v))
}

// IssuerSignatureIn applies the In predicate on the "issuer_signature" field.
func IssuerSignatureIn(vs ...[]byte) predicate.TokenMint {
	return predicate.TokenMint(sql.FieldIn(FieldIssuerSignature, vs...))
}

// IssuerSignatureNotIn applies the NotIn predicate on the "issuer_signature" field.
func IssuerSignatureNotIn(vs ...[]byte) predicate.TokenMint {
	return predicate.TokenMint(sql.FieldNotIn(FieldIssuerSignature, vs...))
}

// IssuerSignatureGT applies the GT predicate on the "issuer_signature" field.
func IssuerSignatureGT(v []byte) predicate.TokenMint {
	return predicate.TokenMint(sql.FieldGT(FieldIssuerSignature, v))
}

// IssuerSignatureGTE applies the GTE predicate on the "issuer_signature" field.
func IssuerSignatureGTE(v []byte) predicate.TokenMint {
	return predicate.TokenMint(sql.FieldGTE(FieldIssuerSignature, v))
}

// IssuerSignatureLT applies the LT predicate on the "issuer_signature" field.
func IssuerSignatureLT(v []byte) predicate.TokenMint {
	return predicate.TokenMint(sql.FieldLT(FieldIssuerSignature, v))
}

// IssuerSignatureLTE applies the LTE predicate on the "issuer_signature" field.
func IssuerSignatureLTE(v []byte) predicate.TokenMint {
	return predicate.TokenMint(sql.FieldLTE(FieldIssuerSignature, v))
}

// OperatorSpecificIssuerSignatureEQ applies the EQ predicate on the "operator_specific_issuer_signature" field.
func OperatorSpecificIssuerSignatureEQ(v []byte) predicate.TokenMint {
	return predicate.TokenMint(sql.FieldEQ(FieldOperatorSpecificIssuerSignature, v))
}

// OperatorSpecificIssuerSignatureNEQ applies the NEQ predicate on the "operator_specific_issuer_signature" field.
func OperatorSpecificIssuerSignatureNEQ(v []byte) predicate.TokenMint {
	return predicate.TokenMint(sql.FieldNEQ(FieldOperatorSpecificIssuerSignature, v))
}

// OperatorSpecificIssuerSignatureIn applies the In predicate on the "operator_specific_issuer_signature" field.
func OperatorSpecificIssuerSignatureIn(vs ...[]byte) predicate.TokenMint {
	return predicate.TokenMint(sql.FieldIn(FieldOperatorSpecificIssuerSignature, vs...))
}

// OperatorSpecificIssuerSignatureNotIn applies the NotIn predicate on the "operator_specific_issuer_signature" field.
func OperatorSpecificIssuerSignatureNotIn(vs ...[]byte) predicate.TokenMint {
	return predicate.TokenMint(sql.FieldNotIn(FieldOperatorSpecificIssuerSignature, vs...))
}

// OperatorSpecificIssuerSignatureGT applies the GT predicate on the "operator_specific_issuer_signature" field.
func OperatorSpecificIssuerSignatureGT(v []byte) predicate.TokenMint {
	return predicate.TokenMint(sql.FieldGT(FieldOperatorSpecificIssuerSignature, v))
}

// OperatorSpecificIssuerSignatureGTE applies the GTE predicate on the "operator_specific_issuer_signature" field.
func OperatorSpecificIssuerSignatureGTE(v []byte) predicate.TokenMint {
	return predicate.TokenMint(sql.FieldGTE(FieldOperatorSpecificIssuerSignature, v))
}

// OperatorSpecificIssuerSignatureLT applies the LT predicate on the "operator_specific_issuer_signature" field.
func OperatorSpecificIssuerSignatureLT(v []byte) predicate.TokenMint {
	return predicate.TokenMint(sql.FieldLT(FieldOperatorSpecificIssuerSignature, v))
}

// OperatorSpecificIssuerSignatureLTE applies the LTE predicate on the "operator_specific_issuer_signature" field.
func OperatorSpecificIssuerSignatureLTE(v []byte) predicate.TokenMint {
	return predicate.TokenMint(sql.FieldLTE(FieldOperatorSpecificIssuerSignature, v))
}

// OperatorSpecificIssuerSignatureIsNil applies the IsNil predicate on the "operator_specific_issuer_signature" field.
func OperatorSpecificIssuerSignatureIsNil() predicate.TokenMint {
	return predicate.TokenMint(sql.FieldIsNull(FieldOperatorSpecificIssuerSignature))
}

// OperatorSpecificIssuerSignatureNotNil applies the NotNil predicate on the "operator_specific_issuer_signature" field.
func OperatorSpecificIssuerSignatureNotNil() predicate.TokenMint {
	return predicate.TokenMint(sql.FieldNotNull(FieldOperatorSpecificIssuerSignature))
}

// TokenIdentifierEQ applies the EQ predicate on the "token_identifier" field.
func TokenIdentifierEQ(v []byte) predicate.TokenMint {
	return predicate.TokenMint(sql.FieldEQ(FieldTokenIdentifier, v))
}

// TokenIdentifierNEQ applies the NEQ predicate on the "token_identifier" field.
func TokenIdentifierNEQ(v []byte) predicate.TokenMint {
	return predicate.TokenMint(sql.FieldNEQ(FieldTokenIdentifier, v))
}

// TokenIdentifierIn applies the In predicate on the "token_identifier" field.
func TokenIdentifierIn(vs ...[]byte) predicate.TokenMint {
	return predicate.TokenMint(sql.FieldIn(FieldTokenIdentifier, vs...))
}

// TokenIdentifierNotIn applies the NotIn predicate on the "token_identifier" field.
func TokenIdentifierNotIn(vs ...[]byte) predicate.TokenMint {
	return predicate.TokenMint(sql.FieldNotIn(FieldTokenIdentifier, vs...))
}

// TokenIdentifierGT applies the GT predicate on the "token_identifier" field.
func TokenIdentifierGT(v []byte) predicate.TokenMint {
	return predicate.TokenMint(sql.FieldGT(FieldTokenIdentifier, v))
}

// TokenIdentifierGTE applies the GTE predicate on the "token_identifier" field.
func TokenIdentifierGTE(v []byte) predicate.TokenMint {
	return predicate.TokenMint(sql.FieldGTE(FieldTokenIdentifier, v))
}

// TokenIdentifierLT applies the LT predicate on the "token_identifier" field.
func TokenIdentifierLT(v []byte) predicate.TokenMint {
	return predicate.TokenMint(sql.FieldLT(FieldTokenIdentifier, v))
}

// TokenIdentifierLTE applies the LTE predicate on the "token_identifier" field.
func TokenIdentifierLTE(v []byte) predicate.TokenMint {
	return predicate.TokenMint(sql.FieldLTE(FieldTokenIdentifier, v))
}

// TokenIdentifierIsNil applies the IsNil predicate on the "token_identifier" field.
func TokenIdentifierIsNil() predicate.TokenMint {
	return predicate.TokenMint(sql.FieldIsNull(FieldTokenIdentifier))
}

// TokenIdentifierNotNil applies the NotNil predicate on the "token_identifier" field.
func TokenIdentifierNotNil() predicate.TokenMint {
	return predicate.TokenMint(sql.FieldNotNull(FieldTokenIdentifier))
}

// HasTokenTransaction applies the HasEdge predicate on the "token_transaction" edge.
func HasTokenTransaction() predicate.TokenMint {
	return predicate.TokenMint(func(s *sql.Selector) {
		step := sqlgraph.NewStep(
			sqlgraph.From(Table, FieldID),
			sqlgraph.Edge(sqlgraph.O2M, true, TokenTransactionTable, TokenTransactionColumn),
		)
		sqlgraph.HasNeighbors(s, step)
	})
}

// HasTokenTransactionWith applies the HasEdge predicate on the "token_transaction" edge with a given conditions (other predicates).
func HasTokenTransactionWith(preds ...predicate.TokenTransaction) predicate.TokenMint {
	return predicate.TokenMint(func(s *sql.Selector) {
		step := newTokenTransactionStep()
		sqlgraph.HasNeighborsWith(s, step, func(s *sql.Selector) {
			for _, p := range preds {
				p(s)
			}
		})
	})
}

// And groups predicates with the AND operator between them.
func And(predicates ...predicate.TokenMint) predicate.TokenMint {
	return predicate.TokenMint(sql.AndPredicates(predicates...))
}

// Or groups predicates with the OR operator between them.
func Or(predicates ...predicate.TokenMint) predicate.TokenMint {
	return predicate.TokenMint(sql.OrPredicates(predicates...))
}

// Not applies the not operator on the given predicate.
func Not(p predicate.TokenMint) predicate.TokenMint {
	return predicate.TokenMint(sql.NotPredicates(p))
}
