import { IAssetToken, IAssetItem, IDruidExpectation, IPending2WTxDetails, IResult, IApiCreateTxResponse, IMakePaymentResponse } from '../interfaces';
/**
 *  Initialize an empty structure of type `IAssetToken`, providing optional additional values
 *
 * @export
 * @param {Partial<IAssetToken>} [options] - Optional additional values to initialize the structure with
 * @return {*}  {IAssetToken}
 */
export declare function initIAssetToken(options?: Partial<IAssetToken>): IAssetToken;
/**
 * Initialize an empty structure of type `IAssetItem`, providing optional additional values
 *
 * @export
 * @param {Partial<IAssetItem>} [options] - Optional additional values to initialize the structure with
 * @return {*}  {IAssetItem}
 */
export declare function initIAssetItem(options?: Partial<IAssetItem>): IAssetItem;
/**
 * Initialize an empty structure of type `IDruidExpectation`, providing optional additional values
 *
 * @export
 * @param {Partial<IDruidExpectation>} [options] - Optional additional values to initialize the structure with
 * @return {*}  {IDruidExpectation}
 */
export declare function initIDruidExpectation(options?: Partial<IDruidExpectation>): IDruidExpectation;
/**
 * Initialize an empty structure of type `IPending2WTxDetails`, providing optional additional values
 *
 * @export
 * @param {Partial<IPending2WTxDetails>} [options] - Optional additional values to initialize the structure with
 * @return {*}  {IPending2WTxDetails}
 */
export declare function initIPending2WTxDetails(options?: Partial<IPending2WTxDetails>): IPending2WTxDetails;
/**
 * Add left-hand-side asset to right-hand-side asset
 *
 * @param {(IAssetToken | IAssetItem)} lhs
 * @param {(IAssetToken | IAssetItem)} rhs
 * @return {*}  {(IResult<IAssetToken | IAssetItem>)}
 */
export declare const addLhsAssetToRhsAsset: (lhs: IAssetToken | IAssetItem, rhs: IAssetToken | IAssetItem) => IResult<IAssetToken | IAssetItem>;
/**
 * Subtract the right-hand-side asset from the left-hand-side asset
 *
 * @param {(IAssetToken | IAssetItem)} lhs
 * @param {(IAssetToken | IAssetItem)} rhs
 * @return {*}  {(IResult<IAssetToken | IAssetItem>)}
 */
export declare const subRhsAssetFromLhsAsset: (lhs: IAssetToken | IAssetItem, rhs: IAssetToken | IAssetItem) => IResult<IAssetToken | IAssetItem>;
/**
 * Determine whether the left-hand-side asset is equal to, or greater than the right-hand-side asset
 *
 * @param {(IAssetToken | IAssetItem)} lhs
 * @param {(IAssetToken | IAssetItem)} rhs
 * @return {*}  {IResult<boolean>}
 */
export declare const lhsAssetIsEqOrGreaterThanRhsAsset: (lhs: IAssetToken | IAssetItem, rhs: IAssetToken | IAssetItem) => IResult<boolean>;
/**
 * Determine whether the left-hand-side asset is greater than the right-hand-side asset
 *
 * @param {(IAssetToken | IAssetItem)} lhs
 * @param {(IAssetToken | IAssetItem)} rhs
 * @return {*}  {IResult<boolean>}
 */
export declare const lhsAssetIsGreaterThanRhsAsset: (lhs: IAssetToken | IAssetItem, rhs: IAssetToken | IAssetItem) => IResult<boolean>;
/**
 * Determine whether the left-hand-side asset is less than the right-hand-side asset
 *
 * @param {(IAssetToken | IAssetItem)} lhs
 * @param {(IAssetToken | IAssetItem)} rhs
 * @return {*}  {IResult<boolean>}
 */
export declare const lhsAssetIsLessThanRhsAsset: (lhs: IAssetToken | IAssetItem, rhs: IAssetToken | IAssetItem) => IResult<boolean>;
/**
 * Determine whether an asset is of type `IAssetToken`
 *
 * @param {*} value
 * @return {*}  {value is IAssetToken}
 */
export declare const isOfTypeIAssetToken: (value: any) => value is IAssetToken;
/**
 *  Determine whether an asset is of type `IAssetItem`
 *
 * @param {*} value
 * @return {*}  {value is IAssetItem}
 */
export declare const isOfTypeIAssetItem: (value: any) => value is IAssetItem;
/**
 *   Determine whether the provided value is of type `IPending2WTxDetails`
 *
 * @param {*} value
 * @return {*}  {value is IPending2WTxDetails} (: value is IPending2WTxDetails)
 */
export declare const isOfTypeIPending2WTxDetails: (value: any) => boolean;
/**
 *
 *
 * @template T
 * @param {*} arg
 * @param {*} testAgainst
 * @return {*}  {arg is T}
 */
export declare const isOfType: <T>(arg: any, testAgainst: any) => arg is T;
/**
 * Determine whether two assets are of type `IAssetToken`
 *
 * @param {(IAssetToken | IAssetItem)} lhs
 * @param {(IAssetToken | IAssetItem)} rhs
 * @return {*}  {IResult<[IAssetToken, IAssetToken]>}
 */
export declare const assetsAreBothTokens: (lhs: IAssetToken | IAssetItem, rhs: IAssetToken | IAssetItem) => IResult<[IAssetToken, IAssetToken]>;
/**
 * Determine wheter two assets are `IAssetItem` assets which are compatible based on their DRS transaction hash
 *
 * @param {(IAssetToken | IAssetItem)} lhs
 * @param {(IAssetToken | IAssetItem)} rhs
 * @return {*}  {IResult<[IAssetItem, IAssetItem]>}
 */
export declare const assetsAreBothCompatibleItems: (lhs: IAssetToken | IAssetItem, rhs: IAssetToken | IAssetItem) => IResult<[IAssetItem, IAssetItem]>;
/**
 * Determine whether or not two assets are compatible
 *
 * @param {(IAssetToken | IAssetItem)} lhs
 * @param {(IAssetToken | IAssetItem)} rhs
 * @return {*}  {boolean}
 */
export declare const assetsAreCompatible: (lhs: IAssetToken | IAssetItem, rhs: IAssetToken | IAssetItem) => boolean;
/**
 * Create an `ICreateTransactionResponse` object from a response received by the network (network response is terrible to digest)
 *
 * @param {string[]} usedAddresses
 * @param {IApiCreateTxResponse} networkResponse
 * @return {*}  {IResult<IMakePaymentResponse>}
 */
export declare const transformCreateTxResponseFromNetwork: (usedAddresses: string[], networkResponse: IApiCreateTxResponse) => IResult<IMakePaymentResponse>;
