> $options * @return mixed|null */ public function getData(array $options = []): mixed; /** * Returns all widget options to be used in the frontend. * * The given $options are not meant to be persisted, but only to * overwrite the default values one time. * * You can validate the options or simply return: * return array_merge($this->options, $options); * * @param array> $options * @return array> */ public function getOptions(array $options = []): array; /** * Sets one widget option, both for internal use and for frontend rendering. * * The given option should be persisted and permanently overwrite the internal option. */ public function setOption(string $name, string|bool|int $value): void; /** * Return a list of granted syntax string. * If ANY of the given permission strings matches, access is granted. * * @return string[] */ public function getPermissions(): array; /** * Returns the template, which is used to render the widget. */ public function getTemplateName(): string; /** * Whether this widget can be configured with options. */ public function hasForm(): bool; /** * A form to edit the widget options or null, if it can't be configured. */ public function getForm(): ?Form; /** * Whether this is a widget that is supposed to be selectable by the end-user. */ public function isInternal(): bool; }