@@ -205,53 +205,68 @@ Generated event handles can be transferred to the Object as long as you have the
205
205
``` move filename="example.move"
206
206
module 0x42::example {
207
207
use aptos_framework::event;
208
- use aptos_framework::fungible_asset::FungibleAsset ;
208
+ use aptos_framework::fungible_asset::Metadata ;
209
209
use aptos_framework::object::{Self, Object};
210
210
211
- struct LiquidityPoolEventStore has key {
212
- create_events: event::EventHandle<CreateLiquidtyPoolEvent>,
211
+ #[resource_group_member(group = aptos_framework::object::ObjectGroup)]
212
+ struct LiquidityPoolResourceGroup has key {
213
+ pool: LiquidityPool,
214
+ event_store: LiquidityPoolEventStore,
215
+ }
216
+
217
+ struct LiquidityPool has store {
218
+ metadata_token_a: Object<Metadata>,
219
+ metadata_token_b: Object<Metadata>,
220
+ reserves_a: u128,
221
+ reserves_b: u128,
222
+ }
223
+
224
+ struct LiquidityPoolEventStore has store {
225
+ create_events: event::EventHandle<CreateLiquidityPoolEvent>,
213
226
}
214
227
215
- struct CreateLiquidtyPoolEvent {
228
+ #[event]
229
+ struct CreateLiquidityPoolEvent has store, drop {
216
230
token_a: address,
217
231
token_b: address,
218
232
reserves_a: u128,
219
233
reserves_b: u128,
220
234
}
221
235
222
236
public entry fun create_liquidity_pool_with_events(
223
- token_a: Object<FungibleAsset>,
224
- token_b: Object<FungibleAsset>,
237
+ account_signer: &signer,
238
+ metadata_token_a: Object<Metadata>,
239
+ metadata_token_b: Object<Metadata>,
225
240
reserves_a: u128,
226
241
reserves_b: u128
227
242
) {
228
- let exchange_signer = &get_exchange_signer();
229
243
let liquidity_pool_constructor_ref = &object::create_object_from_account(
230
- exchange_signer
244
+ account_signer
231
245
);
232
246
let liquidity_pool_signer = &object::generate_signer(
233
247
liquidity_pool_constructor_ref
234
248
);
235
- let event_handle = object::new_event_handle<CreateLiquidtyPoolEvent >(
249
+ let event_handle = object::new_event_handle<CreateLiquidityPoolEvent >(
236
250
liquidity_pool_signer
237
251
);
238
252
239
- event::emit_event<CreateLiquidtyPoolEvent >(&mut event_handle, CreateLiquidtyPoolEvent {
240
- token_a: object::object_address(&token_a ),
241
- token_b: object::object_address(&token_b ),
253
+ event::emit_event<CreateLiquidityPoolEvent >(&mut event_handle, CreateLiquidityPoolEvent {
254
+ token_a: object::object_address(&metadata_token_a ),
255
+ token_b: object::object_address(&metadata_token_b ),
242
256
reserves_a,
243
257
reserves_b,
244
258
});
245
259
246
- move_to(liquidity_pool_signer, LiquidityPool {
247
- token_a,
248
- token_b,
249
- reserves_a,
250
- reserves_b
251
- });
252
-
253
- move_to(liquidity_pool_signer, LiquidityPoolEventStore {
254
- create_events: event_handle
260
+ move_to(liquidity_pool_signer, LiquidityPoolResourceGroup {
261
+ pool: LiquidityPool {
262
+ metadata_token_a,
263
+ metadata_token_b,
264
+ reserves_a,
265
+ reserves_b
266
+ },
267
+ event_store: LiquidityPoolEventStore {
268
+ create_events: event_handle
269
+ }
255
270
});
256
271
}
257
272
}
0 commit comments