Implementation
static InvokeHostFuncOpBuilder builder(XdrInvokeHostFunctionOp op) {
if (op.function.discriminant ==
XdrHostFunctionType.HOST_FUNCTION_TYPE_INVOKE_CONTRACT) {
// use builder of invoke contract op
return InvokeContractOp.builder(op);
} else if (op.function.discriminant ==
XdrHostFunctionType.HOST_FUNCTION_TYPE_INSTALL_CONTRACT_CODE) {
// use builder of install contract code op
return InstallContractCodeOp.builder(op);
} else if (op.function.discriminant ==
XdrHostFunctionType.HOST_FUNCTION_TYPE_CREATE_CONTRACT) {
if (op.function.createContractArgs != null &&
op.function.createContractArgs!.contractID.discriminant ==
XdrContractIDType.CONTRACT_ID_FROM_SOURCE_ACCOUNT) {
if (op.function.createContractArgs!.source.discriminant ==
XdrSCContractCodeType.SCCONTRACT_CODE_WASM_REF) {
// use builder of create contract op
return CreateContractOp.builder(op);
} else if (op.function.createContractArgs!.source.discriminant ==
XdrSCContractCodeType.SCCONTRACT_CODE_TOKEN) {
// use builder of deploy stellar asset contract with account op
return DeploySACWithSourceAccountOp.builder(op);
}
} else if (op.function.createContractArgs != null &&
op.function.createContractArgs!.contractID.discriminant ==
XdrContractIDType.CONTRACT_ID_FROM_ASSET) {
// use builder of deploy stellar asset contract with asset op
return DeploySACWithAssetOp.builder(op);
}
}
throw UnimplementedError();
}