import Big, { BigSource } from "big.js";
import sinon from "sinon";
import { CollateralCurrencyExt, CurrencyExt, DefaultRewardsAPI, DefaultTransactionAPI, DefaultVaultsAPI, VaultExt } from "../../../src";
import { AccountId } from "@polkadot/types/interfaces";
import { SubmittableExtrinsic } from "@polkadot/api/types";
import { ISubmittableResult } from "@polkadot/types/types";
export declare type NominatorVaultAccountIds = {
    nominatorId: AccountId;
    vaultId: AccountId;
};
export declare const MOCKED_SEND_LOGGED_ERR_MSG = "mocked sendLogged rejection";
/**
 *
 * @returns Two mock account IDs, one for the nominator and one for the vault
 * @param sinon The sinon sandbox to use for mocking
 * @param vaultsApi The vaults API used to call the method under test
 * @param stubbedTransactionApi The stubbed transaction API (called internally)
 * @param isAccountIdUndefined if true, mocks that transactionApi.getAccountId() returns an undefined account ID
 * @param doesSendLoggedReject if true, mocks that transactionApi.sendLogged() rejects
 * @returns the mocked extrinsic to return when transactionApi.sendLogged() is finally called
 */
export declare const prepareRegisterNewCollateralVaultMocks: (sinon: sinon.SinonSandbox, vaultsApi: DefaultVaultsAPI, stubbedTransactionApi: sinon.SinonStubbedInstance<DefaultTransactionAPI>, isAccountIdUndefined?: boolean | undefined, doesSendLoggedReject?: boolean | undefined) => SubmittableExtrinsic<"promise", ISubmittableResult> | null;
/**
 * Helper function to mock calls outside of the function backingCollateralProportion
 * @param sinon The sinon sandbox to use for mocking
 * @param vaultsApi The vaults API used to call the method under test
 * @param stubbedRewardsApi The stubbed rewards API (called internally)
 * @param nominatorCollateralStakedAmount The mocked nominator's collateral staked amount
 * @param vaultBackingCollateralAmount The mocked vault's backing collateral amount
 * @param collateralCurrency The collateral currency for the amounts mocked
 * @returns Two mock account IDs, one for the nominator and one for the vault
 */
export declare const prepareBackingCollateralProportionMocks: (sinon: sinon.SinonSandbox, vaultsApi: DefaultVaultsAPI, stubbedRewardsApi: sinon.SinonStubbedInstance<DefaultRewardsAPI>, nominatorCollateralStakedAmount: Big, vaultBackingCollateralAmount: Big, collateralCurrency: CollateralCurrencyExt) => NominatorVaultAccountIds;
/**
 * Construct a mocked AccountId
 * @param someString An identifier to use for the mock account
 * @returns A simplified variation of an AccountId
 */
export declare const createMockAccountId: (someString: string) => AccountId;
/**
 * Mock RewardsAPI.computeCollateralInStakingPool to return a specific collateral amount
 * @param sinon The sinon sandbox to use for mocking
 * @param stubbedRewardsApi A stubbed rewards API to add the mocked bahvior to
 * @param amount The mocked return amount
 * @param currency The currency of the mocked return amount
 */
export declare const mockComputeCollateralInStakingPoolMethod: (sinon: sinon.SinonSandbox, stubbedRewardsApi: sinon.SinonStubbedInstance<DefaultRewardsAPI>, amount: BigSource, currency: CurrencyExt) => void;
/**
 * Create a mock VaultExt instance with only backing collateral amount set
 * @param amount The mocked backing collateral amount
 * @param collateralCurrency The collateral currency for the mocked backing collateral amount
 * @returns A mocked VaultExt instance with only backingCollateral property set
 */
export declare const createMockVaultWithBacking: (amount: BigSource, collateralCurrency: CollateralCurrencyExt) => VaultExt;
/**
 * Mock the return value of VaultsAPI.get
 * @param sinon The sinon sandbox to use for mocking
 * @param vaultsApi The vaultsAPI instance for which to mock .get() methed
 * @param vault The vault to return
 */
export declare const mockVaultsApiGetMethod: (sinon: sinon.SinonSandbox, vaultsApi: DefaultVaultsAPI, vault: VaultExt) => void;
