Предзаказ обмена
Сначала необходимо получить квоту (информацию о цене, по которой в течение последующих 10 секунд можно будет обменять деньги).
Для этого используем:
mutation { getSwapQuote( marketId: String!, from: String!, to: String!, # direction can be 'to' or 'from' direction: String!, amount: String! ): SwapQuote }
Обратите внимание, параметр direction помогает указать в какой валюте указывается amount - во входящей или исходящей.
Пример 1.
Я хочу поменять 100 USDT на ETH запрос будет выглядеть:
mutation { swapQuote( from: "USDT", to: "ETH", marketId: "ETH-USDT", direction: "from", amount: "100" ) { id serviceId from to direction amount give receive rate internalGive internalReceive expireAt status isActive isErrored } }
Пример 2.
Я хочу поменять USDT и получить в результате 0.001 ETH запрос будет выглядеть:
mutation { swapQuote( from: "USDT", to: "ETH", marketId: "ETH-USDT", direction: "to", amount: "0.001" ) { id serviceId from to direction amount give receive rate internalGive internalReceive expireAt status isActive isErrored } }
Параметры из ответа:
give - сколько клиент должен будет заплатить без учета комиссии нашей системы (приблизительно, если direction = “to” и точно, если direction = “from”)
receive - сколько клиент получит без учета комиссии нашей системы (приблизительно, если direction = “from” и точно, если direction = “to”)
rate - receive / give
internalGive - сколько клиент заплатит с учетом нашей комиссии (приблизительно если direction = “to” и точно, если direction = “from”)
internalReceive - сколько клиент получит без учета комиссии нашей системы (приблизительно, если direction = “from” и точно, если direction = “to”)
expireAt - время, когда текущая квота утратит свою актуальность.
Обмен
После принятия клиентом решения об обмене (если попадаем в 10секундный интервал) используется следующий:
mutation { confirmSwapQuote(id: String!): SwapQuote }
Передаем id квоты, serviceId, marketId