API Report File for "@mosaic/lib-base"

Do not edit this file. It is a report generated by API Extractor.


// @internal (undocumented)
export class _CachedReadableMosaic<T extends unknown[]> implements _ReadableMosaicWithExtraParams<T> {
    constructor(readable: _ReadableMosaicWithExtraParams<T>, cache: _MosaicReadCache<T>);
    // (undocumented)
    getCollateralSurplusBalance(address?: string, ...extraParams: T): Promise<Decimal>;
    // (undocumented)
    getFees(...extraParams: T): Promise<Fees>;
    // (undocumented)
    getFrontendStatus(address?: string, ...extraParams: T): Promise<FrontendStatus>;
    // (undocumented)
    getLiquidityMiningMSICReward(address?: string, ...extraParams: T): Promise<Decimal>;
    // (undocumented)
    getLiquidityMiningStake(address?: string, ...extraParams: T): Promise<Decimal>;
    // (undocumented)
    getMSICBalance(address?: string, ...extraParams: T): Promise<Decimal>;
    // (undocumented)
    getMSICStake(address?: string, ...extraParams: T): Promise<MSICStake>;
    // (undocumented)
    getMoUSDBalance(address?: string, ...extraParams: T): Promise<Decimal>;
    // (undocumented)
    getMoUSDInStabilityPool(...extraParams: T): Promise<Decimal>;
    // (undocumented)
    getNumberOfTroves(...extraParams: T): Promise<number>;
    // (undocumented)
    getPrice(...extraParams: T): Promise<Decimal>;
    // (undocumented)
    getRemainingLiquidityMiningMSICReward(...extraParams: T): Promise<Decimal>;
    // (undocumented)
    getRemainingStabilityPoolMSICReward(...extraParams: T): Promise<Decimal>;
    // (undocumented)
    getStabilityDeposit(address?: string, ...extraParams: T): Promise<StabilityDeposit>;
    // (undocumented)
    getTotal(...extraParams: T): Promise<Trove>;
    // (undocumented)
    getTotalRedistributed(...extraParams: T): Promise<Trove>;
    // (undocumented)
    getTotalStakedMSIC(...extraParams: T): Promise<Decimal>;
    // (undocumented)
    getTotalStakedUniTokens(...extraParams: T): Promise<Decimal>;
    // (undocumented)
    getTrove(address?: string, ...extraParams: T): Promise<UserTrove>;
    // (undocumented)
    getTroveBeforeRedistribution(address?: string, ...extraParams: T): Promise<TroveWithPendingRedistribution>;
    // (undocumented)
    getTroves(params: TroveListingParams & {
        beforeRedistribution: true;
    }, ...extraParams: T): Promise<TroveWithPendingRedistribution[]>;
    // (undocumented)
    getTroves(params: TroveListingParams, ...extraParams: T): Promise<UserTrove[]>;
    // (undocumented)
    getUniTokenAllowance(address?: string, ...extraParams: T): Promise<Decimal>;
    // (undocumented)
    getUniTokenBalance(address?: string, ...extraParams: T): Promise<Decimal>;
    }

// @internal (undocumented)
export type _CollateralChange<T> = (_CollateralDeposit<T> & _NoCollateralWithdrawal) | (_CollateralWithdrawal<T> & _NoCollateralDeposit);

// @internal (undocumented)
export type _CollateralDeposit<T> = {
    depositCollateral: T;
};

// @public
export interface CollateralGainTransferDetails extends StabilityPoolGainsWithdrawalDetails {
    newTrove: Trove;
}

// @internal (undocumented)
export type _CollateralWithdrawal<T> = {
    withdrawCollateral: T;
};

// @public
export const CRITICAL_COLLATERAL_RATIO: Decimal;

// @internal (undocumented)
export type _DebtChange<T> = (_MoUSDBorrowing<T> & _NoMoUSDRepayment) | (_MoUSDRepayment<T> & _NoMoUSDBorrowing);

// @public
export class Decimal {
    // @internal (undocumented)
    get absoluteValue(): this;
    // (undocumented)
    add(addend: Decimalish): Decimal;
    // @internal (undocumented)
    get bigNumber(): string;
    // (undocumented)
    div(divider: Decimalish): Decimal;
    // @internal (undocumented)
    _divCeil(divider: Decimalish): Decimal;
    // (undocumented)
    eq(that: Decimalish): boolean;
    // (undocumented)
    get finite(): this | undefined;
    // (undocumented)
    static from(decimalish: Decimalish): Decimal;
    // (undocumented)
    static fromBigNumberString(bigNumberString: string): Decimal;
    // (undocumented)
    gt(that: Decimalish): boolean;
    // (undocumented)
    gte(that: Decimalish): boolean;
    // (undocumented)
    static readonly HALF: Decimal;
    // @internal (undocumented)
    get hex(): string;
    // (undocumented)
    get infinite(): this | undefined;
    // (undocumented)
    static readonly INFINITY: Decimal;
    // (undocumented)
    get isZero(): boolean;
    // (undocumented)
    lt(that: Decimalish): boolean;
    // (undocumented)
    lte(that: Decimalish): boolean;
    // (undocumented)
    static max(a: Decimalish, b: Decimalish): Decimal;
    // (undocumented)
    static min(a: Decimalish, b: Decimalish): Decimal;
    // (undocumented)
    mul(multiplier: Decimalish): Decimal;
    // (undocumented)
    mulDiv(multiplier: Decimalish, divider: Decimalish): Decimal;
    // (undocumented)
    get nonZero(): this | undefined;
    // (undocumented)
    static readonly ONE: Decimal;
    // (undocumented)
    pow(exponent: number): Decimal;
    // (undocumented)
    prettify(precision?: number): string;
    // (undocumented)
    shorten(): string;
    // (undocumented)
    sub(subtrahend: Decimalish): Decimal;
    // (undocumented)
    toString(precision?: number): string;
    // (undocumented)
    static readonly ZERO: Decimal;
    // (undocumented)
    get zero(): this | undefined;
}

// @public
export type Decimalish = Decimal | number | string;

// @alpha (undocumented)
export class Difference {
    // (undocumented)
    get absoluteValue(): Decimal | undefined;
    // (undocumented)
    static between(d1: Decimalish | undefined, d2: Decimalish | undefined): Difference;
    // (undocumented)
    get finite(): this | undefined;
    // (undocumented)
    get infinite(): this | undefined;
    // (undocumented)
    mul(multiplier: Decimalish): Difference;
    // (undocumented)
    get negative(): this | undefined;
    // (undocumented)
    get nonZero(): this | undefined;
    // (undocumented)
    get positive(): this | undefined;
    // (undocumented)
    prettify(precision?: number): string;
    // (undocumented)
    toString(precision?: number): string;
}

// @internal (undocumented)
export const _emptyTrove: Trove;

// @public
export type FailedReceipt<R = unknown> = {
    status: "failed";
    rawReceipt: R;
};

// @internal (undocumented)
export const _failedReceipt: <R>(rawReceipt: R) => FailedReceipt<R>;

// @public
export class Fees {
    // @internal
    constructor(baseRateWithoutDecay: Decimalish, minuteDecayFactor: Decimalish, beta: Decimalish, lastFeeOperation: Date, timeOfLatestBlock: Date, recoveryMode: boolean);
    // @internal (undocumented)
    baseRate(when?: Date): Decimal;
    borrowingRate(when?: Date): Decimal;
    equals(that: Fees): boolean;
    redemptionRate(redeemedFractionOfSupply?: Decimalish, when?: Date): Decimal;
    // @internal (undocumented)
    _setRecoveryMode(recoveryMode: boolean): Fees;
    // @internal (undocumented)
    toString(): string;
}

// @public
export type FrontendStatus = {
    status: "unregistered";
} | {
    status: "registered";
    kickbackRate: Decimal;
};

// @public
export interface LiquidationDetails {
    collateralGasCompensation: Decimal;
    liquidatedAddresses: string[];
    msicGasCompensation: Decimal;
    totalLiquidated: Trove;
}

// @internal (undocumented)
export interface _MosaicReadCache<T extends unknown[]> extends _MosaicReadCacheBase<T> {
    // (undocumented)
    getTroves(params: TroveListingParams & {
        beforeRedistribution: true;
    }, ...extraParams: T): TroveWithPendingRedistribution[] | undefined;
    // (undocumented)
    getTroves(params: TroveListingParams, ...extraParams: T): UserTrove[] | undefined;
}

// @internal (undocumented)
export type _MosaicReadCacheBase<T extends unknown[]> = {
    [P in keyof ReadableMosaic]: ReadableMosaic[P] extends (...args: infer A) => Promise<infer R> ? (...params: [...originalParams: A, ...extraParams: T]) => R | undefined : never;
};

// @public
export type MosaicReceipt<R = unknown, D = unknown> = PendingReceipt | MinedReceipt<R, D>;

// @public
export abstract class MosaicStore<T = unknown> {
    // @internal (undocumented)
    protected abstract _doStart(): () => void;
    // @internal (undocumented)
    protected _load(baseState: MosaicStoreBaseState, extraState?: T): void;
    // @internal (undocumented)
    protected _loaded: boolean;
    logging: boolean;
    onLoaded?: () => void;
    // @internal (undocumented)
    protected abstract _reduceExtra(extraState: T, extraStateUpdate: Partial<T>): T;
    start(): () => void;
    get state(): MosaicStoreState<T>;
    subscribe(listener: (params: MosaicStoreListenerParams<T>) => void): () => void;
    // @internal (undocumented)
    protected _update(baseStateUpdate?: Partial<MosaicStoreBaseState>, extraStateUpdate?: Partial<T>): void;
    }

// @public
export interface MosaicStoreBaseState {
    accountBalance: Decimal;
    collateralSurplusBalance: Decimal;
    // @internal (undocumented)
    _feesInNormalMode: Fees;
    frontend: FrontendStatus;
    liquidityMiningMSICReward: Decimal;
    liquidityMiningStake: Decimal;
    msicBalance: Decimal;
    msicStake: MSICStake;
    msicBalance: Decimal;
    msicInStabilityPool: Decimal;
    numberOfTroves: number;
    ownFrontend: FrontendStatus;
    price: Decimal;
    remainingLiquidityMiningMSICReward: Decimal;
    remainingStabilityPoolMSICReward: Decimal;
    // @internal (undocumented)
    _riskiestTroveBeforeRedistribution: TroveWithPendingRedistribution;
    stabilityDeposit: StabilityDeposit;
    total: Trove;
    totalRedistributed: Trove;
    totalStakedMSIC: Decimal;
    totalStakedUniTokens: Decimal;
    troveBeforeRedistribution: TroveWithPendingRedistribution;
    uniTokenAllowance: Decimal;
    uniTokenBalance: Decimal;
}

// @public
export interface MosaicStoreDerivedState {
    borrowingRate: Decimal;
    fees: Fees;
    haveUndercollateralizedTroves: boolean;
    redemptionRate: Decimal;
    trove: UserTrove;
}

// @public
export interface MosaicStoreListenerParams<T = unknown> {
    newState: MosaicStoreState<T>;
    oldState: MosaicStoreState<T>;
    stateChange: Partial<MosaicStoreState<T>>;
}

// @public
export type MosaicStoreState<T = unknown> = MosaicStoreBaseState & MosaicStoreDerivedState & T;

// @public
export class MSICStake {
    // @internal
    constructor(stakedMSIC?: Decimal, collateralGain?: Decimal, msicGain?: Decimal);
    apply(change: MSICStakeChange<Decimalish> | undefined): Decimal;
    readonly collateralGain: Decimal;
    equals(that: MSICStake): boolean;
    // (undocumented)
    get isEmpty(): boolean;
    readonly msicGain: Decimal;
    readonly stakedMSIC: Decimal;
    // @internal (undocumented)
    toString(): string;
    whatChanged(thatStakedMSIC: Decimalish): MSICStakeChange<Decimal> | undefined;
}

// @public
export type MSICStakeChange<T> = {
    stakeMSIC: T;
    unstakeMSIC?: undefined;
} | {
    stakeMSIC?: undefined;
    unstakeMSIC: T;
    unstakeAllMSIC: boolean;
};

// @public
export const MoUSD_LIQUIDATION_RESERVE: Decimal;

// @public
export const MoUSD_MINIMUM_DEBT: Decimal;

// @public
export const MoUSD_MINIMUM_NET_DEBT: Decimal;

// @internal (undocumented)
export type _MoUSDBorrowing<T> = {
    borrowMoUSD: T;
};

// @internal (undocumented)
export type _MoUSDRepayment<T> = {
    repayMoUSD: T;
};

// @public
export const MAXIMUM_BORROWING_RATE: Decimal;

// @public
export type MinedReceipt<R = unknown, D = unknown> = FailedReceipt<R> | SuccessfulReceipt<R, D>;

// @public
export const MINIMUM_BORROWING_RATE: Decimal;

// @public
export const MINIMUM_COLLATERAL_RATIO: Decimal;

// @public
export const MINIMUM_REDEMPTION_RATE: Decimal;

// @internal (undocumented)
export type _NoCollateralChange = _NoCollateralDeposit & _NoCollateralWithdrawal;

// @internal (undocumented)
export type _NoCollateralDeposit = Partial<_CollateralDeposit<undefined>>;

// @internal (undocumented)
export type _NoCollateralWithdrawal = Partial<_CollateralWithdrawal<undefined>>;

// @internal (undocumented)
export type _NoDebtChange = _NoMoUSDBorrowing & _NoMoUSDRepayment;

// @internal (undocumented)
export type _NoMoUSDBorrowing = Partial<_MoUSDBorrowing<undefined>>;

// @internal (undocumented)
export type _NoMoUSDRepayment = Partial<_MoUSDRepayment<undefined>>;

// @internal (undocumented)
export const _normalizeTroveAdjustment: (params: Record<string, Decimalish | undefined>) => TroveAdjustmentParams<Decimal>;

// @internal (undocumented)
export const _normalizeTroveCreation: (params: Record<string, Decimalish | undefined>) => TroveCreationParams<Decimal>;

// @alpha (undocumented)
export interface ObservableMosaic {
    // (undocumented)
    watchMoUSDBalance(onMoUSDBalanceChanged: (balance: Decimal) => void, address?: string): () => void;
    // (undocumented)
    watchMoUSDInStabilityPool(onMoUSDInStabilityPoolChanged: (msicInStabilityPool: Decimal) => void): () => void;
    // (undocumented)
    watchNumberOfTroves(onNumberOfTrovesChanged: (numberOfTroves: number) => void): () => void;
    // (undocumented)
    watchPrice(onPriceChanged: (price: Decimal) => void): () => void;
    // (undocumented)
    watchStabilityDeposit(onStabilityDepositChanged: (stabilityDeposit: StabilityDeposit) => void, address?: string): () => void;
    // (undocumented)
    watchTotal(onTotalChanged: (total: Trove) => void): () => void;
    // (undocumented)
    watchTotalRedistributed(onTotalRedistributedChanged: (totalRedistributed: Trove) => void): () => void;
    // (undocumented)
    watchTroveWithoutRewards(onTroveChanged: (trove: TroveWithPendingRedistribution) => void, address?: string): () => void;
}

// @public
export type PendingReceipt = {
    status: "pending";
};

// @internal (undocumented)
export const _pendingReceipt: PendingReceipt;

// @alpha (undocumented)
export class Percent<T extends {
    infinite?: T | undefined;
    absoluteValue?: A | undefined;
    mul?(hundred: 100): T;
    toString(precision?: number): string;
}, A extends {
    gte(n: string): boolean;
}> {
    constructor(ratio: T);
    // (undocumented)
    nonZeroish(precision: number): this | undefined;
    // (undocumented)
    prettify(): string;
    // (undocumented)
    toString(precision: number): string;
}

// @internal (undocumented)
export type _PopulatableFrom<T, P> = {
    [M in keyof T]: T[M] extends (...args: infer A) => Promise<infer U> ? U extends SentMosaicTransaction ? (...args: A) => Promise<PopulatedMosaicTransaction<P, U>> : never : never;
};

// Warning: (ae-incompatible-release-tags) The symbol "PopulatableMosaic" is marked as @public, but its signature references "_PopulatableFrom" which is marked as @internal
//
// @public
export interface PopulatableMosaic<R = unknown, S = unknown, P = unknown> extends _PopulatableFrom<SendableMosaic<R, S>, P> {
    adjustTrove(params: TroveAdjustmentParams<Decimalish>, maxBorrowingRate?: Decimalish): Promise<PopulatedMosaicTransaction<P, SentMosaicTransaction<S, MosaicReceipt<R, TroveAdjustmentDetails>>>>;
    approveUniTokens(allowance?: Decimalish): Promise<PopulatedMosaicTransaction<P, SentMosaicTransaction<S, MosaicReceipt<R, void>>>>;
    borrowMoUSD(amount: Decimalish, maxBorrowingRate?: Decimalish): Promise<PopulatedMosaicTransaction<P, SentMosaicTransaction<S, MosaicReceipt<R, TroveAdjustmentDetails>>>>;
    claimCollateralSurplus(): Promise<PopulatedMosaicTransaction<P, SentMosaicTransaction<S, MosaicReceipt<R, void>>>>;
    closeTrove(): Promise<PopulatedMosaicTransaction<P, SentMosaicTransaction<S, MosaicReceipt<R, TroveClosureDetails>>>>;
    depositCollateral(amount: Decimalish): Promise<PopulatedMosaicTransaction<P, SentMosaicTransaction<S, MosaicReceipt<R, TroveAdjustmentDetails>>>>;
    depositMoUSDInStabilityPool(amount: Decimalish, frontendTag?: string): Promise<PopulatedMosaicTransaction<P, SentMosaicTransaction<S, MosaicReceipt<R, StabilityDepositChangeDetails>>>>;
    exitLiquidityMining(): Promise<PopulatedMosaicTransaction<P, SentMosaicTransaction<S, MosaicReceipt<R, void>>>>;
    liquidate(address: string | string[]): Promise<PopulatedMosaicTransaction<P, SentMosaicTransaction<S, MosaicReceipt<R, LiquidationDetails>>>>;
    liquidateUpTo(maximumNumberOfTrovesToLiquidate: number): Promise<PopulatedMosaicTransaction<P, SentMosaicTransaction<S, MosaicReceipt<R, LiquidationDetails>>>>;
    openTrove(params: TroveCreationParams<Decimalish>, maxBorrowingRate?: Decimalish): Promise<PopulatedMosaicTransaction<P, SentMosaicTransaction<S, MosaicReceipt<R, TroveCreationDetails>>>>;
    redeemMoUSD(amount: Decimalish, maxRedemptionRate?: Decimalish): Promise<PopulatedRedemption<P, S, R>>;
    registerFrontend(kickbackRate: Decimalish): Promise<PopulatedMosaicTransaction<P, SentMosaicTransaction<S, MosaicReceipt<R, void>>>>;
    repayMoUSD(amount: Decimalish): Promise<PopulatedMosaicTransaction<P, SentMosaicTransaction<S, MosaicReceipt<R, TroveAdjustmentDetails>>>>;
    sendMSIC(toAddress: string, amount: Decimalish): Promise<PopulatedMosaicTransaction<P, SentMosaicTransaction<S, MosaicReceipt<R, void>>>>;
    sendMoUSD(toAddress: string, amount: Decimalish): Promise<PopulatedMosaicTransaction<P, SentMosaicTransaction<S, MosaicReceipt<R, void>>>>;
    // @internal (undocumented)
    setPrice(price: Decimalish): Promise<PopulatedMosaicTransaction<P, SentMosaicTransaction<S, MosaicReceipt<R, void>>>>;
    stakeMSIC(amount: Decimalish): Promise<PopulatedMosaicTransaction<P, SentMosaicTransaction<S, MosaicReceipt<R, void>>>>;
    stakeUniTokens(amount: Decimalish): Promise<PopulatedMosaicTransaction<P, SentMosaicTransaction<S, MosaicReceipt<R, void>>>>;
    transferCollateralGainToTrove(): Promise<PopulatedMosaicTransaction<P, SentMosaicTransaction<S, MosaicReceipt<R, CollateralGainTransferDetails>>>>;
    unstakeMSIC(amount: Decimalish): Promise<PopulatedMosaicTransaction<P, SentMosaicTransaction<S, MosaicReceipt<R, void>>>>;
    unstakeUniTokens(amount: Decimalish): Promise<PopulatedMosaicTransaction<P, SentMosaicTransaction<S, MosaicReceipt<R, void>>>>;
    withdrawCollateral(amount: Decimalish): Promise<PopulatedMosaicTransaction<P, SentMosaicTransaction<S, MosaicReceipt<R, TroveAdjustmentDetails>>>>;
    withdrawGainsFromStabilityPool(): Promise<PopulatedMosaicTransaction<P, SentMosaicTransaction<S, MosaicReceipt<R, StabilityPoolGainsWithdrawalDetails>>>>;
    withdrawGainsFromStaking(): Promise<PopulatedMosaicTransaction<P, SentMosaicTransaction<S, MosaicReceipt<R, void>>>>;
    withdrawMSICRewardFromLiquidityMining(): Promise<PopulatedMosaicTransaction<P, SentMosaicTransaction<S, MosaicReceipt<R, void>>>>;
    withdrawMoUSDFromStabilityPool(amount: Decimalish): Promise<PopulatedMosaicTransaction<P, SentMosaicTransaction<S, MosaicReceipt<R, StabilityDepositChangeDetails>>>>;
}

// @public
export interface PopulatedMosaicTransaction<P = unknown, T extends SentMosaicTransaction = SentMosaicTransaction> {
    readonly rawPopulatedTransaction: P;
    send(): Promise<T>;
}

// @public
export interface PopulatedRedemption<P = unknown, S = unknown, R = unknown> extends PopulatedMosaicTransaction<P, SentMosaicTransaction<S, MosaicReceipt<R, RedemptionDetails>>> {
    readonly attemptedMoUSDAmount: Decimal;
    increaseAmountByMinimumNetDebt(maxRedemptionRate?: Decimalish): Promise<PopulatedRedemption<P, S, R>>;
    readonly isTruncated: boolean;
    readonly redeemableMoUSDAmount: Decimal;
}

// @public
export interface ReadableMosaic {
    getCollateralSurplusBalance(address?: string): Promise<Decimal>;
    getFees(): Promise<Fees>;
    getFrontendStatus(address?: string): Promise<FrontendStatus>;
    getLiquidityMiningMSICReward(address?: string): Promise<Decimal>;
    getLiquidityMiningStake(address?: string): Promise<Decimal>;
    getMSICBalance(address?: string): Promise<Decimal>;
    getMSICStake(address?: string): Promise<MSICStake>;
    getMoUSDBalance(address?: string): Promise<Decimal>;
    getMoUSDInStabilityPool(): Promise<Decimal>;
    getNumberOfTroves(): Promise<number>;
    getPrice(): Promise<Decimal>;
    getRemainingLiquidityMiningMSICReward(): Promise<Decimal>;
    getRemainingStabilityPoolMSICReward(): Promise<Decimal>;
    getStabilityDeposit(address?: string): Promise<StabilityDeposit>;
    getTotal(): Promise<Trove>;
    getTotalRedistributed(): Promise<Trove>;
    getTotalStakedMSIC(): Promise<Decimal>;
    getTotalStakedUniTokens(): Promise<Decimal>;
    getTrove(address?: string): Promise<UserTrove>;
    getTroveBeforeRedistribution(address?: string): Promise<TroveWithPendingRedistribution>;
    // @internal (undocumented)
    getTroves(params: TroveListingParams & {
        beforeRedistribution: true;
    }): Promise<TroveWithPendingRedistribution[]>;
    getTroves(params: TroveListingParams): Promise<UserTrove[]>;
    getUniTokenAllowance(address?: string): Promise<Decimal>;
    getUniTokenBalance(address?: string): Promise<Decimal>;
}

// @internal (undocumented)
export interface _ReadableMosaicWithExtraParams<T extends unknown[]> extends _ReadableMosaicWithExtraParamsBase<T> {
    // (undocumented)
    getTroves(params: TroveListingParams & {
        beforeRedistribution: true;
    }, ...extraParams: T): Promise<TroveWithPendingRedistribution[]>;
    // (undocumented)
    getTroves(params: TroveListingParams, ...extraParams: T): Promise<UserTrove[]>;
}

// @internal (undocumented)
export type _ReadableMosaicWithExtraParamsBase<T extends unknown[]> = {
    [P in keyof ReadableMosaic]: ReadableMosaic[P] extends (...params: infer A) => infer R ? (...params: [...originalParams: A, ...extraParams: T]) => R : never;
};

// @public
export interface RedemptionDetails {
    actualMoUSDAmount: Decimal;
    attemptedMoUSDAmount: Decimal;
    collateralTaken: Decimal;
    fee: Decimal;
}

// @internal (undocumented)
export type _SendableFrom<T, R, S> = {
    [M in keyof T]: T[M] extends (...args: infer A) => Promise<infer D> ? (...args: A) => Promise<SentMosaicTransaction<S, MosaicReceipt<R, D>>> : never;
};

// Warning: (ae-incompatible-release-tags) The symbol "SendableMosaic" is marked as @public, but its signature references "_SendableFrom" which is marked as @internal
//
// @public
export interface SendableMosaic<R = unknown, S = unknown> extends _SendableFrom<TransactableMosaic, R, S> {
    adjustTrove(params: TroveAdjustmentParams<Decimalish>, maxBorrowingRate?: Decimalish): Promise<SentMosaicTransaction<S, MosaicReceipt<R, TroveAdjustmentDetails>>>;
    approveUniTokens(allowance?: Decimalish): Promise<SentMosaicTransaction<S, MosaicReceipt<R, void>>>;
    borrowMoUSD(amount: Decimalish, maxBorrowingRate?: Decimalish): Promise<SentMosaicTransaction<S, MosaicReceipt<R, TroveAdjustmentDetails>>>;
    claimCollateralSurplus(): Promise<SentMosaicTransaction<S, MosaicReceipt<R, void>>>;
    closeTrove(): Promise<SentMosaicTransaction<S, MosaicReceipt<R, TroveClosureDetails>>>;
    depositCollateral(amount: Decimalish): Promise<SentMosaicTransaction<S, MosaicReceipt<R, TroveAdjustmentDetails>>>;
    depositMoUSDInStabilityPool(amount: Decimalish, frontendTag?: string): Promise<SentMosaicTransaction<S, MosaicReceipt<R, StabilityDepositChangeDetails>>>;
    exitLiquidityMining(): Promise<SentMosaicTransaction<S, MosaicReceipt<R, void>>>;
    liquidate(address: string | string[]): Promise<SentMosaicTransaction<S, MosaicReceipt<R, LiquidationDetails>>>;
    liquidateUpTo(maximumNumberOfTrovesToLiquidate: number): Promise<SentMosaicTransaction<S, MosaicReceipt<R, LiquidationDetails>>>;
    openTrove(params: TroveCreationParams<Decimalish>, maxBorrowingRate?: Decimalish): Promise<SentMosaicTransaction<S, MosaicReceipt<R, TroveCreationDetails>>>;
    redeemMoUSD(amount: Decimalish, maxRedemptionRate?: Decimalish): Promise<SentMosaicTransaction<S, MosaicReceipt<R, RedemptionDetails>>>;
    registerFrontend(kickbackRate: Decimalish): Promise<SentMosaicTransaction<S, MosaicReceipt<R, void>>>;
    repayMoUSD(amount: Decimalish): Promise<SentMosaicTransaction<S, MosaicReceipt<R, TroveAdjustmentDetails>>>;
    sendMSIC(toAddress: string, amount: Decimalish): Promise<SentMosaicTransaction<S, MosaicReceipt<R, void>>>;
    sendMoUSD(toAddress: string, amount: Decimalish): Promise<SentMosaicTransaction<S, MosaicReceipt<R, void>>>;
    // @internal (undocumented)
    setPrice(price: Decimalish): Promise<SentMosaicTransaction<S, MosaicReceipt<R, void>>>;
    stakeMSIC(amount: Decimalish): Promise<SentMosaicTransaction<S, MosaicReceipt<R, void>>>;
    stakeUniTokens(amount: Decimalish): Promise<SentMosaicTransaction<S, MosaicReceipt<R, void>>>;
    transferCollateralGainToTrove(): Promise<SentMosaicTransaction<S, MosaicReceipt<R, CollateralGainTransferDetails>>>;
    unstakeMSIC(amount: Decimalish): Promise<SentMosaicTransaction<S, MosaicReceipt<R, void>>>;
    unstakeUniTokens(amount: Decimalish): Promise<SentMosaicTransaction<S, MosaicReceipt<R, void>>>;
    withdrawCollateral(amount: Decimalish): Promise<SentMosaicTransaction<S, MosaicReceipt<R, TroveAdjustmentDetails>>>;
    withdrawGainsFromStabilityPool(): Promise<SentMosaicTransaction<S, MosaicReceipt<R, StabilityPoolGainsWithdrawalDetails>>>;
    withdrawGainsFromStaking(): Promise<SentMosaicTransaction<S, MosaicReceipt<R, void>>>;
    withdrawMSICRewardFromLiquidityMining(): Promise<SentMosaicTransaction<S, MosaicReceipt<R, void>>>;
    withdrawMoUSDFromStabilityPool(amount: Decimalish): Promise<SentMosaicTransaction<S, MosaicReceipt<R, StabilityDepositChangeDetails>>>;
}

// @public
export interface SentMosaicTransaction<S = unknown, T extends MosaicReceipt = MosaicReceipt> {
    getReceipt(): Promise<T>;
    readonly rawSentTransaction: S;
    waitForReceipt(): Promise<Extract<T, MinedReceipt>>;
}

// @public
export class StabilityDeposit {
    // @internal