import type { RoArray, RoPair } from "@xlabs-xyz/const-utils"; import type { Endianness, Layout, ProperLayout, Item, NumItem, BytesItem, ArrayItem, LengthPrefixed, SwitchItem } from "./layout.js"; export declare function setEndianness(layout: L, endianness: E): SetEndianness; export type SetEndianness = Layout extends L ? Layout : ProperLayout extends L ? ProperLayout : Item extends L ? Item : L extends infer LI extends Item ? SetItemEndianness extends infer R extends Item ? R : never : L extends infer P extends ProperLayout ? SetProperLayoutEndianness extends infer R extends ProperLayout ? R : never : never; type SetItemEndianness = I extends NumItem ? I["size"] extends 1 ? I : SetProperty : I extends BytesItem | ArrayItem ? RecurseLayoutProperty extends infer RI extends Item ? RI extends LengthPrefixed ? RI["lengthSize"] extends 1 ? RI : SetProperty : RI : never : I extends SwitchItem ? RecurseSwitchItem extends infer RI extends SwitchItem ? RI["idSize"] extends 1 ? RI : SetProperty : never : never; type SetProperLayoutEndianness

= P extends readonly [infer H extends Item, ...infer T extends ProperLayout] ? readonly [SetItemEndianness, ...SetProperLayoutEndianness] : readonly []; type RecurseLayoutProperty = "layout" extends keyof I ? I["layout"] extends Layout ? SetProperty> : never : I; type RecurseSwitchItemImpl = SL extends readonly [ RoPair, ...infer T extends RoArray ] ? readonly [RoPair>, ...RecurseSwitchItemImpl] : readonly []; type RecurseSwitchItem = SetProperty>; type SetProperty = { readonly [K in keyof I | P]: K extends P ? V : K extends keyof I ? I[K] : never; } extends infer R extends Item ? R : never; export {}; //# sourceMappingURL=setEndianness.d.ts.map