@conquest-eth/tools 0.0.7 → 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/acquire.d.ts.map +1 -1
- package/dist/planet/acquire.js +9 -1
- package/dist/planet/acquire.js.map +1 -1
- package/dist/planet/manager.d.ts +37 -3
- package/dist/planet/manager.d.ts.map +1 -1
- package/dist/planet/manager.js +107 -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 +2 -2
- package/src/planet/acquire.ts +11 -1
- package/src/planet/manager.ts +132 -3
- package/src/tools/acquire_planets.ts +4 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acquire.d.ts","sourceRoot":"","sources":["../../src/planet/acquire.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAE,YAAY,EAAC,MAAM,aAAa,CAAC;AAElD;;;;;;;;;;GAUG;AACH,wBAAsB,cAAc,CACnC,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,MAAM,EAAE,EACnB,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,MAAM,EACnB,uBAAuB,EAAE,MAAM,GAC7B,OAAO,CAAC;IAAC,IAAI,EAAE,KAAK,MAAM,EAAE,CAAC;IAAC,eAAe,EAAE,MAAM,EAAE,CAAA;CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"acquire.d.ts","sourceRoot":"","sources":["../../src/planet/acquire.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAE,YAAY,EAAC,MAAM,aAAa,CAAC;AAElD;;;;;;;;;;GAUG;AACH,wBAAsB,cAAc,CACnC,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,MAAM,EAAE,EACnB,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,MAAM,EACnB,uBAAuB,EAAE,MAAM,GAC7B,OAAO,CAAC;IAAC,IAAI,EAAE,KAAK,MAAM,EAAE,CAAC;IAAC,eAAe,EAAE,MAAM,EAAE,CAAA;CAAC,CAAC,CAkC3D"}
|
package/dist/planet/acquire.js
CHANGED
|
@@ -13,7 +13,15 @@ export async function acquirePlanets(clients, gameContract, planetIds, amountToM
|
|
|
13
13
|
const sender = clients.walletClient.account.address;
|
|
14
14
|
// Calculate how much native token is needed to mint `amountToMint` play tokens
|
|
15
15
|
// nativeTokenAmount = amountToMint * 1e18 / numTokensPerNativeToken
|
|
16
|
-
|
|
16
|
+
// If numTokensPerNativeToken is zero, minting via native token is disabled
|
|
17
|
+
let nativeTokenAmount = 0n;
|
|
18
|
+
if (amountToMint > 0n) {
|
|
19
|
+
if (numTokensPerNativeToken === 0n) {
|
|
20
|
+
throw new Error('Cannot mint play tokens via native token: numTokensPerNativeToken is zero. ' +
|
|
21
|
+
'Please ensure you have sufficient play token balance.');
|
|
22
|
+
}
|
|
23
|
+
nativeTokenAmount = (amountToMint * 1000000000000000000n) / numTokensPerNativeToken;
|
|
24
|
+
}
|
|
17
25
|
// Get the contract acquireMultipleViaNativeTokenAndStakingToken function signature
|
|
18
26
|
const simulation = await clients.publicClient.simulateContract({
|
|
19
27
|
...gameContract,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acquire.js","sourceRoot":"","sources":["../../src/planet/acquire.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CACnC,OAAgB,EAChB,YAA0B,EAC1B,SAAmB,EACnB,YAAoB,EACpB,WAAmB,EACnB,uBAA+B;IAE/B,MAAM,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,OAAQ,CAAC,OAAO,CAAC;IAErD,+EAA+E;IAC/E,oEAAoE;IACpE,MAAM,iBAAiB,GAAG,CAAC,YAAY,GAAG,oBAAoB,CAAC,GAAG,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"acquire.js","sourceRoot":"","sources":["../../src/planet/acquire.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CACnC,OAAgB,EAChB,YAA0B,EAC1B,SAAmB,EACnB,YAAoB,EACpB,WAAmB,EACnB,uBAA+B;IAE/B,MAAM,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,OAAQ,CAAC,OAAO,CAAC;IAErD,+EAA+E;IAC/E,oEAAoE;IACpE,2EAA2E;IAC3E,IAAI,iBAAiB,GAAG,EAAE,CAAC;IAC3B,IAAI,YAAY,GAAG,EAAE,EAAE,CAAC;QACvB,IAAI,uBAAuB,KAAK,EAAE,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CACd,6EAA6E;gBAC5E,uDAAuD,CACxD,CAAC;QACH,CAAC;QACD,iBAAiB,GAAG,CAAC,YAAY,GAAG,oBAAoB,CAAC,GAAG,uBAAuB,CAAC;IACrF,CAAC;IAED,mFAAmF;IACnF,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,gBAAgB,CAAC;QAC9D,GAAG,YAAY;QACf,YAAY,EAAE,8CAA8C;QAC5D,IAAI,EAAE,CAAC,SAAS,EAAE,YAAY,EAAE,WAAW,CAAC;QAC5C,OAAO,EAAE,MAAM;QACf,KAAK,EAAE,iBAAiB;KACxB,CAAC,CAAC;IAEH,uBAAuB;IACvB,8DAA8D;IAC9D,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,aAAa,CAAC;QACrD,GAAG,UAAU,CAAC,OAAO;QACrB,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,OAAQ;KACtC,CAAC,CAAC;IAEH,OAAO,EAAC,IAAI,EAAE,eAAe,EAAE,SAAS,EAAC,CAAC;AAC3C,CAAC"}
|
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,11 +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)
|
|
90
|
+
*
|
|
91
|
+
* If numTokensPerNativeToken is zero, minting via native token is disabled.
|
|
92
|
+
* In that case, only play tokens can be used and an error is thrown if
|
|
93
|
+
* there aren't enough play tokens to cover the acquisition cost.
|
|
64
94
|
*
|
|
65
95
|
* @param planetIds - Array of planet location IDs to acquire
|
|
66
|
-
* @returns Transaction hash, planets acquired, and
|
|
96
|
+
* @returns Transaction hash, planets acquired, cost breakdown, and approval info
|
|
67
97
|
*/
|
|
68
98
|
acquireWithMaxPlayToken(planetIds: bigint[]): Promise<{
|
|
69
99
|
hash: `0x${string}`;
|
|
@@ -73,6 +103,10 @@ export declare class PlanetManager {
|
|
|
73
103
|
playTokenUsed: bigint;
|
|
74
104
|
amountMinted: bigint;
|
|
75
105
|
};
|
|
106
|
+
approval: {
|
|
107
|
+
approvalNeeded: boolean;
|
|
108
|
+
approvalHash?: `0x${string}`;
|
|
109
|
+
};
|
|
76
110
|
}>;
|
|
77
111
|
/**
|
|
78
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,21 +192,35 @@ 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)
|
|
198
|
+
*
|
|
199
|
+
* If numTokensPerNativeToken is zero, minting via native token is disabled.
|
|
200
|
+
* In that case, only play tokens can be used and an error is thrown if
|
|
201
|
+
* there aren't enough play tokens to cover the acquisition cost.
|
|
108
202
|
*
|
|
109
203
|
* @param planetIds - Array of planet location IDs to acquire
|
|
110
|
-
* @returns Transaction hash, planets acquired, and
|
|
204
|
+
* @returns Transaction hash, planets acquired, cost breakdown, and approval info
|
|
111
205
|
*/
|
|
112
206
|
async acquireWithMaxPlayToken(planetIds) {
|
|
113
207
|
// Calculate total required token amount
|
|
114
208
|
const { amountToMint: totalRequired } = this.calculateAcquisitionCosts(planetIds);
|
|
115
209
|
// Get current play token balance
|
|
116
210
|
const playTokenBalance = await this.getPlayTokenBalance();
|
|
211
|
+
// Check if minting via native token is allowed
|
|
212
|
+
const nativeMintingAllowed = this.contractConfig.numTokensPerNativeToken > 0n;
|
|
117
213
|
// Determine how much play token to use (all of it, up to what's needed)
|
|
118
214
|
const playTokenUsed = playTokenBalance > totalRequired ? totalRequired : playTokenBalance;
|
|
119
215
|
// Calculate remaining amount to mint with native tokens
|
|
120
216
|
const amountToMint = totalRequired > playTokenUsed ? totalRequired - playTokenUsed : 0n;
|
|
217
|
+
// If minting is not allowed and we need to mint, error out
|
|
218
|
+
if (!nativeMintingAllowed && amountToMint > 0n) {
|
|
219
|
+
throw new Error(`Insufficient play token balance. Required: ${totalRequired}, Available: ${playTokenBalance}. ` +
|
|
220
|
+
`Minting via native token is disabled (numTokensPerNativeToken is zero).`);
|
|
221
|
+
}
|
|
222
|
+
// Ensure sufficient allowance for play tokens before acquiring
|
|
223
|
+
const approval = await this.ensurePlayTokenAllowance(playTokenUsed);
|
|
121
224
|
// Acquire the planets
|
|
122
225
|
const result = await acquirePlanets(this.requireWalletClient(), this.gameContract, planetIds, amountToMint, playTokenUsed, this.contractConfig.numTokensPerNativeToken);
|
|
123
226
|
return {
|
|
@@ -127,6 +230,7 @@ export class PlanetManager {
|
|
|
127
230
|
playTokenUsed,
|
|
128
231
|
amountMinted: amountToMint,
|
|
129
232
|
},
|
|
233
|
+
approval,
|
|
130
234
|
};
|
|
131
235
|
}
|
|
132
236
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/planet/manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAe,MAAM,MAAM,CAAC;AAG/C,OAAO,EAAC,cAAc,EAAC,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAC,WAAW,EAAC,MAAM,WAAW,CAAC;AACtC,OAAO,EAAC,mBAAmB,EAAC,MAAM,eAAe,CAAC;AAWlD,sDAAsD;AACtD,MAAM,iBAAiB,GAAG;IACzB;QACC,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,UAAU;QAChB,eAAe,EAAE,MAAM;QACvB,MAAM,EAAE,CAAC,EAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAC,CAAC;QAC5C,OAAO,EAAE,CAAC,EAAC,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAC,CAAC;KACtC;CACQ,CAAC;AAEX;;;GAGG;AACH,MAAM,OAAO,aAAa;IAEP;IACA;IACA;IACA;IACA;IALlB,YACkB,OAAkC,EAClC,YAA0B,EAC1B,SAAoB,EACpB,cAA8B,EAC9B,OAAqB;QAJrB,YAAO,GAAP,OAAO,CAA2B;QAClC,iBAAY,GAAZ,YAAY,CAAc;QAC1B,cAAS,GAAT,SAAS,CAAW;QACpB,mBAAc,GAAd,cAAc,CAAgB;QAC9B,YAAO,GAAP,OAAO,CAAc;IACpC,CAAC;IAEJ;;OAEG;IACK,mBAAmB;QAC1B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CACd,kGAAkG,CAClG,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC,OAAkB,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CACZ,SAAmB,EACnB,YAAoB,EACpB,WAAmB;QAEnB,OAAO,cAAc,CACpB,IAAI,CAAC,mBAAmB,EAAE,EAC1B,IAAI,CAAC,YAAY,EACjB,SAAS,EACT,YAAY,EACZ,WAAW,EACX,IAAI,CAAC,cAAc,CAAC,uBAAuB,CAC3C,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,mBAAmB,CAAC,SAAmB;QAK5C,MAAM,KAAK,GAAG,IAAI,CAAC,yBAAyB,CAAC,SAAS,CAAC,CAAC;QACxD,MAAM,MAAM,GAAG,MAAM,cAAc,CAClC,IAAI,CAAC,mBAAmB,EAAE,EAC1B,IAAI,CAAC,YAAY,EACjB,SAAS,EACT,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,WAAW,EACjB,IAAI,CAAC,cAAc,CAAC,uBAAuB,CAC3C,CAAC;QACF,OAAO,EAAC,GAAG,MAAM,EAAE,KAAK,EAAC,CAAC;IAC3B,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,mBAAmB,CAAC,OAAuB;QAChD,IAAI,aAA4B,CAAC;QAEjC,IAAI,OAAO,EAAE,CAAC;YACb,aAAa,GAAG,OAAO,CAAC;QACzB,CAAC;aAAM,CAAC;YACP,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC3C,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,OAAQ,CAAC,OAAO,CAAC;QACvD,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC;YAC/D,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,YAAY;YACzC,GAAG,EAAE,iBAAiB;YACtB,YAAY,EAAE,WAAW;YACzB,IAAI,EAAE,CAAC,aAAa,CAAC;SACrB,CAAC,CAAC;QAEH,OAAO,UAAU,CAAC;IACnB,CAAC;IAED;;;;;OAKG;IACH,yBAAyB,CAAC,SAAmB;QAC5C,MAAM,UAAU,GAAG,gBAAgB,CAAC;QACpC,IAAI,gBAAgB,GAAG,EAAE,CAAC;QAC1B,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YAClC,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YAC5C,IAAI,CAAC,MAAM,EAAE,CAAC;gBACb,MAAM,IAAI,KAAK,CAAC,UAAU,QAAQ,YAAY,CAAC,CAAC;YACjD,CAAC;YACD,mDAAmD;YACnD,8CAA8C;YAC9C,gBAAgB,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC;QAC7D,CAAC;QAED,MAAM,YAAY,GAAG,gBAAgB,CAAC;QAEtC,mDAAmD;QACnD,OAAO,EAAC,YAAY,EAAE,WAAW,EAAE,EAAE,EAAC,CAAC;IACxC,CAAC;IAED;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,uBAAuB,CAAC,SAAmB;QAShD,wCAAwC;QACxC,MAAM,EAAC,YAAY,EAAE,aAAa,EAAC,GAAG,IAAI,CAAC,yBAAyB,CAAC,SAAS,CAAC,CAAC;QAEhF,iCAAiC;QACjC,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAE1D,wEAAwE;QACxE,MAAM,aAAa,GAAG,gBAAgB,GAAG,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,gBAAgB,CAAC;QAE1F,wDAAwD;QACxD,MAAM,YAAY,GAAG,aAAa,GAAG,aAAa,CAAC,CAAC,CAAC,aAAa,GAAG,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;QAExF,sBAAsB;QACtB,MAAM,MAAM,GAAG,MAAM,cAAc,CAClC,IAAI,CAAC,mBAAmB,EAAE,EAC1B,IAAI,CAAC,YAAY,EACjB,SAAS,EACT,YAAY,EACZ,aAAa,EACb,IAAI,CAAC,cAAc,CAAC,uBAAuB,CAC3C,CAAC;QAEF,OAAO;YACN,GAAG,MAAM;YACT,KAAK,EAAE;gBACN,aAAa;gBACb,aAAa;gBACb,YAAY,EAAE,YAAY;aAC1B;SACD,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI,CAAC,SAAmB;QAC7B,OAAO,WAAW,CACjB,IAAI,CAAC,mBAAmB,EAAE,EAC1B,IAAI,CAAC,YAAY,EACjB,SAAS,EACT,IAAI,CAAC,cAAc,CAAC,YAAY,EAChC,IAAI,CAAC,OAAO,CACZ,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,QAAQ,CAAC,SAAmB;QACjC,MAAM,MAAM,GAAG,MAAM,mBAAmB,CACvC,IAAI,CAAC,mBAAmB,EAAE,EAC1B,IAAI,CAAC,YAAY,EACjB,SAAS,CACT,CAAC;QAEF,yCAAyC;QACzC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QAClD,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,gBAAgB,EAAE,CAAC;YAChD,MAAM,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QAC7D,CAAC;QAED,OAAO,MAAM,CAAC;IACf,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,oBAAoB;QACzB,MAAM,MAAM,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC,YAAY,CAAC,OAAQ,CAAC,OAAO,CAAC;QACxE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;QACpE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QAElD,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;YAC/B,kCAAkC;YAClC,MAAM,cAAc,GAAG,WAAW,IAAI,IAAI,CAAC,gBAAgB,CAAC;YAC5D,0BAA0B;YAC1B,MAAM,cAAc,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;YACzC,gCAAgC;YAChC,MAAM,YAAY,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;YAErC,OAAO,cAAc,IAAI,cAAc,IAAI,YAAY,CAAC;QACzD,CAAC,CAAC,CAAC;IACJ,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,WAAW;QAChB,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAE5D,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpC,OAAO,IAAI,CAAC;QACb,CAAC;QAED,MAAM,SAAS,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACjE,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,QAAgB;QAC7B,OAAO,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IACpD,CAAC;IAED;;;;;OAKG;IACH,wBAAwB,CAAC,CAAS,EAAE,CAAS;QAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAClD,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,SAAmB;QACjC,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC;IACtD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB,CACrB,OAAe,EACf,OAAe,EACf,MAAc;QAEd,0DAA0D;QAC1D,MAAM,aAAa,GAAiB,EAAE,CAAC;QACvC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,oBAAoB,CACvD,OAAO,GAAG,MAAM,EAChB,OAAO,GAAG,MAAM,EAChB,OAAO,GAAG,MAAM,EAChB,OAAO,GAAG,MAAM,CAChB,EAAE,CAAC;YACH,gDAAgD;YAChD,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,OAAO,CAAC;YACvC,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,OAAO,CAAC;YACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;YAC9C,IAAI,QAAQ,IAAI,MAAM,EAAE,CAAC;gBACxB,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC5B,CAAC;QACF,CAAC;QAED,yCAAyC;QACzC,MAAM,SAAS,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC1D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC;YAC3D,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,OAAO;YAClC,GAAG,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG;YAC1B,YAAY,EAAE,iBAAiB;YAC/B,IAAI,EAAE,CAAC,SAAS,CAAC;SACjB,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAEzB,8CAA8C;QAC9C,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QAElD,oDAAoD;QACpD,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;YAC1C,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;YAC/B,wDAAwD;YACxD,MAAM,SAAS,GAAG;gBACjB,KAAK,EAAE,QAAQ,CAAC,KAAK,KAAK,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK;gBAClE,8BAA8B,EAAE,CAAC,EAAE,OAAO;gBAC1C,gBAAgB,EAAE,QAAQ,CAAC,WAAW;gBACtC,aAAa,EAAE,QAAQ,CAAC,aAAa;gBACrC,aAAa,EAAE,QAAQ,CAAC,aAAa;gBACrC,QAAQ,EAAE,CAAC,EAAE,OAAO;gBACpB,eAAe,EAAE,CAAC,EAAE,OAAO;gBAC3B,QAAQ,EAAE,CAAC,EAAE,OAAO;gBACpB,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,OAAO,EAAE,KAAK,EAAE,oBAAoB;gBACpC,YAAY,EAAE,CAAC,EAAE,oBAAoB;gBACrC,OAAO,EAAE,KAAK,EAAE,oBAAoB;gBACpC,SAAS,EAAE,KAAK,EAAE,oBAAoB;gBACtC,OAAO,EAAE,KAAK,EAAE,oBAAoB;gBACpC,WAAW,EAAE,EAAE,EAAE,oBAAoB;gBACrC,QAAQ,EAAE,EAAE;aACZ,CAAC;YACF,2CAA2C;YAC3C,IAAI,CAAC,SAAS,CAAC,iCAAiC,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;YACjF,OAAO;gBACN,IAAI,EAAE,MAAM;gBACZ,KAAK,EAAE,SAAS;aAChB,CAAC;QACH,CAAC,CAAC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CACjB,SAAiB,GAAG;QAEpB,MAAM,MAAM,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC,YAAY,CAAC,OAAQ,CAAC,OAAO,CAAC;QAExE,8EAA8E;QAC9E,0DAA0D;QAC1D,MAAM,aAAa,GAAiB,EAAE,CAAC;QAEvC,qCAAqC;QACrC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;YAC5F,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5B,CAAC;QAED,yCAAyC;QACzC,MAAM,SAAS,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC1D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC;YAC3D,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,OAAO;YAClC,GAAG,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG;YAC1B,YAAY,EAAE,iBAAiB;YAC/B,IAAI,EAAE,CAAC,SAAS,CAAC;SACjB,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAEzB,8CAA8C;QAC9C,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QAElD,2CAA2C;QAC3C,MAAM,SAAS,GAAqD,EAAE,CAAC;QACvE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/C,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YAC3B,IAAI,QAAQ,IAAI,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC;gBACzF,wDAAwD;gBACxD,MAAM,SAAS,GAAQ,EAAC,GAAG,QAAQ,EAAC,CAAC;gBACrC,2CAA2C;gBAC3C,IAAI,CAAC,SAAS,CAAC,iCAAiC,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;gBAC3F,SAAS,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,EAAC,CAAC,CAAC;YAC5D,CAAC;QACF,CAAC;QAED,OAAO,SAAS,CAAC;IAClB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,iBAAiB;QACtB,MAAM,MAAM,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC,YAAY,CAAC,OAAQ,CAAC,OAAO,CAAC;QACxE,OAAO,IAAI,CAAC,OAAO,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;IACrD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB,CACrB,QAAgB;QAEhB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QACzD,IAAI,CAAC,IAAI,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,oCAAoC,QAAQ,EAAE,CAAC,CAAC;QACjE,CAAC;QAED,0CAA0C;QAC1C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC;YAC3D,GAAG,IAAI,CAAC,YAAY;YACpB,YAAY,EAAE,iBAAiB;YAC/B,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;SAClB,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAEzB,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,kCAAkC,QAAQ,EAAE,CAAC,CAAC;QAC/D,CAAC;QAED,MAAM,YAAY,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QAElD,6CAA6C;QAC7C,IAAI,WAAW,GAAG,KAAK,CAAC;QACxB,IAAI,YAAY,CAAC,KAAK,IAAI,YAAY,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC;YAC1F,WAAW,GAAG,IAAI,CAAC;YACnB,MAAM,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,QAAQ,EAAE,WAAW,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC;QACnF,CAAC;QAED,4BAA4B;QAC5B,IAAI,CAAC,YAAY,CAAC,MAAM,IAAI,WAAW,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAClE,MAAM,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QAC7D,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAChE,IAAI,CAAC,WAAW,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;QAC5D,CAAC;QAED,OAAO;YACN,IAAI,EAAE,WAAW;YACjB,WAAW;YACX,QAAQ,EAAE,YAAY,CAAC,KAAK;SAC5B,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,wBAAwB,CAAC,gBAAwB,CAAC;QACvD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,aAAa,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;QAC/E,MAAM,IAAI,CAAC,OAAO,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC;IACxD,CAAC;IAED;;OAEG;IACH,iBAAiB,CAAC,YAAoB,EAAE,UAAkB;QACzD,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;QACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QAEhD,IAAI,CAAC,UAAU,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC9B,OAAO,SAAS,CAAC;QAClB,CAAC;QAED,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IACtD,CAAC;CACD"}
|
|
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
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@conquest-eth/tools",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.9",
|
|
4
4
|
"description": "Tools for Conquest.eth, including mcp server",
|
|
5
5
|
"author": "Ronan Sandford",
|
|
6
6
|
"license": "MIT",
|
|
@@ -57,7 +57,7 @@
|
|
|
57
57
|
},
|
|
58
58
|
"devDependencies": {
|
|
59
59
|
"@modelcontextprotocol/inspector": "^0.19.0",
|
|
60
|
-
"@rocketh/node": "^0.18.
|
|
60
|
+
"@rocketh/node": "^0.18.5",
|
|
61
61
|
"@types/node": "^25.2.0",
|
|
62
62
|
"as-soon": "^0.1.5",
|
|
63
63
|
"prettier": "^3.8.0",
|
package/src/planet/acquire.ts
CHANGED
|
@@ -23,7 +23,17 @@ export async function acquirePlanets(
|
|
|
23
23
|
|
|
24
24
|
// Calculate how much native token is needed to mint `amountToMint` play tokens
|
|
25
25
|
// nativeTokenAmount = amountToMint * 1e18 / numTokensPerNativeToken
|
|
26
|
-
|
|
26
|
+
// If numTokensPerNativeToken is zero, minting via native token is disabled
|
|
27
|
+
let nativeTokenAmount = 0n;
|
|
28
|
+
if (amountToMint > 0n) {
|
|
29
|
+
if (numTokensPerNativeToken === 0n) {
|
|
30
|
+
throw new Error(
|
|
31
|
+
'Cannot mint play tokens via native token: numTokensPerNativeToken is zero. ' +
|
|
32
|
+
'Please ensure you have sufficient play token balance.',
|
|
33
|
+
);
|
|
34
|
+
}
|
|
35
|
+
nativeTokenAmount = (amountToMint * 1000000000000000000n) / numTokensPerNativeToken;
|
|
36
|
+
}
|
|
27
37
|
|
|
28
38
|
// Get the contract acquireMultipleViaNativeTokenAndStakingToken function signature
|
|
29
39
|
const simulation = await clients.publicClient.simulateContract({
|
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,11 +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)
|
|
256
|
+
*
|
|
257
|
+
* If numTokensPerNativeToken is zero, minting via native token is disabled.
|
|
258
|
+
* In that case, only play tokens can be used and an error is thrown if
|
|
259
|
+
* there aren't enough play tokens to cover the acquisition cost.
|
|
150
260
|
*
|
|
151
261
|
* @param planetIds - Array of planet location IDs to acquire
|
|
152
|
-
* @returns Transaction hash, planets acquired, and
|
|
262
|
+
* @returns Transaction hash, planets acquired, cost breakdown, and approval info
|
|
153
263
|
*/
|
|
154
264
|
async acquireWithMaxPlayToken(planetIds: bigint[]): Promise<{
|
|
155
265
|
hash: `0x${string}`;
|
|
@@ -159,6 +269,10 @@ export class PlanetManager {
|
|
|
159
269
|
playTokenUsed: bigint;
|
|
160
270
|
amountMinted: bigint;
|
|
161
271
|
};
|
|
272
|
+
approval: {
|
|
273
|
+
approvalNeeded: boolean;
|
|
274
|
+
approvalHash?: `0x${string}`;
|
|
275
|
+
};
|
|
162
276
|
}> {
|
|
163
277
|
// Calculate total required token amount
|
|
164
278
|
const {amountToMint: totalRequired} = this.calculateAcquisitionCosts(planetIds);
|
|
@@ -166,12 +280,26 @@ export class PlanetManager {
|
|
|
166
280
|
// Get current play token balance
|
|
167
281
|
const playTokenBalance = await this.getPlayTokenBalance();
|
|
168
282
|
|
|
283
|
+
// Check if minting via native token is allowed
|
|
284
|
+
const nativeMintingAllowed = this.contractConfig.numTokensPerNativeToken > 0n;
|
|
285
|
+
|
|
169
286
|
// Determine how much play token to use (all of it, up to what's needed)
|
|
170
287
|
const playTokenUsed = playTokenBalance > totalRequired ? totalRequired : playTokenBalance;
|
|
171
288
|
|
|
172
289
|
// Calculate remaining amount to mint with native tokens
|
|
173
290
|
const amountToMint = totalRequired > playTokenUsed ? totalRequired - playTokenUsed : 0n;
|
|
174
291
|
|
|
292
|
+
// If minting is not allowed and we need to mint, error out
|
|
293
|
+
if (!nativeMintingAllowed && amountToMint > 0n) {
|
|
294
|
+
throw new Error(
|
|
295
|
+
`Insufficient play token balance. Required: ${totalRequired}, Available: ${playTokenBalance}. ` +
|
|
296
|
+
`Minting via native token is disabled (numTokensPerNativeToken is zero).`,
|
|
297
|
+
);
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
// Ensure sufficient allowance for play tokens before acquiring
|
|
301
|
+
const approval = await this.ensurePlayTokenAllowance(playTokenUsed);
|
|
302
|
+
|
|
175
303
|
// Acquire the planets
|
|
176
304
|
const result = await acquirePlanets(
|
|
177
305
|
this.requireWalletClient(),
|
|
@@ -189,6 +317,7 @@ export class PlanetManager {
|
|
|
189
317
|
playTokenUsed,
|
|
190
318
|
amountMinted: amountToMint,
|
|
191
319
|
},
|
|
320
|
+
approval,
|
|
192
321
|
};
|
|
193
322
|
}
|
|
194
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) {
|