{"version":3,"file":"createTokenWithMint.mjs","sources":["../../../../../src/plugins/tokenModule/operations/createTokenWithMint.ts"],"sourcesContent":["import { Keypair, PublicKey } from '@solana/web3.js';\n\nimport { SendAndConfirmTransactionResponse } from '../../rpcModule';\nimport { MintAuthorityMustBeSignerToMintInitialSupplyError } from '../errors';\nimport { TokenWithMint } from '../models/Token';\nimport {\n  TransactionBuilder,\n  TransactionBuilderOptions,\n} from '../../../utils/TransactionBuilder';\nimport { Option } from '../../../utils/types';\nimport {\n  isSigner,\n  makeConfirmOptionsFinalizedOnMainnet,\n  Operation,\n  OperationHandler,\n  OperationScope,\n  Signer,\n  SplTokenAmount,\n  toPublicKey,\n  useOperation,\n} from '../../../types';\nimport type { Convergence } from '../../../Convergence';\nimport { addComputeBudgetIxsIfNeeded } from '@/utils/helpers';\n\nconst Key = 'CreateTokenWithMintOperation' as const;\n\n/**\n * Creates both mint and token accounts in the same transaction.\n *\n * ```ts\n * const { token } = await convergence.tokens().createTokenWithMint();\n * const mint = token.mint;\n * ```\n *\n * @group Operations\n * @category Constructors\n */\nexport const createTokenWithMintOperation =\n  useOperation<CreateTokenWithMintOperation>(Key);\n\n/**\n * @group Operations\n * @category Types\n */\nexport type CreateTokenWithMintOperation = Operation<\n  typeof Key,\n  CreateTokenWithMintInput,\n  CreateTokenWithMintOutput\n>;\n\n/**\n * @group Operations\n * @category Inputs\n */\nexport type CreateTokenWithMintInput = {\n  /**\n   * The number of decimal points used to define token amounts.\n   *\n   * @defaultValue `0`\n   */\n  decimals?: number;\n\n  /**\n   * The initial amount of tokens to mint to the new token account.\n   *\n   * @defaultValue `0`\n   */\n  initialSupply?: SplTokenAmount;\n\n  /**\n   * The address of the new mint account as a Signer.\n   *\n   * @defaultValue `Keypair.generate()`\n   */\n  mint?: Signer;\n\n  /**\n   * The address of the authority that is allowed\n   * to mint new tokens to token accounts.\n   *\n   * It may be required as a Signer in order to\n   * mint the initial supply.\n   *\n   * @defaultValue `convergence.identity()`\n   */\n  mintAuthority?: Signer | PublicKey;\n\n  /**\n   * The address of the authority that is allowed\n   * to freeze token accounts.\n   *\n   * @defaultValue `convergence.identity().publicKey`\n   */\n  freezeAuthority?: Option<PublicKey>;\n\n  /**\n   * The address of the owner of the new token account.\n   *\n   * @defaultValue `convergence.identity().publicKey`\n   */\n  owner?: PublicKey;\n\n  /**\n   * The token account as a Signer if we want to create\n   * a new token account with a specific address instead of\n   * creating a new associated token account.\n   *\n   * @defaultValue Defaults to creating a new associated token account\n   * using the `mint` and `owner` parameters.\n   */\n  token?: Signer;\n};\n\n/**\n * @group Operations\n * @category Outputs\n */\nexport type CreateTokenWithMintOutput = {\n  /** The blockchain response from sending and confirming the transaction. */\n  response: SendAndConfirmTransactionResponse;\n\n  /** The new mint account as a Signer. */\n  mintSigner: Signer;\n\n  /**\n   * A model representing the newly created token\n   * account and its associated mint account.\n   */\n  token: TokenWithMint;\n};\n\n/**\n * @group Operations\n * @category Handlers\n */\nexport const createTokenWithMintOperationHandler: OperationHandler<CreateTokenWithMintOperation> =\n  {\n    async handle(\n      operation: CreateTokenWithMintOperation,\n      convergence: Convergence,\n      scope: OperationScope\n    ): Promise<CreateTokenWithMintOutput> {\n      const builder = await createTokenWithMintBuilder(\n        convergence,\n        operation.input,\n        scope\n      );\n      scope.throwIfCanceled();\n\n      const confirmOptions = makeConfirmOptionsFinalizedOnMainnet(\n        convergence,\n        scope.confirmOptions\n      );\n      const output = await builder.sendAndConfirm(convergence, confirmOptions);\n      scope.throwIfCanceled();\n\n      const token = await convergence.tokens().findTokenWithMintByMint(\n        {\n          mint: output.mintSigner.publicKey,\n          address: output.tokenAddress,\n          addressType: 'token',\n        },\n        scope\n      );\n\n      return { ...output, token };\n    },\n  };\n\n// -----------------\n// Builder\n// -----------------\n\n/**\n * @group Transaction Builders\n * @category Inputs\n */\nexport type CreateTokenWithMintBuilderParams = Omit<\n  CreateTokenWithMintInput,\n  'confirmOptions'\n> & {\n  /** A key to distinguish the instruction that creates the mint account. */\n  createMintAccountInstructionKey?: string;\n\n  /** A key to distinguish the instruction that initializes the mint account. */\n  initializeMintInstructionKey?: string;\n\n  /** A key to distinguish the instruction that creates the associates token account. */\n  createAssociatedTokenAccountInstructionKey?: string;\n\n  /** A key to distinguish the instruction that creates the token account. */\n  createTokenAccountInstructionKey?: string;\n\n  /** A key to distinguish the instruction that initializes the token account. */\n  initializeTokenInstructionKey?: string;\n\n  /** A key to distinguish the instruction that mints tokens to the token account. */\n  mintTokensInstructionKey?: string;\n};\n\n/**\n * @group Transaction Builders\n * @category Contexts\n */\nexport type CreateTokenWithMintBuilderContext = {\n  /** The mint account to create as a Signer. */\n  mintSigner: Signer;\n\n  /** The computed address of the token account to create. */\n  tokenAddress: PublicKey;\n};\n\n/**\n * Creates both mint and token accounts in the same transaction.\n *\n * ```ts\n * const transactionBuilder = await convergence.tokens().builders().createTokenWithMint();\n * ```\n *\n * @group Transaction Builders\n * @category Constructors\n */\nexport const createTokenWithMintBuilder = async (\n  convergence: Convergence,\n  params: CreateTokenWithMintBuilderParams,\n  options: TransactionBuilderOptions = {}\n): Promise<TransactionBuilder<CreateTokenWithMintBuilderContext>> => {\n  const { programs, payer = convergence.rpc().getDefaultFeePayer() } = options;\n  const {\n    decimals = 0,\n    initialSupply,\n    mint = Keypair.generate(),\n    mintAuthority = convergence.identity(),\n    freezeAuthority = convergence.identity().publicKey,\n    owner = convergence.identity().publicKey,\n    token,\n  } = params;\n\n  const createMintBuilder = await convergence\n    .tokens()\n    .builders()\n    .createMint(\n      {\n        decimals,\n        mint,\n        mintAuthority: toPublicKey(mintAuthority),\n        freezeAuthority,\n        createAccountInstructionKey:\n          params.createMintAccountInstructionKey ?? 'createMintAccount',\n        initializeMintInstructionKey:\n          params.initializeMintInstructionKey ?? 'initializeMint',\n      },\n      { programs, payer }\n    );\n\n  const createTokenBuilder = await convergence\n    .tokens()\n    .builders()\n    .createToken(\n      {\n        mint: mint.publicKey,\n        owner,\n        token,\n        createAssociatedTokenAccountInstructionKey:\n          params.createAssociatedTokenAccountInstructionKey ??\n          'createAssociatedTokenAccount',\n        createAccountInstructionKey:\n          params.createTokenAccountInstructionKey ?? 'createTokenAccount',\n        initializeTokenInstructionKey:\n          params.initializeTokenInstructionKey ?? 'initializeToken',\n      },\n      { payer, programs }\n    );\n\n  const { tokenAddress } = createTokenBuilder.getContext();\n\n  const builder = TransactionBuilder.make<CreateTokenWithMintBuilderContext>()\n    .setFeePayer(payer)\n    .setContext({ mintSigner: mint, tokenAddress })\n\n    // Create the Mint account.\n    .add(createMintBuilder)\n\n    // Create the Token account.\n    .add(createTokenBuilder);\n\n  await addComputeBudgetIxsIfNeeded(builder, convergence);\n  // Potentially mint the initial supply to the token account.\n  if (!!initialSupply) {\n    if (!isSigner(mintAuthority)) {\n      throw new MintAuthorityMustBeSignerToMintInitialSupplyError();\n    }\n\n    builder.add(\n      await convergence\n        .tokens()\n        .builders()\n        .mint(\n          {\n            mintAddress: mint.publicKey,\n            toToken: tokenAddress,\n            amount: initialSupply,\n            mintAuthority,\n            mintTokensInstructionKey:\n              params.mintTokensInstructionKey ?? 'mintTokens',\n          },\n          { payer, programs }\n        )\n    );\n  }\n\n  return builder;\n};\n"],"names":["Key","createTokenWithMintOperation","useOperation","createTokenWithMintOperationHandler","handle","operation","convergence","scope","_asyncToGenerator","_regeneratorRuntime","mark","_callee","builder","confirmOptions","output","token","wrap","_callee$","_context","prev","next","createTokenWithMintBuilder","input","sent","throwIfCanceled","makeConfirmOptionsFinalizedOnMainnet","sendAndConfirm","tokens","findTokenWithMintByMint","mint","mintSigner","publicKey","address","tokenAddress","addressType","abrupt","_objectSpread","stop","_ref","_callee2","params","_params$createMintAcc","_params$initializeMin","_params$createAssocia","_params$createTokenAc","_params$initializeTok","options","programs","_options$payer","payer","_params$decimals","decimals","initialSupply","_params$mint","_params$mintAuthority","mintAuthority","_params$freezeAuthori","freezeAuthority","_params$owner","owner","createMintBuilder","createTokenBuilder","_createTokenBuilder$g","_params$mintTokensIns","_args2","arguments","_callee2$","_context2","length","undefined","rpc","getDefaultFeePayer","Keypair","generate","identity","builders","createMint","toPublicKey","createAccountInstructionKey","createMintAccountInstructionKey","initializeMintInstructionKey","createToken","createAssociatedTokenAccountInstructionKey","createTokenAccountInstructionKey","initializeTokenInstructionKey","getContext","TransactionBuilder","make","setFeePayer","setContext","add","addComputeBudgetIxsIfNeeded","isSigner","MintAuthorityMustBeSignerToMintInitialSupplyError","t0","mintAddress","toToken","amount","mintTokensInstructionKey","t1","call","_x","_x2","apply"],"mappings":"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"}