diff --git a/apps/backend-relayer/prisma/migrations/20260413000000_add_token_asset_issuer/migration.sql b/apps/backend-relayer/prisma/migrations/20260413000000_add_token_asset_issuer/migration.sql new file mode 100644 index 0000000..60ad3e4 --- /dev/null +++ b/apps/backend-relayer/prisma/migrations/20260413000000_add_token_asset_issuer/migration.sql @@ -0,0 +1,2 @@ +-- AlterTable +ALTER TABLE "Token" ADD COLUMN "assetIssuer" TEXT; diff --git a/apps/backend-relayer/prisma/schema.prisma b/apps/backend-relayer/prisma/schema.prisma index d4c46e1..0e14944 100644 --- a/apps/backend-relayer/prisma/schema.prisma +++ b/apps/backend-relayer/prisma/schema.prisma @@ -83,6 +83,10 @@ model Token { kind TokenKind @default(ERC20) decimals Int + /// Stellar classic-asset issuer (G-strkey). Populated only for SAC tokens; + /// null for NATIVE/ERC20/SEP41. Asset code is read from `symbol`. + assetIssuer String? + chainUid String chain Chain @relation(fields: [chainUid], references: [id], onDelete: Cascade) diff --git a/apps/backend-relayer/src/chain-adapters/adapters/chain-adapter.abstract.ts b/apps/backend-relayer/src/chain-adapters/adapters/chain-adapter.abstract.ts index 4368be1..9709a58 100644 --- a/apps/backend-relayer/src/chain-adapters/adapters/chain-adapter.abstract.ts +++ b/apps/backend-relayer/src/chain-adapters/adapters/chain-adapter.abstract.ts @@ -95,9 +95,11 @@ export abstract class ChainAdapter { abstract orderTypeHash(orderParams: T_OrderParams): string; + // Signature is a `0x`-hex blob on EVM (EIP-712) and a base64 (or `0x`-hex) + // SEP-43-style signature on Stellar. Narrow per-adapter as needed. abstract verifyOrderSignature( address: ChainAddress, orderHash: `0x${string}`, - signature: `0x${string}`, + signature: string, ): boolean; } diff --git a/apps/backend-relayer/src/chain-adapters/adapters/evm-chain-adapter.ts b/apps/backend-relayer/src/chain-adapters/adapters/evm-chain-adapter.ts index f43e495..9cd02e2 100644 --- a/apps/backend-relayer/src/chain-adapters/adapters/evm-chain-adapter.ts +++ b/apps/backend-relayer/src/chain-adapters/adapters/evm-chain-adapter.ts @@ -25,6 +25,8 @@ import { @Injectable() export class EvmChainAdapter extends ChainAdapter { private static readonly EVM_ADDRESS_RE = /^0x[a-fA-F0-9]{40}$/; + // ECDSA signature: r(32) + s(32) + v(1) = 65 bytes → 130 hex chars. + private static readonly EVM_SIG_RE = /^0x[a-fA-F0-9]{130}$/; constructor(private readonly viem: ViemService) { super(); @@ -41,6 +43,14 @@ export class EvmChainAdapter extends ChainAdapter { } } + private assertLocalSignature(value: string, field: string): void { + if (!EvmChainAdapter.EVM_SIG_RE.test(value)) { + throw new Error( + `${field}: expected ECDSA signature (0x + 130 hex), got "${value}"`, + ); + } + } + getCreateAdRequestContractDetails( data: T_CreateAdRequest, ): Promise { @@ -183,13 +193,14 @@ export class EvmChainAdapter extends ChainAdapter { verifyOrderSignature( address: ChainAddress, orderHash: `0x${string}`, - signature: `0x${string}`, + signature: string, ): boolean { this.assertLocalAddress(address, 'address'); + this.assertLocalSignature(signature, 'signature'); return this.viem.verifyOrderSignature( address as `0x${string}`, orderHash, - signature, + signature as `0x${string}`, ); } } diff --git a/apps/backend-relayer/src/chain-adapters/adapters/stellar-chain-adapter.ts b/apps/backend-relayer/src/chain-adapters/adapters/stellar-chain-adapter.ts index 283cf1c..a394e26 100644 --- a/apps/backend-relayer/src/chain-adapters/adapters/stellar-chain-adapter.ts +++ b/apps/backend-relayer/src/chain-adapters/adapters/stellar-chain-adapter.ts @@ -184,7 +184,7 @@ export class StellarChainAdapter extends ChainAdapter { verifyOrderSignature( address: ChainAddress, orderHash: `0x${string}`, - signature: `0x${string}`, + signature: string, ): boolean { this.assertLocalAddress(address, 'address'); return this.stellar.verifyOrderSignature( diff --git a/apps/backend-relayer/src/main.ts b/apps/backend-relayer/src/main.ts index da7c039..c55010f 100644 --- a/apps/backend-relayer/src/main.ts +++ b/apps/backend-relayer/src/main.ts @@ -26,7 +26,15 @@ async function bootstrap() { app.use(morgan('tiny')); app.use(express.json({ limit: 5 << 20 })); - app.useGlobalPipes(new ValidationPipe({ transform: true })); + // whitelist drops unknown fields; forbidNonWhitelisted turns them into 400s + // so clients get loud feedback on typos instead of silent data loss. + app.useGlobalPipes( + new ValidationPipe({ + transform: true, + whitelist: true, + forbidNonWhitelisted: true, + }), + ); app.useGlobalFilters(new GlobalExceptionFilter()); const swaggerOptions = new DocumentBuilder() diff --git a/apps/backend-relayer/src/modules/admin/admin.controller.spec.ts b/apps/backend-relayer/src/modules/admin/admin.controller.spec.ts index 48951f4..b91153d 100644 --- a/apps/backend-relayer/src/modules/admin/admin.controller.spec.ts +++ b/apps/backend-relayer/src/modules/admin/admin.controller.spec.ts @@ -144,7 +144,7 @@ describe('AdminController (unit)', () => { chain: {} as any, }; - const created = { id: 'tok-1', ...dto }; + const created = { id: 'tok-1', assetIssuer: null, ...dto }; const spy = jest .spyOn(service, 'createToken') diff --git a/apps/backend-relayer/src/modules/ads/ad.service.ts b/apps/backend-relayer/src/modules/ads/ad.service.ts index b80cf21..f12e8da 100644 --- a/apps/backend-relayer/src/modules/ads/ad.service.ts +++ b/apps/backend-relayer/src/modules/ads/ad.service.ts @@ -116,22 +116,24 @@ export class AdsService { maxAmount: true, adToken: { select: { - chain: { select: { chainId: true } }, + chain: { select: { chainId: true, kind: true } }, address: true, symbol: true, name: true, decimals: true, kind: true, + assetIssuer: true, }, }, orderToken: { select: { - chain: { select: { chainId: true } }, + chain: { select: { chainId: true, kind: true } }, address: true, symbol: true, name: true, decimals: true, kind: true, + assetIssuer: true, }, }, status: true, @@ -197,7 +199,9 @@ export class AdsService { address: i.adToken.address, decimals: i.adToken.decimals, chainId: i.adToken.chain.chainId.toString(), + chainKind: i.adToken.chain.kind as string, kind: i.adToken.kind as string, + assetIssuer: i.adToken.assetIssuer, }, orderToken: { name: i.orderToken.name, @@ -205,7 +209,9 @@ export class AdsService { address: i.orderToken.address, decimals: i.orderToken.decimals, chainId: i.orderToken.chain.chainId.toString(), + chainKind: i.orderToken.chain.kind as string, kind: i.orderToken.kind as string, + assetIssuer: i.orderToken.assetIssuer, }, }; }); @@ -244,22 +250,24 @@ export class AdsService { metadata: true, adToken: { select: { - chain: { select: { chainId: true } }, + chain: { select: { chainId: true, kind: true } }, address: true, symbol: true, name: true, decimals: true, kind: true, + assetIssuer: true, }, }, orderToken: { select: { - chain: { select: { chainId: true } }, + chain: { select: { chainId: true, kind: true } }, address: true, symbol: true, name: true, decimals: true, kind: true, + assetIssuer: true, }, }, createdAt: true, @@ -301,7 +309,9 @@ export class AdsService { address: ad.adToken.address, decimals: ad.adToken.decimals, chainId: ad.adToken.chain.chainId.toString(), + chainKind: ad.adToken.chain.kind as string, kind: ad.adToken.kind as string, + assetIssuer: ad.adToken.assetIssuer, }, orderToken: { name: ad.orderToken.name, @@ -309,7 +319,9 @@ export class AdsService { address: ad.orderToken.address, decimals: ad.orderToken.decimals, chainId: ad.orderToken.chain.chainId.toString(), + chainKind: ad.orderToken.chain.kind as string, kind: ad.orderToken.kind as string, + assetIssuer: ad.orderToken.assetIssuer, }, metadata: ad.metadata ?? null, createdAt: ad.createdAt.toISOString(), @@ -497,7 +509,10 @@ export class AdsService { return reqContractDetails; }); - return requestDetails; + return { + ...requestDetails, + chainKind: route.adToken.chain.kind as string, + }; } catch (e) { if (e instanceof Error) { if (e instanceof HttpException) throw e; @@ -618,7 +633,10 @@ export class AdsService { return entry; }); - return reqContractDetails; + return { + ...reqContractDetails, + chainKind: ad.route.adToken.chain.kind as string, + }; } catch (e) { if (e instanceof Error) { if (e instanceof HttpException) throw e; @@ -762,7 +780,10 @@ export class AdsService { } }); - return reqContractDetails; + return { + ...reqContractDetails, + chainKind: ad.route.adToken.chain.kind as string, + }; } catch (e) { if (e instanceof Error) { if (e instanceof HttpException) throw e; @@ -975,7 +996,10 @@ export class AdsService { } }); - return reqContractDetails; + return { + ...reqContractDetails, + chainKind: ad.route.adToken.chain.kind as string, + }; } catch (e) { if (e instanceof Error) { if (e instanceof HttpException) throw e; diff --git a/apps/backend-relayer/src/modules/ads/dto/ad.dto.ts b/apps/backend-relayer/src/modules/ads/dto/ad.dto.ts index ed04d09..4f43cb3 100644 --- a/apps/backend-relayer/src/modules/ads/dto/ad.dto.ts +++ b/apps/backend-relayer/src/modules/ads/dto/ad.dto.ts @@ -241,13 +241,20 @@ export class TokenDto { symbol!: string; @ApiProperty({ type: String, description: 'Token contract address' }) address!: string; - @ApiProperty({ type: String, description: 'Token decimal places' }) + @ApiProperty({ type: Number, description: 'Token decimal places' }) decimals!: number; @ApiProperty({ type: String, description: 'Blockchain chain ID' }) chainId!: string; @ApiProperty({ - enum: ['ERC20', 'NATIVE'], - description: 'Token kind (e.g., ERC20, NATIVE)', + enum: ['EVM', 'STELLAR'], + description: + 'Kind of the underlying chain — tells the client which address format and signing scheme the token lives on.', + }) + chainKind!: string; + @ApiProperty({ + enum: ['ERC20', 'NATIVE', 'SAC', 'SEP41'], + description: + 'Token kind (EVM: ERC20/NATIVE; Stellar: NATIVE/SAC/SEP41)', }) kind!: string; } @@ -410,6 +417,12 @@ export class CreateAdResponseDto { '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef', }) reqHash!: `0x${string}`; + + @ApiProperty({ + enum: ['EVM', 'STELLAR'], + description: 'Kind of chain the ad contract runs on', + }) + chainKind!: 'EVM' | 'STELLAR'; } export class FundAdResponseDto { @ApiProperty({ @@ -461,6 +474,12 @@ export class FundAdResponseDto { '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef', }) reqHash!: `0x${string}`; + + @ApiProperty({ + enum: ['EVM', 'STELLAR'], + description: 'Kind of chain the ad contract runs on', + }) + chainKind!: 'EVM' | 'STELLAR'; } export class WithdrawAdResponseDto { @@ -519,6 +538,12 @@ export class WithdrawAdResponseDto { '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef', }) reqHash!: `0x${string}`; + + @ApiProperty({ + enum: ['EVM', 'STELLAR'], + description: 'Kind of chain the ad contract runs on', + }) + chainKind!: 'EVM' | 'STELLAR'; } export class ConfirmChainActionADResponseDto { @@ -621,4 +646,10 @@ export class CloseAdResponseDto { '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef', }) reqHash!: `0x${string}`; + + @ApiProperty({ + enum: ['EVM', 'STELLAR'], + description: 'Kind of chain the ad contract runs on', + }) + chainKind!: 'EVM' | 'STELLAR'; } diff --git a/apps/backend-relayer/src/modules/chains/chain.controller.spec.ts b/apps/backend-relayer/src/modules/chains/chain.controller.spec.ts index ca5380a..4f6558f 100644 --- a/apps/backend-relayer/src/modules/chains/chain.controller.spec.ts +++ b/apps/backend-relayer/src/modules/chains/chain.controller.spec.ts @@ -30,7 +30,7 @@ describe('ChainController (unit)', () => { afterEach(() => jest.resetAllMocks()); it('list -> delegates to service', async () => { - const mock = { rows: [], nextCursor: null }; + const mock = { data: [], nextCursor: null }; const spy = jest .spyOn(service, 'listChainsPublic') .mockResolvedValueOnce(mock); diff --git a/apps/backend-relayer/src/modules/chains/chain.service.ts b/apps/backend-relayer/src/modules/chains/chain.service.ts index 727010d..33bf15e 100644 --- a/apps/backend-relayer/src/modules/chains/chain.service.ts +++ b/apps/backend-relayer/src/modules/chains/chain.service.ts @@ -20,9 +20,9 @@ export class ChainService { async listChainsPublic(query: QueryChainsDto) { try { - const data = await this.listChains(query); - const rows = data.rows.map((c) => this.toPublic(c)); - return { rows, nextCursor: data.nextCursor }; + const listed = await this.listChains(query); + const data = listed.rows.map((c) => this.toPublic(c)); + return { data, nextCursor: listed.nextCursor }; } catch (e) { if (e instanceof Error) { const status = e.message.toLowerCase().includes('forbidden') diff --git a/apps/backend-relayer/src/modules/chains/dto/chain.dto.ts b/apps/backend-relayer/src/modules/chains/dto/chain.dto.ts index ecbe74b..0815916 100644 --- a/apps/backend-relayer/src/modules/chains/dto/chain.dto.ts +++ b/apps/backend-relayer/src/modules/chains/dto/chain.dto.ts @@ -180,7 +180,7 @@ export class ChainResponseDto { export class ListChainsResponseDto { @ApiProperty({ type: [ChainResponseDto] }) - rows!: ChainResponseDto[]; + data!: ChainResponseDto[]; @ApiProperty({ description: 'Next pagination cursor', diff --git a/apps/backend-relayer/src/modules/routes/route.service.ts b/apps/backend-relayer/src/modules/routes/route.service.ts index ace88f7..c6de13b 100644 --- a/apps/backend-relayer/src/modules/routes/route.service.ts +++ b/apps/backend-relayer/src/modules/routes/route.service.ts @@ -90,7 +90,8 @@ export class RoutesService { address: true, decimals: true, kind: true, - chain: { select: { id: true, name: true, chainId: true } }, + assetIssuer: true, + chain: { select: { id: true, name: true, chainId: true, kind: true } }, }, }, orderToken: { @@ -101,7 +102,8 @@ export class RoutesService { address: true, decimals: true, kind: true, - chain: { select: { id: true, name: true, chainId: true } }, + assetIssuer: true, + chain: { select: { id: true, name: true, chainId: true, kind: true } }, }, }, }, @@ -150,7 +152,8 @@ export class RoutesService { address: true, decimals: true, kind: true, - chain: { select: { id: true, name: true, chainId: true } }, + assetIssuer: true, + chain: { select: { id: true, name: true, chainId: true, kind: true } }, }, }, orderToken: { @@ -161,7 +164,8 @@ export class RoutesService { address: true, decimals: true, kind: true, - chain: { select: { id: true, name: true, chainId: true } }, + assetIssuer: true, + chain: { select: { id: true, name: true, chainId: true, kind: true } }, }, }, }, @@ -232,7 +236,8 @@ export class RoutesService { address: true, decimals: true, kind: true, - chain: { select: { id: true, name: true, chainId: true } }, + assetIssuer: true, + chain: { select: { id: true, name: true, chainId: true, kind: true } }, }, }, orderToken: { @@ -243,7 +248,8 @@ export class RoutesService { address: true, decimals: true, kind: true, - chain: { select: { id: true, name: true, chainId: true } }, + assetIssuer: true, + chain: { select: { id: true, name: true, chainId: true, kind: true } }, }, }, }, @@ -282,10 +288,12 @@ export class RoutesService { address: row.adToken.address, decimals: row.adToken.decimals, kind: row.adToken.kind, + assetIssuer: row.adToken.assetIssuer, chain: { id: row.adToken.chain.id, name: row.adToken.chain.name, chainId: row.adToken.chain.chainId.toString(), + kind: row.adToken.chain.kind, }, }, orderToken: { @@ -295,10 +303,12 @@ export class RoutesService { address: row.orderToken.address, decimals: row.orderToken.decimals, kind: row.orderToken.kind, + assetIssuer: row.orderToken.assetIssuer, chain: { id: row.orderToken.chain.id, name: row.orderToken.chain.name, chainId: row.orderToken.chain.chainId.toString(), + kind: row.orderToken.chain.kind, }, }, }; diff --git a/apps/backend-relayer/src/modules/token/dto/token.dto.ts b/apps/backend-relayer/src/modules/token/dto/token.dto.ts index c5a4fa8..e9ffe74 100644 --- a/apps/backend-relayer/src/modules/token/dto/token.dto.ts +++ b/apps/backend-relayer/src/modules/token/dto/token.dto.ts @@ -5,8 +5,10 @@ import { IsOptional, IsString, IsUUID, + Matches, Max, Min, + ValidateIf, } from 'class-validator'; import { Transform, Type } from 'class-transformer'; import { TokenKind } from '@prisma/client'; @@ -127,6 +129,22 @@ export class CreateTokenDto { message: `kind must be one of: ${Object.values(TokenKind).join(', ')}`, }) kind?: TokenKind; + + @ApiPropertyOptional({ + description: + 'Stellar classic-asset issuer (G-strkey). Required when kind is SAC.', + example: 'GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN', + }) + // Only SAC tokens carry a classic-asset issuer; for other kinds the field + // is skipped entirely (service layer rejects stray values). When SAC, we + // require both presence and G-strkey format at the boundary. + @ValidateIf((o: CreateTokenDto) => o.kind === 'SAC') + @IsString() + @IsNotEmpty({ message: 'assetIssuer is required when kind is SAC' }) + @Matches(/^G[A-Z2-7]{55}$/, { + message: 'assetIssuer must be a valid Stellar issuer (G-strkey)', + }) + assetIssuer?: string; } export class UpdateTokenDto { @@ -188,6 +206,22 @@ export class UpdateTokenDto { message: `kind must be one of: ${Object.values(TokenKind).join(', ')}`, }) kind?: TokenKind; + + @ApiPropertyOptional({ + description: + 'Stellar classic-asset issuer (G-strkey). Pass an empty string to clear (only when kind is moving off SAC).', + example: 'GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN', + }) + @IsOptional() + @IsString() + // Format gate: any non-empty value must be a valid G-strkey. Empty string + // is the explicit "clear the issuer" sentinel. Required-when-SAC cross- + // field enforcement lives in the service layer because an omitted `kind` + // still means SAC when the existing row is SAC. + @Matches(/^$|^G[A-Z2-7]{55}$/, { + message: 'assetIssuer must be empty or a valid Stellar issuer (G-strkey)', + }) + assetIssuer?: string; } export class TokenChainDto { @@ -208,6 +242,12 @@ export class TokenChainDto { type: 'string', }) chainId!: string; + + @ApiProperty({ + description: 'Chain kind', + enum: ['EVM', 'STELLAR'], + }) + kind!: 'EVM' | 'STELLAR'; } export class TokenDataResponseDto { @@ -247,6 +287,14 @@ export class TokenDataResponseDto { }) kind!: string; + @ApiProperty({ + description: + 'Stellar classic-asset issuer (G-strkey). Populated only for SAC tokens.', + type: 'string', + nullable: true, + }) + assetIssuer!: string | null; + @ApiProperty({ description: 'Creation timestamp', type: 'string', diff --git a/apps/backend-relayer/src/modules/token/token.service.ts b/apps/backend-relayer/src/modules/token/token.service.ts index 07a2deb..093f4d5 100644 --- a/apps/backend-relayer/src/modules/token/token.service.ts +++ b/apps/backend-relayer/src/modules/token/token.service.ts @@ -1,4 +1,5 @@ import { + BadRequestException, ConflictException, HttpException, HttpStatus, @@ -13,6 +14,36 @@ import { } from './dto/token.dto'; import { TokenRow } from '../../types'; import { getAddress } from 'ethers'; +import { StrKey } from '@stellar/stellar-sdk'; + +/** + * `assetIssuer` is only meaningful for SAC tokens, which wrap a classic + * Stellar asset. Enforce both presence (for SAC) and absence (for the other + * kinds) at the service boundary so data stays consistent. + */ +function validateAssetIssuer( + kind: string | undefined, + assetIssuer: string | undefined, +): void { + if (kind === 'SAC') { + if (!assetIssuer) { + throw new BadRequestException( + 'assetIssuer is required for SAC tokens (classic-asset issuer G-strkey)', + ); + } + if (!StrKey.isValidEd25519PublicKey(assetIssuer)) { + throw new BadRequestException( + 'assetIssuer must be a valid Stellar G-strkey', + ); + } + return; + } + if (assetIssuer) { + throw new BadRequestException( + 'assetIssuer is only allowed for SAC tokens', + ); + } +} @Injectable() export class TokenService { @@ -64,9 +95,10 @@ export class TokenService { address: true, decimals: true, kind: true, + assetIssuer: true, createdAt: true, updatedAt: true, - chain: { select: { id: true, name: true, chainId: true } }, + chain: { select: { id: true, name: true, chainId: true, kind: true } }, }, }); @@ -105,9 +137,10 @@ export class TokenService { address: true, decimals: true, kind: true, + assetIssuer: true, createdAt: true, updatedAt: true, - chain: { select: { id: true, name: true, chainId: true } }, + chain: { select: { id: true, name: true, chainId: true, kind: true } }, }, }); if (!row) throw new NotFoundException('Token not found'); @@ -130,6 +163,7 @@ export class TokenService { } async create(dto: CreateTokenDto) { + validateAssetIssuer(dto.kind, dto.assetIssuer); try { const created = await this.prisma.token.create({ data: { @@ -139,6 +173,7 @@ export class TokenService { address: dto.address.toLowerCase(), decimals: dto.decimals, kind: dto.kind, + assetIssuer: dto.assetIssuer, }, select: { id: true, @@ -147,9 +182,10 @@ export class TokenService { address: true, decimals: true, kind: true, + assetIssuer: true, createdAt: true, updatedAt: true, - chain: { select: { id: true, name: true, chainId: true } }, + chain: { select: { id: true, name: true, chainId: true, kind: true } }, }, }); return this.serialize(created); @@ -167,10 +203,28 @@ export class TokenService { async update(id: string, dto: UpdateTokenDto) { const exists = await this.prisma.token.findUnique({ where: { id }, - select: { id: true }, + select: { id: true, kind: true }, }); if (!exists) throw new NotFoundException('Token not found'); + // Compute the post-update kind so we validate against the row's final + // state, not just what the DTO partially carries. + const nextKind = dto.kind ?? exists.kind; + if (dto.assetIssuer !== undefined) { + validateAssetIssuer( + nextKind, + dto.assetIssuer === '' ? undefined : dto.assetIssuer, + ); + } else if (dto.kind && dto.kind !== exists.kind) { + // Kind is changing without touching assetIssuer. Only SAC rows carry an + // issuer, so require explicit clearing when moving SAC → non-SAC. + if (exists.kind === 'SAC' && dto.kind !== 'SAC') { + throw new BadRequestException( + 'Changing kind away from SAC requires clearing assetIssuer (pass an empty string)', + ); + } + } + try { const updated = await this.prisma.token.update({ where: { id }, @@ -181,6 +235,9 @@ export class TokenService { ...(dto.address ? { address: dto.address.toLowerCase() } : {}), ...(dto.decimals !== undefined ? { decimals: dto.decimals } : {}), ...(dto.kind ? { kind: dto.kind } : {}), + ...(dto.assetIssuer !== undefined + ? { assetIssuer: dto.assetIssuer === '' ? null : dto.assetIssuer } + : {}), }, select: { id: true, @@ -189,9 +246,10 @@ export class TokenService { address: true, decimals: true, kind: true, + assetIssuer: true, createdAt: true, updatedAt: true, - chain: { select: { id: true, name: true, chainId: true } }, + chain: { select: { id: true, name: true, chainId: true, kind: true } }, }, }); return this.serialize(updated); @@ -217,15 +275,18 @@ export class TokenService { id: row.id, symbol: row.symbol, name: row.name, - address: getAddress(row.address), + address: + row.chain.kind === 'EVM' ? getAddress(row.address) : row.address, decimals: row.decimals, kind: row.kind, + assetIssuer: row.assetIssuer, createdAt: row.createdAt.toISOString(), updatedAt: row.updatedAt.toISOString(), chain: { id: row.chain.id, name: row.chain.name, chainId: row.chain.chainId.toString(), + kind: row.chain.kind, }, }; } diff --git a/apps/backend-relayer/src/modules/trades/dto/trade.dto.ts b/apps/backend-relayer/src/modules/trades/dto/trade.dto.ts index f61b896..9b9f851 100644 --- a/apps/backend-relayer/src/modules/trades/dto/trade.dto.ts +++ b/apps/backend-relayer/src/modules/trades/dto/trade.dto.ts @@ -158,6 +158,14 @@ export class ChainDto { @ApiProperty({ example: '1' }) chainId!: string; + + @ApiProperty({ + example: 'EVM', + enum: ['EVM', 'STELLAR'], + description: + 'Kind of the underlying chain — tells the client which address format and signing scheme the token lives on.', + }) + kind!: string; } export class TokenDto { @@ -172,8 +180,9 @@ export class TokenDto { @ApiProperty({ example: 'ERC20', - enum: ['ERC20', 'NATIVE'], - description: 'Token kind (e.g., ERC20, NATIVE)', + enum: ['ERC20', 'NATIVE', 'SAC', 'SEP41'], + description: + 'Token kind (EVM: ERC20/NATIVE; Stellar: NATIVE/SAC/SEP41)', }) kind!: string; @@ -393,6 +402,12 @@ export class LockForOrderResponseDto { }) @IsString() orderHash!: string; + + @ApiProperty({ + enum: ['EVM', 'STELLAR'], + description: 'Kind of chain the ad contract runs on', + }) + chainKind!: 'EVM' | 'STELLAR'; } export class OrderPortalParamsDto { @@ -527,6 +542,12 @@ export class CreateOrderRequestContractDetailsDto { }) @IsString() reqHash!: `0x${string}`; + + @ApiProperty({ + enum: ['EVM', 'STELLAR'], + description: 'Kind of chain the order contract runs on', + }) + chainKind!: 'EVM' | 'STELLAR'; } export class CreateTradeRequestContractResponseDto { @@ -630,6 +651,12 @@ export class UnlockOrderResponseDto { }) @IsString() reqHash!: `0x${string}`; + + @ApiProperty({ + enum: ['EVM', 'STELLAR'], + description: 'Kind of chain the unlock runs on', + }) + chainKind!: 'EVM' | 'STELLAR'; } export class ConfirmChainActionTradeResponseDto { diff --git a/apps/backend-relayer/src/modules/trades/trade.service.ts b/apps/backend-relayer/src/modules/trades/trade.service.ts index 04d82e2..0df841c 100644 --- a/apps/backend-relayer/src/modules/trades/trade.service.ts +++ b/apps/backend-relayer/src/modules/trades/trade.service.ts @@ -61,7 +61,7 @@ export class TradesService { select: { id: true, symbol: true, - chain: { select: { name: true, chainId: true } }, + chain: { select: { name: true, chainId: true, kind: true } }, kind: true, address: true, decimals: true, @@ -71,7 +71,7 @@ export class TradesService { select: { id: true, symbol: true, - chain: { select: { name: true, chainId: true } }, + chain: { select: { name: true, chainId: true, kind: true } }, kind: true, address: true, decimals: true, @@ -187,7 +187,7 @@ export class TradesService { select: { id: true, symbol: true, - chain: { select: { name: true, chainId: true } }, + chain: { select: { name: true, chainId: true, kind: true } }, kind: true, address: true, decimals: true, @@ -197,7 +197,7 @@ export class TradesService { select: { id: true, symbol: true, - chain: { select: { name: true, chainId: true } }, + chain: { select: { name: true, chainId: true, kind: true } }, kind: true, address: true, decimals: true, @@ -465,7 +465,13 @@ export class TradesService { return { tradeId: trade.id, reqContractDetails }; }); - return result; + return { + ...result, + reqContractDetails: { + ...result.reqContractDetails, + chainKind: ad.route.orderToken.chain.kind as string, + }, + }; } catch (e) { if (e instanceof Error) { if (e instanceof HttpException) throw e; @@ -505,6 +511,7 @@ export class TradesService { adLock: true, status: true, tradeUpdateLog: true, + orderHash: true, bridgerAddress: true, bridgerDstAddress: true, adCreatorDstAddress: true, @@ -519,6 +526,7 @@ export class TradesService { chainId: true, adManagerAddress: true, mmrId: true, + kind: true, }, }, }, @@ -530,6 +538,7 @@ export class TradesService { select: { chainId: true, orderPortalAddress: true, + kind: true, }, }, }, @@ -550,6 +559,17 @@ export class TradesService { throw new ForbiddenException('Unauthorized'); } + // Derive which chain this caller will unlock on. adCreator unlocks on + // the order chain (they're claiming bridger-provided funds there); + // bridger unlocks on the ad chain. The frontend uses this to pick the + // right signing flow (EIP-712 vs SEP-43 Stellar signMessage). + const isAdCreator = + normalizeChainAddress(trade.adCreatorAddress) === + normalizeChainAddress(user.walletAddress); + const unlockChainKind = isAdCreator + ? trade.route.orderToken.chain.kind + : trade.route.adToken.chain.kind; + // All address-like fields are declared bytes32 in the cross-chain // Order typed-data (EVM addresses left-padded; Stellar accounts already // 32 bytes), so return the padded wire form here. @@ -567,6 +587,8 @@ export class TradesService { adCreator: toBytes32(trade.adCreatorAddress), adRecipient: toBytes32(trade.adCreatorDstAddress), salt: uuidToBigInt(trade.id).toString(), + orderHash: trade.orderHash, + unlockChainKind, }; } catch (e) { if (e instanceof Error) { @@ -716,7 +738,10 @@ export class TradesService { }, }); - return reqContractDetails; + return { + ...reqContractDetails, + chainKind: trade.route.adToken.chain.kind as string, + }; } catch (e) { if (e instanceof Error) { if (e instanceof HttpException) throw e; @@ -831,7 +856,7 @@ export class TradesService { .verifyOrderSignature( unlockSigner as `0x${string}`, trade.orderHash as `0x${string}`, - dto.signature as `0x${string}`, + dto.signature, ); if (!isAuthorized) { @@ -946,7 +971,10 @@ export class TradesService { }, }); - return requestContractDetails; + return { + ...requestContractDetails, + chainKind: unlockChain.kind as string, + }; } catch (e) { console.log(e); if (e instanceof Error) { diff --git a/apps/backend-relayer/src/providers/stellar/stellar.service.ts b/apps/backend-relayer/src/providers/stellar/stellar.service.ts index 64f2f47..4d489e3 100644 --- a/apps/backend-relayer/src/providers/stellar/stellar.service.ts +++ b/apps/backend-relayer/src/providers/stellar/stellar.service.ts @@ -580,20 +580,39 @@ export class StellarService { return computeOrderHash(orderParams); } - // Verify an ed25519 signature over `orderHash` (32-byte hex). On Stellar the - // "address" passed in is the G-strkey or its 32-byte hex — we take the - // 32-byte payload as the ed25519 public key. + // Verify a Stellar-wallet signature over `orderHash`. Off-chain only — this + // authorizes the unlock request on the relayer and never goes on-chain. + // + // Wallets don't sign raw bytes; stellar-wallets-kit's `signMessage` applies + // SEP-43-style domain separation and sha256 before ed25519. We reconstruct + // the same preimage here. Frontend sends the orderHash hex string (with + // `0x` prefix) as the message; signature arrives base64-encoded (kit + // normalizes) — we also accept `0x`-hex for direct-bytes callers. + // + // "address" is the G-strkey or its 32-byte hex; the 32-byte payload is the + // ed25519 public key. verifyOrderSignature( address: `0x${string}`, orderHash: `0x${string}`, - signature: `0x${string}`, + signature: string, ): boolean { - const publicKey = hex32ToBuffer(address); - const msg = hex32ToBuffer(orderHash); - const sigBytes = Buffer.from(signature.replace(/^0x/, ''), 'hex'); - if (sigBytes.length !== 64) return false; try { - return verifyEd25519(msg, sigBytes, publicKey); + const publicKey = hex32ToBuffer(address); + const sigBytes = signature.startsWith('0x') + ? Buffer.from(signature.slice(2), 'hex') + : Buffer.from(signature, 'base64'); + if (sigBytes.length !== 64) return false; + + const messageStr = orderHash.startsWith('0x') + ? orderHash + : `0x${orderHash}`; + const preimage = Buffer.concat([ + Buffer.from('Stellar Signed Message:\n', 'utf8'), + Buffer.from(messageStr, 'utf8'), + ]); + // Ed25519 hashes the message internally (sha512); domain separation is + // just prepended bytes, not a pre-hash. + return verifyEd25519(preimage, sigBytes, publicKey); } catch { return false; } diff --git a/apps/backend-relayer/src/types/index.d.ts b/apps/backend-relayer/src/types/index.d.ts index ebbd647..89efb7f 100644 --- a/apps/backend-relayer/src/types/index.d.ts +++ b/apps/backend-relayer/src/types/index.d.ts @@ -28,9 +28,21 @@ type TokenRow = { address: string; decimals: number; kind: string; + assetIssuer: string | null; createdAt: Date; updatedAt: Date; - chain: { id: string; name: string; chainId: bigint }; + chain: { id: string; name: string; chainId: bigint; kind: ChainKind }; +}; + +type RouteTokenEmbed = { + id: string; + symbol: string; + name: string; + address: string; + decimals: number; + kind: string; + assetIssuer: string | null; + chain: { id: string; name: string; chainId: bigint; kind: ChainKind }; }; type RouteRow = { @@ -38,22 +50,6 @@ type RouteRow = { metadata: Prisma.JsonValue | null; createdAt: Date; updatedAt: Date; - adToken: { - id: string; - symbol: string; - name: string; - address: string; - decimals: number; - kind: string; - chain: { id: string; name: string; chainId: bigint }; - }; - orderToken: { - id: string; - symbol: string; - name: string; - address: string; - decimals: number; - kind: string; - chain: { id: string; name: string; chainId: bigint }; - }; + adToken: RouteTokenEmbed; + orderToken: RouteTokenEmbed; }; diff --git a/apps/backend-relayer/test/e2e/chain.e2e-spec.ts b/apps/backend-relayer/test/e2e/chain.e2e-spec.ts index a8649c1..b722860 100644 --- a/apps/backend-relayer/test/e2e/chain.e2e-spec.ts +++ b/apps/backend-relayer/test/e2e/chain.e2e-spec.ts @@ -83,7 +83,7 @@ describe('Chains E2E', () => { .get('/v1/chains') .query({ chainId: '10000' }) .expect(200); - expect(res.body.rows).toEqual( + expect(res.body.data).toEqual( expect.arrayContaining([expect.objectContaining({ chainId: chainId })]), ); }); diff --git a/apps/backend-relayer/test/e2e/token.e2e-spec.ts b/apps/backend-relayer/test/e2e/token.e2e-spec.ts index 3181801..48aa396 100644 --- a/apps/backend-relayer/test/e2e/token.e2e-spec.ts +++ b/apps/backend-relayer/test/e2e/token.e2e-spec.ts @@ -1,7 +1,8 @@ /* eslint-disable @typescript-eslint/no-unsafe-assignment */ import request from 'supertest'; import { INestApplication } from '@nestjs/common'; -import { PrismaClient } from '@prisma/client'; +import { ChainKind, PrismaClient } from '@prisma/client'; +import { Keypair } from '@stellar/stellar-sdk'; import { createTestingApp } from '../setups/create-app'; import { loginAsAdmin, randomAddress, seedChain } from '../setups/utils'; import { getAddress } from 'ethers'; @@ -216,4 +217,120 @@ describe('Tokens E2E', () => { await request(app.getHttpServer()).get(`/v1/tokens/${tokId}`).expect(404); }); + + describe('SAC tokens (Stellar)', () => { + let stellarChain: { id: string; name: string; chainId: bigint }; + const randomContractHex = () => + '0x' + + Array.from({ length: 64 }, () => + Math.floor(Math.random() * 16).toString(16), + ).join(''); + + beforeAll(async () => { + stellarChain = await seedChain(prisma, { kind: ChainKind.STELLAR }); + }); + + it('accepts SAC token with valid assetIssuer', async () => { + const access = await loginAsAdmin(app); + const issuer = Keypair.random().publicKey(); + const address = randomContractHex(); + const res = await request(app.getHttpServer()) + .post('/v1/admin/tokens/create') + .set('Authorization', `Bearer ${access}`) + .send({ + chainUid: stellarChain.id, + symbol: 'USDC', + name: 'USD Coin', + address, + decimals: 7, + kind: 'SAC', + assetIssuer: issuer, + }) + .expect(201); + + expect(res.body).toMatchObject({ + symbol: 'USDC', + kind: 'SAC', + assetIssuer: issuer, + chain: { kind: 'STELLAR' }, + }); + }); + + it('rejects SAC token without assetIssuer (400)', async () => { + const access = await loginAsAdmin(app); + await request(app.getHttpServer()) + .post('/v1/admin/tokens/create') + .set('Authorization', `Bearer ${access}`) + .send({ + chainUid: stellarChain.id, + symbol: 'USDC', + name: 'USD Coin', + address: randomContractHex(), + decimals: 7, + kind: 'SAC', + }) + .expect(400); + }); + + it('rejects malformed assetIssuer (400)', async () => { + const access = await loginAsAdmin(app); + await request(app.getHttpServer()) + .post('/v1/admin/tokens/create') + .set('Authorization', `Bearer ${access}`) + .send({ + chainUid: stellarChain.id, + symbol: 'USDC', + name: 'USD Coin', + address: randomContractHex(), + decimals: 7, + kind: 'SAC', + assetIssuer: 'not-a-g-strkey', + }) + .expect(400); + }); + + it('rejects assetIssuer on non-SAC kinds (400)', async () => { + const access = await loginAsAdmin(app); + await request(app.getHttpServer()) + .post('/v1/admin/tokens/create') + .set('Authorization', `Bearer ${access}`) + .send({ + chainUid: chain.id, + symbol: 'ETH', + name: 'Ether', + address: randomAddress(), + decimals: 18, + kind: 'NATIVE', + assetIssuer: Keypair.random().publicKey(), + }) + .expect(400); + }); + + it('PATCH can clear assetIssuer when moving off SAC', async () => { + const access = await loginAsAdmin(app); + const issuer = Keypair.random().publicKey(); + const create = await request(app.getHttpServer()) + .post('/v1/admin/tokens/create') + .set('Authorization', `Bearer ${access}`) + .send({ + chainUid: stellarChain.id, + symbol: 'USDC', + name: 'USD Coin', + address: randomContractHex(), + decimals: 7, + kind: 'SAC', + assetIssuer: issuer, + }) + .expect(201); + + const tokId = create.body.id as string; + const updated = await request(app.getHttpServer()) + .patch(`/v1/admin/tokens/${tokId}`) + .set('Authorization', `Bearer ${access}`) + .send({ kind: 'SEP41', assetIssuer: '' }) + .expect(200); + expect(updated.body.assetIssuer).toBeNull(); + expect(updated.body.kind).toBe('SEP41'); + }); + }); }); diff --git a/apps/frontend/.env.example b/apps/frontend/.env.example new file mode 100644 index 0000000..639dcdb --- /dev/null +++ b/apps/frontend/.env.example @@ -0,0 +1,34 @@ +# ProofBridge frontend environment. Copy to `.env.local` and fill in. +# +# All NEXT_PUBLIC_* values are inlined into the client bundle at build time. +# Restart `pnpm dev` after editing. + +# ── Relayer API ────────────────────────────────────────────────────── +# The backend-relayer base URL. For the local docker stack this is +# http://localhost:2005 (see scripts/docker-local/README.md). +NEXT_PUBLIC_API_URL=http://localhost:2005 + +# ── SIWE signing ───────────────────────────────────────────────────── +# Domain + URI that appear in the SIWE (EVM) and SEP-10 (Stellar) login +# messages. Must match what the relayer is configured with (SIGN_DOMAIN +# / SIGN_URI in apps/backend-relayer/.env). For local dev: +NEXT_PUBLIC_SIGN_DOMAIN=localhost +NEXT_PUBLIC_SIGN_URI=http://localhost:3000 + +# ── WalletConnect ──────────────────────────────────────────────────── +# Get a project id from https://cloud.walletconnect.com. Required for the +# RainbowKit EVM wallet modal; without it EVM connect fails silently. +WALLET_CONNECT_PROJECT_ID= + +# ── Stellar RPC / Horizon ──────────────────────────────────────────── +# Used by utils/stellar/{actions,trustline,balance}.ts for Soroban calls +# and classic-asset balance / trustline reads. Defaults to public Stellar +# testnet if unset; for the local docker stack point both at localhost. +# +# Local docker stack: +NEXT_PUBLIC_STELLAR_RPC_URL=http://localhost:8000/soroban/rpc +NEXT_PUBLIC_STELLAR_HORIZON_URL=http://localhost:8000 +# +# Public Stellar testnet (default when unset): +# NEXT_PUBLIC_STELLAR_RPC_URL=https://soroban-testnet.stellar.org +# NEXT_PUBLIC_STELLAR_HORIZON_URL=https://horizon-testnet.stellar.org diff --git a/apps/frontend/abis/AdManager.abi.ts b/apps/frontend/abis/AdManager.abi.ts index 541fa59..931f3be 100644 --- a/apps/frontend/abis/AdManager.abi.ts +++ b/apps/frontend/abis/AdManager.abi.ts @@ -1,978 +1,2024 @@ export const AD_MANAGER_ABI = [ { - type: "constructor", - inputs: [ - { name: "admin", type: "address", internalType: "address" }, + "type": "constructor", + "inputs": [ { - name: "_verifier", - type: "address", - internalType: "contract IVerifier", + "name": "admin", + "type": "address", + "internalType": "address" }, { - name: "_merkleManager", - type: "address", - internalType: "contract IMerkleManager", + "name": "_verifier", + "type": "address", + "internalType": "contract IVerifier" }, { - name: "_wNativeToken", - type: "address", - internalType: "contract IwNativeToken", + "name": "_merkleManager", + "type": "address", + "internalType": "contract IMerkleManager" }, + { + "name": "_wNativeToken", + "type": "address", + "internalType": "contract IwNativeToken" + } ], - stateMutability: "nonpayable", + "stateMutability": "nonpayable" }, - { type: "fallback", stateMutability: "payable" }, - { type: "receive", stateMutability: "payable" }, { - type: "function", - name: "ADMIN_ROLE", - inputs: [], - outputs: [{ name: "", type: "bytes32", internalType: "bytes32" }], - stateMutability: "view", + "type": "fallback", + "stateMutability": "payable" }, { - type: "function", - name: "DEFAULT_ADMIN_ROLE", - inputs: [], - outputs: [{ name: "", type: "bytes32", internalType: "bytes32" }], - stateMutability: "view", + "type": "receive", + "stateMutability": "payable" }, { - type: "function", - name: "DOMAIN_TYPEHASH_MIN", - inputs: [], - outputs: [{ name: "", type: "bytes32", internalType: "bytes32" }], - stateMutability: "view", + "type": "function", + "name": "ADMIN_ROLE", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" }, { - type: "function", - name: "NATIVE_TOKEN_ADDRESS", - inputs: [], - outputs: [{ name: "", type: "address", internalType: "address" }], - stateMutability: "view", + "type": "function", + "name": "DEFAULT_ADMIN_ROLE", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" }, { - type: "function", - name: "ORDER_TYPEHASH", - inputs: [], - outputs: [{ name: "", type: "bytes32", internalType: "bytes32" }], - stateMutability: "view", + "type": "function", + "name": "DOMAIN_TYPEHASH_MIN", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" }, { - type: "function", - name: "adIds", - inputs: [{ name: "", type: "string", internalType: "string" }], - outputs: [{ name: "", type: "bool", internalType: "bool" }], - stateMutability: "view", + "type": "function", + "name": "NATIVE_TOKEN_ADDRESS", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" }, { - type: "function", - name: "ads", - inputs: [{ name: "", type: "string", internalType: "string" }], - outputs: [ - { name: "orderChainId", type: "uint256", internalType: "uint256" }, - { name: "adRecipient", type: "address", internalType: "address" }, - { name: "maker", type: "address", internalType: "address" }, - { name: "token", type: "address", internalType: "address" }, - { name: "balance", type: "uint256", internalType: "uint256" }, - { name: "locked", type: "uint256", internalType: "uint256" }, - { name: "open", type: "bool", internalType: "bool" }, + "type": "function", + "name": "ORDER_TYPEHASH", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } ], - stateMutability: "view", + "stateMutability": "view" }, { - type: "function", - name: "availableLiquidity", - inputs: [{ name: "adId", type: "string", internalType: "string" }], - outputs: [{ name: "amount", type: "uint256", internalType: "uint256" }], - stateMutability: "view", + "type": "function", + "name": "adIds", + "inputs": [ + { + "name": "", + "type": "string", + "internalType": "string" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" }, { - type: "function", - name: "chains", - inputs: [{ name: "", type: "uint256", internalType: "uint256" }], - outputs: [ - { name: "supported", type: "bool", internalType: "bool" }, - { name: "orderPortal", type: "address", internalType: "address" }, + "type": "function", + "name": "ads", + "inputs": [ + { + "name": "", + "type": "string", + "internalType": "string" + } + ], + "outputs": [ + { + "name": "orderChainId", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "adRecipient", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "maker", + "type": "address", + "internalType": "address" + }, + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "balance", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "locked", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "open", + "type": "bool", + "internalType": "bool" + } ], - stateMutability: "view", + "stateMutability": "view" }, { - type: "function", - name: "checkRequestHashExists", - inputs: [{ name: "message", type: "bytes32", internalType: "bytes32" }], - outputs: [{ name: "", type: "bool", internalType: "bool" }], - stateMutability: "view", + "type": "function", + "name": "availableLiquidity", + "inputs": [ + { + "name": "adId", + "type": "string", + "internalType": "string" + } + ], + "outputs": [ + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" }, { - type: "function", - name: "closeAd", - inputs: [ - { name: "signature", type: "bytes", internalType: "bytes" }, - { name: "authToken", type: "bytes32", internalType: "bytes32" }, - { name: "timeToExpire", type: "uint256", internalType: "uint256" }, - { name: "adId", type: "string", internalType: "string" }, - { name: "to", type: "address", internalType: "address" }, + "type": "function", + "name": "chains", + "inputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "supported", + "type": "bool", + "internalType": "bool" + }, + { + "name": "orderPortal", + "type": "bytes32", + "internalType": "bytes32" + } ], - outputs: [], - stateMutability: "payable", + "stateMutability": "view" }, { - type: "function", - name: "closeAdRequestHash", - inputs: [ - { name: "adId", type: "string", internalType: "string" }, - { name: "to", type: "address", internalType: "address" }, - { name: "authToken", type: "bytes32", internalType: "bytes32" }, - { name: "timeToExpire", type: "uint256", internalType: "uint256" }, - ], - outputs: [{ name: "message", type: "bytes32", internalType: "bytes32" }], - stateMutability: "view", + "type": "function", + "name": "checkRequestHashExists", + "inputs": [ + { + "name": "message", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" }, { - type: "function", - name: "createAd", - inputs: [ - { name: "signature", type: "bytes", internalType: "bytes" }, - { name: "authToken", type: "bytes32", internalType: "bytes32" }, - { name: "timeToExpire", type: "uint256", internalType: "uint256" }, - { name: "adId", type: "string", internalType: "string" }, - { name: "adToken", type: "address", internalType: "address" }, - { name: "initialAmount", type: "uint256", internalType: "uint256" }, - { name: "orderChainId", type: "uint256", internalType: "uint256" }, - { name: "adRecipient", type: "address", internalType: "address" }, + "type": "function", + "name": "closeAd", + "inputs": [ + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "authToken", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "timeToExpire", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "adId", + "type": "string", + "internalType": "string" + }, + { + "name": "to", + "type": "address", + "internalType": "address" + } ], - outputs: [], - stateMutability: "payable", + "outputs": [], + "stateMutability": "payable" }, { - type: "function", - name: "createAdRequestHash", - inputs: [ - { name: "adId", type: "string", internalType: "string" }, - { name: "adToken", type: "address", internalType: "address" }, - { name: "initialAmount", type: "uint256", internalType: "uint256" }, - { name: "orderChainId", type: "uint256", internalType: "uint256" }, - { name: "adRecipient", type: "address", internalType: "address" }, - { name: "authToken", type: "bytes32", internalType: "bytes32" }, - { name: "timeToExpire", type: "uint256", internalType: "uint256" }, + "type": "function", + "name": "closeAdRequestHash", + "inputs": [ + { + "name": "adId", + "type": "string", + "internalType": "string" + }, + { + "name": "to", + "type": "address", + "internalType": "address" + }, + { + "name": "authToken", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "timeToExpire", + "type": "uint256", + "internalType": "uint256" + } ], - outputs: [{ name: "message", type: "bytes32", internalType: "bytes32" }], - stateMutability: "view", - }, - { - type: "function", - name: "eip712Domain", - inputs: [], - outputs: [ - { name: "fields", type: "bytes1", internalType: "bytes1" }, - { name: "name", type: "string", internalType: "string" }, - { name: "version", type: "string", internalType: "string" }, - { name: "chainId", type: "uint256", internalType: "uint256" }, - { name: "verifyingContract", type: "address", internalType: "address" }, - { name: "salt", type: "bytes32", internalType: "bytes32" }, - { name: "extensions", type: "uint256[]", internalType: "uint256[]" }, + "outputs": [ + { + "name": "message", + "type": "bytes32", + "internalType": "bytes32" + } ], - stateMutability: "view", + "stateMutability": "view" }, { - type: "function", - name: "fundAd", - inputs: [ - { name: "signature", type: "bytes", internalType: "bytes" }, - { name: "authToken", type: "bytes32", internalType: "bytes32" }, - { name: "timeToExpire", type: "uint256", internalType: "uint256" }, - { name: "adId", type: "string", internalType: "string" }, - { name: "amount", type: "uint256", internalType: "uint256" }, + "type": "function", + "name": "createAd", + "inputs": [ + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "authToken", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "timeToExpire", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "adId", + "type": "string", + "internalType": "string" + }, + { + "name": "adToken", + "type": "address", + "internalType": "address" + }, + { + "name": "initialAmount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "orderChainId", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "adRecipient", + "type": "bytes32", + "internalType": "bytes32" + } ], - outputs: [], - stateMutability: "payable", + "outputs": [], + "stateMutability": "payable" }, { - type: "function", - name: "fundAdRequestHash", - inputs: [ - { name: "adId", type: "string", internalType: "string" }, - { name: "amount", type: "uint256", internalType: "uint256" }, - { name: "authToken", type: "bytes32", internalType: "bytes32" }, - { name: "timeToExpire", type: "uint256", internalType: "uint256" }, + "type": "function", + "name": "createAdRequestHash", + "inputs": [ + { + "name": "adId", + "type": "string", + "internalType": "string" + }, + { + "name": "adToken", + "type": "address", + "internalType": "address" + }, + { + "name": "initialAmount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "orderChainId", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "adRecipient", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "authToken", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "timeToExpire", + "type": "uint256", + "internalType": "uint256" + } ], - outputs: [{ name: "message", type: "bytes32", internalType: "bytes32" }], - stateMutability: "view", + "outputs": [ + { + "name": "message", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" }, { - type: "function", - name: "getChainID", - inputs: [], - outputs: [{ name: "", type: "uint256", internalType: "uint256" }], - stateMutability: "view", + "type": "function", + "name": "eip712Domain", + "inputs": [], + "outputs": [ + { + "name": "fields", + "type": "bytes1", + "internalType": "bytes1" + }, + { + "name": "name", + "type": "string", + "internalType": "string" + }, + { + "name": "version", + "type": "string", + "internalType": "string" + }, + { + "name": "chainId", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "verifyingContract", + "type": "address", + "internalType": "address" + }, + { + "name": "salt", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "extensions", + "type": "uint256[]", + "internalType": "uint256[]" + } + ], + "stateMutability": "view" }, { - type: "function", - name: "getHistoricalRoot", - inputs: [{ name: "index", type: "uint256", internalType: "uint256" }], - outputs: [{ name: "root", type: "bytes32", internalType: "bytes32" }], - stateMutability: "view", - }, - { - type: "function", - name: "getLatestMerkleRoot", - inputs: [], - outputs: [{ name: "root", type: "bytes32", internalType: "bytes32" }], - stateMutability: "view", - }, - { - type: "function", - name: "getMerkleLeafCount", - inputs: [], - outputs: [{ name: "count", type: "uint256", internalType: "uint256" }], - stateMutability: "view", - }, - { - type: "function", - name: "getRoleAdmin", - inputs: [{ name: "role", type: "bytes32", internalType: "bytes32" }], - outputs: [{ name: "", type: "bytes32", internalType: "bytes32" }], - stateMutability: "view", + "type": "function", + "name": "fundAd", + "inputs": [ + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "authToken", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "timeToExpire", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "adId", + "type": "string", + "internalType": "string" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "payable" }, { - type: "function", - name: "getSigner", - inputs: [ - { name: "message", type: "bytes32", internalType: "bytes32" }, - { name: "signature", type: "bytes", internalType: "bytes" }, + "type": "function", + "name": "fundAdRequestHash", + "inputs": [ + { + "name": "adId", + "type": "string", + "internalType": "string" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "authToken", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "timeToExpire", + "type": "uint256", + "internalType": "uint256" + } ], - outputs: [{ name: "", type: "address", internalType: "address" }], - stateMutability: "pure", + "outputs": [ + { + "name": "message", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" }, { - type: "function", - name: "grantRole", - inputs: [ - { name: "role", type: "bytes32", internalType: "bytes32" }, - { name: "account", type: "address", internalType: "address" }, + "type": "function", + "name": "getChainID", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } ], - outputs: [], - stateMutability: "nonpayable", + "stateMutability": "view" }, { - type: "function", - name: "hasRole", - inputs: [ - { name: "role", type: "bytes32", internalType: "bytes32" }, - { name: "account", type: "address", internalType: "address" }, + "type": "function", + "name": "getHistoricalRoot", + "inputs": [ + { + "name": "index", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "root", + "type": "bytes32", + "internalType": "bytes32" + } ], - outputs: [{ name: "", type: "bool", internalType: "bool" }], - stateMutability: "view", + "stateMutability": "view" }, { - type: "function", - name: "hashRequest", - inputs: [ - { name: "authToken", type: "bytes32", internalType: "bytes32" }, - { name: "timeToExpire", type: "uint256", internalType: "uint256" }, - { name: "_action", type: "string", internalType: "string" }, - { name: "_params", type: "bytes[]", internalType: "bytes[]" }, + "type": "function", + "name": "getLatestMerkleRoot", + "inputs": [], + "outputs": [ + { + "name": "root", + "type": "bytes32", + "internalType": "bytes32" + } ], - outputs: [{ name: "", type: "bytes32", internalType: "bytes32" }], - stateMutability: "view", + "stateMutability": "view" }, { - type: "function", - name: "i_merkleManager", - inputs: [], - outputs: [ - { name: "", type: "address", internalType: "contract IMerkleManager" }, + "type": "function", + "name": "getMerkleLeafCount", + "inputs": [], + "outputs": [ + { + "name": "count", + "type": "uint256", + "internalType": "uint256" + } ], - stateMutability: "view", + "stateMutability": "view" }, { - type: "function", - name: "i_verifier", - inputs: [], - outputs: [ - { name: "", type: "address", internalType: "contract IVerifier" }, + "type": "function", + "name": "getRoleAdmin", + "inputs": [ + { + "name": "role", + "type": "bytes32", + "internalType": "bytes32" + } ], - stateMutability: "view", + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" }, { - type: "function", - name: "lockForOrder", - inputs: [ - { name: "signature", type: "bytes", internalType: "bytes" }, - { name: "authToken", type: "bytes32", internalType: "bytes32" }, - { name: "timeToExpire", type: "uint256", internalType: "uint256" }, + "type": "function", + "name": "getSigner", + "inputs": [ { - name: "params", - type: "tuple", - internalType: "struct AdManager.OrderParams", - components: [ - { name: "orderChainToken", type: "address", internalType: "address" }, - { name: "adChainToken", type: "address", internalType: "address" }, - { name: "amount", type: "uint256", internalType: "uint256" }, - { name: "bridger", type: "address", internalType: "address" }, - { name: "orderChainId", type: "uint256", internalType: "uint256" }, - { name: "srcOrderPortal", type: "address", internalType: "address" }, - { name: "orderRecipient", type: "address", internalType: "address" }, - { name: "adId", type: "string", internalType: "string" }, - { name: "adCreator", type: "address", internalType: "address" }, - { name: "adRecipient", type: "address", internalType: "address" }, - { name: "salt", type: "uint256", internalType: "uint256" }, - ], + "name": "message", + "type": "bytes32", + "internalType": "bytes32" }, + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + } ], - outputs: [{ name: "orderHash", type: "bytes32", internalType: "bytes32" }], - stateMutability: "nonpayable", + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "pure" }, { - type: "function", - name: "lockForOrderRequestHash", - inputs: [ - { name: "adId", type: "string", internalType: "string" }, - { name: "orderHash", type: "bytes32", internalType: "bytes32" }, - { name: "authToken", type: "bytes32", internalType: "bytes32" }, - { name: "timeToExpire", type: "uint256", internalType: "uint256" }, + "type": "function", + "name": "grantRole", + "inputs": [ + { + "name": "role", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "account", + "type": "address", + "internalType": "address" + } ], - outputs: [{ name: "message", type: "bytes32", internalType: "bytes32" }], - stateMutability: "view", + "outputs": [], + "stateMutability": "nonpayable" }, { - type: "function", - name: "managers", - inputs: [{ name: "", type: "address", internalType: "address" }], - outputs: [{ name: "", type: "bool", internalType: "bool" }], - stateMutability: "view", + "type": "function", + "name": "hasRole", + "inputs": [ + { + "name": "role", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "account", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" }, { - type: "function", - name: "nullifierUsed", - inputs: [{ name: "", type: "bytes32", internalType: "bytes32" }], - outputs: [{ name: "", type: "bool", internalType: "bool" }], - stateMutability: "view", + "type": "function", + "name": "hashRequest", + "inputs": [ + { + "name": "authToken", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "timeToExpire", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "_action", + "type": "string", + "internalType": "string" + }, + { + "name": "_params", + "type": "bytes[]", + "internalType": "bytes[]" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" }, { - type: "function", - name: "orders", - inputs: [{ name: "", type: "bytes32", internalType: "bytes32" }], - outputs: [ - { name: "", type: "uint8", internalType: "enum AdManager.Status" }, + "type": "function", + "name": "i_merkleManager", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IMerkleManager" + } ], - stateMutability: "view", + "stateMutability": "view" }, { - type: "function", - name: "removeChain", - inputs: [ - { name: "orderChainId", type: "uint256", internalType: "uint256" }, + "type": "function", + "name": "i_verifier", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IVerifier" + } ], - outputs: [], - stateMutability: "nonpayable", + "stateMutability": "view" }, { - type: "function", - name: "removeTokenRoute", - inputs: [ - { name: "adToken", type: "address", internalType: "address" }, - { name: "orderChainId", type: "uint256", internalType: "uint256" }, + "type": "function", + "name": "lockForOrder", + "inputs": [ + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "authToken", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "timeToExpire", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "params", + "type": "tuple", + "internalType": "struct AdManager.OrderParams", + "components": [ + { + "name": "orderChainToken", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "adChainToken", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "bridger", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "orderChainId", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "srcOrderPortal", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "orderRecipient", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "adId", + "type": "string", + "internalType": "string" + }, + { + "name": "adCreator", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "adRecipient", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "salt", + "type": "uint256", + "internalType": "uint256" + } + ] + } ], - outputs: [], - stateMutability: "nonpayable", + "outputs": [ + { + "name": "orderHash", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "nonpayable" }, { - type: "function", - name: "renounceRole", - inputs: [ - { name: "role", type: "bytes32", internalType: "bytes32" }, - { name: "callerConfirmation", type: "address", internalType: "address" }, + "type": "function", + "name": "lockForOrderRequestHash", + "inputs": [ + { + "name": "adId", + "type": "string", + "internalType": "string" + }, + { + "name": "orderHash", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "authToken", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "timeToExpire", + "type": "uint256", + "internalType": "uint256" + } ], - outputs: [], - stateMutability: "nonpayable", + "outputs": [ + { + "name": "message", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" }, { - type: "function", - name: "requestHashes", - inputs: [{ name: "", type: "bytes32", internalType: "bytes32" }], - outputs: [{ name: "", type: "bool", internalType: "bool" }], - stateMutability: "view", + "type": "function", + "name": "managers", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" }, { - type: "function", - name: "requestTokens", - inputs: [{ name: "", type: "bytes32", internalType: "bytes32" }], - outputs: [{ name: "", type: "bool", internalType: "bool" }], - stateMutability: "view", + "type": "function", + "name": "nullifierUsed", + "inputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" }, { - type: "function", - name: "revokeRole", - inputs: [ - { name: "role", type: "bytes32", internalType: "bytes32" }, - { name: "account", type: "address", internalType: "address" }, + "type": "function", + "name": "orders", + "inputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } ], - outputs: [], - stateMutability: "nonpayable", + "outputs": [ + { + "name": "", + "type": "uint8", + "internalType": "enum AdManager.Status" + } + ], + "stateMutability": "view" }, { - type: "function", - name: "setChain", - inputs: [ - { name: "orderChainId", type: "uint256", internalType: "uint256" }, - { name: "orderPortal", type: "address", internalType: "address" }, - { name: "supported", type: "bool", internalType: "bool" }, + "type": "function", + "name": "removeChain", + "inputs": [ + { + "name": "orderChainId", + "type": "uint256", + "internalType": "uint256" + } ], - outputs: [], - stateMutability: "nonpayable", + "outputs": [], + "stateMutability": "nonpayable" }, { - type: "function", - name: "setManager", - inputs: [ - { name: "_manager", type: "address", internalType: "address" }, - { name: "_status", type: "bool", internalType: "bool" }, + "type": "function", + "name": "removeTokenRoute", + "inputs": [ + { + "name": "adToken", + "type": "address", + "internalType": "address" + }, + { + "name": "orderChainId", + "type": "uint256", + "internalType": "uint256" + } ], - outputs: [], - stateMutability: "nonpayable", + "outputs": [], + "stateMutability": "nonpayable" }, { - type: "function", - name: "setTokenRoute", - inputs: [ - { name: "adToken", type: "address", internalType: "address" }, - { name: "orderToken", type: "address", internalType: "address" }, - { name: "orderChainId", type: "uint256", internalType: "uint256" }, + "type": "function", + "name": "renounceRole", + "inputs": [ + { + "name": "role", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "callerConfirmation", + "type": "address", + "internalType": "address" + } ], - outputs: [], - stateMutability: "nonpayable", + "outputs": [], + "stateMutability": "nonpayable" }, { - type: "function", - name: "supportsInterface", - inputs: [{ name: "interfaceId", type: "bytes4", internalType: "bytes4" }], - outputs: [{ name: "", type: "bool", internalType: "bool" }], - stateMutability: "view", + "type": "function", + "name": "requestHashes", + "inputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" }, { - type: "function", - name: "tokenRoute", - inputs: [ - { name: "", type: "address", internalType: "address" }, - { name: "", type: "uint256", internalType: "uint256" }, + "type": "function", + "name": "requestTokens", + "inputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } ], - outputs: [{ name: "", type: "address", internalType: "address" }], - stateMutability: "view", + "stateMutability": "view" }, { - type: "function", - name: "unlock", - inputs: [ - { name: "signature", type: "bytes", internalType: "bytes" }, - { name: "authToken", type: "bytes32", internalType: "bytes32" }, - { name: "timeToExpire", type: "uint256", internalType: "uint256" }, + "type": "function", + "name": "revokeRole", + "inputs": [ { - name: "params", - type: "tuple", - internalType: "struct AdManager.OrderParams", - components: [ - { name: "orderChainToken", type: "address", internalType: "address" }, - { name: "adChainToken", type: "address", internalType: "address" }, - { name: "amount", type: "uint256", internalType: "uint256" }, - { name: "bridger", type: "address", internalType: "address" }, - { name: "orderChainId", type: "uint256", internalType: "uint256" }, - { name: "srcOrderPortal", type: "address", internalType: "address" }, - { name: "orderRecipient", type: "address", internalType: "address" }, - { name: "adId", type: "string", internalType: "string" }, - { name: "adCreator", type: "address", internalType: "address" }, - { name: "adRecipient", type: "address", internalType: "address" }, - { name: "salt", type: "uint256", internalType: "uint256" }, - ], + "name": "role", + "type": "bytes32", + "internalType": "bytes32" }, - { name: "nullifierHash", type: "bytes32", internalType: "bytes32" }, - { name: "targetRoot", type: "bytes32", internalType: "bytes32" }, - { name: "proof", type: "bytes", internalType: "bytes" }, + { + "name": "account", + "type": "address", + "internalType": "address" + } ], - outputs: [], - stateMutability: "payable", + "outputs": [], + "stateMutability": "nonpayable" }, { - type: "function", - name: "unlockOrderRequestHash", - inputs: [ - { name: "adId", type: "string", internalType: "string" }, - { name: "orderHash", type: "bytes32", internalType: "bytes32" }, - { name: "_targetRoot", type: "bytes32", internalType: "bytes32" }, - { name: "authToken", type: "bytes32", internalType: "bytes32" }, - { name: "timeToExpire", type: "uint256", internalType: "uint256" }, + "type": "function", + "name": "setChain", + "inputs": [ + { + "name": "orderChainId", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "orderPortal", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "supported", + "type": "bool", + "internalType": "bool" + } ], - outputs: [{ name: "message", type: "bytes32", internalType: "bytes32" }], - stateMutability: "view", + "outputs": [], + "stateMutability": "nonpayable" }, { - type: "function", - name: "wNativeToken", - inputs: [], - outputs: [ - { name: "", type: "address", internalType: "contract IwNativeToken" }, + "type": "function", + "name": "setManager", + "inputs": [ + { + "name": "_manager", + "type": "address", + "internalType": "address" + }, + { + "name": "_status", + "type": "bool", + "internalType": "bool" + } ], - stateMutability: "view", + "outputs": [], + "stateMutability": "nonpayable" }, { - type: "function", - name: "withdrawFromAd", - inputs: [ - { name: "signature", type: "bytes", internalType: "bytes" }, - { name: "authToken", type: "bytes32", internalType: "bytes32" }, - { name: "timeToExpire", type: "uint256", internalType: "uint256" }, - { name: "adId", type: "string", internalType: "string" }, - { name: "amount", type: "uint256", internalType: "uint256" }, - { name: "to", type: "address", internalType: "address" }, + "type": "function", + "name": "setTokenRoute", + "inputs": [ + { + "name": "adToken", + "type": "address", + "internalType": "address" + }, + { + "name": "orderToken", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "orderChainId", + "type": "uint256", + "internalType": "uint256" + } ], - outputs: [], - stateMutability: "payable", + "outputs": [], + "stateMutability": "nonpayable" }, { - type: "function", - name: "withdrawFromAdRequestHash", - inputs: [ - { name: "adId", type: "string", internalType: "string" }, - { name: "amount", type: "uint256", internalType: "uint256" }, - { name: "to", type: "address", internalType: "address" }, - { name: "authToken", type: "bytes32", internalType: "bytes32" }, - { name: "timeToExpire", type: "uint256", internalType: "uint256" }, + "type": "function", + "name": "supportsInterface", + "inputs": [ + { + "name": "interfaceId", + "type": "bytes4", + "internalType": "bytes4" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } ], - outputs: [{ name: "message", type: "bytes32", internalType: "bytes32" }], - stateMutability: "view", + "stateMutability": "view" }, { - type: "event", - name: "AdClosed", - inputs: [ - { name: "adId", type: "string", indexed: true, internalType: "string" }, + "type": "function", + "name": "tokenRoute", + "inputs": [ { - name: "maker", - type: "address", - indexed: true, - internalType: "address", + "name": "", + "type": "address", + "internalType": "address" }, + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } ], - anonymous: false, + "stateMutability": "view" }, { - type: "event", - name: "AdCreated", - inputs: [ - { name: "adId", type: "string", indexed: true, internalType: "string" }, + "type": "function", + "name": "unlock", + "inputs": [ { - name: "maker", - type: "address", - indexed: true, - internalType: "address", + "name": "signature", + "type": "bytes", + "internalType": "bytes" }, { - name: "token", - type: "address", - indexed: true, - internalType: "address", + "name": "authToken", + "type": "bytes32", + "internalType": "bytes32" }, { - name: "initAmount", - type: "uint256", - indexed: false, - internalType: "uint256", + "name": "timeToExpire", + "type": "uint256", + "internalType": "uint256" }, { - name: "orderChainId", - type: "uint256", - indexed: false, - internalType: "uint256", + "name": "params", + "type": "tuple", + "internalType": "struct AdManager.OrderParams", + "components": [ + { + "name": "orderChainToken", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "adChainToken", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "bridger", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "orderChainId", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "srcOrderPortal", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "orderRecipient", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "adId", + "type": "string", + "internalType": "string" + }, + { + "name": "adCreator", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "adRecipient", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "salt", + "type": "uint256", + "internalType": "uint256" + } + ] }, + { + "name": "nullifierHash", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "targetRoot", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "proof", + "type": "bytes", + "internalType": "bytes" + } ], - anonymous: false, + "outputs": [], + "stateMutability": "payable" }, { - type: "event", - name: "AdFunded", - inputs: [ - { name: "adId", type: "string", indexed: true, internalType: "string" }, + "type": "function", + "name": "unlockOrderRequestHash", + "inputs": [ + { + "name": "adId", + "type": "string", + "internalType": "string" + }, { - name: "maker", - type: "address", - indexed: true, - internalType: "address", + "name": "orderHash", + "type": "bytes32", + "internalType": "bytes32" }, { - name: "amount", - type: "uint256", - indexed: false, - internalType: "uint256", + "name": "_targetRoot", + "type": "bytes32", + "internalType": "bytes32" }, { - name: "newBalance", - type: "uint256", - indexed: false, - internalType: "uint256", + "name": "authToken", + "type": "bytes32", + "internalType": "bytes32" }, + { + "name": "timeToExpire", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "message", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "wNativeToken", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IwNativeToken" + } ], - anonymous: false, + "stateMutability": "view" }, { - type: "event", - name: "AdWithdrawn", - inputs: [ - { name: "adId", type: "string", indexed: true, internalType: "string" }, + "type": "function", + "name": "withdrawFromAd", + "inputs": [ + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "authToken", + "type": "bytes32", + "internalType": "bytes32" + }, { - name: "maker", - type: "address", - indexed: true, - internalType: "address", + "name": "timeToExpire", + "type": "uint256", + "internalType": "uint256" }, { - name: "amount", - type: "uint256", - indexed: false, - internalType: "uint256", + "name": "adId", + "type": "string", + "internalType": "string" }, { - name: "newBalance", - type: "uint256", - indexed: false, - internalType: "uint256", + "name": "amount", + "type": "uint256", + "internalType": "uint256" }, + { + "name": "to", + "type": "address", + "internalType": "address" + } ], - anonymous: false, + "outputs": [], + "stateMutability": "payable" }, { - type: "event", - name: "ChainSet", - inputs: [ + "type": "function", + "name": "withdrawFromAdRequestHash", + "inputs": [ + { + "name": "adId", + "type": "string", + "internalType": "string" + }, { - name: "chainId", - type: "uint256", - indexed: true, - internalType: "uint256", + "name": "amount", + "type": "uint256", + "internalType": "uint256" }, { - name: "orderPortal", - type: "address", - indexed: true, - internalType: "address", + "name": "to", + "type": "address", + "internalType": "address" }, - { name: "supported", type: "bool", indexed: false, internalType: "bool" }, + { + "name": "authToken", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "timeToExpire", + "type": "uint256", + "internalType": "uint256" + } ], - anonymous: false, + "outputs": [ + { + "name": "message", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" }, - { type: "event", name: "EIP712DomainChanged", inputs: [], anonymous: false }, { - type: "event", - name: "OrderLocked", - inputs: [ - { name: "adId", type: "string", indexed: true, internalType: "string" }, + "type": "event", + "name": "AdClosed", + "inputs": [ { - name: "orderHash", - type: "bytes32", - indexed: true, - internalType: "bytes32", + "name": "adId", + "type": "string", + "indexed": true, + "internalType": "string" }, { - name: "maker", - type: "address", - indexed: false, - internalType: "address", - }, + "name": "maker", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "AdCreated", + "inputs": [ { - name: "token", - type: "address", - indexed: false, - internalType: "address", + "name": "adId", + "type": "string", + "indexed": true, + "internalType": "string" }, { - name: "amount", - type: "uint256", - indexed: false, - internalType: "uint256", + "name": "maker", + "type": "address", + "indexed": true, + "internalType": "address" }, { - name: "bridger", - type: "address", - indexed: false, - internalType: "address", + "name": "token", + "type": "address", + "indexed": true, + "internalType": "address" }, { - name: "recipient", - type: "address", - indexed: false, - internalType: "address", + "name": "initAmount", + "type": "uint256", + "indexed": false, + "internalType": "uint256" }, + { + "name": "orderChainId", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } ], - anonymous: false, + "anonymous": false }, { - type: "event", - name: "OrderUnlocked", - inputs: [ + "type": "event", + "name": "AdFunded", + "inputs": [ { - name: "orderHash", - type: "bytes32", - indexed: true, - internalType: "bytes32", + "name": "adId", + "type": "string", + "indexed": true, + "internalType": "string" }, { - name: "recipient", - type: "address", - indexed: true, - internalType: "address", + "name": "maker", + "type": "address", + "indexed": true, + "internalType": "address" }, { - name: "nullifierHash", - type: "bytes32", - indexed: false, - internalType: "bytes32", + "name": "amount", + "type": "uint256", + "indexed": false, + "internalType": "uint256" }, + { + "name": "newBalance", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } ], - anonymous: false, + "anonymous": false }, { - type: "event", - name: "RoleAdminChanged", - inputs: [ - { name: "role", type: "bytes32", indexed: true, internalType: "bytes32" }, + "type": "event", + "name": "AdWithdrawn", + "inputs": [ + { + "name": "adId", + "type": "string", + "indexed": true, + "internalType": "string" + }, { - name: "previousAdminRole", - type: "bytes32", - indexed: true, - internalType: "bytes32", + "name": "maker", + "type": "address", + "indexed": true, + "internalType": "address" }, { - name: "newAdminRole", - type: "bytes32", - indexed: true, - internalType: "bytes32", + "name": "amount", + "type": "uint256", + "indexed": false, + "internalType": "uint256" }, + { + "name": "newBalance", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } ], - anonymous: false, + "anonymous": false }, { - type: "event", - name: "RoleGranted", - inputs: [ - { name: "role", type: "bytes32", indexed: true, internalType: "bytes32" }, + "type": "event", + "name": "ChainSet", + "inputs": [ { - name: "account", - type: "address", - indexed: true, - internalType: "address", + "name": "chainId", + "type": "uint256", + "indexed": true, + "internalType": "uint256" }, { - name: "sender", - type: "address", - indexed: true, - internalType: "address", + "name": "orderPortal", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" }, + { + "name": "supported", + "type": "bool", + "indexed": false, + "internalType": "bool" + } ], - anonymous: false, + "anonymous": false }, { - type: "event", - name: "RoleRevoked", - inputs: [ - { name: "role", type: "bytes32", indexed: true, internalType: "bytes32" }, + "type": "event", + "name": "EIP712DomainChanged", + "inputs": [], + "anonymous": false + }, + { + "type": "event", + "name": "OrderLocked", + "inputs": [ + { + "name": "adId", + "type": "string", + "indexed": true, + "internalType": "string" + }, + { + "name": "orderHash", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" + }, { - name: "account", - type: "address", - indexed: true, - internalType: "address", + "name": "maker", + "type": "address", + "indexed": false, + "internalType": "address" }, { - name: "sender", - type: "address", - indexed: true, - internalType: "address", + "name": "token", + "type": "address", + "indexed": false, + "internalType": "address" }, + { + "name": "amount", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "bridger", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + }, + { + "name": "recipient", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + } ], - anonymous: false, + "anonymous": false }, { - type: "event", - name: "TokenRouteRemoved", - inputs: [ + "type": "event", + "name": "OrderUnlocked", + "inputs": [ { - name: "adToken", - type: "address", - indexed: true, - internalType: "address", + "name": "orderHash", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" }, { - name: "orderChainToken", - type: "address", - indexed: true, - internalType: "address", + "name": "recipient", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" }, { - name: "adChainId", - type: "uint256", - indexed: true, - internalType: "uint256", - }, + "name": "nullifierHash", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + } ], - anonymous: false, + "anonymous": false }, { - type: "event", - name: "TokenRouteSet", - inputs: [ + "type": "event", + "name": "RoleAdminChanged", + "inputs": [ { - name: "orderChainToken", - type: "address", - indexed: true, - internalType: "address", + "name": "role", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" }, { - name: "adChainId", - type: "uint256", - indexed: true, - internalType: "uint256", + "name": "previousAdminRole", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" + }, + { + "name": "newAdminRole", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "RoleGranted", + "inputs": [ + { + "name": "role", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" }, { - name: "adChainToken", - type: "address", - indexed: true, - internalType: "address", + "name": "account", + "type": "address", + "indexed": true, + "internalType": "address" }, + { + "name": "sender", + "type": "address", + "indexed": true, + "internalType": "address" + } ], - anonymous: false, + "anonymous": false }, { - type: "event", - name: "UpdateManager", - inputs: [ + "type": "event", + "name": "RoleRevoked", + "inputs": [ + { + "name": "role", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" + }, { - name: "manager", - type: "address", - indexed: true, - internalType: "address", + "name": "account", + "type": "address", + "indexed": true, + "internalType": "address" }, - { name: "status", type: "bool", indexed: false, internalType: "bool" }, + { + "name": "sender", + "type": "address", + "indexed": true, + "internalType": "address" + } ], - anonymous: false, + "anonymous": false }, - { type: "error", name: "AccessControlBadConfirmation", inputs: [] }, { - type: "error", - name: "AccessControlUnauthorizedAccount", - inputs: [ - { name: "account", type: "address", internalType: "address" }, - { name: "neededRole", type: "bytes32", internalType: "bytes32" }, + "type": "event", + "name": "TokenRouteRemoved", + "inputs": [ + { + "name": "adToken", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "orderChainToken", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" + }, + { + "name": "orderChainId", + "type": "uint256", + "indexed": true, + "internalType": "uint256" + } ], + "anonymous": false }, - { type: "error", name: "AdManager__AdClosed", inputs: [] }, - { type: "error", name: "AdManager__AdNotFound", inputs: [] }, { - type: "error", - name: "AdManager__AdRecipientMismatch", - inputs: [ - { name: "expected", type: "address", internalType: "address" }, - { name: "provided", type: "address", internalType: "address" }, + "type": "event", + "name": "TokenRouteSet", + "inputs": [ + { + "name": "adToken", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "orderChainId", + "type": "uint256", + "indexed": true, + "internalType": "uint256" + }, + { + "name": "orderChainToken", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" + } ], + "anonymous": false }, { - type: "error", - name: "AdManager__AdTokenMismatch", - inputs: [ - { name: "expected", type: "address", internalType: "address" }, - { name: "provided", type: "address", internalType: "address" }, + "type": "event", + "name": "UpdateManager", + "inputs": [ + { + "name": "manager", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "status", + "type": "bool", + "indexed": false, + "internalType": "bool" + } ], + "anonymous": false }, - { type: "error", name: "AdManager__BridgerZero", inputs: [] }, { - type: "error", - name: "AdManager__ChainNotSupported", - inputs: [{ name: "chainId", type: "uint256", internalType: "uint256" }], + "type": "error", + "name": "AccessControlBadConfirmation", + "inputs": [] }, - { type: "error", name: "AdManager__InsufficientLiquidity", inputs: [] }, - { type: "error", name: "AdManager__InvalidMessage", inputs: [] }, - { type: "error", name: "AdManager__InvalidProof", inputs: [] }, - { type: "error", name: "AdManager__MerkleManagerAppendFailed", inputs: [] }, { - type: "error", - name: "AdManager__MissingRoute", - inputs: [ - { name: "orderChainToken", type: "address", internalType: "address" }, - { name: "adChainId", type: "uint256", internalType: "uint256" }, - ], + "type": "error", + "name": "AccessControlUnauthorizedAccount", + "inputs": [ + { + "name": "account", + "type": "address", + "internalType": "address" + }, + { + "name": "neededRole", + "type": "bytes32", + "internalType": "bytes32" + } + ] }, - { type: "error", name: "AdManager__NotMaker", inputs: [] }, { - type: "error", - name: "AdManager__NullifierUsed", - inputs: [ - { name: "nullifierHash", type: "bytes32", internalType: "bytes32" }, - ], + "type": "error", + "name": "AdManager__AdClosed", + "inputs": [] }, { - type: "error", - name: "AdManager__OrderChainMismatch", - inputs: [ - { name: "expected", type: "uint256", internalType: "uint256" }, - { name: "provided", type: "uint256", internalType: "uint256" }, - ], + "type": "error", + "name": "AdManager__AdNotFound", + "inputs": [] }, { - type: "error", - name: "AdManager__OrderExists", - inputs: [{ name: "orderHash", type: "bytes32", internalType: "bytes32" }], + "type": "error", + "name": "AdManager__AdRecipientMismatch", + "inputs": [ + { + "name": "expected", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "provided", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "type": "error", + "name": "AdManager__AdTokenMismatch", + "inputs": [ + { + "name": "expected", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "provided", + "type": "bytes32", + "internalType": "bytes32" + } + ] }, { - type: "error", - name: "AdManager__OrderNotOpen", - inputs: [{ name: "orderHash", type: "bytes32", internalType: "bytes32" }], + "type": "error", + "name": "AdManager__BridgerZero", + "inputs": [] }, { - type: "error", - name: "AdManager__OrderPortalMismatch", - inputs: [ - { name: "expected", type: "address", internalType: "address" }, - { name: "provided", type: "address", internalType: "address" }, - ], + "type": "error", + "name": "AdManager__ChainNotSupported", + "inputs": [ + { + "name": "chainId", + "type": "uint256", + "internalType": "uint256" + } + ] }, { - type: "error", - name: "AdManager__OrderTokenMismatch", - inputs: [ - { name: "expected", type: "address", internalType: "address" }, - { name: "provided", type: "address", internalType: "address" }, - ], + "type": "error", + "name": "AdManager__InsufficientLiquidity", + "inputs": [] + }, + { + "type": "error", + "name": "AdManager__InvalidMessage", + "inputs": [] + }, + { + "type": "error", + "name": "AdManager__InvalidProof", + "inputs": [] + }, + { + "type": "error", + "name": "AdManager__MerkleManagerAppendFailed", + "inputs": [] + }, + { + "type": "error", + "name": "AdManager__MissingRoute", + "inputs": [ + { + "name": "orderChainToken", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "adChainId", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "type": "error", + "name": "AdManager__NotEvmAddress", + "inputs": [ + { + "name": "value", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "type": "error", + "name": "AdManager__NotMaker", + "inputs": [] + }, + { + "type": "error", + "name": "AdManager__NullifierUsed", + "inputs": [ + { + "name": "nullifierHash", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "type": "error", + "name": "AdManager__OrderChainMismatch", + "inputs": [ + { + "name": "expected", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "provided", + "type": "uint256", + "internalType": "uint256" + } + ] }, - { type: "error", name: "AdManager__RecipientZero", inputs: [] }, - { type: "error", name: "AdManager__RequestTokenExpired", inputs: [] }, - { type: "error", name: "AdManager__TokenAlreadyUsed", inputs: [] }, - { type: "error", name: "AdManager__TokenZeroAddress", inputs: [] }, - { type: "error", name: "AdManager__UsedAdId", inputs: [] }, - { type: "error", name: "AdManager__ZeroAddress", inputs: [] }, - { type: "error", name: "AdManager__ZeroAmount", inputs: [] }, - { type: "error", name: "Admanage__ZeroSigner", inputs: [] }, - { type: "error", name: "Admanager__ActiveLocks", inputs: [] }, - { type: "error", name: "Admanager__InvalidSigner", inputs: [] }, - { type: "error", name: "Admanager__RequestHashedProcessed", inputs: [] }, - { type: "error", name: "ECDSAInvalidSignature", inputs: [] }, { - type: "error", - name: "ECDSAInvalidSignatureLength", - inputs: [{ name: "length", type: "uint256", internalType: "uint256" }], + "type": "error", + "name": "AdManager__OrderExists", + "inputs": [ + { + "name": "orderHash", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "type": "error", + "name": "AdManager__OrderNotOpen", + "inputs": [ + { + "name": "orderHash", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "type": "error", + "name": "AdManager__OrderPortalMismatch", + "inputs": [ + { + "name": "expected", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "provided", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "type": "error", + "name": "AdManager__OrderTokenMismatch", + "inputs": [ + { + "name": "expected", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "provided", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "type": "error", + "name": "AdManager__RecipientZero", + "inputs": [] + }, + { + "type": "error", + "name": "AdManager__RequestTokenExpired", + "inputs": [] + }, + { + "type": "error", + "name": "AdManager__TokenAlreadyUsed", + "inputs": [] + }, + { + "type": "error", + "name": "AdManager__TokenZeroAddress", + "inputs": [] + }, + { + "type": "error", + "name": "AdManager__UsedAdId", + "inputs": [] }, { - type: "error", - name: "ECDSAInvalidSignatureS", - inputs: [{ name: "s", type: "bytes32", internalType: "bytes32" }], + "type": "error", + "name": "AdManager__ZeroAddress", + "inputs": [] }, - { type: "error", name: "InvalidShortString", inputs: [] }, - { type: "error", name: "ReentrancyGuardReentrantCall", inputs: [] }, { - type: "error", - name: "SafeERC20FailedOperation", - inputs: [{ name: "token", type: "address", internalType: "address" }], + "type": "error", + "name": "AdManager__ZeroAmount", + "inputs": [] }, { - type: "error", - name: "StringTooLong", - inputs: [{ name: "str", type: "string", internalType: "string" }], + "type": "error", + "name": "Admanage__ZeroSigner", + "inputs": [] }, -]; + { + "type": "error", + "name": "Admanager__ActiveLocks", + "inputs": [] + }, + { + "type": "error", + "name": "Admanager__InvalidSigner", + "inputs": [] + }, + { + "type": "error", + "name": "Admanager__RequestHashedProcessed", + "inputs": [] + }, + { + "type": "error", + "name": "ECDSAInvalidSignature", + "inputs": [] + }, + { + "type": "error", + "name": "ECDSAInvalidSignatureLength", + "inputs": [ + { + "name": "length", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "type": "error", + "name": "ECDSAInvalidSignatureS", + "inputs": [ + { + "name": "s", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "type": "error", + "name": "InvalidShortString", + "inputs": [] + }, + { + "type": "error", + "name": "ReentrancyGuardReentrantCall", + "inputs": [] + }, + { + "type": "error", + "name": "SafeERC20FailedOperation", + "inputs": [ + { + "name": "token", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "StringTooLong", + "inputs": [ + { + "name": "str", + "type": "string", + "internalType": "string" + } + ] + } +] as const; diff --git a/apps/frontend/abis/ERC20.abi.ts b/apps/frontend/abis/ERC20.abi.ts index 8d6179d..b78b2c5 100644 --- a/apps/frontend/abis/ERC20.abi.ts +++ b/apps/frontend/abis/ERC20.abi.ts @@ -1,222 +1,310 @@ export const ERC20_ABI = [ { - constant: true, - inputs: [], - name: "name", - outputs: [ + "type": "function", + "name": "allowance", + "inputs": [ { - name: "", - type: "string", + "name": "owner", + "type": "address", + "internalType": "address" }, + { + "name": "spender", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } ], - payable: false, - stateMutability: "view", - type: "function", + "stateMutability": "view" }, { - constant: false, - inputs: [ + "type": "function", + "name": "approve", + "inputs": [ { - name: "_spender", - type: "address", + "name": "spender", + "type": "address", + "internalType": "address" }, { - name: "_value", - type: "uint256", - }, + "name": "value", + "type": "uint256", + "internalType": "uint256" + } ], - name: "approve", - outputs: [ + "outputs": [ { - name: "", - type: "bool", - }, + "name": "", + "type": "bool", + "internalType": "bool" + } ], - payable: false, - stateMutability: "nonpayable", - type: "function", + "stateMutability": "nonpayable" }, { - constant: true, - inputs: [], - name: "totalSupply", - outputs: [ + "type": "function", + "name": "balanceOf", + "inputs": [ { - name: "", - type: "uint256", - }, + "name": "account", + "type": "address", + "internalType": "address" + } ], - payable: false, - stateMutability: "view", - type: "function", + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" }, { - constant: false, - inputs: [ - { - name: "_from", - type: "address", - }, + "type": "function", + "name": "decimals", + "inputs": [], + "outputs": [ { - name: "_to", - type: "address", - }, + "name": "", + "type": "uint8", + "internalType": "uint8" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "name", + "inputs": [], + "outputs": [ { - name: "_value", - type: "uint256", - }, + "name": "", + "type": "string", + "internalType": "string" + } ], - name: "transferFrom", - outputs: [ + "stateMutability": "view" + }, + { + "type": "function", + "name": "symbol", + "inputs": [], + "outputs": [ { - name: "", - type: "bool", - }, + "name": "", + "type": "string", + "internalType": "string" + } ], - payable: false, - stateMutability: "nonpayable", - type: "function", + "stateMutability": "view" }, { - constant: true, - inputs: [], - name: "decimals", - outputs: [ + "type": "function", + "name": "totalSupply", + "inputs": [], + "outputs": [ { - name: "", - type: "uint8", - }, + "name": "", + "type": "uint256", + "internalType": "uint256" + } ], - payable: false, - stateMutability: "view", - type: "function", + "stateMutability": "view" }, { - constant: true, - inputs: [ + "type": "function", + "name": "transfer", + "inputs": [ { - name: "_owner", - type: "address", + "name": "to", + "type": "address", + "internalType": "address" }, + { + "name": "value", + "type": "uint256", + "internalType": "uint256" + } ], - name: "balanceOf", - outputs: [ + "outputs": [ { - name: "balance", - type: "uint256", - }, + "name": "", + "type": "bool", + "internalType": "bool" + } ], - payable: false, - stateMutability: "view", - type: "function", + "stateMutability": "nonpayable" }, { - constant: true, - inputs: [], - name: "symbol", - outputs: [ + "type": "function", + "name": "transferFrom", + "inputs": [ { - name: "", - type: "string", + "name": "from", + "type": "address", + "internalType": "address" }, + { + "name": "to", + "type": "address", + "internalType": "address" + }, + { + "name": "value", + "type": "uint256", + "internalType": "uint256" + } ], - payable: false, - stateMutability: "view", - type: "function", + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "nonpayable" }, { - constant: false, - inputs: [ + "type": "event", + "name": "Approval", + "inputs": [ { - name: "_to", - type: "address", + "name": "owner", + "type": "address", + "indexed": true, + "internalType": "address" }, { - name: "_value", - type: "uint256", + "name": "spender", + "type": "address", + "indexed": true, + "internalType": "address" }, - ], - name: "transfer", - outputs: [ { - name: "", - type: "bool", - }, + "name": "value", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } ], - payable: false, - stateMutability: "nonpayable", - type: "function", + "anonymous": false }, { - constant: true, - inputs: [ + "type": "event", + "name": "Transfer", + "inputs": [ { - name: "_owner", - type: "address", + "name": "from", + "type": "address", + "indexed": true, + "internalType": "address" }, { - name: "_spender", - type: "address", + "name": "to", + "type": "address", + "indexed": true, + "internalType": "address" }, - ], - name: "allowance", - outputs: [ { - name: "", - type: "uint256", - }, + "name": "value", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } ], - payable: false, - stateMutability: "view", - type: "function", + "anonymous": false }, { - payable: true, - stateMutability: "payable", - type: "fallback", - }, - { - anonymous: false, - inputs: [ + "type": "error", + "name": "ERC20InsufficientAllowance", + "inputs": [ { - indexed: true, - name: "owner", - type: "address", + "name": "spender", + "type": "address", + "internalType": "address" }, { - indexed: true, - name: "spender", - type: "address", + "name": "allowance", + "type": "uint256", + "internalType": "uint256" }, { - indexed: false, - name: "value", - type: "uint256", - }, - ], - name: "Approval", - type: "event", + "name": "needed", + "type": "uint256", + "internalType": "uint256" + } + ] }, { - anonymous: false, - inputs: [ + "type": "error", + "name": "ERC20InsufficientBalance", + "inputs": [ { - indexed: true, - name: "from", - type: "address", + "name": "sender", + "type": "address", + "internalType": "address" }, { - indexed: true, - name: "to", - type: "address", + "name": "balance", + "type": "uint256", + "internalType": "uint256" }, { - indexed: false, - name: "value", - type: "uint256", - }, - ], - name: "Transfer", - type: "event", + "name": "needed", + "type": "uint256", + "internalType": "uint256" + } + ] }, -] + { + "type": "error", + "name": "ERC20InvalidApprover", + "inputs": [ + { + "name": "approver", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "ERC20InvalidReceiver", + "inputs": [ + { + "name": "receiver", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "ERC20InvalidSender", + "inputs": [ + { + "name": "sender", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "ERC20InvalidSpender", + "inputs": [ + { + "name": "spender", + "type": "address", + "internalType": "address" + } + ] + } +] as const; diff --git a/apps/frontend/abis/orderPortal.abi.ts b/apps/frontend/abis/orderPortal.abi.ts index c7d99a4..d66cf75 100644 --- a/apps/frontend/abis/orderPortal.abi.ts +++ b/apps/frontend/abis/orderPortal.abi.ts @@ -1,726 +1,1458 @@ export const ORDER_PORTAL_ABI = [ { - type: "constructor", - inputs: [ - { name: "admin", type: "address", internalType: "address" }, + "type": "constructor", + "inputs": [ { - name: "_verifier", - type: "address", - internalType: "contract IVerifier", + "name": "admin", + "type": "address", + "internalType": "address" }, { - name: "_merkleManager", - type: "address", - internalType: "contract IMerkleManager", + "name": "_verifier", + "type": "address", + "internalType": "contract IVerifier" }, { - name: "_wNativeToken", - type: "address", - internalType: "contract IwNativeToken", + "name": "_merkleManager", + "type": "address", + "internalType": "contract IMerkleManager" }, + { + "name": "_wNativeToken", + "type": "address", + "internalType": "contract IwNativeToken" + } ], - stateMutability: "nonpayable", + "stateMutability": "nonpayable" }, - { type: "fallback", stateMutability: "payable" }, - { type: "receive", stateMutability: "payable" }, { - type: "function", - name: "ADMIN_ROLE", - inputs: [], - outputs: [{ name: "", type: "bytes32", internalType: "bytes32" }], - stateMutability: "view", + "type": "fallback", + "stateMutability": "payable" }, { - type: "function", - name: "DEFAULT_ADMIN_ROLE", - inputs: [], - outputs: [{ name: "", type: "bytes32", internalType: "bytes32" }], - stateMutability: "view", + "type": "receive", + "stateMutability": "payable" }, { - type: "function", - name: "DOMAIN_TYPEHASH_MIN", - inputs: [], - outputs: [{ name: "", type: "bytes32", internalType: "bytes32" }], - stateMutability: "view", + "type": "function", + "name": "ADMIN_ROLE", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" }, { - type: "function", - name: "NATIVE_TOKEN_ADDRESS", - inputs: [], - outputs: [{ name: "", type: "address", internalType: "address" }], - stateMutability: "view", + "type": "function", + "name": "DEFAULT_ADMIN_ROLE", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" }, { - type: "function", - name: "ORDER_TYPEHASH", - inputs: [], - outputs: [{ name: "", type: "bytes32", internalType: "bytes32" }], - stateMutability: "view", + "type": "function", + "name": "DOMAIN_TYPEHASH_MIN", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" }, { - type: "function", - name: "chains", - inputs: [{ name: "", type: "uint256", internalType: "uint256" }], - outputs: [ - { name: "supported", type: "bool", internalType: "bool" }, - { name: "adManager", type: "address", internalType: "address" }, + "type": "function", + "name": "NATIVE_TOKEN_ADDRESS", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } ], - stateMutability: "view", + "stateMutability": "view" }, { - type: "function", - name: "checkRequestHashExists", - inputs: [{ name: "message", type: "bytes32", internalType: "bytes32" }], - outputs: [{ name: "", type: "bool", internalType: "bool" }], - stateMutability: "view", + "type": "function", + "name": "ORDER_TYPEHASH", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" }, { - type: "function", - name: "createOrder", - inputs: [ - { name: "signature", type: "bytes", internalType: "bytes" }, - { name: "authToken", type: "bytes32", internalType: "bytes32" }, - { name: "timeToExpire", type: "uint256", internalType: "uint256" }, + "type": "function", + "name": "chains", + "inputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ { - name: "params", - type: "tuple", - internalType: "struct OrderPortal.OrderParams", - components: [ - { name: "orderChainToken", type: "address", internalType: "address" }, - { name: "adChainToken", type: "address", internalType: "address" }, - { name: "amount", type: "uint256", internalType: "uint256" }, - { name: "bridger", type: "address", internalType: "address" }, - { name: "orderRecipient", type: "address", internalType: "address" }, - { name: "adChainId", type: "uint256", internalType: "uint256" }, - { name: "adManager", type: "address", internalType: "address" }, - { name: "adId", type: "string", internalType: "string" }, - { name: "adCreator", type: "address", internalType: "address" }, - { name: "adRecipient", type: "address", internalType: "address" }, - { name: "salt", type: "uint256", internalType: "uint256" }, - ], + "name": "supported", + "type": "bool", + "internalType": "bool" }, + { + "name": "adManager", + "type": "bytes32", + "internalType": "bytes32" + } ], - outputs: [{ name: "orderHash", type: "bytes32", internalType: "bytes32" }], - stateMutability: "payable", + "stateMutability": "view" }, { - type: "function", - name: "createOrderRequestHash", - inputs: [ - { name: "adId", type: "string", internalType: "string" }, - { name: "orderHash", type: "bytes32", internalType: "bytes32" }, - { name: "authToken", type: "bytes32", internalType: "bytes32" }, - { name: "timeToExpire", type: "uint256", internalType: "uint256" }, + "type": "function", + "name": "checkRequestHashExists", + "inputs": [ + { + "name": "message", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } ], - outputs: [{ name: "message", type: "bytes32", internalType: "bytes32" }], - stateMutability: "view", + "stateMutability": "view" }, { - type: "function", - name: "eip712Domain", - inputs: [], - outputs: [ - { name: "fields", type: "bytes1", internalType: "bytes1" }, - { name: "name", type: "string", internalType: "string" }, - { name: "version", type: "string", internalType: "string" }, - { name: "chainId", type: "uint256", internalType: "uint256" }, - { name: "verifyingContract", type: "address", internalType: "address" }, - { name: "salt", type: "bytes32", internalType: "bytes32" }, - { name: "extensions", type: "uint256[]", internalType: "uint256[]" }, + "type": "function", + "name": "createOrder", + "inputs": [ + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "authToken", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "timeToExpire", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "params", + "type": "tuple", + "internalType": "struct OrderPortal.OrderParams", + "components": [ + { + "name": "orderChainToken", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "adChainToken", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "bridger", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "orderRecipient", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "adChainId", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "adManager", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "adId", + "type": "string", + "internalType": "string" + }, + { + "name": "adCreator", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "adRecipient", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "salt", + "type": "uint256", + "internalType": "uint256" + } + ] + } ], - stateMutability: "view", + "outputs": [ + { + "name": "orderHash", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "payable" }, { - type: "function", - name: "getChainID", - inputs: [], - outputs: [{ name: "", type: "uint256", internalType: "uint256" }], - stateMutability: "view", + "type": "function", + "name": "createOrderRequestHash", + "inputs": [ + { + "name": "adId", + "type": "string", + "internalType": "string" + }, + { + "name": "orderHash", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "authToken", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "timeToExpire", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "message", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" }, { - type: "function", - name: "getDestToken", - inputs: [ - { name: "orderToken", type: "address", internalType: "address" }, - { name: "adChainId", type: "uint256", internalType: "uint256" }, + "type": "function", + "name": "eip712Domain", + "inputs": [], + "outputs": [ + { + "name": "fields", + "type": "bytes1", + "internalType": "bytes1" + }, + { + "name": "name", + "type": "string", + "internalType": "string" + }, + { + "name": "version", + "type": "string", + "internalType": "string" + }, + { + "name": "chainId", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "verifyingContract", + "type": "address", + "internalType": "address" + }, + { + "name": "salt", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "extensions", + "type": "uint256[]", + "internalType": "uint256[]" + } ], - outputs: [ - { name: "adChainToken", type: "address", internalType: "address" }, + "stateMutability": "view" + }, + { + "type": "function", + "name": "getChainID", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } ], - stateMutability: "view", + "stateMutability": "view" }, { - type: "function", - name: "getHistoricalRoot", - inputs: [{ name: "index", type: "uint256", internalType: "uint256" }], - outputs: [{ name: "root", type: "bytes32", internalType: "bytes32" }], - stateMutability: "view", + "type": "function", + "name": "getDestToken", + "inputs": [ + { + "name": "orderToken", + "type": "address", + "internalType": "address" + }, + { + "name": "adChainId", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "adChainToken", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" }, { - type: "function", - name: "getLatestMerkleRoot", - inputs: [], - outputs: [{ name: "root", type: "bytes32", internalType: "bytes32" }], - stateMutability: "view", + "type": "function", + "name": "getHistoricalRoot", + "inputs": [ + { + "name": "index", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "root", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" }, { - type: "function", - name: "getMerkleLeafCount", - inputs: [], - outputs: [{ name: "count", type: "uint256", internalType: "uint256" }], - stateMutability: "view", + "type": "function", + "name": "getLatestMerkleRoot", + "inputs": [], + "outputs": [ + { + "name": "root", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" }, { - type: "function", - name: "getRoleAdmin", - inputs: [{ name: "role", type: "bytes32", internalType: "bytes32" }], - outputs: [{ name: "", type: "bytes32", internalType: "bytes32" }], - stateMutability: "view", + "type": "function", + "name": "getMerkleLeafCount", + "inputs": [], + "outputs": [ + { + "name": "count", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" }, { - type: "function", - name: "getSigner", - inputs: [ - { name: "message", type: "bytes32", internalType: "bytes32" }, - { name: "signature", type: "bytes", internalType: "bytes" }, + "type": "function", + "name": "getRoleAdmin", + "inputs": [ + { + "name": "role", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } ], - outputs: [{ name: "", type: "address", internalType: "address" }], - stateMutability: "pure", + "stateMutability": "view" }, { - type: "function", - name: "grantRole", - inputs: [ - { name: "role", type: "bytes32", internalType: "bytes32" }, - { name: "account", type: "address", internalType: "address" }, + "type": "function", + "name": "getSigner", + "inputs": [ + { + "name": "message", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + } ], - outputs: [], - stateMutability: "nonpayable", + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "pure" }, { - type: "function", - name: "hasRole", - inputs: [ - { name: "role", type: "bytes32", internalType: "bytes32" }, - { name: "account", type: "address", internalType: "address" }, + "type": "function", + "name": "grantRole", + "inputs": [ + { + "name": "role", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "account", + "type": "address", + "internalType": "address" + } ], - outputs: [{ name: "", type: "bool", internalType: "bool" }], - stateMutability: "view", + "outputs": [], + "stateMutability": "nonpayable" }, { - type: "function", - name: "hashRequest", - inputs: [ - { name: "authToken", type: "bytes32", internalType: "bytes32" }, - { name: "timeToExpire", type: "uint256", internalType: "uint256" }, - { name: "_action", type: "string", internalType: "string" }, - { name: "_params", type: "bytes[]", internalType: "bytes[]" }, + "type": "function", + "name": "hasRole", + "inputs": [ + { + "name": "role", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "account", + "type": "address", + "internalType": "address" + } ], - outputs: [{ name: "", type: "bytes32", internalType: "bytes32" }], - stateMutability: "view", + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" }, { - type: "function", - name: "i_merkleManager", - inputs: [], - outputs: [ - { name: "", type: "address", internalType: "contract IMerkleManager" }, + "type": "function", + "name": "hashRequest", + "inputs": [ + { + "name": "authToken", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "timeToExpire", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "_action", + "type": "string", + "internalType": "string" + }, + { + "name": "_params", + "type": "bytes[]", + "internalType": "bytes[]" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } ], - stateMutability: "view", + "stateMutability": "view" }, { - type: "function", - name: "i_verifier", - inputs: [], - outputs: [ - { name: "", type: "address", internalType: "contract IVerifier" }, + "type": "function", + "name": "i_merkleManager", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IMerkleManager" + } ], - stateMutability: "view", + "stateMutability": "view" }, { - type: "function", - name: "managers", - inputs: [{ name: "", type: "address", internalType: "address" }], - outputs: [{ name: "", type: "bool", internalType: "bool" }], - stateMutability: "view", + "type": "function", + "name": "i_verifier", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IVerifier" + } + ], + "stateMutability": "view" }, { - type: "function", - name: "nullifierUsed", - inputs: [{ name: "", type: "bytes32", internalType: "bytes32" }], - outputs: [{ name: "", type: "bool", internalType: "bool" }], - stateMutability: "view", + "type": "function", + "name": "managers", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" }, { - type: "function", - name: "orders", - inputs: [{ name: "", type: "bytes32", internalType: "bytes32" }], - outputs: [ - { name: "", type: "uint8", internalType: "enum OrderPortal.Status" }, + "type": "function", + "name": "nullifierUsed", + "inputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } ], - stateMutability: "view", + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" }, { - type: "function", - name: "removeChain", - inputs: [{ name: "adChainId", type: "uint256", internalType: "uint256" }], - outputs: [], - stateMutability: "nonpayable", + "type": "function", + "name": "orders", + "inputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [ + { + "name": "", + "type": "uint8", + "internalType": "enum OrderPortal.Status" + } + ], + "stateMutability": "view" }, { - type: "function", - name: "removeTokenRoute", - inputs: [ - { name: "orderToken", type: "address", internalType: "address" }, - { name: "adChainId", type: "uint256", internalType: "uint256" }, + "type": "function", + "name": "removeChain", + "inputs": [ + { + "name": "adChainId", + "type": "uint256", + "internalType": "uint256" + } ], - outputs: [], - stateMutability: "nonpayable", + "outputs": [], + "stateMutability": "nonpayable" }, { - type: "function", - name: "renounceRole", - inputs: [ - { name: "role", type: "bytes32", internalType: "bytes32" }, - { name: "callerConfirmation", type: "address", internalType: "address" }, + "type": "function", + "name": "removeTokenRoute", + "inputs": [ + { + "name": "orderToken", + "type": "address", + "internalType": "address" + }, + { + "name": "adChainId", + "type": "uint256", + "internalType": "uint256" + } ], - outputs: [], - stateMutability: "nonpayable", + "outputs": [], + "stateMutability": "nonpayable" }, { - type: "function", - name: "requestHashes", - inputs: [{ name: "", type: "bytes32", internalType: "bytes32" }], - outputs: [{ name: "", type: "bool", internalType: "bool" }], - stateMutability: "view", + "type": "function", + "name": "renounceRole", + "inputs": [ + { + "name": "role", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "callerConfirmation", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" }, { - type: "function", - name: "requestTokens", - inputs: [{ name: "", type: "bytes32", internalType: "bytes32" }], - outputs: [{ name: "", type: "bool", internalType: "bool" }], - stateMutability: "view", + "type": "function", + "name": "requestHashes", + "inputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" }, { - type: "function", - name: "revokeRole", - inputs: [ - { name: "role", type: "bytes32", internalType: "bytes32" }, - { name: "account", type: "address", internalType: "address" }, + "type": "function", + "name": "requestTokens", + "inputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } ], - outputs: [], - stateMutability: "nonpayable", + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" }, { - type: "function", - name: "setChain", - inputs: [ - { name: "adChainId", type: "uint256", internalType: "uint256" }, - { name: "adManager", type: "address", internalType: "address" }, - { name: "supported", type: "bool", internalType: "bool" }, + "type": "function", + "name": "revokeRole", + "inputs": [ + { + "name": "role", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "account", + "type": "address", + "internalType": "address" + } ], - outputs: [], - stateMutability: "nonpayable", + "outputs": [], + "stateMutability": "nonpayable" }, { - type: "function", - name: "setManager", - inputs: [ - { name: "_manager", type: "address", internalType: "address" }, - { name: "_status", type: "bool", internalType: "bool" }, + "type": "function", + "name": "setChain", + "inputs": [ + { + "name": "adChainId", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "adManager", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "supported", + "type": "bool", + "internalType": "bool" + } ], - outputs: [], - stateMutability: "nonpayable", + "outputs": [], + "stateMutability": "nonpayable" }, { - type: "function", - name: "setTokenRoute", - inputs: [ - { name: "orderToken", type: "address", internalType: "address" }, - { name: "adChainId", type: "uint256", internalType: "uint256" }, - { name: "adToken", type: "address", internalType: "address" }, + "type": "function", + "name": "setManager", + "inputs": [ + { + "name": "_manager", + "type": "address", + "internalType": "address" + }, + { + "name": "_status", + "type": "bool", + "internalType": "bool" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "setTokenRoute", + "inputs": [ + { + "name": "orderToken", + "type": "address", + "internalType": "address" + }, + { + "name": "adChainId", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "adToken", + "type": "bytes32", + "internalType": "bytes32" + } ], - outputs: [], - stateMutability: "nonpayable", + "outputs": [], + "stateMutability": "nonpayable" }, { - type: "function", - name: "supportsInterface", - inputs: [{ name: "interfaceId", type: "bytes4", internalType: "bytes4" }], - outputs: [{ name: "", type: "bool", internalType: "bool" }], - stateMutability: "view", + "type": "function", + "name": "supportsInterface", + "inputs": [ + { + "name": "interfaceId", + "type": "bytes4", + "internalType": "bytes4" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" }, { - type: "function", - name: "tokenRoute", - inputs: [ - { name: "", type: "address", internalType: "address" }, - { name: "", type: "uint256", internalType: "uint256" }, + "type": "function", + "name": "tokenRoute", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } ], - outputs: [{ name: "", type: "address", internalType: "address" }], - stateMutability: "view", + "stateMutability": "view" }, { - type: "function", - name: "unlock", - inputs: [ - { name: "signature", type: "bytes", internalType: "bytes" }, - { name: "authToken", type: "bytes32", internalType: "bytes32" }, - { name: "timeToExpire", type: "uint256", internalType: "uint256" }, + "type": "function", + "name": "unlock", + "inputs": [ + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "authToken", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "timeToExpire", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "params", + "type": "tuple", + "internalType": "struct OrderPortal.OrderParams", + "components": [ + { + "name": "orderChainToken", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "adChainToken", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "bridger", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "orderRecipient", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "adChainId", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "adManager", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "adId", + "type": "string", + "internalType": "string" + }, + { + "name": "adCreator", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "adRecipient", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "salt", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "nullifierHash", + "type": "bytes32", + "internalType": "bytes32" + }, { - name: "params", - type: "tuple", - internalType: "struct OrderPortal.OrderParams", - components: [ - { name: "orderChainToken", type: "address", internalType: "address" }, - { name: "adChainToken", type: "address", internalType: "address" }, - { name: "amount", type: "uint256", internalType: "uint256" }, - { name: "bridger", type: "address", internalType: "address" }, - { name: "orderRecipient", type: "address", internalType: "address" }, - { name: "adChainId", type: "uint256", internalType: "uint256" }, - { name: "adManager", type: "address", internalType: "address" }, - { name: "adId", type: "string", internalType: "string" }, - { name: "adCreator", type: "address", internalType: "address" }, - { name: "adRecipient", type: "address", internalType: "address" }, - { name: "salt", type: "uint256", internalType: "uint256" }, - ], + "name": "targetRoot", + "type": "bytes32", + "internalType": "bytes32" }, - { name: "nullifierHash", type: "bytes32", internalType: "bytes32" }, - { name: "targetRoot", type: "bytes32", internalType: "bytes32" }, - { name: "proof", type: "bytes", internalType: "bytes" }, + { + "name": "proof", + "type": "bytes", + "internalType": "bytes" + } ], - outputs: [], - stateMutability: "payable", + "outputs": [], + "stateMutability": "payable" }, { - type: "function", - name: "unlockOrderRequestHash", - inputs: [ - { name: "adId", type: "string", internalType: "string" }, - { name: "orderHash", type: "bytes32", internalType: "bytes32" }, - { name: "_targetRoot", type: "bytes32", internalType: "bytes32" }, - { name: "authToken", type: "bytes32", internalType: "bytes32" }, - { name: "timeToExpire", type: "uint256", internalType: "uint256" }, + "type": "function", + "name": "unlockOrderRequestHash", + "inputs": [ + { + "name": "adId", + "type": "string", + "internalType": "string" + }, + { + "name": "orderHash", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "_targetRoot", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "authToken", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "timeToExpire", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "message", + "type": "bytes32", + "internalType": "bytes32" + } ], - outputs: [{ name: "message", type: "bytes32", internalType: "bytes32" }], - stateMutability: "view", + "stateMutability": "view" }, { - type: "function", - name: "wNativeToken", - inputs: [], - outputs: [ - { name: "", type: "address", internalType: "contract IwNativeToken" }, + "type": "function", + "name": "wNativeToken", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IwNativeToken" + } ], - stateMutability: "view", + "stateMutability": "view" }, { - type: "event", - name: "ChainSet", - inputs: [ + "type": "event", + "name": "ChainSet", + "inputs": [ { - name: "chainId", - type: "uint256", - indexed: true, - internalType: "uint256", + "name": "chainId", + "type": "uint256", + "indexed": true, + "internalType": "uint256" }, { - name: "adManager", - type: "address", - indexed: true, - internalType: "address", + "name": "adManager", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" }, - { name: "supported", type: "bool", indexed: false, internalType: "bool" }, + { + "name": "supported", + "type": "bool", + "indexed": false, + "internalType": "bool" + } ], - anonymous: false, + "anonymous": false + }, + { + "type": "event", + "name": "EIP712DomainChanged", + "inputs": [], + "anonymous": false }, - { type: "event", name: "EIP712DomainChanged", inputs: [], anonymous: false }, { - type: "event", - name: "OrderCreated", - inputs: [ + "type": "event", + "name": "OrderCreated", + "inputs": [ { - name: "orderHash", - type: "bytes32", - indexed: true, - internalType: "bytes32", + "name": "orderHash", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" }, { - name: "bridger", - type: "address", - indexed: true, - internalType: "address", + "name": "bridger", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" }, { - name: "orderChainToken", - type: "address", - indexed: true, - internalType: "address", + "name": "orderChainToken", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" }, { - name: "amount", - type: "uint256", - indexed: false, - internalType: "uint256", + "name": "amount", + "type": "uint256", + "indexed": false, + "internalType": "uint256" }, { - name: "adChainId", - type: "uint256", - indexed: false, - internalType: "uint256", + "name": "adChainId", + "type": "uint256", + "indexed": false, + "internalType": "uint256" }, { - name: "adChainToken", - type: "address", - indexed: false, - internalType: "address", + "name": "adChainToken", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" }, { - name: "adManager", - type: "address", - indexed: false, - internalType: "address", + "name": "adManager", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" }, - { name: "adId", type: "string", indexed: false, internalType: "string" }, { - name: "adCreator", - type: "address", - indexed: false, - internalType: "address", + "name": "adId", + "type": "string", + "indexed": false, + "internalType": "string" }, { - name: "adRecipient", - type: "address", - indexed: false, - internalType: "address", + "name": "adCreator", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" }, + { + "name": "adRecipient", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + } ], - anonymous: false, + "anonymous": false }, { - type: "event", - name: "OrderUnlocked", - inputs: [ + "type": "event", + "name": "OrderUnlocked", + "inputs": [ { - name: "orderHash", - type: "bytes32", - indexed: true, - internalType: "bytes32", + "name": "orderHash", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" }, { - name: "recipient", - type: "address", - indexed: true, - internalType: "address", + "name": "recipient", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" }, { - name: "nullifierHash", - type: "bytes32", - indexed: true, - internalType: "bytes32", - }, + "name": "nullifierHash", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" + } ], - anonymous: false, + "anonymous": false }, { - type: "event", - name: "RoleAdminChanged", - inputs: [ - { name: "role", type: "bytes32", indexed: true, internalType: "bytes32" }, + "type": "event", + "name": "RoleAdminChanged", + "inputs": [ { - name: "previousAdminRole", - type: "bytes32", - indexed: true, - internalType: "bytes32", + "name": "role", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" }, { - name: "newAdminRole", - type: "bytes32", - indexed: true, - internalType: "bytes32", + "name": "previousAdminRole", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" }, + { + "name": "newAdminRole", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" + } ], - anonymous: false, + "anonymous": false }, { - type: "event", - name: "RoleGranted", - inputs: [ - { name: "role", type: "bytes32", indexed: true, internalType: "bytes32" }, + "type": "event", + "name": "RoleGranted", + "inputs": [ { - name: "account", - type: "address", - indexed: true, - internalType: "address", + "name": "role", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" }, { - name: "sender", - type: "address", - indexed: true, - internalType: "address", + "name": "account", + "type": "address", + "indexed": true, + "internalType": "address" }, + { + "name": "sender", + "type": "address", + "indexed": true, + "internalType": "address" + } ], - anonymous: false, + "anonymous": false }, { - type: "event", - name: "RoleRevoked", - inputs: [ - { name: "role", type: "bytes32", indexed: true, internalType: "bytes32" }, + "type": "event", + "name": "RoleRevoked", + "inputs": [ { - name: "account", - type: "address", - indexed: true, - internalType: "address", + "name": "role", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" }, { - name: "sender", - type: "address", - indexed: true, - internalType: "address", + "name": "account", + "type": "address", + "indexed": true, + "internalType": "address" }, + { + "name": "sender", + "type": "address", + "indexed": true, + "internalType": "address" + } ], - anonymous: false, + "anonymous": false }, { - type: "event", - name: "TokenRouteRemoved", - inputs: [ + "type": "event", + "name": "TokenRouteRemoved", + "inputs": [ { - name: "orderChainToken", - type: "address", - indexed: true, - internalType: "address", + "name": "orderChainToken", + "type": "address", + "indexed": true, + "internalType": "address" }, { - name: "adChainId", - type: "uint256", - indexed: true, - internalType: "uint256", - }, + "name": "adChainId", + "type": "uint256", + "indexed": true, + "internalType": "uint256" + } ], - anonymous: false, + "anonymous": false }, { - type: "event", - name: "TokenRouteSet", - inputs: [ + "type": "event", + "name": "TokenRouteSet", + "inputs": [ { - name: "orderChainToken", - type: "address", - indexed: true, - internalType: "address", + "name": "orderChainToken", + "type": "address", + "indexed": true, + "internalType": "address" }, { - name: "adChainId", - type: "uint256", - indexed: true, - internalType: "uint256", + "name": "adChainId", + "type": "uint256", + "indexed": true, + "internalType": "uint256" }, { - name: "adChainToken", - type: "address", - indexed: true, - internalType: "address", - }, + "name": "adChainToken", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" + } ], - anonymous: false, + "anonymous": false }, { - type: "event", - name: "UpdateManager", - inputs: [ + "type": "event", + "name": "UpdateManager", + "inputs": [ { - name: "manager", - type: "address", - indexed: true, - internalType: "address", + "name": "manager", + "type": "address", + "indexed": true, + "internalType": "address" }, - { name: "status", type: "bool", indexed: false, internalType: "bool" }, + { + "name": "status", + "type": "bool", + "indexed": false, + "internalType": "bool" + } ], - anonymous: false, + "anonymous": false }, - { type: "error", name: "AccessControlBadConfirmation", inputs: [] }, { - type: "error", - name: "AccessControlUnauthorizedAccount", - inputs: [ - { name: "account", type: "address", internalType: "address" }, - { name: "neededRole", type: "bytes32", internalType: "bytes32" }, - ], + "type": "error", + "name": "AccessControlBadConfirmation", + "inputs": [] }, - { type: "error", name: "ECDSAInvalidSignature", inputs: [] }, { - type: "error", - name: "ECDSAInvalidSignatureLength", - inputs: [{ name: "length", type: "uint256", internalType: "uint256" }], + "type": "error", + "name": "AccessControlUnauthorizedAccount", + "inputs": [ + { + "name": "account", + "type": "address", + "internalType": "address" + }, + { + "name": "neededRole", + "type": "bytes32", + "internalType": "bytes32" + } + ] }, { - type: "error", - name: "ECDSAInvalidSignatureS", - inputs: [{ name: "s", type: "bytes32", internalType: "bytes32" }], + "type": "error", + "name": "ECDSAInvalidSignature", + "inputs": [] }, - { type: "error", name: "InvalidShortString", inputs: [] }, { - type: "error", - name: "OrderPortal__AdChainNotSupported", - inputs: [{ name: "adChainId", type: "uint256", internalType: "uint256" }], + "type": "error", + "name": "ECDSAInvalidSignatureLength", + "inputs": [ + { + "name": "length", + "type": "uint256", + "internalType": "uint256" + } + ] }, { - type: "error", - name: "OrderPortal__AdManagerMismatch", - inputs: [{ name: "expected", type: "address", internalType: "address" }], + "type": "error", + "name": "ECDSAInvalidSignatureS", + "inputs": [ + { + "name": "s", + "type": "bytes32", + "internalType": "bytes32" + } + ] }, - { type: "error", name: "OrderPortal__AdTokenMismatch", inputs: [] }, - { type: "error", name: "OrderPortal__BridgerMustBeSender", inputs: [] }, - { type: "error", name: "OrderPortal__InsufficientLiquidity", inputs: [] }, - { type: "error", name: "OrderPortal__InvalidAdRecipient", inputs: [] }, - { type: "error", name: "OrderPortal__InvalidMessage", inputs: [] }, - { type: "error", name: "OrderPortal__InvalidProof", inputs: [] }, - { type: "error", name: "OrderPortal__InvalidSigner", inputs: [] }, - { type: "error", name: "OrderPortal__MerkleManagerAppendFailed", inputs: [] }, - { type: "error", name: "OrderPortal__MissingRoute", inputs: [] }, { - type: "error", - name: "OrderPortal__NullifierUsed", - inputs: [ - { name: "nullifierHash", type: "bytes32", internalType: "bytes32" }, - ], + "type": "error", + "name": "InvalidShortString", + "inputs": [] }, { - type: "error", - name: "OrderPortal__OrderExists", - inputs: [{ name: "orderHash", type: "bytes32", internalType: "bytes32" }], + "type": "error", + "name": "OrderPortal__AdChainNotSupported", + "inputs": [ + { + "name": "adChainId", + "type": "uint256", + "internalType": "uint256" + } + ] }, { - type: "error", - name: "OrderPortal__OrderNotOpen", - inputs: [{ name: "orderHash", type: "bytes32", internalType: "bytes32" }], + "type": "error", + "name": "OrderPortal__AdManagerMismatch", + "inputs": [ + { + "name": "expected", + "type": "bytes32", + "internalType": "bytes32" + } + ] }, - { type: "error", name: "OrderPortal__RequestHashedProcessed", inputs: [] }, - { type: "error", name: "OrderPortal__RequestTokenExpired", inputs: [] }, { - type: "error", - name: "OrderPortal__RoutesZeroAddress", - inputs: [ - { name: "orderToken", type: "address", internalType: "address" }, - { name: "adToken", type: "address", internalType: "address" }, - ], + "type": "error", + "name": "OrderPortal__AdTokenMismatch", + "inputs": [] + }, + { + "type": "error", + "name": "OrderPortal__BridgerMustBeSender", + "inputs": [] + }, + { + "type": "error", + "name": "OrderPortal__InsufficientLiquidity", + "inputs": [] }, - { type: "error", name: "OrderPortal__TokenAlreadyUsed", inputs: [] }, - { type: "error", name: "OrderPortal__ZeroAddress", inputs: [] }, - { type: "error", name: "OrderPortal__ZeroAmount", inputs: [] }, - { type: "error", name: "OrderPortal__ZeroSigner", inputs: [] }, - { type: "error", name: "ReentrancyGuardReentrantCall", inputs: [] }, { - type: "error", - name: "SafeERC20FailedOperation", - inputs: [{ name: "token", type: "address", internalType: "address" }], + "type": "error", + "name": "OrderPortal__InvalidAdRecipient", + "inputs": [] }, { - type: "error", - name: "StringTooLong", - inputs: [{ name: "str", type: "string", internalType: "string" }], + "type": "error", + "name": "OrderPortal__InvalidMessage", + "inputs": [] }, -]; + { + "type": "error", + "name": "OrderPortal__InvalidProof", + "inputs": [] + }, + { + "type": "error", + "name": "OrderPortal__InvalidSigner", + "inputs": [] + }, + { + "type": "error", + "name": "OrderPortal__MerkleManagerAppendFailed", + "inputs": [] + }, + { + "type": "error", + "name": "OrderPortal__MissingRoute", + "inputs": [] + }, + { + "type": "error", + "name": "OrderPortal__NotEvmAddress", + "inputs": [ + { + "name": "value", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "type": "error", + "name": "OrderPortal__NullifierUsed", + "inputs": [ + { + "name": "nullifierHash", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "type": "error", + "name": "OrderPortal__OrderExists", + "inputs": [ + { + "name": "orderHash", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "type": "error", + "name": "OrderPortal__OrderNotOpen", + "inputs": [ + { + "name": "orderHash", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "type": "error", + "name": "OrderPortal__RequestHashedProcessed", + "inputs": [] + }, + { + "type": "error", + "name": "OrderPortal__RequestTokenExpired", + "inputs": [] + }, + { + "type": "error", + "name": "OrderPortal__RoutesZeroAddress", + "inputs": [ + { + "name": "orderToken", + "type": "address", + "internalType": "address" + }, + { + "name": "adToken", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "type": "error", + "name": "OrderPortal__TokenAlreadyUsed", + "inputs": [] + }, + { + "type": "error", + "name": "OrderPortal__ZeroAddress", + "inputs": [] + }, + { + "type": "error", + "name": "OrderPortal__ZeroAmount", + "inputs": [] + }, + { + "type": "error", + "name": "OrderPortal__ZeroSigner", + "inputs": [] + }, + { + "type": "error", + "name": "ReentrancyGuardReentrantCall", + "inputs": [] + }, + { + "type": "error", + "name": "SafeERC20FailedOperation", + "inputs": [ + { + "name": "token", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "StringTooLong", + "inputs": [ + { + "name": "str", + "type": "string", + "internalType": "string" + } + ] + } +] as const; diff --git a/apps/frontend/app/(app)/(auth-protected)/faucet/page.tsx b/apps/frontend/app/(app)/(auth-protected)/faucet/page.tsx index 927514e..20072c1 100644 --- a/apps/frontend/app/(app)/(auth-protected)/faucet/page.tsx +++ b/apps/frontend/app/(app)/(auth-protected)/faucet/page.tsx @@ -101,7 +101,7 @@ const TokenList: React.FC<{ chainId: string; chainName?: string }> = ({ const FaucetPage: React.FC = () => { const { data: chainsData, isLoading } = useGetAllChains({ limit: 20 }) - const chains = chainsData?.rows || [] + const chains = chainsData?.data || [] const firstTwo = chains.slice(0, 2) return ( diff --git a/apps/frontend/app/(app)/bridge/page.tsx b/apps/frontend/app/(app)/bridge/page.tsx index f571295..ba5197a 100644 --- a/apps/frontend/app/(app)/bridge/page.tsx +++ b/apps/frontend/app/(app)/bridge/page.tsx @@ -11,10 +11,11 @@ const BridgePage = () => {

- First P2P cross-chain bridge on Hedera + P2P cross-chain bridge across Ethereum & Stellar

- Unlocking the next generation of cross-chain bridging on Hedera.{" "} + Unlocking the next generation of cross-chain bridging between + Ethereum and Stellar.{" "} create ad diff --git a/apps/frontend/app/layout.tsx b/apps/frontend/app/layout.tsx index 6a529f0..2b26752 100644 --- a/apps/frontend/app/layout.tsx +++ b/apps/frontend/app/layout.tsx @@ -7,6 +7,7 @@ import { SmoothScroll } from "@/components/shared/SmoothScroller" import { TanstackQueryProvider } from "@/components/providers/TanstackProvider" import { Wagmi } from "@/components/providers/Wagmi" import { RainbowKit } from "@/components/providers/RainbowKit" +import { StellarWalletProvider } from "@/components/providers/StellarWallet" import { Toaster } from "@/components/ui/sonner" const perfectlyNineties = localFont({ @@ -56,12 +57,14 @@ export default function RootLayout({ > - - - {children} - - - + + + + {children} + + + + diff --git a/apps/frontend/components/ad-management-ui/AddLiquidity.tsx b/apps/frontend/components/ad-management-ui/AddLiquidity.tsx index c7a69c3..6000f74 100644 --- a/apps/frontend/components/ad-management-ui/AddLiquidity.tsx +++ b/apps/frontend/components/ad-management-ui/AddLiquidity.tsx @@ -9,6 +9,7 @@ import { Chain, parseUnits } from "viem" import { useAccount } from "wagmi" import { useChainModal } from "@rainbow-me/rainbowkit" import { useGetAllChains } from "@/hooks/useChains" +import { isVisibleChain } from "@/lib/chains" import { GiCancel } from "react-icons/gi" import { hederaTestnet, @@ -18,6 +19,7 @@ import { } from "viem/chains" import { CiWarning } from "react-icons/ci" import { useGetAllTokens } from "@/hooks/useTokens" +import { useStellarWallet } from "@/components/providers/StellarWallet" const supported_chains: Record = { [hederaTestnet.id]: hederaTestnet, @@ -28,11 +30,16 @@ const supported_chains: Record = { export const AddLiquidity = () => { const account = useAccount() + const { address: stellarAddress } = useStellarWallet() const { data: chains, isLoading: loadingChains } = useGetAllChains({ limit: 10, }) const [base_chain, setBase_chain] = useState() const [order_chain, setOrder_chain] = useState() + const [orderChainId, setOrderChainId] = useState("") + const orderChainKind = chains?.data?.find( + (c) => c.chainId === orderChainId, + )?.kind const is_base_chain = base_chain?.id === account.chainId const { openChainModal } = useChainModal() const { mutateAsync: createAd, isPending } = useCreateAd() @@ -50,18 +57,31 @@ export const AddLiquidity = () => { }) const { data: routes, isLoading: loadingRoutes } = useGetBridgeRoutes({ adChainId: String(base_chain?.id), - orderChainId: String(order_chain?.id), + orderChainId: orderChainId || String(order_chain?.id), adTokenId: selectedTokenId, }) + // Creator's receive address lives on the *order chain* (destination). Pick + // the wallet matching that chain's kind so we don't submit a 0x EVM address + // as a Stellar G-strkey or vice versa. + const creatorDstAddress = + orderChainKind === "STELLAR" ? stellarAddress : account.address + const handleCreateAd = async () => { try { const token = tokens?.data?.find((value) => value.id === selectedTokenId); + if (!creatorDstAddress) { + throw new Error( + orderChainKind === "STELLAR" + ? "Connect a Stellar wallet to receive on the destination chain" + : "Connect an EVM wallet to receive on the destination chain", + ) + } const response = await createAd({ payload: { routeId: routes?.data[0]?.id!, - creatorDstAddress: account.address!, + creatorDstAddress, maxAmount: parseUnits( max, @@ -105,8 +125,12 @@ export const AddLiquidity = () => { Number(chain.chainId) !== base_chain?.id!) + options={chains?.data + .filter( + (chain) => + isVisibleChain(chain.chainId) && + Number(chain.chainId) !== base_chain?.id! + ) .map((chain) => { return { label: chain.name, @@ -144,8 +172,12 @@ export const AddLiquidity = () => { }} onChange={(value: number) => { setOrder_chain(supported_chains[value]) + setOrderChainId(String(value)) + }} + onClear={() => { + setOrder_chain(undefined) + setOrderChainId("") }} - onClear={() => setOrder_chain(undefined)} />

diff --git a/apps/frontend/components/bridge-ui/BridgeTab.tsx b/apps/frontend/components/bridge-ui/BridgeTab.tsx index 11b618e..f5ffbb9 100644 --- a/apps/frontend/components/bridge-ui/BridgeTab.tsx +++ b/apps/frontend/components/bridge-ui/BridgeTab.tsx @@ -2,10 +2,8 @@ import React, { useEffect, useState } from "react" import { Alert, - Avatar, Button, Divider, - Input, Select, Skeleton, Tooltip, @@ -13,15 +11,15 @@ import { import { ArrowRight, Bot, Clock, Rabbit, Verified } from "lucide-react" import Image from "next/image" import { TradeAd } from "./TradeAd" -import { SellAd } from "./SellAdd" import { useGetAllChains } from "@/hooks/useChains" import { IChain } from "@/types/chains" import { useGetAllTokens } from "@/hooks/useTokens" import { useGetAllAds } from "@/hooks/useAds" import { GiChainLightning } from "react-icons/gi" import SkeletonTradeAd from "./SkeletonTradeAd" -import { hederaTestnet, sepolia } from "viem/chains" +import { sepolia } from "viem/chains" import { chain_icons } from "@/lib/chain-icons" +import { isVisibleChain, STELLAR_TESTNET_CHAIN_ID } from "@/lib/chains" import { IoDocumentText } from "react-icons/io5" import { Logo } from "../shared/Logo" @@ -29,7 +27,7 @@ export const BridgeTab = () => { const { data: chains, isLoading: loadingChains } = useGetAllChains({}) const [selectedBaseChainId, setSelectedBaseChainId] = useState( - `${hederaTestnet.id}` + STELLAR_TESTNET_CHAIN_ID ) const [selectedDstChainId, setSelectedDstChainId] = useState( `${sepolia.id}` @@ -48,7 +46,7 @@ export const BridgeTab = () => { orderTokenId: selectedTokenId, }) // useEffect(() => { - // if (chains?.rows.length) { + // if (chains?.data.length) { // setSelectedBaseChainId(chains.rows[0].chainId) // } // }, [chains]) @@ -66,13 +64,13 @@ export const BridgeTab = () => {

From Chain

-
+

To Chain

-
+
{loadingChains ? ( <> @@ -85,21 +83,23 @@ export const BridgeTab = () => { className="min-w-[200px] !h-[40px]" value={selectedBaseChainId} > - {chains?.rows?.map((chain) => { - return ( - -
- - {chain.name} -
-
- ) - })} + {chains?.data + ?.filter((chain) => isVisibleChain(chain.chainId)) + .map((chain) => { + return ( + +
+ + {chain.name} +
+
+ ) + })}
@@ -109,21 +109,23 @@ export const BridgeTab = () => { className="min-w-[200px] !h-[40px]" value={selectedDstChainId} > - {chains?.rows?.map((chain) => { - return ( - -
- - {chain.name} -
-
- ) - })} + {chains?.data + ?.filter((chain) => isVisibleChain(chain.chainId)) + .map((chain) => { + return ( + +
+ + {chain.name} +
+
+ ) + })} )} @@ -154,11 +156,10 @@ export const BridgeTab = () => { return (

setSelectedTokenId(token.id)} > {token.name} @@ -184,7 +185,7 @@ export const BridgeTab = () => {

{ - chains?.rows?.find((chain) => chain.chainId === selectedBaseChainId) + chains?.data?.find((chain) => chain.chainId === selectedBaseChainId) ?.name }{" "} ADs @@ -229,7 +230,7 @@ export const BridgeTab = () => { type="primary" className="mt-4" onClick={() => { - setSelectedBaseChainId(`${hederaTestnet.id}`) + setSelectedBaseChainId(STELLAR_TESTNET_CHAIN_ID) setSelectedDstChainId(`${sepolia.id}`) }} > diff --git a/apps/frontend/components/bridge-ui/SellAdd.tsx b/apps/frontend/components/bridge-ui/SellAdd.tsx deleted file mode 100644 index 5a38f99..0000000 --- a/apps/frontend/components/bridge-ui/SellAdd.tsx +++ /dev/null @@ -1,318 +0,0 @@ -"use client" -import React, { useState } from "react" -import { Avatar, Button, Modal } from "antd" -import { Clock, Info, ThumbsUp, Verified } from "lucide-react" -import Link from "next/link" -import Image from "next/image" - -interface propsI { - ad_id: string - full_name: string - total_orders: number - orders_completion_rate: string - avg_order_completion_time: string - token: string - price: string - available_tokens: string - limit: string - date_posted: { date: string; time: string } - advertiser_terms: string -} - -export const SellAd = ({ ...props }: propsI) => { - const { - ad_id, - token, - price, - available_tokens, - limit, - date_posted, - advertiser_terms, - } = props - const [openModal, setOpenModal] = useState(false) - const toggleModal = () => setOpenModal(!openModal) - return ( -

- -
-
-
- -
-
- -

Email

-
-
- -

Positive feedbacks

-
-
- -

Verified

-
-
-
- -
-
-
-

- Quantity -

-

{available_tokens}

-
-
-

- Limits -

-

{limit}

-
-
-

- Posted -

-
-
- -

{date_posted.date}

-
-

{date_posted.time}

-
-
-
-
-
-

Advertiser Terms

-
- -
-

- Merchants may impose additional terms in the Advertiser - Terms. Kindly read carefully before placing an order. In the - event of any conflict, the Platform's{" "} - - Terms - {" "} - shall prevail. Violations will not be covered by platform - protection. -

-
-

{advertiser_terms}

-
-
-
-
-
-
-
-

Price

-

- {price} - {token} -

-
- -
-
-

I will get

-
- - -

- {token} |{" "} - - All - -

-
-
-
-

I will deposit

-
- - -

- {token} |{" "} - - All - -

-
-
-
- -
- - -
-

- If there is risk, the withdrawal may be delayed by up to 24 hours. -

-
-
-
-
- - -
-

{price}

-

{token}

-
- -
-

- - Quantity - - {available_tokens} -

-

- - Limits - - {limit} -

-
- -
-
- -

{date_posted.date}

-
-

{date_posted.time}

-
- -
- -
-
-
- ) -} - -interface merchantI extends propsI { - variant?: "variant_1" | "variant_2" -} - -const MerchantInfo = ({ - full_name, - avg_order_completion_time, - orders_completion_rate, - total_orders, - variant, -}: merchantI) => { - const initial = full_name ? full_name.trim()[0].toUpperCase() : "U" - - return ( - <> - {variant === "variant_2" ? ( -
-
-
- - {initial} - -
-
-

{full_name}

- -
-
- -

{avg_order_completion_time}

-
-
-

{total_orders} order(s)

-

|

-

{orders_completion_rate}

-
-
- -

{avg_order_completion_time}

-
-
-
-
-
- ) : ( -
-
-
- - {initial} - -
-
-

{full_name}

- -
-
- -

{avg_order_completion_time}

-
-
-
-
-

{total_orders} order(s)

-

|

-

{orders_completion_rate}

-
-
- -
- -

{avg_order_completion_time}

-
-
- )} - - ) -} diff --git a/apps/frontend/components/bridge-ui/TradeAd.tsx b/apps/frontend/components/bridge-ui/TradeAd.tsx index aefd9de..d8d81c2 100644 --- a/apps/frontend/components/bridge-ui/TradeAd.tsx +++ b/apps/frontend/components/bridge-ui/TradeAd.tsx @@ -10,11 +10,15 @@ import { parseToBigInt } from "@/lib/parse-to-bigint" import { chains } from "@/lib/chains" import moment from "moment" import { truncateString } from "@/utils/truncate-string" +import { formatChainAddress } from "@/utils/format-address" import { Status } from "../shared/Status" import { chain_icons } from "@/lib/chain-icons" import { useAccount, useBalance } from "wagmi" import { useCreateTrade } from "@/hooks/useTrades" -import { useChainModal } from "@rainbow-me/rainbowkit" +import { useChainModal, useConnectModal } from "@rainbow-me/rainbowkit" +import { useStellarWallet } from "@/components/providers/StellarWallet" +import { useQuery } from "@tanstack/react-query" +import { getStellarTokenBalance } from "@/utils/stellar/balance" export const TradeAd = ({ ...props }: IAd) => { const [openModal, setOpenModal] = useState(false) @@ -38,46 +42,134 @@ export const TradeAd = ({ ...props }: IAd) => { const [amount, setAmount] = useState("") const txFee = Number(amount) * (txFeePercent / 100) const account = useAccount() + const { mutateAsync, isPending } = useCreateTrade() + const { openChainModal } = useChainModal() + const { openConnectModal } = useConnectModal() + const { address: stellarAddress, connect: connectStellar } = + useStellarWallet() + + // Order chain = chain the bridger pays on. Drives which wallet's balance to + // read and which connect-flow to surface. + const isStellarOrder = props.orderToken.chainKind === "STELLAR" const nativeBalance = useBalance({ chainId: Number(props.orderToken.chainId), address: account.address, + query: { enabled: !isStellarOrder }, }) const balance = useBalance({ chainId: Number(props.orderToken.chainId), token: props.orderToken.address, address: account.address, + query: { enabled: !isStellarOrder && props.orderToken.kind === "ERC20" }, + }) + const stellarBalance = useQuery({ + queryKey: [ + "stellar-balance", + stellarAddress, + props.orderToken.address, + props.orderToken.chainId, + ], + queryFn: () => + getStellarTokenBalance(stellarAddress!, { + kind: props.orderToken.kind, + symbol: props.orderToken.symbol, + decimals: props.orderToken.decimals, + assetIssuer: props.orderToken.assetIssuer, + }), + enabled: isStellarOrder && !!stellarAddress, }) - const [balance_value, setBalance_value] = useState("") + const [balance_value, setBalance_value] = useState("") useEffect(() => { + if (isStellarOrder) { + if (stellarBalance.data) { + setBalance_value( + formatUnits(stellarBalance.data.value, stellarBalance.data.decimals), + ) + } + return + } if (balance.data) { setBalance_value( - formatUnits(balance?.data?.value!, balance?.data?.decimals!) + formatUnits(balance.data.value, balance.data.decimals), ) } else if (nativeBalance.data) { setBalance_value( - formatUnits(nativeBalance?.data?.value!, nativeBalance?.data?.decimals!) + formatUnits(nativeBalance.data.value, nativeBalance.data.decimals), ) } - }, [balance, nativeBalance, props]) - - useEffect(() => { + }, [balance.data, nativeBalance.data, stellarBalance.data, isStellarOrder]) - }, [nativeBalance, props]) - - const { mutateAsync, isPending } = useCreateTrade() - const { openChainModal } = useChainModal() + // Bridger's receive address lives on the *ad chain* (the destination). + // Pick the wallet that matches its kind so we don't send an EVM 0x address + // as a Stellar G-strkey (or vice versa). + const bridgerDstAddress = + props.adToken.chainKind === "STELLAR" ? stellarAddress : account.address const handleCreateTrade = async () => { + if (!bridgerDstAddress) return await mutateAsync({ - adId: props.id, - routeId: props.routeId, - amount: parseUnits(amount, props.orderToken.decimals).toString(), - bridgerDstAddress: account.address!, + payload: { + adId: props.id, + routeId: props.routeId, + amount: parseUnits(amount, props.orderToken.decimals).toString(), + bridgerDstAddress, + }, orderTokenId: props.orderTokenId, }) toggleModal() } + + // Resolve which action the primary button should perform. Priority: pay-side + // wallet first (can't bridge without it), then destination-wallet, then the + // bridge action itself. Keeps button state readable at a glance. + const orderChainName = chains[props.orderToken.chainId]?.name + const adChainName = chains[props.adToken.chainId]?.name + const connectionAction: { + label: string + onClick?: () => void + isBridge: boolean + } = (() => { + if (isStellarOrder && !stellarAddress) { + return { + label: "Connect Stellar wallet", + onClick: () => { + void connectStellar() + }, + isBridge: false, + } + } + if (!isStellarOrder && !account.address) { + return { + label: `Connect wallet for ${orderChainName}`, + onClick: openConnectModal, + isBridge: false, + } + } + if (!isStellarOrder && String(account.chainId) !== props.orderToken.chainId) { + return { + label: `Switch to ${orderChainName}`, + onClick: openChainModal, + isBridge: false, + } + } + if (!bridgerDstAddress) { + return props.adToken.chainKind === "STELLAR" + ? { + label: "Connect Stellar wallet (destination)", + onClick: () => { + void connectStellar() + }, + isBridge: false, + } + : { + label: `Connect wallet for ${adChainName}`, + onClick: openConnectModal, + isBridge: false, + } + } + return { label: "Bridge", onClick: handleCreateTrade, isBridge: true } + })() return (
{

{chains[props.orderToken.chainId]?.name} balance

- {balance.isLoading || nativeBalance.isLoading ? ( + {(isStellarOrder + ? stellarBalance.isLoading + : balance.isLoading || nativeBalance.isLoading) ? ( ) : ( <> {Number(balance_value).toLocaleString()}{" "} - {balance?.data?.symbol || nativeBalance?.data?.symbol} + {isStellarOrder + ? props.orderToken.symbol + : balance?.data?.symbol || nativeBalance?.data?.symbol} )}

@@ -209,7 +305,11 @@ export const TradeAd = ({ ...props }: IAd) => { type="number" onChange={(e) => setAmount(e.target.value)} value={amount} - disabled={balance.isLoading || nativeBalance.isLoading} + disabled={ + isStellarOrder + ? stellarBalance.isLoading + : balance.isLoading || nativeBalance.isLoading + } />

{tokenSymbol}{" "} @@ -217,14 +317,7 @@ export const TradeAd = ({ ...props }: IAd) => { { - setAmount( - formatUnits( - balance?.data?.value!, - balance?.data?.decimals! - ) - ) - }} + onClick={() => setAmount(balance_value)} > All @@ -251,37 +344,22 @@ export const TradeAd = ({ ...props }: IAd) => {

- {String(account.chainId) !== props.orderToken.chainId ? ( - - ) : ( - - )} + + ) + } + + if (!authed) { + return ( +
+ +
+ ) + } + + const items: MenuProps["items"] = [ + { + key: "disconnect", + label: "Disconnect", + onClick: async () => { + await disconnect() + Cookies.remove("auth_token") + Cookies.remove("refresh_token") + window.location.reload() + }, + }, + ] + return ( + + + + ) +} export const ConnectWalletButton = () => { - const { connect, connectors } = useConnect() return ( -
- - {/* - connect({ - connector: walletConnect({ - projectId: "b56e18d47c72ab683b10814fe9495694", - }), - }) - } - > - Connect Wallet - */} +
+ +
) } diff --git a/apps/frontend/components/landing/Approach.tsx b/apps/frontend/components/landing/Approach.tsx index c69cb9d..8183a73 100644 --- a/apps/frontend/components/landing/Approach.tsx +++ b/apps/frontend/components/landing/Approach.tsx @@ -55,8 +55,8 @@ export const OurApproach = () => {

- ProofBridge is the new frontier of bridging, piloted by - Hedera. + ProofBridge is the new frontier of bridging, connecting + Ethereum and Stellar.

diff --git a/apps/frontend/components/landing/Features.tsx b/apps/frontend/components/landing/Features.tsx index 72cbb35..675bece 100644 --- a/apps/frontend/components/landing/Features.tsx +++ b/apps/frontend/components/landing/Features.tsx @@ -9,25 +9,25 @@ const features = [ title: "P2P bridge", desc: "Peer-to-Peer Cross-Chain Transactions. Direct interaction between users without intermediaries.", img: "/bridge.png", - explore: "First P2P bridge on Hedera", + explore: "P2P bridge across Ethereum & Stellar", }, { title: "ZK-Based Security", desc: "Zero-Knowledge Proof Validation. Ensures correctness of computations and state transitions.", img: "/assets/features/shield.png", - explore: "First P2P bridge on Hedera", + explore: "P2P bridge across Ethereum & Stellar", }, { title: "Multi-Chain support", desc: "Multi-Chain Compatibility. Supports Ethereum, EVM-compatible chains, and extensibility for non-EVM chains.", img: "/assets/features/tokens.png", - explore: "First P2P bridge on Hedera", + explore: "P2P bridge across Ethereum & Stellar", }, { title: "Trustless Operations", desc: "Removes reliance on custodians, relayers, or centralized sequencers.", img: "/assets/features/wall.png", - explore: "First P2P bridge on Hedera", + explore: "P2P bridge across Ethereum & Stellar", }, ] diff --git a/apps/frontend/components/landing/Hero-Alt.tsx b/apps/frontend/components/landing/Hero-Alt.tsx index 3d7110f..d3a20a9 100644 --- a/apps/frontend/components/landing/Hero-Alt.tsx +++ b/apps/frontend/components/landing/Hero-Alt.tsx @@ -32,7 +32,7 @@ export const HeroAlt = () => {

- Hedera's First + Ethereum & Stellar

@@ -40,7 +40,7 @@ export const HeroAlt = () => { ProofBridge® is Unlocking the next generation of cross-chain - bridging on Hedera + bridging between Ethereum and Stellar

diff --git a/apps/frontend/components/landing/Hero.tsx b/apps/frontend/components/landing/Hero.tsx index e5e811b..49aa0dd 100644 --- a/apps/frontend/components/landing/Hero.tsx +++ b/apps/frontend/components/landing/Hero.tsx @@ -68,7 +68,7 @@ export const Hero = () => { Bridge

- Unlocking the next generation of cross-chain bridging on Hedera + Unlocking the next generation of cross-chain bridging between Ethereum and Stellar

diff --git a/apps/frontend/components/orders/OrdersTable.tsx b/apps/frontend/components/orders/OrdersTable.tsx index ff9282f..924ac49 100644 --- a/apps/frontend/components/orders/OrdersTable.tsx +++ b/apps/frontend/components/orders/OrdersTable.tsx @@ -11,6 +11,7 @@ import { } from "@/hooks/useTrades" import { useAccount } from "wagmi" import { truncateString } from "@/utils/truncate-string" +import { formatChainAddressShort } from "@/utils/format-address" import { Status } from "../shared/Status" import moment from "moment" import { formatUnits } from "viem" @@ -55,14 +56,18 @@ export const OrdersTable: React.FC<{ type?: "incoming" | "outgoing" }> = ({ title: "Bridger", dataIndex: "bridgerAddress", render: (value, rowData) => { - return

{truncateString(value, 3, 3)}

+ // Bridger pays on the order chain. + const kind = rowData.route.orderToken.chain.kind + return

{formatChainAddressShort(value, kind, 3, 3)}

}, } : { title: "Ad Creator", dataIndex: "adCreatorAddress", render: (value, rowData) => { - return

{truncateString(value, 3, 3)}

+ // Ad creator funds on the ad chain. + const kind = rowData.route.adToken.chain.kind + return

{formatChainAddressShort(value, kind, 3, 3)}

}, }, { @@ -107,26 +112,10 @@ export const OrdersTable: React.FC<{ type?: "incoming" | "outgoing" }> = ({ dataIndex: "status", showSorterTooltip: { target: "full-header" }, filters: [ - { - text: "ACTIVE", - value: "ACTIVE", - }, - { - text: "LOCKED", - value: "LOCKED", - }, - { - text: "INACTIVE", - value: "INACTIVE", - }, - { - text: "EXHAUSTED", - value: "EXHAUSTED", - }, - { - text: "CLOSED", - value: "CLOSED", - }, + { text: "ACTIVE", value: "ACTIVE" }, + { text: "LOCKED", value: "LOCKED" }, + { text: "INACTIVE", value: "INACTIVE" }, + { text: "COMPLETED", value: "COMPLETED" }, ], onFilter: (value, record) => record.status.indexOf(value as string) === 0, sortDirections: ["descend"], @@ -299,7 +288,12 @@ export const OrdersTable: React.FC<{ type?: "incoming" | "outgoing" }> = ({
Bridger - {truncateString(tradeInfo.bridgerAddress, 4, 4)} + {formatChainAddressShort( + tradeInfo.bridgerAddress, + tradeInfo.route.orderToken.chain.kind, + 4, + 4, + )}
diff --git a/apps/frontend/components/providers/RainbowKit.tsx b/apps/frontend/components/providers/RainbowKit.tsx index af28c35..8fd60fe 100644 --- a/apps/frontend/components/providers/RainbowKit.tsx +++ b/apps/frontend/components/providers/RainbowKit.tsx @@ -10,6 +10,7 @@ import { SiweMessage } from "siwe" import { useAccount } from "wagmi" import Cookies from "js-cookie" import { urls } from "@/utils/urls" +import { requestChallenge, submitLogin } from "@/services/auth.service" function useAuthenticationAdapter() { // If the user is logged in but the account is different (e.g. they changed account in Metamask), log them out and reload the page. @@ -18,18 +19,11 @@ function useAuthenticationAdapter() { return useMemo(() => { return createAuthenticationAdapter({ getNonce: async () => { - const res = await fetch( - "https://proofbridge.onrender.com/v1/auth/challenge", - { - method: "POST", - headers: { "Content-Type": "application/json" }, - body: JSON.stringify({ - address: account.address, - }), - } - ) - const data = await res.json() - return data.nonce + const res = await requestChallenge("EVM", account.address ?? "") + if (res.chainKind !== "EVM") { + throw new Error("Unexpected challenge kind") + } + return res.nonce }, createMessage: ({ nonce, address, chainId }) => { return new SiweMessage({ @@ -44,22 +38,21 @@ function useAuthenticationAdapter() { }, verify: async ({ message, signature }) => { - const loginRes = await fetch( - "https://proofbridge.onrender.com/v1/auth/login", - { - method: "POST", - headers: { "Content-Type": "application/json" }, - body: JSON.stringify({ message, signature }), - } - ) - const data = await loginRes.json() - Cookies.set("auth_token", data.tokens.access) - Cookies.set("refresh_token", data.tokens.refresh) - window.location.reload() - return Boolean(loginRes.ok) + try { + const data = await submitLogin({ + chainKind: "EVM", + message, + signature, + }) + Cookies.set("auth_token", data.tokens.access) + Cookies.set("refresh_token", data.tokens.refresh) + window.location.reload() + return true + } catch { + return false + } }, signOut: async () => { - // await fetch("/api/logout") Cookies.remove("auth_token") Cookies.remove("refresh_token") window.location.reload() diff --git a/apps/frontend/components/providers/StellarWallet.tsx b/apps/frontend/components/providers/StellarWallet.tsx new file mode 100644 index 0000000..5c80569 --- /dev/null +++ b/apps/frontend/components/providers/StellarWallet.tsx @@ -0,0 +1,217 @@ +"use client" +import React, { + createContext, + useCallback, + useContext, + useEffect, + useMemo, + useRef, + useState, +} from "react" +import { + Networks, + StellarWalletsKit, + KitEventType, +} from "@creit.tech/stellar-wallets-kit" +import { FreighterModule } from "@creit.tech/stellar-wallets-kit/modules/freighter" +import { AlbedoModule } from "@creit.tech/stellar-wallets-kit/modules/albedo" +import { LobstrModule } from "@creit.tech/stellar-wallets-kit/modules/lobstr" +import { xBullModule } from "@creit.tech/stellar-wallets-kit/modules/xbull" +import { RabetModule } from "@creit.tech/stellar-wallets-kit/modules/rabet" +import { HanaModule } from "@creit.tech/stellar-wallets-kit/modules/hana" + +interface StellarWalletContextValue { + address: string | null + networkPassphrase: string + isConnecting: boolean + isReady: boolean + connect: () => Promise + disconnect: () => Promise + signTransaction: ( + xdr: string, + networkPassphrase?: string, + ) => Promise + // SEP-43-style off-chain signature. Resolves with a base64 ed25519 + // signature. Not all modules implement it (Ledger/Albedo/Rabet/WC throw) — + // surface the error to the caller. + signMessage: (message: string) => Promise +} + +const StellarWalletContext = createContext( + null, +) + +const STORAGE_ADDRESS_KEY = "stellar_wallet_address" +const STORAGE_WALLET_KEY = "stellar_wallet_id" + +export const StellarWalletProvider = ({ + children, +}: { + children: React.ReactNode +}) => { + const [address, setAddress] = useState(null) + const [isConnecting, setIsConnecting] = useState(false) + const [isReady, setIsReady] = useState(false) + const initialized = useRef(false) + + useEffect(() => { + if (initialized.current) return + initialized.current = true + + const cachedWallet = + typeof window !== "undefined" + ? window.localStorage.getItem(STORAGE_WALLET_KEY) ?? undefined + : undefined + + StellarWalletsKit.init({ + network: Networks.TESTNET, + selectedWalletId: cachedWallet, + modules: [ + new FreighterModule(), + new AlbedoModule(), + new LobstrModule(), + new xBullModule(), + new RabetModule(), + new HanaModule(), + ], + }) + + const cached = + typeof window !== "undefined" + ? window.localStorage.getItem(STORAGE_ADDRESS_KEY) + : null + if (cached) setAddress(cached) + + const unsubState = StellarWalletsKit.on( + KitEventType.STATE_UPDATED, + ({ payload }) => { + if (payload.address) { + setAddress(payload.address) + window.localStorage.setItem(STORAGE_ADDRESS_KEY, payload.address) + } + }, + ) + const unsubSelected = StellarWalletsKit.on( + KitEventType.WALLET_SELECTED, + ({ payload }) => { + if (payload.id) { + window.localStorage.setItem(STORAGE_WALLET_KEY, payload.id) + } + }, + ) + const unsubDisconnect = StellarWalletsKit.on( + KitEventType.DISCONNECT, + () => { + setAddress(null) + window.localStorage.removeItem(STORAGE_ADDRESS_KEY) + window.localStorage.removeItem(STORAGE_WALLET_KEY) + }, + ) + + setIsReady(true) + + return () => { + unsubState() + unsubSelected() + unsubDisconnect() + } + }, []) + + const connect = useCallback(async () => { + setIsConnecting(true) + try { + const result = await new Promise((resolve, reject) => { + StellarWalletsKit.authModal({}).then( + () => { + StellarWalletsKit.getAddress().then( + ({ address }) => resolve(address), + reject, + ) + }, + (err) => { + if (err?.message?.toLowerCase?.().includes("closed")) resolve(null) + else reject(err) + }, + ) + }) + if (result) { + setAddress(result) + window.localStorage.setItem(STORAGE_ADDRESS_KEY, result) + } + return result + } finally { + setIsConnecting(false) + } + }, []) + + const disconnect = useCallback(async () => { + try { + await StellarWalletsKit.disconnect() + } catch { + // some modules don't implement disconnect — ignore + } + setAddress(null) + window.localStorage.removeItem(STORAGE_ADDRESS_KEY) + window.localStorage.removeItem(STORAGE_WALLET_KEY) + }, []) + + const signTransaction = useCallback( + async (xdr: string, networkPassphrase?: string) => { + const { signedTxXdr } = await StellarWalletsKit.signTransaction(xdr, { + networkPassphrase: networkPassphrase ?? Networks.TESTNET, + address: address ?? undefined, + }) + return signedTxXdr + }, + [address], + ) + + const signMessage = useCallback( + async (message: string) => { + const { signedMessage } = await StellarWalletsKit.signMessage(message, { + networkPassphrase: Networks.TESTNET, + address: address ?? undefined, + }) + return signedMessage + }, + [address], + ) + + const value = useMemo( + () => ({ + address, + networkPassphrase: Networks.TESTNET, + isConnecting, + isReady, + connect, + disconnect, + signTransaction, + signMessage, + }), + [ + address, + isConnecting, + isReady, + connect, + disconnect, + signTransaction, + signMessage, + ], + ) + + return ( + + {children} + + ) +} + +export const useStellarWallet = () => { + const ctx = useContext(StellarWalletContext) + if (!ctx) { + throw new Error( + "useStellarWallet must be used inside ", + ) + } + return ctx +} diff --git a/apps/frontend/hooks/useAds.ts b/apps/frontend/hooks/useAds.ts index efd655b..ff3c8e6 100644 --- a/apps/frontend/hooks/useAds.ts +++ b/apps/frontend/hooks/useAds.ts @@ -22,17 +22,120 @@ import { useMutation, useQuery } from "@tanstack/react-query"; import { toast } from "sonner"; import { useAccount, useWriteContract } from "wagmi"; import { waitForTransactionReceipt } from "wagmi/actions"; -import { getSingleToken, getTokens } from "@/services/tokens.service"; +import { getSingleToken } from "@/services/tokens.service"; import { IToken } from "@/types/tokens"; -import { formatUnits, parseEther, parseUnits } from "viem"; +import { formatUnits, parseEther } from "viem"; +import { useStellarAdapter } from "@/lib/stellar-adapter"; +import { + closeAdSoroban, + createAdSoroban, + fundAdSoroban, + withdrawFromAdSoroban, +} from "@/utils/stellar/actions"; +import { + establishTrustline, + hasTrustline, +} from "@/utils/stellar/trustline"; +import type { TrustlineCtx } from "@/utils/stellar/trustline"; +import type { IAdToken } from "@/types/ads"; + +/** + * Blocks Stellar SAC withdrawals/closes when the recipient pubkey has no + * trustline to the underlying classic asset. Soroban would otherwise revert + * the transfer mid-flight with a generic error; this surfaces it early. + */ +async function assertRecipientTrustline( + adToken: IAdToken, + toPublicKey: string, +): Promise { + if (adToken.chainKind !== "STELLAR") return; + if (adToken.kind !== "SAC") return; + if (!adToken.assetIssuer) { + throw new Error( + `Token ${adToken.symbol} is marked SAC but has no assetIssuer configured`, + ); + } + const ok = await hasTrustline( + toPublicKey, + adToken.symbol, + adToken.assetIssuer, + ); + if (!ok) { + throw new Error( + `Recipient ${toPublicKey.slice(0, 6)}… has no trustline for ${adToken.symbol}. Ask them to add the asset in their Stellar wallet (issuer ${adToken.assetIssuer.slice(0, 6)}…) before retrying.`, + ); + } +} + +/** + * For SAC tokens, the signer's account must trust the underlying classic + * asset or the SAC transfer will fail. Adds the trustline on-demand before + * the contract call. No-op for NATIVE/SEP41 and when the trustline already + * exists. + */ +async function ensureSacTrustline( + token: IToken, + ctx: TrustlineCtx, +): Promise { + if (token.kind !== "SAC") return; + if (!token.assetIssuer) { + throw new Error( + `Token ${token.symbol} is marked SAC but has no assetIssuer configured`, + ); + } + const ok = await hasTrustline( + ctx.signerPublicKey, + token.symbol, + token.assetIssuer, + ctx.horizonUrl, + ); + if (ok) return; + toast.info(`Establishing trustline for ${token.symbol}…`); + await establishTrustline(ctx, token.symbol, token.assetIssuer); +} export const useCreateAd = () => { const { writeContractAsync } = useWriteContract(); + const { + buildCtx: buildStellarCtx, + buildTrustlineCtx, + address: stellarAddress, + } = useStellarAdapter(); return useMutation({ mutationKey: ["create-ad"], mutationFn: async (data: { payload: ICreateAdRequest; token: IToken }) => { const response = await createAd(data.payload); const token = data.token; + + if (response.chainKind === "STELLAR") { + if (!stellarAddress) throw new Error("Stellar wallet not connected"); + await ensureSacTrustline(token, buildTrustlineCtx()); + const txHash = await createAdSoroban( + buildStellarCtx(), + { + signatureHex: response.signature, + signerPublicKeyHex: response.signerPublicKey!, + authTokenHex: response.authToken, + timeToExpire: response.timeToExpire, + }, + { + creatorPublicKey: stellarAddress, + adId: response.adId, + adTokenHex: response.adToken, + initialAmount: data.payload.fundAmount, + orderChainId: response.orderChainId, + adRecipientHex: response.adRecipient, + adManagerHex: response.contractAddress, + }, + ); + await confirmAdTx({ + txHash, + signature: response.signature, + adId: response.adId, + }); + return response; + } + const performERC20Tx = async () => { const txHash = await writeContractAsync({ address: response.contractAddress, @@ -45,7 +148,7 @@ export const useCreateAd = () => { BigInt(response.timeToExpire), response.adId, response.adToken, - data.payload.fundAmount, + BigInt(data.payload.fundAmount), BigInt(response.orderChainId), response.adRecipient, ], @@ -72,7 +175,7 @@ export const useCreateAd = () => { abi: ERC20_ABI, chainId: Number(response.chainId), functionName: "approve", - args: [response.contractAddress, data.payload.fundAmount], + args: [response.contractAddress, BigInt(data.payload.fundAmount)], }); const approveReceipt = await waitForTransactionReceipt(config, { hash: approveHash, @@ -100,7 +203,7 @@ export const useCreateAd = () => { BigInt(response.timeToExpire), response.adId, response.adToken, - data.payload.fundAmount, + BigInt(data.payload.fundAmount), BigInt(response.orderChainId), response.adRecipient, ], @@ -125,12 +228,9 @@ export const useCreateAd = () => { onSuccess: () => { toast.success("Ad creation was successful"); }, - onError: function (error: any, variables, result, ctx) { + onError: function (error: any) { toast.error( - error.response.data.message || error.message || "Unable to create ad", - { - description: "", - } + error.response?.data?.message || error.message || "Unable to create ad", ); }, }); @@ -138,13 +238,38 @@ export const useCreateAd = () => { export const useFundAd = () => { const { writeContractAsync } = useWriteContract(); - const account = useAccount(); + const { buildCtx: buildStellarCtx, buildTrustlineCtx } = useStellarAdapter(); return useMutation({ mutationKey: ["fund-ad"], mutationFn: async (data: ITopUpAdRequest) => { const response = await fundAd(data); const token = await getSingleToken(data.tokenId); + + if (response.chainKind === "STELLAR") { + await ensureSacTrustline(token, buildTrustlineCtx()); + const txHash = await fundAdSoroban( + buildStellarCtx(), + { + signatureHex: response.signature, + signerPublicKeyHex: response.signerPublicKey!, + authTokenHex: response.authToken, + timeToExpire: response.timeToExpire, + }, + { + adId: response.adId, + amount: data.amountBigInt.toString(), + adManagerHex: response.contractAddress, + }, + ); + await confirmAdTx({ + txHash, + signature: response.signature, + adId: response.adId, + }); + return response; + } + if (token.kind === "ERC20") { const approveHash = await writeContractAsync({ address: token.address, @@ -233,12 +358,9 @@ export const useFundAd = () => { onSuccess: () => { toast.success("Ad top up was successful"); }, - onError: function (error: any, variables, result, ctx) { + onError: function (error: any) { toast.error( - error.response.data.message || error.message || "Unable to top up ad", - { - description: "", - } + error.response?.data?.message || error.message || "Unable to top up ad", ); }, }); @@ -246,12 +368,39 @@ export const useFundAd = () => { export const useWithdrawFunds = () => { const { writeContractAsync } = useWriteContract(); + const { buildCtx: buildStellarCtx } = useStellarAdapter(); return useMutation({ mutationKey: ["withdraw-ad"], mutationFn: async (data: IWithdrawFromAdRequest) => { const response = await withdrawFromAd(data); + if (response.chainKind === "STELLAR") { + const ad = await getSingleAd(data.adId); + await assertRecipientTrustline(ad.adToken, data.to); + const txHash = await withdrawFromAdSoroban( + buildStellarCtx(), + { + signatureHex: response.signature, + signerPublicKeyHex: response.signerPublicKey!, + authTokenHex: response.authToken, + timeToExpire: response.timeToExpire, + }, + { + adId: response.adId, + amount: data.amountBigInt.toString(), + toPublicKey: data.to, + adManagerHex: response.contractAddress, + }, + ); + await confirmAdTx({ + txHash, + signature: response.signature, + adId: response.adId, + }); + return response; + } + const txHash = await writeContractAsync({ address: response.contractAddress, abi: AD_MANAGER_ABI, @@ -263,7 +412,7 @@ export const useWithdrawFunds = () => { BigInt(response.timeToExpire), response.adId, data.amountBigInt, - data.to, + data.to as `0x${string}`, ], }); const receipt = await waitForTransactionReceipt(config, { @@ -282,12 +431,9 @@ export const useWithdrawFunds = () => { onSuccess: () => { toast.success("Funds withdrawal was successful"); }, - onError: function (error: any, variables, result, ctx) { + onError: function (error: any) { toast.error( - error.response.data.message || error.message || "Unable to withdraw", - { - description: "", - } + error.response?.data?.message || error.message || "Unable to withdraw", ); }, }); @@ -295,12 +441,38 @@ export const useWithdrawFunds = () => { export const useCloseAd = () => { const { writeContractAsync } = useWriteContract(); + const { buildCtx: buildStellarCtx } = useStellarAdapter(); return useMutation({ mutationKey: ["close-ad"], mutationFn: async (data: ICloseAdRequest) => { const response = await closeAd(data); + if (response.chainKind === "STELLAR") { + const ad = await getSingleAd(data.adId); + await assertRecipientTrustline(ad.adToken, data.to); + const txHash = await closeAdSoroban( + buildStellarCtx(), + { + signatureHex: response.signature, + signerPublicKeyHex: response.signerPublicKey!, + authTokenHex: response.authToken, + timeToExpire: response.timeToExpire, + }, + { + adId: response.adId, + toPublicKey: data.to, + adManagerHex: response.contractAddress, + }, + ); + await confirmAdTx({ + txHash, + signature: response.signature, + adId: response.adId, + }); + return response; + } + const txHash = await writeContractAsync({ address: response.contractAddress, abi: AD_MANAGER_ABI, @@ -311,7 +483,7 @@ export const useCloseAd = () => { response.authToken, BigInt(response.timeToExpire), response.adId, - data.to, + data.to as `0x${string}`, ], }); const receipt = await waitForTransactionReceipt(config, { @@ -330,12 +502,9 @@ export const useCloseAd = () => { onSuccess: () => { toast.success("Ad closed successfully"); }, - onError: function (error: any, variables, result, ctx) { + onError: function (error: any) { toast.error( - error.response.data.message || error.message || "Unable to close ad", - { - description: "", - } + error.response?.data?.message || error.message || "Unable to close ad", ); }, }); @@ -350,12 +519,9 @@ export const useConfirmAdTx = () => { onSuccess: () => { toast.success("Tx confirmed successful"); }, - onError: function (error: any, variables, result, ctx) { + onError: function (error: any) { toast.error( - error.response.data.message || error.message || "Unable to confirm ad", - { - description: "", - } + error.response?.data?.message || error.message || "Unable to confirm ad", ); }, }); diff --git a/apps/frontend/hooks/useStellarAuth.ts b/apps/frontend/hooks/useStellarAuth.ts new file mode 100644 index 0000000..92eb9a2 --- /dev/null +++ b/apps/frontend/hooks/useStellarAuth.ts @@ -0,0 +1,54 @@ +"use client" +import { useMutation } from "@tanstack/react-query" +import Cookies from "js-cookie" +import { toast } from "sonner" +import { requestChallenge, submitLogin } from "@/services/auth.service" +import { useStellarWallet } from "@/components/providers/StellarWallet" + +/** + * Runs the full SEP-10 login dance: + * 1. ensure wallet is connected (returns G-strkey) + * 2. POST /auth/challenge → server-signed challenge XDR + * 3. ask wallet to co-sign the XDR + * 4. POST /auth/login → { tokens, user } + * 5. persist tokens in cookies + */ +export const useStellarLogin = () => { + const { address, connect, signTransaction, networkPassphrase } = + useStellarWallet() + + return useMutation({ + mutationKey: ["stellar-sep10-login"], + mutationFn: async () => { + const accountId = address ?? (await connect()) + if (!accountId) throw new Error("Stellar wallet not connected") + + const challenge = await requestChallenge("STELLAR", accountId) + if (challenge.chainKind !== "STELLAR") { + throw new Error("Unexpected challenge kind from backend") + } + + const signedXdr = await signTransaction( + challenge.transaction, + challenge.networkPassphrase ?? networkPassphrase, + ) + + const data = await submitLogin({ + chainKind: "STELLAR", + transaction: signedXdr, + }) + + Cookies.set("auth_token", data.tokens.access) + Cookies.set("refresh_token", data.tokens.refresh) + window.location.reload() + return data + }, + onError: (error: any) => { + toast.error( + error?.response?.data?.message || + error?.message || + "Stellar sign-in failed", + ) + }, + }) +} diff --git a/apps/frontend/hooks/useTrades.ts b/apps/frontend/hooks/useTrades.ts index 403cede..cd938cd 100644 --- a/apps/frontend/hooks/useTrades.ts +++ b/apps/frontend/hooks/useTrades.ts @@ -9,39 +9,113 @@ import { unlockFunds, } from "@/services/trades.service"; import { + IAdManagerOrderParams, ICreateTradeRequest, IGetTradesParams, - IUnlockFundsRequest, + IOrderPortalOrderParams, } from "@/types/trades"; import { config } from "@/utils/wagmi-config"; import { useMutation, useQuery } from "@tanstack/react-query"; import { waitForTransactionReceipt } from "wagmi/actions"; -import { useAccount, useWriteContract, useSignTypedData } from "wagmi"; +import { useWriteContract, useSignTypedData } from "wagmi"; import { toast } from "sonner"; import { ERC20_ABI } from "@/abis/ERC20.abi"; -import { getSingleToken, getTokens } from "@/services/tokens.service"; +import { getSingleToken } from "@/services/tokens.service"; import { AD_MANAGER_ABI } from "@/abis/AdManager.abi"; -import { formatUnits, parseEther, parseUnits } from "viem"; +import { formatUnits, parseEther } from "viem"; +import { useStellarAdapter } from "@/lib/stellar-adapter"; +import { useStellarWallet } from "@/components/providers/StellarWallet"; +import { + createOrderSoroban, + lockForOrderSoroban, + unlockOrderPortalSoroban, + unlockSoroban, +} from "@/utils/stellar/actions"; +import { + establishTrustline, + hasTrustline, +} from "@/utils/stellar/trustline"; +import type { TrustlineCtx } from "@/utils/stellar/trustline"; +import type { IToken } from "@/types/tokens"; + +async function ensureSacTrustline( + token: IToken, + ctx: TrustlineCtx, +): Promise { + if (token.kind !== "SAC") return; + if (!token.assetIssuer) { + throw new Error( + `Token ${token.symbol} is marked SAC but has no assetIssuer configured`, + ); + } + const ok = await hasTrustline( + ctx.signerPublicKey, + token.symbol, + token.assetIssuer, + ctx.horizonUrl, + ); + if (ok) return; + toast.info(`Establishing trustline for ${token.symbol}…`); + await establishTrustline(ctx, token.symbol, token.assetIssuer); +} export const useCreateTrade = () => { - const account = useAccount(); const { writeContractAsync } = useWriteContract(); + const { buildCtx: buildStellarCtx, buildTrustlineCtx } = useStellarAdapter(); return useMutation({ mutationKey: ["create-trade"], - mutationFn: async (data: ICreateTradeRequest) => { - const response = await createTrade(data); + mutationFn: async (data: { + payload: ICreateTradeRequest; + orderTokenId: string; + }) => { + const response = await createTrade(data.payload); + const rc = response.reqContractDetails; + + if (rc.chainKind === "STELLAR") { + const orderToken = await getSingleToken(data.orderTokenId); + await ensureSacTrustline(orderToken, buildTrustlineCtx()); + const txHash = await createOrderSoroban( + buildStellarCtx(), + { + signatureHex: rc.signature, + signerPublicKeyHex: rc.signerPublicKey!, + authTokenHex: rc.authToken, + timeToExpire: rc.timeToExpire, + }, + { + orderParams: { + orderChainToken: rc.orderParams.orderChainToken, + adChainToken: rc.orderParams.adChainToken, + amount: rc.orderParams.amount, + bridger: rc.orderParams.bridger, + orderRecipient: rc.orderParams.orderRecipient, + adChainId: rc.orderParams.adChainId, + adManager: rc.orderParams.adManager, + adId: rc.orderParams.adId, + adCreator: rc.orderParams.adCreator, + adRecipient: rc.orderParams.adRecipient, + salt: rc.orderParams.salt, + }, + orderPortalHex: rc.contractAddress, + }, + ); + await confirmTradeTx({ + txHash, + signature: rc.signature, + tradeId: response.tradeId, + }); + return response; + } + const token = await getSingleToken(data.orderTokenId); if (token.kind === "ERC20") { const approveHash = await writeContractAsync({ - address: response.reqContractDetails.orderParams.orderChainToken, + address: rc.orderParams.orderChainToken, abi: ERC20_ABI, chainId: Number(token.chain.chainId), functionName: "approve", - args: [ - response.reqContractDetails.contractAddress, - BigInt(response.reqContractDetails.orderParams.amount), - ], + args: [rc.contractAddress, BigInt(rc.orderParams.amount)], }); const approveReceipt = await waitForTransactionReceipt(config, { @@ -50,32 +124,26 @@ export const useCreateTrade = () => { if (approveReceipt.status === "success") { const txHash = await writeContractAsync({ - address: response.reqContractDetails.contractAddress, - chainId: Number(response.reqContractDetails.chainId), + address: rc.contractAddress, + chainId: Number(rc.chainId), abi: ORDER_PORTAL_ABI, functionName: "createOrder", args: [ - response.reqContractDetails.signature, - response.reqContractDetails.authToken, - BigInt(response.reqContractDetails.timeToExpire), + rc.signature, + rc.authToken, + BigInt(rc.timeToExpire), { - orderChainToken: - response.reqContractDetails.orderParams.orderChainToken, - adChainToken: - response.reqContractDetails.orderParams.adChainToken, - amount: BigInt(response.reqContractDetails.orderParams.amount), - bridger: response.reqContractDetails.orderParams.bridger, - orderRecipient: - response.reqContractDetails.orderParams.orderRecipient, - adChainId: BigInt( - response.reqContractDetails.orderParams.adChainId - ), - adManager: response.reqContractDetails.orderParams.adManager, - adId: response.reqContractDetails.orderParams.adId, - adCreator: response.reqContractDetails.orderParams.adCreator, - adRecipient: - response.reqContractDetails.orderParams.adRecipient, - salt: BigInt(response.reqContractDetails.orderParams.salt), + orderChainToken: rc.orderParams.orderChainToken, + adChainToken: rc.orderParams.adChainToken, + amount: BigInt(rc.orderParams.amount), + bridger: rc.orderParams.bridger, + orderRecipient: rc.orderParams.orderRecipient, + adChainId: BigInt(rc.orderParams.adChainId), + adManager: rc.orderParams.adManager, + adId: rc.orderParams.adId, + adCreator: rc.orderParams.adCreator, + adRecipient: rc.orderParams.adRecipient, + salt: BigInt(rc.orderParams.salt), }, ], }); @@ -86,7 +154,7 @@ export const useCreateTrade = () => { if (receipt.status === "success") { await confirmTradeTx({ txHash: receipt.transactionHash, - signature: response.reqContractDetails.signature, + signature: rc.signature, tradeId: response.tradeId, }); } @@ -100,33 +168,28 @@ export const useCreateTrade = () => { throw Error("Transaction failed, Retry"); } } else if (token.kind === "NATIVE") { - const amount = formatUnits(BigInt(data.amount), token.decimals); + const amount = formatUnits(BigInt(data.payload.amount), token.decimals); const txHash = await writeContractAsync({ - address: response.reqContractDetails.contractAddress, - chainId: Number(response.reqContractDetails.chainId), + address: rc.contractAddress, + chainId: Number(rc.chainId), abi: ORDER_PORTAL_ABI, functionName: "createOrder", args: [ - response.reqContractDetails.signature, - response.reqContractDetails.authToken, - BigInt(response.reqContractDetails.timeToExpire), + rc.signature, + rc.authToken, + BigInt(rc.timeToExpire), { - orderChainToken: - response.reqContractDetails.orderParams.orderChainToken, - adChainToken: - response.reqContractDetails.orderParams.adChainToken, - amount: BigInt(response.reqContractDetails.orderParams.amount), - bridger: response.reqContractDetails.orderParams.bridger, - orderRecipient: - response.reqContractDetails.orderParams.orderRecipient, - adChainId: BigInt( - response.reqContractDetails.orderParams.adChainId - ), - adManager: response.reqContractDetails.orderParams.adManager, - adId: response.reqContractDetails.orderParams.adId, - adCreator: response.reqContractDetails.orderParams.adCreator, - adRecipient: response.reqContractDetails.orderParams.adRecipient, - salt: BigInt(response.reqContractDetails.orderParams.salt), + orderChainToken: rc.orderParams.orderChainToken, + adChainToken: rc.orderParams.adChainToken, + amount: BigInt(rc.orderParams.amount), + bridger: rc.orderParams.bridger, + orderRecipient: rc.orderParams.orderRecipient, + adChainId: BigInt(rc.orderParams.adChainId), + adManager: rc.orderParams.adManager, + adId: rc.orderParams.adId, + adCreator: rc.orderParams.adCreator, + adRecipient: rc.orderParams.adRecipient, + salt: BigInt(rc.orderParams.salt), }, ], value: parseEther(amount), @@ -138,7 +201,7 @@ export const useCreateTrade = () => { if (receipt.status === "success") { await confirmTradeTx({ txHash: receipt.transactionHash, - signature: response.reqContractDetails.signature, + signature: rc.signature, tradeId: response.tradeId, }); } @@ -154,14 +217,11 @@ export const useCreateTrade = () => { onSuccess: () => { toast.success("Trade creation was successful"); }, - onError: function (error: any, variables, result, ctx) { + onError: function (error: any) { toast.error( error?.response?.data?.message || error?.message || "Unable to open trade", - { - description: "", - } ); }, }); @@ -169,11 +229,46 @@ export const useCreateTrade = () => { export const useLockFunds = () => { const { writeContractAsync } = useWriteContract(); + const { buildCtx: buildStellarCtx } = useStellarAdapter(); return useMutation({ mutationKey: ["lock-fund"], mutationFn: async (id: string) => { const response = await lockFunds(id); + if (response.chainKind === "STELLAR") { + const txHash = await lockForOrderSoroban( + buildStellarCtx(), + { + signatureHex: response.signature, + signerPublicKeyHex: response.signerPublicKey!, + authTokenHex: response.authToken, + timeToExpire: response.timeToExpire, + }, + { + orderParams: { + orderChainToken: response.orderParams.orderChainToken, + adChainToken: response.orderParams.adChainToken, + amount: response.orderParams.amount, + bridger: response.orderParams.bridger, + orderChainId: response.orderParams.orderChainId, + srcOrderPortal: response.orderParams.srcOrderPortal, + orderRecipient: response.orderParams.orderRecipient, + adId: response.orderParams.adId, + adCreator: response.orderParams.adCreator, + adRecipient: response.orderParams.adRecipient, + salt: response.orderParams.salt, + }, + adManagerHex: response.contractAddress, + }, + ); + await confirmTradeTx({ + txHash, + signature: response.signature, + tradeId: id, + }); + return response; + } + const txHash = await writeContractAsync({ address: response.contractAddress, chainId: Number(response.chainId), @@ -220,14 +315,11 @@ export const useLockFunds = () => { onSuccess: () => { toast.success("Funds lock was successful"); }, - onError: function (error: any, variables, result, ctx) { + onError: function (error: any) { toast.error( error?.response?.data?.message || error?.message || "Unable to lock funds", - { - description: "", - } ); }, }); @@ -236,81 +328,170 @@ export const useLockFunds = () => { export const useUnLockFunds = () => { const { writeContractAsync } = useWriteContract(); const { signTypedDataAsync } = useSignTypedData(); - const account = useAccount(); + const { buildCtx: buildStellarCtx } = useStellarAdapter(); + const { signMessage: signStellarMessage } = useStellarWallet(); return useMutation({ mutationKey: ["unlock-fund"], mutationFn: async (id: string) => { const params = await getTradeParams(id); - const signature = await signTypedDataAsync({ - types: { - Order: [ - { name: "orderChainToken", type: "address" }, - { name: "adChainToken", type: "address" }, - { name: "amount", type: "uint256" }, - { name: "bridger", type: "address" }, - { name: "orderChainId", type: "uint256" }, - { name: "orderPortal", type: "address" }, - { name: "orderRecipient", type: "address" }, - { name: "adChainId", type: "uint256" }, - { name: "adManager", type: "address" }, - { name: "adId", type: "string" }, - { name: "adCreator", type: "address" }, - { name: "adRecipient", type: "address" }, - { name: "salt", type: "uint256" }, - ], - }, - primaryType: "Order", - message: { - orderChainToken: params.orderChainToken, - adChainToken: params.adChainToken, - amount: BigInt(params.amount), - bridger: params.bridger, - orderChainId: BigInt(params.orderChainId), - orderPortal: params.orderPortal, - orderRecipient: params.orderRecipient, - adChainId: BigInt(params.adChainId), - adManager: params.adManager, - adId: params.adId, - adCreator: params.adCreator, - adRecipient: params.adRecipient, - salt: BigInt(params.salt), - }, - domain: { - name: "Proofbridge", - version: "1", - }, - }); - const response = await unlockFunds({ id, signature: signature }); - const isAdCreator = account.address === params?.adCreator; + // Unlock signing depends on the chain the caller is unlocking on — not + // the caller's origin wallet. adCreator unlocks on the order chain; + // bridger unlocks on the ad chain. Backend tells us which. + let signature: string; + if (params.unlockChainKind === "STELLAR") { + // SEP-43 signMessage — off-chain authorization only; the signed bytes + // are domain-separated + ed25519-verified server-side. + signature = await signStellarMessage(params.orderHash); + } else { + // Cross-chain address fields are bytes32 on-chain so the typeHash + // stays chain-agnostic. Values arrive already 32-byte hex-padded. + signature = await signTypedDataAsync({ + types: { + Order: [ + { name: "orderChainToken", type: "bytes32" }, + { name: "adChainToken", type: "bytes32" }, + { name: "amount", type: "uint256" }, + { name: "bridger", type: "bytes32" }, + { name: "orderChainId", type: "uint256" }, + { name: "orderPortal", type: "bytes32" }, + { name: "orderRecipient", type: "bytes32" }, + { name: "adChainId", type: "uint256" }, + { name: "adManager", type: "bytes32" }, + { name: "adId", type: "string" }, + { name: "adCreator", type: "bytes32" }, + { name: "adRecipient", type: "bytes32" }, + { name: "salt", type: "uint256" }, + ], + }, + primaryType: "Order", + message: { + orderChainToken: params.orderChainToken, + adChainToken: params.adChainToken, + amount: BigInt(params.amount), + bridger: params.bridger, + orderChainId: BigInt(params.orderChainId), + orderPortal: params.orderPortal, + orderRecipient: params.orderRecipient, + adChainId: BigInt(params.adChainId), + adManager: params.adManager, + adId: params.adId, + adCreator: params.adCreator, + adRecipient: params.adRecipient, + salt: BigInt(params.salt), + }, + domain: { + name: "Proofbridge", + version: "1", + }, + }); + } + const response = await unlockFunds({ id, signature }); + + // Role determines which contract ABI we hit. Backend ships + // OrderPortal-shape params (adManager/adChainId) when the caller is the + // ad creator unlocking on the order chain, and AdManager-shape + // (srcOrderPortal/orderChainId) for the bridger unlocking on the ad + // chain. Discriminate on the key — much more robust than comparing + // addresses across chain kinds. + const isAdCreator = "adManager" in response.orderParams; - const txHash = await writeContractAsync({ - address: response.contractAddress, - chainId: Number(response.chainId), - abi: isAdCreator ? ORDER_PORTAL_ABI : AD_MANAGER_ABI, - functionName: "unlock", - args: [ - response.signature, - response.authToken, - BigInt(response.timeToExpire), - isAdCreator - ? { - ...response.orderParams, - amount: BigInt(response.orderParams.amount), - adChainId: BigInt(response.orderParams.adChainId), - salt: BigInt(response.orderParams.salt), - } - : { - ...response.orderParams, - amount: BigInt(response.orderParams.amount), - orderChainId: BigInt(response.orderParams.orderChainId), - salt: BigInt(response.orderParams.salt), + if (response.chainKind === "STELLAR") { + // Relayer still emits the proof payload as hex strings; actions layer + // converts buffer→ScVal bytes. Proof is already 0x-prefixed hex. + const proofBuffer = Buffer.from(response.proof.replace(/^0x/, ""), "hex"); + const txHash = isAdCreator + ? await unlockOrderPortalSoroban( + buildStellarCtx(), + { + signatureHex: response.signature, + signerPublicKeyHex: response.signerPublicKey!, + authTokenHex: response.authToken, + timeToExpire: response.timeToExpire, }, - response.nullifierHash, - response.targetRoot, - response.proof, - ], - }); + { + orderParams: response.orderParams as IOrderPortalOrderParams, + nullifierHashHex: response.nullifierHash, + targetRootHex: response.targetRoot, + proof: proofBuffer, + orderPortalHex: response.contractAddress, + }, + ) + : await unlockSoroban( + buildStellarCtx(), + { + signatureHex: response.signature, + signerPublicKeyHex: response.signerPublicKey!, + authTokenHex: response.authToken, + timeToExpire: response.timeToExpire, + }, + { + orderParams: response.orderParams as IAdManagerOrderParams, + nullifierHashHex: response.nullifierHash, + targetRootHex: response.targetRoot, + proof: proofBuffer, + adManagerHex: response.contractAddress, + }, + ); + await confirmUnlockFunds({ + txHash, + signature: response.signature, + id, + }); + return response; + } + + // adCreator unlocks on the order chain (OrderPortal ABI; adChainId + + // adManager). Bridger unlocks on the ad chain (AdManager ABI; + // orderChainId + srcOrderPortal). Split the wagmi call per branch so the + // ABI narrows the args tuple correctly. + const txHash = isAdCreator + ? await writeContractAsync({ + address: response.contractAddress, + chainId: Number(response.chainId), + abi: ORDER_PORTAL_ABI, + functionName: "unlock", + args: [ + response.signature, + response.authToken, + BigInt(response.timeToExpire), + (() => { + const p = response.orderParams as IOrderPortalOrderParams; + return { + ...p, + amount: BigInt(p.amount), + adChainId: BigInt(p.adChainId), + salt: BigInt(p.salt), + }; + })(), + response.nullifierHash, + response.targetRoot, + response.proof, + ], + }) + : await writeContractAsync({ + address: response.contractAddress, + chainId: Number(response.chainId), + abi: AD_MANAGER_ABI, + functionName: "unlock", + args: [ + response.signature, + response.authToken, + BigInt(response.timeToExpire), + (() => { + const p = response.orderParams as IAdManagerOrderParams; + return { + ...p, + amount: BigInt(p.amount), + orderChainId: BigInt(p.orderChainId), + salt: BigInt(p.salt), + }; + })(), + response.nullifierHash, + response.targetRoot, + response.proof, + ], + }); const receipt = await waitForTransactionReceipt(config, { hash: txHash, @@ -333,14 +514,11 @@ export const useUnLockFunds = () => { onSuccess: () => { toast.success("Funds released successfully"); }, - onError: function (error: any, variables, result, ctx) { + onError: function (error: any) { toast.error( error?.response?.data?.message || error?.message || "Unable to release funds", - { - description: "", - } ); }, }); diff --git a/apps/frontend/lib/chain-icons.ts b/apps/frontend/lib/chain-icons.ts index 0ca8161..2a8dae9 100644 --- a/apps/frontend/lib/chain-icons.ts +++ b/apps/frontend/lib/chain-icons.ts @@ -4,9 +4,11 @@ import { polygonAmoy, sepolia, } from "viem/chains" +import { STELLAR_TESTNET_CHAIN_ID } from "./chains" export const chain_icons: Record = { [sepolia.id]: "/assets/logos/eth.svg", + [STELLAR_TESTNET_CHAIN_ID]: "/assets/logos/stellar-logo.svg", [hederaTestnet.id]: "/assets/logos/hbar.png", [polygonAmoy.id]: "/assets/logos/hbar.png", [optimismSepolia.id]: "/assets/logos/hbar.png", diff --git a/apps/frontend/lib/chains.ts b/apps/frontend/lib/chains.ts index 4a4ece6..fae18d3 100644 --- a/apps/frontend/lib/chains.ts +++ b/apps/frontend/lib/chains.ts @@ -4,3 +4,17 @@ export const chains: Record = { [hederaTestnet.id]: hederaTestnet, [sepolia.id]: sepolia, } + +// Stellar is non-EVM so it has no viem `Chain`. Backend seeds this id. +export const STELLAR_TESTNET_CHAIN_ID = "1000001" + +// Chains currently surfaced in UI selectors. Other chains (Hedera, etc.) remain +// configured on the backend and in wagmi but are hidden from user-facing lists +// while this demo focuses on the Ethereum ↔ Stellar route. +export const VISIBLE_CHAIN_IDS: ReadonlySet = new Set([ + String(sepolia.id), + STELLAR_TESTNET_CHAIN_ID, +]) + +export const isVisibleChain = (chainId: string | number): boolean => + VISIBLE_CHAIN_IDS.has(String(chainId)) diff --git a/apps/frontend/lib/stellar-adapter.ts b/apps/frontend/lib/stellar-adapter.ts new file mode 100644 index 0000000..47092c6 --- /dev/null +++ b/apps/frontend/lib/stellar-adapter.ts @@ -0,0 +1,45 @@ +"use client" +import { useStellarWallet } from "@/components/providers/StellarWallet" +import type { StellarAdapterCtx } from "@/utils/stellar/actions" +import type { TrustlineCtx } from "@/utils/stellar/trustline" + +const DEFAULT_TESTNET_RPC = "https://soroban-testnet.stellar.org" +const DEFAULT_TESTNET_HORIZON = "https://horizon-testnet.stellar.org" + +export function useStellarAdapter(): { + buildCtx: () => StellarAdapterCtx + buildTrustlineCtx: () => TrustlineCtx + address: string | null +} { + const { address, networkPassphrase, signTransaction } = useStellarWallet() + + const buildCtx = (): StellarAdapterCtx => { + if (!address) { + throw new Error("Stellar wallet not connected") + } + const rpcUrl = + process.env.NEXT_PUBLIC_STELLAR_RPC_URL || DEFAULT_TESTNET_RPC + return { + rpcUrl, + networkPassphrase, + signerPublicKey: address, + signTransaction, + } + } + + const buildTrustlineCtx = (): TrustlineCtx => { + if (!address) { + throw new Error("Stellar wallet not connected") + } + const horizonUrl = + process.env.NEXT_PUBLIC_STELLAR_HORIZON_URL || DEFAULT_TESTNET_HORIZON + return { + horizonUrl, + networkPassphrase, + signerPublicKey: address, + signTransaction, + } + } + + return { buildCtx, buildTrustlineCtx, address } +} diff --git a/apps/frontend/package.json b/apps/frontend/package.json index e09af32..1cb4505 100644 --- a/apps/frontend/package.json +++ b/apps/frontend/package.json @@ -10,9 +10,11 @@ }, "dependencies": { "@ant-design/nextjs-registry": "^1.1.0", + "@creit.tech/stellar-wallets-kit": "^2.1.0", "@gsap/react": "^2.1.2", - "@rainbow-me/rainbowkit": "^2.2.8", + "@rainbow-me/rainbowkit": "^2.2.10", "@rainbow-me/rainbowkit-siwe-next-auth": "^0.5.0", + "@stellar/stellar-sdk": "^15.0.1", "@tanstack/react-query": "^5.89.0", "antd": "5.27.3", "axios": "^1.12.2", @@ -27,7 +29,7 @@ "next-themes": "^0.4.6", "proof-bridge": "link:", "proof-bridge-frontend": "link:", - "react": "19.1.0", + "react": "19.2.5", "react-dom": "19.2.5", "react-icons": "^5.5.0", "siwe": "^3.0.0", diff --git a/apps/frontend/public/assets/logos/stellar-logo.svg b/apps/frontend/public/assets/logos/stellar-logo.svg new file mode 100644 index 0000000..02afb7b --- /dev/null +++ b/apps/frontend/public/assets/logos/stellar-logo.svg @@ -0,0 +1 @@ +Asset 1 \ No newline at end of file diff --git a/apps/frontend/public/assets/logos/stellar-xlm-logo.png b/apps/frontend/public/assets/logos/stellar-xlm-logo.png new file mode 100644 index 0000000..93ca9dc Binary files /dev/null and b/apps/frontend/public/assets/logos/stellar-xlm-logo.png differ diff --git a/apps/frontend/services/ads.service.ts b/apps/frontend/services/ads.service.ts index ce314cc..7595f28 100644 --- a/apps/frontend/services/ads.service.ts +++ b/apps/frontend/services/ads.service.ts @@ -15,8 +15,6 @@ import { IWithdrawFromAdRequest, IWithdrawFromAdResponse, } from "@/types/ads" -import axios from "axios" - const ads_route = (path = "") => { return `${urls.API_URL}/v1/ads${path}` } @@ -50,7 +48,7 @@ export const closeAd = async (data: ICloseAdRequest) => { export const updatedAd = async (data: IUpdateAdRequest) => { const { adId, ...rest } = data - const response = await api.post(ads_route(`/${adId}/update`), { + const response = await api.patch(ads_route(`/${adId}/update`), { ...rest, }) return response.data as IUpdateAdResponse @@ -63,7 +61,7 @@ export const confirmAdTx = async (data: IConfirmAdTxRequest) => { } export const getAllAds = async (params: IGetAdsParams) => { - const response = await axios.get(ads_route(), { params }) + const response = await api.get(ads_route(), { params }) return response.data as { data: IAd[] nextCursor: string @@ -71,6 +69,6 @@ export const getAllAds = async (params: IGetAdsParams) => { } export const getSingleAd = async (id: string) => { - const response = await axios.get(ads_route(`/${id}`)) + const response = await api.get(ads_route(`/${id}`)) return response.data as IAd } diff --git a/apps/frontend/services/auth.service.ts b/apps/frontend/services/auth.service.ts new file mode 100644 index 0000000..8826c5b --- /dev/null +++ b/apps/frontend/services/auth.service.ts @@ -0,0 +1,60 @@ +import { urls } from "@/utils/urls" +import axios from "axios" + +export type ChainKind = "EVM" | "STELLAR" + +export interface IChallengeEvmResponse { + chainKind: "EVM" + address: string + nonce: string + domain: string + uri: string + expiresAt: string +} + +export interface IChallengeStellarResponse { + chainKind: "STELLAR" + address: string + transaction: string + networkPassphrase: string + expiresAt: string +} + +export type IChallengeResponse = + | IChallengeEvmResponse + | IChallengeStellarResponse + +export interface IEvmLoginInput { + chainKind: "EVM" + message: string + signature: string +} + +export interface IStellarLoginInput { + chainKind: "STELLAR" + transaction: string +} + +export type ILoginInput = IEvmLoginInput | IStellarLoginInput + +export interface ILoginResponse { + user: { id: string; username: string } + tokens: { access: string; refresh: string } +} + +const auth_route = (path = "") => `${urls.API_URL}/v1/auth${path}` + +export const requestChallenge = async ( + chainKind: ChainKind, + address: string, +): Promise => { + const res = await axios.post(auth_route("/challenge"), { chainKind, address }) + return res.data as IChallengeResponse +} + +export const submitLogin = async ( + input: ILoginInput, +): Promise => { + const res = await axios.post(auth_route("/login"), input) + return res.data as ILoginResponse +} diff --git a/apps/frontend/services/chains.service.ts b/apps/frontend/services/chains.service.ts index b2518d7..d291e3e 100644 --- a/apps/frontend/services/chains.service.ts +++ b/apps/frontend/services/chains.service.ts @@ -11,7 +11,7 @@ export const getAllChains = async (params: { cursor?: string }) => { const response = await api.get(chains_route("/"), { params }) - return response.data as { rows: IChain[]; nextCursor: string } + return response.data as { data: IChain[]; nextCursor: string | null } } export const getSingleChain = async (id: string) => { diff --git a/apps/frontend/types/ads.ts b/apps/frontend/types/ads.ts index 5da36e6..2e264b4 100644 --- a/apps/frontend/types/ads.ts +++ b/apps/frontend/types/ads.ts @@ -1,4 +1,6 @@ import { Address } from "viem" +import type { ChainKind } from "./chains" +import type { TokenKind } from "./tokens" export interface ICreateAdRequest { routeId: string @@ -15,6 +17,7 @@ export interface ICreateAdRequest { export interface ICreateAdResponse { contractAddress: Address signature: Address + signerPublicKey?: Address authToken: Address timeToExpire: number adId: string @@ -22,68 +25,72 @@ export interface ICreateAdResponse { orderChainId: string adRecipient: Address reqHash: Address - chainId: number + chainId: string + chainKind: ChainKind } export interface IFundAdResponse { + chainId: string contractAddress: Address signature: Address + signerPublicKey?: Address authToken: Address timeToExpire: number adId: string - adToken: Address - orderChainId: string - adRecipient: Address + amount: string reqHash: Address - chainId: number - amount: number + chainKind: ChainKind } export interface ITopUpAdRequest { adId: string poolAmountTopUp: string - amountBigInt: BigInt + amountBigInt: bigint tokenId: string } export interface IWithdrawFromAdRequest { adId: string poolAmountWithdraw: string - amountBigInt: BigInt - to: Address + amountBigInt: bigint + to: string } export interface IWithdrawFromAdResponse { chainId: string contractAddress: Address signature: Address + signerPublicKey?: Address authToken: Address timeToExpire: number adId: string amount: string to: Address reqHash: Address + chainKind: ChainKind } export interface ICloseAdRequest { adId: string - to: Address + to: string } export interface ICloseAdResponse { chainId: string contractAddress: Address signature: Address + signerPublicKey?: Address authToken: Address timeToExpire: number adId: string amount: string to: Address reqHash: Address + chainKind: ChainKind } export interface IUpdateAdRequest { - status?: "ACTIVE" | "INACTIVE" + status?: "ACTIVE" | "PAUSED" minAmount?: string maxAmount?: string metadata?: { @@ -96,14 +103,14 @@ export interface IUpdateAdRequest { export interface IUpdateAdResponse { id: string creatorAddress: string - minAmount: {} - maxAmount: {} - metadata: {} + minAmount: string | null + maxAmount: string | null + metadata: { title?: string; description?: string } | null } export interface IConfirmAdTxRequest { adId: string - txHash: Address + txHash: string signature: Address } @@ -115,26 +122,28 @@ export interface IAd { orderTokenId: string poolAmount: string availableAmount: string - minAmount: string - maxAmount: string + // Nullable in backend DTO — guard before BigInt()/parseToBigInt. + minAmount: string | null + maxAmount: string | null status: AdStatusT metadata: { title?: string; description?: string } createdAt: string updatedAt: string - adToken: { - name: string - symbol: string - address: Address - decimals: number - chainId: string - } - orderToken: { - name: string - symbol: string - address: Address - decimals: number - chainId: string - } + adToken: IAdToken + orderToken: IAdToken +} + +export interface IAdToken { + name: string + symbol: string + address: Address + decimals: number + chainId: string + chainKind: ChainKind + kind: TokenKind + // Populated only for SAC tokens (classic-asset issuer G-strkey). Needed for + // trustline checks on recipients of Stellar SAC transfers. + assetIssuer?: string | null } export interface IGetAdsParams { @@ -150,10 +159,10 @@ export interface IGetAdsParams { } export type AdStatusT = + | "INACTIVE" | "ACTIVE" | "PAUSED" - | "INACTIVE" | "EXHAUSTED" | "CLOSED" - | "LOCKED" - | "COMPLETED" + +export type TradeStatusT = "INACTIVE" | "ACTIVE" | "LOCKED" | "COMPLETED" diff --git a/apps/frontend/types/chains.ts b/apps/frontend/types/chains.ts index 9cb737c..ce28c59 100644 --- a/apps/frontend/types/chains.ts +++ b/apps/frontend/types/chains.ts @@ -1,10 +1,27 @@ import { Address } from "viem" -export interface IChain { +export type ChainKind = "EVM" | "STELLAR" + +interface BaseChain { name: string chainId: string - adManagerAddress: Address - orderPortalAddress: Address createdAt: string updatedAt: string } + +export interface IEvmChain extends BaseChain { + kind: "EVM" + adManagerAddress: Address + orderPortalAddress: Address +} + +// Stellar contract ids arrive from the backend as 0x + 64 hex (the 32-byte +// form). The viem `Address` type is 20-byte EVM-only, so we model Stellar +// separately and let call sites narrow by `kind`. +export interface IStellarChain extends BaseChain { + kind: "STELLAR" + adManagerAddress: `0x${string}` + orderPortalAddress: `0x${string}` +} + +export type IChain = IEvmChain | IStellarChain diff --git a/apps/frontend/types/tokens.ts b/apps/frontend/types/tokens.ts index 03b1d6e..c1362b3 100644 --- a/apps/frontend/types/tokens.ts +++ b/apps/frontend/types/tokens.ts @@ -1,4 +1,7 @@ import { Address } from "viem" +import type { ChainKind } from "./chains" + +export type TokenKind = "NATIVE" | "ERC20" | "SAC" | "SEP41" export interface IGetTokensParams { limit?: string @@ -7,18 +10,33 @@ export interface IGetTokensParams { address?: string } -export interface IToken { +interface BaseToken { id: string symbol: string name: string - address: Address decimals: number - kind: "NATIVE" | "ERC20" + /** Stellar classic-asset issuer (G-strkey). Populated only for SAC tokens. */ + assetIssuer?: string | null createdAt: string updatedAt: string chain: { id: string name: string chainId: string + kind: ChainKind } } + +export interface IEvmToken extends BaseToken { + kind: "NATIVE" | "ERC20" + address: Address +} + +// Stellar token ids (SAC contract id or SEP-41 contract id) arrive as +// 0x + 64 hex — the 32-byte form. Not a 20-byte EVM address. +export interface IStellarToken extends BaseToken { + kind: "SAC" | "SEP41" + address: `0x${string}` +} + +export type IToken = IEvmToken | IStellarToken diff --git a/apps/frontend/types/trades.ts b/apps/frontend/types/trades.ts index 0aa80cf..84bce90 100644 --- a/apps/frontend/types/trades.ts +++ b/apps/frontend/types/trades.ts @@ -1,13 +1,14 @@ import { Address } from "viem" -import { AdStatusT } from "./ads" +import { TradeStatusT } from "./ads" +import type { ChainKind } from "./chains" import { IToken } from "./tokens" export interface ICreateTradeRequest { adId: string routeId: string amount: string - bridgerDstAddress: Address - orderTokenId: string + // Cross-chain: 0x… on EVM, G-strkey on Stellar. Backend normalizes. + bridgerDstAddress: string } export interface ICreateTradeResponse { @@ -16,91 +17,92 @@ export interface ICreateTradeResponse { chainId: string contractAddress: Address signature: Address + signerPublicKey?: Address authToken: Address timeToExpire: number - orderParams: { - orderChainToken: Address - adChainToken: Address - amount: string - bridger: Address - orderRecipient: Address - adChainId: string - adManager: Address - adId: string - adCreator: Address - adRecipient: Address - salt: string - } + // Create-trade always targets the OrderPortal (order chain side). + orderParams: IOrderPortalOrderParams orderHash: string reqHash: string + chainKind: ChainKind } } +export interface IAdManagerOrderParams { + orderChainToken: Address + adChainToken: Address + amount: string + bridger: Address + orderChainId: string + srcOrderPortal: Address + orderRecipient: Address + adId: string + adCreator: Address + adRecipient: Address + salt: string +} + +export interface IOrderPortalOrderParams { + orderChainToken: Address + adChainToken: Address + amount: string + bridger: Address + adChainId: string + adManager: Address + orderRecipient: Address + adId: string + adCreator: Address + adRecipient: Address + salt: string +} + export interface ILockFundsReponse { chainId: string contractAddress: Address signature: Address + signerPublicKey?: Address authToken: Address timeToExpire: number - orderParams: { - orderChainToken: string - adChainToken: string - amount: string - bridger: string - orderChainId: string - srcOrderPortal: string - orderRecipient: string - adId: string - adCreator: string - adRecipient: string - salt: string - } - orderHash: string - reqHash: string + orderParams: IAdManagerOrderParams + orderHash: Address + reqHash: Address + chainKind: ChainKind } export interface IUnlockFundsResponse { chainId: string contractAddress: Address signature: Address - authToken: string + signerPublicKey?: Address + authToken: Address timeToExpire: number - orderParams: { - orderChainToken: Address - adChainToken: Address - amount: string - bridger: Address - orderChainId: string - orderPortal: Address - orderRecipient: Address - adId: string - adCreator: Address - adRecipient: Address - salt: string - adChainId: string - } + // Discriminate on the presence of `adManager` (OrderPortal side, adCreator + // unlocking) vs `srcOrderPortal` (AdManager side, bridger unlocking). + orderParams: IOrderPortalOrderParams | IAdManagerOrderParams nullifierHash: Address targetRoot: Address proof: Address orderHash: Address reqHash: Address + chainKind: ChainKind } export interface IUnlockFundsRequest { id: string - signature: Address + // `0x`-hex on EVM, base64 SEP-43 on Stellar — backend normalizes. + signature: string } export interface IConfirmUnlockFundsRequest { id: string - signature: Address - txHash: Address + signature: string + txHash: string } export interface IConfirmTradeTxRequest { tradeId: string - txHash: Address - signature: Address + txHash: string + signature: string } export interface IConfirmTradeTxReponse { @@ -114,7 +116,7 @@ export interface IGetTradesParams { routeId?: string cursor?: string limit?: number - AdId?: string + adId?: string minAmount?: string maxAmount?: string orderTokenId?: string @@ -128,7 +130,7 @@ export interface ITrade { adCreatorAddress: Address bridgerAddress: Address amount: string - status: AdStatusT + status: TradeStatusT createdAt: string updatedAt: string ad: { @@ -159,4 +161,8 @@ export interface ITradeParams { orderPortal: Address adChainId: string adManager: Address + orderHash: string + // Chain kind of the chain this caller unlocks on. Drives signing flow — + // EVM → EIP-712; STELLAR → SEP-43 signMessage. + unlockChainKind: ChainKind } diff --git a/apps/frontend/utils/amount.ts b/apps/frontend/utils/amount.ts new file mode 100644 index 0000000..9156786 --- /dev/null +++ b/apps/frontend/utils/amount.ts @@ -0,0 +1,15 @@ +import { parseUnits } from "viem" +import type { ChainKind } from "@/types/chains" + +export const DEFAULT_DECIMALS: Record = { + EVM: 18, + STELLAR: 7, +} + +export function toBaseUnits( + amount: string, + chainKind: ChainKind, + decimals: number = DEFAULT_DECIMALS[chainKind], +): string { + return parseUnits(amount, decimals).toString() +} diff --git a/apps/frontend/utils/evm/address.ts b/apps/frontend/utils/evm/address.ts new file mode 100644 index 0000000..0db07f8 --- /dev/null +++ b/apps/frontend/utils/evm/address.ts @@ -0,0 +1,19 @@ +import { getAddress } from "viem" + +// Cross-chain wire format uses bytes32. For EVM tokens/addresses this is the +// 20-byte address left-padded with 12 zero bytes. This peels it back out. +export function hex32ToAddress20(hex: string): `0x${string}` { + const clean = hex.replace(/^0x/, "") + if (clean.length !== 64) { + throw new Error(`hex32ToAddress20: expected 32-byte hex, got ${hex}`) + } + return getAddress(`0x${clean.slice(-40)}`) +} + +// Left-pad a 20-byte EVM address to 32 bytes. Passes 32-byte input through. +export function toBytes32(value: string): `0x${string}` { + const hex = value.replace(/^0x/i, "").toLowerCase() + if (hex.length === 64) return `0x${hex}` + if (hex.length === 40) return `0x${"0".repeat(24)}${hex}` + throw new Error(`toBytes32: expected 20- or 32-byte hex, got ${value}`) +} diff --git a/apps/frontend/utils/evm/index.ts b/apps/frontend/utils/evm/index.ts new file mode 100644 index 0000000..825c36f --- /dev/null +++ b/apps/frontend/utils/evm/index.ts @@ -0,0 +1,2 @@ +export * from "./address" +export * from "./typedData" diff --git a/apps/frontend/utils/evm/typedData.ts b/apps/frontend/utils/evm/typedData.ts new file mode 100644 index 0000000..d8bb391 --- /dev/null +++ b/apps/frontend/utils/evm/typedData.ts @@ -0,0 +1,122 @@ +import { hashTypedData } from "viem" + +export const ORDER_DOMAIN = { + name: "Proofbridge", + version: "1", +} as const + +// Cross-chain (bytes32) Order type — matches backend-relayer's canonical +// EIP-712 definition in providers/viem/ethers/typedData.ts and the Stellar +// bridger-side hash we sign with Ed25519. +export const ORDER_TYPES_BYTES32 = { + Order: [ + { name: "orderChainToken", type: "bytes32" }, + { name: "adChainToken", type: "bytes32" }, + { name: "amount", type: "uint256" }, + { name: "bridger", type: "bytes32" }, + { name: "orderChainId", type: "uint256" }, + { name: "orderPortal", type: "bytes32" }, + { name: "orderRecipient", type: "bytes32" }, + { name: "adChainId", type: "uint256" }, + { name: "adManager", type: "bytes32" }, + { name: "adId", type: "string" }, + { name: "adCreator", type: "bytes32" }, + { name: "adRecipient", type: "bytes32" }, + { name: "salt", type: "uint256" }, + ], +} as const + +// EVM-native (address) Order type — the frontend used this shape pre-Stellar. +// Kept for the EVM-on-both-sides path where addresses are already 20 bytes. +export const ORDER_TYPES_ADDRESS = { + Order: [ + { name: "orderChainToken", type: "address" }, + { name: "adChainToken", type: "address" }, + { name: "amount", type: "uint256" }, + { name: "bridger", type: "address" }, + { name: "orderChainId", type: "uint256" }, + { name: "orderPortal", type: "address" }, + { name: "orderRecipient", type: "address" }, + { name: "adChainId", type: "uint256" }, + { name: "adManager", type: "address" }, + { name: "adId", type: "string" }, + { name: "adCreator", type: "address" }, + { name: "adRecipient", type: "address" }, + { name: "salt", type: "uint256" }, + ], +} as const + +export interface OrderTypedMessage { + orderChainToken: `0x${string}` + adChainToken: `0x${string}` + amount: bigint + bridger: `0x${string}` + orderChainId: bigint + orderPortal: `0x${string}` + orderRecipient: `0x${string}` + adChainId: bigint + adManager: `0x${string}` + adId: string + adCreator: `0x${string}` + adRecipient: `0x${string}` + salt: bigint +} + +export function uuidToBigInt(uuid: string): bigint { + const hex = uuid.replace(/-/g, "") + return BigInt("0x" + hex) +} + +// Inputs come off the wire as strings (uint256 fields are stringified so they +// survive JSON). Convert to bigint and normalize `salt` — which may be a UUID +// — before hashing or signing. +export function buildOrderMessage(params: { + orderChainToken: string + adChainToken: string + amount: string | bigint + bridger: string + orderChainId: string | bigint + orderPortal: string + orderRecipient: string + adChainId: string | bigint + adManager: string + adId: string + adCreator: string + adRecipient: string + salt: string | bigint +}): OrderTypedMessage { + const toBig = (v: string | bigint) => + typeof v === "bigint" ? v : BigInt(v) + const toBigSalt = (v: string | bigint) => { + if (typeof v === "bigint") return v + if (v.includes("-")) return uuidToBigInt(v) + return BigInt(v) + } + return { + orderChainToken: params.orderChainToken as `0x${string}`, + adChainToken: params.adChainToken as `0x${string}`, + amount: toBig(params.amount), + bridger: params.bridger as `0x${string}`, + orderChainId: toBig(params.orderChainId), + orderPortal: params.orderPortal as `0x${string}`, + orderRecipient: params.orderRecipient as `0x${string}`, + adChainId: toBig(params.adChainId), + adManager: params.adManager as `0x${string}`, + adId: params.adId, + adCreator: params.adCreator as `0x${string}`, + adRecipient: params.adRecipient as `0x${string}`, + salt: toBigSalt(params.salt), + } +} + +// EIP-712 digest — matches ethers' TypedDataEncoder.hash output and the +// on-chain ORDER_TYPEHASH. Used for the Stellar bridger flow where we +// co-sign the digest with Ed25519 rather than ECDSA. +export function hashOrder(message: OrderTypedMessage): `0x${string}` { + return hashTypedData({ + domain: ORDER_DOMAIN, + types: ORDER_TYPES_BYTES32, + primaryType: "Order", + message, + }) +} diff --git a/apps/frontend/utils/format-address.ts b/apps/frontend/utils/format-address.ts new file mode 100644 index 0000000..3af231d --- /dev/null +++ b/apps/frontend/utils/format-address.ts @@ -0,0 +1,42 @@ +import type { ChainKind } from "@/types/chains" +import { hex32ToAccountId, isStellarAccountId } from "./stellar/address" +import { truncateString } from "./truncate-string" + +// Addresses come off the backend in canonical storage form: +// EVM — 20-byte 0x hex (EIP-55 / lowercased). +// STELLAR — 32-byte 0x hex payload of the ed25519 public key. +// Render them as the user expects: EVM stays as 0x… ; Stellar becomes G…. +export function formatChainAddress( + value: string | null | undefined, + chainKind?: ChainKind, +): string { + if (!value) return "" + if (chainKind === "STELLAR") { + try { + return hex32ToAccountId(value) + } catch { + return value + } + } + if (chainKind === "EVM") return value + // Infer from shape when chainKind isn't known at the call site. + if (isStellarAccountId(value)) return value + const hex = value.replace(/^0x/i, "") + if (hex.length === 64) { + try { + return hex32ToAccountId(value) + } catch { + return value + } + } + return value +} + +export function formatChainAddressShort( + value: string | null | undefined, + chainKind?: ChainKind, + head = 4, + tail = 4, +): string { + return truncateString(formatChainAddress(value, chainKind), head, tail) +} diff --git a/apps/frontend/utils/stellar/actions.ts b/apps/frontend/utils/stellar/actions.ts new file mode 100644 index 0000000..9c07df4 --- /dev/null +++ b/apps/frontend/utils/stellar/actions.ts @@ -0,0 +1,246 @@ +import { Address } from "@stellar/stellar-sdk" +import { invokeSoroban, type StellarSignFn } from "./invoke" +import { + StellarOrderParams, + StellarOrderPortalParams, + authArgs, + bytes, + bytesN, + orderParamsScVal, + orderPortalParamsScVal, + strVal, + u128, +} from "./scval" + +export interface StellarAdapterCtx { + rpcUrl: string + networkPassphrase?: string + signerPublicKey: string + signTransaction: StellarSignFn +} + +interface AuthQuad { + signatureHex: string + signerPublicKeyHex: string + authTokenHex: string + timeToExpire: number +} + +export async function createAdSoroban( + ctx: StellarAdapterCtx, + auth: AuthQuad, + params: { + creatorPublicKey: string // G-strkey + adId: string + adTokenHex: string + initialAmount: string + orderChainId: string + adRecipientHex: string + adManagerHex: string + }, +): Promise { + const args = [ + ...authArgs( + auth.signatureHex, + auth.signerPublicKeyHex, + auth.authTokenHex, + auth.timeToExpire, + ), + new Address(params.creatorPublicKey).toScVal(), + strVal(params.adId), + bytesN(params.adTokenHex), + u128(params.initialAmount), + u128(params.orderChainId), + bytesN(params.adRecipientHex), + ] + return invokeSoroban({ + ...ctx, + contractHex: params.adManagerHex, + method: "create_ad", + args, + }) +} + +export async function fundAdSoroban( + ctx: StellarAdapterCtx, + auth: AuthQuad, + params: { adId: string; amount: string; adManagerHex: string }, +): Promise { + const args = [ + ...authArgs( + auth.signatureHex, + auth.signerPublicKeyHex, + auth.authTokenHex, + auth.timeToExpire, + ), + strVal(params.adId), + u128(params.amount), + ] + return invokeSoroban({ + ...ctx, + contractHex: params.adManagerHex, + method: "fund_ad", + args, + }) +} + +export async function withdrawFromAdSoroban( + ctx: StellarAdapterCtx, + auth: AuthQuad, + params: { + adId: string + amount: string + toPublicKey: string // G-strkey + adManagerHex: string + }, +): Promise { + const args = [ + ...authArgs( + auth.signatureHex, + auth.signerPublicKeyHex, + auth.authTokenHex, + auth.timeToExpire, + ), + strVal(params.adId), + u128(params.amount), + new Address(params.toPublicKey).toScVal(), + ] + return invokeSoroban({ + ...ctx, + contractHex: params.adManagerHex, + method: "withdraw_from_ad", + args, + }) +} + +export async function closeAdSoroban( + ctx: StellarAdapterCtx, + auth: AuthQuad, + params: { adId: string; toPublicKey: string; adManagerHex: string }, +): Promise { + const args = [ + ...authArgs( + auth.signatureHex, + auth.signerPublicKeyHex, + auth.authTokenHex, + auth.timeToExpire, + ), + strVal(params.adId), + new Address(params.toPublicKey).toScVal(), + ] + return invokeSoroban({ + ...ctx, + contractHex: params.adManagerHex, + method: "close_ad", + args, + }) +} + +export async function lockForOrderSoroban( + ctx: StellarAdapterCtx, + auth: AuthQuad, + params: { orderParams: StellarOrderParams; adManagerHex: string }, +): Promise { + const args = [ + ...authArgs( + auth.signatureHex, + auth.signerPublicKeyHex, + auth.authTokenHex, + auth.timeToExpire, + ), + orderParamsScVal(params.orderParams), + ] + return invokeSoroban({ + ...ctx, + contractHex: params.adManagerHex, + method: "lock_for_order", + args, + }) +} + +export async function unlockSoroban( + ctx: StellarAdapterCtx, + auth: AuthQuad, + params: { + orderParams: StellarOrderParams + nullifierHashHex: string + targetRootHex: string + proof: Buffer + adManagerHex: string + }, +): Promise { + const args = [ + ...authArgs( + auth.signatureHex, + auth.signerPublicKeyHex, + auth.authTokenHex, + auth.timeToExpire, + ), + orderParamsScVal(params.orderParams), + bytesN(params.nullifierHashHex), + bytesN(params.targetRootHex), + bytes(params.proof), + ] + return invokeSoroban({ + ...ctx, + contractHex: params.adManagerHex, + method: "unlock", + args, + }) +} + +export async function createOrderSoroban( + ctx: StellarAdapterCtx, + auth: AuthQuad, + params: { + orderParams: StellarOrderPortalParams + orderPortalHex: string + }, +): Promise { + const args = [ + ...authArgs( + auth.signatureHex, + auth.signerPublicKeyHex, + auth.authTokenHex, + auth.timeToExpire, + ), + orderPortalParamsScVal(params.orderParams), + ] + return invokeSoroban({ + ...ctx, + contractHex: params.orderPortalHex, + method: "create_order", + args, + }) +} + +export async function unlockOrderPortalSoroban( + ctx: StellarAdapterCtx, + auth: AuthQuad, + params: { + orderParams: StellarOrderPortalParams + nullifierHashHex: string + targetRootHex: string + proof: Buffer + orderPortalHex: string + }, +): Promise { + const args = [ + ...authArgs( + auth.signatureHex, + auth.signerPublicKeyHex, + auth.authTokenHex, + auth.timeToExpire, + ), + orderPortalParamsScVal(params.orderParams), + bytesN(params.nullifierHashHex), + bytesN(params.targetRootHex), + bytes(params.proof), + ] + return invokeSoroban({ + ...ctx, + contractHex: params.orderPortalHex, + method: "unlock", + args, + }) +} diff --git a/apps/frontend/utils/stellar/address.ts b/apps/frontend/utils/stellar/address.ts new file mode 100644 index 0000000..6a2649c --- /dev/null +++ b/apps/frontend/utils/stellar/address.ts @@ -0,0 +1,56 @@ +import { StrKey } from "@stellar/stellar-sdk" + +const HEX32_RE = /^0x[a-fA-F0-9]{64}$/ +const HEX20_RE = /^0x[a-fA-F0-9]{40}$/ + +export function hex32ToBuffer(hex: string): Buffer { + if (HEX32_RE.test(hex)) return Buffer.from(hex.slice(2), "hex") + if (HEX20_RE.test(hex)) { + const clean = hex.slice(2).toLowerCase() + return Buffer.from("00".repeat(12) + clean, "hex") + } + throw new Error( + `invalid bytes32-or-evm hex address: ${hex} (want 0x + 40 or 64 hex chars)`, + ) +} + +// Strict 32-byte-only variant. Use this for StrKey encodes (account ids, +// contract ids) where zero-padding an EVM 20-byte address would silently +// produce a bogus Ed25519/contract strkey. +function hex32OnlyToBuffer(hex: string): Buffer { + if (!HEX32_RE.test(hex)) { + throw new Error( + `expected 0x + 64 hex (32 bytes), got ${hex} — EVM addresses are not valid Stellar keys`, + ) + } + return Buffer.from(hex.slice(2), "hex") +} + +export function bufferToHex32(buf: Buffer): `0x${string}` { + if (buf.length !== 32) throw new Error("bufferToHex32: expected 32 bytes") + return `0x${buf.toString("hex")}` +} + +export function hex32ToContractId(hex: string): string { + return StrKey.encodeContract(hex32OnlyToBuffer(hex)) +} + +export function hex32ToAccountId(hex: string): string { + return StrKey.encodeEd25519PublicKey(hex32OnlyToBuffer(hex)) +} + +export function contractIdToHex32(strkey: string): `0x${string}` { + return bufferToHex32(Buffer.from(StrKey.decodeContract(strkey))) +} + +export function accountIdToHex32(strkey: string): `0x${string}` { + return bufferToHex32(Buffer.from(StrKey.decodeEd25519PublicKey(strkey))) +} + +export function isStellarAccountId(value: string): boolean { + return StrKey.isValidEd25519PublicKey(value) +} + +export function isStellarContractId(value: string): boolean { + return StrKey.isValidContract(value) +} diff --git a/apps/frontend/utils/stellar/balance.ts b/apps/frontend/utils/stellar/balance.ts new file mode 100644 index 0000000..5460300 --- /dev/null +++ b/apps/frontend/utils/stellar/balance.ts @@ -0,0 +1,75 @@ +import { Horizon } from "@stellar/stellar-sdk" +import { parseUnits } from "viem" +import { defaultHorizonUrl } from "./trustline" +import type { TokenKind } from "@/types/tokens" + +export interface StellarBalanceResult { + value: bigint + decimals: number + symbol: string +} + +interface BalanceToken { + kind: TokenKind + symbol: string + decimals: number + assetIssuer?: string | null +} + +/** + * Reads a bridger's balance on Stellar for NATIVE (XLM) and SAC tokens via + * Horizon. SEP41 Soroban tokens aren't supported here — Horizon doesn't index + * contract data and a Soroban RPC query is required. Returns null for + * unsupported kinds so callers can fall back gracefully. + */ +export async function getStellarTokenBalance( + publicKey: string, + token: BalanceToken, + horizonUrl: string = defaultHorizonUrl(), +): Promise { + const server = new Horizon.Server(horizonUrl) + const zero: StellarBalanceResult = { + value: BigInt(0), + decimals: token.decimals, + symbol: token.symbol, + } + try { + const account = await server.loadAccount(publicKey) + if (token.kind === "NATIVE") { + const row = account.balances.find((b) => b.asset_type === "native") + if (!row) return zero + return { + value: parseUnits(row.balance, token.decimals), + decimals: token.decimals, + symbol: token.symbol, + } + } + if (token.kind === "SAC") { + if (!token.assetIssuer) return null + const row = account.balances.find( + (b) => + (b.asset_type === "credit_alphanum4" || + b.asset_type === "credit_alphanum12") && + (b as { asset_code?: string }).asset_code === token.symbol && + (b as { asset_issuer?: string }).asset_issuer === token.assetIssuer, + ) + if (!row) return zero + return { + value: parseUnits(row.balance, token.decimals), + decimals: token.decimals, + symbol: token.symbol, + } + } + return null + } catch (e: unknown) { + if ( + typeof e === "object" && + e !== null && + "response" in e && + (e as { response?: { status?: number } }).response?.status === 404 + ) { + return zero + } + throw e + } +} diff --git a/apps/frontend/utils/stellar/index.ts b/apps/frontend/utils/stellar/index.ts new file mode 100644 index 0000000..a0c9ade --- /dev/null +++ b/apps/frontend/utils/stellar/index.ts @@ -0,0 +1,4 @@ +export * from "./address" +export * from "./scval" +export * from "./invoke" +export * from "./actions" diff --git a/apps/frontend/utils/stellar/invoke.ts b/apps/frontend/utils/stellar/invoke.ts new file mode 100644 index 0000000..f87d22c --- /dev/null +++ b/apps/frontend/utils/stellar/invoke.ts @@ -0,0 +1,74 @@ +import { + Contract, + Networks, + TransactionBuilder, + rpc, + xdr, +} from "@stellar/stellar-sdk" +import { hex32ToContractId } from "./address" + +const BASE_FEE = "1000" + +export type StellarSignFn = ( + xdr: string, + networkPassphrase?: string, +) => Promise + +export interface InvokeSorobanOpts { + rpcUrl: string + networkPassphrase?: string + signerPublicKey: string // G-strkey of the wallet account paying the fee + contractHex: string // 0x + 64 hex (stored contract address) + method: string + args: xdr.ScVal[] + signTransaction: StellarSignFn + pollIntervalMs?: number + pollAttempts?: number +} + +export async function invokeSoroban({ + rpcUrl, + networkPassphrase, + signerPublicKey, + contractHex, + method, + args, + signTransaction, + pollIntervalMs = 1000, + pollAttempts = 30, +}: InvokeSorobanOpts): Promise { + const passphrase = networkPassphrase ?? Networks.TESTNET + const server = new rpc.Server(rpcUrl, { + allowHttp: rpcUrl.startsWith("http://"), + }) + const contract = new Contract(hex32ToContractId(contractHex)) + const source = await server.getAccount(signerPublicKey) + const tx = new TransactionBuilder(source, { + fee: BASE_FEE, + networkPassphrase: passphrase, + }) + .addOperation(contract.call(method, ...args)) + .setTimeout(60) + .build() + + const prepared = await server.prepareTransaction(tx) + const signedXdr = await signTransaction(prepared.toXDR(), passphrase) + const signedTx = TransactionBuilder.fromXDR(signedXdr, passphrase) + + const sent = await server.sendTransaction(signedTx) + if (sent.status === "ERROR") { + throw new Error( + `Stellar send failed [${method}]: ${JSON.stringify(sent.errorResult)}`, + ) + } + + for (let i = 0; i < pollAttempts; i++) { + const got = await server.getTransaction(sent.hash) + if (got.status === rpc.Api.GetTransactionStatus.SUCCESS) return sent.hash + if (got.status === rpc.Api.GetTransactionStatus.FAILED) { + throw new Error(`Stellar tx [${method}] FAILED hash=${sent.hash}`) + } + await new Promise((r) => setTimeout(r, pollIntervalMs)) + } + throw new Error(`Stellar tx [${method}] timed out hash=${sent.hash}`) +} diff --git a/apps/frontend/utils/stellar/scval.ts b/apps/frontend/utils/stellar/scval.ts new file mode 100644 index 0000000..f364dff --- /dev/null +++ b/apps/frontend/utils/stellar/scval.ts @@ -0,0 +1,112 @@ +import { nativeToScVal, xdr } from "@stellar/stellar-sdk" +import { hex32ToBuffer } from "./address" + +export function bytesN(hex: string): xdr.ScVal { + return nativeToScVal(hex32ToBuffer(hex), { type: "bytes" }) +} + +export function bytes(buf: Buffer): xdr.ScVal { + return nativeToScVal(buf, { type: "bytes" }) +} + +export function u64(n: number | bigint): xdr.ScVal { + return nativeToScVal(BigInt(n), { type: "u64" }) +} + +export function u128(n: string | bigint | number): xdr.ScVal { + return nativeToScVal(BigInt(n), { type: "u128" }) +} + +export function strVal(s: string): xdr.ScVal { + return nativeToScVal(s, { type: "string" }) +} + +// Shared auth quadruple (signature, public_key, auth_token, time_to_expire). +export function authArgs( + signatureHex: string, + publicKeyHex: string, + authTokenHex: string, + timeToExpire: number, +): xdr.ScVal[] { + return [ + bytes(Buffer.from(signatureHex.replace(/^0x/, ""), "hex")), + bytesN(publicKeyHex), + bytesN(authTokenHex), + u64(timeToExpire), + ] +} + +// Matches contracts/stellar/contracts/ad-manager/src/types.rs::OrderParams. +export interface StellarOrderParams { + orderChainToken: string + adChainToken: string + amount: string + bridger: string + orderChainId: string + srcOrderPortal: string + orderRecipient: string + adId: string + adCreator: string + adRecipient: string + salt: string +} + +// Soroban struct is an ScMap with entries sorted alphabetically by key. +export function orderParamsScVal(p: StellarOrderParams): xdr.ScVal { + const entries: Array<[string, xdr.ScVal]> = [ + ["ad_chain_token", bytesN(p.adChainToken)], + ["ad_creator", bytesN(p.adCreator)], + ["ad_id", strVal(p.adId)], + ["ad_recipient", bytesN(p.adRecipient)], + ["amount", u128(p.amount)], + ["bridger", bytesN(p.bridger)], + ["order_chain_id", u128(p.orderChainId)], + ["order_chain_token", bytesN(p.orderChainToken)], + ["order_recipient", bytesN(p.orderRecipient)], + ["salt", u128(p.salt)], + ["src_order_portal", bytesN(p.srcOrderPortal)], + ] + return xdr.ScVal.scvMap( + entries.map( + ([k, v]) => new xdr.ScMapEntry({ key: xdr.ScVal.scvSymbol(k), val: v }), + ), + ) +} + +// Matches contracts/stellar/contracts/order-portal/src/types.rs::OrderParams. +export interface StellarOrderPortalParams { + orderChainToken: string + adChainToken: string + amount: string + bridger: string + orderRecipient: string + adChainId: string + adManager: string + adId: string + adCreator: string + adRecipient: string + salt: string +} + +export function orderPortalParamsScVal( + p: StellarOrderPortalParams, +): xdr.ScVal { + const entries: Array<[string, xdr.ScVal]> = [ + ["ad_chain_id", u128(p.adChainId)], + ["ad_chain_token", bytesN(p.adChainToken)], + ["ad_creator", bytesN(p.adCreator)], + ["ad_id", strVal(p.adId)], + ["ad_manager", bytesN(p.adManager)], + ["ad_recipient", bytesN(p.adRecipient)], + ["amount", u128(p.amount)], + ["bridger", bytesN(p.bridger)], + ["order_chain_token", bytesN(p.orderChainToken)], + ["order_recipient", bytesN(p.orderRecipient)], + ["salt", u128(p.salt)], + ] + return xdr.ScVal.scvMap( + entries.map( + ([k, v]) => new xdr.ScMapEntry({ key: xdr.ScVal.scvSymbol(k), val: v }), + ), + ) +} diff --git a/apps/frontend/utils/stellar/trustline.ts b/apps/frontend/utils/stellar/trustline.ts new file mode 100644 index 0000000..887cc61 --- /dev/null +++ b/apps/frontend/utils/stellar/trustline.ts @@ -0,0 +1,91 @@ +import { + Asset, + BASE_FEE, + Horizon, + Networks, + Operation, + TransactionBuilder, +} from "@stellar/stellar-sdk" +import type { StellarSignFn } from "./invoke" + +const DEFAULT_TESTNET_HORIZON = "https://horizon-testnet.stellar.org" + +export function defaultHorizonUrl(): string { + return ( + process.env.NEXT_PUBLIC_STELLAR_HORIZON_URL || DEFAULT_TESTNET_HORIZON + ) +} + +export interface TrustlineCtx { + horizonUrl?: string + networkPassphrase?: string + signerPublicKey: string + signTransaction: StellarSignFn +} + +/** + * Returns true when the account holds a trustline for the classic asset + * identified by (code, issuer). Native XLM is always "trusted". A missing + * account (unfunded) is treated as no trustline. + */ +export async function hasTrustline( + publicKey: string, + code: string, + issuer: string, + horizonUrl: string = defaultHorizonUrl(), +): Promise { + if (code.toUpperCase() === "XLM" && !issuer) return true + const server = new Horizon.Server(horizonUrl) + try { + const account = await server.loadAccount(publicKey) + return account.balances.some( + (b: { asset_type: string; asset_code?: string; asset_issuer?: string }) => + (b.asset_type === "credit_alphanum4" || + b.asset_type === "credit_alphanum12") && + b.asset_code === code && + b.asset_issuer === issuer, + ) + } catch (e: unknown) { + // Horizon returns 404 for unfunded accounts — treat as no trustline. + if ( + typeof e === "object" && + e !== null && + "response" in e && + (e as { response?: { status?: number } }).response?.status === 404 + ) { + return false + } + throw e + } +} + +/** + * Builds + submits a ChangeTrust op that adds a trustline for (code, issuer) + * on the signer's account. Returns the Horizon tx hash. No-op fast-path: call + * `hasTrustline` first — this function will *also* succeed if the trustline + * already exists (Stellar treats it as a limit update). + */ +export async function establishTrustline( + ctx: TrustlineCtx, + code: string, + issuer: string, +): Promise { + const horizonUrl = ctx.horizonUrl ?? defaultHorizonUrl() + const passphrase = ctx.networkPassphrase ?? Networks.TESTNET + const server = new Horizon.Server(horizonUrl) + const source = await server.loadAccount(ctx.signerPublicKey) + + const asset = new Asset(code, issuer) + const tx = new TransactionBuilder(source, { + fee: BASE_FEE, + networkPassphrase: passphrase, + }) + .addOperation(Operation.changeTrust({ asset })) + .setTimeout(180) + .build() + + const signedXdr = await ctx.signTransaction(tx.toXDR(), passphrase) + const signedTx = TransactionBuilder.fromXDR(signedXdr, passphrase) + const result = await server.submitTransaction(signedTx) + return result.hash +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8a40e00..13e2db2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -36,7 +36,7 @@ importers: version: 0.87.0 '@biconomy/account': specifier: ^4.5.7 - version: 4.5.7(typescript@5.9.3)(viem@2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6)) + version: 4.5.7(typescript@5.9.3)(viem@2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.3.6)) '@nestjs/cache-manager': specifier: ^3.0.1 version: 3.1.0(@nestjs/common@11.1.18(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.18)(cache-manager@7.2.8)(keyv@5.6.0)(rxjs@7.8.2) @@ -108,7 +108,7 @@ importers: version: 17.4.1 ethers: specifier: ^6.15.0 - version: 6.16.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) + version: 6.16.0(bufferutil@4.1.0)(utf-8-validate@6.0.6) express: specifier: ^5.1.0 version: 5.2.1 @@ -126,7 +126,7 @@ importers: version: 6.16.1(typescript@5.9.3) proofbridge-mmr: specifier: 1.0.8 - version: 1.0.8(bufferutil@4.1.0)(utf-8-validate@5.0.10) + version: 1.0.8(bufferutil@4.1.0)(utf-8-validate@6.0.6) rave-level: specifier: ^1.0.0 version: 1.0.0 @@ -138,7 +138,7 @@ importers: version: 7.8.2 siwe: specifier: ^3.0.0 - version: 3.0.0(ethers@6.16.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)) + version: 3.0.0(ethers@6.16.0(bufferutil@4.1.0)(utf-8-validate@6.0.6)) unique-names-generator: specifier: ^4.7.1 version: 4.7.1 @@ -147,7 +147,7 @@ importers: version: 13.0.0 viem: specifier: ^2.37.7 - version: 2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + version: 2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.3.6) winston: specifier: ^3.17.0 version: 3.19.0 @@ -232,22 +232,28 @@ importers: dependencies: '@ant-design/nextjs-registry': specifier: ^1.1.0 - version: 1.3.0(@ant-design/cssinjs@1.24.0(react-dom@19.2.5(react@19.1.0))(react@19.1.0))(antd@5.27.3(date-fns@4.1.0)(moment@2.30.1)(react-dom@19.2.5(react@19.1.0))(react@19.1.0))(next@15.5.15(@babel/core@7.29.0)(react-dom@19.2.5(react@19.1.0))(react@19.1.0))(react-dom@19.2.5(react@19.1.0))(react@19.1.0) + version: 1.3.0(@ant-design/cssinjs@1.24.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(antd@5.27.3(date-fns@4.1.0)(moment@2.30.1)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(next@15.5.15(@babel/core@7.29.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@creit.tech/stellar-wallets-kit': + specifier: ^2.1.0 + version: 2.1.0(@solana/sysvars@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3))(@stellar/stellar-sdk@15.0.1)(@trezor/connect@9.7.2(@solana/sysvars@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3))(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(tslib@2.8.1)(typescript@5.9.3)(utf-8-validate@6.0.6)(ws@8.18.0(bufferutil@4.1.0)(utf-8-validate@6.0.6)))(@types/react@19.2.14)(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(near-api-js@5.1.1)(react@19.2.5)(tslib@2.8.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.5))(utf-8-validate@6.0.6)(ws@8.18.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))(zod@3.25.76) '@gsap/react': specifier: ^2.1.2 - version: 2.1.2(gsap@3.14.2)(react@19.1.0) + version: 2.1.2(gsap@3.14.2)(react@19.2.5) '@rainbow-me/rainbowkit': - specifier: ^2.2.8 - version: 2.2.10(@tanstack/react-query@5.98.0(react@19.1.0))(@types/react@19.2.14)(react-dom@19.2.5(react@19.1.0))(react@19.1.0)(typescript@5.9.3)(viem@2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6))(wagmi@2.19.5(@tanstack/query-core@5.98.0)(@tanstack/react-query@5.98.0(react@19.1.0))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6))(zod@4.3.6)) + specifier: ^2.2.10 + version: 2.2.10(@tanstack/react-query@5.98.0(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(typescript@5.9.3)(viem@2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.98.0)(@tanstack/react-query@5.98.0(react@19.2.5))(@types/react@19.2.14)(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(viem@2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76))(zod@3.25.76)) '@rainbow-me/rainbowkit-siwe-next-auth': specifier: ^0.5.0 - version: 0.5.0(@rainbow-me/rainbowkit@2.2.10(@tanstack/react-query@5.98.0(react@19.1.0))(@types/react@19.2.14)(react-dom@19.2.5(react@19.1.0))(react@19.1.0)(typescript@5.9.3)(viem@2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6))(wagmi@2.19.5(@tanstack/query-core@5.98.0)(@tanstack/react-query@5.98.0(react@19.1.0))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6))(zod@4.3.6)))(next-auth@4.24.11(next@15.5.15(@babel/core@7.29.0)(react-dom@19.2.5(react@19.1.0))(react@19.1.0))(react-dom@19.2.5(react@19.1.0))(react@19.1.0))(react@19.1.0) + version: 0.5.0(@rainbow-me/rainbowkit@2.2.10(@tanstack/react-query@5.98.0(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(typescript@5.9.3)(viem@2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.98.0)(@tanstack/react-query@5.98.0(react@19.2.5))(@types/react@19.2.14)(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(viem@2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76))(zod@3.25.76)))(next-auth@4.24.11(next@15.5.15(@babel/core@7.29.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react@19.2.5) + '@stellar/stellar-sdk': + specifier: ^15.0.1 + version: 15.0.1 '@tanstack/react-query': specifier: ^5.89.0 - version: 5.98.0(react@19.1.0) + version: 5.98.0(react@19.2.5) antd: specifier: 5.27.3 - version: 5.27.3(date-fns@4.1.0)(moment@2.30.1)(react-dom@19.2.5(react@19.1.0))(react@19.1.0) + version: 5.27.3(date-fns@4.1.0)(moment@2.30.1)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) axios: specifier: '>=1.15.0' version: 1.15.0 @@ -265,19 +271,19 @@ importers: version: 3.0.5 lenis: specifier: ^1.3.11 - version: 1.3.21(react@19.1.0) + version: 1.3.21(react@19.2.5) lucide-react: specifier: ^1.8.0 - version: 1.8.0(react@19.1.0) + version: 1.8.0(react@19.2.5) moment: specifier: ^2.30.1 version: 2.30.1 next: specifier: 15.5.15 - version: 15.5.15(@babel/core@7.29.0)(react-dom@19.2.5(react@19.1.0))(react@19.1.0) + version: 15.5.15(@babel/core@7.29.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) next-themes: specifier: ^0.4.6 - version: 0.4.6(react-dom@19.2.5(react@19.1.0))(react@19.1.0) + version: 0.4.6(react-dom@19.2.5(react@19.2.5))(react@19.2.5) proof-bridge: specifier: 'link:' version: 'link:' @@ -285,20 +291,20 @@ importers: specifier: 'link:' version: 'link:' react: - specifier: 19.1.0 - version: 19.1.0 + specifier: 19.2.5 + version: 19.2.5 react-dom: specifier: 19.2.5 - version: 19.2.5(react@19.1.0) + version: 19.2.5(react@19.2.5) react-icons: specifier: ^5.5.0 - version: 5.6.0(react@19.1.0) + version: 5.6.0(react@19.2.5) siwe: specifier: ^3.0.0 - version: 3.0.0(ethers@6.16.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)) + version: 3.0.0(ethers@6.16.0(bufferutil@4.1.0)(utf-8-validate@6.0.6)) sonner: specifier: ^2.0.7 - version: 2.0.7(react-dom@19.2.5(react@19.1.0))(react@19.1.0) + version: 2.0.7(react-dom@19.2.5(react@19.2.5))(react@19.2.5) tailwind-merge: specifier: ^3.3.1 version: 3.5.0 @@ -307,10 +313,10 @@ importers: version: 4.0.0(tailwindcss@4.2.2) viem: specifier: ^2.37.7 - version: 2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + version: 2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76) wagmi: specifier: ^2.17.1 - version: 2.19.5(@tanstack/query-core@5.98.0)(@tanstack/react-query@5.98.0(react@19.1.0))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6))(zod@4.3.6) + version: 2.19.5(@tanstack/query-core@5.98.0)(@tanstack/react-query@5.98.0(react@19.2.5))(@types/react@19.2.14)(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(viem@2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76))(zod@3.25.76) devDependencies: '@eslint/eslintrc': specifier: ^3 @@ -362,13 +368,13 @@ importers: version: 3.2.0 ethers: specifier: ^6.15.0 - version: 6.16.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) + version: 6.16.0(bufferutil@4.1.0)(utf-8-validate@6.0.6) hex: specifier: ^0.1.0 version: 0.1.0 proofbridge-mmr: specifier: 1.0.8 - version: 1.0.8(bufferutil@4.1.0)(utf-8-validate@5.0.10) + version: 1.0.8(bufferutil@4.1.0)(utf-8-validate@6.0.6) devDependencies: '@types/node': specifier: ^20.0.0 @@ -396,10 +402,10 @@ importers: version: 0.6.2 ethers: specifier: ^6.15.0 - version: 6.16.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) + version: 6.16.0(bufferutil@4.1.0)(utf-8-validate@6.0.6) proofbridge-mmr: specifier: 1.0.8 - version: 1.0.8(bufferutil@4.1.0)(utf-8-validate@5.0.10) + version: 1.0.8(bufferutil@4.1.0)(utf-8-validate@6.0.6) devDependencies: '@types/node': specifier: ^22.0.0 @@ -427,7 +433,7 @@ importers: version: 4.2.0 ethers: specifier: ^6.15.0 - version: 6.16.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) + version: 6.16.0(bufferutil@4.1.0)(utf-8-validate@6.0.6) level: specifier: ^10.0.0 version: 10.0.0 @@ -473,10 +479,10 @@ importers: version: 0.6.2 ethers: specifier: ^6.15.0 - version: 6.16.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) + version: 6.16.0(bufferutil@4.1.0)(utf-8-validate@6.0.6) proofbridge-mmr: specifier: 1.0.8 - version: 1.0.8(bufferutil@4.1.0)(utf-8-validate@5.0.10) + version: 1.0.8(bufferutil@4.1.0)(utf-8-validate@6.0.6) devDependencies: '@types/node': specifier: ^20.0.0 @@ -504,13 +510,13 @@ importers: version: link:../cross-chain-e2e ethers: specifier: ^6.15.0 - version: 6.16.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) + version: 6.16.0(bufferutil@4.1.0)(utf-8-validate@6.0.6) siwe: specifier: ^3.0.0 - version: 3.0.0(ethers@6.16.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)) + version: 3.0.0(ethers@6.16.0(bufferutil@4.1.0)(utf-8-validate@6.0.6)) viem: specifier: ^2.37.7 - version: 2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + version: 2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.3.6) devDependencies: '@types/node': specifier: ^22.10.7 @@ -530,6 +536,9 @@ packages: '@adraffy/ens-normalize@1.11.1': resolution: {integrity: sha512-nhCBV3quEgesuf7c7KYfperqSS14T8bYuvJ8PcLJp6znkZpFc0AuW4qBtr8eKVyPPe/8RSr7sglCWPU5eaxwKQ==} + '@albedo-link/intent@0.12.0': + resolution: {integrity: sha512-UlGBhi0qASDYOjLrOL4484vQ26Ee3zTK2oAgvPMClOs+1XNk3zbs3dECKZv+wqeSI8SkHow8mXLTa16eVh+dQA==} + '@alloc/quick-lru@5.2.0': resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} engines: {node: '>=10'} @@ -828,6 +837,13 @@ packages: resolution: {integrity: sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==} engines: {node: '>=0.1.90'} + '@creit.tech/stellar-wallets-kit@2.1.0': + resolution: {integrity: sha512-DYOJXoH/SAE74prb4DqVvxzGfSBHaRdFa9Dz9BpnXQJPB63CJejcAcgyILurQcBwitRmFQd1bPg/9h+WiRgb/w==} + + '@creit.tech/xbull-wallet-connect@0.4.0': + resolution: {integrity: sha512-LrCUIqUz50SkZ4mv2hTqSmwews8CNRYVoZ9+VjLsK/1U8PByzXTxv1vZyenj6avRTG86ifpoeihz7D3D5YIDrQ==} + engines: {node: '>=16'} + '@cspotcode/source-map-support@0.8.1': resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} engines: {node: '>=12'} @@ -862,6 +878,12 @@ packages: '@emotion/unitless@0.7.5': resolution: {integrity: sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==} + '@emurgo/cardano-serialization-lib-browser@13.2.1': + resolution: {integrity: sha512-7RfX1gI16Vj2DgCp/ZoXqyLAakWo6+X95ku/rYGbVzuS/1etrlSiJmdbmdm+eYmszMlGQjrtOJQeVLXoj4L/Ag==} + + '@emurgo/cardano-serialization-lib-nodejs@13.2.0': + resolution: {integrity: sha512-Bz1zLGEqBQ0BVkqt1OgMxdBOE3BdUWUd7Ly9Ecr/aUwkA8AV1w1XzBMe4xblmJHnB1XXNlPH4SraXCvO+q0Mig==} + '@esbuild/aix-ppc64@0.27.7': resolution: {integrity: sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg==} engines: {node: '>=18'} @@ -1066,22 +1088,41 @@ packages: resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@ethereumjs/common@10.1.1': + resolution: {integrity: sha512-NefPzPlrJ9w+NWVe06P+sHZQU98E1AEU9vhiHJEVT2wEcNBC1YX6hON9+smrfbn86C4U1pb2zbvjhkF+n/LKBw==} + '@ethereumjs/common@3.2.0': resolution: {integrity: sha512-pksvzI0VyLgmuEF2FA/JR/4/y6hcPq8OUail3/AvycBaW1d5VSauOZzqGvJ3RTmR4MU35lWE8KseKOsEhrFRBA==} + '@ethereumjs/rlp@10.1.1': + resolution: {integrity: sha512-jbnWTEwcpoY+gE0r+wxfDG9zgiu54DcTcwnc9sX3DsqKR4l5K7x2V8mQL3Et6hURa4DuT9g7z6ukwpBLFchszg==} + engines: {node: '>=20'} + hasBin: true + '@ethereumjs/rlp@4.0.1': resolution: {integrity: sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==} engines: {node: '>=14'} hasBin: true + '@ethereumjs/tx@10.1.1': + resolution: {integrity: sha512-Kz8GWIKQjEQB60ko9hsYDX3rZMHZZOTcmm6OFl855Lu3padVnf5ZactUKM6nmWPsumHED5bWDjO32novZd1zyw==} + engines: {node: '>=20'} + '@ethereumjs/tx@4.2.0': resolution: {integrity: sha512-1nc6VO4jtFd172BbSnTnDQVr9IYBFl1y4xPzZdtkrkKIncBCkdbgfdRV+MiTkJYAtTxvV12GRZLqBFT1PNK6Yw==} engines: {node: '>=14'} + '@ethereumjs/util@10.1.1': + resolution: {integrity: sha512-r2EhaeEmLZXVs1dT2HJFQysAkr63ZWATu/9tgYSp1IlvjvwyC++DLg5kCDwMM49HBq3sOAhrPnXkoqf9DV2gbw==} + engines: {node: '>=20'} + '@ethereumjs/util@8.1.0': resolution: {integrity: sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA==} engines: {node: '>=14'} + '@fivebinaries/coin-selection@3.0.0': + resolution: {integrity: sha512-h25Pn1ZA7oqQBQDodGAgIsQt66T2wDge9onBKNqE66WNWL0KJiKJbpij8YOLo5AAlEIg5IS7EB1QjBgDOIg6DQ==} + '@gemini-wallet/core@0.3.2': resolution: {integrity: sha512-Z4aHi3ECFf5oWYWM3F1rW83GJfB9OvhBYPTmb5q+VyK3uvzvS48lwo+jwh2eOoCRWEuT/crpb9Vwp2QaS5JqgQ==} peerDependencies: @@ -1107,6 +1148,9 @@ packages: gsap: ^3.12.5 react: '>=17' + '@hot-wallet/sdk@1.0.11': + resolution: {integrity: sha512-qRDH/4yqnRCnk7L/Qd0/LDOKDUKWcFgvf6eRELJkP0OgxIe65i/iXaG+u2lL0mLbTGkiWYk67uAvEerNUv2gzA==} + '@humanfs/core@0.19.1': resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} engines: {node: '>=18.18.0'} @@ -1540,12 +1584,38 @@ packages: '@kwsites/file-exists@1.1.1': resolution: {integrity: sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==} + '@ledgerhq/devices@8.6.1': + resolution: {integrity: sha512-PQR2fyWz7P/wMFHY9ZLz17WgFdxC/Im0RVDcWXpp24+iRQRyxhQeX2iG4mBKUzfaAW6pOIEiWt+vmJh88QP9rQ==} + + '@ledgerhq/errors@6.32.0': + resolution: {integrity: sha512-BjjvhLM6UXYUbhllqAduo9PSneLt9FXZ3TBEUFQ3MMSZOCHt0gAgDySLwul99R8fdYWkXBza4DYQjUNckpN2lg==} + + '@ledgerhq/hw-app-str@7.2.8': + resolution: {integrity: sha512-VHICY9jyZW5LM/8zc/mSbW7fS2bAC1OTVOtRwdQLEDn6Gv9UaNcCWjaHI1UKAnDUqYX7DUQuIPiTP1b4O+mtUQ==} + + '@ledgerhq/hw-transport-webusb@6.29.12': + resolution: {integrity: sha512-mMGKPYAUz9MNcURe+hSTSHwqPwCli6D0lCl15Z4hDOpcqhZ26vwoeWVKeQp53NNCetHOl0lauPkN43Gt9pIggg==} + + '@ledgerhq/hw-transport@6.31.12': + resolution: {integrity: sha512-FO5LRIXYC8ELtaohlO8qK0b3TfHUNBZ3+CXKPHiHj2jJwrxPf4s5kcgBYrmzuf1C/1vfrMOjzyty6OgrMIbU6Q==} + + '@ledgerhq/logs@6.16.0': + resolution: {integrity: sha512-v/PLfb1dq1En35kkpbfRWp8jLYgbPUXxGhmd4pmvPSIe0nRGkNTomsZASmWQAv6pRonVGqHIBVlte7j1MBbOww==} + '@lit-labs/ssr-dom-shim@1.5.1': resolution: {integrity: sha512-Aou5UdlSpr5whQe8AA/bZG0jMj96CoJIWbGfZ91qieWu5AWUMKw8VR/pAkQkJYvBNhmCcWnZlyyk5oze8JIqYA==} + '@lit/react@1.0.8': + resolution: {integrity: sha512-p2+YcF+JE67SRX3mMlJ1TKCSTsgyOVdAwd/nxp3NuV1+Cb6MWALbN6nT7Ld4tpmYofcE5kcaSY1YBB9erY+6fw==} + peerDependencies: + '@types/react': 17 || 18 || 19 + '@lit/reactive-element@2.1.2': resolution: {integrity: sha512-pbCDiVMnne1lYUIaYNN5wrwQXDtHaYtg7YEFPeW+hws6U47WeFvISGUWekPGKWOP1ygrs0ef0o1VJMk1exos5A==} + '@lobstrco/signer-extension-api@2.0.0': + resolution: {integrity: sha512-jwlVyzMFF296iaNgMWn1lu+EU6BeUD4mgPurEsy8EygYNCrjA8igLpsDlXhfvXhst9tX5w4wRuTDX+FZtpfCug==} + '@lukeed/csprng@1.1.0': resolution: {integrity: sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA==} engines: {node: '>=8'} @@ -1637,6 +1707,18 @@ packages: '@microsoft/tsdoc@0.16.0': resolution: {integrity: sha512-xgAyonlVVS+q7Vc7qLW0UrJU7rSFcETRWsqdXZtjzRU8dF+6CkozTK4V4y1LwOX7j8r/vHphjDeMeGI4tNGeGA==} + '@mobily/ts-belt@3.13.1': + resolution: {integrity: sha512-K5KqIhPI/EoCTbA6CGbrenM9s41OouyK8A03fGJJcla/zKucsgLbz8HNbeseoLarRPgyWJsUyCYqFhI7t3Ra9Q==} + engines: {node: '>= 10.*'} + + '@msgpack/msgpack@3.1.2': + resolution: {integrity: sha512-JEW4DEtBzfe8HvUYecLU9e6+XJnKDlUAIve8FvPzF3Kzs6Xo/KuZkZJsDH0wJXl/qEZbeeE7edxDNY3kMs39hQ==} + engines: {node: '>= 18'} + + '@msgpack/msgpack@3.1.3': + resolution: {integrity: sha512-47XIizs9XZXvuJgoaJUIE2lFoID8ugvc0jzSHP+Ptfk8nTbnR8g788wv48N03Kx0UkAv559HWRQ3yzOgzlRNUA==} + engines: {node: '>= 18'} + '@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3': resolution: {integrity: sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw==} cpu: [arm64] @@ -1670,6 +1752,44 @@ packages: '@napi-rs/wasm-runtime@0.2.12': resolution: {integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==} + '@near-js/accounts@1.4.1': + resolution: {integrity: sha512-ni3QT9H3NdrbVVKyx56yvz93r89Dvpc/vgVtiIK2OdXjkK6jcj+UKMDRQ6F7rd9qJOInLkHZbVBtcR6j1CXLjw==} + + '@near-js/crypto@1.4.2': + resolution: {integrity: sha512-GRfchsyfWvSAPA1gI9hYhw5FH94Ac1BUo+Cmp5rSJt/V0K3xVzCWgOQxvv4R3kDnWjaXJEuAmpEEnr4Bp3FWrA==} + + '@near-js/keystores-browser@0.2.2': + resolution: {integrity: sha512-Pxqm7WGtUu6zj32vGCy9JcEDpZDSB5CCaLQDTQdF3GQyL0flyRv2I/guLAgU5FLoYxU7dJAX9mslJhPW7P2Bfw==} + + '@near-js/keystores-node@0.1.2': + resolution: {integrity: sha512-MWLvTszZOVziiasqIT/LYNhUyWqOJjDGlsthOsY6dTL4ZcXjjmhmzrbFydIIeQr+CcEl5wukTo68ORI9JrHl6g==} + + '@near-js/keystores@0.2.2': + resolution: {integrity: sha512-DLhi/3a4qJUY+wgphw2Jl4S+L0AKsUYm1mtU0WxKYV5OBwjOXvbGrXNfdkheYkfh3nHwrQgtjvtszX6LrRXLLw==} + + '@near-js/providers@1.0.3': + resolution: {integrity: sha512-VJMboL14R/+MGKnlhhE3UPXCGYvMd1PpvF9OqZ9yBbulV7QVSIdTMfY4U1NnDfmUC2S3/rhAEr+3rMrIcNS7Fg==} + + '@near-js/signers@0.2.2': + resolution: {integrity: sha512-M6ib+af9zXAPRCjH2RyIS0+RhCmd9gxzCeIkQ+I2A3zjgGiEDkBZbYso9aKj8Zh2lPKKSH7h+u8JGymMOSwgyw==} + + '@near-js/transactions@1.3.3': + resolution: {integrity: sha512-1AXD+HuxlxYQmRTLQlkVmH+RAmV3HwkAT8dyZDu+I2fK/Ec9BQHXakOJUnOBws3ihF+akQhamIBS5T0EXX/Ylw==} + + '@near-js/types@0.3.1': + resolution: {integrity: sha512-8qIA7ynAEAuVFNAQc0cqz2xRbfyJH3PaAG5J2MgPPhD18lu/tCGd6pzYg45hjhtiJJRFDRjh/FUWKS+ZiIIxUw==} + + '@near-js/utils@1.1.0': + resolution: {integrity: sha512-5XWRq7xpu8Wud9pRXe2U347KXyi0mXofedUY2DQ9TaqiZUcMIaN9xj7DbCs2v6dws3pJyYrT1KWxeNp5fSaY3w==} + + '@near-js/wallet-account@1.3.3': + resolution: {integrity: sha512-GDzg/Kz0GBYF7tQfyQQQZ3vviwV8yD+8F2lYDzsWJiqIln7R1ov0zaXN4Tii86TeS21KPn2hHAsVu3Y4txa8OQ==} + + '@near-wallet-selector/core@8.10.2': + resolution: {integrity: sha512-MH8sg6XHyylq2ZXxnOjrKHMCmuRgFfpfdC816fW0R8hctZiXZ0lmfLvgG1xfA2BAxrVytiU1g3dcE97/P5cZqg==} + peerDependencies: + near-api-js: ^4.0.0 || ^5.0.0 + '@nestjs/cache-manager@3.1.0': resolution: {integrity: sha512-pEIqYZrBcE8UdkJmZRduurvoUfdU+3kRPeO1R2muiMbZnRuqlki5klFFNllO9LyYWzrx98bd1j0PSPKSJk1Wbw==} peerDependencies: @@ -1887,6 +2007,10 @@ packages: resolution: {integrity: sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==} engines: {node: '>= 16'} + '@noble/hashes@1.3.3': + resolution: {integrity: sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==} + engines: {node: '>= 16'} + '@noble/hashes@1.4.0': resolution: {integrity: sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==} engines: {node: '>= 16'} @@ -2037,6 +2161,9 @@ packages: resolution: {integrity: sha512-IHnV6A+zxU7XwmKFinmYjUcwlyK9+xkG3/s9KcQhI9BjQKycrJ1JRO+FbNYPwZiPKW3je/DR0k7w8/gLa5eaxQ==} deprecated: 'The package is now available as "qr": npm install qr' + '@phosphor-icons/webcomponents@2.1.5': + resolution: {integrity: sha512-JcvQkZxvcX2jK+QCclm8+e8HXqtdFW9xV4/kk2aL9Y3dJA2oQVt+pzbv1orkumz3rfx4K9mn9fDoMr1He1yr7Q==} + '@pkgjs/parseargs@0.11.0': resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} @@ -2045,6 +2172,14 @@ packages: resolution: {integrity: sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + '@preact/signals-core@1.14.1': + resolution: {integrity: sha512-vxPpfXqrwUe9lpjqfYNjAF/0RF/eFGeLgdJzdmIIZjpOnTmGmAB4BjWone562mJGMRP4frU6iZ6ei3PDsu52Ng==} + + '@preact/signals@2.9.0': + resolution: {integrity: sha512-hYrY0KyUqkDgOl1qba/JGn6y81pXnurn21PMaxfcMwdncdZ3M/oVdmpTvEnsGjh48dIwDVc7bjWHqIsngSjYug==} + peerDependencies: + preact: '>= 10.25.0 || >=11.0.0-0' + '@prisma/client@6.16.1': resolution: {integrity: sha512-QaBCOY29lLAxEFFJgBPyW3WInCW52fJeQTmWx/h6YsP5u0bwuqP51aP0uhqFvhK9DaZPwvai/M4tSDYLVE9vRg==} engines: {node: '>=18.18'} @@ -2181,32 +2316,61 @@ packages: '@reown/appkit-common@1.7.8': resolution: {integrity: sha512-ridIhc/x6JOp7KbDdwGKY4zwf8/iK8EYBl+HtWrruutSLwZyVi5P8WaZa+8iajL6LcDcDF7LoyLwMTym7SRuwQ==} + '@reown/appkit-common@1.8.19': + resolution: {integrity: sha512-z5wDrYjUGY7YbM4b14NHVo54WKZ5++PQtGkcsXhiOP39yAVijubBQD8BfHs/Pu2fSFqnqLIFoCVvIEfNWWccRw==} + '@reown/appkit-controllers@1.7.8': resolution: {integrity: sha512-IdXlJlivrlj6m63VsGLsjtPHHsTWvKGVzWIP1fXZHVqmK+rZCBDjCi9j267Rb9/nYRGHWBtlFQhO8dK35WfeDA==} + '@reown/appkit-controllers@1.8.19': + resolution: {integrity: sha512-JFNT8CfAVit9FJXh596Ye4U8A/oIapW+Y0KQqjB59DXyTCDZbxZDB32rULBQrSkZ6PufTEa239Dil4kABCQKtg==} + '@reown/appkit-pay@1.7.8': resolution: {integrity: sha512-OSGQ+QJkXx0FEEjlpQqIhT8zGJKOoHzVnyy/0QFrl3WrQTjCzg0L6+i91Ad5Iy1zb6V5JjqtfIFpRVRWN4M3pw==} + '@reown/appkit-pay@1.8.19': + resolution: {integrity: sha512-HO/tQT0TbTQO3eONxNNPJAOZAOzUiHvjM0Mty1rFFeRBH68auiqQxQi2YFNMs014gNkRN+cb84VYau7+MCC0fQ==} + '@reown/appkit-polyfills@1.7.8': resolution: {integrity: sha512-W/kq786dcHHAuJ3IV2prRLEgD/2iOey4ueMHf1sIFjhhCGMynMkhsOhQMUH0tzodPqUgAC494z4bpIDYjwWXaA==} + '@reown/appkit-polyfills@1.8.19': + resolution: {integrity: sha512-PSoetRSuZg7f2YFPzdfs4BayQl51zcGqYr7frwOe6td0XEsspLrrVFn/zk5QFbFHZVsMdfRZ+TTunt84ozRdnQ==} + '@reown/appkit-scaffold-ui@1.7.8': resolution: {integrity: sha512-RCeHhAwOrIgcvHwYlNWMcIDibdI91waaoEYBGw71inE0kDB8uZbE7tE6DAXJmDkvl0qPh+DqlC4QbJLF1FVYdQ==} + '@reown/appkit-scaffold-ui@1.8.19': + resolution: {integrity: sha512-Ak767x0VzeDIXb0wbzkl19kx6udw7vkb1EU0SAweG3iKc9BunW87Rfcd48/YimzMZycJaYmlbtfmqQQDYs6Few==} + '@reown/appkit-ui@1.7.8': resolution: {integrity: sha512-1hjCKjf6FLMFzrulhl0Y9Vb9Fu4royE+SXCPSWh4VhZhWqlzUFc7kutnZKx8XZFVQH4pbBvY62SpRC93gqoHow==} + '@reown/appkit-ui@1.8.19': + resolution: {integrity: sha512-fCAwW8yyyC3JcgKLBPvCtYuDGC4H8anO7u4LTaAXGEzdcU5H+IrCgNFSPNK7NuTSmgXm1TnoYxPxRFKNiNwFdA==} + '@reown/appkit-utils@1.7.8': resolution: {integrity: sha512-8X7UvmE8GiaoitCwNoB86pttHgQtzy4ryHZM9kQpvjQ0ULpiER44t1qpVLXNM4X35O0v18W0Dk60DnYRMH2WRw==} peerDependencies: valtio: 1.13.2 + '@reown/appkit-utils@1.8.19': + resolution: {integrity: sha512-VQPgUMTFqoh4UD3EDZSw9wyMkyZsmIVmu8CdQ2FUxIuqYW4fLd0VIpkDeO64MMhSv8b0X8Vd6m4+eGcqSwlUAg==} + peerDependencies: + valtio: 2.1.7 + '@reown/appkit-wallet@1.7.8': resolution: {integrity: sha512-kspz32EwHIOT/eg/ZQbFPxgXq0B/olDOj3YMu7gvLEFz4xyOFd/wgzxxAXkp5LbG4Cp++s/elh79rVNmVFdB9A==} + '@reown/appkit-wallet@1.8.19': + resolution: {integrity: sha512-NVdIKceUhkXYtsG32925ctmVn0QJFNyDlr+mWheMLCEZ/IUPn+6aA53vTVaSUquhyeFxUXtrCOh3ln6v1tup5w==} + '@reown/appkit@1.7.8': resolution: {integrity: sha512-51kTleozhA618T1UvMghkhKfaPcc9JlKwLJ5uV+riHyvSoWPKPRIa5A6M1Wano5puNyW0s3fwywhyqTHSilkaA==} + '@reown/appkit@1.8.19': + resolution: {integrity: sha512-wB+xatkRbOy0AY1cZxxtcKzzPk3l3CTFulDbaISLVmZI6ZnQrOFuLnYc285zGsC6DB4d6bmwYUh89zcMLa4PvQ==} + '@rtsao/scc@1.1.0': resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} @@ -2250,6 +2414,9 @@ packages: '@sec-ant/readable-stream@0.4.1': resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} + '@sinclair/typebox@0.33.22': + resolution: {integrity: sha512-auUj4k+f4pyrIVf4GW5UKquSZFHJWri06QgARy9C0t9ZTjJLIuNIrr1yl9bWcJWJ1Gz1vOvYN1D+QPaIlNMVkQ==} + '@sinclair/typebox@0.34.41': resolution: {integrity: sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==} @@ -2269,16 +2436,48 @@ packages: '@socket.io/component-emitter@3.1.2': resolution: {integrity: sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==} + '@solana-program/compute-budget@0.8.0': + resolution: {integrity: sha512-qPKxdxaEsFxebZ4K5RPuy7VQIm/tfJLa1+Nlt3KNA8EYQkz9Xm8htdoEaXVrer9kpgzzp9R3I3Bh6omwCM06tQ==} + peerDependencies: + '@solana/kit': ^2.1.0 + + '@solana-program/stake@0.2.1': + resolution: {integrity: sha512-ssNPsJv9XHaA+L7ihzmWGYcm/+XYURQ8UA3wQMKf6ccEHyHOUgoglkkDU/BoA0+wul6HxZUN0tHFymC0qFw6sg==} + peerDependencies: + '@solana/kit': ^2.1.0 + '@solana-program/system@0.10.0': resolution: {integrity: sha512-Go+LOEZmqmNlfr+Gjy5ZWAdY5HbYzk2RBewD9QinEU/bBSzpFfzqDRT55JjFRBGJUvMgf3C2vfXEGT4i8DSI4g==} peerDependencies: '@solana/kit': ^5.0 + '@solana-program/system@0.7.0': + resolution: {integrity: sha512-FKTBsKHpvHHNc1ATRm7SlC5nF/VdJtOSjldhcyfMN9R7xo712Mo2jHIzvBgn8zQO5Kg0DcWuKB7268Kv1ocicw==} + peerDependencies: + '@solana/kit': ^2.1.0 + + '@solana-program/token-2022@0.4.2': + resolution: {integrity: sha512-zIpR5t4s9qEU3hZKupzIBxJ6nUV5/UVyIT400tu9vT1HMs5JHxaTTsb5GUhYjiiTvNwU0MQavbwc4Dl29L0Xvw==} + peerDependencies: + '@solana/kit': ^2.1.0 + '@solana/sysvars': ^2.1.0 + + '@solana-program/token@0.5.1': + resolution: {integrity: sha512-bJvynW5q9SFuVOZ5vqGVkmaPGA0MCC+m9jgJj1nk5m20I389/ms69ASnhWGoOPNcie7S9OwBX0gTj2fiyWpfag==} + peerDependencies: + '@solana/kit': ^2.1.0 + '@solana-program/token@0.9.0': resolution: {integrity: sha512-vnZxndd4ED4Fc56sw93cWZ2djEeeOFxtaPS8SPf5+a+JZjKA/EnKqzbE1y04FuMhIVrLERQ8uR8H2h72eZzlsA==} peerDependencies: '@solana/kit': ^5.0 + '@solana/accounts@2.3.0': + resolution: {integrity: sha512-QgQTj404Z6PXNOyzaOpSzjgMOuGwG8vC66jSDB+3zHaRcEPRVRd2sVSrd1U6sHtnV3aiaS6YyDuPQMheg4K2jw==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.3.3' + '@solana/accounts@5.5.1': resolution: {integrity: sha512-TfOY9xixg5rizABuLVuZ9XI2x2tmWUC/OoN556xwfDlhBHBjKfszicYYOyD6nbFmwTGYarCmyGIdteXxTXIdhQ==} engines: {node: '>=20.18.0'} @@ -2288,6 +2487,12 @@ packages: typescript: optional: true + '@solana/addresses@2.3.0': + resolution: {integrity: sha512-ypTNkY2ZaRFpHLnHAgaW8a83N0/WoqdFvCqf4CQmnMdFsZSdC7qOwcbd7YzdaQn9dy+P2hybewzB+KP7LutxGA==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.3.3' + '@solana/addresses@5.5.1': resolution: {integrity: sha512-5xoah3Q9G30HQghu/9BiHLb5pzlPKRC3zydQDmE3O9H//WfayxTFppsUDCL6FjYUHqj/wzK6CWHySglc2RkpdA==} engines: {node: '>=20.18.0'} @@ -2297,6 +2502,12 @@ packages: typescript: optional: true + '@solana/assertions@2.3.0': + resolution: {integrity: sha512-Ekoet3khNg3XFLN7MIz8W31wPQISpKUGDGTylLptI+JjCDWx3PIa88xjEMqFo02WJ8sBj2NLV64Xg1sBcsHjZQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.3.3' + '@solana/assertions@5.5.1': resolution: {integrity: sha512-YTCSWAlGwSlVPnWtWLm3ukz81wH4j2YaCveK+TjpvUU88hTy6fmUqxi0+hvAMAe4zKXpJyj3Az7BrLJRxbIm4Q==} engines: {node: '>=20.18.0'} @@ -2306,6 +2517,16 @@ packages: typescript: optional: true + '@solana/buffer-layout@4.0.1': + resolution: {integrity: sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA==} + engines: {node: '>=5.10'} + + '@solana/codecs-core@2.3.0': + resolution: {integrity: sha512-oG+VZzN6YhBHIoSKgS5ESM9VIGzhWjEHEGNPSibiDTxFhsFWxNaz8LbMDPjBUE69r9wmdGLkrQ+wVPbnJcZPvw==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.3.3' + '@solana/codecs-core@5.5.1': resolution: {integrity: sha512-TgBt//bbKBct0t6/MpA8ElaOA3sa8eYVvR7LGslCZ84WiAwwjCY0lW/lOYsFHJQzwREMdUyuEyy5YWBKtdh8Rw==} engines: {node: '>=20.18.0'} @@ -2315,6 +2536,12 @@ packages: typescript: optional: true + '@solana/codecs-data-structures@2.3.0': + resolution: {integrity: sha512-qvU5LE5DqEdYMYgELRHv+HMOx73sSoV1ZZkwIrclwUmwTbTaH8QAJURBj0RhQ/zCne7VuLLOZFFGv6jGigWhSw==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.3.3' + '@solana/codecs-data-structures@5.5.1': resolution: {integrity: sha512-97bJWGyUY9WvBz3mX1UV3YPWGDTez6btCfD0ip3UVEXJbItVuUiOkzcO5iFDUtQT5riKT6xC+Mzl+0nO76gd0w==} engines: {node: '>=20.18.0'} @@ -2324,6 +2551,12 @@ packages: typescript: optional: true + '@solana/codecs-numbers@2.3.0': + resolution: {integrity: sha512-jFvvwKJKffvG7Iz9dmN51OGB7JBcy2CJ6Xf3NqD/VP90xak66m/Lg48T01u5IQ/hc15mChVHiBm+HHuOFDUrQg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.3.3' + '@solana/codecs-numbers@5.5.1': resolution: {integrity: sha512-rllMIZAHqmtvC0HO/dc/21wDuWaD0B8Ryv8o+YtsICQBuiL/0U4AGwH7Pi5GNFySYk0/crSuwfIqQFtmxNSPFw==} engines: {node: '>=20.18.0'} @@ -2333,6 +2566,13 @@ packages: typescript: optional: true + '@solana/codecs-strings@2.3.0': + resolution: {integrity: sha512-y5pSBYwzVziXu521hh+VxqUtp0hYGTl1eWGoc1W+8mdvBdC1kTqm/X7aYQw33J42hw03JjryvYOvmGgk3Qz/Ug==} + engines: {node: '>=20.18.0'} + peerDependencies: + fastestsmallesttextencoderdecoder: ^1.0.22 + typescript: '>=5.3.3' + '@solana/codecs-strings@5.5.1': resolution: {integrity: sha512-7klX4AhfHYA+uKKC/nxRGP2MntbYQCR3N6+v7bk1W/rSxYuhNmt+FN8aoThSZtWIKwN6BEyR1167ka8Co1+E7A==} engines: {node: '>=20.18.0'} @@ -2345,6 +2585,12 @@ packages: typescript: optional: true + '@solana/codecs@2.3.0': + resolution: {integrity: sha512-JVqGPkzoeyU262hJGdH64kNLH0M+Oew2CIPOa/9tR3++q2pEd4jU2Rxdfye9sd0Ce3XJrR5AIa8ZfbyQXzjh+g==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.3.3' + '@solana/codecs@5.5.1': resolution: {integrity: sha512-Vea29nJub/bXjfzEV7ZZQ/PWr1pYLZo3z0qW0LQL37uKKVzVFRQlwetd7INk3YtTD3xm9WUYr7bCvYUk3uKy2g==} engines: {node: '>=20.18.0'} @@ -2354,6 +2600,13 @@ packages: typescript: optional: true + '@solana/errors@2.3.0': + resolution: {integrity: sha512-66RI9MAbwYV0UtP7kGcTBVLxJgUxoZGm8Fbc0ah+lGiAw17Gugco6+9GrJCV83VyF2mDWyYnYM9qdI3yjgpnaQ==} + engines: {node: '>=20.18.0'} + hasBin: true + peerDependencies: + typescript: '>=5.3.3' + '@solana/errors@5.5.1': resolution: {integrity: sha512-vFO3p+S7HoyyrcAectnXbdsMfwUzY2zYFUc2DEe5BwpiE9J1IAxPBGjOWO6hL1bbYdBrlmjNx8DXCslqS+Kcmg==} engines: {node: '>=20.18.0'} @@ -2364,6 +2617,12 @@ packages: typescript: optional: true + '@solana/fast-stable-stringify@2.3.0': + resolution: {integrity: sha512-KfJPrMEieUg6D3hfQACoPy0ukrAV8Kio883llt/8chPEG3FVTX9z/Zuf4O01a15xZmBbmQ7toil2Dp0sxMJSxw==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.3.3' + '@solana/fast-stable-stringify@5.5.1': resolution: {integrity: sha512-Ni7s2FN33zTzhTFgRjEbOVFO+UAmK8qi3Iu0/GRFYK4jN696OjKHnboSQH/EacQ+yGqS54bfxf409wU5dsLLCw==} engines: {node: '>=20.18.0'} @@ -2373,6 +2632,12 @@ packages: typescript: optional: true + '@solana/functional@2.3.0': + resolution: {integrity: sha512-AgsPh3W3tE+nK3eEw/W9qiSfTGwLYEvl0rWaxHht/lRcuDVwfKRzeSa5G79eioWFFqr+pTtoCr3D3OLkwKz02Q==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.3.3' + '@solana/functional@5.5.1': resolution: {integrity: sha512-tTHoJcEQq3gQx5qsdsDJ0LEJeFzwNpXD80xApW9o/PPoCNimI3SALkZl+zNW8VnxRrV3l3yYvfHWBKe/X3WG3w==} engines: {node: '>=20.18.0'} @@ -2391,6 +2656,12 @@ packages: typescript: optional: true + '@solana/instructions@2.3.0': + resolution: {integrity: sha512-PLMsmaIKu7hEAzyElrk2T7JJx4D+9eRwebhFZpy2PXziNSmFF929eRHKUsKqBFM3cYR1Yy3m6roBZfA+bGE/oQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.3.3' + '@solana/instructions@5.5.1': resolution: {integrity: sha512-h0G1CG6S+gUUSt0eo6rOtsaXRBwCq1+Js2a+Ps9Bzk9q7YHNFA75/X0NWugWLgC92waRp66hrjMTiYYnLBoWOQ==} engines: {node: '>=20.18.0'} @@ -2400,6 +2671,12 @@ packages: typescript: optional: true + '@solana/keys@2.3.0': + resolution: {integrity: sha512-ZVVdga79pNH+2pVcm6fr2sWz9HTwfopDVhYb0Lh3dh+WBmJjwkabXEIHey2rUES7NjFa/G7sV8lrUn/v8LDCCQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.3.3' + '@solana/keys@5.5.1': resolution: {integrity: sha512-KRD61cL7CRL+b4r/eB9dEoVxIf/2EJ1Pm1DmRYhtSUAJD2dJ5Xw8QFuehobOGm9URqQ7gaQl+Fkc1qvDlsWqKg==} engines: {node: '>=20.18.0'} @@ -2409,6 +2686,12 @@ packages: typescript: optional: true + '@solana/kit@2.3.0': + resolution: {integrity: sha512-sb6PgwoW2LjE5oTFu4lhlS/cGt/NB3YrShEyx7JgWFWysfgLdJnhwWThgwy/4HjNsmtMrQGWVls0yVBHcMvlMQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.3.3' + '@solana/kit@5.5.1': resolution: {integrity: sha512-irKUGiV2yRoyf+4eGQ/ZeCRxa43yjFEL1DUI5B0DkcfZw3cr0VJtVJnrG8OtVF01vT0OUfYOcUn6zJW5TROHvQ==} engines: {node: '>=20.18.0'} @@ -2418,6 +2701,12 @@ packages: typescript: optional: true + '@solana/nominal-types@2.3.0': + resolution: {integrity: sha512-uKlMnlP4PWW5UTXlhKM8lcgIaNj8dvd8xO4Y9l+FVvh9RvW2TO0GwUO6JCo7JBzCB0PSqRJdWWaQ8pu1Ti/OkA==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.3.3' + '@solana/nominal-types@5.5.1': resolution: {integrity: sha512-I1ImR+kfrLFxN5z22UDiTWLdRZeKtU0J/pkWkO8qm/8WxveiwdIv4hooi8pb6JnlR4mSrWhq0pCIOxDYrL9GIQ==} engines: {node: '>=20.18.0'} @@ -2436,6 +2725,12 @@ packages: typescript: optional: true + '@solana/options@2.3.0': + resolution: {integrity: sha512-PPnnZBRCWWoZQ11exPxf//DRzN2C6AoFsDI/u2AsQfYih434/7Kp4XLpfOMT/XESi+gdBMFNNfbES5zg3wAIkw==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.3.3' + '@solana/options@5.5.1': resolution: {integrity: sha512-eo971c9iLNLmk+yOFyo7yKIJzJ/zou6uKpy6mBuyb/thKtS/haiKIc3VLhyTXty3OH2PW8yOlORJnv4DexJB8A==} engines: {node: '>=20.18.0'} @@ -2454,6 +2749,12 @@ packages: typescript: optional: true + '@solana/programs@2.3.0': + resolution: {integrity: sha512-UXKujV71VCI5uPs+cFdwxybtHZAIZyQkqDiDnmK+DawtOO9mBn4Nimdb/6RjR2CXT78mzO9ZCZ3qfyX+ydcB7w==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.3.3' + '@solana/programs@5.5.1': resolution: {integrity: sha512-7U9kn0Jsx1NuBLn5HRTFYh78MV4XN145Yc3WP/q5BlqAVNlMoU9coG5IUTJIG847TUqC1lRto3Dnpwm6T4YRpA==} engines: {node: '>=20.18.0'} @@ -2463,6 +2764,12 @@ packages: typescript: optional: true + '@solana/promises@2.3.0': + resolution: {integrity: sha512-GjVgutZKXVuojd9rWy1PuLnfcRfqsaCm7InCiZc8bqmJpoghlyluweNc7ml9Y5yQn1P2IOyzh9+p/77vIyNybQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.3.3' + '@solana/promises@5.5.1': resolution: {integrity: sha512-T9lfuUYkGykJmppEcssNiCf6yiYQxJkhiLPP+pyAc2z84/7r3UVIb2tNJk4A9sucS66pzJnVHZKcZVGUUp6wzA==} engines: {node: '>=20.18.0'} @@ -2472,6 +2779,12 @@ packages: typescript: optional: true + '@solana/rpc-api@2.3.0': + resolution: {integrity: sha512-UUdiRfWoyYhJL9PPvFeJr4aJ554ob2jXcpn4vKmRVn9ire0sCbpQKYx6K8eEKHZWXKrDW8IDspgTl0gT/aJWVg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.3.3' + '@solana/rpc-api@5.5.1': resolution: {integrity: sha512-XWOQQPhKl06Vj0xi3RYHAc6oEQd8B82okYJ04K7N0Vvy3J4PN2cxeK7klwkjgavdcN9EVkYCChm2ADAtnztKnA==} engines: {node: '>=20.18.0'} @@ -2481,6 +2794,12 @@ packages: typescript: optional: true + '@solana/rpc-parsed-types@2.3.0': + resolution: {integrity: sha512-B5pHzyEIbBJf9KHej+zdr5ZNAdSvu7WLU2lOUPh81KHdHQs6dEb310LGxcpCc7HVE8IEdO20AbckewDiAN6OCg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.3.3' + '@solana/rpc-parsed-types@5.5.1': resolution: {integrity: sha512-HEi3G2nZqGEsa3vX6U0FrXLaqnUCg4SKIUrOe8CezD+cSFbRTOn3rCLrUmJrhVyXlHoQVaRO9mmeovk31jWxJg==} engines: {node: '>=20.18.0'} @@ -2490,6 +2809,12 @@ packages: typescript: optional: true + '@solana/rpc-spec-types@2.3.0': + resolution: {integrity: sha512-xQsb65lahjr8Wc9dMtP7xa0ZmDS8dOE2ncYjlvfyw/h4mpdXTUdrSMi6RtFwX33/rGuztQ7Hwaid5xLNSLvsFQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.3.3' + '@solana/rpc-spec-types@5.5.1': resolution: {integrity: sha512-6OFKtRpIEJQs8Jb2C4OO8KyP2h2Hy1MFhatMAoXA+0Ik8S3H+CicIuMZvGZ91mIu/tXicuOOsNNLu3HAkrakrw==} engines: {node: '>=20.18.0'} @@ -2499,6 +2824,12 @@ packages: typescript: optional: true + '@solana/rpc-spec@2.3.0': + resolution: {integrity: sha512-fA2LMX4BMixCrNB2n6T83AvjZ3oUQTu7qyPLyt8gHQaoEAXs8k6GZmu6iYcr+FboQCjUmRPgMaABbcr9j2J9Sw==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.3.3' + '@solana/rpc-spec@5.5.1': resolution: {integrity: sha512-m3LX2bChm3E3by4mQrH4YwCAFY57QBzuUSWqlUw7ChuZ+oLLOq7b2czi4i6L4Vna67j3eCmB3e+4tqy1j5wy7Q==} engines: {node: '>=20.18.0'} @@ -2508,6 +2839,12 @@ packages: typescript: optional: true + '@solana/rpc-subscriptions-api@2.3.0': + resolution: {integrity: sha512-9mCjVbum2Hg9KGX3LKsrI5Xs0KX390lS+Z8qB80bxhar6MJPugqIPH8uRgLhCW9GN3JprAfjRNl7our8CPvsPQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.3.3' + '@solana/rpc-subscriptions-api@5.5.1': resolution: {integrity: sha512-5Oi7k+GdeS8xR2ly1iuSFkAv6CZqwG0Z6b1QZKbEgxadE1XGSDrhM2cn59l+bqCozUWCqh4c/A2znU/qQjROlw==} engines: {node: '>=20.18.0'} @@ -2517,6 +2854,13 @@ packages: typescript: optional: true + '@solana/rpc-subscriptions-channel-websocket@2.3.0': + resolution: {integrity: sha512-2oL6ceFwejIgeWzbNiUHI2tZZnaOxNTSerszcin7wYQwijxtpVgUHiuItM/Y70DQmH9sKhmikQp+dqeGalaJxw==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.3.3' + ws: ^8.18.0 + '@solana/rpc-subscriptions-channel-websocket@5.5.1': resolution: {integrity: sha512-7tGfBBrYY8TrngOyxSHoCU5shy86iA9SRMRrPSyBhEaZRAk6dnbdpmUTez7gtdVo0BCvh9nzQtUycKWSS7PnFQ==} engines: {node: '>=20.18.0'} @@ -2526,6 +2870,12 @@ packages: typescript: optional: true + '@solana/rpc-subscriptions-spec@2.3.0': + resolution: {integrity: sha512-rdmVcl4PvNKQeA2l8DorIeALCgJEMSu7U8AXJS1PICeb2lQuMeaR+6cs/iowjvIB0lMVjYN2sFf6Q3dJPu6wWg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.3.3' + '@solana/rpc-subscriptions-spec@5.5.1': resolution: {integrity: sha512-iq+rGq5fMKP3/mKHPNB6MC8IbVW41KGZg83Us/+LE3AWOTWV1WT20KT2iH1F1ik9roi42COv/TpoZZvhKj45XQ==} engines: {node: '>=20.18.0'} @@ -2535,6 +2885,12 @@ packages: typescript: optional: true + '@solana/rpc-subscriptions@2.3.0': + resolution: {integrity: sha512-Uyr10nZKGVzvCOqwCZgwYrzuoDyUdwtgQRefh13pXIrdo4wYjVmoLykH49Omt6abwStB0a4UL5gX9V4mFdDJZg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.3.3' + '@solana/rpc-subscriptions@5.5.1': resolution: {integrity: sha512-CTMy5bt/6mDh4tc6vUJms9EcuZj3xvK0/xq8IQ90rhkpYvate91RjBP+egvjgSayUg9yucU9vNuUpEjz4spM7w==} engines: {node: '>=20.18.0'} @@ -2544,6 +2900,12 @@ packages: typescript: optional: true + '@solana/rpc-transformers@2.3.0': + resolution: {integrity: sha512-UuHYK3XEpo9nMXdjyGKkPCOr7WsZsxs7zLYDO1A5ELH3P3JoehvrDegYRAGzBS2VKsfApZ86ZpJToP0K3PhmMA==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.3.3' + '@solana/rpc-transformers@5.5.1': resolution: {integrity: sha512-OsWqLCQdcrRJKvHiMmwFhp9noNZ4FARuMkHT5us3ustDLXaxOjF0gfqZLnMkulSLcKt7TGXqMhBV+HCo7z5M8Q==} engines: {node: '>=20.18.0'} @@ -2553,6 +2915,12 @@ packages: typescript: optional: true + '@solana/rpc-transport-http@2.3.0': + resolution: {integrity: sha512-HFKydmxGw8nAF5N+S0NLnPBDCe5oMDtI2RAmW8DMqP4U3Zxt2XWhvV1SNkAldT5tF0U1vP+is6fHxyhk4xqEvg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.3.3' + '@solana/rpc-transport-http@5.5.1': resolution: {integrity: sha512-yv8GoVSHqEV0kUJEIhkdOVkR2SvJ6yoWC51cJn2rSV7plr6huLGe0JgujCmB7uZhhaLbcbP3zxXxu9sOjsi7Fg==} engines: {node: '>=20.18.0'} @@ -2562,6 +2930,12 @@ packages: typescript: optional: true + '@solana/rpc-types@2.3.0': + resolution: {integrity: sha512-O09YX2hED2QUyGxrMOxQ9GzH1LlEwwZWu69QbL4oYmIf6P5dzEEHcqRY6L1LsDVqc/dzAdEs/E1FaPrcIaIIPw==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.3.3' + '@solana/rpc-types@5.5.1': resolution: {integrity: sha512-bibTFQ7PbHJJjGJPmfYC2I+/5CRFS4O2p9WwbFraX1Keeel+nRrt/NBXIy8veP5AEn2sVJIyJPpWBRpCx1oATA==} engines: {node: '>=20.18.0'} @@ -2571,6 +2945,12 @@ packages: typescript: optional: true + '@solana/rpc@2.3.0': + resolution: {integrity: sha512-ZWN76iNQAOCpYC7yKfb3UNLIMZf603JckLKOOLTHuy9MZnTN8XV6uwvDFhf42XvhglgUjGCEnbUqWtxQ9pa/pQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.3.3' + '@solana/rpc@5.5.1': resolution: {integrity: sha512-ku8zTUMrkCWci66PRIBC+1mXepEnZH/q1f3ck0kJZ95a06bOTl5KU7HeXWtskkyefzARJ5zvCs54AD5nxjQJ+A==} engines: {node: '>=20.18.0'} @@ -2580,6 +2960,12 @@ packages: typescript: optional: true + '@solana/signers@2.3.0': + resolution: {integrity: sha512-OSv6fGr/MFRx6J+ZChQMRqKNPGGmdjkqarKkRzkwmv7v8quWsIRnJT5EV8tBy3LI4DLO/A8vKiNSPzvm1TdaiQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.3.3' + '@solana/signers@5.5.1': resolution: {integrity: sha512-FY0IVaBT2kCAze55vEieR6hag4coqcuJ31Aw3hqRH7mv6sV8oqwuJmUrx+uFwOp1gwd5OEAzlv6N4hOOple4sQ==} engines: {node: '>=20.18.0'} @@ -2589,6 +2975,12 @@ packages: typescript: optional: true + '@solana/subscribable@2.3.0': + resolution: {integrity: sha512-DkgohEDbMkdTWiKAoatY02Njr56WXx9e/dKKfmne8/Ad6/2llUIrax78nCdlvZW9quXMaXPTxZvdQqo9N669Og==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.3.3' + '@solana/subscribable@5.5.1': resolution: {integrity: sha512-9K0PsynFq0CsmK1CDi5Y2vUIJpCqkgSS5yfDN0eKPgHqEptLEaia09Kaxc90cSZDZU5mKY/zv1NBmB6Aro9zQQ==} engines: {node: '>=20.18.0'} @@ -2598,6 +2990,12 @@ packages: typescript: optional: true + '@solana/sysvars@2.3.0': + resolution: {integrity: sha512-LvjADZrpZ+CnhlHqfI5cmsRzX9Rpyb1Ox2dMHnbsRNzeKAMhu9w4ZBIaeTdO322zsTr509G1B+k2ABD3whvUBA==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.3.3' + '@solana/sysvars@5.5.1': resolution: {integrity: sha512-k3Quq87Mm+geGUu1GWv6knPk0ALsfY6EKSJGw9xUJDHzY/RkYSBnh0RiOrUhtFm2TDNjOailg8/m0VHmi3reFA==} engines: {node: '>=20.18.0'} @@ -2607,6 +3005,12 @@ packages: typescript: optional: true + '@solana/transaction-confirmation@2.3.0': + resolution: {integrity: sha512-UiEuiHCfAAZEKdfne/XljFNJbsKAe701UQHKXEInYzIgBjRbvaeYZlBmkkqtxwcasgBTOmEaEKT44J14N9VZDw==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.3.3' + '@solana/transaction-confirmation@5.5.1': resolution: {integrity: sha512-j4mKlYPHEyu+OD7MBt3jRoX4ScFgkhZC6H65on4Fux6LMScgivPJlwnKoZMnsgxFgWds0pl+BYzSiALDsXlYtw==} engines: {node: '>=20.18.0'} @@ -2616,6 +3020,12 @@ packages: typescript: optional: true + '@solana/transaction-messages@2.3.0': + resolution: {integrity: sha512-bgqvWuy3MqKS5JdNLH649q+ngiyOu5rGS3DizSnWwYUd76RxZl1kN6CoqHSrrMzFMvis6sck/yPGG3wqrMlAww==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.3.3' + '@solana/transaction-messages@5.5.1': resolution: {integrity: sha512-aXyhMCEaAp3M/4fP0akwBBQkFPr4pfwoC5CLDq999r/FUwDax2RE/h4Ic7h2Xk+JdcUwsb+rLq85Y52hq84XvQ==} engines: {node: '>=20.18.0'} @@ -2625,6 +3035,12 @@ packages: typescript: optional: true + '@solana/transactions@2.3.0': + resolution: {integrity: sha512-LnTvdi8QnrQtuEZor5Msje61sDpPstTVwKg4y81tNxDhiyomjuvnSNLAq6QsB9gIxUqbNzPZgOG9IU4I4/Uaug==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.3.3' + '@solana/transactions@5.5.1': resolution: {integrity: sha512-8hHtDxtqalZ157pnx6p8k10D7J/KY/biLzfgh9R09VNLLY3Fqi7kJvJCr7M2ik3oRll56pxhraAGCC9yIT6eOA==} engines: {node: '>=20.18.0'} @@ -2634,6 +3050,19 @@ packages: typescript: optional: true + '@solana/wallet-adapter-base@0.9.27': + resolution: {integrity: sha512-kXjeNfNFVs/NE9GPmysBRKQ/nf+foSaq3kfVSeMcO/iVgigyRmB551OjU3WyAolLG/1jeEfKLqF9fKwMCRkUqg==} + engines: {node: '>=20'} + peerDependencies: + '@solana/web3.js': ^1.98.0 + + '@solana/wallet-standard-features@1.3.0': + resolution: {integrity: sha512-ZhpZtD+4VArf6RPitsVExvgkF+nGghd1rzPjd97GmBximpnt1rsUxMOEyoIEuH3XBxPyNB6Us7ha7RHWQR+abg==} + engines: {node: '>=16'} + + '@solana/web3.js@1.98.4': + resolution: {integrity: sha512-vv9lfnvjUsRiq//+j5pBdXig0IQdtzA0BRZ3bXEP4KaIyF1CcaydWqgyzQgfZMNIsWNWmG+AUHwPy4AHOD6gpw==} + '@spruceid/siwe-parser@3.0.0': resolution: {integrity: sha512-Y92k63ilw/8jH9Ry4G2e7lQd0jZAvb0d/Q7ssSD0D9mp/Zt2aCXIc3g0ny9yhplpAx1QXHsMz/JJptHK/zDGdw==} @@ -2652,14 +3081,28 @@ packages: '@standard-schema/spec@1.0.0': resolution: {integrity: sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==} + '@stellar/freighter-api@6.0.0': + resolution: {integrity: sha512-8CTQcKQmTq/wL715ZUzn1x1POpR0eYhYPKEiaeA7AT0WYBOauOGTxfWPFtSidX3ohAlJZP5HFXy1kG29cVjqxw==} + + '@stellar/js-xdr@3.1.2': + resolution: {integrity: sha512-VVolPL5goVEIsvuGqDc5uiKxV03lzfWdvYg1KikvwheDmTBO68CKDji3bAZ/kppZrx5iTA8z3Ld5yuytcvhvOQ==} + '@stellar/js-xdr@4.0.0': resolution: {integrity: sha512-+NmNa7Tk5BI5XFdy/6xGTqAN4J9a9KgCrCGhj2uEUTCBhLkch0M+QbKzNH8zEnejWe0p8w+0q5hUVX6L3OzoVA==} engines: {node: '>=20.0.0', pnpm: '>=9.0.0'} + '@stellar/stellar-base@14.0.1': + resolution: {integrity: sha512-mI6Kjh9hGWDA1APawQTtCbR7702dNT/8Te1uuRFPqqdoAKBk3WpXOQI3ZSZO+5olW7BSHpmVG5KBPZpIpQxIvw==} + engines: {node: '>=20.0.0'} + '@stellar/stellar-base@15.0.0': resolution: {integrity: sha512-XQhxUr9BYiEcFcgc4oWcCMR9QJCny/GmmGsuwPKf/ieIcOeb5149KLHYx9mJCA0ea8QbucR2/GzV58QbXOTxQA==} engines: {node: '>=20.0.0'} + '@stellar/stellar-sdk@14.2.0': + resolution: {integrity: sha512-7nh2ogzLRMhfkIC0fGjn1LHUzk3jqVw8tjAuTt5ADWfL9CSGBL18ILucE9igz2L/RU2AZgeAvhujAnW91Ut/oQ==} + engines: {node: '>=20.0.0'} + '@stellar/stellar-sdk@15.0.1': resolution: {integrity: sha512-iZjWKXtfohsPh+CX9wRyQNIlXLeA9VyuQB6UMC7AFBD9XnR92eOjnlfeONzk/Bsrkk6+UPlpzSy2MuF+ydHP1A==} engines: {node: '>=20.0.0'} @@ -2774,62 +3217,217 @@ packages: '@tokenizer/token@0.3.0': resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==} - '@tsconfig/node10@1.0.11': - resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} + '@trezor/analytics@1.5.0': + resolution: {integrity: sha512-evILW5XJEmfPlf0TY1duOLtGJ47pdGeSKVE3P75ODEUsRNxtPVqlkOUBPmYpCxPnzS8XDmkatT8lf9/DF0G6nA==} + peerDependencies: + tslib: ^2.6.2 - '@tsconfig/node12@1.0.11': - resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} + '@trezor/blockchain-link-types@1.5.0': + resolution: {integrity: sha512-wD6FKKxNr89MTWYL+NikRkBcWXhiWNFR0AuDHW6GHmlCEHhKu/hAvQtcER8X5jt/Wd0hSKNZqtHBXJ1ZkpJ6rg==} + peerDependencies: + tslib: ^2.6.2 - '@tsconfig/node14@1.0.3': - resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} + '@trezor/blockchain-link-types@1.5.1': + resolution: {integrity: sha512-Idavz6LwLBW8sXc69fh5AJEnl666EDl2Nt3io7updvBgOR0/P12I900DgjNhCKtiWuv66A33/5RE7zLcj3lfnw==} + peerDependencies: + tslib: ^2.6.2 - '@tsconfig/node16@1.0.4': - resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} + '@trezor/blockchain-link-utils@1.5.1': + resolution: {integrity: sha512-2tDGLEj5jzydjsJQONGTWVmCDDy6FTZ4ytr1/2gE6anyYEJU8MbaR+liTt3UvcP5jwZTNutwYLvZixRfrb8JpA==} + peerDependencies: + tslib: ^2.6.2 - '@tybys/wasm-util@0.10.0': - resolution: {integrity: sha512-VyyPYFlOMNylG45GoAe0xDoLwWuowvf92F9kySqzYh8vmYm7D2u4iUJKa1tOUpS70Ku13ASrOkS4ScXFsTaCNQ==} + '@trezor/blockchain-link-utils@1.5.2': + resolution: {integrity: sha512-OSS5OEE98FMnYfjoEALPjBt7ebjC/FKnq3HOolHdEWXBpVlXZNN2+Vo1R9J6WbZUU087sHuUTJJy/GJYWY13Tg==} + peerDependencies: + tslib: ^2.6.2 - '@types/babel__core@7.20.5': - resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + '@trezor/blockchain-link@2.6.1': + resolution: {integrity: sha512-SPwxkihOMI0o79BOy0RkfgVL2meuJhIe1yWHCeR8uoqf5KGblUyeXxvNCy6w8ckJ9LRpM1+bZhsUODuNs3083Q==} + peerDependencies: + tslib: ^2.6.2 - '@types/babel__generator@7.27.0': - resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==} + '@trezor/connect-analytics@1.4.0': + resolution: {integrity: sha512-hy2J2oeIhRC/e1bOWXo5dsVMVnDwO2UKnxhR6FD8PINR3jgM6PWAXc6k33WJsBcyiTzwMP7/xPysLcgNJH5o4w==} + peerDependencies: + tslib: ^2.6.2 - '@types/babel__template@7.4.4': - resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + '@trezor/connect-common@0.5.1': + resolution: {integrity: sha512-wdpVCwdylBh4SBO5Ys40tB/d59UlfjmxgBHDkkLgaR+JcqkthCfiw5VlUrV9wu65lquejAZhA5KQL4mUUUhCow==} + peerDependencies: + tslib: ^2.6.2 - '@types/babel__traverse@7.28.0': - resolution: {integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==} + '@trezor/connect-plugin-stellar@9.2.6': + resolution: {integrity: sha512-RA0Q4GHaf1mFxgSX183yyH+5tWEgS1j+sfe9KiUyIn/VnpXeUnaCpQuKMomAjGXQ5oNuvikTOdHYOqsvuEdOyw==} + peerDependencies: + '@stellar/stellar-sdk': ^13.3.0 + '@trezor/connect': 9.x.x + tslib: ^2.6.2 - '@types/body-parser@1.19.6': - resolution: {integrity: sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==} + '@trezor/connect-web@9.7.2': + resolution: {integrity: sha512-r4wMnQ51KO1EaMpO8HLB95E+4s+aaZE9Vjx1dHYaD+Xj40LR7OJmR6DyDKuF0Ioji3Jxx1MwZCaFfvA+0JW+Sg==} + peerDependencies: + tslib: ^2.6.2 - '@types/connect@3.4.38': - resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} + '@trezor/connect@9.7.2': + resolution: {integrity: sha512-Sn6F4mNH+yi2vAHy29kwhs50bRLn92drg3znm3pkY+8yEBxI4MmuP8sKYjdgUEJnQflWh80KlcvEDeVa4olVRA==} + peerDependencies: + tslib: ^2.6.2 - '@types/cookiejar@2.1.5': - resolution: {integrity: sha512-he+DHOWReW0nghN24E1WUqM0efK4kI9oTqDm6XmK8ZPe2djZ90BSNdGnIyCLzCPw7/pogPlGbzI2wHGGmi4O/Q==} + '@trezor/crypto-utils@1.2.0': + resolution: {integrity: sha512-9i1NrfW1IE6JO910ut7xrx4u5LxE++GETbpJhWLj4P5xpuGDDSDLEn/MXaYisls2DpE897aOrGPaa1qyt8V6tw==} + peerDependencies: + tslib: ^2.6.2 - '@types/crypto-js@4.2.2': - resolution: {integrity: sha512-sDOLlVbHhXpAUAL0YHDUUwDZf3iN4Bwi4W6a0W0b+QcAezUbRtH4FVb+9J4h+XFPW7l/gQ9F8qC7P+Ec4k8QVQ==} + '@trezor/device-authenticity@1.1.2': + resolution: {integrity: sha512-313uSXYR4XKDv3CjtCpgHA+yEe9xxqN7EFl/D68FEn70SPsuWI0+2zUvjPPh6TIOh/EcLv7hCO/QTHUAGd7ZWQ==} - '@types/debug@4.1.13': - resolution: {integrity: sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw==} + '@trezor/device-utils@1.2.0': + resolution: {integrity: sha512-Aqp7pIooFTx21zRUtTI6i1AS4d9Lrx7cclvksh2nJQF9WJvbzuCXshEGkLoOsHwhQrCl3IXfbGuMdA12yDenPA==} - '@types/docker-modem@3.0.6': - resolution: {integrity: sha512-yKpAGEuKRSS8wwx0joknWxsmLha78wNMe9R2S3UNsVOkZded8UqOrV8KoeDXoXsjndxwyF3eIhyClGbO1SEhEg==} + '@trezor/env-utils@1.5.0': + resolution: {integrity: sha512-u1TN7dMQ5Qhpbae08Z4JJmI9fQrbbJ4yj8eIAsuzMQn6vb+Sg9vbntl+IDsZ1G9WeI73uHTLu1wWMmAgiujH8w==} + peerDependencies: + expo-constants: '*' + expo-localization: '*' + react-native: '*' + tslib: ^2.6.2 + peerDependenciesMeta: + expo-constants: + optional: true + expo-localization: + optional: true + react-native: + optional: true - '@types/dockerode@4.0.1': - resolution: {integrity: sha512-cmUpB+dPN955PxBEuXE3f6lKO1hHiIGYJA46IVF3BJpNsZGvtBDcRnlrHYHtOH/B6vtDOyl2kZ2ShAu3mgc27Q==} + '@trezor/protobuf@1.5.1': + resolution: {integrity: sha512-nAkaCCAqLpErBd+IuKeG5MpbyLR/2RMgCw18TWc80m1Ws/XgQirhHY9Jbk6gLImTXb9GTrxP0+MDSahzd94rSA==} + peerDependencies: + tslib: ^2.6.2 - '@types/eslint-scope@3.7.7': - resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} + '@trezor/protobuf@1.5.2': + resolution: {integrity: sha512-zViaL1jKue8DUTVEDg0C/lMipqNMd/Z3kr29/+MeZOoupjaXIQ2Lqp3WAMe8hvNTKKX8aNQH9JrbapJ6w9FMXw==} + peerDependencies: + tslib: ^2.6.2 - '@types/eslint@9.6.1': - resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==} + '@trezor/protocol@1.3.0': + resolution: {integrity: sha512-rmrxbDrdgxTouBPbZcSeqU7ba/e5WVT1dxvxxEntHqRdTiDl7d3VK+BErCrlyol8EH5YCqEF3/rXt0crSOfoFw==} + peerDependencies: + tslib: ^2.6.2 - '@types/estree@1.0.8': - resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + '@trezor/schema-utils@1.4.0': + resolution: {integrity: sha512-K7upSeh7VDrORaIC4KAxYVW93XNlohmUnH5if/5GKYmTdQSRp1nBkO6Jm+Z4hzIthdnz/1aLgnbeN3bDxWLRxA==} + peerDependencies: + tslib: ^2.6.2 + + '@trezor/transport@1.6.2': + resolution: {integrity: sha512-w0HlD1fU+qTGO3tefBGHF/YS/ts/TWFja9FGIJ4+7+Z9NphvIG06HGvy2HzcD9AhJy9pvDeIsyoM2TTZTiyjkQ==} + peerDependencies: + tslib: ^2.6.2 + + '@trezor/type-utils@1.2.0': + resolution: {integrity: sha512-+E2QntxkyQuYfQQyl8RvT01tq2i5Dp/LFUOXuizF+KVOqsZBjBY43j5hewcCO3+MokD7deDiPyekbUEN5/iVlw==} + + '@trezor/utils@9.5.0': + resolution: {integrity: sha512-kdyMyDbxzvOZmwBNvTjAK+C/kzyOz8T4oUbFvq+KaXn5mBFf1uf8rq5X2HkxgdYRPArtHS3PxLKsfkNCdhCYtQ==} + peerDependencies: + tslib: ^2.6.2 + + '@trezor/utxo-lib@2.5.0': + resolution: {integrity: sha512-Fa2cZh0037oX6AHNLfpFIj65UR/OoX0ZJTocFuQASe77/1PjZHysf6BvvGfmzuFToKfrAQ+DM/1Sx+P/vnyNmA==} + peerDependencies: + tslib: ^2.6.2 + + '@trezor/websocket-client@1.3.0': + resolution: {integrity: sha512-9KQSaVc3NtmM6rFFj1e+9bM0C5mVKVidbnxlfzuBJu7G2YMRdIdLPcAXhvmRZjs40uzDuBeApK+p547kODz2ug==} + peerDependencies: + tslib: ^2.6.2 + + '@tsconfig/node10@1.0.11': + resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} + + '@tsconfig/node12@1.0.11': + resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} + + '@tsconfig/node14@1.0.3': + resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} + + '@tsconfig/node16@1.0.4': + resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} + + '@twind/core@1.1.3': + resolution: {integrity: sha512-/B/aNFerMb2IeyjSJy3SJxqVxhrT77gBDknLMiZqXIRr4vNJqiuhx7KqUSRzDCwUmyGuogkamz+aOLzN6MeSLw==} + engines: {node: '>=14.15.0'} + peerDependencies: + typescript: ^4.8.4 + peerDependenciesMeta: + typescript: + optional: true + + '@twind/preset-autoprefix@1.0.7': + resolution: {integrity: sha512-3wmHO0pG/CVxYBNZUV0tWcL7CP0wD5KpyWAQE/KOalWmOVBj+nH6j3v6Y3I3pRuMFaG5DC78qbYbhA1O11uG3w==} + engines: {node: '>=14.15.0'} + peerDependencies: + '@twind/core': ^1.1.0 + typescript: ^4.8.4 + peerDependenciesMeta: + typescript: + optional: true + + '@twind/preset-tailwind@1.1.4': + resolution: {integrity: sha512-zv85wrP/DW4AxgWrLfH7kyGn/KJF3K04FMLVl2AjoxZGYdCaoZDkL8ma3hzaKQ+WGgBFRubuB/Ku2Rtv/wjzVw==} + engines: {node: '>=14.15.0'} + peerDependencies: + '@twind/core': ^1.1.0 + typescript: ^4.8.4 + peerDependenciesMeta: + typescript: + optional: true + + '@tybys/wasm-util@0.10.0': + resolution: {integrity: sha512-VyyPYFlOMNylG45GoAe0xDoLwWuowvf92F9kySqzYh8vmYm7D2u4iUJKa1tOUpS70Ku13ASrOkS4ScXFsTaCNQ==} + + '@types/babel__core@7.20.5': + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + + '@types/babel__generator@7.27.0': + resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==} + + '@types/babel__template@7.4.4': + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + + '@types/babel__traverse@7.28.0': + resolution: {integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==} + + '@types/body-parser@1.19.6': + resolution: {integrity: sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==} + + '@types/connect@3.4.38': + resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} + + '@types/cookiejar@2.1.5': + resolution: {integrity: sha512-he+DHOWReW0nghN24E1WUqM0efK4kI9oTqDm6XmK8ZPe2djZ90BSNdGnIyCLzCPw7/pogPlGbzI2wHGGmi4O/Q==} + + '@types/crypto-js@4.2.2': + resolution: {integrity: sha512-sDOLlVbHhXpAUAL0YHDUUwDZf3iN4Bwi4W6a0W0b+QcAezUbRtH4FVb+9J4h+XFPW7l/gQ9F8qC7P+Ec4k8QVQ==} + + '@types/debug@4.1.13': + resolution: {integrity: sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw==} + + '@types/docker-modem@3.0.6': + resolution: {integrity: sha512-yKpAGEuKRSS8wwx0joknWxsmLha78wNMe9R2S3UNsVOkZded8UqOrV8KoeDXoXsjndxwyF3eIhyClGbO1SEhEg==} + + '@types/dockerode@4.0.1': + resolution: {integrity: sha512-cmUpB+dPN955PxBEuXE3f6lKO1hHiIGYJA46IVF3BJpNsZGvtBDcRnlrHYHtOH/B6vtDOyl2kZ2ShAu3mgc27Q==} + + '@types/eslint-scope@3.7.7': + resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} + + '@types/eslint@9.6.1': + resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==} + + '@types/estree@1.0.8': + resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} '@types/express-serve-static-core@5.0.7': resolution: {integrity: sha512-R+33OsgWw7rOhD1emjU7dzCDHucJrgJXMA5PYCzJxVil0dsyx5iBEPHqpPfiKNJQb7lZ1vxwoLR4Z87bBUpeGQ==} @@ -2879,6 +3477,9 @@ packages: '@types/ms@2.1.0': resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} + '@types/node@12.20.55': + resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} + '@types/node@18.19.130': resolution: {integrity: sha512-GRaXQx6jGfL8sKfaIDD6OupbIHBr9jv7Jnaml9tB7l4v068PAOXqfcujMMo5PhbIs6ggR1XODELqahT2R8v0fg==} @@ -2938,9 +3539,24 @@ packages: '@types/trusted-types@2.0.7': resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} + '@types/uuid@10.0.0': + resolution: {integrity: sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==} + '@types/validator@13.15.3': resolution: {integrity: sha512-7bcUmDyS6PN3EuD9SlGGOxM77F8WLVsrwkxyWxKnxzmXoequ6c7741QBrANq6htVRGOITJ7z72mTP6Z4XyuG+Q==} + '@types/w3c-web-usb@1.0.14': + resolution: {integrity: sha512-Qu3Nn6JFuF4+sHKYl+IcX9vYiI40ogleXzFFSxoE1W94rG98o/kXs8uJ0QSfFzuwBCZWlGfUGpPkgwuuX4PchA==} + + '@types/web@0.0.197': + resolution: {integrity: sha512-V4sOroWDADFx9dLodWpKm298NOJ1VJ6zoDVgaP+WBb/utWxqQ6gnMzd9lvVDAr/F3ibiKaxH9i45eS0gQPSTaQ==} + + '@types/ws@7.4.7': + resolution: {integrity: sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==} + + '@types/ws@8.18.1': + resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==} + '@types/yargs-parser@21.0.3': resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} @@ -3140,6 +3756,18 @@ packages: typescript: optional: true + '@wallet-standard/base@1.1.0': + resolution: {integrity: sha512-DJDQhjKmSNVLKWItoKThJS+CsJQjR9AOBOirBVT1F9YpRyC9oYHE+ZnSf8y8bxUphtKqdQMPVQ2mHohYdRvDVQ==} + engines: {node: '>=16'} + + '@wallet-standard/features@1.1.0': + resolution: {integrity: sha512-hiEivWNztx73s+7iLxsuD1sOJ28xtRix58W7Xnz4XzzA/pF0+aicnWgjOdA10doVDEDZdUuZCIIqG96SFNlDUg==} + engines: {node: '>=16'} + + '@wallet-standard/wallet@1.1.0': + resolution: {integrity: sha512-Gt8TnSlDZpAl+RWOOAB/kuvC7RpcdWAlFbHNoi4gsXsfaWa1QCT6LBcfIYTPdOZC9OVZUDwqGuGAcqZejDmHjg==} + engines: {node: '>=16'} + '@walletconnect/core@2.21.0': resolution: {integrity: sha512-o6R7Ua4myxR8aRUAJ1z3gT9nM+jd2B2mfamu6arzy1Cc6vi10fIwFWb6vg3bC8xJ6o9H3n/cN5TOW3aA9Y1XVw==} engines: {node: '>=18'} @@ -3148,6 +3776,14 @@ packages: resolution: {integrity: sha512-Tp4MHJYcdWD846PH//2r+Mu4wz1/ZU/fr9av1UWFiaYQ2t2TPLDiZxjLw54AAEpMqlEHemwCgiRiAmjR1NDdTQ==} engines: {node: '>=18'} + '@walletconnect/core@2.23.0': + resolution: {integrity: sha512-W++xuXf+AsMPrBWn1It8GheIbCTp1ynTQP+aoFB86eUwyCtSiK7UQsn/+vJZdwElrn+Ptp2A0RqQx2onTMVHjQ==} + engines: {node: '>=18.20.8'} + + '@walletconnect/core@2.23.7': + resolution: {integrity: sha512-yTyymn9mFaDZkUfLfZ3E9VyaSDPeHAXlrPxQRmNx2zFsEt/25GmTU2A848aomimLxZnAG2jNLhxbJ8I0gyNV+w==} + engines: {node: '>=18.20.8'} + '@walletconnect/environment@1.0.1': resolution: {integrity: sha512-T426LLZtHj8e8rYnKfzsw1aG6+M0BT1ZxayMdv/p8yM0MU+eJDISqNY3/bccxRr4LrF9csq02Rhqt08Ibl0VRg==} @@ -3187,6 +3823,12 @@ packages: '@walletconnect/logger@2.1.2': resolution: {integrity: sha512-aAb28I3S6pYXZHQm5ESB+V6rDqIYfsnHaQyzFbwUUBFY4H0OXx/YtTl8lvhUNhMMfb9UxbwEBS253TlXUYJWSw==} + '@walletconnect/logger@3.0.0': + resolution: {integrity: sha512-DDktPBFdmt5d7U3sbp4e3fQHNS1b6amsR8FmtOnt6L2SnV7VfcZr8VmAGL12zetAR+4fndegbREmX0P8Mw6eDg==} + + '@walletconnect/logger@3.0.2': + resolution: {integrity: sha512-7wR3wAwJTOmX4gbcUZcFMov8fjftY05+5cO/d4cpDD8wDzJ+cIlKdYOXaXfxHLSYeDazMXIsxMYjHYVDfkx+nA==} + '@walletconnect/relay-api@1.0.11': resolution: {integrity: sha512-tLPErkze/HmC9aCmdZOhtVmYZq1wKfWTJtygQHoWtgg722Jd4homo54Cs4ak2RUFUZIGO2RsOpIcWipaua5D5Q==} @@ -3204,6 +3846,12 @@ packages: resolution: {integrity: sha512-QaXzmPsMnKGV6tc4UcdnQVNOz4zyXgarvdIQibJ4L3EmLat73r5ZVl4c0cCOcoaV7rgM9Wbphgu5E/7jNcd3Zg==} deprecated: 'Reliability and performance improvements. See: https://github.com/WalletConnect/walletconnect-monorepo/releases' + '@walletconnect/sign-client@2.23.0': + resolution: {integrity: sha512-Nzf5x/LnQgC0Yjk0NmkT8kdrIMcScpALiFm9gP0n3CulL+dkf3HumqWzdoTmQSqGPxwHu/TNhGOaRKZLGQXSqw==} + + '@walletconnect/sign-client@2.23.7': + resolution: {integrity: sha512-SX61lzb1bTl/LijlcHQttnoHPBzzoY5mW9ArR6qhFtDNDTS7yr2rcH7rCngxHlYeb4rAYcWLHgbiGSrdKxl/mg==} + '@walletconnect/time@1.0.2': resolution: {integrity: sha512-uzdd9woDcJ1AaBZRhqy5rNC9laqWGErfc4dxA9a87mPdKOgWMD85mcFo9dIYIts/Jwocfwn07EC6EzclKubk/g==} @@ -3213,6 +3861,15 @@ packages: '@walletconnect/types@2.21.1': resolution: {integrity: sha512-UeefNadqP6IyfwWC1Yi7ux+ljbP2R66PLfDrDm8izmvlPmYlqRerJWJvYO4t0Vvr9wrG4Ko7E0c4M7FaPKT/sQ==} + '@walletconnect/types@2.23.0': + resolution: {integrity: sha512-9ZEOJyx/kNVCRncDHh3Qr9eH7Ih1dXBFB4k1J8iEudkv3t4GhYpXhqIt2kNdQWluPb1BBB4wEuckAT96yKuA8g==} + + '@walletconnect/types@2.23.7': + resolution: {integrity: sha512-6PAKK+iR2IntmlkCFLMAHjYeIaerCJJYRDmdRimhon0u+aNmQT+HyGM6zxDAth0rdpBD7qEvKP5IXZTE7KFUhw==} + + '@walletconnect/types@2.23.9': + resolution: {integrity: sha512-IUl1PpD/Dig8IE2OZ9XtjbPohEyOZJ73xs92EDUzoIyzRtfm36g2D340pY3iu3AAdLv1yFiaZafB8Hf8RFze8A==} + '@walletconnect/universal-provider@2.21.0': resolution: {integrity: sha512-mtUQvewt+X0VBQay/xOJBvxsB3Xsm1lTwFjZ6WUwSOTR1X+FNb71hSApnV5kbsdDIpYPXeQUbGt2se1n5E5UBg==} deprecated: 'Reliability and performance improvements. See: https://github.com/WalletConnect/walletconnect-monorepo/releases' @@ -3221,12 +3878,21 @@ packages: resolution: {integrity: sha512-Wjx9G8gUHVMnYfxtasC9poGm8QMiPCpXpbbLFT+iPoQskDDly8BwueWnqKs4Mx2SdIAWAwuXeZ5ojk5qQOxJJg==} deprecated: 'Reliability and performance improvements. See: https://github.com/WalletConnect/walletconnect-monorepo/releases' + '@walletconnect/universal-provider@2.23.7': + resolution: {integrity: sha512-6UicU/Mhr/1bh7MNoajypz7BhigORbHpP1LFTf8FYLQGDqzmqHMqmMH2GDAImtaY2sFTi2jBvc22tLl8VMze/A==} + '@walletconnect/utils@2.21.0': resolution: {integrity: sha512-zfHLiUoBrQ8rP57HTPXW7rQMnYxYI4gT9yTACxVW6LhIFROTF6/ytm5SKNoIvi4a5nX5dfXG4D9XwQUCu8Ilig==} '@walletconnect/utils@2.21.1': resolution: {integrity: sha512-VPZvTcrNQCkbGOjFRbC24mm/pzbRMUq2DSQoiHlhh0X1U7ZhuIrzVtAoKsrzu6rqjz0EEtGxCr3K1TGRqDG4NA==} + '@walletconnect/utils@2.23.0': + resolution: {integrity: sha512-bVyv4Hl+/wVGueZ6rEO0eYgDy5deSBA4JjpJHAMOdaNoYs05NTE1HymV2lfPQQHuqc7suYexo9jwuW7i3JLuAA==} + + '@walletconnect/utils@2.23.7': + resolution: {integrity: sha512-3p38gNrkVcIiQixVrlsWSa66Gjs5PqHOug2TxDgYUVBW5NcKjwQA08GkC6CKBQUfr5iaCtbfy6uZJW1LKSIvWQ==} + '@walletconnect/window-getters@1.0.1': resolution: {integrity: sha512-vHp+HqzGxORPAN8gY03qnbTMnhqIwjeRJNOMOAzePRg4xVEEE2WvYsI9G2NMjOknA8hnuYbU3/hwLcKbjhc8+Q==} @@ -3278,6 +3944,13 @@ packages: '@webassemblyjs/wast-printer@1.14.1': resolution: {integrity: sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==} + '@xrplf/isomorphic@1.0.1': + resolution: {integrity: sha512-0bIpgx8PDjYdrLFeC3csF305QQ1L7sxaWnL5y71mCvhenZzJgku9QsA+9QCXBC1eNYtxWO/xR91zrXJy2T/ixg==} + engines: {node: '>=16.0.0'} + + '@xrplf/secret-numbers@2.0.0': + resolution: {integrity: sha512-z3AOibRTE9E8MbjgzxqMpG1RNaBhQ1jnfhNCa1cGf2reZUJzPMYs4TggQTc7j8+0WyV3cr7y/U8Oz99SXIkN5Q==} + '@xtuc/ieee754@1.2.0': resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} @@ -3364,6 +4037,14 @@ packages: aes-js@4.0.0-beta.5: resolution: {integrity: sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==} + agent-base@7.1.4: + resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} + engines: {node: '>= 14'} + + agentkeepalive@4.6.0: + resolution: {integrity: sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==} + engines: {node: '>= 8.0.0'} + ajv-formats@2.1.1: resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} peerDependencies: @@ -3503,6 +4184,9 @@ packages: asap@2.0.6: resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} + asn1.js@4.10.1: + resolution: {integrity: sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==} + asn1@0.2.6: resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==} @@ -3641,6 +4325,9 @@ packages: bare-url@2.4.0: resolution: {integrity: sha512-NSTU5WN+fy/L0DDenfE8SXQna4voXuW0FHM7wH8i3/q9khUSchfPbPezO4zSFMnDGIf9YE+mt/RWhZgNRKRIXA==} + base-x@3.0.11: + resolution: {integrity: sha512-xz7wQ8xDhdyP7tQxwdteLYeFfS68tSMNCZ/Y37WJ4bhGfKPpqEIlmIyueQHqOyoPhE6xNUqjzRr8ra0eF9VRvA==} + base-x@5.0.1: resolution: {integrity: sha512-M7uio8Zt++eg3jPj+rHMfCC+IuygQHHCOU+IYsVtik6FWjuYpVt/+MRKcgsAMHh8mMFAwnB+Bs+mTrFiXjMzKg==} @@ -3663,6 +4350,13 @@ packages: bcrypt-pbkdf@1.0.2: resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==} + bech32@2.0.0: + resolution: {integrity: sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg==} + + big-integer@1.6.36: + resolution: {integrity: sha512-t70bfa7HYEA1D9idDbmuv7YbsbVkQ+Hp+8KFSul4aE5e/i1bjCNIRYJZlA8Q8p0r9T8cF/RVvwUgRA//FydEyg==} + engines: {node: '>=0.6'} + big.js@6.2.2: resolution: {integrity: sha512-y/ie+Faknx7sZA5MfGA2xKlu0GDv8RWrXGsmlteyJQ2lvoKv9GBK/fpRMc2qlSoBAgNxrixICFCBefIq8WCQpQ==} @@ -3672,9 +4366,31 @@ packages: bignumber.js@9.3.1: resolution: {integrity: sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ==} + bindings@1.5.0: + resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} + + bip32-path@0.4.2: + resolution: {integrity: sha512-ZBMCELjJfcNMkz5bDuJ1WrYvjlhEF5k6mQ8vUr4N7MbVRsXei7ZOg8VhhwMfNiW68NWmLkgkc6WvTickrLGprQ==} + + bip66@2.0.0: + resolution: {integrity: sha512-kBG+hSpgvZBrkIm9dt5T1Hd/7xGCPEX2npoxAWZfsK1FvjgaxySEh2WizjyIstWXriKo9K9uJ4u0OnsyLDUPXQ==} + + bitcoin-ops@1.4.1: + resolution: {integrity: sha512-pef6gxZFztEhaE9RY9HmWVmiIHqCb2OyS4HPKkpc6CIiiOa3Qmuoylxc5P2EkU3w+5eTSifI9SEZC88idAIGow==} + bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + blake-hash@2.0.0: + resolution: {integrity: sha512-Igj8YowDu1PRkRsxZA7NVkdFNxH5rKv5cpLxQ0CVXSIA77pVYwCPRQJ2sMew/oneUpfuYRyjG6r8SmmmnbZb1w==} + engines: {node: '>= 10'} + + blakejs@1.2.1: + resolution: {integrity: sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==} + + bn.js@4.12.3: + resolution: {integrity: sha512-fGTi3gxV/23FTYdAoUtLYp6qySe2KE3teyZitipKNRuVYcBkoP/bB3guXN/XVKUe9mxCHXnc9C4ocyz8OmgN0g==} + bn.js@5.2.3: resolution: {integrity: sha512-EAcmnPkxpntVL+DS7bO1zhcZNvCkxqtkd0ZY53h06GNQ3DEkkGZ/gKgmDv6DdZQGj9BgfSPKtJJ7Dp1GPP8f7w==} @@ -3682,6 +4398,15 @@ packages: resolution: {integrity: sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==} engines: {node: '>=18'} + borsh@0.7.0: + resolution: {integrity: sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA==} + + borsh@1.0.0: + resolution: {integrity: sha512-fSVWzzemnyfF89EPwlUNsrS5swF5CrtiN4e+h0/lLf4dz2he4L3ndM20PS9wj7ICSkXJe/TQUHdaPTq15b1mNQ==} + + borsh@2.0.0: + resolution: {integrity: sha512-kc9+BgR3zz9+cjbwM8ODoUB4fs3X3I5A/HtX7LZKxCLaMrEeDFoBpnhZY//DTS1VZBSs6S5v46RZRbZjRFspEg==} + bowser@2.14.1: resolution: {integrity: sha512-tzPjzCxygAKWFOJP011oxFHs57HzIhOEracIgAePE4pqB3LikALKnSzUyU4MGs9/iCEUuHlAJTjTc5M+u7YEGg==} @@ -3699,9 +4424,29 @@ packages: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} + brorand@1.1.0: + resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} + browser-level@3.0.0: resolution: {integrity: sha512-kGXtLh29jMwqKaskz5xeDLtCtN1KBz/DbQSqmvH7QdJiyGRC7RAM8PPg6gvUiNMa+wVnaxS9eSmEtP/f5ajOVw==} + browserify-aes@1.2.0: + resolution: {integrity: sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==} + + browserify-cipher@1.0.1: + resolution: {integrity: sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==} + + browserify-des@1.0.2: + resolution: {integrity: sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==} + + browserify-rsa@4.1.1: + resolution: {integrity: sha512-YBjSAiTqM04ZVei6sXighu679a3SqWORA3qZTEqZImnlkDIFtKc6pNutpjyZ8RJTjQtuYfeetkxM11GwoYXMIQ==} + engines: {node: '>= 0.10'} + + browserify-sign@4.2.5: + resolution: {integrity: sha512-C2AUdAJg6rlM2W5QMp2Q4KGQMVBwR1lIimTsUnutJ8bMpW5B52pGpR2gEnNBNwijumDo5FojQ0L9JrXA8m4YEw==} + engines: {node: '>= 0.10'} + browserslist@4.28.2: resolution: {integrity: sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} @@ -3711,9 +4456,15 @@ packages: resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} engines: {node: '>= 6'} + bs58@4.0.1: + resolution: {integrity: sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==} + bs58@6.0.0: resolution: {integrity: sha512-PD0wEnEYg6ijszw/u8s+iI3H17cTymlrwkKhDhPZq+Sokl3AU4htyBFTjAeNAlCCmg0f53g6ih3jATyCKftTfw==} + bs58check@4.0.0: + resolution: {integrity: sha512-FsGDOnFg9aVI9erdriULkd/JjEWONV/lQE5aYziB5PoBsXRind56lh8doIZIc9X4HoxT5x4bLjMWN1/NB8Zp5g==} + bser@2.1.1: resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} @@ -3730,6 +4481,9 @@ packages: buffer-reverse@1.0.1: resolution: {integrity: sha512-M87YIUBsZ6N924W57vDwT/aOu8hw7ZgdByz6ijksLjmHJELBASmYTTlNHRgjE+pTsT9oJXGaDSgqqwfdHotDUg==} + buffer-xor@1.0.3: + resolution: {integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==} + buffer@5.7.1: resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} @@ -3794,10 +4548,17 @@ packages: caniuse-lite@1.0.30001787: resolution: {integrity: sha512-mNcrMN9KeI68u7muanUpEejSLghOKlVhRqS/Za2IeyGllJ9I9otGpR9g3nsw7n4W378TE/LyIteA0+/FOZm4Kg==} + cashaddrjs@0.4.4: + resolution: {integrity: sha512-xZkuWdNOh0uq/mxJIng6vYWfTowZLd9F4GMAlp2DwFHlcCqCm91NtuAc47RuV4L7r4PYcY5p6Cr2OKNb4hnkWA==} + catering@2.1.1: resolution: {integrity: sha512-K7Qy8O9p76sL3/3m7/zLKbRkyOlSZAgzEaLhyj2mXS8PsCud2Eo4hAb8aLtZqHh0QGqLcb9dlJSu6lHRVENm1w==} engines: {node: '>=6'} + cbor@10.0.12: + resolution: {integrity: sha512-exQDevYd7ZQLP4moMQcZkKCVZsXLAtUSflObr3xTh4xzFIv/xBCdvCd6L259kQOUP2kcTC0jvC6PpZIf/WmRXA==} + engines: {node: '>=20'} + chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} @@ -3839,6 +4600,10 @@ packages: resolution: {integrity: sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==} engines: {node: '>=8'} + cipher-base@1.0.7: + resolution: {integrity: sha512-Mz9QMT5fJe7bKI7MH31UilT5cEK5EHHRCccw/YRFsRY47AuNgaV6HY3rscp0/I4Q+tTW/5zoqpSeRRI54TkDWA==} + engines: {node: '>= 0.10'} + citty@0.1.6: resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==} @@ -4044,6 +4809,15 @@ packages: resolution: {integrity: sha512-piICUB6ei4IlTv1+653yq5+KoqfBYmj9bw6LqXoOneTMDXk5nM1qt12mFW1caG3LlJXEKW1Bp0WggEmIfQB34g==} engines: {node: '>= 14'} + create-ecdh@4.0.4: + resolution: {integrity: sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==} + + create-hash@1.2.0: + resolution: {integrity: sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==} + + create-hmac@1.1.7: + resolution: {integrity: sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==} + create-require@1.1.1: resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} @@ -4063,6 +4837,9 @@ packages: crypt@0.0.2: resolution: {integrity: sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==} + crypto-browserify@3.12.0: + resolution: {integrity: sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==} + crypto-js@4.2.0: resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==} @@ -4075,9 +4852,6 @@ packages: engines: {node: '>=4'} hasBin: true - csstype@3.1.3: - resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} - csstype@3.2.3: resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} @@ -4170,14 +4944,6 @@ packages: resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} engines: {node: '>=0.10'} - dedent@1.7.0: - resolution: {integrity: sha512-HGFtf8yhuhGhqO07SV79tRp+br4MnbdjeVxotpn1QBl30pcLLCQjX5b2295ll0fv8RKDKsmWYrl05usHM9CewQ==} - peerDependencies: - babel-plugin-macros: ^3.1.0 - peerDependenciesMeta: - babel-plugin-macros: - optional: true - dedent@1.7.2: resolution: {integrity: sha512-WzMx3mW98SN+zn3hgemf4OzdmyNhhhKz5Ay0pUfQiMQ3e1g+xmTJWp/pKdwKVXhdSkAEGIIzqeuWrL3mV/AXbA==} peerDependencies: @@ -4214,10 +4980,18 @@ packages: defu@6.1.7: resolution: {integrity: sha512-7z22QmUWiQ/2d0KkdYmANbRUVABpZ9SNYyH5vx6PZ+nE5bcC0l7uFvEfHlyld/HcGBFTL536ClDt3DEcSlEJAQ==} + delay@5.0.0: + resolution: {integrity: sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==} + engines: {node: '>=10'} + delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} + depd@1.1.2: + resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} + engines: {node: '>= 0.6'} + depd@2.0.0: resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} engines: {node: '>= 0.8'} @@ -4227,12 +5001,18 @@ packages: peerDependencies: valtio: '*' + des.js@1.1.0: + resolution: {integrity: sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==} + destr@2.0.5: resolution: {integrity: sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==} detect-browser@5.3.0: resolution: {integrity: sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w==} + detect-europe-js@0.1.2: + resolution: {integrity: sha512-lgdERlL3u0aUdHocoouzT10d9I89VVhk0qNRmll7mXdGfJT1/wqZ2ZLA4oJAjeACPY5fT1wsbq2AT+GkuInsow==} + detect-libc@2.1.2: resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} engines: {node: '>=8'} @@ -4251,6 +5031,9 @@ packages: resolution: {integrity: sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw==} engines: {node: '>=0.3.1'} + diffie-hellman@5.0.3: + resolution: {integrity: sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==} + dijkstrajs@1.0.3: resolution: {integrity: sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==} @@ -4308,6 +5091,9 @@ packages: electron-to-chromium@1.5.335: resolution: {integrity: sha512-q9n5T4BR4Xwa2cwbrwcsDJtHD/enpQ5S1xF1IAtdqf5AAgqDFmR/aakqH3ChFdqd/QXJhS3rnnXFtexU7rax6Q==} + elliptic@6.6.1: + resolution: {integrity: sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==} + emittery@0.13.1: resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} engines: {node: '>=12'} @@ -4391,6 +5177,18 @@ packages: es-toolkit@1.33.0: resolution: {integrity: sha512-X13Q/ZSc+vsO1q600bvNK4bxgXMkHcf//RxCmYDaRY5DAcT+eoXjY5hoAPGMdRnWQjvyLEcyauG3b6hz76LNqg==} + es-toolkit@1.39.3: + resolution: {integrity: sha512-Qb/TCFCldgOy8lZ5uC7nLGdqJwSabkQiYQShmw4jyiPk1pZzaYWTwaYKYP7EgLccWYgZocMrtItrwh683voaww==} + + es-toolkit@1.44.0: + resolution: {integrity: sha512-6penXeZalaV88MM3cGkFZZfOoLGWshWWfdy0tWw/RlVVyhvMaWSBTOvXNeiW3e5FwdS5ePW0LGEu17zT139ktg==} + + es6-promise@4.2.8: + resolution: {integrity: sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==} + + es6-promisify@5.0.0: + resolution: {integrity: sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==} + esbuild@0.27.7: resolution: {integrity: sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w==} engines: {node: '>=18'} @@ -4617,6 +5415,9 @@ packages: resolution: {integrity: sha512-IzUmBGPR3+oUG9dUeXynyNmf91/3zUSJg1lCktzKw47OXuhco54U3r9B7O4XX+Rb1Itm9OZ2b0RkTs10bICOxA==} engines: {node: '>=12.0.0'} + evp_bytestokey@1.0.3: + resolution: {integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==} + execa@5.1.1: resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} engines: {node: '>=10'} @@ -4637,6 +5438,9 @@ packages: resolution: {integrity: sha512-1zQrciTiQfRdo7qJM1uG4navm8DayFa2TgCSRlzUyNkhcJ6XUZF3hjnpkyr3VhAqPH7i/9GkG7Tv5abz6fqz0Q==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + exponential-backoff@3.1.3: + resolution: {integrity: sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==} + express@5.2.1: resolution: {integrity: sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==} engines: {node: '>= 18'} @@ -4648,6 +5452,10 @@ packages: resolution: {integrity: sha512-an2S5quJMiy5bnZKEf6AkfH/7r8CzHvhchU40gxN+OM6HPhe7Z9T1FUychcf2M9PpPOO0Hf7BAEfJkw2TDIBDw==} engines: {node: '>=12.0.0'} + eyes@0.1.8: + resolution: {integrity: sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==} + engines: {node: '> 0.1.90'} + fast-check@3.23.2: resolution: {integrity: sha512-h5+1OzzfCC3Ef7VbtKdcv7zsstUQwUDlYpUTvjeUsJAssPgLn7QzbboPtL5ro04Mq0rPOsMzl7q5hIbRs2wD1A==} engines: {node: '>=8.0.0'} @@ -4678,9 +5486,15 @@ packages: fast-safe-stringify@2.1.1: resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} + fast-stable-stringify@1.0.0: + resolution: {integrity: sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag==} + fast-uri@3.1.0: resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==} + fastestsmallesttextencoderdecoder@1.0.22: + resolution: {integrity: sha512-Pb8d48e+oIuY4MaM64Cd7OW1gt4nxCHs7/ddPPZ/Ic3sg8yVGM7O9wDvZ7us6ScaUupzM+pfBolwtYhN1IxBIw==} + fastq@1.20.1: resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==} @@ -4717,6 +5531,9 @@ packages: resolution: {integrity: sha512-Ievi/yy8DS3ygGvT47PjSfdFoX+2isQueoYP1cntFW1JLYAuS4GD7NUPGg4zv2iZfV52uDyk5w5Z0TdpRS6Q1g==} engines: {node: '>=20'} + file-uri-to-path@1.0.0: + resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} + fill-range@7.1.1: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} @@ -4819,6 +5636,12 @@ packages: functions-have-names@1.2.3: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + generate-function@2.3.1: + resolution: {integrity: sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==} + + generate-object-property@1.2.0: + resolution: {integrity: sha512-TuOwZWgJ2VAMEGJvAyPWvpqxSANF0LDpmyHauMjFYzaACvn+QTT/AZomvPCzVBV7yDN3OmwHQ5OvHaeLKre3JQ==} + generator-function@2.0.1: resolution: {integrity: sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==} engines: {node: '>= 0.4'} @@ -4951,6 +5774,13 @@ packages: resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} engines: {node: '>= 0.4'} + hash-base@3.1.2: + resolution: {integrity: sha512-Bb33KbowVTIj5s7Ked1OsqHUeCpz//tPwR+E2zJgJKo9Z5XolZ9b6bdUgjmYlwnWhoOQKoTd1TYToZGn5mAYOg==} + engines: {node: '>= 0.8'} + + hash.js@1.1.7: + resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} + hashery@1.5.1: resolution: {integrity: sha512-iZyKG96/JwPz1N55vj2Ie2vXbhu440zfUfJvSwEqEbeLluk7NnapfGqa7LH0mOsnDxTF85Mx8/dyR6HfqcbmbQ==} engines: {node: '>=20'} @@ -4969,6 +5799,9 @@ packages: resolution: {integrity: sha512-B2q2b6P/tZsKJXgbCHvgcsYlsHBTNvfoAiNJ+XzsS0fudEbOU7f3sig924IBfDHqdLrObsiXWfHzuHW1x+MxQQ==} engines: {node: '>=0.10'} + hmac-drbg@1.0.1: + resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} + hono@4.12.12: resolution: {integrity: sha512-p1JfQMKaceuCbpJKAPKVqyqviZdS0eUxH9v82oWo1kb9xjQ5wA6iP3FNVAPDFlz5/p7d45lO+BpSk1tuSZMF4Q==} engines: {node: '>=16.9.0'} @@ -4976,9 +5809,16 @@ packages: hookified@1.15.1: resolution: {integrity: sha512-MvG/clsADq1GPM2KGo2nyfaWVyn9naPiXrqIe4jYjXNZQt238kWyOGrsyc/DmRAQ+Re6yeo6yX/yoNCG5KAEVg==} + htm@3.1.1: + resolution: {integrity: sha512-983Vyg8NwUE7JkZ6NmOqpCZ+sh1bKv2iYTlUkzlWmA5JD2acKoxd4KVxbMmxX/85mtfdnDmTFoNKcg5DGAvxNQ==} + html-escaper@2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + http-errors@1.7.2: + resolution: {integrity: sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==} + engines: {node: '>= 0.6'} + http-errors@2.0.1: resolution: {integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==} engines: {node: '>= 0.8'} @@ -4991,6 +5831,9 @@ packages: resolution: {integrity: sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==} engines: {node: '>=18.18.0'} + humanize-ms@1.2.1: + resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} + iconv-lite@0.7.2: resolution: {integrity: sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==} engines: {node: '>=0.10.0'} @@ -5029,13 +5872,23 @@ packages: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + inherits@2.0.3: + resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} + inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + int64-buffer@1.1.0: + resolution: {integrity: sha512-94smTCQOvigN4d/2R/YDjz8YVG0Sufvv2aAh8P5m42gwhCsDAJqnbNOrxJsrADuAFAA69Q/ptGzxvNcNuIJcvw==} + internal-slot@1.1.0: resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} engines: {node: '>= 0.4'} + ip-address@10.1.0: + resolution: {integrity: sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==} + engines: {node: '>= 12'} + ipaddr.js@1.9.1: resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} engines: {node: '>= 0.10'} @@ -5124,6 +5977,12 @@ packages: resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} engines: {node: '>= 0.4'} + is-my-ip-valid@1.0.1: + resolution: {integrity: sha512-jxc8cBcOWbNK2i2aTkCZP6i7wkHF1bqKFrwEHuN5Jtg5BSaZHUZQ/JTOJwoV41YvHnOaRyWWh72T/KvfNz9DJg==} + + is-my-json-valid@2.20.6: + resolution: {integrity: sha512-1JQwulVNjx8UqkPE/bqDaxtH4PXCe/2VRh/y3p99heOV87HG4Id5/VfDswd+YiAfHcRTfDlWgISycnHuhZq1aw==} + is-negative-zero@2.0.3: resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} engines: {node: '>= 0.4'} @@ -5143,6 +6002,9 @@ packages: is-promise@4.0.0: resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==} + is-property@1.0.2: + resolution: {integrity: sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==} + is-regex@1.2.1: resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} engines: {node: '>= 0.4'} @@ -5163,6 +6025,9 @@ packages: resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==} engines: {node: '>= 0.4'} + is-standalone-pwa@0.1.1: + resolution: {integrity: sha512-9Cbovsa52vNQCjdXOzeQq5CnCbAcRk05aU62K20WO372NrTv0NxibLFCK6lQ4/iZEFdEA3p3t2VNOn8AJ53F5g==} + is-stream@2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} @@ -5212,6 +6077,11 @@ packages: isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + isomorphic-ws@4.0.1: + resolution: {integrity: sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==} + peerDependencies: + ws: '*' + isows@1.0.6: resolution: {integrity: sha512-lPHCayd40oW98/I0uvgaHKWCSvkzY27LjWLbtzOm64yQ+G3Q5npjjbdppU65iZXkK1Zt+kH9pfegli0AYfwYYw==} peerDependencies: @@ -5253,6 +6123,11 @@ packages: jackspeak@3.4.3: resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + jayson@4.3.0: + resolution: {integrity: sha512-AauzHcUcqs8OBnCHOkJY280VaTiCm57AbuO7lqzcw7JapGj50BisE3xhksye4zlTSR1+1tAz67wLTl8tEH1obQ==} + engines: {node: '>=8'} + hasBin: true + jest-changed-files@30.3.0: resolution: {integrity: sha512-B/7Cny6cV5At6M25EWDgf9S617lHivamL8vl6KEpJqkStauzcG4e+WPfDgMMF+H4FVH4A2PLRyvgDJan4441QA==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} @@ -5419,6 +6294,12 @@ packages: resolution: {integrity: sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==} engines: {node: '>=14'} + js-sha256@0.11.1: + resolution: {integrity: sha512-o6WSo/LUvY2uC4j7mO50a2ms7E/EAdbP0swigLV+nzHKTTaYnaLIWJ02VdXrsJX0vGedDESQnLsOekr94ryfjg==} + + js-sha256@0.9.0: + resolution: {integrity: sha512-sga3MHh9sgQN2+pJ9VYZ+1LPwXOxuBJBA5nrR5/ofPfuiJBE2hnjsaN8se8JznOmGLN2p49Pe5U/ttafcs/apA==} + js-sha3@0.9.3: resolution: {integrity: sha512-BcJPCQeLg6WjEx3FE591wVAevlli8lxsxm9/FzV4HXkV49TmBH38Yvrpce6fjbADGMKFrBMGTqrVz3qPIZ88Gg==} @@ -5460,6 +6341,9 @@ packages: json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + json-stringify-safe@5.0.1: + resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} + json2mq@0.2.0: resolution: {integrity: sha512-SzoRg7ux5DWTII9J2qkrZrqV1gt+rTaoufMxEzXbS26Uid0NwaJd123HcoB80TgubEppxxIGdNxCx50fEoEWQA==} @@ -5478,6 +6362,10 @@ packages: jsonfile@6.2.0: resolution: {integrity: sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==} + jsonpointer@5.0.1: + resolution: {integrity: sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==} + engines: {node: '>=0.10.0'} + jsonwebtoken@9.0.3: resolution: {integrity: sha512-MT/xP0CrubFRNLNKvxJ2BYfy53Zkm++5bX9dtuPbqAeQpTVe0MQTFhao8+Cp//EmJp244xt6Drw/GVEGCUj40g==} engines: {node: '>=12', npm: '>=6'} @@ -5702,6 +6590,9 @@ packages: resolution: {integrity: sha512-TFYA4jnP7PVbmlBIfhlSe+WKxs9dklXMTEGcBCIvLhE/Tn3H6Gk1norupVW7m5Cnd4bLcr08AytbyV/xj7f/kQ==} engines: {node: '>= 12.0.0'} + long@5.2.5: + resolution: {integrity: sha512-e0r9YBBgNCq1D1o5Dp8FMH0N5hsFtXDBiVa0qoJPHpakvZkmDKPRoGffZJII/XsHvj9An9blm+cRJ01yQqU+Dw==} + long@5.3.2: resolution: {integrity: sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==} @@ -5723,6 +6614,9 @@ packages: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} engines: {node: '>=10'} + lru_map@0.4.1: + resolution: {integrity: sha512-I+lBvqMMFfqaV8CJCISjI3wbjmwVu/VyOoU7+qtu9d7ioW5klMgsTTiUOUp+DJvfTTzKXoPbyC6YfgkNcyPSOg==} + lucide-react@1.8.0: resolution: {integrity: sha512-WuvlsjngSk7TnTBJ1hsCy3ql9V9VOdcPkd3PKcSmM34vJD8KG6molxz7m7zbYFgICwsanQWmJ13JlYs4Zp7Arw==} peerDependencies: @@ -5756,6 +6650,9 @@ packages: resolution: {integrity: sha512-eefp6IduNPT6fVdwPp+1NgD0PML1NU5P6j1Mj5nz1nidX8/sWY7119WL8vTAHgqfsY74TzW0w1XPgdYEKkGZ5A==} engines: {node: '>=10'} + md5.js@1.3.5: + resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==} + md5@2.3.0: resolution: {integrity: sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==} @@ -5800,6 +6697,10 @@ packages: resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} engines: {node: '>=8.6'} + miller-rabin@4.0.1: + resolution: {integrity: sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==} + hasBin: true + mime-db@1.52.0: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} @@ -5825,6 +6726,12 @@ packages: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} + minimalistic-assert@1.0.1: + resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} + + minimalistic-crypto-utils@1.0.1: + resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} + minimatch@10.2.5: resolution: {integrity: sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==} engines: {node: 18 || 20 || >=22} @@ -5900,6 +6807,11 @@ packages: multiformats@9.9.0: resolution: {integrity: sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==} + mustache@4.0.0: + resolution: {integrity: sha512-FJgjyX/IVkbXBXYUwH+OYwQKqWpFPLaLVESd70yHjSDunwzV2hZOoTBvPf4KLoxesUzzyfTH6F784Uqd7Wm5yA==} + engines: {npm: '>=1.4.0'} + hasBin: true + mute-stream@2.0.0: resolution: {integrity: sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==} engines: {node: ^18.17.0 || >=20.5.0} @@ -5923,6 +6835,12 @@ packages: natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + near-abi@0.2.0: + resolution: {integrity: sha512-kCwSf/3fraPU2zENK18sh+kKG4uKbEUEQdyWQkmW8ZofmLarObIz2+zAYjA1teDZLeMvEQew3UysnPDXgjneaA==} + + near-api-js@5.1.1: + resolution: {integrity: sha512-h23BGSKxNv8ph+zU6snicstsVK1/CTXsQz4LuGGwoRE24Hj424nSe4+/1tzoiC285Ljf60kPAqRCmsfv9etF2g==} + negotiator@1.0.0: resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==} engines: {node: '>= 0.6'} @@ -5983,6 +6901,16 @@ packages: node-addon-api@2.0.2: resolution: {integrity: sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==} + node-addon-api@3.2.1: + resolution: {integrity: sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==} + + node-addon-api@5.1.0: + resolution: {integrity: sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==} + + node-addon-api@8.7.0: + resolution: {integrity: sha512-9MdFxmkKaOYVTV+XVRG8ArDwwQ77XIgIPyKASB1k3JPq3M8fGQQQE3YpMOrKm6g//Ktx8ivZr8xo1Qmtqub+GA==} + engines: {node: ^18 || ^20 || >= 21} + node-emoji@1.11.0: resolution: {integrity: sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==} @@ -5993,6 +6921,15 @@ packages: node-fetch-native@1.6.7: resolution: {integrity: sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==} + node-fetch@2.6.7: + resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + node-fetch@2.7.0: resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} engines: {node: 4.x || >=6.0.0} @@ -6019,6 +6956,10 @@ packages: node-releases@2.0.37: resolution: {integrity: sha512-1h5gKZCF+pO/o3Iqt5Jp7wc9rH3eJJ0+nh/CIoiRwjRxde/hAHyLPXYN4V3CqKAbiZPSeJFSWHmJsbkicta0Eg==} + nofilter@3.1.0: + resolution: {integrity: sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g==} + engines: {node: '>=12.19'} + normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} @@ -6091,6 +7032,10 @@ packages: on-exit-leak-free@0.2.0: resolution: {integrity: sha512-dqaz3u44QbRXQooZLTUKU41ZrzYrcvLISVgbrzbyCMxpmSLJvZ3ZamIJIZ29P6OhZIkNIQKosdeM6t1LYbA9hg==} + on-exit-leak-free@2.1.2: + resolution: {integrity: sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==} + engines: {node: '>=14.0.0'} + on-finished@2.3.0: resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==} engines: {node: '>= 0.8'} @@ -6166,6 +7111,14 @@ packages: typescript: optional: true + ox@0.9.3: + resolution: {integrity: sha512-KzyJP+fPV4uhuuqrTZyok4DC7vFzi7HLUFiUNEmpbyh59htKWkOC98IONC1zgXJPbHAhQgqs6B0Z6StCGhmQvg==} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + p-limit@2.3.0: resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} engines: {node: '>=6'} @@ -6196,6 +7149,10 @@ packages: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} + parse-asn1@5.1.9: + resolution: {integrity: sha512-fIYNuZ/HastSb80baGOuPRo1O9cf4baWw5WsAp7dBuUzeTD/BoaG8sVTdlPFksBE2lF21dN+A1AnrpIjSWqHHg==} + engines: {node: '>= 0.10'} + parse-json@5.2.0: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} @@ -6245,6 +7202,10 @@ packages: pathe@2.0.3: resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} + pbkdf2@3.1.5: + resolution: {integrity: sha512-Q3CG/cYvCO1ye4QKkuH7EXxs3VC/rI1/trd+qX2+PolbaKG0H+bgcZzrTt96mMyRtejk+JMCiLUn3y29W8qmFQ==} + engines: {node: '>= 0.10'} + perfect-debounce@1.0.0: resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} @@ -6266,9 +7227,19 @@ packages: pino-abstract-transport@0.5.0: resolution: {integrity: sha512-+KAgmVeqXYbTtU2FScx1XS3kNyfZ5TrXY07V96QnUSFqo2gAqlvmaxH67Lj7SWazqsMabf+58ctdTcBgnOLUOQ==} + pino-abstract-transport@2.0.0: + resolution: {integrity: sha512-F63x5tizV6WCh4R6RHyi2Ml+M70DNRXt/+HANowMflpgGFMAym/VKm6G7ZOQRjqN7XbGxK1Lg9t6ZrtzOaivMw==} + pino-std-serializers@4.0.0: resolution: {integrity: sha512-cK0pekc1Kjy5w9V2/n+8MkZwusa6EyyxfeQCB799CQRhRt/CqYKiWs5adeu8Shve2ZNffvfC/7J64A2PJo1W/Q==} + pino-std-serializers@7.1.0: + resolution: {integrity: sha512-BndPH67/JxGExRgiX1dX0w1FvZck5Wa4aal9198SrRhZjH3GxKQUKIBnYJTdj2HDN3UQAS06HlfcSbQj2OHmaw==} + + pino@10.0.0: + resolution: {integrity: sha512-eI9pKwWEix40kfvSzqEP6ldqOoBIN7dwD/o91TY5z8vQI12sAffpR/pOqAD1IVVwIVHDpHjkq0joBPdJD0rafA==} + hasBin: true + pino@7.11.0: resolution: {integrity: sha512-dMACeu63HtRLmCG8VKdy4cShCPKaYDR4youZqoSWLxl5Gu99HUw8bw75thbPv9Nip+H+QYX8o3ZJbTdVZZ2TVg==} hasBin: true @@ -6395,6 +7366,9 @@ packages: process-warning@1.0.0: resolution: {integrity: sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==} + process-warning@5.0.0: + resolution: {integrity: sha512-a39t9ApHNx2L4+HBnQKqxxHNs1r7KF+Intd8Q/g1bUh6q0WIp9voPXJ/x0j+ZL45KF1pJd9+q2jLIRMfvEshkA==} + process@0.11.10: resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} engines: {node: '>= 0.6.0'} @@ -6412,6 +7386,10 @@ packages: resolution: {integrity: sha512-WPn+h9RGEExOKdu4bsF4HksG/uzd3cFq3MFtq8PsFeExPse5Ha/VOjQNyHhjboBFwGXGev6muJYTSPAOkROq2g==} engines: {node: '>=18'} + protobufjs@7.4.0: + resolution: {integrity: sha512-mRUWCc3KUU4w1jU8sGxICXH/gNS94DvI1gxqDvBzhj1JpcsimQkYiOJfwsPUykUI5ZaspFbSgmBLER8IrQ3tqw==} + engines: {node: '>=12.0.0'} + protobufjs@7.5.4: resolution: {integrity: sha512-CvexbZtbov6jW2eXAvLukXjXUW1TzFaivC46BpWc/3BpcCysb5Vffu+B3XHMm8lVEuy2Mm4XGex8hBSg1yapPg==} engines: {node: '>=12.0.0'} @@ -6426,10 +7404,16 @@ packages: proxy-compare@2.6.0: resolution: {integrity: sha512-8xuCeM3l8yqdmbPoYeLbrAXCBWu19XEYc5/F28f5qOaoAIMyfmBUkl5axiK+x9olUvRlcekvnm98AP9RDngOIw==} + proxy-compare@3.0.1: + resolution: {integrity: sha512-V9plBAt3qjMlS1+nC8771KNf6oJ12gExvaxnNzN/9yVRLdTv/lc+oJlnSzrdYDAvBfTStPCoiaCOTmTs0adv7Q==} + proxy-from-env@2.1.0: resolution: {integrity: sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==} engines: {node: '>=10'} + public-encrypt@4.0.3: + resolution: {integrity: sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==} + pump@3.0.4: resolution: {integrity: sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==} @@ -6443,6 +7427,9 @@ packages: pure-rand@7.0.1: resolution: {integrity: sha512-oTUZM/NAZS8p7ANR3SHh30kXB+zK2r2BPcEn/awJIbOvq82WoMN4p62AWWp3Hhw50G0xMsw1mhIBLqHw64EcNQ==} + pushdata-bitcoin@1.0.1: + resolution: {integrity: sha512-hw7rcYTJRAl4olM8Owe8x0fBuJJ+WGbMhQuLWOXEMN3PxPCKQHRkhfL+XG0+iXUmSHjkMmb3Ba55Mt21cZc9kQ==} + qr@0.5.5: resolution: {integrity: sha512-iQBvKj7MRKO+co+MY0IZpyLO+ezvttxsmV86WywrgPuAmgBkv0pytyi03wourniSoPgzffeBW6cBgIkpqcvjTg==} engines: {node: '>= 20.19.0'} @@ -6472,6 +7459,9 @@ packages: randombytes@2.1.0: resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + randomfill@1.0.4: + resolution: {integrity: sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==} + range-parser@1.2.1: resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} engines: {node: '>= 0.6'} @@ -6761,8 +7751,8 @@ packages: '@types/react': optional: true - react@19.1.0: - resolution: {integrity: sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==} + react@19.2.5: + resolution: {integrity: sha512-llUJLzz1zTUBrskt2pwZgLq59AemifIftw4aB7JxOqf1HY2FDaGDxgwpAPVzHU1kdWabH7FauP4i1oEeer2WCA==} engines: {node: '>=0.10.0'} readable-stream@2.3.8: @@ -6791,6 +7781,10 @@ packages: resolution: {integrity: sha512-r/H9MzAWtrv8aSVjPCMFpDMl5q66GqtmmRkRjpHTsp4zBAa+snZyiQNlMONiUmEJcsnaw0wCauJ2GWODr/aFkg==} engines: {node: '>= 12.13.0'} + real-require@0.2.0: + resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==} + engines: {node: '>= 12.13.0'} + reflect-metadata@0.2.2: resolution: {integrity: sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==} @@ -6848,12 +7842,31 @@ packages: resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - router@2.2.0: - resolution: {integrity: sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==} - engines: {node: '>= 18'} + ripemd160@2.0.3: + resolution: {integrity: sha512-5Di9UC0+8h1L6ZD2d7awM7E/T4uA1fJRlx6zk/NvdCCVEoAnFqvHmCuNeIKoCeIixBX/q8uM+6ycDvF8woqosA==} + engines: {node: '>= 0.8'} - run-parallel@1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + ripple-address-codec@5.0.0: + resolution: {integrity: sha512-de7osLRH/pt5HX2xw2TRJtbdLLWHu0RXirpQaEeCnWKY5DYHykh3ETSkofvm0aX0LJiV7kwkegJxQkmbO94gWw==} + engines: {node: '>= 16'} + + ripple-binary-codec@2.7.0: + resolution: {integrity: sha512-gEBqan5muVp+q7jgZ6aUniSyN+e4FKRzn9uFAeFSIW7IgvkezP1cUolNtpahQ+jvaSK/33hxZA7wNmn1mc330g==} + engines: {node: '>= 18'} + + ripple-keypairs@2.0.0: + resolution: {integrity: sha512-b5rfL2EZiffmklqZk1W+dvSy97v3V/C7936WxCCgDynaGPp7GE6R2XO7EU9O2LlM/z95rj870IylYnOQs+1Rag==} + engines: {node: '>= 16'} + + router@2.2.0: + resolution: {integrity: sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==} + engines: {node: '>= 18'} + + rpc-websockets@9.3.8: + resolution: {integrity: sha512-7r+fm4tSJmLf9GvZfL1DJ1SJwpagpp6AazqM0FUaeV7CA+7+NYINSk1syWa4tU/6OF2CyBicLtzENGmXRJH6wQ==} + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} rxjs@7.8.1: resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} @@ -6900,10 +7913,19 @@ packages: scroll-into-view-if-needed@3.1.0: resolution: {integrity: sha512-49oNpRjWRvnU8NyGVmUaYG4jtTkNonFZI86MmGRDqBphEK2EXT9gdEUoQPZhuBM8yWHxCWbobltqYO5M4XrUvQ==} + secp256k1@5.0.1: + resolution: {integrity: sha512-lDFs9AAIaWP9UCdtWrotXWWF9t8PWgQDcxqgAnpM9rMqxb3Oaq2J0thzPVSxBwdJgyQtkU/sYtFtbM1RSt/iYA==} + engines: {node: '>=18.0.0'} + semver@6.3.1: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true + semver@7.7.1: + resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==} + engines: {node: '>=10'} + hasBin: true + semver@7.7.2: resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} engines: {node: '>=10'} @@ -6937,6 +7959,9 @@ packages: resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==} engines: {node: '>= 0.4'} + setprototypeof@1.1.1: + resolution: {integrity: sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==} + setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} @@ -6945,6 +7970,9 @@ packages: engines: {node: '>= 0.10'} hasBin: true + sha1@1.1.1: + resolution: {integrity: sha512-dZBS6OrMjtgVkopB1Gmo4RQCDKiZsqcpAQpkV/aaj+FCrCg8r4I4qMkDPQjBgLIxlmu9k4nUbWq6ohXahOneYA==} + sharp@0.34.5: resolution: {integrity: sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} @@ -6992,6 +8020,13 @@ packages: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} + slow-redact@0.3.2: + resolution: {integrity: sha512-MseHyi2+E/hBRqdOi5COy6wZ7j7DxXRz9NkseavNYSvvWC06D8a5cidVZX3tcG5eCW3NIyVU4zT63hw0Q486jw==} + + smart-buffer@4.2.0: + resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} + engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} + socket.io-client@4.8.3: resolution: {integrity: sha512-uP0bpjWrjQmUt5DTHq9RuoCBdFJF10cdX9X+a368j/Ft0wmaVgxlrjvK3kjvgCODOMMOz9lcaRzxmso0bTWZ/g==} engines: {node: '>=10.0.0'} @@ -7000,9 +8035,20 @@ packages: resolution: {integrity: sha512-asJqbVBDsBCJx0pTqw3WfesSY0iRX+2xzWEWzrpcH7L6fLzrhyF8WPI8UaeM4YCuDfpwA/cgsdugMsmtz8EJeg==} engines: {node: '>=10.0.0'} + socks-proxy-agent@8.0.5: + resolution: {integrity: sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==} + engines: {node: '>= 14'} + + socks@2.8.7: + resolution: {integrity: sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==} + engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} + sonic-boom@2.8.0: resolution: {integrity: sha512-kuonw1YOYYNOve5iHdSahXPOK49GqwA+LZhI6Wz/l0rP57iKyXXIHaRagOBHAPmGwJC6od2Z9zgvZ5loSgMlVg==} + sonic-boom@4.2.1: + resolution: {integrity: sha512-w6AxtubXa2wTXAUsZMMWERrsIRAdrK0Sc+FUytWvYAhBJLyuI4llrMIC1DtlNSdI99EI86KZum2MMq3EAZlF9Q==} + sonner@2.0.7: resolution: {integrity: sha512-W6ZN4p58k8aDKA4XPcx2hpIQXBRAgyiWVkYhT7CvK6D3iAu7xjvVyhQHg2/iaKJZ1XVJ4r7XuwGL+WGEK37i9w==} peerDependencies: @@ -7062,6 +8108,10 @@ packages: resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} engines: {node: '>=10'} + statuses@1.5.0: + resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} + engines: {node: '>= 0.6'} + statuses@2.0.2: resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==} engines: {node: '>= 0.8'} @@ -7070,6 +8120,15 @@ packages: resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==} engines: {node: '>= 0.4'} + stream-browserify@3.0.0: + resolution: {integrity: sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==} + + stream-chain@2.2.5: + resolution: {integrity: sha512-1TJmBx6aSWqZ4tx7aTpBDXK0/e2hhcNSTV8+CbFJtDjbb+I1mZ8lHit0Grw9GRT+6JbIrrDd8esncgBi8aBXGA==} + + stream-json@1.9.1: + resolution: {integrity: sha512-uWkjJ+2Nt/LO9Z/JyKZbMusL8Dkh97uUBTv3AJQ74y07lVahLY4eEFsPsE97pxYBwr8nnjMAIch5eqI0gPShyw==} + stream-shift@1.0.3: resolution: {integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==} @@ -7160,6 +8219,9 @@ packages: resolution: {integrity: sha512-ki4hZQfh5rX0QDLLkOCj+h+CVNkqmp/CMf8v8kZpkNVK6jGQooMytqzLZYUVYIZcFZ6yDB70EfD8POcFXiF5oA==} engines: {node: '>=18'} + style-vendorizer@2.2.3: + resolution: {integrity: sha512-/VDRsWvQAgspVy9eATN3z6itKTuyg+jW1q6UoTCQCFRqPDw8bi3E1hXIKnGw5LvXS2AQPuJ7Af4auTLYeBOLEg==} + styled-jsx@5.1.6: resolution: {integrity: sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==} engines: {node: '>= 12.0.0'} @@ -7184,6 +8246,10 @@ packages: resolution: {integrity: sha512-7JpaAoX2NGyoFlI9NBh66BQXGONc+uE+MRS5i2iOBKuS4e+ccgMDjATgZldkah+33DakBxDHiss9kvUcGAO8UQ==} engines: {node: '>=14.0.0'} + superstruct@2.0.2: + resolution: {integrity: sha512-uV+TFRZdXsqXTL2pRvujROjdZQ4RAlBUS5BTh9IGm+jTqQntYThciG/qu57Gs69yjnVUSqdxF9YLmSnpupBW9A==} + engines: {node: '>=14.0.0'} + supertest@7.2.2: resolution: {integrity: sha512-oK8WG9diS3DlhdUkcFn4tkNIiIbBx9lI2ClF8K+b2/m8Eyv47LSawxUzZQSNKUrVb2KsqeTDCcjAAVPYaSLVTA==} engines: {node: '>=14.18.0'} @@ -7277,16 +8343,26 @@ packages: text-decoder@1.2.7: resolution: {integrity: sha512-vlLytXkeP4xvEq2otHeJfSQIRyWxo/oZGEbXrtEEF9Hnmrdly59sUbzZ/QgyWuLYHctCHxFF4tRQZNQ9k60ExQ==} + text-encoding-utf-8@1.0.2: + resolution: {integrity: sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg==} + text-hex@1.0.0: resolution: {integrity: sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==} thread-stream@0.15.2: resolution: {integrity: sha512-UkEhKIg2pD+fjkHQKyJO3yoIvAP3N6RlNFt2dUhcS1FGvCD1cQa1M/PGknCLFIyZdtJOWQjejp7bdNqmN7zwdA==} + thread-stream@3.1.0: + resolution: {integrity: sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A==} + throttle-debounce@5.0.2: resolution: {integrity: sha512-B71/4oyj61iNH0KeCamLuE2rmKuTO5byTOSVwECM5FA7TiAiAW+UqTKZ9ERueC4qvgSttUhdmq1mXC3kJqGX7A==} engines: {node: '>=12.22'} + tiny-secp256k1@1.1.7: + resolution: {integrity: sha512-eb+F6NabSnjbLwNoC+2o5ItbmP1kg7HliWue71JgLegQt6A5mTN8YbvTLCazdlg6e5SV6A+r8OGvZYskdlmhqQ==} + engines: {node: '>=6.0.0'} + tinyexec@1.0.1: resolution: {integrity: sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==} @@ -7312,6 +8388,10 @@ packages: toggle-selection@1.0.6: resolution: {integrity: sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==} + toidentifier@1.0.0: + resolution: {integrity: sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==} + engines: {node: '>=0.6'} + toidentifier@1.0.1: resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} engines: {node: '>=0.6'} @@ -7374,6 +8454,9 @@ packages: typescript: '*' webpack: ^5.0.0 + ts-mixer@6.0.4: + resolution: {integrity: sha512-ufKpbmrugz5Aou4wcr5Wc1UUFWOLhq+Fm6qa6P0w0K5Qw2yhaUoiWszhCVuNQyNwrlGiscHOmqYoAox1PtvgjA==} + ts-node@10.9.2: resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} hasBin: true @@ -7416,9 +8499,15 @@ packages: tw-animate-css@1.4.0: resolution: {integrity: sha512-7bziOlRqH0hJx80h/3mbicLW7o8qLsH5+RaLR2t+OHM3D0JlWGODQKQ4cxbK7WlvmUxpcj6Kgu6EKqjrGFe3QQ==} + tweetnacl-util@0.15.1: + resolution: {integrity: sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==} + tweetnacl@0.14.5: resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==} + tweetnacl@1.0.3: + resolution: {integrity: sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==} + type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} @@ -7462,6 +8551,9 @@ packages: typedarray@0.0.6: resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} + typeforce@1.18.0: + resolution: {integrity: sha512-7uc1O8h1M1g0rArakJdf0uLRSSgFcYexrVoKo+bzJd32gd4gDy2L/Z+8/FjPnU9ydY3pEnVPtr9FyscYY60K1g==} + typescript-eslint@8.58.1: resolution: {integrity: sha512-gf6/oHChByg9HJvhMO1iBexJh12AqqTfnuxscMDOVqfJW3htsdRJI/GfPpHTTcyeB8cSTUY2JcZmVgoyPqcrDg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -7474,10 +8566,17 @@ packages: engines: {node: '>=14.17'} hasBin: true + ua-is-frozen@0.1.2: + resolution: {integrity: sha512-RwKDW2p3iyWn4UbaxpP2+VxwqXh0jpvdxsYpZ5j/MLLiQOfbsV5shpgQiw93+KMYQPcteeMQ289MaAFzs3G9pw==} + ua-parser-js@1.0.41: resolution: {integrity: sha512-LbBDqdIC5s8iROCUjMbW1f5dJQTEFB1+KO9ogbvlb3nm9n4YHa5p4KTvFPWvh2Hs8gZMBuiB1/8+pdfe/tDPug==} hasBin: true + ua-parser-js@2.0.9: + resolution: {integrity: sha512-OsqGhxyo/wGdLSXMSJxuMGN6H4gDnKz6Fb3IBm4bxZFMnyy0sdf6MN96Ie8tC6z/btdO+Bsy8guxlvLdwT076w==} + hasBin: true + ufo@1.6.3: resolution: {integrity: sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==} @@ -7494,9 +8593,16 @@ packages: resolution: {integrity: sha512-rvKSBiC5zqCCiDZ9kAOszZcDvdAHwwIKJG33Ykj43OKcWsnmcBRL09YTU4nOeHZ8Y2a7l1MgTd08SBe9A8Qj6A==} engines: {node: '>=18'} + uint8array-tools@0.0.8: + resolution: {integrity: sha512-xS6+s8e0Xbx++5/0L+yyexukU7pz//Yg6IHg3BKhXotg1JcYtgxVcUctQ0HxLByiJzpAkNFawz1Nz5Xadzo82g==} + engines: {node: '>=14.0.0'} + uint8arrays@3.1.0: resolution: {integrity: sha512-ei5rfKtoRO8OyOIor2Rz5fhzjThwIHJZ3uyDPnDHTXbP0aMQ1RN/6AI5B5d9dBxJOU+BvOAk7ZQ1xphsX8Lrog==} + uint8arrays@3.1.1: + resolution: {integrity: sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==} + unbox-primitive@1.1.0: resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} engines: {node: '>= 0.4'} @@ -7616,6 +8722,10 @@ packages: urijs@1.19.11: resolution: {integrity: sha512-HXgFDgDommxn5/bIv0cnQZsPhHDA90NPHD6+c/v21U5+Sx5hoP8+dP9IZXBU1gIfvdRfhG8cel9QNPeionfcCQ==} + usb@2.17.0: + resolution: {integrity: sha512-UuFgrlglgDn5ll6d5l7kl3nDb2Yx43qLUGcDq+7UNLZLtbNug0HZBb2Xodhgx2JZB1LqvU+dOGqLEeYUeZqsHg==} + engines: {node: '>=12.22.0 <13.0 || >=14.17.0'} + use-callback-ref@1.3.3: resolution: {integrity: sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==} engines: {node: '>=10'} @@ -7650,16 +8760,27 @@ packages: resolution: {integrity: sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==} engines: {node: '>=6.14.2'} + utf-8-validate@6.0.6: + resolution: {integrity: sha512-q3l3P9UtEEiAHcsgsqTgf9PPjctrDWoIXW3NpOHFdRDbLvu4DLIcxHangJ4RLrWkBcKjmcs/6NkerI8T/rE4LA==} + engines: {node: '>=6.14.2'} + util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} util@0.12.5: resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} + uuid4@2.0.3: + resolution: {integrity: sha512-CTpAkEVXMNJl2ojgtpLXHgz23dh8z81u6/HEPiQFOvBc/c2pde6TVHmH4uwY0d/GLF3tb7+VDAj4+2eJaQSdZQ==} + uuid@10.0.0: resolution: {integrity: sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==} hasBin: true + uuid@11.1.0: + resolution: {integrity: sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==} + hasBin: true + uuid@13.0.0: resolution: {integrity: sha512-XQegIaBTVUjSHliKqcnFqYypAd4S+WCYt5NIeRs6w/UAry7z8Y9j5ZwRRL4kzq9U3sD6v+85er9FvkEaBpji2w==} hasBin: true @@ -7695,12 +8816,27 @@ packages: react: optional: true + valtio@2.1.7: + resolution: {integrity: sha512-DwJhCDpujuQuKdJ2H84VbTjEJJteaSmqsuUltsfbfdbotVfNeTE4K/qc/Wi57I9x8/2ed4JNdjEna7O6PfavRg==} + engines: {node: '>=12.20.0'} + peerDependencies: + '@types/react': '>=18.0.0' + react: '>=18.0.0' + peerDependenciesMeta: + '@types/react': + optional: true + react: + optional: true + varint@5.0.0: resolution: {integrity: sha512-gC13b/bWrqQoKY2EmROCZ+AR0jitc6DnDGaQ6Ls9QpKmuSgJB1eQ7H3KETtQm7qSdMWMKCmsshyCmUwMLh3OAA==} varint@5.0.2: resolution: {integrity: sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==} + varuint-bitcoin@2.0.0: + resolution: {integrity: sha512-6QZbU/rHO2ZQYpWFDALCDSRsXbAs1VOEmXAxtbtjLtKuMJ/FQ8YbhfxlaiKv5nklci0M6lZtlZyxo9Q+qNnyog==} + vary@1.1.2: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} @@ -7793,6 +8929,9 @@ packages: engines: {node: '>= 8'} hasBin: true + wif@5.0.0: + resolution: {integrity: sha512-iFzrC/9ne740qFbNjTZ2FciSRJlHIXoxqk/Y5EnE08QOXu1WjJyCCswwDTYbohAOEnlCtLaAAQBhyaLRFh2hMA==} + winston-transport@4.9.0: resolution: {integrity: sha512-8drMJ4rkgaPo1Me4zD/3WLfI/zPdA9o2IipKODunnGDcuqbHwjsbB79ylv04LCGGzU0xQ6vTznOMpQGaLhhm6A==} engines: {node: '>= 12.0.0'} @@ -7891,6 +9030,10 @@ packages: resolution: {integrity: sha512-TEU+nJVUUnA4CYJFLvK5X9AOeH4KvDvhIfm0vV1GaQRtchnG0hgK5p8hw/xjv8cunWYCsiPCSDzObPyhEwq3KQ==} engines: {node: '>=0.4.0'} + xrpl@4.4.3: + resolution: {integrity: sha512-vi2OjuNkiaP8nv1j+nqHp8GZwwEjO6Y8+j/OuVMg6M4LwXEwyHdIj33dlg7cyY1Lw5+jb9HqFOQvABhaywVbTQ==} + engines: {node: '>=18.0.0'} + xtend@4.0.2: resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} engines: {node: '>=0.4'} @@ -8024,6 +9167,8 @@ snapshots: '@adraffy/ens-normalize@1.11.1': {} + '@albedo-link/intent@0.12.0': {} + '@alloc/quick-lru@5.2.0': {} '@angular-devkit/core@19.2.23(chokidar@4.0.3)': @@ -8084,24 +9229,24 @@ snapshots: dependencies: '@ant-design/fast-color': 2.0.6 - '@ant-design/cssinjs-utils@1.1.3(react-dom@19.2.5(react@19.1.0))(react@19.1.0)': + '@ant-design/cssinjs-utils@1.1.3(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - '@ant-design/cssinjs': 1.24.0(react-dom@19.2.5(react@19.1.0))(react@19.1.0) + '@ant-design/cssinjs': 1.24.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@babel/runtime': 7.28.4 - rc-util: 5.44.4(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - react: 19.1.0 - react-dom: 19.2.5(react@19.1.0) + rc-util: 5.44.4(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) - '@ant-design/cssinjs@1.24.0(react-dom@19.2.5(react@19.1.0))(react@19.1.0)': + '@ant-design/cssinjs@1.24.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: '@babel/runtime': 7.28.4 '@emotion/hash': 0.8.0 '@emotion/unitless': 0.7.5 classnames: 2.5.1 csstype: 3.2.3 - rc-util: 5.44.4(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - react: 19.1.0 - react-dom: 19.2.5(react@19.1.0) + rc-util: 5.44.4(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) stylis: 4.3.6 '@ant-design/fast-color@2.0.6': @@ -8110,30 +9255,30 @@ snapshots: '@ant-design/icons-svg@4.4.2': {} - '@ant-design/icons@5.6.1(react-dom@19.2.5(react@19.1.0))(react@19.1.0)': + '@ant-design/icons@5.6.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: '@ant-design/colors': 7.2.1 '@ant-design/icons-svg': 4.4.2 '@babel/runtime': 7.28.4 classnames: 2.5.1 - rc-util: 5.44.4(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - react: 19.1.0 - react-dom: 19.2.5(react@19.1.0) + rc-util: 5.44.4(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) - '@ant-design/nextjs-registry@1.3.0(@ant-design/cssinjs@1.24.0(react-dom@19.2.5(react@19.1.0))(react@19.1.0))(antd@5.27.3(date-fns@4.1.0)(moment@2.30.1)(react-dom@19.2.5(react@19.1.0))(react@19.1.0))(next@15.5.15(@babel/core@7.29.0)(react-dom@19.2.5(react@19.1.0))(react@19.1.0))(react-dom@19.2.5(react@19.1.0))(react@19.1.0)': + '@ant-design/nextjs-registry@1.3.0(@ant-design/cssinjs@1.24.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(antd@5.27.3(date-fns@4.1.0)(moment@2.30.1)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(next@15.5.15(@babel/core@7.29.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - '@ant-design/cssinjs': 1.24.0(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - antd: 5.27.3(date-fns@4.1.0)(moment@2.30.1)(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - next: 15.5.15(@babel/core@7.29.0)(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - react: 19.1.0 - react-dom: 19.2.5(react@19.1.0) + '@ant-design/cssinjs': 1.24.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + antd: 5.27.3(date-fns@4.1.0)(moment@2.30.1)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + next: 15.5.15(@babel/core@7.29.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) - '@ant-design/react-slick@1.1.2(react@19.1.0)': + '@ant-design/react-slick@1.1.2(react@19.2.5)': dependencies: '@babel/runtime': 7.28.4 classnames: 2.5.1 json2mq: 0.2.0 - react: 19.1.0 + react: 19.2.5 resize-observer-polyfill: 1.5.1 throttle-debounce: 5.0.2 @@ -8350,17 +9495,17 @@ snapshots: '@balena/dockerignore@1.0.2': {} - '@base-org/account@2.4.0(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.1.0))(utf-8-validate@5.0.10)(zod@4.3.6)': + '@base-org/account@2.4.0(@types/react@19.2.14)(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(react@19.2.5)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.5))(utf-8-validate@6.0.6)(zod@3.25.76)': dependencies: - '@coinbase/cdp-sdk': 1.47.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@coinbase/cdp-sdk': 1.47.0(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(utf-8-validate@6.0.6) '@noble/hashes': 1.4.0 clsx: 1.2.1 eventemitter3: 5.0.1 idb-keyval: 6.2.1 - ox: 0.6.9(typescript@5.9.3)(zod@4.3.6) + ox: 0.6.9(typescript@5.9.3)(zod@3.25.76) preact: 10.24.2 - viem: 2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) - zustand: 5.0.3(@types/react@19.2.14)(react@19.1.0)(use-sync-external-store@1.4.0(react@19.1.0)) + viem: 2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76) + zustand: 5.0.3(@types/react@19.2.14)(react@19.2.5)(use-sync-external-store@1.4.0(react@19.2.5)) transitivePeerDependencies: - '@types/react' - bufferutil @@ -8375,11 +9520,11 @@ snapshots: '@bcoe/v8-coverage@0.2.3': {} - '@biconomy/account@4.5.7(typescript@5.9.3)(viem@2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6))': + '@biconomy/account@4.5.7(typescript@5.9.3)(viem@2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.3.6))': dependencies: merkletreejs: 0.4.1 typescript: 5.9.3 - viem: 2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + viem: 2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.3.6) '@borewit/text-codec@0.2.2': {} @@ -8388,18 +9533,18 @@ snapshots: hashery: 1.5.1 keyv: 5.6.0 - '@coinbase/cdp-sdk@1.47.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)': + '@coinbase/cdp-sdk@1.47.0(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(utf-8-validate@6.0.6)': dependencies: - '@solana-program/system': 0.10.0(@solana/kit@5.5.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)) - '@solana-program/token': 0.9.0(@solana/kit@5.5.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)) - '@solana/kit': 5.5.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@solana-program/system': 0.10.0(@solana/kit@5.5.1(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(utf-8-validate@6.0.6)) + '@solana-program/token': 0.9.0(@solana/kit@5.5.1(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(utf-8-validate@6.0.6)) + '@solana/kit': 5.5.1(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(utf-8-validate@6.0.6) abitype: 1.0.6(typescript@5.9.3)(zod@3.25.76) axios: 1.15.0 axios-retry: 4.5.0(axios@1.15.0) jose: 6.2.2 md5: 2.3.0 uncrypto: 0.1.3 - viem: 2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + viem: 2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76) zod: 3.25.76 transitivePeerDependencies: - bufferutil @@ -8422,16 +9567,16 @@ snapshots: transitivePeerDependencies: - supports-color - '@coinbase/wallet-sdk@4.3.6(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.1.0))(utf-8-validate@5.0.10)(zod@4.3.6)': + '@coinbase/wallet-sdk@4.3.6(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.5))(utf-8-validate@6.0.6)(zod@3.25.76)': dependencies: '@noble/hashes': 1.4.0 clsx: 1.2.1 eventemitter3: 5.0.1 idb-keyval: 6.2.1 - ox: 0.6.9(typescript@5.9.3)(zod@4.3.6) + ox: 0.6.9(typescript@5.9.3)(zod@3.25.76) preact: 10.24.2 - viem: 2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) - zustand: 5.0.3(@types/react@19.2.14)(react@19.1.0)(use-sync-external-store@1.4.0(react@19.1.0)) + viem: 2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76) + zustand: 5.0.3(@types/react@19.2.14)(react@19.2.5)(use-sync-external-store@1.4.0(react@19.2.5)) transitivePeerDependencies: - '@types/react' - bufferutil @@ -8447,6 +9592,76 @@ snapshots: '@colors/colors@1.6.0': {} + '@creit.tech/stellar-wallets-kit@2.1.0(@solana/sysvars@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3))(@stellar/stellar-sdk@15.0.1)(@trezor/connect@9.7.2(@solana/sysvars@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3))(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(tslib@2.8.1)(typescript@5.9.3)(utf-8-validate@6.0.6)(ws@8.18.0(bufferutil@4.1.0)(utf-8-validate@6.0.6)))(@types/react@19.2.14)(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(near-api-js@5.1.1)(react@19.2.5)(tslib@2.8.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.5))(utf-8-validate@6.0.6)(ws@8.18.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))(zod@3.25.76)': + dependencies: + '@albedo-link/intent': 0.12.0 + '@creit.tech/xbull-wallet-connect': 0.4.0 + '@hot-wallet/sdk': 1.0.11(bufferutil@4.1.0)(near-api-js@5.1.1)(typescript@5.9.3)(utf-8-validate@6.0.6) + '@ledgerhq/hw-app-str': 7.2.8 + '@ledgerhq/hw-transport': 6.31.12 + '@ledgerhq/hw-transport-webusb': 6.29.12 + '@lobstrco/signer-extension-api': 2.0.0 + '@preact/signals': 2.9.0(preact@10.29.1) + '@reown/appkit': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(react@19.2.5)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.5))(utf-8-validate@6.0.6)(zod@3.25.76) + '@stellar/freighter-api': 6.0.0 + '@stellar/stellar-base': 14.0.1 + '@trezor/connect-plugin-stellar': 9.2.6(@stellar/stellar-sdk@15.0.1)(@trezor/connect@9.7.2(@solana/sysvars@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3))(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(tslib@2.8.1)(typescript@5.9.3)(utf-8-validate@6.0.6)(ws@8.18.0(bufferutil@4.1.0)(utf-8-validate@6.0.6)))(tslib@2.8.1) + '@trezor/connect-web': 9.7.2(@solana/sysvars@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3))(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(tslib@2.8.1)(typescript@5.9.3)(utf-8-validate@6.0.6)(ws@8.18.0(bufferutil@4.1.0)(utf-8-validate@6.0.6)) + '@twind/core': 1.1.3(typescript@5.9.3) + '@twind/preset-autoprefix': 1.0.7(@twind/core@1.1.3(typescript@5.9.3))(typescript@5.9.3) + '@twind/preset-tailwind': 1.1.4(@twind/core@1.1.3(typescript@5.9.3))(typescript@5.9.3) + '@walletconnect/sign-client': 2.23.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76) + '@walletconnect/types': 2.23.9 + htm: 3.1.1 + preact: 10.29.1 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@solana/sysvars' + - '@stellar/stellar-sdk' + - '@trezor/connect' + - '@types/react' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - debug + - encoding + - expo-constants + - expo-localization + - fastestsmallesttextencoderdecoder + - immer + - ioredis + - near-api-js + - react + - react-native + - supports-color + - tslib + - typescript + - uploadthing + - use-sync-external-store + - utf-8-validate + - ws + - zod + + '@creit.tech/xbull-wallet-connect@0.4.0': + dependencies: + rxjs: 7.8.2 + tweetnacl: 1.0.3 + tweetnacl-util: 0.15.1 + '@cspotcode/source-map-support@0.8.1': dependencies: '@jridgewell/trace-mapping': 0.3.9 @@ -8488,6 +9703,10 @@ snapshots: '@emotion/unitless@0.7.5': {} + '@emurgo/cardano-serialization-lib-browser@13.2.1': {} + + '@emurgo/cardano-serialization-lib-nodejs@13.2.0': {} + '@esbuild/aix-ppc64@0.27.7': optional: true @@ -8619,13 +9838,28 @@ snapshots: '@eslint/core': 0.17.0 levn: 0.4.1 + '@ethereumjs/common@10.1.1': + dependencies: + '@ethereumjs/util': 10.1.1 + eventemitter3: 5.0.4 + '@ethereumjs/common@3.2.0': dependencies: '@ethereumjs/util': 8.1.0 crc-32: 1.2.2 + '@ethereumjs/rlp@10.1.1': {} + '@ethereumjs/rlp@4.0.1': {} + '@ethereumjs/tx@10.1.1': + dependencies: + '@ethereumjs/common': 10.1.1 + '@ethereumjs/rlp': 10.1.1 + '@ethereumjs/util': 10.1.1 + '@noble/curves': 2.0.1 + '@noble/hashes': 2.0.1 + '@ethereumjs/tx@4.2.0': dependencies: '@ethereumjs/common': 3.2.0 @@ -8633,17 +9867,28 @@ snapshots: '@ethereumjs/util': 8.1.0 ethereum-cryptography: 2.2.1 + '@ethereumjs/util@10.1.1': + dependencies: + '@ethereumjs/rlp': 10.1.1 + '@noble/curves': 2.0.1 + '@noble/hashes': 2.0.1 + '@ethereumjs/util@8.1.0': dependencies: '@ethereumjs/rlp': 4.0.1 ethereum-cryptography: 2.2.1 micro-ftch: 0.3.1 - '@gemini-wallet/core@0.3.2(viem@2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6))': + '@fivebinaries/coin-selection@3.0.0': + dependencies: + '@emurgo/cardano-serialization-lib-browser': 13.2.1 + '@emurgo/cardano-serialization-lib-nodejs': 13.2.0 + + '@gemini-wallet/core@0.3.2(viem@2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76))': dependencies: '@metamask/rpc-errors': 7.0.2 eventemitter3: 5.0.1 - viem: 2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + viem: 2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76) transitivePeerDependencies: - supports-color @@ -8666,10 +9911,28 @@ snapshots: protobufjs: 7.5.4 yargs: 17.7.2 - '@gsap/react@2.1.2(gsap@3.14.2)(react@19.1.0)': + '@gsap/react@2.1.2(gsap@3.14.2)(react@19.2.5)': dependencies: gsap: 3.14.2 - react: 19.1.0 + react: 19.2.5 + + '@hot-wallet/sdk@1.0.11(bufferutil@4.1.0)(near-api-js@5.1.1)(typescript@5.9.3)(utf-8-validate@6.0.6)': + dependencies: + '@near-js/crypto': 1.4.2 + '@near-js/utils': 1.1.0 + '@near-wallet-selector/core': 8.10.2(near-api-js@5.1.1) + '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)) + '@solana/web3.js': 1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6) + borsh: 2.0.0 + js-sha256: 0.11.1 + sha1: 1.1.1 + uuid4: 2.0.3 + transitivePeerDependencies: + - bufferutil + - encoding + - near-api-js + - typescript + - utf-8-validate '@humanfs/core@0.19.1': {} @@ -9170,12 +10433,50 @@ snapshots: transitivePeerDependencies: - supports-color + '@ledgerhq/devices@8.6.1': + dependencies: + '@ledgerhq/errors': 6.32.0 + '@ledgerhq/logs': 6.16.0 + rxjs: 7.8.2 + semver: 7.7.4 + + '@ledgerhq/errors@6.32.0': {} + + '@ledgerhq/hw-app-str@7.2.8': + dependencies: + '@ledgerhq/errors': 6.32.0 + '@ledgerhq/hw-transport': 6.31.12 + bip32-path: 0.4.2 + + '@ledgerhq/hw-transport-webusb@6.29.12': + dependencies: + '@ledgerhq/devices': 8.6.1 + '@ledgerhq/errors': 6.32.0 + '@ledgerhq/hw-transport': 6.31.12 + '@ledgerhq/logs': 6.16.0 + + '@ledgerhq/hw-transport@6.31.12': + dependencies: + '@ledgerhq/devices': 8.6.1 + '@ledgerhq/errors': 6.32.0 + '@ledgerhq/logs': 6.16.0 + events: 3.3.0 + + '@ledgerhq/logs@6.16.0': {} + '@lit-labs/ssr-dom-shim@1.5.1': {} + '@lit/react@1.0.8(@types/react@19.2.14)': + dependencies: + '@types/react': 19.2.14 + optional: true + '@lit/reactive-element@2.1.2': dependencies: '@lit-labs/ssr-dom-shim': 1.5.1 + '@lobstrco/signer-extension-api@2.0.0': {} + '@lukeed/csprng@1.1.0': {} '@metamask/eth-json-rpc-provider@1.0.1': @@ -9259,7 +10560,7 @@ snapshots: dependencies: openapi-fetch: 0.13.8 - '@metamask/sdk-communication-layer@0.33.1(cross-fetch@4.1.0)(eciesjs@0.4.18)(eventemitter2@6.4.9)(readable-stream@3.6.2)(socket.io-client@4.8.3(bufferutil@4.1.0)(utf-8-validate@5.0.10))': + '@metamask/sdk-communication-layer@0.33.1(cross-fetch@4.1.0)(eciesjs@0.4.18)(eventemitter2@6.4.9)(readable-stream@3.6.2)(socket.io-client@4.8.3(bufferutil@4.1.0)(utf-8-validate@6.0.6))': dependencies: '@metamask/sdk-analytics': 0.0.5 bufferutil: 4.1.0 @@ -9269,7 +10570,7 @@ snapshots: eciesjs: 0.4.18 eventemitter2: 6.4.9 readable-stream: 3.6.2 - socket.io-client: 4.8.3(bufferutil@4.1.0)(utf-8-validate@5.0.10) + socket.io-client: 4.8.3(bufferutil@4.1.0)(utf-8-validate@6.0.6) utf-8-validate: 5.0.10 uuid: 8.3.2 transitivePeerDependencies: @@ -9279,13 +10580,13 @@ snapshots: dependencies: '@paulmillr/qr': 0.2.1 - '@metamask/sdk@0.33.1(bufferutil@4.1.0)(utf-8-validate@5.0.10)': + '@metamask/sdk@0.33.1(bufferutil@4.1.0)(utf-8-validate@6.0.6)': dependencies: '@babel/runtime': 7.29.2 '@metamask/onboarding': 1.0.1 '@metamask/providers': 16.1.0 '@metamask/sdk-analytics': 0.0.5 - '@metamask/sdk-communication-layer': 0.33.1(cross-fetch@4.1.0)(eciesjs@0.4.18)(eventemitter2@6.4.9)(readable-stream@3.6.2)(socket.io-client@4.8.3(bufferutil@4.1.0)(utf-8-validate@5.0.10)) + '@metamask/sdk-communication-layer': 0.33.1(cross-fetch@4.1.0)(eciesjs@0.4.18)(eventemitter2@6.4.9)(readable-stream@3.6.2)(socket.io-client@4.8.3(bufferutil@4.1.0)(utf-8-validate@6.0.6)) '@metamask/sdk-install-modal-web': 0.32.1 '@paulmillr/qr': 0.2.1 bowser: 2.14.1 @@ -9297,7 +10598,7 @@ snapshots: obj-multiplex: 1.0.0 pump: 3.0.4 readable-stream: 3.6.2 - socket.io-client: 4.8.3(bufferutil@4.1.0)(utf-8-validate@5.0.10) + socket.io-client: 4.8.3(bufferutil@4.1.0)(utf-8-validate@6.0.6) tslib: 2.8.1 util: 0.12.5 uuid: 8.3.2 @@ -9365,6 +10666,12 @@ snapshots: '@microsoft/tsdoc@0.16.0': {} + '@mobily/ts-belt@3.13.1': {} + + '@msgpack/msgpack@3.1.2': {} + + '@msgpack/msgpack@3.1.3': {} + '@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3': optional: true @@ -9390,6 +10697,105 @@ snapshots: '@tybys/wasm-util': 0.10.0 optional: true + '@near-js/accounts@1.4.1': + dependencies: + '@near-js/crypto': 1.4.2 + '@near-js/providers': 1.0.3 + '@near-js/signers': 0.2.2 + '@near-js/transactions': 1.3.3 + '@near-js/types': 0.3.1 + '@near-js/utils': 1.1.0 + '@noble/hashes': 1.7.1 + borsh: 1.0.0 + depd: 2.0.0 + is-my-json-valid: 2.20.6 + lru_map: 0.4.1 + near-abi: 0.2.0 + transitivePeerDependencies: + - encoding + + '@near-js/crypto@1.4.2': + dependencies: + '@near-js/types': 0.3.1 + '@near-js/utils': 1.1.0 + '@noble/curves': 1.8.1 + borsh: 1.0.0 + randombytes: 2.1.0 + secp256k1: 5.0.1 + + '@near-js/keystores-browser@0.2.2': + dependencies: + '@near-js/crypto': 1.4.2 + '@near-js/keystores': 0.2.2 + + '@near-js/keystores-node@0.1.2': + dependencies: + '@near-js/crypto': 1.4.2 + '@near-js/keystores': 0.2.2 + + '@near-js/keystores@0.2.2': + dependencies: + '@near-js/crypto': 1.4.2 + '@near-js/types': 0.3.1 + + '@near-js/providers@1.0.3': + dependencies: + '@near-js/transactions': 1.3.3 + '@near-js/types': 0.3.1 + '@near-js/utils': 1.1.0 + borsh: 1.0.0 + exponential-backoff: 3.1.3 + optionalDependencies: + node-fetch: 2.6.7 + transitivePeerDependencies: + - encoding + + '@near-js/signers@0.2.2': + dependencies: + '@near-js/crypto': 1.4.2 + '@near-js/keystores': 0.2.2 + '@noble/hashes': 1.3.3 + + '@near-js/transactions@1.3.3': + dependencies: + '@near-js/crypto': 1.4.2 + '@near-js/signers': 0.2.2 + '@near-js/types': 0.3.1 + '@near-js/utils': 1.1.0 + '@noble/hashes': 1.7.1 + borsh: 1.0.0 + + '@near-js/types@0.3.1': {} + + '@near-js/utils@1.1.0': + dependencies: + '@near-js/types': 0.3.1 + '@scure/base': 1.2.6 + depd: 2.0.0 + mustache: 4.0.0 + + '@near-js/wallet-account@1.3.3': + dependencies: + '@near-js/accounts': 1.4.1 + '@near-js/crypto': 1.4.2 + '@near-js/keystores': 0.2.2 + '@near-js/providers': 1.0.3 + '@near-js/signers': 0.2.2 + '@near-js/transactions': 1.3.3 + '@near-js/types': 0.3.1 + '@near-js/utils': 1.1.0 + borsh: 1.0.0 + transitivePeerDependencies: + - encoding + + '@near-wallet-selector/core@8.10.2(near-api-js@5.1.1)': + dependencies: + borsh: 1.0.0 + events: 3.3.0 + js-sha256: 0.9.0 + near-api-js: 5.1.1 + rxjs: 7.8.1 + '@nestjs/cache-manager@3.1.0(@nestjs/common@11.1.18(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.18)(cache-manager@7.2.8)(keyv@5.6.0)(rxjs@7.8.2)': dependencies: '@nestjs/common': 11.1.18(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2) @@ -9591,6 +10997,8 @@ snapshots: '@noble/hashes@1.3.2': {} + '@noble/hashes@1.3.3': {} + '@noble/hashes@1.4.0': {} '@noble/hashes@1.7.0': {} @@ -9703,11 +11111,22 @@ snapshots: '@paulmillr/qr@0.2.1': {} + '@phosphor-icons/webcomponents@2.1.5': + dependencies: + lit: 3.3.0 + '@pkgjs/parseargs@0.11.0': optional: true '@pkgr/core@0.2.9': {} + '@preact/signals-core@1.14.1': {} + + '@preact/signals@2.9.0(preact@10.29.1)': + dependencies: + '@preact/signals-core': 1.14.1 + preact: 10.29.1 + '@prisma/client@6.16.1(prisma@6.16.1(typescript@5.9.3))(typescript@5.9.3)': optionalDependencies: prisma: 6.16.1(typescript@5.9.3) @@ -9766,26 +11185,26 @@ snapshots: '@protobufjs/utf8@1.1.0': {} - '@rainbow-me/rainbowkit-siwe-next-auth@0.5.0(@rainbow-me/rainbowkit@2.2.10(@tanstack/react-query@5.98.0(react@19.1.0))(@types/react@19.2.14)(react-dom@19.2.5(react@19.1.0))(react@19.1.0)(typescript@5.9.3)(viem@2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6))(wagmi@2.19.5(@tanstack/query-core@5.98.0)(@tanstack/react-query@5.98.0(react@19.1.0))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6))(zod@4.3.6)))(next-auth@4.24.11(next@15.5.15(@babel/core@7.29.0)(react-dom@19.2.5(react@19.1.0))(react@19.1.0))(react-dom@19.2.5(react@19.1.0))(react@19.1.0))(react@19.1.0)': + '@rainbow-me/rainbowkit-siwe-next-auth@0.5.0(@rainbow-me/rainbowkit@2.2.10(@tanstack/react-query@5.98.0(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(typescript@5.9.3)(viem@2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.98.0)(@tanstack/react-query@5.98.0(react@19.2.5))(@types/react@19.2.14)(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(viem@2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76))(zod@3.25.76)))(next-auth@4.24.11(next@15.5.15(@babel/core@7.29.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react@19.2.5)': dependencies: - '@rainbow-me/rainbowkit': 2.2.10(@tanstack/react-query@5.98.0(react@19.1.0))(@types/react@19.2.14)(react-dom@19.2.5(react@19.1.0))(react@19.1.0)(typescript@5.9.3)(viem@2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6))(wagmi@2.19.5(@tanstack/query-core@5.98.0)(@tanstack/react-query@5.98.0(react@19.1.0))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6))(zod@4.3.6)) - next-auth: 4.24.11(next@15.5.15(@babel/core@7.29.0)(react-dom@19.2.5(react@19.1.0))(react@19.1.0))(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - react: 19.1.0 + '@rainbow-me/rainbowkit': 2.2.10(@tanstack/react-query@5.98.0(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(typescript@5.9.3)(viem@2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.98.0)(@tanstack/react-query@5.98.0(react@19.2.5))(@types/react@19.2.14)(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(viem@2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76))(zod@3.25.76)) + next-auth: 4.24.11(next@15.5.15(@babel/core@7.29.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 - '@rainbow-me/rainbowkit@2.2.10(@tanstack/react-query@5.98.0(react@19.1.0))(@types/react@19.2.14)(react-dom@19.2.5(react@19.1.0))(react@19.1.0)(typescript@5.9.3)(viem@2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6))(wagmi@2.19.5(@tanstack/query-core@5.98.0)(@tanstack/react-query@5.98.0(react@19.1.0))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6))(zod@4.3.6))': + '@rainbow-me/rainbowkit@2.2.10(@tanstack/react-query@5.98.0(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(typescript@5.9.3)(viem@2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.98.0)(@tanstack/react-query@5.98.0(react@19.2.5))(@types/react@19.2.14)(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(viem@2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76))(zod@3.25.76))': dependencies: - '@tanstack/react-query': 5.98.0(react@19.1.0) + '@tanstack/react-query': 5.98.0(react@19.2.5) '@vanilla-extract/css': 1.17.3 '@vanilla-extract/dynamic': 2.1.4 '@vanilla-extract/sprinkles': 1.6.4(@vanilla-extract/css@1.17.3) clsx: 2.1.1 - cuer: 0.0.3(react-dom@19.2.5(react@19.1.0))(react@19.1.0)(typescript@5.9.3) - react: 19.1.0 - react-dom: 19.2.5(react@19.1.0) - react-remove-scroll: 2.6.2(@types/react@19.2.14)(react@19.1.0) + cuer: 0.0.3(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(typescript@5.9.3) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) + react-remove-scroll: 2.6.2(@types/react@19.2.14)(react@19.2.5) ua-parser-js: 1.0.41 - viem: 2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) - wagmi: 2.19.5(@tanstack/query-core@5.98.0)(@tanstack/react-query@5.98.0(react@19.1.0))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6))(zod@4.3.6) + viem: 2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76) + wagmi: 2.19.5(@tanstack/query-core@5.98.0)(@tanstack/react-query@5.98.0(react@19.2.5))(@types/react@19.2.14)(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(viem@2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76))(zod@3.25.76) transitivePeerDependencies: - '@types/react' - babel-plugin-macros @@ -9795,99 +11214,121 @@ snapshots: dependencies: '@babel/runtime': 7.28.4 - '@rc-component/color-picker@2.0.1(react-dom@19.2.5(react@19.1.0))(react@19.1.0)': + '@rc-component/color-picker@2.0.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: '@ant-design/fast-color': 2.0.6 '@babel/runtime': 7.28.4 classnames: 2.5.1 - rc-util: 5.44.4(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - react: 19.1.0 - react-dom: 19.2.5(react@19.1.0) + rc-util: 5.44.4(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) - '@rc-component/context@1.4.0(react-dom@19.2.5(react@19.1.0))(react@19.1.0)': + '@rc-component/context@1.4.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: '@babel/runtime': 7.28.4 - rc-util: 5.44.4(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - react: 19.1.0 - react-dom: 19.2.5(react@19.1.0) + rc-util: 5.44.4(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) '@rc-component/mini-decimal@1.1.0': dependencies: '@babel/runtime': 7.28.4 - '@rc-component/mutate-observer@1.1.0(react-dom@19.2.5(react@19.1.0))(react@19.1.0)': + '@rc-component/mutate-observer@1.1.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: '@babel/runtime': 7.28.4 classnames: 2.5.1 - rc-util: 5.44.4(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - react: 19.1.0 - react-dom: 19.2.5(react@19.1.0) + rc-util: 5.44.4(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) - '@rc-component/portal@1.1.2(react-dom@19.2.5(react@19.1.0))(react@19.1.0)': + '@rc-component/portal@1.1.2(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: '@babel/runtime': 7.28.4 classnames: 2.5.1 - rc-util: 5.44.4(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - react: 19.1.0 - react-dom: 19.2.5(react@19.1.0) + rc-util: 5.44.4(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) - '@rc-component/qrcode@1.0.1(react-dom@19.2.5(react@19.1.0))(react@19.1.0)': + '@rc-component/qrcode@1.0.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: '@babel/runtime': 7.28.4 classnames: 2.5.1 - react: 19.1.0 - react-dom: 19.2.5(react@19.1.0) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) - '@rc-component/tour@1.15.1(react-dom@19.2.5(react@19.1.0))(react@19.1.0)': + '@rc-component/tour@1.15.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: '@babel/runtime': 7.28.4 - '@rc-component/portal': 1.1.2(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - '@rc-component/trigger': 2.3.0(react-dom@19.2.5(react@19.1.0))(react@19.1.0) + '@rc-component/portal': 1.1.2(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@rc-component/trigger': 2.3.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) classnames: 2.5.1 - rc-util: 5.44.4(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - react: 19.1.0 - react-dom: 19.2.5(react@19.1.0) + rc-util: 5.44.4(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) - '@rc-component/trigger@2.3.0(react-dom@19.2.5(react@19.1.0))(react@19.1.0)': + '@rc-component/trigger@2.3.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: '@babel/runtime': 7.28.4 - '@rc-component/portal': 1.1.2(react-dom@19.2.5(react@19.1.0))(react@19.1.0) + '@rc-component/portal': 1.1.2(react-dom@19.2.5(react@19.2.5))(react@19.2.5) classnames: 2.5.1 - rc-motion: 2.9.5(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - rc-resize-observer: 1.4.3(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - rc-util: 5.44.4(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - react: 19.1.0 - react-dom: 19.2.5(react@19.1.0) + rc-motion: 2.9.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + rc-resize-observer: 1.4.3(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + rc-util: 5.44.4(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) + + '@reown/appkit-common@1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.22.4)': + dependencies: + big.js: 6.2.2 + dayjs: 1.11.13 + viem: 2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.22.4) + transitivePeerDependencies: + - bufferutil + - typescript + - utf-8-validate + - zod + + '@reown/appkit-common@1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76)': + dependencies: + big.js: 6.2.2 + dayjs: 1.11.13 + viem: 2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76) + transitivePeerDependencies: + - bufferutil + - typescript + - utf-8-validate + - zod - '@reown/appkit-common@1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.22.4)': + '@reown/appkit-common@1.8.19(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.22.4)': dependencies: big.js: 6.2.2 dayjs: 1.11.13 - viem: 2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.22.4) + viem: 2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.22.4) transitivePeerDependencies: - bufferutil - typescript - utf-8-validate - zod - '@reown/appkit-common@1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6)': + '@reown/appkit-common@1.8.19(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76)': dependencies: big.js: 6.2.2 dayjs: 1.11.13 - viem: 2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + viem: 2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76) transitivePeerDependencies: - bufferutil - typescript - utf-8-validate - zod - '@reown/appkit-controllers@1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6)': + '@reown/appkit-controllers@1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76)': dependencies: - '@reown/appkit-common': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) - '@reown/appkit-wallet': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) - '@walletconnect/universal-provider': 2.21.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) - valtio: 1.13.2(@types/react@19.2.14)(react@19.1.0) - viem: 2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + '@reown/appkit-common': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76) + '@reown/appkit-wallet': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6) + '@walletconnect/universal-provider': 2.21.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76) + valtio: 1.13.2(@types/react@19.2.14)(react@19.2.5) + viem: 2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -9916,14 +11357,13 @@ snapshots: - utf-8-validate - zod - '@reown/appkit-pay@1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6)': + '@reown/appkit-controllers@1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76)': dependencies: - '@reown/appkit-common': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) - '@reown/appkit-controllers': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) - '@reown/appkit-ui': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) - '@reown/appkit-utils': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.2.14)(react@19.1.0))(zod@4.3.6) - lit: 3.3.0 - valtio: 1.13.2(@types/react@19.2.14)(react@19.1.0) + '@reown/appkit-common': 1.8.19(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76) + '@reown/appkit-wallet': 1.8.19(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6) + '@walletconnect/universal-provider': 2.23.7(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76) + valtio: 2.1.7(@types/react@19.2.14)(react@19.2.5) + viem: 2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -9952,18 +11392,14 @@ snapshots: - utf-8-validate - zod - '@reown/appkit-polyfills@1.7.8': - dependencies: - buffer: 6.0.3 - - '@reown/appkit-scaffold-ui@1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.2.14)(react@19.1.0))(zod@4.3.6)': + '@reown/appkit-pay@1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76)': dependencies: - '@reown/appkit-common': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) - '@reown/appkit-controllers': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) - '@reown/appkit-ui': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) - '@reown/appkit-utils': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.2.14)(react@19.1.0))(zod@4.3.6) - '@reown/appkit-wallet': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@reown/appkit-common': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76) + '@reown/appkit-controllers': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76) + '@reown/appkit-ui': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76) + '@reown/appkit-utils': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(valtio@1.13.2(@types/react@19.2.14)(react@19.2.5))(zod@3.25.76) lit: 3.3.0 + valtio: 1.13.2(@types/react@19.2.14)(react@19.2.5) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -9990,16 +11426,16 @@ snapshots: - typescript - uploadthing - utf-8-validate - - valtio - zod - '@reown/appkit-ui@1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6)': + '@reown/appkit-pay@1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(react@19.2.5)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.5))(utf-8-validate@6.0.6)(zod@3.25.76)': dependencies: - '@reown/appkit-common': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) - '@reown/appkit-controllers': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) - '@reown/appkit-wallet': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@reown/appkit-common': 1.8.19(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76) + '@reown/appkit-controllers': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76) + '@reown/appkit-ui': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76) + '@reown/appkit-utils': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(react@19.2.5)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.5))(utf-8-validate@6.0.6)(valtio@2.1.7(@types/react@19.2.14)(react@19.2.5))(zod@3.25.76) lit: 3.3.0 - qrcode: 1.5.3 + valtio: 2.1.7(@types/react@19.2.14)(react@19.2.5) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -10020,24 +11456,34 @@ snapshots: - aws4fetch - bufferutil - db0 + - debug - encoding + - fastestsmallesttextencoderdecoder + - immer - ioredis - react - typescript - uploadthing + - use-sync-external-store - utf-8-validate - zod - '@reown/appkit-utils@1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.2.14)(react@19.1.0))(zod@4.3.6)': + '@reown/appkit-polyfills@1.7.8': + dependencies: + buffer: 6.0.3 + + '@reown/appkit-polyfills@1.8.19': dependencies: - '@reown/appkit-common': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) - '@reown/appkit-controllers': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) - '@reown/appkit-polyfills': 1.7.8 - '@reown/appkit-wallet': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) - '@walletconnect/logger': 2.1.2 - '@walletconnect/universal-provider': 2.21.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) - valtio: 1.13.2(@types/react@19.2.14)(react@19.1.0) - viem: 2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + buffer: 6.0.3 + + '@reown/appkit-scaffold-ui@1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(valtio@1.13.2(@types/react@19.2.14)(react@19.2.5))(zod@3.25.76)': + dependencies: + '@reown/appkit-common': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76) + '@reown/appkit-controllers': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76) + '@reown/appkit-ui': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76) + '@reown/appkit-utils': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(valtio@1.13.2(@types/react@19.2.14)(react@19.2.5))(zod@3.25.76) + '@reown/appkit-wallet': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6) + lit: 3.3.0 transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -10064,34 +11510,18 @@ snapshots: - typescript - uploadthing - utf-8-validate + - valtio - zod - '@reown/appkit-wallet@1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)': - dependencies: - '@reown/appkit-common': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.22.4) - '@reown/appkit-polyfills': 1.7.8 - '@walletconnect/logger': 2.1.2 - zod: 3.22.4 - transitivePeerDependencies: - - bufferutil - - typescript - - utf-8-validate - - '@reown/appkit@1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6)': + '@reown/appkit-scaffold-ui@1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(react@19.2.5)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.5))(utf-8-validate@6.0.6)(valtio@2.1.7(@types/react@19.2.14)(react@19.2.5))(zod@3.25.76)': dependencies: - '@reown/appkit-common': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) - '@reown/appkit-controllers': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) - '@reown/appkit-pay': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) - '@reown/appkit-polyfills': 1.7.8 - '@reown/appkit-scaffold-ui': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.2.14)(react@19.1.0))(zod@4.3.6) - '@reown/appkit-ui': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) - '@reown/appkit-utils': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.2.14)(react@19.1.0))(zod@4.3.6) - '@reown/appkit-wallet': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) - '@walletconnect/types': 2.21.0 - '@walletconnect/universal-provider': 2.21.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) - bs58: 6.0.0 - valtio: 1.13.2(@types/react@19.2.14)(react@19.1.0) - viem: 2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + '@reown/appkit-common': 1.8.19(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76) + '@reown/appkit-controllers': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76) + '@reown/appkit-pay': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(react@19.2.5)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.5))(utf-8-validate@6.0.6)(zod@3.25.76) + '@reown/appkit-ui': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76) + '@reown/appkit-utils': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(react@19.2.5)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.5))(utf-8-validate@6.0.6)(valtio@2.1.7(@types/react@19.2.14)(react@19.2.5))(zod@3.25.76) + '@reown/appkit-wallet': 1.8.19(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6) + lit: 3.3.0 transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -10112,30 +11542,305 @@ snapshots: - aws4fetch - bufferutil - db0 + - debug - encoding + - fastestsmallesttextencoderdecoder + - immer - ioredis - react - typescript - uploadthing + - use-sync-external-store - utf-8-validate + - valtio - zod - '@rtsao/scc@1.1.0': {} - - '@safe-global/safe-apps-provider@0.18.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6)': + '@reown/appkit-ui@1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76)': dependencies: - '@safe-global/safe-apps-sdk': 9.1.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) - events: 3.3.0 - transitivePeerDependencies: + '@reown/appkit-common': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76) + '@reown/appkit-controllers': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76) + '@reown/appkit-wallet': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6) + lit: 3.3.0 + qrcode: 1.5.3 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@types/react' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch - bufferutil + - db0 + - encoding + - ioredis + - react - typescript + - uploadthing - utf-8-validate - zod - '@safe-global/safe-apps-sdk@9.1.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6)': + '@reown/appkit-ui@1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76)': + dependencies: + '@phosphor-icons/webcomponents': 2.1.5 + '@reown/appkit-common': 1.8.19(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76) + '@reown/appkit-controllers': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76) + '@reown/appkit-wallet': 1.8.19(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6) + lit: 3.3.0 + qrcode: 1.5.3 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@types/react' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - encoding + - ioredis + - react + - typescript + - uploadthing + - utf-8-validate + - zod + + '@reown/appkit-utils@1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(valtio@1.13.2(@types/react@19.2.14)(react@19.2.5))(zod@3.25.76)': + dependencies: + '@reown/appkit-common': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76) + '@reown/appkit-controllers': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76) + '@reown/appkit-polyfills': 1.7.8 + '@reown/appkit-wallet': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6) + '@walletconnect/logger': 2.1.2 + '@walletconnect/universal-provider': 2.21.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76) + valtio: 1.13.2(@types/react@19.2.14)(react@19.2.5) + viem: 2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76) + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@types/react' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - encoding + - ioredis + - react + - typescript + - uploadthing + - utf-8-validate + - zod + + '@reown/appkit-utils@1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(react@19.2.5)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.5))(utf-8-validate@6.0.6)(valtio@2.1.7(@types/react@19.2.14)(react@19.2.5))(zod@3.25.76)': + dependencies: + '@reown/appkit-common': 1.8.19(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76) + '@reown/appkit-controllers': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76) + '@reown/appkit-polyfills': 1.8.19 + '@reown/appkit-wallet': 1.8.19(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6) + '@wallet-standard/wallet': 1.1.0 + '@walletconnect/logger': 3.0.2 + '@walletconnect/universal-provider': 2.23.7(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76) + valtio: 2.1.7(@types/react@19.2.14)(react@19.2.5) + viem: 2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76) + optionalDependencies: + '@base-org/account': 2.4.0(@types/react@19.2.14)(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(react@19.2.5)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.5))(utf-8-validate@6.0.6)(zod@3.25.76) + '@safe-global/safe-apps-provider': 0.18.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76) + '@safe-global/safe-apps-sdk': 9.1.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76) + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@types/react' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - debug + - encoding + - fastestsmallesttextencoderdecoder + - immer + - ioredis + - react + - typescript + - uploadthing + - use-sync-external-store + - utf-8-validate + - zod + + '@reown/appkit-wallet@1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)': + dependencies: + '@reown/appkit-common': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.22.4) + '@reown/appkit-polyfills': 1.7.8 + '@walletconnect/logger': 2.1.2 + zod: 3.22.4 + transitivePeerDependencies: + - bufferutil + - typescript + - utf-8-validate + + '@reown/appkit-wallet@1.8.19(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)': + dependencies: + '@reown/appkit-common': 1.8.19(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.22.4) + '@reown/appkit-polyfills': 1.8.19 + '@walletconnect/logger': 3.0.2 + zod: 3.22.4 + transitivePeerDependencies: + - bufferutil + - typescript + - utf-8-validate + + '@reown/appkit@1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76)': + dependencies: + '@reown/appkit-common': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76) + '@reown/appkit-controllers': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76) + '@reown/appkit-pay': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76) + '@reown/appkit-polyfills': 1.7.8 + '@reown/appkit-scaffold-ui': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(valtio@1.13.2(@types/react@19.2.14)(react@19.2.5))(zod@3.25.76) + '@reown/appkit-ui': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76) + '@reown/appkit-utils': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(valtio@1.13.2(@types/react@19.2.14)(react@19.2.5))(zod@3.25.76) + '@reown/appkit-wallet': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6) + '@walletconnect/types': 2.21.0 + '@walletconnect/universal-provider': 2.21.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76) + bs58: 6.0.0 + valtio: 1.13.2(@types/react@19.2.14)(react@19.2.5) + viem: 2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76) + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@types/react' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - encoding + - ioredis + - react + - typescript + - uploadthing + - utf-8-validate + - zod + + '@reown/appkit@1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(react@19.2.5)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.5))(utf-8-validate@6.0.6)(zod@3.25.76)': + dependencies: + '@reown/appkit-common': 1.8.19(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76) + '@reown/appkit-controllers': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76) + '@reown/appkit-pay': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(react@19.2.5)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.5))(utf-8-validate@6.0.6)(zod@3.25.76) + '@reown/appkit-polyfills': 1.8.19 + '@reown/appkit-scaffold-ui': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(react@19.2.5)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.5))(utf-8-validate@6.0.6)(valtio@2.1.7(@types/react@19.2.14)(react@19.2.5))(zod@3.25.76) + '@reown/appkit-ui': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76) + '@reown/appkit-utils': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(react@19.2.5)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.5))(utf-8-validate@6.0.6)(valtio@2.1.7(@types/react@19.2.14)(react@19.2.5))(zod@3.25.76) + '@reown/appkit-wallet': 1.8.19(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6) + '@walletconnect/universal-provider': 2.23.7(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76) + bs58: 6.0.0 + semver: 7.7.2 + valtio: 2.1.7(@types/react@19.2.14)(react@19.2.5) + viem: 2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76) + optionalDependencies: + '@lit/react': 1.0.8(@types/react@19.2.14) + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@types/react' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - debug + - encoding + - fastestsmallesttextencoderdecoder + - immer + - ioredis + - react + - typescript + - uploadthing + - use-sync-external-store + - utf-8-validate + - zod + + '@rtsao/scc@1.1.0': {} + + '@safe-global/safe-apps-provider@0.18.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76)': + dependencies: + '@safe-global/safe-apps-sdk': 9.1.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76) + events: 3.3.0 + transitivePeerDependencies: + - bufferutil + - typescript + - utf-8-validate + - zod + + '@safe-global/safe-apps-sdk@9.1.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76)': dependencies: '@safe-global/safe-gateway-typescript-sdk': 3.23.1 - viem: 2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + viem: 2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76) transitivePeerDependencies: - bufferutil - typescript @@ -10185,6 +11890,8 @@ snapshots: '@sec-ant/readable-stream@0.4.1': {} + '@sinclair/typebox@0.33.22': {} + '@sinclair/typebox@0.34.41': {} '@sindresorhus/merge-streams@4.0.0': {} @@ -10204,32 +11911,76 @@ snapshots: '@socket.io/component-emitter@3.1.2': {} - '@solana-program/system@0.10.0(@solana/kit@5.5.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10))': + '@solana-program/compute-budget@0.8.0(@solana/kit@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.0(bufferutil@4.1.0)(utf-8-validate@6.0.6)))': + dependencies: + '@solana/kit': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.0(bufferutil@4.1.0)(utf-8-validate@6.0.6)) + + '@solana-program/stake@0.2.1(@solana/kit@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.0(bufferutil@4.1.0)(utf-8-validate@6.0.6)))': + dependencies: + '@solana/kit': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.0(bufferutil@4.1.0)(utf-8-validate@6.0.6)) + + '@solana-program/system@0.10.0(@solana/kit@5.5.1(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(utf-8-validate@6.0.6))': + dependencies: + '@solana/kit': 5.5.1(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(utf-8-validate@6.0.6) + + '@solana-program/system@0.7.0(@solana/kit@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.0(bufferutil@4.1.0)(utf-8-validate@6.0.6)))': + dependencies: + '@solana/kit': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.0(bufferutil@4.1.0)(utf-8-validate@6.0.6)) + + '@solana-program/token-2022@0.4.2(@solana/kit@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.0(bufferutil@4.1.0)(utf-8-validate@6.0.6)))(@solana/sysvars@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3))': + dependencies: + '@solana/kit': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.0(bufferutil@4.1.0)(utf-8-validate@6.0.6)) + '@solana/sysvars': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + + '@solana-program/token@0.5.1(@solana/kit@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.0(bufferutil@4.1.0)(utf-8-validate@6.0.6)))': + dependencies: + '@solana/kit': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.0(bufferutil@4.1.0)(utf-8-validate@6.0.6)) + + '@solana-program/token@0.9.0(@solana/kit@5.5.1(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(utf-8-validate@6.0.6))': dependencies: - '@solana/kit': 5.5.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@solana/kit': 5.5.1(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(utf-8-validate@6.0.6) - '@solana-program/token@0.9.0(@solana/kit@5.5.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10))': + '@solana/accounts@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': dependencies: - '@solana/kit': 5.5.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@solana/addresses': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/codecs-core': 2.3.0(typescript@5.9.3) + '@solana/codecs-strings': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/errors': 2.3.0(typescript@5.9.3) + '@solana/rpc-spec': 2.3.0(typescript@5.9.3) + '@solana/rpc-types': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder - '@solana/accounts@5.5.1(typescript@5.9.3)': + '@solana/accounts@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': dependencies: - '@solana/addresses': 5.5.1(typescript@5.9.3) + '@solana/addresses': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) '@solana/codecs-core': 5.5.1(typescript@5.9.3) - '@solana/codecs-strings': 5.5.1(typescript@5.9.3) + '@solana/codecs-strings': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) '@solana/errors': 5.5.1(typescript@5.9.3) '@solana/rpc-spec': 5.5.1(typescript@5.9.3) - '@solana/rpc-types': 5.5.1(typescript@5.9.3) + '@solana/rpc-types': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: - fastestsmallesttextencoderdecoder - '@solana/addresses@5.5.1(typescript@5.9.3)': + '@solana/addresses@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': + dependencies: + '@solana/assertions': 2.3.0(typescript@5.9.3) + '@solana/codecs-core': 2.3.0(typescript@5.9.3) + '@solana/codecs-strings': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/errors': 2.3.0(typescript@5.9.3) + '@solana/nominal-types': 2.3.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/addresses@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': dependencies: '@solana/assertions': 5.5.1(typescript@5.9.3) '@solana/codecs-core': 5.5.1(typescript@5.9.3) - '@solana/codecs-strings': 5.5.1(typescript@5.9.3) + '@solana/codecs-strings': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) '@solana/errors': 5.5.1(typescript@5.9.3) '@solana/nominal-types': 5.5.1(typescript@5.9.3) optionalDependencies: @@ -10237,18 +11988,39 @@ snapshots: transitivePeerDependencies: - fastestsmallesttextencoderdecoder + '@solana/assertions@2.3.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 2.3.0(typescript@5.9.3) + typescript: 5.9.3 + '@solana/assertions@5.5.1(typescript@5.9.3)': dependencies: '@solana/errors': 5.5.1(typescript@5.9.3) optionalDependencies: typescript: 5.9.3 + '@solana/buffer-layout@4.0.1': + dependencies: + buffer: 6.0.3 + + '@solana/codecs-core@2.3.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 2.3.0(typescript@5.9.3) + typescript: 5.9.3 + '@solana/codecs-core@5.5.1(typescript@5.9.3)': dependencies: '@solana/errors': 5.5.1(typescript@5.9.3) optionalDependencies: typescript: 5.9.3 + '@solana/codecs-data-structures@2.3.0(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 2.3.0(typescript@5.9.3) + '@solana/codecs-numbers': 2.3.0(typescript@5.9.3) + '@solana/errors': 2.3.0(typescript@5.9.3) + typescript: 5.9.3 + '@solana/codecs-data-structures@5.5.1(typescript@5.9.3)': dependencies: '@solana/codecs-core': 5.5.1(typescript@5.9.3) @@ -10257,6 +12029,12 @@ snapshots: optionalDependencies: typescript: 5.9.3 + '@solana/codecs-numbers@2.3.0(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 2.3.0(typescript@5.9.3) + '@solana/errors': 2.3.0(typescript@5.9.3) + typescript: 5.9.3 + '@solana/codecs-numbers@5.5.1(typescript@5.9.3)': dependencies: '@solana/codecs-core': 5.5.1(typescript@5.9.3) @@ -10264,26 +12042,52 @@ snapshots: optionalDependencies: typescript: 5.9.3 - '@solana/codecs-strings@5.5.1(typescript@5.9.3)': + '@solana/codecs-strings@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 2.3.0(typescript@5.9.3) + '@solana/codecs-numbers': 2.3.0(typescript@5.9.3) + '@solana/errors': 2.3.0(typescript@5.9.3) + fastestsmallesttextencoderdecoder: 1.0.22 + typescript: 5.9.3 + + '@solana/codecs-strings@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': dependencies: '@solana/codecs-core': 5.5.1(typescript@5.9.3) '@solana/codecs-numbers': 5.5.1(typescript@5.9.3) '@solana/errors': 5.5.1(typescript@5.9.3) optionalDependencies: + fastestsmallesttextencoderdecoder: 1.0.22 typescript: 5.9.3 - '@solana/codecs@5.5.1(typescript@5.9.3)': + '@solana/codecs@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 2.3.0(typescript@5.9.3) + '@solana/codecs-data-structures': 2.3.0(typescript@5.9.3) + '@solana/codecs-numbers': 2.3.0(typescript@5.9.3) + '@solana/codecs-strings': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/options': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/codecs@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': dependencies: '@solana/codecs-core': 5.5.1(typescript@5.9.3) '@solana/codecs-data-structures': 5.5.1(typescript@5.9.3) '@solana/codecs-numbers': 5.5.1(typescript@5.9.3) - '@solana/codecs-strings': 5.5.1(typescript@5.9.3) - '@solana/options': 5.5.1(typescript@5.9.3) + '@solana/codecs-strings': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/options': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: - fastestsmallesttextencoderdecoder + '@solana/errors@2.3.0(typescript@5.9.3)': + dependencies: + chalk: 5.6.2 + commander: 14.0.3 + typescript: 5.9.3 + '@solana/errors@5.5.1(typescript@5.9.3)': dependencies: chalk: 5.6.2 @@ -10291,27 +12095,41 @@ snapshots: optionalDependencies: typescript: 5.9.3 + '@solana/fast-stable-stringify@2.3.0(typescript@5.9.3)': + dependencies: + typescript: 5.9.3 + '@solana/fast-stable-stringify@5.5.1(typescript@5.9.3)': optionalDependencies: typescript: 5.9.3 + '@solana/functional@2.3.0(typescript@5.9.3)': + dependencies: + typescript: 5.9.3 + '@solana/functional@5.5.1(typescript@5.9.3)': optionalDependencies: typescript: 5.9.3 - '@solana/instruction-plans@5.5.1(typescript@5.9.3)': + '@solana/instruction-plans@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': dependencies: '@solana/errors': 5.5.1(typescript@5.9.3) '@solana/instructions': 5.5.1(typescript@5.9.3) - '@solana/keys': 5.5.1(typescript@5.9.3) + '@solana/keys': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) '@solana/promises': 5.5.1(typescript@5.9.3) - '@solana/transaction-messages': 5.5.1(typescript@5.9.3) - '@solana/transactions': 5.5.1(typescript@5.9.3) + '@solana/transaction-messages': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/transactions': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: - fastestsmallesttextencoderdecoder + '@solana/instructions@2.3.0(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 2.3.0(typescript@5.9.3) + '@solana/errors': 2.3.0(typescript@5.9.3) + typescript: 5.9.3 + '@solana/instructions@5.5.1(typescript@5.9.3)': dependencies: '@solana/codecs-core': 5.5.1(typescript@5.9.3) @@ -10319,11 +12137,22 @@ snapshots: optionalDependencies: typescript: 5.9.3 - '@solana/keys@5.5.1(typescript@5.9.3)': + '@solana/keys@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': + dependencies: + '@solana/assertions': 2.3.0(typescript@5.9.3) + '@solana/codecs-core': 2.3.0(typescript@5.9.3) + '@solana/codecs-strings': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/errors': 2.3.0(typescript@5.9.3) + '@solana/nominal-types': 2.3.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/keys@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': dependencies: '@solana/assertions': 5.5.1(typescript@5.9.3) '@solana/codecs-core': 5.5.1(typescript@5.9.3) - '@solana/codecs-strings': 5.5.1(typescript@5.9.3) + '@solana/codecs-strings': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) '@solana/errors': 5.5.1(typescript@5.9.3) '@solana/nominal-types': 5.5.1(typescript@5.9.3) optionalDependencies: @@ -10331,30 +12160,55 @@ snapshots: transitivePeerDependencies: - fastestsmallesttextencoderdecoder - '@solana/kit@5.5.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)': + '@solana/kit@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))': + dependencies: + '@solana/accounts': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/addresses': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/codecs': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/errors': 2.3.0(typescript@5.9.3) + '@solana/functional': 2.3.0(typescript@5.9.3) + '@solana/instructions': 2.3.0(typescript@5.9.3) + '@solana/keys': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/programs': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/rpc': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/rpc-parsed-types': 2.3.0(typescript@5.9.3) + '@solana/rpc-spec-types': 2.3.0(typescript@5.9.3) + '@solana/rpc-subscriptions': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.0(bufferutil@4.1.0)(utf-8-validate@6.0.6)) + '@solana/rpc-types': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/signers': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/sysvars': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/transaction-confirmation': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.0(bufferutil@4.1.0)(utf-8-validate@6.0.6)) + '@solana/transaction-messages': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/transactions': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + - ws + + '@solana/kit@5.5.1(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(utf-8-validate@6.0.6)': dependencies: - '@solana/accounts': 5.5.1(typescript@5.9.3) - '@solana/addresses': 5.5.1(typescript@5.9.3) - '@solana/codecs': 5.5.1(typescript@5.9.3) + '@solana/accounts': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/addresses': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/codecs': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) '@solana/errors': 5.5.1(typescript@5.9.3) '@solana/functional': 5.5.1(typescript@5.9.3) - '@solana/instruction-plans': 5.5.1(typescript@5.9.3) + '@solana/instruction-plans': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) '@solana/instructions': 5.5.1(typescript@5.9.3) - '@solana/keys': 5.5.1(typescript@5.9.3) - '@solana/offchain-messages': 5.5.1(typescript@5.9.3) + '@solana/keys': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/offchain-messages': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) '@solana/plugin-core': 5.5.1(typescript@5.9.3) - '@solana/programs': 5.5.1(typescript@5.9.3) - '@solana/rpc': 5.5.1(typescript@5.9.3) - '@solana/rpc-api': 5.5.1(typescript@5.9.3) + '@solana/programs': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/rpc': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/rpc-api': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) '@solana/rpc-parsed-types': 5.5.1(typescript@5.9.3) '@solana/rpc-spec-types': 5.5.1(typescript@5.9.3) - '@solana/rpc-subscriptions': 5.5.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) - '@solana/rpc-types': 5.5.1(typescript@5.9.3) - '@solana/signers': 5.5.1(typescript@5.9.3) - '@solana/sysvars': 5.5.1(typescript@5.9.3) - '@solana/transaction-confirmation': 5.5.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) - '@solana/transaction-messages': 5.5.1(typescript@5.9.3) - '@solana/transactions': 5.5.1(typescript@5.9.3) + '@solana/rpc-subscriptions': 5.5.1(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(utf-8-validate@6.0.6) + '@solana/rpc-types': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/signers': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/sysvars': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/transaction-confirmation': 5.5.1(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(utf-8-validate@6.0.6) + '@solana/transaction-messages': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/transactions': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: @@ -10362,31 +12216,46 @@ snapshots: - fastestsmallesttextencoderdecoder - utf-8-validate + '@solana/nominal-types@2.3.0(typescript@5.9.3)': + dependencies: + typescript: 5.9.3 + '@solana/nominal-types@5.5.1(typescript@5.9.3)': optionalDependencies: typescript: 5.9.3 - '@solana/offchain-messages@5.5.1(typescript@5.9.3)': + '@solana/offchain-messages@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': dependencies: - '@solana/addresses': 5.5.1(typescript@5.9.3) + '@solana/addresses': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) '@solana/codecs-core': 5.5.1(typescript@5.9.3) '@solana/codecs-data-structures': 5.5.1(typescript@5.9.3) '@solana/codecs-numbers': 5.5.1(typescript@5.9.3) - '@solana/codecs-strings': 5.5.1(typescript@5.9.3) + '@solana/codecs-strings': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) '@solana/errors': 5.5.1(typescript@5.9.3) - '@solana/keys': 5.5.1(typescript@5.9.3) + '@solana/keys': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) '@solana/nominal-types': 5.5.1(typescript@5.9.3) optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: - fastestsmallesttextencoderdecoder - '@solana/options@5.5.1(typescript@5.9.3)': + '@solana/options@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 2.3.0(typescript@5.9.3) + '@solana/codecs-data-structures': 2.3.0(typescript@5.9.3) + '@solana/codecs-numbers': 2.3.0(typescript@5.9.3) + '@solana/codecs-strings': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/errors': 2.3.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/options@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': dependencies: '@solana/codecs-core': 5.5.1(typescript@5.9.3) '@solana/codecs-data-structures': 5.5.1(typescript@5.9.3) '@solana/codecs-numbers': 5.5.1(typescript@5.9.3) - '@solana/codecs-strings': 5.5.1(typescript@5.9.3) + '@solana/codecs-strings': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) '@solana/errors': 5.5.1(typescript@5.9.3) optionalDependencies: typescript: 5.9.3 @@ -10397,45 +12266,88 @@ snapshots: optionalDependencies: typescript: 5.9.3 - '@solana/programs@5.5.1(typescript@5.9.3)': + '@solana/programs@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': dependencies: - '@solana/addresses': 5.5.1(typescript@5.9.3) + '@solana/addresses': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/errors': 2.3.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/programs@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': + dependencies: + '@solana/addresses': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) '@solana/errors': 5.5.1(typescript@5.9.3) optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: - fastestsmallesttextencoderdecoder + '@solana/promises@2.3.0(typescript@5.9.3)': + dependencies: + typescript: 5.9.3 + '@solana/promises@5.5.1(typescript@5.9.3)': optionalDependencies: typescript: 5.9.3 - '@solana/rpc-api@5.5.1(typescript@5.9.3)': + '@solana/rpc-api@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': + dependencies: + '@solana/addresses': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/codecs-core': 2.3.0(typescript@5.9.3) + '@solana/codecs-strings': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/errors': 2.3.0(typescript@5.9.3) + '@solana/keys': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/rpc-parsed-types': 2.3.0(typescript@5.9.3) + '@solana/rpc-spec': 2.3.0(typescript@5.9.3) + '@solana/rpc-transformers': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/rpc-types': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/transaction-messages': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/transactions': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/rpc-api@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': dependencies: - '@solana/addresses': 5.5.1(typescript@5.9.3) + '@solana/addresses': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) '@solana/codecs-core': 5.5.1(typescript@5.9.3) - '@solana/codecs-strings': 5.5.1(typescript@5.9.3) + '@solana/codecs-strings': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) '@solana/errors': 5.5.1(typescript@5.9.3) - '@solana/keys': 5.5.1(typescript@5.9.3) + '@solana/keys': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) '@solana/rpc-parsed-types': 5.5.1(typescript@5.9.3) '@solana/rpc-spec': 5.5.1(typescript@5.9.3) - '@solana/rpc-transformers': 5.5.1(typescript@5.9.3) - '@solana/rpc-types': 5.5.1(typescript@5.9.3) - '@solana/transaction-messages': 5.5.1(typescript@5.9.3) - '@solana/transactions': 5.5.1(typescript@5.9.3) + '@solana/rpc-transformers': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/rpc-types': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/transaction-messages': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/transactions': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: - fastestsmallesttextencoderdecoder + '@solana/rpc-parsed-types@2.3.0(typescript@5.9.3)': + dependencies: + typescript: 5.9.3 + '@solana/rpc-parsed-types@5.5.1(typescript@5.9.3)': optionalDependencies: typescript: 5.9.3 + '@solana/rpc-spec-types@2.3.0(typescript@5.9.3)': + dependencies: + typescript: 5.9.3 + '@solana/rpc-spec-types@5.5.1(typescript@5.9.3)': optionalDependencies: typescript: 5.9.3 + '@solana/rpc-spec@2.3.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 2.3.0(typescript@5.9.3) + '@solana/rpc-spec-types': 2.3.0(typescript@5.9.3) + typescript: 5.9.3 + '@solana/rpc-spec@5.5.1(typescript@5.9.3)': dependencies: '@solana/errors': 5.5.1(typescript@5.9.3) @@ -10443,33 +12355,63 @@ snapshots: optionalDependencies: typescript: 5.9.3 - '@solana/rpc-subscriptions-api@5.5.1(typescript@5.9.3)': + '@solana/rpc-subscriptions-api@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': + dependencies: + '@solana/addresses': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/keys': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/rpc-subscriptions-spec': 2.3.0(typescript@5.9.3) + '@solana/rpc-transformers': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/rpc-types': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/transaction-messages': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/transactions': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/rpc-subscriptions-api@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': dependencies: - '@solana/addresses': 5.5.1(typescript@5.9.3) - '@solana/keys': 5.5.1(typescript@5.9.3) + '@solana/addresses': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/keys': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) '@solana/rpc-subscriptions-spec': 5.5.1(typescript@5.9.3) - '@solana/rpc-transformers': 5.5.1(typescript@5.9.3) - '@solana/rpc-types': 5.5.1(typescript@5.9.3) - '@solana/transaction-messages': 5.5.1(typescript@5.9.3) - '@solana/transactions': 5.5.1(typescript@5.9.3) + '@solana/rpc-transformers': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/rpc-types': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/transaction-messages': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/transactions': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: - fastestsmallesttextencoderdecoder - '@solana/rpc-subscriptions-channel-websocket@5.5.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)': + '@solana/rpc-subscriptions-channel-websocket@2.3.0(typescript@5.9.3)(ws@8.18.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))': + dependencies: + '@solana/errors': 2.3.0(typescript@5.9.3) + '@solana/functional': 2.3.0(typescript@5.9.3) + '@solana/rpc-subscriptions-spec': 2.3.0(typescript@5.9.3) + '@solana/subscribable': 2.3.0(typescript@5.9.3) + typescript: 5.9.3 + ws: 8.18.0(bufferutil@4.1.0)(utf-8-validate@6.0.6) + + '@solana/rpc-subscriptions-channel-websocket@5.5.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)': dependencies: '@solana/errors': 5.5.1(typescript@5.9.3) '@solana/functional': 5.5.1(typescript@5.9.3) '@solana/rpc-subscriptions-spec': 5.5.1(typescript@5.9.3) '@solana/subscribable': 5.5.1(typescript@5.9.3) - ws: 8.20.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) + ws: 8.20.0(bufferutil@4.1.0)(utf-8-validate@6.0.6) optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: - bufferutil - utf-8-validate + '@solana/rpc-subscriptions-spec@2.3.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 2.3.0(typescript@5.9.3) + '@solana/promises': 2.3.0(typescript@5.9.3) + '@solana/rpc-spec-types': 2.3.0(typescript@5.9.3) + '@solana/subscribable': 2.3.0(typescript@5.9.3) + typescript: 5.9.3 + '@solana/rpc-subscriptions-spec@5.5.1(typescript@5.9.3)': dependencies: '@solana/errors': 5.5.1(typescript@5.9.3) @@ -10479,18 +12421,36 @@ snapshots: optionalDependencies: typescript: 5.9.3 - '@solana/rpc-subscriptions@5.5.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)': + '@solana/rpc-subscriptions@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))': + dependencies: + '@solana/errors': 2.3.0(typescript@5.9.3) + '@solana/fast-stable-stringify': 2.3.0(typescript@5.9.3) + '@solana/functional': 2.3.0(typescript@5.9.3) + '@solana/promises': 2.3.0(typescript@5.9.3) + '@solana/rpc-spec-types': 2.3.0(typescript@5.9.3) + '@solana/rpc-subscriptions-api': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/rpc-subscriptions-channel-websocket': 2.3.0(typescript@5.9.3)(ws@8.18.0(bufferutil@4.1.0)(utf-8-validate@6.0.6)) + '@solana/rpc-subscriptions-spec': 2.3.0(typescript@5.9.3) + '@solana/rpc-transformers': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/rpc-types': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/subscribable': 2.3.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + - ws + + '@solana/rpc-subscriptions@5.5.1(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(utf-8-validate@6.0.6)': dependencies: '@solana/errors': 5.5.1(typescript@5.9.3) '@solana/fast-stable-stringify': 5.5.1(typescript@5.9.3) '@solana/functional': 5.5.1(typescript@5.9.3) '@solana/promises': 5.5.1(typescript@5.9.3) '@solana/rpc-spec-types': 5.5.1(typescript@5.9.3) - '@solana/rpc-subscriptions-api': 5.5.1(typescript@5.9.3) - '@solana/rpc-subscriptions-channel-websocket': 5.5.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@solana/rpc-subscriptions-api': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/rpc-subscriptions-channel-websocket': 5.5.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6) '@solana/rpc-subscriptions-spec': 5.5.1(typescript@5.9.3) - '@solana/rpc-transformers': 5.5.1(typescript@5.9.3) - '@solana/rpc-types': 5.5.1(typescript@5.9.3) + '@solana/rpc-transformers': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/rpc-types': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) '@solana/subscribable': 5.5.1(typescript@5.9.3) optionalDependencies: typescript: 5.9.3 @@ -10499,18 +12459,37 @@ snapshots: - fastestsmallesttextencoderdecoder - utf-8-validate - '@solana/rpc-transformers@5.5.1(typescript@5.9.3)': + '@solana/rpc-transformers@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': + dependencies: + '@solana/errors': 2.3.0(typescript@5.9.3) + '@solana/functional': 2.3.0(typescript@5.9.3) + '@solana/nominal-types': 2.3.0(typescript@5.9.3) + '@solana/rpc-spec-types': 2.3.0(typescript@5.9.3) + '@solana/rpc-types': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/rpc-transformers@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': dependencies: '@solana/errors': 5.5.1(typescript@5.9.3) '@solana/functional': 5.5.1(typescript@5.9.3) '@solana/nominal-types': 5.5.1(typescript@5.9.3) '@solana/rpc-spec-types': 5.5.1(typescript@5.9.3) - '@solana/rpc-types': 5.5.1(typescript@5.9.3) + '@solana/rpc-types': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: - fastestsmallesttextencoderdecoder + '@solana/rpc-transport-http@2.3.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 2.3.0(typescript@5.9.3) + '@solana/rpc-spec': 2.3.0(typescript@5.9.3) + '@solana/rpc-spec-types': 2.3.0(typescript@5.9.3) + typescript: 5.9.3 + undici-types: 7.24.7 + '@solana/rpc-transport-http@5.5.1(typescript@5.9.3)': dependencies: '@solana/errors': 5.5.1(typescript@5.9.3) @@ -10520,12 +12499,24 @@ snapshots: optionalDependencies: typescript: 5.9.3 - '@solana/rpc-types@5.5.1(typescript@5.9.3)': + '@solana/rpc-types@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': dependencies: - '@solana/addresses': 5.5.1(typescript@5.9.3) + '@solana/addresses': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/codecs-core': 2.3.0(typescript@5.9.3) + '@solana/codecs-numbers': 2.3.0(typescript@5.9.3) + '@solana/codecs-strings': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/errors': 2.3.0(typescript@5.9.3) + '@solana/nominal-types': 2.3.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/rpc-types@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': + dependencies: + '@solana/addresses': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) '@solana/codecs-core': 5.5.1(typescript@5.9.3) '@solana/codecs-numbers': 5.5.1(typescript@5.9.3) - '@solana/codecs-strings': 5.5.1(typescript@5.9.3) + '@solana/codecs-strings': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) '@solana/errors': 5.5.1(typescript@5.9.3) '@solana/nominal-types': 5.5.1(typescript@5.9.3) optionalDependencies: @@ -10533,67 +12524,128 @@ snapshots: transitivePeerDependencies: - fastestsmallesttextencoderdecoder - '@solana/rpc@5.5.1(typescript@5.9.3)': + '@solana/rpc@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': + dependencies: + '@solana/errors': 2.3.0(typescript@5.9.3) + '@solana/fast-stable-stringify': 2.3.0(typescript@5.9.3) + '@solana/functional': 2.3.0(typescript@5.9.3) + '@solana/rpc-api': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/rpc-spec': 2.3.0(typescript@5.9.3) + '@solana/rpc-spec-types': 2.3.0(typescript@5.9.3) + '@solana/rpc-transformers': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/rpc-transport-http': 2.3.0(typescript@5.9.3) + '@solana/rpc-types': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/rpc@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': dependencies: '@solana/errors': 5.5.1(typescript@5.9.3) '@solana/fast-stable-stringify': 5.5.1(typescript@5.9.3) '@solana/functional': 5.5.1(typescript@5.9.3) - '@solana/rpc-api': 5.5.1(typescript@5.9.3) + '@solana/rpc-api': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) '@solana/rpc-spec': 5.5.1(typescript@5.9.3) '@solana/rpc-spec-types': 5.5.1(typescript@5.9.3) - '@solana/rpc-transformers': 5.5.1(typescript@5.9.3) + '@solana/rpc-transformers': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) '@solana/rpc-transport-http': 5.5.1(typescript@5.9.3) - '@solana/rpc-types': 5.5.1(typescript@5.9.3) + '@solana/rpc-types': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: - fastestsmallesttextencoderdecoder - '@solana/signers@5.5.1(typescript@5.9.3)': + '@solana/signers@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': + dependencies: + '@solana/addresses': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/codecs-core': 2.3.0(typescript@5.9.3) + '@solana/errors': 2.3.0(typescript@5.9.3) + '@solana/instructions': 2.3.0(typescript@5.9.3) + '@solana/keys': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/nominal-types': 2.3.0(typescript@5.9.3) + '@solana/transaction-messages': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/transactions': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/signers@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': dependencies: - '@solana/addresses': 5.5.1(typescript@5.9.3) + '@solana/addresses': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) '@solana/codecs-core': 5.5.1(typescript@5.9.3) '@solana/errors': 5.5.1(typescript@5.9.3) '@solana/instructions': 5.5.1(typescript@5.9.3) - '@solana/keys': 5.5.1(typescript@5.9.3) + '@solana/keys': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) '@solana/nominal-types': 5.5.1(typescript@5.9.3) - '@solana/offchain-messages': 5.5.1(typescript@5.9.3) - '@solana/transaction-messages': 5.5.1(typescript@5.9.3) - '@solana/transactions': 5.5.1(typescript@5.9.3) + '@solana/offchain-messages': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/transaction-messages': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/transactions': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: - fastestsmallesttextencoderdecoder + '@solana/subscribable@2.3.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 2.3.0(typescript@5.9.3) + typescript: 5.9.3 + '@solana/subscribable@5.5.1(typescript@5.9.3)': dependencies: '@solana/errors': 5.5.1(typescript@5.9.3) optionalDependencies: typescript: 5.9.3 - '@solana/sysvars@5.5.1(typescript@5.9.3)': + '@solana/sysvars@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': + dependencies: + '@solana/accounts': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/codecs': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/errors': 2.3.0(typescript@5.9.3) + '@solana/rpc-types': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/sysvars@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': dependencies: - '@solana/accounts': 5.5.1(typescript@5.9.3) - '@solana/codecs': 5.5.1(typescript@5.9.3) + '@solana/accounts': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/codecs': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) '@solana/errors': 5.5.1(typescript@5.9.3) - '@solana/rpc-types': 5.5.1(typescript@5.9.3) + '@solana/rpc-types': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: - fastestsmallesttextencoderdecoder - '@solana/transaction-confirmation@5.5.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)': + '@solana/transaction-confirmation@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))': + dependencies: + '@solana/addresses': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/codecs-strings': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/errors': 2.3.0(typescript@5.9.3) + '@solana/keys': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/promises': 2.3.0(typescript@5.9.3) + '@solana/rpc': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/rpc-subscriptions': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.0(bufferutil@4.1.0)(utf-8-validate@6.0.6)) + '@solana/rpc-types': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/transaction-messages': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/transactions': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + - ws + + '@solana/transaction-confirmation@5.5.1(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(utf-8-validate@6.0.6)': dependencies: - '@solana/addresses': 5.5.1(typescript@5.9.3) - '@solana/codecs-strings': 5.5.1(typescript@5.9.3) + '@solana/addresses': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/codecs-strings': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) '@solana/errors': 5.5.1(typescript@5.9.3) - '@solana/keys': 5.5.1(typescript@5.9.3) + '@solana/keys': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) '@solana/promises': 5.5.1(typescript@5.9.3) - '@solana/rpc': 5.5.1(typescript@5.9.3) - '@solana/rpc-subscriptions': 5.5.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) - '@solana/rpc-types': 5.5.1(typescript@5.9.3) - '@solana/transaction-messages': 5.5.1(typescript@5.9.3) - '@solana/transactions': 5.5.1(typescript@5.9.3) + '@solana/rpc': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/rpc-subscriptions': 5.5.1(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(utf-8-validate@6.0.6) + '@solana/rpc-types': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/transaction-messages': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/transactions': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: @@ -10601,9 +12653,24 @@ snapshots: - fastestsmallesttextencoderdecoder - utf-8-validate - '@solana/transaction-messages@5.5.1(typescript@5.9.3)': + '@solana/transaction-messages@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': + dependencies: + '@solana/addresses': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/codecs-core': 2.3.0(typescript@5.9.3) + '@solana/codecs-data-structures': 2.3.0(typescript@5.9.3) + '@solana/codecs-numbers': 2.3.0(typescript@5.9.3) + '@solana/errors': 2.3.0(typescript@5.9.3) + '@solana/functional': 2.3.0(typescript@5.9.3) + '@solana/instructions': 2.3.0(typescript@5.9.3) + '@solana/nominal-types': 2.3.0(typescript@5.9.3) + '@solana/rpc-types': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/transaction-messages@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': dependencies: - '@solana/addresses': 5.5.1(typescript@5.9.3) + '@solana/addresses': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) '@solana/codecs-core': 5.5.1(typescript@5.9.3) '@solana/codecs-data-structures': 5.5.1(typescript@5.9.3) '@solana/codecs-numbers': 5.5.1(typescript@5.9.3) @@ -10611,31 +12678,85 @@ snapshots: '@solana/functional': 5.5.1(typescript@5.9.3) '@solana/instructions': 5.5.1(typescript@5.9.3) '@solana/nominal-types': 5.5.1(typescript@5.9.3) - '@solana/rpc-types': 5.5.1(typescript@5.9.3) + '@solana/rpc-types': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: - fastestsmallesttextencoderdecoder - '@solana/transactions@5.5.1(typescript@5.9.3)': + '@solana/transactions@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': + dependencies: + '@solana/addresses': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/codecs-core': 2.3.0(typescript@5.9.3) + '@solana/codecs-data-structures': 2.3.0(typescript@5.9.3) + '@solana/codecs-numbers': 2.3.0(typescript@5.9.3) + '@solana/codecs-strings': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/errors': 2.3.0(typescript@5.9.3) + '@solana/functional': 2.3.0(typescript@5.9.3) + '@solana/instructions': 2.3.0(typescript@5.9.3) + '@solana/keys': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/nominal-types': 2.3.0(typescript@5.9.3) + '@solana/rpc-types': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/transaction-messages': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/transactions@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': dependencies: - '@solana/addresses': 5.5.1(typescript@5.9.3) + '@solana/addresses': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) '@solana/codecs-core': 5.5.1(typescript@5.9.3) '@solana/codecs-data-structures': 5.5.1(typescript@5.9.3) '@solana/codecs-numbers': 5.5.1(typescript@5.9.3) - '@solana/codecs-strings': 5.5.1(typescript@5.9.3) + '@solana/codecs-strings': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) '@solana/errors': 5.5.1(typescript@5.9.3) '@solana/functional': 5.5.1(typescript@5.9.3) '@solana/instructions': 5.5.1(typescript@5.9.3) - '@solana/keys': 5.5.1(typescript@5.9.3) + '@solana/keys': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) '@solana/nominal-types': 5.5.1(typescript@5.9.3) - '@solana/rpc-types': 5.5.1(typescript@5.9.3) - '@solana/transaction-messages': 5.5.1(typescript@5.9.3) + '@solana/rpc-types': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/transaction-messages': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: - fastestsmallesttextencoderdecoder + '@solana/wallet-adapter-base@0.9.27(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6))': + dependencies: + '@solana/wallet-standard-features': 1.3.0 + '@solana/web3.js': 1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6) + '@wallet-standard/base': 1.1.0 + '@wallet-standard/features': 1.1.0 + eventemitter3: 5.0.4 + + '@solana/wallet-standard-features@1.3.0': + dependencies: + '@wallet-standard/base': 1.1.0 + '@wallet-standard/features': 1.1.0 + + '@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)': + dependencies: + '@babel/runtime': 7.29.2 + '@noble/curves': 1.9.7 + '@noble/hashes': 1.8.0 + '@solana/buffer-layout': 4.0.1 + '@solana/codecs-numbers': 2.3.0(typescript@5.9.3) + agentkeepalive: 4.6.0 + bn.js: 5.2.3 + borsh: 0.7.0 + bs58: 4.0.1 + buffer: 6.0.3 + fast-stable-stringify: 1.0.0 + jayson: 4.3.0(bufferutil@4.1.0)(utf-8-validate@6.0.6) + node-fetch: 2.7.0 + rpc-websockets: 9.3.8 + superstruct: 2.0.2 + transitivePeerDependencies: + - bufferutil + - encoding + - typescript + - utf-8-validate + '@spruceid/siwe-parser@3.0.0': dependencies: '@noble/hashes': 1.8.0 @@ -10656,8 +12777,24 @@ snapshots: '@standard-schema/spec@1.0.0': {} + '@stellar/freighter-api@6.0.0': + dependencies: + buffer: 6.0.3 + semver: 7.7.1 + + '@stellar/js-xdr@3.1.2': {} + '@stellar/js-xdr@4.0.0': {} + '@stellar/stellar-base@14.0.1': + dependencies: + '@noble/curves': 1.9.7 + '@stellar/js-xdr': 3.1.2 + base32.js: 0.1.0 + bignumber.js: 9.3.1 + buffer: 6.0.3 + sha.js: 2.4.12 + '@stellar/stellar-base@15.0.0': dependencies: '@noble/curves': 1.9.7 @@ -10667,6 +12804,19 @@ snapshots: buffer: 6.0.3 sha.js: 2.4.12 + '@stellar/stellar-sdk@14.2.0': + dependencies: + '@stellar/stellar-base': 14.0.1 + axios: 1.15.0 + bignumber.js: 9.3.1 + eventsource: 2.0.2 + feaxios: 0.0.23 + randombytes: 2.1.0 + toml: 3.0.0 + urijs: 1.19.11 + transitivePeerDependencies: + - debug + '@stellar/stellar-sdk@15.0.1': dependencies: '@stellar/stellar-base': 15.0.0 @@ -10756,10 +12906,10 @@ snapshots: '@tanstack/query-core@5.98.0': {} - '@tanstack/react-query@5.98.0(react@19.1.0)': + '@tanstack/react-query@5.98.0(react@19.2.5)': dependencies: '@tanstack/query-core': 5.98.0 - react: 19.1.0 + react: 19.2.5 '@testcontainers/postgresql@11.14.0': dependencies: @@ -10779,6 +12929,288 @@ snapshots: '@tokenizer/token@0.3.0': {} + '@trezor/analytics@1.5.0(tslib@2.8.1)': + dependencies: + '@trezor/env-utils': 1.5.0(tslib@2.8.1) + '@trezor/utils': 9.5.0(tslib@2.8.1) + tslib: 2.8.1 + transitivePeerDependencies: + - expo-constants + - expo-localization + - react-native + + '@trezor/blockchain-link-types@1.5.0(tslib@2.8.1)': + dependencies: + '@trezor/utils': 9.5.0(tslib@2.8.1) + '@trezor/utxo-lib': 2.5.0(tslib@2.8.1) + tslib: 2.8.1 + + '@trezor/blockchain-link-types@1.5.1(tslib@2.8.1)': + dependencies: + '@trezor/utils': 9.5.0(tslib@2.8.1) + '@trezor/utxo-lib': 2.5.0(tslib@2.8.1) + tslib: 2.8.1 + + '@trezor/blockchain-link-utils@1.5.1(bufferutil@4.1.0)(tslib@2.8.1)(utf-8-validate@6.0.6)': + dependencies: + '@mobily/ts-belt': 3.13.1 + '@stellar/stellar-sdk': 14.2.0 + '@trezor/env-utils': 1.5.0(tslib@2.8.1) + '@trezor/protobuf': 1.5.1(tslib@2.8.1) + '@trezor/utils': 9.5.0(tslib@2.8.1) + tslib: 2.8.1 + xrpl: 4.4.3(bufferutil@4.1.0)(utf-8-validate@6.0.6) + transitivePeerDependencies: + - bufferutil + - debug + - expo-constants + - expo-localization + - react-native + - utf-8-validate + + '@trezor/blockchain-link-utils@1.5.2(bufferutil@4.1.0)(tslib@2.8.1)(utf-8-validate@6.0.6)': + dependencies: + '@mobily/ts-belt': 3.13.1 + '@stellar/stellar-sdk': 14.2.0 + '@trezor/env-utils': 1.5.0(tslib@2.8.1) + '@trezor/protobuf': 1.5.2(tslib@2.8.1) + '@trezor/utils': 9.5.0(tslib@2.8.1) + tslib: 2.8.1 + xrpl: 4.4.3(bufferutil@4.1.0)(utf-8-validate@6.0.6) + transitivePeerDependencies: + - bufferutil + - debug + - expo-constants + - expo-localization + - react-native + - utf-8-validate + + '@trezor/blockchain-link@2.6.1(@solana/sysvars@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3))(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(tslib@2.8.1)(typescript@5.9.3)(utf-8-validate@6.0.6)(ws@8.18.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))': + dependencies: + '@solana-program/compute-budget': 0.8.0(@solana/kit@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))) + '@solana-program/stake': 0.2.1(@solana/kit@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))) + '@solana-program/token': 0.5.1(@solana/kit@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))) + '@solana-program/token-2022': 0.4.2(@solana/kit@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.0(bufferutil@4.1.0)(utf-8-validate@6.0.6)))(@solana/sysvars@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)) + '@solana/kit': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.0(bufferutil@4.1.0)(utf-8-validate@6.0.6)) + '@solana/rpc-types': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@stellar/stellar-sdk': 14.2.0 + '@trezor/blockchain-link-types': 1.5.0(tslib@2.8.1) + '@trezor/blockchain-link-utils': 1.5.1(bufferutil@4.1.0)(tslib@2.8.1)(utf-8-validate@6.0.6) + '@trezor/env-utils': 1.5.0(tslib@2.8.1) + '@trezor/utils': 9.5.0(tslib@2.8.1) + '@trezor/utxo-lib': 2.5.0(tslib@2.8.1) + '@trezor/websocket-client': 1.3.0(bufferutil@4.1.0)(tslib@2.8.1)(utf-8-validate@6.0.6) + '@types/web': 0.0.197 + crypto-browserify: 3.12.0 + socks-proxy-agent: 8.0.5 + stream-browserify: 3.0.0 + tslib: 2.8.1 + xrpl: 4.4.3(bufferutil@4.1.0)(utf-8-validate@6.0.6) + transitivePeerDependencies: + - '@solana/sysvars' + - bufferutil + - debug + - expo-constants + - expo-localization + - fastestsmallesttextencoderdecoder + - react-native + - supports-color + - typescript + - utf-8-validate + - ws + + '@trezor/connect-analytics@1.4.0(tslib@2.8.1)': + dependencies: + '@trezor/analytics': 1.5.0(tslib@2.8.1) + tslib: 2.8.1 + transitivePeerDependencies: + - expo-constants + - expo-localization + - react-native + + '@trezor/connect-common@0.5.1(tslib@2.8.1)': + dependencies: + '@trezor/env-utils': 1.5.0(tslib@2.8.1) + '@trezor/type-utils': 1.2.0 + '@trezor/utils': 9.5.0(tslib@2.8.1) + tslib: 2.8.1 + transitivePeerDependencies: + - expo-constants + - expo-localization + - react-native + + '@trezor/connect-plugin-stellar@9.2.6(@stellar/stellar-sdk@15.0.1)(@trezor/connect@9.7.2(@solana/sysvars@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3))(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(tslib@2.8.1)(typescript@5.9.3)(utf-8-validate@6.0.6)(ws@8.18.0(bufferutil@4.1.0)(utf-8-validate@6.0.6)))(tslib@2.8.1)': + dependencies: + '@stellar/stellar-sdk': 15.0.1 + '@trezor/connect': 9.7.2(@solana/sysvars@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3))(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(tslib@2.8.1)(typescript@5.9.3)(utf-8-validate@6.0.6)(ws@8.18.0(bufferutil@4.1.0)(utf-8-validate@6.0.6)) + '@trezor/utils': 9.5.0(tslib@2.8.1) + tslib: 2.8.1 + + '@trezor/connect-web@9.7.2(@solana/sysvars@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3))(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(tslib@2.8.1)(typescript@5.9.3)(utf-8-validate@6.0.6)(ws@8.18.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))': + dependencies: + '@trezor/connect': 9.7.2(@solana/sysvars@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3))(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(tslib@2.8.1)(typescript@5.9.3)(utf-8-validate@6.0.6)(ws@8.18.0(bufferutil@4.1.0)(utf-8-validate@6.0.6)) + '@trezor/connect-common': 0.5.1(tslib@2.8.1) + '@trezor/utils': 9.5.0(tslib@2.8.1) + '@trezor/websocket-client': 1.3.0(bufferutil@4.1.0)(tslib@2.8.1)(utf-8-validate@6.0.6) + tslib: 2.8.1 + transitivePeerDependencies: + - '@solana/sysvars' + - bufferutil + - debug + - encoding + - expo-constants + - expo-localization + - fastestsmallesttextencoderdecoder + - react-native + - supports-color + - typescript + - utf-8-validate + - ws + + '@trezor/connect@9.7.2(@solana/sysvars@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3))(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(tslib@2.8.1)(typescript@5.9.3)(utf-8-validate@6.0.6)(ws@8.18.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))': + dependencies: + '@ethereumjs/common': 10.1.1 + '@ethereumjs/tx': 10.1.1 + '@fivebinaries/coin-selection': 3.0.0 + '@mobily/ts-belt': 3.13.1 + '@noble/hashes': 1.8.0 + '@scure/bip39': 1.6.0 + '@solana-program/compute-budget': 0.8.0(@solana/kit@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))) + '@solana-program/system': 0.7.0(@solana/kit@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))) + '@solana-program/token': 0.5.1(@solana/kit@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))) + '@solana-program/token-2022': 0.4.2(@solana/kit@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.0(bufferutil@4.1.0)(utf-8-validate@6.0.6)))(@solana/sysvars@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)) + '@solana/kit': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.0(bufferutil@4.1.0)(utf-8-validate@6.0.6)) + '@trezor/blockchain-link': 2.6.1(@solana/sysvars@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3))(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(tslib@2.8.1)(typescript@5.9.3)(utf-8-validate@6.0.6)(ws@8.18.0(bufferutil@4.1.0)(utf-8-validate@6.0.6)) + '@trezor/blockchain-link-types': 1.5.1(tslib@2.8.1) + '@trezor/blockchain-link-utils': 1.5.2(bufferutil@4.1.0)(tslib@2.8.1)(utf-8-validate@6.0.6) + '@trezor/connect-analytics': 1.4.0(tslib@2.8.1) + '@trezor/connect-common': 0.5.1(tslib@2.8.1) + '@trezor/crypto-utils': 1.2.0(tslib@2.8.1) + '@trezor/device-authenticity': 1.1.2(tslib@2.8.1) + '@trezor/device-utils': 1.2.0 + '@trezor/env-utils': 1.5.0(tslib@2.8.1) + '@trezor/protobuf': 1.5.2(tslib@2.8.1) + '@trezor/protocol': 1.3.0(tslib@2.8.1) + '@trezor/schema-utils': 1.4.0(tslib@2.8.1) + '@trezor/transport': 1.6.2(tslib@2.8.1) + '@trezor/type-utils': 1.2.0 + '@trezor/utils': 9.5.0(tslib@2.8.1) + '@trezor/utxo-lib': 2.5.0(tslib@2.8.1) + blakejs: 1.2.1 + bs58: 6.0.0 + bs58check: 4.0.0 + cbor: 10.0.12 + cross-fetch: 4.1.0 + jws: 4.0.1 + tslib: 2.8.1 + transitivePeerDependencies: + - '@solana/sysvars' + - bufferutil + - debug + - encoding + - expo-constants + - expo-localization + - fastestsmallesttextencoderdecoder + - react-native + - supports-color + - typescript + - utf-8-validate + - ws + + '@trezor/crypto-utils@1.2.0(tslib@2.8.1)': + dependencies: + tslib: 2.8.1 + + '@trezor/device-authenticity@1.1.2(tslib@2.8.1)': + dependencies: + '@noble/curves': 2.0.1 + '@trezor/crypto-utils': 1.2.0(tslib@2.8.1) + '@trezor/protobuf': 1.5.2(tslib@2.8.1) + '@trezor/schema-utils': 1.4.0(tslib@2.8.1) + '@trezor/utils': 9.5.0(tslib@2.8.1) + transitivePeerDependencies: + - tslib + + '@trezor/device-utils@1.2.0': {} + + '@trezor/env-utils@1.5.0(tslib@2.8.1)': + dependencies: + tslib: 2.8.1 + ua-parser-js: 2.0.9 + + '@trezor/protobuf@1.5.1(tslib@2.8.1)': + dependencies: + '@trezor/schema-utils': 1.4.0(tslib@2.8.1) + long: 5.2.5 + protobufjs: 7.4.0 + tslib: 2.8.1 + + '@trezor/protobuf@1.5.2(tslib@2.8.1)': + dependencies: + '@trezor/schema-utils': 1.4.0(tslib@2.8.1) + long: 5.2.5 + protobufjs: 7.4.0 + tslib: 2.8.1 + + '@trezor/protocol@1.3.0(tslib@2.8.1)': + dependencies: + tslib: 2.8.1 + + '@trezor/schema-utils@1.4.0(tslib@2.8.1)': + dependencies: + '@sinclair/typebox': 0.33.22 + ts-mixer: 6.0.4 + tslib: 2.8.1 + + '@trezor/transport@1.6.2(tslib@2.8.1)': + dependencies: + '@trezor/protobuf': 1.5.2(tslib@2.8.1) + '@trezor/protocol': 1.3.0(tslib@2.8.1) + '@trezor/type-utils': 1.2.0 + '@trezor/utils': 9.5.0(tslib@2.8.1) + cross-fetch: 4.1.0 + tslib: 2.8.1 + usb: 2.17.0 + transitivePeerDependencies: + - encoding + + '@trezor/type-utils@1.2.0': {} + + '@trezor/utils@9.5.0(tslib@2.8.1)': + dependencies: + bignumber.js: 9.3.1 + tslib: 2.8.1 + + '@trezor/utxo-lib@2.5.0(tslib@2.8.1)': + dependencies: + '@trezor/utils': 9.5.0(tslib@2.8.1) + bech32: 2.0.0 + bip66: 2.0.0 + bitcoin-ops: 1.4.1 + blake-hash: 2.0.0 + blakejs: 1.2.1 + bn.js: 5.2.3 + bs58: 6.0.0 + bs58check: 4.0.0 + cashaddrjs: 0.4.4 + create-hmac: 1.1.7 + int64-buffer: 1.1.0 + pushdata-bitcoin: 1.0.1 + tiny-secp256k1: 1.1.7 + tslib: 2.8.1 + typeforce: 1.18.0 + varuint-bitcoin: 2.0.0 + wif: 5.0.0 + + '@trezor/websocket-client@1.3.0(bufferutil@4.1.0)(tslib@2.8.1)(utf-8-validate@6.0.6)': + dependencies: + '@trezor/utils': 9.5.0(tslib@2.8.1) + tslib: 2.8.1 + ws: 8.20.0(bufferutil@4.1.0)(utf-8-validate@6.0.6) + transitivePeerDependencies: + - bufferutil + - utf-8-validate + '@tsconfig/node10@1.0.11': {} '@tsconfig/node12@1.0.11': {} @@ -10787,6 +13219,25 @@ snapshots: '@tsconfig/node16@1.0.4': {} + '@twind/core@1.1.3(typescript@5.9.3)': + dependencies: + csstype: 3.2.3 + optionalDependencies: + typescript: 5.9.3 + + '@twind/preset-autoprefix@1.0.7(@twind/core@1.1.3(typescript@5.9.3))(typescript@5.9.3)': + dependencies: + '@twind/core': 1.1.3(typescript@5.9.3) + style-vendorizer: 2.2.3 + optionalDependencies: + typescript: 5.9.3 + + '@twind/preset-tailwind@1.1.4(@twind/core@1.1.3(typescript@5.9.3))(typescript@5.9.3)': + dependencies: + '@twind/core': 1.1.3(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + '@tybys/wasm-util@0.10.0': dependencies: tslib: 2.8.1 @@ -10906,6 +13357,8 @@ snapshots: '@types/ms@2.1.0': {} + '@types/node@12.20.55': {} + '@types/node@18.19.130': dependencies: undici-types: 5.26.5 @@ -10979,8 +13432,22 @@ snapshots: '@types/trusted-types@2.0.7': {} + '@types/uuid@10.0.0': {} + '@types/validator@13.15.3': {} + '@types/w3c-web-usb@1.0.14': {} + + '@types/web@0.0.197': {} + + '@types/ws@7.4.7': + dependencies: + '@types/node': 22.19.17 + + '@types/ws@8.18.1': + dependencies: + '@types/node': 22.19.17 + '@types/yargs-parser@21.0.3': {} '@types/yargs@17.0.35': @@ -11145,8 +13612,8 @@ snapshots: '@vanilla-extract/private': 1.0.9 css-what: 6.2.2 cssesc: 3.0.0 - csstype: 3.1.3 - dedent: 1.7.0 + csstype: 3.2.3 + dedent: 1.7.2 deep-object-diff: 1.1.9 deepmerge: 4.3.1 lru-cache: 10.4.3 @@ -11166,21 +13633,147 @@ snapshots: dependencies: '@vanilla-extract/css': 1.17.3 - '@wagmi/connectors@6.2.0(@tanstack/react-query@5.98.0(react@19.1.0))(@types/react@19.2.14)(@wagmi/core@2.22.1(@tanstack/query-core@5.98.0)(@types/react@19.2.14)(react@19.1.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.1.0))(viem@2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6)))(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.1.0))(utf-8-validate@5.0.10)(viem@2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6))(wagmi@2.19.5(@tanstack/query-core@5.98.0)(@tanstack/react-query@5.98.0(react@19.1.0))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6))(zod@4.3.6))(zod@4.3.6)': + '@wagmi/connectors@6.2.0(@tanstack/react-query@5.98.0(react@19.2.5))(@types/react@19.2.14)(@wagmi/core@2.22.1(@tanstack/query-core@5.98.0)(@types/react@19.2.14)(react@19.2.5)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.5))(viem@2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76)))(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(react@19.2.5)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.5))(utf-8-validate@6.0.6)(viem@2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.98.0)(@tanstack/react-query@5.98.0(react@19.2.5))(@types/react@19.2.14)(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(viem@2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76))(zod@3.25.76))(zod@3.25.76)': dependencies: - '@base-org/account': 2.4.0(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.1.0))(utf-8-validate@5.0.10)(zod@4.3.6) - '@coinbase/wallet-sdk': 4.3.6(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.1.0))(utf-8-validate@5.0.10)(zod@4.3.6) - '@gemini-wallet/core': 0.3.2(viem@2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6)) - '@metamask/sdk': 0.33.1(bufferutil@4.1.0)(utf-8-validate@5.0.10) - '@safe-global/safe-apps-provider': 0.18.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) - '@safe-global/safe-apps-sdk': 9.1.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) - '@wagmi/core': 2.22.1(@tanstack/query-core@5.98.0)(@types/react@19.2.14)(react@19.1.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.1.0))(viem@2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6)) - '@walletconnect/ethereum-provider': 2.21.1(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + '@base-org/account': 2.4.0(@types/react@19.2.14)(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(react@19.2.5)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.5))(utf-8-validate@6.0.6)(zod@3.25.76) + '@coinbase/wallet-sdk': 4.3.6(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.5))(utf-8-validate@6.0.6)(zod@3.25.76) + '@gemini-wallet/core': 0.3.2(viem@2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76)) + '@metamask/sdk': 0.33.1(bufferutil@4.1.0)(utf-8-validate@6.0.6) + '@safe-global/safe-apps-provider': 0.18.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76) + '@safe-global/safe-apps-sdk': 9.1.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76) + '@wagmi/core': 2.22.1(@tanstack/query-core@5.98.0)(@types/react@19.2.14)(react@19.2.5)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.5))(viem@2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76)) + '@walletconnect/ethereum-provider': 2.21.1(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76) cbw-sdk: '@coinbase/wallet-sdk@3.9.3' - porto: 0.2.35(@tanstack/react-query@5.98.0(react@19.1.0))(@types/react@19.2.14)(@wagmi/core@2.22.1(@tanstack/query-core@5.98.0)(@types/react@19.2.14)(react@19.1.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.1.0))(viem@2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6)))(react@19.1.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.1.0))(viem@2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6))(wagmi@2.19.5(@tanstack/query-core@5.98.0)(@tanstack/react-query@5.98.0(react@19.1.0))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6))(zod@4.3.6)) - viem: 2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + porto: 0.2.35(@tanstack/react-query@5.98.0(react@19.2.5))(@types/react@19.2.14)(@wagmi/core@2.22.1(@tanstack/query-core@5.98.0)(@types/react@19.2.14)(react@19.2.5)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.5))(viem@2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76)))(react@19.2.5)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.5))(viem@2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.98.0)(@tanstack/react-query@5.98.0(react@19.2.5))(@types/react@19.2.14)(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(viem@2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76))(zod@3.25.76)) + viem: 2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@tanstack/react-query' + - '@types/react' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - debug + - encoding + - expo-auth-session + - expo-crypto + - expo-web-browser + - fastestsmallesttextencoderdecoder + - immer + - ioredis + - react + - react-native + - supports-color + - uploadthing + - use-sync-external-store + - utf-8-validate + - wagmi + - zod + + '@wagmi/core@2.22.1(@tanstack/query-core@5.98.0)(@types/react@19.2.14)(react@19.2.5)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.5))(viem@2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76))': + dependencies: + eventemitter3: 5.0.1 + mipd: 0.0.7(typescript@5.9.3) + viem: 2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76) + zustand: 5.0.0(@types/react@19.2.14)(react@19.2.5)(use-sync-external-store@1.4.0(react@19.2.5)) optionalDependencies: + '@tanstack/query-core': 5.98.0 typescript: 5.9.3 + transitivePeerDependencies: + - '@types/react' + - immer + - react + - use-sync-external-store + + '@wallet-standard/base@1.1.0': {} + + '@wallet-standard/features@1.1.0': + dependencies: + '@wallet-standard/base': 1.1.0 + + '@wallet-standard/wallet@1.1.0': + dependencies: + '@wallet-standard/base': 1.1.0 + + '@walletconnect/core@2.21.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76)': + dependencies: + '@walletconnect/heartbeat': 1.2.2 + '@walletconnect/jsonrpc-provider': 1.0.14 + '@walletconnect/jsonrpc-types': 1.0.4 + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/jsonrpc-ws-connection': 1.0.16(bufferutil@4.1.0)(utf-8-validate@6.0.6) + '@walletconnect/keyvaluestorage': 1.1.1 + '@walletconnect/logger': 2.1.2 + '@walletconnect/relay-api': 1.0.11 + '@walletconnect/relay-auth': 1.1.0 + '@walletconnect/safe-json': 1.0.2 + '@walletconnect/time': 1.0.2 + '@walletconnect/types': 2.21.0 + '@walletconnect/utils': 2.21.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76) + '@walletconnect/window-getters': 1.0.1 + es-toolkit: 1.33.0 + events: 3.3.0 + uint8arrays: 3.1.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - ioredis + - typescript + - uploadthing + - utf-8-validate + - zod + + '@walletconnect/core@2.21.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76)': + dependencies: + '@walletconnect/heartbeat': 1.2.2 + '@walletconnect/jsonrpc-provider': 1.0.14 + '@walletconnect/jsonrpc-types': 1.0.4 + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/jsonrpc-ws-connection': 1.0.16(bufferutil@4.1.0)(utf-8-validate@6.0.6) + '@walletconnect/keyvaluestorage': 1.1.1 + '@walletconnect/logger': 2.1.2 + '@walletconnect/relay-api': 1.0.11 + '@walletconnect/relay-auth': 1.1.0 + '@walletconnect/safe-json': 1.0.2 + '@walletconnect/time': 1.0.2 + '@walletconnect/types': 2.21.1 + '@walletconnect/utils': 2.21.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76) + '@walletconnect/window-getters': 1.0.1 + es-toolkit: 1.33.0 + events: 3.3.0 + uint8arrays: 3.1.0 transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -11193,8 +13786,6 @@ snapshots: - '@netlify/blobs' - '@planetscale/database' - '@react-native-async-storage/async-storage' - - '@tanstack/react-query' - - '@types/react' - '@upstash/redis' - '@vercel/blob' - '@vercel/functions' @@ -11202,57 +13793,31 @@ snapshots: - aws4fetch - bufferutil - db0 - - debug - - encoding - - expo-auth-session - - expo-crypto - - expo-web-browser - - fastestsmallesttextencoderdecoder - - immer - ioredis - - react - - react-native - - supports-color + - typescript - uploadthing - - use-sync-external-store - utf-8-validate - - wagmi - zod - '@wagmi/core@2.22.1(@tanstack/query-core@5.98.0)(@types/react@19.2.14)(react@19.1.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.1.0))(viem@2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6))': - dependencies: - eventemitter3: 5.0.1 - mipd: 0.0.7(typescript@5.9.3) - viem: 2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) - zustand: 5.0.0(@types/react@19.2.14)(react@19.1.0)(use-sync-external-store@1.4.0(react@19.1.0)) - optionalDependencies: - '@tanstack/query-core': 5.98.0 - typescript: 5.9.3 - transitivePeerDependencies: - - '@types/react' - - immer - - react - - use-sync-external-store - - '@walletconnect/core@2.21.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6)': + '@walletconnect/core@2.23.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76)': dependencies: '@walletconnect/heartbeat': 1.2.2 '@walletconnect/jsonrpc-provider': 1.0.14 '@walletconnect/jsonrpc-types': 1.0.4 '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/jsonrpc-ws-connection': 1.0.16(bufferutil@4.1.0)(utf-8-validate@5.0.10) + '@walletconnect/jsonrpc-ws-connection': 1.0.16(bufferutil@4.1.0)(utf-8-validate@6.0.6) '@walletconnect/keyvaluestorage': 1.1.1 - '@walletconnect/logger': 2.1.2 + '@walletconnect/logger': 3.0.0 '@walletconnect/relay-api': 1.0.11 '@walletconnect/relay-auth': 1.1.0 '@walletconnect/safe-json': 1.0.2 '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.21.0 - '@walletconnect/utils': 2.21.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + '@walletconnect/types': 2.23.0 + '@walletconnect/utils': 2.23.0(typescript@5.9.3)(zod@3.25.76) '@walletconnect/window-getters': 1.0.1 - es-toolkit: 1.33.0 + es-toolkit: 1.39.3 events: 3.3.0 - uint8arrays: 3.1.0 + uint8arrays: 3.1.1 transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -11278,25 +13843,25 @@ snapshots: - utf-8-validate - zod - '@walletconnect/core@2.21.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6)': + '@walletconnect/core@2.23.7(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76)': dependencies: '@walletconnect/heartbeat': 1.2.2 '@walletconnect/jsonrpc-provider': 1.0.14 '@walletconnect/jsonrpc-types': 1.0.4 '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/jsonrpc-ws-connection': 1.0.16(bufferutil@4.1.0)(utf-8-validate@5.0.10) + '@walletconnect/jsonrpc-ws-connection': 1.0.16(bufferutil@4.1.0)(utf-8-validate@6.0.6) '@walletconnect/keyvaluestorage': 1.1.1 - '@walletconnect/logger': 2.1.2 + '@walletconnect/logger': 3.0.2 '@walletconnect/relay-api': 1.0.11 '@walletconnect/relay-auth': 1.1.0 '@walletconnect/safe-json': 1.0.2 '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.21.1 - '@walletconnect/utils': 2.21.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + '@walletconnect/types': 2.23.7 + '@walletconnect/utils': 2.23.7(typescript@5.9.3)(zod@3.25.76) '@walletconnect/window-getters': 1.0.1 - es-toolkit: 1.33.0 + es-toolkit: 1.44.0 events: 3.3.0 - uint8arrays: 3.1.0 + uint8arrays: 3.1.1 transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -11326,18 +13891,18 @@ snapshots: dependencies: tslib: 1.14.1 - '@walletconnect/ethereum-provider@2.21.1(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6)': + '@walletconnect/ethereum-provider@2.21.1(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76)': dependencies: - '@reown/appkit': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + '@reown/appkit': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76) '@walletconnect/jsonrpc-http-connection': 1.0.8 '@walletconnect/jsonrpc-provider': 1.0.14 '@walletconnect/jsonrpc-types': 1.0.4 '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/keyvaluestorage': 1.1.1 - '@walletconnect/sign-client': 2.21.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + '@walletconnect/sign-client': 2.21.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76) '@walletconnect/types': 2.21.1 - '@walletconnect/universal-provider': 2.21.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) - '@walletconnect/utils': 2.21.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + '@walletconnect/universal-provider': 2.21.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76) + '@walletconnect/utils': 2.21.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76) events: 3.3.0 transitivePeerDependencies: - '@azure/app-configuration' @@ -11404,12 +13969,12 @@ snapshots: '@walletconnect/jsonrpc-types': 1.0.4 tslib: 1.14.1 - '@walletconnect/jsonrpc-ws-connection@1.0.16(bufferutil@4.1.0)(utf-8-validate@5.0.10)': + '@walletconnect/jsonrpc-ws-connection@1.0.16(bufferutil@4.1.0)(utf-8-validate@6.0.6)': dependencies: '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/safe-json': 1.0.2 events: 3.3.0 - ws: 7.5.10(bufferutil@4.1.0)(utf-8-validate@5.0.10) + ws: 7.5.10(bufferutil@4.1.0)(utf-8-validate@6.0.6) transitivePeerDependencies: - bufferutil - utf-8-validate @@ -11439,37 +14004,250 @@ snapshots: - ioredis - uploadthing - '@walletconnect/logger@2.1.2': - dependencies: - '@walletconnect/safe-json': 1.0.2 - pino: 7.11.0 - - '@walletconnect/relay-api@1.0.11': - dependencies: - '@walletconnect/jsonrpc-types': 1.0.4 - - '@walletconnect/relay-auth@1.1.0': - dependencies: - '@noble/curves': 1.8.0 - '@noble/hashes': 1.7.0 - '@walletconnect/safe-json': 1.0.2 - '@walletconnect/time': 1.0.2 - uint8arrays: 3.1.0 - - '@walletconnect/safe-json@1.0.2': - dependencies: - tslib: 1.14.1 - - '@walletconnect/sign-client@2.21.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6)': + '@walletconnect/logger@2.1.2': + dependencies: + '@walletconnect/safe-json': 1.0.2 + pino: 7.11.0 + + '@walletconnect/logger@3.0.0': + dependencies: + '@walletconnect/safe-json': 1.0.2 + pino: 10.0.0 + + '@walletconnect/logger@3.0.2': + dependencies: + '@walletconnect/safe-json': 1.0.2 + pino: 10.0.0 + + '@walletconnect/relay-api@1.0.11': + dependencies: + '@walletconnect/jsonrpc-types': 1.0.4 + + '@walletconnect/relay-auth@1.1.0': + dependencies: + '@noble/curves': 1.8.0 + '@noble/hashes': 1.7.0 + '@walletconnect/safe-json': 1.0.2 + '@walletconnect/time': 1.0.2 + uint8arrays: 3.1.1 + + '@walletconnect/safe-json@1.0.2': + dependencies: + tslib: 1.14.1 + + '@walletconnect/sign-client@2.21.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76)': + dependencies: + '@walletconnect/core': 2.21.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76) + '@walletconnect/events': 1.0.1 + '@walletconnect/heartbeat': 1.2.2 + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/logger': 2.1.2 + '@walletconnect/time': 1.0.2 + '@walletconnect/types': 2.21.0 + '@walletconnect/utils': 2.21.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76) + events: 3.3.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - ioredis + - typescript + - uploadthing + - utf-8-validate + - zod + + '@walletconnect/sign-client@2.21.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76)': + dependencies: + '@walletconnect/core': 2.21.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76) + '@walletconnect/events': 1.0.1 + '@walletconnect/heartbeat': 1.2.2 + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/logger': 2.1.2 + '@walletconnect/time': 1.0.2 + '@walletconnect/types': 2.21.1 + '@walletconnect/utils': 2.21.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76) + events: 3.3.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - ioredis + - typescript + - uploadthing + - utf-8-validate + - zod + + '@walletconnect/sign-client@2.23.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76)': + dependencies: + '@walletconnect/core': 2.23.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76) + '@walletconnect/events': 1.0.1 + '@walletconnect/heartbeat': 1.2.2 + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/logger': 3.0.0 + '@walletconnect/time': 1.0.2 + '@walletconnect/types': 2.23.0 + '@walletconnect/utils': 2.23.0(typescript@5.9.3)(zod@3.25.76) + events: 3.3.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - ioredis + - typescript + - uploadthing + - utf-8-validate + - zod + + '@walletconnect/sign-client@2.23.7(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76)': + dependencies: + '@walletconnect/core': 2.23.7(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76) + '@walletconnect/events': 1.0.1 + '@walletconnect/heartbeat': 1.2.2 + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/logger': 3.0.2 + '@walletconnect/time': 1.0.2 + '@walletconnect/types': 2.23.7 + '@walletconnect/utils': 2.23.7(typescript@5.9.3)(zod@3.25.76) + events: 3.3.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - ioredis + - typescript + - uploadthing + - utf-8-validate + - zod + + '@walletconnect/time@1.0.2': + dependencies: + tslib: 1.14.1 + + '@walletconnect/types@2.21.0': + dependencies: + '@walletconnect/events': 1.0.1 + '@walletconnect/heartbeat': 1.2.2 + '@walletconnect/jsonrpc-types': 1.0.4 + '@walletconnect/keyvaluestorage': 1.1.1 + '@walletconnect/logger': 2.1.2 + events: 3.3.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - db0 + - ioredis + - uploadthing + + '@walletconnect/types@2.21.1': + dependencies: + '@walletconnect/events': 1.0.1 + '@walletconnect/heartbeat': 1.2.2 + '@walletconnect/jsonrpc-types': 1.0.4 + '@walletconnect/keyvaluestorage': 1.1.1 + '@walletconnect/logger': 2.1.2 + events: 3.3.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - db0 + - ioredis + - uploadthing + + '@walletconnect/types@2.23.0': dependencies: - '@walletconnect/core': 2.21.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) '@walletconnect/events': 1.0.1 '@walletconnect/heartbeat': 1.2.2 - '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/logger': 2.1.2 - '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.21.0 - '@walletconnect/utils': 2.21.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + '@walletconnect/jsonrpc-types': 1.0.4 + '@walletconnect/keyvaluestorage': 1.1.1 + '@walletconnect/logger': 3.0.0 events: 3.3.0 transitivePeerDependencies: - '@azure/app-configuration' @@ -11488,24 +14266,17 @@ snapshots: - '@vercel/functions' - '@vercel/kv' - aws4fetch - - bufferutil - db0 - ioredis - - typescript - uploadthing - - utf-8-validate - - zod - '@walletconnect/sign-client@2.21.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6)': + '@walletconnect/types@2.23.7': dependencies: - '@walletconnect/core': 2.21.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) '@walletconnect/events': 1.0.1 '@walletconnect/heartbeat': 1.2.2 - '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/logger': 2.1.2 - '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.21.1 - '@walletconnect/utils': 2.21.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + '@walletconnect/jsonrpc-types': 1.0.4 + '@walletconnect/keyvaluestorage': 1.1.1 + '@walletconnect/logger': 3.0.2 events: 3.3.0 transitivePeerDependencies: - '@azure/app-configuration' @@ -11524,25 +14295,17 @@ snapshots: - '@vercel/functions' - '@vercel/kv' - aws4fetch - - bufferutil - db0 - ioredis - - typescript - uploadthing - - utf-8-validate - - zod - - '@walletconnect/time@1.0.2': - dependencies: - tslib: 1.14.1 - '@walletconnect/types@2.21.0': + '@walletconnect/types@2.23.9': dependencies: '@walletconnect/events': 1.0.1 '@walletconnect/heartbeat': 1.2.2 '@walletconnect/jsonrpc-types': 1.0.4 '@walletconnect/keyvaluestorage': 1.1.1 - '@walletconnect/logger': 2.1.2 + '@walletconnect/logger': 3.0.2 events: 3.3.0 transitivePeerDependencies: - '@azure/app-configuration' @@ -11565,13 +14328,19 @@ snapshots: - ioredis - uploadthing - '@walletconnect/types@2.21.1': + '@walletconnect/universal-provider@2.21.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76)': dependencies: '@walletconnect/events': 1.0.1 - '@walletconnect/heartbeat': 1.2.2 + '@walletconnect/jsonrpc-http-connection': 1.0.8 + '@walletconnect/jsonrpc-provider': 1.0.14 '@walletconnect/jsonrpc-types': 1.0.4 + '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/keyvaluestorage': 1.1.1 '@walletconnect/logger': 2.1.2 + '@walletconnect/sign-client': 2.21.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76) + '@walletconnect/types': 2.21.0 + '@walletconnect/utils': 2.21.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76) + es-toolkit: 1.33.0 events: 3.3.0 transitivePeerDependencies: - '@azure/app-configuration' @@ -11590,11 +14359,16 @@ snapshots: - '@vercel/functions' - '@vercel/kv' - aws4fetch + - bufferutil - db0 + - encoding - ioredis + - typescript - uploadthing + - utf-8-validate + - zod - '@walletconnect/universal-provider@2.21.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6)': + '@walletconnect/universal-provider@2.21.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76)': dependencies: '@walletconnect/events': 1.0.1 '@walletconnect/jsonrpc-http-connection': 1.0.8 @@ -11603,9 +14377,9 @@ snapshots: '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/keyvaluestorage': 1.1.1 '@walletconnect/logger': 2.1.2 - '@walletconnect/sign-client': 2.21.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) - '@walletconnect/types': 2.21.0 - '@walletconnect/utils': 2.21.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + '@walletconnect/sign-client': 2.21.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76) + '@walletconnect/types': 2.21.1 + '@walletconnect/utils': 2.21.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76) es-toolkit: 1.33.0 events: 3.3.0 transitivePeerDependencies: @@ -11634,7 +14408,7 @@ snapshots: - utf-8-validate - zod - '@walletconnect/universal-provider@2.21.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6)': + '@walletconnect/universal-provider@2.23.7(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76)': dependencies: '@walletconnect/events': 1.0.1 '@walletconnect/jsonrpc-http-connection': 1.0.8 @@ -11642,11 +14416,11 @@ snapshots: '@walletconnect/jsonrpc-types': 1.0.4 '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/keyvaluestorage': 1.1.1 - '@walletconnect/logger': 2.1.2 - '@walletconnect/sign-client': 2.21.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) - '@walletconnect/types': 2.21.1 - '@walletconnect/utils': 2.21.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) - es-toolkit: 1.33.0 + '@walletconnect/logger': 3.0.2 + '@walletconnect/sign-client': 2.23.7(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76) + '@walletconnect/types': 2.23.7 + '@walletconnect/utils': 2.23.7(typescript@5.9.3)(zod@3.25.76) + es-toolkit: 1.44.0 events: 3.3.0 transitivePeerDependencies: - '@azure/app-configuration' @@ -11674,7 +14448,7 @@ snapshots: - utf-8-validate - zod - '@walletconnect/utils@2.21.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6)': + '@walletconnect/utils@2.21.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76)': dependencies: '@noble/ciphers': 1.2.1 '@noble/curves': 1.8.1 @@ -11692,7 +14466,7 @@ snapshots: detect-browser: 5.3.0 query-string: 7.1.3 uint8arrays: 3.1.0 - viem: 2.23.2(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + viem: 2.23.2(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -11718,7 +14492,7 @@ snapshots: - utf-8-validate - zod - '@walletconnect/utils@2.21.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6)': + '@walletconnect/utils@2.21.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76)': dependencies: '@noble/ciphers': 1.2.1 '@noble/curves': 1.8.1 @@ -11736,7 +14510,7 @@ snapshots: detect-browser: 5.3.0 query-string: 7.1.3 uint8arrays: 3.1.0 - viem: 2.23.2(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + viem: 2.23.2(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -11762,6 +14536,95 @@ snapshots: - utf-8-validate - zod + '@walletconnect/utils@2.23.0(typescript@5.9.3)(zod@3.25.76)': + dependencies: + '@msgpack/msgpack': 3.1.2 + '@noble/ciphers': 1.3.0 + '@noble/curves': 1.9.7 + '@noble/hashes': 1.8.0 + '@scure/base': 1.2.6 + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/keyvaluestorage': 1.1.1 + '@walletconnect/logger': 3.0.0 + '@walletconnect/relay-api': 1.0.11 + '@walletconnect/relay-auth': 1.1.0 + '@walletconnect/safe-json': 1.0.2 + '@walletconnect/time': 1.0.2 + '@walletconnect/types': 2.23.0 + '@walletconnect/window-getters': 1.0.1 + '@walletconnect/window-metadata': 1.0.1 + blakejs: 1.2.1 + bs58: 6.0.0 + detect-browser: 5.3.0 + ox: 0.9.3(typescript@5.9.3)(zod@3.25.76) + uint8arrays: 3.1.1 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - db0 + - ioredis + - typescript + - uploadthing + - zod + + '@walletconnect/utils@2.23.7(typescript@5.9.3)(zod@3.25.76)': + dependencies: + '@msgpack/msgpack': 3.1.3 + '@noble/ciphers': 1.3.0 + '@noble/curves': 1.9.7 + '@noble/hashes': 1.8.0 + '@scure/base': 1.2.6 + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/keyvaluestorage': 1.1.1 + '@walletconnect/logger': 3.0.2 + '@walletconnect/relay-api': 1.0.11 + '@walletconnect/relay-auth': 1.1.0 + '@walletconnect/safe-json': 1.0.2 + '@walletconnect/time': 1.0.2 + '@walletconnect/types': 2.23.7 + '@walletconnect/window-getters': 1.0.1 + '@walletconnect/window-metadata': 1.0.1 + blakejs: 1.2.1 + detect-browser: 5.3.0 + ox: 0.9.3(typescript@5.9.3)(zod@3.25.76) + uint8arrays: 3.1.1 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - db0 + - ioredis + - typescript + - uploadthing + - zod + '@walletconnect/window-getters@1.0.1': dependencies: tslib: 1.14.1 @@ -11847,6 +14710,23 @@ snapshots: '@webassemblyjs/ast': 1.14.1 '@xtuc/long': 4.2.2 + '@xrplf/isomorphic@1.0.1(bufferutil@4.1.0)(utf-8-validate@6.0.6)': + dependencies: + '@noble/hashes': 1.8.0 + eventemitter3: 5.0.1 + ws: 8.20.0(bufferutil@4.1.0)(utf-8-validate@6.0.6) + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + '@xrplf/secret-numbers@2.0.0(bufferutil@4.1.0)(utf-8-validate@6.0.6)': + dependencies: + '@xrplf/isomorphic': 1.0.1(bufferutil@4.1.0)(utf-8-validate@6.0.6) + ripple-keypairs: 2.0.0(bufferutil@4.1.0)(utf-8-validate@6.0.6) + transitivePeerDependencies: + - bufferutil + - utf-8-validate + '@xtuc/ieee754@1.2.0': {} '@xtuc/long@4.2.2': {} @@ -11858,10 +14738,10 @@ snapshots: typescript: 5.9.3 zod: 3.25.76 - abitype@1.0.8(typescript@5.9.3)(zod@4.3.6): + abitype@1.0.8(typescript@5.9.3)(zod@3.25.76): optionalDependencies: typescript: 5.9.3 - zod: 4.3.6 + zod: 3.25.76 abitype@1.2.3(typescript@5.9.3)(zod@3.22.4): optionalDependencies: @@ -11924,6 +14804,12 @@ snapshots: aes-js@4.0.0-beta.5: {} + agent-base@7.1.4: {} + + agentkeepalive@4.6.0: + dependencies: + humanize-ms: 1.2.1 + ajv-formats@2.1.1(ajv@8.18.0): optionalDependencies: ajv: 8.18.0 @@ -11975,57 +14861,57 @@ snapshots: ansis@4.2.0: {} - antd@5.27.3(date-fns@4.1.0)(moment@2.30.1)(react-dom@19.2.5(react@19.1.0))(react@19.1.0): + antd@5.27.3(date-fns@4.1.0)(moment@2.30.1)(react-dom@19.2.5(react@19.2.5))(react@19.2.5): dependencies: '@ant-design/colors': 7.2.1 - '@ant-design/cssinjs': 1.24.0(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - '@ant-design/cssinjs-utils': 1.1.3(react-dom@19.2.5(react@19.1.0))(react@19.1.0) + '@ant-design/cssinjs': 1.24.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@ant-design/cssinjs-utils': 1.1.3(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@ant-design/fast-color': 2.0.6 - '@ant-design/icons': 5.6.1(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - '@ant-design/react-slick': 1.1.2(react@19.1.0) + '@ant-design/icons': 5.6.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@ant-design/react-slick': 1.1.2(react@19.2.5) '@babel/runtime': 7.28.4 - '@rc-component/color-picker': 2.0.1(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - '@rc-component/mutate-observer': 1.1.0(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - '@rc-component/qrcode': 1.0.1(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - '@rc-component/tour': 1.15.1(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - '@rc-component/trigger': 2.3.0(react-dom@19.2.5(react@19.1.0))(react@19.1.0) + '@rc-component/color-picker': 2.0.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@rc-component/mutate-observer': 1.1.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@rc-component/qrcode': 1.0.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@rc-component/tour': 1.15.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@rc-component/trigger': 2.3.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) classnames: 2.5.1 copy-to-clipboard: 3.3.3 dayjs: 1.11.18 - rc-cascader: 3.34.0(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - rc-checkbox: 3.5.0(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - rc-collapse: 3.9.0(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - rc-dialog: 9.6.0(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - rc-drawer: 7.3.0(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - rc-dropdown: 4.2.1(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - rc-field-form: 2.7.0(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - rc-image: 7.12.0(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - rc-input: 1.8.0(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - rc-input-number: 9.5.0(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - rc-mentions: 2.20.0(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - rc-menu: 9.16.1(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - rc-motion: 2.9.5(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - rc-notification: 5.6.4(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - rc-pagination: 5.1.0(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - rc-picker: 4.11.3(date-fns@4.1.0)(dayjs@1.11.18)(moment@2.30.1)(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - rc-progress: 4.0.0(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - rc-rate: 2.13.1(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - rc-resize-observer: 1.4.3(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - rc-segmented: 2.7.0(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - rc-select: 14.16.8(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - rc-slider: 11.1.8(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - rc-steps: 6.0.1(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - rc-switch: 4.1.0(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - rc-table: 7.52.7(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - rc-tabs: 15.7.0(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - rc-textarea: 1.10.2(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - rc-tooltip: 6.4.0(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - rc-tree: 5.13.1(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - rc-tree-select: 5.27.0(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - rc-upload: 4.9.2(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - rc-util: 5.44.4(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - react: 19.1.0 - react-dom: 19.2.5(react@19.1.0) + rc-cascader: 3.34.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + rc-checkbox: 3.5.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + rc-collapse: 3.9.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + rc-dialog: 9.6.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + rc-drawer: 7.3.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + rc-dropdown: 4.2.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + rc-field-form: 2.7.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + rc-image: 7.12.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + rc-input: 1.8.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + rc-input-number: 9.5.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + rc-mentions: 2.20.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + rc-menu: 9.16.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + rc-motion: 2.9.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + rc-notification: 5.6.4(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + rc-pagination: 5.1.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + rc-picker: 4.11.3(date-fns@4.1.0)(dayjs@1.11.18)(moment@2.30.1)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + rc-progress: 4.0.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + rc-rate: 2.13.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + rc-resize-observer: 1.4.3(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + rc-segmented: 2.7.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + rc-select: 14.16.8(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + rc-slider: 11.1.8(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + rc-steps: 6.0.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + rc-switch: 4.1.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + rc-table: 7.52.7(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + rc-tabs: 15.7.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + rc-textarea: 1.10.2(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + rc-tooltip: 6.4.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + rc-tree: 5.13.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + rc-tree-select: 5.27.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + rc-upload: 4.9.2(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + rc-util: 5.44.4(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) scroll-into-view-if-needed: 3.1.0 throttle-debounce: 5.0.2 transitivePeerDependencies: @@ -12147,6 +15033,12 @@ snapshots: asap@2.0.6: {} + asn1.js@4.10.1: + dependencies: + bn.js: 4.12.3 + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + asn1@0.2.6: dependencies: safer-buffer: 2.1.2 @@ -12284,6 +15176,10 @@ snapshots: dependencies: bare-path: 3.0.0 + base-x@3.0.11: + dependencies: + safe-buffer: 5.2.1 + base-x@5.0.1: {} base32.js@0.1.0: {} @@ -12300,18 +15196,42 @@ snapshots: dependencies: tweetnacl: 0.14.5 + bech32@2.0.0: {} + + big-integer@1.6.36: {} + big.js@6.2.2: {} bignumber.js@10.0.2: {} bignumber.js@9.3.1: {} + bindings@1.5.0: + dependencies: + file-uri-to-path: 1.0.0 + + bip32-path@0.4.2: {} + + bip66@2.0.0: {} + + bitcoin-ops@1.4.1: {} + bl@4.1.0: dependencies: buffer: 5.7.1 inherits: 2.0.4 readable-stream: 3.6.2 + blake-hash@2.0.0: + dependencies: + node-addon-api: 3.2.1 + node-gyp-build: 4.8.4 + readable-stream: 3.6.2 + + blakejs@1.2.1: {} + + bn.js@4.12.3: {} + bn.js@5.2.3: {} body-parser@2.2.2: @@ -12328,6 +15248,16 @@ snapshots: transitivePeerDependencies: - supports-color + borsh@0.7.0: + dependencies: + bn.js: 5.2.3 + bs58: 4.0.1 + text-encoding-utf-8: 1.0.2 + + borsh@1.0.0: {} + + borsh@2.0.0: {} + bowser@2.14.1: {} brace-expansion@1.1.14: @@ -12347,10 +15277,52 @@ snapshots: dependencies: fill-range: 7.1.1 + brorand@1.1.0: {} + browser-level@3.0.0: dependencies: abstract-level: 3.1.1 + browserify-aes@1.2.0: + dependencies: + buffer-xor: 1.0.3 + cipher-base: 1.0.7 + create-hash: 1.2.0 + evp_bytestokey: 1.0.3 + inherits: 2.0.4 + safe-buffer: 5.2.1 + + browserify-cipher@1.0.1: + dependencies: + browserify-aes: 1.2.0 + browserify-des: 1.0.2 + evp_bytestokey: 1.0.3 + + browserify-des@1.0.2: + dependencies: + cipher-base: 1.0.7 + des.js: 1.1.0 + inherits: 2.0.4 + safe-buffer: 5.2.1 + + browserify-rsa@4.1.1: + dependencies: + bn.js: 5.2.3 + randombytes: 2.1.0 + safe-buffer: 5.2.1 + + browserify-sign@4.2.5: + dependencies: + bn.js: 5.2.3 + browserify-rsa: 4.1.1 + create-hash: 1.2.0 + create-hmac: 1.1.7 + elliptic: 6.6.1 + inherits: 2.0.4 + parse-asn1: 5.1.9 + readable-stream: 2.3.8 + safe-buffer: 5.2.1 + browserslist@4.28.2: dependencies: baseline-browser-mapping: 2.10.18 @@ -12363,10 +15335,19 @@ snapshots: dependencies: fast-json-stable-stringify: 2.1.0 + bs58@4.0.1: + dependencies: + base-x: 3.0.11 + bs58@6.0.0: dependencies: base-x: 5.0.1 + bs58check@4.0.0: + dependencies: + '@noble/hashes': 1.8.0 + bs58: 6.0.0 + bser@2.1.1: dependencies: node-int64: 0.4.0 @@ -12379,6 +15360,8 @@ snapshots: buffer-reverse@1.0.1: {} + buffer-xor@1.0.3: {} + buffer@5.7.1: dependencies: base64-js: 1.5.1 @@ -12449,8 +15432,16 @@ snapshots: caniuse-lite@1.0.30001787: {} + cashaddrjs@0.4.4: + dependencies: + big-integer: 1.6.36 + catering@2.1.1: {} + cbor@10.0.12: + dependencies: + nofilter: 3.1.0 + chalk@4.1.2: dependencies: ansi-styles: 4.3.0 @@ -12480,6 +15471,12 @@ snapshots: ci-info@4.4.0: {} + cipher-base@1.0.7: + dependencies: + inherits: 2.0.4 + safe-buffer: 5.2.1 + to-buffer: 1.2.2 + citty@0.1.6: dependencies: consola: 3.4.2 @@ -12667,6 +15664,28 @@ snapshots: crc-32: 1.2.2 readable-stream: 4.7.0 + create-ecdh@4.0.4: + dependencies: + bn.js: 4.12.3 + elliptic: 6.6.1 + + create-hash@1.2.0: + dependencies: + cipher-base: 1.0.7 + inherits: 2.0.4 + md5.js: 1.3.5 + ripemd160: 2.0.3 + sha.js: 2.4.12 + + create-hmac@1.1.7: + dependencies: + cipher-base: 1.0.7 + create-hash: 1.2.0 + inherits: 2.0.4 + ripemd160: 2.0.3 + safe-buffer: 5.2.1 + sha.js: 2.4.12 + create-require@1.1.1: {} cross-fetch@3.2.0: @@ -12693,21 +15712,33 @@ snapshots: crypt@0.0.2: {} + crypto-browserify@3.12.0: + dependencies: + browserify-cipher: 1.0.1 + browserify-sign: 4.2.5 + create-ecdh: 4.0.4 + create-hash: 1.2.0 + create-hmac: 1.1.7 + diffie-hellman: 5.0.3 + inherits: 2.0.4 + pbkdf2: 3.1.5 + public-encrypt: 4.0.3 + randombytes: 2.1.0 + randomfill: 1.0.4 + crypto-js@4.2.0: {} css-what@6.2.2: {} cssesc@3.0.0: {} - csstype@3.1.3: {} - csstype@3.2.3: {} - cuer@0.0.3(react-dom@19.2.5(react@19.1.0))(react@19.1.0)(typescript@5.9.3): + cuer@0.0.3(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(typescript@5.9.3): dependencies: qr: 0.5.5 - react: 19.1.0 - react-dom: 19.2.5(react@19.1.0) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: typescript: 5.9.3 @@ -12765,8 +15796,6 @@ snapshots: decode-uri-component@0.2.2: {} - dedent@1.7.0: {} - dedent@1.7.2: {} deep-is@0.1.4: {} @@ -12795,18 +15824,29 @@ snapshots: defu@6.1.7: {} + delay@5.0.0: {} + delayed-stream@1.0.0: {} + depd@1.1.2: {} + depd@2.0.0: {} - derive-valtio@0.1.0(valtio@1.13.2(@types/react@19.2.14)(react@19.1.0)): + derive-valtio@0.1.0(valtio@1.13.2(@types/react@19.2.14)(react@19.2.5)): + dependencies: + valtio: 1.13.2(@types/react@19.2.14)(react@19.2.5) + + des.js@1.1.0: dependencies: - valtio: 1.13.2(@types/react@19.2.14)(react@19.1.0) + inherits: 2.0.4 + minimalistic-assert: 1.0.1 destr@2.0.5: {} detect-browser@5.3.0: {} + detect-europe-js@0.1.2: {} + detect-libc@2.1.2: {} detect-newline@3.1.0: {} @@ -12820,6 +15860,12 @@ snapshots: diff@8.0.4: {} + diffie-hellman@5.0.3: + dependencies: + bn.js: 4.12.3 + miller-rabin: 4.0.1 + randombytes: 2.1.0 + dijkstrajs@1.0.3: {} docker-compose@1.4.2: @@ -12894,6 +15940,16 @@ snapshots: electron-to-chromium@1.5.335: {} + elliptic@6.6.1: + dependencies: + bn.js: 4.12.3 + brorand: 1.1.0 + hash.js: 1.1.7 + hmac-drbg: 1.0.1 + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + minimalistic-crypto-utils: 1.0.1 + emittery@0.13.1: {} emoji-regex@8.0.0: {} @@ -12912,12 +15968,12 @@ snapshots: dependencies: once: 1.4.0 - engine.io-client@6.6.4(bufferutil@4.1.0)(utf-8-validate@5.0.10): + engine.io-client@6.6.4(bufferutil@4.1.0)(utf-8-validate@6.0.6): dependencies: '@socket.io/component-emitter': 3.1.2 debug: 4.4.3 engine.io-parser: 5.2.3 - ws: 8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10) + ws: 8.18.3(bufferutil@4.1.0)(utf-8-validate@6.0.6) xmlhttprequest-ssl: 2.1.2 transitivePeerDependencies: - bufferutil @@ -13043,7 +16099,17 @@ snapshots: is-date-object: 1.1.0 is-symbol: 1.1.1 - es-toolkit@1.33.0: {} + es-toolkit@1.33.0: {} + + es-toolkit@1.39.3: {} + + es-toolkit@1.44.0: {} + + es6-promise@4.2.8: {} + + es6-promisify@5.0.0: + dependencies: + es6-promise: 4.2.8 esbuild@0.27.7: optionalDependencies: @@ -13351,7 +16417,7 @@ snapshots: '@scure/bip32': 1.7.0 '@scure/bip39': 1.6.0 - ethers@6.16.0(bufferutil@4.1.0)(utf-8-validate@5.0.10): + ethers@6.16.0(bufferutil@4.1.0)(utf-8-validate@6.0.6): dependencies: '@adraffy/ens-normalize': 1.10.1 '@noble/curves': 1.2.0 @@ -13359,7 +16425,7 @@ snapshots: '@types/node': 22.7.5 aes-js: 4.0.0-beta.5 tslib: 2.7.0 - ws: 8.17.1(bufferutil@4.1.0)(utf-8-validate@5.0.10) + ws: 8.17.1(bufferutil@4.1.0)(utf-8-validate@6.0.6) transitivePeerDependencies: - bufferutil - utf-8-validate @@ -13382,6 +16448,11 @@ snapshots: eventsource@2.0.2: {} + evp_bytestokey@1.0.3: + dependencies: + md5.js: 1.3.5 + safe-buffer: 5.2.1 + execa@5.1.1: dependencies: cross-spawn: 7.0.6 @@ -13429,6 +16500,8 @@ snapshots: jest-mock: 30.3.0 jest-util: 30.3.0 + exponential-backoff@3.1.3: {} + express@5.2.1: dependencies: accepts: 2.0.0 @@ -13469,6 +16542,8 @@ snapshots: readable-stream: 4.7.0 webextension-polyfill: 0.10.0 + eyes@0.1.8: {} + fast-check@3.23.2: dependencies: pure-rand: 6.1.0 @@ -13495,8 +16570,12 @@ snapshots: fast-safe-stringify@2.1.1: {} + fast-stable-stringify@1.0.0: {} + fast-uri@3.1.0: {} + fastestsmallesttextencoderdecoder@1.0.22: {} + fastq@1.20.1: dependencies: reusify: 1.1.0 @@ -13534,6 +16613,8 @@ snapshots: transitivePeerDependencies: - supports-color + file-uri-to-path@1.0.0: {} + fill-range@7.1.1: dependencies: to-regex-range: 5.0.1 @@ -13652,6 +16733,14 @@ snapshots: functions-have-names@1.2.3: {} + generate-function@2.3.1: + dependencies: + is-property: 1.0.2 + + generate-object-property@1.2.0: + dependencies: + is-property: 1.0.2 + generator-function@2.0.1: {} gensync@1.0.0-beta.2: {} @@ -13798,6 +16887,18 @@ snapshots: dependencies: has-symbols: 1.1.0 + hash-base@3.1.2: + dependencies: + inherits: 2.0.4 + readable-stream: 2.3.8 + safe-buffer: 5.2.1 + to-buffer: 1.2.2 + + hash.js@1.1.7: + dependencies: + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + hashery@1.5.1: dependencies: hookified: 1.15.1 @@ -13814,12 +16915,28 @@ snapshots: hex@0.1.0: {} + hmac-drbg@1.0.1: + dependencies: + hash.js: 1.1.7 + minimalistic-assert: 1.0.1 + minimalistic-crypto-utils: 1.0.1 + hono@4.12.12: {} hookified@1.15.1: {} + htm@3.1.1: {} + html-escaper@2.0.2: {} + http-errors@1.7.2: + dependencies: + depd: 1.1.2 + inherits: 2.0.3 + setprototypeof: 1.1.1 + statuses: 1.5.0 + toidentifier: 1.0.0 + http-errors@2.0.1: dependencies: depd: 2.0.0 @@ -13832,6 +16949,10 @@ snapshots: human-signals@8.0.1: {} + humanize-ms@1.2.1: + dependencies: + ms: 2.1.3 + iconv-lite@0.7.2: dependencies: safer-buffer: 2.1.2 @@ -13863,14 +16984,20 @@ snapshots: once: 1.4.0 wrappy: 1.0.2 + inherits@2.0.3: {} + inherits@2.0.4: {} + int64-buffer@1.1.0: {} + internal-slot@1.1.0: dependencies: es-errors: 1.3.0 hasown: 2.0.2 side-channel: 1.1.0 + ip-address@10.1.0: {} + ipaddr.js@1.9.1: {} iron-webcrypto@1.2.1: {} @@ -13956,6 +17083,16 @@ snapshots: is-map@2.0.3: {} + is-my-ip-valid@1.0.1: {} + + is-my-json-valid@2.20.6: + dependencies: + generate-function: 2.3.1 + generate-object-property: 1.2.0 + is-my-ip-valid: 1.0.1 + jsonpointer: 5.0.1 + xtend: 4.0.2 + is-negative-zero@2.0.3: {} is-number-object@1.1.1: @@ -13969,6 +17106,8 @@ snapshots: is-promise@4.0.0: {} + is-property@1.0.2: {} + is-regex@1.2.1: dependencies: call-bound: 1.0.4 @@ -13986,6 +17125,8 @@ snapshots: dependencies: call-bound: 1.0.4 + is-standalone-pwa@0.1.1: {} + is-stream@2.0.1: {} is-stream@4.0.1: {} @@ -14026,13 +17167,17 @@ snapshots: isexe@2.0.0: {} - isows@1.0.6(ws@8.18.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)): + isomorphic-ws@4.0.1(ws@7.5.10(bufferutil@4.1.0)(utf-8-validate@6.0.6)): + dependencies: + ws: 7.5.10(bufferutil@4.1.0)(utf-8-validate@6.0.6) + + isows@1.0.6(ws@8.18.0(bufferutil@4.1.0)(utf-8-validate@6.0.6)): dependencies: - ws: 8.18.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) + ws: 8.18.0(bufferutil@4.1.0)(utf-8-validate@6.0.6) - isows@1.0.7(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10)): + isows@1.0.7(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@6.0.6)): dependencies: - ws: 8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10) + ws: 8.18.3(bufferutil@4.1.0)(utf-8-validate@6.0.6) istanbul-lib-coverage@3.2.2: {} @@ -14082,6 +17227,24 @@ snapshots: optionalDependencies: '@pkgjs/parseargs': 0.11.0 + jayson@4.3.0(bufferutil@4.1.0)(utf-8-validate@6.0.6): + dependencies: + '@types/connect': 3.4.38 + '@types/node': 12.20.55 + '@types/ws': 7.4.7 + commander: 2.20.3 + delay: 5.0.0 + es6-promisify: 5.0.0 + eyes: 0.1.8 + isomorphic-ws: 4.0.1(ws@7.5.10(bufferutil@4.1.0)(utf-8-validate@6.0.6)) + json-stringify-safe: 5.0.1 + stream-json: 1.9.1 + uuid: 8.3.2 + ws: 7.5.10(bufferutil@4.1.0)(utf-8-validate@6.0.6) + transitivePeerDependencies: + - bufferutil + - utf-8-validate + jest-changed-files@30.3.0: dependencies: execa: 5.1.1 @@ -14448,6 +17611,10 @@ snapshots: js-cookie@3.0.5: {} + js-sha256@0.11.1: {} + + js-sha256@0.9.0: {} + js-sha3@0.9.3: {} js-tokens@4.0.0: {} @@ -14480,6 +17647,8 @@ snapshots: json-stable-stringify-without-jsonify@1.0.1: {} + json-stringify-safe@5.0.1: {} + json2mq@0.2.0: dependencies: string-convert: 0.2.1 @@ -14498,6 +17667,8 @@ snapshots: optionalDependencies: graceful-fs: 4.2.11 + jsonpointer@5.0.1: {} + jsonwebtoken@9.0.3: dependencies: jws: 4.0.1 @@ -14563,9 +17734,9 @@ snapshots: readable-stream: 3.6.2 varint: 5.0.2 - lenis@1.3.21(react@19.1.0): + lenis@1.3.21(react@19.2.5): optionalDependencies: - react: 19.1.0 + react: 19.2.5 level-supports@4.0.1: {} @@ -14706,6 +17877,8 @@ snapshots: safe-stable-stringify: 2.5.0 triple-beam: 1.4.1 + long@5.2.5: {} + long@5.3.2: {} loose-envify@1.4.0: @@ -14724,9 +17897,11 @@ snapshots: dependencies: yallist: 4.0.0 - lucide-react@1.8.0(react@19.1.0): + lru_map@0.4.1: {} + + lucide-react@1.8.0(react@19.2.5): dependencies: - react: 19.1.0 + react: 19.2.5 magic-string@0.30.17: dependencies: @@ -14761,6 +17936,12 @@ snapshots: maybe-combine-errors@1.0.0: {} + md5.js@1.3.5: + dependencies: + hash-base: 3.1.2 + inherits: 2.0.4 + safe-buffer: 5.2.1 + md5@2.3.0: dependencies: charenc: 0.0.2 @@ -14769,7 +17950,7 @@ snapshots: media-query-parser@2.0.2: dependencies: - '@babel/runtime': 7.28.4 + '@babel/runtime': 7.29.2 media-typer@0.3.0: {} @@ -14800,6 +17981,11 @@ snapshots: braces: 3.0.3 picomatch: 4.0.4 + miller-rabin@4.0.1: + dependencies: + bn.js: 4.12.3 + brorand: 1.1.0 + mime-db@1.52.0: {} mime-db@1.54.0: {} @@ -14816,6 +18002,10 @@ snapshots: mimic-fn@2.1.0: {} + minimalistic-assert@1.0.1: {} + + minimalistic-crypto-utils@1.0.1: {} + minimatch@10.2.5: dependencies: brace-expansion: 5.0.5 @@ -14891,10 +18081,11 @@ snapshots: multiformats@9.9.0: {} + mustache@4.0.0: {} + mute-stream@2.0.0: {} - nan@2.26.2: - optional: true + nan@2.26.2: {} nanoid@3.3.11: {} @@ -14904,6 +18095,32 @@ snapshots: natural-compare@1.4.0: {} + near-abi@0.2.0: + dependencies: + '@types/json-schema': 7.0.15 + + near-api-js@5.1.1: + dependencies: + '@near-js/accounts': 1.4.1 + '@near-js/crypto': 1.4.2 + '@near-js/keystores': 0.2.2 + '@near-js/keystores-browser': 0.2.2 + '@near-js/keystores-node': 0.1.2 + '@near-js/providers': 1.0.3 + '@near-js/signers': 0.2.2 + '@near-js/transactions': 1.3.3 + '@near-js/types': 0.3.1 + '@near-js/utils': 1.1.0 + '@near-js/wallet-account': 1.3.3 + '@noble/curves': 1.8.1 + borsh: 1.0.0 + depd: 2.0.0 + http-errors: 1.7.2 + near-abi: 0.2.0 + node-fetch: 2.6.7 + transitivePeerDependencies: + - encoding + negotiator@1.0.0: {} neo-async@2.6.2: {} @@ -14914,35 +18131,35 @@ snapshots: fast-safe-stringify: 2.1.1 winston: 3.19.0 - next-auth@4.24.11(next@15.5.15(@babel/core@7.29.0)(react-dom@19.2.5(react@19.1.0))(react@19.1.0))(react-dom@19.2.5(react@19.1.0))(react@19.1.0): + next-auth@4.24.11(next@15.5.15(@babel/core@7.29.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5): dependencies: '@babel/runtime': 7.29.2 '@panva/hkdf': 1.2.1 cookie: 0.7.2 jose: 4.15.9 - next: 15.5.15(@babel/core@7.29.0)(react-dom@19.2.5(react@19.1.0))(react@19.1.0) + next: 15.5.15(@babel/core@7.29.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) oauth: 0.9.15 openid-client: 5.7.1 preact: 10.29.1 preact-render-to-string: 5.2.6(preact@10.29.1) - react: 19.1.0 - react-dom: 19.2.5(react@19.1.0) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) uuid: 8.3.2 - next-themes@0.4.6(react-dom@19.2.5(react@19.1.0))(react@19.1.0): + next-themes@0.4.6(react-dom@19.2.5(react@19.2.5))(react@19.2.5): dependencies: - react: 19.1.0 - react-dom: 19.2.5(react@19.1.0) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) - next@15.5.15(@babel/core@7.29.0)(react-dom@19.2.5(react@19.1.0))(react@19.1.0): + next@15.5.15(@babel/core@7.29.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5): dependencies: '@next/env': 15.5.15 '@swc/helpers': 0.5.15 caniuse-lite: 1.0.30001787 postcss: 8.4.31 - react: 19.1.0 - react-dom: 19.2.5(react@19.1.0) - styled-jsx: 5.1.6(@babel/core@7.29.0)(react@19.1.0) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) + styled-jsx: 5.1.6(@babel/core@7.29.0)(react@19.2.5) optionalDependencies: '@next/swc-darwin-arm64': 15.5.15 '@next/swc-darwin-x64': 15.5.15 @@ -14961,6 +18178,12 @@ snapshots: node-addon-api@2.0.2: {} + node-addon-api@3.2.1: {} + + node-addon-api@5.1.0: {} + + node-addon-api@8.7.0: {} + node-emoji@1.11.0: dependencies: lodash: 4.18.1 @@ -14974,6 +18197,10 @@ snapshots: node-fetch-native@1.6.7: {} + node-fetch@2.6.7: + dependencies: + whatwg-url: 5.0.0 + node-fetch@2.7.0: dependencies: whatwg-url: 5.0.0 @@ -14991,6 +18218,8 @@ snapshots: node-releases@2.0.37: {} + nofilter@3.1.0: {} + normalize-path@3.0.0: {} npm-run-path@4.0.1: @@ -15074,6 +18303,8 @@ snapshots: on-exit-leak-free@0.2.0: {} + on-exit-leak-free@2.1.2: {} + on-finished@2.3.0: dependencies: ee-first: 1.1.1 @@ -15181,28 +18412,28 @@ snapshots: transitivePeerDependencies: - zod - ox@0.6.7(typescript@5.9.3)(zod@4.3.6): + ox@0.6.7(typescript@5.9.3)(zod@3.25.76): dependencies: '@adraffy/ens-normalize': 1.11.1 '@noble/curves': 1.9.7 '@noble/hashes': 1.8.0 '@scure/bip32': 1.7.0 '@scure/bip39': 1.6.0 - abitype: 1.0.8(typescript@5.9.3)(zod@4.3.6) + abitype: 1.0.8(typescript@5.9.3)(zod@3.25.76) eventemitter3: 5.0.1 optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: - zod - ox@0.6.9(typescript@5.9.3)(zod@4.3.6): + ox@0.6.9(typescript@5.9.3)(zod@3.25.76): dependencies: '@adraffy/ens-normalize': 1.11.1 '@noble/curves': 1.9.7 '@noble/hashes': 1.8.0 '@scure/bip32': 1.7.0 '@scure/bip39': 1.6.0 - abitype: 1.2.3(typescript@5.9.3)(zod@4.3.6) + abitype: 1.2.3(typescript@5.9.3)(zod@3.25.76) eventemitter3: 5.0.1 optionalDependencies: typescript: 5.9.3 @@ -15224,6 +18455,21 @@ snapshots: transitivePeerDependencies: - zod + ox@0.9.3(typescript@5.9.3)(zod@3.25.76): + dependencies: + '@adraffy/ens-normalize': 1.11.1 + '@noble/ciphers': 1.3.0 + '@noble/curves': 1.9.1 + '@noble/hashes': 1.8.0 + '@scure/bip32': 1.7.0 + '@scure/bip39': 1.6.0 + abitype: 1.2.3(typescript@5.9.3)(zod@3.25.76) + eventemitter3: 5.0.1 + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - zod + p-limit@2.3.0: dependencies: p-try: 2.2.0 @@ -15250,6 +18496,14 @@ snapshots: dependencies: callsites: 3.1.0 + parse-asn1@5.1.9: + dependencies: + asn1.js: 4.10.1 + browserify-aes: 1.2.0 + evp_bytestokey: 1.0.3 + pbkdf2: 3.1.5 + safe-buffer: 5.2.1 + parse-json@5.2.0: dependencies: '@babel/code-frame': 7.27.1 @@ -15287,6 +18541,15 @@ snapshots: pathe@2.0.3: {} + pbkdf2@3.1.5: + dependencies: + create-hash: 1.2.0 + create-hmac: 1.1.7 + ripemd160: 2.0.3 + safe-buffer: 5.2.1 + sha.js: 2.4.12 + to-buffer: 1.2.2 + perfect-debounce@1.0.0: {} picocolors@1.1.1: {} @@ -15302,8 +18565,28 @@ snapshots: duplexify: 4.1.3 split2: 4.2.0 + pino-abstract-transport@2.0.0: + dependencies: + split2: 4.2.0 + pino-std-serializers@4.0.0: {} + pino-std-serializers@7.1.0: {} + + pino@10.0.0: + dependencies: + atomic-sleep: 1.0.0 + on-exit-leak-free: 2.1.2 + pino-abstract-transport: 2.0.0 + pino-std-serializers: 7.1.0 + process-warning: 5.0.0 + quick-format-unescaped: 4.0.4 + real-require: 0.2.0 + safe-stable-stringify: 2.5.0 + slow-redact: 0.3.2 + sonic-boom: 4.2.1 + thread-stream: 3.1.0 + pino@7.11.0: dependencies: atomic-sleep: 1.0.0 @@ -15336,21 +18619,21 @@ snapshots: pony-cause@2.1.11: {} - porto@0.2.35(@tanstack/react-query@5.98.0(react@19.1.0))(@types/react@19.2.14)(@wagmi/core@2.22.1(@tanstack/query-core@5.98.0)(@types/react@19.2.14)(react@19.1.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.1.0))(viem@2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6)))(react@19.1.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.1.0))(viem@2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6))(wagmi@2.19.5(@tanstack/query-core@5.98.0)(@tanstack/react-query@5.98.0(react@19.1.0))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6))(zod@4.3.6)): + porto@0.2.35(@tanstack/react-query@5.98.0(react@19.2.5))(@types/react@19.2.14)(@wagmi/core@2.22.1(@tanstack/query-core@5.98.0)(@types/react@19.2.14)(react@19.2.5)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.5))(viem@2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76)))(react@19.2.5)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.5))(viem@2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.98.0)(@tanstack/react-query@5.98.0(react@19.2.5))(@types/react@19.2.14)(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(viem@2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76))(zod@3.25.76)): dependencies: - '@wagmi/core': 2.22.1(@tanstack/query-core@5.98.0)(@types/react@19.2.14)(react@19.1.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.1.0))(viem@2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6)) + '@wagmi/core': 2.22.1(@tanstack/query-core@5.98.0)(@types/react@19.2.14)(react@19.2.5)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.5))(viem@2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76)) hono: 4.12.12 idb-keyval: 6.2.2 mipd: 0.0.7(typescript@5.9.3) ox: 0.9.17(typescript@5.9.3)(zod@4.3.6) - viem: 2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + viem: 2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76) zod: 4.3.6 - zustand: 5.0.12(@types/react@19.2.14)(react@19.1.0)(use-sync-external-store@1.4.0(react@19.1.0)) + zustand: 5.0.12(@types/react@19.2.14)(react@19.2.5)(use-sync-external-store@1.4.0(react@19.2.5)) optionalDependencies: - '@tanstack/react-query': 5.98.0(react@19.1.0) - react: 19.1.0 + '@tanstack/react-query': 5.98.0(react@19.2.5) + react: 19.2.5 typescript: 5.9.3 - wagmi: 2.19.5(@tanstack/query-core@5.98.0)(@tanstack/react-query@5.98.0(react@19.1.0))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6))(zod@4.3.6) + wagmi: 2.19.5(@tanstack/query-core@5.98.0)(@tanstack/react-query@5.98.0(react@19.2.5))(@types/react@19.2.14)(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(viem@2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76))(zod@3.25.76) transitivePeerDependencies: - '@types/react' - immer @@ -15418,15 +18701,17 @@ snapshots: process-warning@1.0.0: {} + process-warning@5.0.0: {} + process@0.11.10: {} - proofbridge-mmr@1.0.8(bufferutil@4.1.0)(utf-8-validate@5.0.10): + proofbridge-mmr@1.0.8(bufferutil@4.1.0)(utf-8-validate@6.0.6): dependencies: '@zkpassport/poseidon2': 0.6.2 abstract-level: 3.1.1 buffer-reverse: 1.0.1 crypto-js: 4.2.0 - ethers: 6.16.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) + ethers: 6.16.0(bufferutil@4.1.0)(utf-8-validate@6.0.6) level: 10.0.0 rave-level: 1.0.0 transitivePeerDependencies: @@ -15453,6 +18738,21 @@ snapshots: transitivePeerDependencies: - supports-color + protobufjs@7.4.0: + dependencies: + '@protobufjs/aspromise': 1.1.2 + '@protobufjs/base64': 1.1.2 + '@protobufjs/codegen': 2.0.4 + '@protobufjs/eventemitter': 1.1.0 + '@protobufjs/fetch': 1.1.0 + '@protobufjs/float': 1.0.2 + '@protobufjs/inquire': 1.1.0 + '@protobufjs/path': 1.1.2 + '@protobufjs/pool': 1.1.0 + '@protobufjs/utf8': 1.1.0 + '@types/node': 22.19.17 + long: 5.3.2 + protobufjs@7.5.4: dependencies: '@protobufjs/aspromise': 1.1.2 @@ -15483,8 +18783,19 @@ snapshots: proxy-compare@2.6.0: {} + proxy-compare@3.0.1: {} + proxy-from-env@2.1.0: {} + public-encrypt@4.0.3: + dependencies: + bn.js: 4.12.3 + browserify-rsa: 4.1.1 + create-hash: 1.2.0 + parse-asn1: 5.1.9 + randombytes: 2.1.0 + safe-buffer: 5.2.1 + pump@3.0.4: dependencies: end-of-stream: 1.4.5 @@ -15496,6 +18807,10 @@ snapshots: pure-rand@7.0.1: {} + pushdata-bitcoin@1.0.1: + dependencies: + bitcoin-ops: 1.4.1 + qr@0.5.5: {} qrcode@1.5.3: @@ -15526,6 +18841,11 @@ snapshots: dependencies: safe-buffer: 5.2.1 + randomfill@1.0.4: + dependencies: + randombytes: 2.1.0 + safe-buffer: 5.2.1 + range-parser@1.2.1: {} rave-level@1.0.0: @@ -15544,373 +18864,373 @@ snapshots: iconv-lite: 0.7.2 unpipe: 1.0.0 - rc-cascader@3.34.0(react-dom@19.2.5(react@19.1.0))(react@19.1.0): + rc-cascader@3.34.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5): dependencies: '@babel/runtime': 7.28.4 classnames: 2.5.1 - rc-select: 14.16.8(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - rc-tree: 5.13.1(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - rc-util: 5.44.4(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - react: 19.1.0 - react-dom: 19.2.5(react@19.1.0) + rc-select: 14.16.8(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + rc-tree: 5.13.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + rc-util: 5.44.4(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) - rc-checkbox@3.5.0(react-dom@19.2.5(react@19.1.0))(react@19.1.0): + rc-checkbox@3.5.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5): dependencies: '@babel/runtime': 7.28.4 classnames: 2.5.1 - rc-util: 5.44.4(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - react: 19.1.0 - react-dom: 19.2.5(react@19.1.0) + rc-util: 5.44.4(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) - rc-collapse@3.9.0(react-dom@19.2.5(react@19.1.0))(react@19.1.0): + rc-collapse@3.9.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5): dependencies: '@babel/runtime': 7.28.4 classnames: 2.5.1 - rc-motion: 2.9.5(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - rc-util: 5.44.4(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - react: 19.1.0 - react-dom: 19.2.5(react@19.1.0) + rc-motion: 2.9.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + rc-util: 5.44.4(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) - rc-dialog@9.6.0(react-dom@19.2.5(react@19.1.0))(react@19.1.0): + rc-dialog@9.6.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5): dependencies: '@babel/runtime': 7.28.4 - '@rc-component/portal': 1.1.2(react-dom@19.2.5(react@19.1.0))(react@19.1.0) + '@rc-component/portal': 1.1.2(react-dom@19.2.5(react@19.2.5))(react@19.2.5) classnames: 2.5.1 - rc-motion: 2.9.5(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - rc-util: 5.44.4(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - react: 19.1.0 - react-dom: 19.2.5(react@19.1.0) + rc-motion: 2.9.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + rc-util: 5.44.4(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) - rc-drawer@7.3.0(react-dom@19.2.5(react@19.1.0))(react@19.1.0): + rc-drawer@7.3.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5): dependencies: '@babel/runtime': 7.28.4 - '@rc-component/portal': 1.1.2(react-dom@19.2.5(react@19.1.0))(react@19.1.0) + '@rc-component/portal': 1.1.2(react-dom@19.2.5(react@19.2.5))(react@19.2.5) classnames: 2.5.1 - rc-motion: 2.9.5(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - rc-util: 5.44.4(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - react: 19.1.0 - react-dom: 19.2.5(react@19.1.0) + rc-motion: 2.9.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + rc-util: 5.44.4(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) - rc-dropdown@4.2.1(react-dom@19.2.5(react@19.1.0))(react@19.1.0): + rc-dropdown@4.2.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5): dependencies: '@babel/runtime': 7.28.4 - '@rc-component/trigger': 2.3.0(react-dom@19.2.5(react@19.1.0))(react@19.1.0) + '@rc-component/trigger': 2.3.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) classnames: 2.5.1 - rc-util: 5.44.4(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - react: 19.1.0 - react-dom: 19.2.5(react@19.1.0) + rc-util: 5.44.4(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) - rc-field-form@2.7.0(react-dom@19.2.5(react@19.1.0))(react@19.1.0): + rc-field-form@2.7.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5): dependencies: '@babel/runtime': 7.28.4 '@rc-component/async-validator': 5.0.4 - rc-util: 5.44.4(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - react: 19.1.0 - react-dom: 19.2.5(react@19.1.0) + rc-util: 5.44.4(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) - rc-image@7.12.0(react-dom@19.2.5(react@19.1.0))(react@19.1.0): + rc-image@7.12.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5): dependencies: '@babel/runtime': 7.28.4 - '@rc-component/portal': 1.1.2(react-dom@19.2.5(react@19.1.0))(react@19.1.0) + '@rc-component/portal': 1.1.2(react-dom@19.2.5(react@19.2.5))(react@19.2.5) classnames: 2.5.1 - rc-dialog: 9.6.0(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - rc-motion: 2.9.5(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - rc-util: 5.44.4(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - react: 19.1.0 - react-dom: 19.2.5(react@19.1.0) + rc-dialog: 9.6.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + rc-motion: 2.9.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + rc-util: 5.44.4(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) - rc-input-number@9.5.0(react-dom@19.2.5(react@19.1.0))(react@19.1.0): + rc-input-number@9.5.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5): dependencies: '@babel/runtime': 7.28.4 '@rc-component/mini-decimal': 1.1.0 classnames: 2.5.1 - rc-input: 1.8.0(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - rc-util: 5.44.4(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - react: 19.1.0 - react-dom: 19.2.5(react@19.1.0) + rc-input: 1.8.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + rc-util: 5.44.4(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) - rc-input@1.8.0(react-dom@19.2.5(react@19.1.0))(react@19.1.0): + rc-input@1.8.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5): dependencies: '@babel/runtime': 7.28.4 classnames: 2.5.1 - rc-util: 5.44.4(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - react: 19.1.0 - react-dom: 19.2.5(react@19.1.0) + rc-util: 5.44.4(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) - rc-mentions@2.20.0(react-dom@19.2.5(react@19.1.0))(react@19.1.0): + rc-mentions@2.20.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5): dependencies: '@babel/runtime': 7.28.4 - '@rc-component/trigger': 2.3.0(react-dom@19.2.5(react@19.1.0))(react@19.1.0) + '@rc-component/trigger': 2.3.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) classnames: 2.5.1 - rc-input: 1.8.0(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - rc-menu: 9.16.1(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - rc-textarea: 1.10.2(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - rc-util: 5.44.4(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - react: 19.1.0 - react-dom: 19.2.5(react@19.1.0) + rc-input: 1.8.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + rc-menu: 9.16.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + rc-textarea: 1.10.2(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + rc-util: 5.44.4(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) - rc-menu@9.16.1(react-dom@19.2.5(react@19.1.0))(react@19.1.0): + rc-menu@9.16.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5): dependencies: '@babel/runtime': 7.28.4 - '@rc-component/trigger': 2.3.0(react-dom@19.2.5(react@19.1.0))(react@19.1.0) + '@rc-component/trigger': 2.3.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) classnames: 2.5.1 - rc-motion: 2.9.5(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - rc-overflow: 1.4.1(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - rc-util: 5.44.4(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - react: 19.1.0 - react-dom: 19.2.5(react@19.1.0) + rc-motion: 2.9.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + rc-overflow: 1.4.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + rc-util: 5.44.4(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) - rc-motion@2.9.5(react-dom@19.2.5(react@19.1.0))(react@19.1.0): + rc-motion@2.9.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5): dependencies: '@babel/runtime': 7.28.4 classnames: 2.5.1 - rc-util: 5.44.4(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - react: 19.1.0 - react-dom: 19.2.5(react@19.1.0) + rc-util: 5.44.4(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) - rc-notification@5.6.4(react-dom@19.2.5(react@19.1.0))(react@19.1.0): + rc-notification@5.6.4(react-dom@19.2.5(react@19.2.5))(react@19.2.5): dependencies: '@babel/runtime': 7.28.4 classnames: 2.5.1 - rc-motion: 2.9.5(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - rc-util: 5.44.4(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - react: 19.1.0 - react-dom: 19.2.5(react@19.1.0) + rc-motion: 2.9.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + rc-util: 5.44.4(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) - rc-overflow@1.4.1(react-dom@19.2.5(react@19.1.0))(react@19.1.0): + rc-overflow@1.4.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5): dependencies: '@babel/runtime': 7.28.4 classnames: 2.5.1 - rc-resize-observer: 1.4.3(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - rc-util: 5.44.4(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - react: 19.1.0 - react-dom: 19.2.5(react@19.1.0) + rc-resize-observer: 1.4.3(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + rc-util: 5.44.4(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) - rc-pagination@5.1.0(react-dom@19.2.5(react@19.1.0))(react@19.1.0): + rc-pagination@5.1.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5): dependencies: '@babel/runtime': 7.28.4 classnames: 2.5.1 - rc-util: 5.44.4(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - react: 19.1.0 - react-dom: 19.2.5(react@19.1.0) + rc-util: 5.44.4(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) - rc-picker@4.11.3(date-fns@4.1.0)(dayjs@1.11.18)(moment@2.30.1)(react-dom@19.2.5(react@19.1.0))(react@19.1.0): + rc-picker@4.11.3(date-fns@4.1.0)(dayjs@1.11.18)(moment@2.30.1)(react-dom@19.2.5(react@19.2.5))(react@19.2.5): dependencies: '@babel/runtime': 7.28.4 - '@rc-component/trigger': 2.3.0(react-dom@19.2.5(react@19.1.0))(react@19.1.0) + '@rc-component/trigger': 2.3.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) classnames: 2.5.1 - rc-overflow: 1.4.1(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - rc-resize-observer: 1.4.3(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - rc-util: 5.44.4(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - react: 19.1.0 - react-dom: 19.2.5(react@19.1.0) + rc-overflow: 1.4.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + rc-resize-observer: 1.4.3(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + rc-util: 5.44.4(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: date-fns: 4.1.0 dayjs: 1.11.18 moment: 2.30.1 - rc-progress@4.0.0(react-dom@19.2.5(react@19.1.0))(react@19.1.0): + rc-progress@4.0.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5): dependencies: '@babel/runtime': 7.28.4 classnames: 2.5.1 - rc-util: 5.44.4(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - react: 19.1.0 - react-dom: 19.2.5(react@19.1.0) + rc-util: 5.44.4(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) - rc-rate@2.13.1(react-dom@19.2.5(react@19.1.0))(react@19.1.0): + rc-rate@2.13.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5): dependencies: '@babel/runtime': 7.28.4 classnames: 2.5.1 - rc-util: 5.44.4(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - react: 19.1.0 - react-dom: 19.2.5(react@19.1.0) + rc-util: 5.44.4(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) - rc-resize-observer@1.4.3(react-dom@19.2.5(react@19.1.0))(react@19.1.0): + rc-resize-observer@1.4.3(react-dom@19.2.5(react@19.2.5))(react@19.2.5): dependencies: '@babel/runtime': 7.28.4 classnames: 2.5.1 - rc-util: 5.44.4(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - react: 19.1.0 - react-dom: 19.2.5(react@19.1.0) + rc-util: 5.44.4(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) resize-observer-polyfill: 1.5.1 - rc-segmented@2.7.0(react-dom@19.2.5(react@19.1.0))(react@19.1.0): + rc-segmented@2.7.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5): dependencies: '@babel/runtime': 7.28.4 classnames: 2.5.1 - rc-motion: 2.9.5(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - rc-util: 5.44.4(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - react: 19.1.0 - react-dom: 19.2.5(react@19.1.0) + rc-motion: 2.9.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + rc-util: 5.44.4(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) - rc-select@14.16.8(react-dom@19.2.5(react@19.1.0))(react@19.1.0): + rc-select@14.16.8(react-dom@19.2.5(react@19.2.5))(react@19.2.5): dependencies: '@babel/runtime': 7.28.4 - '@rc-component/trigger': 2.3.0(react-dom@19.2.5(react@19.1.0))(react@19.1.0) + '@rc-component/trigger': 2.3.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) classnames: 2.5.1 - rc-motion: 2.9.5(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - rc-overflow: 1.4.1(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - rc-util: 5.44.4(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - rc-virtual-list: 3.19.1(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - react: 19.1.0 - react-dom: 19.2.5(react@19.1.0) + rc-motion: 2.9.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + rc-overflow: 1.4.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + rc-util: 5.44.4(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + rc-virtual-list: 3.19.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) - rc-slider@11.1.8(react-dom@19.2.5(react@19.1.0))(react@19.1.0): + rc-slider@11.1.8(react-dom@19.2.5(react@19.2.5))(react@19.2.5): dependencies: '@babel/runtime': 7.28.4 classnames: 2.5.1 - rc-util: 5.44.4(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - react: 19.1.0 - react-dom: 19.2.5(react@19.1.0) + rc-util: 5.44.4(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) - rc-steps@6.0.1(react-dom@19.2.5(react@19.1.0))(react@19.1.0): + rc-steps@6.0.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5): dependencies: '@babel/runtime': 7.28.4 classnames: 2.5.1 - rc-util: 5.44.4(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - react: 19.1.0 - react-dom: 19.2.5(react@19.1.0) + rc-util: 5.44.4(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) - rc-switch@4.1.0(react-dom@19.2.5(react@19.1.0))(react@19.1.0): + rc-switch@4.1.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5): dependencies: '@babel/runtime': 7.28.4 classnames: 2.5.1 - rc-util: 5.44.4(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - react: 19.1.0 - react-dom: 19.2.5(react@19.1.0) + rc-util: 5.44.4(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) - rc-table@7.52.7(react-dom@19.2.5(react@19.1.0))(react@19.1.0): + rc-table@7.52.7(react-dom@19.2.5(react@19.2.5))(react@19.2.5): dependencies: '@babel/runtime': 7.28.4 - '@rc-component/context': 1.4.0(react-dom@19.2.5(react@19.1.0))(react@19.1.0) + '@rc-component/context': 1.4.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) classnames: 2.5.1 - rc-resize-observer: 1.4.3(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - rc-util: 5.44.4(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - rc-virtual-list: 3.19.1(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - react: 19.1.0 - react-dom: 19.2.5(react@19.1.0) + rc-resize-observer: 1.4.3(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + rc-util: 5.44.4(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + rc-virtual-list: 3.19.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) - rc-tabs@15.7.0(react-dom@19.2.5(react@19.1.0))(react@19.1.0): + rc-tabs@15.7.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5): dependencies: '@babel/runtime': 7.28.4 classnames: 2.5.1 - rc-dropdown: 4.2.1(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - rc-menu: 9.16.1(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - rc-motion: 2.9.5(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - rc-resize-observer: 1.4.3(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - rc-util: 5.44.4(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - react: 19.1.0 - react-dom: 19.2.5(react@19.1.0) + rc-dropdown: 4.2.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + rc-menu: 9.16.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + rc-motion: 2.9.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + rc-resize-observer: 1.4.3(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + rc-util: 5.44.4(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) - rc-textarea@1.10.2(react-dom@19.2.5(react@19.1.0))(react@19.1.0): + rc-textarea@1.10.2(react-dom@19.2.5(react@19.2.5))(react@19.2.5): dependencies: '@babel/runtime': 7.28.4 classnames: 2.5.1 - rc-input: 1.8.0(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - rc-resize-observer: 1.4.3(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - rc-util: 5.44.4(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - react: 19.1.0 - react-dom: 19.2.5(react@19.1.0) + rc-input: 1.8.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + rc-resize-observer: 1.4.3(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + rc-util: 5.44.4(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) - rc-tooltip@6.4.0(react-dom@19.2.5(react@19.1.0))(react@19.1.0): + rc-tooltip@6.4.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5): dependencies: '@babel/runtime': 7.28.4 - '@rc-component/trigger': 2.3.0(react-dom@19.2.5(react@19.1.0))(react@19.1.0) + '@rc-component/trigger': 2.3.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) classnames: 2.5.1 - rc-util: 5.44.4(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - react: 19.1.0 - react-dom: 19.2.5(react@19.1.0) + rc-util: 5.44.4(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) - rc-tree-select@5.27.0(react-dom@19.2.5(react@19.1.0))(react@19.1.0): + rc-tree-select@5.27.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5): dependencies: '@babel/runtime': 7.28.4 classnames: 2.5.1 - rc-select: 14.16.8(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - rc-tree: 5.13.1(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - rc-util: 5.44.4(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - react: 19.1.0 - react-dom: 19.2.5(react@19.1.0) + rc-select: 14.16.8(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + rc-tree: 5.13.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + rc-util: 5.44.4(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) - rc-tree@5.13.1(react-dom@19.2.5(react@19.1.0))(react@19.1.0): + rc-tree@5.13.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5): dependencies: '@babel/runtime': 7.28.4 classnames: 2.5.1 - rc-motion: 2.9.5(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - rc-util: 5.44.4(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - rc-virtual-list: 3.19.1(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - react: 19.1.0 - react-dom: 19.2.5(react@19.1.0) + rc-motion: 2.9.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + rc-util: 5.44.4(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + rc-virtual-list: 3.19.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) - rc-upload@4.9.2(react-dom@19.2.5(react@19.1.0))(react@19.1.0): + rc-upload@4.9.2(react-dom@19.2.5(react@19.2.5))(react@19.2.5): dependencies: '@babel/runtime': 7.28.4 classnames: 2.5.1 - rc-util: 5.44.4(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - react: 19.1.0 - react-dom: 19.2.5(react@19.1.0) + rc-util: 5.44.4(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) - rc-util@5.44.4(react-dom@19.2.5(react@19.1.0))(react@19.1.0): + rc-util@5.44.4(react-dom@19.2.5(react@19.2.5))(react@19.2.5): dependencies: '@babel/runtime': 7.28.4 - react: 19.1.0 - react-dom: 19.2.5(react@19.1.0) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) react-is: 18.3.1 - rc-virtual-list@3.19.1(react-dom@19.2.5(react@19.1.0))(react@19.1.0): + rc-virtual-list@3.19.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5): dependencies: '@babel/runtime': 7.28.4 classnames: 2.5.1 - rc-resize-observer: 1.4.3(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - rc-util: 5.44.4(react-dom@19.2.5(react@19.1.0))(react@19.1.0) - react: 19.1.0 - react-dom: 19.2.5(react@19.1.0) + rc-resize-observer: 1.4.3(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + rc-util: 5.44.4(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) rc9@2.1.2: dependencies: defu: 6.1.7 destr: 2.0.5 - react-dom@19.2.5(react@19.1.0): + react-dom@19.2.5(react@19.2.5): dependencies: - react: 19.1.0 + react: 19.2.5 scheduler: 0.27.0 - react-icons@5.6.0(react@19.1.0): + react-icons@5.6.0(react@19.2.5): dependencies: - react: 19.1.0 + react: 19.2.5 react-is@16.13.1: {} react-is@18.3.1: {} - react-remove-scroll-bar@2.3.8(@types/react@19.2.14)(react@19.1.0): + react-remove-scroll-bar@2.3.8(@types/react@19.2.14)(react@19.2.5): dependencies: - react: 19.1.0 - react-style-singleton: 2.2.3(@types/react@19.2.14)(react@19.1.0) + react: 19.2.5 + react-style-singleton: 2.2.3(@types/react@19.2.14)(react@19.2.5) tslib: 2.8.1 optionalDependencies: '@types/react': 19.2.14 - react-remove-scroll@2.6.2(@types/react@19.2.14)(react@19.1.0): + react-remove-scroll@2.6.2(@types/react@19.2.14)(react@19.2.5): dependencies: - react: 19.1.0 - react-remove-scroll-bar: 2.3.8(@types/react@19.2.14)(react@19.1.0) - react-style-singleton: 2.2.3(@types/react@19.2.14)(react@19.1.0) + react: 19.2.5 + react-remove-scroll-bar: 2.3.8(@types/react@19.2.14)(react@19.2.5) + react-style-singleton: 2.2.3(@types/react@19.2.14)(react@19.2.5) tslib: 2.8.1 - use-callback-ref: 1.3.3(@types/react@19.2.14)(react@19.1.0) - use-sidecar: 1.1.3(@types/react@19.2.14)(react@19.1.0) + use-callback-ref: 1.3.3(@types/react@19.2.14)(react@19.2.5) + use-sidecar: 1.1.3(@types/react@19.2.14)(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 - react-style-singleton@2.2.3(@types/react@19.2.14)(react@19.1.0): + react-style-singleton@2.2.3(@types/react@19.2.14)(react@19.2.5): dependencies: get-nonce: 1.0.1 - react: 19.1.0 + react: 19.2.5 tslib: 2.8.1 optionalDependencies: '@types/react': 19.2.14 - react@19.1.0: {} + react@19.2.5: {} readable-stream@2.3.8: dependencies: @@ -15946,6 +19266,8 @@ snapshots: real-require@0.1.0: {} + real-require@0.2.0: {} + reflect-metadata@0.2.2: {} reflect.getprototypeof@1.0.10: @@ -16004,6 +19326,37 @@ snapshots: reusify@1.1.0: {} + ripemd160@2.0.3: + dependencies: + hash-base: 3.1.2 + inherits: 2.0.4 + + ripple-address-codec@5.0.0(bufferutil@4.1.0)(utf-8-validate@6.0.6): + dependencies: + '@scure/base': 1.2.6 + '@xrplf/isomorphic': 1.0.1(bufferutil@4.1.0)(utf-8-validate@6.0.6) + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + ripple-binary-codec@2.7.0(bufferutil@4.1.0)(utf-8-validate@6.0.6): + dependencies: + '@xrplf/isomorphic': 1.0.1(bufferutil@4.1.0)(utf-8-validate@6.0.6) + bignumber.js: 9.3.1 + ripple-address-codec: 5.0.0(bufferutil@4.1.0)(utf-8-validate@6.0.6) + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + ripple-keypairs@2.0.0(bufferutil@4.1.0)(utf-8-validate@6.0.6): + dependencies: + '@noble/curves': 1.9.7 + '@xrplf/isomorphic': 1.0.1(bufferutil@4.1.0)(utf-8-validate@6.0.6) + ripple-address-codec: 5.0.0(bufferutil@4.1.0)(utf-8-validate@6.0.6) + transitivePeerDependencies: + - bufferutil + - utf-8-validate + router@2.2.0: dependencies: debug: 4.4.3 @@ -16014,6 +19367,19 @@ snapshots: transitivePeerDependencies: - supports-color + rpc-websockets@9.3.8: + dependencies: + '@swc/helpers': 0.5.15 + '@types/uuid': 10.0.0 + '@types/ws': 8.18.1 + buffer: 6.0.3 + eventemitter3: 5.0.4 + uuid: 11.1.0 + ws: 8.20.0(bufferutil@4.1.0)(utf-8-validate@6.0.6) + optionalDependencies: + bufferutil: 4.1.0 + utf-8-validate: 6.0.6 + run-parallel@1.2.0: dependencies: queue-microtask: 1.2.3 @@ -16072,8 +19438,16 @@ snapshots: dependencies: compute-scroll-into-view: 3.1.1 + secp256k1@5.0.1: + dependencies: + elliptic: 6.6.1 + node-addon-api: 5.1.0 + node-gyp-build: 4.8.4 + semver@6.3.1: {} + semver@7.7.1: {} + semver@7.7.2: {} semver@7.7.4: {} @@ -16127,6 +19501,8 @@ snapshots: es-errors: 1.3.0 es-object-atoms: 1.1.1 + setprototypeof@1.1.1: {} + setprototypeof@1.2.0: {} sha.js@2.4.12: @@ -16135,6 +19511,11 @@ snapshots: safe-buffer: 5.2.1 to-buffer: 1.2.2 + sha1@1.1.1: + dependencies: + charenc: 0.0.2 + crypt: 0.0.2 + sharp@0.34.5: dependencies: '@img/colour': 1.1.0 @@ -16209,19 +19590,23 @@ snapshots: dependencies: varint: 5.0.0 - siwe@3.0.0(ethers@6.16.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)): + siwe@3.0.0(ethers@6.16.0(bufferutil@4.1.0)(utf-8-validate@6.0.6)): dependencies: '@spruceid/siwe-parser': 3.0.0 '@stablelib/random': 1.0.2 - ethers: 6.16.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) + ethers: 6.16.0(bufferutil@4.1.0)(utf-8-validate@6.0.6) slash@3.0.0: {} - socket.io-client@4.8.3(bufferutil@4.1.0)(utf-8-validate@5.0.10): + slow-redact@0.3.2: {} + + smart-buffer@4.2.0: {} + + socket.io-client@4.8.3(bufferutil@4.1.0)(utf-8-validate@6.0.6): dependencies: '@socket.io/component-emitter': 3.1.2 debug: 4.4.3 - engine.io-client: 6.6.4(bufferutil@4.1.0)(utf-8-validate@5.0.10) + engine.io-client: 6.6.4(bufferutil@4.1.0)(utf-8-validate@6.0.6) socket.io-parser: 4.2.6 transitivePeerDependencies: - bufferutil @@ -16235,14 +19620,31 @@ snapshots: transitivePeerDependencies: - supports-color + socks-proxy-agent@8.0.5: + dependencies: + agent-base: 7.1.4 + debug: 4.4.3 + socks: 2.8.7 + transitivePeerDependencies: + - supports-color + + socks@2.8.7: + dependencies: + ip-address: 10.1.0 + smart-buffer: 4.2.0 + sonic-boom@2.8.0: dependencies: atomic-sleep: 1.0.0 - sonner@2.0.7(react-dom@19.2.5(react@19.1.0))(react@19.1.0): + sonic-boom@4.2.1: + dependencies: + atomic-sleep: 1.0.0 + + sonner@2.0.7(react-dom@19.2.5(react@19.2.5))(react@19.2.5): dependencies: - react: 19.1.0 - react-dom: 19.2.5(react@19.1.0) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) source-map-js@1.2.1: {} @@ -16291,6 +19693,8 @@ snapshots: dependencies: escape-string-regexp: 2.0.0 + statuses@1.5.0: {} + statuses@2.0.2: {} stop-iteration-iterator@1.1.0: @@ -16298,6 +19702,17 @@ snapshots: es-errors: 1.3.0 internal-slot: 1.1.0 + stream-browserify@3.0.0: + dependencies: + inherits: 2.0.4 + readable-stream: 3.6.2 + + stream-chain@2.2.5: {} + + stream-json@1.9.1: + dependencies: + stream-chain: 2.2.5 + stream-shift@1.0.3: {} streamsearch@1.1.0: {} @@ -16412,10 +19827,12 @@ snapshots: dependencies: '@tokenizer/token': 0.3.0 - styled-jsx@5.1.6(@babel/core@7.29.0)(react@19.1.0): + style-vendorizer@2.2.3: {} + + styled-jsx@5.1.6(@babel/core@7.29.0)(react@19.2.5): dependencies: client-only: 0.0.1 - react: 19.1.0 + react: 19.2.5 optionalDependencies: '@babel/core': 7.29.0 @@ -16437,6 +19854,8 @@ snapshots: superstruct@1.0.4: {} + superstruct@2.0.2: {} + supertest@7.2.2: dependencies: cookie-signature: 1.2.2 @@ -16572,14 +19991,28 @@ snapshots: transitivePeerDependencies: - react-native-b4a + text-encoding-utf-8@1.0.2: {} + text-hex@1.0.0: {} thread-stream@0.15.2: dependencies: real-require: 0.1.0 + thread-stream@3.1.0: + dependencies: + real-require: 0.2.0 + throttle-debounce@5.0.2: {} + tiny-secp256k1@1.1.7: + dependencies: + bindings: 1.5.0 + bn.js: 4.12.3 + create-hmac: 1.1.7 + elliptic: 6.6.1 + nan: 2.26.2 + tinyexec@1.0.1: {} tinyglobby@0.2.16: @@ -16603,6 +20036,8 @@ snapshots: toggle-selection@1.0.6: {} + toidentifier@1.0.0: {} + toidentifier@1.0.1: {} token-types@6.1.2: @@ -16653,6 +20088,8 @@ snapshots: typescript: 5.9.3 webpack: 5.106.0 + ts-mixer@6.0.4: {} + ts-node@10.9.2(@types/node@20.19.39)(typescript@5.9.3): dependencies: '@cspotcode/source-map-support': 0.8.1 @@ -16724,8 +20161,12 @@ snapshots: tw-animate-css@1.4.0: {} + tweetnacl-util@0.15.1: {} + tweetnacl@0.14.5: {} + tweetnacl@1.0.3: {} + type-check@0.4.0: dependencies: prelude-ls: 1.2.1 @@ -16782,6 +20223,8 @@ snapshots: typedarray@0.0.6: {} + typeforce@1.18.0: {} + typescript-eslint@8.58.1(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3): dependencies: '@typescript-eslint/eslint-plugin': 8.58.1(@typescript-eslint/parser@8.58.1(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) @@ -16795,8 +20238,16 @@ snapshots: typescript@5.9.3: {} + ua-is-frozen@0.1.2: {} + ua-parser-js@1.0.41: {} + ua-parser-js@2.0.9: + dependencies: + detect-europe-js: 0.1.2 + is-standalone-pwa: 0.1.1 + ua-is-frozen: 0.1.2 + ufo@1.6.3: {} uglify-js@3.19.3: @@ -16808,10 +20259,16 @@ snapshots: uint8array-extras@1.5.0: {} + uint8array-tools@0.0.8: {} + uint8arrays@3.1.0: dependencies: multiformats: 9.9.0 + uint8arrays@3.1.1: + dependencies: + multiformats: 9.9.0 + unbox-primitive@1.1.0: dependencies: call-bound: 1.0.4 @@ -16890,33 +20347,44 @@ snapshots: urijs@1.19.11: {} - use-callback-ref@1.3.3(@types/react@19.2.14)(react@19.1.0): + usb@2.17.0: dependencies: - react: 19.1.0 + '@types/w3c-web-usb': 1.0.14 + node-addon-api: 8.7.0 + node-gyp-build: 4.8.4 + + use-callback-ref@1.3.3(@types/react@19.2.14)(react@19.2.5): + dependencies: + react: 19.2.5 tslib: 2.8.1 optionalDependencies: '@types/react': 19.2.14 - use-sidecar@1.1.3(@types/react@19.2.14)(react@19.1.0): + use-sidecar@1.1.3(@types/react@19.2.14)(react@19.2.5): dependencies: detect-node-es: 1.1.0 - react: 19.1.0 + react: 19.2.5 tslib: 2.8.1 optionalDependencies: '@types/react': 19.2.14 - use-sync-external-store@1.2.0(react@19.1.0): + use-sync-external-store@1.2.0(react@19.2.5): dependencies: - react: 19.1.0 + react: 19.2.5 - use-sync-external-store@1.4.0(react@19.1.0): + use-sync-external-store@1.4.0(react@19.2.5): dependencies: - react: 19.1.0 + react: 19.2.5 utf-8-validate@5.0.10: dependencies: node-gyp-build: 4.8.4 + utf-8-validate@6.0.6: + dependencies: + node-gyp-build: 4.8.4 + optional: true + util-deprecate@1.0.2: {} util@0.12.5: @@ -16927,8 +20395,12 @@ snapshots: is-typed-array: 1.1.15 which-typed-array: 1.1.20 + uuid4@2.0.3: {} + uuid@10.0.0: {} + uuid@11.1.0: {} + uuid@13.0.0: {} uuid@8.3.2: {} @@ -16945,31 +20417,42 @@ snapshots: validator@13.15.35: {} - valtio@1.13.2(@types/react@19.2.14)(react@19.1.0): + valtio@1.13.2(@types/react@19.2.14)(react@19.2.5): dependencies: - derive-valtio: 0.1.0(valtio@1.13.2(@types/react@19.2.14)(react@19.1.0)) + derive-valtio: 0.1.0(valtio@1.13.2(@types/react@19.2.14)(react@19.2.5)) proxy-compare: 2.6.0 - use-sync-external-store: 1.2.0(react@19.1.0) + use-sync-external-store: 1.2.0(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + react: 19.2.5 + + valtio@2.1.7(@types/react@19.2.14)(react@19.2.5): + dependencies: + proxy-compare: 3.0.1 optionalDependencies: '@types/react': 19.2.14 - react: 19.1.0 + react: 19.2.5 varint@5.0.0: {} varint@5.0.2: {} + varuint-bitcoin@2.0.0: + dependencies: + uint8array-tools: 0.0.8 + vary@1.1.2: {} - viem@2.23.2(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6): + viem@2.23.2(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76): dependencies: '@noble/curves': 1.8.1 '@noble/hashes': 1.7.1 '@scure/bip32': 1.6.2 '@scure/bip39': 1.5.4 - abitype: 1.0.8(typescript@5.9.3)(zod@4.3.6) - isows: 1.0.6(ws@8.18.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)) - ox: 0.6.7(typescript@5.9.3)(zod@4.3.6) - ws: 8.18.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) + abitype: 1.0.8(typescript@5.9.3)(zod@3.25.76) + isows: 1.0.6(ws@8.18.0(bufferutil@4.1.0)(utf-8-validate@6.0.6)) + ox: 0.6.7(typescript@5.9.3)(zod@3.25.76) + ws: 8.18.0(bufferutil@4.1.0)(utf-8-validate@6.0.6) optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: @@ -16977,16 +20460,16 @@ snapshots: - utf-8-validate - zod - viem@2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.22.4): + viem@2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.22.4): dependencies: '@noble/curves': 1.9.1 '@noble/hashes': 1.8.0 '@scure/bip32': 1.7.0 '@scure/bip39': 1.6.0 abitype: 1.2.3(typescript@5.9.3)(zod@3.22.4) - isows: 1.0.7(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10)) + isows: 1.0.7(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@6.0.6)) ox: 0.14.13(typescript@5.9.3)(zod@3.22.4) - ws: 8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10) + ws: 8.18.3(bufferutil@4.1.0)(utf-8-validate@6.0.6) optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: @@ -16994,16 +20477,16 @@ snapshots: - utf-8-validate - zod - viem@2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76): + viem@2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76): dependencies: '@noble/curves': 1.9.1 '@noble/hashes': 1.8.0 '@scure/bip32': 1.7.0 '@scure/bip39': 1.6.0 abitype: 1.2.3(typescript@5.9.3)(zod@3.25.76) - isows: 1.0.7(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10)) + isows: 1.0.7(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@6.0.6)) ox: 0.14.13(typescript@5.9.3)(zod@3.25.76) - ws: 8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10) + ws: 8.18.3(bufferutil@4.1.0)(utf-8-validate@6.0.6) optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: @@ -17011,16 +20494,16 @@ snapshots: - utf-8-validate - zod - viem@2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6): + viem@2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.3.6): dependencies: '@noble/curves': 1.9.1 '@noble/hashes': 1.8.0 '@scure/bip32': 1.7.0 '@scure/bip39': 1.6.0 abitype: 1.2.3(typescript@5.9.3)(zod@4.3.6) - isows: 1.0.7(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10)) + isows: 1.0.7(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@6.0.6)) ox: 0.14.13(typescript@5.9.3)(zod@4.3.6) - ws: 8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10) + ws: 8.18.3(bufferutil@4.1.0)(utf-8-validate@6.0.6) optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: @@ -17028,14 +20511,14 @@ snapshots: - utf-8-validate - zod - wagmi@2.19.5(@tanstack/query-core@5.98.0)(@tanstack/react-query@5.98.0(react@19.1.0))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6))(zod@4.3.6): + wagmi@2.19.5(@tanstack/query-core@5.98.0)(@tanstack/react-query@5.98.0(react@19.2.5))(@types/react@19.2.14)(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(viem@2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76))(zod@3.25.76): dependencies: - '@tanstack/react-query': 5.98.0(react@19.1.0) - '@wagmi/connectors': 6.2.0(@tanstack/react-query@5.98.0(react@19.1.0))(@types/react@19.2.14)(@wagmi/core@2.22.1(@tanstack/query-core@5.98.0)(@types/react@19.2.14)(react@19.1.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.1.0))(viem@2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6)))(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.1.0))(utf-8-validate@5.0.10)(viem@2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6))(wagmi@2.19.5(@tanstack/query-core@5.98.0)(@tanstack/react-query@5.98.0(react@19.1.0))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6))(zod@4.3.6))(zod@4.3.6) - '@wagmi/core': 2.22.1(@tanstack/query-core@5.98.0)(@types/react@19.2.14)(react@19.1.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.1.0))(viem@2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6)) - react: 19.1.0 - use-sync-external-store: 1.4.0(react@19.1.0) - viem: 2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + '@tanstack/react-query': 5.98.0(react@19.2.5) + '@wagmi/connectors': 6.2.0(@tanstack/react-query@5.98.0(react@19.2.5))(@types/react@19.2.14)(@wagmi/core@2.22.1(@tanstack/query-core@5.98.0)(@types/react@19.2.14)(react@19.2.5)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.5))(viem@2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76)))(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(react@19.2.5)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.5))(utf-8-validate@6.0.6)(viem@2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.98.0)(@tanstack/react-query@5.98.0(react@19.2.5))(@types/react@19.2.14)(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(viem@2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76))(zod@3.25.76))(zod@3.25.76) + '@wagmi/core': 2.22.1(@tanstack/query-core@5.98.0)(@types/react@19.2.14)(react@19.2.5)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.5))(viem@2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76)) + react: 19.2.5 + use-sync-external-store: 1.4.0(react@19.2.5) + viem: 2.47.12(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76) optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: @@ -17178,6 +20661,10 @@ snapshots: dependencies: isexe: 2.0.0 + wif@5.0.0: + dependencies: + bs58check: 4.0.0 + winston-transport@4.9.0: dependencies: logform: 2.7.0 @@ -17227,33 +20714,49 @@ snapshots: imurmurhash: 0.1.4 signal-exit: 4.1.0 - ws@7.5.10(bufferutil@4.1.0)(utf-8-validate@5.0.10): + ws@7.5.10(bufferutil@4.1.0)(utf-8-validate@6.0.6): optionalDependencies: bufferutil: 4.1.0 - utf-8-validate: 5.0.10 + utf-8-validate: 6.0.6 - ws@8.17.1(bufferutil@4.1.0)(utf-8-validate@5.0.10): + ws@8.17.1(bufferutil@4.1.0)(utf-8-validate@6.0.6): optionalDependencies: bufferutil: 4.1.0 - utf-8-validate: 5.0.10 + utf-8-validate: 6.0.6 - ws@8.18.0(bufferutil@4.1.0)(utf-8-validate@5.0.10): + ws@8.18.0(bufferutil@4.1.0)(utf-8-validate@6.0.6): optionalDependencies: bufferutil: 4.1.0 - utf-8-validate: 5.0.10 + utf-8-validate: 6.0.6 - ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10): + ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@6.0.6): optionalDependencies: bufferutil: 4.1.0 - utf-8-validate: 5.0.10 + utf-8-validate: 6.0.6 - ws@8.20.0(bufferutil@4.1.0)(utf-8-validate@5.0.10): + ws@8.20.0(bufferutil@4.1.0)(utf-8-validate@6.0.6): optionalDependencies: bufferutil: 4.1.0 - utf-8-validate: 5.0.10 + utf-8-validate: 6.0.6 xmlhttprequest-ssl@2.1.2: {} + xrpl@4.4.3(bufferutil@4.1.0)(utf-8-validate@6.0.6): + dependencies: + '@scure/bip32': 1.7.0 + '@scure/bip39': 1.6.0 + '@xrplf/isomorphic': 1.0.1(bufferutil@4.1.0)(utf-8-validate@6.0.6) + '@xrplf/secret-numbers': 2.0.0(bufferutil@4.1.0)(utf-8-validate@6.0.6) + bignumber.js: 9.3.1 + eventemitter3: 5.0.4 + fast-json-stable-stringify: 2.1.0 + ripple-address-codec: 5.0.0(bufferutil@4.1.0)(utf-8-validate@6.0.6) + ripple-binary-codec: 2.7.0(bufferutil@4.1.0)(utf-8-validate@6.0.6) + ripple-keypairs: 2.0.0(bufferutil@4.1.0)(utf-8-validate@6.0.6) + transitivePeerDependencies: + - bufferutil + - utf-8-validate + xtend@4.0.2: {} y18n@4.0.3: {} @@ -17321,20 +20824,20 @@ snapshots: zod@4.3.6: {} - zustand@5.0.0(@types/react@19.2.14)(react@19.1.0)(use-sync-external-store@1.4.0(react@19.1.0)): + zustand@5.0.0(@types/react@19.2.14)(react@19.2.5)(use-sync-external-store@1.4.0(react@19.2.5)): optionalDependencies: '@types/react': 19.2.14 - react: 19.1.0 - use-sync-external-store: 1.4.0(react@19.1.0) + react: 19.2.5 + use-sync-external-store: 1.4.0(react@19.2.5) - zustand@5.0.12(@types/react@19.2.14)(react@19.1.0)(use-sync-external-store@1.4.0(react@19.1.0)): + zustand@5.0.12(@types/react@19.2.14)(react@19.2.5)(use-sync-external-store@1.4.0(react@19.2.5)): optionalDependencies: '@types/react': 19.2.14 - react: 19.1.0 - use-sync-external-store: 1.4.0(react@19.1.0) + react: 19.2.5 + use-sync-external-store: 1.4.0(react@19.2.5) - zustand@5.0.3(@types/react@19.2.14)(react@19.1.0)(use-sync-external-store@1.4.0(react@19.1.0)): + zustand@5.0.3(@types/react@19.2.14)(react@19.2.5)(use-sync-external-store@1.4.0(react@19.2.5)): optionalDependencies: '@types/react': 19.2.14 - react: 19.1.0 - use-sync-external-store: 1.4.0(react@19.1.0) + react: 19.2.5 + use-sync-external-store: 1.4.0(react@19.2.5) diff --git a/scripts/cross-chain-e2e/lib/deploy.ts b/scripts/cross-chain-e2e/lib/deploy.ts index 5621cd2..53fe66e 100644 --- a/scripts/cross-chain-e2e/lib/deploy.ts +++ b/scripts/cross-chain-e2e/lib/deploy.ts @@ -18,11 +18,7 @@ import { strkeyToHex, evmAddressToBytes32, } from "./stellar.js"; -import { - deployEvmContracts, - NonceTracker, - type EvmContracts, -} from "./evm.js"; +import { deployEvmContracts, NonceTracker, type EvmContracts } from "./evm.js"; // ── env / paths ─────────────────────────────────────────────────────── @@ -44,6 +40,8 @@ export interface StellarDeployResult { adTokenHex: string; // 0x + 64 hex adManager: string; // strkey adManagerHex: string; + orderPortal: string; // strkey + orderPortalHex: string; adminStrkey: string; chainId: bigint; } @@ -87,7 +85,9 @@ export interface DeployStellarOpts { chainId: bigint; } -export function deployStellarChain(opts: DeployStellarOpts): StellarDeployResult { +export function deployStellarChain( + opts: DeployStellarOpts, +): StellarDeployResult { const { wasmDir, vkPath, adminStrkey, chainId } = opts; console.log("Deploying Stellar Verifier..."); @@ -98,7 +98,9 @@ export function deployStellarChain(opts: DeployStellarOpts): StellarDeployResult console.log(` Verifier: ${verifier}`); console.log("Deploying Stellar MerkleManager..."); - const merkleManager = deployContract(path.join(wasmDir, "merkle_manager.wasm")); + const merkleManager = deployContract( + path.join(wasmDir, "merkle_manager.wasm"), + ); console.log(` MerkleManager: ${merkleManager}`); invokeContract(merkleManager, "initialize", [`--admin`, adminStrkey]); @@ -123,12 +125,34 @@ export function deployStellarChain(opts: DeployStellarOpts): StellarDeployResult chainId.toString(), ]); + console.log("Deploying Stellar OrderPortal..."); + const orderPortal = deployContract(path.join(wasmDir, "order_portal.wasm")); + console.log(` OrderPortal: ${orderPortal}`); + invokeContract(orderPortal, "initialize", [ + `--admin`, + adminStrkey, + `--verifier`, + verifier, + `--merkle_manager`, + merkleManager, + `--w_native_token`, + adToken, + `--chain_id`, + chainId.toString(), + ]); + invokeContract(merkleManager, "set_manager", [ `--manager`, adManager, `--status`, "true", ]); + invokeContract(merkleManager, "set_manager", [ + `--manager`, + orderPortal, + `--status`, + "true", + ]); return { verifier, @@ -137,6 +161,8 @@ export function deployStellarChain(opts: DeployStellarOpts): StellarDeployResult adTokenHex, adManager, adManagerHex: strkeyToHex(adManager), + orderPortal, + orderPortalHex: strkeyToHex(orderPortal), adminStrkey, chainId, }; @@ -150,7 +176,9 @@ export interface DeployEvmOpts { chainId: bigint; } -export async function deployEvmChain(opts: DeployEvmOpts): Promise { +export async function deployEvmChain( + opts: DeployEvmOpts, +): Promise { const contracts = await deployEvmContracts(opts.rpcUrl, opts.adminPrivateKey); return { chainId: opts.chainId, @@ -168,12 +196,17 @@ export async function linkChains( evm: EvmDeployResult, ): Promise { const { contracts, nonces, chainId: evmChainId } = evm; - const stellarChainIdStr = stellar.chainId.toString(); const evmChainIdStr = evmChainId.toString(); - const evmOrderPortalBytes32 = evmAddressToBytes32(contracts.addresses.orderPortal); + const evmOrderPortalBytes32 = evmAddressToBytes32( + contracts.addresses.orderPortal, + ); + const evmAdManagerBytes32 = evmAddressToBytes32( + contracts.addresses.adManager, + ); const evmTokenBytes32 = evmAddressToBytes32(contracts.addresses.testToken); + // ── Direction A: Stellar ad-side ↔ EVM order-side ────────────────── console.log("Linking Stellar AdManager → EVM OrderPortal..."); invokeContract(stellar.adManager, "set_chain", [ `--order_chain_id`, @@ -183,8 +216,6 @@ export async function linkChains( `--supported`, "true", ]); - - console.log("Setting Stellar token route..."); invokeContract(stellar.adManager, "set_token_route", [ `--ad_token`, stellar.adTokenHex.replace(/^0x/, ""), @@ -204,8 +235,6 @@ export async function linkChains( ); await tx.wait(); } - - console.log("Setting EVM token route..."); { const tx = await contracts.orderPortal.getFunction("setTokenRoute")( contracts.addresses.testToken, @@ -216,16 +245,61 @@ export async function linkChains( await tx.wait(); } + // ── Direction B: EVM ad-side ↔ Stellar order-side ────────────────── + console.log("Linking EVM AdManager → Stellar OrderPortal..."); + { + const tx = await contracts.adManager.getFunction("setChain")( + stellar.chainId, + stellar.orderPortalHex, + true, + { nonce: nonces.next() }, + ); + await tx.wait(); + } + { + // AdManager.setTokenRoute: (address adToken, bytes32 orderToken, uint256 orderChainId) + // Arg order differs from OrderPortal.setTokenRoute — bytes32 and uint256 are swapped. + const tx = await contracts.adManager.getFunction("setTokenRoute")( + contracts.addresses.testToken, + stellar.adTokenHex, + stellar.chainId, + { nonce: nonces.next() }, + ); + await tx.wait(); + } + + console.log("Linking Stellar OrderPortal → EVM AdManager..."); + invokeContract(stellar.orderPortal, "set_chain", [ + `--ad_chain_id`, + evmChainIdStr, + `--ad_manager`, + evmAdManagerBytes32.replace(/^0x/, ""), + `--supported`, + "true", + ]); + invokeContract(stellar.orderPortal, "set_token_route", [ + `--order_token`, + stellar.adTokenHex.replace(/^0x/, ""), + `--ad_chain_id`, + evmChainIdStr, + `--ad_token`, + evmTokenBytes32.replace(/^0x/, ""), + ]); + console.log("Cross-chain linking complete."); } // ── top-level ───────────────────────────────────────────────────────── -export async function deployAll(opts: DeployAllOpts = {}): Promise { +export async function deployAll( + opts: DeployAllOpts = {}, +): Promise { const rootDir = opts.rootDir ?? requireEnv("ROOT_DIR"); const wasmDir = - opts.wasmDir ?? path.join(rootDir, "contracts/stellar/target/wasm32v1-none/release"); - const vkPath = opts.vkPath ?? path.join(rootDir, "proof_circuits/deposits/target/vk"); + opts.wasmDir ?? + path.join(rootDir, "contracts/stellar/target/wasm32v1-none/release"); + const vkPath = + opts.vkPath ?? path.join(rootDir, "proof_circuits/deposits/target/vk"); const evmRpcUrl = opts.evmRpcUrl ?? requireEnv("EVM_RPC_URL"); const evmAdminPrivateKey = opts.evmAdminPrivateKey ?? requireEnv("EVM_ADMIN_PRIVATE_KEY"); @@ -258,32 +332,33 @@ export function writeDeployedSnapshot( outPath: string, { stellar, evm }: DeployAllResult, ): void { - // Undeployed roles are emitted as null so consumers fail fast on a real use - // (instead of silently contract-calling the zero address). In this flow the - // EVM side only plays the order role and the Stellar side only plays the ad - // role, so the counterpart address on each chain stays null. const snapshot = { eth: { name: "AnvilLocal", chainId: evm.chainId.toString(), - adManagerAddress: null as string | null, + adManagerAddress: evm.addresses.adManager, orderPortalAddress: evm.addresses.orderPortal, merkleManagerAddress: evm.addresses.merkleManager, verifierAddress: evm.addresses.verifier, tokenName: "TestToken", tokenSymbol: "TT", tokenAddress: evm.addresses.testToken, + tokenKind: "ERC20" as const, + tokenDecimals: 18, }, stellar: { name: "StellarLocal", chainId: stellar.chainId.toString(), adManagerAddress: stellar.adManagerHex, - orderPortalAddress: null as string | null, + orderPortalAddress: stellar.orderPortalHex, merkleManagerAddress: strkeyToHex(stellar.merkleManager), verifierAddress: strkeyToHex(stellar.verifier), tokenName: "XLM", tokenSymbol: "XLM", tokenAddress: stellar.adTokenHex, + tokenKind: "NATIVE" as const, + tokenDecimals: 7, + tokenAssetIssuer: null as string | null, }, }; fs.writeFileSync(outPath, JSON.stringify(snapshot, null, 2)); diff --git a/scripts/cross-chain-e2e/lib/evm.ts b/scripts/cross-chain-e2e/lib/evm.ts index 6a6c2e3..01ad7f8 100644 --- a/scripts/cross-chain-e2e/lib/evm.ts +++ b/scripts/cross-chain-e2e/lib/evm.ts @@ -52,6 +52,7 @@ export interface EvmContracts { merkleManager: ethers.Contract; wNativeToken: ethers.Contract; orderPortal: ethers.Contract; + adManager: ethers.Contract; testToken: ethers.Contract; signer: ethers.Wallet; nonces: NonceTracker; @@ -60,6 +61,7 @@ export interface EvmContracts { merkleManager: string; wNativeToken: string; orderPortal: string; + adManager: string; testToken: string; }; } @@ -141,20 +143,43 @@ export async function deployEvmContracts( ], ); - // Grant MANAGER_ROLE to OrderPortal on MerkleManager - console.log(" Granting MANAGER_ROLE to OrderPortal on MerkleManager..."); - const tx = await merkleManager.getFunction("grantRole")( - MANAGER_ROLE, - await orderPortal.getAddress(), - { nonce: nonces.next() }, + // Deploy AdManager alongside OrderPortal so this chain can play both roles + // (locked liquidity ad-side + order-book taker side). Both constructors + // share the same signature. + const adManager = await deploy( + signer, + nonces, + "AdManager", + "AdManager", + [ + admin, + await verifier.getAddress(), + await merkleManager.getAddress(), + await wNativeToken.getAddress(), + ], ); - await tx.wait(); + + // Grant MANAGER_ROLE to OrderPortal + AdManager on MerkleManager so both + // can anchor/consume MMR roots. + for (const { name, addr } of [ + { name: "OrderPortal", addr: await orderPortal.getAddress() }, + { name: "AdManager", addr: await adManager.getAddress() }, + ]) { + console.log(` Granting MANAGER_ROLE to ${name} on MerkleManager...`); + const tx = await merkleManager.getFunction("grantRole")( + MANAGER_ROLE, + addr, + { nonce: nonces.next() }, + ); + await tx.wait(); + } return { verifier, merkleManager, wNativeToken, orderPortal, + adManager, testToken, signer, nonces, @@ -163,6 +188,7 @@ export async function deployEvmContracts( merkleManager: await merkleManager.getAddress(), wNativeToken: await wNativeToken.getAddress(), orderPortal: await orderPortal.getAddress(), + adManager: await adManager.getAddress(), testToken: await testToken.getAddress(), }, }; diff --git a/scripts/relayer-e2e/flows/trade-lifecycle.ts b/scripts/relayer-e2e/flows/trade-lifecycle.ts index 285103f..a69024a 100644 --- a/scripts/relayer-e2e/flows/trade-lifecycle.ts +++ b/scripts/relayer-e2e/flows/trade-lifecycle.ts @@ -54,7 +54,8 @@ export async function runTradeLifecycle(): Promise { const adCreatorSecret = process.env.STELLAR_AD_CREATOR_SECRET!; const adCreator = Keypair.fromSecret(adCreatorSecret); - const adCreatorEvmKey = process.env.EVM_AD_CREATOR_PRIVATE_KEY as `0x${string}`; + const adCreatorEvmKey = process.env + .EVM_AD_CREATOR_PRIVATE_KEY as `0x${string}`; const adCreatorEvm = privateKeyToAccount(adCreatorEvmKey); const stellarChainId = process.env.STELLAR_CHAIN_ID!; @@ -267,9 +268,11 @@ export async function runTradeLifecycle(): Promise { ...bridgerOrderParams, salt: BigInt(bridgerOrderParams.salt), }); - const bridgerSigBytes = bridgerStellar.sign( - Buffer.from(bridgerOrderHash.replace(/^0x/, ""), "hex"), - ); + const bridgerSigPreimage = Buffer.concat([ + Buffer.from("Stellar Signed Message:\n", "utf8"), + Buffer.from(bridgerOrderHash, "utf8"), + ]); + const bridgerSigBytes = bridgerStellar.sign(bridgerSigPreimage); const bridgerSig = `0x${bridgerSigBytes.toString("hex")}`; const unlockOnAd = expectStatus( diff --git a/scripts/relayer-e2e/lib/api.ts b/scripts/relayer-e2e/lib/api.ts index 6e7b5ba..78530a1 100644 --- a/scripts/relayer-e2e/lib/api.ts +++ b/scripts/relayer-e2e/lib/api.ts @@ -58,8 +58,11 @@ export const apiAuthLogin = (body: Record) => // ── routes ──────────────────────────────────────────────────────────── -export const getRoutes = (fromChainId: string, toChainId: string) => - request("GET", `/v1/routes?fromChainId=${fromChainId}&toChainId=${toChainId}`); +export const getRoutes = (adChainId: string, orderChainId: string) => + request( + "GET", + `/v1/routes?adChainId=${adChainId}&orderChainId=${orderChainId}`, + ); // ── ads ─────────────────────────────────────────────────────────────── diff --git a/scripts/relayer-e2e/lib/seed.ts b/scripts/relayer-e2e/lib/seed.ts index ea43549..b8b756e 100644 --- a/scripts/relayer-e2e/lib/seed.ts +++ b/scripts/relayer-e2e/lib/seed.ts @@ -1,10 +1,7 @@ -import { PrismaClient } from "@prisma/client"; +import { PrismaClient, type TokenKind } from "@prisma/client"; import { hash as argon2hash } from "@node-rs/argon2"; import { ethers } from "ethers"; -// `null` means the role wasn't deployed for this chain in the current flow; -// the Prisma columns are non-null so we substitute a recognizable sentinel at -// the DB boundary (see `sentinelFor`) and log a warning. export interface DeployedContracts { eth: { name: string; @@ -16,6 +13,8 @@ export interface DeployedContracts { tokenName: string; tokenSymbol: string; tokenAddress: string; + tokenKind?: TokenKind; // defaults to ERC20 + tokenDecimals?: number; // defaults to 18 }; stellar?: { name: string; @@ -26,7 +25,10 @@ export interface DeployedContracts { verifierAddress: string; tokenName: string; tokenSymbol: string; - tokenAddress: string; + tokenAddress: string; // 0x + 64 hex of the SAC contract id + tokenKind?: TokenKind; // defaults to NATIVE + tokenDecimals?: number; // defaults to 7 + tokenAssetIssuer?: string | null; }; } @@ -73,6 +75,8 @@ export async function seedDb(deployed: DeployedContracts): Promise { select: { id: true }, }); + const ethTokenKind: TokenKind = deployed.eth.tokenKind ?? "ERC20"; + const ethTokenDecimals = deployed.eth.tokenDecimals ?? 18; const ethToken = await prisma.token.upsert({ where: { chainUid_address: { @@ -85,14 +89,14 @@ export async function seedDb(deployed: DeployedContracts): Promise { symbol: deployed.eth.tokenSymbol, name: deployed.eth.tokenName, address: deployed.eth.tokenAddress, - decimals: 18, - kind: "ERC20", + decimals: ethTokenDecimals, + kind: ethTokenKind, }, update: { symbol: deployed.eth.tokenSymbol, name: deployed.eth.tokenName, - decimals: 18, - kind: "ERC20", + decimals: ethTokenDecimals, + kind: ethTokenKind, }, select: { id: true }, }); @@ -122,6 +126,15 @@ export async function seedDb(deployed: DeployedContracts): Promise { select: { id: true }, }); + const stellarTokenKind: TokenKind = s.tokenKind ?? "NATIVE"; + const stellarTokenDecimals = s.tokenDecimals ?? 7; + const stellarAssetIssuer = + stellarTokenKind === "SAC" ? (s.tokenAssetIssuer ?? null) : null; + if (stellarTokenKind === "SAC" && !stellarAssetIssuer) { + throw new Error( + `[seed] stellar token ${s.tokenSymbol} is SAC but tokenAssetIssuer is missing`, + ); + } const stellarToken = await prisma.token.upsert({ where: { chainUid_address: { @@ -134,14 +147,16 @@ export async function seedDb(deployed: DeployedContracts): Promise { symbol: s.tokenSymbol, name: s.tokenName, address: s.tokenAddress, - decimals: 7, - kind: "NATIVE", + decimals: stellarTokenDecimals, + kind: stellarTokenKind, + assetIssuer: stellarAssetIssuer, }, update: { symbol: s.tokenSymbol, name: s.tokenName, - decimals: 7, - kind: "NATIVE", + decimals: stellarTokenDecimals, + kind: stellarTokenKind, + assetIssuer: stellarAssetIssuer, }, select: { id: true }, }); @@ -158,6 +173,21 @@ export async function seedDb(deployed: DeployedContracts): Promise { }, update: {}, }); + // Both chains host both roles — seed the reverse route too so orders + // originating on Stellar can settle against ads on EVM. + await prisma.route.upsert({ + where: { + orderTokenId_adTokenId: { + orderTokenId: stellarToken.id, + adTokenId: ethToken.id, + }, + }, + create: { + adTokenId: ethToken.id, + orderTokenId: stellarToken.id, + }, + update: {}, + }); } console.log("[seed] done");