@hydrawallet-sdk/core 1.0.0 → 1.0.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/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/embedded.ts","../src/utils/cardano-wasm/build-keys.ts","../src/constants/chain.ts","../src/utils/cardano-wasm/resolver.ts","../src/utils/parser.ts","../src/utils/cardano-wasm/deserializer.ts","../src/wallet.ts","../src/constants/cost-models.ts","../src/constants/placeholder.ts","../src/constants/protocol-parameters.ts","../src/constants/index.ts","../src/types/cardano/asset.ts","../src/types/cardano/asset-metadata.ts","../src/types/protocol.ts","../src/utils/cardano-wasm/serializer.ts","../src/utils/cardano-wasm/converter.ts"],"sourcesContent":["export * from './embedded'\nexport * from './wallet'\nexport * from './constants'\n\nexport * from './types/wallet'\nexport * from './types/wallet/fetcher'\nexport * from './types/wallet/submitter'\nexport * from './types/cardano'\nexport * from './types/protocol'\n\nexport * from './utils/cardano-wasm/serializer'\nexport * from './utils/cardano-wasm/deserializer'\nexport * from './utils/cardano-wasm/resolver'\nexport * from './utils/cardano-wasm/converter'\nexport * from './utils/cardano-wasm/build-keys'\nexport * from './utils/parser'\n","/* eslint-disable @typescript-eslint/no-extraneous-class */\nimport * as BaseEncoding from '@scure/base'\nimport { generateMnemonic, mnemonicToEntropy } from 'bip39'\nimport { CardanoWASM } from '@hydrawallet-sdk/cardano-wasm'\nimport {\n\tbuildBaseAddress,\n\tbuildEnterpriseAddress,\n\tbuildKeys,\n\tbuildRewardAddress,\n\tstripExtendedKey\n} from './utils/cardano-wasm/build-keys'\nimport { resolveTxHash } from './utils/cardano-wasm/resolver'\nimport { toBytes } from './utils/parser'\n\nexport class WalletStaticMethods {\n\tstatic privateKeyBech32ToPrivateKeyHex(_bech32: string): string {\n\t\tconst bech32DecodedBytes = BaseEncoding.bech32.decodeToBytes(_bech32).bytes\n\t\tconst bip32PrivateKey = CardanoWASM.Bip32PrivateKey.from_bytes(bech32DecodedBytes)\n\t\treturn bip32PrivateKey.to_hex()\n\t}\n\n\tstatic mnemonicToPrivateKeyHex(words: string[], password = ''): string {\n\t\tconst entropy = mnemonicToEntropy(words.join(' '))\n\t\tconst bip32PrivateKey = CardanoWASM.Bip32PrivateKey.from_bip39_entropy(toBytes(entropy), toBytes(password))\n\t\treturn bip32PrivateKey.to_hex()\n\t}\n\n\tstatic privateKeyHexToBech32(privateKeyHex: string) {\n\t\tconst bip32PrivateKey = CardanoWASM.Bip32PrivateKey.from_hex(privateKeyHex)\n\t\treturn bip32PrivateKey.to_bech32()\n\t}\n\n\tstatic signingKeyToHexes(paymentKey: string, stakeKey: string): [string, string] {\n\t\treturn [\n\t\t\tpaymentKey.startsWith('5820') ? paymentKey.slice(4) : paymentKey,\n\t\t\tstakeKey.startsWith('5820') ? stakeKey.slice(4) : stakeKey\n\t\t]\n\t}\n\n\tstatic bip32BytesToPrivateKeyHex(bip32Bytes: Uint8Array): string {\n\t\tconst bip32PrivateKey = CardanoWASM.Bip32PrivateKey.from_bytes(bip32Bytes)\n\t\treturn bip32PrivateKey.to_hex()\n\t}\n\n\tstatic getAddresses(\n\t\tpaymentKey: CardanoWASM.Bip32PrivateKey,\n\t\tstakingKey: CardanoWASM.Bip32PrivateKey,\n\t\tnetworkId = 0\n\t): {\n\t\tbaseAddress: CardanoWASM.Address\n\t\tenterpriseAddress: CardanoWASM.Address\n\t\trewardAddress: CardanoWASM.Address\n\t} {\n\t\tconst baseAddress = buildBaseAddress(\n\t\t\tnetworkId,\n\t\t\tpaymentKey.to_public().to_raw_key().hash(),\n\t\t\tstakingKey.to_public().to_raw_key().hash()\n\t\t).to_address()\n\n\t\tconst enterpriseAddress = buildEnterpriseAddress(networkId, paymentKey.to_public().to_raw_key().hash()).to_address()\n\n\t\tconst rewardAddress = buildRewardAddress(networkId, stakingKey.to_public().to_raw_key().hash()).to_address()\n\n\t\treturn {\n\t\t\tbaseAddress: baseAddress,\n\t\t\tenterpriseAddress: enterpriseAddress,\n\t\t\trewardAddress: rewardAddress\n\t\t}\n\t}\n\n\tstatic generateMnemonic(strength = 256): string[] {\n\t\tconst mnemonic = generateMnemonic(strength)\n\t\treturn mnemonic.split(' ')\n\t}\n\n\t// static getDRepKey(\n\t// dRepKey: Ed25519PrivateKey,\n\t// networkId = 0\n\t// ): {\n\t// pubDRepKey: string\n\t// dRepIDBech32: DRepID\n\t// dRepIDHash: Ed25519KeyHashHex\n\t// } {\n\t// const pubDRepKey = dRepKey.toPublic().hex().toString()\n\n\t// const dRepIDBech32 = buildDRepID(Ed25519PublicKeyHex(pubDRepKey), networkId)\n\t// const dRep = DRep.newKeyHash(dRepKey.toPublic().hash().hex())\n\t// const dRepIDHash = dRep.toKeyHash()!\n\n\t// return {\n\t// pubDRepKey,\n\t// dRepIDBech32,\n\t// dRepIDHash\n\t// }\n\t// }\n}\n\nexport type Account = {\n\tbaseAddress: CardanoWASM.Address\n\tenterpriseAddress: CardanoWASM.Address\n\trewardAddress: CardanoWASM.Address\n\tbaseAddressBech32: string\n\tenterpriseAddressBech32: string\n\trewardAddressBech32: string\n\tpaymentKey: CardanoWASM.Bip32PrivateKey\n\tstakeKey: CardanoWASM.Bip32PrivateKey\n\t/**\n\t * @description 96 bytes with extended public key\n\t */\n\textendedPaymentKeyHex: string\n\t/**\n\t * @description 96 bytes with extended public key\n\t */\n\textendedStakeKeyHex: string\n\t/**\n\t * @description 64 bytes without extended public key\n\t */\n\tpaymentKeyHex: string\n\t/**\n\t * @description 64 bytes without extended public key\n\t */\n\tstakeKeyHex: string\n\n\tpubDRepKey?: string\n\tdRepIDBech32?: ReturnType<CardanoWASM.DRep['to_bech32']>\n\tdRepIDHash?: ReturnType<CardanoWASM.DRep['to_key_hash']>\n}\n\nexport type CreateEmbeddedWalletOptions = {\n\tnetworkId: number\n\tkey: EmbeddedWalletKeyType\n}\n\nexport type EmbeddedWalletKeyType =\n\t| {\n\t\t\ttype: 'root'\n\t\t\tbech32: string\n\t }\n\t| {\n\t\t\ttype: 'cli'\n\t\t\tpayment: string\n\t\t\tstake?: string\n\t }\n\t| {\n\t\t\ttype: 'mnemonic'\n\t\t\twords: string[]\n\t }\n\t| {\n\t\t\ttype: 'bip32Bytes'\n\t\t\tbip32Bytes: Uint8Array\n\t }\n\nexport class EmbeddedWallet extends WalletStaticMethods {\n\tprivate readonly _walletSecret?: string | [string, string]\n\tprivate readonly _networkId: number\n\n\tconstructor(options: CreateEmbeddedWalletOptions) {\n\t\tsuper()\n\t\tthis._networkId = options.networkId\n\n\t\tswitch (options.key.type) {\n\t\t\tcase 'mnemonic':\n\t\t\t\tthis._walletSecret = WalletStaticMethods.mnemonicToPrivateKeyHex(options.key.words)\n\t\t\t\tbreak\n\t\t\tcase 'root':\n\t\t\t\tthis._walletSecret = WalletStaticMethods.privateKeyBech32ToPrivateKeyHex(options.key.bech32)\n\t\t\t\tbreak\n\t\t\tcase 'cli':\n\t\t\t\tthis._walletSecret = WalletStaticMethods.signingKeyToHexes(\n\t\t\t\t\toptions.key.payment,\n\t\t\t\t\toptions.key.stake ?? 'f0'.repeat(32)\n\t\t\t\t)\n\t\t\t\tbreak\n\t\t\tcase 'bip32Bytes':\n\t\t\t\tthis._walletSecret = WalletStaticMethods.bip32BytesToPrivateKeyHex(options.key.bip32Bytes)\n\t\t\t\tbreak\n\t\t}\n\t}\n\n\tgetPrivateKeyHex(): string | [string, string] {\n\t\tif (this._walletSecret == undefined) throw new Error('[EmbeddedWallet] No keys initialized')\n\t\treturn this._walletSecret\n\t}\n\n\tgetAccount(accountIndex = 0, keyIndex = 0): Account {\n\t\tif (this._walletSecret == undefined) throw new Error('[EmbeddedWallet] No keys initialized')\n\n\t\tconst { paymentKey, stakeKey } = buildKeys(this._walletSecret, accountIndex, keyIndex)\n\n\t\tconst { baseAddress, enterpriseAddress, rewardAddress } = WalletStaticMethods.getAddresses(\n\t\t\tpaymentKey,\n\t\t\tstakeKey,\n\t\t\tthis._networkId\n\t\t)\n\n\t\tconst _account: Account = {\n\t\t\tbaseAddress: baseAddress,\n\t\t\tenterpriseAddress: enterpriseAddress,\n\t\t\trewardAddress: rewardAddress,\n\n\t\t\tbaseAddressBech32: baseAddress.to_bech32(),\n\t\t\tenterpriseAddressBech32: enterpriseAddress.to_bech32(),\n\t\t\trewardAddressBech32: rewardAddress.to_bech32(),\n\n\t\t\tpaymentKey: paymentKey,\n\t\t\tstakeKey: stakeKey,\n\n\t\t\tpaymentKeyHex: stripExtendedKey(paymentKey.to_hex()),\n\t\t\tstakeKeyHex: stripExtendedKey(stakeKey.to_hex()),\n\t\t\textendedPaymentKeyHex: paymentKey.to_hex(),\n\t\t\textendedStakeKeyHex: stakeKey.to_hex()\n\t\t}\n\n\t\t// TODO: fix it\n\t\t// if (dRepKey) {\n\t\t// const { pubDRepKey, dRepIDBech32, dRepIDHash } = WalletStaticMethods.getDRepKey(dRepKey, this._networkId)\n\t\t// _account.pubDRepKey = pubDRepKey\n\t\t// _account.dRepIDBech32 = dRepIDBech32\n\t\t// _account.dRepIDHash = dRepIDHash\n\t\t// }\n\n\t\treturn _account\n\t}\n\n\t/**\n\t * Get wallet network ID.\n\t *\n\t * @returns network ID\n\t */\n\tgetNetworkId(): number {\n\t\treturn this._networkId\n\t}\n\n\t/**\n\t * This endpoints sign the provided transaction (unsignedTx) with the private key of the owner.\n\t *\n\t * @param unsignedTx - a transaction in CBOR\n\t * @param accountIndex account index (default: 0)\n\t * @param keyIndex key index (default: 0)\n\t * @returns VkeyWitness\n\t */\n\tsignTx(unsignedTx: string, accountIndex = 0, keyIndex = 0): CardanoWASM.Vkeywitness {\n\t\ttry {\n\t\t\tconst txHashHex = resolveTxHash(unsignedTx)\n\t\t\tconst { paymentKey } = this.getAccount(accountIndex, keyIndex)\n\t\t\tconst privateSigningKey = paymentKey.to_raw_key()\n\t\t\tconst vkeyWitness = CardanoWASM.make_vkey_witness(CardanoWASM.TransactionHash.from_hex(txHashHex), privateSigningKey)\n\t\t\treturn vkeyWitness\n\t\t} catch (error) {\n\t\t\tthrow new Error(`[EmbeddedWallet] An error occurred during signTx: ${error}.`)\n\t\t}\n\t}\n\n\t// /**\n\t// * This endpoint utilizes the [CIP-8 - Message Signing](https://cips.cardano.org/cips/cip8/) to sign arbitrary data, to verify the data was signed by the owner of the private key.\n\t// *\n\t// * @param address - bech32 address to sign the data with\n\t// * @param payload - the data to be signed\n\t// * @param accountIndex account index (default: 0)\n\t// * @returns a signature\n\t// */\n\t// signData(address: string, payload: string, accountIndex = 0, keyIndex = 0): DataSignature {\n\t// try {\n\t// const { baseAddress, enterpriseAddress, rewardAddress, paymentKey } = this.getAccount(accountIndex, keyIndex)\n\n\t// const foundAddress = [baseAddress, enterpriseAddress, rewardAddress].find(a => a.toBech32() === address)\n\n\t// if (foundAddress === undefined)\n\t// throw new Error(`[EmbeddedWallet] Address: ${address} doesn't belong to this account.`)\n\n\t// // todo tw\n\t// return signData(payload, {\n\t// address: Address.fromBech32(address),\n\t// key: paymentKey\n\t// })\n\t// } catch (error) {\n\t// throw new Error(`[EmbeddedWallet] An error occurred during signData: ${error}.`)\n\t// }\n\t// }\n}\n","import { CardanoWASM } from '@hydrawallet-sdk/cardano-wasm'\nimport { NETWORK_ID } from '../../constants/chain'\n\nexport const buildBaseAddress = (\n\tnetworkId: number,\n\tpaymentKeyHash: CardanoWASM.Ed25519KeyHash,\n\tstakeKeyHash: CardanoWASM.Ed25519KeyHash\n): CardanoWASM.BaseAddress => {\n\tconst paymentCredential = CardanoWASM.Credential.from_keyhash(paymentKeyHash)\n\tconst stakeCredential = CardanoWASM.Credential.from_keyhash(stakeKeyHash)\n\treturn CardanoWASM.BaseAddress.new(networkId, paymentCredential, stakeCredential)\n}\n\nexport const buildEnterpriseAddress = (\n\tnetworkId: number,\n\tpaymentKeyHash: CardanoWASM.Ed25519KeyHash\n): CardanoWASM.EnterpriseAddress => {\n\t// return EnterpriseAddress.fromCredentials(networkId, {\n\t// hash: paymentKeyHash,\n\t// type: CredentialType.KeyHash\n\t// })\n\tconst paymentCredential = CardanoWASM.Credential.from_keyhash(paymentKeyHash)\n\treturn CardanoWASM.EnterpriseAddress.new(networkId, paymentCredential)\n}\n\nexport const buildRewardAddress = (\n\tnetworkId: number,\n\tstakeKeyHash: CardanoWASM.Ed25519KeyHash\n): CardanoWASM.RewardAddress => {\n\t// const cred = {\n\t// type: CredentialType.KeyHash,\n\t// hash: stakeKeyHash\n\t// }\n\t// return RewardAddress.fromCredentials(networkId, cred)\n\tconst stakeCredential = CardanoWASM.Credential.from_keyhash(stakeKeyHash)\n\treturn CardanoWASM.RewardAddress.new(networkId, stakeCredential)\n}\n\nexport const buildDRepID = (\n\tdRepKey: CardanoWASM.Ed25519KeyHash,\n\tnetworkId: number = NETWORK_ID.MAINNET\n\t// addressType: AddressType = AddressType.EnterpriseKey\n) => {\n\t// const dRepKeyBytes = Buffer.from(dRepKey, 'hex')\n\t// const dRepIdHex = blake2b(28).update(dRepKeyBytes).digest('hex')\n\t// const paymentAddress = EnterpriseAddress.packParts({\n\t// networkId,\n\t// paymentPart: {\n\t// hash: Hash28ByteBase16(dRepIdHex),\n\t// type: CredentialType.KeyHash\n\t// },\n\t// type: addressType\n\t// })\n\t// return HexBlob.toTypedBech32<DRepID>('drep', HexBlob.fromBytes(paymentAddress))\n\n\t// CardanoWASM.DRep.new_from_credential(CardanoWASM.Credential.from_hex(dRepKey.to_hex()))\n\t// const paymentAddress = CardanoWASM.EnterpriseAddress.new(networkId, CardanoWASM.Credential.from_hex(dRepKey.to_hex()))\n\tconsole.log('buildDRepID', dRepKey.to_hex(), networkId)\n\treturn null\n}\n\n// Purpose derivation (See BIP43)\nexport enum Purpose {\n\tCIP1852 = 1852 // see CIP 1852\n}\n\n// Cardano coin type (SLIP 44)\nexport enum CoinTypes {\n\tCARDANO = 1815\n}\n\nexport enum ChainDerivation {\n\tEXTERNAL = 0, // from BIP44\n\tINTERNAL = 1, // from BIP44\n\tCHIMERIC = 2, // from CIP1852\n\tDREP = 3\n}\n\nfunction harden(num: number): number {\n\treturn 0x80000000 + num\n}\n\nexport const buildKeys = (\n\tprivateKeyHex: string | [string, string],\n\taccountIndex: number,\n\tkeyIndex = 0\n): {\n\taccountKey: CardanoWASM.Bip32PrivateKey\n\tpaymentKey: CardanoWASM.Bip32PrivateKey\n\tstakeKey: CardanoWASM.Bip32PrivateKey\n\tdRepKey?: CardanoWASM.Bip32PrivateKey\n} => {\n\tif (Array.isArray(privateKeyHex)) {\n\t\treturn {\n\t\t\t// TODO: need to verify this\n\t\t\taccountKey: CardanoWASM.Bip32PrivateKey.from_hex(privateKeyHex[0]),\n\n\t\t\tpaymentKey: CardanoWASM.Bip32PrivateKey.from_hex(privateKeyHex[0]),\n\t\t\tstakeKey: CardanoWASM.Bip32PrivateKey.from_hex(privateKeyHex[1])\n\t\t}\n\t}\n\n\t/**\n\t * @description rootKey\n\t */\n\tconst privateKey = CardanoWASM.Bip32PrivateKey.from_hex(privateKeyHex)\n\n\t// hardened derivation\n\tconst accountKey = privateKey\n\t\t.derive(harden(Purpose.CIP1852)) // 1852\n\t\t.derive(harden(CoinTypes.CARDANO)) // 1815\n\t\t.derive(harden(accountIndex)) // account #0\n\n\tconst paymentKey = accountKey\n\t\t.derive(ChainDerivation.EXTERNAL) // external chain (0)\n\t\t.derive(keyIndex) // external chain, payment key index\n\tconst stakeKey = accountKey\n\t\t.derive(ChainDerivation.CHIMERIC) // chimeric derivation (2)\n\t\t.derive(keyIndex) // staking key, index 0\n\tconst dRepKey = accountKey\n\t\t.derive(ChainDerivation.DREP) // dRep key, index 0\n\t\t.derive(keyIndex) // dRep Keys, index\n\n\treturn { accountKey, paymentKey, stakeKey, dRepKey }\n}\n\n/**\n * \n * @param scalar \n * @returns \n * @description\n * `clampScalar` làm nhiệm vụ clamp (chuẩn hóa) một scalar (32 byte private key) theo quy tắc Ed25519:\n * \n Đảm bảo private scalar nằm trong một tập hợp giá trị hợp lệ theo quy chuẩn EdDSA (RFC 8032 / Ed25519).\n Vì Ed25519 yêu cầu scalar phải:\n - Có 3 bit thấp nhất của byte đầu tiên bằng 0\n - Có 2 bit cao nhất của byte cuối cùng là 01\n * \n Việc này giúp khóa có tính chất cryptographically secure hơn và tránh scalar yếu.\n */\nexport const clampScalar = (scalar: Buffer): Buffer => {\n\tif (scalar[0] !== undefined) {\n\t\tscalar[0] &= 0b1111_1000\n\t}\n\tif (scalar[31] !== undefined) {\n\t\tscalar[31] &= 0b0001_1111\n\t\tscalar[31] |= 0b0100_0000\n\t}\n\treturn scalar\n}\n\n/**\n *\n * @param extendedKeyHex\n * @returns\n * @description\n * `stripExtendedKey` remove public key (32 byte) of extended key (96 byte) to create private key (64 byte)\n */\nexport const stripExtendedKey = (extendedKeyHex: string): string => {\n\tif (extendedKeyHex.length !== 192) {\n\t\tthrow new Error('Extended key must be 192 hex characters (96 bytes)')\n\t}\n\t// private key (32 byte) + chain code (32 byte) = 64 byte = 128 hex\n\tconst strippedKeyHex = extendedKeyHex.slice(0, 128)\n\treturn strippedKeyHex\n}\n","import { CardanoWASM } from '@hydrawallet-sdk/cardano-wasm'\n\nexport const NETWORK_ID = {\n\tMAINNET: CardanoWASM.NetworkInfo.mainnet().network_id(),\n\tPREPROD: CardanoWASM.NetworkInfo.testnet_preprod().network_id(),\n\tPREVIEW: CardanoWASM.NetworkInfo.testnet_preview().network_id()\n}\nexport const NETWORK_MAGIC = {\n\tMAINNET: CardanoWASM.NetworkInfo.mainnet().protocol_magic(),\n\tPREPROD: CardanoWASM.NetworkInfo.testnet_preprod().protocol_magic(),\n\tPREVIEW: CardanoWASM.NetworkInfo.testnet_preview().protocol_magic()\n}\n","import { CardanoWASM } from '@hydrawallet-sdk/cardano-wasm'\n\n/**\n *\n * @param cborHex Transaction CBOR hex\n * @returns Transaction Hash in Hex\n */\nexport const resolveTxHash = (cborHex: string) => {\n\treturn CardanoWASM.FixedTransaction.from_hex(cborHex).transaction_hash().to_hex()\n}\n\nexport const resolveTxBodyHash = (txBody: CardanoWASM.TransactionBody) => {\n\tconst tx = CardanoWASM.FixedTransaction.new_from_body_bytes(txBody.to_bytes())\n\treturn tx.transaction_hash()\n}\n","/**\n * Converting bytes to hex string\n * @param bytes The bytes to be converted\n * @returns The hex string\n */\nexport const bytesToHex = (bytes: ArrayBuffer | Uint8Array | Buffer): string => {\n if (Buffer.isBuffer(bytes)) {\n return bytes.toString('hex')\n }\n if (bytes instanceof ArrayBuffer) {\n return Buffer.from(bytes).toString('hex')\n }\n // bytes is Uint8Array\n return Buffer.from(bytes).toString('hex')\n}\n\n/**\n * Converting hex string to bytes\n * @param hex The hex string to be converted\n * @returns The bytes\n */\nexport const hexToBytes = (hex: string) => Buffer.from(hex, 'hex')\n\n/**\n * Converting utf8 string to hex string\n * @param str The utf8 string to be converted\n * @returns The hex string\n */\nexport const stringToHex = (str: string) => Buffer.from(str, 'utf8').toString('hex')\n\n/**\n * Converting hex string to utf8 string\n * @param hex The hex string to be converted\n * @returns The utf8 string\n */\nexport const hexToString = (hex: string) => Buffer.from(hex, 'hex').toString('utf8')\n\n/**\n * Converting either hex string or utf8 string to bytes\n * @param hex The hex or utf8 string to be converted\n * @returns The bytes\n */\nexport const toBytes = (hex: string): Uint8Array => {\n if (hex.length % 2 === 0 && /^[0-9A-F]*$/i.test(hex)) return Buffer.from(hex, 'hex')\n\n return Buffer.from(hex, 'utf-8')\n}\n\n/**\n * Converting utf8 string to hex string\n * @param utf8 The utf8 string to be converted\n * @returns The hex string\n */\nexport const fromUTF8 = (utf8: string) => {\n return Buffer.from(utf8, 'utf-8').toString('hex')\n}\n\n/**\n * Converting hex string to utf8 string\n * @param hex The hex string to be converted\n * @returns The utf8 string\n */\nexport const toUTF8 = (hex: string) => Buffer.from(hex, 'hex').toString('utf-8')\n","import { CardanoWASM } from '@hydrawallet-sdk/cardano-wasm'\n\nexport const deserializeTx = (txCborHex: string): CardanoWASM.FixedTransaction => {\n\treturn CardanoWASM.FixedTransaction.from_bytes(Buffer.from(txCborHex, 'hex'))\n}\n\nexport const deserializeAssetUnit = (assetUnit: string): { policyId: string; assetName: string } => {\n\tconst policyId = assetUnit.substring(0, 56)\n\tconst assetName = assetUnit.substring(56)\n\treturn { policyId, assetName }\n}\n","import { EmbeddedWallet } from './embedded'\nimport type { DataSignature } from './types/cardano'\nimport { CreateAppWalletOptions } from './types/wallet'\nimport type { IFetcher } from './types/wallet/fetcher'\nimport type { ISigner } from './types/wallet/signer'\nimport type { ISubmitter } from './types/wallet/submitter'\nimport { deserializeTx } from './utils/cardano-wasm/deserializer'\n\nexport class AppWallet implements ISigner, ISubmitter {\n\tprivate readonly _submitter?: ISubmitter\n\tprivate readonly _fetcher?: IFetcher\n\tprivate readonly _wallet: EmbeddedWallet\n\n\tconstructor(options: CreateAppWalletOptions) {\n\t\tthis._fetcher = options.fetcher\n\t\tthis._submitter = options.submitter\n\n\t\tswitch (options.key.type) {\n\t\t\tcase 'mnemonic':\n\t\t\t\tthis._wallet = new EmbeddedWallet({\n\t\t\t\t\tnetworkId: options.networkId,\n\t\t\t\t\tkey: {\n\t\t\t\t\t\ttype: 'mnemonic',\n\t\t\t\t\t\twords: options.key.words\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\tbreak\n\t\t\tcase 'root':\n\t\t\t\tthis._wallet = new EmbeddedWallet({\n\t\t\t\t\tnetworkId: options.networkId,\n\t\t\t\t\tkey: {\n\t\t\t\t\t\ttype: 'root',\n\t\t\t\t\t\tbech32: options.key.bech32\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\tbreak\n\t\t\tcase 'cli':\n\t\t\t\tthis._wallet = new EmbeddedWallet({\n\t\t\t\t\tnetworkId: options.networkId,\n\t\t\t\t\tkey: {\n\t\t\t\t\t\ttype: 'cli',\n\t\t\t\t\t\tpayment: options.key.payment,\n\t\t\t\t\t\tstake: options.key.stake\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t}\n\t}\n\n\tgetAccount(accountIndex = 0, keyIndex = 0) {\n\t\treturn this._wallet.getAccount(accountIndex, keyIndex)\n\t}\n\n\tgetEnterpriseAddress(accountIndex = 0, keyIndex = 0): string {\n\t\tconst account = this._wallet.getAccount(accountIndex, keyIndex)\n\t\treturn account.enterpriseAddressBech32\n\t}\n\n\tgetPaymentAddress(accountIndex = 0, keyIndex = 0): string {\n\t\tconst account = this._wallet.getAccount(accountIndex, keyIndex)\n\t\treturn account.baseAddressBech32\n\t}\n\n\tgetRewardAddress(accountIndex = 0, keyIndex = 0): string {\n\t\tconst account = this._wallet.getAccount(accountIndex, keyIndex)\n\t\treturn account.rewardAddressBech32\n\t}\n\n\tgetNetworkId(): number {\n\t\treturn this._wallet.getNetworkId()\n\t}\n\n\tasync signTx(unsignedTx: string, partialSign = false, accountIndex = 0, keyIndex = 0): Promise<string> {\n\t\ttry {\n\t\t\tconst tx = deserializeTx(unsignedTx)\n\n\t\t\tif (!partialSign && tx.witness_set().vkeys() !== undefined && tx.witness_set().vkeys()?.len() !== 0)\n\t\t\t\tthrow new Error('Signatures already exist in the transaction in a non partial sign call')\n\n\t\t\tconst prvSigningKey = this._wallet.getAccount(accountIndex, keyIndex).paymentKey.to_raw_key()\n\t\t\ttx.sign_and_add_vkey_signature(prvSigningKey)\n\t\t\treturn tx.to_hex()\n\t\t} catch (error) {\n\t\t\tthrow new Error(`[AppWallet] An error occurred during signTx: ${error}.`)\n\t\t}\n\t}\n\n\tstatic brew(strength = 256): string[] {\n\t\treturn EmbeddedWallet.generateMnemonic(strength)\n\t}\n\n\tasync signData(address: string, payload: string, accountIndex = 0, keyIndex = 0): Promise<DataSignature> {\n\t\ttry {\n\t\t\t// todo tw\n\t\t\t// this._wallet.signData(address, payload, accountIndex, keyIndex)\n\t\t\tconsole.log('>>> signData', address, payload, accountIndex, keyIndex)\n\t\t\treturn new Promise(() => {\n\t\t\t\tthrow new Error(`[AppWallet] signData() is not implemented.`)\n\t\t\t})\n\t\t} catch (error) {\n\t\t\tthrow new Error(`[AppWallet] An error occurred during signData: ${error}.`)\n\t\t}\n\t}\n\n\tsignTxs(unsignedTxs: string[], partialSign?: boolean): Promise<string[]> {\n\t\tconsole.log('>>> signTxs', unsignedTxs, partialSign)\n\t\tthrow new Error(`[AppWallet] signTxs() is not implemented.`)\n\t}\n\n\tsubmitTx(tx: string): Promise<string> {\n\t\tconsole.log('>>> submitTx', tx)\n\t\tthrow new Error(`[AppWallet] submitTx() is not implemented.`)\n\t}\n}\n","export const DEFAULT_V1_COST_MODEL_LIST = [\n\t100788, 420, 1, 1, 1000, 173, 0, 1, 1000, 59957, 4, 1, 11183, 32, 201305, 8356, 4, 16000, 100, 16000, 100, 16000, 100,\n\t16000, 100, 16000, 100, 16000, 100, 100, 100, 16000, 100, 94375, 32, 132994, 32, 61462, 4, 72010, 178, 0, 1, 22151, 32,\n\t91189, 769, 4, 2, 85848, 228465, 122, 0, 1, 1, 1000, 42921, 4, 2, 24548, 29498, 38, 1, 898148, 27279, 1, 51775, 558, 1,\n\t39184, 1000, 60594, 1, 141895, 32, 83150, 32, 15299, 32, 76049, 1, 13169, 4, 22100, 10, 28999, 74, 1, 28999, 74, 1,\n\t43285, 552, 1, 44749, 541, 1, 33852, 32, 68246, 32, 72362, 32, 7243, 32, 7391, 32, 11546, 32, 85848, 228465, 122, 0, 1,\n\t1, 90434, 519, 0, 1, 74433, 32, 85848, 228465, 122, 0, 1, 1, 85848, 228465, 122, 0, 1, 1, 270652, 22588, 4, 1457325,\n\t64566, 4, 20467, 1, 4, 0, 141992, 32, 100788, 420, 1, 1, 81663, 32, 59498, 32, 20142, 32, 24588, 32, 20744, 32, 25933,\n\t32, 24623, 32, 53384111, 14333, 10\n]\n\nexport const DEFAULT_V2_COST_MODEL_LIST = [\n\t100788, 420, 1, 1, 1000, 173, 0, 1, 1000, 59957, 4, 1, 11183, 32, 201305, 8356, 4, 16000, 100, 16000, 100, 16000, 100,\n\t16000, 100, 16000, 100, 16000, 100, 100, 100, 16000, 100, 94375, 32, 132994, 32, 61462, 4, 72010, 178, 0, 1, 22151, 32,\n\t91189, 769, 4, 2, 85848, 228465, 122, 0, 1, 1, 1000, 42921, 4, 2, 24548, 29498, 38, 1, 898148, 27279, 1, 51775, 558, 1,\n\t39184, 1000, 60594, 1, 141895, 32, 83150, 32, 15299, 32, 76049, 1, 13169, 4, 22100, 10, 28999, 74, 1, 28999, 74, 1,\n\t43285, 552, 1, 44749, 541, 1, 33852, 32, 68246, 32, 72362, 32, 7243, 32, 7391, 32, 11546, 32, 85848, 228465, 122, 0, 1,\n\t1, 90434, 519, 0, 1, 74433, 32, 85848, 228465, 122, 0, 1, 1, 85848, 228465, 122, 0, 1, 1, 955506, 213312, 0, 2, 270652,\n\t22588, 4, 1457325, 64566, 4, 20467, 1, 4, 0, 141992, 32, 100788, 420, 1, 1, 81663, 32, 59498, 32, 20142, 32, 24588, 32,\n\t20744, 32, 25933, 32, 24623, 32, 43053543, 10, 53384111, 14333, 10, 43574283, 26308, 10\n]\n\nexport const DEFAULT_V3_COST_MODEL_LIST = [\n\t100788, 420, 1, 1, 1000, 173, 0, 1, 1000, 59957, 4, 1, 11183, 32, 201305, 8356, 4, 16000, 100, 16000, 100, 16000, 100,\n\t16000, 100, 16000, 100, 16000, 100, 100, 100, 16000, 100, 94375, 32, 132994, 32, 61462, 4, 72010, 178, 0, 1, 22151, 32,\n\t91189, 769, 4, 2, 85848, 123203, 7305, -900, 1716, 549, 57, 85848, 0, 1, 1, 1000, 42921, 4, 2, 24548, 29498, 38, 1,\n\t898148, 27279, 1, 51775, 558, 1, 39184, 1000, 60594, 1, 141895, 32, 83150, 32, 15299, 32, 76049, 1, 13169, 4, 22100,\n\t10, 28999, 74, 1, 28999, 74, 1, 43285, 552, 1, 44749, 541, 1, 33852, 32, 68246, 32, 72362, 32, 7243, 32, 7391, 32,\n\t11546, 32, 85848, 123203, 7305, -900, 1716, 549, 57, 85848, 0, 1, 90434, 519, 0, 1, 74433, 32, 85848, 123203, 7305,\n\t-900, 1716, 549, 57, 85848, 0, 1, 1, 85848, 123203, 7305, -900, 1716, 549, 57, 85848, 0, 1, 955506, 213312, 0, 2,\n\t270652, 22588, 4, 1457325, 64566, 4, 20467, 1, 4, 0, 141992, 32, 100788, 420, 1, 1, 81663, 32, 59498, 32, 20142, 32,\n\t24588, 32, 20744, 32, 25933, 32, 24623, 32, 43053543, 10, 53384111, 14333, 10, 43574283, 26308, 10, 16000, 100, 16000,\n\t100, 962335, 18, 2780678, 6, 442008, 1, 52538055, 3756, 18, 267929, 18, 76433006, 8868, 18, 52948122, 18, 1995836, 36,\n\t3227919, 12, 901022, 1, 166917843, 4307, 36, 284546, 36, 158221314, 26549, 36, 74698472, 36, 333849714, 1, 254006273,\n\t72, 2174038, 72, 2261318, 64571, 4, 207616, 8310, 4, 1293828, 28716, 63, 0, 1, 1006041, 43623, 251, 0, 1, 100181, 726,\n\t719, 0, 1, 100181, 726, 719, 0, 1, 100181, 726, 719, 0, 1, 107878, 680, 0, 1, 95336, 1, 281145, 18848, 0, 1, 180194,\n\t159, 1, 1, 158519, 8942, 0, 1, 159378, 8813, 0, 1, 107490, 3298, 1, 106057, 655, 1, 1964219, 24520, 3\n]\n","import { CardanoWASM } from '@hydrawallet-sdk/cardano-wasm'\n\ntype NetworkId = number\n\nexport const PLACEHOLDER_ADDRESS: Record<NetworkId, string> = {\n\t[CardanoWASM.NetworkInfo.mainnet().network_id()]:\n\t\t'addr1qrsx72hrv8ens90hwkezg7ysyhwvcjmyzdveyf88ppq7a0lwu7gv0wuuf9lhzm7wclvj5ntgcfa53j0rqxmu237x20xspeqa7n',\n\t[CardanoWASM.NetworkInfo.testnet_preprod().network_id()]:\n\t\t'addr_test1qrsx72hrv8ens90hwkezg7ysyhwvcjmyzdveyf88ppq7a0lwu7gv0wuuf9lhzm7wclvj5ntgcfa53j0rqxmu237x20xsne56q3',\n\t[CardanoWASM.NetworkInfo.testnet_preview().network_id()]:\n\t\t'addr_test1qruhen60uwzpwnnr7gjs50z2v8u9zyfw6zunet4k42zrpr54mrlv55f93rs6j48wt29w90hlxt4rvpvshe55k5r9mpvqjv2wt4'\n}\n","import type { Protocol } from '../types/protocol'\n\nexport const DEFAULT_PROTOCOL_PARAMETERS: Protocol = {\n epoch: 0,\n coinsPerUtxoSize: 4310,\n priceMem: 0.0577,\n priceStep: 0.0000721,\n minFeeA: 44,\n minFeeB: 155381,\n keyDeposit: 2000000,\n maxTxSize: 16384,\n maxValSize: 5000,\n poolDeposit: 500000000,\n maxCollateralInputs: 3,\n decentralisation: 0,\n maxBlockSize: 98304,\n collateralPercent: 150,\n maxBlockHeaderSize: 1100,\n minPoolCost: '340000000',\n maxTxExMem: '16000000',\n maxTxExSteps: '10000000000',\n maxBlockExMem: '80000000',\n maxBlockExSteps: '40000000000',\n minFeeRefScriptCostPerByte: 15\n}\n\nexport const DREP_DEPOSIT = '500000000'\n\nexport const resolveTxFees = (\n txSize: number,\n minFeeA = DEFAULT_PROTOCOL_PARAMETERS.minFeeA,\n minFeeB = DEFAULT_PROTOCOL_PARAMETERS.minFeeB\n) => {\n const fees = BigInt(minFeeA) * BigInt(txSize) + BigInt(minFeeB)\n\n return fees.toString()\n}\n","export const LANGUAGE_VERSIONS: Record<string, 'V1' | 'V2' | 'V3'> = {\n\tV1: 'V1',\n\tV2: 'V2',\n\tV3: 'V3'\n}\nexport const HARDENED_KEY_START = 0x80000000\n\nexport * from './chain'\nexport * from './cost-models'\nexport * from './placeholder'\nexport * from './protocol-parameters'\n","export type Asset = {\n\tunit: Unit\n\tquantity: Quantity\n}\n\nexport type Unit = string\n\nexport type Quantity = string\n\nexport const mergeAssets = (assets: Asset[]): Asset[] => {\n\tconst merged: Asset[] = []\n\tassets.forEach(asset => {\n\t\tconst existing = merged.find(a => a.unit === asset.unit)\n\t\tif (existing) {\n\t\t\texisting.quantity = (BigInt(existing.quantity) + BigInt(asset.quantity)).toString()\n\t\t} else {\n\t\t\tmerged.push(asset)\n\t\t}\n\t})\n\treturn merged\n}\n","import type { Data } from './data'\n\nexport type RoyaltiesStandard = {\n\trate: string\n\taddress: string\n}\n\nexport const royaltiesStandardKeys = ['rate', 'address']\n\ntype MetadataStandard = any\n\nexport const metadataStandardKeys = [\n\t'name',\n\t'image',\n\t'mediaType',\n\t'description',\n\t'instagram',\n\t'twitter',\n\t'discord',\n\t'website'\n]\n\nexport type Files = {\n\tfiles?: [\n\t\t{\n\t\t\tname: string\n\t\t\tsrc: `${string}://${string}`\n\t\t\tmediaType: `${string}/${string}`\n\t\t}\n\t]\n}\n\nexport type AssetMetadata = FungibleAssetMetadata | NonFungibleAssetMetadata | RoyaltiesStandard\n\nexport type FungibleAssetMetadata = MetadataStandard & {\n\tticker: string\n\tdecimals: number\n\tversion: `${number}.${number}`\n}\n\nexport const fungibleAssetKeys = ['ticker', 'decimals']\n\nexport type NonFungibleAssetMetadata = AudioAssetMetadata | ImageAssetMetadata | SmartAssetMetadata | VideoAssetMetadata\n\ntype AudioAssetMetadata = MetadataStandard & Files\n\nexport type ImageAssetMetadata = MetadataStandard &\n\tFiles & {\n\t\tartists?: [\n\t\t\t{\n\t\t\t\tname: string\n\t\t\t\ttwitter?: `https://twitter.com/${string}`\n\t\t\t}\n\t\t]\n\t\tattributes?: {\n\t\t\t[key: string]: string\n\t\t}\n\t\ttraits?: string[]\n\t}\n\ntype SmartAssetMetadata = MetadataStandard & Files\n\ntype VideoAssetMetadata = MetadataStandard & Files\n\n/**\n * Transform the metadata into the format needed in CIP68 inline datum (in Mesh Data type)\n * @param metadata The metadata body without outer wrapper of policy id & token name\n * @returns The metadata in Mesh Data type, ready to be attached as inline datum\n */\nexport const metadataToCip68 = (metadata: any): Data => {\n\tswitch (typeof metadata) {\n\t\tcase 'object':\n\t\t\tif (metadata instanceof Array) {\n\t\t\t\treturn metadata.map(item => metadataToCip68(item))\n\t\t\t}\n\t\t\tconst metadataMap = new Map()\n\t\t\tconst keys = Object.keys(metadata)\n\t\t\tkeys.forEach(key => {\n\t\t\t\tmetadataMap.set(key, metadataToCip68(metadata[key]))\n\t\t\t})\n\t\t\treturn {\n\t\t\t\talternative: 0,\n\t\t\t\tfields: [metadataMap, 1]\n\t\t\t}\n\n\t\tdefault:\n\t\t\treturn metadata\n\t}\n}\n","import { DEFAULT_PROTOCOL_PARAMETERS } from '../constants/protocol-parameters'\r\n\r\nexport type Protocol = {\r\n\tepoch: number\r\n\tminFeeA: number\r\n\tminFeeB: number\r\n\tmaxBlockSize: number\r\n\tmaxTxSize: number\r\n\tmaxBlockHeaderSize: number\r\n\tkeyDeposit: number\r\n\tpoolDeposit: number\r\n\tdecentralisation: number\r\n\tminPoolCost: string\r\n\tpriceMem: number\r\n\tpriceStep: number\r\n\tmaxTxExMem: string\r\n\tmaxTxExSteps: string\r\n\tmaxBlockExMem: string\r\n\tmaxBlockExSteps: string\r\n\tmaxValSize: number\r\n\tcollateralPercent: number\r\n\tmaxCollateralInputs: number\r\n\tcoinsPerUtxoSize: number\r\n\tminFeeRefScriptCostPerByte: number\r\n}\r\n\r\nexport const castProtocol = (data: Partial<Record<keyof Protocol, any>>): Protocol => {\r\n\tconst result: Partial<Record<keyof Protocol, number | string>> = {}\r\n\r\n\tfor (const rawKey in DEFAULT_PROTOCOL_PARAMETERS) {\r\n\t\tconst key = rawKey as keyof Protocol\r\n\t\tconst defaultValue = DEFAULT_PROTOCOL_PARAMETERS[key]\r\n\t\tconst value = data[key]\r\n\t\tif (typeof defaultValue === 'number') {\r\n\t\t\tresult[key] = !value && value !== 0 ? defaultValue : Number(value)\r\n\t\t} else if (typeof defaultValue === 'string') {\r\n\t\t\tresult[key] = !value && value !== '' ? defaultValue : value.toString()\r\n\t\t}\r\n\t}\r\n\r\n\treturn result as Protocol\r\n}\r\n","export const serializeAssetUnit = (policyId: string, assetName: string): string => {\n\treturn policyId + assetName\n}\n","import { CardanoWASM } from '@hydrawallet-sdk/cardano-wasm'\nimport { Asset, TxHash, UTxO, UTxOObject, UTxOObjectValue } from '../../types/cardano'\nimport { deserializeAssetUnit } from './deserializer'\n\nexport const convertUTxOToUTxOObject = (utxos: UTxO[]): UTxOObject => {\n\treturn utxos.reduce((acc, cur) => {\n\t\tacc[`${cur.input.txHash}#${cur.input.outputIndex}` as TxHash] = {\n\t\t\taddress: cur.output.address,\n\t\t\tdatum: cur.output.datum ? cur.output.datum.to_hex() : null,\n\t\t\tdatumhash: cur.output.datumHash || null,\n\t\t\tinlineDatum: cur.output.inlineDatum\n\t\t\t\t? cur.output.inlineDatum.to_json(CardanoWASM.PlutusDatumSchema.DetailedSchema)\n\t\t\t\t: null,\n\t\t\tinlineDatumRaw: cur.output.inlineDatum ? cur.output.inlineDatum.to_hex() : null,\n\n\t\t\t// TODO: update it if using scriptRef\n\t\t\treferenceScript: null,\n\t\t\tvalue: cur.output.amount.reduce(\n\t\t\t\t(acc, cur) => {\n\t\t\t\t\tif (cur.unit === 'lovelace') {\n\t\t\t\t\t\tacc.lovelace = Number(cur.quantity)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst { policyId, assetName } = deserializeAssetUnit(cur.unit)\n\t\t\t\t\t\t// @ts-ignore\n\t\t\t\t\t\tif (!acc[policyId]) {\n\t\t\t\t\t\t\t// @ts-ignore\n\t\t\t\t\t\t\tacc[policyId] = {}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// @ts-ignore\n\t\t\t\t\t\tacc[policyId][assetName] = Number(cur.quantity)\n\t\t\t\t\t}\n\t\t\t\t\treturn acc\n\t\t\t\t},\n\t\t\t\t{} as UTxOObjectValue['value']\n\t\t\t)\n\t\t}\n\t\treturn acc\n\t}, {} as UTxOObject)\n}\n\nexport const convertUTxOObjectToUTxO = (utxoObject: UTxOObject): UTxO[] => {\n\treturn Object.keys(utxoObject).map(txHash => {\n\t\tconst [txId, txIndex] = txHash.split('#')\n\t\tconst outputIndex = Number(txIndex)\n\t\tconst utxo = utxoObject[txHash as TxHash]\n\t\tconst amount: Asset[] = [{ unit: 'lovelace', quantity: String(utxo.value.lovelace) }]\n\t\tfor (const [policyId, assets] of Object.entries(utxo.value)) {\n\t\t\tfor (const [assetName, quantity] of Object.entries(assets)) {\n\t\t\t\tamount.push({\n\t\t\t\t\tunit: `${policyId}${assetName}`,\n\t\t\t\t\tquantity: String(quantity)\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\tinput: {\n\t\t\t\toutputIndex,\n\t\t\t\ttxHash: txId\n\t\t\t},\n\t\t\toutput: {\n\t\t\t\taddress: utxo.address,\n\t\t\t\tamount,\n\t\t\t\tdatum: undefined,\n\t\t\t\tdatumHash: utxo.datumhash,\n\t\t\t\tinlineDatum: undefined,\n\t\t\t\tscriptRef: undefined,\n\t\t\t\tscriptHash: undefined\n\t\t\t}\n\t\t}\n\t})\n}\n"],"mappings":"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","names":["import_cardano_wasm","import_cardano_wasm","Purpose","CoinTypes","ChainDerivation","import_cardano_wasm","import_cardano_wasm","import_cardano_wasm","import_cardano_wasm","acc","cur"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/embedded.ts","../src/utils/cardano-wasm/build-keys.ts","../src/constants/chain.ts","../src/utils/cardano-wasm/resolver.ts","../src/utils/parser.ts","../src/utils/cardano-wasm/deserializer.ts","../src/wallet.ts","../src/constants/cost-models.ts","../src/constants/placeholder.ts","../src/constants/protocol-parameters.ts","../src/constants/index.ts","../src/types/cardano/asset.ts","../src/types/cardano/asset-metadata.ts","../src/types/protocol.ts","../src/utils/cardano-wasm/serializer.ts","../src/utils/cardano-wasm/converter.ts"],"sourcesContent":["export * from './embedded'\nexport * from './wallet'\nexport * from './constants'\n\nexport * from './types/wallet'\nexport * from './types/wallet/fetcher'\nexport * from './types/wallet/submitter'\nexport * from './types/cardano'\nexport * from './types/protocol'\n\nexport * from './utils/cardano-wasm/serializer'\nexport * from './utils/cardano-wasm/deserializer'\nexport * from './utils/cardano-wasm/resolver'\nexport * from './utils/cardano-wasm/converter'\nexport * from './utils/cardano-wasm/build-keys'\nexport * from './utils/parser'\n","/* eslint-disable @typescript-eslint/no-extraneous-class */\nimport * as BaseEncoding from '@scure/base'\nimport { generateMnemonic, mnemonicToEntropy } from 'bip39'\nimport { CardanoWASM } from '@hydrawallet-sdk/cardano-wasm'\nimport {\n\tbuildBaseAddress,\n\tbuildEnterpriseAddress,\n\tbuildKeys,\n\tbuildRewardAddress,\n\tstripExtendedKey\n} from './utils/cardano-wasm/build-keys'\nimport { resolveTxHash } from './utils/cardano-wasm/resolver'\nimport { toBytes } from './utils/parser'\n\nexport class WalletStaticMethods {\n\tstatic privateKeyBech32ToPrivateKeyHex(_bech32: string): string {\n\t\tconst bech32DecodedBytes = BaseEncoding.bech32.decodeToBytes(_bech32).bytes\n\t\tconst bip32PrivateKey = CardanoWASM.Bip32PrivateKey.from_bytes(bech32DecodedBytes)\n\t\treturn bip32PrivateKey.to_hex()\n\t}\n\n\tstatic mnemonicToPrivateKeyHex(words: string[], password = ''): string {\n\t\tconst entropy = mnemonicToEntropy(words.join(' '))\n\t\tconst bip32PrivateKey = CardanoWASM.Bip32PrivateKey.from_bip39_entropy(toBytes(entropy), toBytes(password))\n\t\treturn bip32PrivateKey.to_hex()\n\t}\n\n\tstatic privateKeyHexToBech32(privateKeyHex: string) {\n\t\tconst bip32PrivateKey = CardanoWASM.Bip32PrivateKey.from_hex(privateKeyHex)\n\t\treturn bip32PrivateKey.to_bech32()\n\t}\n\n\tstatic signingKeyToHexes(paymentKey: string, stakeKey: string): [string, string] {\n\t\treturn [\n\t\t\tpaymentKey.startsWith('5820') ? paymentKey.slice(4) : paymentKey,\n\t\t\tstakeKey.startsWith('5820') ? stakeKey.slice(4) : stakeKey\n\t\t]\n\t}\n\n\tstatic bip32BytesToPrivateKeyHex(bip32Bytes: Uint8Array): string {\n\t\tconst bip32PrivateKey = CardanoWASM.Bip32PrivateKey.from_bytes(bip32Bytes)\n\t\treturn bip32PrivateKey.to_hex()\n\t}\n\n\tstatic getAddresses(\n\t\tpaymentKey: CardanoWASM.Bip32PrivateKey,\n\t\tstakingKey: CardanoWASM.Bip32PrivateKey,\n\t\tnetworkId = 0\n\t): {\n\t\tbaseAddress: CardanoWASM.Address\n\t\tenterpriseAddress: CardanoWASM.Address\n\t\trewardAddress: CardanoWASM.Address\n\t} {\n\t\tconst baseAddress = buildBaseAddress(\n\t\t\tnetworkId,\n\t\t\tpaymentKey.to_public().to_raw_key().hash(),\n\t\t\tstakingKey.to_public().to_raw_key().hash()\n\t\t).to_address()\n\n\t\tconst enterpriseAddress = buildEnterpriseAddress(networkId, paymentKey.to_public().to_raw_key().hash()).to_address()\n\n\t\tconst rewardAddress = buildRewardAddress(networkId, stakingKey.to_public().to_raw_key().hash()).to_address()\n\n\t\treturn {\n\t\t\tbaseAddress: baseAddress,\n\t\t\tenterpriseAddress: enterpriseAddress,\n\t\t\trewardAddress: rewardAddress\n\t\t}\n\t}\n\n\tstatic generateMnemonic(strength = 256): string[] {\n\t\tconst mnemonic = generateMnemonic(strength)\n\t\treturn mnemonic.split(' ')\n\t}\n\n\t// static getDRepKey(\n\t// dRepKey: Ed25519PrivateKey,\n\t// networkId = 0\n\t// ): {\n\t// pubDRepKey: string\n\t// dRepIDBech32: DRepID\n\t// dRepIDHash: Ed25519KeyHashHex\n\t// } {\n\t// const pubDRepKey = dRepKey.toPublic().hex().toString()\n\n\t// const dRepIDBech32 = buildDRepID(Ed25519PublicKeyHex(pubDRepKey), networkId)\n\t// const dRep = DRep.newKeyHash(dRepKey.toPublic().hash().hex())\n\t// const dRepIDHash = dRep.toKeyHash()!\n\n\t// return {\n\t// pubDRepKey,\n\t// dRepIDBech32,\n\t// dRepIDHash\n\t// }\n\t// }\n}\n\nexport type Account = {\n\tbaseAddress: CardanoWASM.Address\n\tenterpriseAddress: CardanoWASM.Address\n\trewardAddress: CardanoWASM.Address\n\tbaseAddressBech32: string\n\tenterpriseAddressBech32: string\n\trewardAddressBech32: string\n\tpaymentKey: CardanoWASM.Bip32PrivateKey\n\tstakeKey: CardanoWASM.Bip32PrivateKey\n\t/**\n\t * @description 96 bytes with extended public key\n\t */\n\textendedPaymentKeyHex: string\n\t/**\n\t * @description 96 bytes with extended public key\n\t */\n\textendedStakeKeyHex: string\n\t/**\n\t * @description 64 bytes without extended public key\n\t */\n\tpaymentKeyHex: string\n\t/**\n\t * @description 64 bytes without extended public key\n\t */\n\tstakeKeyHex: string\n\n\tpubDRepKey?: string\n\tdRepIDBech32?: ReturnType<CardanoWASM.DRep['to_bech32']>\n\tdRepIDHash?: ReturnType<CardanoWASM.DRep['to_key_hash']>\n}\n\nexport type CreateEmbeddedWalletOptions = {\n\tnetworkId: number\n\tkey: EmbeddedWalletKeyType\n}\n\nexport type EmbeddedWalletKeyType =\n\t| {\n\t\t\ttype: 'root'\n\t\t\tbech32: string\n\t }\n\t| {\n\t\t\ttype: 'cli'\n\t\t\tpayment: string\n\t\t\tstake?: string\n\t }\n\t| {\n\t\t\ttype: 'mnemonic'\n\t\t\twords: string[]\n\t }\n\t| {\n\t\t\ttype: 'bip32Bytes'\n\t\t\tbip32Bytes: Uint8Array\n\t }\n\nexport class EmbeddedWallet extends WalletStaticMethods {\n\tprivate readonly _walletSecret?: string | [string, string]\n\tprivate readonly _networkId: number\n\n\tconstructor(options: CreateEmbeddedWalletOptions) {\n\t\tsuper()\n\t\tthis._networkId = options.networkId\n\n\t\tswitch (options.key.type) {\n\t\t\tcase 'mnemonic':\n\t\t\t\tthis._walletSecret = WalletStaticMethods.mnemonicToPrivateKeyHex(options.key.words)\n\t\t\t\tbreak\n\t\t\tcase 'root':\n\t\t\t\tthis._walletSecret = WalletStaticMethods.privateKeyBech32ToPrivateKeyHex(options.key.bech32)\n\t\t\t\tbreak\n\t\t\tcase 'cli':\n\t\t\t\tthis._walletSecret = WalletStaticMethods.signingKeyToHexes(\n\t\t\t\t\toptions.key.payment,\n\t\t\t\t\toptions.key.stake ?? 'f0'.repeat(32)\n\t\t\t\t)\n\t\t\t\tbreak\n\t\t\tcase 'bip32Bytes':\n\t\t\t\tthis._walletSecret = WalletStaticMethods.bip32BytesToPrivateKeyHex(options.key.bip32Bytes)\n\t\t\t\tbreak\n\t\t}\n\t}\n\n\tgetPrivateKeyHex(): string | [string, string] {\n\t\tif (this._walletSecret == undefined) throw new Error('[EmbeddedWallet] No keys initialized')\n\t\treturn this._walletSecret\n\t}\n\n\tgetAccount(accountIndex = 0, keyIndex = 0): Account {\n\t\tif (this._walletSecret == undefined) throw new Error('[EmbeddedWallet] No keys initialized')\n\n\t\tconst { paymentKey, stakeKey } = buildKeys(this._walletSecret, accountIndex, keyIndex)\n\n\t\tconst { baseAddress, enterpriseAddress, rewardAddress } = WalletStaticMethods.getAddresses(\n\t\t\tpaymentKey,\n\t\t\tstakeKey,\n\t\t\tthis._networkId\n\t\t)\n\n\t\tconst _account: Account = {\n\t\t\tbaseAddress: baseAddress,\n\t\t\tenterpriseAddress: enterpriseAddress,\n\t\t\trewardAddress: rewardAddress,\n\n\t\t\tbaseAddressBech32: baseAddress.to_bech32(),\n\t\t\tenterpriseAddressBech32: enterpriseAddress.to_bech32(),\n\t\t\trewardAddressBech32: rewardAddress.to_bech32(),\n\n\t\t\tpaymentKey: paymentKey,\n\t\t\tstakeKey: stakeKey,\n\n\t\t\tpaymentKeyHex: stripExtendedKey(paymentKey.to_hex()),\n\t\t\tstakeKeyHex: stripExtendedKey(stakeKey.to_hex()),\n\t\t\textendedPaymentKeyHex: paymentKey.to_hex(),\n\t\t\textendedStakeKeyHex: stakeKey.to_hex()\n\t\t}\n\n\t\t// TODO: fix it\n\t\t// if (dRepKey) {\n\t\t// const { pubDRepKey, dRepIDBech32, dRepIDHash } = WalletStaticMethods.getDRepKey(dRepKey, this._networkId)\n\t\t// _account.pubDRepKey = pubDRepKey\n\t\t// _account.dRepIDBech32 = dRepIDBech32\n\t\t// _account.dRepIDHash = dRepIDHash\n\t\t// }\n\n\t\treturn _account\n\t}\n\n\t/**\n\t * Get wallet network ID.\n\t *\n\t * @returns network ID\n\t */\n\tgetNetworkId(): number {\n\t\treturn this._networkId\n\t}\n\n\t/**\n\t * This endpoints sign the provided transaction (unsignedTx) with the private key of the owner.\n\t *\n\t * @param unsignedTx - a transaction in CBOR\n\t * @param accountIndex account index (default: 0)\n\t * @param keyIndex key index (default: 0)\n\t * @returns VkeyWitness\n\t */\n\tsignTx(unsignedTx: string, accountIndex = 0, keyIndex = 0): CardanoWASM.Vkeywitness {\n\t\ttry {\n\t\t\tconst txHashHex = resolveTxHash(unsignedTx)\n\t\t\tconst { paymentKey } = this.getAccount(accountIndex, keyIndex)\n\t\t\tconst privateSigningKey = paymentKey.to_raw_key()\n\t\t\tconst vkeyWitness = CardanoWASM.make_vkey_witness(CardanoWASM.TransactionHash.from_hex(txHashHex), privateSigningKey)\n\t\t\treturn vkeyWitness\n\t\t} catch (error) {\n\t\t\tthrow new Error(`[EmbeddedWallet] An error occurred during signTx: ${error}.`)\n\t\t}\n\t}\n\n\t// /**\n\t// * This endpoint utilizes the [CIP-8 - Message Signing](https://cips.cardano.org/cips/cip8/) to sign arbitrary data, to verify the data was signed by the owner of the private key.\n\t// *\n\t// * @param address - bech32 address to sign the data with\n\t// * @param payload - the data to be signed\n\t// * @param accountIndex account index (default: 0)\n\t// * @returns a signature\n\t// */\n\t// signData(address: string, payload: string, accountIndex = 0, keyIndex = 0): DataSignature {\n\t// try {\n\t// const { baseAddress, enterpriseAddress, rewardAddress, paymentKey } = this.getAccount(accountIndex, keyIndex)\n\n\t// const foundAddress = [baseAddress, enterpriseAddress, rewardAddress].find(a => a.toBech32() === address)\n\n\t// if (foundAddress === undefined)\n\t// throw new Error(`[EmbeddedWallet] Address: ${address} doesn't belong to this account.`)\n\n\t// // todo tw\n\t// return signData(payload, {\n\t// address: Address.fromBech32(address),\n\t// key: paymentKey\n\t// })\n\t// } catch (error) {\n\t// throw new Error(`[EmbeddedWallet] An error occurred during signData: ${error}.`)\n\t// }\n\t// }\n}\n","import { CardanoWASM } from '@hydrawallet-sdk/cardano-wasm'\nimport { NETWORK_ID } from '../../constants/chain'\n\nexport const buildBaseAddress = (\n\tnetworkId: number,\n\tpaymentKeyHash: CardanoWASM.Ed25519KeyHash,\n\tstakeKeyHash: CardanoWASM.Ed25519KeyHash\n): CardanoWASM.BaseAddress => {\n\tconst paymentCredential = CardanoWASM.Credential.from_keyhash(paymentKeyHash)\n\tconst stakeCredential = CardanoWASM.Credential.from_keyhash(stakeKeyHash)\n\treturn CardanoWASM.BaseAddress.new(networkId, paymentCredential, stakeCredential)\n}\n\nexport const buildEnterpriseAddress = (\n\tnetworkId: number,\n\tpaymentKeyHash: CardanoWASM.Ed25519KeyHash\n): CardanoWASM.EnterpriseAddress => {\n\t// return EnterpriseAddress.fromCredentials(networkId, {\n\t// hash: paymentKeyHash,\n\t// type: CredentialType.KeyHash\n\t// })\n\tconst paymentCredential = CardanoWASM.Credential.from_keyhash(paymentKeyHash)\n\treturn CardanoWASM.EnterpriseAddress.new(networkId, paymentCredential)\n}\n\nexport const buildRewardAddress = (\n\tnetworkId: number,\n\tstakeKeyHash: CardanoWASM.Ed25519KeyHash\n): CardanoWASM.RewardAddress => {\n\t// const cred = {\n\t// type: CredentialType.KeyHash,\n\t// hash: stakeKeyHash\n\t// }\n\t// return RewardAddress.fromCredentials(networkId, cred)\n\tconst stakeCredential = CardanoWASM.Credential.from_keyhash(stakeKeyHash)\n\treturn CardanoWASM.RewardAddress.new(networkId, stakeCredential)\n}\n\nexport const buildDRepID = (\n\tdRepKey: CardanoWASM.Ed25519KeyHash,\n\tnetworkId: number = NETWORK_ID.MAINNET\n\t// addressType: AddressType = AddressType.EnterpriseKey\n) => {\n\t// const dRepKeyBytes = Buffer.from(dRepKey, 'hex')\n\t// const dRepIdHex = blake2b(28).update(dRepKeyBytes).digest('hex')\n\t// const paymentAddress = EnterpriseAddress.packParts({\n\t// networkId,\n\t// paymentPart: {\n\t// hash: Hash28ByteBase16(dRepIdHex),\n\t// type: CredentialType.KeyHash\n\t// },\n\t// type: addressType\n\t// })\n\t// return HexBlob.toTypedBech32<DRepID>('drep', HexBlob.fromBytes(paymentAddress))\n\n\t// CardanoWASM.DRep.new_from_credential(CardanoWASM.Credential.from_hex(dRepKey.to_hex()))\n\t// const paymentAddress = CardanoWASM.EnterpriseAddress.new(networkId, CardanoWASM.Credential.from_hex(dRepKey.to_hex()))\n\tconsole.log('buildDRepID', dRepKey.to_hex(), networkId)\n\treturn null\n}\n\n// Purpose derivation (See BIP43)\nexport enum Purpose {\n\tCIP1852 = 1852 // see CIP 1852\n}\n\n// Cardano coin type (SLIP 44)\nexport enum CoinTypes {\n\tCARDANO = 1815\n}\n\nexport enum ChainDerivation {\n\tEXTERNAL = 0, // from BIP44\n\tINTERNAL = 1, // from BIP44\n\tCHIMERIC = 2, // from CIP1852\n\tDREP = 3\n}\n\nfunction harden(num: number): number {\n\treturn 0x80000000 + num\n}\n\nexport const buildKeys = (\n\tprivateKeyHex: string | [string, string],\n\taccountIndex: number,\n\tkeyIndex = 0\n): {\n\taccountKey: CardanoWASM.Bip32PrivateKey\n\tpaymentKey: CardanoWASM.Bip32PrivateKey\n\tstakeKey: CardanoWASM.Bip32PrivateKey\n\tdRepKey?: CardanoWASM.Bip32PrivateKey\n} => {\n\tif (Array.isArray(privateKeyHex)) {\n\t\treturn {\n\t\t\t// TODO: need to verify this\n\t\t\taccountKey: CardanoWASM.Bip32PrivateKey.from_hex(privateKeyHex[0]),\n\n\t\t\tpaymentKey: CardanoWASM.Bip32PrivateKey.from_hex(privateKeyHex[0]),\n\t\t\tstakeKey: CardanoWASM.Bip32PrivateKey.from_hex(privateKeyHex[1])\n\t\t}\n\t}\n\n\t/**\n\t * @description rootKey\n\t */\n\tconst privateKey = CardanoWASM.Bip32PrivateKey.from_hex(privateKeyHex)\n\n\t// hardened derivation\n\tconst accountKey = privateKey\n\t\t.derive(harden(Purpose.CIP1852)) // 1852\n\t\t.derive(harden(CoinTypes.CARDANO)) // 1815\n\t\t.derive(harden(accountIndex)) // account #0\n\n\tconst paymentKey = accountKey\n\t\t.derive(ChainDerivation.EXTERNAL) // external chain (0)\n\t\t.derive(keyIndex) // external chain, payment key index\n\tconst stakeKey = accountKey\n\t\t.derive(ChainDerivation.CHIMERIC) // chimeric derivation (2)\n\t\t.derive(keyIndex) // staking key, index 0\n\tconst dRepKey = accountKey\n\t\t.derive(ChainDerivation.DREP) // dRep key, index 0\n\t\t.derive(keyIndex) // dRep Keys, index\n\n\treturn { accountKey, paymentKey, stakeKey, dRepKey }\n}\n\n/**\n * \n * @param scalar \n * @returns \n * @description\n * `clampScalar` làm nhiệm vụ clamp (chuẩn hóa) một scalar (32 byte private key) theo quy tắc Ed25519:\n * \n Đảm bảo private scalar nằm trong một tập hợp giá trị hợp lệ theo quy chuẩn EdDSA (RFC 8032 / Ed25519).\n Vì Ed25519 yêu cầu scalar phải:\n - Có 3 bit thấp nhất của byte đầu tiên bằng 0\n - Có 2 bit cao nhất của byte cuối cùng là 01\n * \n Việc này giúp khóa có tính chất cryptographically secure hơn và tránh scalar yếu.\n */\nexport const clampScalar = (scalar: Buffer): Buffer => {\n\tif (scalar[0] !== undefined) {\n\t\tscalar[0] &= 0b1111_1000\n\t}\n\tif (scalar[31] !== undefined) {\n\t\tscalar[31] &= 0b0001_1111\n\t\tscalar[31] |= 0b0100_0000\n\t}\n\treturn scalar\n}\n\n/**\n *\n * @param extendedKeyHex\n * @returns\n * @description\n * `stripExtendedKey` remove public key (32 byte) of extended key (96 byte) to create private key (64 byte)\n */\nexport const stripExtendedKey = (extendedKeyHex: string): string => {\n\tif (extendedKeyHex.length !== 192) {\n\t\tthrow new Error('Extended key must be 192 hex characters (96 bytes)')\n\t}\n\t// private key (32 byte) + chain code (32 byte) = 64 byte = 128 hex\n\tconst strippedKeyHex = extendedKeyHex.slice(0, 128)\n\treturn strippedKeyHex\n}\n","import { CardanoWASM } from '@hydrawallet-sdk/cardano-wasm'\n\nexport const NETWORK_ID = {\n\tMAINNET: CardanoWASM.NetworkInfo.mainnet().network_id(),\n\tPREPROD: CardanoWASM.NetworkInfo.testnet_preprod().network_id(),\n\tPREVIEW: CardanoWASM.NetworkInfo.testnet_preview().network_id()\n}\nexport const NETWORK_MAGIC = {\n\tMAINNET: CardanoWASM.NetworkInfo.mainnet().protocol_magic(),\n\tPREPROD: CardanoWASM.NetworkInfo.testnet_preprod().protocol_magic(),\n\tPREVIEW: CardanoWASM.NetworkInfo.testnet_preview().protocol_magic()\n}\n","import { CardanoWASM } from '@hydrawallet-sdk/cardano-wasm'\n\n/**\n *\n * @param cborHex Transaction CBOR hex\n * @returns Transaction Hash in Hex\n */\nexport const resolveTxHash = (cborHex: string) => {\n\treturn CardanoWASM.FixedTransaction.from_hex(cborHex).transaction_hash().to_hex()\n}\n\nexport const resolveTxBodyHash = (txBody: CardanoWASM.TransactionBody) => {\n\tconst tx = CardanoWASM.FixedTransaction.new_from_body_bytes(txBody.to_bytes())\n\treturn tx.transaction_hash()\n}\n","/**\n * Converting bytes to hex string\n * @param bytes The bytes to be converted\n * @returns The hex string\n */\nexport const bytesToHex = (bytes: ArrayBuffer | Uint8Array | Buffer): string => {\n if (Buffer.isBuffer(bytes)) {\n return bytes.toString('hex')\n }\n if (bytes instanceof ArrayBuffer) {\n return Buffer.from(bytes).toString('hex')\n }\n // bytes is Uint8Array\n return Buffer.from(bytes).toString('hex')\n}\n\n/**\n * Converting hex string to bytes\n * @param hex The hex string to be converted\n * @returns The bytes\n */\nexport const hexToBytes = (hex: string) => Buffer.from(hex, 'hex')\n\n/**\n * Converting utf8 string to hex string\n * @param str The utf8 string to be converted\n * @returns The hex string\n */\nexport const stringToHex = (str: string) => Buffer.from(str, 'utf8').toString('hex')\n\n/**\n * Converting hex string to utf8 string\n * @param hex The hex string to be converted\n * @returns The utf8 string\n */\nexport const hexToString = (hex: string) => Buffer.from(hex, 'hex').toString('utf8')\n\n/**\n * Converting either hex string or utf8 string to bytes\n * @param hex The hex or utf8 string to be converted\n * @returns The bytes\n */\nexport const toBytes = (hex: string): Uint8Array => {\n if (hex.length % 2 === 0 && /^[0-9A-F]*$/i.test(hex)) return Buffer.from(hex, 'hex')\n\n return Buffer.from(hex, 'utf-8')\n}\n\n/**\n * Converting utf8 string to hex string\n * @param utf8 The utf8 string to be converted\n * @returns The hex string\n */\nexport const fromUTF8 = (utf8: string) => {\n return Buffer.from(utf8, 'utf-8').toString('hex')\n}\n\n/**\n * Converting hex string to utf8 string\n * @param hex The hex string to be converted\n * @returns The utf8 string\n */\nexport const toUTF8 = (hex: string) => Buffer.from(hex, 'hex').toString('utf-8')\n","import { CardanoWASM } from '@hydrawallet-sdk/cardano-wasm'\n\nexport const deserializeTx = (txCborHex: string): CardanoWASM.FixedTransaction => {\n\treturn CardanoWASM.FixedTransaction.from_bytes(Buffer.from(txCborHex, 'hex'))\n}\n\nexport const deserializeAssetUnit = (assetUnit: string): { policyId: string; assetName: string } => {\n\tconst policyId = assetUnit.substring(0, 56)\n\tconst assetName = assetUnit.substring(56)\n\treturn { policyId, assetName }\n}\n","import { EmbeddedWallet } from './embedded'\nimport type { DataSignature } from './types/cardano'\nimport { CreateAppWalletOptions } from './types/wallet'\nimport type { IFetcher } from './types/wallet/fetcher'\nimport type { ISigner } from './types/wallet/signer'\nimport type { ISubmitter } from './types/wallet/submitter'\nimport { deserializeTx } from './utils/cardano-wasm/deserializer'\n\nexport class AppWallet implements ISigner, ISubmitter {\n\tprivate readonly _submitter?: ISubmitter\n\tprivate readonly _fetcher?: IFetcher\n\tprivate readonly _wallet: EmbeddedWallet\n\n\tconstructor(options: CreateAppWalletOptions) {\n\t\tthis._fetcher = options.fetcher\n\t\tthis._submitter = options.submitter\n\n\t\tswitch (options.key.type) {\n\t\t\tcase 'mnemonic':\n\t\t\t\tthis._wallet = new EmbeddedWallet({\n\t\t\t\t\tnetworkId: options.networkId,\n\t\t\t\t\tkey: {\n\t\t\t\t\t\ttype: 'mnemonic',\n\t\t\t\t\t\twords: options.key.words\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\tbreak\n\t\t\tcase 'root':\n\t\t\t\tthis._wallet = new EmbeddedWallet({\n\t\t\t\t\tnetworkId: options.networkId,\n\t\t\t\t\tkey: {\n\t\t\t\t\t\ttype: 'root',\n\t\t\t\t\t\tbech32: options.key.bech32\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\tbreak\n\t\t\tcase 'cli':\n\t\t\t\tthis._wallet = new EmbeddedWallet({\n\t\t\t\t\tnetworkId: options.networkId,\n\t\t\t\t\tkey: {\n\t\t\t\t\t\ttype: 'cli',\n\t\t\t\t\t\tpayment: options.key.payment,\n\t\t\t\t\t\tstake: options.key.stake\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t}\n\t}\n\n\tgetAccount(accountIndex = 0, keyIndex = 0) {\n\t\treturn this._wallet.getAccount(accountIndex, keyIndex)\n\t}\n\n\tgetEnterpriseAddress(accountIndex = 0, keyIndex = 0): string {\n\t\tconst account = this._wallet.getAccount(accountIndex, keyIndex)\n\t\treturn account.enterpriseAddressBech32\n\t}\n\n\tgetPaymentAddress(accountIndex = 0, keyIndex = 0): string {\n\t\tconst account = this._wallet.getAccount(accountIndex, keyIndex)\n\t\treturn account.baseAddressBech32\n\t}\n\n\tgetRewardAddress(accountIndex = 0, keyIndex = 0): string {\n\t\tconst account = this._wallet.getAccount(accountIndex, keyIndex)\n\t\treturn account.rewardAddressBech32\n\t}\n\n\tgetNetworkId(): number {\n\t\treturn this._wallet.getNetworkId()\n\t}\n\n\tasync signTx(unsignedTx: string, partialSign = false, accountIndex = 0, keyIndex = 0): Promise<string> {\n\t\ttry {\n\t\t\tconst tx = deserializeTx(unsignedTx)\n\n\t\t\tif (!partialSign && tx.witness_set().vkeys() !== undefined && tx.witness_set().vkeys()?.len() !== 0)\n\t\t\t\tthrow new Error('Signatures already exist in the transaction in a non partial sign call')\n\n\t\t\tconst prvSigningKey = this._wallet.getAccount(accountIndex, keyIndex).paymentKey.to_raw_key()\n\t\t\ttx.sign_and_add_vkey_signature(prvSigningKey)\n\t\t\treturn tx.to_hex()\n\t\t} catch (error) {\n\t\t\tthrow new Error(`[AppWallet] An error occurred during signTx: ${error}.`)\n\t\t}\n\t}\n\n\tstatic brew(strength = 256): string[] {\n\t\treturn EmbeddedWallet.generateMnemonic(strength)\n\t}\n\n\tasync signData(address: string, payload: string, accountIndex = 0, keyIndex = 0): Promise<DataSignature> {\n\t\ttry {\n\t\t\t// todo tw\n\t\t\t// this._wallet.signData(address, payload, accountIndex, keyIndex)\n\t\t\tconsole.log('>>> signData', address, payload, accountIndex, keyIndex)\n\t\t\treturn new Promise(() => {\n\t\t\t\tthrow new Error(`[AppWallet] signData() is not implemented.`)\n\t\t\t})\n\t\t} catch (error) {\n\t\t\tthrow new Error(`[AppWallet] An error occurred during signData: ${error}.`)\n\t\t}\n\t}\n\n\tsignTxs(unsignedTxs: string[], partialSign?: boolean): Promise<string[]> {\n\t\tconsole.log('>>> signTxs', unsignedTxs, partialSign)\n\t\tthrow new Error(`[AppWallet] signTxs() is not implemented.`)\n\t}\n\n\tsubmitTx(tx: string): Promise<string> {\n\t\tconsole.log('>>> submitTx', tx)\n\t\tthrow new Error(`[AppWallet] submitTx() is not implemented.`)\n\t}\n}\n","export const DEFAULT_V1_COST_MODEL_LIST = [\n\t100788, 420, 1, 1, 1000, 173, 0, 1, 1000, 59957, 4, 1, 11183, 32, 201305, 8356, 4, 16000, 100, 16000, 100, 16000, 100,\n\t16000, 100, 16000, 100, 16000, 100, 100, 100, 16000, 100, 94375, 32, 132994, 32, 61462, 4, 72010, 178, 0, 1, 22151, 32,\n\t91189, 769, 4, 2, 85848, 228465, 122, 0, 1, 1, 1000, 42921, 4, 2, 24548, 29498, 38, 1, 898148, 27279, 1, 51775, 558, 1,\n\t39184, 1000, 60594, 1, 141895, 32, 83150, 32, 15299, 32, 76049, 1, 13169, 4, 22100, 10, 28999, 74, 1, 28999, 74, 1,\n\t43285, 552, 1, 44749, 541, 1, 33852, 32, 68246, 32, 72362, 32, 7243, 32, 7391, 32, 11546, 32, 85848, 228465, 122, 0, 1,\n\t1, 90434, 519, 0, 1, 74433, 32, 85848, 228465, 122, 0, 1, 1, 85848, 228465, 122, 0, 1, 1, 270652, 22588, 4, 1457325,\n\t64566, 4, 20467, 1, 4, 0, 141992, 32, 100788, 420, 1, 1, 81663, 32, 59498, 32, 20142, 32, 24588, 32, 20744, 32, 25933,\n\t32, 24623, 32, 53384111, 14333, 10\n]\n\nexport const DEFAULT_V2_COST_MODEL_LIST = [\n\t100788, 420, 1, 1, 1000, 173, 0, 1, 1000, 59957, 4, 1, 11183, 32, 201305, 8356, 4, 16000, 100, 16000, 100, 16000, 100,\n\t16000, 100, 16000, 100, 16000, 100, 100, 100, 16000, 100, 94375, 32, 132994, 32, 61462, 4, 72010, 178, 0, 1, 22151, 32,\n\t91189, 769, 4, 2, 85848, 228465, 122, 0, 1, 1, 1000, 42921, 4, 2, 24548, 29498, 38, 1, 898148, 27279, 1, 51775, 558, 1,\n\t39184, 1000, 60594, 1, 141895, 32, 83150, 32, 15299, 32, 76049, 1, 13169, 4, 22100, 10, 28999, 74, 1, 28999, 74, 1,\n\t43285, 552, 1, 44749, 541, 1, 33852, 32, 68246, 32, 72362, 32, 7243, 32, 7391, 32, 11546, 32, 85848, 228465, 122, 0, 1,\n\t1, 90434, 519, 0, 1, 74433, 32, 85848, 228465, 122, 0, 1, 1, 85848, 228465, 122, 0, 1, 1, 955506, 213312, 0, 2, 270652,\n\t22588, 4, 1457325, 64566, 4, 20467, 1, 4, 0, 141992, 32, 100788, 420, 1, 1, 81663, 32, 59498, 32, 20142, 32, 24588, 32,\n\t20744, 32, 25933, 32, 24623, 32, 43053543, 10, 53384111, 14333, 10, 43574283, 26308, 10\n]\n\nexport const DEFAULT_V3_COST_MODEL_LIST = [\n\t100788, 420, 1, 1, 1000, 173, 0, 1, 1000, 59957, 4, 1, 11183, 32, 201305, 8356, 4, 16000, 100, 16000, 100, 16000, 100,\n\t16000, 100, 16000, 100, 16000, 100, 100, 100, 16000, 100, 94375, 32, 132994, 32, 61462, 4, 72010, 178, 0, 1, 22151, 32,\n\t91189, 769, 4, 2, 85848, 123203, 7305, -900, 1716, 549, 57, 85848, 0, 1, 1, 1000, 42921, 4, 2, 24548, 29498, 38, 1,\n\t898148, 27279, 1, 51775, 558, 1, 39184, 1000, 60594, 1, 141895, 32, 83150, 32, 15299, 32, 76049, 1, 13169, 4, 22100,\n\t10, 28999, 74, 1, 28999, 74, 1, 43285, 552, 1, 44749, 541, 1, 33852, 32, 68246, 32, 72362, 32, 7243, 32, 7391, 32,\n\t11546, 32, 85848, 123203, 7305, -900, 1716, 549, 57, 85848, 0, 1, 90434, 519, 0, 1, 74433, 32, 85848, 123203, 7305,\n\t-900, 1716, 549, 57, 85848, 0, 1, 1, 85848, 123203, 7305, -900, 1716, 549, 57, 85848, 0, 1, 955506, 213312, 0, 2,\n\t270652, 22588, 4, 1457325, 64566, 4, 20467, 1, 4, 0, 141992, 32, 100788, 420, 1, 1, 81663, 32, 59498, 32, 20142, 32,\n\t24588, 32, 20744, 32, 25933, 32, 24623, 32, 43053543, 10, 53384111, 14333, 10, 43574283, 26308, 10, 16000, 100, 16000,\n\t100, 962335, 18, 2780678, 6, 442008, 1, 52538055, 3756, 18, 267929, 18, 76433006, 8868, 18, 52948122, 18, 1995836, 36,\n\t3227919, 12, 901022, 1, 166917843, 4307, 36, 284546, 36, 158221314, 26549, 36, 74698472, 36, 333849714, 1, 254006273,\n\t72, 2174038, 72, 2261318, 64571, 4, 207616, 8310, 4, 1293828, 28716, 63, 0, 1, 1006041, 43623, 251, 0, 1, 100181, 726,\n\t719, 0, 1, 100181, 726, 719, 0, 1, 100181, 726, 719, 0, 1, 107878, 680, 0, 1, 95336, 1, 281145, 18848, 0, 1, 180194,\n\t159, 1, 1, 158519, 8942, 0, 1, 159378, 8813, 0, 1, 107490, 3298, 1, 106057, 655, 1, 1964219, 24520, 3\n]\n","import { CardanoWASM } from '@hydrawallet-sdk/cardano-wasm'\n\ntype NetworkId = number\n\nexport const PLACEHOLDER_ADDRESS: Record<NetworkId, string> = {\n\t[CardanoWASM.NetworkInfo.mainnet().network_id()]:\n\t\t'addr1qrsx72hrv8ens90hwkezg7ysyhwvcjmyzdveyf88ppq7a0lwu7gv0wuuf9lhzm7wclvj5ntgcfa53j0rqxmu237x20xspeqa7n',\n\t[CardanoWASM.NetworkInfo.testnet_preprod().network_id()]:\n\t\t'addr_test1qrsx72hrv8ens90hwkezg7ysyhwvcjmyzdveyf88ppq7a0lwu7gv0wuuf9lhzm7wclvj5ntgcfa53j0rqxmu237x20xsne56q3',\n\t[CardanoWASM.NetworkInfo.testnet_preview().network_id()]:\n\t\t'addr_test1qruhen60uwzpwnnr7gjs50z2v8u9zyfw6zunet4k42zrpr54mrlv55f93rs6j48wt29w90hlxt4rvpvshe55k5r9mpvqjv2wt4'\n}\n","import type { Protocol } from '../types/protocol'\n\nexport const DEFAULT_PROTOCOL_PARAMETERS: Protocol = {\n epoch: 0,\n coinsPerUtxoSize: 4310,\n priceMem: 0.0577,\n priceStep: 0.0000721,\n minFeeA: 44,\n minFeeB: 155381,\n keyDeposit: 2000000,\n maxTxSize: 16384,\n maxValSize: 5000,\n poolDeposit: 500000000,\n maxCollateralInputs: 3,\n decentralisation: 0,\n maxBlockSize: 98304,\n collateralPercent: 150,\n maxBlockHeaderSize: 1100,\n minPoolCost: '340000000',\n maxTxExMem: '16000000',\n maxTxExSteps: '10000000000',\n maxBlockExMem: '80000000',\n maxBlockExSteps: '40000000000',\n minFeeRefScriptCostPerByte: 15\n}\n\nexport const DREP_DEPOSIT = '500000000'\n\nexport const resolveTxFees = (\n txSize: number,\n minFeeA = DEFAULT_PROTOCOL_PARAMETERS.minFeeA,\n minFeeB = DEFAULT_PROTOCOL_PARAMETERS.minFeeB\n) => {\n const fees = BigInt(minFeeA) * BigInt(txSize) + BigInt(minFeeB)\n\n return fees.toString()\n}\n","export const LANGUAGE_VERSIONS: Record<string, 'V1' | 'V2' | 'V3'> = {\n\tV1: 'V1',\n\tV2: 'V2',\n\tV3: 'V3'\n}\nexport const HARDENED_KEY_START = 0x80000000\n\nexport * from './chain'\nexport * from './cost-models'\nexport * from './placeholder'\nexport * from './protocol-parameters'\n","export type Asset = {\n\tunit: Unit\n\tquantity: Quantity\n}\n\nexport type Unit = string\n\nexport type Quantity = string\n\nexport const mergeAssets = (assets: Asset[]): Asset[] => {\n\tconst merged: Asset[] = []\n\tassets.forEach(asset => {\n\t\tconst existing = merged.find(a => a.unit === asset.unit)\n\t\tif (existing) {\n\t\t\texisting.quantity = (BigInt(existing.quantity) + BigInt(asset.quantity)).toString()\n\t\t} else {\n\t\t\tmerged.push(asset)\n\t\t}\n\t})\n\treturn merged\n}\n","import type { Data } from './data'\n\nexport type RoyaltiesStandard = {\n\trate: string\n\taddress: string\n}\n\nexport const royaltiesStandardKeys = ['rate', 'address']\n\ntype MetadataStandard = any\n\nexport const metadataStandardKeys = [\n\t'name',\n\t'image',\n\t'mediaType',\n\t'description',\n\t'instagram',\n\t'twitter',\n\t'discord',\n\t'website'\n]\n\nexport type Files = {\n\tfiles?: [\n\t\t{\n\t\t\tname: string\n\t\t\tsrc: `${string}://${string}`\n\t\t\tmediaType: `${string}/${string}`\n\t\t}\n\t]\n}\n\nexport type AssetMetadata = FungibleAssetMetadata | NonFungibleAssetMetadata | RoyaltiesStandard\n\nexport type FungibleAssetMetadata = MetadataStandard & {\n\tticker: string\n\tdecimals: number\n\tversion: `${number}.${number}`\n}\n\nexport const fungibleAssetKeys = ['ticker', 'decimals']\n\nexport type NonFungibleAssetMetadata = AudioAssetMetadata | ImageAssetMetadata | SmartAssetMetadata | VideoAssetMetadata\n\ntype AudioAssetMetadata = MetadataStandard & Files\n\nexport type ImageAssetMetadata = MetadataStandard &\n\tFiles & {\n\t\tartists?: [\n\t\t\t{\n\t\t\t\tname: string\n\t\t\t\ttwitter?: `https://twitter.com/${string}`\n\t\t\t}\n\t\t]\n\t\tattributes?: {\n\t\t\t[key: string]: string\n\t\t}\n\t\ttraits?: string[]\n\t}\n\ntype SmartAssetMetadata = MetadataStandard & Files\n\ntype VideoAssetMetadata = MetadataStandard & Files\n\n/**\n * Transform the metadata into the format needed in CIP68 inline datum (in Mesh Data type)\n * @param metadata The metadata body without outer wrapper of policy id & token name\n * @returns The metadata in Mesh Data type, ready to be attached as inline datum\n */\nexport const metadataToCip68 = (metadata: any): Data => {\n\tswitch (typeof metadata) {\n\t\tcase 'object':\n\t\t\tif (metadata instanceof Array) {\n\t\t\t\treturn metadata.map(item => metadataToCip68(item))\n\t\t\t}\n\t\t\tconst metadataMap = new Map()\n\t\t\tconst keys = Object.keys(metadata)\n\t\t\tkeys.forEach(key => {\n\t\t\t\tmetadataMap.set(key, metadataToCip68(metadata[key]))\n\t\t\t})\n\t\t\treturn {\n\t\t\t\talternative: 0,\n\t\t\t\tfields: [metadataMap, 1]\n\t\t\t}\n\n\t\tdefault:\n\t\t\treturn metadata\n\t}\n}\n","import { DEFAULT_PROTOCOL_PARAMETERS } from '../constants/protocol-parameters'\n\nexport type Protocol = {\n\tepoch: number\n\tminFeeA: number\n\tminFeeB: number\n\tmaxBlockSize: number\n\tmaxTxSize: number\n\tmaxBlockHeaderSize: number\n\tkeyDeposit: number\n\tpoolDeposit: number\n\tdecentralisation: number\n\tminPoolCost: string\n\tpriceMem: number\n\tpriceStep: number\n\tmaxTxExMem: string\n\tmaxTxExSteps: string\n\tmaxBlockExMem: string\n\tmaxBlockExSteps: string\n\tmaxValSize: number\n\tcollateralPercent: number\n\tmaxCollateralInputs: number\n\tcoinsPerUtxoSize: number\n\tminFeeRefScriptCostPerByte: number\n}\n\nexport const castProtocol = (data: Partial<Record<keyof Protocol, any>>): Protocol => {\n\tconst result: Partial<Record<keyof Protocol, number | string>> = {}\n\n\tfor (const rawKey in DEFAULT_PROTOCOL_PARAMETERS) {\n\t\tconst key = rawKey as keyof Protocol\n\t\tconst defaultValue = DEFAULT_PROTOCOL_PARAMETERS[key]\n\t\tconst value = data[key]\n\t\tif (typeof defaultValue === 'number') {\n\t\t\tresult[key] = !value && value !== 0 ? defaultValue : Number(value)\n\t\t} else if (typeof defaultValue === 'string') {\n\t\t\tresult[key] = !value && value !== '' ? defaultValue : value.toString()\n\t\t}\n\t}\n\n\treturn result as Protocol\n}\n","export const serializeAssetUnit = (policyId: string, assetName: string): string => {\n\treturn policyId + assetName\n}\n","import { CardanoWASM } from '@hydrawallet-sdk/cardano-wasm'\nimport { Asset, TxHash, UTxO, UTxOObject, UTxOObjectValue } from '../../types/cardano'\nimport { deserializeAssetUnit } from './deserializer'\n\nexport const convertUTxOToUTxOObject = (utxos: UTxO[]): UTxOObject => {\n\treturn utxos.reduce((acc, cur) => {\n\t\tacc[`${cur.input.txHash}#${cur.input.outputIndex}` as TxHash] = {\n\t\t\taddress: cur.output.address,\n\t\t\tdatum: cur.output.datum ? cur.output.datum.to_hex() : null,\n\t\t\tdatumhash: cur.output.datumHash || null,\n\t\t\tinlineDatum: cur.output.inlineDatum\n\t\t\t\t? cur.output.inlineDatum.to_json(CardanoWASM.PlutusDatumSchema.DetailedSchema)\n\t\t\t\t: null,\n\t\t\tinlineDatumRaw: cur.output.inlineDatum ? cur.output.inlineDatum.to_hex() : null,\n\n\t\t\t// TODO: update it if using scriptRef\n\t\t\treferenceScript: null,\n\t\t\tvalue: cur.output.amount.reduce(\n\t\t\t\t(acc, cur) => {\n\t\t\t\t\tif (cur.unit === 'lovelace') {\n\t\t\t\t\t\tacc.lovelace = Number(cur.quantity)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst { policyId, assetName } = deserializeAssetUnit(cur.unit)\n\t\t\t\t\t\t// @ts-ignore\n\t\t\t\t\t\tif (!acc[policyId]) {\n\t\t\t\t\t\t\t// @ts-ignore\n\t\t\t\t\t\t\tacc[policyId] = {}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// @ts-ignore\n\t\t\t\t\t\tacc[policyId][assetName] = Number(cur.quantity)\n\t\t\t\t\t}\n\t\t\t\t\treturn acc\n\t\t\t\t},\n\t\t\t\t{} as UTxOObjectValue['value']\n\t\t\t)\n\t\t}\n\t\treturn acc\n\t}, {} as UTxOObject)\n}\n\nexport const convertUTxOObjectToUTxO = (utxoObject: UTxOObject): UTxO[] => {\n\treturn Object.keys(utxoObject).map(txHash => {\n\t\tconst [txId, txIndex] = txHash.split('#')\n\t\tconst outputIndex = Number(txIndex)\n\t\tconst utxo = utxoObject[txHash as TxHash]\n\t\tconst amount: Asset[] = [{ unit: 'lovelace', quantity: String(utxo.value.lovelace) }]\n\t\tfor (const [policyId, assets] of Object.entries(utxo.value)) {\n\t\t\tfor (const [assetName, quantity] of Object.entries(assets)) {\n\t\t\t\tamount.push({\n\t\t\t\t\tunit: `${policyId}${assetName}`,\n\t\t\t\t\tquantity: String(quantity)\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\tinput: {\n\t\t\t\toutputIndex,\n\t\t\t\ttxHash: txId\n\t\t\t},\n\t\t\toutput: {\n\t\t\t\taddress: utxo.address,\n\t\t\t\tamount,\n\t\t\t\tdatum: undefined,\n\t\t\t\tdatumHash: utxo.datumhash,\n\t\t\t\tinlineDatum: undefined,\n\t\t\t\tscriptRef: undefined,\n\t\t\t\tscriptHash: undefined\n\t\t\t}\n\t\t}\n\t})\n}\n"],"mappings":"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","names":["import_cardano_wasm","import_cardano_wasm","Purpose","CoinTypes","ChainDerivation","import_cardano_wasm","import_cardano_wasm","import_cardano_wasm","import_cardano_wasm","acc","cur"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/embedded.ts","../src/utils/cardano-wasm/build-keys.ts","../src/constants/chain.ts","../src/utils/cardano-wasm/resolver.ts","../src/utils/parser.ts","../src/utils/cardano-wasm/deserializer.ts","../src/wallet.ts","../src/constants/cost-models.ts","../src/constants/placeholder.ts","../src/constants/protocol-parameters.ts","../src/constants/index.ts","../src/types/cardano/asset.ts","../src/types/cardano/asset-metadata.ts","../src/types/protocol.ts","../src/utils/cardano-wasm/serializer.ts","../src/utils/cardano-wasm/converter.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-extraneous-class */\nimport * as BaseEncoding from '@scure/base'\nimport { generateMnemonic, mnemonicToEntropy } from 'bip39'\nimport { CardanoWASM } from '@hydrawallet-sdk/cardano-wasm'\nimport {\n\tbuildBaseAddress,\n\tbuildEnterpriseAddress,\n\tbuildKeys,\n\tbuildRewardAddress,\n\tstripExtendedKey\n} from './utils/cardano-wasm/build-keys'\nimport { resolveTxHash } from './utils/cardano-wasm/resolver'\nimport { toBytes } from './utils/parser'\n\nexport class WalletStaticMethods {\n\tstatic privateKeyBech32ToPrivateKeyHex(_bech32: string): string {\n\t\tconst bech32DecodedBytes = BaseEncoding.bech32.decodeToBytes(_bech32).bytes\n\t\tconst bip32PrivateKey = CardanoWASM.Bip32PrivateKey.from_bytes(bech32DecodedBytes)\n\t\treturn bip32PrivateKey.to_hex()\n\t}\n\n\tstatic mnemonicToPrivateKeyHex(words: string[], password = ''): string {\n\t\tconst entropy = mnemonicToEntropy(words.join(' '))\n\t\tconst bip32PrivateKey = CardanoWASM.Bip32PrivateKey.from_bip39_entropy(toBytes(entropy), toBytes(password))\n\t\treturn bip32PrivateKey.to_hex()\n\t}\n\n\tstatic privateKeyHexToBech32(privateKeyHex: string) {\n\t\tconst bip32PrivateKey = CardanoWASM.Bip32PrivateKey.from_hex(privateKeyHex)\n\t\treturn bip32PrivateKey.to_bech32()\n\t}\n\n\tstatic signingKeyToHexes(paymentKey: string, stakeKey: string): [string, string] {\n\t\treturn [\n\t\t\tpaymentKey.startsWith('5820') ? paymentKey.slice(4) : paymentKey,\n\t\t\tstakeKey.startsWith('5820') ? stakeKey.slice(4) : stakeKey\n\t\t]\n\t}\n\n\tstatic bip32BytesToPrivateKeyHex(bip32Bytes: Uint8Array): string {\n\t\tconst bip32PrivateKey = CardanoWASM.Bip32PrivateKey.from_bytes(bip32Bytes)\n\t\treturn bip32PrivateKey.to_hex()\n\t}\n\n\tstatic getAddresses(\n\t\tpaymentKey: CardanoWASM.Bip32PrivateKey,\n\t\tstakingKey: CardanoWASM.Bip32PrivateKey,\n\t\tnetworkId = 0\n\t): {\n\t\tbaseAddress: CardanoWASM.Address\n\t\tenterpriseAddress: CardanoWASM.Address\n\t\trewardAddress: CardanoWASM.Address\n\t} {\n\t\tconst baseAddress = buildBaseAddress(\n\t\t\tnetworkId,\n\t\t\tpaymentKey.to_public().to_raw_key().hash(),\n\t\t\tstakingKey.to_public().to_raw_key().hash()\n\t\t).to_address()\n\n\t\tconst enterpriseAddress = buildEnterpriseAddress(networkId, paymentKey.to_public().to_raw_key().hash()).to_address()\n\n\t\tconst rewardAddress = buildRewardAddress(networkId, stakingKey.to_public().to_raw_key().hash()).to_address()\n\n\t\treturn {\n\t\t\tbaseAddress: baseAddress,\n\t\t\tenterpriseAddress: enterpriseAddress,\n\t\t\trewardAddress: rewardAddress\n\t\t}\n\t}\n\n\tstatic generateMnemonic(strength = 256): string[] {\n\t\tconst mnemonic = generateMnemonic(strength)\n\t\treturn mnemonic.split(' ')\n\t}\n\n\t// static getDRepKey(\n\t// dRepKey: Ed25519PrivateKey,\n\t// networkId = 0\n\t// ): {\n\t// pubDRepKey: string\n\t// dRepIDBech32: DRepID\n\t// dRepIDHash: Ed25519KeyHashHex\n\t// } {\n\t// const pubDRepKey = dRepKey.toPublic().hex().toString()\n\n\t// const dRepIDBech32 = buildDRepID(Ed25519PublicKeyHex(pubDRepKey), networkId)\n\t// const dRep = DRep.newKeyHash(dRepKey.toPublic().hash().hex())\n\t// const dRepIDHash = dRep.toKeyHash()!\n\n\t// return {\n\t// pubDRepKey,\n\t// dRepIDBech32,\n\t// dRepIDHash\n\t// }\n\t// }\n}\n\nexport type Account = {\n\tbaseAddress: CardanoWASM.Address\n\tenterpriseAddress: CardanoWASM.Address\n\trewardAddress: CardanoWASM.Address\n\tbaseAddressBech32: string\n\tenterpriseAddressBech32: string\n\trewardAddressBech32: string\n\tpaymentKey: CardanoWASM.Bip32PrivateKey\n\tstakeKey: CardanoWASM.Bip32PrivateKey\n\t/**\n\t * @description 96 bytes with extended public key\n\t */\n\textendedPaymentKeyHex: string\n\t/**\n\t * @description 96 bytes with extended public key\n\t */\n\textendedStakeKeyHex: string\n\t/**\n\t * @description 64 bytes without extended public key\n\t */\n\tpaymentKeyHex: string\n\t/**\n\t * @description 64 bytes without extended public key\n\t */\n\tstakeKeyHex: string\n\n\tpubDRepKey?: string\n\tdRepIDBech32?: ReturnType<CardanoWASM.DRep['to_bech32']>\n\tdRepIDHash?: ReturnType<CardanoWASM.DRep['to_key_hash']>\n}\n\nexport type CreateEmbeddedWalletOptions = {\n\tnetworkId: number\n\tkey: EmbeddedWalletKeyType\n}\n\nexport type EmbeddedWalletKeyType =\n\t| {\n\t\t\ttype: 'root'\n\t\t\tbech32: string\n\t }\n\t| {\n\t\t\ttype: 'cli'\n\t\t\tpayment: string\n\t\t\tstake?: string\n\t }\n\t| {\n\t\t\ttype: 'mnemonic'\n\t\t\twords: string[]\n\t }\n\t| {\n\t\t\ttype: 'bip32Bytes'\n\t\t\tbip32Bytes: Uint8Array\n\t }\n\nexport class EmbeddedWallet extends WalletStaticMethods {\n\tprivate readonly _walletSecret?: string | [string, string]\n\tprivate readonly _networkId: number\n\n\tconstructor(options: CreateEmbeddedWalletOptions) {\n\t\tsuper()\n\t\tthis._networkId = options.networkId\n\n\t\tswitch (options.key.type) {\n\t\t\tcase 'mnemonic':\n\t\t\t\tthis._walletSecret = WalletStaticMethods.mnemonicToPrivateKeyHex(options.key.words)\n\t\t\t\tbreak\n\t\t\tcase 'root':\n\t\t\t\tthis._walletSecret = WalletStaticMethods.privateKeyBech32ToPrivateKeyHex(options.key.bech32)\n\t\t\t\tbreak\n\t\t\tcase 'cli':\n\t\t\t\tthis._walletSecret = WalletStaticMethods.signingKeyToHexes(\n\t\t\t\t\toptions.key.payment,\n\t\t\t\t\toptions.key.stake ?? 'f0'.repeat(32)\n\t\t\t\t)\n\t\t\t\tbreak\n\t\t\tcase 'bip32Bytes':\n\t\t\t\tthis._walletSecret = WalletStaticMethods.bip32BytesToPrivateKeyHex(options.key.bip32Bytes)\n\t\t\t\tbreak\n\t\t}\n\t}\n\n\tgetPrivateKeyHex(): string | [string, string] {\n\t\tif (this._walletSecret == undefined) throw new Error('[EmbeddedWallet] No keys initialized')\n\t\treturn this._walletSecret\n\t}\n\n\tgetAccount(accountIndex = 0, keyIndex = 0): Account {\n\t\tif (this._walletSecret == undefined) throw new Error('[EmbeddedWallet] No keys initialized')\n\n\t\tconst { paymentKey, stakeKey } = buildKeys(this._walletSecret, accountIndex, keyIndex)\n\n\t\tconst { baseAddress, enterpriseAddress, rewardAddress } = WalletStaticMethods.getAddresses(\n\t\t\tpaymentKey,\n\t\t\tstakeKey,\n\t\t\tthis._networkId\n\t\t)\n\n\t\tconst _account: Account = {\n\t\t\tbaseAddress: baseAddress,\n\t\t\tenterpriseAddress: enterpriseAddress,\n\t\t\trewardAddress: rewardAddress,\n\n\t\t\tbaseAddressBech32: baseAddress.to_bech32(),\n\t\t\tenterpriseAddressBech32: enterpriseAddress.to_bech32(),\n\t\t\trewardAddressBech32: rewardAddress.to_bech32(),\n\n\t\t\tpaymentKey: paymentKey,\n\t\t\tstakeKey: stakeKey,\n\n\t\t\tpaymentKeyHex: stripExtendedKey(paymentKey.to_hex()),\n\t\t\tstakeKeyHex: stripExtendedKey(stakeKey.to_hex()),\n\t\t\textendedPaymentKeyHex: paymentKey.to_hex(),\n\t\t\textendedStakeKeyHex: stakeKey.to_hex()\n\t\t}\n\n\t\t// TODO: fix it\n\t\t// if (dRepKey) {\n\t\t// const { pubDRepKey, dRepIDBech32, dRepIDHash } = WalletStaticMethods.getDRepKey(dRepKey, this._networkId)\n\t\t// _account.pubDRepKey = pubDRepKey\n\t\t// _account.dRepIDBech32 = dRepIDBech32\n\t\t// _account.dRepIDHash = dRepIDHash\n\t\t// }\n\n\t\treturn _account\n\t}\n\n\t/**\n\t * Get wallet network ID.\n\t *\n\t * @returns network ID\n\t */\n\tgetNetworkId(): number {\n\t\treturn this._networkId\n\t}\n\n\t/**\n\t * This endpoints sign the provided transaction (unsignedTx) with the private key of the owner.\n\t *\n\t * @param unsignedTx - a transaction in CBOR\n\t * @param accountIndex account index (default: 0)\n\t * @param keyIndex key index (default: 0)\n\t * @returns VkeyWitness\n\t */\n\tsignTx(unsignedTx: string, accountIndex = 0, keyIndex = 0): CardanoWASM.Vkeywitness {\n\t\ttry {\n\t\t\tconst txHashHex = resolveTxHash(unsignedTx)\n\t\t\tconst { paymentKey } = this.getAccount(accountIndex, keyIndex)\n\t\t\tconst privateSigningKey = paymentKey.to_raw_key()\n\t\t\tconst vkeyWitness = CardanoWASM.make_vkey_witness(CardanoWASM.TransactionHash.from_hex(txHashHex), privateSigningKey)\n\t\t\treturn vkeyWitness\n\t\t} catch (error) {\n\t\t\tthrow new Error(`[EmbeddedWallet] An error occurred during signTx: ${error}.`)\n\t\t}\n\t}\n\n\t// /**\n\t// * This endpoint utilizes the [CIP-8 - Message Signing](https://cips.cardano.org/cips/cip8/) to sign arbitrary data, to verify the data was signed by the owner of the private key.\n\t// *\n\t// * @param address - bech32 address to sign the data with\n\t// * @param payload - the data to be signed\n\t// * @param accountIndex account index (default: 0)\n\t// * @returns a signature\n\t// */\n\t// signData(address: string, payload: string, accountIndex = 0, keyIndex = 0): DataSignature {\n\t// try {\n\t// const { baseAddress, enterpriseAddress, rewardAddress, paymentKey } = this.getAccount(accountIndex, keyIndex)\n\n\t// const foundAddress = [baseAddress, enterpriseAddress, rewardAddress].find(a => a.toBech32() === address)\n\n\t// if (foundAddress === undefined)\n\t// throw new Error(`[EmbeddedWallet] Address: ${address} doesn't belong to this account.`)\n\n\t// // todo tw\n\t// return signData(payload, {\n\t// address: Address.fromBech32(address),\n\t// key: paymentKey\n\t// })\n\t// } catch (error) {\n\t// throw new Error(`[EmbeddedWallet] An error occurred during signData: ${error}.`)\n\t// }\n\t// }\n}\n","import { CardanoWASM } from '@hydrawallet-sdk/cardano-wasm'\nimport { NETWORK_ID } from '../../constants/chain'\n\nexport const buildBaseAddress = (\n\tnetworkId: number,\n\tpaymentKeyHash: CardanoWASM.Ed25519KeyHash,\n\tstakeKeyHash: CardanoWASM.Ed25519KeyHash\n): CardanoWASM.BaseAddress => {\n\tconst paymentCredential = CardanoWASM.Credential.from_keyhash(paymentKeyHash)\n\tconst stakeCredential = CardanoWASM.Credential.from_keyhash(stakeKeyHash)\n\treturn CardanoWASM.BaseAddress.new(networkId, paymentCredential, stakeCredential)\n}\n\nexport const buildEnterpriseAddress = (\n\tnetworkId: number,\n\tpaymentKeyHash: CardanoWASM.Ed25519KeyHash\n): CardanoWASM.EnterpriseAddress => {\n\t// return EnterpriseAddress.fromCredentials(networkId, {\n\t// hash: paymentKeyHash,\n\t// type: CredentialType.KeyHash\n\t// })\n\tconst paymentCredential = CardanoWASM.Credential.from_keyhash(paymentKeyHash)\n\treturn CardanoWASM.EnterpriseAddress.new(networkId, paymentCredential)\n}\n\nexport const buildRewardAddress = (\n\tnetworkId: number,\n\tstakeKeyHash: CardanoWASM.Ed25519KeyHash\n): CardanoWASM.RewardAddress => {\n\t// const cred = {\n\t// type: CredentialType.KeyHash,\n\t// hash: stakeKeyHash\n\t// }\n\t// return RewardAddress.fromCredentials(networkId, cred)\n\tconst stakeCredential = CardanoWASM.Credential.from_keyhash(stakeKeyHash)\n\treturn CardanoWASM.RewardAddress.new(networkId, stakeCredential)\n}\n\nexport const buildDRepID = (\n\tdRepKey: CardanoWASM.Ed25519KeyHash,\n\tnetworkId: number = NETWORK_ID.MAINNET\n\t// addressType: AddressType = AddressType.EnterpriseKey\n) => {\n\t// const dRepKeyBytes = Buffer.from(dRepKey, 'hex')\n\t// const dRepIdHex = blake2b(28).update(dRepKeyBytes).digest('hex')\n\t// const paymentAddress = EnterpriseAddress.packParts({\n\t// networkId,\n\t// paymentPart: {\n\t// hash: Hash28ByteBase16(dRepIdHex),\n\t// type: CredentialType.KeyHash\n\t// },\n\t// type: addressType\n\t// })\n\t// return HexBlob.toTypedBech32<DRepID>('drep', HexBlob.fromBytes(paymentAddress))\n\n\t// CardanoWASM.DRep.new_from_credential(CardanoWASM.Credential.from_hex(dRepKey.to_hex()))\n\t// const paymentAddress = CardanoWASM.EnterpriseAddress.new(networkId, CardanoWASM.Credential.from_hex(dRepKey.to_hex()))\n\tconsole.log('buildDRepID', dRepKey.to_hex(), networkId)\n\treturn null\n}\n\n// Purpose derivation (See BIP43)\nexport enum Purpose {\n\tCIP1852 = 1852 // see CIP 1852\n}\n\n// Cardano coin type (SLIP 44)\nexport enum CoinTypes {\n\tCARDANO = 1815\n}\n\nexport enum ChainDerivation {\n\tEXTERNAL = 0, // from BIP44\n\tINTERNAL = 1, // from BIP44\n\tCHIMERIC = 2, // from CIP1852\n\tDREP = 3\n}\n\nfunction harden(num: number): number {\n\treturn 0x80000000 + num\n}\n\nexport const buildKeys = (\n\tprivateKeyHex: string | [string, string],\n\taccountIndex: number,\n\tkeyIndex = 0\n): {\n\taccountKey: CardanoWASM.Bip32PrivateKey\n\tpaymentKey: CardanoWASM.Bip32PrivateKey\n\tstakeKey: CardanoWASM.Bip32PrivateKey\n\tdRepKey?: CardanoWASM.Bip32PrivateKey\n} => {\n\tif (Array.isArray(privateKeyHex)) {\n\t\treturn {\n\t\t\t// TODO: need to verify this\n\t\t\taccountKey: CardanoWASM.Bip32PrivateKey.from_hex(privateKeyHex[0]),\n\n\t\t\tpaymentKey: CardanoWASM.Bip32PrivateKey.from_hex(privateKeyHex[0]),\n\t\t\tstakeKey: CardanoWASM.Bip32PrivateKey.from_hex(privateKeyHex[1])\n\t\t}\n\t}\n\n\t/**\n\t * @description rootKey\n\t */\n\tconst privateKey = CardanoWASM.Bip32PrivateKey.from_hex(privateKeyHex)\n\n\t// hardened derivation\n\tconst accountKey = privateKey\n\t\t.derive(harden(Purpose.CIP1852)) // 1852\n\t\t.derive(harden(CoinTypes.CARDANO)) // 1815\n\t\t.derive(harden(accountIndex)) // account #0\n\n\tconst paymentKey = accountKey\n\t\t.derive(ChainDerivation.EXTERNAL) // external chain (0)\n\t\t.derive(keyIndex) // external chain, payment key index\n\tconst stakeKey = accountKey\n\t\t.derive(ChainDerivation.CHIMERIC) // chimeric derivation (2)\n\t\t.derive(keyIndex) // staking key, index 0\n\tconst dRepKey = accountKey\n\t\t.derive(ChainDerivation.DREP) // dRep key, index 0\n\t\t.derive(keyIndex) // dRep Keys, index\n\n\treturn { accountKey, paymentKey, stakeKey, dRepKey }\n}\n\n/**\n * \n * @param scalar \n * @returns \n * @description\n * `clampScalar` làm nhiệm vụ clamp (chuẩn hóa) một scalar (32 byte private key) theo quy tắc Ed25519:\n * \n Đảm bảo private scalar nằm trong một tập hợp giá trị hợp lệ theo quy chuẩn EdDSA (RFC 8032 / Ed25519).\n Vì Ed25519 yêu cầu scalar phải:\n - Có 3 bit thấp nhất của byte đầu tiên bằng 0\n - Có 2 bit cao nhất của byte cuối cùng là 01\n * \n Việc này giúp khóa có tính chất cryptographically secure hơn và tránh scalar yếu.\n */\nexport const clampScalar = (scalar: Buffer): Buffer => {\n\tif (scalar[0] !== undefined) {\n\t\tscalar[0] &= 0b1111_1000\n\t}\n\tif (scalar[31] !== undefined) {\n\t\tscalar[31] &= 0b0001_1111\n\t\tscalar[31] |= 0b0100_0000\n\t}\n\treturn scalar\n}\n\n/**\n *\n * @param extendedKeyHex\n * @returns\n * @description\n * `stripExtendedKey` remove public key (32 byte) of extended key (96 byte) to create private key (64 byte)\n */\nexport const stripExtendedKey = (extendedKeyHex: string): string => {\n\tif (extendedKeyHex.length !== 192) {\n\t\tthrow new Error('Extended key must be 192 hex characters (96 bytes)')\n\t}\n\t// private key (32 byte) + chain code (32 byte) = 64 byte = 128 hex\n\tconst strippedKeyHex = extendedKeyHex.slice(0, 128)\n\treturn strippedKeyHex\n}\n","import { CardanoWASM } from '@hydrawallet-sdk/cardano-wasm'\n\nexport const NETWORK_ID = {\n\tMAINNET: CardanoWASM.NetworkInfo.mainnet().network_id(),\n\tPREPROD: CardanoWASM.NetworkInfo.testnet_preprod().network_id(),\n\tPREVIEW: CardanoWASM.NetworkInfo.testnet_preview().network_id()\n}\nexport const NETWORK_MAGIC = {\n\tMAINNET: CardanoWASM.NetworkInfo.mainnet().protocol_magic(),\n\tPREPROD: CardanoWASM.NetworkInfo.testnet_preprod().protocol_magic(),\n\tPREVIEW: CardanoWASM.NetworkInfo.testnet_preview().protocol_magic()\n}\n","import { CardanoWASM } from '@hydrawallet-sdk/cardano-wasm'\n\n/**\n *\n * @param cborHex Transaction CBOR hex\n * @returns Transaction Hash in Hex\n */\nexport const resolveTxHash = (cborHex: string) => {\n\treturn CardanoWASM.FixedTransaction.from_hex(cborHex).transaction_hash().to_hex()\n}\n\nexport const resolveTxBodyHash = (txBody: CardanoWASM.TransactionBody) => {\n\tconst tx = CardanoWASM.FixedTransaction.new_from_body_bytes(txBody.to_bytes())\n\treturn tx.transaction_hash()\n}\n","/**\n * Converting bytes to hex string\n * @param bytes The bytes to be converted\n * @returns The hex string\n */\nexport const bytesToHex = (bytes: ArrayBuffer | Uint8Array | Buffer): string => {\n if (Buffer.isBuffer(bytes)) {\n return bytes.toString('hex')\n }\n if (bytes instanceof ArrayBuffer) {\n return Buffer.from(bytes).toString('hex')\n }\n // bytes is Uint8Array\n return Buffer.from(bytes).toString('hex')\n}\n\n/**\n * Converting hex string to bytes\n * @param hex The hex string to be converted\n * @returns The bytes\n */\nexport const hexToBytes = (hex: string) => Buffer.from(hex, 'hex')\n\n/**\n * Converting utf8 string to hex string\n * @param str The utf8 string to be converted\n * @returns The hex string\n */\nexport const stringToHex = (str: string) => Buffer.from(str, 'utf8').toString('hex')\n\n/**\n * Converting hex string to utf8 string\n * @param hex The hex string to be converted\n * @returns The utf8 string\n */\nexport const hexToString = (hex: string) => Buffer.from(hex, 'hex').toString('utf8')\n\n/**\n * Converting either hex string or utf8 string to bytes\n * @param hex The hex or utf8 string to be converted\n * @returns The bytes\n */\nexport const toBytes = (hex: string): Uint8Array => {\n if (hex.length % 2 === 0 && /^[0-9A-F]*$/i.test(hex)) return Buffer.from(hex, 'hex')\n\n return Buffer.from(hex, 'utf-8')\n}\n\n/**\n * Converting utf8 string to hex string\n * @param utf8 The utf8 string to be converted\n * @returns The hex string\n */\nexport const fromUTF8 = (utf8: string) => {\n return Buffer.from(utf8, 'utf-8').toString('hex')\n}\n\n/**\n * Converting hex string to utf8 string\n * @param hex The hex string to be converted\n * @returns The utf8 string\n */\nexport const toUTF8 = (hex: string) => Buffer.from(hex, 'hex').toString('utf-8')\n","import { CardanoWASM } from '@hydrawallet-sdk/cardano-wasm'\n\nexport const deserializeTx = (txCborHex: string): CardanoWASM.FixedTransaction => {\n\treturn CardanoWASM.FixedTransaction.from_bytes(Buffer.from(txCborHex, 'hex'))\n}\n\nexport const deserializeAssetUnit = (assetUnit: string): { policyId: string; assetName: string } => {\n\tconst policyId = assetUnit.substring(0, 56)\n\tconst assetName = assetUnit.substring(56)\n\treturn { policyId, assetName }\n}\n","import { EmbeddedWallet } from './embedded'\nimport type { DataSignature } from './types/cardano'\nimport { CreateAppWalletOptions } from './types/wallet'\nimport type { IFetcher } from './types/wallet/fetcher'\nimport type { ISigner } from './types/wallet/signer'\nimport type { ISubmitter } from './types/wallet/submitter'\nimport { deserializeTx } from './utils/cardano-wasm/deserializer'\n\nexport class AppWallet implements ISigner, ISubmitter {\n\tprivate readonly _submitter?: ISubmitter\n\tprivate readonly _fetcher?: IFetcher\n\tprivate readonly _wallet: EmbeddedWallet\n\n\tconstructor(options: CreateAppWalletOptions) {\n\t\tthis._fetcher = options.fetcher\n\t\tthis._submitter = options.submitter\n\n\t\tswitch (options.key.type) {\n\t\t\tcase 'mnemonic':\n\t\t\t\tthis._wallet = new EmbeddedWallet({\n\t\t\t\t\tnetworkId: options.networkId,\n\t\t\t\t\tkey: {\n\t\t\t\t\t\ttype: 'mnemonic',\n\t\t\t\t\t\twords: options.key.words\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\tbreak\n\t\t\tcase 'root':\n\t\t\t\tthis._wallet = new EmbeddedWallet({\n\t\t\t\t\tnetworkId: options.networkId,\n\t\t\t\t\tkey: {\n\t\t\t\t\t\ttype: 'root',\n\t\t\t\t\t\tbech32: options.key.bech32\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\tbreak\n\t\t\tcase 'cli':\n\t\t\t\tthis._wallet = new EmbeddedWallet({\n\t\t\t\t\tnetworkId: options.networkId,\n\t\t\t\t\tkey: {\n\t\t\t\t\t\ttype: 'cli',\n\t\t\t\t\t\tpayment: options.key.payment,\n\t\t\t\t\t\tstake: options.key.stake\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t}\n\t}\n\n\tgetAccount(accountIndex = 0, keyIndex = 0) {\n\t\treturn this._wallet.getAccount(accountIndex, keyIndex)\n\t}\n\n\tgetEnterpriseAddress(accountIndex = 0, keyIndex = 0): string {\n\t\tconst account = this._wallet.getAccount(accountIndex, keyIndex)\n\t\treturn account.enterpriseAddressBech32\n\t}\n\n\tgetPaymentAddress(accountIndex = 0, keyIndex = 0): string {\n\t\tconst account = this._wallet.getAccount(accountIndex, keyIndex)\n\t\treturn account.baseAddressBech32\n\t}\n\n\tgetRewardAddress(accountIndex = 0, keyIndex = 0): string {\n\t\tconst account = this._wallet.getAccount(accountIndex, keyIndex)\n\t\treturn account.rewardAddressBech32\n\t}\n\n\tgetNetworkId(): number {\n\t\treturn this._wallet.getNetworkId()\n\t}\n\n\tasync signTx(unsignedTx: string, partialSign = false, accountIndex = 0, keyIndex = 0): Promise<string> {\n\t\ttry {\n\t\t\tconst tx = deserializeTx(unsignedTx)\n\n\t\t\tif (!partialSign && tx.witness_set().vkeys() !== undefined && tx.witness_set().vkeys()?.len() !== 0)\n\t\t\t\tthrow new Error('Signatures already exist in the transaction in a non partial sign call')\n\n\t\t\tconst prvSigningKey = this._wallet.getAccount(accountIndex, keyIndex).paymentKey.to_raw_key()\n\t\t\ttx.sign_and_add_vkey_signature(prvSigningKey)\n\t\t\treturn tx.to_hex()\n\t\t} catch (error) {\n\t\t\tthrow new Error(`[AppWallet] An error occurred during signTx: ${error}.`)\n\t\t}\n\t}\n\n\tstatic brew(strength = 256): string[] {\n\t\treturn EmbeddedWallet.generateMnemonic(strength)\n\t}\n\n\tasync signData(address: string, payload: string, accountIndex = 0, keyIndex = 0): Promise<DataSignature> {\n\t\ttry {\n\t\t\t// todo tw\n\t\t\t// this._wallet.signData(address, payload, accountIndex, keyIndex)\n\t\t\tconsole.log('>>> signData', address, payload, accountIndex, keyIndex)\n\t\t\treturn new Promise(() => {\n\t\t\t\tthrow new Error(`[AppWallet] signData() is not implemented.`)\n\t\t\t})\n\t\t} catch (error) {\n\t\t\tthrow new Error(`[AppWallet] An error occurred during signData: ${error}.`)\n\t\t}\n\t}\n\n\tsignTxs(unsignedTxs: string[], partialSign?: boolean): Promise<string[]> {\n\t\tconsole.log('>>> signTxs', unsignedTxs, partialSign)\n\t\tthrow new Error(`[AppWallet] signTxs() is not implemented.`)\n\t}\n\n\tsubmitTx(tx: string): Promise<string> {\n\t\tconsole.log('>>> submitTx', tx)\n\t\tthrow new Error(`[AppWallet] submitTx() is not implemented.`)\n\t}\n}\n","export const DEFAULT_V1_COST_MODEL_LIST = [\n\t100788, 420, 1, 1, 1000, 173, 0, 1, 1000, 59957, 4, 1, 11183, 32, 201305, 8356, 4, 16000, 100, 16000, 100, 16000, 100,\n\t16000, 100, 16000, 100, 16000, 100, 100, 100, 16000, 100, 94375, 32, 132994, 32, 61462, 4, 72010, 178, 0, 1, 22151, 32,\n\t91189, 769, 4, 2, 85848, 228465, 122, 0, 1, 1, 1000, 42921, 4, 2, 24548, 29498, 38, 1, 898148, 27279, 1, 51775, 558, 1,\n\t39184, 1000, 60594, 1, 141895, 32, 83150, 32, 15299, 32, 76049, 1, 13169, 4, 22100, 10, 28999, 74, 1, 28999, 74, 1,\n\t43285, 552, 1, 44749, 541, 1, 33852, 32, 68246, 32, 72362, 32, 7243, 32, 7391, 32, 11546, 32, 85848, 228465, 122, 0, 1,\n\t1, 90434, 519, 0, 1, 74433, 32, 85848, 228465, 122, 0, 1, 1, 85848, 228465, 122, 0, 1, 1, 270652, 22588, 4, 1457325,\n\t64566, 4, 20467, 1, 4, 0, 141992, 32, 100788, 420, 1, 1, 81663, 32, 59498, 32, 20142, 32, 24588, 32, 20744, 32, 25933,\n\t32, 24623, 32, 53384111, 14333, 10\n]\n\nexport const DEFAULT_V2_COST_MODEL_LIST = [\n\t100788, 420, 1, 1, 1000, 173, 0, 1, 1000, 59957, 4, 1, 11183, 32, 201305, 8356, 4, 16000, 100, 16000, 100, 16000, 100,\n\t16000, 100, 16000, 100, 16000, 100, 100, 100, 16000, 100, 94375, 32, 132994, 32, 61462, 4, 72010, 178, 0, 1, 22151, 32,\n\t91189, 769, 4, 2, 85848, 228465, 122, 0, 1, 1, 1000, 42921, 4, 2, 24548, 29498, 38, 1, 898148, 27279, 1, 51775, 558, 1,\n\t39184, 1000, 60594, 1, 141895, 32, 83150, 32, 15299, 32, 76049, 1, 13169, 4, 22100, 10, 28999, 74, 1, 28999, 74, 1,\n\t43285, 552, 1, 44749, 541, 1, 33852, 32, 68246, 32, 72362, 32, 7243, 32, 7391, 32, 11546, 32, 85848, 228465, 122, 0, 1,\n\t1, 90434, 519, 0, 1, 74433, 32, 85848, 228465, 122, 0, 1, 1, 85848, 228465, 122, 0, 1, 1, 955506, 213312, 0, 2, 270652,\n\t22588, 4, 1457325, 64566, 4, 20467, 1, 4, 0, 141992, 32, 100788, 420, 1, 1, 81663, 32, 59498, 32, 20142, 32, 24588, 32,\n\t20744, 32, 25933, 32, 24623, 32, 43053543, 10, 53384111, 14333, 10, 43574283, 26308, 10\n]\n\nexport const DEFAULT_V3_COST_MODEL_LIST = [\n\t100788, 420, 1, 1, 1000, 173, 0, 1, 1000, 59957, 4, 1, 11183, 32, 201305, 8356, 4, 16000, 100, 16000, 100, 16000, 100,\n\t16000, 100, 16000, 100, 16000, 100, 100, 100, 16000, 100, 94375, 32, 132994, 32, 61462, 4, 72010, 178, 0, 1, 22151, 32,\n\t91189, 769, 4, 2, 85848, 123203, 7305, -900, 1716, 549, 57, 85848, 0, 1, 1, 1000, 42921, 4, 2, 24548, 29498, 38, 1,\n\t898148, 27279, 1, 51775, 558, 1, 39184, 1000, 60594, 1, 141895, 32, 83150, 32, 15299, 32, 76049, 1, 13169, 4, 22100,\n\t10, 28999, 74, 1, 28999, 74, 1, 43285, 552, 1, 44749, 541, 1, 33852, 32, 68246, 32, 72362, 32, 7243, 32, 7391, 32,\n\t11546, 32, 85848, 123203, 7305, -900, 1716, 549, 57, 85848, 0, 1, 90434, 519, 0, 1, 74433, 32, 85848, 123203, 7305,\n\t-900, 1716, 549, 57, 85848, 0, 1, 1, 85848, 123203, 7305, -900, 1716, 549, 57, 85848, 0, 1, 955506, 213312, 0, 2,\n\t270652, 22588, 4, 1457325, 64566, 4, 20467, 1, 4, 0, 141992, 32, 100788, 420, 1, 1, 81663, 32, 59498, 32, 20142, 32,\n\t24588, 32, 20744, 32, 25933, 32, 24623, 32, 43053543, 10, 53384111, 14333, 10, 43574283, 26308, 10, 16000, 100, 16000,\n\t100, 962335, 18, 2780678, 6, 442008, 1, 52538055, 3756, 18, 267929, 18, 76433006, 8868, 18, 52948122, 18, 1995836, 36,\n\t3227919, 12, 901022, 1, 166917843, 4307, 36, 284546, 36, 158221314, 26549, 36, 74698472, 36, 333849714, 1, 254006273,\n\t72, 2174038, 72, 2261318, 64571, 4, 207616, 8310, 4, 1293828, 28716, 63, 0, 1, 1006041, 43623, 251, 0, 1, 100181, 726,\n\t719, 0, 1, 100181, 726, 719, 0, 1, 100181, 726, 719, 0, 1, 107878, 680, 0, 1, 95336, 1, 281145, 18848, 0, 1, 180194,\n\t159, 1, 1, 158519, 8942, 0, 1, 159378, 8813, 0, 1, 107490, 3298, 1, 106057, 655, 1, 1964219, 24520, 3\n]\n","import { CardanoWASM } from '@hydrawallet-sdk/cardano-wasm'\n\ntype NetworkId = number\n\nexport const PLACEHOLDER_ADDRESS: Record<NetworkId, string> = {\n\t[CardanoWASM.NetworkInfo.mainnet().network_id()]:\n\t\t'addr1qrsx72hrv8ens90hwkezg7ysyhwvcjmyzdveyf88ppq7a0lwu7gv0wuuf9lhzm7wclvj5ntgcfa53j0rqxmu237x20xspeqa7n',\n\t[CardanoWASM.NetworkInfo.testnet_preprod().network_id()]:\n\t\t'addr_test1qrsx72hrv8ens90hwkezg7ysyhwvcjmyzdveyf88ppq7a0lwu7gv0wuuf9lhzm7wclvj5ntgcfa53j0rqxmu237x20xsne56q3',\n\t[CardanoWASM.NetworkInfo.testnet_preview().network_id()]:\n\t\t'addr_test1qruhen60uwzpwnnr7gjs50z2v8u9zyfw6zunet4k42zrpr54mrlv55f93rs6j48wt29w90hlxt4rvpvshe55k5r9mpvqjv2wt4'\n}\n","import type { Protocol } from '../types/protocol'\n\nexport const DEFAULT_PROTOCOL_PARAMETERS: Protocol = {\n epoch: 0,\n coinsPerUtxoSize: 4310,\n priceMem: 0.0577,\n priceStep: 0.0000721,\n minFeeA: 44,\n minFeeB: 155381,\n keyDeposit: 2000000,\n maxTxSize: 16384,\n maxValSize: 5000,\n poolDeposit: 500000000,\n maxCollateralInputs: 3,\n decentralisation: 0,\n maxBlockSize: 98304,\n collateralPercent: 150,\n maxBlockHeaderSize: 1100,\n minPoolCost: '340000000',\n maxTxExMem: '16000000',\n maxTxExSteps: '10000000000',\n maxBlockExMem: '80000000',\n maxBlockExSteps: '40000000000',\n minFeeRefScriptCostPerByte: 15\n}\n\nexport const DREP_DEPOSIT = '500000000'\n\nexport const resolveTxFees = (\n txSize: number,\n minFeeA = DEFAULT_PROTOCOL_PARAMETERS.minFeeA,\n minFeeB = DEFAULT_PROTOCOL_PARAMETERS.minFeeB\n) => {\n const fees = BigInt(minFeeA) * BigInt(txSize) + BigInt(minFeeB)\n\n return fees.toString()\n}\n","export const LANGUAGE_VERSIONS: Record<string, 'V1' | 'V2' | 'V3'> = {\n\tV1: 'V1',\n\tV2: 'V2',\n\tV3: 'V3'\n}\nexport const HARDENED_KEY_START = 0x80000000\n\nexport * from './chain'\nexport * from './cost-models'\nexport * from './placeholder'\nexport * from './protocol-parameters'\n","export type Asset = {\n\tunit: Unit\n\tquantity: Quantity\n}\n\nexport type Unit = string\n\nexport type Quantity = string\n\nexport const mergeAssets = (assets: Asset[]): Asset[] => {\n\tconst merged: Asset[] = []\n\tassets.forEach(asset => {\n\t\tconst existing = merged.find(a => a.unit === asset.unit)\n\t\tif (existing) {\n\t\t\texisting.quantity = (BigInt(existing.quantity) + BigInt(asset.quantity)).toString()\n\t\t} else {\n\t\t\tmerged.push(asset)\n\t\t}\n\t})\n\treturn merged\n}\n","import type { Data } from './data'\n\nexport type RoyaltiesStandard = {\n\trate: string\n\taddress: string\n}\n\nexport const royaltiesStandardKeys = ['rate', 'address']\n\ntype MetadataStandard = any\n\nexport const metadataStandardKeys = [\n\t'name',\n\t'image',\n\t'mediaType',\n\t'description',\n\t'instagram',\n\t'twitter',\n\t'discord',\n\t'website'\n]\n\nexport type Files = {\n\tfiles?: [\n\t\t{\n\t\t\tname: string\n\t\t\tsrc: `${string}://${string}`\n\t\t\tmediaType: `${string}/${string}`\n\t\t}\n\t]\n}\n\nexport type AssetMetadata = FungibleAssetMetadata | NonFungibleAssetMetadata | RoyaltiesStandard\n\nexport type FungibleAssetMetadata = MetadataStandard & {\n\tticker: string\n\tdecimals: number\n\tversion: `${number}.${number}`\n}\n\nexport const fungibleAssetKeys = ['ticker', 'decimals']\n\nexport type NonFungibleAssetMetadata = AudioAssetMetadata | ImageAssetMetadata | SmartAssetMetadata | VideoAssetMetadata\n\ntype AudioAssetMetadata = MetadataStandard & Files\n\nexport type ImageAssetMetadata = MetadataStandard &\n\tFiles & {\n\t\tartists?: [\n\t\t\t{\n\t\t\t\tname: string\n\t\t\t\ttwitter?: `https://twitter.com/${string}`\n\t\t\t}\n\t\t]\n\t\tattributes?: {\n\t\t\t[key: string]: string\n\t\t}\n\t\ttraits?: string[]\n\t}\n\ntype SmartAssetMetadata = MetadataStandard & Files\n\ntype VideoAssetMetadata = MetadataStandard & Files\n\n/**\n * Transform the metadata into the format needed in CIP68 inline datum (in Mesh Data type)\n * @param metadata The metadata body without outer wrapper of policy id & token name\n * @returns The metadata in Mesh Data type, ready to be attached as inline datum\n */\nexport const metadataToCip68 = (metadata: any): Data => {\n\tswitch (typeof metadata) {\n\t\tcase 'object':\n\t\t\tif (metadata instanceof Array) {\n\t\t\t\treturn metadata.map(item => metadataToCip68(item))\n\t\t\t}\n\t\t\tconst metadataMap = new Map()\n\t\t\tconst keys = Object.keys(metadata)\n\t\t\tkeys.forEach(key => {\n\t\t\t\tmetadataMap.set(key, metadataToCip68(metadata[key]))\n\t\t\t})\n\t\t\treturn {\n\t\t\t\talternative: 0,\n\t\t\t\tfields: [metadataMap, 1]\n\t\t\t}\n\n\t\tdefault:\n\t\t\treturn metadata\n\t}\n}\n","import { DEFAULT_PROTOCOL_PARAMETERS } from '../constants/protocol-parameters'\r\n\r\nexport type Protocol = {\r\n\tepoch: number\r\n\tminFeeA: number\r\n\tminFeeB: number\r\n\tmaxBlockSize: number\r\n\tmaxTxSize: number\r\n\tmaxBlockHeaderSize: number\r\n\tkeyDeposit: number\r\n\tpoolDeposit: number\r\n\tdecentralisation: number\r\n\tminPoolCost: string\r\n\tpriceMem: number\r\n\tpriceStep: number\r\n\tmaxTxExMem: string\r\n\tmaxTxExSteps: string\r\n\tmaxBlockExMem: string\r\n\tmaxBlockExSteps: string\r\n\tmaxValSize: number\r\n\tcollateralPercent: number\r\n\tmaxCollateralInputs: number\r\n\tcoinsPerUtxoSize: number\r\n\tminFeeRefScriptCostPerByte: number\r\n}\r\n\r\nexport const castProtocol = (data: Partial<Record<keyof Protocol, any>>): Protocol => {\r\n\tconst result: Partial<Record<keyof Protocol, number | string>> = {}\r\n\r\n\tfor (const rawKey in DEFAULT_PROTOCOL_PARAMETERS) {\r\n\t\tconst key = rawKey as keyof Protocol\r\n\t\tconst defaultValue = DEFAULT_PROTOCOL_PARAMETERS[key]\r\n\t\tconst value = data[key]\r\n\t\tif (typeof defaultValue === 'number') {\r\n\t\t\tresult[key] = !value && value !== 0 ? defaultValue : Number(value)\r\n\t\t} else if (typeof defaultValue === 'string') {\r\n\t\t\tresult[key] = !value && value !== '' ? defaultValue : value.toString()\r\n\t\t}\r\n\t}\r\n\r\n\treturn result as Protocol\r\n}\r\n","export const serializeAssetUnit = (policyId: string, assetName: string): string => {\n\treturn policyId + assetName\n}\n","import { CardanoWASM } from '@hydrawallet-sdk/cardano-wasm'\nimport { Asset, TxHash, UTxO, UTxOObject, UTxOObjectValue } from '../../types/cardano'\nimport { deserializeAssetUnit } from './deserializer'\n\nexport const convertUTxOToUTxOObject = (utxos: UTxO[]): UTxOObject => {\n\treturn utxos.reduce((acc, cur) => {\n\t\tacc[`${cur.input.txHash}#${cur.input.outputIndex}` as TxHash] = {\n\t\t\taddress: cur.output.address,\n\t\t\tdatum: cur.output.datum ? cur.output.datum.to_hex() : null,\n\t\t\tdatumhash: cur.output.datumHash || null,\n\t\t\tinlineDatum: cur.output.inlineDatum\n\t\t\t\t? cur.output.inlineDatum.to_json(CardanoWASM.PlutusDatumSchema.DetailedSchema)\n\t\t\t\t: null,\n\t\t\tinlineDatumRaw: cur.output.inlineDatum ? cur.output.inlineDatum.to_hex() : null,\n\n\t\t\t// TODO: update it if using scriptRef\n\t\t\treferenceScript: null,\n\t\t\tvalue: cur.output.amount.reduce(\n\t\t\t\t(acc, cur) => {\n\t\t\t\t\tif (cur.unit === 'lovelace') {\n\t\t\t\t\t\tacc.lovelace = Number(cur.quantity)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst { policyId, assetName } = deserializeAssetUnit(cur.unit)\n\t\t\t\t\t\t// @ts-ignore\n\t\t\t\t\t\tif (!acc[policyId]) {\n\t\t\t\t\t\t\t// @ts-ignore\n\t\t\t\t\t\t\tacc[policyId] = {}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// @ts-ignore\n\t\t\t\t\t\tacc[policyId][assetName] = Number(cur.quantity)\n\t\t\t\t\t}\n\t\t\t\t\treturn acc\n\t\t\t\t},\n\t\t\t\t{} as UTxOObjectValue['value']\n\t\t\t)\n\t\t}\n\t\treturn acc\n\t}, {} as UTxOObject)\n}\n\nexport const convertUTxOObjectToUTxO = (utxoObject: UTxOObject): UTxO[] => {\n\treturn Object.keys(utxoObject).map(txHash => {\n\t\tconst [txId, txIndex] = txHash.split('#')\n\t\tconst outputIndex = Number(txIndex)\n\t\tconst utxo = utxoObject[txHash as TxHash]\n\t\tconst amount: Asset[] = [{ unit: 'lovelace', quantity: String(utxo.value.lovelace) }]\n\t\tfor (const [policyId, assets] of Object.entries(utxo.value)) {\n\t\t\tfor (const [assetName, quantity] of Object.entries(assets)) {\n\t\t\t\tamount.push({\n\t\t\t\t\tunit: `${policyId}${assetName}`,\n\t\t\t\t\tquantity: String(quantity)\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\tinput: {\n\t\t\t\toutputIndex,\n\t\t\t\ttxHash: txId\n\t\t\t},\n\t\t\toutput: {\n\t\t\t\taddress: utxo.address,\n\t\t\t\tamount,\n\t\t\t\tdatum: undefined,\n\t\t\t\tdatumHash: utxo.datumhash,\n\t\t\t\tinlineDatum: undefined,\n\t\t\t\tscriptRef: undefined,\n\t\t\t\tscriptHash: undefined\n\t\t\t}\n\t\t}\n\t})\n}\n"],"mappings":"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","names":["CardanoWASM","CardanoWASM","CardanoWASM","Purpose","CoinTypes","ChainDerivation","CardanoWASM","CardanoWASM","CardanoWASM","CardanoWASM","CardanoWASM","CardanoWASM","acc","cur"]}
1
+ {"version":3,"sources":["../src/embedded.ts","../src/utils/cardano-wasm/build-keys.ts","../src/constants/chain.ts","../src/utils/cardano-wasm/resolver.ts","../src/utils/parser.ts","../src/utils/cardano-wasm/deserializer.ts","../src/wallet.ts","../src/constants/cost-models.ts","../src/constants/placeholder.ts","../src/constants/protocol-parameters.ts","../src/constants/index.ts","../src/types/cardano/asset.ts","../src/types/cardano/asset-metadata.ts","../src/types/protocol.ts","../src/utils/cardano-wasm/serializer.ts","../src/utils/cardano-wasm/converter.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-extraneous-class */\nimport * as BaseEncoding from '@scure/base'\nimport { generateMnemonic, mnemonicToEntropy } from 'bip39'\nimport { CardanoWASM } from '@hydrawallet-sdk/cardano-wasm'\nimport {\n\tbuildBaseAddress,\n\tbuildEnterpriseAddress,\n\tbuildKeys,\n\tbuildRewardAddress,\n\tstripExtendedKey\n} from './utils/cardano-wasm/build-keys'\nimport { resolveTxHash } from './utils/cardano-wasm/resolver'\nimport { toBytes } from './utils/parser'\n\nexport class WalletStaticMethods {\n\tstatic privateKeyBech32ToPrivateKeyHex(_bech32: string): string {\n\t\tconst bech32DecodedBytes = BaseEncoding.bech32.decodeToBytes(_bech32).bytes\n\t\tconst bip32PrivateKey = CardanoWASM.Bip32PrivateKey.from_bytes(bech32DecodedBytes)\n\t\treturn bip32PrivateKey.to_hex()\n\t}\n\n\tstatic mnemonicToPrivateKeyHex(words: string[], password = ''): string {\n\t\tconst entropy = mnemonicToEntropy(words.join(' '))\n\t\tconst bip32PrivateKey = CardanoWASM.Bip32PrivateKey.from_bip39_entropy(toBytes(entropy), toBytes(password))\n\t\treturn bip32PrivateKey.to_hex()\n\t}\n\n\tstatic privateKeyHexToBech32(privateKeyHex: string) {\n\t\tconst bip32PrivateKey = CardanoWASM.Bip32PrivateKey.from_hex(privateKeyHex)\n\t\treturn bip32PrivateKey.to_bech32()\n\t}\n\n\tstatic signingKeyToHexes(paymentKey: string, stakeKey: string): [string, string] {\n\t\treturn [\n\t\t\tpaymentKey.startsWith('5820') ? paymentKey.slice(4) : paymentKey,\n\t\t\tstakeKey.startsWith('5820') ? stakeKey.slice(4) : stakeKey\n\t\t]\n\t}\n\n\tstatic bip32BytesToPrivateKeyHex(bip32Bytes: Uint8Array): string {\n\t\tconst bip32PrivateKey = CardanoWASM.Bip32PrivateKey.from_bytes(bip32Bytes)\n\t\treturn bip32PrivateKey.to_hex()\n\t}\n\n\tstatic getAddresses(\n\t\tpaymentKey: CardanoWASM.Bip32PrivateKey,\n\t\tstakingKey: CardanoWASM.Bip32PrivateKey,\n\t\tnetworkId = 0\n\t): {\n\t\tbaseAddress: CardanoWASM.Address\n\t\tenterpriseAddress: CardanoWASM.Address\n\t\trewardAddress: CardanoWASM.Address\n\t} {\n\t\tconst baseAddress = buildBaseAddress(\n\t\t\tnetworkId,\n\t\t\tpaymentKey.to_public().to_raw_key().hash(),\n\t\t\tstakingKey.to_public().to_raw_key().hash()\n\t\t).to_address()\n\n\t\tconst enterpriseAddress = buildEnterpriseAddress(networkId, paymentKey.to_public().to_raw_key().hash()).to_address()\n\n\t\tconst rewardAddress = buildRewardAddress(networkId, stakingKey.to_public().to_raw_key().hash()).to_address()\n\n\t\treturn {\n\t\t\tbaseAddress: baseAddress,\n\t\t\tenterpriseAddress: enterpriseAddress,\n\t\t\trewardAddress: rewardAddress\n\t\t}\n\t}\n\n\tstatic generateMnemonic(strength = 256): string[] {\n\t\tconst mnemonic = generateMnemonic(strength)\n\t\treturn mnemonic.split(' ')\n\t}\n\n\t// static getDRepKey(\n\t// dRepKey: Ed25519PrivateKey,\n\t// networkId = 0\n\t// ): {\n\t// pubDRepKey: string\n\t// dRepIDBech32: DRepID\n\t// dRepIDHash: Ed25519KeyHashHex\n\t// } {\n\t// const pubDRepKey = dRepKey.toPublic().hex().toString()\n\n\t// const dRepIDBech32 = buildDRepID(Ed25519PublicKeyHex(pubDRepKey), networkId)\n\t// const dRep = DRep.newKeyHash(dRepKey.toPublic().hash().hex())\n\t// const dRepIDHash = dRep.toKeyHash()!\n\n\t// return {\n\t// pubDRepKey,\n\t// dRepIDBech32,\n\t// dRepIDHash\n\t// }\n\t// }\n}\n\nexport type Account = {\n\tbaseAddress: CardanoWASM.Address\n\tenterpriseAddress: CardanoWASM.Address\n\trewardAddress: CardanoWASM.Address\n\tbaseAddressBech32: string\n\tenterpriseAddressBech32: string\n\trewardAddressBech32: string\n\tpaymentKey: CardanoWASM.Bip32PrivateKey\n\tstakeKey: CardanoWASM.Bip32PrivateKey\n\t/**\n\t * @description 96 bytes with extended public key\n\t */\n\textendedPaymentKeyHex: string\n\t/**\n\t * @description 96 bytes with extended public key\n\t */\n\textendedStakeKeyHex: string\n\t/**\n\t * @description 64 bytes without extended public key\n\t */\n\tpaymentKeyHex: string\n\t/**\n\t * @description 64 bytes without extended public key\n\t */\n\tstakeKeyHex: string\n\n\tpubDRepKey?: string\n\tdRepIDBech32?: ReturnType<CardanoWASM.DRep['to_bech32']>\n\tdRepIDHash?: ReturnType<CardanoWASM.DRep['to_key_hash']>\n}\n\nexport type CreateEmbeddedWalletOptions = {\n\tnetworkId: number\n\tkey: EmbeddedWalletKeyType\n}\n\nexport type EmbeddedWalletKeyType =\n\t| {\n\t\t\ttype: 'root'\n\t\t\tbech32: string\n\t }\n\t| {\n\t\t\ttype: 'cli'\n\t\t\tpayment: string\n\t\t\tstake?: string\n\t }\n\t| {\n\t\t\ttype: 'mnemonic'\n\t\t\twords: string[]\n\t }\n\t| {\n\t\t\ttype: 'bip32Bytes'\n\t\t\tbip32Bytes: Uint8Array\n\t }\n\nexport class EmbeddedWallet extends WalletStaticMethods {\n\tprivate readonly _walletSecret?: string | [string, string]\n\tprivate readonly _networkId: number\n\n\tconstructor(options: CreateEmbeddedWalletOptions) {\n\t\tsuper()\n\t\tthis._networkId = options.networkId\n\n\t\tswitch (options.key.type) {\n\t\t\tcase 'mnemonic':\n\t\t\t\tthis._walletSecret = WalletStaticMethods.mnemonicToPrivateKeyHex(options.key.words)\n\t\t\t\tbreak\n\t\t\tcase 'root':\n\t\t\t\tthis._walletSecret = WalletStaticMethods.privateKeyBech32ToPrivateKeyHex(options.key.bech32)\n\t\t\t\tbreak\n\t\t\tcase 'cli':\n\t\t\t\tthis._walletSecret = WalletStaticMethods.signingKeyToHexes(\n\t\t\t\t\toptions.key.payment,\n\t\t\t\t\toptions.key.stake ?? 'f0'.repeat(32)\n\t\t\t\t)\n\t\t\t\tbreak\n\t\t\tcase 'bip32Bytes':\n\t\t\t\tthis._walletSecret = WalletStaticMethods.bip32BytesToPrivateKeyHex(options.key.bip32Bytes)\n\t\t\t\tbreak\n\t\t}\n\t}\n\n\tgetPrivateKeyHex(): string | [string, string] {\n\t\tif (this._walletSecret == undefined) throw new Error('[EmbeddedWallet] No keys initialized')\n\t\treturn this._walletSecret\n\t}\n\n\tgetAccount(accountIndex = 0, keyIndex = 0): Account {\n\t\tif (this._walletSecret == undefined) throw new Error('[EmbeddedWallet] No keys initialized')\n\n\t\tconst { paymentKey, stakeKey } = buildKeys(this._walletSecret, accountIndex, keyIndex)\n\n\t\tconst { baseAddress, enterpriseAddress, rewardAddress } = WalletStaticMethods.getAddresses(\n\t\t\tpaymentKey,\n\t\t\tstakeKey,\n\t\t\tthis._networkId\n\t\t)\n\n\t\tconst _account: Account = {\n\t\t\tbaseAddress: baseAddress,\n\t\t\tenterpriseAddress: enterpriseAddress,\n\t\t\trewardAddress: rewardAddress,\n\n\t\t\tbaseAddressBech32: baseAddress.to_bech32(),\n\t\t\tenterpriseAddressBech32: enterpriseAddress.to_bech32(),\n\t\t\trewardAddressBech32: rewardAddress.to_bech32(),\n\n\t\t\tpaymentKey: paymentKey,\n\t\t\tstakeKey: stakeKey,\n\n\t\t\tpaymentKeyHex: stripExtendedKey(paymentKey.to_hex()),\n\t\t\tstakeKeyHex: stripExtendedKey(stakeKey.to_hex()),\n\t\t\textendedPaymentKeyHex: paymentKey.to_hex(),\n\t\t\textendedStakeKeyHex: stakeKey.to_hex()\n\t\t}\n\n\t\t// TODO: fix it\n\t\t// if (dRepKey) {\n\t\t// const { pubDRepKey, dRepIDBech32, dRepIDHash } = WalletStaticMethods.getDRepKey(dRepKey, this._networkId)\n\t\t// _account.pubDRepKey = pubDRepKey\n\t\t// _account.dRepIDBech32 = dRepIDBech32\n\t\t// _account.dRepIDHash = dRepIDHash\n\t\t// }\n\n\t\treturn _account\n\t}\n\n\t/**\n\t * Get wallet network ID.\n\t *\n\t * @returns network ID\n\t */\n\tgetNetworkId(): number {\n\t\treturn this._networkId\n\t}\n\n\t/**\n\t * This endpoints sign the provided transaction (unsignedTx) with the private key of the owner.\n\t *\n\t * @param unsignedTx - a transaction in CBOR\n\t * @param accountIndex account index (default: 0)\n\t * @param keyIndex key index (default: 0)\n\t * @returns VkeyWitness\n\t */\n\tsignTx(unsignedTx: string, accountIndex = 0, keyIndex = 0): CardanoWASM.Vkeywitness {\n\t\ttry {\n\t\t\tconst txHashHex = resolveTxHash(unsignedTx)\n\t\t\tconst { paymentKey } = this.getAccount(accountIndex, keyIndex)\n\t\t\tconst privateSigningKey = paymentKey.to_raw_key()\n\t\t\tconst vkeyWitness = CardanoWASM.make_vkey_witness(CardanoWASM.TransactionHash.from_hex(txHashHex), privateSigningKey)\n\t\t\treturn vkeyWitness\n\t\t} catch (error) {\n\t\t\tthrow new Error(`[EmbeddedWallet] An error occurred during signTx: ${error}.`)\n\t\t}\n\t}\n\n\t// /**\n\t// * This endpoint utilizes the [CIP-8 - Message Signing](https://cips.cardano.org/cips/cip8/) to sign arbitrary data, to verify the data was signed by the owner of the private key.\n\t// *\n\t// * @param address - bech32 address to sign the data with\n\t// * @param payload - the data to be signed\n\t// * @param accountIndex account index (default: 0)\n\t// * @returns a signature\n\t// */\n\t// signData(address: string, payload: string, accountIndex = 0, keyIndex = 0): DataSignature {\n\t// try {\n\t// const { baseAddress, enterpriseAddress, rewardAddress, paymentKey } = this.getAccount(accountIndex, keyIndex)\n\n\t// const foundAddress = [baseAddress, enterpriseAddress, rewardAddress].find(a => a.toBech32() === address)\n\n\t// if (foundAddress === undefined)\n\t// throw new Error(`[EmbeddedWallet] Address: ${address} doesn't belong to this account.`)\n\n\t// // todo tw\n\t// return signData(payload, {\n\t// address: Address.fromBech32(address),\n\t// key: paymentKey\n\t// })\n\t// } catch (error) {\n\t// throw new Error(`[EmbeddedWallet] An error occurred during signData: ${error}.`)\n\t// }\n\t// }\n}\n","import { CardanoWASM } from '@hydrawallet-sdk/cardano-wasm'\nimport { NETWORK_ID } from '../../constants/chain'\n\nexport const buildBaseAddress = (\n\tnetworkId: number,\n\tpaymentKeyHash: CardanoWASM.Ed25519KeyHash,\n\tstakeKeyHash: CardanoWASM.Ed25519KeyHash\n): CardanoWASM.BaseAddress => {\n\tconst paymentCredential = CardanoWASM.Credential.from_keyhash(paymentKeyHash)\n\tconst stakeCredential = CardanoWASM.Credential.from_keyhash(stakeKeyHash)\n\treturn CardanoWASM.BaseAddress.new(networkId, paymentCredential, stakeCredential)\n}\n\nexport const buildEnterpriseAddress = (\n\tnetworkId: number,\n\tpaymentKeyHash: CardanoWASM.Ed25519KeyHash\n): CardanoWASM.EnterpriseAddress => {\n\t// return EnterpriseAddress.fromCredentials(networkId, {\n\t// hash: paymentKeyHash,\n\t// type: CredentialType.KeyHash\n\t// })\n\tconst paymentCredential = CardanoWASM.Credential.from_keyhash(paymentKeyHash)\n\treturn CardanoWASM.EnterpriseAddress.new(networkId, paymentCredential)\n}\n\nexport const buildRewardAddress = (\n\tnetworkId: number,\n\tstakeKeyHash: CardanoWASM.Ed25519KeyHash\n): CardanoWASM.RewardAddress => {\n\t// const cred = {\n\t// type: CredentialType.KeyHash,\n\t// hash: stakeKeyHash\n\t// }\n\t// return RewardAddress.fromCredentials(networkId, cred)\n\tconst stakeCredential = CardanoWASM.Credential.from_keyhash(stakeKeyHash)\n\treturn CardanoWASM.RewardAddress.new(networkId, stakeCredential)\n}\n\nexport const buildDRepID = (\n\tdRepKey: CardanoWASM.Ed25519KeyHash,\n\tnetworkId: number = NETWORK_ID.MAINNET\n\t// addressType: AddressType = AddressType.EnterpriseKey\n) => {\n\t// const dRepKeyBytes = Buffer.from(dRepKey, 'hex')\n\t// const dRepIdHex = blake2b(28).update(dRepKeyBytes).digest('hex')\n\t// const paymentAddress = EnterpriseAddress.packParts({\n\t// networkId,\n\t// paymentPart: {\n\t// hash: Hash28ByteBase16(dRepIdHex),\n\t// type: CredentialType.KeyHash\n\t// },\n\t// type: addressType\n\t// })\n\t// return HexBlob.toTypedBech32<DRepID>('drep', HexBlob.fromBytes(paymentAddress))\n\n\t// CardanoWASM.DRep.new_from_credential(CardanoWASM.Credential.from_hex(dRepKey.to_hex()))\n\t// const paymentAddress = CardanoWASM.EnterpriseAddress.new(networkId, CardanoWASM.Credential.from_hex(dRepKey.to_hex()))\n\tconsole.log('buildDRepID', dRepKey.to_hex(), networkId)\n\treturn null\n}\n\n// Purpose derivation (See BIP43)\nexport enum Purpose {\n\tCIP1852 = 1852 // see CIP 1852\n}\n\n// Cardano coin type (SLIP 44)\nexport enum CoinTypes {\n\tCARDANO = 1815\n}\n\nexport enum ChainDerivation {\n\tEXTERNAL = 0, // from BIP44\n\tINTERNAL = 1, // from BIP44\n\tCHIMERIC = 2, // from CIP1852\n\tDREP = 3\n}\n\nfunction harden(num: number): number {\n\treturn 0x80000000 + num\n}\n\nexport const buildKeys = (\n\tprivateKeyHex: string | [string, string],\n\taccountIndex: number,\n\tkeyIndex = 0\n): {\n\taccountKey: CardanoWASM.Bip32PrivateKey\n\tpaymentKey: CardanoWASM.Bip32PrivateKey\n\tstakeKey: CardanoWASM.Bip32PrivateKey\n\tdRepKey?: CardanoWASM.Bip32PrivateKey\n} => {\n\tif (Array.isArray(privateKeyHex)) {\n\t\treturn {\n\t\t\t// TODO: need to verify this\n\t\t\taccountKey: CardanoWASM.Bip32PrivateKey.from_hex(privateKeyHex[0]),\n\n\t\t\tpaymentKey: CardanoWASM.Bip32PrivateKey.from_hex(privateKeyHex[0]),\n\t\t\tstakeKey: CardanoWASM.Bip32PrivateKey.from_hex(privateKeyHex[1])\n\t\t}\n\t}\n\n\t/**\n\t * @description rootKey\n\t */\n\tconst privateKey = CardanoWASM.Bip32PrivateKey.from_hex(privateKeyHex)\n\n\t// hardened derivation\n\tconst accountKey = privateKey\n\t\t.derive(harden(Purpose.CIP1852)) // 1852\n\t\t.derive(harden(CoinTypes.CARDANO)) // 1815\n\t\t.derive(harden(accountIndex)) // account #0\n\n\tconst paymentKey = accountKey\n\t\t.derive(ChainDerivation.EXTERNAL) // external chain (0)\n\t\t.derive(keyIndex) // external chain, payment key index\n\tconst stakeKey = accountKey\n\t\t.derive(ChainDerivation.CHIMERIC) // chimeric derivation (2)\n\t\t.derive(keyIndex) // staking key, index 0\n\tconst dRepKey = accountKey\n\t\t.derive(ChainDerivation.DREP) // dRep key, index 0\n\t\t.derive(keyIndex) // dRep Keys, index\n\n\treturn { accountKey, paymentKey, stakeKey, dRepKey }\n}\n\n/**\n * \n * @param scalar \n * @returns \n * @description\n * `clampScalar` làm nhiệm vụ clamp (chuẩn hóa) một scalar (32 byte private key) theo quy tắc Ed25519:\n * \n Đảm bảo private scalar nằm trong một tập hợp giá trị hợp lệ theo quy chuẩn EdDSA (RFC 8032 / Ed25519).\n Vì Ed25519 yêu cầu scalar phải:\n - Có 3 bit thấp nhất của byte đầu tiên bằng 0\n - Có 2 bit cao nhất của byte cuối cùng là 01\n * \n Việc này giúp khóa có tính chất cryptographically secure hơn và tránh scalar yếu.\n */\nexport const clampScalar = (scalar: Buffer): Buffer => {\n\tif (scalar[0] !== undefined) {\n\t\tscalar[0] &= 0b1111_1000\n\t}\n\tif (scalar[31] !== undefined) {\n\t\tscalar[31] &= 0b0001_1111\n\t\tscalar[31] |= 0b0100_0000\n\t}\n\treturn scalar\n}\n\n/**\n *\n * @param extendedKeyHex\n * @returns\n * @description\n * `stripExtendedKey` remove public key (32 byte) of extended key (96 byte) to create private key (64 byte)\n */\nexport const stripExtendedKey = (extendedKeyHex: string): string => {\n\tif (extendedKeyHex.length !== 192) {\n\t\tthrow new Error('Extended key must be 192 hex characters (96 bytes)')\n\t}\n\t// private key (32 byte) + chain code (32 byte) = 64 byte = 128 hex\n\tconst strippedKeyHex = extendedKeyHex.slice(0, 128)\n\treturn strippedKeyHex\n}\n","import { CardanoWASM } from '@hydrawallet-sdk/cardano-wasm'\n\nexport const NETWORK_ID = {\n\tMAINNET: CardanoWASM.NetworkInfo.mainnet().network_id(),\n\tPREPROD: CardanoWASM.NetworkInfo.testnet_preprod().network_id(),\n\tPREVIEW: CardanoWASM.NetworkInfo.testnet_preview().network_id()\n}\nexport const NETWORK_MAGIC = {\n\tMAINNET: CardanoWASM.NetworkInfo.mainnet().protocol_magic(),\n\tPREPROD: CardanoWASM.NetworkInfo.testnet_preprod().protocol_magic(),\n\tPREVIEW: CardanoWASM.NetworkInfo.testnet_preview().protocol_magic()\n}\n","import { CardanoWASM } from '@hydrawallet-sdk/cardano-wasm'\n\n/**\n *\n * @param cborHex Transaction CBOR hex\n * @returns Transaction Hash in Hex\n */\nexport const resolveTxHash = (cborHex: string) => {\n\treturn CardanoWASM.FixedTransaction.from_hex(cborHex).transaction_hash().to_hex()\n}\n\nexport const resolveTxBodyHash = (txBody: CardanoWASM.TransactionBody) => {\n\tconst tx = CardanoWASM.FixedTransaction.new_from_body_bytes(txBody.to_bytes())\n\treturn tx.transaction_hash()\n}\n","/**\n * Converting bytes to hex string\n * @param bytes The bytes to be converted\n * @returns The hex string\n */\nexport const bytesToHex = (bytes: ArrayBuffer | Uint8Array | Buffer): string => {\n if (Buffer.isBuffer(bytes)) {\n return bytes.toString('hex')\n }\n if (bytes instanceof ArrayBuffer) {\n return Buffer.from(bytes).toString('hex')\n }\n // bytes is Uint8Array\n return Buffer.from(bytes).toString('hex')\n}\n\n/**\n * Converting hex string to bytes\n * @param hex The hex string to be converted\n * @returns The bytes\n */\nexport const hexToBytes = (hex: string) => Buffer.from(hex, 'hex')\n\n/**\n * Converting utf8 string to hex string\n * @param str The utf8 string to be converted\n * @returns The hex string\n */\nexport const stringToHex = (str: string) => Buffer.from(str, 'utf8').toString('hex')\n\n/**\n * Converting hex string to utf8 string\n * @param hex The hex string to be converted\n * @returns The utf8 string\n */\nexport const hexToString = (hex: string) => Buffer.from(hex, 'hex').toString('utf8')\n\n/**\n * Converting either hex string or utf8 string to bytes\n * @param hex The hex or utf8 string to be converted\n * @returns The bytes\n */\nexport const toBytes = (hex: string): Uint8Array => {\n if (hex.length % 2 === 0 && /^[0-9A-F]*$/i.test(hex)) return Buffer.from(hex, 'hex')\n\n return Buffer.from(hex, 'utf-8')\n}\n\n/**\n * Converting utf8 string to hex string\n * @param utf8 The utf8 string to be converted\n * @returns The hex string\n */\nexport const fromUTF8 = (utf8: string) => {\n return Buffer.from(utf8, 'utf-8').toString('hex')\n}\n\n/**\n * Converting hex string to utf8 string\n * @param hex The hex string to be converted\n * @returns The utf8 string\n */\nexport const toUTF8 = (hex: string) => Buffer.from(hex, 'hex').toString('utf-8')\n","import { CardanoWASM } from '@hydrawallet-sdk/cardano-wasm'\n\nexport const deserializeTx = (txCborHex: string): CardanoWASM.FixedTransaction => {\n\treturn CardanoWASM.FixedTransaction.from_bytes(Buffer.from(txCborHex, 'hex'))\n}\n\nexport const deserializeAssetUnit = (assetUnit: string): { policyId: string; assetName: string } => {\n\tconst policyId = assetUnit.substring(0, 56)\n\tconst assetName = assetUnit.substring(56)\n\treturn { policyId, assetName }\n}\n","import { EmbeddedWallet } from './embedded'\nimport type { DataSignature } from './types/cardano'\nimport { CreateAppWalletOptions } from './types/wallet'\nimport type { IFetcher } from './types/wallet/fetcher'\nimport type { ISigner } from './types/wallet/signer'\nimport type { ISubmitter } from './types/wallet/submitter'\nimport { deserializeTx } from './utils/cardano-wasm/deserializer'\n\nexport class AppWallet implements ISigner, ISubmitter {\n\tprivate readonly _submitter?: ISubmitter\n\tprivate readonly _fetcher?: IFetcher\n\tprivate readonly _wallet: EmbeddedWallet\n\n\tconstructor(options: CreateAppWalletOptions) {\n\t\tthis._fetcher = options.fetcher\n\t\tthis._submitter = options.submitter\n\n\t\tswitch (options.key.type) {\n\t\t\tcase 'mnemonic':\n\t\t\t\tthis._wallet = new EmbeddedWallet({\n\t\t\t\t\tnetworkId: options.networkId,\n\t\t\t\t\tkey: {\n\t\t\t\t\t\ttype: 'mnemonic',\n\t\t\t\t\t\twords: options.key.words\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\tbreak\n\t\t\tcase 'root':\n\t\t\t\tthis._wallet = new EmbeddedWallet({\n\t\t\t\t\tnetworkId: options.networkId,\n\t\t\t\t\tkey: {\n\t\t\t\t\t\ttype: 'root',\n\t\t\t\t\t\tbech32: options.key.bech32\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\tbreak\n\t\t\tcase 'cli':\n\t\t\t\tthis._wallet = new EmbeddedWallet({\n\t\t\t\t\tnetworkId: options.networkId,\n\t\t\t\t\tkey: {\n\t\t\t\t\t\ttype: 'cli',\n\t\t\t\t\t\tpayment: options.key.payment,\n\t\t\t\t\t\tstake: options.key.stake\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t}\n\t}\n\n\tgetAccount(accountIndex = 0, keyIndex = 0) {\n\t\treturn this._wallet.getAccount(accountIndex, keyIndex)\n\t}\n\n\tgetEnterpriseAddress(accountIndex = 0, keyIndex = 0): string {\n\t\tconst account = this._wallet.getAccount(accountIndex, keyIndex)\n\t\treturn account.enterpriseAddressBech32\n\t}\n\n\tgetPaymentAddress(accountIndex = 0, keyIndex = 0): string {\n\t\tconst account = this._wallet.getAccount(accountIndex, keyIndex)\n\t\treturn account.baseAddressBech32\n\t}\n\n\tgetRewardAddress(accountIndex = 0, keyIndex = 0): string {\n\t\tconst account = this._wallet.getAccount(accountIndex, keyIndex)\n\t\treturn account.rewardAddressBech32\n\t}\n\n\tgetNetworkId(): number {\n\t\treturn this._wallet.getNetworkId()\n\t}\n\n\tasync signTx(unsignedTx: string, partialSign = false, accountIndex = 0, keyIndex = 0): Promise<string> {\n\t\ttry {\n\t\t\tconst tx = deserializeTx(unsignedTx)\n\n\t\t\tif (!partialSign && tx.witness_set().vkeys() !== undefined && tx.witness_set().vkeys()?.len() !== 0)\n\t\t\t\tthrow new Error('Signatures already exist in the transaction in a non partial sign call')\n\n\t\t\tconst prvSigningKey = this._wallet.getAccount(accountIndex, keyIndex).paymentKey.to_raw_key()\n\t\t\ttx.sign_and_add_vkey_signature(prvSigningKey)\n\t\t\treturn tx.to_hex()\n\t\t} catch (error) {\n\t\t\tthrow new Error(`[AppWallet] An error occurred during signTx: ${error}.`)\n\t\t}\n\t}\n\n\tstatic brew(strength = 256): string[] {\n\t\treturn EmbeddedWallet.generateMnemonic(strength)\n\t}\n\n\tasync signData(address: string, payload: string, accountIndex = 0, keyIndex = 0): Promise<DataSignature> {\n\t\ttry {\n\t\t\t// todo tw\n\t\t\t// this._wallet.signData(address, payload, accountIndex, keyIndex)\n\t\t\tconsole.log('>>> signData', address, payload, accountIndex, keyIndex)\n\t\t\treturn new Promise(() => {\n\t\t\t\tthrow new Error(`[AppWallet] signData() is not implemented.`)\n\t\t\t})\n\t\t} catch (error) {\n\t\t\tthrow new Error(`[AppWallet] An error occurred during signData: ${error}.`)\n\t\t}\n\t}\n\n\tsignTxs(unsignedTxs: string[], partialSign?: boolean): Promise<string[]> {\n\t\tconsole.log('>>> signTxs', unsignedTxs, partialSign)\n\t\tthrow new Error(`[AppWallet] signTxs() is not implemented.`)\n\t}\n\n\tsubmitTx(tx: string): Promise<string> {\n\t\tconsole.log('>>> submitTx', tx)\n\t\tthrow new Error(`[AppWallet] submitTx() is not implemented.`)\n\t}\n}\n","export const DEFAULT_V1_COST_MODEL_LIST = [\n\t100788, 420, 1, 1, 1000, 173, 0, 1, 1000, 59957, 4, 1, 11183, 32, 201305, 8356, 4, 16000, 100, 16000, 100, 16000, 100,\n\t16000, 100, 16000, 100, 16000, 100, 100, 100, 16000, 100, 94375, 32, 132994, 32, 61462, 4, 72010, 178, 0, 1, 22151, 32,\n\t91189, 769, 4, 2, 85848, 228465, 122, 0, 1, 1, 1000, 42921, 4, 2, 24548, 29498, 38, 1, 898148, 27279, 1, 51775, 558, 1,\n\t39184, 1000, 60594, 1, 141895, 32, 83150, 32, 15299, 32, 76049, 1, 13169, 4, 22100, 10, 28999, 74, 1, 28999, 74, 1,\n\t43285, 552, 1, 44749, 541, 1, 33852, 32, 68246, 32, 72362, 32, 7243, 32, 7391, 32, 11546, 32, 85848, 228465, 122, 0, 1,\n\t1, 90434, 519, 0, 1, 74433, 32, 85848, 228465, 122, 0, 1, 1, 85848, 228465, 122, 0, 1, 1, 270652, 22588, 4, 1457325,\n\t64566, 4, 20467, 1, 4, 0, 141992, 32, 100788, 420, 1, 1, 81663, 32, 59498, 32, 20142, 32, 24588, 32, 20744, 32, 25933,\n\t32, 24623, 32, 53384111, 14333, 10\n]\n\nexport const DEFAULT_V2_COST_MODEL_LIST = [\n\t100788, 420, 1, 1, 1000, 173, 0, 1, 1000, 59957, 4, 1, 11183, 32, 201305, 8356, 4, 16000, 100, 16000, 100, 16000, 100,\n\t16000, 100, 16000, 100, 16000, 100, 100, 100, 16000, 100, 94375, 32, 132994, 32, 61462, 4, 72010, 178, 0, 1, 22151, 32,\n\t91189, 769, 4, 2, 85848, 228465, 122, 0, 1, 1, 1000, 42921, 4, 2, 24548, 29498, 38, 1, 898148, 27279, 1, 51775, 558, 1,\n\t39184, 1000, 60594, 1, 141895, 32, 83150, 32, 15299, 32, 76049, 1, 13169, 4, 22100, 10, 28999, 74, 1, 28999, 74, 1,\n\t43285, 552, 1, 44749, 541, 1, 33852, 32, 68246, 32, 72362, 32, 7243, 32, 7391, 32, 11546, 32, 85848, 228465, 122, 0, 1,\n\t1, 90434, 519, 0, 1, 74433, 32, 85848, 228465, 122, 0, 1, 1, 85848, 228465, 122, 0, 1, 1, 955506, 213312, 0, 2, 270652,\n\t22588, 4, 1457325, 64566, 4, 20467, 1, 4, 0, 141992, 32, 100788, 420, 1, 1, 81663, 32, 59498, 32, 20142, 32, 24588, 32,\n\t20744, 32, 25933, 32, 24623, 32, 43053543, 10, 53384111, 14333, 10, 43574283, 26308, 10\n]\n\nexport const DEFAULT_V3_COST_MODEL_LIST = [\n\t100788, 420, 1, 1, 1000, 173, 0, 1, 1000, 59957, 4, 1, 11183, 32, 201305, 8356, 4, 16000, 100, 16000, 100, 16000, 100,\n\t16000, 100, 16000, 100, 16000, 100, 100, 100, 16000, 100, 94375, 32, 132994, 32, 61462, 4, 72010, 178, 0, 1, 22151, 32,\n\t91189, 769, 4, 2, 85848, 123203, 7305, -900, 1716, 549, 57, 85848, 0, 1, 1, 1000, 42921, 4, 2, 24548, 29498, 38, 1,\n\t898148, 27279, 1, 51775, 558, 1, 39184, 1000, 60594, 1, 141895, 32, 83150, 32, 15299, 32, 76049, 1, 13169, 4, 22100,\n\t10, 28999, 74, 1, 28999, 74, 1, 43285, 552, 1, 44749, 541, 1, 33852, 32, 68246, 32, 72362, 32, 7243, 32, 7391, 32,\n\t11546, 32, 85848, 123203, 7305, -900, 1716, 549, 57, 85848, 0, 1, 90434, 519, 0, 1, 74433, 32, 85848, 123203, 7305,\n\t-900, 1716, 549, 57, 85848, 0, 1, 1, 85848, 123203, 7305, -900, 1716, 549, 57, 85848, 0, 1, 955506, 213312, 0, 2,\n\t270652, 22588, 4, 1457325, 64566, 4, 20467, 1, 4, 0, 141992, 32, 100788, 420, 1, 1, 81663, 32, 59498, 32, 20142, 32,\n\t24588, 32, 20744, 32, 25933, 32, 24623, 32, 43053543, 10, 53384111, 14333, 10, 43574283, 26308, 10, 16000, 100, 16000,\n\t100, 962335, 18, 2780678, 6, 442008, 1, 52538055, 3756, 18, 267929, 18, 76433006, 8868, 18, 52948122, 18, 1995836, 36,\n\t3227919, 12, 901022, 1, 166917843, 4307, 36, 284546, 36, 158221314, 26549, 36, 74698472, 36, 333849714, 1, 254006273,\n\t72, 2174038, 72, 2261318, 64571, 4, 207616, 8310, 4, 1293828, 28716, 63, 0, 1, 1006041, 43623, 251, 0, 1, 100181, 726,\n\t719, 0, 1, 100181, 726, 719, 0, 1, 100181, 726, 719, 0, 1, 107878, 680, 0, 1, 95336, 1, 281145, 18848, 0, 1, 180194,\n\t159, 1, 1, 158519, 8942, 0, 1, 159378, 8813, 0, 1, 107490, 3298, 1, 106057, 655, 1, 1964219, 24520, 3\n]\n","import { CardanoWASM } from '@hydrawallet-sdk/cardano-wasm'\n\ntype NetworkId = number\n\nexport const PLACEHOLDER_ADDRESS: Record<NetworkId, string> = {\n\t[CardanoWASM.NetworkInfo.mainnet().network_id()]:\n\t\t'addr1qrsx72hrv8ens90hwkezg7ysyhwvcjmyzdveyf88ppq7a0lwu7gv0wuuf9lhzm7wclvj5ntgcfa53j0rqxmu237x20xspeqa7n',\n\t[CardanoWASM.NetworkInfo.testnet_preprod().network_id()]:\n\t\t'addr_test1qrsx72hrv8ens90hwkezg7ysyhwvcjmyzdveyf88ppq7a0lwu7gv0wuuf9lhzm7wclvj5ntgcfa53j0rqxmu237x20xsne56q3',\n\t[CardanoWASM.NetworkInfo.testnet_preview().network_id()]:\n\t\t'addr_test1qruhen60uwzpwnnr7gjs50z2v8u9zyfw6zunet4k42zrpr54mrlv55f93rs6j48wt29w90hlxt4rvpvshe55k5r9mpvqjv2wt4'\n}\n","import type { Protocol } from '../types/protocol'\n\nexport const DEFAULT_PROTOCOL_PARAMETERS: Protocol = {\n epoch: 0,\n coinsPerUtxoSize: 4310,\n priceMem: 0.0577,\n priceStep: 0.0000721,\n minFeeA: 44,\n minFeeB: 155381,\n keyDeposit: 2000000,\n maxTxSize: 16384,\n maxValSize: 5000,\n poolDeposit: 500000000,\n maxCollateralInputs: 3,\n decentralisation: 0,\n maxBlockSize: 98304,\n collateralPercent: 150,\n maxBlockHeaderSize: 1100,\n minPoolCost: '340000000',\n maxTxExMem: '16000000',\n maxTxExSteps: '10000000000',\n maxBlockExMem: '80000000',\n maxBlockExSteps: '40000000000',\n minFeeRefScriptCostPerByte: 15\n}\n\nexport const DREP_DEPOSIT = '500000000'\n\nexport const resolveTxFees = (\n txSize: number,\n minFeeA = DEFAULT_PROTOCOL_PARAMETERS.minFeeA,\n minFeeB = DEFAULT_PROTOCOL_PARAMETERS.minFeeB\n) => {\n const fees = BigInt(minFeeA) * BigInt(txSize) + BigInt(minFeeB)\n\n return fees.toString()\n}\n","export const LANGUAGE_VERSIONS: Record<string, 'V1' | 'V2' | 'V3'> = {\n\tV1: 'V1',\n\tV2: 'V2',\n\tV3: 'V3'\n}\nexport const HARDENED_KEY_START = 0x80000000\n\nexport * from './chain'\nexport * from './cost-models'\nexport * from './placeholder'\nexport * from './protocol-parameters'\n","export type Asset = {\n\tunit: Unit\n\tquantity: Quantity\n}\n\nexport type Unit = string\n\nexport type Quantity = string\n\nexport const mergeAssets = (assets: Asset[]): Asset[] => {\n\tconst merged: Asset[] = []\n\tassets.forEach(asset => {\n\t\tconst existing = merged.find(a => a.unit === asset.unit)\n\t\tif (existing) {\n\t\t\texisting.quantity = (BigInt(existing.quantity) + BigInt(asset.quantity)).toString()\n\t\t} else {\n\t\t\tmerged.push(asset)\n\t\t}\n\t})\n\treturn merged\n}\n","import type { Data } from './data'\n\nexport type RoyaltiesStandard = {\n\trate: string\n\taddress: string\n}\n\nexport const royaltiesStandardKeys = ['rate', 'address']\n\ntype MetadataStandard = any\n\nexport const metadataStandardKeys = [\n\t'name',\n\t'image',\n\t'mediaType',\n\t'description',\n\t'instagram',\n\t'twitter',\n\t'discord',\n\t'website'\n]\n\nexport type Files = {\n\tfiles?: [\n\t\t{\n\t\t\tname: string\n\t\t\tsrc: `${string}://${string}`\n\t\t\tmediaType: `${string}/${string}`\n\t\t}\n\t]\n}\n\nexport type AssetMetadata = FungibleAssetMetadata | NonFungibleAssetMetadata | RoyaltiesStandard\n\nexport type FungibleAssetMetadata = MetadataStandard & {\n\tticker: string\n\tdecimals: number\n\tversion: `${number}.${number}`\n}\n\nexport const fungibleAssetKeys = ['ticker', 'decimals']\n\nexport type NonFungibleAssetMetadata = AudioAssetMetadata | ImageAssetMetadata | SmartAssetMetadata | VideoAssetMetadata\n\ntype AudioAssetMetadata = MetadataStandard & Files\n\nexport type ImageAssetMetadata = MetadataStandard &\n\tFiles & {\n\t\tartists?: [\n\t\t\t{\n\t\t\t\tname: string\n\t\t\t\ttwitter?: `https://twitter.com/${string}`\n\t\t\t}\n\t\t]\n\t\tattributes?: {\n\t\t\t[key: string]: string\n\t\t}\n\t\ttraits?: string[]\n\t}\n\ntype SmartAssetMetadata = MetadataStandard & Files\n\ntype VideoAssetMetadata = MetadataStandard & Files\n\n/**\n * Transform the metadata into the format needed in CIP68 inline datum (in Mesh Data type)\n * @param metadata The metadata body without outer wrapper of policy id & token name\n * @returns The metadata in Mesh Data type, ready to be attached as inline datum\n */\nexport const metadataToCip68 = (metadata: any): Data => {\n\tswitch (typeof metadata) {\n\t\tcase 'object':\n\t\t\tif (metadata instanceof Array) {\n\t\t\t\treturn metadata.map(item => metadataToCip68(item))\n\t\t\t}\n\t\t\tconst metadataMap = new Map()\n\t\t\tconst keys = Object.keys(metadata)\n\t\t\tkeys.forEach(key => {\n\t\t\t\tmetadataMap.set(key, metadataToCip68(metadata[key]))\n\t\t\t})\n\t\t\treturn {\n\t\t\t\talternative: 0,\n\t\t\t\tfields: [metadataMap, 1]\n\t\t\t}\n\n\t\tdefault:\n\t\t\treturn metadata\n\t}\n}\n","import { DEFAULT_PROTOCOL_PARAMETERS } from '../constants/protocol-parameters'\n\nexport type Protocol = {\n\tepoch: number\n\tminFeeA: number\n\tminFeeB: number\n\tmaxBlockSize: number\n\tmaxTxSize: number\n\tmaxBlockHeaderSize: number\n\tkeyDeposit: number\n\tpoolDeposit: number\n\tdecentralisation: number\n\tminPoolCost: string\n\tpriceMem: number\n\tpriceStep: number\n\tmaxTxExMem: string\n\tmaxTxExSteps: string\n\tmaxBlockExMem: string\n\tmaxBlockExSteps: string\n\tmaxValSize: number\n\tcollateralPercent: number\n\tmaxCollateralInputs: number\n\tcoinsPerUtxoSize: number\n\tminFeeRefScriptCostPerByte: number\n}\n\nexport const castProtocol = (data: Partial<Record<keyof Protocol, any>>): Protocol => {\n\tconst result: Partial<Record<keyof Protocol, number | string>> = {}\n\n\tfor (const rawKey in DEFAULT_PROTOCOL_PARAMETERS) {\n\t\tconst key = rawKey as keyof Protocol\n\t\tconst defaultValue = DEFAULT_PROTOCOL_PARAMETERS[key]\n\t\tconst value = data[key]\n\t\tif (typeof defaultValue === 'number') {\n\t\t\tresult[key] = !value && value !== 0 ? defaultValue : Number(value)\n\t\t} else if (typeof defaultValue === 'string') {\n\t\t\tresult[key] = !value && value !== '' ? defaultValue : value.toString()\n\t\t}\n\t}\n\n\treturn result as Protocol\n}\n","export const serializeAssetUnit = (policyId: string, assetName: string): string => {\n\treturn policyId + assetName\n}\n","import { CardanoWASM } from '@hydrawallet-sdk/cardano-wasm'\nimport { Asset, TxHash, UTxO, UTxOObject, UTxOObjectValue } from '../../types/cardano'\nimport { deserializeAssetUnit } from './deserializer'\n\nexport const convertUTxOToUTxOObject = (utxos: UTxO[]): UTxOObject => {\n\treturn utxos.reduce((acc, cur) => {\n\t\tacc[`${cur.input.txHash}#${cur.input.outputIndex}` as TxHash] = {\n\t\t\taddress: cur.output.address,\n\t\t\tdatum: cur.output.datum ? cur.output.datum.to_hex() : null,\n\t\t\tdatumhash: cur.output.datumHash || null,\n\t\t\tinlineDatum: cur.output.inlineDatum\n\t\t\t\t? cur.output.inlineDatum.to_json(CardanoWASM.PlutusDatumSchema.DetailedSchema)\n\t\t\t\t: null,\n\t\t\tinlineDatumRaw: cur.output.inlineDatum ? cur.output.inlineDatum.to_hex() : null,\n\n\t\t\t// TODO: update it if using scriptRef\n\t\t\treferenceScript: null,\n\t\t\tvalue: cur.output.amount.reduce(\n\t\t\t\t(acc, cur) => {\n\t\t\t\t\tif (cur.unit === 'lovelace') {\n\t\t\t\t\t\tacc.lovelace = Number(cur.quantity)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst { policyId, assetName } = deserializeAssetUnit(cur.unit)\n\t\t\t\t\t\t// @ts-ignore\n\t\t\t\t\t\tif (!acc[policyId]) {\n\t\t\t\t\t\t\t// @ts-ignore\n\t\t\t\t\t\t\tacc[policyId] = {}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// @ts-ignore\n\t\t\t\t\t\tacc[policyId][assetName] = Number(cur.quantity)\n\t\t\t\t\t}\n\t\t\t\t\treturn acc\n\t\t\t\t},\n\t\t\t\t{} as UTxOObjectValue['value']\n\t\t\t)\n\t\t}\n\t\treturn acc\n\t}, {} as UTxOObject)\n}\n\nexport const convertUTxOObjectToUTxO = (utxoObject: UTxOObject): UTxO[] => {\n\treturn Object.keys(utxoObject).map(txHash => {\n\t\tconst [txId, txIndex] = txHash.split('#')\n\t\tconst outputIndex = Number(txIndex)\n\t\tconst utxo = utxoObject[txHash as TxHash]\n\t\tconst amount: Asset[] = [{ unit: 'lovelace', quantity: String(utxo.value.lovelace) }]\n\t\tfor (const [policyId, assets] of Object.entries(utxo.value)) {\n\t\t\tfor (const [assetName, quantity] of Object.entries(assets)) {\n\t\t\t\tamount.push({\n\t\t\t\t\tunit: `${policyId}${assetName}`,\n\t\t\t\t\tquantity: String(quantity)\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\tinput: {\n\t\t\t\toutputIndex,\n\t\t\t\ttxHash: txId\n\t\t\t},\n\t\t\toutput: {\n\t\t\t\taddress: utxo.address,\n\t\t\t\tamount,\n\t\t\t\tdatum: undefined,\n\t\t\t\tdatumHash: utxo.datumhash,\n\t\t\t\tinlineDatum: undefined,\n\t\t\t\tscriptRef: undefined,\n\t\t\t\tscriptHash: undefined\n\t\t\t}\n\t\t}\n\t})\n}\n"],"mappings":"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","names":["CardanoWASM","CardanoWASM","CardanoWASM","Purpose","CoinTypes","ChainDerivation","CardanoWASM","CardanoWASM","CardanoWASM","CardanoWASM","CardanoWASM","CardanoWASM","acc","cur"]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@hydrawallet-sdk/core",
3
3
  "license": "MIT",
4
- "version": "1.0.0",
4
+ "version": "1.0.2",
5
5
  "publishConfig": {
6
6
  "access": "public"
7
7
  },
@@ -12,17 +12,27 @@
12
12
  "files": [
13
13
  "dist"
14
14
  ],
15
+ "homepage": "https://sdk.hydrawallet.app",
15
16
  "repository": {
16
17
  "type": "git",
17
- "url": "https://github.com/aniadev/hydra-wallet-sdk.git",
18
+ "url": "https://github.com/aniadev/hydrawallet-sdk.git",
18
19
  "directory": "packages/hydra-wallet"
19
20
  },
20
21
  "keywords": [
22
+ "@hydrawallet-sdk/core",
23
+ "hydra-wallet-core",
24
+ "hydra-bridge",
21
25
  "hydra",
22
26
  "wallet",
23
27
  "hydrawallet",
24
28
  "hydra-wallet",
25
29
  "hydra-wallet-sdk",
30
+ "hydra wallet sdk",
31
+ "hydra wallet",
32
+ "cardano-wasm",
33
+ "cardano wasm",
34
+ "cardano-wallet-sdk",
35
+ "cardano wallet sdk",
26
36
  "cardano",
27
37
  "cardano-wallet",
28
38
  "chain"