import type { Signal } from "@preact/signals-core";
import { TAnchor } from "../../components/canvas/anchors";
import { Block, TBlock } from "../../components/canvas/blocks/Block";
import { ESelectionStrategy } from "../../utils/types/types";
import { AnchorState } from "../anchor/Anchor";
import { BlockListStore } from "./BlocksList";
export type TBlockId = string | number | symbol;
export declare const IS_BLOCK_TYPE: "Block";
export declare class BlockState<T extends TBlock = TBlock> {
    readonly store: BlockListStore;
    static fromTBlock(store: BlockListStore, block: TBlock): BlockState<TBlock>;
    $state: Signal<T>;
    get id(): TBlockId;
    get x(): number;
    get y(): number;
    get width(): number;
    get height(): number;
    get selected(): boolean;
    readonly $anchorStates: Signal<AnchorState[]>;
    readonly $geometry: import("@preact/signals-core").ReadonlySignal<{
        x: number;
        y: number;
        width: number;
        height: number;
    }>;
    $anchorIndexs: import("@preact/signals-core").ReadonlySignal<Map<string, number>>;
    $anchors: import("@preact/signals-core").ReadonlySignal<TAnchor[]>;
    $selectedAnchors: import("@preact/signals-core").ReadonlySignal<AnchorState[]>;
    private blockView;
    constructor(store: BlockListStore, block: T);
    onAnchorSelected(anchorId: AnchorState["id"], selected: boolean): void;
    getSelectedAnchor(): AnchorState;
    getAnchorState(id: AnchorState["id"]): AnchorState;
    updateXY(x: number, y: number, forceUpdate?: boolean): void;
    setViewComponent(blockComponent: Block): void;
    getViewComponent(): Block<TBlock<{}>, import("../../components/canvas/blocks/Block").TBlockProps>;
    getConnections(): import("../..").ConnectionState<import("../..").TConnection>[];
    setSelection(selected: boolean, strategy?: ESelectionStrategy): void;
    clearAnchorsSelection(): void;
    setName(newName: string): void;
    updateAnchors(anchors: TAnchor[]): void;
    updateBlock(block: Partial<TBlock>): void;
    getAnchorById(anchorId: string): AnchorState;
    asTBlock(): TBlock;
}
export declare function mapToTBlock(blockState: BlockState): TBlock;
export declare function mapToBlockId(blockState: BlockState): TBlockId;
