Skip to content

Commit

Permalink
address feedback
Browse files Browse the repository at this point in the history
  • Loading branch information
kev1n-peters committed Jan 22, 2025
1 parent 7e9837a commit 778df30
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 19 deletions.
25 changes: 12 additions & 13 deletions core/base/src/utils/array.ts
Original file line number Diff line number Diff line change
Expand Up @@ -175,15 +175,12 @@ export type Cartesian<L, R> =
? [...{ [K in keyof R]: K extends `${number}` ? [L, R[K]] : never }]
: [L, R];

export const median = <T extends number | bigint>(arr: T[], isSorted: boolean = false): T => {
export function median(arr: number[], isSorted?: boolean): number;
export function median(arr: bigint[], isSorted?: boolean): bigint;
export function median(arr: (number | bigint)[], isSorted: boolean = false): number | bigint {
if (arr.length === 0) throw new Error("Can't calculate median of empty array");

const sorted = isSorted
? arr
: [...arr].sort((a, b) => {
// handle bigint and number
return a > b ? 1 : a < b ? -1 : 0;
});
const sorted = isSorted ? arr : [...arr].sort((a, b) => (a > b ? 1 : a < b ? -1 : 0)); // handle bigint and number

const mid = Math.floor(sorted.length / 2);

Expand All @@ -195,10 +192,12 @@ export const median = <T extends number | bigint>(arr: T[], isSorted: boolean =
const right = sorted[mid]!;

if (typeof left === "bigint" && typeof right === "bigint") {
return ((left + right) / 2n) as T;
} else if (typeof left === "number" && typeof right === "number") {
return ((left + right) / 2) as T;
} else {
throw new Error("Can't calculate median of array with mixed number and bigint");
return (left + right) / 2n;
}
};

if (typeof left === "number" && typeof right === "number") {
return (left + right) / 2;
}

throw new Error("Can't calculate median of array with mixed number and bigint");
}
14 changes: 11 additions & 3 deletions core/base/src/utils/misc.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,14 @@ export function throws(fn: () => any): boolean {
}
}

export function bound<T extends number | bigint>(value: T, min: T, max: T): T {
return min > value ? min : max < value ? max : value;
}
export function bound(value: number, min: number, max: number): number;
export function bound(value: bigint, min: bigint, max: bigint): bigint;
export function bound(
value: number | bigint,
min: number | bigint,
max: number | bigint,
): number | bigint {
if (value < min) return min;
if (value > max) return max;
return value;
}
8 changes: 5 additions & 3 deletions platforms/solana/src/signer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -490,8 +490,10 @@ export async function determinePriorityFeeTritonOne(
minPriorityFee: number = DEFAULT_MIN_PRIORITY_FEE,
maxPriorityFee: number = DEFAULT_MAX_PRIORITY_FEE,
): Promise<number> {
if (percentile <= 0 || percentile > 1) {
throw new Error('percentile must be between 0 and 1');
const scaledPercentile = percentile * 10_000;

if (scaledPercentile < 1 || scaledPercentile > 10_000) {
throw new Error('percentile must be between 0.0001 and 1');
}

// @ts-ignore
Expand All @@ -502,7 +504,7 @@ export async function determinePriorityFeeTritonOne(
const args = [
accounts,
{
percentile: percentile * 10_000, // between 1 and 10_000
percentile: scaledPercentile,
},
];

Expand Down

0 comments on commit 778df30

Please sign in to comment.