|
37 | 37 | import org.xrpl.xrpl4j.crypto.keys.PublicKey; |
38 | 38 | import org.xrpl.xrpl4j.crypto.signing.Signature; |
39 | 39 | import org.xrpl.xrpl4j.model.flags.AccountSetTransactionFlags; |
| 40 | +import org.xrpl.xrpl4j.model.flags.AmmDepositFlags; |
| 41 | +import org.xrpl.xrpl4j.model.flags.AmmWithdrawFlags; |
40 | 42 | import org.xrpl.xrpl4j.model.flags.OfferCreateFlags; |
41 | 43 | import org.xrpl.xrpl4j.model.flags.PaymentChannelClaimFlags; |
42 | 44 | import org.xrpl.xrpl4j.model.flags.PaymentFlags; |
|
45 | 47 | import org.xrpl.xrpl4j.model.flags.TrustSetFlags; |
46 | 48 | import org.xrpl.xrpl4j.model.flags.XChainModifyBridgeFlags; |
47 | 49 | import org.xrpl.xrpl4j.model.jackson.ObjectMapperFactory; |
| 50 | +import org.xrpl.xrpl4j.model.ledger.AuthAccount; |
| 51 | +import org.xrpl.xrpl4j.model.ledger.AuthAccountWrapper; |
48 | 52 | import org.xrpl.xrpl4j.model.ledger.Issue; |
49 | 53 | import org.xrpl.xrpl4j.model.ledger.RippleStateObject; |
50 | 54 | import org.xrpl.xrpl4j.model.ledger.SignerEntry; |
51 | 55 | import org.xrpl.xrpl4j.model.ledger.SignerEntryWrapper; |
52 | 56 | import org.xrpl.xrpl4j.model.transactions.AccountDelete; |
53 | 57 | import org.xrpl.xrpl4j.model.transactions.AccountSet; |
54 | 58 | import org.xrpl.xrpl4j.model.transactions.Address; |
| 59 | +import org.xrpl.xrpl4j.model.transactions.AmmBid; |
| 60 | +import org.xrpl.xrpl4j.model.transactions.AmmCreate; |
| 61 | +import org.xrpl.xrpl4j.model.transactions.AmmDelete; |
| 62 | +import org.xrpl.xrpl4j.model.transactions.AmmDeposit; |
| 63 | +import org.xrpl.xrpl4j.model.transactions.AmmVote; |
| 64 | +import org.xrpl.xrpl4j.model.transactions.AmmWithdraw; |
55 | 65 | import org.xrpl.xrpl4j.model.transactions.AssetPrice; |
56 | 66 | import org.xrpl.xrpl4j.model.transactions.CheckCancel; |
57 | 67 | import org.xrpl.xrpl4j.model.transactions.CheckCash; |
|
67 | 77 | import org.xrpl.xrpl4j.model.transactions.EscrowCreate; |
68 | 78 | import org.xrpl.xrpl4j.model.transactions.EscrowFinish; |
69 | 79 | import org.xrpl.xrpl4j.model.transactions.Hash256; |
| 80 | +import org.xrpl.xrpl4j.model.transactions.ImmutableAmmBid; |
| 81 | +import org.xrpl.xrpl4j.model.transactions.ImmutableAmmCreate; |
| 82 | +import org.xrpl.xrpl4j.model.transactions.ImmutableAmmDelete; |
| 83 | +import org.xrpl.xrpl4j.model.transactions.ImmutableAmmDeposit; |
70 | 84 | import org.xrpl.xrpl4j.model.transactions.ImmutableDidDelete; |
71 | 85 | import org.xrpl.xrpl4j.model.transactions.ImmutableDidSet; |
72 | 86 | import org.xrpl.xrpl4j.model.transactions.ImmutableOracleDelete; |
|
92 | 106 | import org.xrpl.xrpl4j.model.transactions.PriceDataWrapper; |
93 | 107 | import org.xrpl.xrpl4j.model.transactions.SetRegularKey; |
94 | 108 | import org.xrpl.xrpl4j.model.transactions.SignerListSet; |
| 109 | +import org.xrpl.xrpl4j.model.transactions.TradingFee; |
95 | 110 | import org.xrpl.xrpl4j.model.transactions.Transaction; |
96 | 111 | import org.xrpl.xrpl4j.model.transactions.TrustSet; |
97 | 112 | import org.xrpl.xrpl4j.model.transactions.XChainAccountCreateCommit; |
@@ -2256,6 +2271,270 @@ void serializeOracleDelete() throws JsonProcessingException { |
2256 | 2271 | assertSerializesAndDeserializes(oracleDelete, expectedBinary); |
2257 | 2272 | } |
2258 | 2273 |
|
| 2274 | + @Test |
| 2275 | + void serializeAmmWithdraw() throws JsonProcessingException { |
| 2276 | + AmmWithdraw ammWithdraw = AmmWithdraw.builder() |
| 2277 | + .account(Address.of("rpgAg9CgNV9MYUECHTx26h1PEARhreuap7")) |
| 2278 | + .fee(XrpCurrencyAmount.ofDrops(10)) |
| 2279 | + .sequence(UnsignedInteger.ONE) |
| 2280 | + .signingPublicKey( |
| 2281 | + PublicKey.fromBase16EncodedPublicKey("02B4A8F64B97151FA303F86417751B7EA5AF1D0014FCC110C234D04AF15F3F654A") |
| 2282 | + ) |
| 2283 | + .flags(AmmWithdrawFlags.LP_TOKEN) |
| 2284 | + .asset(Issue.builder() |
| 2285 | + .currency("4755534400000000000000000000000000000000") |
| 2286 | + .issuer(Address.of("rPZtDb6ZHtfYzMmzyUGvehoi2vYhrNAPhy")) |
| 2287 | + .build() |
| 2288 | + ) |
| 2289 | + .asset2(Issue.builder() |
| 2290 | + .currency("524C555344000000000000000000000000000000") |
| 2291 | + .issuer(Address.of("rPZtDb6ZHtfYzMmzyUGvehoi2vYhrNAPhy")) |
| 2292 | + .build() |
| 2293 | + ) |
| 2294 | + .lpTokensIn( |
| 2295 | + IssuedCurrencyAmount.builder() |
| 2296 | + .value("200") |
| 2297 | + .currency("LPT") |
| 2298 | + .issuer(Address.of("rPZtDb6ZHtfYzMmzyUGvehoi2vYhrNAPhy")) |
| 2299 | + .build() |
| 2300 | + ) |
| 2301 | + .amount( |
| 2302 | + IssuedCurrencyAmount.builder() |
| 2303 | + .value("200") |
| 2304 | + .currency("LPT") |
| 2305 | + .issuer(Address.of("rPZtDb6ZHtfYzMmzyUGvehoi2vYhrNAPhy")) |
| 2306 | + .build() |
| 2307 | + ) |
| 2308 | + .amount2( |
| 2309 | + IssuedCurrencyAmount.builder() |
| 2310 | + .value("200") |
| 2311 | + .currency("LPT") |
| 2312 | + .issuer(Address.of("rPZtDb6ZHtfYzMmzyUGvehoi2vYhrNAPhy")) |
| 2313 | + .build() |
| 2314 | + ) |
| 2315 | + .effectivePrice( |
| 2316 | + IssuedCurrencyAmount.builder() |
| 2317 | + .value("200") |
| 2318 | + .currency("LPT") |
| 2319 | + .issuer(Address.of("rPZtDb6ZHtfYzMmzyUGvehoi2vYhrNAPhy")) |
| 2320 | + .build() |
| 2321 | + ) |
| 2322 | + .build(); |
| 2323 | + |
| 2324 | + String expectedBinary = "1200252200010000240000000161D5071AFD498D00000000000000000000000000004C50540000" + |
| 2325 | + "000000F78AD4FDA66653106AE45EE5FE683C457E6BA9C568400000000000000A6BD5071AFD498D0000000000000000000000" + |
| 2326 | + "0000004C50540000000000F78AD4FDA66653106AE45EE5FE683C457E6BA9C5601AD5071AFD498D0000000000000000000000" + |
| 2327 | + "0000004C50540000000000F78AD4FDA66653106AE45EE5FE683C457E6BA9C5601BD5071AFD498D0000000000000000000000" + |
| 2328 | + "0000004C50540000000000F78AD4FDA66653106AE45EE5FE683C457E6BA9C5732102B4A8F64B97151FA303F86417751B7EA5" + |
| 2329 | + "AF1D0014FCC110C234D04AF15F3F654A81141285FD19EDD3FB7146B87251AFB0E17742B37271031847555344000000000000" + |
| 2330 | + "00000000000000000000F78AD4FDA66653106AE45EE5FE683C457E6BA9C50418524C55534400000000000000000000000000" + |
| 2331 | + "0000F78AD4FDA66653106AE45EE5FE683C457E6BA9C5"; |
| 2332 | + assertSerializesAndDeserializes(ammWithdraw, expectedBinary); |
| 2333 | + } |
| 2334 | + |
| 2335 | + @Test |
| 2336 | + void serializeAmmBid() throws JsonProcessingException { |
| 2337 | + AmmBid ammBid = AmmBid.builder() |
| 2338 | + .account(Address.of("rpgAg9CgNV9MYUECHTx26h1PEARhreuap7")) |
| 2339 | + .fee(XrpCurrencyAmount.ofDrops(10)) |
| 2340 | + .sequence(UnsignedInteger.ONE) |
| 2341 | + .signingPublicKey( |
| 2342 | + PublicKey.fromBase16EncodedPublicKey("02B4A8F64B97151FA303F86417751B7EA5AF1D0014FCC110C234D04AF15F3F654A")) |
| 2343 | + .asset(Issue.builder() |
| 2344 | + .currency("4755534400000000000000000000000000000000") |
| 2345 | + .issuer(Address.of("rPZtDb6ZHtfYzMmzyUGvehoi2vYhrNAPhy")) |
| 2346 | + .build() |
| 2347 | + ) |
| 2348 | + .asset2(Issue.builder() |
| 2349 | + .currency("524C555344000000000000000000000000000000") |
| 2350 | + .issuer(Address.of("rPZtDb6ZHtfYzMmzyUGvehoi2vYhrNAPhy")) |
| 2351 | + .build() |
| 2352 | + ) |
| 2353 | + .bidMin( |
| 2354 | + IssuedCurrencyAmount.builder() |
| 2355 | + .value("200") |
| 2356 | + .currency("LPT") |
| 2357 | + .issuer(Address.of("rPZtDb6ZHtfYzMmzyUGvehoi2vYhrNAPhy")) |
| 2358 | + .build() |
| 2359 | + ) |
| 2360 | + .bidMax( |
| 2361 | + IssuedCurrencyAmount.builder() |
| 2362 | + .value("200") |
| 2363 | + .currency("LPT") |
| 2364 | + .issuer(Address.of("rPZtDb6ZHtfYzMmzyUGvehoi2vYhrNAPhy")) |
| 2365 | + .build() |
| 2366 | + ) |
| 2367 | + .addAuthAccounts( |
| 2368 | + AuthAccountWrapper.of(AuthAccount.of(Address.of("rPZtDb6ZHtfYzMmzyUGvehoi2vYhrNAPhy"))) |
| 2369 | + ) |
| 2370 | + .build(); |
| 2371 | + |
| 2372 | + String expectedBinary = "120027240000000168400000000000000A6CD5071AFD498D00000000000000000000000000004C5" + |
| 2373 | + "0540000000000F78AD4FDA66653106AE45EE5FE683C457E6BA9C56DD5071AFD498D00000000000000000000000000004C5054" + |
| 2374 | + "0000000000F78AD4FDA66653106AE45EE5FE683C457E6BA9C5732102B4A8F64B97151FA303F86417751B7EA5AF1D0014FCC11" + |
| 2375 | + "0C234D04AF15F3F654A81141285FD19EDD3FB7146B87251AFB0E17742B37271F019E01B8114F78AD4FDA66653106AE45EE5FE" + |
| 2376 | + "683C457E6BA9C5E1F103184755534400000000000000000000000000000000F78AD4FDA66653106AE45EE5FE683C457E6BA9" + |
| 2377 | + "C50418524C555344000000000000000000000000000000F78AD4FDA66653106AE45EE5FE683C457E6BA9C5"; |
| 2378 | + |
| 2379 | + assertSerializesAndDeserializes(ammBid, expectedBinary); |
| 2380 | + } |
| 2381 | + |
| 2382 | + @Test |
| 2383 | + void serializeAmmCreate() throws JsonProcessingException { |
| 2384 | + AmmCreate ammCreate = AmmCreate.builder() |
| 2385 | + .account(Address.of("rpgAg9CgNV9MYUECHTx26h1PEARhreuap7")) |
| 2386 | + .fee(XrpCurrencyAmount.ofDrops(10)) |
| 2387 | + .sequence(UnsignedInteger.ONE) |
| 2388 | + .signingPublicKey( |
| 2389 | + PublicKey.fromBase16EncodedPublicKey("02B4A8F64B97151FA303F86417751B7EA5AF1D0014FCC110C234D04AF15F3F654A") |
| 2390 | + ) |
| 2391 | + .amount( |
| 2392 | + IssuedCurrencyAmount.builder() |
| 2393 | + .value("200") |
| 2394 | + .currency("LPT") |
| 2395 | + .issuer(Address.of("rPZtDb6ZHtfYzMmzyUGvehoi2vYhrNAPhy")) |
| 2396 | + .build() |
| 2397 | + ) |
| 2398 | + .amount2( |
| 2399 | + IssuedCurrencyAmount.builder() |
| 2400 | + .value("200") |
| 2401 | + .currency("LPT") |
| 2402 | + .issuer(Address.of("rPZtDb6ZHtfYzMmzyUGvehoi2vYhrNAPhy")) |
| 2403 | + .build() |
| 2404 | + ) |
| 2405 | + .tradingFee(TradingFee.of(UnsignedInteger.ONE)) |
| 2406 | + .build(); |
| 2407 | + |
| 2408 | + String expectedBinary = "120023150001240000000161D5071AFD498D00000000000000000000000000004C505400000000" + |
| 2409 | + "00F78AD4FDA66653106AE45EE5FE683C457E6BA9C568400000000000000A6BD5071AFD498D00000000000000000000000000" + |
| 2410 | + "004C50540000000000F78AD4FDA66653106AE45EE5FE683C457E6BA9C5732102B4A8F64B97151FA303F86417751B7EA5AF1D" + |
| 2411 | + "0014FCC110C234D04AF15F3F654A81141285FD19EDD3FB7146B87251AFB0E17742B37271"; |
| 2412 | + |
| 2413 | + assertSerializesAndDeserializes(ammCreate, expectedBinary); |
| 2414 | + } |
| 2415 | + |
| 2416 | + @Test |
| 2417 | + void serializeAmmDelete() throws JsonProcessingException { |
| 2418 | + AmmDelete ammDelete = AmmDelete.builder() |
| 2419 | + .account(Address.of("rpgAg9CgNV9MYUECHTx26h1PEARhreuap7")) |
| 2420 | + .fee(XrpCurrencyAmount.ofDrops(10)) |
| 2421 | + .sequence(UnsignedInteger.ONE) |
| 2422 | + .signingPublicKey( |
| 2423 | + PublicKey.fromBase16EncodedPublicKey("02B4A8F64B97151FA303F86417751B7EA5AF1D0014FCC110C234D04AF15F3F654A") |
| 2424 | + ) |
| 2425 | + .asset(Issue.builder() |
| 2426 | + .currency("4755534400000000000000000000000000000000") |
| 2427 | + .issuer(Address.of("rPZtDb6ZHtfYzMmzyUGvehoi2vYhrNAPhy")) |
| 2428 | + .build() |
| 2429 | + ) |
| 2430 | + .asset2(Issue.builder() |
| 2431 | + .currency("524C555344000000000000000000000000000000") |
| 2432 | + .issuer(Address.of("rPZtDb6ZHtfYzMmzyUGvehoi2vYhrNAPhy")) |
| 2433 | + .build() |
| 2434 | + ) |
| 2435 | + .build(); |
| 2436 | + |
| 2437 | + String expectedBinary = "120028240000000168400000000000000A732102B4A8F64B97151FA303F86417751B7EA5AF1" + |
| 2438 | + "D0014FCC110C234D04AF15F3F654A81141285FD19EDD3FB7146B87251AFB0E17742B37271031847555344000000000000" + |
| 2439 | + "00000000000000000000F78AD4FDA66653106AE45EE5FE683C457E6BA9C50418524C5553440000000000000000000000" + |
| 2440 | + "00000000F78AD4FDA66653106AE45EE5FE683C457E6BA9C5"; |
| 2441 | + |
| 2442 | + assertSerializesAndDeserializes(ammDelete, expectedBinary); |
| 2443 | + } |
| 2444 | + |
| 2445 | + @Test |
| 2446 | + void serializeAmmDeposit() throws JsonProcessingException { |
| 2447 | + AmmDeposit ammDeposit = AmmDeposit.builder() |
| 2448 | + .account(Address.of("rpgAg9CgNV9MYUECHTx26h1PEARhreuap7")) |
| 2449 | + .fee(XrpCurrencyAmount.ofDrops(10)) |
| 2450 | + .sequence(UnsignedInteger.ONE) |
| 2451 | + .signingPublicKey( |
| 2452 | + PublicKey.fromBase16EncodedPublicKey("02B4A8F64B97151FA303F86417751B7EA5AF1D0014FCC110C234D04AF15F3F654A") |
| 2453 | + ) |
| 2454 | + .flags(AmmDepositFlags.SINGLE_ASSET) |
| 2455 | + .asset(Issue.builder() |
| 2456 | + .currency("4755534400000000000000000000000000000000") |
| 2457 | + .issuer(Address.of("rPZtDb6ZHtfYzMmzyUGvehoi2vYhrNAPhy")) |
| 2458 | + .build() |
| 2459 | + ) |
| 2460 | + .asset2(Issue.builder() |
| 2461 | + .currency("524C555344000000000000000000000000000000") |
| 2462 | + .issuer(Address.of("rPZtDb6ZHtfYzMmzyUGvehoi2vYhrNAPhy")) |
| 2463 | + .build() |
| 2464 | + ) |
| 2465 | + .amount( |
| 2466 | + IssuedCurrencyAmount.builder() |
| 2467 | + .value("200") |
| 2468 | + .currency("LPT") |
| 2469 | + .issuer(Address.of("rPZtDb6ZHtfYzMmzyUGvehoi2vYhrNAPhy")) |
| 2470 | + .build() |
| 2471 | + ) |
| 2472 | + .amount2( |
| 2473 | + IssuedCurrencyAmount.builder() |
| 2474 | + .value("200") |
| 2475 | + .currency("LPT") |
| 2476 | + .issuer(Address.of("rPZtDb6ZHtfYzMmzyUGvehoi2vYhrNAPhy")) |
| 2477 | + .build() |
| 2478 | + ) |
| 2479 | + .effectivePrice( |
| 2480 | + IssuedCurrencyAmount.builder() |
| 2481 | + .value("200") |
| 2482 | + .currency("LPT") |
| 2483 | + .issuer(Address.of("rPZtDb6ZHtfYzMmzyUGvehoi2vYhrNAPhy")) |
| 2484 | + .build() |
| 2485 | + ) |
| 2486 | + .lpTokenOut( |
| 2487 | + IssuedCurrencyAmount.builder() |
| 2488 | + .value("200") |
| 2489 | + .currency("LPT") |
| 2490 | + .issuer(Address.of("rPZtDb6ZHtfYzMmzyUGvehoi2vYhrNAPhy")) |
| 2491 | + .build() |
| 2492 | + ) |
| 2493 | + .tradingFee(TradingFee.ofPercent(BigDecimal.ONE)) |
| 2494 | + .build(); |
| 2495 | + |
| 2496 | + String expectedBinary = "1200241503E82200080000240000000161D5071AFD498D00000000000000000000000000004C50" + |
| 2497 | + "540000000000F78AD4FDA66653106AE45EE5FE683C457E6BA9C568400000000000000A6BD5071AFD498D0000000000000000" + |
| 2498 | + "0000000000004C50540000000000F78AD4FDA66653106AE45EE5FE683C457E6BA9C56019D5071AFD498D0000000000000000" + |
| 2499 | + "0000000000004C50540000000000F78AD4FDA66653106AE45EE5FE683C457E6BA9C5601BD5071AFD498D0000000000000000" + |
| 2500 | + "0000000000004C50540000000000F78AD4FDA66653106AE45EE5FE683C457E6BA9C5732102B4A8F64B97151FA303F8641775" + |
| 2501 | + "1B7EA5AF1D0014FCC110C234D04AF15F3F654A81141285FD19EDD3FB7146B87251AFB0E17742B37271031847555344000000" + |
| 2502 | + "00000000000000000000000000F78AD4FDA66653106AE45EE5FE683C457E6BA9C50418524C55534400000000000000000000" + |
| 2503 | + "0000000000F78AD4FDA66653106AE45EE5FE683C457E6BA9C5"; |
| 2504 | + |
| 2505 | + assertSerializesAndDeserializes(ammDeposit, expectedBinary); |
| 2506 | + } |
| 2507 | + |
| 2508 | + @Test |
| 2509 | + void serializeAmmVote() throws JsonProcessingException { |
| 2510 | + AmmVote ammVote = AmmVote.builder() |
| 2511 | + .account(Address.of("rpgAg9CgNV9MYUECHTx26h1PEARhreuap7")) |
| 2512 | + .fee(XrpCurrencyAmount.ofDrops(10)) |
| 2513 | + .sequence(UnsignedInteger.ONE) |
| 2514 | + .signingPublicKey( |
| 2515 | + PublicKey.fromBase16EncodedPublicKey("02B4A8F64B97151FA303F86417751B7EA5AF1D0014FCC110C234D04AF15F3F654A") |
| 2516 | + ) |
| 2517 | + .asset(Issue.builder() |
| 2518 | + .currency("4755534400000000000000000000000000000000") |
| 2519 | + .issuer(Address.of("rPZtDb6ZHtfYzMmzyUGvehoi2vYhrNAPhy")) |
| 2520 | + .build() |
| 2521 | + ) |
| 2522 | + .asset2(Issue.builder() |
| 2523 | + .currency("524C555344000000000000000000000000000000") |
| 2524 | + .issuer(Address.of("rPZtDb6ZHtfYzMmzyUGvehoi2vYhrNAPhy")) |
| 2525 | + .build() |
| 2526 | + ) |
| 2527 | + .tradingFee(TradingFee.ofPercent(BigDecimal.ONE)) |
| 2528 | + .build(); |
| 2529 | + |
| 2530 | + String expectedBinary = "1200261503E8240000000168400000000000000A732102B4A8F64B97151FA303F86417751B7" + |
| 2531 | + "EA5AF1D0014FCC110C234D04AF15F3F654A81141285FD19EDD3FB7146B87251AFB0E17742B37271031847555344000000" + |
| 2532 | + "00000000000000000000000000F78AD4FDA66653106AE45EE5FE683C457E6BA9C50418524C55534400000000000000000" + |
| 2533 | + "0000000000000F78AD4FDA66653106AE45EE5FE683C457E6BA9C5"; |
| 2534 | + |
| 2535 | + assertSerializesAndDeserializes(ammVote, expectedBinary); |
| 2536 | + } |
| 2537 | + |
2259 | 2538 | private <T extends Transaction> void assertSerializesAndDeserializes( |
2260 | 2539 | T transaction, |
2261 | 2540 | String expectedBinary |
|
0 commit comments