|
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, |
@@ -2322,44 +2324,34 @@ async def check_offer_validity(self, request: CheckOfferValidity) -> CheckOfferV |
2322 | 2324 | ) |
2323 | 2325 |
|
2324 | 2326 | @tx_endpoint(push=True) |
| 2327 | + @marshal |
2325 | 2328 | async def take_offer( |
2326 | 2329 | self, |
2327 | | - request: dict[str, Any], |
| 2330 | + request: TakeOffer, |
2328 | 2331 | action_scope: WalletActionScope, |
2329 | 2332 | extra_conditions: tuple[Condition, ...] = tuple(), |
2330 | | - ) -> EndpointResult: |
2331 | | - offer_hex: str = request["offer"] |
2332 | | - |
2333 | | - offer = Offer.from_bech32(offer_hex) |
2334 | | - fee: uint64 = uint64(request.get("fee", 0)) |
2335 | | - maybe_marshalled_solver: Optional[dict[str, Any]] = request.get("solver") |
2336 | | - solver: Optional[Solver] |
2337 | | - if maybe_marshalled_solver is None: |
2338 | | - solver = None |
2339 | | - else: |
2340 | | - solver = Solver(info=maybe_marshalled_solver) |
2341 | | - |
| 2333 | + ) -> TakeOfferResponse: |
2342 | 2334 | peer = self.service.get_full_node_peer() |
2343 | 2335 | trade_record = await self.service.wallet_state_manager.trade_manager.respond_to_offer( |
2344 | | - offer, |
| 2336 | + request.parsed_offer, |
2345 | 2337 | peer, |
2346 | 2338 | action_scope, |
2347 | | - fee=fee, |
2348 | | - solver=solver, |
| 2339 | + fee=request.fee, |
| 2340 | + solver=request.solver, |
2349 | 2341 | extra_conditions=extra_conditions, |
2350 | 2342 | ) |
2351 | 2343 |
|
2352 | 2344 | async with action_scope.use() as interface: |
2353 | 2345 | interface.side_effects.signing_responses.append( |
2354 | | - SigningResponse(bytes(offer._bundle.aggregated_signature), trade_record.trade_id) |
| 2346 | + SigningResponse(bytes(request.parsed_offer._bundle.aggregated_signature), trade_record.trade_id) |
2355 | 2347 | ) |
2356 | 2348 |
|
2357 | | - return { |
2358 | | - "trade_record": trade_record.to_json_dict_convenience(), |
2359 | | - "offer": Offer.from_bytes(trade_record.offer).to_bech32(), |
2360 | | - "transactions": None, # tx_endpoint wrapper will take care of this |
2361 | | - "signing_responses": None, # tx_endpoint wrapper will take care of this |
2362 | | - } |
| 2349 | + return TakeOfferResponse( |
| 2350 | + [], # tx_endpoint will fill in this default value |
| 2351 | + [], # tx_endpoint will fill in this default value |
| 2352 | + Offer.from_bytes(trade_record.offer), |
| 2353 | + trade_record, |
| 2354 | + ) |
2363 | 2355 |
|
2364 | 2356 | async def get_offer(self, request: dict[str, Any]) -> EndpointResult: |
2365 | 2357 | trade_mgr = self.service.wallet_state_manager.trade_manager |
|
0 commit comments