{"version":3,"file":"createWhitelist.mjs","sources":["../../../../../src/plugins/whitelistModule/operations/createWhitelist.ts"],"sourcesContent":["import { createCreateWhitelistInstruction } from '@convergence-rfq/rfq';\nimport { PublicKey, Keypair } from '@solana/web3.js';\nimport { Whitelist, assertWhitelist } from '../models/Whitelist';\nimport {\n  Operation,\n  OperationHandler,\n  OperationScope,\n  makeConfirmOptionsFinalizedOnMainnet,\n  useOperation,\n} from '../../../types';\nimport { SendAndConfirmTransactionResponse } from '@/plugins/rpcModule';\nimport { Convergence } from '@/Convergence';\nimport {\n  TransactionBuilder,\n  TransactionBuilderOptions,\n} from '@/utils/TransactionBuilder';\nimport { addComputeBudgetIxsIfNeeded } from '@/utils/helpers';\n\nconst Key = 'CreateWhitelistOperation' as const;\n\n/**\n * Creates a new Whitelist.\n *\n * ```ts\n * const { whitelist} = await convergence\n *   .whitelist()\n *   .createWhitelist({\n *       creator: PublicKey;\n *       capacity: number;\n *       whitelist: PublicKey[];\n *   });\n * ```\n *\n * @group Operations\n * @category Constructors\n */\nexport const createWhitelistOperation =\n  useOperation<CreateWhitelistOperation>(Key);\n\n/**\n * @group Operations\n * @category Types\n */\nexport type CreateWhitelistOperation = Operation<\n  typeof Key,\n  CreateWhitelistInput,\n  CreateWhitelistOutput\n>;\n\n/**\n * @group Operations\n * @category Inputs\n */\nexport type CreateWhitelistInput = {\n  creator: PublicKey;\n  whitelist: PublicKey[];\n};\n\n/**\n * @group Operations\n * @category Outputs\n */\nexport type CreateWhitelistOutput = {\n  /** The blockchain response from sending and confirming the transaction. */\n  response: SendAndConfirmTransactionResponse;\n\n  /** The newly created Whitelist */\n  whitelist: Whitelist;\n};\n\n/**\n * @group Operations\n * @category Handlers\n */\nexport const createWhitelistOperationHandler: OperationHandler<CreateWhitelistOperation> =\n  {\n    handle: async (\n      operation: CreateWhitelistOperation,\n      convergence: Convergence,\n      scope: OperationScope\n    ): Promise<CreateWhitelistOutput> => {\n      const { creator, whitelist } = operation.input;\n      const whitelistKeypair = Keypair.generate();\n      const builder = await createWhitelistBuilder(\n        convergence,\n        {\n          creator,\n          whitelist,\n          whitelistKeypair,\n        },\n        scope\n      );\n\n      const confirmOptions = makeConfirmOptionsFinalizedOnMainnet(\n        convergence,\n        scope.confirmOptions\n      );\n      const { response } = await builder.sendAndConfirm(\n        convergence,\n        confirmOptions\n      );\n      scope.throwIfCanceled();\n\n      const whitelistAccount = await convergence\n        .whitelist()\n        .findWhitelistByAddress({ address: whitelistKeypair.publicKey });\n      assertWhitelist(whitelistAccount);\n\n      return { response, whitelist: whitelistAccount };\n    },\n  };\n\n/**\n * @group Transaction Builders\n * @category Inputs\n */\nexport type CreateWhitelistBuilderParams = CreateWhitelistInput & {\n  whitelistKeypair: Keypair;\n};\n\n/**\n * @group Transaction Builders\n * @category Outputs\n */\n\nexport type CreateWhitelistBuilderResult = TransactionBuilder;\n\nexport const createWhitelistBuilder = async (\n  convergence: Convergence,\n  params: CreateWhitelistBuilderParams,\n  options: TransactionBuilderOptions = {}\n): Promise<CreateWhitelistBuilderResult> => {\n  const { programs, payer = convergence.rpc().getDefaultFeePayer() } = options;\n\n  const { creator, whitelist, whitelistKeypair } = params;\n\n  const systemProgram = convergence.programs().getSystem(programs);\n  const rfqProgram = convergence.programs().getRfq(programs);\n\n  const txBuilder = TransactionBuilder.make()\n    .setFeePayer(payer)\n    .add({\n      instruction: createCreateWhitelistInstruction(\n        {\n          creator,\n          whitelistAccount: whitelistKeypair.publicKey,\n          systemProgram: systemProgram.address,\n        },\n        {\n          whitelist,\n        },\n        rfqProgram.address\n      ),\n      signers: [whitelistKeypair, payer],\n      key: 'CreateWhitelist',\n    });\n\n  await addComputeBudgetIxsIfNeeded(txBuilder, convergence);\n  return txBuilder;\n};\n"],"names":["Key","createWhitelistOperation","useOperation","createWhitelistOperationHandler","handle","_handle","_asyncToGenerator","_regeneratorRuntime","mark","_callee","operation","convergence","scope","_operation$input","creator","whitelist","whitelistKeypair","builder","confirmOptions","_yield$builder$sendAn","response","whitelistAccount","wrap","_callee$","_context","prev","next","input","Keypair","generate","createWhitelistBuilder","sent","makeConfirmOptionsFinalizedOnMainnet","sendAndConfirm","throwIfCanceled","findWhitelistByAddress","address","publicKey","assertWhitelist","abrupt","stop","_x","_x2","_x3","apply","arguments","_ref","_callee2","params","options","programs","_options$payer","payer","systemProgram","rfqProgram","txBuilder","_args2","_callee2$","_context2","length","undefined","rpc","getDefaultFeePayer","getSystem","getRfq","TransactionBuilder","make","setFeePayer","add","instruction","createCreateWhitelistInstruction","signers","key","addComputeBudgetIxsIfNeeded","_x4","_x5"],"mappings":"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"}