From 81d9954fe194aba548feb4a12ab3eb207e9ca244 Mon Sep 17 00:00:00 2001 From: Lukas Date: Mon, 3 Mar 2025 22:05:58 +0100 Subject: [PATCH 01/11] feat(app2): add test page --- app2/src/lib/examples/transfer-arguments.ts | 75 +++++++++++++++++++ app2/src/lib/schema/transfer-arguments.ts | 0 .../src/routes/transfer/validate/+page.svelte | 72 ++++++++++++++++++ 3 files changed, 147 insertions(+) create mode 100644 app2/src/lib/examples/transfer-arguments.ts create mode 100644 app2/src/lib/schema/transfer-arguments.ts create mode 100644 app2/src/routes/transfer/validate/+page.svelte diff --git a/app2/src/lib/examples/transfer-arguments.ts b/app2/src/lib/examples/transfer-arguments.ts new file mode 100644 index 0000000000..b40dbfdaa8 --- /dev/null +++ b/app2/src/lib/examples/transfer-arguments.ts @@ -0,0 +1,75 @@ +type EVMTransferInput = { + type: "evm"; + baseToken: string; + baseAmount: string; + quoteToken: string; + quoteAmount: string; + sourceChannelId: number; + wethToken: string; + receiver: string; + ucs03address: string; +}; + +type CosmosTransferInput = { + type: "cosmos"; + baseToken: string; + baseAmount: string; + quoteToken: string; + quoteAmount: string; + sourceChannelId: number; + wethToken: null; + receiver: string; + ucs03address: string; +}; + +type AptosTransferInput = { + type: "aptos"; + baseToken: string; + baseAmount: string; + quoteToken: string; + quoteAmount: string; + sourceChannelId: number; + wethToken: null; + receiver: string; + ucs03address: string; +}; + +export const examples: { + evm: EVMTransferInput; + cosmos: CosmosTransferInput; + aptos: AptosTransferInput; +} = { + evm: { + type: "evm", + baseToken: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + baseAmount: "1000000000000000000", + quoteToken: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + quoteAmount: "1000000", + receiver: "0xd8da6bf26964af9d7eed9e03e53415d37aa96045", + sourceChannelId: 1, + ucs03address: "0x742d35cc6634c0532925a3b844bc454e4438f44e", + wethToken: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2" + }, + cosmos: { + type: "cosmos", + baseToken: "0x1234567890abcdef1234567890abcdef12345678", + baseAmount: "10000000", + quoteToken: "0xabcdef1234567890abcdef1234567890abcdef12", + quoteAmount: "10000000", + receiver: "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef", + sourceChannelId: 2, + ucs03address: "0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890", // Hex, 32 bytes + wethToken: null + }, + aptos: { + type: "aptos", + baseToken: "0x1abcdef1234567890abcdef1234567890abcdef12", + baseAmount: "1000000000000000000", + quoteToken: "0x2abcdef1234567890abcdef1234567890abcdef12", + quoteAmount: "10000000", + receiver: "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef", + sourceChannelId: 3, + ucs03address: "0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890", + wethToken: null + } +}; \ No newline at end of file diff --git a/app2/src/lib/schema/transfer-arguments.ts b/app2/src/lib/schema/transfer-arguments.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/app2/src/routes/transfer/validate/+page.svelte b/app2/src/routes/transfer/validate/+page.svelte new file mode 100644 index 0000000000..6fb2b6e1a2 --- /dev/null +++ b/app2/src/routes/transfer/validate/+page.svelte @@ -0,0 +1,72 @@ + + + +
+

Transfer Schema Validation

+

Check the console for detailed logs of the examples.

+ +
+ {#each results as result} +
+

{result.type.toUpperCase()} Example

+ {#if result.data} +

Success!

+
{JSON.stringify(result.data, (_, v) => typeof v === "bigint" ? v.toString() : v, 2)}
+ {:else if result.error} +

Error: {result.error}

+ {/if} +
+ {/each} +
+ +
+ + + +
+
\ No newline at end of file From 0ebe2b2d5c01d1e1533f1efcb62dbf018c9db5a8 Mon Sep 17 00:00:00 2001 From: Lukas Date: Mon, 3 Mar 2025 22:06:13 +0100 Subject: [PATCH 02/11] feat(app2): transfer args --- app2/src/lib/schema/transfer-arguments.ts | 96 +++++++++++++++++++++++ 1 file changed, 96 insertions(+) diff --git a/app2/src/lib/schema/transfer-arguments.ts b/app2/src/lib/schema/transfer-arguments.ts index e69de29bb2..8fa89a02bf 100644 --- a/app2/src/lib/schema/transfer-arguments.ts +++ b/app2/src/lib/schema/transfer-arguments.ts @@ -0,0 +1,96 @@ +import { Schema } from "effect"; +import { AddressAptosCanonical, AddressCosmosCanonical, AddressEvmCanonical } from "$lib/schema/address"; +import { RpcType } from "$lib/schema/chain"; +import { EVMWethToken, TokenRawAmount, TokenRawDenom } from "$lib/schema/token"; +import { ChannelId } from "$lib/schema/channel"; + +const CommonTransferFields = { + baseToken: TokenRawDenom.annotations({ + message: () => "baseToken must be a non-empty string (e.g., token address or symbol)" + }), + baseAmount: TokenRawAmount.annotations({ + message: () => "baseAmount must be a valid bigint string (e.g., '1000000')" + }), + quoteToken: TokenRawDenom.annotations({ + message: () => "quoteToken must be a non-empty string (e.g., token address or symbol)" + }), + quoteAmount: TokenRawAmount.annotations({ + message: () => "quoteAmount must be a valid bigint string (e.g., '1000000')" + }), + sourceChannelId: ChannelId.annotations({ + message: () => "sourceChannelId must be a non-negative integer" + }) +}; + +export class EVMTransfer extends Schema.Class("EVMTransfer")({ + type: RpcType.pipe( + Schema.filter((v) => v === "evm"), + Schema.annotations({ message: () => "type must be 'evm'" }) + ), + ...CommonTransferFields, + wethToken: EVMWethToken, + receiver: AddressEvmCanonical.pipe( + Schema.annotations({ + message: () => "receiver must be a valid EVM canonical address (e.g., 0x followed by 40 hex chars)" + }) + ), + ucs03address: AddressEvmCanonical.pipe( + Schema.annotations({ + message: () => "ucs03address must be a valid EVM Zkgm address (e.g., 0x followed by 40 hex chars)" + }) + ) +}) {} + +export class CosmosTransfer extends Schema.Class("CosmosTransfer")({ + type: RpcType.pipe( + Schema.filter((v) => v === "cosmos"), + Schema.annotations({ message: () => "type must be 'cosmos'" }) + ), + ...CommonTransferFields, + wethToken: Schema.Null, + receiver: AddressCosmosCanonical.pipe( + Schema.annotations({ + message: () => "receiver must be a valid Cosmos canonical address (e.g., 0x followed by 40 or 64 hex chars)" + }) + ), + ucs03address: AddressCosmosCanonical.pipe( // Changed to hex + Schema.annotations({ + message: () => "ucs03address must be a valid Cosmos Zkgm address in hex (e.g., 0x followed by 40 or 64 hex chars)" + }) + ) +}) {} + +export class AptosTransfer extends Schema.Class("AptosTransfer")({ + type: RpcType.pipe( + Schema.filter((v) => v === "aptos"), + Schema.annotations({ message: () => "type must be 'aptos'" }) + ), + ...CommonTransferFields, + wethToken: Schema.Null, + receiver: AddressAptosCanonical.pipe( + Schema.annotations({ + message: () => "receiver must be a valid Aptos canonical address (e.g., 0x followed by 64 hex chars)" + }) + ), + ucs03address: AddressAptosCanonical.pipe( + Schema.annotations({ + message: () => "ucs03address must be a valid Aptos Zkgm address (e.g., 0x followed by 64 hex chars)" + }) + ) +}) {} + +export const TransferSchema = Schema.Union( + EVMTransfer, + CosmosTransfer, + AptosTransfer +).annotations({ + identifier: "Transfer", + title: "Transfer", + description: "transfer arguments" +}); + +export type Transfer = Schema.Schema.Type; + +export type EVMTransferType = Schema.Schema.Type; +export type CosmosTransferType = Schema.Schema.Type; +export type AptosTransferType = Schema.Schema.Type; \ No newline at end of file From 2dc0dc1509b4dbd023fdbabcf1c294d2c257cf1d Mon Sep 17 00:00:00 2001 From: Lukas Date: Mon, 3 Mar 2025 22:06:55 +0100 Subject: [PATCH 03/11] fix(app): update chain, channel and token schema --- app2/src/lib/schema/chain.ts | 2 +- app2/src/lib/schema/channel.ts | 5 ++++- app2/src/lib/schema/token.ts | 4 ++++ 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/app2/src/lib/schema/chain.ts b/app2/src/lib/schema/chain.ts index cdaeb48a72..ee4fd3c23e 100644 --- a/app2/src/lib/schema/chain.ts +++ b/app2/src/lib/schema/chain.ts @@ -7,7 +7,7 @@ export const RpcType = Schema.Union( Schema.Literal("evm"), Schema.Literal("cosmos"), Schema.Literal("aptos") -) +).annotations({ message: () => "type must be 'evm', 'cosmos', or 'aptos'" }); export class ChainFeatures extends Schema.Class("ChainFeatures")({ channel_list: Schema.Boolean, diff --git a/app2/src/lib/schema/channel.ts b/app2/src/lib/schema/channel.ts index 56c851255e..560b471908 100644 --- a/app2/src/lib/schema/channel.ts +++ b/app2/src/lib/schema/channel.ts @@ -1,3 +1,6 @@ import { Schema } from "effect" -export const ChannelId = Schema.Int.pipe(Schema.brand("ChannelId")) +export const ChannelId = Schema.Int.pipe( + Schema.nonNegative({ message: () => "sourceChannelId must be non-negative" }), + Schema.brand("ChannelId") +) \ No newline at end of file diff --git a/app2/src/lib/schema/token.ts b/app2/src/lib/schema/token.ts index 85515f3078..b5a5f0367c 100644 --- a/app2/src/lib/schema/token.ts +++ b/app2/src/lib/schema/token.ts @@ -1,5 +1,9 @@ import { Schema } from "effect" import { Hex } from "$lib/schema/hex" +import {AddressEvmCanonical} from "$lib/schema/address"; export const TokenRawDenom = Hex.pipe(Schema.brand("TokenRawDenom")) export const TokenRawAmount = Schema.BigInt.pipe(Schema.brand("TokenRawAmount")) +export const EVMWethToken = AddressEvmCanonical.pipe( + Schema.annotations({ message: () => "WETH token must be a valid EVM canonical address (e.g., 0x followed by 40 hex chars)" }) +); From ce2da72db1224db30e5dd24ef0bd2065edc0b028 Mon Sep 17 00:00:00 2001 From: Lukas Date: Mon, 3 Mar 2025 22:08:01 +0100 Subject: [PATCH 04/11] chore(app2): pre commit --- app2/src/lib/examples/transfer-arguments.ts | 68 ++++++++--------- app2/src/lib/schema/chain.ts | 2 +- app2/src/lib/schema/channel.ts | 2 +- app2/src/lib/schema/token.ts | 9 ++- app2/src/lib/schema/transfer-arguments.ts | 59 ++++++++------- .../src/routes/transfer/validate/+page.svelte | 74 +++++++++---------- 6 files changed, 112 insertions(+), 102 deletions(-) diff --git a/app2/src/lib/examples/transfer-arguments.ts b/app2/src/lib/examples/transfer-arguments.ts index b40dbfdaa8..8377553072 100644 --- a/app2/src/lib/examples/transfer-arguments.ts +++ b/app2/src/lib/examples/transfer-arguments.ts @@ -1,43 +1,43 @@ type EVMTransferInput = { - type: "evm"; - baseToken: string; - baseAmount: string; - quoteToken: string; - quoteAmount: string; - sourceChannelId: number; - wethToken: string; - receiver: string; - ucs03address: string; -}; + type: "evm" + baseToken: string + baseAmount: string + quoteToken: string + quoteAmount: string + sourceChannelId: number + wethToken: string + receiver: string + ucs03address: string +} type CosmosTransferInput = { - type: "cosmos"; - baseToken: string; - baseAmount: string; - quoteToken: string; - quoteAmount: string; - sourceChannelId: number; - wethToken: null; - receiver: string; - ucs03address: string; -}; + type: "cosmos" + baseToken: string + baseAmount: string + quoteToken: string + quoteAmount: string + sourceChannelId: number + wethToken: null + receiver: string + ucs03address: string +} type AptosTransferInput = { - type: "aptos"; - baseToken: string; - baseAmount: string; - quoteToken: string; - quoteAmount: string; - sourceChannelId: number; - wethToken: null; - receiver: string; - ucs03address: string; -}; + type: "aptos" + baseToken: string + baseAmount: string + quoteToken: string + quoteAmount: string + sourceChannelId: number + wethToken: null + receiver: string + ucs03address: string +} export const examples: { - evm: EVMTransferInput; - cosmos: CosmosTransferInput; - aptos: AptosTransferInput; + evm: EVMTransferInput + cosmos: CosmosTransferInput + aptos: AptosTransferInput } = { evm: { type: "evm", @@ -72,4 +72,4 @@ export const examples: { ucs03address: "0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890", wethToken: null } -}; \ No newline at end of file +} diff --git a/app2/src/lib/schema/chain.ts b/app2/src/lib/schema/chain.ts index ee4fd3c23e..0862b365d9 100644 --- a/app2/src/lib/schema/chain.ts +++ b/app2/src/lib/schema/chain.ts @@ -7,7 +7,7 @@ export const RpcType = Schema.Union( Schema.Literal("evm"), Schema.Literal("cosmos"), Schema.Literal("aptos") -).annotations({ message: () => "type must be 'evm', 'cosmos', or 'aptos'" }); +).annotations({ message: () => "type must be 'evm', 'cosmos', or 'aptos'" }) export class ChainFeatures extends Schema.Class("ChainFeatures")({ channel_list: Schema.Boolean, diff --git a/app2/src/lib/schema/channel.ts b/app2/src/lib/schema/channel.ts index 560b471908..6ee6368c53 100644 --- a/app2/src/lib/schema/channel.ts +++ b/app2/src/lib/schema/channel.ts @@ -3,4 +3,4 @@ import { Schema } from "effect" export const ChannelId = Schema.Int.pipe( Schema.nonNegative({ message: () => "sourceChannelId must be non-negative" }), Schema.brand("ChannelId") -) \ No newline at end of file +) diff --git a/app2/src/lib/schema/token.ts b/app2/src/lib/schema/token.ts index b5a5f0367c..ab07ef3473 100644 --- a/app2/src/lib/schema/token.ts +++ b/app2/src/lib/schema/token.ts @@ -1,9 +1,12 @@ import { Schema } from "effect" import { Hex } from "$lib/schema/hex" -import {AddressEvmCanonical} from "$lib/schema/address"; +import { AddressEvmCanonical } from "$lib/schema/address" export const TokenRawDenom = Hex.pipe(Schema.brand("TokenRawDenom")) export const TokenRawAmount = Schema.BigInt.pipe(Schema.brand("TokenRawAmount")) export const EVMWethToken = AddressEvmCanonical.pipe( - Schema.annotations({ message: () => "WETH token must be a valid EVM canonical address (e.g., 0x followed by 40 hex chars)" }) -); + Schema.annotations({ + message: () => + "WETH token must be a valid EVM canonical address (e.g., 0x followed by 40 hex chars)" + }) +) diff --git a/app2/src/lib/schema/transfer-arguments.ts b/app2/src/lib/schema/transfer-arguments.ts index 8fa89a02bf..b1241cab80 100644 --- a/app2/src/lib/schema/transfer-arguments.ts +++ b/app2/src/lib/schema/transfer-arguments.ts @@ -1,8 +1,12 @@ -import { Schema } from "effect"; -import { AddressAptosCanonical, AddressCosmosCanonical, AddressEvmCanonical } from "$lib/schema/address"; -import { RpcType } from "$lib/schema/chain"; -import { EVMWethToken, TokenRawAmount, TokenRawDenom } from "$lib/schema/token"; -import { ChannelId } from "$lib/schema/channel"; +import { Schema } from "effect" +import { + AddressAptosCanonical, + AddressCosmosCanonical, + AddressEvmCanonical +} from "$lib/schema/address" +import { RpcType } from "$lib/schema/chain" +import { EVMWethToken, TokenRawAmount, TokenRawDenom } from "$lib/schema/token" +import { ChannelId } from "$lib/schema/channel" const CommonTransferFields = { baseToken: TokenRawDenom.annotations({ @@ -20,77 +24,80 @@ const CommonTransferFields = { sourceChannelId: ChannelId.annotations({ message: () => "sourceChannelId must be a non-negative integer" }) -}; +} export class EVMTransfer extends Schema.Class("EVMTransfer")({ type: RpcType.pipe( - Schema.filter((v) => v === "evm"), + Schema.filter(v => v === "evm"), Schema.annotations({ message: () => "type must be 'evm'" }) ), ...CommonTransferFields, wethToken: EVMWethToken, receiver: AddressEvmCanonical.pipe( Schema.annotations({ - message: () => "receiver must be a valid EVM canonical address (e.g., 0x followed by 40 hex chars)" + message: () => + "receiver must be a valid EVM canonical address (e.g., 0x followed by 40 hex chars)" }) ), ucs03address: AddressEvmCanonical.pipe( Schema.annotations({ - message: () => "ucs03address must be a valid EVM Zkgm address (e.g., 0x followed by 40 hex chars)" + message: () => + "ucs03address must be a valid EVM Zkgm address (e.g., 0x followed by 40 hex chars)" }) ) }) {} export class CosmosTransfer extends Schema.Class("CosmosTransfer")({ type: RpcType.pipe( - Schema.filter((v) => v === "cosmos"), + Schema.filter(v => v === "cosmos"), Schema.annotations({ message: () => "type must be 'cosmos'" }) ), ...CommonTransferFields, wethToken: Schema.Null, receiver: AddressCosmosCanonical.pipe( Schema.annotations({ - message: () => "receiver must be a valid Cosmos canonical address (e.g., 0x followed by 40 or 64 hex chars)" + message: () => + "receiver must be a valid Cosmos canonical address (e.g., 0x followed by 40 or 64 hex chars)" }) ), - ucs03address: AddressCosmosCanonical.pipe( // Changed to hex + ucs03address: AddressCosmosCanonical.pipe( + // Changed to hex Schema.annotations({ - message: () => "ucs03address must be a valid Cosmos Zkgm address in hex (e.g., 0x followed by 40 or 64 hex chars)" + message: () => + "ucs03address must be a valid Cosmos Zkgm address in hex (e.g., 0x followed by 40 or 64 hex chars)" }) ) }) {} export class AptosTransfer extends Schema.Class("AptosTransfer")({ type: RpcType.pipe( - Schema.filter((v) => v === "aptos"), + Schema.filter(v => v === "aptos"), Schema.annotations({ message: () => "type must be 'aptos'" }) ), ...CommonTransferFields, wethToken: Schema.Null, receiver: AddressAptosCanonical.pipe( Schema.annotations({ - message: () => "receiver must be a valid Aptos canonical address (e.g., 0x followed by 64 hex chars)" + message: () => + "receiver must be a valid Aptos canonical address (e.g., 0x followed by 64 hex chars)" }) ), ucs03address: AddressAptosCanonical.pipe( Schema.annotations({ - message: () => "ucs03address must be a valid Aptos Zkgm address (e.g., 0x followed by 64 hex chars)" + message: () => + "ucs03address must be a valid Aptos Zkgm address (e.g., 0x followed by 64 hex chars)" }) ) }) {} -export const TransferSchema = Schema.Union( - EVMTransfer, - CosmosTransfer, - AptosTransfer -).annotations({ +export const TransferSchema = Schema.Union(EVMTransfer, CosmosTransfer, AptosTransfer).annotations({ identifier: "Transfer", title: "Transfer", description: "transfer arguments" -}); +}) -export type Transfer = Schema.Schema.Type; +export type Transfer = Schema.Schema.Type -export type EVMTransferType = Schema.Schema.Type; -export type CosmosTransferType = Schema.Schema.Type; -export type AptosTransferType = Schema.Schema.Type; \ No newline at end of file +export type EVMTransferType = Schema.Schema.Type +export type CosmosTransferType = Schema.Schema.Type +export type AptosTransferType = Schema.Schema.Type diff --git a/app2/src/routes/transfer/validate/+page.svelte b/app2/src/routes/transfer/validate/+page.svelte index 6fb2b6e1a2..4d294b4edc 100644 --- a/app2/src/routes/transfer/validate/+page.svelte +++ b/app2/src/routes/transfer/validate/+page.svelte @@ -1,49 +1,49 @@
From 0947ebeb3265cdb4fc0e4fc712cf5964156cd0d0 Mon Sep 17 00:00:00 2001 From: Lukas Date: Tue, 4 Mar 2025 00:05:15 +0100 Subject: [PATCH 05/11] feat(app2): update reciever --- app2/src/lib/schema/address.ts | 9 +++++++++ app2/src/lib/schema/channel.ts | 2 +- app2/src/lib/schema/transfer-arguments.ts | 24 +++++------------------ 3 files changed, 15 insertions(+), 20 deletions(-) diff --git a/app2/src/lib/schema/address.ts b/app2/src/lib/schema/address.ts index 4533804923..cf9473438c 100644 --- a/app2/src/lib/schema/address.ts +++ b/app2/src/lib/schema/address.ts @@ -24,3 +24,12 @@ export const AddressAptosCanonical = AddressCanonicalBytes.pipe( ) export const AddressAptosDisplay = AddressAptosCanonical export const AddressAptosZkgm = AddressAptosCanonical + +export const ReceiverAddress = Schema.Union( + AddressCosmosCanonical, + AddressEvmCanonical, + AddressAptosCanonical +).annotations({ + identifier: "ReceiverAddress", + message: () => "receiver must be a valid address (e.g., cosmos1... or 0x...)" +}) diff --git a/app2/src/lib/schema/channel.ts b/app2/src/lib/schema/channel.ts index 6ee6368c53..0d1f7525a2 100644 --- a/app2/src/lib/schema/channel.ts +++ b/app2/src/lib/schema/channel.ts @@ -1,6 +1,6 @@ import { Schema } from "effect" export const ChannelId = Schema.Int.pipe( - Schema.nonNegative({ message: () => "sourceChannelId must be non-negative" }), + Schema.nonNegative({ message: () => "ChannelId must be non-negative" }), Schema.brand("ChannelId") ) diff --git a/app2/src/lib/schema/transfer-arguments.ts b/app2/src/lib/schema/transfer-arguments.ts index b1241cab80..df9765b4f4 100644 --- a/app2/src/lib/schema/transfer-arguments.ts +++ b/app2/src/lib/schema/transfer-arguments.ts @@ -2,7 +2,8 @@ import { Schema } from "effect" import { AddressAptosCanonical, AddressCosmosCanonical, - AddressEvmCanonical + AddressEvmCanonical, + ReceiverAddress } from "$lib/schema/address" import { RpcType } from "$lib/schema/chain" import { EVMWethToken, TokenRawAmount, TokenRawDenom } from "$lib/schema/token" @@ -33,12 +34,7 @@ export class EVMTransfer extends Schema.Class("EVMTransfer")({ ), ...CommonTransferFields, wethToken: EVMWethToken, - receiver: AddressEvmCanonical.pipe( - Schema.annotations({ - message: () => - "receiver must be a valid EVM canonical address (e.g., 0x followed by 40 hex chars)" - }) - ), + receiver: ReceiverAddress, ucs03address: AddressEvmCanonical.pipe( Schema.annotations({ message: () => @@ -54,12 +50,7 @@ export class CosmosTransfer extends Schema.Class("CosmosTransfer ), ...CommonTransferFields, wethToken: Schema.Null, - receiver: AddressCosmosCanonical.pipe( - Schema.annotations({ - message: () => - "receiver must be a valid Cosmos canonical address (e.g., 0x followed by 40 or 64 hex chars)" - }) - ), + receiver: ReceiverAddress, ucs03address: AddressCosmosCanonical.pipe( // Changed to hex Schema.annotations({ @@ -76,12 +67,7 @@ export class AptosTransfer extends Schema.Class("AptosTransfer")( ), ...CommonTransferFields, wethToken: Schema.Null, - receiver: AddressAptosCanonical.pipe( - Schema.annotations({ - message: () => - "receiver must be a valid Aptos canonical address (e.g., 0x followed by 64 hex chars)" - }) - ), + receiver: ReceiverAddress, ucs03address: AddressAptosCanonical.pipe( Schema.annotations({ message: () => From 8ab43885e108a9edce34fc9be8cb7d4da13dbc52 Mon Sep 17 00:00:00 2001 From: Lukas Date: Tue, 4 Mar 2025 00:05:45 +0100 Subject: [PATCH 06/11] fix(app2): user state in page --- app2/src/routes/transfer/validate/+page.svelte | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app2/src/routes/transfer/validate/+page.svelte b/app2/src/routes/transfer/validate/+page.svelte index 4d294b4edc..d045e55a03 100644 --- a/app2/src/routes/transfer/validate/+page.svelte +++ b/app2/src/routes/transfer/validate/+page.svelte @@ -1,4 +1,3 @@ -