type RestoreFunction = () => void; type OptionDelete = { delete: true; nonConfigurable?: boolean; nonEnumerable?: never; nonWritable?: never; get?: never; set?: never; value?: never; }; type OptionData = { value?: T; nonConfigurable?: boolean; nonEnumerable?: boolean; nonWritable?: boolean; delete?: false; get?: never; set?: never; }; type Getter = (() => void) | (() => T); type Setter = (v: T) => void; type OptionAccessor = { get?: Getter; set?: Setter; nonConfigurable?: boolean; nonEnumerable?: boolean; delete?: false; nonWritable?: never; value?: never; }; type MockPropertyOptions = | OptionDelete | OptionData | OptionAccessor; declare function mockProperty( obj: Record | T[], prop: PropertyKey, options: MockPropertyOptions, ): RestoreFunction; export = mockProperty;