import { type AnyNode, type ColumnNode as ColumnNodeType, type DownspoutNode as DownspoutNodeType, type GutterNode as GutterNodeType, type LeanToExtensionNode, type RoofNode as RoofNodeType, type RoofSegmentNode as RoofSegmentNodeType, type WallNode } from '@pascal-app/core'; import { type FreestandingCanopyJoint } from './canopy-joint.js'; import { type LeanToCornerJoint, type LeanToCornerSide } from './corner-joint.js'; export declare const LEFT_CORNER_POST_INDEX = -1001; export declare const RIGHT_CORNER_POST_INDEX = -1002; export declare function leanToCornerPostIndex(side: LeanToCornerSide): number; type LeanToManagedRole = 'roof' | 'roof-segment' | 'gutter' | 'downspout' | 'post'; export type LeanToPostSide = 'high' | 'low'; export type LeanToDrainageSide = 'primary' | 'opposite'; export type LeanToRoofPlane = 'primary' | 'opposite'; export type LeanToRoofMaterialPatch = Pick; export declare function isManagedLeanToNode(node: AnyNode, leanToId: LeanToExtensionNode['id'], role?: LeanToManagedRole): boolean; export declare function isManagedLeanToPost(column: ColumnNodeType, leanToId: LeanToExtensionNode['id']): boolean; export declare function managedLeanToPostIndex(column: ColumnNodeType): number | null; export declare function managedLeanToPostSide(column: ColumnNodeType): LeanToPostSide; export declare function managedLeanToDrainageSide(node: GutterNodeType | DownspoutNodeType): LeanToDrainageSide; export declare function managedLeanToRoofPlane(node: RoofSegmentNodeType): LeanToRoofPlane; export type LeanToPostLayoutPatch = Pick; export declare function leanToPostLayoutPatch(leanTo: LeanToExtensionNode, index: number, baseY?: number, gutterSetback?: number, side?: LeanToPostSide): LeanToPostLayoutPatch; export declare function leanToCornerPostLayoutPatch(leanTo: LeanToExtensionNode, joint: LeanToCornerJoint, baseY?: number, gutterSetback?: number): LeanToPostLayoutPatch; export declare function leanToCanopyCornerPostLayoutPatch(leanTo: LeanToExtensionNode, joint: FreestandingCanopyJoint, side: LeanToPostSide, baseY?: number, gutterSetback?: number): LeanToPostLayoutPatch; export declare function resolveLeanToPostGutterSetback(leanTo: LeanToExtensionNode, column?: ColumnNodeType): number; export declare function resolveLeanToPostBaseY(leanTo: LeanToExtensionNode, wall: WallNode | undefined, nodes: Record, index: number, side?: LeanToPostSide): number; export declare function resolveLeanToPostBaseYAtLocalPosition(leanTo: LeanToExtensionNode, wall: WallNode | undefined, nodes: Record, localPosition: readonly [number, number, number]): number; export declare function createManagedLeanToPost(leanTo: LeanToExtensionNode, index: number, side?: LeanToPostSide): ColumnNodeType; export declare function createManagedLeanToCornerPost(leanTo: LeanToExtensionNode, joint: LeanToCornerJoint): ColumnNodeType; export declare function createManagedLeanToCanopyCornerPost(leanTo: LeanToExtensionNode, joint: FreestandingCanopyJoint, side: LeanToPostSide): ColumnNodeType; export declare function resolveLeanToPostIndexes(leanTo: LeanToExtensionNode, cornerJoints: Partial>, side: LeanToPostSide): number[]; export declare function resolveLeanToCanopyPostIndexes(leanTo: LeanToExtensionNode, cornerJoints: Partial>, canopyJoints: Partial>, side: LeanToPostSide): number[]; export type LeanToRoofSegmentLayoutPatch = Pick; export declare function leanToRoofSegmentLayoutPatch(leanTo: LeanToExtensionNode, nodes?: Record, plane?: LeanToRoofPlane): LeanToRoofSegmentLayoutPatch; export declare function leanToGutterLayoutPatch(segment: RoofSegmentNodeType, leanTo: LeanToExtensionNode, gutter?: GutterNodeType, nodes?: Record, drainageSide?: LeanToDrainageSide): Pick; export declare function leanToDownspoutLayoutPatch(_segment: RoofSegmentNodeType, gutter: GutterNodeType, leanTo: LeanToExtensionNode, downspout?: DownspoutNodeType): Pick; export declare function leanToRoofMaterialPatch(hostRoof: RoofNodeType): LeanToRoofMaterialPatch; export type LeanToRoofAssembly = { roof: RoofNodeType; segment: RoofSegmentNodeType; oppositeSegment?: RoofSegmentNodeType; gutter: GutterNodeType; downspout: DownspoutNodeType; oppositeGutter?: GutterNodeType; oppositeDownspout?: DownspoutNodeType; }; export declare function createManagedLeanToRoofSegment(leanTo: LeanToExtensionNode, roofId: RoofNodeType['id'], plane?: LeanToRoofPlane, nodes?: Record): RoofSegmentNodeType; export declare function createManagedLeanToDrainagePair(segment: RoofSegmentNodeType, leanTo: LeanToExtensionNode, drainageSide: LeanToDrainageSide, nodes?: Record): { gutter: GutterNodeType; downspout: DownspoutNodeType; }; export declare function createManagedLeanToRoofAssembly(leanTo: LeanToExtensionNode, hostRoof?: RoofNodeType, nodes?: Record): LeanToRoofAssembly; export declare function createLeanToAssembly(leanTo: LeanToExtensionNode, hostRoof?: RoofNodeType, nodes?: Record): { extension: LeanToExtensionNode; roof: RoofNodeType; segment: RoofSegmentNodeType; oppositeSegment?: RoofSegmentNodeType; gutter: GutterNodeType; downspout: DownspoutNodeType; posts: ColumnNodeType[]; children: AnyNode[]; }; export {}; //# sourceMappingURL=assembly.d.ts.map