diff --git a/packages/sent-staking-js/client.ts b/packages/sent-staking-js/client.ts index c356670f..26104c3e 100644 --- a/packages/sent-staking-js/client.ts +++ b/packages/sent-staking-js/client.ts @@ -1,5 +1,3 @@ -import { genereateOpenNodes } from './test'; - /** /info */ interface NetworkInfoResponse { network: { @@ -186,14 +184,9 @@ export class SessionStakingClient { return this.request(options); } - public async getOpenNodes({ - userAddress, - }: { - userAddress: string; - }): Promise> { - const nodes = genereateOpenNodes({ userAddress }); + public async getOpenNodes(): Promise> { return { - body: { nodes }, + body: { nodes: [] }, status: 200, statusText: 'MOCK', }; diff --git a/packages/sent-staking-js/test.ts b/packages/sent-staking-js/test.ts index 033cc1d1..3ce7c741 100644 --- a/packages/sent-staking-js/test.ts +++ b/packages/sent-staking-js/test.ts @@ -305,70 +305,60 @@ export const generateMockNodeData = ({ return mockNodeData; }; -export const genereateOpenNodes = ({ userAddress }: { userAddress: string }): Array => { +const generateMinAndMaxContribution = ({ + contributors, +}: { + contributors: Array; +}): { minContribution: number; maxContribution: number } => { + const totalStaked = contributors.reduce((acc, contributor) => acc + contributor.amount, 0); + const remainingSlots = 10 - contributors.length; + + if (remainingSlots === 0) { + return { minContribution: 0, maxContribution: 0 }; + } + + const remainingStake = 25000 - totalStaked; + + return { + minContribution: Math.max(0, remainingStake / remainingSlots), + maxContribution: remainingStake, + }; +}; + +const generateOpenNode = ({ + userAddress, + maxContributors, +}: { + userAddress?: string; + maxContributors: number; +}): OpenNode => { + const contributors = generateContributors(maxContributors, userAddress); + const { minContribution, maxContribution } = generateMinAndMaxContribution({ contributors }); + + return { + pubKey: generateNodePubKey(), + operatorFee: Math.random(), + minContribution, + maxContribution, + contributors, + operatorAddress: generateWalletAddress(), + }; +}; + +export const generateOpenNodes = ({ userAddress }: { userAddress?: string }): Array => { return [ - { - pubKey: - 'LCys52dasGmZxo5uC9smEKJHeNGQgc6FU4UtfxXbK7u4H3asfL5dRfoRBajnuuQdEhXjHggCtMTfb6BSoT8eb3G7Fd6p4', - maxContribution: 15000.12, - minContribution: 500, - operatorFee: 0.132, - contributors: generateContributors(0), - operatorAddress: generateWalletAddress(), - }, - { - pubKey: - 'LCys52dasGmZxo5uC9smEKJHeNGQgc6FU4UtfxXbK7u4H3asfL5dRfoRBajnuuQdEhXjHggCtMTfA6BSoT8eb3G7Fd6p4', - maxContribution: 12892.11, - minContribution: 100, - operatorFee: 0.1221, - contributors: generateContributors(0), - operatorAddress: userAddress, - }, - { - pubKey: - 'LCyJd2dFcGmZsz5uC9smEKJHeNGQgc6FU4UtfxXbK7u4H3asfL5dRfoRBajnuuQdEhXjHggCtMTfA6BSoT8eb3G7Fd6p5', - maxContribution: 1000, - minContribution: 12020.55, - operatorFee: 0.5, - contributors: generateContributors(1), - operatorAddress: generateWalletAddress(), - }, - { - pubKey: - 'LCya52dFcGmZxo5uC9smEKJHeNGQgc6FU4UtfxXbK7u4H3asfL5dRfoRBajnuuQdEhXjHggCtaTfA6BSoT8eb3G7Fd6p6', - maxContribution: 1000, - minContribution: 100, - operatorFee: 0.1, - contributors: generateContributors(2, userAddress), - operatorAddress: userAddress, - }, - { - pubKey: - 'LCya52dFcGmZxo5uC9smEKJHeNGQgc6FU4UtfxXbK7u4H3asfL5dRfoRBajnuuQdEhXjHggCtMTfA6BSoT8eb3G7Fd6p6', - maxContribution: 1000, - minContribution: 100, - operatorFee: 0.1, - contributors: generateContributors(2), - operatorAddress: generateWalletAddress(), - }, - { - pubKey: - 'LCyJg2dFcGmZxo5uC9smEKJHeNGQgc6FU4UtfxXbK7u4H3asfL5dRfoRBajnuuQdEhXjHggCfMTfA6BSoT8eb3G7Fd6p7', - maxContribution: 1000, - minContribution: 100, - operatorFee: 0.1, - contributors: generateContributors(4), - operatorAddress: generateWalletAddress(), - }, - { - pubKey: - 'LCyJ5bdFcGmZxo5uC9smEKJHeNGQgc6FU4UtfxXbK7u4H3asfL5dRfoRBajnuuQdEhXjHggCtMTfA6BSoT8eb3G7Fd6p8', - maxContribution: 1000, - minContribution: 100, - operatorFee: 0.1, - contributors: generateContributors(10), - operatorAddress: generateWalletAddress(), - }, + generateOpenNode({ maxContributors: 1 }), + generateOpenNode({ maxContributors: 9 }), + generateOpenNode({ userAddress, maxContributors: 5 }), + generateOpenNode({ userAddress, maxContributors: 1 }), + generateOpenNode({ userAddress, maxContributors: 1 }), + generateOpenNode({ userAddress, maxContributors: 5 }), + generateOpenNode({ maxContributors: 9 }), + generateOpenNode({ maxContributors: 9 }), + generateOpenNode({ maxContributors: 5 }), + generateOpenNode({ maxContributors: 5 }), + generateOpenNode({ userAddress, maxContributors: 5 }), + generateOpenNode({ userAddress, maxContributors: 10 }), + generateOpenNode({ userAddress, maxContributors: 10 }), ]; };