{"version":3,"sources":["../src/runtime/composeTxOptions.ts"],"names":[],"mappings":";;;AA+CO,IAAM,uBAAA,GACX,CACE,SAAA,EACA,cAAA,KAIF,CAAC,cAAc,YAAA,EAAc,IAAA,EAAM,OAAA,GAAU,EAAC,KAAM;AAClD,EAAA,MAAM,kBAAA,GAAqB,SAAA,CAAU,YAAY,CAAA,CAAE,YAAY,CAAA;AAE/D,EAAA,IAAI,kBAAA,CAAmB,SAAS,QAAA,EAAU;AACxC,IAAA,MAAM,IAAI,KAAA;AAAA,MACR,CAAA,mCAAA,EAAsC,YAAY,CAAA,CAAA,EAAI,YAAY,CAAA,4BAAA;AAAA,KACpE;AAAA,EACF;AAEA,EAAA,MAAM,WAAA,GAAc,mBAAmB,KAAA,CAAM,GAAA;AAAA,IAAI,CAAC,QAChD,GAAA,CAAI,IAAA,CAAK,OAAO,IAAA,CAAK,GAAA,CAAI,IAAI,CAAC;AAAA,GAChC;AAEA,EAAA,MAAM,oBACJ,OAAA,CAAQ,cAAA,IAAkB,IAAA,GACtB,iBAAA,CAAkB,QAClB,iBAAA,CAAkB,IAAA;AACxB,EAAA,MAAM,iBAAiB,OAAA,CAAQ,cAAA;AAE/B,EAAA,MAAM,eAAA,GACJ,OAAA,CAAQ,eAAA,IAAmB,cAAA,CAAe,eAAA;AAC5C,EAAA,IAAI,mBAAmB,IAAA,EAAM;AAC3B,IAAA,MAAM,IAAI,MAAM,qDAAqD,CAAA;AAAA,EACvE;AAEA,EAAA,OAAO;AAAA,IACL,eAAA,EAAiB,eAAA;AAAA,IACjB,YAAA;AAAA,IACA,YAAA;AAAA,IACA,YAAA,EAAc,WAAA;AAAA,IACd,YAAY,UAAA,CAAW,GAAA;AAAA,IACvB,iBAAA;AAAA,IACA;AAAA,GACF;AACF","file":"chunk-BSJZD4WE.mjs","sourcesContent":["import {\n  AnchorMode,\n  type ClarityValue,\n  type FungiblePostCondition,\n  type FungiblePostConditionWire,\n  PostConditionMode,\n  type StxPostCondition,\n  type STXPostConditionWire,\n} from \"@stacks/transactions\";\nimport type { StringOnly } from \"../utils/helpers\";\nimport type {\n  ContractBaseType,\n  OpenCallFunctionDescriptor,\n  ParameterObjOfDescriptor,\n} from \"./contractBase\";\n\ntype PostConditionPlain = FungiblePostCondition | StxPostCondition;\ntype PostConditionWire = FungiblePostConditionWire | STXPostConditionWire;\ntype PostCondition = PostConditionPlain | PostConditionWire;\n\nexport interface ContractCallOptions<PC extends PostCondition> {\n  contractAddress: string;\n  contractName: string;\n  functionName: string;\n  functionArgs: ClarityValue[];\n  anchorMode: AnchorMode;\n  postConditionMode: PostConditionMode;\n  postConditions?: PC[];\n}\n\nexport type ComposeTxOptionsFn<Contracts extends ContractBaseType> = <\n  T extends StringOnly<keyof Contracts>,\n  F extends StringOnly<keyof Contracts[T]>,\n  Descriptor extends Contracts[T][F],\n  PC extends PostCondition\n>(\n  contractName: T,\n  functionName: F,\n  args: Descriptor extends OpenCallFunctionDescriptor\n    ? ParameterObjOfDescriptor<Descriptor>\n    : never,\n  options?: {\n    deployerAddress?: string;\n    postConditions?: PC[];\n  }\n) => ContractCallOptions<PC>;\n\nexport const composeTxOptionsFactory =\n  <T extends ContractBaseType>(\n    contracts: T,\n    factoryOptions: {\n      deployerAddress?: string;\n    }\n  ): ComposeTxOptionsFn<T> =>\n  (contractName, functionName, args, options = {}) => {\n    const functionDescriptor = contracts[contractName][functionName];\n\n    if (functionDescriptor.mode !== \"public\") {\n      throw new Error(\n        `[composeTxOptionsFactory] function ${contractName}.${functionName} should be a public function`\n      );\n    }\n\n    const clarityArgs = functionDescriptor.input.map((arg) =>\n      arg.type.encode(args[arg.name])\n    );\n\n    const postConditionMode =\n      options.postConditions == null\n        ? PostConditionMode.Allow\n        : PostConditionMode.Deny;\n    const postConditions = options.postConditions;\n\n    const deployerAddress =\n      options.deployerAddress ?? factoryOptions.deployerAddress;\n    if (deployerAddress == null) {\n      throw new Error(\"[composeTxOptionsFactory] deployer address required\");\n    }\n\n    return {\n      contractAddress: deployerAddress,\n      contractName,\n      functionName,\n      functionArgs: clarityArgs,\n      anchorMode: AnchorMode.Any,\n      postConditionMode,\n      postConditions,\n    };\n  };\n"]}