/**
 * @license
 * Copyright 2019 Google LLC
 * SPDX-License-Identifier: Apache-2.0
 */
import type { ConstantProvider } from '../common/constants.js';
import type { Measurable } from './base.js';
import type { InRowSpacer } from './in_row_spacer.js';
import type { InputConnection } from './input_connection.js';
/**
 * An object representing a single row on a rendered block and all of its
 * subcomponents.
 */
export declare class Row {
    type: number;
    /**
     * An array of elements contained in this row.
     */
    elements: Measurable[];
    /**
     * The height of the row.
     */
    height: number;
    /**
     * The width of the row, from the left edge of the block to the right.
     * Does not include child blocks unless they are inline.
     */
    width: number;
    /**
     * The minimum height of the row.
     */
    minHeight: number;
    /**
     * The minimum width of the row, from the left edge of the block to the
     * right. Does not include child blocks unless they are inline.
     */
    minWidth: number;
    /**
     * The width of the row, from the left edge of the block to the edge of the
     * block or any connected child blocks.
     */
    widthWithConnectedBlocks: number;
    /**
     * The Y position of the row relative to the origin of the block's svg
     * group.
     */
    yPos: number;
    /**
     * The X position of the row relative to the origin of the block's svg
     * group.
     */
    xPos: number;
    /**
     * Whether the row has any external inputs.
     */
    hasExternalInput: boolean;
    /**
     * Whether the row has any statement inputs.
     */
    hasStatement: boolean;
    /**
     * Where the left edge of all of the statement inputs on the block should
     * be. This makes sure that statement inputs which are proceded by fields
     * of varius widths are all aligned.
     */
    statementEdge: number;
    /**
     * Whether the row has any inline inputs.
     */
    hasInlineInput: boolean;
    /**
     * Whether the row has any dummy inputs.
     */
    hasDummyInput: boolean;
    /**
     * Whether the row has a jagged edge.
     */
    hasJaggedEdge: boolean;
    notchOffset: number;
    /**
     * Alignment of the row.
     */
    align: number | null;
    protected readonly constants_: ConstantProvider;
    /**
     * @param constants The rendering constants provider.
     */
    constructor(constants: ConstantProvider);
    /**
     * Get the last input on this row, if it has one.
     *
     * @returns The last input on the row, or null.
     */
    getLastInput(): InputConnection | null;
    /**
     * Inspect all subcomponents and populate all size properties on the row.
     */
    measure(): void;
    /**
     * Determines whether this row should start with an element spacer.
     *
     * @returns Whether the row should start with a spacer.
     */
    startsWithElemSpacer(): boolean;
    /**
     * Determines whether this row should end with an element spacer.
     *
     * @returns Whether the row should end with a spacer.
     */
    endsWithElemSpacer(): boolean;
    /**
     * Convenience method to get the first spacer element on this row.
     *
     * @returns The first spacer element on this row.
     */
    getFirstSpacer(): InRowSpacer | null;
    /**
     * Convenience method to get the last spacer element on this row.
     *
     * @returns The last spacer element on this row.
     */
    getLastSpacer(): InRowSpacer | null;
}
//# sourceMappingURL=row.d.ts.map