import sinon = require("./index.js");

export default sinon;
export const {
    // leakThreshold,
    assert,
    // getFakes,
    createStubInstance,
    // inject,
    spy,
    stub,
    mock,
    reset,
    resetBehavior,
    resetHistory,
    verify,
    verifyAndRestore,
    restore,
    // restoreContext,
    replace,
    define,
    replaceSetter,
    replaceGetter,
    useFakeTimers,
    fake,
    createSandbox,
    match,
    restoreObject,
    expectation,
    // timers,
    addBehavior,
    promise,
}: typeof sinon;

export type {
    DeepPartialOrMatcher,
    MatchArguments,
    MatchExactArguments,
    MatchPartialArguments,
    SandboxReplace,
    SimplifiedMap,
    SimplifiedSet,
    SinonApi,
    SinonArrayMatcher,
    SinonAssert,
    SinonExpectation,
    SinonExpectationStatic,
    SinonExposeOptions,
    SinonFake,
    SinonFakeTimers,
    SinonFakeUploadProgress,
    SinonMapMatcher,
    SinonMatch,
    SinonMatcher,
    SinonMock,
    SinonMockStatic,
    SinonPromise,
    SinonSandbox,
    SinonSandboxConfig,
    SinonSetMatcher,
    SinonSpiedInstance,
    SinonSpiedMember,
    SinonSpy,
    SinonSpyCall,
    SinonSpyCallApi,
    SinonSpyStatic,
    SinonStatic,
    SinonStub,
    SinonStubbedFunction,
    SinonStubbedInstance,
    SinonStubbedMember,
    SinonStubStatic,
    StubbableType,
} from "./index.js";
