Skip to content

Commit

Permalink
response: adjust response type & payload based on milkomedaDeployment…
Browse files Browse the repository at this point in the history
… set & move enum to shared
  • Loading branch information
bartfish committed Jun 2, 2023
1 parent bdb4a93 commit 9914cc8
Show file tree
Hide file tree
Showing 5 changed files with 66 additions and 23 deletions.
1 change: 1 addition & 0 deletions server/config/default.ts
@@ -1,4 +1,5 @@
import dotenv from "dotenv";
import { MilkomedaDeployment } from "../../shared/types";

dotenv.config();

Expand Down
4 changes: 2 additions & 2 deletions server/src/contract.ts
Expand Up @@ -9,7 +9,7 @@ import type { MilkomedaStargateAsset } from "../../shared/types";
import CONFIG from "../config/default";

export type TokensRegistry = {
minLovelace: string;
minMainTokenValue: string;
assets: MilkomedaStargateAsset[];
wrappingFee: string;
unwrappingFee: string;
Expand Down Expand Up @@ -129,7 +129,7 @@ export class SidechainContract {
const toADAFeeGWei = await contract.getUnwrappingFee();

const tokenRegistry: TokensRegistry = {
minLovelace: adaMinValue ?? "2000000",
minMainTokenValue: adaMinValue ?? "2000000",
assets: assetsDetails,
wrappingFee: fromADAFeeLovelace,
unwrappingFee: toADAFeeGWei,
Expand Down
56 changes: 41 additions & 15 deletions server/src/index.ts
Expand Up @@ -9,7 +9,8 @@ import type { TokensRegistry } from "./contract";
import { contract } from "./contract";
import type { CacheOption } from "./cache";
import { CacheKeys, cacheManager } from "./cache";
import type { MilkomedaStargateResponse } from "../../shared/types";
import type { MilkomedaStargateA1Response, MilkomedaStargateC1Response, MilkomedaStargateResponse } from "../../shared/types";
import { MilkomedaDeployment } from "../../shared/types"
import { milkomedaNetworks } from "@dcspark/milkomeda-js-sdk";
import CONFIG from "../config/default";

Expand Down Expand Up @@ -62,7 +63,6 @@ const isAddressAllowed = async (req: Request, res: Response) => {
const getSidechainContract = (): string => {
let sidechainContract = "";

// not sure how it's distinguished on the deployments side, so used process.env.MAINNET integrated in the config for now
switch (CONFIG.API.mainnet) {
case "TRUE": {
sidechainContract = milkomedaNetworks["c1-mainnet"].sidechainContract;
Expand All @@ -84,19 +84,45 @@ const stargate = async (req: Request, res: Response) => {
const tokenRegistry = (await cacheManager.get(CacheKeys.TOKEN_REGISTRY)) as TokensRegistry;
const sidechainContract = getSidechainContract();

const response: MilkomedaStargateResponse = {
current_address: stargateAddress,
sidechain_address: sidechainContract,
ttl_expiry: new Date().setHours(24, 0, 0, 0),
ada: {
minLovelace: tokenRegistry.minLovelace,
fromADAFeeLovelace: tokenRegistry.wrappingFee,
toADAFeeGWei: tokenRegistry.unwrappingFee,
cardanoDecimals: 6,
milkomedaDecimals: 18,
},
assets: tokenRegistry.assets,
};
let response: MilkomedaStargateResponse;
switch(CONFIG.API.milkomedaDeployment) {
case MilkomedaDeployment.A1: {
response = {
current_address: stargateAddress,
sidechain_address: sidechainContract,
ttl_expiry: new Date().setHours(24, 0, 0, 0),
algo: {
minMicroAlgo: tokenRegistry.minMainTokenValue,
fromAlgoFeeMicroAlgo: tokenRegistry.wrappingFee,
toAlgoFeeGWei: tokenRegistry.unwrappingFee,
algorandDecimals: 6,
milkomedaDecimals: 18,
},
assets: tokenRegistry.assets,
} as MilkomedaStargateA1Response;
break;
}

// To make sure we keep current deployments set compatible, we set C1 as a default one as well as an option
// case MilkomedaDeployment.C1:
default: {
response = {
current_address: stargateAddress,
sidechain_address: sidechainContract,
ttl_expiry: new Date().setHours(24, 0, 0, 0),
ada: {
minLovelace: tokenRegistry.minMainTokenValue,
fromADAFeeLovelace: tokenRegistry.wrappingFee,
toADAFeeGWei: tokenRegistry.unwrappingFee,
cardanoDecimals: 6,
milkomedaDecimals: 18,
},
assets: tokenRegistry.assets,
} as MilkomedaStargateC1Response;
break;
}
}

res.send(response);
return;
} catch (e) {
Expand Down
5 changes: 0 additions & 5 deletions server/types/globals/index.d.ts
Expand Up @@ -15,9 +15,4 @@ interface ConfigType {
};
}

enum MilkomedaDeployment {
A1 = "A1",
C1 = "C1"
}

declare module "copy-webpack-plugin";
23 changes: 22 additions & 1 deletion shared/types.ts
Expand Up @@ -8,7 +8,9 @@ export type MilkomedaStargateAsset = {
milkomedaDecimals: number;
tokenSymbol: string;
};
export type MilkomedaStargateResponse = {
export type MilkomedaStargateResponse = MilkomedaStargateC1Response | MilkomedaStargateA1Response;

export type MilkomedaStargateC1Response = {
current_address: string;
sidechain_address: string;
ttl_expiry: number;
Expand All @@ -21,3 +23,22 @@ export type MilkomedaStargateResponse = {
};
assets: Array<MilkomedaStargateAsset>;
};

export type MilkomedaStargateA1Response = {
current_address: string;
sidechain_address: string;
ttl_expiry: number;
algo: {
minMicroAlgo: string;
fromAlgoFeeMicroAlgo: string;
toAlgoFeeGWei: string;
algorandDecimals: number;
milkomedaDecimals: number;
};
assets: Array<MilkomedaStargateAsset>;
};

export enum MilkomedaDeployment {
A1 = "A1",
C1 = "C1"
}

0 comments on commit 9914cc8

Please sign in to comment.