@conquest-eth/tools 0.0.8 → 0.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/planet/manager.d.ts +33 -3
- package/dist/planet/manager.d.ts.map +1 -1
- package/dist/planet/manager.js +96 -3
- package/dist/planet/manager.js.map +1 -1
- package/dist/tools/acquire_planets.d.ts.map +1 -1
- package/dist/tools/acquire_planets.js +4 -0
- package/dist/tools/acquire_planets.js.map +1 -1
- package/package.json +1 -1
- package/src/planet/manager.ts +117 -3
- package/src/tools/acquire_planets.ts +4 -0
package/dist/planet/manager.d.ts
CHANGED
|
@@ -43,6 +43,31 @@ export declare class PlanetManager {
|
|
|
43
43
|
* @returns The balance in raw units (18 decimals)
|
|
44
44
|
*/
|
|
45
45
|
getPlayTokenBalance(address?: `0x${string}`): Promise<bigint>;
|
|
46
|
+
/**
|
|
47
|
+
* Check current allowance for play token to the game contract
|
|
48
|
+
*
|
|
49
|
+
* @param address - Address to check allowance for. Defaults to current wallet address.
|
|
50
|
+
* @returns The current allowance amount
|
|
51
|
+
*/
|
|
52
|
+
getPlayTokenAllowance(address?: `0x${string}`): Promise<bigint>;
|
|
53
|
+
/**
|
|
54
|
+
* Approve play tokens for the game contract.
|
|
55
|
+
* Approves the maximum uint256 value for unlimited spending.
|
|
56
|
+
*
|
|
57
|
+
* @returns Transaction hash of the approval transaction
|
|
58
|
+
*/
|
|
59
|
+
approvePlayToken(): Promise<`0x${string}`>;
|
|
60
|
+
/**
|
|
61
|
+
* Ensure sufficient allowance for play tokens to the game contract.
|
|
62
|
+
* If current allowance is less than the required amount, approves max uint256.
|
|
63
|
+
*
|
|
64
|
+
* @param requiredAmount - The amount of tokens that need to be approved
|
|
65
|
+
* @returns Object indicating if approval was needed and the approval tx hash if applicable
|
|
66
|
+
*/
|
|
67
|
+
ensurePlayTokenAllowance(requiredAmount: bigint): Promise<{
|
|
68
|
+
approvalNeeded: boolean;
|
|
69
|
+
approvalHash?: `0x${string}`;
|
|
70
|
+
}>;
|
|
46
71
|
/**
|
|
47
72
|
* Calculate acquisition costs for planets based on their stats
|
|
48
73
|
*
|
|
@@ -59,15 +84,16 @@ export declare class PlanetManager {
|
|
|
59
84
|
*
|
|
60
85
|
* This simplifies planet acquisition by automatically:
|
|
61
86
|
* 1. Calculating required token amount based on planet stats
|
|
62
|
-
* 2.
|
|
63
|
-
* 3.
|
|
87
|
+
* 2. Checking and approving play token allowance if needed
|
|
88
|
+
* 3. Using ALL available play token balance first
|
|
89
|
+
* 4. Minting any remaining amount needed using native tokens (if allowed)
|
|
64
90
|
*
|
|
65
91
|
* If numTokensPerNativeToken is zero, minting via native token is disabled.
|
|
66
92
|
* In that case, only play tokens can be used and an error is thrown if
|
|
67
93
|
* there aren't enough play tokens to cover the acquisition cost.
|
|
68
94
|
*
|
|
69
95
|
* @param planetIds - Array of planet location IDs to acquire
|
|
70
|
-
* @returns Transaction hash, planets acquired, and
|
|
96
|
+
* @returns Transaction hash, planets acquired, cost breakdown, and approval info
|
|
71
97
|
*/
|
|
72
98
|
acquireWithMaxPlayToken(planetIds: bigint[]): Promise<{
|
|
73
99
|
hash: `0x${string}`;
|
|
@@ -77,6 +103,10 @@ export declare class PlanetManager {
|
|
|
77
103
|
playTokenUsed: bigint;
|
|
78
104
|
amountMinted: bigint;
|
|
79
105
|
};
|
|
106
|
+
approval: {
|
|
107
|
+
approvalNeeded: boolean;
|
|
108
|
+
approvalHash?: `0x${string}`;
|
|
109
|
+
};
|
|
80
110
|
}>;
|
|
81
111
|
/**
|
|
82
112
|
* Exit (unstake) multiple planets
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/planet/manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,OAAO,EAAC,MAAM,MAAM,CAAC;AAC/C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,2BAA2B,CAAC;AACzD,OAAO,KAAK,EAAC,UAAU,EAAE,WAAW,EAAC,MAAM,2BAA2B,CAAC;AAIvE,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,yBAAyB,CAAC;AAC1D,OAAO,KAAK,EAEX,yBAAyB,EACzB,cAAc,EACd,cAAc,EACd,YAAY,EACZ,WAAW,EACX,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/planet/manager.ts"],"names":[],"mappings":"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"}
|
package/dist/planet/manager.js
CHANGED
|
@@ -12,6 +12,34 @@ const erc20BalanceOfAbi = [
|
|
|
12
12
|
outputs: [{ name: '', type: 'uint256' }],
|
|
13
13
|
},
|
|
14
14
|
];
|
|
15
|
+
// ERC20 allowance ABI for checking approval
|
|
16
|
+
const erc20AllowanceAbi = [
|
|
17
|
+
{
|
|
18
|
+
name: 'allowance',
|
|
19
|
+
type: 'function',
|
|
20
|
+
stateMutability: 'view',
|
|
21
|
+
inputs: [
|
|
22
|
+
{ name: 'owner', type: 'address' },
|
|
23
|
+
{ name: 'spender', type: 'address' },
|
|
24
|
+
],
|
|
25
|
+
outputs: [{ name: '', type: 'uint256' }],
|
|
26
|
+
},
|
|
27
|
+
];
|
|
28
|
+
// ERC20 approve ABI for approving tokens
|
|
29
|
+
const erc20ApproveAbi = [
|
|
30
|
+
{
|
|
31
|
+
name: 'approve',
|
|
32
|
+
type: 'function',
|
|
33
|
+
stateMutability: 'nonpayable',
|
|
34
|
+
inputs: [
|
|
35
|
+
{ name: 'spender', type: 'address' },
|
|
36
|
+
{ name: 'amount', type: 'uint256' },
|
|
37
|
+
],
|
|
38
|
+
outputs: [{ name: '', type: 'bool' }],
|
|
39
|
+
},
|
|
40
|
+
];
|
|
41
|
+
// Max uint256 value for unlimited approval
|
|
42
|
+
const MAX_UINT256 = 2n ** 256n - 1n;
|
|
15
43
|
/**
|
|
16
44
|
* PlanetManager manages planet-related operations in the Conquest game
|
|
17
45
|
* including acquiring new planets and initiating exit processes
|
|
@@ -75,6 +103,67 @@ export class PlanetManager {
|
|
|
75
103
|
});
|
|
76
104
|
return balanceRaw;
|
|
77
105
|
}
|
|
106
|
+
/**
|
|
107
|
+
* Check current allowance for play token to the game contract
|
|
108
|
+
*
|
|
109
|
+
* @param address - Address to check allowance for. Defaults to current wallet address.
|
|
110
|
+
* @returns The current allowance amount
|
|
111
|
+
*/
|
|
112
|
+
async getPlayTokenAllowance(address) {
|
|
113
|
+
let targetAddress;
|
|
114
|
+
if (address) {
|
|
115
|
+
targetAddress = address;
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
const clients = this.requireWalletClient();
|
|
119
|
+
targetAddress = clients.walletClient.account.address;
|
|
120
|
+
}
|
|
121
|
+
const allowance = await this.clients.publicClient.readContract({
|
|
122
|
+
address: this.contractConfig.stakingToken,
|
|
123
|
+
abi: erc20AllowanceAbi,
|
|
124
|
+
functionName: 'allowance',
|
|
125
|
+
args: [targetAddress, this.gameContract.address],
|
|
126
|
+
});
|
|
127
|
+
return allowance;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Approve play tokens for the game contract.
|
|
131
|
+
* Approves the maximum uint256 value for unlimited spending.
|
|
132
|
+
*
|
|
133
|
+
* @returns Transaction hash of the approval transaction
|
|
134
|
+
*/
|
|
135
|
+
async approvePlayToken() {
|
|
136
|
+
const clients = this.requireWalletClient();
|
|
137
|
+
const hash = await clients.walletClient.writeContract({
|
|
138
|
+
address: this.contractConfig.stakingToken,
|
|
139
|
+
abi: erc20ApproveAbi,
|
|
140
|
+
functionName: 'approve',
|
|
141
|
+
args: [this.gameContract.address, MAX_UINT256],
|
|
142
|
+
chain: clients.walletClient.chain,
|
|
143
|
+
account: clients.walletClient.account,
|
|
144
|
+
});
|
|
145
|
+
// Wait for the transaction to be confirmed
|
|
146
|
+
await this.clients.publicClient.waitForTransactionReceipt({ hash });
|
|
147
|
+
return hash;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Ensure sufficient allowance for play tokens to the game contract.
|
|
151
|
+
* If current allowance is less than the required amount, approves max uint256.
|
|
152
|
+
*
|
|
153
|
+
* @param requiredAmount - The amount of tokens that need to be approved
|
|
154
|
+
* @returns Object indicating if approval was needed and the approval tx hash if applicable
|
|
155
|
+
*/
|
|
156
|
+
async ensurePlayTokenAllowance(requiredAmount) {
|
|
157
|
+
if (requiredAmount === 0n) {
|
|
158
|
+
return { approvalNeeded: false };
|
|
159
|
+
}
|
|
160
|
+
const currentAllowance = await this.getPlayTokenAllowance();
|
|
161
|
+
if (currentAllowance >= requiredAmount) {
|
|
162
|
+
return { approvalNeeded: false };
|
|
163
|
+
}
|
|
164
|
+
const approvalHash = await this.approvePlayToken();
|
|
165
|
+
return { approvalNeeded: true, approvalHash };
|
|
166
|
+
}
|
|
78
167
|
/**
|
|
79
168
|
* Calculate acquisition costs for planets based on their stats
|
|
80
169
|
*
|
|
@@ -103,15 +192,16 @@ export class PlanetManager {
|
|
|
103
192
|
*
|
|
104
193
|
* This simplifies planet acquisition by automatically:
|
|
105
194
|
* 1. Calculating required token amount based on planet stats
|
|
106
|
-
* 2.
|
|
107
|
-
* 3.
|
|
195
|
+
* 2. Checking and approving play token allowance if needed
|
|
196
|
+
* 3. Using ALL available play token balance first
|
|
197
|
+
* 4. Minting any remaining amount needed using native tokens (if allowed)
|
|
108
198
|
*
|
|
109
199
|
* If numTokensPerNativeToken is zero, minting via native token is disabled.
|
|
110
200
|
* In that case, only play tokens can be used and an error is thrown if
|
|
111
201
|
* there aren't enough play tokens to cover the acquisition cost.
|
|
112
202
|
*
|
|
113
203
|
* @param planetIds - Array of planet location IDs to acquire
|
|
114
|
-
* @returns Transaction hash, planets acquired, and
|
|
204
|
+
* @returns Transaction hash, planets acquired, cost breakdown, and approval info
|
|
115
205
|
*/
|
|
116
206
|
async acquireWithMaxPlayToken(planetIds) {
|
|
117
207
|
// Calculate total required token amount
|
|
@@ -129,6 +219,8 @@ export class PlanetManager {
|
|
|
129
219
|
throw new Error(`Insufficient play token balance. Required: ${totalRequired}, Available: ${playTokenBalance}. ` +
|
|
130
220
|
`Minting via native token is disabled (numTokensPerNativeToken is zero).`);
|
|
131
221
|
}
|
|
222
|
+
// Ensure sufficient allowance for play tokens before acquiring
|
|
223
|
+
const approval = await this.ensurePlayTokenAllowance(playTokenUsed);
|
|
132
224
|
// Acquire the planets
|
|
133
225
|
const result = await acquirePlanets(this.requireWalletClient(), this.gameContract, planetIds, amountToMint, playTokenUsed, this.contractConfig.numTokensPerNativeToken);
|
|
134
226
|
return {
|
|
@@ -138,6 +230,7 @@ export class PlanetManager {
|
|
|
138
230
|
playTokenUsed,
|
|
139
231
|
amountMinted: amountToMint,
|
|
140
232
|
},
|
|
233
|
+
approval,
|
|
141
234
|
};
|
|
142
235
|
}
|
|
143
236
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/planet/manager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/planet/manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acquire_planets.d.ts","sourceRoot":"","sources":["../../src/tools/acquire_planets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AAGtB,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,aAAa,CAAC;AAa7C,eAAO,MAAM,eAAe;;;;;+
|
|
1
|
+
{"version":3,"file":"acquire_planets.d.ts","sourceRoot":"","sources":["../../src/tools/acquire_planets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AAGtB,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,aAAa,CAAC;AAa7C,eAAO,MAAM,eAAe;;;;;+BA0C1B,CAAC"}
|
|
@@ -35,6 +35,10 @@ export const acquire_planets = createTool({
|
|
|
35
35
|
playTokenUsed: formatUnits(result.costs.playTokenUsed, 18),
|
|
36
36
|
amountMinted: formatUnits(result.costs.amountMinted, 18),
|
|
37
37
|
},
|
|
38
|
+
approval: {
|
|
39
|
+
approvalNeeded: result.approval.approvalNeeded,
|
|
40
|
+
approvalHash: result.approval.approvalHash,
|
|
41
|
+
},
|
|
38
42
|
},
|
|
39
43
|
};
|
|
40
44
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acquire_planets.js","sourceRoot":"","sources":["../../src/tools/acquire_planets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AACtB,OAAO,EAAC,WAAW,EAAC,MAAM,MAAM,CAAC;AACjC,OAAO,EAAC,UAAU,EAAC,MAAM,2BAA2B,CAAC;AAGrD,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;IACvB,WAAW,EAAE,CAAC;SACZ,KAAK,CACL,CAAC,CAAC,MAAM,CAAC;QACR,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;QACpD,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;KACpD,CAAC,CACF;SACA,QAAQ,CAAC,wCAAwC,CAAC;CACpD,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,eAAe,GAAG,UAAU,CAA6B;IACrE,WAAW,EACV,wNAAwN;IACzN,MAAM;IACN,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,EAAC,WAAW,EAAC,EAAE,EAAE;QACrC,IAAI,CAAC;YACJ,wCAAwC;YACxC,MAAM,eAAe,GAAa,EAAE,CAAC;YACrC,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE,CAAC;gBACjC,MAAM,QAAQ,GAAG,GAAG,CAAC,aAAa,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC9E,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;oBAC5B,MAAM,IAAI,KAAK,CAAC,mCAAmC,KAAK,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;gBAC5E,CAAC;gBACD,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAChC,CAAC;YAED,6EAA6E;YAC7E,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,uBAAuB,CAAC,eAAe,CAAC,CAAC;YAEhF,OAAO;gBACN,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE;oBACP,eAAe,EAAE,MAAM,CAAC,IAAI;oBAC5B,eAAe,EAAE,MAAM,CAAC,eAAe;oBACvC,KAAK,EAAE;wBACN,aAAa,EAAE,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE,EAAE,CAAC;wBAC1D,aAAa,EAAE,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE,EAAE,CAAC;wBAC1D,YAAY,EAAE,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,EAAE,CAAC;qBACxD;iBACD;aACD,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO;gBACN,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;aAC7D,CAAC;QACH,CAAC;IACF,CAAC;CACD,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"acquire_planets.js","sourceRoot":"","sources":["../../src/tools/acquire_planets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AACtB,OAAO,EAAC,WAAW,EAAC,MAAM,MAAM,CAAC;AACjC,OAAO,EAAC,UAAU,EAAC,MAAM,2BAA2B,CAAC;AAGrD,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;IACvB,WAAW,EAAE,CAAC;SACZ,KAAK,CACL,CAAC,CAAC,MAAM,CAAC;QACR,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;QACpD,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;KACpD,CAAC,CACF;SACA,QAAQ,CAAC,wCAAwC,CAAC;CACpD,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,eAAe,GAAG,UAAU,CAA6B;IACrE,WAAW,EACV,wNAAwN;IACzN,MAAM;IACN,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,EAAC,WAAW,EAAC,EAAE,EAAE;QACrC,IAAI,CAAC;YACJ,wCAAwC;YACxC,MAAM,eAAe,GAAa,EAAE,CAAC;YACrC,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE,CAAC;gBACjC,MAAM,QAAQ,GAAG,GAAG,CAAC,aAAa,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC9E,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;oBAC5B,MAAM,IAAI,KAAK,CAAC,mCAAmC,KAAK,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;gBAC5E,CAAC;gBACD,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAChC,CAAC;YAED,6EAA6E;YAC7E,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,uBAAuB,CAAC,eAAe,CAAC,CAAC;YAEhF,OAAO;gBACN,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE;oBACP,eAAe,EAAE,MAAM,CAAC,IAAI;oBAC5B,eAAe,EAAE,MAAM,CAAC,eAAe;oBACvC,KAAK,EAAE;wBACN,aAAa,EAAE,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE,EAAE,CAAC;wBAC1D,aAAa,EAAE,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE,EAAE,CAAC;wBAC1D,YAAY,EAAE,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,EAAE,CAAC;qBACxD;oBACD,QAAQ,EAAE;wBACT,cAAc,EAAE,MAAM,CAAC,QAAQ,CAAC,cAAc;wBAC9C,YAAY,EAAE,MAAM,CAAC,QAAQ,CAAC,YAAY;qBAC1C;iBACD;aACD,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO;gBACN,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;aAC7D,CAAC;QACH,CAAC;IACF,CAAC;CACD,CAAC,CAAC"}
|
package/package.json
CHANGED
package/src/planet/manager.ts
CHANGED
|
@@ -25,6 +25,37 @@ const erc20BalanceOfAbi = [
|
|
|
25
25
|
},
|
|
26
26
|
] as const;
|
|
27
27
|
|
|
28
|
+
// ERC20 allowance ABI for checking approval
|
|
29
|
+
const erc20AllowanceAbi = [
|
|
30
|
+
{
|
|
31
|
+
name: 'allowance',
|
|
32
|
+
type: 'function',
|
|
33
|
+
stateMutability: 'view',
|
|
34
|
+
inputs: [
|
|
35
|
+
{name: 'owner', type: 'address'},
|
|
36
|
+
{name: 'spender', type: 'address'},
|
|
37
|
+
],
|
|
38
|
+
outputs: [{name: '', type: 'uint256'}],
|
|
39
|
+
},
|
|
40
|
+
] as const;
|
|
41
|
+
|
|
42
|
+
// ERC20 approve ABI for approving tokens
|
|
43
|
+
const erc20ApproveAbi = [
|
|
44
|
+
{
|
|
45
|
+
name: 'approve',
|
|
46
|
+
type: 'function',
|
|
47
|
+
stateMutability: 'nonpayable',
|
|
48
|
+
inputs: [
|
|
49
|
+
{name: 'spender', type: 'address'},
|
|
50
|
+
{name: 'amount', type: 'uint256'},
|
|
51
|
+
],
|
|
52
|
+
outputs: [{name: '', type: 'bool'}],
|
|
53
|
+
},
|
|
54
|
+
] as const;
|
|
55
|
+
|
|
56
|
+
// Max uint256 value for unlimited approval
|
|
57
|
+
const MAX_UINT256 = 2n ** 256n - 1n;
|
|
58
|
+
|
|
28
59
|
/**
|
|
29
60
|
* PlanetManager manages planet-related operations in the Conquest game
|
|
30
61
|
* including acquiring new planets and initiating exit processes
|
|
@@ -114,6 +145,80 @@ export class PlanetManager {
|
|
|
114
145
|
return balanceRaw;
|
|
115
146
|
}
|
|
116
147
|
|
|
148
|
+
/**
|
|
149
|
+
* Check current allowance for play token to the game contract
|
|
150
|
+
*
|
|
151
|
+
* @param address - Address to check allowance for. Defaults to current wallet address.
|
|
152
|
+
* @returns The current allowance amount
|
|
153
|
+
*/
|
|
154
|
+
async getPlayTokenAllowance(address?: `0x${string}`): Promise<bigint> {
|
|
155
|
+
let targetAddress: `0x${string}`;
|
|
156
|
+
|
|
157
|
+
if (address) {
|
|
158
|
+
targetAddress = address;
|
|
159
|
+
} else {
|
|
160
|
+
const clients = this.requireWalletClient();
|
|
161
|
+
targetAddress = clients.walletClient.account!.address;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
const allowance = await this.clients.publicClient.readContract({
|
|
165
|
+
address: this.contractConfig.stakingToken,
|
|
166
|
+
abi: erc20AllowanceAbi,
|
|
167
|
+
functionName: 'allowance',
|
|
168
|
+
args: [targetAddress, this.gameContract.address],
|
|
169
|
+
});
|
|
170
|
+
|
|
171
|
+
return allowance;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
/**
|
|
175
|
+
* Approve play tokens for the game contract.
|
|
176
|
+
* Approves the maximum uint256 value for unlimited spending.
|
|
177
|
+
*
|
|
178
|
+
* @returns Transaction hash of the approval transaction
|
|
179
|
+
*/
|
|
180
|
+
async approvePlayToken(): Promise<`0x${string}`> {
|
|
181
|
+
const clients = this.requireWalletClient();
|
|
182
|
+
|
|
183
|
+
const hash = await clients.walletClient.writeContract({
|
|
184
|
+
address: this.contractConfig.stakingToken,
|
|
185
|
+
abi: erc20ApproveAbi,
|
|
186
|
+
functionName: 'approve',
|
|
187
|
+
args: [this.gameContract.address, MAX_UINT256],
|
|
188
|
+
chain: clients.walletClient.chain,
|
|
189
|
+
account: clients.walletClient.account!,
|
|
190
|
+
});
|
|
191
|
+
|
|
192
|
+
// Wait for the transaction to be confirmed
|
|
193
|
+
await this.clients.publicClient.waitForTransactionReceipt({hash});
|
|
194
|
+
|
|
195
|
+
return hash;
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
/**
|
|
199
|
+
* Ensure sufficient allowance for play tokens to the game contract.
|
|
200
|
+
* If current allowance is less than the required amount, approves max uint256.
|
|
201
|
+
*
|
|
202
|
+
* @param requiredAmount - The amount of tokens that need to be approved
|
|
203
|
+
* @returns Object indicating if approval was needed and the approval tx hash if applicable
|
|
204
|
+
*/
|
|
205
|
+
async ensurePlayTokenAllowance(
|
|
206
|
+
requiredAmount: bigint,
|
|
207
|
+
): Promise<{approvalNeeded: boolean; approvalHash?: `0x${string}`}> {
|
|
208
|
+
if (requiredAmount === 0n) {
|
|
209
|
+
return {approvalNeeded: false};
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
const currentAllowance = await this.getPlayTokenAllowance();
|
|
213
|
+
|
|
214
|
+
if (currentAllowance >= requiredAmount) {
|
|
215
|
+
return {approvalNeeded: false};
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
const approvalHash = await this.approvePlayToken();
|
|
219
|
+
return {approvalNeeded: true, approvalHash};
|
|
220
|
+
}
|
|
221
|
+
|
|
117
222
|
/**
|
|
118
223
|
* Calculate acquisition costs for planets based on their stats
|
|
119
224
|
*
|
|
@@ -145,15 +250,16 @@ export class PlanetManager {
|
|
|
145
250
|
*
|
|
146
251
|
* This simplifies planet acquisition by automatically:
|
|
147
252
|
* 1. Calculating required token amount based on planet stats
|
|
148
|
-
* 2.
|
|
149
|
-
* 3.
|
|
253
|
+
* 2. Checking and approving play token allowance if needed
|
|
254
|
+
* 3. Using ALL available play token balance first
|
|
255
|
+
* 4. Minting any remaining amount needed using native tokens (if allowed)
|
|
150
256
|
*
|
|
151
257
|
* If numTokensPerNativeToken is zero, minting via native token is disabled.
|
|
152
258
|
* In that case, only play tokens can be used and an error is thrown if
|
|
153
259
|
* there aren't enough play tokens to cover the acquisition cost.
|
|
154
260
|
*
|
|
155
261
|
* @param planetIds - Array of planet location IDs to acquire
|
|
156
|
-
* @returns Transaction hash, planets acquired, and
|
|
262
|
+
* @returns Transaction hash, planets acquired, cost breakdown, and approval info
|
|
157
263
|
*/
|
|
158
264
|
async acquireWithMaxPlayToken(planetIds: bigint[]): Promise<{
|
|
159
265
|
hash: `0x${string}`;
|
|
@@ -163,6 +269,10 @@ export class PlanetManager {
|
|
|
163
269
|
playTokenUsed: bigint;
|
|
164
270
|
amountMinted: bigint;
|
|
165
271
|
};
|
|
272
|
+
approval: {
|
|
273
|
+
approvalNeeded: boolean;
|
|
274
|
+
approvalHash?: `0x${string}`;
|
|
275
|
+
};
|
|
166
276
|
}> {
|
|
167
277
|
// Calculate total required token amount
|
|
168
278
|
const {amountToMint: totalRequired} = this.calculateAcquisitionCosts(planetIds);
|
|
@@ -187,6 +297,9 @@ export class PlanetManager {
|
|
|
187
297
|
);
|
|
188
298
|
}
|
|
189
299
|
|
|
300
|
+
// Ensure sufficient allowance for play tokens before acquiring
|
|
301
|
+
const approval = await this.ensurePlayTokenAllowance(playTokenUsed);
|
|
302
|
+
|
|
190
303
|
// Acquire the planets
|
|
191
304
|
const result = await acquirePlanets(
|
|
192
305
|
this.requireWalletClient(),
|
|
@@ -204,6 +317,7 @@ export class PlanetManager {
|
|
|
204
317
|
playTokenUsed,
|
|
205
318
|
amountMinted: amountToMint,
|
|
206
319
|
},
|
|
320
|
+
approval,
|
|
207
321
|
};
|
|
208
322
|
}
|
|
209
323
|
|
|
@@ -43,6 +43,10 @@ export const acquire_planets = createTool<typeof schema, ConquestEnv>({
|
|
|
43
43
|
playTokenUsed: formatUnits(result.costs.playTokenUsed, 18),
|
|
44
44
|
amountMinted: formatUnits(result.costs.amountMinted, 18),
|
|
45
45
|
},
|
|
46
|
+
approval: {
|
|
47
|
+
approvalNeeded: result.approval.approvalNeeded,
|
|
48
|
+
approvalHash: result.approval.approvalHash,
|
|
49
|
+
},
|
|
46
50
|
},
|
|
47
51
|
};
|
|
48
52
|
} catch (error) {
|