/** * Copyright (c) 2023-2024 mol* contributors, licensed under MIT, See LICENSE file for more info. * * @author Adam Midlik */ import { RequiredField } from '../generic/field-schema.js'; import { SimpleParamsSchema } from '../generic/params-schema.js'; import { NodeFor, ParamsOfKind, SubtreeOfKind, TreeFor, TreeSchema } from '../generic/tree-schema.js'; import { MolstarParseFormatT } from '../mvs/param-types.js'; /** Schema for `MolstarTree` (intermediate tree representation between `MVSTree` and a real Molstar state) */ export declare const MolstarTreeSchema: TreeSchema<{ download: SimpleParamsSchema<{ /** Specifies whether file is downloaded as bytes array or string */ is_binary: RequiredField; url: RequiredField; }>; parse: SimpleParamsSchema<{ /** File format */ format: RequiredField; }>; coordinates: SimpleParamsSchema<{ /** File format */ format: RequiredField; }>; trajectory: SimpleParamsSchema<{ block_header: RequiredField; block_index: RequiredField; /** File format */ format: RequiredField; }>; trajectory_with_coordinates: SimpleParamsSchema<{ /** Coordinates reference */ coordinates_ref: RequiredField; }>; topology_with_coordinates: SimpleParamsSchema<{ format: RequiredField; coordinates_ref: RequiredField; }>; model: SimpleParamsSchema; block_header: RequiredField; block_index: RequiredField; model_index: RequiredField; assembly_id: RequiredField; radius: RequiredField; ijk_min: RequiredField<[number, number, number]>; ijk_max: RequiredField<[number, number, number]>; coordinates_ref: RequiredField; }, "model_index">>; structure: SimpleParamsSchema; block_header: RequiredField; block_index: RequiredField; model_index: RequiredField; assembly_id: RequiredField; radius: RequiredField; ijk_min: RequiredField<[number, number, number]>; ijk_max: RequiredField<[number, number, number]>; coordinates_ref: RequiredField; }, "block_header" | "block_index" | "model_index" | "coordinates_ref">>; root: SimpleParamsSchema<{}>; transform: SimpleParamsSchema<{ rotation: RequiredField; translation: RequiredField; rotation_center: RequiredField<"centroid" | import("../mvs/param-types.js").Vector3 | null>; matrix: RequiredField; }>; instance: SimpleParamsSchema<{ rotation: RequiredField; translation: RequiredField; rotation_center: RequiredField<"centroid" | import("../mvs/param-types.js").Vector3 | null>; matrix: RequiredField; }>; component: SimpleParamsSchema<{ selector: RequiredField; }>; component_from_uri: SimpleParamsSchema<{ field_name: RequiredField; field_values: RequiredField; uri: RequiredField; format: RequiredField; schema: RequiredField; block_header: RequiredField; block_index: RequiredField; category_name: RequiredField; field_remapping: RequiredField<{ [x: string]: string | null; }>; }>; component_from_source: SimpleParamsSchema<{ field_name: RequiredField; field_values: RequiredField; schema: RequiredField; block_header: RequiredField; block_index: RequiredField; category_name: RequiredField; field_remapping: RequiredField<{ [x: string]: string | null; }>; }>; representation: import("../generic/params-schema.js").UnionParamsSchema<"type", { cartoon: SimpleParamsSchema<{ size_factor: RequiredField; tubular_helices: RequiredField; }>; backbone: SimpleParamsSchema<{ size_factor: RequiredField; }>; ball_and_stick: SimpleParamsSchema<{ size_factor: RequiredField; ignore_hydrogens: RequiredField; }>; line: SimpleParamsSchema<{ size_factor: RequiredField; ignore_hydrogens: RequiredField; }>; spacefill: SimpleParamsSchema<{ size_factor: RequiredField; ignore_hydrogens: RequiredField; }>; carbohydrate: SimpleParamsSchema<{ size_factor: RequiredField; }>; surface: SimpleParamsSchema<{ surface_type: RequiredField<"gaussian" | "molecular">; size_factor: RequiredField; ignore_hydrogens: RequiredField; }>; }>; volume: SimpleParamsSchema<{ channel_id: RequiredField; }>; volume_representation: import("../generic/params-schema.js").UnionParamsSchema<"type", { isosurface: SimpleParamsSchema<{ relative_isovalue: RequiredField; absolute_isovalue: RequiredField; show_wireframe: RequiredField; show_faces: RequiredField; }>; grid_slice: SimpleParamsSchema<{ dimension: RequiredField<"x" | "y" | "z">; absolute_index: RequiredField; relative_index: RequiredField; relative_isovalue: RequiredField; absolute_isovalue: RequiredField; }>; }>; color: SimpleParamsSchema<{ color: RequiredField; selector: RequiredField; }>; color_from_uri: SimpleParamsSchema<{ field_name: RequiredField; palette: RequiredField; selector: RequiredField; uri: RequiredField; format: RequiredField; schema: RequiredField; block_header: RequiredField; block_index: RequiredField; category_name: RequiredField; field_remapping: RequiredField<{ [x: string]: string | null; }>; }>; color_from_source: SimpleParamsSchema<{ field_name: RequiredField; palette: RequiredField; selector: RequiredField; schema: RequiredField; block_header: RequiredField; block_index: RequiredField; category_name: RequiredField; field_remapping: RequiredField<{ [x: string]: string | null; }>; }>; clip: import("../generic/params-schema.js").UnionParamsSchema<"type", { plane: SimpleParamsSchema<{ normal: RequiredField; point: RequiredField; check_transform: RequiredField; invert: RequiredField; variant: RequiredField<"object" | "pixel">; }>; sphere: SimpleParamsSchema<{ center: RequiredField; radius: RequiredField; check_transform: RequiredField; invert: RequiredField; variant: RequiredField<"object" | "pixel">; }>; box: SimpleParamsSchema<{ center: RequiredField; size: RequiredField; rotation: RequiredField; check_transform: RequiredField; invert: RequiredField; variant: RequiredField<"object" | "pixel">; }>; }>; opacity: SimpleParamsSchema<{ opacity: RequiredField; }>; label: SimpleParamsSchema<{ text: RequiredField; }>; label_from_uri: SimpleParamsSchema<{ field_name: RequiredField; text_format: RequiredField; group_by_fields: RequiredField; uri: RequiredField; format: RequiredField; schema: RequiredField; block_header: RequiredField; block_index: RequiredField; category_name: RequiredField; field_remapping: RequiredField<{ [x: string]: string | null; }>; }>; label_from_source: SimpleParamsSchema<{ field_name: RequiredField; text_format: RequiredField; group_by_fields: RequiredField; schema: RequiredField; block_header: RequiredField; block_index: RequiredField; category_name: RequiredField; field_remapping: RequiredField<{ [x: string]: string | null; }>; }>; tooltip: SimpleParamsSchema<{ text: RequiredField; }>; tooltip_from_uri: SimpleParamsSchema<{ field_name: RequiredField; text_format: RequiredField; uri: RequiredField; format: RequiredField; schema: RequiredField; block_header: RequiredField; block_index: RequiredField; category_name: RequiredField; field_remapping: RequiredField<{ [x: string]: string | null; }>; }>; tooltip_from_source: SimpleParamsSchema<{ field_name: RequiredField; text_format: RequiredField; schema: RequiredField; block_header: RequiredField; block_index: RequiredField; category_name: RequiredField; field_remapping: RequiredField<{ [x: string]: string | null; }>; }>; focus: SimpleParamsSchema<{ direction: RequiredField; up: RequiredField; radius: RequiredField; radius_factor: RequiredField; radius_extent: RequiredField; }>; camera: SimpleParamsSchema<{ target: RequiredField; position: RequiredField; up: RequiredField; near: RequiredField; }>; canvas: SimpleParamsSchema<{ background_color: RequiredField; }>; primitives: SimpleParamsSchema<{ color: RequiredField; label_color: RequiredField; tooltip: RequiredField; opacity: RequiredField; label_opacity: RequiredField; label_show_tether: RequiredField; label_tether_length: RequiredField; label_attachment: RequiredField; label_background_color: RequiredField; snapshot_key: RequiredField; instances: RequiredField; }>; primitives_from_uri: SimpleParamsSchema<{ uri: RequiredField; format: RequiredField<"mvs-node-json">; references: RequiredField; }>; primitive: import("../generic/params-schema.js").UnionParamsSchema<"kind", { mesh: SimpleParamsSchema<{ vertices: RequiredField; indices: RequiredField; triangle_groups: RequiredField; group_colors: RequiredField<{ [x: number]: import("../mvs/param-types.js").ColorT; }>; group_tooltips: RequiredField<{ [x: number]: string; }>; color: RequiredField; tooltip: RequiredField; show_triangles: RequiredField; show_wireframe: RequiredField; wireframe_width: RequiredField; wireframe_color: RequiredField; }>; lines: SimpleParamsSchema<{ vertices: RequiredField; indices: RequiredField; line_groups: RequiredField; group_colors: RequiredField<{ [x: number]: import("../mvs/param-types.js").ColorT; }>; group_tooltips: RequiredField<{ [x: number]: string; }>; group_widths: RequiredField<{ [x: number]: number; }>; color: RequiredField; tooltip: RequiredField; width: RequiredField; }>; tube: SimpleParamsSchema<{ tooltip: RequiredField; start: RequiredField; end: RequiredField; radius: RequiredField; dash_length: RequiredField; color: RequiredField; }>; arrow: SimpleParamsSchema<{ start: RequiredField; end: RequiredField; direction: RequiredField; length: RequiredField; show_start_cap: RequiredField; start_cap_length: RequiredField; start_cap_radius: RequiredField; show_end_cap: RequiredField; end_cap_length: RequiredField; end_cap_radius: RequiredField; show_tube: RequiredField; tube_radius: RequiredField; tube_dash_length: RequiredField; color: RequiredField; tooltip: RequiredField; }>; distance_measurement: SimpleParamsSchema<{ label_template: RequiredField; label_size: RequiredField; label_auto_size_scale: RequiredField; label_auto_size_min: RequiredField; label_color: RequiredField; start: RequiredField; end: RequiredField; radius: RequiredField; dash_length: RequiredField; color: RequiredField; }>; angle_measurement: SimpleParamsSchema<{ a: RequiredField; b: RequiredField; c: RequiredField; label_template: RequiredField; label_size: RequiredField; label_auto_size_scale: RequiredField; label_auto_size_min: RequiredField; label_color: RequiredField; show_vector: RequiredField; vector_color: RequiredField; vector_radius: RequiredField; show_section: RequiredField; section_color: RequiredField; section_radius: RequiredField; section_radius_scale: RequiredField; }>; label: SimpleParamsSchema<{ position: RequiredField; text: RequiredField; label_size: RequiredField; label_color: RequiredField; label_offset: RequiredField; }>; ellipse: SimpleParamsSchema<{ color: RequiredField; as_circle: RequiredField; center: RequiredField; major_axis: RequiredField; minor_axis: RequiredField; major_axis_endpoint: RequiredField; minor_axis_endpoint: RequiredField; radius_major: RequiredField; radius_minor: RequiredField; theta_start: RequiredField; theta_end: RequiredField; tooltip: RequiredField; }>; ellipsoid: SimpleParamsSchema<{ color: RequiredField; center: RequiredField; major_axis: RequiredField; minor_axis: RequiredField; major_axis_endpoint: RequiredField; minor_axis_endpoint: RequiredField; radius: RequiredField; radius_extent: RequiredField; tooltip: RequiredField; }>; box: SimpleParamsSchema<{ center: RequiredField; extent: RequiredField; show_faces: RequiredField; face_color: RequiredField; show_edges: RequiredField; edge_radius: RequiredField; edge_color: RequiredField; tooltip: RequiredField; }>; }>; }, "root">; /** Node kind in a `MolstarTree` */ export type MolstarKind = keyof typeof MolstarTreeSchema.nodes; /** Node in a `MolstarTree` */ export type MolstarNode = NodeFor; /** Params for a specific node kind in a `MolstarTree` */ export type MolstarNodeParams = ParamsOfKind; /** Intermediate tree representation between `MVSTree` and a real Molstar state */ export type MolstarTree = TreeFor; /** Any subtree in a `MolstarTree` (e.g. its root doesn't need to be 'root') */ export type MolstarSubtree = SubtreeOfKind;