{"version":3,"file":"findCollateralByUser.mjs","sources":["../../../../../src/plugins/collateralModule/operations/findCollateralByUser.ts"],"sourcesContent":["import { PublicKey } from '@solana/web3.js';\n\nimport { Collateral, toCollateral } from '../models';\nimport { toCollateralAccount } from '../accounts';\nimport { CollateralGpaBuilder } from '../CollateralGpaBuilder';\nimport {\n  Operation,\n  OperationHandler,\n  OperationScope,\n  useOperation,\n} from '../../../types';\nimport { Convergence } from '../../../Convergence';\nimport { collateralMintCache } from '../cache';\n\nconst Key = 'FindCollateralByUserOperation' as const;\n\n/**\n * Finds collateral account by a given owner.\n *\n * ```ts\n * const rfqs = await convergence\n *   .collateral()\n *   .findByUser({ user: user.publicKey });\n * ```\n *\n * @group Operations\n * @category Constructors\n */\nexport const findCollateralByUserOperation =\n  useOperation<FindCollateralByUserOperation>(Key);\n\n/**\n * @group Operations\n * @category Types\n */\nexport type FindCollateralByUserOperation = Operation<\n  typeof Key,\n  FindCollateralByUserInput,\n  FindCollateralByUserOutput\n>;\n\n/**\n * @group Operations\n * @category Inputs\n */\nexport type FindCollateralByUserInput = {\n  /** The address of the user. */\n  user: PublicKey;\n};\n\n/**\n * @group Operations\n * @category Outputs\n */\nexport type FindCollateralByUserOutput = Collateral;\n\n/**\n * @group Operations\n * @category Handlers\n */\nexport const findCollateralByUserOperationHandler: OperationHandler<FindCollateralByUserOperation> =\n  {\n    handle: async (\n      operation: FindCollateralByUserOperation,\n      convergence: Convergence,\n      scope: OperationScope\n    ): Promise<FindCollateralByUserOutput> => {\n      const { user } = operation.input;\n      const { programs } = scope;\n\n      const rfqProgram = convergence.programs().getRfq(programs);\n      const gpaBuilder = new CollateralGpaBuilder(\n        convergence,\n        rfqProgram.address\n      );\n      const collateral = await gpaBuilder.whereUser(user).get();\n      scope.throwIfCanceled();\n\n      const collateralMint = await collateralMintCache.get(convergence);\n\n      const collateralModel = collateral\n        .map<Collateral | null>((account) => {\n          if (account === null) {\n            return null;\n          }\n\n          try {\n            return toCollateral(toCollateralAccount(account), collateralMint);\n          } catch (e) {\n            return null;\n          }\n        })\n        .filter(\n          (collateral): collateral is Collateral => collateral !== null\n        )[0];\n\n      return collateralModel;\n    },\n  };\n"],"names":["Key","findCollateralByUserOperation","useOperation","findCollateralByUserOperationHandler","handle","_handle","_asyncToGenerator","_regeneratorRuntime","mark","_callee","operation","convergence","scope","user","programs","rfqProgram","gpaBuilder","collateral","collateralMint","collateralModel","wrap","_callee$","_context","prev","next","input","getRfq","CollateralGpaBuilder","address","whereUser","get","sent","throwIfCanceled","collateralMintCache","map","account","toCollateral","toCollateralAccount","e","filter","abrupt","stop","_x","_x2","_x3","apply","arguments"],"mappings":"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"}