import type { OptionDefinition } from 'command-line-usage'; export declare function parse(options: T, printHelp: () => void): ArgsFromOptions; type Multiples = T extends unknown ? Extract : never; type Defaulted = T extends unknown ? Extract : never; type Optional = T extends unknown ? Exclude | Defaulted> : never; type ReturnTypeOrNull = T extends (...args: unknown[]) => unknown ? ReturnType : null; type ArgTypeForKey = ReturnTypeOrNull['type']>; type OptionalPropertyNames = { [K in keyof T]-?: {} extends { [P in K]: T[K]; } ? K : never; }[keyof T]; type SpreadProperties = { [P in K]: L[P] | Exclude; }; type Id = T extends infer U ? { [K in keyof U]: U[K]; } : never; type SpreadTwo = Id> & Pick>> & Pick, keyof L>> & SpreadProperties & keyof L>>; type Spread = A extends [infer L, ...infer R] ? SpreadTwo> : unknown; type ArgsFromOptions = Spread<[ { [key in Multiples['name']]: ArgTypeForKey[]; }, { [key in Defaulted['name']]: ArgTypeForKey; }, { [key in Optional['name']]?: ArgTypeForKey; } ]>; export {};