{"version":3,"file":"revokeTokenDelegateAuthority.mjs","sources":["../../../../../src/plugins/tokenModule/operations/revokeTokenDelegateAuthority.ts"],"sourcesContent":["import { createRevokeInstruction } from '@solana/spl-token';\nimport { PublicKey } from '@solana/web3.js';\n\nimport { SendAndConfirmTransactionResponse } from '../../rpcModule';\nimport { Convergence } from '../../../Convergence';\nimport {\n  isSigner,\n  KeypairSigner,\n  Operation,\n  OperationHandler,\n  OperationScope,\n  Signer,\n  useOperation,\n} from '../../../types';\nimport {\n  TransactionBuilder,\n  TransactionBuilderOptions,\n} from '../../../utils/TransactionBuilder';\nimport { addComputeBudgetIxsIfNeeded } from '@/utils/helpers';\n\nconst Key = 'RevokeTokenDelegateAuthorityOperation' as const;\n\n/**\n * Revokes the current delegate authority for a token account.\n *\n * ```ts\n * await convergence\n *   .tokens()\n *   .revokeDelegateAuthority({ mintAddress };\n * ```\n *\n * @group Operations\n * @category Constructors\n */\nexport const revokeTokenDelegateAuthorityOperation =\n  useOperation<RevokeTokenDelegateAuthorityOperation>(Key);\n\n/**\n * @group Operations\n * @category Types\n */\nexport type RevokeTokenDelegateAuthorityOperation = Operation<\n  typeof Key,\n  RevokeTokenDelegateAuthorityInput,\n  RevokeTokenDelegateAuthorityOutput\n>;\n\n/**\n * @group Operations\n * @category Inputs\n */\nexport type RevokeTokenDelegateAuthorityInput = {\n  mintAddress: PublicKey;\n\n  /**\n   * The owner of the token account as a Signer.\n   *\n   * This may be provided as a PublicKey if and only if\n   * the `multiSigners` parameter is provided.\n   *\n   * @defaultValue `convergence.identity()`\n   */\n  owner?: Signer | PublicKey;\n\n  /**\n   * The address of the token account.\n   *\n   * @defaultValue Defaults to using the associated token account\n   * from the `mintAddress` and `owner` parameters.\n   */\n  tokenAddress?: PublicKey;\n\n  /**\n   * The signing accounts to use if the token owner is a multisig.\n   *\n   * @defaultValue `[]`\n   */\n  multiSigners?: KeypairSigner[];\n};\n\n/**\n * @group Operations\n * @category Outputs\n */\nexport type RevokeTokenDelegateAuthorityOutput = {\n  /** The blockchain response from sending and confirming the transaction. */\n  response: SendAndConfirmTransactionResponse;\n};\n\n/**\n * @group Operations\n * @category Handlers\n */\nexport const revokeTokenDelegateAuthorityOperationHandler: OperationHandler<RevokeTokenDelegateAuthorityOperation> =\n  {\n    handle: async (\n      operation: RevokeTokenDelegateAuthorityOperation,\n      convergence: Convergence,\n      scope: OperationScope\n    ): Promise<RevokeTokenDelegateAuthorityOutput> => {\n      const builder = await revokeTokenDelegateAuthorityBuilder(\n        convergence,\n        operation.input,\n        scope\n      );\n      return builder.sendAndConfirm(convergence, scope.confirmOptions);\n    },\n  };\n\n// -----------------\n// Builder\n// -----------------\n\n/**\n * @group Transaction Builders\n * @category Inputs\n */\nexport type RevokeTokenDelegateAuthorityBuilderParams = Omit<\n  RevokeTokenDelegateAuthorityInput,\n  'confirmOptions'\n> & {\n  /** A key to distinguish the instruction that revokes the delegated authority. */\n  instructionKey?: string;\n};\n\n/**\n * Revokes the current delegate authority for a token account.\n *\n * ```ts\n * await convergence\n *   .tokens()\n *   .builders()\n *   .revokeDelegateAuthority({ mintAddress });\n * ```\n *\n * @group Transaction Builders\n * @category Constructors\n */\nexport const revokeTokenDelegateAuthorityBuilder = async (\n  convergence: Convergence,\n  params: RevokeTokenDelegateAuthorityBuilderParams,\n  options: TransactionBuilderOptions = {}\n): Promise<TransactionBuilder> => {\n  const { programs, payer = convergence.rpc().getDefaultFeePayer() } = options;\n  const {\n    mintAddress,\n    owner = convergence.identity(),\n    tokenAddress,\n    multiSigners = [],\n  } = params;\n\n  const [ownerPublicKey, signers] = isSigner(owner)\n    ? [owner.publicKey, [owner]]\n    : [owner, multiSigners];\n\n  const tokenProgram = convergence.programs().getToken(programs);\n  const tokenAccount =\n    tokenAddress ??\n    convergence.tokens().pdas().associatedTokenAccount({\n      mint: mintAddress,\n      owner: ownerPublicKey,\n      programs,\n    });\n\n  const txBuilder = TransactionBuilder.make()\n    .setFeePayer(payer)\n    .add({\n      instruction: createRevokeInstruction(\n        tokenAccount,\n        ownerPublicKey,\n        multiSigners,\n        tokenProgram.address\n      ),\n      signers,\n      key: params.instructionKey ?? 'revokeDelegateAuthority',\n    });\n\n  await addComputeBudgetIxsIfNeeded(txBuilder, convergence);\n  return txBuilder;\n};\n"],"names":["Key","revokeTokenDelegateAuthorityOperation","useOperation","revokeTokenDelegateAuthorityOperationHandler","handle","_handle","_asyncToGenerator","_regeneratorRuntime","mark","_callee","operation","convergence","scope","builder","wrap","_callee$","_context","prev","next","revokeTokenDelegateAuthorityBuilder","input","sent","abrupt","sendAndConfirm","confirmOptions","stop","_x","_x2","_x3","apply","arguments","_ref","_callee2","params","_params$instructionKe","options","programs","_options$payer","payer","mintAddress","_params$owner","owner","tokenAddress","_params$multiSigners","multiSigners","_ref2","_ref3","ownerPublicKey","signers","tokenProgram","tokenAccount","txBuilder","_args2","_callee2$","_context2","length","undefined","rpc","getDefaultFeePayer","identity","isSigner","publicKey","_slicedToArray","getToken","tokens","pdas","associatedTokenAccount","mint","TransactionBuilder","make","setFeePayer","add","instruction","createRevokeInstruction","address","key","instructionKey","addComputeBudgetIxsIfNeeded","_x4","_x5"],"mappings":"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"}