withdraw-liquidity.ts 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. // import * as anchor from "@coral-xyz/anchor";
  2. // import type { Program } from "@coral-xyz/anchor";
  3. // import { expect } from "chai";
  4. // import type { SwapExample } from "../target/types/token_swap";
  5. // import { type TestValues, createValues, mintingTokens } from "./utils";
  6. //import { startAnchor } from "solana-bankrun";
  7. // import { BankrunProvider } from "anchor-bankrun";
  8. // const IDL = require("../target/idl/token_swap.json");
  9. // const PROGRAM_ID = new PublicKey(IDL.address);
  10. // describe("Withdraw liquidity", async () => {
  11. // / const context = await startAnchor(
  12. // "",
  13. // [{ name: "token_swap", programId: PROGRAM_ID }],
  14. // []
  15. // );
  16. // const provider = new BankrunProvider(context);
  17. // const payer = provider.wallet as anchor.Wallet;
  18. // const connection = provider.connection;
  19. // const program = new anchor.Program<TokenSwap>(IDL, provider);
  20. // let values: TestValues;
  21. // beforeEach(async () => {
  22. // values = createValues();
  23. // await program.methods
  24. // .createAmm(values.id, values.fee)
  25. // .accounts({ amm: values.ammKey, admin: values.admin.publicKey })
  26. // .rpc();
  27. // await mintingTokens({
  28. // connection,
  29. // creator: values.admin,
  30. // mintAKeypair: values.mintAKeypair,
  31. // mintBKeypair: values.mintBKeypair,
  32. // });
  33. // await program.methods
  34. // .createPool()
  35. // .accounts({
  36. // amm: values.ammKey,
  37. // pool: values.poolKey,
  38. // poolAuthority: values.poolAuthority,
  39. // mintLiquidity: values.mintLiquidity,
  40. // mintA: values.mintAKeypair.publicKey,
  41. // mintB: values.mintBKeypair.publicKey,
  42. // poolAccountA: values.poolAccountA,
  43. // poolAccountB: values.poolAccountB,
  44. // })
  45. // .rpc();
  46. // await program.methods
  47. // .depositLiquidity(values.depositAmountA, values.depositAmountA)
  48. // .accounts({
  49. // pool: values.poolKey,
  50. // poolAuthority: values.poolAuthority,
  51. // depositor: values.admin.publicKey,
  52. // mintLiquidity: values.mintLiquidity,
  53. // mintA: values.mintAKeypair.publicKey,
  54. // mintB: values.mintBKeypair.publicKey,
  55. // poolAccountA: values.poolAccountA,
  56. // poolAccountB: values.poolAccountB,
  57. // depositorAccountLiquidity: values.liquidityAccount,
  58. // depositorAccountA: values.holderAccountA,
  59. // depositorAccountB: values.holderAccountB,
  60. // })
  61. // .signers([values.admin])
  62. // .rpc({ skipPreflight: true });
  63. // });
  64. // it("Withdraw everything", async () => {
  65. // await program.methods
  66. // .withdrawLiquidity(values.depositAmountA.sub(values.minimumLiquidity))
  67. // .accounts({
  68. // amm: values.ammKey,
  69. // pool: values.poolKey,
  70. // poolAuthority: values.poolAuthority,
  71. // depositor: values.admin.publicKey,
  72. // mintLiquidity: values.mintLiquidity,
  73. // mintA: values.mintAKeypair.publicKey,
  74. // mintB: values.mintBKeypair.publicKey,
  75. // poolAccountA: values.poolAccountA,
  76. // poolAccountB: values.poolAccountB,
  77. // depositorAccountLiquidity: values.liquidityAccount,
  78. // depositorAccountA: values.holderAccountA,
  79. // depositorAccountB: values.holderAccountB,
  80. // })
  81. // .signers([values.admin])
  82. // .rpc({ skipPreflight: true });
  83. // const liquidityTokenAccount = await connection.getTokenAccountBalance(
  84. // values.liquidityAccount
  85. // );
  86. // const depositTokenAccountA = await connection.getTokenAccountBalance(
  87. // values.holderAccountA
  88. // );
  89. // const depositTokenAccountB = await connection.getTokenAccountBalance(
  90. // values.holderAccountB
  91. // );
  92. // expect(liquidityTokenAccount.value.amount).to.equal("0");
  93. // expect(Number(depositTokenAccountA.value.amount)).to.be.lessThan(
  94. // values.defaultSupply.toNumber()
  95. // );
  96. // expect(Number(depositTokenAccountA.value.amount)).to.be.greaterThan(
  97. // values.defaultSupply.sub(values.depositAmountA).toNumber()
  98. // );
  99. // expect(Number(depositTokenAccountB.value.amount)).to.be.lessThan(
  100. // values.defaultSupply.toNumber()
  101. // );
  102. // expect(Number(depositTokenAccountB.value.amount)).to.be.greaterThan(
  103. // values.defaultSupply.sub(values.depositAmountA).toNumber()
  104. // );
  105. // });
  106. // });