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