|
70 | 70 | from chia.wallet.nft_wallet.uncurry_nft import UncurriedNFT |
71 | 71 | from chia.wallet.notification_store import Notification |
72 | 72 | from chia.wallet.outer_puzzles import AssetType |
73 | | -from chia.wallet.puzzle_drivers import PuzzleInfo, Solver |
| 73 | +from chia.wallet.puzzle_drivers import PuzzleInfo |
74 | 74 | from chia.wallet.puzzles import p2_delegated_conditions |
75 | 75 | from chia.wallet.puzzles.clawback.metadata import AutoClaimSettings, ClawbackMetadata |
76 | 76 | from chia.wallet.puzzles.p2_delegated_puzzle_or_hidden_puzzle import puzzle_hash_for_synthetic_public_key |
|
283 | 283 | StrayCAT, |
284 | 284 | SubmitTransactions, |
285 | 285 | SubmitTransactionsResponse, |
| 286 | + TakeOffer, |
| 287 | + TakeOfferResponse, |
286 | 288 | TransactionRecordWithMetadata, |
287 | 289 | VCAddProofs, |
288 | 290 | VCGet, |
@@ -2327,44 +2329,34 @@ async def check_offer_validity(self, request: CheckOfferValidity) -> CheckOfferV |
2327 | 2329 | ) |
2328 | 2330 |
|
2329 | 2331 | @tx_endpoint(push=True) |
| 2332 | + @marshal |
2330 | 2333 | async def take_offer( |
2331 | 2334 | self, |
2332 | | - request: dict[str, Any], |
| 2335 | + request: TakeOffer, |
2333 | 2336 | action_scope: WalletActionScope, |
2334 | 2337 | extra_conditions: tuple[Condition, ...] = tuple(), |
2335 | | - ) -> EndpointResult: |
2336 | | - offer_hex: str = request["offer"] |
2337 | | - |
2338 | | - offer = Offer.from_bech32(offer_hex) |
2339 | | - fee: uint64 = uint64(request.get("fee", 0)) |
2340 | | - maybe_marshalled_solver: Optional[dict[str, Any]] = request.get("solver") |
2341 | | - solver: Optional[Solver] |
2342 | | - if maybe_marshalled_solver is None: |
2343 | | - solver = None |
2344 | | - else: |
2345 | | - solver = Solver(info=maybe_marshalled_solver) |
2346 | | - |
| 2338 | + ) -> TakeOfferResponse: |
2347 | 2339 | peer = self.service.get_full_node_peer() |
2348 | 2340 | trade_record = await self.service.wallet_state_manager.trade_manager.respond_to_offer( |
2349 | | - offer, |
| 2341 | + request.parsed_offer, |
2350 | 2342 | peer, |
2351 | 2343 | action_scope, |
2352 | | - fee=fee, |
2353 | | - solver=solver, |
| 2344 | + fee=request.fee, |
| 2345 | + solver=request.solver, |
2354 | 2346 | extra_conditions=extra_conditions, |
2355 | 2347 | ) |
2356 | 2348 |
|
2357 | 2349 | async with action_scope.use() as interface: |
2358 | 2350 | interface.side_effects.signing_responses.append( |
2359 | | - SigningResponse(bytes(offer._bundle.aggregated_signature), trade_record.trade_id) |
| 2351 | + SigningResponse(bytes(request.parsed_offer._bundle.aggregated_signature), trade_record.trade_id) |
2360 | 2352 | ) |
2361 | 2353 |
|
2362 | | - return { |
2363 | | - "trade_record": trade_record.to_json_dict_convenience(), |
2364 | | - "offer": Offer.from_bytes(trade_record.offer).to_bech32(), |
2365 | | - "transactions": None, # tx_endpoint wrapper will take care of this |
2366 | | - "signing_responses": None, # tx_endpoint wrapper will take care of this |
2367 | | - } |
| 2354 | + return TakeOfferResponse( |
| 2355 | + [], # tx_endpoint will fill in this default value |
| 2356 | + [], # tx_endpoint will fill in this default value |
| 2357 | + Offer.from_bytes(trade_record.offer), |
| 2358 | + trade_record, |
| 2359 | + ) |
2368 | 2360 |
|
2369 | 2361 | async def get_offer(self, request: dict[str, Any]) -> EndpointResult: |
2370 | 2362 | trade_mgr = self.service.wallet_state_manager.trade_manager |
|
0 commit comments