/// <reference types="sinon" />
import { IConstruct, IModule, StringKeyOf } from '../types';
import { Manager } from './manager';
export interface IMockOptions {
    returns?: any;
}
export declare class MockManager<T> extends Manager {
    protected module: IModule;
    protected importName: string;
    protected original: IConstruct<T>;
    protected stubClass: IConstruct<T>;
    constructor(module: IModule, importName: string);
    mock(funcName: StringKeyOf<T>, returns?: any): sinon.SinonStub;
    set<K extends keyof T & string>(varName: K, replaceWith?: Partial<T[K]>): void;
    getMockInstance(): T;
    protected mockFunction(funcName: string, returns?: any): sinon.SinonStub;
    protected replaceFunction(funcName: string, newFunc: () => any): void;
    protected replace(name: string, arg: any): void;
    protected getAllFunctionNames(obj: any): string[];
    protected createStubClass(): void;
}
