From 84620bc7a837efe041e589f3495fd7c1d4f42e15 Mon Sep 17 00:00:00 2001 From: abdoulrasheed Date: Sun, 12 Oct 2025 18:26:02 +0100 Subject: [PATCH] Add swapQuote endpoint --- src/CNGNManager.java | 19 ++++++++++ src/dao/params/SwapQuoteParams.java | 52 ++++++++++++++++++++++++++++ src/util/Constants.java | 1 + target/cngn-java-library-1.0.4.jar | Bin 27426 -> 26894 bytes 4 files changed, 72 insertions(+) create mode 100644 src/dao/params/SwapQuoteParams.java diff --git a/src/CNGNManager.java b/src/CNGNManager.java index 50b46c0..98994aa 100644 --- a/src/CNGNManager.java +++ b/src/CNGNManager.java @@ -74,6 +74,15 @@ public JSONObject updateExternalAccounts(UpdateExternalAccountParams updateExter return ServiceController.makeCalls(UPDATE_EXTERNAL_ACCOUNTS, secrets, updateExternalAccountParams.toJson()); } + public JSONObject getSwapQuote(SwapQuoteParams swapQuoteParams) { + JSONObject payload = new JSONObject(); + payload.put("amount", swapQuoteParams.getAmount()); + payload.put("destinationAddress", swapQuoteParams.getDestinationAddress()); + payload.put("originNetwork", swapQuoteParams.getOriginNetwork().toString().toLowerCase()); + payload.put("destinationNetwork", swapQuoteParams.getDestinationNetwork().toString().toLowerCase()); + return ServiceController.makeCalls(SWAP_QUOTE, secrets, payload); + } + public static void main(String[] args) { System.out.println("----------------------BEGIN TEST-------------------------"); @@ -102,6 +111,16 @@ public static void main(String[] args) { System.out.println("Swap : " + cngnManager.swap(swapParams)); + System.out.println("----------------------SWAP QUOTE-------------------------"); + SwapQuoteParams swapQuoteParams = new SwapQuoteParams( + 2500, + "0x3d8e2.........................", + Network.BSC, + Network.ETH + ); + System.out.println("Swap Quote : " + cngnManager.getSwapQuote(swapQuoteParams)); + + System.out.println("----------------------CREATE VIRTUAL ACCOUNT-------------------------"); CreateVirtualParams mintParams = new CreateVirtualParams( "korapay", diff --git a/src/dao/params/SwapQuoteParams.java b/src/dao/params/SwapQuoteParams.java new file mode 100644 index 0000000..3ceb53d --- /dev/null +++ b/src/dao/params/SwapQuoteParams.java @@ -0,0 +1,52 @@ +package dao.params; + +import util.Network; + +public class SwapQuoteParams { + private double amount; + private String destinationAddress; + private Network originNetwork; + private Network destinationNetwork; + + public SwapQuoteParams(double amount, String destinationAddress, Network originNetwork, Network destinationNetwork) { + this.amount = amount; + this.destinationAddress = destinationAddress; + this.originNetwork = originNetwork; + this.destinationNetwork = destinationNetwork; + } + + public SwapQuoteParams() { + } + + public double getAmount() { + return amount; + } + + public void setAmount(double amount) { + this.amount = amount; + } + + public String getDestinationAddress() { + return destinationAddress; + } + + public void setDestinationAddress(String destinationAddress) { + this.destinationAddress = destinationAddress; + } + + public Network getOriginNetwork() { + return originNetwork; + } + + public void setOriginNetwork(Network originNetwork) { + this.originNetwork = originNetwork; + } + + public Network getDestinationNetwork() { + return destinationNetwork; + } + + public void setDestinationNetwork(Network destinationNetwork) { + this.destinationNetwork = destinationNetwork; + } +} diff --git a/src/util/Constants.java b/src/util/Constants.java index 068738e..e8dc0e9 100644 --- a/src/util/Constants.java +++ b/src/util/Constants.java @@ -14,5 +14,6 @@ public class Constants { public static String GET_BANKS = BASE_URL+"/banks"; public static String WITHDRAW = BASE_URL+"/withdraw"; public static String VERIFY_WITHDRAWAL = WITHDRAW+"/verify/"; + public static String SWAP_QUOTE = BASE_URL+"/swap-quote"; } diff --git a/target/cngn-java-library-1.0.4.jar b/target/cngn-java-library-1.0.4.jar index a6dfdffa7c3c3c93dd84db090e05659153b55c4a..f4da0f972ab1acfdbf3b0f297d0764cf8ba5cb05 100644 GIT binary patch delta 9083 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 Rf57bM;!lpugxRmR{{ydtD3AaE