@cosmosapp/pay_sdkWeb

Activos, billeteras y direcciones tipados

Catálogos tipados de activos y billeteras, además de validadores de direcciones, tanto para testnet como para mainnet.

El SDK incluye catálogos tipados y conscientes de la red para que nunca tengas que teclear a mano el emisor de un activo o el id de una billetera, además de validadores para direcciones de Stellar.

Pequeños catálogos tipados para que nunca pegues el emisor equivocado o una cadena mágica. Las cadenas de texto simples siguen funcionando en todas partes. Exportados desde ambos puntos de entrada (@cosmosapp/pay_sdk y @cosmosapp/pay_sdk/web).

Activos

import { Assets, TestnetAssets, defineAsset, resolveAsset, isNativeAsset } from '@cosmosapp/pay_sdk';

Assets.XLM;   // native lumens
Assets.USDC;  // { code: 'USDC', issuer: 'GA5Z…' }  (Circle, mainnet, verified)
Assets.EURC;  // { code: 'EURC', issuer: 'GDHU…' }

// Custom asset (issuer/contract validated):
const AQUA = defineAsset({ code: 'AQUA', issuer: 'GBNZ…', name: 'Aquarius' });

await client.paymentIntents.createPay({ destination: 'G...', amount: '5', asset: AQUA });

// Plain code + issuer also works:
await client.paymentIntents.createPay({ destination: 'G...', amount: '5', assetCode: 'USDC', assetIssuer: 'G...' });

⚠️ Los emisores son específicos de cada red. Assets.* = mainnet; usa TestnetAssets.* (p. ej. TestnetAssets.USDC) para testnet, correspondiente a tu clave dv_.

Auxiliares: resolveAsset(ref) → { code, issuer? }; isNativeAsset(ref) → boolean.

Billeteras

import { Wallets } from '@cosmosapp/pay_sdk/web';
Wallets.FREIGHTER; Wallets.XBULL; Wallets.RABET; Wallets.LOBSTR; Wallets.ALBEDO;

const wc = new WebClient({ preferredWallets: [Wallets.XBULL, Wallets.FREIGHTER] });
await wc.pay(intent, { wallet: Wallets.FREIGHTER });

Libreta de direcciones

import { addresses, resolveAddress, isStellarAddress, isMuxedAddress, isContractAddress, isAddress, assertAddress } from '@cosmosapp/pay_sdk';

addresses.define('merchant', 'GC...PAYOUT');
await client.paymentIntents.createPay({ destination: 'merchant', amount: '10' });

resolveAddress('merchant'); // → 'GC...PAYOUT' (unknown values pass through unchanged)
isStellarAddress('GC...');  // true
isMuxedAddress('MA...');    // true
isContractAddress('CA...'); // true
isAddress('merchant');      // true
assertAddress(value);       // throws on an invalid value

Las direcciones G… en crudo, muxed M…, de contrato C… y de federación siguen funcionando como cadenas de texto simples.

Referencias

En esta página