@moonpay/cli 0.6.1 → 0.6.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-GSAFAKB7.js → chunk-AL5WDHLT.js} +15 -2
- package/dist/chunk-AL5WDHLT.js.map +1 -0
- package/dist/{chunk-DCHEUKV7.js → chunk-P764SORF.js} +16 -12
- package/dist/chunk-P764SORF.js.map +1 -0
- package/dist/index.js +3 -3
- package/dist/{mcp-6IZ4QWFM.js → mcp-PNM25UVD.js} +3 -3
- package/dist/{store-UAGR3DWU.js → store-QVVENVIP.js} +2 -2
- package/package.json +1 -1
- package/dist/chunk-DCHEUKV7.js.map +0 -1
- package/dist/chunk-GSAFAKB7.js.map +0 -1
- /package/dist/{mcp-6IZ4QWFM.js.map → mcp-PNM25UVD.js.map} +0 -0
- /package/dist/{store-UAGR3DWU.js.map → store-QVVENVIP.js.map} +0 -0
|
@@ -122,6 +122,18 @@ var addressesSchema = z2.object({
|
|
|
122
122
|
bitcoin: z2.string().optional(),
|
|
123
123
|
tron: z2.string().optional()
|
|
124
124
|
});
|
|
125
|
+
var EVM_CHAINS = ["base", "arbitrum", "polygon", "optimism", "bnb", "avalanche"];
|
|
126
|
+
function expandAddresses(addresses) {
|
|
127
|
+
const result = {};
|
|
128
|
+
if (addresses.solana) result.solana = addresses.solana;
|
|
129
|
+
if (addresses.ethereum) {
|
|
130
|
+
result.ethereum = addresses.ethereum;
|
|
131
|
+
for (const chain of EVM_CHAINS) result[chain] = addresses.ethereum;
|
|
132
|
+
}
|
|
133
|
+
if (addresses.bitcoin) result.bitcoin = addresses.bitcoin;
|
|
134
|
+
if (addresses.tron) result.tron = addresses.tron;
|
|
135
|
+
return result;
|
|
136
|
+
}
|
|
125
137
|
var hdWalletSchema = z2.object({
|
|
126
138
|
name: z2.string(),
|
|
127
139
|
type: z2.literal("hd"),
|
|
@@ -144,7 +156,7 @@ var walletSchema = z2.discriminatedUnion("type", [
|
|
|
144
156
|
var walletInfoSchema = z2.object({
|
|
145
157
|
name: z2.string(),
|
|
146
158
|
type: z2.enum(["hd", "imported"]),
|
|
147
|
-
addresses:
|
|
159
|
+
addresses: z2.record(z2.string(), z2.string()),
|
|
148
160
|
createdAt: z2.string()
|
|
149
161
|
});
|
|
150
162
|
|
|
@@ -454,6 +466,7 @@ export {
|
|
|
454
466
|
keyChainSchema,
|
|
455
467
|
KEY_CHAIN_MAP,
|
|
456
468
|
addressesSchema,
|
|
469
|
+
expandAddresses,
|
|
457
470
|
walletInfoSchema,
|
|
458
471
|
loadWallets,
|
|
459
472
|
saveWallets,
|
|
@@ -464,4 +477,4 @@ export {
|
|
|
464
477
|
removeWallet,
|
|
465
478
|
resolveSigningKey
|
|
466
479
|
};
|
|
467
|
-
//# sourceMappingURL=chunk-
|
|
480
|
+
//# sourceMappingURL=chunk-AL5WDHLT.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/tools/wallet/store.ts","../src/tools/wallet/models.ts","../src/crypto.ts","../src/tools/wallet/session.ts","../src/tools/wallet/chains.ts"],"sourcesContent":["import {\n existsSync,\n readFileSync,\n writeFileSync,\n mkdirSync,\n renameSync,\n} from \"node:fs\";\nimport { join } from \"node:path\";\nimport { homedir } from \"node:os\";\nimport { randomBytes } from \"node:crypto\";\nimport {\n walletsFileSchema,\n walletSchema,\n type Wallet,\n type Chain,\n type KeyChain,\n KEY_CHAIN_MAP,\n} from \"./models\";\nimport { encrypt, decrypt } from \"../../crypto\";\nimport { getEncryptionKey, ensureEncryptionKey } from \"./session\";\nimport { deriveKeyForChain } from \"./chains\";\nimport bs58 from \"bs58\";\n\n// ── Paths ───────────────────────────────────────────────────\n\nconst CONFIG_DIR = join(homedir(), \".config\", \"moonpay\");\nconst WALLETS_PATH = join(CONFIG_DIR, \"wallets.json\");\n\nfunction ensureConfigDir(): void {\n mkdirSync(CONFIG_DIR, { recursive: true, mode: 0o700 });\n}\n\n// ── Load / Save ─────────────────────────────────────────────\n\nexport function loadWallets(): Wallet[] {\n if (!existsSync(WALLETS_PATH)) return [];\n\n const encryptionKey = getEncryptionKey();\n if (!encryptionKey) {\n throw new Error(\n \"Encryption key not found. Set MOONPAY_ENCRYPTION_KEY or ensure OS keychain is accessible.\",\n );\n }\n\n const raw = JSON.parse(readFileSync(WALLETS_PATH, \"utf-8\"));\n const file = walletsFileSchema.parse(raw);\n const decrypted = decrypt(file, encryptionKey);\n const parsed = JSON.parse(decrypted);\n\n return (parsed.wallets ?? []).map((w: unknown) => walletSchema.parse(w));\n}\n\nexport function saveWallets(wallets: Wallet[]): void {\n const encryptionKey = ensureEncryptionKey();\n const data = JSON.stringify({ wallets });\n const file = encrypt(data, encryptionKey);\n\n ensureConfigDir();\n const tmpPath = join(CONFIG_DIR, `.wallets.${randomBytes(4).toString(\"hex\")}.tmp`);\n writeFileSync(tmpPath, JSON.stringify(file, null, 2), { mode: 0o600 });\n renameSync(tmpPath, WALLETS_PATH);\n}\n\nexport function mutateWallets(fn: (wallets: Wallet[]) => void): void {\n const wallets = loadWallets();\n fn(wallets);\n saveWallets(wallets);\n}\n\n// ── Wallet operations ───────────────────────────────────────\n\nexport function findWallet(nameOrAddress: string): Wallet | null {\n const wallets = loadWallets();\n\n for (const wallet of wallets) {\n if (wallet.name === nameOrAddress) return wallet;\n for (const address of Object.values(wallet.addresses)) {\n if (address === nameOrAddress) return wallet;\n }\n }\n\n return null;\n}\n\nexport function findWalletOrThrow(nameOrAddress: string): Wallet {\n const wallet = findWallet(nameOrAddress);\n if (!wallet) throw new Error(`Wallet \"${nameOrAddress}\" not found`);\n return wallet;\n}\n\nexport function addWallet(wallet: Wallet): void {\n mutateWallets((wallets) => {\n if (wallets.some((w) => w.name === wallet.name)) {\n throw new Error(`Wallet \"${wallet.name}\" already exists`);\n }\n wallets.push(wallet);\n });\n}\n\nexport function removeWallet(name: string): void {\n mutateWallets((wallets) => {\n const idx = wallets.findIndex((w) => w.name === name);\n if (idx === -1) throw new Error(`Wallet \"${name}\" not found`);\n wallets.splice(idx, 1);\n });\n}\n\n// ── Key resolution ──────────────────────────────────────────\n\nexport function resolveSigningKey(\n wallet: Wallet,\n chain: Chain,\n): { privateKey: Uint8Array; address: string } {\n const keyChain = KEY_CHAIN_MAP[chain];\n\n if (wallet.type === \"imported\") {\n if (wallet.chain !== keyChain) {\n throw new Error(\n `Wallet \"${wallet.name}\" was imported for ${wallet.chain}, cannot sign for ${chain}.`,\n );\n }\n return {\n privateKey: decodePrivateKey(wallet.privateKey, keyChain),\n address: wallet.addresses[keyChain]!,\n };\n }\n\n const derived = deriveKeyForChain(wallet.mnemonic, keyChain);\n return { privateKey: derived.privateKey, address: derived.address };\n}\n\nfunction decodePrivateKey(key: string, chain: KeyChain): Uint8Array {\n if (chain === \"solana\") {\n return bs58.decode(key);\n }\n const hex = key.startsWith(\"0x\") ? key.slice(2) : key;\n return Uint8Array.from(Buffer.from(hex, \"hex\"));\n}\n","import { z } from \"zod\";\nimport { encryptedFileSchema, type EncryptedFile } from \"../../crypto\";\n\nexport { encryptedFileSchema as walletsFileSchema };\nexport type WalletsFile = EncryptedFile;\n\n// ── Chain types ─────────────────────────────────────────────\n\nexport const chainSchema = z.enum([\n \"solana\",\n \"ethereum\",\n \"base\",\n \"arbitrum\",\n \"polygon\",\n \"optimism\",\n \"bnb\",\n \"avalanche\",\n \"bitcoin\",\n \"tron\",\n]);\nexport type Chain = z.infer<typeof chainSchema>;\n\nexport const keyChainSchema = z.enum([\"solana\", \"ethereum\", \"bitcoin\", \"tron\"]);\nexport type KeyChain = z.infer<typeof keyChainSchema>;\n\nexport const KEY_CHAIN_MAP: Record<Chain, KeyChain> = {\n solana: \"solana\",\n ethereum: \"ethereum\",\n base: \"ethereum\",\n arbitrum: \"ethereum\",\n polygon: \"ethereum\",\n optimism: \"ethereum\",\n bnb: \"ethereum\",\n avalanche: \"ethereum\",\n bitcoin: \"bitcoin\",\n tron: \"tron\",\n};\n\n// ── Addresses ───────────────────────────────────────────────\n\nexport const addressesSchema = z.object({\n solana: z.string().optional(),\n ethereum: z.string().optional(),\n bitcoin: z.string().optional(),\n tron: z.string().optional(),\n});\nexport type Addresses = z.infer<typeof addressesSchema>;\n\nconst EVM_CHAINS = [\"base\", \"arbitrum\", \"polygon\", \"optimism\", \"bnb\", \"avalanche\"] as const;\n\nexport function expandAddresses(addresses: Addresses): Record<string, string> {\n const result: Record<string, string> = {};\n if (addresses.solana) result.solana = addresses.solana;\n if (addresses.ethereum) {\n result.ethereum = addresses.ethereum;\n for (const chain of EVM_CHAINS) result[chain] = addresses.ethereum;\n }\n if (addresses.bitcoin) result.bitcoin = addresses.bitcoin;\n if (addresses.tron) result.tron = addresses.tron;\n return result;\n}\n\n// ── Wallet types (internal, includes secrets) ───────────────\n\nexport const hdWalletSchema = z.object({\n name: z.string(),\n type: z.literal(\"hd\"),\n mnemonic: z.string(),\n addresses: addressesSchema,\n createdAt: z.string(),\n});\nexport type HdWallet = z.infer<typeof hdWalletSchema>;\n\nexport const importedWalletSchema = z.object({\n name: z.string(),\n type: z.literal(\"imported\"),\n chain: keyChainSchema,\n privateKey: z.string(),\n addresses: addressesSchema,\n createdAt: z.string(),\n});\nexport type ImportedWallet = z.infer<typeof importedWalletSchema>;\n\nexport const walletSchema = z.discriminatedUnion(\"type\", [\n hdWalletSchema,\n importedWalletSchema,\n]);\nexport type Wallet = z.infer<typeof walletSchema>;\n\n// ── Encrypted file format (re-exported from shared crypto) ──\n\n// ── Public wallet info (no secrets) ─────────────────────────\n\nexport const walletInfoSchema = z.object({\n name: z.string(),\n type: z.enum([\"hd\", \"imported\"]),\n addresses: z.record(z.string(), z.string()),\n createdAt: z.string(),\n});\nexport type WalletInfo = z.infer<typeof walletInfoSchema>;\n","import {\n randomBytes,\n scryptSync,\n createCipheriv,\n createDecipheriv,\n} from \"node:crypto\";\nimport { z } from \"zod\";\n\nconst SCRYPT_N = 2 ** 18;\nconst SCRYPT_R = 8;\nconst SCRYPT_P = 1;\nconst KEY_LENGTH = 32;\nconst SCRYPT_MAXMEM = 512 * 1024 * 1024;\n\nexport const encryptedFileSchema = z.object({\n encryption: z.object({\n cipher: z.literal(\"aes-256-gcm\"),\n kdf: z.literal(\"scrypt\"),\n kdfparams: z.object({\n n: z.number(),\n r: z.number(),\n p: z.number(),\n }),\n salt: z.string(),\n iv: z.string(),\n tag: z.string(),\n }),\n data: z.string(),\n});\nexport type EncryptedFile = z.infer<typeof encryptedFileSchema>;\n\nexport function encrypt(data: string, encryptionKey: string): EncryptedFile {\n const salt = randomBytes(32);\n const aesKey = scryptSync(encryptionKey, salt, KEY_LENGTH, {\n N: SCRYPT_N, r: SCRYPT_R, p: SCRYPT_P, maxmem: SCRYPT_MAXMEM,\n });\n const iv = randomBytes(12);\n const cipher = createCipheriv(\"aes-256-gcm\", aesKey, iv);\n\n const encrypted = Buffer.concat([\n cipher.update(data, \"utf8\"),\n cipher.final(),\n ]);\n\n return {\n encryption: {\n cipher: \"aes-256-gcm\",\n kdf: \"scrypt\",\n kdfparams: { n: SCRYPT_N, r: SCRYPT_R, p: SCRYPT_P },\n salt: salt.toString(\"base64\"),\n iv: iv.toString(\"base64\"),\n tag: cipher.getAuthTag().toString(\"base64\"),\n },\n data: encrypted.toString(\"base64\"),\n };\n}\n\nexport function decrypt(file: EncryptedFile, encryptionKey: string): string {\n const { salt, iv, tag, kdfparams } = file.encryption;\n\n const aesKey = scryptSync(\n encryptionKey,\n Buffer.from(salt, \"base64\"),\n KEY_LENGTH,\n { N: kdfparams.n, r: kdfparams.r, p: kdfparams.p, maxmem: SCRYPT_MAXMEM },\n );\n\n const decipher = createDecipheriv(\n \"aes-256-gcm\",\n aesKey,\n Buffer.from(iv, \"base64\"),\n { authTagLength: 16 },\n );\n decipher.setAuthTag(Buffer.from(tag, \"base64\"));\n\n return Buffer.concat([\n decipher.update(Buffer.from(file.data, \"base64\")),\n decipher.final(),\n ]).toString(\"utf8\");\n}\n","import { execFileSync, execSync } from \"node:child_process\";\nimport { randomBytes } from \"node:crypto\";\nimport { platform } from \"node:os\";\n\nconst SERVICE = \"moonpay-cli\";\nconst ACCOUNT = \"encryption-key\";\n\n// ── macOS Keychain ──────────────────────────────────────────\n\nfunction storeMacOS(value: string): void {\n try {\n execFileSync(\"security\", [\n \"delete-generic-password\", \"-s\", SERVICE, \"-a\", ACCOUNT,\n ], { stdio: \"ignore\" });\n } catch {}\n execFileSync(\"security\", [\n \"add-generic-password\", \"-s\", SERVICE, \"-a\", ACCOUNT, \"-w\", value,\n ], { stdio: \"ignore\" });\n}\n\nfunction getMacOS(): string | null {\n try {\n return execFileSync(\"security\", [\n \"find-generic-password\", \"-s\", SERVICE, \"-a\", ACCOUNT, \"-w\",\n ], { encoding: \"utf-8\", stdio: [\"ignore\", \"pipe\", \"ignore\"] }).trim();\n } catch {\n return null;\n }\n}\n\n// ── Linux libsecret ─────────────────────────────────────────\n\nfunction storeLinux(value: string): void {\n execSync(\n `printf '%s' | secret-tool store --label=\"${SERVICE}\" service \"${SERVICE}\" account \"${ACCOUNT}\"`,\n { input: value, stdio: [\"pipe\", \"ignore\", \"ignore\"] },\n );\n}\n\nfunction getLinux(): string | null {\n try {\n return execFileSync(\"secret-tool\", [\n \"lookup\", \"service\", SERVICE, \"account\", ACCOUNT,\n ], { encoding: \"utf-8\", stdio: [\"ignore\", \"pipe\", \"ignore\"] }).trim();\n } catch {\n return null;\n }\n}\n\n// ── Platform dispatch ───────────────────────────────────────\n\nfunction storeInKeychain(value: string): void {\n const os = platform();\n if (os === \"darwin\") return storeMacOS(value);\n if (os === \"linux\") return storeLinux(value);\n throw new Error(\"OS keychain not supported on this platform\");\n}\n\nfunction getFromKeychain(): string | null {\n const os = platform();\n if (os === \"darwin\") return getMacOS();\n if (os === \"linux\") return getLinux();\n return null;\n}\n\n// ── Public API ──────────────────────────────────────────────\n\nexport function getEncryptionKey(): string | null {\n const envKey = process.env.MOONPAY_ENCRYPTION_KEY;\n if (envKey) return envKey;\n return getFromKeychain();\n}\n\nexport function ensureEncryptionKey(): string {\n const existing = getEncryptionKey();\n if (existing) return existing;\n\n const key = randomBytes(32).toString(\"hex\");\n storeInKeychain(key);\n return key;\n}\n","import { createHash } from \"node:crypto\";\nimport { HDKey } from \"@scure/bip32\";\nimport { mnemonicToSeedSync } from \"@scure/bip39\";\nimport { keccak_256 } from \"@noble/hashes/sha3\";\nimport { derivePath } from \"ed25519-hd-key\";\nimport * as bitcoin from \"bitcoinjs-lib\";\nimport ECPairFactory from \"ecpair\";\nimport * as ecc from \"tiny-secp256k1\";\nimport { Keypair } from \"@solana/web3.js\";\nimport bs58 from \"bs58\";\nimport type { KeyChain } from \"./models\";\n\nconst ECPair = ECPairFactory(ecc);\n\n// ── BIP44 derivation paths ──────────────────────────────────\n\nexport function derivationPath(chain: KeyChain, account = 0): string {\n switch (chain) {\n case \"solana\":\n return `m/44'/501'/${account}'/0'`;\n case \"ethereum\":\n return `m/44'/60'/${account}'/0/0`;\n case \"bitcoin\":\n return `m/84'/0'/${account}'/0/0`;\n case \"tron\":\n return `m/44'/195'/${account}'/0/0`;\n }\n}\n\n// ── Key derivation ──────────────────────────────────────────\n\nexport interface DerivedKey {\n privateKey: Uint8Array;\n address: string;\n}\n\nexport function deriveKeyForChain(\n mnemonic: string,\n chain: KeyChain,\n account = 0,\n): DerivedKey {\n switch (chain) {\n case \"solana\":\n return deriveSolana(mnemonic, account);\n case \"ethereum\":\n return deriveEthereum(mnemonic, account);\n case \"bitcoin\":\n return deriveBitcoin(mnemonic, account);\n case \"tron\":\n return deriveTron(mnemonic, account);\n }\n}\n\nexport function deriveAllAddresses(\n mnemonic: string,\n account = 0,\n): Record<KeyChain, string> {\n return {\n solana: deriveKeyForChain(mnemonic, \"solana\", account).address,\n ethereum: deriveKeyForChain(mnemonic, \"ethereum\", account).address,\n bitcoin: deriveKeyForChain(mnemonic, \"bitcoin\", account).address,\n tron: deriveKeyForChain(mnemonic, \"tron\", account).address,\n };\n}\n\n// ── Solana (ed25519 via SLIP-0010) ──────────────────────────\n\nfunction deriveSolana(mnemonic: string, account: number): DerivedKey {\n const seed = mnemonicToSeedSync(mnemonic);\n const path = derivationPath(\"solana\", account);\n const { key } = derivePath(path, Buffer.from(seed).toString(\"hex\"));\n const keypair = Keypair.fromSeed(Uint8Array.from(key));\n return {\n privateKey: keypair.secretKey,\n address: keypair.publicKey.toBase58(),\n };\n}\n\n// ── Ethereum / EVM (secp256k1 via BIP32) ────────────────────\n\nfunction deriveEthereum(mnemonic: string, account: number): DerivedKey {\n const seed = mnemonicToSeedSync(mnemonic);\n const hdkey = HDKey.fromMasterSeed(seed);\n const path = derivationPath(\"ethereum\", account);\n const child = hdkey.derive(path);\n if (!child.privateKey) throw new Error(\"Failed to derive EVM private key\");\n\n const address = publicKeyToEthAddress(child.publicKey!);\n return {\n privateKey: child.privateKey,\n address,\n };\n}\n\nfunction publicKeyToEthAddress(compressedPubKey: Uint8Array): string {\n const uncompressed = ecc.pointCompress(compressedPubKey, false);\n const hash = keccak256(uncompressed.slice(1));\n const addressBytes = hash.slice(-20);\n const address = \"0x\" + Buffer.from(addressBytes).toString(\"hex\");\n return toChecksumAddress(address);\n}\n\nfunction keccak256(data: Uint8Array): Uint8Array {\n return keccak_256(data);\n}\n\nfunction toChecksumAddress(address: string): string {\n const addr = address.toLowerCase().replace(\"0x\", \"\");\n const hash = Buffer.from(keccak_256(Buffer.from(addr, \"utf8\"))).toString(\"hex\");\n let checksummed = \"0x\";\n for (let i = 0; i < addr.length; i++) {\n checksummed += parseInt(hash[i], 16) >= 8 ? addr[i].toUpperCase() : addr[i];\n }\n return checksummed;\n}\n\n// ── Bitcoin (secp256k1 via BIP32, native segwit) ────────────\n\nfunction deriveBitcoin(mnemonic: string, account: number): DerivedKey {\n const seed = mnemonicToSeedSync(mnemonic);\n const hdkey = HDKey.fromMasterSeed(seed);\n const path = derivationPath(\"bitcoin\", account);\n const child = hdkey.derive(path);\n if (!child.privateKey) throw new Error(\"Failed to derive Bitcoin private key\");\n\n const keyPair = ECPair.fromPrivateKey(Buffer.from(child.privateKey));\n const { address } = bitcoin.payments.p2wpkh({\n pubkey: Buffer.from(keyPair.publicKey),\n });\n if (!address) throw new Error(\"Failed to derive Bitcoin address\");\n\n return {\n privateKey: child.privateKey,\n address,\n };\n}\n\n// ── Tron (secp256k1 via BIP32, Base58Check) ─────────────────\n\nfunction deriveTron(mnemonic: string, account: number): DerivedKey {\n const seed = mnemonicToSeedSync(mnemonic);\n const hdkey = HDKey.fromMasterSeed(seed);\n const path = derivationPath(\"tron\", account);\n const child = hdkey.derive(path);\n if (!child.privateKey) throw new Error(\"Failed to derive Tron private key\");\n\n const address = publicKeyToTronAddress(child.publicKey!);\n return { privateKey: child.privateKey, address };\n}\n\nfunction publicKeyToTronAddress(compressedPubKey: Uint8Array): string {\n const uncompressed = ecc.pointCompress(compressedPubKey, false);\n const hash = keccak256(uncompressed.slice(1));\n const addressBytes = hash.slice(-20);\n\n // Tron: 0x41 prefix + 20 address bytes + 4-byte double-SHA256 checksum\n const prefixed = Buffer.concat([Buffer.from([0x41]), Buffer.from(addressBytes)]);\n const hash1 = createHash(\"sha256\").update(prefixed).digest();\n const hash2 = createHash(\"sha256\").update(hash1).digest();\n const raw = Buffer.concat([prefixed, hash2.slice(0, 4)]);\n\n return bs58.encode(raw);\n}\n"],"mappings":";;;AAAA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,YAAY;AACrB,SAAS,eAAe;AACxB,SAAS,eAAAA,oBAAmB;;;ACT5B,SAAS,KAAAC,UAAS;;;ACAlB;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,SAAS;AAElB,IAAM,WAAW,KAAK;AACtB,IAAM,WAAW;AACjB,IAAM,WAAW;AACjB,IAAM,aAAa;AACnB,IAAM,gBAAgB,MAAM,OAAO;AAE5B,IAAM,sBAAsB,EAAE,OAAO;AAAA,EAC1C,YAAY,EAAE,OAAO;AAAA,IACnB,QAAQ,EAAE,QAAQ,aAAa;AAAA,IAC/B,KAAK,EAAE,QAAQ,QAAQ;AAAA,IACvB,WAAW,EAAE,OAAO;AAAA,MAClB,GAAG,EAAE,OAAO;AAAA,MACZ,GAAG,EAAE,OAAO;AAAA,MACZ,GAAG,EAAE,OAAO;AAAA,IACd,CAAC;AAAA,IACD,MAAM,EAAE,OAAO;AAAA,IACf,IAAI,EAAE,OAAO;AAAA,IACb,KAAK,EAAE,OAAO;AAAA,EAChB,CAAC;AAAA,EACD,MAAM,EAAE,OAAO;AACjB,CAAC;AAGM,SAAS,QAAQ,MAAc,eAAsC;AAC1E,QAAM,OAAO,YAAY,EAAE;AAC3B,QAAM,SAAS,WAAW,eAAe,MAAM,YAAY;AAAA,IACzD,GAAG;AAAA,IAAU,GAAG;AAAA,IAAU,GAAG;AAAA,IAAU,QAAQ;AAAA,EACjD,CAAC;AACD,QAAM,KAAK,YAAY,EAAE;AACzB,QAAM,SAAS,eAAe,eAAe,QAAQ,EAAE;AAEvD,QAAM,YAAY,OAAO,OAAO;AAAA,IAC9B,OAAO,OAAO,MAAM,MAAM;AAAA,IAC1B,OAAO,MAAM;AAAA,EACf,CAAC;AAED,SAAO;AAAA,IACL,YAAY;AAAA,MACV,QAAQ;AAAA,MACR,KAAK;AAAA,MACL,WAAW,EAAE,GAAG,UAAU,GAAG,UAAU,GAAG,SAAS;AAAA,MACnD,MAAM,KAAK,SAAS,QAAQ;AAAA,MAC5B,IAAI,GAAG,SAAS,QAAQ;AAAA,MACxB,KAAK,OAAO,WAAW,EAAE,SAAS,QAAQ;AAAA,IAC5C;AAAA,IACA,MAAM,UAAU,SAAS,QAAQ;AAAA,EACnC;AACF;AAEO,SAAS,QAAQ,MAAqB,eAA+B;AAC1E,QAAM,EAAE,MAAM,IAAI,KAAK,UAAU,IAAI,KAAK;AAE1C,QAAM,SAAS;AAAA,IACb;AAAA,IACA,OAAO,KAAK,MAAM,QAAQ;AAAA,IAC1B;AAAA,IACA,EAAE,GAAG,UAAU,GAAG,GAAG,UAAU,GAAG,GAAG,UAAU,GAAG,QAAQ,cAAc;AAAA,EAC1E;AAEA,QAAM,WAAW;AAAA,IACf;AAAA,IACA;AAAA,IACA,OAAO,KAAK,IAAI,QAAQ;AAAA,IACxB,EAAE,eAAe,GAAG;AAAA,EACtB;AACA,WAAS,WAAW,OAAO,KAAK,KAAK,QAAQ,CAAC;AAE9C,SAAO,OAAO,OAAO;AAAA,IACnB,SAAS,OAAO,OAAO,KAAK,KAAK,MAAM,QAAQ,CAAC;AAAA,IAChD,SAAS,MAAM;AAAA,EACjB,CAAC,EAAE,SAAS,MAAM;AACpB;;;ADvEO,IAAM,cAAcC,GAAE,KAAK;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAGM,IAAM,iBAAiBA,GAAE,KAAK,CAAC,UAAU,YAAY,WAAW,MAAM,CAAC;AAGvE,IAAM,gBAAyC;AAAA,EACpD,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,MAAM;AAAA,EACN,UAAU;AAAA,EACV,SAAS;AAAA,EACT,UAAU;AAAA,EACV,KAAK;AAAA,EACL,WAAW;AAAA,EACX,SAAS;AAAA,EACT,MAAM;AACR;AAIO,IAAM,kBAAkBA,GAAE,OAAO;AAAA,EACtC,QAAQA,GAAE,OAAO,EAAE,SAAS;AAAA,EAC5B,UAAUA,GAAE,OAAO,EAAE,SAAS;AAAA,EAC9B,SAASA,GAAE,OAAO,EAAE,SAAS;AAAA,EAC7B,MAAMA,GAAE,OAAO,EAAE,SAAS;AAC5B,CAAC;AAGD,IAAM,aAAa,CAAC,QAAQ,YAAY,WAAW,YAAY,OAAO,WAAW;AAE1E,SAAS,gBAAgB,WAA8C;AAC5E,QAAM,SAAiC,CAAC;AACxC,MAAI,UAAU,OAAQ,QAAO,SAAS,UAAU;AAChD,MAAI,UAAU,UAAU;AACtB,WAAO,WAAW,UAAU;AAC5B,eAAW,SAAS,WAAY,QAAO,KAAK,IAAI,UAAU;AAAA,EAC5D;AACA,MAAI,UAAU,QAAS,QAAO,UAAU,UAAU;AAClD,MAAI,UAAU,KAAM,QAAO,OAAO,UAAU;AAC5C,SAAO;AACT;AAIO,IAAM,iBAAiBA,GAAE,OAAO;AAAA,EACrC,MAAMA,GAAE,OAAO;AAAA,EACf,MAAMA,GAAE,QAAQ,IAAI;AAAA,EACpB,UAAUA,GAAE,OAAO;AAAA,EACnB,WAAW;AAAA,EACX,WAAWA,GAAE,OAAO;AACtB,CAAC;AAGM,IAAM,uBAAuBA,GAAE,OAAO;AAAA,EAC3C,MAAMA,GAAE,OAAO;AAAA,EACf,MAAMA,GAAE,QAAQ,UAAU;AAAA,EAC1B,OAAO;AAAA,EACP,YAAYA,GAAE,OAAO;AAAA,EACrB,WAAW;AAAA,EACX,WAAWA,GAAE,OAAO;AACtB,CAAC;AAGM,IAAM,eAAeA,GAAE,mBAAmB,QAAQ;AAAA,EACvD;AAAA,EACA;AACF,CAAC;AAOM,IAAM,mBAAmBA,GAAE,OAAO;AAAA,EACvC,MAAMA,GAAE,OAAO;AAAA,EACf,MAAMA,GAAE,KAAK,CAAC,MAAM,UAAU,CAAC;AAAA,EAC/B,WAAWA,GAAE,OAAOA,GAAE,OAAO,GAAGA,GAAE,OAAO,CAAC;AAAA,EAC1C,WAAWA,GAAE,OAAO;AACtB,CAAC;;;AElGD,SAAS,cAAc,gBAAgB;AACvC,SAAS,eAAAC,oBAAmB;AAC5B,SAAS,gBAAgB;AAEzB,IAAM,UAAU;AAChB,IAAM,UAAU;AAIhB,SAAS,WAAW,OAAqB;AACvC,MAAI;AACF,iBAAa,YAAY;AAAA,MACvB;AAAA,MAA2B;AAAA,MAAM;AAAA,MAAS;AAAA,MAAM;AAAA,IAClD,GAAG,EAAE,OAAO,SAAS,CAAC;AAAA,EACxB,QAAQ;AAAA,EAAC;AACT,eAAa,YAAY;AAAA,IACvB;AAAA,IAAwB;AAAA,IAAM;AAAA,IAAS;AAAA,IAAM;AAAA,IAAS;AAAA,IAAM;AAAA,EAC9D,GAAG,EAAE,OAAO,SAAS,CAAC;AACxB;AAEA,SAAS,WAA0B;AACjC,MAAI;AACF,WAAO,aAAa,YAAY;AAAA,MAC9B;AAAA,MAAyB;AAAA,MAAM;AAAA,MAAS;AAAA,MAAM;AAAA,MAAS;AAAA,IACzD,GAAG,EAAE,UAAU,SAAS,OAAO,CAAC,UAAU,QAAQ,QAAQ,EAAE,CAAC,EAAE,KAAK;AAAA,EACtE,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAIA,SAAS,WAAW,OAAqB;AACvC;AAAA,IACE,4CAA4C,OAAO,cAAc,OAAO,cAAc,OAAO;AAAA,IAC7F,EAAE,OAAO,OAAO,OAAO,CAAC,QAAQ,UAAU,QAAQ,EAAE;AAAA,EACtD;AACF;AAEA,SAAS,WAA0B;AACjC,MAAI;AACF,WAAO,aAAa,eAAe;AAAA,MACjC;AAAA,MAAU;AAAA,MAAW;AAAA,MAAS;AAAA,MAAW;AAAA,IAC3C,GAAG,EAAE,UAAU,SAAS,OAAO,CAAC,UAAU,QAAQ,QAAQ,EAAE,CAAC,EAAE,KAAK;AAAA,EACtE,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAIA,SAAS,gBAAgB,OAAqB;AAC5C,QAAM,KAAK,SAAS;AACpB,MAAI,OAAO,SAAU,QAAO,WAAW,KAAK;AAC5C,MAAI,OAAO,QAAS,QAAO,WAAW,KAAK;AAC3C,QAAM,IAAI,MAAM,4CAA4C;AAC9D;AAEA,SAAS,kBAAiC;AACxC,QAAM,KAAK,SAAS;AACpB,MAAI,OAAO,SAAU,QAAO,SAAS;AACrC,MAAI,OAAO,QAAS,QAAO,SAAS;AACpC,SAAO;AACT;AAIO,SAAS,mBAAkC;AAChD,QAAM,SAAS,QAAQ,IAAI;AAC3B,MAAI,OAAQ,QAAO;AACnB,SAAO,gBAAgB;AACzB;AAEO,SAAS,sBAA8B;AAC5C,QAAM,WAAW,iBAAiB;AAClC,MAAI,SAAU,QAAO;AAErB,QAAM,MAAMA,aAAY,EAAE,EAAE,SAAS,KAAK;AAC1C,kBAAgB,GAAG;AACnB,SAAO;AACT;;;AChFA,SAAS,kBAAkB;AAC3B,SAAS,aAAa;AACtB,SAAS,0BAA0B;AACnC,SAAS,kBAAkB;AAC3B,SAAS,kBAAkB;AAC3B,YAAY,aAAa;AACzB,OAAO,mBAAmB;AAC1B,YAAY,SAAS;AACrB,SAAS,eAAe;AACxB,OAAO,UAAU;AAGjB,IAAM,SAAS,cAAc,GAAG;AAIzB,SAAS,eAAe,OAAiB,UAAU,GAAW;AACnE,UAAQ,OAAO;AAAA,IACb,KAAK;AACH,aAAO,cAAc,OAAO;AAAA,IAC9B,KAAK;AACH,aAAO,aAAa,OAAO;AAAA,IAC7B,KAAK;AACH,aAAO,YAAY,OAAO;AAAA,IAC5B,KAAK;AACH,aAAO,cAAc,OAAO;AAAA,EAChC;AACF;AASO,SAAS,kBACd,UACA,OACA,UAAU,GACE;AACZ,UAAQ,OAAO;AAAA,IACb,KAAK;AACH,aAAO,aAAa,UAAU,OAAO;AAAA,IACvC,KAAK;AACH,aAAO,eAAe,UAAU,OAAO;AAAA,IACzC,KAAK;AACH,aAAO,cAAc,UAAU,OAAO;AAAA,IACxC,KAAK;AACH,aAAO,WAAW,UAAU,OAAO;AAAA,EACvC;AACF;AAEO,SAAS,mBACd,UACA,UAAU,GACgB;AAC1B,SAAO;AAAA,IACL,QAAQ,kBAAkB,UAAU,UAAU,OAAO,EAAE;AAAA,IACvD,UAAU,kBAAkB,UAAU,YAAY,OAAO,EAAE;AAAA,IAC3D,SAAS,kBAAkB,UAAU,WAAW,OAAO,EAAE;AAAA,IACzD,MAAM,kBAAkB,UAAU,QAAQ,OAAO,EAAE;AAAA,EACrD;AACF;AAIA,SAAS,aAAa,UAAkB,SAA6B;AACnE,QAAM,OAAO,mBAAmB,QAAQ;AACxC,QAAM,OAAO,eAAe,UAAU,OAAO;AAC7C,QAAM,EAAE,IAAI,IAAI,WAAW,MAAM,OAAO,KAAK,IAAI,EAAE,SAAS,KAAK,CAAC;AAClE,QAAM,UAAU,QAAQ,SAAS,WAAW,KAAK,GAAG,CAAC;AACrD,SAAO;AAAA,IACL,YAAY,QAAQ;AAAA,IACpB,SAAS,QAAQ,UAAU,SAAS;AAAA,EACtC;AACF;AAIA,SAAS,eAAe,UAAkB,SAA6B;AACrE,QAAM,OAAO,mBAAmB,QAAQ;AACxC,QAAM,QAAQ,MAAM,eAAe,IAAI;AACvC,QAAM,OAAO,eAAe,YAAY,OAAO;AAC/C,QAAM,QAAQ,MAAM,OAAO,IAAI;AAC/B,MAAI,CAAC,MAAM,WAAY,OAAM,IAAI,MAAM,kCAAkC;AAEzE,QAAM,UAAU,sBAAsB,MAAM,SAAU;AACtD,SAAO;AAAA,IACL,YAAY,MAAM;AAAA,IAClB;AAAA,EACF;AACF;AAEA,SAAS,sBAAsB,kBAAsC;AACnE,QAAM,eAAmB,kBAAc,kBAAkB,KAAK;AAC9D,QAAM,OAAO,UAAU,aAAa,MAAM,CAAC,CAAC;AAC5C,QAAM,eAAe,KAAK,MAAM,GAAG;AACnC,QAAM,UAAU,OAAO,OAAO,KAAK,YAAY,EAAE,SAAS,KAAK;AAC/D,SAAO,kBAAkB,OAAO;AAClC;AAEA,SAAS,UAAU,MAA8B;AAC/C,SAAO,WAAW,IAAI;AACxB;AAEA,SAAS,kBAAkB,SAAyB;AAClD,QAAM,OAAO,QAAQ,YAAY,EAAE,QAAQ,MAAM,EAAE;AACnD,QAAM,OAAO,OAAO,KAAK,WAAW,OAAO,KAAK,MAAM,MAAM,CAAC,CAAC,EAAE,SAAS,KAAK;AAC9E,MAAI,cAAc;AAClB,WAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,mBAAe,SAAS,KAAK,CAAC,GAAG,EAAE,KAAK,IAAI,KAAK,CAAC,EAAE,YAAY,IAAI,KAAK,CAAC;AAAA,EAC5E;AACA,SAAO;AACT;AAIA,SAAS,cAAc,UAAkB,SAA6B;AACpE,QAAM,OAAO,mBAAmB,QAAQ;AACxC,QAAM,QAAQ,MAAM,eAAe,IAAI;AACvC,QAAM,OAAO,eAAe,WAAW,OAAO;AAC9C,QAAM,QAAQ,MAAM,OAAO,IAAI;AAC/B,MAAI,CAAC,MAAM,WAAY,OAAM,IAAI,MAAM,sCAAsC;AAE7E,QAAM,UAAU,OAAO,eAAe,OAAO,KAAK,MAAM,UAAU,CAAC;AACnE,QAAM,EAAE,QAAQ,IAAY,iBAAS,OAAO;AAAA,IAC1C,QAAQ,OAAO,KAAK,QAAQ,SAAS;AAAA,EACvC,CAAC;AACD,MAAI,CAAC,QAAS,OAAM,IAAI,MAAM,kCAAkC;AAEhE,SAAO;AAAA,IACL,YAAY,MAAM;AAAA,IAClB;AAAA,EACF;AACF;AAIA,SAAS,WAAW,UAAkB,SAA6B;AACjE,QAAM,OAAO,mBAAmB,QAAQ;AACxC,QAAM,QAAQ,MAAM,eAAe,IAAI;AACvC,QAAM,OAAO,eAAe,QAAQ,OAAO;AAC3C,QAAM,QAAQ,MAAM,OAAO,IAAI;AAC/B,MAAI,CAAC,MAAM,WAAY,OAAM,IAAI,MAAM,mCAAmC;AAE1E,QAAM,UAAU,uBAAuB,MAAM,SAAU;AACvD,SAAO,EAAE,YAAY,MAAM,YAAY,QAAQ;AACjD;AAEA,SAAS,uBAAuB,kBAAsC;AACpE,QAAM,eAAmB,kBAAc,kBAAkB,KAAK;AAC9D,QAAM,OAAO,UAAU,aAAa,MAAM,CAAC,CAAC;AAC5C,QAAM,eAAe,KAAK,MAAM,GAAG;AAGnC,QAAM,WAAW,OAAO,OAAO,CAAC,OAAO,KAAK,CAAC,EAAI,CAAC,GAAG,OAAO,KAAK,YAAY,CAAC,CAAC;AAC/E,QAAM,QAAQ,WAAW,QAAQ,EAAE,OAAO,QAAQ,EAAE,OAAO;AAC3D,QAAM,QAAQ,WAAW,QAAQ,EAAE,OAAO,KAAK,EAAE,OAAO;AACxD,QAAM,MAAM,OAAO,OAAO,CAAC,UAAU,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC;AAEvD,SAAO,KAAK,OAAO,GAAG;AACxB;;;AJ7IA,OAAOC,WAAU;AAIjB,IAAM,aAAa,KAAK,QAAQ,GAAG,WAAW,SAAS;AACvD,IAAM,eAAe,KAAK,YAAY,cAAc;AAEpD,SAAS,kBAAwB;AAC/B,YAAU,YAAY,EAAE,WAAW,MAAM,MAAM,IAAM,CAAC;AACxD;AAIO,SAAS,cAAwB;AACtC,MAAI,CAAC,WAAW,YAAY,EAAG,QAAO,CAAC;AAEvC,QAAM,gBAAgB,iBAAiB;AACvC,MAAI,CAAC,eAAe;AAClB,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEA,QAAM,MAAM,KAAK,MAAM,aAAa,cAAc,OAAO,CAAC;AAC1D,QAAM,OAAO,oBAAkB,MAAM,GAAG;AACxC,QAAM,YAAY,QAAQ,MAAM,aAAa;AAC7C,QAAM,SAAS,KAAK,MAAM,SAAS;AAEnC,UAAQ,OAAO,WAAW,CAAC,GAAG,IAAI,CAAC,MAAe,aAAa,MAAM,CAAC,CAAC;AACzE;AAEO,SAAS,YAAY,SAAyB;AACnD,QAAM,gBAAgB,oBAAoB;AAC1C,QAAM,OAAO,KAAK,UAAU,EAAE,QAAQ,CAAC;AACvC,QAAM,OAAO,QAAQ,MAAM,aAAa;AAExC,kBAAgB;AAChB,QAAM,UAAU,KAAK,YAAY,YAAYC,aAAY,CAAC,EAAE,SAAS,KAAK,CAAC,MAAM;AACjF,gBAAc,SAAS,KAAK,UAAU,MAAM,MAAM,CAAC,GAAG,EAAE,MAAM,IAAM,CAAC;AACrE,aAAW,SAAS,YAAY;AAClC;AAEO,SAAS,cAAc,IAAuC;AACnE,QAAM,UAAU,YAAY;AAC5B,KAAG,OAAO;AACV,cAAY,OAAO;AACrB;AAIO,SAAS,WAAW,eAAsC;AAC/D,QAAM,UAAU,YAAY;AAE5B,aAAW,UAAU,SAAS;AAC5B,QAAI,OAAO,SAAS,cAAe,QAAO;AAC1C,eAAW,WAAW,OAAO,OAAO,OAAO,SAAS,GAAG;AACrD,UAAI,YAAY,cAAe,QAAO;AAAA,IACxC;AAAA,EACF;AAEA,SAAO;AACT;AAEO,SAAS,kBAAkB,eAA+B;AAC/D,QAAM,SAAS,WAAW,aAAa;AACvC,MAAI,CAAC,OAAQ,OAAM,IAAI,MAAM,WAAW,aAAa,aAAa;AAClE,SAAO;AACT;AAEO,SAAS,UAAU,QAAsB;AAC9C,gBAAc,CAAC,YAAY;AACzB,QAAI,QAAQ,KAAK,CAAC,MAAM,EAAE,SAAS,OAAO,IAAI,GAAG;AAC/C,YAAM,IAAI,MAAM,WAAW,OAAO,IAAI,kBAAkB;AAAA,IAC1D;AACA,YAAQ,KAAK,MAAM;AAAA,EACrB,CAAC;AACH;AAEO,SAAS,aAAa,MAAoB;AAC/C,gBAAc,CAAC,YAAY;AACzB,UAAM,MAAM,QAAQ,UAAU,CAAC,MAAM,EAAE,SAAS,IAAI;AACpD,QAAI,QAAQ,GAAI,OAAM,IAAI,MAAM,WAAW,IAAI,aAAa;AAC5D,YAAQ,OAAO,KAAK,CAAC;AAAA,EACvB,CAAC;AACH;AAIO,SAAS,kBACd,QACA,OAC6C;AAC7C,QAAM,WAAW,cAAc,KAAK;AAEpC,MAAI,OAAO,SAAS,YAAY;AAC9B,QAAI,OAAO,UAAU,UAAU;AAC7B,YAAM,IAAI;AAAA,QACR,WAAW,OAAO,IAAI,sBAAsB,OAAO,KAAK,qBAAqB,KAAK;AAAA,MACpF;AAAA,IACF;AACA,WAAO;AAAA,MACL,YAAY,iBAAiB,OAAO,YAAY,QAAQ;AAAA,MACxD,SAAS,OAAO,UAAU,QAAQ;AAAA,IACpC;AAAA,EACF;AAEA,QAAM,UAAU,kBAAkB,OAAO,UAAU,QAAQ;AAC3D,SAAO,EAAE,YAAY,QAAQ,YAAY,SAAS,QAAQ,QAAQ;AACpE;AAEA,SAAS,iBAAiB,KAAa,OAA6B;AAClE,MAAI,UAAU,UAAU;AACtB,WAAOD,MAAK,OAAO,GAAG;AAAA,EACxB;AACA,QAAM,MAAM,IAAI,WAAW,IAAI,IAAI,IAAI,MAAM,CAAC,IAAI;AAClD,SAAO,WAAW,KAAK,OAAO,KAAK,KAAK,KAAK,CAAC;AAChD;","names":["randomBytes","z","z","randomBytes","bs58","randomBytes"]}
|
|
@@ -9,6 +9,7 @@ import {
|
|
|
9
9
|
encrypt,
|
|
10
10
|
encryptedFileSchema,
|
|
11
11
|
ensureEncryptionKey,
|
|
12
|
+
expandAddresses,
|
|
12
13
|
findWalletOrThrow,
|
|
13
14
|
getEncryptionKey,
|
|
14
15
|
keyChainSchema,
|
|
@@ -16,7 +17,7 @@ import {
|
|
|
16
17
|
removeWallet,
|
|
17
18
|
resolveSigningKey,
|
|
18
19
|
walletInfoSchema
|
|
19
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-AL5WDHLT.js";
|
|
20
21
|
|
|
21
22
|
// src/auth.ts
|
|
22
23
|
import * as fs from "fs";
|
|
@@ -339,6 +340,7 @@ var schemas_default = [
|
|
|
339
340
|
properties: {
|
|
340
341
|
email: {
|
|
341
342
|
type: "string",
|
|
343
|
+
format: "email",
|
|
342
344
|
description: "The email of the user to login"
|
|
343
345
|
}
|
|
344
346
|
},
|
|
@@ -3206,12 +3208,14 @@ var schemas_default = [
|
|
|
3206
3208
|
description: "Blockchain to get trending tokens from (e.g. 'solana', 'ethereum', 'base')"
|
|
3207
3209
|
},
|
|
3208
3210
|
limit: {
|
|
3209
|
-
type: "
|
|
3211
|
+
type: "integer",
|
|
3212
|
+
minimum: 1,
|
|
3210
3213
|
description: "Number of results per page"
|
|
3211
3214
|
},
|
|
3212
3215
|
page: {
|
|
3213
|
-
type: "
|
|
3214
|
-
|
|
3216
|
+
type: "integer",
|
|
3217
|
+
minimum: 1,
|
|
3218
|
+
description: "Page number (starts at 1)"
|
|
3215
3219
|
}
|
|
3216
3220
|
},
|
|
3217
3221
|
required: [
|
|
@@ -4743,10 +4747,12 @@ var schemas_default = [
|
|
|
4743
4747
|
properties: {
|
|
4744
4748
|
code: {
|
|
4745
4749
|
type: "string",
|
|
4750
|
+
pattern: "^\\d{6}$",
|
|
4746
4751
|
description: "The code to verify"
|
|
4747
4752
|
},
|
|
4748
4753
|
email: {
|
|
4749
4754
|
type: "string",
|
|
4755
|
+
format: "email",
|
|
4750
4756
|
description: "The email the OTP was sent to"
|
|
4751
4757
|
}
|
|
4752
4758
|
},
|
|
@@ -5889,7 +5895,7 @@ var walletCreate = createTool(walletCreateSchema, async (params) => {
|
|
|
5889
5895
|
);
|
|
5890
5896
|
}
|
|
5891
5897
|
}
|
|
5892
|
-
return { name: params.name, addresses };
|
|
5898
|
+
return { name: params.name, addresses: expandAddresses(addresses) };
|
|
5893
5899
|
});
|
|
5894
5900
|
|
|
5895
5901
|
// src/tools/wallet/import/tool.ts
|
|
@@ -5985,7 +5991,7 @@ var walletList = createTool(walletListSchema, async () => {
|
|
|
5985
5991
|
return wallets.map((w) => ({
|
|
5986
5992
|
name: w.name,
|
|
5987
5993
|
type: w.type,
|
|
5988
|
-
addresses: w.addresses,
|
|
5994
|
+
addresses: expandAddresses(w.addresses),
|
|
5989
5995
|
createdAt: w.createdAt
|
|
5990
5996
|
}));
|
|
5991
5997
|
});
|
|
@@ -6007,7 +6013,7 @@ var walletRetrieve = createTool(walletRetrieveSchema, async (params) => {
|
|
|
6007
6013
|
return {
|
|
6008
6014
|
name: wallet.name,
|
|
6009
6015
|
type: wallet.type,
|
|
6010
|
-
addresses: wallet.addresses,
|
|
6016
|
+
addresses: expandAddresses(wallet.addresses),
|
|
6011
6017
|
createdAt: wallet.createdAt
|
|
6012
6018
|
};
|
|
6013
6019
|
});
|
|
@@ -6302,7 +6308,7 @@ var bitcoinBalanceRetrieve = createTool(
|
|
|
6302
6308
|
async (params) => {
|
|
6303
6309
|
let address = params.wallet;
|
|
6304
6310
|
if (!address.startsWith("bc1") && !address.startsWith("1") && !address.startsWith("3")) {
|
|
6305
|
-
const { findWalletOrThrow: findWalletOrThrow2 } = await import("./store-
|
|
6311
|
+
const { findWalletOrThrow: findWalletOrThrow2 } = await import("./store-QVVENVIP.js");
|
|
6306
6312
|
const wallet = findWalletOrThrow2(address);
|
|
6307
6313
|
const btcAddress = wallet.addresses.bitcoin;
|
|
6308
6314
|
if (!btcAddress) {
|
|
@@ -6534,9 +6540,7 @@ function createLocalX402Client(walletAddress, secretKey) {
|
|
|
6534
6540
|
`Wallet ${walletAddress} is not a signer for this transaction`
|
|
6535
6541
|
);
|
|
6536
6542
|
}
|
|
6537
|
-
return {
|
|
6538
|
-
[walletAddress]: tx.signatures[signerIndex]
|
|
6539
|
-
};
|
|
6543
|
+
return { [walletAddress]: tx.signatures[signerIndex] };
|
|
6540
6544
|
});
|
|
6541
6545
|
}
|
|
6542
6546
|
};
|
|
@@ -6652,4 +6656,4 @@ export {
|
|
|
6652
6656
|
x402Request,
|
|
6653
6657
|
virtualAccountWalletRegister
|
|
6654
6658
|
};
|
|
6655
|
-
//# sourceMappingURL=chunk-
|
|
6659
|
+
//# sourceMappingURL=chunk-P764SORF.js.map
|