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

// See the LICENSE file for information about the licensing of the original library.
// Source: github.com/json-iterator/go (exports: API; functions: Unmarshal,UnmarshalFromString)

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

import (
	json "encoding/json"
	io "io"
	big "math/big"
)

// Manually trimmed to only functions of interest
type API interface {
	Unmarshal(_ []byte, _ interface{}) error
	UnmarshalFromString(_ string, _ interface{}) error
}

// Manually added, as the real library's concrete API types are all private
type ExampleConfig struct{}

func (_ *ExampleConfig) Unmarshal(_ []byte, _ interface{}) error           { return nil }
func (_ *ExampleConfig) UnmarshalFromString(_ string, _ interface{}) error { return nil }

type Any interface {
	Get(_ ...interface{}) Any
	GetInterface() interface{}
	Keys() []string
	LastError() error
	MustBeValid() Any
	Size() int
	ToBool() bool
	ToFloat32() float32
	ToFloat64() float64
	ToInt() int
	ToInt32() int32
	ToInt64() int64
	ToString() string
	ToUint() uint
	ToUint32() uint32
	ToUint64() uint64
	ToVal(_ interface{})
	ValueType() ValueType
	WriteTo(_ *Stream)
}

type Binding struct {
	Field     interface{}
	FromNames []string
	ToNames   []string
	Encoder   ValEncoder
	Decoder   ValDecoder
}

type Decoder struct{}

func (_ *Decoder) Buffered() io.Reader {
	return nil
}

func (_ *Decoder) Decode(_ interface{}) error {
	return nil
}

func (_ *Decoder) DisallowUnknownFields() {}

func (_ *Decoder) More() bool {
	return false
}

func (_ *Decoder) UseNumber() {}

type Encoder struct{}

func (_ *Encoder) Encode(_ interface{}) error {
	return nil
}

func (_ *Encoder) SetEscapeHTML(_ bool) {}

func (_ *Encoder) SetIndent(_ string, _ string) {}

type Extension interface {
	CreateDecoder(_ interface{}) ValDecoder
	CreateEncoder(_ interface{}) ValEncoder
	CreateMapKeyDecoder(_ interface{}) ValDecoder
	CreateMapKeyEncoder(_ interface{}) ValEncoder
	DecorateDecoder(_ interface{}, _ ValDecoder) ValDecoder
	DecorateEncoder(_ interface{}, _ ValEncoder) ValEncoder
	UpdateStructDescriptor(_ *StructDescriptor)
}

type Iterator struct {
	Error      error
	Attachment interface{}
}

func (_ *Iterator) CurrentBuffer() string {
	return ""
}

func (_ *Iterator) Pool() IteratorPool {
	return nil
}

func (_ *Iterator) Read() interface{} {
	return nil
}

func (_ *Iterator) ReadAny() Any {
	return nil
}

func (_ *Iterator) ReadArray() bool {
	return false
}

func (_ *Iterator) ReadArrayCB(_ func(*Iterator) bool) bool {
	return false
}

func (_ *Iterator) ReadBigFloat() *big.Float {
	return nil
}

func (_ *Iterator) ReadBigInt() *big.Int {
	return nil
}

func (_ *Iterator) ReadBool() bool {
	return false
}

func (_ *Iterator) ReadFloat32() float32 {
	return 0
}

func (_ *Iterator) ReadFloat64() float64 {
	return 0
}

func (_ *Iterator) ReadInt() int {
	return 0
}

func (_ *Iterator) ReadInt16() int16 {
	return 0
}

func (_ *Iterator) ReadInt32() int32 {
	return 0
}

func (_ *Iterator) ReadInt64() int64 {
	return 0
}

func (_ *Iterator) ReadInt8() int8 {
	return 0
}

func (_ *Iterator) ReadMapCB(_ func(*Iterator, string) bool) bool {
	return false
}

func (_ *Iterator) ReadNil() bool {
	return false
}

func (_ *Iterator) ReadNumber() json.Number {
	return ""
}

func (_ *Iterator) ReadObject() string {
	return ""
}

func (_ *Iterator) ReadObjectCB(_ func(*Iterator, string) bool) bool {
	return false
}

func (_ *Iterator) ReadString() string {
	return ""
}

func (_ *Iterator) ReadStringAsSlice() []byte {
	return nil
}

func (_ *Iterator) ReadUint() uint {
	return 0
}

func (_ *Iterator) ReadUint16() uint16 {
	return 0
}

func (_ *Iterator) ReadUint32() uint32 {
	return 0
}

func (_ *Iterator) ReadUint64() uint64 {
	return 0
}

func (_ *Iterator) ReadUint8() byte {
	return 0
}

func (_ *Iterator) ReadVal(_ interface{}) {}

func (_ *Iterator) ReportError(_ string, _ string) {}

func (_ *Iterator) Reset(_ io.Reader) *Iterator {
	return nil
}

func (_ *Iterator) ResetBytes(_ []byte) *Iterator {
	return nil
}

func (_ *Iterator) Skip() {}

func (_ *Iterator) SkipAndAppendBytes(_ []byte) []byte {
	return nil
}

func (_ *Iterator) SkipAndReturnBytes() []byte {
	return nil
}

func (_ *Iterator) WhatIsNext() ValueType {
	return 0
}

type IteratorPool interface {
	BorrowIterator(_ []byte) *Iterator
	ReturnIterator(_ *Iterator)
}

type Stream struct {
	Error      error
	Attachment interface{}
}

func (_ *Stream) Available() int {
	return 0
}

func (_ *Stream) Buffer() []byte {
	return nil
}

func (_ *Stream) Buffered() int {
	return 0
}

func (_ *Stream) Flush() error {
	return nil
}

func (_ *Stream) Pool() StreamPool {
	return nil
}

func (_ *Stream) Reset(_ io.Writer) {}

func (_ *Stream) SetBuffer(_ []byte) {}

func (_ *Stream) Write(_ []byte) (int, error) {
	return 0, nil
}

func (_ *Stream) WriteArrayEnd() {}

func (_ *Stream) WriteArrayStart() {}

func (_ *Stream) WriteBool(_ bool) {}

func (_ *Stream) WriteEmptyArray() {}

func (_ *Stream) WriteEmptyObject() {}

func (_ *Stream) WriteFalse() {}

func (_ *Stream) WriteFloat32(_ float32) {}

func (_ *Stream) WriteFloat32Lossy(_ float32) {}

func (_ *Stream) WriteFloat64(_ float64) {}

func (_ *Stream) WriteFloat64Lossy(_ float64) {}

func (_ *Stream) WriteInt(_ int) {}

func (_ *Stream) WriteInt16(_ int16) {}

func (_ *Stream) WriteInt32(_ int32) {}

func (_ *Stream) WriteInt64(_ int64) {}

func (_ *Stream) WriteInt8(_ int8) {}

func (_ *Stream) WriteMore() {}

func (_ *Stream) WriteNil() {}

func (_ *Stream) WriteObjectEnd() {}

func (_ *Stream) WriteObjectField(_ string) {}

func (_ *Stream) WriteObjectStart() {}

func (_ *Stream) WriteRaw(_ string) {}

func (_ *Stream) WriteString(_ string) {}

func (_ *Stream) WriteStringWithHTMLEscaped(_ string) {}

func (_ *Stream) WriteTrue() {}

func (_ *Stream) WriteUint(_ uint) {}

func (_ *Stream) WriteUint16(_ uint16) {}

func (_ *Stream) WriteUint32(_ uint32) {}

func (_ *Stream) WriteUint64(_ uint64) {}

func (_ *Stream) WriteUint8(_ byte) {}

func (_ *Stream) WriteVal(_ interface{}) {}

type StreamPool interface {
	BorrowStream(_ io.Writer) *Stream
	ReturnStream(_ *Stream)
}

type StructDescriptor struct {
	Type   interface{}
	Fields []*Binding
}

func (_ *StructDescriptor) GetField(_ string) *Binding {
	return nil
}

func Unmarshal(_ []byte, _ interface{}) error {
	return nil
}

func UnmarshalFromString(_ string, _ interface{}) error {
	return nil
}

type ValDecoder interface {
	Decode(_ interface{}, _ *Iterator)
}

type ValEncoder interface {
	Encode(_ interface{}, _ *Stream)
	IsEmpty(_ interface{}) bool
}

type ValueType int
