import type { SheetSpec } from "../leagues/curling.ts"; import type { SheetShow } from "../types.ts"; import { type BuildOptions, type Surface } from "./surface.ts"; /** What a curling sheet is drawn with besides the figures of its rulebook. */ export interface SheetLook { /** The ice's pebble, as a texture of dots over the sheet. */ pebble: boolean; /** The free guard zone, shaded. */ guardZone: boolean; /** How much of the sheet is in view, and at which end. */ show: SheetShow; end: "left" | "right"; /** Which league's marks to draw: the hack line and the courtesy lines are World Curling's. */ figures: SheetSpec; /** For `show: "folded"`: what each enlarged panel holds, the shape of the whole, and the words that label the panels (the left end's and the right end's). */ fold?: { panels: "half" | "house"; fit: number; labels: readonly [string, string]; }; } /** Where each tee is on the sheet, along it from the left backboard: the left tee and the right tee. */ export declare function teesOf(spec: Pick): [number, number]; /** * The part of a bare sheet's ice that `show` and `end` show, in feet in the sheet's wide frame: all of it, or the half from the hog line to the back line, or the house, at one end, * with a little ice beyond the lines. A folded sheet shows all of it, with its houses enlarged beside it. */ export declare function shownIce(spec: Pick, show: SheetShow, end: "left" | "right"): { x: number; y: number; w: number; h: number; }; /** * A curling sheet in the frame of a drawing lying wide: x along it from the left backboard, y across it from the top sideline. A house at * each end (the 12-, 8- and 4-foot circles and the button), the tee, back, hog and centre lines, the hacks, and, in World Curling's, the * hack lines and the courtesy lines. Every figure is the rulebook's (leagues/curling.ts). */ export declare function curling(o: BuildOptions, look: SheetLook): Surface;