import * as _i_core from "../../core/unconstrained";
export type _T_Block = _i_core._T_List<null, _T_Block_Part>;
export type _T_Block_Part = _i_core._T_State_Group<null, readonly ['line', string] | readonly ['nested line', _T_Line] | readonly ['nothing', null] | readonly ['sub block', _T_Block]>;
export type _T_Directory = _i_core._T_Dictionary<null, _i_core._T_State_Group<null, readonly ['directory', _T_Directory] | readonly ['file', _T_Block]>>;
export type _T_Line = _i_core._T_List<null, _T_Line_Part>;
export type _T_Line_Part = _i_core._T_State_Group<null, readonly ['indent', _T_Block] | readonly ['nothing', null] | readonly ['snippet', string] | readonly ['sub line', _T_Line]>;
export type Block = _T_Block;
export type Block_Part = _T_Block_Part;
export type Directory = _T_Directory;
export type Line = _T_Line;
export type Line_Part = _T_Line_Part;
export declare namespace _T_Block {
    namespace L {
    }
    type L = _T_Block_Part;
}
export declare namespace _T_Block_Part {
    namespace SG {
        type line = string;
        namespace nested_line {
        }
        type nested_line = _T_Line;
        type nothing = null;
        namespace sub_block {
        }
        type sub_block = _T_Block;
    }
    type SG = readonly ['line', string] | readonly ['nested line', _T_Line] | readonly ['nothing', null] | readonly ['sub block', _T_Block];
}
export declare namespace _T_Directory {
    namespace D {
        namespace SG {
            namespace directory {
            }
            type directory = _T_Directory;
            namespace file {
            }
            type file = _T_Block;
        }
        type SG = readonly ['directory', _T_Directory] | readonly ['file', _T_Block];
    }
    type D = _i_core._T_State_Group<null, readonly ['directory', _T_Directory] | readonly ['file', _T_Block]>;
}
export declare namespace _T_Line {
    namespace L {
    }
    type L = _T_Line_Part;
}
export declare namespace _T_Line_Part {
    namespace SG {
        namespace indent {
        }
        type indent = _T_Block;
        type nothing = null;
        type snippet = string;
        namespace sub_line {
        }
        type sub_line = _T_Line;
    }
    type SG = readonly ['indent', _T_Block] | readonly ['nothing', null] | readonly ['snippet', string] | readonly ['sub line', _T_Line];
}
export declare namespace Block {
    namespace L {
    }
    type L = _T_Block_Part;
}
export declare namespace Block_Part {
    namespace SG {
        type line = string;
        namespace nested_line {
        }
        type nested_line = _T_Line;
        type nothing = null;
        namespace sub_block {
        }
        type sub_block = _T_Block;
    }
    type SG = readonly ['line', string] | readonly ['nested line', _T_Line] | readonly ['nothing', null] | readonly ['sub block', _T_Block];
}
export declare namespace Directory {
    namespace D {
        namespace SG {
            namespace directory {
            }
            type directory = _T_Directory;
            namespace file {
            }
            type file = _T_Block;
        }
        type SG = readonly ['directory', _T_Directory] | readonly ['file', _T_Block];
    }
    type D = _i_core._T_State_Group<null, readonly ['directory', _T_Directory] | readonly ['file', _T_Block]>;
}
export declare namespace Line {
    namespace L {
    }
    type L = _T_Line_Part;
}
export declare namespace Line_Part {
    namespace SG {
        namespace indent {
        }
        type indent = _T_Block;
        type nothing = null;
        type snippet = string;
        namespace sub_line {
        }
        type sub_line = _T_Line;
    }
    type SG = readonly ['indent', _T_Block] | readonly ['nothing', null] | readonly ['snippet', string] | readonly ['sub line', _T_Line];
}
