| 41 | |
| 42 | #[allow(deprecated)] |
| 43 | pub fn sign( |
| 44 | self, |
| 45 | signing_scheme: EcdsaSigningScheme, |
| 46 | domain: &DomainSeparator, |
| 47 | key: &PrivateKeySigner, |
| 48 | ) -> (solvers_dto::solution::JitOrder, OrderUid) { |
| 49 | let data = self.data(); |
| 50 | let signature = model::signature::EcdsaSignature::sign( |
| 51 | signing_scheme, |
| 52 | domain, |
| 53 | &data.hash_struct(), |
| 54 | key, |
| 55 | ) |
| 56 | .to_signature(signing_scheme); |
| 57 | let order_uid = data.uid( |
| 58 | domain, |
| 59 | signature |
| 60 | .recover_owner(&signature.to_bytes(), domain, &data.hash_struct()) |
| 61 | .unwrap(), |
| 62 | ); |
| 63 | let signature = match signature { |
| 64 | model::signature::Signature::Eip712(signature) => signature.to_bytes().to_vec(), |
| 65 | model::signature::Signature::EthSign(signature) => signature.to_bytes().to_vec(), |
| 66 | model::signature::Signature::Eip1271(signature) => signature, |
| 67 | model::signature::Signature::PreSign => panic!("Not supported PreSigned JIT orders"), |
| 68 | }; |
| 69 | let order = solvers_dto::solution::JitOrder { |
| 70 | sell_token: data.sell_token, |
| 71 | buy_token: data.buy_token, |
| 72 | receiver: data.receiver.unwrap_or_default(), |
| 73 | sell_amount: data.sell_amount, |
| 74 | buy_amount: data.buy_amount, |
| 75 | partially_fillable: data.partially_fillable, |
| 76 | valid_to: data.valid_to, |
| 77 | app_data: data.app_data.0, |
| 78 | kind: match data.kind { |
| 79 | OrderKind::Buy => Kind::Buy, |
| 80 | OrderKind::Sell => Kind::Sell, |
| 81 | }, |
| 82 | sell_token_balance: match data.sell_token_balance { |
| 83 | SellTokenSource::Erc20 => solvers_dto::solution::SellTokenBalance::Erc20, |
| 84 | SellTokenSource::External => solvers_dto::solution::SellTokenBalance::External, |
| 85 | SellTokenSource::Internal => solvers_dto::solution::SellTokenBalance::Internal, |
| 86 | }, |
| 87 | buy_token_balance: match data.buy_token_balance { |
| 88 | BuyTokenDestination::Erc20 => solvers_dto::solution::BuyTokenBalance::Erc20, |
| 89 | BuyTokenDestination::Internal => solvers_dto::solution::BuyTokenBalance::Internal, |
| 90 | }, |
| 91 | signing_scheme: match signing_scheme { |
| 92 | EcdsaSigningScheme::Eip712 => solvers_dto::solution::SigningScheme::Eip712, |
| 93 | EcdsaSigningScheme::EthSign => solvers_dto::solution::SigningScheme::EthSign, |
| 94 | }, |
| 95 | signature, |
| 96 | }; |
| 97 | (order, order_uid) |
| 98 | } |
| 99 | } |