{"version":3,"file":"getTokenBalance.cjs","sources":["../../../../../src/plugins/tokenModule/operations/getTokenBalance.ts"],"sourcesContent":["import { PublicKey } from '@solana/web3.js';\n\nimport BN from 'bn.js';\nimport type { Convergence } from '../../../Convergence';\nimport { Operation, OperationHandler, useOperation } from '../../../types';\n\nconst Key = 'GetTokenBalance' as const;\n\n/**\n * Get token Balance.\n *\n * ```ts\n * await convergence\n *   .tokens()\n *   .getTokenBalance({\n *     mintAddress,\n *     owner,\n *     mintDecimals\n *   };\n * ```\n *\n * @group Operations\n * @category Constructors\n */\nexport const getTokenBalanceOperation =\n  useOperation<GetTokenBalanceOperation>(Key);\n\n/**\n * @group Operations\n * @category Types\n */\nexport type GetTokenBalanceOperation = Operation<\n  typeof Key,\n  GetTokenBalanceInput,\n  GetTokenBalanceOutput\n>;\n\n/**\n * @group Operations\n * @category Inputs\n */\nexport type GetTokenBalanceInput = {\n  /** The address of the mint account. */\n  mintAddress: PublicKey;\n  /** The address of  ATA owner */\n  owner: PublicKey;\n  /** mint decimals*/\n  mintDecimals: number;\n};\n\n/**\n * @group Operations\n * @category Outputs\n */\nexport type GetTokenBalanceOutput = {\n  /** The blockchain response from sending and confirming the transaction. */\n  tokenBalance: number;\n};\n\n/**\n * @group Operations\n * @category Handlers\n */\nexport const getTokenBalanceOperationHandler: OperationHandler<GetTokenBalanceOperation> =\n  {\n    async handle(\n      operation: GetTokenBalanceOperation,\n      convergence: Convergence\n    ): Promise<GetTokenBalanceOutput> {\n      const { mintAddress, owner, mintDecimals } = operation.input;\n\n      const ataAddress = convergence.tokens().pdas().associatedTokenAccount({\n        mint: mintAddress,\n        owner,\n      });\n      try {\n        const ata = await convergence\n          .tokens()\n          .findTokenByAddress({ address: ataAddress });\n        return {\n          tokenBalance: ata.amount.basisPoints\n            .div(new BN(Math.pow(10, mintDecimals)))\n            .toNumber(),\n        };\n      } catch (e) {\n        return {\n          tokenBalance: 0,\n        };\n      }\n    },\n  };\n"],"names":["Key","getTokenBalanceOperation","useOperation","getTokenBalanceOperationHandler","handle","operation","convergence","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_operation$input","mintAddress","owner","mintDecimals","ataAddress","ata","wrap","_callee$","_context","prev","next","input","tokens","pdas","associatedTokenAccount","mint","findTokenByAddress","address","sent","abrupt","tokenBalance","amount","basisPoints","div","BN","Math","pow","toNumber","t0","stop"],"mappings":";;;;;;;;;;;;AAMA,IAAMA,GAAG,GAAG,iBAA0B,CAAA;;AAEtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACaC,wBAAwB,GACnCC,sBAAY,CAA2BF,GAAG,EAAC;;AAE7C;AACA;AACA;AACA;;AAOA;AACA;AACA;AACA;;AAUA;AACA;AACA;AACA;;AAMA;AACA;AACA;AACA;AACO,IAAMG,+BAA2E,GACtF;AACQC,EAAAA,MAAM,EAAAA,SAAAA,MAAAA,CACVC,SAAmC,EACnCC,WAAwB,EACQ;AAAA,IAAA,OAAAC,0CAAA,eAAAC,4CAAA,EAAAC,CAAAA,IAAA,UAAAC,OAAA,GAAA;MAAA,IAAAC,gBAAA,EAAAC,WAAA,EAAAC,KAAA,EAAAC,YAAA,EAAAC,UAAA,EAAAC,GAAA,CAAA;AAAA,MAAA,OAAAR,4CAAA,EAAA,CAAAS,IAAA,CAAA,SAAAC,SAAAC,QAAA,EAAA;AAAA,QAAA,OAAA,CAAA,EAAA,QAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;AAAA,UAAA,KAAA,CAAA;YAAAV,gBAAA,GACaN,SAAS,CAACiB,KAAK,EAApDV,WAAW,GAAAD,gBAAA,CAAXC,WAAW,EAAEC,KAAK,GAAAF,gBAAA,CAALE,KAAK,EAAEC,YAAY,GAAAH,gBAAA,CAAZG,YAAY,CAAA;AAElCC,YAAAA,UAAU,GAAGT,WAAW,CAACiB,MAAM,EAAE,CAACC,IAAI,EAAE,CAACC,sBAAsB,CAAC;AACpEC,cAAAA,IAAI,EAAEd,WAAW;AACjBC,cAAAA,KAAK,EAALA,KAAAA;AACF,aAAC,CAAC,CAAA;AAAAM,YAAAA,QAAA,CAAAC,IAAA,GAAA,CAAA,CAAA;AAAAD,YAAAA,QAAA,CAAAE,IAAA,GAAA,CAAA,CAAA;AAAA,YAAA,OAEkBf,WAAW,CAC1BiB,MAAM,EAAE,CACRI,kBAAkB,CAAC;AAAEC,cAAAA,OAAO,EAAEb,UAAAA;AAAW,aAAC,CAAC,CAAA;AAAA,UAAA,KAAA,CAAA;YAFxCC,GAAG,GAAAG,QAAA,CAAAU,IAAA,CAAA;YAAA,OAAAV,QAAA,CAAAW,MAAA,CAGF,QAAA,EAAA;cACLC,YAAY,EAAEf,GAAG,CAACgB,MAAM,CAACC,WAAW,CACjCC,GAAG,CAAC,IAAIC,sBAAE,CAACC,IAAI,CAACC,GAAG,CAAC,EAAE,EAAEvB,YAAY,CAAC,CAAC,CAAC,CACvCwB,QAAQ,EAAC;aACb,CAAA,CAAA;AAAA,UAAA,KAAA,CAAA;AAAAnB,YAAAA,QAAA,CAAAC,IAAA,GAAA,CAAA,CAAA;YAAAD,QAAA,CAAAoB,EAAA,GAAApB,QAAA,CAAA,OAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YAAA,OAAAA,QAAA,CAAAW,MAAA,CAEM,QAAA,EAAA;AACLC,cAAAA,YAAY,EAAE,CAAA;aACf,CAAA,CAAA;AAAA,UAAA,KAAA,EAAA,CAAA;AAAA,UAAA,KAAA,KAAA;YAAA,OAAAZ,QAAA,CAAAqB,IAAA,EAAA,CAAA;AAAA,SAAA;AAAA,OAAA,EAAA9B,OAAA,EAAA,IAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,KAAA,CAAA,CAAA,EAAA,CAAA;AAEL,GAAA;AACF;;;;;"}