swapable
Version:
Swapable: Automated Liquidity Pools
103 lines (102 loc) • 4.38 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.RemoveLiquidity
* @package Swapable
* @subpackage Commands
* @since v1.0.0
* @description Class that describes a command for removing assets
* in automated liquidity pools (i.e. "withdrawal").
* @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 | TransferTransaction | Provider Account | Transfers a proportional amount of automated pool shares to the **target** account, where they will be burned. |
* | 02 | MosaicSupplyChangeTransaction | Target Account | Removes the amount of automated pool shares that is proportional to the amount of liquidity removed from the pool. |
* | 03 | TransferTransaction | Target Account | Transfers the **removed liquidity** of `x` and `y` to the provider account. |
* | 04 | TransferTransaction | Provider Account | Adds an execution proof message sent to the **target** account. |
*
*/
export declare class RemoveLiquidity 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[];
}