diff --git a/src/Packages/Marketplace/CHANGELOG.md.meta b/src/Packages/Marketplace/CHANGELOG.md.meta
new file mode 100644
index 000000000..7fcd47957
--- /dev/null
+++ b/src/Packages/Marketplace/CHANGELOG.md.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: af82d5225d9804276b038c20c2134221
+TextScriptImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/src/Packages/Marketplace/LICENSE.md.meta b/src/Packages/Marketplace/LICENSE.md.meta
new file mode 100644
index 000000000..4d25e1b9b
--- /dev/null
+++ b/src/Packages/Marketplace/LICENSE.md.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 57ae1a41ec4a844418d4d7bf0d229887
+TextScriptImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/src/Packages/Marketplace/README.md.meta b/src/Packages/Marketplace/README.md.meta
new file mode 100644
index 000000000..dead28e1e
--- /dev/null
+++ b/src/Packages/Marketplace/README.md.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: dde9286aa4f64487fa8a8856852bb797
+TextScriptImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/src/Packages/Marketplace/Runtime/OnRamp/OnRamp.cs b/src/Packages/Marketplace/Runtime/OnRamp/OnRamp.cs
index 8edea2576..72c82f97a 100644
--- a/src/Packages/Marketplace/Runtime/OnRamp/OnRamp.cs
+++ b/src/Packages/Marketplace/Runtime/OnRamp/OnRamp.cs
@@ -1,27 +1,36 @@
using System;
using System.Collections.Generic;
using System.Linq;
-using Cysharp.Threading.Tasks;
namespace Immutable.Marketplace.OnRamp
{
+ ///
+ /// Provides functionality for generating an on-ramp link, allowing players to purchase tokens
+ /// using fiat currency and transfer them directly to the Immutable zkEVM network.
+ ///
public class OnRamp
{
private readonly string _environment;
private readonly string _email;
private readonly string _address;
- private static readonly Dictionary TransakBaseUrls = new Dictionary
+ private static readonly Dictionary BaseUrls = new()
{
{ "sandbox", "https://global-stg.transak.com" },
- { "production", "https://global.transak.com/" }
+ { "production", "https://global.transak.com" }
};
- private static readonly Dictionary TransakApiKeys = new Dictionary
+ private static readonly Dictionary ApiKeys = new()
{
{ "sandbox", "d14b44fb-0f84-4db5-affb-e044040d724b" }, // This can be hardcoded as it is a public API key
{ "production", "ad1bca70-d917-4628-bb0f-5609537498bc" }
};
+ ///
+ /// Initialises a new instance of the class.
+ ///
+ /// Specifies the environment (sandbox or production).
+ /// The user's email address, pre-filled in the on-ramp flow.
+ /// The user's wallet address, where tokens will be sent.
public OnRamp(string environment, string email, string address)
{
_environment = environment;
@@ -29,15 +38,23 @@ public OnRamp(string environment, string email, string address)
_address = address;
}
- public async UniTask GetLink(
+ ///
+ /// Generates a link for the on-ramp flow.
+ ///
+ /// The fiat currency to be used (default is "USD").
+ /// The default amount of fiat currency (default is "50").
+ /// The default cryptocurrency (default is "IMX")..
+ /// A comma-separated list of available cryptocurrencies to purchase (default is "imx,eth,usdc").
+ /// An on-ramp URL
+ public string GetLink(
string fiatCurrency = "USD",
string defaultFiatAmount = "50",
string defaultCryptoCurrency = "IMX",
string defaultCryptoCurrencyList = "imx,eth,usdc"
)
{
- string baseUrl = TransakBaseUrls[_environment];
- string apiKey = TransakApiKeys[_environment];
+ var baseUrl = BaseUrls[_environment];
+ var apiKey = ApiKeys[_environment];
var queryParams = new Dictionary
{
@@ -58,7 +75,7 @@ public async UniTask GetLink(
{"cryptoCurrencyList", defaultCryptoCurrencyList}
};
- string queryString = string.Join("&", queryParams.Select(kvp => $"{kvp.Key}={Uri.EscapeDataString(kvp.Value)}").ToArray());
+ var queryString = string.Join("&", queryParams.Select(kvp => $"{kvp.Key}={Uri.EscapeDataString(kvp.Value)}").ToArray());
return $"{baseUrl}?{queryString}";
}
}
diff --git a/src/Packages/Marketplace/Runtime/Swap.meta b/src/Packages/Marketplace/Runtime/Swap.meta
new file mode 100644
index 000000000..422bff917
--- /dev/null
+++ b/src/Packages/Marketplace/Runtime/Swap.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: ecc83add57164e7f9bebe81b9336b6d1
+timeCreated: 1736976769
\ No newline at end of file
diff --git a/src/Packages/Marketplace/Runtime/Swap/Swap.cs b/src/Packages/Marketplace/Runtime/Swap/Swap.cs
new file mode 100644
index 000000000..2b0e7f338
--- /dev/null
+++ b/src/Packages/Marketplace/Runtime/Swap/Swap.cs
@@ -0,0 +1,57 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+
+namespace Immutable.Marketplace.Swap
+{
+ ///
+ /// Provides functionality for generating a link to the swap flow,
+ /// simplifying the process of swapping tokens on the Immutable zkEVM network.
+ ///
+ public class Swap
+ {
+ private readonly string _environment;
+ private static readonly Dictionary BaseUrls = new()
+ {
+ { "sandbox", "https://checkout-playground.sandbox.immutable.com/checkout/swap" },
+ { "production", "https://toolkit.immutable.com/checkout/swap" }
+ };
+
+ private static readonly Dictionary ApiKeys = new()
+ {
+ { "sandbox", "pk_imapik-test-7-hfC5T$W$eEDE8Mc5mp" }, // This can be hardcoded as it is a public API key
+ { "production", "pk_imapik-WGd9orNd8mLdtTCTb3CP" }
+ };
+
+ ///
+ /// Initialises a new instance of the class.
+ ///
+ /// Specifies the environment (sandbox or production).
+ public Swap(string environment)
+ {
+ _environment = environment;
+ }
+
+ ///
+ /// Generates a link for the swap flow.
+ ///
+ /// The address of the token being swapped from.
+ /// The address of the token being swapped to.
+ /// A swap URL
+ public string GetLink(string fromTokenAddress, string toTokenAddress)
+ {
+ var baseUrl = BaseUrls[_environment];
+ var apiKey = ApiKeys[_environment];
+
+ var queryParams = new Dictionary
+ {
+ {"publishableKey", apiKey},
+ {"fromTokenAddress", fromTokenAddress},
+ {"toTokenAddress", toTokenAddress}
+ };
+
+ var queryString = string.Join("&", queryParams.Select(kvp => $"{kvp.Key}={Uri.EscapeDataString(kvp.Value)}").ToArray());
+ return $"{baseUrl}?{queryString}";
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Packages/Marketplace/Runtime/Swap/Swap.cs.meta b/src/Packages/Marketplace/Runtime/Swap/Swap.cs.meta
new file mode 100644
index 000000000..3844c7912
--- /dev/null
+++ b/src/Packages/Marketplace/Runtime/Swap/Swap.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 8c465e6a6157457c9c11e43759058ee1
+timeCreated: 1736976774
\ No newline at end of file