// Code generated by depstubber. DO NOT EDIT.
// This is a simple stub for github.com/go-pg/pg, strictly for use in testing.

// See the LICENSE file for information about the licensing of the original library.
// Source: github.com/go-pg/pg (exports: Conn,DB,Tx; functions: Q)

// Package pg is a stub of github.com/go-pg/pg, generated by depstubber.
package pg

import (
	context "context"
	tls "crypto/tls"
	io "io"
	net "net"
	time "time"
)

type Conn struct{}

func (_ Conn) AddQueryHook(_ QueryHook) {}

func (_ Conn) Begin() (*Tx, error) {
	return nil, nil
}

func (_ Conn) Close() error {
	return nil
}

func (_ Conn) CopyFrom(_ io.Reader, _ interface{}, _ ...interface{}) (interface{}, error) {
	return nil, nil
}

func (_ Conn) CopyTo(_ io.Writer, _ interface{}, _ ...interface{}) (interface{}, error) {
	return nil, nil
}

func (_ Conn) CreateComposite(_ interface{}, _ interface{}) error {
	return nil
}

func (_ Conn) CreateTable(_ interface{}, _ interface{}) error {
	return nil
}

func (_ Conn) Delete(_ interface{}) error {
	return nil
}

func (_ Conn) DropComposite(_ interface{}, _ interface{}) error {
	return nil
}

func (_ Conn) DropTable(_ interface{}, _ interface{}) error {
	return nil
}

func (_ Conn) Exec(_ interface{}, _ ...interface{}) (interface{}, error) {
	return nil, nil
}

func (_ Conn) ExecContext(_ context.Context, _ interface{}, _ ...interface{}) (interface{}, error) {
	return nil, nil
}

func (_ Conn) ExecOne(_ interface{}, _ ...interface{}) (interface{}, error) {
	return nil, nil
}

func (_ Conn) ExecOneContext(_ context.Context, _ interface{}, _ ...interface{}) (interface{}, error) {
	return nil, nil
}

func (_ Conn) ForceDelete(_ interface{}) error {
	return nil
}

func (_ Conn) FormatQuery(_ []byte, _ string, _ ...interface{}) []byte {
	return nil
}

func (_ Conn) Insert(_ ...interface{}) error {
	return nil
}

func (_ Conn) Model(_ ...interface{}) interface{} {
	return nil
}

func (_ Conn) ModelContext(_ context.Context, _ ...interface{}) interface{} {
	return nil
}

func (_ Conn) Param(_ string) interface{} {
	return nil
}

func (_ Conn) PoolStats() *PoolStats {
	return nil
}

func (_ Conn) Prepare(_ string) (*Stmt, error) {
	return nil, nil
}

func (_ Conn) Query(_ interface{}, _ interface{}, _ ...interface{}) (interface{}, error) {
	return nil, nil
}

func (_ Conn) QueryContext(_ context.Context, _ interface{}, _ interface{}, _ ...interface{}) (interface{}, error) {
	return nil, nil
}

func (_ Conn) QueryOne(_ interface{}, _ interface{}, _ ...interface{}) (interface{}, error) {
	return nil, nil
}

func (_ Conn) QueryOneContext(_ context.Context, _ interface{}, _ interface{}, _ ...interface{}) (interface{}, error) {
	return nil, nil
}

func (_ Conn) RunInTransaction(_ func(*Tx) error) error {
	return nil
}

func (_ Conn) Select(_ interface{}) error {
	return nil
}

func (_ Conn) Update(_ interface{}) error {
	return nil
}

func (_ *Conn) Context() context.Context {
	return nil
}

func (_ *Conn) WithContext(_ context.Context) *Conn {
	return nil
}

func (_ *Conn) WithParam(_ string, _ interface{}) *Conn {
	return nil
}

func (_ *Conn) WithTimeout(_ time.Duration) *Conn {
	return nil
}

type DB struct{}

func (_ DB) AddQueryHook(_ QueryHook) {}

func (_ DB) Begin() (*Tx, error) {
	return nil, nil
}

func (_ DB) Close() error {
	return nil
}

func (_ DB) CopyFrom(_ io.Reader, _ interface{}, _ ...interface{}) (interface{}, error) {
	return nil, nil
}

func (_ DB) CopyTo(_ io.Writer, _ interface{}, _ ...interface{}) (interface{}, error) {
	return nil, nil
}

func (_ DB) CreateComposite(_ interface{}, _ interface{}) error {
	return nil
}

func (_ DB) CreateTable(_ interface{}, _ interface{}) error {
	return nil
}

func (_ DB) Delete(_ interface{}) error {
	return nil
}

func (_ DB) DropComposite(_ interface{}, _ interface{}) error {
	return nil
}

func (_ DB) DropTable(_ interface{}, _ interface{}) error {
	return nil
}

func (_ DB) Exec(_ interface{}, _ ...interface{}) (interface{}, error) {
	return nil, nil
}

func (_ DB) ExecContext(_ context.Context, _ interface{}, _ ...interface{}) (interface{}, error) {
	return nil, nil
}

func (_ DB) ExecOne(_ interface{}, _ ...interface{}) (interface{}, error) {
	return nil, nil
}

func (_ DB) ExecOneContext(_ context.Context, _ interface{}, _ ...interface{}) (interface{}, error) {
	return nil, nil
}

func (_ DB) ForceDelete(_ interface{}) error {
	return nil
}

func (_ DB) FormatQuery(_ []byte, _ string, _ ...interface{}) []byte {
	return nil
}

func (_ DB) Insert(_ ...interface{}) error {
	return nil
}

func (_ DB) Model(_ ...interface{}) interface{} {
	return nil
}

func (_ DB) ModelContext(_ context.Context, _ ...interface{}) interface{} {
	return nil
}

func (_ DB) Param(_ string) interface{} {
	return nil
}

func (_ DB) PoolStats() *PoolStats {
	return nil
}

func (_ DB) Prepare(_ string) (*Stmt, error) {
	return nil, nil
}

func (_ DB) Query(_ interface{}, _ interface{}, _ ...interface{}) (interface{}, error) {
	return nil, nil
}

func (_ DB) QueryContext(_ context.Context, _ interface{}, _ interface{}, _ ...interface{}) (interface{}, error) {
	return nil, nil
}

func (_ DB) QueryOne(_ interface{}, _ interface{}, _ ...interface{}) (interface{}, error) {
	return nil, nil
}

func (_ DB) QueryOneContext(_ context.Context, _ interface{}, _ interface{}, _ ...interface{}) (interface{}, error) {
	return nil, nil
}

func (_ DB) RunInTransaction(_ func(*Tx) error) error {
	return nil
}

func (_ DB) Select(_ interface{}) error {
	return nil
}

func (_ DB) Update(_ interface{}) error {
	return nil
}

func (_ *DB) Conn() *Conn {
	return nil
}

func (_ *DB) Context() context.Context {
	return nil
}

func (_ *DB) Listen(_ ...string) *Listener {
	return nil
}

func (_ *DB) Options() *Options {
	return nil
}

func (_ *DB) String() string {
	return ""
}

func (_ *DB) WithContext(_ context.Context) *DB {
	return nil
}

func (_ *DB) WithParam(_ string, _ interface{}) *DB {
	return nil
}

func (_ *DB) WithTimeout(_ time.Duration) *DB {
	return nil
}

type Listener struct{}

func (_ *Listener) Channel() <-chan *Notification {
	return nil
}

func (_ *Listener) ChannelSize(_ int) <-chan *Notification {
	return nil
}

func (_ *Listener) Close() error {
	return nil
}

func (_ *Listener) Listen(_ ...string) error {
	return nil
}

func (_ *Listener) Receive() (string, string, error) {
	return "", "", nil
}

func (_ *Listener) ReceiveTimeout(_ time.Duration) (string, string, error) {
	return "", "", nil
}

func (_ *Listener) String() string {
	return ""
}

type Notification struct {
	Channel string
	Payload string
}

type Options struct {
	Network               string
	Addr                  string
	Dialer                func(string, string) (net.Conn, error)
	OnConnect             func(*Conn) error
	User                  string
	Password              string
	Database              string
	ApplicationName       string
	TLSConfig             *tls.Config
	MaxRetries            int
	RetryStatementTimeout bool
	MinRetryBackoff       time.Duration
	MaxRetryBackoff       time.Duration
	DialTimeout           time.Duration
	ReadTimeout           time.Duration
	WriteTimeout          time.Duration
	PoolSize              int
	MinIdleConns          int
	MaxConnAge            time.Duration
	PoolTimeout           time.Duration
	IdleTimeout           time.Duration
	IdleCheckFrequency    time.Duration
}

type PoolStats struct {
	Hits       uint32
	Misses     uint32
	Timeouts   uint32
	TotalConns uint32
	IdleConns  uint32
	StaleConns uint32
}

func Q(_ string, _ ...interface{}) interface{} {
	return nil
}

type QueryEvent struct {
	Ctx     context.Context
	DB      interface{}
	Query   interface{}
	Params  []interface{}
	Attempt int
	Result  interface{}
	Error   error
	Data    map[interface{}]interface{}
}

func (_ *QueryEvent) FormattedQuery() (string, error) {
	return "", nil
}

func (_ *QueryEvent) UnformattedQuery() (string, error) {
	return "", nil
}

type QueryHook interface {
	AfterQuery(_ *QueryEvent)
	BeforeQuery(_ *QueryEvent)
}

type Stmt struct{}

func (_ *Stmt) Close() error {
	return nil
}

func (_ *Stmt) Exec(_ ...interface{}) (interface{}, error) {
	return nil, nil
}

func (_ *Stmt) ExecContext(_ context.Context, _ ...interface{}) (interface{}, error) {
	return nil, nil
}

func (_ *Stmt) ExecOne(_ ...interface{}) (interface{}, error) {
	return nil, nil
}

func (_ *Stmt) ExecOneContext(_ context.Context, _ ...interface{}) (interface{}, error) {
	return nil, nil
}

func (_ *Stmt) Query(_ interface{}, _ ...interface{}) (interface{}, error) {
	return nil, nil
}

func (_ *Stmt) QueryContext(_ context.Context, _ interface{}, _ ...interface{}) (interface{}, error) {
	return nil, nil
}

func (_ *Stmt) QueryOne(_ interface{}, _ ...interface{}) (interface{}, error) {
	return nil, nil
}

func (_ *Stmt) QueryOneContext(_ context.Context, _ interface{}, _ ...interface{}) (interface{}, error) {
	return nil, nil
}

type Tx struct{}

func (_ *Tx) Begin() (*Tx, error) {
	return nil, nil
}

func (_ *Tx) Commit() error {
	return nil
}

func (_ *Tx) Context() context.Context {
	return nil
}

func (_ *Tx) CopyFrom(_ io.Reader, _ interface{}, _ ...interface{}) (interface{}, error) {
	return nil, nil
}

func (_ *Tx) CopyTo(_ io.Writer, _ interface{}, _ ...interface{}) (interface{}, error) {
	return nil, nil
}

func (_ *Tx) CreateTable(_ interface{}, _ interface{}) error {
	return nil
}

func (_ *Tx) Delete(_ interface{}) error {
	return nil
}

func (_ *Tx) DropTable(_ interface{}, _ interface{}) error {
	return nil
}

func (_ *Tx) Exec(_ interface{}, _ ...interface{}) (interface{}, error) {
	return nil, nil
}

func (_ *Tx) ExecContext(_ context.Context, _ interface{}, _ ...interface{}) (interface{}, error) {
	return nil, nil
}

func (_ *Tx) ExecOne(_ interface{}, _ ...interface{}) (interface{}, error) {
	return nil, nil
}

func (_ *Tx) ExecOneContext(_ context.Context, _ interface{}, _ ...interface{}) (interface{}, error) {
	return nil, nil
}

func (_ *Tx) ForceDelete(_ interface{}) error {
	return nil
}

func (_ *Tx) FormatQuery(_ []byte, _ string, _ ...interface{}) []byte {
	return nil
}

func (_ *Tx) Insert(_ ...interface{}) error {
	return nil
}

func (_ *Tx) Model(_ ...interface{}) interface{} {
	return nil
}

func (_ *Tx) ModelContext(_ context.Context, _ ...interface{}) interface{} {
	return nil
}

func (_ *Tx) Prepare(_ string) (*Stmt, error) {
	return nil, nil
}

func (_ *Tx) Query(_ interface{}, _ interface{}, _ ...interface{}) (interface{}, error) {
	return nil, nil
}

func (_ *Tx) QueryContext(_ context.Context, _ interface{}, _ interface{}, _ ...interface{}) (interface{}, error) {
	return nil, nil
}

func (_ *Tx) QueryOne(_ interface{}, _ interface{}, _ ...interface{}) (interface{}, error) {
	return nil, nil
}

func (_ *Tx) QueryOneContext(_ context.Context, _ interface{}, _ interface{}, _ ...interface{}) (interface{}, error) {
	return nil, nil
}

func (_ *Tx) Rollback() error {
	return nil
}

func (_ *Tx) RunInTransaction(_ func(*Tx) error) error {
	return nil
}

func (_ *Tx) Select(_ interface{}) error {
	return nil
}

func (_ *Tx) Stmt(_ *Stmt) *Stmt {
	return nil
}

func (_ *Tx) Update(_ interface{}) error {
	return nil
}
