import { Type, Provider } from '@angular/core';

type Mock<T> = T & {
    [K in keyof T]: T[K] & jest.Mock;
};
declare function createMock<T>(type: Type<T>): Mock<T>;
declare function createMockWithValues<T, K extends keyof T>(type: Type<T>, values: Partial<Record<K, T[K]>>): Mock<T>;
declare function provideMock<T>(type: Type<T>): Provider;
declare function provideMockWithValues<T, K extends keyof T>(type: Type<T>, values: Partial<Record<K, T[K]>>): Provider;

export { createMock, createMockWithValues, provideMock, provideMockWithValues };
export type { Mock };
