Some checks failed
morphit-release / Build + publish release tarball (push) Has been cancelled
159 lines
5.8 KiB
TypeScript
159 lines
5.8 KiB
TypeScript
/**
|
|
* @file Blurt asset type definitions and helpers.
|
|
* @author Johan Nordberg <code@johan-nordberg.com>
|
|
* @license
|
|
* Copyright (c) 2017 Johan Nordberg. All Rights Reserved.
|
|
*
|
|
* Redistribution and use in source and binary forms, with or without modification,
|
|
* are permitted provided that the following conditions are met:
|
|
*
|
|
* 1. Redistribution of source code must retain the above copyright notice, this
|
|
* list of conditions and the following disclaimer.
|
|
*
|
|
* 2. Redistribution in binary form must reproduce the above copyright notice,
|
|
* this list of conditions and the following disclaimer in the documentation
|
|
* and/or other materials provided with the distribution.
|
|
*
|
|
* 3. Neither the name of the copyright holder nor the names of its contributors
|
|
* may be used to endorse or promote products derived from this software without
|
|
* specific prior written permission.
|
|
*
|
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
|
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
|
* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
|
|
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
|
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
|
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
|
|
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
|
|
* OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
*
|
|
* You acknowledge that this software is not designed, licensed or intended for use
|
|
* in the design, construction, operation or maintenance of any military facility.
|
|
*/
|
|
export interface SMTAsset {
|
|
amount: string | number;
|
|
precision: number;
|
|
nai: string;
|
|
}
|
|
/**
|
|
* Asset symbol string.
|
|
*/
|
|
export type AssetSymbol = 'HIVE' | 'VESTS' | 'HBD' | 'TESTS' | 'TBD' | 'STEEM' | 'SBD' | 'BLURT';
|
|
export declare const AssetSymbolRegexp: RegExp;
|
|
/**
|
|
* Class representing a blurt asset, e.g. `1.000 BLURT` or `12.112233 VESTS`.
|
|
*/
|
|
export declare class Asset {
|
|
readonly amount: number;
|
|
readonly symbol: AssetSymbol;
|
|
private readonly serializedAmount?;
|
|
constructor(amount: number, symbol: AssetSymbol, serializedAmount?: string | undefined);
|
|
/**
|
|
* Create a new Asset instance from a string, e.g. `42.000 BLURT`.
|
|
*/
|
|
static fromString(string: string, expectedSymbol?: AssetSymbol): Asset;
|
|
/**
|
|
* Create a new Asset instance from detail, e.g. `{ amount: "101000", precision: 6, nai: "@@000000037" }`
|
|
* @@000000021 => BLURT_SYMBOL
|
|
* @@000000037 => VESTS_SYMBOL
|
|
*/
|
|
static fromNai(value: {
|
|
amount: string;
|
|
precision: number;
|
|
nai: string;
|
|
}): Asset;
|
|
/**
|
|
* Convenience to create new Asset.
|
|
* @param symbol Symbol to use when created from number. Will also be used to validate
|
|
* the asset, throws if the passed value has a different symbol than this.
|
|
*/
|
|
static from(value: string | Asset | number, symbol?: AssetSymbol): Asset;
|
|
/**
|
|
* Return the smaller of the two assets.
|
|
*/
|
|
static min(a: Asset, b: Asset): Asset;
|
|
/**
|
|
* Return the larger of the two assets.
|
|
*/
|
|
static max(a: Asset, b: Asset): Asset;
|
|
private static parseAmountToSmallestUnit;
|
|
private static formatScaledAmount;
|
|
/** Return the integer amount in protocol smallest units without floating point rounding. */
|
|
toSmallestUnitString(): string;
|
|
/**
|
|
* Return asset precision.
|
|
*/
|
|
getPrecision(): number;
|
|
/**
|
|
* returns a representation of this asset using only STEEM SBD for
|
|
* legacy purposes
|
|
*/
|
|
symbols(): Asset;
|
|
/**
|
|
* Return a string representation of this asset, e.g. `42.000 BLURT`.
|
|
*/
|
|
toString(): string;
|
|
/**
|
|
* Return a new Asset instance with amount added.
|
|
*/
|
|
add(amount: Asset | string | number): Asset;
|
|
/**
|
|
* Return a new Asset instance with amount subtracted.
|
|
*/
|
|
subtract(amount: Asset | string | number): Asset;
|
|
/**
|
|
* Return a new Asset with the amount multiplied by factor.
|
|
*/
|
|
multiply(factor: Asset | string | number): Asset;
|
|
/**
|
|
* Return a new Asset with the amount divided.
|
|
*/
|
|
divide(divisor: Asset | string | number): Asset;
|
|
/**
|
|
* For JSON serialization, same as toString().
|
|
*/
|
|
toJSON(): string;
|
|
}
|
|
export type PriceType = Price | {
|
|
base: Asset | string;
|
|
quote: Asset | string;
|
|
};
|
|
/**
|
|
* Represents quotation of the relative value of asset against another asset.
|
|
* Similar to 'currency pair' used to determine value of currencies.
|
|
*
|
|
* For example:
|
|
* 1 EUR / 1.25 USD where:
|
|
* 1 EUR is an asset specified as a base
|
|
* 1.25 USD us an asset specified as a qute
|
|
*
|
|
* can determine value of EUR against USD.
|
|
*/
|
|
export declare class Price {
|
|
readonly base: Asset;
|
|
readonly quote: Asset;
|
|
/**
|
|
* @param base - represents a value of the price object to be expressed relatively to quote
|
|
* asset. Cannot have amount == 0 if you want to build valid price.
|
|
* @param quote - represents an relative asset. Cannot have amount == 0, otherwise
|
|
* asertion fail.
|
|
*
|
|
* Both base and quote shall have different symbol defined.
|
|
*/
|
|
constructor(base: Asset, quote: Asset);
|
|
/**
|
|
* Convenience to create new Price.
|
|
*/
|
|
static from(value: PriceType): Price;
|
|
/**
|
|
* Return a string representation of this price pair.
|
|
*/
|
|
toString(): string;
|
|
/**
|
|
* Return a new Asset with the price converted between the symbols in the pair.
|
|
* Throws if passed asset symbol is not base or quote.
|
|
*/
|
|
convert(asset: Asset): Asset;
|
|
}
|