1.0.33 โ€ข Published 10 months ago

@discosea/kitchen v1.0.33

Weekly downloads
-
License
ISC
Repository
-
Last release
10 months ago

๐Ÿณ @discosea/kitchen

Composable token instructions for Solana. Build and use on-chain "recipes" that combine multiple SPL tokens into unified index tokens โ€” and split them back. Built for use with DeFi apps, games, and meme projects.

As seen on cookthecoins.com


๐Ÿ“ฆ Installation

npm install @discosea/kitchen

๐Ÿงฐ Exports

  • createRecipe(feePayerPubkey, cookedData)
  • useRecipe(feePayerPubkey, cookedData, tokenAccounts, option)
  • findCookPDA(concatenatedData, salt)

๐Ÿฅ˜ createRecipe

Creates a TransactionInstruction to define a new on-chain recipe.

import { createRecipe } from "@discosea/kitchen";
import { PublicKey } from "@solana/web3.js";

const cookedData = {
  pda: "RecipePDA",
  seeds: [
    { mint: "MintAddress1", amount_u64: "1000000" },
    { mint: "MintAddress2", amount_u64: "2000000" },
  ],
  salt: "unique-salt-string",
  metadataCid: "QmYourIPFSCid",
  name: "My Token Index",
  symbol: "MTI",
};

const ix = await createRecipe(new PublicKey("FEE_PAYER_PUBKEY"), cookedData);

๐Ÿณ useRecipe

Returns a TransactionInstruction for cook (mint) or uncook (burn).

import { useRecipe } from "@discosea/kitchen";

const cookedData = {
  pda: "RecipePDA",
  seeds: [
    { mint: "MintAddress1", amount_u64: "1000000" },
    { mint: "MintAddress2", amount_u64: "2000000" },
  ],
  seedSalt: "unique-salt-string",
  qty_requested: "2.5",
};

const tokenAccounts = [
  "PDA_Seed1",
  "USER_Seed1",
  "PDA_Seed2",
  "USER_Seed2",
  "PDA_IndexToken",
  "USER_IndexToken",
];

const ix = await useRecipe(
  new PublicKey("FEE_PAYER_PUBKEY"),
  cookedData,
  tokenAccounts,
  0x02 // 0x02 = cook, 0x03 = uncook
);

๐Ÿงช findCookPDA

Deterministically derive a PDA for a recipe.

import { findCookPDA } from "@discosea/kitchen";

const concatenated = Buffer.concat([
  Buffer.from("Seed1"),
  Buffer.from("Seed2"),
]);

const { pda, bump, sha256Hash } = findCookPDA(concatenated, "salt");

๐Ÿ› ๏ธ Notes

  • Seed amounts must be passed as raw amount_u64 (base units, not UI format)
  • qty_requested is a UI float (e.g. "2.5") and converted internally
  • PDA and metadata CID must be precomputed externally

๐Ÿงพ License

MIT ยฉ DiscoSea

1.0.33

10 months ago

1.0.32

10 months ago

1.0.31

10 months ago

1.0.30

10 months ago

1.0.29

10 months ago

1.0.28

10 months ago

1.0.27

10 months ago

1.0.26

10 months ago

1.0.25

10 months ago

1.0.24

10 months ago

1.0.23

11 months ago

1.0.22

11 months ago

1.0.21

11 months ago

1.0.20

11 months ago

1.0.19

11 months ago

1.0.18

11 months ago

1.0.17

11 months ago

1.0.16

11 months ago

1.0.15

11 months ago

1.0.14

11 months ago

1.0.13

11 months ago

1.0.12

12 months ago

1.0.11

12 months ago

1.0.10

12 months ago

1.0.9

12 months ago

1.0.8

12 months ago

1.0.7

12 months ago

1.0.6

12 months ago

1.0.5

12 months ago

1.0.4

12 months ago

1.0.3

12 months ago

1.0.2

12 months ago

1.0.1

1 year ago

1.0.0

1 year ago