import { Pattern } from "../pattern";
import { PatternComposer } from "../pattern-composer";
import { PatternPreset } from "../pattern-preset";
import { map } from "../processing";
import { Seed } from "../seed";
import { SVGNode } from "../svg";
export declare type Translate = {
    translate: number[];
    rotate?: never;
    scale?: never;
};
export declare type Rotate = {
    translate?: never;
    rotate: number[];
    scale?: never;
};
export declare type Scale = {
    translate?: never;
    rotate?: never;
    scale: number[];
};
export declare type TransformCommand = Translate | Rotate | Scale;
export declare abstract class StructureComposer implements PatternComposer {
    protected seed: Seed;
    protected preset: PatternPreset;
    abstract readonly name: string;
    width: number;
    height: number;
    protected readonly map: typeof map;
    constructor(seed: Seed, preset: PatternPreset);
    compose(pattern: Pattern): Promise<void>;
    protected fillColor(value: number): string;
    protected opacity(value: number): number;
    protected buildPlusShape(size: number): SVGNode[];
    protected buildTransform(commands: TransformCommand[]): string;
    protected abstract generate(): SVGNode[];
}
