package ipldgit

// Code generated by go-ipld-prime gengo.  DO NOT EDIT.

import (
	ipld "github.com/ipld/go-ipld-prime"
)

var _ ipld.Node = nil // suppress errors when this dependency is not referenced
// Type is a struct embeding a NodePrototype/Type for every Node implementation in this package.
// One of its major uses is to start the construction of a value.
// You can use it like this:
//
// 		ipldgit.Type.YourTypeName.NewBuilder().BeginMap() //...
//
// and:
//
// 		ipldgit.Type.OtherTypeName.NewBuilder().AssignString("x") // ...
//
var Type typeSlab

type typeSlab struct {
	Blob                   _Blob__Prototype
	Blob__Repr             _Blob__ReprPrototype
	Commit                 _Commit__Prototype
	Commit__Repr           _Commit__ReprPrototype
	Commit_Link            _Commit_Link__Prototype
	Commit_Link__Repr      _Commit_Link__ReprPrototype
	Commit_Link_List       _Commit_Link_List__Prototype
	Commit_Link_List__Repr _Commit_Link_List__ReprPrototype
	GpgSig                 _GpgSig__Prototype
	GpgSig__Repr           _GpgSig__ReprPrototype
	Link                   _Link__Prototype
	Link__Repr             _Link__ReprPrototype
	PersonInfo             _PersonInfo__Prototype
	PersonInfo__Repr       _PersonInfo__ReprPrototype
	String                 _String__Prototype
	String__Repr           _String__ReprPrototype
	String_List            _String_List__Prototype
	String_List__Repr      _String_List__ReprPrototype
	Tag                    _Tag__Prototype
	Tag__Repr              _Tag__ReprPrototype
	Tag_List               _Tag_List__Prototype
	Tag_List__Repr         _Tag_List__ReprPrototype
	Tree                   _Tree__Prototype
	Tree__Repr             _Tree__ReprPrototype
	TreeEntry              _TreeEntry__Prototype
	TreeEntry__Repr        _TreeEntry__ReprPrototype
	Tree_Link              _Tree_Link__Prototype
	Tree_Link__Repr        _Tree_Link__ReprPrototype
}

// --- type definitions follow ---

// Blob matches the IPLD Schema type "Blob".  It has bytes kind.
type Blob = *_Blob
type _Blob struct{ x []byte }

// Commit matches the IPLD Schema type "Commit".  It has Struct type-kind, and may be interrogated like map kind.
type Commit = *_Commit
type _Commit struct {
	tree      _Tree_Link
	parents   _Commit_Link_List
	message   _String
	author    _PersonInfo__Maybe
	committer _PersonInfo__Maybe
	encoding  _String__Maybe
	signature _GpgSig__Maybe
	mergetag  _Tag_List
	other     _String_List
}

// Commit_Link matches the IPLD Schema type "Commit_Link".  It has link kind.
type Commit_Link = *_Commit_Link
type _Commit_Link struct{ x ipld.Link }

// Commit_Link_List matches the IPLD Schema type "Commit_Link_List".  It has list kind.
type Commit_Link_List = *_Commit_Link_List
type _Commit_Link_List struct {
	x []_Commit_Link
}

// GpgSig matches the IPLD Schema type "GpgSig".  It has string kind.
type GpgSig = *_GpgSig
type _GpgSig struct{ x string }

// Link matches the IPLD Schema type "Link".  It has link kind.
type Link = *_Link
type _Link struct{ x ipld.Link }

// PersonInfo matches the IPLD Schema type "PersonInfo".  It has Struct type-kind, and may be interrogated like map kind.
type PersonInfo = *_PersonInfo
type _PersonInfo struct {
	date     _String
	timezone _String
	email    _String
	name     _String
}

// String matches the IPLD Schema type "String".  It has string kind.
type String = *_String
type _String struct{ x string }

// String_List matches the IPLD Schema type "String_List".  It has list kind.
type String_List = *_String_List
type _String_List struct {
	x []_String
}

// Tag matches the IPLD Schema type "Tag".  It has Struct type-kind, and may be interrogated like map kind.
type Tag = *_Tag
type _Tag struct {
	object  _Link
	typ     _String
	tag     _String
	tagger  _PersonInfo
	message _String
}

// Tag_List matches the IPLD Schema type "Tag_List".  It has list kind.
type Tag_List = *_Tag_List
type _Tag_List struct {
	x []_Tag
}

// Tree matches the IPLD Schema type "Tree".  It has map kind.
type Tree = *_Tree
type _Tree struct {
	m map[_String]*_TreeEntry
	t []_Tree__entry
}
type _Tree__entry struct {
	k _String
	v _TreeEntry
}

// TreeEntry matches the IPLD Schema type "TreeEntry".  It has Struct type-kind, and may be interrogated like map kind.
type TreeEntry = *_TreeEntry
type _TreeEntry struct {
	mode _String
	hash _Link
}

// Tree_Link matches the IPLD Schema type "Tree_Link".  It has link kind.
type Tree_Link = *_Tree_Link
type _Tree_Link struct{ x ipld.Link }
