1#[derive(Clone, Debug)]
2#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
3#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
4pub struct RefundDestinationDetails {
5 pub affirm: Option<stripe_shared::DestinationDetailsUnimplemented>,
6 pub afterpay_clearpay: Option<stripe_shared::DestinationDetailsUnimplemented>,
7 pub alipay: Option<stripe_shared::DestinationDetailsUnimplemented>,
8 pub alma: Option<stripe_shared::DestinationDetailsUnimplemented>,
9 pub amazon_pay: Option<stripe_shared::DestinationDetailsUnimplemented>,
10 pub au_bank_transfer: Option<stripe_shared::DestinationDetailsUnimplemented>,
11 pub blik: Option<stripe_shared::RefundDestinationDetailsBlik>,
12 pub br_bank_transfer: Option<stripe_shared::RefundDestinationDetailsBrBankTransfer>,
13 pub card: Option<stripe_shared::RefundDestinationDetailsCard>,
14 pub cashapp: Option<stripe_shared::DestinationDetailsUnimplemented>,
15 pub crypto: Option<stripe_shared::RefundDestinationDetailsCrypto>,
16 pub customer_cash_balance: Option<stripe_shared::DestinationDetailsUnimplemented>,
17 pub eps: Option<stripe_shared::DestinationDetailsUnimplemented>,
18 pub eu_bank_transfer: Option<stripe_shared::RefundDestinationDetailsEuBankTransfer>,
19 pub gb_bank_transfer: Option<stripe_shared::RefundDestinationDetailsGbBankTransfer>,
20 pub giropay: Option<stripe_shared::DestinationDetailsUnimplemented>,
21 pub grabpay: Option<stripe_shared::DestinationDetailsUnimplemented>,
22 pub jp_bank_transfer: Option<stripe_shared::RefundDestinationDetailsJpBankTransfer>,
23 pub klarna: Option<stripe_shared::DestinationDetailsUnimplemented>,
24 pub mb_way: Option<stripe_shared::RefundDestinationDetailsMbWay>,
25 pub multibanco: Option<stripe_shared::RefundDestinationDetailsMultibanco>,
26 pub mx_bank_transfer: Option<stripe_shared::RefundDestinationDetailsMxBankTransfer>,
27 pub nz_bank_transfer: Option<stripe_shared::DestinationDetailsUnimplemented>,
28 pub p24: Option<stripe_shared::RefundDestinationDetailsP24>,
29 pub paynow: Option<stripe_shared::DestinationDetailsUnimplemented>,
30 pub paypal: Option<stripe_shared::RefundDestinationDetailsPaypal>,
31 pub pix: Option<stripe_shared::DestinationDetailsUnimplemented>,
32 pub revolut: Option<stripe_shared::DestinationDetailsUnimplemented>,
33 pub sofort: Option<stripe_shared::DestinationDetailsUnimplemented>,
34 pub swish: Option<stripe_shared::RefundDestinationDetailsSwish>,
35 pub th_bank_transfer: Option<stripe_shared::RefundDestinationDetailsThBankTransfer>,
36 pub twint: Option<stripe_shared::DestinationDetailsUnimplemented>,
37 #[cfg_attr(any(feature = "deserialize", feature = "serialize"), serde(rename = "type"))]
41 pub type_: String,
42 pub us_bank_transfer: Option<stripe_shared::RefundDestinationDetailsUsBankTransfer>,
43 pub wechat_pay: Option<stripe_shared::DestinationDetailsUnimplemented>,
44 pub zip: Option<stripe_shared::DestinationDetailsUnimplemented>,
45}
46#[doc(hidden)]
47pub struct RefundDestinationDetailsBuilder {
48 affirm: Option<Option<stripe_shared::DestinationDetailsUnimplemented>>,
49 afterpay_clearpay: Option<Option<stripe_shared::DestinationDetailsUnimplemented>>,
50 alipay: Option<Option<stripe_shared::DestinationDetailsUnimplemented>>,
51 alma: Option<Option<stripe_shared::DestinationDetailsUnimplemented>>,
52 amazon_pay: Option<Option<stripe_shared::DestinationDetailsUnimplemented>>,
53 au_bank_transfer: Option<Option<stripe_shared::DestinationDetailsUnimplemented>>,
54 blik: Option<Option<stripe_shared::RefundDestinationDetailsBlik>>,
55 br_bank_transfer: Option<Option<stripe_shared::RefundDestinationDetailsBrBankTransfer>>,
56 card: Option<Option<stripe_shared::RefundDestinationDetailsCard>>,
57 cashapp: Option<Option<stripe_shared::DestinationDetailsUnimplemented>>,
58 crypto: Option<Option<stripe_shared::RefundDestinationDetailsCrypto>>,
59 customer_cash_balance: Option<Option<stripe_shared::DestinationDetailsUnimplemented>>,
60 eps: Option<Option<stripe_shared::DestinationDetailsUnimplemented>>,
61 eu_bank_transfer: Option<Option<stripe_shared::RefundDestinationDetailsEuBankTransfer>>,
62 gb_bank_transfer: Option<Option<stripe_shared::RefundDestinationDetailsGbBankTransfer>>,
63 giropay: Option<Option<stripe_shared::DestinationDetailsUnimplemented>>,
64 grabpay: Option<Option<stripe_shared::DestinationDetailsUnimplemented>>,
65 jp_bank_transfer: Option<Option<stripe_shared::RefundDestinationDetailsJpBankTransfer>>,
66 klarna: Option<Option<stripe_shared::DestinationDetailsUnimplemented>>,
67 mb_way: Option<Option<stripe_shared::RefundDestinationDetailsMbWay>>,
68 multibanco: Option<Option<stripe_shared::RefundDestinationDetailsMultibanco>>,
69 mx_bank_transfer: Option<Option<stripe_shared::RefundDestinationDetailsMxBankTransfer>>,
70 nz_bank_transfer: Option<Option<stripe_shared::DestinationDetailsUnimplemented>>,
71 p24: Option<Option<stripe_shared::RefundDestinationDetailsP24>>,
72 paynow: Option<Option<stripe_shared::DestinationDetailsUnimplemented>>,
73 paypal: Option<Option<stripe_shared::RefundDestinationDetailsPaypal>>,
74 pix: Option<Option<stripe_shared::DestinationDetailsUnimplemented>>,
75 revolut: Option<Option<stripe_shared::DestinationDetailsUnimplemented>>,
76 sofort: Option<Option<stripe_shared::DestinationDetailsUnimplemented>>,
77 swish: Option<Option<stripe_shared::RefundDestinationDetailsSwish>>,
78 th_bank_transfer: Option<Option<stripe_shared::RefundDestinationDetailsThBankTransfer>>,
79 twint: Option<Option<stripe_shared::DestinationDetailsUnimplemented>>,
80 type_: Option<String>,
81 us_bank_transfer: Option<Option<stripe_shared::RefundDestinationDetailsUsBankTransfer>>,
82 wechat_pay: Option<Option<stripe_shared::DestinationDetailsUnimplemented>>,
83 zip: Option<Option<stripe_shared::DestinationDetailsUnimplemented>>,
84}
85
86#[allow(
87 unused_variables,
88 irrefutable_let_patterns,
89 clippy::let_unit_value,
90 clippy::match_single_binding,
91 clippy::single_match
92)]
93const _: () = {
94 use miniserde::de::{Map, Visitor};
95 use miniserde::json::Value;
96 use miniserde::{Deserialize, Result, make_place};
97 use stripe_types::miniserde_helpers::FromValueOpt;
98 use stripe_types::{MapBuilder, ObjectDeser};
99
100 make_place!(Place);
101
102 impl Deserialize for RefundDestinationDetails {
103 fn begin(out: &mut Option<Self>) -> &mut dyn Visitor {
104 Place::new(out)
105 }
106 }
107
108 struct Builder<'a> {
109 out: &'a mut Option<RefundDestinationDetails>,
110 builder: RefundDestinationDetailsBuilder,
111 }
112
113 impl Visitor for Place<RefundDestinationDetails> {
114 fn map(&mut self) -> Result<Box<dyn Map + '_>> {
115 Ok(Box::new(Builder {
116 out: &mut self.out,
117 builder: RefundDestinationDetailsBuilder::deser_default(),
118 }))
119 }
120 }
121
122 impl MapBuilder for RefundDestinationDetailsBuilder {
123 type Out = RefundDestinationDetails;
124 fn key(&mut self, k: &str) -> Result<&mut dyn Visitor> {
125 Ok(match k {
126 "affirm" => Deserialize::begin(&mut self.affirm),
127 "afterpay_clearpay" => Deserialize::begin(&mut self.afterpay_clearpay),
128 "alipay" => Deserialize::begin(&mut self.alipay),
129 "alma" => Deserialize::begin(&mut self.alma),
130 "amazon_pay" => Deserialize::begin(&mut self.amazon_pay),
131 "au_bank_transfer" => Deserialize::begin(&mut self.au_bank_transfer),
132 "blik" => Deserialize::begin(&mut self.blik),
133 "br_bank_transfer" => Deserialize::begin(&mut self.br_bank_transfer),
134 "card" => Deserialize::begin(&mut self.card),
135 "cashapp" => Deserialize::begin(&mut self.cashapp),
136 "crypto" => Deserialize::begin(&mut self.crypto),
137 "customer_cash_balance" => Deserialize::begin(&mut self.customer_cash_balance),
138 "eps" => Deserialize::begin(&mut self.eps),
139 "eu_bank_transfer" => Deserialize::begin(&mut self.eu_bank_transfer),
140 "gb_bank_transfer" => Deserialize::begin(&mut self.gb_bank_transfer),
141 "giropay" => Deserialize::begin(&mut self.giropay),
142 "grabpay" => Deserialize::begin(&mut self.grabpay),
143 "jp_bank_transfer" => Deserialize::begin(&mut self.jp_bank_transfer),
144 "klarna" => Deserialize::begin(&mut self.klarna),
145 "mb_way" => Deserialize::begin(&mut self.mb_way),
146 "multibanco" => Deserialize::begin(&mut self.multibanco),
147 "mx_bank_transfer" => Deserialize::begin(&mut self.mx_bank_transfer),
148 "nz_bank_transfer" => Deserialize::begin(&mut self.nz_bank_transfer),
149 "p24" => Deserialize::begin(&mut self.p24),
150 "paynow" => Deserialize::begin(&mut self.paynow),
151 "paypal" => Deserialize::begin(&mut self.paypal),
152 "pix" => Deserialize::begin(&mut self.pix),
153 "revolut" => Deserialize::begin(&mut self.revolut),
154 "sofort" => Deserialize::begin(&mut self.sofort),
155 "swish" => Deserialize::begin(&mut self.swish),
156 "th_bank_transfer" => Deserialize::begin(&mut self.th_bank_transfer),
157 "twint" => Deserialize::begin(&mut self.twint),
158 "type" => Deserialize::begin(&mut self.type_),
159 "us_bank_transfer" => Deserialize::begin(&mut self.us_bank_transfer),
160 "wechat_pay" => Deserialize::begin(&mut self.wechat_pay),
161 "zip" => Deserialize::begin(&mut self.zip),
162 _ => <dyn Visitor>::ignore(),
163 })
164 }
165
166 fn deser_default() -> Self {
167 Self {
168 affirm: Deserialize::default(),
169 afterpay_clearpay: Deserialize::default(),
170 alipay: Deserialize::default(),
171 alma: Deserialize::default(),
172 amazon_pay: Deserialize::default(),
173 au_bank_transfer: Deserialize::default(),
174 blik: Deserialize::default(),
175 br_bank_transfer: Deserialize::default(),
176 card: Deserialize::default(),
177 cashapp: Deserialize::default(),
178 crypto: Deserialize::default(),
179 customer_cash_balance: Deserialize::default(),
180 eps: Deserialize::default(),
181 eu_bank_transfer: Deserialize::default(),
182 gb_bank_transfer: Deserialize::default(),
183 giropay: Deserialize::default(),
184 grabpay: Deserialize::default(),
185 jp_bank_transfer: Deserialize::default(),
186 klarna: Deserialize::default(),
187 mb_way: Deserialize::default(),
188 multibanco: Deserialize::default(),
189 mx_bank_transfer: Deserialize::default(),
190 nz_bank_transfer: Deserialize::default(),
191 p24: Deserialize::default(),
192 paynow: Deserialize::default(),
193 paypal: Deserialize::default(),
194 pix: Deserialize::default(),
195 revolut: Deserialize::default(),
196 sofort: Deserialize::default(),
197 swish: Deserialize::default(),
198 th_bank_transfer: Deserialize::default(),
199 twint: Deserialize::default(),
200 type_: Deserialize::default(),
201 us_bank_transfer: Deserialize::default(),
202 wechat_pay: Deserialize::default(),
203 zip: Deserialize::default(),
204 }
205 }
206
207 fn take_out(&mut self) -> Option<Self::Out> {
208 let (
209 Some(affirm),
210 Some(afterpay_clearpay),
211 Some(alipay),
212 Some(alma),
213 Some(amazon_pay),
214 Some(au_bank_transfer),
215 Some(blik),
216 Some(br_bank_transfer),
217 Some(card),
218 Some(cashapp),
219 Some(crypto),
220 Some(customer_cash_balance),
221 Some(eps),
222 Some(eu_bank_transfer),
223 Some(gb_bank_transfer),
224 Some(giropay),
225 Some(grabpay),
226 Some(jp_bank_transfer),
227 Some(klarna),
228 Some(mb_way),
229 Some(multibanco),
230 Some(mx_bank_transfer),
231 Some(nz_bank_transfer),
232 Some(p24),
233 Some(paynow),
234 Some(paypal),
235 Some(pix),
236 Some(revolut),
237 Some(sofort),
238 Some(swish),
239 Some(th_bank_transfer),
240 Some(twint),
241 Some(type_),
242 Some(us_bank_transfer),
243 Some(wechat_pay),
244 Some(zip),
245 ) = (
246 self.affirm,
247 self.afterpay_clearpay,
248 self.alipay,
249 self.alma,
250 self.amazon_pay,
251 self.au_bank_transfer,
252 self.blik.take(),
253 self.br_bank_transfer.take(),
254 self.card.take(),
255 self.cashapp,
256 self.crypto.take(),
257 self.customer_cash_balance,
258 self.eps,
259 self.eu_bank_transfer.take(),
260 self.gb_bank_transfer.take(),
261 self.giropay,
262 self.grabpay,
263 self.jp_bank_transfer.take(),
264 self.klarna,
265 self.mb_way.take(),
266 self.multibanco.take(),
267 self.mx_bank_transfer.take(),
268 self.nz_bank_transfer,
269 self.p24.take(),
270 self.paynow,
271 self.paypal.take(),
272 self.pix,
273 self.revolut,
274 self.sofort,
275 self.swish.take(),
276 self.th_bank_transfer.take(),
277 self.twint,
278 self.type_.take(),
279 self.us_bank_transfer.take(),
280 self.wechat_pay,
281 self.zip,
282 )
283 else {
284 return None;
285 };
286 Some(Self::Out {
287 affirm,
288 afterpay_clearpay,
289 alipay,
290 alma,
291 amazon_pay,
292 au_bank_transfer,
293 blik,
294 br_bank_transfer,
295 card,
296 cashapp,
297 crypto,
298 customer_cash_balance,
299 eps,
300 eu_bank_transfer,
301 gb_bank_transfer,
302 giropay,
303 grabpay,
304 jp_bank_transfer,
305 klarna,
306 mb_way,
307 multibanco,
308 mx_bank_transfer,
309 nz_bank_transfer,
310 p24,
311 paynow,
312 paypal,
313 pix,
314 revolut,
315 sofort,
316 swish,
317 th_bank_transfer,
318 twint,
319 type_,
320 us_bank_transfer,
321 wechat_pay,
322 zip,
323 })
324 }
325 }
326
327 impl Map for Builder<'_> {
328 fn key(&mut self, k: &str) -> Result<&mut dyn Visitor> {
329 self.builder.key(k)
330 }
331
332 fn finish(&mut self) -> Result<()> {
333 *self.out = self.builder.take_out();
334 Ok(())
335 }
336 }
337
338 impl ObjectDeser for RefundDestinationDetails {
339 type Builder = RefundDestinationDetailsBuilder;
340 }
341
342 impl FromValueOpt for RefundDestinationDetails {
343 fn from_value(v: Value) -> Option<Self> {
344 let Value::Object(obj) = v else {
345 return None;
346 };
347 let mut b = RefundDestinationDetailsBuilder::deser_default();
348 for (k, v) in obj {
349 match k.as_str() {
350 "affirm" => b.affirm = FromValueOpt::from_value(v),
351 "afterpay_clearpay" => b.afterpay_clearpay = FromValueOpt::from_value(v),
352 "alipay" => b.alipay = FromValueOpt::from_value(v),
353 "alma" => b.alma = FromValueOpt::from_value(v),
354 "amazon_pay" => b.amazon_pay = FromValueOpt::from_value(v),
355 "au_bank_transfer" => b.au_bank_transfer = FromValueOpt::from_value(v),
356 "blik" => b.blik = FromValueOpt::from_value(v),
357 "br_bank_transfer" => b.br_bank_transfer = FromValueOpt::from_value(v),
358 "card" => b.card = FromValueOpt::from_value(v),
359 "cashapp" => b.cashapp = FromValueOpt::from_value(v),
360 "crypto" => b.crypto = FromValueOpt::from_value(v),
361 "customer_cash_balance" => {
362 b.customer_cash_balance = FromValueOpt::from_value(v)
363 }
364 "eps" => b.eps = FromValueOpt::from_value(v),
365 "eu_bank_transfer" => b.eu_bank_transfer = FromValueOpt::from_value(v),
366 "gb_bank_transfer" => b.gb_bank_transfer = FromValueOpt::from_value(v),
367 "giropay" => b.giropay = FromValueOpt::from_value(v),
368 "grabpay" => b.grabpay = FromValueOpt::from_value(v),
369 "jp_bank_transfer" => b.jp_bank_transfer = FromValueOpt::from_value(v),
370 "klarna" => b.klarna = FromValueOpt::from_value(v),
371 "mb_way" => b.mb_way = FromValueOpt::from_value(v),
372 "multibanco" => b.multibanco = FromValueOpt::from_value(v),
373 "mx_bank_transfer" => b.mx_bank_transfer = FromValueOpt::from_value(v),
374 "nz_bank_transfer" => b.nz_bank_transfer = FromValueOpt::from_value(v),
375 "p24" => b.p24 = FromValueOpt::from_value(v),
376 "paynow" => b.paynow = FromValueOpt::from_value(v),
377 "paypal" => b.paypal = FromValueOpt::from_value(v),
378 "pix" => b.pix = FromValueOpt::from_value(v),
379 "revolut" => b.revolut = FromValueOpt::from_value(v),
380 "sofort" => b.sofort = FromValueOpt::from_value(v),
381 "swish" => b.swish = FromValueOpt::from_value(v),
382 "th_bank_transfer" => b.th_bank_transfer = FromValueOpt::from_value(v),
383 "twint" => b.twint = FromValueOpt::from_value(v),
384 "type" => b.type_ = FromValueOpt::from_value(v),
385 "us_bank_transfer" => b.us_bank_transfer = FromValueOpt::from_value(v),
386 "wechat_pay" => b.wechat_pay = FromValueOpt::from_value(v),
387 "zip" => b.zip = FromValueOpt::from_value(v),
388 _ => {}
389 }
390 }
391 b.take_out()
392 }
393 }
394};