Skip to content

Commit 6787572

Browse files
committed
merge miner provider stuff
1 parent 7768fe9 commit 6787572

File tree

6 files changed

+36
-51
lines changed

6 files changed

+36
-51
lines changed

packages/quarry/src/ixs/merge-miner/claim-rewards.ts

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -164,13 +164,9 @@ export async function claimPrimaryRewards({
164164
}: {
165165
mergePool: MergePoolAccount;
166166
mmOwner: TransactionSigner;
167-
rewarder: {
168-
address: Address;
169-
data: Pick<
170-
Rewarder,
171-
"mintWrapper" | "rewardsTokenMint" | "claimFeeTokenAccount"
172-
>;
173-
};
167+
rewarder: AccountInfo<
168+
Pick<Rewarder, "mintWrapper" | "rewardsTokenMint" | "claimFeeTokenAccount">
169+
>;
174170
}): Promise<Instruction[]> {
175171
const stake = await getPrimaryStakeAccounts({
176172
rewarder: rewarder.address,

packages/react-quarry/src/contexts/merge-miner.ts

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
1-
import type { MergePool } from "@macalinao/quarry";
2-
import type { Address } from "@solana/kit";
1+
import type { MergeMiner, MergePool } from "@macalinao/quarry";
2+
import type { Account, Address } from "@solana/kit";
33
import { createContext, useContext } from "react";
44

55
export interface MergeMinerContextValue {
6-
mergePool: MergePool;
76
mergePoolAddress: Address;
87
mergeMinerAddress: Address | null;
98
userAddress: Address | null;
@@ -12,6 +11,17 @@ export interface MergeMinerContextValue {
1211
* Undefined = loading
1312
*/
1413
balanceRaw: bigint | null | undefined;
14+
15+
/**
16+
* The merge pool.
17+
*/
18+
mergePool: Account<MergePool>;
19+
/**
20+
* The user's merge miner.
21+
*
22+
* Null if it doesn't exist, undefined if loading.
23+
*/
24+
mergeMiner: Account<MergeMiner> | null | undefined;
1525
}
1626

1727
export const MergeMinerContext: React.Context<MergeMinerContextValue | null> =

packages/react-quarry/src/hooks/use-quarry-claim-mm.ts

Lines changed: 5 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ export interface UseQuarryClaimMMResult {
1414
}
1515

1616
export const useQuarryClaimMM = (): UseQuarryClaimMMResult => {
17-
const { mergePool, mergePoolAddress } = useMergeMinerContext();
17+
const { mergePool } = useMergeMinerContext();
1818
const { poolInfo } = usePoolInfo();
1919
const { signer } = useKitWallet();
2020
const sendTX = useSendTX();
@@ -47,15 +47,9 @@ export const useQuarryClaimMM = (): UseQuarryClaimMMResult => {
4747
}
4848

4949
const ixs = await claimPrimaryRewards({
50-
mergePool: {
51-
address: mergePoolAddress,
52-
data: mergePool,
53-
},
50+
mergePool,
5451
mmOwner: signer,
55-
rewarder: {
56-
address: poolInfo.primaryRewards.rewarder,
57-
data: primaryRewarder.data,
58-
},
52+
rewarder: primaryRewarder,
5953
});
6054

6155
return sendTX(
@@ -65,9 +59,7 @@ export const useQuarryClaimMM = (): UseQuarryClaimMMResult => {
6559
}, [
6660
signer,
6761
primaryRewarder,
68-
mergePoolAddress,
6962
mergePool,
70-
poolInfo.primaryRewards.rewarder,
7163
poolInfo.primaryRewards.rewardsToken.symbol,
7264
sendTX,
7365
]);
@@ -86,10 +78,7 @@ export const useQuarryClaimMM = (): UseQuarryClaimMMResult => {
8678

8779
// Add primary rewards instructions
8880
const primaryIxs = await claimPrimaryRewards({
89-
mergePool: {
90-
address: mergePoolAddress,
91-
data: mergePool,
92-
},
81+
mergePool,
9382
mmOwner: signer,
9483
rewarder: {
9584
address: poolInfo.primaryRewards.rewarder,
@@ -115,10 +104,7 @@ export const useQuarryClaimMM = (): UseQuarryClaimMMResult => {
115104

116105
try {
117106
const replicaIxs = await claimReplicaRewards({
118-
mergePool: {
119-
address: mergePoolAddress,
120-
data: mergePool,
121-
},
107+
mergePool,
122108
mmOwner: signer,
123109
rewarder: {
124110
address: address(secondaryReward.rewarder),
@@ -151,7 +137,6 @@ export const useQuarryClaimMM = (): UseQuarryClaimMMResult => {
151137
poolInfo.primaryRewards,
152138
poolInfo.secondaryRewards,
153139
secondaryRewardersResult.data,
154-
mergePoolAddress,
155140
mergePool,
156141
sendTX,
157142
]);

packages/react-quarry/src/hooks/use-quarry-deposit-mm.ts

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ export interface UseQuarryDepositMMResult {
1515
}
1616

1717
export const useQuarryDepositMM = (): UseQuarryDepositMMResult => {
18-
const { mergePool, mergePoolAddress } = useMergeMinerContext();
18+
const { mergePool, mergeMiner } = useMergeMinerContext();
1919
const { poolInfo } = usePoolInfo();
2020
const { signer } = useKitWallet();
2121
const sendTX = useSendTX();
@@ -26,21 +26,15 @@ export const useQuarryDepositMM = (): UseQuarryDepositMMResult => {
2626
throw new Error("Wallet not connected");
2727
}
2828

29-
if (!poolInfo.primaryRewards.rewarder) {
30-
throw new Error("No primary rewarder found");
31-
}
32-
3329
const { ixs } = await createDepositMergeMinerIxs({
3430
amount,
3531
rewarder: poolInfo.primaryRewards.rewarder,
36-
mergePool: {
37-
address: mergePoolAddress,
38-
data: mergePool,
39-
},
32+
mergePool,
4033
payer: signer,
4134
replicaRewarders:
4235
poolInfo.secondaryRewards?.map((r) => r.rewarder) ?? [],
4336
mmOwner: signer,
37+
initMergeMiner: !mergeMiner,
4438
});
4539

4640
return sendTX("Deposit to Merge Miner", ixs);
@@ -49,8 +43,8 @@ export const useQuarryDepositMM = (): UseQuarryDepositMMResult => {
4943
signer,
5044
poolInfo.primaryRewards.rewarder,
5145
poolInfo.secondaryRewards,
52-
mergePoolAddress,
5346
mergePool,
47+
mergeMiner,
5448
sendTX,
5549
],
5650
);

packages/react-quarry/src/hooks/use-quarry-withdraw-mm.ts

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ export interface UseQuarryWithdrawMMResult {
1616
}
1717

1818
export const useQuarryWithdrawMM = (): UseQuarryWithdrawMMResult => {
19-
const { mergePool, mergePoolAddress } = useMergeMinerContext();
19+
const { mergePool } = useMergeMinerContext();
2020
const { poolInfo } = usePoolInfo();
2121
const { signer } = useKitWallet();
2222
const sendTX = useSendTX();
@@ -30,18 +30,11 @@ export const useQuarryWithdrawMM = (): UseQuarryWithdrawMMResult => {
3030
throw new Error("Wallet not connected");
3131
}
3232

33-
if (!poolInfo.primaryRewards.rewarder) {
34-
throw new Error("No primary rewarder found");
35-
}
36-
3733
const ixs = await createWithdrawMergeMinerIxs({
3834
amount,
3935
tokenDestination,
4036
rewarder: poolInfo.primaryRewards.rewarder,
41-
mergePool: {
42-
address: mergePoolAddress,
43-
data: mergePool,
44-
},
37+
mergePool,
4538
owner: signer,
4639
payer: signer,
4740
replicaRewarders:
@@ -54,7 +47,6 @@ export const useQuarryWithdrawMM = (): UseQuarryWithdrawMMResult => {
5447
signer,
5548
poolInfo.primaryRewards.rewarder,
5649
poolInfo.secondaryRewards,
57-
mergePoolAddress,
5850
mergePool,
5951
sendTX,
6052
],

packages/react-quarry/src/providers/merge-miner-provider.tsx

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,12 @@ interface Props {
1111
children?: React.ReactNode;
1212
}
1313

14+
/**
15+
* Provides info about the merge pool and the user's merge miner.
16+
*
17+
* @param param0
18+
* @returns
19+
*/
1420
export const MergeMinerProvider: React.FC<Props> = ({ children }: Props) => {
1521
const poolInfo = usePoolInfo();
1622
const { signer } = useKitWallet();
@@ -53,11 +59,13 @@ export const MergeMinerProvider: React.FC<Props> = ({ children }: Props) => {
5359
return (
5460
<MergeMinerContext.Provider
5561
value={{
56-
mergePool: mergePoolAccount.data,
5762
mergePoolAddress,
5863
mergeMinerAddress,
5964
userAddress: signer?.address ?? null,
6065
balanceRaw,
66+
67+
mergePool: mergePoolAccount,
68+
mergeMiner: mergeMinerAccount,
6169
}}
6270
>
6371
{children}

0 commit comments

Comments
 (0)