token_swap.ts 3.9 KB

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