@johnmorrisdotca/taisen-brackets 0.6.1 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -6,6 +6,37 @@ All notable changes to this project are written here. The format follows
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [0.8.0] - 2026-10-20
10
+
11
+ Judo, step 2: the scoreboard of one contest.
12
+
13
+ ### Added
14
+
15
+ - **`judoScoreboard(contest, options)`**: one judo contest's scoreboard as an SVG string for the state given. The two athletes (white and blue) with their flags and three-letter codes, the ippon, waza-ari and yuko counters, the shido cards (the third red), the contest clock, a golden score badge, the osaekomi timer (a bar to 20 seconds with ticks at 5, 10 and 20, the IJF's yuko, waza-ari and ippon times, filled from the holder's side), the weight class, the round, the mat and the contest number, and, when something has ended the contest, the winner and how at the foot. The state is checked like a bracket's judo result (`JudoContest`, `JudoAthlete`); a lead on the scores wins only once `finished`.
16
+ - **Sizes**: `tv` (1920 by 1080), `tablet` (1280 by 800), `tablet-tall` (800 by 1280) or your own `{ width, height }`; light, dark or `auto`; `swap` (blue first); `coaches`; `flags` and `flagHref` as for `drawBracket`; five languages. `JUDO_BOARD_SIZES`.
17
+ - **`style: "flip"`**: the same state as a table-top flip scoreboard, a row of ring-bound cards on a stand for each side, one card to a counter (ippon, waza-ari, yuko, shido, hansoku-make), the numeral on the upper flap and the label on the lower, white and blue cards.
18
+ - **`describeJudoContest(contest, options)`**: the state as a sentence, the drawing's description.
19
+ - Words for the scoreboard in the five languages (Osaekomi, Shido, Mat, Contest, Coach, the title); the French and Japanese were read by native-language reviewers (the Japanese osaekomi is written with the Kodokan's own character, not the everyday one), the Spanish and German were not.
20
+ - The demo has a Judo scoreboard section: counters with a plus and a minus, the clock, the osaekomi side and seconds, golden score, finished, blue first, style, size and look, and the call that draws it; the state is in the address and nowhere else. Geometry tests hold every text inside the drawing, and every name inside its panel, in every size, look and several languages.
21
+
22
+ ## [0.7.0] - 2026-10-20
23
+
24
+ Judo, step 1: results in the bracket boxes, and the bracket of a weight category with the repechage and two bronze medals. Nothing changes for a bracket that has no judo result (every existing snapshot is unchanged).
25
+
26
+ ### Added
27
+
28
+ - **`Matchup.judo`**: a judo contest's result, `{ sides: [white, blue], method?, hansokuMake?, goldenScore?, time? }`, each side `{ ippon, wazaAri, yuko, shido }`. The winner, the method and the score come from it under the IJF Sport and Organisation Rules, Refereeing Rules of 21 January 2026: ippon, two waza-ari are ippon (Article 16), yuko are counted and never add up to a waza-ari (Article 15; yuko is back since 2025, 5 to 9 seconds of osaekomi, Article 7), shido never decide a contest and the third is hansoku-make (Article 18), a direct hansoku-make (`hansokuMake`), golden score (Article 13), fusen-gachi and kiken-gachi (Article 19, the matchup names the `winner`). `Tie.result.score` is the scoreboard's 100, 10 and 1. [docs/judo.md](docs/judo.md) quotes each rule.
29
+ - **`judoOutcome(result, winner?)`** checks a result and works out the winner, the method, the scoreboard points and whether both sides were disqualified; a count out of range, two ippon, a method or winner the scores contradict, and a default with no winner are a `RangeError` that names the field. `judoSeconds`, `judoClock`.
30
+ - **The boxes**: the score in marks (`I`, `W`, `W2`, `Y`, `Y3`, `0`), a white or blue bar at the edge of each row, the shido as yellow and red cards beside the score, and under the rows how it was won, `GS` for golden score and the time. The tooltip, the description and `bracketTable` say the same in a sentence, with each side's shido. Works in the tree, `rows`, `shields`, `update`, `columns` and `series`, both looks, every size. CSS custom properties `--tb-judo-white`, `--tb-judo-blue`, `--tb-shido`, `--tb-hansoku`; `bracketStyle({ judo: true })`.
31
+ - **`judoBracket(athletes, { system, prefix })`**: a weight category for any number of athletes, with the IJF's quarter-final repechage (Sport and Organisation Rules 2.5.2: two repechage contests, two bronze medal contests) for eight athletes or more, or a direct knockout whose losing semi-finalists are the bronze medallists. `Matchup.stage` takes `"repechage"` and `"bronze"` (fed by the losers of the tree's ties, drawn together under the tree with their own heading); `Tie.stage`. `judoPodium(input)` gives gold, silver and the bronze medallists; `judoCategoryLabel({ sex, weight }, locale)` the heading ("Men -66 kg"); `JUDO_WEIGHT_CLASSES`.
32
+ - Words for judo in the five languages (the marks, the methods, golden score, the shido, the headings, the weight class). The French and Japanese were read by native-language reviewers; the Spanish and German need one (docs/languages.md).
33
+ - The demo has a Judo sport: a made-up men's -66 kg category of 16 athletes with every kind of ending, in the tree and in rows, with Hata's flags (Georgia, Uzbekistan, Cuba, Mongolia, Azerbaijan, Hungary, Italy added).
34
+
35
+ ### Changed
36
+
37
+ - The note under a box is cut to fit with the same width estimate the names use, so that a long note never reaches past its box.
38
+ - The ties kept apart under the tree are 66 high in the road look when one of them has a note.
39
+
9
40
  ## [0.6.1] - 2026-10-19
10
41
 
11
42
  No change to the package's code. The README's pictures were checked against 0.6.0's features and remade: they already show every layout, so none is added.
package/NOTICE.md CHANGED
@@ -22,9 +22,11 @@ The code of this package is under the MIT licence (see [LICENSE](LICENSE)). The
22
22
  | The demo's trophies (`demo/emblems.js`, and the `dougu-sports/` files the Pages build copies beside the page) | [Dougu Sports](https://github.com/johnmorrisdotca/dougu-sports) 0.1.0, a development dependency and an optional peer: generic emblems drawn for that package, which carry no league's or federation's name or mark | MIT, same owner; its NOTICE is in the package |
23
23
  | The words of the languages (`src/locales.ts`) | The football terms (the rounds of the World Cup, extra time, the shoot-out, a replay, a walkover) were read on 2026-10-14 in the French, Spanish, German and Japanese Wikipedia articles on the World Cups of 2022, 2026 and 1938; the articles are cited in [docs/languages.md](docs/languages.md). The other words, including those of the road to the final, are written for this package; the French and Japanese were read by native-language reviewers, the Spanish and German were not | Wikipedia's text is CC BY-SA 4.0; only terms (single words and short phrases) are taken, no sentence or table, and the articles are credited in docs/languages.md |
24
24
  | The names of countries in each language | Not in the package: `countryName` asks `Intl.DisplayNames`, which holds Unicode CLDR's names; the demo passes it each team's ISO code. The home nations and the two states that no longer exist are written in `src/locales.ts` and `demo/data.js` | CLDR is under the Unicode licence (https://www.unicode.org/license.txt) |
25
+ | The judo scoring (`src/judo-model.ts`, [docs/judo.md](docs/judo.md)) | The facts of the IJF Sport and Organisation Rules, Refereeing Rules, version 21 January 2026 (Articles 6, 7, 13 to 19), and of its competition systems (2.5, March 2023 version) and weight classes (2.2.1), as published by the International Judo Federation on ijf.org; and the IJF news items of 9 December 2016 and December 2024. Read on 2026-10-20. Only facts and a few short quotations, cited by article, are used; no text, drawing or mark of the IJF is copied | The rules are the IJF's; the package states what they say and names the article. No IJF mark is used |
26
+ | The demo's made-up judo tournament (`demo/data/judo-sample.js`) | Made up: the 16 athletes and their results are invented, and the countries are only there for the flags (the same Hata flags as above, with Azerbaijan, Cuba, Georgia, Hungary, Italy, Mongolia and Uzbekistan added) | Not real |
25
27
  | The demo's page | Written for this package, with the family stylesheet `demo/family.css` | MIT |
26
28
 
27
- The flags in the demo are for the nations of the World Cups of 2022 and 2026: `AR AT AU BA BE BR CA CD CH CI CO CV DE DZ EC EG ES FR GB-ENG GH HR JP KR MA MX NL NO PL PT PY SE SN US ZA`. The package itself ships no flag, no logo and no data of the leagues.
29
+ The flags in the demo are for the nations of the World Cups of 2022 and 2026 and of the made-up judo tournament: `AR AT AU AZ BA BE BR CA CD CH CI CO CU CV DE DZ EC EG ES FR GB-ENG GE GH HR HU IT JP KR MA MN MX NL NO PL PT PY SE SN US UZ ZA`. The package itself ships no flag, no logo and no data of the leagues.
28
30
 
29
31
  No code, text or picture was taken from the bracket libraries compared in [docs/compare.md](docs/compare.md); that page records what each says of itself.
30
32
 
package/README.md CHANGED
@@ -11,7 +11,7 @@ Give it the games, series, two-legged ties or replays of a tournament and it wor
11
11
  <img alt="TypeScript" src="https://img.shields.io/badge/types-TypeScript-3178c6">
12
12
  </p>
13
13
 
14
- <p align="center"><a href="https://johnmorrisdotca.github.io/taisen-brackets/"><strong>Open the demo →</strong></a> · <a href="./docs/layout.md">Layout</a> · <a href="./docs/layouts.md">Layouts</a> · <a href="./docs/drawing.md">Drawing</a> · <a href="./docs/road.md">Road to the final</a> · <a href="./docs/backgrounds.md">Backgrounds</a> · <a href="./docs/formats.md">Formats</a> · <a href="./docs/compare.md">How it compares</a></p>
14
+ <p align="center"><a href="https://johnmorrisdotca.github.io/taisen-brackets/"><strong>Open the demo →</strong></a> · <a href="./docs/layout.md">Layout</a> · <a href="./docs/layouts.md">Layouts</a> · <a href="./docs/drawing.md">Drawing</a> · <a href="./docs/road.md">Road to the final</a> · <a href="./docs/backgrounds.md">Backgrounds</a> · <a href="./docs/judo.md">Judo</a> · <a href="./docs/formats.md">Formats</a> · <a href="./docs/compare.md">How it compares</a></p>
15
15
 
16
16
  <p align="center">
17
17
  <picture>
@@ -238,6 +238,15 @@ console.log(ice.includes("tb-bgd"), mine.includes("#ff7ac8"), photo.includes('<i
238
238
 
239
239
  In the road look, `seeds: true` writes a small tag (`P1`, `WC2`) beside each team's mark, `codes: true` its three letters under the mark in a box of marks, `vs: true` a "v" between the two marks, and a team with no flag or logo is a tile with its letters. [docs/backgrounds.md](./docs/backgrounds.md) has the options, the contrast rules and the module the other packages of the family share.
240
240
 
241
+ ## Judo
242
+
243
+ A judo contest is a tie with a `judo` result: ippon, waza-ari, yuko and shido as the IJF's current Sport and Organisation Rules score them (yuko is back since 2025), golden score, the contest time and how it was won. The box writes the marks (`I`, `W`, `Y`), the shido as yellow and red cards and a note under the two rows, in the five languages. `judoBracket` makes a weight category's bracket with the IJF's repechage and its two bronze medal contests. [docs/judo.md](./docs/judo.md) quotes the rules it follows. `judoScoreboard` draws one contest's scoreboard for a given state (the athletes with flags and codes, ippon, waza-ari and yuko counters, shido cards, clock, golden score, osaekomi timer, weight class and round), on a TV or a tablet, as a screen board or as table-top flip cards: [try it in the demo](https://johnmorrisdotca.github.io/taisen-brackets/#board).
244
+
245
+ <p align="center"><picture>
246
+ <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/johnmorrisdotca/taisen-brackets/main/docs/images/judo-desk-dark.webp">
247
+ <img alt="A made-up men's minus 66 kilogram judo tournament of 16 athletes with round flags, score marks, shido cards, how each contest was won and its time, and the repechage and bronze medal contests under the tree." src="https://raw.githubusercontent.com/johnmorrisdotca/taisen-brackets/main/docs/images/judo-desk-light.webp" width="720">
248
+ </picture><br><em>Men's -66 kg, with the quarter-final repechage (invented names).</em></p>
249
+
241
250
  ## In 30 seconds
242
251
 
243
252
  ```sh
@@ -283,6 +292,8 @@ Put the string in a page (`element.innerHTML = svg`), write it to a file, or sen
283
292
  - **Team marks you supply**: a logo address or inline SVG, drawn round or square; a team with none is its initials on a colour. Round flags from [Hata](https://github.com/johnmorrisdotca/hata) go in as they are.
284
293
  - **The champion in the centre**, with a slot for your trophy: your own SVG or image, or an emblem from [Dougu Sports](https://github.com/johnmorrisdotca/dougu-sports) (a hockey cup, a basketball trophy, a globe) through an optional plug-in, with no dependency added.
285
294
  - **Accessible**: `role="img"` with a title and a description, a tooltip sentence on every tie, and `bracketTable`.
295
+ - **A judo scoreboard**: `judoScoreboard` draws one contest for a given state, in two styles (a board, and table-top flip cards) and three sizes, in five languages; live updating is yours.
296
+ - **Judo scoring**: `Matchup.judo` takes ippon, waza-ari, yuko, shido, hansoku-make, golden score and the contest time, checked against the IJF rules (`judoOutcome`); a box shows the marks, the shido cards and how the contest was won, and `judoBracket` adds the repechage and the two bronze medal contests ([docs/judo.md](./docs/judo.md)).
286
297
  - **Formats by era**: NHL, NBA, MLB, NFL, CFL, MLS and FIFA World Cup round names, series lengths and byes.
287
298
  - **Five languages**: English, French, Japanese, Spanish and German, for every word the drawing, the tooltips, the description and the table write, with the football terms of each language; countries named by `Intl` from their ISO code; numbers and dates by `Intl`. Add a language of your own.
288
299
  - **Deterministic**: no clock, no random number, no counter; the same input gives the same string, and ids come from a hash of the input.
@@ -642,6 +653,7 @@ Everything is exported from `@johnmorrisdotca/taisen-brackets`; the layout part
642
653
  - `singleElimination(teams, options?)`, `advanceWinners(matchups)`, `standardSeeds(size)`: brackets for any number of teams.
643
654
  - `matchupsFromGames(games, options)`: matchups from a flat list of games.
644
655
  - `resolveMatchup`, `collectTeams`, `describeTie`, `noteParts`, `noteLong`: one tie's result, the teams of a bracket, a tie in a sentence.
656
+ - `judoOutcome(result, winner?)`, `judoBracket(athletes, options?)`, `judoPodium(input)`, `judoCategoryLabel(category, locale?)`, `JUDO_WEIGHT_CLASSES`, `judoSeconds(time)`, `judoClock(seconds)`: judo results checked against the IJF rules, the bracket with its repechage and two bronze medal contests, the medallists, a weight category as a heading ([docs/judo.md](./docs/judo.md)). `judoScoreboard(contest, options?)`, `describeJudoContest(contest, options?)`, `JUDO_BOARD_SIZES`: the scoreboard of a contest as SVG and as a sentence. `Matchup.judo` and `Matchup.stage` (`"repechage"`, `"bronze"`) carry them into `drawBracket`.
645
657
  - `playoffFormat(league, year)`, `playoffEras(league)`, `LEAGUES`: the formats by era (`nhl`, `nba`, `mlb`, `nfl`, `cfl`, `mls`, `worldcup`). `LEAGUE_EMBLEMS`: each league's default emblem id.
646
658
  - `isEmblemId(value)`, and the types `EmblemRenderer`, `EmblemRequest`, `EmblemStyle`: the trophy emblems (see "Emblems for the trophy").
647
659
  - `roundName(remaining)`, `roundNamesFor(count)`, `roundLabel(layout, round, names, words)`: round names.
@@ -700,6 +712,7 @@ console.log(svg.includes('lang="nl"')); // true
700
712
  | CFL | 1996 on | Division Semi-Final, Division Final, Grey Cup |
701
713
  | MLS | 2023 on | Wild Card Round, Round One (best of three), Conference Semifinals, Conference Finals, MLS Cup |
702
714
  | FIFA World Cup | every edition with a knockout, 1930 to 2026 (1950 had none) | Round of 32 (2026), Round of 16, Quarter-finals, Semi-finals, Final |
715
+ | Judo (IJF rules of 21 January 2026) | any weight category: `judoBracket` with the quarter-final repechage or a direct knockout | Round of N … Final, repechage, two bronze medal contests |
703
716
  | Any other | single elimination for any number of teams | Round of N … Final |
704
717
 
705
718
  Each era was checked against English Wikipedia (facts only; the articles are cited in [docs/formats.md](./docs/formats.md)). The year is the year the playoffs are played in, except for the NFL, whose year is its season's, so 2024 is the season whose playoffs were played in January and February 2025. A season did something of its own (a strike, a pandemic) has its own entry, and a later one is not covered until it is checked.
@@ -732,6 +745,7 @@ Any current browser, and Node 22 or later. The package makes no network request
732
745
 
733
746
  ## Roadmap
734
747
 
748
+ - Judo: a contest card and a mat queue board, the road to the final of a judoka, double and full repechage ([docs/judo.md](./docs/judo.md)).
735
749
  - Double elimination, and the group tables on one page with the knockout they lead to.
736
750
  - More languages (Portuguese, Italian, Korean, Chinese), and native review of the Spanish and German words.
737
751
  - A custom element and a React helper, as in the other packages of the family.
package/dist/index.d.ts CHANGED
@@ -17,3 +17,7 @@ export type { ResolvedBackground } from "./background.ts";
17
17
  export { VERSION } from "./version.ts";
18
18
  export { playoffFormat, playoffEras, LEAGUES, LEAGUE_EMBLEMS } from "./presets.ts";
19
19
  export type { League, PlayoffFormat, PlayoffRound } from "./presets.ts";
20
+ export { judoBracket, judoPodium, judoCategoryLabel, judoOutcome, judoSeconds, judoClock, JUDO_WEIGHT_CLASSES } from "./judo.ts";
21
+ export type { JudoBracketOptions, JudoCategory, JudoMethod, JudoOutcome, JudoPodium, JudoResult, JudoSide, JudoSystem } from "./judo.ts";
22
+ export { judoScoreboard, describeJudoContest, JUDO_BOARD_SIZES } from "./judo-board.ts";
23
+ export type { JudoAthlete, JudoBoardOptions, JudoBoardSizeName, JudoContest } from "./judo-board.ts";
package/dist/index.js CHANGED
@@ -10,3 +10,5 @@ export { BACKGROUND_PRESETS, FAMILY_BACKGROUNDS_VERSION, backgroundSvg, contrast
10
10
  export { resolveBackground } from "./background.js";
11
11
  export { VERSION } from "./version.js";
12
12
  export { playoffFormat, playoffEras, LEAGUES, LEAGUE_EMBLEMS } from "./presets.js";
13
+ export { judoBracket, judoPodium, judoCategoryLabel, judoOutcome, judoSeconds, judoClock, JUDO_WEIGHT_CLASSES } from "./judo.js";
14
+ export { judoScoreboard, describeJudoContest, JUDO_BOARD_SIZES } from "./judo-board.js";
@@ -0,0 +1,87 @@
1
+ /**
2
+ * The scoreboard of one judo contest as a static SVG for a given state: the two athletes (white and blue) with their flags and codes, the ippon, waza-ari and yuko
3
+ * counters, the shido cards, the contest clock, the golden score badge, the osaekomi timer, the weight class, the round and the mat. Live updating is the caller's job:
4
+ * draw again with the new state. A pure function of its input and options, like every drawing here.
5
+ */
6
+ import type { DrawOptions, Locale, ThemeName, Words } from "./types.ts";
7
+ import { type JudoMethod, type JudoSide } from "./judo-model.ts";
8
+ /** One athlete on the scoreboard. Only `name` is needed. */
9
+ export interface JudoAthlete {
10
+ name: string;
11
+ /** The country's three letters (`JPN`), written big under the name. Left out, nothing is written. */
12
+ code?: string;
13
+ /** A country code for the `flags` renderer (`jp`, `GB-ENG`: Hata's round flags are one line). With none, the flag is the code (or the initials) on a tile. */
14
+ flag?: string;
15
+ /** A mark of your own (an image address or inline SVG) in place of a flag. */
16
+ mark?: string;
17
+ /** The coach's name, written small under the code when `coaches` is on. */
18
+ coach?: string;
19
+ }
20
+ /** The state of a contest: who is on the mat, what has been scored, and the clock. */
21
+ export interface JudoContest {
22
+ white: JudoAthlete;
23
+ blue: JudoAthlete;
24
+ /** What each side has scored, white first. Left out, nothing yet. */
25
+ sides?: readonly [JudoSide, JudoSide];
26
+ /** The contest clock as it is shown: seconds (`222`) or `"3:42"`. */
27
+ clock?: number | string;
28
+ /** The contest is in golden score. */
29
+ goldenScore?: boolean;
30
+ /** An osaekomi in progress: the side holding (0 white, 1 blue) and the seconds so far (0 to 20; 5 is yuko, 10 waza-ari, 20 ippon). */
31
+ osaekomi?: {
32
+ side: 0 | 1;
33
+ seconds: number;
34
+ };
35
+ /** The weight class as a heading (`judoCategoryLabel`), the round ("Final", `roundName`), the mat (`1`, shown as "Mat 1") and the contest number (`"G-24"`). */
36
+ weight?: string;
37
+ round?: string;
38
+ mat?: string | number;
39
+ contest?: string | number;
40
+ /** The contest is over: a lead on the scores then wins by decision. An ippon, waza-ari-awasete-ippon, hansoku-make, fusen-gachi or kiken-gachi ends it by itself. */
41
+ finished?: boolean;
42
+ /** How it ended, for what the scores cannot say (see `JudoResult.method`), and who won a default (`0` white, `1` blue). */
43
+ method?: JudoMethod;
44
+ winner?: 0 | 1;
45
+ /** A direct hansoku-make: the side (0 white, 1 blue) that was given it. */
46
+ hansokuMake?: 0 | 1;
47
+ }
48
+ export type JudoBoardSizeName = "tv" | "tablet" | "tablet-tall";
49
+ /** The sizes: a TV's 1920 by 1080, a tablet on its side, 1280 by 800, and a tablet held upright, 800 by 1280. */
50
+ export declare const JUDO_BOARD_SIZES: Readonly<Record<JudoBoardSizeName, {
51
+ width: number;
52
+ height: number;
53
+ }>>;
54
+ export interface JudoBoardOptions {
55
+ /** `tv` (the default), `tablet`, `tablet-tall`, or a size of your own: a wider-than-tall one lays the sides out left and right, a taller one top and bottom. */
56
+ size?: JudoBoardSizeName | {
57
+ width: number;
58
+ height: number;
59
+ };
60
+ /** `auto` follows the page's light or dark; the athletes' panels are the colours of the judogi either way. Default `auto`. */
61
+ theme?: Exclude<ThemeName, "poster" | "none">;
62
+ /** `board` (the default): two panels with the counters as tiles, like a screen scoreboard. `flip`: a row of ring-bound flip cards on a stand for each side, one card to a counter (ippon, waza-ari, yuko, shido, hansoku-make) with its label printed on it, like a table-top scoreboard. */
63
+ style?: "board" | "flip";
64
+ /** Draw blue first (on the left, or at the top) in place of white. Default false. */
65
+ swap?: boolean;
66
+ /** Write each athlete's coach under the code. Default true. */
67
+ coaches?: boolean;
68
+ /** Draws a country's flag from its code, as for `drawBracket`: a synchronous function from a code and `{ shape, size, theme }` to an SVG string, such as one made from `@johnmorrisdotca/hata`. */
69
+ flags?: DrawOptions["flags"];
70
+ /** The address of a flag as a picture to load, tried where `flags` gives none. */
71
+ flagHref?: DrawOptions["flagHref"];
72
+ /** The language: `en`, `fr`, `ja`, `es`, `de` or a `Locale`. */
73
+ locale?: string | Locale;
74
+ words?: Partial<Words>;
75
+ /** The `<title>` of the drawing. Default the language's "Judo contest scoreboard". */
76
+ title?: string;
77
+ /** Prefix for the drawing's ids. Default: a hash of the state and the options. */
78
+ id?: string;
79
+ className?: string;
80
+ }
81
+ /** The words of the state in a sentence, for the drawing's description. */
82
+ export declare function describeJudoContest(contest: JudoContest, options?: Pick<JudoBoardOptions, "locale" | "words">): string;
83
+ /**
84
+ * The scoreboard of a contest as an SVG string. Throws a `RangeError` for a state that cannot be (two ippon, a third waza-ari, a clock that is not seconds or `m:ss`, an osaekomi
85
+ * past 20 seconds is clamped to 20).
86
+ */
87
+ export declare function judoScoreboard(contest: JudoContest, options?: JudoBoardOptions): string;