import type { Spread as ObjSpread, PlainObject } from "@xlabs-xyz/const-utils"; import type { Layout, Item, NamedItem, ProperLayout, DeriveType } from "./layout.js"; export declare const named: (name: N, item: I) => { readonly name: N; } & I; export declare const transform: (layout: L, to: (derived: DeriveType) => T, from: (transformed: T) => DeriveType) => { readonly binary: "bytes"; readonly layout: L; readonly custom: { readonly to: (derived: DeriveType) => T; readonly from: (transformed: T) => DeriveType; }; }; type NestedObjectNames = L extends readonly [infer I extends NamedItem, ...infer Tail extends ProperLayout] ? Omit extends infer II extends Item ? DeriveType extends PlainObject ? NestedObjectNames : NestedObjectNames : NestedObjectNames : N; type LayoutSpread> = DeriveType extends infer O extends PlainObject ? N extends keyof O ? ReturnType>> : never : never; export declare const spread: >(layout: L, name: N) => LayoutSpread; type SingletonName = L extends readonly [infer Head extends NamedItem, ...infer Tail extends ProperLayout] ? Head extends { omit: true; } ? SingletonName : SingletonName : N; type LayoutUnwrapSingleton = SingletonName extends [infer N extends string] ? DeriveType extends infer O extends PlainObject ? N extends keyof O ? ReturnType> : never : never : never; export declare const unwrapSingleton: (layout: L) => LayoutUnwrapSingleton; export {}; //# sourceMappingURL=manipulate.d.ts.map