import { Type } from '@angular/core';
export declare class SpyFactory {
    /**
     * Create a jasmine Spy Object with spies for the methods of the given type.
     *
     * @param {Type<T>} type Type you want as a mock object, full of spies
     * @returns {jasmine.SpyObj<T>} Spy object, full of spies, with type definitions
     */
    static createSpy<T>(type: Type<T>): jasmine.SpyObj<T>;
    /**
     * Create a jasmine Spy Object with spies for the type's properties and methods.
     *
     * @param {Type<T>} type Type you want as a mock object
     * @returns {jasmine.SpyObj<T>} Spy object with method and property spies
     */
    static createSpyWithProperties<T extends object>(type: Type<T>): jasmine.SpyObj<T>;
    /**
     * Returns the jasmine spy for the given property on the spy object.
     * NOTE: This will only work for properties on spy objects created using createSpyWithProperties() as
     * createSpy() only creates spies for the type's methods
     *
     * @param {jasmine.SpyObj<T>} spyObj
     * @param {K extends keyof T} property
     * @returns
     */
    static getPropertySpy<T, K extends keyof T>(spyObj: jasmine.SpyObj<T>, property: K): jasmine.Spy<() => T[K]>;
}
