{"version":3,"file":"ProgramClient.cjs","sources":["../../../../src/plugins/programModule/ProgramClient.ts"],"sourcesContent":["import { PublicKey } from '@solana/web3.js';\n\nimport type { Convergence } from '../../Convergence';\nimport {\n  MissingGpaBuilderError,\n  ProgramNotRecognizedError,\n} from '../../errors';\nimport { Program, Cluster } from '../../types';\nimport { GpaBuilder } from '../../utils';\n\n/**\n * @group Modules\n */\nexport class ProgramClient {\n  protected programs: Program[] = [];\n  constructor(protected readonly convergence: Convergence) {}\n\n  register(program: Program): void {\n    this.programs.unshift(program);\n  }\n\n  all(overrides: Program[] = []): Program[] {\n    return [...overrides, ...this.programs];\n  }\n\n  allForCluster(cluster: Cluster, overrides: Program[] = []): Program[] {\n    return this.all(overrides).filter((program) => {\n      return program.clusterFilter?.(cluster) ?? true;\n    });\n  }\n\n  allForCurrentCluster(overrides: Program[] = []): Program[] {\n    return this.allForCluster(this.convergence.cluster, overrides);\n  }\n\n  get<T extends Program = Program>(\n    nameOrAddress: string | PublicKey,\n    overrides: Program[] = []\n  ): T {\n    const programs = this.allForCurrentCluster(overrides);\n    const program =\n      typeof nameOrAddress === 'string'\n        ? programs.find((program) => program.name === nameOrAddress)\n        : programs.find((program) => program.address.equals(nameOrAddress));\n\n    if (!program) {\n      throw new ProgramNotRecognizedError(\n        nameOrAddress,\n        this.convergence.cluster\n      );\n    }\n\n    return program as T;\n  }\n\n  public getGpaBuilder<T extends GpaBuilder>(\n    nameOrAddress: string | PublicKey,\n    overrides: Program[] = []\n  ): T {\n    const program = this.get(nameOrAddress, overrides);\n\n    if (!program.gpaResolver) {\n      throw new MissingGpaBuilderError(program);\n    }\n\n    return program.gpaResolver(this.convergence) as T;\n  }\n}\n"],"names":["ProgramClient","convergence","_classCallCheck","_defineProperty","_createClass","key","value","register","program","programs","unshift","all","overrides","arguments","length","undefined","concat","_toConsumableArray","allForCluster","cluster","filter","_program$clusterFilte","_program$clusterFilte2","clusterFilter","call","allForCurrentCluster","get","nameOrAddress","find","name","address","equals","ProgramNotRecognizedError","getGpaBuilder","gpaResolver","MissingGpaBuilderError"],"mappings":"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"}