import { EVM } from "@kynesyslabs/demosdk/multichain/websdk"
import { prepareXMScript } from "@kynesyslabs/demosdk/websdk/XMTransactions"
import {
Condition,
DemosWork,
prepareWeb2Step,
prepareXMStep,
ConditionalOperation,
} from "@kynesyslabs/demosdk/demoswork"
const address = "0x8A6575025DE23CB2DcB0fE679E588da9fE62f3B6"
const isMember = prepareWeb2Step({
url: `https://api.[redacted].com/v1/eth_sepolia/address/${address}`,
method: "GET",
})
// Web2 step to do a POST API call
const addMember = prepareWeb2Step({
url: `https://api.[redacted].com/v1/eth_sepolia/address/${address}?key=ckey_5a044cf0034a43089e6b308b023`,
method: "POST",
})
// XM step to send ETH
const evm = await EVM.create("https://rpc.ankr.com/eth_sepolia")
await evm.connectWallet(process.env.EVM_KEY)
const payload = await evm.prepareTransfer(address, "0.25")
const xmscript = prepareXMScript({
chain: "eth",
subchain: "sepolia",
type: "pay",
signedPayloads: [payload],
})
const releaseFunds = prepareXMStep(xmscript)
// Condition to check if the user is a member
const checkIsMember = new Condition({
value_a: isMember.output.statusCode,
operator: "==",
value_b: 200,
action: releaseFunds,
})
// Fallback condition (else)
const notMember = new Condition({
value_a: null,
operator: null,
value_b: null,
action: addMember,
})
// Creating a conditional operation
const operation = new ConditionalOperation(checkIsMember, notMember)
// Creating a DemosWork object and indexing the operation
const work = new DemosWork()
work.push(operation)