import dotenv from "dotenv"; dotenv.config(); import { expect } from "@jest/globals"; import { clusterApiUrl, Connection, PublicKey } from "@solana/web3.js"; import { DIP, USDC_MINT_PK, WSOL_PK } from "../src"; import { claimMint, optionMint, pricing, quoteVault, state, vault, } from "../src/addresses"; describe("dip-sdk", () => { const client = new DIP( process.env.RPC_URL || clusterApiUrl("devnet"), "confirmed" ); it("State", async () => { // Verify against an actual DIP. // SOL,USDC,2023-4-7,22000000,UPSIDE,E,P expect( state(22_000_000, 1_680_868_800, WSOL_PK, USDC_MINT_PK).toBase58() === "HsLXeDjgMBfqazrUgdjvbscrxZnNYNjCiGBeevEJkC37" ).toBeTruthy(); }); it("Pricing", async () => { // Verify against an actual DIP. // SOL,USDC,2023-4-7,22000000,UPSIDE,E,P expect( pricing(22_000_000, 1_680_868_800, WSOL_PK, USDC_MINT_PK).toBase58() === "Gq8jXYJUzk2PJcxyfRzbtWQrV6ajKWGmQAuB7dNK4rjo" ).toBeTruthy(); }); it("QuoteVault", async () => { // Verify against an actual DIP. // SOL,USDC,2023-4-7,22000000,UPSIDE,E,P expect( quoteVault( 22_000_000, 1_680_868_800, WSOL_PK, USDC_MINT_PK ).toBase58() === "HB5KW7st7G1xwyDA6E6FzJkKTu6JSVbGrM5MkVKUzWZE" ).toBeTruthy(); }); it("ClaimMint", async () => { // Verify against an actual DIP. // SOL,USDC,2023-4-7,22000000,UPSIDE,E,P expect( claimMint(22_000_000, 1_680_868_800, WSOL_PK, USDC_MINT_PK).toBase58() === "GWWPjpB8ECNwEALGy8PieobwY6yPPFFmTUPk1PzU1jwg" ).toBeTruthy(); }); it("Vault", async () => { // Verify against an actual DIP. // SOL,USDC,2023-4-7,22000000,UPSIDE,E,P expect( vault(22_000_000, 1_680_868_800, WSOL_PK, USDC_MINT_PK).toBase58() === "2EAhTDwbWPnQduyx74RZ6GaezXgVUg5hQkmv17GTBjav" ).toBeTruthy(); }); it("OptionMint", async () => { // Verify against an actual DIP. // SOL,USDC,2023-4-7,22000000,UPSIDE,E,P expect( optionMint( 22_000_000, 1_680_868_800, WSOL_PK, USDC_MINT_PK ).toBase58() === "Bs4FySp3nRqimPmDqQbhEvmBtDDyxUvqnpXz7pzqaXem" ).toBeTruthy(); }); it("ParseDipState", async () => { const rpcUrl = clusterApiUrl("mainnet-beta"); const connection = new Connection(rpcUrl, "finalized"); const accountInfo = await connection.getAccountInfo( new PublicKey("HsLXeDjgMBfqazrUgdjvbscrxZnNYNjCiGBeevEJkC37") ); // Verify against an actual DIP. // SOL,USDC,2023-4-7,22000000,UPSIDE,E,P if (accountInfo) { const dipState = client.parseDipState(accountInfo.data); expect(dipState).toMatchObject({ strike: 22000000, expiration: 1680868800, baseMint: new PublicKey("So11111111111111111111111111111111111111112"), vaultMint: new PublicKey( "GWWPjpB8ECNwEALGy8PieobwY6yPPFFmTUPk1PzU1jwg" ), vaultMintBump: 255, vaultBase: new PublicKey( "2EAhTDwbWPnQduyx74RZ6GaezXgVUg5hQkmv17GTBjav" ), vaultBaseBump: 255, optionMint: new PublicKey( "Bs4FySp3nRqimPmDqQbhEvmBtDDyxUvqnpXz7pzqaXem" ), optionBump: 255, vaultQuote: new PublicKey( "HB5KW7st7G1xwyDA6E6FzJkKTu6JSVbGrM5MkVKUzWZE" ), vaultQuoteBump: 255, quoteMint: new PublicKey( "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v" ), }); } else { expect(false).toBeTruthy(); } }); // This is testing against real production data. If it fails, that could // indicate issues with what is actually on-chain, not just possible issues // in this SDK. // TODO: Run testing on a localnet to isolate failures to within this SDK only. // TODO: Also test instructions it("getActiveDips", async () => { const activeDips = await client.getActiveDips(); expect( activeDips["So11111111111111111111111111111111111111112"] ).toBeTruthy(); }); });