Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore(typescript-sdk): added quoteToken value control #3645

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions typescript-sdk/playground/babylon-to-holesky.ts
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,10 @@ if (quoteToken.isErr()) {
consola.error(quoteToken.error)
process.exit(1)
}
if (quoteToken.value.type === "NO_QUOTE_AVAILABLE") {
consola.info("no quote token available")
process.exit(1)
}

consola.info("quote token", quoteToken.value)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,10 @@ if (quoteToken.isErr()) {
consola.info("could not get quote token")
process.exit(1)
}
if (quoteToken.value.type === "NO_QUOTE_AVAILABLE") {
consola.info("no quote token available")
process.exit(1)
}

console.log(JSON.stringify(quoteToken.value))

Expand All @@ -56,6 +60,10 @@ if (quoteToken2.isErr()) {
consola.info("could not get quote token")
process.exit(1)
}
if (quoteToken2.value.type === "NO_QUOTE_AVAILABLE") {
consola.info("no quote token available")
process.exit(1)
}

console.log(JSON.stringify(quoteToken2.value))

Expand Down
4 changes: 4 additions & 0 deletions typescript-sdk/playground/holesky-to-babylon.ts
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,10 @@ if (quoteToken.isErr()) {
consola.error(quoteToken.error)
process.exit(1)
}
if (quoteToken.value.type === "NO_QUOTE_AVAILABLE") {
consola.info("no quote token available")
process.exit(1)
}

consola.info("quote token", quoteToken.value)

Expand Down
109 changes: 109 additions & 0 deletions typescript-sdk/playground/holesky-to-osmosis.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
import { http } from "viem"
import { parseArgs } from "node:util"
import { consola } from "scripts/logger"
import { bech32AddressToHex, createUnionClient } from "#mod.ts"
import {
getChannelInfo,
getQuoteToken,
getRecommendedChannels
} from "#query/offchain/ucs03-channels"
import { privateKeyToAccount } from "viem/accounts"

// hack to encode bigints to json
declare global {
interface BigInt {
toJSON: () => string
}
}

if (!BigInt.prototype.toJSON) {
Object.defineProperty(BigInt.prototype, "toJSON", {
value: function () {
return this.toString()
},
writable: true,
configurable: true
})
}
// end hack

const cliArgs = parseArgs({
args: process.argv.slice(2),
options: {
"private-key": { type: "string" },
"estimate-gas": { type: "boolean", default: false }
}
})

const PRIVATE_KEY = cliArgs.values["private-key"]
const STARS_DENOM = "0xa3570de1c0603051a08a5b2aa1d9ddd4e4e5339d" // wrapped STARS on holesky
const AMOUNT = 1n
const RECEIVER = bech32AddressToHex({ address: "osmo14vcpe0yt8xdzaapm8yy6tm26sf45rdgu2egh5w" })
const SOURCE_CHAIN_ID = "17000"
const DESTINATION_CHAIN_ID = "osmo-test-5"

const channels = await getRecommendedChannels()

const channel = getChannelInfo(SOURCE_CHAIN_ID, DESTINATION_CHAIN_ID, channels)
if (channel === null) {
consola.info("no channel found")
process.exit(1)
}

consola.info("channel", channel)

const quoteToken = await getQuoteToken(SOURCE_CHAIN_ID, STARS_DENOM, channel)
if (quoteToken.isErr()) {
consola.info("could not get quote token")
consola.error(quoteToken.error)
process.exit(1)
}

if (quoteToken.value.type === "NO_QUOTE_AVAILABLE") {
consola.info("no quote token available")
process.exit(1)
}

consola.info("quote token", quoteToken.value)

const transferArgs = {
baseToken: STARS_DENOM,
baseAmount: AMOUNT,
quoteToken: quoteToken.value.quote_token,
quoteAmount: AMOUNT,
receiver: RECEIVER,
sourceChannelId: channel.source_channel_id,
ucs03address: `0x${channel.source_port_id}`
}

consola.info("transfer args", transferArgs)

if (!PRIVATE_KEY) {
consola.error("no private key provided")
process.exit(1)
}

const evmClient = createUnionClient({
chainId: SOURCE_CHAIN_ID,
account: privateKeyToAccount(`0x${PRIVATE_KEY}`),
transport: http("https://rpc.17000.holesky.chain.kitchen")
})

const approveResponse = await evmClient.approveErc20(transferArgs)

if (approveResponse.isErr()) {
consola.error(approveResponse.error)
process.exit(1)
}

consola.info("approval tx hash", approveResponse.value)

const transfer = await evmClient.transferAsset(transferArgs)

if (transfer.isErr()) {
consola.info("transfer submission failed")
consola.error(transfer.error)
process.exit(1)
}

consola.info("transfer tx hash", transfer.value)
5 changes: 5 additions & 0 deletions typescript-sdk/playground/holesky-to-sepolia.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,11 @@ if (quoteToken.isErr()) {
process.exit(1)
}

if (quoteToken.value.type === "NO_QUOTE_AVAILABLE") {
consola.info("no quote token available")
process.exit(1)
}

consola.info("quote token", quoteToken.value)

const transferArgs = {
Expand Down
6 changes: 5 additions & 1 deletion typescript-sdk/playground/osmosis-to-holesky.ts
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ const cliArgs = parseArgs({
const PRIVATE_KEY = cliArgs.values["private-key"]
const STARS_DENOM = "uosmo"
const AMOUNT = 17n
const RECEIVER = "0x153919669Edc8A5D0c8D1E4507c9CE60435A1177"
const RECEIVER = "0x8478B37E983F520dBCB5d7D3aAD8276B82631aBd"
const SOURCE_CHAIN_ID = "osmo-test-5"
const DESTINATION_CHAIN_ID = "17000"

Expand All @@ -58,6 +58,10 @@ if (quoteToken.isErr()) {
consola.error(quoteToken.error)
process.exit(1)
}
if (quoteToken.value.type === "NO_QUOTE_AVAILABLE") {
consola.info("no quote token available")
process.exit(1)
}

consola.info("quote token", quoteToken.value)

Expand Down
5 changes: 4 additions & 1 deletion typescript-sdk/playground/sepolia-to-holesky.ts
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,10 @@ if (quoteToken.isErr()) {
consola.error("could not get quote token")
process.exit(1)
}

if (quoteToken.value.type === "NO_QUOTE_AVAILABLE") {
consola.info("no quote token available")
process.exit(1)
}
consola.info("quote token", quoteToken.value)

const transferArgs = {
Expand Down
5 changes: 4 additions & 1 deletion typescript-sdk/playground/stargaze-to-holesky.ts
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,10 @@ if (quoteToken.isErr()) {
consola.error(quoteToken.error)
process.exit(1)
}

if (quoteToken.value.type === "NO_QUOTE_AVAILABLE") {
consola.info("no quote token available")
process.exit(1)
}
consola.info("quote token", quoteToken.value)

if (!PRIVATE_KEY) {
Expand Down
Loading