Skip to content

Commit 13d9753

Browse files
committed
Merge branch 'main' of github.com:XRPLF/xrpl4j into releases/v4.0
2 parents 19491ff + 613339d commit 13d9753

File tree

3 files changed

+283
-4
lines changed

3 files changed

+283
-4
lines changed

xrpl4j-core/src/main/java/org/xrpl/xrpl4j/model/transactions/AmmWithdraw.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ static ImmutableAmmWithdraw.Builder builder() {
9696
*
9797
* @return An optionally present {@link IssuedCurrencyAmount}.
9898
*/
99-
@JsonProperty("LPTokensIn")
99+
@JsonProperty("LPTokenIn")
100100
Optional<CurrencyAmount> lpTokensIn();
101101

102102
}

xrpl4j-core/src/test/java/org/xrpl/xrpl4j/codec/binary/BinarySerializationTests.java

Lines changed: 279 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@
3737
import org.xrpl.xrpl4j.crypto.keys.PublicKey;
3838
import org.xrpl.xrpl4j.crypto.signing.Signature;
3939
import org.xrpl.xrpl4j.model.flags.AccountSetTransactionFlags;
40+
import org.xrpl.xrpl4j.model.flags.AmmDepositFlags;
41+
import org.xrpl.xrpl4j.model.flags.AmmWithdrawFlags;
4042
import org.xrpl.xrpl4j.model.flags.OfferCreateFlags;
4143
import org.xrpl.xrpl4j.model.flags.PaymentChannelClaimFlags;
4244
import org.xrpl.xrpl4j.model.flags.PaymentFlags;
@@ -45,13 +47,21 @@
4547
import org.xrpl.xrpl4j.model.flags.TrustSetFlags;
4648
import org.xrpl.xrpl4j.model.flags.XChainModifyBridgeFlags;
4749
import org.xrpl.xrpl4j.model.jackson.ObjectMapperFactory;
50+
import org.xrpl.xrpl4j.model.ledger.AuthAccount;
51+
import org.xrpl.xrpl4j.model.ledger.AuthAccountWrapper;
4852
import org.xrpl.xrpl4j.model.ledger.Issue;
4953
import org.xrpl.xrpl4j.model.ledger.RippleStateObject;
5054
import org.xrpl.xrpl4j.model.ledger.SignerEntry;
5155
import org.xrpl.xrpl4j.model.ledger.SignerEntryWrapper;
5256
import org.xrpl.xrpl4j.model.transactions.AccountDelete;
5357
import org.xrpl.xrpl4j.model.transactions.AccountSet;
5458
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;
5565
import org.xrpl.xrpl4j.model.transactions.AssetPrice;
5666
import org.xrpl.xrpl4j.model.transactions.CheckCancel;
5767
import org.xrpl.xrpl4j.model.transactions.CheckCash;
@@ -67,6 +77,10 @@
6777
import org.xrpl.xrpl4j.model.transactions.EscrowCreate;
6878
import org.xrpl.xrpl4j.model.transactions.EscrowFinish;
6979
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;
7084
import org.xrpl.xrpl4j.model.transactions.ImmutableDidDelete;
7185
import org.xrpl.xrpl4j.model.transactions.ImmutableDidSet;
7286
import org.xrpl.xrpl4j.model.transactions.ImmutableOracleDelete;
@@ -92,6 +106,7 @@
92106
import org.xrpl.xrpl4j.model.transactions.PriceDataWrapper;
93107
import org.xrpl.xrpl4j.model.transactions.SetRegularKey;
94108
import org.xrpl.xrpl4j.model.transactions.SignerListSet;
109+
import org.xrpl.xrpl4j.model.transactions.TradingFee;
95110
import org.xrpl.xrpl4j.model.transactions.Transaction;
96111
import org.xrpl.xrpl4j.model.transactions.TrustSet;
97112
import org.xrpl.xrpl4j.model.transactions.XChainAccountCreateCommit;
@@ -2256,6 +2271,270 @@ void serializeOracleDelete() throws JsonProcessingException {
22562271
assertSerializesAndDeserializes(oracleDelete, expectedBinary);
22572272
}
22582273

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+
22592538
private <T extends Transaction> void assertSerializesAndDeserializes(
22602539
T transaction,
22612540
String expectedBinary

xrpl4j-core/src/test/java/org/xrpl/xrpl4j/model/transactions/AmmWithdrawTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ void constructLpTokenWithdrawAndTestJson() throws JSONException, JsonProcessingE
2121

2222
String json = "{\n" +
2323
" \"Account\" : \"rJVUeRqDFNs2xqA7ncVE6ZoAhPUoaJJSQm\",\n" +
24-
" \"LPTokensIn\" : " + objectMapper.writeValueAsString(withdraw.lpTokensIn()) + "," +
24+
" \"LPTokenIn\" : " + objectMapper.writeValueAsString(withdraw.lpTokensIn()) + "," +
2525
" \"Asset\" : " + objectMapper.writeValueAsString(withdraw.asset()) + "," +
2626
" \"Asset2\" : " + objectMapper.writeValueAsString(withdraw.asset2()) + "," +
2727
" \"Fee\" : \"10\",\n" +
@@ -43,7 +43,7 @@ void constructLpTokenWithdrawWithXrpCurrencyAmountAndTestJson() throws JSONExcep
4343

4444
String json = "{\n" +
4545
" \"Account\" : \"rJVUeRqDFNs2xqA7ncVE6ZoAhPUoaJJSQm\",\n" +
46-
" \"LPTokensIn\" : \"10\"," +
46+
" \"LPTokenIn\" : \"10\"," +
4747
" \"Asset\" : " + objectMapper.writeValueAsString(withdraw.asset()) + "," +
4848
" \"Asset2\" : " + objectMapper.writeValueAsString(withdraw.asset2()) + "," +
4949
" \"Fee\" : \"10\",\n" +
@@ -171,7 +171,7 @@ void constructOneAssetLpTokenAndTestJson() throws JSONException, JsonProcessingE
171171
" \"issuer\" : \"rP9jPyP5kyvFRb6ZiRghAGw5u8SGAmU4bd\",\n" +
172172
" \"value\" : \"5\"\n" +
173173
" },\n" +
174-
" \"LPTokensIn\" : " + objectMapper.writeValueAsString(withdraw.lpTokensIn()) + "," +
174+
" \"LPTokenIn\" : " + objectMapper.writeValueAsString(withdraw.lpTokensIn()) + "," +
175175
" \"Asset\" : " + objectMapper.writeValueAsString(withdraw.asset()) + "," +
176176
" \"Asset2\" : " + objectMapper.writeValueAsString(withdraw.asset2()) + "," +
177177
" \"Fee\" : \"10\",\n" +

0 commit comments

Comments
 (0)