Skip to content

Commit 0094e72

Browse files
authored
Merge pull request #374 from immutable/feat/swap
[DX-3524] feat: swap, marketplace docs
2 parents 01b0a70 + 74ac236 commit 0094e72

File tree

7 files changed

+109
-8
lines changed

7 files changed

+109
-8
lines changed

src/Packages/Marketplace/CHANGELOG.md.meta

+7
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/Packages/Marketplace/LICENSE.md.meta

+7
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/Packages/Marketplace/README.md.meta

+7
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/Packages/Marketplace/Runtime/OnRamp/OnRamp.cs

+25-8
Original file line numberDiff line numberDiff line change
@@ -1,43 +1,60 @@
11
using System;
22
using System.Collections.Generic;
33
using System.Linq;
4-
using Cysharp.Threading.Tasks;
54

65
namespace Immutable.Marketplace.OnRamp
76
{
7+
/// <summary>
8+
/// Provides functionality for generating an on-ramp link, allowing players to purchase tokens
9+
/// using fiat currency and transfer them directly to the Immutable zkEVM network.
10+
/// </summary>
811
public class OnRamp
912
{
1013
private readonly string _environment;
1114
private readonly string _email;
1215
private readonly string _address;
13-
private static readonly Dictionary<string, string> TransakBaseUrls = new Dictionary<string, string>
16+
private static readonly Dictionary<string, string> BaseUrls = new()
1417
{
1518
{ "sandbox", "https://global-stg.transak.com" },
16-
{ "production", "https://global.transak.com/" }
19+
{ "production", "https://global.transak.com" }
1720
};
1821

19-
private static readonly Dictionary<string, string> TransakApiKeys = new Dictionary<string, string>
22+
private static readonly Dictionary<string, string> ApiKeys = new()
2023
{
2124
{ "sandbox", "d14b44fb-0f84-4db5-affb-e044040d724b" }, // This can be hardcoded as it is a public API key
2225
{ "production", "ad1bca70-d917-4628-bb0f-5609537498bc" }
2326
};
2427

28+
/// <summary>
29+
/// Initialises a new instance of the <see cref="OnRamp"/> class.
30+
/// </summary>
31+
/// <param name="environment">Specifies the environment (<c>sandbox</c> or <c>production</c>).</param>
32+
/// <param name="email">The user's email address, pre-filled in the on-ramp flow.</param>
33+
/// <param name="address">The user's wallet address, where tokens will be sent.</param>
2534
public OnRamp(string environment, string email, string address)
2635
{
2736
_environment = environment;
2837
_email = email;
2938
_address = address;
3039
}
3140

32-
public async UniTask<string> GetLink(
41+
/// <summary>
42+
/// Generates a link for the on-ramp flow.
43+
/// </summary>
44+
/// <param name="fiatCurrency">The fiat currency to be used (default is "USD").</param>
45+
/// <param name="defaultFiatAmount">The default amount of fiat currency (default is "50").</param>
46+
/// <param name="defaultCryptoCurrency">The default cryptocurrency (default is "IMX")..</param>
47+
/// <param name="defaultCryptoCurrencyList">A comma-separated list of available cryptocurrencies to purchase (default is "imx,eth,usdc").</param>
48+
/// <returns>An on-ramp URL</returns>
49+
public string GetLink(
3350
string fiatCurrency = "USD",
3451
string defaultFiatAmount = "50",
3552
string defaultCryptoCurrency = "IMX",
3653
string defaultCryptoCurrencyList = "imx,eth,usdc"
3754
)
3855
{
39-
string baseUrl = TransakBaseUrls[_environment];
40-
string apiKey = TransakApiKeys[_environment];
56+
var baseUrl = BaseUrls[_environment];
57+
var apiKey = ApiKeys[_environment];
4158

4259
var queryParams = new Dictionary<string, string>
4360
{
@@ -58,7 +75,7 @@ public async UniTask<string> GetLink(
5875
{"cryptoCurrencyList", defaultCryptoCurrencyList}
5976
};
6077

61-
string queryString = string.Join("&", queryParams.Select(kvp => $"{kvp.Key}={Uri.EscapeDataString(kvp.Value)}").ToArray());
78+
var queryString = string.Join("&", queryParams.Select(kvp => $"{kvp.Key}={Uri.EscapeDataString(kvp.Value)}").ToArray());
6279
return $"{baseUrl}?{queryString}";
6380
}
6481
}

src/Packages/Marketplace/Runtime/Swap.meta

+3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
5+
namespace Immutable.Marketplace.Swap
6+
{
7+
/// <summary>
8+
/// Provides functionality for generating a link to the swap flow,
9+
/// simplifying the process of swapping tokens on the Immutable zkEVM network.
10+
/// </summary>
11+
public class Swap
12+
{
13+
private readonly string _environment;
14+
private static readonly Dictionary<string, string> BaseUrls = new()
15+
{
16+
{ "sandbox", "https://checkout-playground.sandbox.immutable.com/checkout/swap" },
17+
{ "production", "https://toolkit.immutable.com/checkout/swap" }
18+
};
19+
20+
private static readonly Dictionary<string, string> ApiKeys = new()
21+
{
22+
{ "sandbox", "pk_imapik-test-7-hfC5T$W$eEDE8Mc5mp" }, // This can be hardcoded as it is a public API key
23+
{ "production", "pk_imapik-WGd9orNd8mLdtTCTb3CP" }
24+
};
25+
26+
/// <summary>
27+
/// Initialises a new instance of the <see cref="Swap"/> class.
28+
/// </summary>
29+
/// <param name="environment">Specifies the environment (<c>sandbox</c> or <c>production</c>).</param>
30+
public Swap(string environment)
31+
{
32+
_environment = environment;
33+
}
34+
35+
/// <summary>
36+
/// Generates a link for the swap flow.
37+
/// </summary>
38+
/// <param name="fromTokenAddress">The address of the token being swapped from.</param>
39+
/// <param name="toTokenAddress">The address of the token being swapped to.</param>
40+
/// <returns>A swap URL</returns>
41+
public string GetLink(string fromTokenAddress, string toTokenAddress)
42+
{
43+
var baseUrl = BaseUrls[_environment];
44+
var apiKey = ApiKeys[_environment];
45+
46+
var queryParams = new Dictionary<string, string>
47+
{
48+
{"publishableKey", apiKey},
49+
{"fromTokenAddress", fromTokenAddress},
50+
{"toTokenAddress", toTokenAddress}
51+
};
52+
53+
var queryString = string.Join("&", queryParams.Select(kvp => $"{kvp.Key}={Uri.EscapeDataString(kvp.Value)}").ToArray());
54+
return $"{baseUrl}?{queryString}";
55+
}
56+
}
57+
}

src/Packages/Marketplace/Runtime/Swap/Swap.cs.meta

+3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)