fvtt-types
Version:
TypeScript type definitions for Foundry VTT
1,875 lines (1,640 loc) • 70.9 kB
text/typescript
import type { Brand, DeepReadonly, Identity, ValueOf } from "#utils";
/**
* The shortened software name
*/
export declare const vtt: "Foundry VTT";
/**
* The full software name
*/
export declare const VTT: "Foundry Virtual Tabletop";
/**
* The software website URL
*/
export declare const WEBSITE_URL: "https://foundryvtt.com";
/**
* The serverless API URL
*/
export declare const WEBSITE_API_URL: "https://api.foundryvtt.com";
/**
* An ASCII greeting displayed to the client
*/
export const ASCII = `_______________________________________________________________
_____ ___ _ _ _ _ ____ ______ __ __ _______ _____
| ___/ _ \\| | | | \\ | | _ \\| _ \\ \\ / / \\ \\ / |_ _|_ _|
| |_ | | | | | | | \\| | | | | |_) \\ V / \\ \\ / / | | | |
| _|| |_| | |_| | |\\ | |_| | _ < | | \\ V / | | | |
|_| \\___/ \\___/|_| \\_|____/|_| \\_\\|_| \\_/ |_| |_|
===============================================================`;
/**
* Define the allowed ActiveEffect application modes.
* Other arbitrary mode numbers can be used by systems and modules to identify special behaviors and are ignored
*/
export declare const ACTIVE_EFFECT_MODES: Readonly<{
/**
* Used to denote that the handling of the effect is programmatically provided by a system or module.
*/
CUSTOM: 0 & ACTIVE_EFFECT_MODES;
/**
* Multiplies a numeric base value by the numeric effect value
* @example
* 2 (base value) * 3 (effect value) = 6 (derived value)
*/
MULTIPLY: 1 & ACTIVE_EFFECT_MODES;
/**
* Adds a numeric base value to a numeric effect value, or concatenates strings
* @example
* 2 (base value) + 3 (effect value) = 5 (derived value)
* @example
* "Hello" (base value) + " World" (effect value) = "Hello World"
*/
ADD: 2 & ACTIVE_EFFECT_MODES;
/**
* Keeps the lower value of the base value and the effect value
* @example
* 2 (base value), 0 (effect value) = 0 (derived value)
* @example
* 2 (base value), 3 (effect value) = 2 (derived value)
*/
DOWNGRADE: 3 & ACTIVE_EFFECT_MODES;
/**
* Keeps the greater value of the base value and the effect value
* @example
* 2 (base value), 4 (effect value) = 4 (derived value)
* @example
* 2 (base value), 1 (effect value) = 2 (derived value)
*/
UPGRADE: 4 & ACTIVE_EFFECT_MODES;
/**
* Directly replaces the base value with the effect value
* @example
* 2 (base value), 4 (effect value) = 4 (derived value)
*/
OVERRIDE: 5 & ACTIVE_EFFECT_MODES;
}>;
export type ACTIVE_EFFECT_MODES = Brand<number, "constants.ACTIVE_EFFECT_MODES">;
/**
* Define the string name used for the base document type when specific sub-types are not defined by the system
*/
export declare const BASE_DOCUMENT_TYPE: "base";
export type BASE_DOCUMENT_TYPE = typeof BASE_DOCUMENT_TYPE;
/**
* Define the methods by which a Card can be drawn from a Cards stack
* @remarks `TOP` and `FIRST` are synonymous, as are `BOTTOM` and `LAST`.
*/
export declare const CARD_DRAW_MODES: Readonly<{
/**
* Draw the first card from the stack
* Synonymous with {@linkcode CARD_DRAW_MODES.TOP}
*/
FIRST: 0 & CARD_DRAW_MODES;
/**
* Draw the top card from the stack
* Synonymous with {@linkcode CARD_DRAW_MODES.FIRST}
*/
TOP: 0 & CARD_DRAW_MODES;
/**
* Draw the last card from the stack
* Synonymous with {@linkcode CARD_DRAW_MODES.BOTTOM}
*/
LAST: 1 & CARD_DRAW_MODES;
/**
* Draw the bottom card from the stack
* Synonymous with {@linkcode CARD_DRAW_MODES.LAST}
*/
BOTTOM: 1 & CARD_DRAW_MODES;
/**
* Draw a random card from the stack
*/
RANDOM: 2 & CARD_DRAW_MODES;
}>;
export type CARD_DRAW_MODES = Brand<number, "constants.CARD_DRAW_MODES">;
/**
* An enumeration of canvas performance modes.
*/
export declare const CANVAS_PERFORMANCE_MODES: Readonly<{
LOW: 0 & CANVAS_PERFORMANCE_MODES;
MED: 1 & CANVAS_PERFORMANCE_MODES;
HIGH: 2 & CANVAS_PERFORMANCE_MODES;
MAX: 3 & CANVAS_PERFORMANCE_MODES;
}>;
export type CANVAS_PERFORMANCE_MODES = Brand<number, "constants.CANVAS_PERFORMANCE_MODES">;
/**
* Valid Chat Message styles which affect how the message is presented in the chat log.
*/
export declare const CHAT_MESSAGE_STYLES: Readonly<{
/**
* An uncategorized chat message
*/
OTHER: 0 & CHAT_MESSAGE_STYLES;
/**
* The message is spoken out of character (OOC).
* OOC messages will be outlined by the player's color to make them more easily recognizable.
*/
OOC: 1 & CHAT_MESSAGE_STYLES;
/**
* The message is spoken by an associated character.
*/
IC: 2 & CHAT_MESSAGE_STYLES;
/**
* The message is an emote performed by the selected character.
* Entering "/emote waves his hand." while controlling a character named Simon will send the message, "Simon waves his hand."
*/
EMOTE: 3 & CHAT_MESSAGE_STYLES;
/**
* @deprecated "`CONST.CHAT_MESSAGE_STYLES.ROLL` is deprecated in favor of defining rolls directly in
* {@linkcode ChatMessage.rolls | ChatMessage#rolls}" (since v12, until v14)
*/
ROLL: 0 & CHAT_MESSAGE_STYLES;
/**
* @deprecated "`CONST.CHAT_MESSAGE_STYLES.Whisper` is deprecated in favor of defining whisper recipients
* directly in {@linkcode ChatMessage.whisper | ChatMessage#whisper}"
* (since v12, until v14)
*/
WHISPER: 0 & CHAT_MESSAGE_STYLES;
}>;
export type CHAT_MESSAGE_STYLES = Brand<number, "constants.CHAT_MESSAGE_STYLES">;
/**
* Define the set of languages which have built-in support in the core software
*/
export declare const CORE_SUPPORTED_LANGUAGES: readonly ["en"];
export type CORE_SUPPORTED_LANGUAGES = ValueOf<typeof CORE_SUPPORTED_LANGUAGES>;
/**
* Configure the severity of compatibility warnings.
*/
export declare const COMPATIBILITY_MODES: Readonly<{
/**
* Nothing will be logged
*/
SILENT: 0 & COMPATIBILITY_MODES;
/**
* A message will be logged at the "warn" level
*/
WARNING: 1 & COMPATIBILITY_MODES;
/**
* A message will be logged at the "error" level
*/
ERROR: 2 & COMPATIBILITY_MODES;
/**
* An Error will be thrown
*/
FAILURE: 3 & COMPATIBILITY_MODES;
}>;
export type COMPATIBILITY_MODES = Brand<number, "constants.COMPATIBILITY_MODES">;
/**
* Configure custom cursor images to use when interacting with the application.
*/
export declare const CURSOR_STYLES: Readonly<{
default: "default";
"default-down": "default";
pointer: "pointer";
"pointer-down": "pointer";
grab: "grab";
"grab-down": "grabbing";
text: "text";
"text-down": "text";
}>;
export type CURSOR_STYLES = keyof typeof CURSOR_STYLES;
/**
* The lighting illumination levels which are supported.
*/
export declare const LIGHTING_LEVELS: Readonly<{
DARKNESS: -2 & LIGHTING_LEVELS;
HALFDARK: -1 & LIGHTING_LEVELS;
UNLIT: 0 & LIGHTING_LEVELS;
DIM: 1 & LIGHTING_LEVELS;
BRIGHT: 2 & LIGHTING_LEVELS;
BRIGHTEST: 3 & LIGHTING_LEVELS;
}>;
export type LIGHTING_LEVELS = Brand<number, "constants.LIGHTING_LEVELS">;
/**
* The CSS themes which are currently supported for the V11 Setup menu.
*/
export declare const CSS_THEMES: Readonly<{
foundry: "THEME.foundry";
fantasy: "THEME.fantasy";
scifi: "THEME.scifi";
}>;
export type CSS_THEMES = ValueOf<typeof CSS_THEMES>;
/**
* The default artwork used for Token images if none is provided
*/
export declare const DEFAULT_TOKEN: "icons/svg/mystery-man.svg";
export type DEFAULT_TOKEN = typeof DEFAULT_TOKEN;
/**
* Define the allowed Document class types.
*/
export declare const PRIMARY_DOCUMENT_TYPES: readonly [
"Actor",
"Adventure",
"Cards",
"ChatMessage",
"Combat",
"FogExploration",
"Folder",
"Item",
"JournalEntry",
"Macro",
"Playlist",
"RollTable",
"Scene",
"Setting",
"User",
];
export type PRIMARY_DOCUMENT_TYPES = ValueOf<typeof PRIMARY_DOCUMENT_TYPES>;
/**
* The embedded Document types.
*/
export const EMBEDDED_DOCUMENT_TYPES: readonly [
"ActiveEffect",
"ActorDelta",
"AmbientLight",
"AmbientSound",
"Card",
"Combatant",
"CombatantGroup",
"Drawing",
"Item",
"JournalEntryCategory",
"JournalEntryPage",
"MeasuredTemplate",
"Note",
"PlaylistSound",
"Region",
"RegionBehavior",
"TableResult",
"Tile",
"Token",
"Wall",
];
export type EMBEDDED_DOCUMENT_TYPES = ValueOf<typeof EMBEDDED_DOCUMENT_TYPES>;
/**
* A listing of all valid Document types, both primary and embedded.
*/
export const ALL_DOCUMENT_TYPES: readonly ALL_DOCUMENT_TYPES[];
export type ALL_DOCUMENT_TYPES = PRIMARY_DOCUMENT_TYPES | EMBEDDED_DOCUMENT_TYPES;
/**
* The allowed primary Document types which may exist within a World.
*/
export declare const WORLD_DOCUMENT_TYPES: readonly [
"Actor",
"Cards",
"ChatMessage",
"Combat",
"FogExploration",
"Folder",
"Item",
"JournalEntry",
"Macro",
"Playlist",
"RollTable",
"Scene",
"Setting",
"User",
];
export type WORLD_DOCUMENT_TYPES = ValueOf<typeof WORLD_DOCUMENT_TYPES>;
/**
* The allowed primary Document types which may exist within a Compendium pack.
*/
export declare const COMPENDIUM_DOCUMENT_TYPES: readonly [
"Actor",
"Adventure",
"Cards",
"Item",
"JournalEntry",
"Macro",
"Playlist",
"RollTable",
"Scene",
];
export type COMPENDIUM_DOCUMENT_TYPES = ValueOf<typeof COMPENDIUM_DOCUMENT_TYPES>;
/**
* Define the allowed ownership levels for a Document.
* Each level is assigned a value in ascending order.
* Higher levels grant more permissions.
* @see {@link https://foundryvtt.com/article/users/}
*/
export declare const DOCUMENT_OWNERSHIP_LEVELS: Readonly<{
/**
* The User inherits permissions from the parent Folder.
*/
INHERIT: -1 & DOCUMENT_OWNERSHIP_LEVELS;
/**
* Restricts the associated Document so that it may not be seen by this User.
*/
NONE: 0 & DOCUMENT_OWNERSHIP_LEVELS;
/**
* Allows the User to interact with the Document in basic ways, allowing them to see it in sidebars and see only limited aspects of its contents.
* The limits of this interaction are defined by the game system being used.
*/
LIMITED: 1 & DOCUMENT_OWNERSHIP_LEVELS;
/**
* Allows the User to view this Document as if they were owner, but prevents them from making any changes to it.
*/
OBSERVER: 2 & DOCUMENT_OWNERSHIP_LEVELS;
/**
* Allows the User to view and make changes to the Document as its owner. Owned documents cannot be deleted by anyone other than a gamemaster level User.
*/
OWNER: 3 & DOCUMENT_OWNERSHIP_LEVELS;
}>;
export type DOCUMENT_OWNERSHIP_LEVELS = Brand<number, "constants.DOCUMENT_OWNERSHIP_LEVELS">;
/**
* Meta ownership levels that are used in the UI but never stored.
*/
export declare const DOCUMENT_META_OWNERSHIP_LEVELS: Readonly<{
DEFAULT: -20 & DOCUMENT_META_OWNERSHIP_LEVELS;
NOCHANGE: -10 & DOCUMENT_META_OWNERSHIP_LEVELS;
}>;
export type DOCUMENT_META_OWNERSHIP_LEVELS = Brand<number, "constants.DOCUMENT_META_OWNERSHIP_LEVELS">;
/**
* Define the allowed Document types which may be dynamically linked in chat
*/
export declare const DOCUMENT_LINK_TYPES: readonly [
"Actor",
"Cards",
"Item",
"Scene",
"JournalEntry",
"Macro",
"RollTable",
"PlaylistSound",
];
export type DOCUMENT_LINK_TYPES = ValueOf<typeof DOCUMENT_LINK_TYPES>;
/**
* The supported dice roll visibility modes
* @see {@link https://foundryvtt.com/article/dice/}
*/
export declare const DICE_ROLL_MODES: Readonly<{
/**
* This roll is visible to all players.
*/
PUBLIC: "publicroll";
/**
* Rolls of this type are only visible to the player that rolled and any Game Master users.
*/
PRIVATE: "gmroll";
/**
* A private dice roll only visible to Gamemaster users. The rolling player will not see the result of their own roll.
*/
BLIND: "blindroll";
/**
* A private dice roll which is only visible to the user who rolled it.
*/
SELF: "selfroll";
}>;
export type DICE_ROLL_MODES = ValueOf<typeof DICE_ROLL_MODES>;
/**
* The allowed fill types which a Drawing object may display
* @see {@link https://foundryvtt.com/article/drawings/}
*/
export declare const DRAWING_FILL_TYPES: Readonly<{
/**
* The drawing is not filled
*/
NONE: 0 & DRAWING_FILL_TYPES;
/**
* The drawing is filled with a solid color
*/
SOLID: 1 & DRAWING_FILL_TYPES;
/**
* The drawing is filled with a tiled image pattern
*/
PATTERN: 2 & DRAWING_FILL_TYPES;
}>;
export type DRAWING_FILL_TYPES = Brand<number, "constants.DRAWING_FILL_TYPES">;
/**
* Define the allowed Document types which Folders may contain
*/
export declare const FOLDER_DOCUMENT_TYPES: readonly [
"Actor",
"Adventure",
"Item",
"Scene",
"JournalEntry",
"Playlist",
"RollTable",
"Cards",
"Macro",
"Compendium",
];
export type FOLDER_DOCUMENT_TYPES = ValueOf<typeof FOLDER_DOCUMENT_TYPES>;
/**
* The maximum allowed level of depth for Folder nesting
* @defaultValue `4`
*/
export declare const FOLDER_MAX_DEPTH: number;
/**
* A list of allowed game URL names
*/
export declare const GAME_VIEWS: readonly ["game", "stream"];
export type GAME_VIEWS = ValueOf<typeof GAME_VIEWS>;
/**
* The directions of movement.
*/
export declare const MOVEMENT_DIRECTIONS: Readonly<{
UP: 0x1 & MOVEMENT_DIRECTIONS;
DOWN: 0x2 & MOVEMENT_DIRECTIONS;
LEFT: 0x4 & MOVEMENT_DIRECTIONS;
RIGHT: 0x8 & MOVEMENT_DIRECTIONS;
/** @remarks `0x1 | 0x4` */
UP_LEFT: 0x5 & MOVEMENT_DIRECTIONS;
/** @remarks `0x1 | 0x8` */
UP_RIGHT: 0x9 & MOVEMENT_DIRECTIONS;
/** @remarks `0x2 | 0x4` */
DOWN_LEFT: 0x6 & MOVEMENT_DIRECTIONS;
/** @remarks `0x2 | 0x8` */
DOWN_RIGHT: 0xa & MOVEMENT_DIRECTIONS;
}>;
export type MOVEMENT_DIRECTIONS = Brand<number, "constants.MOVEMENT_DIRECTIONS">;
/**
* The minimum allowed grid size which is supported by the software
* @defaultValue `20`
*/
export declare const GRID_MIN_SIZE: number;
/**
* The allowed Grid types which are supported by the software
* @see {@link https://foundryvtt.com/article/scenes/}
*/
export declare const GRID_TYPES: Readonly<{
/**
* No fixed grid is used on this Scene allowing free-form point-to-point measurement without grid lines.
*/
GRIDLESS: 0 & GRID_TYPES;
/**
* A square grid is used with width and height of each grid space equal to the chosen grid size.
*/
SQUARE: 1 & GRID_TYPES;
/**
* A row-wise hexagon grid (pointy-topped) where odd-numbered rows are offset.
*/
HEXODDR: 2 & GRID_TYPES;
/**
* A row-wise hexagon grid (pointy-topped) where even-numbered rows are offset.
*/
HEXEVENR: 3 & GRID_TYPES;
/**
* A column-wise hexagon grid (flat-topped) where odd-numbered columns are offset.
*/
HEXODDQ: 4 & GRID_TYPES;
/**
* A column-wise hexagon grid (flat-topped) where even-numbered columns are offset.
*/
HEXEVENQ: 5 & GRID_TYPES;
}>;
export type GRID_TYPES = Brand<number, "constants.GRID_TYPES">;
/**
* The different rules to define and measure diagonal distance/cost in a square grid.
* The description of each option refers to the distance/cost of moving diagonally relative to the distance/cost of a
* horizontal or vertical move.
*/
export declare const GRID_DIAGONALS: Readonly<{
/**
* The diagonal distance is 1. Diagonal movement costs the same as horizontal/vertical movement.
*/
EQUIDISTANT: 0 & GRID_DIAGONALS;
/**
* The diagonal distance is √2. Diagonal movement costs √2 times as much as horizontal/vertical movement.
*/
EXACT: 1 & GRID_DIAGONALS;
/**
* The diagonal distance is 1.5. Diagonal movement costs 1.5 times as much as horizontal/vertical movement.
*/
APPROXIMATE: 2 & GRID_DIAGONALS;
/**
* The diagonal distance is 2. Diagonal movement costs 2 times as much as horizontal/vertical movement.
*/
RECTILINEAR: 3 & GRID_DIAGONALS;
/**
* The diagonal distance alternates between 1 and 2 starting at 1.
* The first diagonal movement costs the same as horizontal/vertical movement
* The second diagonal movement costs 2 times as much as horizontal/vertical movement.
* And so on...
*/
ALTERNATING_1: 4 & GRID_DIAGONALS;
/**
* The diagonal distance alternates between 2 and 1 starting at 2.
* The first diagonal movement costs 2 times as much as horizontal/vertical movement.
* The second diagonal movement costs the same as horizontal/vertical movement.
* And so on...
*/
ALTERNATING_2: 5 & GRID_DIAGONALS;
/**
* The diagonal distance is ∞. Diagonal movement is not allowed/possible.
*/
ILLEGAL: 6 & GRID_DIAGONALS;
}>;
export type GRID_DIAGONALS = Brand<number, "constants.GRID_DIAGONALS">;
/**
* The grid snapping modes.
*/
export declare const GRID_SNAPPING_MODES: Readonly<{
/**
* Nearest center point.
*/
CENTER: 0x1 & GRID_SNAPPING_MODES;
/**
* Nearest edge midpoint.
*/
EDGE_MIDPOINT: 0x2 & GRID_SNAPPING_MODES;
/**
* Nearest top-left vertex.
*/
TOP_LEFT_VERTEX: 0x10 & GRID_SNAPPING_MODES;
/**
* Nearest top-right vertex.
*/
TOP_RIGHT_VERTEX: 0x20 & GRID_SNAPPING_MODES;
/**
* Nearest bottom-left vertex.
*/
BOTTOM_LEFT_VERTEX: 0x40 & GRID_SNAPPING_MODES;
/**
* Nearest bottom-right vertex.
*/
BOTTOM_RIGHT_VERTEX: 0x80 & GRID_SNAPPING_MODES;
/**
* Nearest vertex.
* Alias for `TOP_LEFT_VERTEX | TOP_RIGHT_VERTEX | BOTTOM_LEFT_VERTEX | BOTTOM_RIGHT_VERTEX`.
*/
VERTEX: 0xf0 & GRID_SNAPPING_MODES;
/**
* Nearest top-left corner.
*/
TOP_LEFT_CORNER: 0x100 & GRID_SNAPPING_MODES;
/**
* Nearest top-right corner.
*/
TOP_RIGHT_CORNER: 0x200 & GRID_SNAPPING_MODES;
/**
* Nearest bottom-left corner.
*/
BOTTOM_LEFT_CORNER: 0x400 & GRID_SNAPPING_MODES;
/**
* Nearest bottom-right corner.
*/
BOTTOM_RIGHT_CORNER: 0x800 & GRID_SNAPPING_MODES;
/**
* Nearest corner.
* Alias for `TOP_LEFT_CORNER | TOP_RIGHT_CORNER | BOTTOM_LEFT_CORNER | BOTTOM_RIGHT_CORNER`.
*/
CORNER: 0xf00 & GRID_SNAPPING_MODES;
/**
* Nearest top side midpoint.
*/
TOP_SIDE_MIDPOINT: 0x1000 & GRID_SNAPPING_MODES;
/**
* Nearest bottom side midpoint.
*/
BOTTOM_SIDE_MIDPOINT: 0x2000 & GRID_SNAPPING_MODES;
/**
* Nearest left side midpoint.
*/
LEFT_SIDE_MIDPOINT: 0x4000 & GRID_SNAPPING_MODES;
/**
* Nearest right side midpoint.
*/
RIGHT_SIDE_MIDPOINT: 0x8000 & GRID_SNAPPING_MODES;
/**
* Nearest side midpoint.
* Alias for `TOP_SIDE_MIDPOINT | BOTTOM_SIDE_MIDPOINT | LEFT_SIDE_MIDPOINT | RIGHT_SIDE_MIDPOINT`.
*/
SIDE_MIDPOINT: 0xf000 & GRID_SNAPPING_MODES;
}>;
export type GRID_SNAPPING_MODES = Brand<number, "constants.GRID_SNAPPING_MODES">;
/**
* A list of supported setup URL names
*/
export declare const SETUP_VIEWS: readonly ["auth", "license", "setup", "players", "join", "update"];
export type SETUP_VIEWS = ValueOf<typeof SETUP_VIEWS>;
/**
* An Array of valid MacroAction scope values
*/
export declare const MACRO_SCOPES: readonly ["global", "actors", "actor"];
export type MACRO_SCOPES = ValueOf<typeof MACRO_SCOPES>;
/**
* An enumeration of valid Macro types
* @see {@link https://foundryvtt.com/article/macros/}
*/
export declare const MACRO_TYPES: Readonly<{
/**
* Complex and powerful macros which leverage the FVTT API through plain JavaScript to perform functions as simple or as advanced as you can imagine.
*/
SCRIPT: "script";
/**
* Simple and easy to use, chat macros post pre-defined chat messages to the chat log when executed. All users can execute chat macros by default.
*/
CHAT: "chat";
}>;
export type MACRO_TYPES = ValueOf<typeof MACRO_TYPES>;
/**
* The allowed channels for audio playback.
*/
export declare const AUDIO_CHANNELS: Readonly<{
music: "AUDIO.CHANNELS.MUSIC.label";
environment: "AUDIO.CHANNELS.ENVIRONMENT.label";
interface: "AUDIO.CHANNELS.INTERFACE.label";
}>;
export type AUDIO_CHANNELS = ValueOf<typeof AUDIO_CHANNELS>;
/**
* The allowed playback modes for an audio Playlist
* @see {@link https://foundryvtt.com/article/playlists/}
*/
export declare const PLAYLIST_MODES: Readonly<{
/**
* The playlist does not play on its own, only individual Sound tracks played as a soundboard.
*/
DISABLED: -1 & PLAYLIST_MODES;
/**
* The playlist plays sounds one at a time in sequence.
*/
SEQUENTIAL: 0 & PLAYLIST_MODES;
/**
* The playlist plays sounds one at a time in randomized order.
*/
SHUFFLE: 1 & PLAYLIST_MODES;
/**
* The playlist plays all contained sounds at the same time.
*/
SIMULTANEOUS: 2 & PLAYLIST_MODES;
}>;
export type PLAYLIST_MODES = Brand<number, "constants.PLAYLIST_MODES">;
/**
* The available sort modes for an audio Playlist.
* @defaultValue `"a"`
* @see {@link https://foundryvtt.com/article/playlists/}
*/
export declare const PLAYLIST_SORT_MODES: Readonly<{
/**
* Sort sounds alphabetically.
* @defaultValue
*/
ALPHABETICAL: "a";
/**
* Sort sounds by manual drag-and-drop.
*/
MANUAL: "m";
}>;
export type PLAYLIST_SORT_MODES = ValueOf<typeof PLAYLIST_SORT_MODES>;
/**
* The available modes for searching within a DirectoryCollection
*/
export declare const DIRECTORY_SEARCH_MODES: Readonly<{
FULL: "full";
NAME: "name";
}>;
export type DIRECTORY_SEARCH_MODES = ValueOf<typeof DIRECTORY_SEARCH_MODES>;
/**
* The allowed package types
*/
export declare const PACKAGE_TYPES: readonly ["world", "system", "module"];
export type PACKAGE_TYPES = ValueOf<typeof PACKAGE_TYPES>;
/**
* Encode the reasons why a package may be available or unavailable for use
*/
export declare const PACKAGE_AVAILABILITY_CODES: Readonly<{
/**
* Package availability could not be determined
*/
UNKNOWN: 0 & PACKAGE_AVAILABILITY_CODES;
/**
* The Package is verified to be compatible with the current core software build
*/
VERIFIED: 1 & PACKAGE_AVAILABILITY_CODES;
/**
* Package is available for use, but not verified for the current core software build
*/
UNVERIFIED_BUILD: 2 & PACKAGE_AVAILABILITY_CODES;
/**
* One or more installed system is incompatible with the Package.
*/
UNVERIFIED_SYSTEM: 3 & PACKAGE_AVAILABILITY_CODES;
/**
* Package is available for use, but not verified for the current core software generation
*/
UNVERIFIED_GENERATION: 4 & PACKAGE_AVAILABILITY_CODES;
/**
* The System that the Package relies on is not available
*/
MISSING_SYSTEM: 5 & PACKAGE_AVAILABILITY_CODES;
/**
* A dependency of the Package is not available
*/
MISSING_DEPENDENCY: 6 & PACKAGE_AVAILABILITY_CODES;
/**
* The Package is compatible with an older version of Foundry than the currently installed version
*/
REQUIRES_CORE_DOWNGRADE: 7 & PACKAGE_AVAILABILITY_CODES;
/**
* The Package is compatible with a newer version of Foundry than the currently installed version, and that version is Stable
*/
REQUIRES_CORE_UPGRADE_STABLE: 8 & PACKAGE_AVAILABILITY_CODES;
/**
* The Package is compatible with a newer version of Foundry than the currently installed version, and that version is not yet Stable
*/
REQUIRES_CORE_UPGRADE_UNSTABLE: 9 & PACKAGE_AVAILABILITY_CODES;
/**
* A required dependency is not compatible with the current version of Foundry
*/
REQUIRES_DEPENDENCY_UPDATE: 10 & PACKAGE_AVAILABILITY_CODES;
}>;
export type PACKAGE_AVAILABILITY_CODES = Brand<number, "constants.PACKAGE_AVAILABILITY_CODES">;
/**
* A safe password string which can be displayed
*/
export declare const PASSWORD_SAFE_STRING: "••••••••••••••••";
/**
* The allowed software update channels
*/
export declare const SOFTWARE_UPDATE_CHANNELS: Readonly<{
/**
* The Stable release channel
*/
stable: "SETUP.UpdateStable";
/**
* The User Testing release channel
*/
testing: "SETUP.UpdateTesting";
/**
* The Development release channel
*/
development: "SETUP.UpdateDevelopment";
/**
* The Prototype release channel
*/
prototype: "SETUP.UpdatePrototype";
}>;
export type SOFTWARE_UPDATE_CHANNELS = ValueOf<typeof SOFTWARE_UPDATE_CHANNELS>;
/**
* The default sorting density for manually ordering child objects within a parent
* @defaultValue `100000`
*/
export declare const SORT_INTEGER_DENSITY: number;
/**
* The allowed types of a TableResult document
* @see {@link https://foundryvtt.com/article/roll-tables/}
*/
export declare const TABLE_RESULT_TYPES: Readonly<{
/**
* Plain text or HTML scripted entries which will be output to Chat.
*/
TEXT: "text";
/**
* An in-World Document reference which will be linked to in the chat message.
*/
DOCUMENT: "document";
/**
* A Compendium Pack reference which will be linked to in the chat message.
* @deprecated "`CONST.TABLE_RESULT_TYPES.COMPENDIUM` is is deprecated in favor of {@linkcode CONST.TABLE_RESULT_TYPES.DOCUMENT}
* due to the "compendium" being merged with the "document" type." (since v13, until v15)
*/
get COMPENDIUM(): "pack";
}>;
export type TABLE_RESULT_TYPES = ValueOf<typeof TABLE_RESULT_TYPES>;
/**
* The allowed formats of a Journal Entry Page.
* @see {@link https://foundryvtt.com/article/journal/}
*/
export declare const JOURNAL_ENTRY_PAGE_FORMATS: Readonly<{
/**
* The page is formatted as HTML.
*/
HTML: 1 & JOURNAL_ENTRY_PAGE_FORMATS;
/**
* The page is formatted as Markdown.
*/
MARKDOWN: 2 & JOURNAL_ENTRY_PAGE_FORMATS;
}>;
export type JOURNAL_ENTRY_PAGE_FORMATS = Brand<number, "constants.JOURNAL_ENTRY_PAGE_FORMATS">;
/**
* Define the valid anchor locations for a Tooltip displayed on a Placeable Object
* @see {@linkcode foundry.helpers.interaction.TooltipManager}
*/
export declare const TEXT_ANCHOR_POINTS: Readonly<{
/**
* Anchor the tooltip to the center of the element.
*/
CENTER: 0 & TEXT_ANCHOR_POINTS;
/**
* Anchor the tooltip to the bottom of the element.
*/
BOTTOM: 1 & TEXT_ANCHOR_POINTS;
/**
* Anchor the tooltip to the top of the element.
*/
TOP: 2 & TEXT_ANCHOR_POINTS;
/**
* Anchor the tooltip to the left of the element.
*/
LEFT: 3 & TEXT_ANCHOR_POINTS;
/**
* Anchor the tooltip to the right of the element.
*/
RIGHT: 4 & TEXT_ANCHOR_POINTS;
}>;
export type TEXT_ANCHOR_POINTS = Brand<number, "constants.TEXT_ANCHOR_POINTS">;
/**
* Define the valid occlusion modes which a tile can use
* @remarks Foundry leaves a comment in the middle of the object: "// ROOF: 2; This mode is no longer supported so we don't use 2 for any other mode"
* @see {@link https://foundryvtt.com/article/tiles/}
*/
export declare const OCCLUSION_MODES: Readonly<{
/**
* Turns off occlusion, making the tile never fade while tokens are under it.
*/
NONE: 0 & OCCLUSION_MODES;
/**
* Causes the whole tile to fade when an actor token moves under it.
* @defaultValue
*/
FADE: 1 & OCCLUSION_MODES;
/**
* Causes the tile to reveal the background in the vicinity of an actor token under it. The radius is determined by the token's size.
*/
RADIAL: 3 & OCCLUSION_MODES;
/**
* Causes the tile to be partially revealed based on the vision of the actor, which does not need to be under the tile to see what's beneath it.
* This is useful for roofs on buildings where players could see through a window or door, viewing only a portion of what is obscured by the roof itself.
*/
VISION: 4 & OCCLUSION_MODES;
}>;
export type OCCLUSION_MODES = Brand<number, "constants.OCCLUSION_MODES">;
/**
* Alias for old tile occlusion modes definition
* @remarks Foundry leaves a comment in the middle of the object: "// ROOF: 2; This mode is no longer supported so we don't use 2 for any other mode"
* @privateRemarks Foundry just does `export const TILE_OCCLUSION_MODES = OCCLUSION_MODES` but we have to be un-DRY if we want a different brand
*/
export declare const TILE_OCCLUSION_MODES: {
/**
* Turns off occlusion, making the tile never fade while tokens are under it.
*/
NONE: 0 & TILE_OCCLUSION_MODES;
/**
* Causes the whole tile to fade when an actor token moves under it.
* @defaultValue
*/
FADE: 1 & TILE_OCCLUSION_MODES;
/**
* Causes the tile to reveal the background in the vicinity of an actor token under it. The radius is determined by the token's size.
*/
RADIAL: 3 & TILE_OCCLUSION_MODES;
/**
* Causes the tile to be partially revealed based on the vision of the actor, which does not need to be under the tile to see what's beneath it.
* This is useful for roofs on buildings where players could see through a window or door, viewing only a portion of what is obscured by the roof itself.
*/
VISION: 4 & TILE_OCCLUSION_MODES;
};
export type TILE_OCCLUSION_MODES = Brand<number, "constants.TILE_OCCLUSION_MODES">;
/**
* The occlusion modes that define the set of tokens that trigger occlusion.
*/
export declare const TOKEN_OCCLUSION_MODES: Readonly<{
/**
* Owned tokens that aren't hidden.
*/
OWNED: 0x1 & TOKEN_OCCLUSION_MODES;
/**
* Controlled tokens.
*/
CONTROLLED: 0x2 & TOKEN_OCCLUSION_MODES;
/**
* Hovered tokens that are visible.
*/
HOVERED: 0x4 & TOKEN_OCCLUSION_MODES;
/**
* Highlighted tokens that are visible.
*/
HIGHLIGHTED: 0x8 & TOKEN_OCCLUSION_MODES;
/**
* All visible tokens.
*/
VISIBLE: 0x10 & TOKEN_OCCLUSION_MODES;
}>;
export type TOKEN_OCCLUSION_MODES = Brand<number, "constants.TOKEN_OCCLUSION_MODES">;
/**
* Describe the various thresholds of token control upon which to show certain pieces of information
* @see {@link https://foundryvtt.com/article/tokens/}
*/
export declare const TOKEN_DISPLAY_MODES: Readonly<{
/**
* No information is displayed.
*/
NONE: 0 & TOKEN_DISPLAY_MODES;
/**
* Displayed when the token is controlled.
*/
CONTROL: 10 & TOKEN_DISPLAY_MODES;
/**
* Displayed when hovered by a GM or a user who owns the actor.
*/
OWNER_HOVER: 20 & TOKEN_DISPLAY_MODES;
/**
* Displayed when hovered by any user.
*/
HOVER: 30 & TOKEN_DISPLAY_MODES;
/**
* Always displayed for a GM or for a user who owns the actor.
*/
OWNER: 40 & TOKEN_DISPLAY_MODES;
/**
* Always displayed for everyone.
*/
ALWAYS: 50 & TOKEN_DISPLAY_MODES;
}>;
export type TOKEN_DISPLAY_MODES = Brand<number, "constants.TOKEN_DISPLAY_MODES">;
/**
* The allowed Token disposition types
* @see {@link https://foundryvtt.com/article/tokens/}
*/
export declare const TOKEN_DISPOSITIONS: Readonly<{
/**
* Displayed with a purple borders for owners and with no borders for others (and no pointer change).
*/
SECRET: -2 & TOKEN_DISPOSITIONS;
/**
* Displayed as an enemy with a red border.
*/
HOSTILE: -1 & TOKEN_DISPOSITIONS;
/**
* Displayed as neutral with a yellow border.
*/
NEUTRAL: 0 & TOKEN_DISPOSITIONS;
/**
* Displayed as an ally with a cyan border.
*/
FRIENDLY: 1 & TOKEN_DISPOSITIONS;
}>;
export type TOKEN_DISPOSITIONS = Brand<number, "constants.TOKEN_DISPOSITIONS">;
/**
* The allowed token turn markers modes.
*/
export declare const TOKEN_TURN_MARKER_MODES: Readonly<{
/**
* The turn marker is disabled for this token.
*/
DISABLED: 0 & TOKEN_TURN_MARKER_MODES;
/**
* The turn marker for this token is using the combat tracker settings (which could be disabled).
*/
DEFAULT: 1 & TOKEN_TURN_MARKER_MODES;
/**
* The turn marker is using the token settings (unless the combat tracker turn marker setting is disabled)
*/
CUSTOM: 2 & TOKEN_TURN_MARKER_MODES;
}>;
export type TOKEN_TURN_MARKER_MODES = Brand<number, "constants.TOKEN_TURN_MARKER_MODES">;
/**
* The possible shapes of Tokens.
*/
export declare const TOKEN_SHAPES: Readonly<{
/**
* Ellipse (Variant 1)
*/
ELLIPSE_1: 0 & TOKEN_SHAPES;
/**
* Ellipse (Variant 2)
*/
ELLIPSE_2: 1 & TOKEN_SHAPES;
/**
* Trapezoid (Variant 1)
*/
TRAPEZOID_1: 2 & TOKEN_SHAPES;
/**
* Trapezoid (Variant 2)
*/
TRAPEZOID_2: 3 & TOKEN_SHAPES;
/**
* Rectangle (Variant 1)
*/
RECTANGLE_1: 4 & TOKEN_SHAPES;
/**
* Rectangle (Variant 2)
*/
RECTANGLE_2: 5 & TOKEN_SHAPES;
}>;
export type TOKEN_SHAPES = Brand<number, "constants.TOKEN_SHAPES">;
/**
* Define the allowed User permission levels.
* Each level is assigned a value in ascending order. Higher levels grant more permissions.
* @see {@link https://foundryvtt.com/article/users/}
*/
export declare const USER_ROLES: Readonly<{
/**
* The User is blocked from taking actions in Foundry Virtual Tabletop.
* You can use this role to temporarily or permanently ban a user from joining the game.
*/
NONE: 0 & USER_ROLES;
/**
* The User is able to join the game with permissions available to a standard player.
* They cannot take some more advanced actions which require Trusted permissions, but they have the basic
* functionalities needed to operate in the virtual tabletop.
*/
PLAYER: 1 & USER_ROLES;
/**
* Similar to the Player role, except a Trusted User has the ability to perform some more advanced actions
* like create drawings, measured templates, or even to (optionally) upload media files to the server.
*/
TRUSTED: 2 & USER_ROLES;
/**
* A special User who has many of the same in-game controls as a Game Master User, but does not have the ability
* to perform administrative actions like changing User roles or modifying World-level settings.
*/
ASSISTANT: 3 & USER_ROLES;
/**
* A special User who has administrative control over this specific World.
* Game Masters behave quite differently than Players in that they have the ability to see all Documents and
* Objects within the world as well as the capability to configure World settings.
*/
GAMEMASTER: 4 & USER_ROLES;
}>;
export type USER_ROLES = Brand<number, "constants.USER_ROLES">;
/**
* Invert the User Role mapping to recover role names from a role integer
*/
export declare const USER_ROLE_NAMES: Readonly<{
/**
* The User is blocked from taking actions in Foundry Virtual Tabletop.
* You can use this role to temporarily or permanently ban a user from joining the game.
*/
"0": "NONE";
/**
* The User is able to join the game with permissions available to a standard player.
* They cannot take some more advanced actions which require Trusted permissions, but they have the basic
* functionalities needed to operate in the virtual tabletop.
*/
"1": "PLAYER";
/**
* Similar to the Player role, except a Trusted User has the ability to perform some more advanced actions
* like create drawings, measured templates, or even to (optionally) upload media files to the server.
*/
"2": "TRUSTED";
/**
* A special User who has many of the same in-game controls as a Game Master User, but does not have the
* ability to perform administrative actions like changing User roles or modifying World-level settings.
*/
"3": "ASSISTANT";
/**
* A special User who has administrative control over this specific World.
* Game Masters behave quite differently than Players in that they have the ability to see all Documents
* and Objects within the world as well as the capability to configure World settings.
*/
"4": "GAMEMASTER";
}>;
export type USER_ROLE_NAMES = ValueOf<typeof USER_ROLE_NAMES>;
/**
* An enumeration of the allowed types for a MeasuredTemplate embedded document
* @see {@link https://foundryvtt.com/article/measurement/}
*/
export declare const MEASURED_TEMPLATE_TYPES: Readonly<{
/**
* Circular templates create a radius around the starting point.
*/
CIRCLE: "circle";
/**
* Cones create an effect in the shape of a triangle or pizza slice from the starting point.
*/
CONE: "cone";
/**
* A rectangle uses the origin point as one of the corners, treating the origin as being inside of the rectangle's area.
*/
RECTANGLE: "rect";
/**
* A ray creates a single line that is one square in width and as long as you want it to be.
*/
RAY: "ray";
}>;
export type MEASURED_TEMPLATE_TYPES = ValueOf<typeof MEASURED_TEMPLATE_TYPES>;
export interface UserPermission {
disableGM: boolean;
hint: string;
label: string;
defaultRole: USER_ROLES;
}
/**
* Define the recognized User capabilities which individual Users or role levels may be permitted to perform
*/
export declare const USER_PERMISSIONS: DeepReadonly<{
/**
* @defaultValue
* ```typescript
* {
* label: "PERMISSION.ActorCreate",
* hint: "PERMISSION.ActorCreateHint",
* disableGM: false,
* defaultRole: USER_ROLES.ASSISTANT
* }
* ```
*/
ACTOR_CREATE: UserPermission;
/**
* @defaultValue
* ```typescript
* {
* label: "PERMISSION.BroadcastAudio",
* hint: "PERMISSION.BroadcastAudioHint",
* disableGM: true,
* defaultRole: USER_ROLES.TRUSTED
* }
* ```
*/
BROADCAST_AUDIO: UserPermission;
/**
* @defaultValue
* ```typescript
* {
* label: "PERMISSION.BroadcastVideo",
* hint: "PERMISSION.BroadcastVideoHint",
* disableGM: true,
* defaultRole: USER_ROLES.TRUSTED
* }
* ```
*/
BROADCAST_VIDEO: UserPermission;
/**
* @defaultValue
* ```typescript
* {
* label: "PERMISSION.CardsCreate",
* hint: "PERMISSION.CardsCreateHint",
* disableGM: false,
* defaultRole: USER_ROLES.ASSISTANT
* }
* ```
*/
CARDS_CREATE: UserPermission;
/**
* @defaultValue
* ```typescript
* {
* label: "PERMISSION.DrawingCreate",
* hint: "PERMISSION.DrawingCreateHint",
* disableGM: false,
* defaultRole: USER_ROLES.TRUSTED
* }
* ```
*/
DRAWING_CREATE: UserPermission;
/**
* @defaultValue
* ```typescript
* {
* label: "PERMISSION.ItemCreate",
* hint: "PERMISSION.ItemCreateHint",
* disableGM: false,
* defaultRole: USER_ROLES.ASSISTANT
* }
* ```
*/
ITEM_CREATE: UserPermission;
/**
* @defaultValue
* ```typescript
* {
* label: "PERMISSION.FilesBrowse",
* hint: "PERMISSION.FilesBrowseHint",
* disableGM: false,
* defaultRole: USER_ROLES.TRUSTED
* }
* ```
*/
FILES_BROWSE: UserPermission;
/**
* @defaultValue
* ```typescript
* {
* label: "PERMISSION.FilesUpload",
* hint: "PERMISSION.FilesUploadHint",
* disableGM: false,
* defaultRole: USER_ROLES.ASSISTANT
* }
* ```
*/
FILES_UPLOAD: UserPermission;
/**
* @defaultValue
* ```typescript
* {
* label: "PERMISSION.JournalCreate"
* hint: "PERMISSION.JournalCreateHint",
* disableGM: false,
* defaultRole: USER_ROLES.TRUSTED
* }
* ```
*/
JOURNAL_CREATE: UserPermission;
/**
* @defaultValue
* ```typescript
* {
* label: "PERMISSION.MacroScript",
* hint: "PERMISSION.MacroScriptHint",
* disableGM: false,
* defaultRole: USER_ROLES.PLAYER
* }
* ```
*/
MACRO_SCRIPT: UserPermission;
/**
* @defaultValue
* ```typescript
* {
* label: "PERMISSION.ManualRolls",
* hint: "PERMISSION.ManualRollsHint",
* disableGM: true,
* defaultRole: USER_ROLES.TRUSTED
* }
* ```
*/
MANUAL_ROLLS: UserPermission;
/**
* @defaultValue
* ```typescript
* {
* label: "PERMISSION.MessageWhisper",
* hint: "PERMISSION.MessageWhisperHint",
* disableGM: false,
* defaultRole: USER_ROLES.PLAYER
* }
* ```
*/
MESSAGE_WHISPER: UserPermission;
/**
* @defaultValue
* ```typescript
* {
* label: "PERMISSION.NoteCreate",
* hint: "PERMISSION.NoteCreateHint",
* disableGM: false,
* defaultRole: USER_ROLES.TRUSTED
* }
* ```
*/
NOTE_CREATE: UserPermission;
/**
* @defaultValue
* ```typescript
* {
* label: "PERMISSION.NoteCreate",
* hint: "PERMISSION.NoteCreateHint",
* disableGM: false,
* defaultRole: USER_ROLES.TRUSTED
* }
* ```
*/
PING_CANVAS: UserPermission;
/**
* @defaultValue
* ```typescript
* {
* label: "PERMISSION.PlaylistCreate",
* hint: "PERMISSION.PlaylistCreateHint",
* disableGM: false,
* defaultRole: USER_ROLES.ASSISTANT
* }
* ```
*/
PLAYLIST_CREATE: UserPermission;
/**
* @defaultValue
* ```typescript
* {
* label: "PERMISSION.SettingsModify",
* hint: "PERMISSION.SettingsModifyHint",
* disableGM: false,
* defaultRole: USER_ROLES.ASSISTANT
* }
* ```
*/
SETTINGS_MODIFY: UserPermission;
/**
* @defaultValue
* ```typescript
* {
* label: "PERMISSION.ShowCursor",
* hint: "PERMISSION.ShowCursorHint",
* disableGM: true,
* defaultRole: USER_ROLES.PLAYER
* }
* ```
*/
SHOW_CURSOR: UserPermission;
/**
* @defaultValue
* ```typescript
* {
* label: "PERMISSION.ShowRuler",
* hint: "PERMISSION.ShowRulerHint",
* disableGM: true,
* defaultRole: USER_ROLES.PLAYER
* }
* ```
*/
SHOW_RULER: UserPermission;
/**
* @defaultValue
* ```typescript
* {
* label: "PERMISSION.TemplateCreate",
* hint: "PERMISSION.TemplateCreateHint",
* disableGM: false,
* defaultRole: USER_ROLES.PLAYER
* }
* ```
*/
TEMPLATE_CREATE: UserPermission;
/**
* @defaultValue
* ```typescript
* {
* label: "PERMISSION.TokenCreate",
* hint: "PERMISSION.TokenCreateHint",
* disableGM: false,
* defaultRole: USER_ROLES.ASSISTANT
* }
* ```
*/
TOKEN_CREATE: UserPermission;
/**
* @defaultValue
* ```typescript
* {
* label: "PERMISSION.TokenDelete",
* hint: "PERMISSION.TokenDeleteHint",
* disableGM: false,
* defaultRole: USER_ROLES.ASSISTANT
* }
* ```
*/
TOKEN_DELETE: UserPermission;
/**
* @defaultValue
* ```typescript
* {
* label: "PERMISSION.TokenConfigure",
* hint: "PERMISSION.TokenConfigureHint",
* disableGM: false,
* defaultRole: USER_ROLES.TRUSTED
* }
* ```
*/
TOKEN_CONFIGURE: UserPermission;
/**
* @defaultValue
* ```typescript
* {
* label: "PERMISSION.WallDoors",
* hint: "PERMISSION.WallDoorsHint",
* disableGM: false,
* defaultRole: USER_ROLES.PLAYER
* }
* ```
*/
WALL_DOORS: UserPermission;
/**
* @defaultValue
* ```ts
* {
* label: "PERMISSION.QueryUser",
* hint: "PERMISSION.QueryUserHint",
* disableGM: false,
* defaultRole: USER_ROLES.PLAYER
* }
* ```
*/
QUERY_USER: UserPermission;
}>;
export type USER_PERMISSIONS = keyof typeof USER_PERMISSIONS;
/**
* The allowed directions of effect that a Wall can have
* @see {@link https://foundryvtt.com/article/walls/}
*/
export declare const WALL_DIRECTIONS: Readonly<{
/**
* The wall collides from both directions.
*/
BOTH: 0 & WALL_DIRECTIONS;
/**
* The wall collides only when a ray strikes its left side.
*/
LEFT: 1 & WALL_DIRECTIONS;
/**
* The wall collides only when a ray strikes its right side.
*/
RIGHT: 2 & WALL_DIRECTIONS;
}>;
export type WALL_DIRECTIONS = Brand<number, "constants.WALL_DIRECTIONS">;
/**
* The allowed door types which a Wall may contain
* @see {@link https://foundryvtt.com/article/walls/}
*/
export declare const WALL_DOOR_TYPES: Readonly<{
/**
* The wall does not contain a door.
*/
NONE: 0 & WALL_DOOR_TYPES;
/**
* The wall contains a regular door.
*/
DOOR: 1 & WALL_DOOR_TYPES;
/**
* The wall contains a secret door.
*/
SECRET: 2 & WALL_DOOR_TYPES;
}>;
export type WALL_DOOR_TYPES = Brand<number, "constants.WALL_DOOR_TYPES">;
/**
* The allowed door states which may describe a Wall that contains a door
* @see {@link https://foundryvtt.com/article/walls/}
*/
export declare const WALL_DOOR_STATES: Readonly<{
/**
* The door is closed.
*/
CLOSED: 0 & WALL_DOOR_STATES;
/**
* The door is open.
*/
OPEN: 1 & WALL_DOOR_STATES;
/**
* The door is closed and locked.
*/
LOCKED: 2 & WALL_DOOR_STATES;
}>;
export type WALL_DOOR_STATES = Brand<number, "constants.WALL_DOOR_STATES">;
/**
* The possible ways to interact with a door
*/
export declare const WALL_DOOR_INTERACTIONS: readonly ["open", "close", "lock", "unlock", "test"];
export type WALL_DOOR_INTERACTIONS = ValueOf<typeof WALL_DOOR_INTERACTIONS>;
/**
* The wall properties which restrict the way interaction occurs with a specific wall
*/
export declare const WALL_RESTRICTION_TYPES: readonly ["light", "sight", "sound", "move"];
export type WALL_RESTRICTION_TYPES = ValueOf<typeof WALL_RESTRICTION_TYPES>;
/**
* The types of sensory collision which a Wall may impose
* @see {@link https://foundryvtt.com/article/walls/}
*/
export declare const WALL_SENSE_TYPES: Readonly<{
/**
* Senses do not collide with this wall.
*/
NONE: 0 & WALL_SENSE_TYPES;
/**
* Senses collide with this wall.
*/
LIMITED: 10 & WALL_SENSE_TYPES;
/**
* Senses collide with the second intersection, bypassing the first.
*/
NORMAL: 20 & WALL_SENSE_TYPES;
/**
* Senses bypass the wall within a certain proximity threshold.
*/
PROXIMITY: 30 & WALL_SENSE_TYPES;
/**
* Senses bypass the wall outside a certain proximity threshold.
*/
DISTANCE: 40 & WALL_SENSE_TYPES;
}>;
export type WALL_SENSE_TYPES = Brand<number, "constants.WALL_SENSE_TYPES">;
/**
* The types of movement collision which a Wall may impose
* @see {@link https://foundryvtt.com/article/walls/}
* @privateRemarks Foundry just does `NONE: WALL_SENSE_TYPES.NONE` etc but we want to have a separate brand
*/
export declare const WALL_MOVEMENT_TYPES: Readonly<{
/**
* Movement does not collide with this wall.
*/
NONE: 0 & WALL_MOVEMENT_TYPES;
/**
* Movement collides with this wall.
*/
NORMAL: 20 & WALL_MOVEMENT_TYPES;
}>;
export type WALL_MOVEMENT_TYPES = Brand<number, "constants.WALL_MOVEMENT_TYPES">;
/**
* The possible precedence values a Keybinding might run in
* @see {@link https://foundryvtt.com/article/keybinds/}
*/
export declare const KEYBINDING_PRECEDENCE: Readonly<{
/**
* Runs in the first group along with other PRIORITY keybindings.
*/
PRIORITY: 0 & KEYBINDING_PRECEDENCE;
/**
* Runs after the PRIORITY group along with other NORMAL keybindings.
*/
NORMAL: 1 & KEYBINDING_PRECEDENCE;
/**
* Runs in the last group along with other DEFERRED keybindings.
*/
DEFERRED: 2 & KEYBINDING_PRECEDENCE;
}>;
export type KEYBINDING_PRECEDENCE = Brand<number, "constants.KEYBINDING_PRECEDENCE">;
/**
* Directories in the public storage path.
*/
export const FILE_PICKER_PUBLIC_DIRS: readonly ["cards", "css", "fonts", "icons", "lang", "scripts", "sounds", "ui"];
export type FILE_PICKER_PUBLIC_DIRS = ValueOf<typeof FILE_PICKER_PUBLIC_DIRS>;
/**
* The allowed set of HTML template extensions
*/
export declare const HTML_FILE_EXTENSIONS: Readonly<{
handlebars: "text/x-handlebars-template";
hbs: "text/x-handlebars-template";
html: "text/html";
}>;
export declare type HTML_FILE_EXTENSIONS = keyof typeof HTML_FILE_EXTENSIONS;
/**
* The supported file extensions for image-type files, and their corresponding mime types.
*/
export declare const IMAGE_FILE_EXTENSIONS: Readonly<{
apng: "image/apng";
avif: "image/avif";
bmp: "image/bmp";
gif: "image/gif";
jpeg: "image/jpeg";
jpg: "image/jpeg";
png: "image/png";
svg: "image/svg+xml";
tiff: "image/tiff";
webp: "image/webp";
}>;
export type IMAGE_FILE_EXTENSIONS = keyof typeof IMAGE_FILE_EXTENSIONS;
/**
* The supported file extensions for video-type files, and their corresponding mime types.
*/
export declare const VIDEO_FILE_EXTENSIONS: Readonly<{
m4v: "video/mp4";
mp4: "video/mp4";
ogv: "video/ogg";
webm: "video/webm";
}>;
export type VIDEO_FILE_EXTENSIONS = keyof typeof VIDEO_FILE_EXTENSIONS;
/**
* The supported file extensions for audio-type files, and their corresponding mime types.
*/
export declare const AUDIO_FILE_EXTENSIONS: Readonly<{
aac: "audio/aac";
flac: "audio/flac";
m4a: "audio/mp4";
mid: "audio/midi";
mp3: "audio/mpeg";
ogg: "audio/ogg";
opus: "audio/opus";
wav: "audio/wav";
webm: "audio/webm";
}>;
export type AUDIO_FILE_EXTENSIONS = keyof typeof AUDIO_FILE_EXTENSIONS;
/**
* The supported file extensions for text files, and their corresponding mime types.
*/
export declare const TEXT_FILE_EXTENSIONS: Readonly<{
csv: "text/csv";
json: "application/json";
md: "text/markdown";
pdf: "application/pdf";
tsv: "text/tab-separated-values";
txt: "text/plain";
xml: "application/xml";
yml: "application/yaml";
yaml: "application/yaml";
}>;
export type TEXT_FILE_EXTENSIONS = keyof typeof TEXT_FILE_EXTENSIONS;
/**
* Supported file extensions for font files, and their corresponding mime types.
*/
export declare const FONT_FILE_EXTENSIONS: Readonly<{
otf: "font/otf";
ttf: "font/ttf";
woff: "font/woff";
woff2: "font/woff2";
}>;
export type FONT_FILE_EXTENSIONS = keyof typeof FONT_FILE_EXTENSIONS;
/**
* Supported file extensions for 3D files, and their corresponding mime types.
*/
export declare const GRAPHICS_FILE_EXTENSIONS: Readonly<{
fbx: "application/octet-stream";
glb: "model/gltf-binary";
gltf: "model/gltf+json";
mtl: "model/mtl";
obj: "model/obj";
stl: "model/stl";
usdz: "model/vnd.usdz+zip";
}>;
export type GRAPHICS_FILE_EXTENSIONS = keyof typeof GRAPHICS_FILE_EXTENSIONS;
/**
* @privateRemarks Video is spread in after audio, so its `ogg` and `webm` keys override
*/
interface _UPLOADABLE_FILE_EXTENSIONS
extends Identity<typeof IMAGE_FILE_EXTENSIONS>,
Omit<typeof AUDIO_FILE_EXTENSIONS, "ogg" | "webm">,
Identity<typeof VIDEO_FILE_EXTENSIONS>,
Identity<typeof TEXT_FILE_EXTENSIONS>,
Identity<typeof FONT_FILE_EXTENSIONS>,
Identity<typeof GRAPHICS_FILE_EXTENSIONS> {}
export declare const UPLOADABLE_FILE_EXTENSIONS: Readonly<_UPLOADABLE_FILE_EXTENSIONS>;
export type UPLOADABLE_FILE_EXTENSIONS = keyof typeof UPLOADABLE_FILE_EXTENSIONS;
/**
* An enumeratio