swapable
Version:
Swapable: Automated Liquidity Pools
103 lines (102 loc) • 4.41 kB
TypeScript
/**
* This file is part of Swapable shared under AGPL-3.0
* Copyright (C) 2021 Using Blockchain Ltd, Reg No.: 12658136, United Kingdom
*
* @package Swapable
* @author Grégory Saive for Using Blockchain Ltd <greg@ubc.digital>
* @license AGPL-3.0
*/
import { PublicAccount, Transaction } from 'symbol-sdk';
import { AllowanceResult, CommandOption } from '../../index';
import { Executable } from './Executable';
/**
* @class Swapable.AddLiquidity
* @package Swapable
* @subpackage Commands
* @since v1.0.0
* @description Class that describes a command for adding assets
* in automated liquidity pools (i.e. "deposit").
* @summary
* This automated pool command accepts the following arguments:
*
* | Argument | Description | Example |
* | --- | --- | --- |
* | provider | Liquidity provider | `new PublicAccount(...)` |
* | input_x | Amount and asset identifier of `x` (first in pair) | `new AssetAmount(...)` |
* | input_y | Amount and asset identifier of `y` (second in pair) | `new AssetAmount(...)` |
*
* The execution of this command results in the creation of
* the following list of transactions with their respective
* *signer* and a description:
*
* | Sequence | Type | Signer | Description |
* | --- | --- | --- | --- |
* | 01 | MosaicSupplyChangeTransaction | Target Account | Creates an amount of automated pool shares that is proportional to the amount of liquidity added in the pool. These shares represent the contribution made to the pool by the liquidity provider. |
* | 02 | TransferTransaction | Target Account | Transfers the added automated pool shares to the liquidity provider. |
* | 03 | TransferTransaction | Provider Account | Transfers the **added liquidity** of `x` and `y` to the target account. |
* | 04 | TransferTransaction | Provider Account | Adds an execution proof message sent to the **target** account. |
*
*/
export declare class AddLiquidity extends Executable {
/**
* @access public
* @description The list of **required** arguments to execute
* *this* automated pool command.
*/
arguments: string[];
/**
* Verifies **allowance** of \a actor to execute a command
* with arguments \a argv. This method returns true if all
* required arguments are present.
*
* This method asserts the presence of mandatory arguments.
*
* @access public
* @param {PublicAccount} actor The actor is whom executes the command.
* @param {Array<CommandOption>} argv The command options (arguments).
* @return {AllowanceResult} Returns whether an actor is authorized to execute this command.
* @throws {FailureMissingArgument} On missing mandatory argument(s).
**/
canExecute(actor: PublicAccount, argv?: CommandOption[]): AllowanceResult;
/**
* This method returns the automated pool command name,
* e.g. "CreatePool" or "AddLiquidity", etc.
*
* @access public
* @return {string}
**/
get name(): string;
/**
* This method MUST return a unique automated pool command
* descriptor which includes:
*
* - the open standard descriptor (e.g.: "Swapable") ;
* - the open standard *revision* (e.g.: 1) ;
* - the kebab-case command name (e.g.: "create-pool") ;
* - and the automated pool shares asset identifier.
*
* Items are joined with the `:` operator and attached to a
* so-called execution proof transaction.
*
* @access public
* @return {string}
**/
get descriptor(): string;
/**
* This method returns a list of unsigned transactions in a
* sequencial order of execution. The resulting transaction
* array is later wrapped inside a digital contract that is
* executed atomically such that either all transactions do
* succeed or all transactions are cancelled.
*
* :warning: This method creates at least one- or more than
* one - network-wide **account restriction**. Restrictions
* can potentially lock you out of your account, please use
* this only with caution and if you understand the risks.
*
* @see {execute()}
* @access public
* @return {Transaction[]} Given the execution of a command, returns a list of unsigned transactions.
**/
protected get transactions(): Transaction[];
}