import * as sinon from "sinon"; export declare type StubbedInstance = sinon.SinonStubbedInstance & T; export declare type AllowedKeys = { [Key in keyof T]: T[Key] extends Condition ? Key : never; }[keyof T]; export declare type ObjectMethodsKeys = AllowedKeys any>[]; export declare type ObjectMethodsMap = { [Key in keyof T]?: T[Key] extends (...args: any[]) => any ? ReturnType : never; }; export declare function stubObject(object: T, methods?: ObjectMethodsKeys | ObjectMethodsMap): StubbedInstance; export declare function stubConstructor any>(constructor: T, ...constructorArgs: ConstructorParameters | undefined[]): StubbedInstance>; export declare function stubInterface(methods?: ObjectMethodsMap): StubbedInstance; export default sinon;