Provider’s LiveApp
As explained in the Swap Integration page, you need to modify your LiveApp with some particularities compared to the one that can be found in the Discover section.
Your LiveApp must:
- Use the Ledger Exchange Services Kit, in addition to the Ledger Services Kit.
- Respond to specific LiveApp URLs in order to adapt to the flow inside Ledger Live.
- Have a modified, slightly more complex, Manifest file.
- Follow specifics flow/ux requirements.
Ledger Exchange Services Kit
To learn how to create (or embed if already existing) your user interface for the swap, please follow the Discover documentation.
Your LiveApp will interact with Ledger Live, through the ExchangeSDK, with the corresponding method.
You will need to set up the SDK with your providerId
attributed upon request by Ledger.
SWAP Method
This method will need you to provide the following parameters:
quoteId
: the id coming from your system and forwarded to your LiveApp as a query parameterfromAccountId
: user’s account id, previously given to the LiveApp as a query parametertoAccountId
: user’s account id, previously given to the LiveApp as a query parameterfromAmount
: amount that will be sent fromfromAddressId
topayinAddress
feeStrategy
:SLOW
,MEDIUM
,FAST
orCUSTOM
.rate
: rate differences in the pair, previously given to the LiveApp as a query parameter
exchangeSDK.swap({
quoteId: "1234",
fromAccountId: "07AB5930-C73A-433F-A2FA-920640AF3A02",
toAccountId: "76A239EB-1C2A-4237-B942-CA87472106EB",
fromAmount: "12.3",
feeStrategy: "SLOW",
rate: 0.7555,
});
LiveApp URL
The LiveApp needs to respond to an URL with some parameters. LiveApp URLs are used to open your LiveApp with the quote values that the user already entered in Ledger Live.
The LiveApp URL format is already fixed and will depend on the information you provided inside your LiveApp manifest (ex: ledgerlive://discover/swapprovidername
).
quoteId
: The id retrieved by Ledger’s backend during a quote request.fromAmount
: The amount of currency.fromAccountId
: The user’s account id in Ledger Live repository.toAccountId
: The user’s account id in Ledger Live repository.rate
: the rate differences in the pair.feeStrategy
:SLOW
,MEDIUM
,FAST
orCUSTOM
.initFeeTotalValue
: initial transaction total fee.customFeeConfig
(optional, required forCUSTOM
feeStrategy): Custom fee configuration in case the strategy is of typeCUSTOM
. The key-value object is encoded in URI parameter.ledger-transaction-id
: id used by ledger to track transactions and their completion statuses.fiatCurrencyId
: The fiat currency id used as reference for the quote.theme
: The theme used in Ledger Live.displayLanguage
: The language used in Ledger Live.
Example:
ledgerlive://discover/swapprovidername?quoteId=1234&fromAmount=0.09&fromAccountId=82f48c06-6170-536e-a21b-56b30b02b58d&toAccountId=c0c4493e-fc4b-50b6-b1a0-566f1a751521&rate=79.09405555555555555556&feeStrategy=CUSTOM&initFeeTotalValue=878198522989412&customFeeConfig=%7B%22maxFeePerGas%22%3A%2212000000000%22%2C%22maxPriorityFeePerGas%22%3A%221000000000%22%2C%22userGasLimit%22%3Anull%2C%22gasLimit%22%3A%2221000%22%7D
Ledger needs to know how to send referral information through the widget.
Manifest Permission
Your LiveApp manifest should contains at least those permissions request:
"permissions": [
"account.list",
"currency.list",
"custom.exchange.start",
"custom.exchange.complete",
]
Flow/UX requirements
Please refer to the Flow Breakdown section for more information.