{"version":3,"sources":["../src/runtime/contractBase.ts"],"names":[],"mappings":";AAsFO,SAAS,eAA2C,SAAA,EAAiB;AAC1E,EAAA,OAAO,SAAA;AACT","file":"chunk-U6C5QZHE.mjs","sourcesContent":["import { Transcoder } from \"./types\";\n\nexport type MapEntryDescriptor = {\n  mode: \"mapEntry\";\n  input: Transcoder<any>;\n  output: Transcoder<any>;\n};\n\nexport type VariableDescriptor = {\n  mode: \"variable\";\n  input: Transcoder<void>;\n  output: Transcoder<any>;\n};\n\nexport type ReadonlyFunctionDescriptor = {\n  mode: \"readonly\";\n  input: readonly { name: string; type: Transcoder<any> }[];\n  output: Transcoder<any>;\n};\n\nexport type OpenCallFunctionDescriptor = {\n  mode: \"public\";\n  input: readonly { name: string; type: Transcoder<any> }[];\n  output: Transcoder<any>;\n};\n\nexport type ContractEntryDescriptor =\n  | MapEntryDescriptor\n  | VariableDescriptor\n  | ReadonlyFunctionDescriptor\n  | OpenCallFunctionDescriptor;\n\nexport type ParametersOfDescriptor<D> = D extends ContractEntryDescriptor\n  ? D extends {\n      input: infer Input;\n    }\n    ? Input extends readonly { name: string; type: Transcoder<any> }[]\n      ? {\n          [K in keyof Input]: Input[K] extends { type: Transcoder<infer T> }\n            ? T\n            : never;\n        }\n      : never\n    : never\n  : never;\n\ntype ParameterObjOfDescriptorPickType<T, N> = T extends {\n  name: N;\n  type: Transcoder<infer R>;\n}\n  ? R\n  : never;\n\nexport type ParameterObjOfDescriptor<D> = D extends ContractEntryDescriptor\n  ? D extends {\n      input: infer Input;\n    }\n    ? Input extends readonly { name: string; type: Transcoder<any> }[]\n      ? {\n          [K in Input[number][\"name\"]]: ParameterObjOfDescriptorPickType<\n            Input[number],\n            K\n          >;\n        }\n      : Input extends Transcoder<infer U>\n      ? U\n      : never\n    : never\n  : never;\n\nexport type ReturnTypeOfDescriptor<D> = D extends ContractEntryDescriptor\n  ? D extends {\n      output: infer Output;\n    }\n    ? Output extends Transcoder<infer T>\n      ? T\n      : never\n    : never\n  : never;\n\nexport type ContractBaseType = {\n  [contracts: string]: {\n    [func: string]: ContractEntryDescriptor;\n  };\n};\n\nexport function defineContract<T extends ContractBaseType>(contracts: T): T {\n  return contracts;\n}\n"]}