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