tldraw/packages/tlschema/api-report.md
alex d85aac58b3
Explicitly type shape props and defaults (#4191)
We rely on type inference for our `defaultX` types, as well as for our
shape prop types. This works well and means we only have to list shape
props once, but has some drawbacks:
- It's unstable, which sometimes produces unintended api-report.md diffs
that need to be worked around
- It's not good for docs

This diff makes those declared explicitly

### Change type

- [x] `api`

### Release notes

- Explicitly declare type types of default shapes etc. and shape props
for better documentation
2024-07-16 13:16:39 +00:00

47 KiB

API Report File for "@tldraw/tlschema"

Do not edit this file. It is a report generated by API Extractor.


import { BaseRecord } from '@tldraw/store';
import { Expand } from '@tldraw/utils';
import { IndexKey } from '@tldraw/utils';
import { JsonObject } from '@tldraw/utils';
import { LegacyMigrations } from '@tldraw/store';
import { MigrationId } from '@tldraw/store';
import { MigrationSequence } from '@tldraw/store';
import { RecordId } from '@tldraw/store';
import { RecordType } from '@tldraw/store';
import { SerializedStore } from '@tldraw/store';
import { Signal } from '@tldraw/state';
import { StandaloneDependsOn } from '@tldraw/store';
import { Store } from '@tldraw/store';
import { StoreSchema } from '@tldraw/store';
import { StoreSnapshot } from '@tldraw/store';
import { StoreValidator } from '@tldraw/store';
import { T } from '@tldraw/validate';
import { UnknownRecord } from '@tldraw/store';

// @public (undocumented)
export const arrowBindingMigrations: TLPropsMigrations;

// @public (undocumented)
export const arrowBindingProps: RecordProps<TLArrowBinding>;

// @public (undocumented)
export const ArrowShapeArrowheadEndStyle: EnumStyleProp<"arrow" | "bar" | "diamond" | "dot" | "inverted" | "none" | "pipe" | "square" | "triangle">;

// @public (undocumented)
export const ArrowShapeArrowheadStartStyle: EnumStyleProp<"arrow" | "bar" | "diamond" | "dot" | "inverted" | "none" | "pipe" | "square" | "triangle">;

// @public (undocumented)
export const arrowShapeMigrations: MigrationSequence;

// @public (undocumented)
export const arrowShapeProps: RecordProps<TLArrowShape>;

// @public
export const assetIdValidator: T.Validator<TLAssetId>;

// @public (undocumented)
export const assetMigrations: MigrationSequence;

// @public (undocumented)
export const AssetRecordType: RecordType<TLAsset, "props" | "type">;

// @public (undocumented)
export const assetValidator: T.Validator<TLAsset>;

// @public (undocumented)
export const bindingIdValidator: T.Validator<TLBindingId>;

// @public (undocumented)
export const bookmarkShapeMigrations: TLPropsMigrations;

// @public (undocumented)
export const bookmarkShapeProps: RecordProps<TLBookmarkShape>;

// @public
export interface BoxModel {
    // (undocumented)
    h: number;
    // (undocumented)
    w: number;
    // (undocumented)
    x: number;
    // (undocumented)
    y: number;
}

// @public (undocumented)
export const boxModelValidator: T.ObjectValidator<BoxModel>;

// @public (undocumented)
export const CameraRecordType: RecordType<TLCamera, never>;

// @public
export const canvasUiColorTypeValidator: T.Validator<"accent" | "black" | "laser" | "muted-1" | "selection-fill" | "selection-stroke" | "white">;

// @public
export function createAssetValidator<Type extends string, Props extends JsonObject>(type: Type, props: T.Validator<Props>): T.ObjectValidator<Expand<    { [P in T.ExtractRequiredKeys<{
id: TLAssetId;
meta: JsonObject;
props: Props;
type: Type;
typeName: 'asset';
}>]: {
id: TLAssetId;
meta: JsonObject;
props: Props;
type: Type;
typeName: 'asset';
}[P]; } & { [P_1 in T.ExtractOptionalKeys<{
id: TLAssetId;
meta: JsonObject;
props: Props;
type: Type;
typeName: 'asset';
}>]?: {
id: TLAssetId;
meta: JsonObject;
props: Props;
type: Type;
typeName: 'asset';
}[P_1] | undefined; }>>;

// @public (undocumented)
export function createBindingId(id?: string): TLBindingId;

// @public (undocumented)
export function createBindingPropsMigrationIds<S extends string, T extends Record<string, number>>(bindingType: S, ids: T): {
    [k in keyof T]: `com.tldraw.binding.${S}/${T[k]}`;
};

// @public (undocumented)
export function createBindingPropsMigrationSequence(migrations: TLPropsMigrations): TLPropsMigrations;

// @public (undocumented)
export function createBindingValidator<Type extends string, Props extends JsonObject, Meta extends JsonObject>(type: Type, props?: {
    [K in keyof Props]: T.Validatable<Props[K]>;
}, meta?: {
    [K in keyof Meta]: T.Validatable<Meta[K]>;
}): T.ObjectValidator<Expand<    { [P in T.ExtractRequiredKeys<TLBaseBinding<Type, Props>>]: TLBaseBinding<Type, Props>[P]; } & { [P_1 in T.ExtractOptionalKeys<TLBaseBinding<Type, Props>>]?: TLBaseBinding<Type, Props>[P_1] | undefined; }>>;

// @public
export const createPresenceStateDerivation: ($user: Signal<{
    color: string;
    id: string;
    name: string;
}>, instanceId?: TLInstancePresence['id']) => (store: TLStore) => Signal<null | TLInstancePresence>;

// @public (undocumented)
export function createShapeId(id?: string): TLShapeId;

// @public (undocumented)
export function createShapePropsMigrationIds<const S extends string, const T extends Record<string, number>>(shapeType: S, ids: T): {
    [k in keyof T]: `com.tldraw.shape.${S}/${T[k]}`;
};

// @public (undocumented)
export function createShapePropsMigrationSequence(migrations: TLPropsMigrations): TLPropsMigrations;

// @public (undocumented)
export function createShapeValidator<Type extends string, Props extends JsonObject, Meta extends JsonObject>(type: Type, props?: {
    [K in keyof Props]: T.Validatable<Props[K]>;
}, meta?: {
    [K in keyof Meta]: T.Validatable<Meta[K]>;
}): T.ObjectValidator<Expand<    { [P in T.ExtractRequiredKeys<TLBaseShape<Type, Props>>]: TLBaseShape<Type, Props>[P]; } & { [P_1 in T.ExtractOptionalKeys<TLBaseShape<Type, Props>>]?: TLBaseShape<Type, Props>[P_1] | undefined; }>>;

// @public
export function createTLSchema({ shapes, bindings, migrations, }?: {
    bindings?: Record<string, SchemaPropsInfo>;
    migrations?: readonly MigrationSequence[];
    shapes?: Record<string, SchemaPropsInfo>;
}): TLSchema;

// @public (undocumented)
export const defaultColorNames: readonly ["black", "grey", "light-violet", "violet", "blue", "light-blue", "yellow", "orange", "green", "light-green", "light-red", "red", "white"];

// @public (undocumented)
export const DefaultColorStyle: EnumStyleProp<"black" | "blue" | "green" | "grey" | "light-blue" | "light-green" | "light-red" | "light-violet" | "orange" | "red" | "violet" | "white" | "yellow">;

// @public (undocumented)
export const DefaultColorThemePalette: {
    darkMode: TLDefaultColorTheme;
    lightMode: TLDefaultColorTheme;
};

// @public (undocumented)
export const DefaultDashStyle: EnumStyleProp<"dashed" | "dotted" | "draw" | "solid">;

// @public (undocumented)
export const DefaultFillStyle: EnumStyleProp<"fill" | "none" | "pattern" | "semi" | "solid">;

// @public (undocumented)
export const DefaultFontFamilies: {
    draw: string;
    mono: string;
    sans: string;
    serif: string;
};

// @public (undocumented)
export const DefaultFontStyle: EnumStyleProp<"draw" | "mono" | "sans" | "serif">;

// @public (undocumented)
export const DefaultHorizontalAlignStyle: EnumStyleProp<"end-legacy" | "end" | "middle-legacy" | "middle" | "start-legacy" | "start">;

// @public (undocumented)
export const defaultShapeSchemas: {
    arrow: {
        migrations: MigrationSequence;
        props: RecordProps<TLArrowShape>;
    };
    bookmark: {
        migrations: TLPropsMigrations;
        props: RecordProps<TLBookmarkShape>;
    };
    draw: {
        migrations: TLPropsMigrations;
        props: RecordProps<TLDrawShape>;
    };
    embed: {
        migrations: TLPropsMigrations;
        props: RecordProps<TLEmbedShape>;
    };
    frame: {
        migrations: TLPropsMigrations;
        props: RecordProps<TLFrameShape>;
    };
    geo: {
        migrations: TLPropsMigrations;
        props: RecordProps<TLGeoShape>;
    };
    group: {
        migrations: TLPropsMigrations;
        props: RecordProps<TLGroupShape>;
    };
    highlight: {
        migrations: TLPropsMigrations;
        props: RecordProps<TLHighlightShape>;
    };
    image: {
        migrations: TLPropsMigrations;
        props: RecordProps<TLImageShape>;
    };
    line: {
        migrations: TLPropsMigrations;
        props: RecordProps<TLLineShape>;
    };
    note: {
        migrations: TLPropsMigrations;
        props: RecordProps<TLNoteShape>;
    };
    text: {
        migrations: TLPropsMigrations;
        props: RecordProps<TLTextShape>;
    };
    video: {
        migrations: TLPropsMigrations;
        props: RecordProps<TLVideoShape>;
    };
};

// @public (undocumented)
export const DefaultSizeStyle: EnumStyleProp<"l" | "m" | "s" | "xl">;

// @public (undocumented)
export const DefaultTextAlignStyle: EnumStyleProp<"end" | "middle" | "start">;

// @public (undocumented)
export const DefaultVerticalAlignStyle: EnumStyleProp<"end" | "middle" | "start">;

// @public (undocumented)
export const DocumentRecordType: RecordType<TLDocument, never>;

// @public (undocumented)
export const drawShapeMigrations: TLPropsMigrations;

// @public (undocumented)
export const drawShapeProps: RecordProps<TLDrawShape>;

// @public (undocumented)
export const EMBED_DEFINITIONS: readonly [{
    readonly doesResize: true;
    readonly fromEmbedUrl: (url: string) => string | undefined;
    readonly height: 500;
    readonly hostnames: readonly ["beta.tldraw.com", "tldraw.com", "localhost:3000"];
    readonly minHeight: 300;
    readonly minWidth: 300;
    readonly overridePermissions: {
        readonly 'allow-top-navigation': true;
    };
    readonly title: "tldraw";
    readonly toEmbedUrl: (url: string) => string | undefined;
    readonly type: "tldraw";
    readonly width: 720;
}, {
    readonly doesResize: true;
    readonly fromEmbedUrl: (url: string) => string | undefined;
    readonly height: 500;
    readonly hostnames: readonly ["figma.com"];
    readonly title: "Figma";
    readonly toEmbedUrl: (url: string) => string | undefined;
    readonly type: "figma";
    readonly width: 720;
}, {
    readonly doesResize: true;
    readonly fromEmbedUrl: (url: string) => string | undefined;
    readonly height: 500;
    readonly hostnames: readonly ["google.*"];
    readonly overridePermissions: {
        readonly 'allow-presentation': true;
    };
    readonly title: "Google Maps";
    readonly toEmbedUrl: (url: string) => string | undefined;
    readonly type: "google_maps";
    readonly width: 720;
}, {
    readonly doesResize: true;
    readonly fromEmbedUrl: (url: string) => string | undefined;
    readonly height: 500;
    readonly hostnames: readonly ["val.town"];
    readonly minHeight: 100;
    readonly minWidth: 260;
    readonly title: "Val Town";
    readonly toEmbedUrl: (url: string) => string | undefined;
    readonly type: "val_town";
    readonly width: 720;
}, {
    readonly doesResize: true;
    readonly fromEmbedUrl: (url: string) => string | undefined;
    readonly height: 500;
    readonly hostnames: readonly ["codesandbox.io"];
    readonly minHeight: 300;
    readonly minWidth: 300;
    readonly title: "CodeSandbox";
    readonly toEmbedUrl: (url: string) => string | undefined;
    readonly type: "codesandbox";
    readonly width: 720;
}, {
    readonly doesResize: true;
    readonly fromEmbedUrl: (url: string) => string | undefined;
    readonly height: 400;
    readonly hostnames: readonly ["codepen.io"];
    readonly minHeight: 300;
    readonly minWidth: 300;
    readonly title: "Codepen";
    readonly toEmbedUrl: (url: string) => string | undefined;
    readonly type: "codepen";
    readonly width: 520;
}, {
    readonly doesResize: false;
    readonly fromEmbedUrl: (url: string) => string | undefined;
    readonly height: 400;
    readonly hostnames: readonly ["scratch.mit.edu"];
    readonly title: "Scratch";
    readonly toEmbedUrl: (url: string) => string | undefined;
    readonly type: "scratch";
    readonly width: 520;
}, {
    readonly doesResize: true;
    readonly fromEmbedUrl: (url: string) => string | undefined;
    readonly height: 450;
    readonly hostnames: readonly ["*.youtube.com", "youtube.com", "youtu.be"];
    readonly isAspectRatioLocked: true;
    readonly overridePermissions: {
        readonly 'allow-popups-to-escape-sandbox': true;
        readonly 'allow-presentation': true;
    };
    readonly title: "YouTube";
    readonly toEmbedUrl: (url: string) => string | undefined;
    readonly type: "youtube";
    readonly width: 800;
}, {
    readonly doesResize: true;
    readonly fromEmbedUrl: (url: string) => string | undefined;
    readonly height: 500;
    readonly hostnames: readonly ["calendar.google.*"];
    readonly instructionLink: "https://support.google.com/calendar/answer/41207?hl=en";
    readonly minHeight: 360;
    readonly minWidth: 460;
    readonly overridePermissions: {
        readonly 'allow-popups-to-escape-sandbox': true;
    };
    readonly title: "Google Calendar";
    readonly toEmbedUrl: (url: string) => string | undefined;
    readonly type: "google_calendar";
    readonly width: 720;
}, {
    readonly doesResize: true;
    readonly fromEmbedUrl: (url: string) => string | undefined;
    readonly height: 500;
    readonly hostnames: readonly ["docs.google.*"];
    readonly minHeight: 360;
    readonly minWidth: 460;
    readonly overridePermissions: {
        readonly 'allow-popups-to-escape-sandbox': true;
    };
    readonly title: "Google Slides";
    readonly toEmbedUrl: (url: string) => string | undefined;
    readonly type: "google_slides";
    readonly width: 720;
}, {
    readonly doesResize: true;
    readonly fromEmbedUrl: (url: string) => string | undefined;
    readonly height: 500;
    readonly hostnames: readonly ["gist.github.com"];
    readonly title: "GitHub Gist";
    readonly toEmbedUrl: (url: string) => string | undefined;
    readonly type: "github_gist";
    readonly width: 720;
}, {
    readonly doesResize: true;
    readonly fromEmbedUrl: (url: string) => string | undefined;
    readonly height: 500;
    readonly hostnames: readonly ["replit.com"];
    readonly title: "Replit";
    readonly toEmbedUrl: (url: string) => string | undefined;
    readonly type: "replit";
    readonly width: 720;
}, {
    readonly doesResize: true;
    readonly fromEmbedUrl: (url: string) => string | undefined;
    readonly height: 500;
    readonly hostnames: readonly ["felt.com"];
    readonly title: "Felt";
    readonly toEmbedUrl: (url: string) => string | undefined;
    readonly type: "felt";
    readonly width: 720;
}, {
    readonly doesResize: true;
    readonly fromEmbedUrl: (url: string) => string | undefined;
    readonly height: 500;
    readonly hostnames: readonly ["open.spotify.com"];
    readonly minHeight: 500;
    readonly overrideOutlineRadius: 12;
    readonly title: "Spotify";
    readonly toEmbedUrl: (url: string) => string | undefined;
    readonly type: "spotify";
    readonly width: 720;
}, {
    readonly doesResize: true;
    readonly fromEmbedUrl: (url: string) => string | undefined;
    readonly height: 360;
    readonly hostnames: readonly ["vimeo.com", "player.vimeo.com"];
    readonly isAspectRatioLocked: true;
    readonly title: "Vimeo";
    readonly toEmbedUrl: (url: string) => string | undefined;
    readonly type: "vimeo";
    readonly width: 640;
}, {
    readonly doesResize: true;
    readonly fromEmbedUrl: (url: string) => string | undefined;
    readonly height: 500;
    readonly hostnames: readonly ["excalidraw.com"];
    readonly isAspectRatioLocked: true;
    readonly title: "Excalidraw";
    readonly toEmbedUrl: (url: string) => string | undefined;
    readonly type: "excalidraw";
    readonly width: 720;
}, {
    readonly backgroundColor: "#fff";
    readonly doesResize: true;
    readonly fromEmbedUrl: (url: string) => string | undefined;
    readonly height: 500;
    readonly hostnames: readonly ["observablehq.com"];
    readonly isAspectRatioLocked: false;
    readonly title: "Observable";
    readonly toEmbedUrl: (url: string) => string | undefined;
    readonly type: "observable";
    readonly width: 720;
}, {
    readonly doesResize: true;
    readonly fromEmbedUrl: (url: string) => string | undefined;
    readonly height: 450;
    readonly hostnames: readonly ["desmos.com"];
    readonly title: "Desmos";
    readonly toEmbedUrl: (url: string) => string | undefined;
    readonly type: "desmos";
    readonly width: 700;
}];

// @public (undocumented)
export interface EmbedDefinition {
    // (undocumented)
    readonly backgroundColor?: string;
    // (undocumented)
    readonly doesResize: boolean;
    // (undocumented)
    readonly fromEmbedUrl: (url: string) => string | undefined;
    // (undocumented)
    readonly height: number;
    // (undocumented)
    readonly hostnames: readonly string[];
    // (undocumented)
    readonly instructionLink?: string;
    // (undocumented)
    readonly isAspectRatioLocked?: boolean;
    // (undocumented)
    readonly minHeight?: number;
    // (undocumented)
    readonly minWidth?: number;
    // (undocumented)
    readonly overrideOutlineRadius?: number;
    // (undocumented)
    readonly overridePermissions?: TLEmbedShapePermissions;
    // (undocumented)
    readonly title: string;
    // (undocumented)
    readonly toEmbedUrl: (url: string) => string | undefined;
    // (undocumented)
    readonly type: string;
    // (undocumented)
    readonly width: number;
}

// @public (undocumented)
export const embedShapeMigrations: TLPropsMigrations;

// @public
export const embedShapePermissionDefaults: {
    readonly 'allow-downloads-without-user-activation': false;
    readonly 'allow-downloads': false;
    readonly 'allow-forms': true;
    readonly 'allow-modals': false;
    readonly 'allow-orientation-lock': false;
    readonly 'allow-pointer-lock': false;
    readonly 'allow-popups-to-escape-sandbox': false;
    readonly 'allow-popups': true;
    readonly 'allow-presentation': false;
    readonly 'allow-same-origin': true;
    readonly 'allow-scripts': true;
    readonly 'allow-storage-access-by-user-activation': false;
    readonly 'allow-top-navigation-by-user-activation': false;
    readonly 'allow-top-navigation': false;
};

// @public (undocumented)
export const embedShapeProps: RecordProps<TLEmbedShape>;

// @public
export class EnumStyleProp<T> extends StyleProp<T> {
    // @internal
    constructor(id: string, defaultValue: T, values: readonly T[]);
    // (undocumented)
    readonly values: readonly T[];
}

// @public (undocumented)
export const frameShapeMigrations: TLPropsMigrations;

// @public (undocumented)
export const frameShapeProps: RecordProps<TLFrameShape>;

// @public (undocumented)
export const GeoShapeGeoStyle: EnumStyleProp<"arrow-down" | "arrow-left" | "arrow-right" | "arrow-up" | "check-box" | "cloud" | "diamond" | "ellipse" | "heart" | "hexagon" | "octagon" | "oval" | "pentagon" | "rectangle" | "rhombus-2" | "rhombus" | "star" | "trapezoid" | "triangle" | "x-box">;

// @public (undocumented)
export const geoShapeMigrations: TLPropsMigrations;

// @public (undocumented)
export const geoShapeProps: RecordProps<TLGeoShape>;

// @public (undocumented)
export function getDefaultColorTheme(opts: {
    isDarkMode: boolean;
}): TLDefaultColorTheme;

// @public (undocumented)
export function getDefaultTranslationLocale(): TLLanguage['locale'];

// @internal (undocumented)
export function getShapePropKeysByStyle(props: Record<string, T.Validatable<any>>): Map<StyleProp<unknown>, string>;

// @public (undocumented)
export const groupShapeMigrations: TLPropsMigrations;

// @public (undocumented)
export const groupShapeProps: RecordProps<TLGroupShape>;

// @public (undocumented)
export const highlightShapeMigrations: TLPropsMigrations;

// @public (undocumented)
export const highlightShapeProps: RecordProps<TLHighlightShape>;

// @public (undocumented)
export function idValidator<Id extends RecordId<UnknownRecord>>(prefix: Id['__type__']['typeName']): T.Validator<Id>;

// @public (undocumented)
export const ImageShapeCrop: T.ObjectValidator<TLImageShapeCrop>;

// @public (undocumented)
export const imageShapeMigrations: TLPropsMigrations;

// @public (undocumented)
export const imageShapeProps: RecordProps<TLImageShape>;

// @public (undocumented)
export const InstancePageStateRecordType: RecordType<TLInstancePageState, "pageId">;

// @public (undocumented)
export const InstancePresenceRecordType: RecordType<TLInstancePresence, "currentPageId" | "userId" | "userName">;

// @public (undocumented)
export function isBinding(record?: UnknownRecord): record is TLBinding;

// @public (undocumented)
export function isBindingId(id?: string): id is TLBindingId;

// @public (undocumented)
export function isPageId(id: string): id is TLPageId;

// @public (undocumented)
export function isShape(record?: UnknownRecord): record is TLShape;

// @public (undocumented)
export function isShapeId(id?: string): id is TLShapeId;

// @public (undocumented)
export const LANGUAGES: readonly [{
    readonly label: "Bahasa Indonesia";
    readonly locale: "id";
}, {
    readonly label: "Català";
    readonly locale: "ca";
}, {
    readonly label: "Čeština";
    readonly locale: "cs";
}, {
    readonly label: "Danish";
    readonly locale: "da";
}, {
    readonly label: "Deutsch";
    readonly locale: "de";
}, {
    readonly label: "English";
    readonly locale: "en";
}, {
    readonly label: "Español";
    readonly locale: "es";
}, {
    readonly label: "Français";
    readonly locale: "fr";
}, {
    readonly label: "Galego";
    readonly locale: "gl";
}, {
    readonly label: "Hrvatski";
    readonly locale: "hr";
}, {
    readonly label: "Italiano";
    readonly locale: "it";
}, {
    readonly label: "Magyar";
    readonly locale: "hu";
}, {
    readonly label: "Norwegian";
    readonly locale: "no";
}, {
    readonly label: "Polski";
    readonly locale: "pl";
}, {
    readonly label: "Português - Brasil";
    readonly locale: "pt-br";
}, {
    readonly label: "Português - Europeu";
    readonly locale: "pt-pt";
}, {
    readonly label: "Română";
    readonly locale: "ro";
}, {
    readonly label: "Russian";
    readonly locale: "ru";
}, {
    readonly label: "Slovenščina";
    readonly locale: "sl";
}, {
    readonly label: "Suomi";
    readonly locale: "fi";
}, {
    readonly label: "Svenska";
    readonly locale: "sv";
}, {
    readonly label: "Tiếng Việt";
    readonly locale: "vi";
}, {
    readonly label: "Türkçe";
    readonly locale: "tr";
}, {
    readonly label: "Ukrainian";
    readonly locale: "uk";
}, {
    readonly label: "עברית";
    readonly locale: "he";
}, {
    readonly label: "عربي";
    readonly locale: "ar";
}, {
    readonly label: "فارسی";
    readonly locale: "fa";
}, {
    readonly label: "کوردی";
    readonly locale: "ku";
}, {
    readonly label: "नेपाली";
    readonly locale: "ne";
}, {
    readonly label: "हिन्दी";
    readonly locale: "hi-in";
}, {
    readonly label: "తెలుగు";
    readonly locale: "te";
}, {
    readonly label: "ภาษาไทย";
    readonly locale: "th";
}, {
    readonly label: "မြန်မာစာ";
    readonly locale: "my";
}, {
    readonly label: "한국어";
    readonly locale: "ko-kr";
}, {
    readonly label: "日本語";
    readonly locale: "ja";
}, {
    readonly label: "简体中文";
    readonly locale: "zh-cn";
}, {
    readonly label: "繁體中文 (台灣)";
    readonly locale: "zh-tw";
}];

// @public (undocumented)
export const lineShapeMigrations: TLPropsMigrations;

// @public (undocumented)
export const lineShapeProps: RecordProps<TLLineShape>;

// @public (undocumented)
export const LineShapeSplineStyle: EnumStyleProp<"cubic" | "line">;

// @public (undocumented)
export const noteShapeMigrations: TLPropsMigrations;

// @public (undocumented)
export const noteShapeProps: RecordProps<TLNoteShape>;

// @public (undocumented)
export const opacityValidator: T.Validator<number>;

// @public (undocumented)
export const pageIdValidator: T.Validator<TLPageId>;

// @public (undocumented)
export const PageRecordType: RecordType<TLPage, "index" | "name">;

// @public (undocumented)
export const parentIdValidator: T.Validator<TLParentId>;

// @internal (undocumented)
export const pluckPreservingValues: (val?: null | TLInstance) => null | Partial<TLInstance>;

// @public (undocumented)
export const PointerRecordType: RecordType<TLPointer, never>;

// @public (undocumented)
export type RecordProps<R extends UnknownRecord & {
    props: object;
}> = {
    [K in keyof R['props']]: T.Validatable<R['props'][K]>;
};

// @public (undocumented)
export type RecordPropsType<Config extends Record<string, T.Validatable<any>>> = Expand<{
    [K in keyof Config]: T.TypeOf<Config[K]>;
}>;

// @public (undocumented)
export const rootBindingMigrations: MigrationSequence;

// @public (undocumented)
export const rootShapeMigrations: MigrationSequence;

// @public (undocumented)
export interface SchemaPropsInfo {
    // (undocumented)
    meta?: Record<string, StoreValidator<any>>;
    // (undocumented)
    migrations?: LegacyMigrations | MigrationSequence | TLPropsMigrations;
    // (undocumented)
    props?: Record<string, StoreValidator<any>>;
}

// @public (undocumented)
export const scribbleValidator: T.ObjectValidator<TLScribble>;

// @public (undocumented)
export type SetValue<T extends Set<any>> = T extends Set<infer U> ? U : never;

// @public (undocumented)
export const shapeIdValidator: T.Validator<TLShapeId>;

// @public
export class StyleProp<Type> implements T.Validatable<Type> {
    // @internal
    protected constructor(id: string, defaultValue: Type, type: T.Validatable<Type>);
    // (undocumented)
    defaultValue: Type;
    static define<Type>(uniqueId: string, options: {
        defaultValue: Type;
        type?: T.Validatable<Type>;
    }): StyleProp<Type>;
    static defineEnum<const Values extends readonly unknown[]>(uniqueId: string, options: {
        defaultValue: Values[number];
        values: Values;
    }): EnumStyleProp<Values[number]>;
    // (undocumented)
    readonly id: string;
    // (undocumented)
    setDefaultValue(value: Type): void;
    // (undocumented)
    readonly type: T.Validatable<Type>;
    // (undocumented)
    validate(value: unknown): Type;
    // (undocumented)
    validateUsingKnownGoodVersion(prevValue: Type, newValue: unknown): Type;
}

// @public (undocumented)
export type StylePropValue<T extends StyleProp<any>> = T extends StyleProp<infer U> ? U : never;

// @public (undocumented)
export const textShapeMigrations: TLPropsMigrations;

// @public (undocumented)
export const textShapeProps: RecordProps<TLTextShape>;

// @public
export const TL_CANVAS_UI_COLOR_TYPES: Set<"accent" | "black" | "laser" | "muted-1" | "selection-fill" | "selection-stroke" | "white">;

// @public
export const TL_CURSOR_TYPES: Set<string>;

// @public
export const TL_HANDLE_TYPES: Set<"clone" | "create" | "vertex" | "virtual">;

// @public
export const TL_SCRIBBLE_STATES: Set<"active" | "paused" | "starting" | "stopping">;

// @public (undocumented)
export type TLArrowBinding = TLBaseBinding<'arrow', TLArrowBindingProps>;

// @public (undocumented)
export interface TLArrowBindingProps {
    isExact: boolean;
    isPrecise: boolean;
    // (undocumented)
    normalizedAnchor: VecModel;
    // (undocumented)
    terminal: 'end' | 'start';
}

// @public (undocumented)
export type TLArrowShape = TLBaseShape<'arrow', TLArrowShapeProps>;

// @public (undocumented)
export type TLArrowShapeArrowheadStyle = T.TypeOf<typeof ArrowShapeArrowheadStartStyle>;

// @public (undocumented)
export interface TLArrowShapeProps {
    // (undocumented)
    arrowheadEnd: TLArrowShapeArrowheadStyle;
    // (undocumented)
    arrowheadStart: TLArrowShapeArrowheadStyle;
    // (undocumented)
    bend: number;
    // (undocumented)
    color: TLDefaultColorStyle;
    // (undocumented)
    dash: TLDefaultDashStyle;
    // (undocumented)
    end: VecModel;
    // (undocumented)
    fill: TLDefaultFillStyle;
    // (undocumented)
    font: TLDefaultFontStyle;
    // (undocumented)
    labelColor: TLDefaultColorStyle;
    // (undocumented)
    labelPosition: number;
    // (undocumented)
    scale: number;
    // (undocumented)
    size: TLDefaultSizeStyle;
    // (undocumented)
    start: VecModel;
    // (undocumented)
    text: string;
}

// @public (undocumented)
export type TLAsset = TLBookmarkAsset | TLImageAsset | TLVideoAsset;

// @public (undocumented)
export interface TLAssetContext {
    // (undocumented)
    dpr: number;
    // (undocumented)
    networkEffectiveType: null | string;
    // (undocumented)
    screenScale: number;
    // (undocumented)
    shouldResolveToOriginal: boolean;
    // (undocumented)
    steppedScreenScale: number;
}

// @public (undocumented)
export type TLAssetId = RecordId<TLBaseAsset<any, any>>;

// @public (undocumented)
export type TLAssetPartial<T extends TLAsset = TLAsset> = T extends T ? {
    id: TLAssetId;
    meta?: Partial<T['meta']>;
    props?: Partial<T['props']>;
    type: T['type'];
} & Partial<Omit<T, 'id' | 'meta' | 'props' | 'type'>> : never;

// @public (undocumented)
export type TLAssetShape = Extract<TLShape, {
    props: {
        assetId: TLAssetId;
    };
}>;

// @public
export interface TLAssetStore {
    resolve(asset: TLAsset, ctx: TLAssetContext): null | Promise<null | string> | string;
    upload(asset: TLAsset, file: File): Promise<string>;
}

// @public (undocumented)
export interface TLBaseAsset<Type extends string, Props> extends BaseRecord<'asset', TLAssetId> {
    // (undocumented)
    meta: JsonObject;
    // (undocumented)
    props: Props;
    // (undocumented)
    type: Type;
}

// @public (undocumented)
export interface TLBaseBinding<Type extends string, Props extends object> extends BaseRecord<'binding', TLBindingId> {
    // (undocumented)
    fromId: TLShapeId;
    // (undocumented)
    meta: JsonObject;
    // (undocumented)
    props: Props;
    // (undocumented)
    toId: TLShapeId;
    // (undocumented)
    type: Type;
}

// @public (undocumented)
export interface TLBaseShape<Type extends string, Props extends object> extends BaseRecord<'shape', TLShapeId> {
    // (undocumented)
    index: IndexKey;
    // (undocumented)
    isLocked: boolean;
    // (undocumented)
    meta: JsonObject;
    // (undocumented)
    opacity: TLOpacityType;
    // (undocumented)
    parentId: TLParentId;
    // (undocumented)
    props: Props;
    // (undocumented)
    rotation: number;
    // (undocumented)
    type: Type;
    // (undocumented)
    x: number;
    // (undocumented)
    y: number;
}

// @public
export type TLBinding = TLDefaultBinding | TLUnknownBinding;

// @public (undocumented)
export type TLBindingCreate<T extends TLBinding = TLBinding> = Expand<{
    fromId: T['fromId'];
    id?: TLBindingId;
    meta?: Partial<T['meta']>;
    props?: Partial<T['props']>;
    toId: T['toId'];
    type: T['type'];
    typeName?: T['typeName'];
}>;

// @public
export type TLBindingId = RecordId<TLUnknownBinding>;

// @public (undocumented)
export type TLBindingUpdate<T extends TLBinding = TLBinding> = Expand<{
    fromId?: T['fromId'];
    id: TLBindingId;
    meta?: Partial<T['meta']>;
    props?: Partial<T['props']>;
    toId?: T['toId'];
    type: T['type'];
    typeName?: T['typeName'];
}>;

// @public
export type TLBookmarkAsset = TLBaseAsset<'bookmark', {
    description: string;
    favicon: string;
    image: string;
    src: null | string;
    title: string;
}>;

// @public (undocumented)
export type TLBookmarkShape = TLBaseShape<'bookmark', TLBookmarkShapeProps>;

// @public (undocumented)
export interface TLBookmarkShapeProps {
    // (undocumented)
    assetId: null | TLAssetId;
    // (undocumented)
    h: number;
    // (undocumented)
    url: string;
    // (undocumented)
    w: number;
}

// @public
export interface TLCamera extends BaseRecord<'camera', TLCameraId> {
    // (undocumented)
    meta: JsonObject;
    // (undocumented)
    x: number;
    // (undocumented)
    y: number;
    // (undocumented)
    z: number;
}

// @public
export type TLCameraId = RecordId<TLCamera>;

// @public
export type TLCanvasUiColor = SetValue<typeof TL_CANVAS_UI_COLOR_TYPES>;

// @public
export interface TLCursor {
    // (undocumented)
    rotation: number;
    // (undocumented)
    type: TLCursorType;
}

// @public
export type TLCursorType = SetValue<typeof TL_CURSOR_TYPES>;

// @public
export type TLDefaultBinding = TLArrowBinding;

// @public (undocumented)
export type TLDefaultColorStyle = T.TypeOf<typeof DefaultColorStyle>;

// @public (undocumented)
export type TLDefaultColorTheme = Expand<{
    background: string;
    id: 'dark' | 'light';
    solid: string;
    text: string;
} & Record<(typeof defaultColorNames)[number], TLDefaultColorThemeColor>>;

// @public (undocumented)
export interface TLDefaultColorThemeColor {
    // (undocumented)
    fill: string;
    // (undocumented)
    highlight: {
        p3: string;
        srgb: string;
    };
    // (undocumented)
    note: {
        fill: string;
        text: string;
    };
    // (undocumented)
    pattern: string;
    // (undocumented)
    semi: string;
    // (undocumented)
    solid: string;
}

// @public (undocumented)
export type TLDefaultDashStyle = T.TypeOf<typeof DefaultDashStyle>;

// @public (undocumented)
export type TLDefaultFillStyle = T.TypeOf<typeof DefaultFillStyle>;

// @public (undocumented)
export type TLDefaultFontStyle = T.TypeOf<typeof DefaultFontStyle>;

// @public (undocumented)
export type TLDefaultHorizontalAlignStyle = T.TypeOf<typeof DefaultHorizontalAlignStyle>;

// @public
export type TLDefaultShape = TLArrowShape | TLBookmarkShape | TLDrawShape | TLEmbedShape | TLFrameShape | TLGeoShape | TLGroupShape | TLHighlightShape | TLImageShape | TLLineShape | TLNoteShape | TLTextShape | TLVideoShape;

// @public (undocumented)
export type TLDefaultSizeStyle = T.TypeOf<typeof DefaultSizeStyle>;

// @public (undocumented)
export type TLDefaultTextAlignStyle = T.TypeOf<typeof DefaultTextAlignStyle>;

// @public (undocumented)
export type TLDefaultVerticalAlignStyle = T.TypeOf<typeof DefaultVerticalAlignStyle>;

// @public
export interface TLDocument extends BaseRecord<'document', RecordId<TLDocument>> {
    // (undocumented)
    gridSize: number;
    // (undocumented)
    meta: JsonObject;
    // (undocumented)
    name: string;
}

// @public (undocumented)
export const TLDOCUMENT_ID: RecordId<TLDocument>;

// @public (undocumented)
export type TLDrawShape = TLBaseShape<'draw', TLDrawShapeProps>;

// @public (undocumented)
export interface TLDrawShapeProps {
    // (undocumented)
    color: TLDefaultColorStyle;
    // (undocumented)
    dash: TLDefaultDashStyle;
    // (undocumented)
    fill: TLDefaultFillStyle;
    // (undocumented)
    isClosed: boolean;
    // (undocumented)
    isComplete: boolean;
    // (undocumented)
    isPen: boolean;
    // (undocumented)
    scale: number;
    // (undocumented)
    segments: TLDrawShapeSegment[];
    // (undocumented)
    size: TLDefaultSizeStyle;
}

// @public (undocumented)
export interface TLDrawShapeSegment {
    // (undocumented)
    points: VecModel[];
    // (undocumented)
    type: 'free' | 'straight';
}

// @public (undocumented)
export type TLEmbedShape = TLBaseShape<'embed', TLEmbedShapeProps>;

// @public (undocumented)
export type TLEmbedShapePermissions = {
    [K in keyof typeof embedShapePermissionDefaults]?: boolean;
};

// @public (undocumented)
export interface TLEmbedShapeProps {
    // (undocumented)
    h: number;
    // (undocumented)
    url: string;
    // (undocumented)
    w: number;
}

// @public (undocumented)
export type TLFrameShape = TLBaseShape<'frame', TLFrameShapeProps>;

// @public (undocumented)
export interface TLFrameShapeProps {
    // (undocumented)
    h: number;
    // (undocumented)
    name: string;
    // (undocumented)
    w: number;
}

// @public (undocumented)
export type TLGeoShape = TLBaseShape<'geo', TLGeoShapeProps>;

// @public (undocumented)
export type TLGeoShapeGeoStyle = T.TypeOf<typeof GeoShapeGeoStyle>;

// @public (undocumented)
export interface TLGeoShapeProps {
    // (undocumented)
    align: TLDefaultHorizontalAlignStyle;
    // (undocumented)
    color: TLDefaultColorStyle;
    // (undocumented)
    dash: TLDefaultDashStyle;
    // (undocumented)
    fill: TLDefaultFillStyle;
    // (undocumented)
    font: TLDefaultFontStyle;
    // (undocumented)
    geo: TLGeoShapeGeoStyle;
    // (undocumented)
    growY: number;
    // (undocumented)
    h: number;
    // (undocumented)
    labelColor: TLDefaultColorStyle;
    // (undocumented)
    scale: number;
    // (undocumented)
    size: TLDefaultSizeStyle;
    // (undocumented)
    text: string;
    // (undocumented)
    url: string;
    // (undocumented)
    verticalAlign: TLDefaultVerticalAlignStyle;
    // (undocumented)
    w: number;
}

// @public (undocumented)
export type TLGroupShape = TLBaseShape<'group', TLGroupShapeProps>;

// @public (undocumented)
export interface TLGroupShapeProps {
}

// @public
export interface TLHandle {
    // (undocumented)
    canSnap?: boolean;
    id: string;
    // (undocumented)
    index: IndexKey;
    // (undocumented)
    type: TLHandleType;
    // (undocumented)
    x: number;
    // (undocumented)
    y: number;
}

// @public
export type TLHandleType = SetValue<typeof TL_HANDLE_TYPES>;

// @public (undocumented)
export type TLHighlightShape = TLBaseShape<'highlight', TLHighlightShapeProps>;

// @public (undocumented)
export interface TLHighlightShapeProps {
    // (undocumented)
    color: TLDefaultColorStyle;
    // (undocumented)
    isComplete: boolean;
    // (undocumented)
    isPen: boolean;
    // (undocumented)
    scale: number;
    // (undocumented)
    segments: TLDrawShapeSegment[];
    // (undocumented)
    size: TLDefaultSizeStyle;
}

// @public
export type TLImageAsset = TLBaseAsset<'image', {
    fileSize: number;
    h: number;
    isAnimated: boolean;
    mimeType: null | string;
    name: string;
    src: null | string;
    w: number;
}>;

// @public (undocumented)
export type TLImageShape = TLBaseShape<'image', TLImageShapeProps>;

// @public (undocumented)
export interface TLImageShapeCrop {
    // (undocumented)
    bottomRight: VecModel;
    // (undocumented)
    topLeft: VecModel;
}

// @public (undocumented)
export interface TLImageShapeProps {
    // (undocumented)
    assetId: null | TLAssetId;
    // (undocumented)
    crop: null | TLImageShapeCrop;
    // (undocumented)
    flipX: boolean;
    // (undocumented)
    flipY: boolean;
    // (undocumented)
    h: number;
    // (undocumented)
    playing: boolean;
    // (undocumented)
    url: string;
    // (undocumented)
    w: number;
}

// @public
export interface TLInstance extends BaseRecord<'instance', TLInstanceId> {
    // (undocumented)
    brush: BoxModel | null;
    // (undocumented)
    chatMessage: string;
    // (undocumented)
    currentPageId: TLPageId;
    // (undocumented)
    cursor: TLCursor;
    // (undocumented)
    devicePixelRatio: number;
    // (undocumented)
    duplicateProps: {
        offset: {
            x: number;
            y: number;
        };
        shapeIds: TLShapeId[];
    } | null;
    // (undocumented)
    exportBackground: boolean;
    // (undocumented)
    followingUserId: null | string;
    // (undocumented)
    highlightedUserIds: string[];
    // (undocumented)
    insets: boolean[];
    // (undocumented)
    isChangingStyle: boolean;
    // (undocumented)
    isChatting: boolean;
    isCoarsePointer: boolean;
    // (undocumented)
    isDebugMode: boolean;
    // (undocumented)
    isFocused: boolean;
    // (undocumented)
    isFocusMode: boolean;
    // (undocumented)
    isGridMode: boolean;
    isHoveringCanvas: boolean | null;
    // (undocumented)
    isPenMode: boolean;
    // (undocumented)
    isReadonly: boolean;
    // (undocumented)
    isToolLocked: boolean;
    // (undocumented)
    meta: JsonObject;
    // (undocumented)
    opacityForNextShape: TLOpacityType;
    // (undocumented)
    openMenus: string[];
    // (undocumented)
    screenBounds: BoxModel;
    // (undocumented)
    scribbles: TLScribble[];
    // (undocumented)
    stylesForNextShape: Record<string, unknown>;
    // (undocumented)
    zoomBrush: BoxModel | null;
}

// @public (undocumented)
export const TLINSTANCE_ID: TLInstanceId;

// @public (undocumented)
export type TLInstanceId = RecordId<TLInstance>;

// @public
export interface TLInstancePageState extends BaseRecord<'instance_page_state', TLInstancePageStateId> {
    // (undocumented)
    croppingShapeId: null | TLShapeId;
    // (undocumented)
    editingShapeId: null | TLShapeId;
    // (undocumented)
    erasingShapeIds: TLShapeId[];
    // (undocumented)
    focusedGroupId: null | TLShapeId;
    // (undocumented)
    hintingShapeIds: TLShapeId[];
    // (undocumented)
    hoveredShapeId: null | TLShapeId;
    // (undocumented)
    meta: JsonObject;
    // (undocumented)
    pageId: RecordId<TLPage>;
    // (undocumented)
    selectedShapeIds: TLShapeId[];
}

// @public (undocumented)
export type TLInstancePageStateId = RecordId<TLInstancePageState>;

// @public (undocumented)
export interface TLInstancePresence extends BaseRecord<'instance_presence', TLInstancePresenceID> {
    // (undocumented)
    brush: BoxModel | null;
    // (undocumented)
    camera: {
        x: number;
        y: number;
        z: number;
    };
    // (undocumented)
    chatMessage: string;
    // (undocumented)
    color: string;
    // (undocumented)
    currentPageId: TLPageId;
    // (undocumented)
    cursor: {
        rotation: number;
        type: TLCursor['type'];
        x: number;
        y: number;
    };
    // (undocumented)
    followingUserId: null | string;
    // (undocumented)
    lastActivityTimestamp: number;
    // (undocumented)
    meta: JsonObject;
    // (undocumented)
    screenBounds: BoxModel;
    // (undocumented)
    scribbles: TLScribble[];
    // (undocumented)
    selectedShapeIds: TLShapeId[];
    // (undocumented)
    userId: string;
    // (undocumented)
    userName: string;
}

// @public (undocumented)
export type TLInstancePresenceID = RecordId<TLInstancePresence>;

// @public (undocumented)
export type TLLanguage = (typeof LANGUAGES)[number];

// @public (undocumented)
export type TLLineShape = TLBaseShape<'line', TLLineShapeProps>;

// @public (undocumented)
export interface TLLineShapePoint {
    // (undocumented)
    id: string;
    // (undocumented)
    index: IndexKey;
    // (undocumented)
    x: number;
    // (undocumented)
    y: number;
}

// @public (undocumented)
export interface TLLineShapeProps {
    // (undocumented)
    color: TLDefaultColorStyle;
    // (undocumented)
    dash: TLDefaultDashStyle;
    // (undocumented)
    points: Record<string, TLLineShapePoint>;
    // (undocumented)
    scale: number;
    // (undocumented)
    size: TLDefaultSizeStyle;
    // (undocumented)
    spline: TLLineShapeSplineStyle;
}

// @public (undocumented)
export type TLLineShapeSplineStyle = T.TypeOf<typeof LineShapeSplineStyle>;

// @public (undocumented)
export type TLNoteShape = TLBaseShape<'note', TLNoteShapeProps>;

// @public (undocumented)
export interface TLNoteShapeProps {
    // (undocumented)
    align: TLDefaultHorizontalAlignStyle;
    // (undocumented)
    color: TLDefaultColorStyle;
    // (undocumented)
    font: TLDefaultFontStyle;
    // (undocumented)
    fontSizeAdjustment: number;
    // (undocumented)
    growY: number;
    // (undocumented)
    scale: number;
    // (undocumented)
    size: TLDefaultSizeStyle;
    // (undocumented)
    text: string;
    // (undocumented)
    url: string;
    // (undocumented)
    verticalAlign: TLDefaultVerticalAlignStyle;
}

// @public (undocumented)
export type TLOpacityType = number;

// @public
export interface TLPage extends BaseRecord<'page', TLPageId> {
    // (undocumented)
    index: IndexKey;
    // (undocumented)
    meta: JsonObject;
    // (undocumented)
    name: string;
}

// @public (undocumented)
export type TLPageId = RecordId<TLPage>;

// @public (undocumented)
export type TLParentId = TLPageId | TLShapeId;

// @public
export interface TLPointer extends BaseRecord<'pointer', TLPointerId> {
    // (undocumented)
    lastActivityTimestamp: number;
    // (undocumented)
    meta: JsonObject;
    // (undocumented)
    x: number;
    // (undocumented)
    y: number;
}

// @public (undocumented)
export const TLPOINTER_ID: TLPointerId;

// @public (undocumented)
export type TLPointerId = RecordId<TLPointer>;

// @public (undocumented)
export interface TLPropsMigration {
    // (undocumented)
    readonly dependsOn?: MigrationId[];
    readonly down?: 'none' | 'retired' | ((props: any) => any);
    // (undocumented)
    readonly id: MigrationId;
    // (undocumented)
    readonly up: (props: any) => any;
}

// @public (undocumented)
export interface TLPropsMigrations {
    // (undocumented)
    readonly sequence: Array<StandaloneDependsOn | TLPropsMigration>;
}

// @public (undocumented)
export type TLRecord = TLAsset | TLBinding | TLCamera | TLDocument | TLInstance | TLInstancePageState | TLInstancePresence | TLPage | TLPointer | TLShape;

// @public (undocumented)
export type TLSchema = StoreSchema<TLRecord, TLStoreProps>;

// @public
export interface TLScribble {
    // (undocumented)
    color: TLCanvasUiColor;
    // (undocumented)
    delay: number;
    // (undocumented)
    id: string;
    // (undocumented)
    opacity: number;
    // (undocumented)
    points: VecModel[];
    // (undocumented)
    shrink: number;
    // (undocumented)
    size: number;
    // (undocumented)
    state: SetValue<typeof TL_SCRIBBLE_STATES>;
    // (undocumented)
    taper: boolean;
}

// @public (undocumented)
export type TLSerializedStore = SerializedStore<TLRecord>;

// @public
export type TLShape = TLDefaultShape | TLUnknownShape;

// @public (undocumented)
export type TLShapeId = RecordId<TLUnknownShape>;

// @public (undocumented)
export type TLShapePartial<T extends TLShape = TLShape> = T extends T ? {
    id: TLShapeId;
    meta?: Partial<T['meta']>;
    props?: Partial<T['props']>;
    type: T['type'];
} & Partial<Omit<T, 'id' | 'meta' | 'props' | 'type'>> : never;

// @public (undocumented)
export type TLStore = Store<TLRecord, TLStoreProps>;

// @public (undocumented)
export interface TLStoreProps {
    // (undocumented)
    assets: TLAssetStore;
    // (undocumented)
    defaultName: string;
    // (undocumented)
    multiplayerStatus: null | Signal<'offline' | 'online'>;
    onEditorMount: (editor: unknown) => (() => void) | void;
}

// @public (undocumented)
export type TLStoreSchema = StoreSchema<TLRecord, TLStoreProps>;

// @public (undocumented)
export type TLStoreSnapshot = StoreSnapshot<TLRecord>;

// @public (undocumented)
export type TLTextShape = TLBaseShape<'text', TLTextShapeProps>;

// @public (undocumented)
export interface TLTextShapeProps {
    // (undocumented)
    autoSize: boolean;
    // (undocumented)
    color: TLDefaultColorStyle;
    // (undocumented)
    font: TLDefaultFontStyle;
    // (undocumented)
    scale: number;
    // (undocumented)
    size: TLDefaultSizeStyle;
    // (undocumented)
    text: string;
    // (undocumented)
    textAlign: TLDefaultTextAlignStyle;
    // (undocumented)
    w: number;
}

// @public
export type TLUnknownBinding = TLBaseBinding<string, object>;

// @public
export type TLUnknownShape = TLBaseShape<string, object>;

// @public
export type TLVideoAsset = TLBaseAsset<'video', {
    fileSize: number;
    h: number;
    isAnimated: boolean;
    mimeType: null | string;
    name: string;
    src: null | string;
    w: number;
}>;

// @public (undocumented)
export type TLVideoShape = TLBaseShape<'video', TLVideoShapeProps>;

// @public (undocumented)
export interface TLVideoShapeProps {
    // (undocumented)
    assetId: null | TLAssetId;
    // (undocumented)
    h: number;
    // (undocumented)
    playing: boolean;
    // (undocumented)
    time: number;
    // (undocumented)
    url: string;
    // (undocumented)
    w: number;
}

// @public
export interface VecModel {
    // (undocumented)
    x: number;
    // (undocumented)
    y: number;
    // (undocumented)
    z?: number;
}

// @public (undocumented)
export const vecModelValidator: T.ObjectValidator<VecModel>;

// @public (undocumented)
export const videoShapeMigrations: TLPropsMigrations;

// @public (undocumented)
export const videoShapeProps: RecordProps<TLVideoShape>;

// (No @packageDocumentation comment for this package)