Skip to content

Commit

Permalink
feat: added transmission utils
Browse files Browse the repository at this point in the history
  • Loading branch information
tHeMaskedMan981 committed Jun 11, 2024
1 parent e4d8603 commit 079cde7
Show file tree
Hide file tree
Showing 3 changed files with 61 additions and 5 deletions.
1 change: 1 addition & 0 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ export * from "./socket-types";
export * from "./enums";
export * from "./addresses";
export * from "./currency-util";
export * from "./transmission-utils";

export const version = {
[DeploymentMode.DEV]: "IMLI",
Expand Down
11 changes: 6 additions & 5 deletions src/socket-types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -207,14 +207,15 @@ export enum ChainType {
}

export enum FinalityBucket {
fast = "fast",
medium = "medium",
slow = "slow",
fast = 1,
medium = 2,
slow = 3,
}

export enum FinalityType {
block = "block",
time = "time",
bucket = 1,
block = 2,
time = 3,
}

export type ChainFinalityInfo = {
Expand Down
54 changes: 54 additions & 0 deletions src/transmission-utils.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
import { FinalityType } from "./socket-types";

export const decodeTransmissionParams = (transmissionParam: string) => {
if (transmissionParam.length !== 64 && transmissionParam.length !== 66) {
throw new Error("Invalid transmission param length");
}
transmissionParam = transmissionParam.replace("0x", "");
const version = parseInt("0x" + transmissionParam.slice(0, 2));
const finalityType = parseInt("0x" + transmissionParam.slice(2, 4)); // bucket, block, time
const value = parseInt("0x" + transmissionParam.slice(4, 12));

return { version, finalityType, value };
};

export const encodeTransmissionParams = (
version: number,
finalityType: number,
value: number
) => {
let transmissionParam = "0x";
transmissionParam += version.toString(16).padStart(2, "0");
transmissionParam += finalityType.toString(16).padStart(2, "0");
transmissionParam += value.toString(16).padStart(8, "0");
transmissionParam = transmissionParam.padEnd(66, "0");
return transmissionParam;
};

export const isTxFinalized = (data: {
type: FinalityType;
currentBlock: number;
eventBlock: number;
currentTime: number;
eventTime: number;
finalityBlockDiff: number;
finalityTimeDiff: number;
}) => {
if (data.type === FinalityType.block) {
const { currentBlock, eventBlock, finalityBlockDiff } = data;
if (!currentBlock || !eventBlock || !finalityBlockDiff) {
console.log("Invalid data for block finality check");
return false;
}
return currentBlock - eventBlock >= finalityBlockDiff;
} else if (data.type === FinalityType.time) {
if (!data.currentTime || !data.eventTime || !data.finalityTimeDiff) {
console.log("Invalid data for time finality check");
return false;
}
return data.currentTime - data.eventTime >= data.finalityTimeDiff;
} else {
console.log("Invalid finality type");
return false;
}
};

0 comments on commit 079cde7

Please sign in to comment.