1package pdfexport23import "time"45type SheetLayout int67const (8 SheetLayoutHalfLetter SheetLayout = iota9 SheetLayoutDuplexBooklet10)1112type PackMetadata struct {13 GeneratedRaw string14 GeneratedAt time.Time15 Version string16 Category string17 ModeSelection string18 Count int19 Seed string20 Format string21 SourceFileName string22}2324type PackDocument struct {25 SourcePath string26 Metadata PackMetadata27 Puzzles []Puzzle28}2930type DifficultyConfidence string3132const (33 DifficultyConfidenceHigh DifficultyConfidence = "high"34 DifficultyConfidenceMedium DifficultyConfidence = "medium"35 DifficultyConfidenceLow DifficultyConfidence = "low"36)3738type Puzzle struct {39 SourcePath string40 SourceFileName string41 Category string42 ModeSelection string43 Name string44 Index int45 Body string46 SaveData []byte47 PrintPayload any48 DifficultyScore float6449 DifficultyConfidence DifficultyConfidence50 DifficultySource string51 TargetDifficultyElo *int52 ActualDifficultyElo *int53}5455type NonogramData struct {56 Width int57 Height int58 RowHints [][]int59 ColHints [][]int60 Grid [][]string61}6263type NurikabeData struct {64 Width int65 Height int66 Clues [][]int67}6869type ShikakuData struct {70 Width int71 Height int72 Clues [][]int73}7475type HashiIsland struct {76 X int77 Y int78 Required int79}8081type HashiData struct {82 Width int83 Height int84 Islands []HashiIsland85}8687type HitoriData struct {88 Size int89 Numbers [][]string90}9192type TakuzuData struct {93 Size int94 Givens [][]string95 HorizontalRelations [][]string96 VerticalRelations [][]string97 GroupEveryTwo bool98}99100type SudokuData struct {101 Givens [9][9]int `json:"givens"`102}103104type FillominoData struct {105 Width int106 Height int107 Givens [][]int108}109110type NetwalkData struct {111 Size int112 Masks [][]uint8113 Rotations [][]uint8114 RootX int115 RootY int116}117118type RippleEffectCell struct {119 X int `json:"x"`120 Y int `json:"y"`121}122123type RippleEffectCage struct {124 Size int `json:"size"`125 Cells []RippleEffectCell `json:"cells"`126}127128type RippleEffectData struct {129 Width int130 Height int131 Givens [][]int132 Cages []RippleEffectCage133}134135type WordSearchData struct {136 Width int `json:"width"`137 Height int `json:"height"`138 Grid [][]string `json:"grid"`139 Words []string `json:"words"`140}141142type GridTable struct {143 Rows [][]string144 HasHeaderRow bool145 HasHeaderCol bool146}147148type RenderConfig struct {149 Title string150 CoverSubtitle string151 HeaderText string152 VolumeNumber int153 AdvertText string154 GeneratedAt time.Time155 ShuffleSeed string156 SheetLayout SheetLayout157}