@fepvenancio/stela-sdk 0.4.1 → 0.4.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.cjs +24 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +24 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/abi/stela.json +23 -0
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/types/common.ts","../src/constants/addresses.ts","../src/constants/protocol.ts","../src/utils/u256.ts","../src/utils/address.ts","../src/utils/amount.ts","../src/utils/format.ts","../src/utils/status.ts","../src/tokens/registry.ts","../src/math/shares.ts","../src/events/selectors.ts","../src/events/parser.ts","../src/offchain/hash.ts","../src/offchain/typed-data.ts","../src/offchain/signature.ts","../src/privacy/commitment.ts","../src/abi/stela.json","../src/client/inscription-client.ts","../src/client/share-client.ts","../src/abi/erc20.json","../src/abi/locker.json","../src/client/locker-client.ts","../src/client/api-client.ts","../src/client/stela-sdk.ts"],"names":["uint256","addAddressPadding","validateAndParseAddress","hash","shortString","Contract"],"mappings":"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","file":"index.cjs","sourcesContent":["/** Supported StarkNet networks */\nexport type Network = 'sepolia' | 'mainnet'\n\n/** Token standard types supported by the Stela protocol */\nexport type AssetType = 'ERC20' | 'ERC721' | 'ERC1155' | 'ERC4626'\n\n/** Possible states of an inscription */\nexport type InscriptionStatus =\n | 'open'\n | 'partial'\n | 'filled'\n | 'repaid'\n | 'liquidated'\n | 'expired'\n | 'cancelled'\n\n/** All valid inscription statuses as an array */\nexport const VALID_STATUSES: readonly InscriptionStatus[] = [\n 'open',\n 'partial',\n 'filled',\n 'repaid',\n 'liquidated',\n 'expired',\n 'cancelled',\n] as const\n\n/** Human-readable labels for each inscription status */\nexport const STATUS_LABELS: Record<InscriptionStatus, string> = {\n open: 'Open',\n partial: 'Partial',\n filled: 'Filled',\n repaid: 'Repaid',\n liquidated: 'Liquidated',\n expired: 'Expired',\n cancelled: 'Cancelled',\n}\n\n/** A single StarkNet call (matches starknet.js Call type) */\nexport interface Call {\n contractAddress: string\n entrypoint: string\n calldata: string[]\n}\n","import type { Network } from '../types/common.js'\n\n/** Deployed Stela protocol contract addresses per network */\nexport const STELA_ADDRESS: Record<Network, string> = {\n sepolia: '0x00b7deedb4ab03d94f54da2e7c911c2336b19c2a4610eb98f55cd7be5a53ece0',\n mainnet: '0x0',\n} as const\n\nconst VALID_NETWORKS: Network[] = ['sepolia', 'mainnet']\n\n/** Validate and return a Network value, defaulting to 'sepolia' */\nexport function resolveNetwork(raw?: string): Network {\n const trimmed = raw?.trim()\n if (trimmed && VALID_NETWORKS.includes(trimmed as Network)) return trimmed as Network\n if (trimmed) console.warn(`Invalid NETWORK \"${trimmed}\", falling back to sepolia`)\n return 'sepolia'\n}\n\n/** SNIP-12 chain ID shortstrings per network */\nexport const CHAIN_ID: Record<Network, string> = {\n sepolia: 'SN_SEPOLIA',\n mainnet: 'SN_MAIN',\n} as const\n\n/** Block explorer base URLs per network (for transaction links) */\nexport const EXPLORER_TX_URL: Record<Network, string> = {\n sepolia: 'https://sepolia.voyager.online/tx',\n mainnet: 'https://voyager.online/tx',\n} as const\n","import type { AssetType } from '../types/common.js'\n\n/** Maximum basis points (100%) */\nexport const MAX_BPS = 10_000n\n\n/** Virtual share offset used in share calculations (1e16) */\nexport const VIRTUAL_SHARE_OFFSET = 10_000_000_000_000_000n\n\n/** Numeric enum values for asset types (matches Cairo contract) */\nexport const ASSET_TYPE_ENUM: Record<AssetType, number> = {\n ERC20: 0,\n ERC721: 1,\n ERC1155: 2,\n ERC4626: 3,\n}\n\n/** Reverse mapping: numeric enum value to AssetType name */\nexport const ASSET_TYPE_NAMES: Record<number, AssetType> = {\n 0: 'ERC20',\n 1: 'ERC721',\n 2: 'ERC1155',\n 3: 'ERC4626',\n}\n","import { uint256 } from 'starknet'\n\nconst U128_MAX = (1n << 128n) - 1n\nconst U256_MAX = (1n << 256n) - 1n\n\n/** Convert a bigint to a [low, high] calldata pair for StarkNet u256 */\nexport const toU256 = (n: bigint): [string, string] => {\n if (n < 0n || n > U256_MAX) throw new RangeError(`Value out of u256 range: ${n}`)\n const { low, high } = uint256.bnToUint256(n)\n return [low.toString(), high.toString()]\n}\n\n/** Convert a { low, high } u256 pair back to a bigint */\nexport const fromU256 = (u: { low: bigint; high: bigint }): bigint => {\n if (u.low < 0n || u.low > U128_MAX || u.high < 0n || u.high > U128_MAX) {\n throw new RangeError('Invalid u256 component: low and high must be u128')\n }\n return uint256.uint256ToBN(u)\n}\n\n/** Convert a u256 { low, high } to a 0x-prefixed 64-char hex string (for DB keys) */\nexport const inscriptionIdToHex = (u: { low: bigint; high: bigint }): string =>\n '0x' + fromU256(u).toString(16).padStart(64, '0')\n","import { addAddressPadding, validateAndParseAddress } from 'starknet'\n\n/** Convert any address-like value (string, bigint, number) to a hex string */\nexport function toHex(value: unknown): string {\n if (typeof value === 'string') return value\n if (typeof value === 'bigint') return '0x' + value.toString(16)\n if (typeof value === 'number') return '0x' + value.toString(16)\n return String(value)\n}\n\n/** Truncate an address for display: 0x1a2b...3c4d */\nexport function formatAddress(address: unknown): string {\n try {\n const hex = toHex(address)\n const padded = addAddressPadding(hex)\n return `${padded.slice(0, 6)}...${padded.slice(-4)}`\n } catch {\n return String(address).slice(0, 10) + '...'\n }\n}\n\n/** Normalize an address to a fully-padded, checksummed hex string */\nexport function normalizeAddress(address: unknown): string {\n const hex = toHex(address)\n return addAddressPadding(validateAndParseAddress(hex))\n}\n\n/** Compare two addresses for equality (handles different padding/casing) */\nexport function addressesEqual(a: unknown, b: unknown): boolean {\n try {\n return normalizeAddress(a) === normalizeAddress(b)\n } catch {\n return toHex(a).toLowerCase() === toHex(b).toLowerCase()\n }\n}\n","/** Convert human-readable amount (e.g. \"1.5\") to on-chain value using decimals */\nexport function parseAmount(humanAmount: string, decimals: number): bigint {\n if (!humanAmount || humanAmount === '.' || humanAmount === '') return 0n\n const parts = humanAmount.split('.')\n const whole = parts[0] ?? '0'\n const frac = (parts[1] ?? '').padEnd(decimals, '0').slice(0, decimals)\n return BigInt(whole + frac)\n}\n\n/** Format a raw token value (string) given its decimals */\nexport function formatTokenValue(raw: string | null, decimals: number): string {\n if (!raw || raw === '0') return '0'\n const n = BigInt(raw)\n if (decimals === 0) return n.toString()\n const divisor = 10n ** BigInt(decimals)\n const whole = n / divisor\n const frac = n % divisor\n if (frac === 0n) return whole.toString()\n const fracStr = frac.toString().padStart(decimals, '0').replace(/0+$/, '')\n return `${whole}.${fracStr}`\n}\n","/** Format duration in seconds to human-readable (e.g. \"7d 0h\", \"2h\", \"30m\") */\nexport function formatDuration(seconds: number | bigint): string {\n const s = Number(seconds)\n if (s < 3600) return `${Math.floor(s / 60)}m`\n const h = Math.floor(s / 3600)\n if (h >= 24) return `${Math.floor(h / 24)}d ${h % 24}h`\n return `${h}h`\n}\n\n/** Format a unix timestamp (seconds) to locale string */\nexport function formatTimestamp(ts: bigint): string {\n if (ts === 0n) return '--'\n return new Date(Number(ts) * 1000).toLocaleString()\n}\n","import type { InscriptionStatus } from '../types/common.js'\nimport { MAX_BPS } from '../constants/protocol.js'\n\n/** Input shape for computeStatus — accepts both bigint and number fields */\nexport interface StatusInput {\n signed_at: number | bigint\n duration: number | bigint\n issued_debt_percentage: number | bigint\n is_repaid: boolean\n liquidated: boolean\n deadline?: number | bigint\n status?: string\n}\n\n/** Compute the inscription status from on-chain fields */\nexport function computeStatus(a: StatusInput, nowSeconds?: number): InscriptionStatus {\n if (a.is_repaid) return 'repaid'\n if (a.liquidated) return 'liquidated'\n if (a.status === 'cancelled') return 'cancelled'\n\n const now = nowSeconds ?? Math.floor(Date.now() / 1000)\n const signedAt = Number(a.signed_at)\n const duration = Number(a.duration)\n const deadline = a.deadline !== undefined ? Number(a.deadline) : 0\n const issuedPct = BigInt(a.issued_debt_percentage)\n\n // Unsigned inscription\n if (signedAt === 0) {\n // If there's a deadline and it has passed, the inscription expired\n if (deadline > 0 && now > deadline) return 'expired'\n return 'open'\n }\n\n // Partially filled\n if (issuedPct < MAX_BPS) return 'partial'\n\n // Fully filled — check if loan duration has elapsed\n if (now > signedAt + duration) return 'expired'\n\n return 'filled'\n}\n","import type { TokenInfo } from './types.js'\n\n/**\n * Curated StarkNet token list.\n * Addresses sourced from official deployments.\n */\nexport const TOKENS: TokenInfo[] = [\n {\n symbol: 'ETH',\n name: 'Ether',\n decimals: 18,\n logoUrl:\n 'https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/info/logo.png',\n addresses: {\n sepolia: '0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7',\n mainnet: '0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7',\n },\n },\n {\n symbol: 'STRK',\n name: 'Starknet Token',\n decimals: 18,\n logoUrl: 'https://assets.coingecko.com/coins/images/26433/standard/starknet.png',\n addresses: {\n sepolia: '0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d',\n mainnet: '0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d',\n },\n },\n {\n symbol: 'USDC',\n name: 'USD Coin',\n decimals: 6,\n logoUrl:\n 'https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48/logo.png',\n addresses: {\n sepolia: '0x053b40a647cedfca6ca84f542a0fe36736031905a9639a7f19a3c1e66bfd5080',\n mainnet: '0x053c91253bc9682c04929ca02ed00b3e423f6710d2ee7e0d5ebb06f3ecf368a8',\n },\n },\n {\n symbol: 'USDT',\n name: 'Tether USD',\n decimals: 6,\n logoUrl:\n 'https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0xdAC17F958D2ee523a2206206994597C13D831ec7/logo.png',\n addresses: {\n sepolia: '0x07394cbe418daa16e42b87ba67372d4ab4a5df0b05c6e554d158577e75e7777c',\n mainnet: '0x068f5c6a61780768455de69077e07e89787839bf8166decfbf92b645209c0fb8',\n },\n },\n {\n symbol: 'WBTC',\n name: 'Wrapped Bitcoin',\n decimals: 8,\n logoUrl:\n 'https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599/logo.png',\n addresses: {\n sepolia: '0x012d537dc323c439dc65c976fad242d5610d27cfb5f31689a0a319b8be7f3d56',\n mainnet: '0x03fe2b97c1fd336e750087d68b9b867997fd64a2661ff3ca5a7c771641e8e7ac',\n },\n },\n {\n symbol: 'DAI',\n name: 'Dai Stablecoin',\n decimals: 18,\n logoUrl:\n 'https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0x6B175474E89094C44Da98b954EedeAC495271d0F/logo.png',\n addresses: {\n mainnet: '0x00da114221cb83fa859dbdb4c44beeaa0bb37c7537ad5ae66fe5e0efd20e6eb3',\n },\n },\n {\n symbol: 'wstETH',\n name: 'Wrapped stETH',\n decimals: 18,\n logoUrl: 'https://assets.coingecko.com/coins/images/18834/standard/wstETH.png',\n addresses: {\n sepolia: '0x0735d0f09a4e8bf8a17005fa35061b5957dcaa56889fc75df9ff7c0d36a4c5e0',\n mainnet: '0x042b8f0484674ca266ac5d08e4ac6a3fe65bd3129795def2dca5c34ecc5f96d2',\n },\n },\n // Mock tokens (Stela Sepolia testnet)\n {\n symbol: 'mUSDC',\n name: 'Mock USDC',\n decimals: 6,\n addresses: {\n sepolia: '0x034a0cf09c79e7f20fb2136212f27b7dd88e91f9a24b2ac50c5c41ff6b30c59d',\n },\n },\n {\n symbol: 'mWETH',\n name: 'Mock WETH',\n decimals: 18,\n addresses: {\n sepolia: '0x07e86764396d61d2179cd1a48033fa4f30897cb172464961a80649aff4da9bdd',\n },\n },\n {\n symbol: 'mDAI',\n name: 'Mock DAI',\n decimals: 18,\n addresses: {\n sepolia: '0x0479f31a23241b1337375b083099bd1672716edbf908b1b30148a648657a1cee',\n },\n },\n {\n symbol: 'StelaNFT',\n name: 'Stela NFT',\n decimals: 0,\n addresses: {\n sepolia: '0x04f2345306bf8ef1c8c1445661354ef08421aa092459445a5d6b46641237e943',\n },\n },\n]\n\n/** Strip leading zeros after 0x for consistent comparison */\nfunction normalizeHex(addr: string): string {\n return '0x' + addr.replace(/^0x0*/i, '').toLowerCase()\n}\n\n/** Get tokens available on a specific network */\nexport function getTokensForNetwork(network: string): TokenInfo[] {\n return TOKENS.filter((t) => t.addresses[network as keyof typeof t.addresses] !== undefined)\n}\n\n/** Find a token by its address (any network) */\nexport function findTokenByAddress(address: string): TokenInfo | undefined {\n const normalized = normalizeHex(address)\n return TOKENS.find((t) =>\n Object.values(t.addresses).some((a) => a !== undefined && normalizeHex(a) === normalized),\n )\n}\n","import { MAX_BPS, VIRTUAL_SHARE_OFFSET } from '../constants/protocol.js'\n\n/** Convert a fill percentage to shares, matching the contract's share math */\nexport function convertToShares(\n percentage: bigint,\n totalSupply: bigint,\n currentIssuedPercentage: bigint,\n): bigint {\n const denominator = currentIssuedPercentage === 0n ? 1n : currentIssuedPercentage\n return (percentage * (totalSupply + VIRTUAL_SHARE_OFFSET)) / denominator\n}\n\n/** Scale a value by a percentage in basis points */\nexport function scaleByPercentage(value: bigint, percentage: bigint): bigint {\n return (value * percentage) / MAX_BPS\n}\n\n/** Convert shares back to a percentage of the inscription */\nexport function sharesToPercentage(\n shares: bigint,\n totalSupply: bigint,\n currentIssuedPercentage: bigint,\n): bigint {\n const effectivePct = currentIssuedPercentage === 0n ? 1n : currentIssuedPercentage\n return (shares * effectivePct) / (totalSupply + VIRTUAL_SHARE_OFFSET)\n}\n\n/** Calculate the fee portion of shares given a fee in basis points */\nexport function calculateFeeShares(shares: bigint, feeBps: bigint): bigint {\n return (shares * feeBps) / MAX_BPS\n}\n","import { hash } from 'starknet'\n\n/** Event selectors for all Stela protocol events */\nexport const SELECTORS = {\n InscriptionCreated: hash.getSelectorFromName('InscriptionCreated'),\n InscriptionSigned: hash.getSelectorFromName('InscriptionSigned'),\n InscriptionCancelled: hash.getSelectorFromName('InscriptionCancelled'),\n InscriptionRepaid: hash.getSelectorFromName('InscriptionRepaid'),\n InscriptionLiquidated: hash.getSelectorFromName('InscriptionLiquidated'),\n SharesRedeemed: hash.getSelectorFromName('SharesRedeemed'),\n TransferSingle: hash.getSelectorFromName('TransferSingle'),\n OrderSettled: hash.getSelectorFromName('OrderSettled'),\n OrderFilled: hash.getSelectorFromName('OrderFilled'),\n OrderCancelled: hash.getSelectorFromName('OrderCancelled'),\n OrdersBulkCancelled: hash.getSelectorFromName('OrdersBulkCancelled'),\n} as const\n","import { uint256 } from 'starknet'\nimport type { RawEvent, StelaEvent } from '../types/events.js'\nimport { SELECTORS } from './selectors.js'\n\n/** Convert two felt strings (low, high) into a bigint */\nfunction feltsToU256(low: string, high: string): bigint {\n return uint256.uint256ToBN({ low: BigInt(low), high: BigInt(high) })\n}\n\n/** Parse a single raw event into a typed StelaEvent. Returns null if unrecognized. */\nexport function parseEvent(raw: RawEvent): StelaEvent | null {\n const selector = raw.keys[0]\n\n switch (selector) {\n case SELECTORS.InscriptionCreated: {\n // keys: [selector, id_low, id_high, creator]\n // data: [is_borrow]\n return {\n type: 'InscriptionCreated',\n inscription_id: feltsToU256(raw.keys[1], raw.keys[2]),\n creator: raw.keys[3],\n is_borrow: BigInt(raw.data[0]) !== 0n,\n transaction_hash: raw.transaction_hash,\n block_number: raw.block_number,\n }\n }\n\n case SELECTORS.InscriptionSigned: {\n // keys: [selector, id_low, id_high, borrower, lender]\n // data: [pct_low, pct_high, shares_low, shares_high]\n return {\n type: 'InscriptionSigned',\n inscription_id: feltsToU256(raw.keys[1], raw.keys[2]),\n borrower: raw.keys[3],\n lender: raw.keys[4],\n issued_debt_percentage: feltsToU256(raw.data[0], raw.data[1]),\n shares_minted: feltsToU256(raw.data[2], raw.data[3]),\n transaction_hash: raw.transaction_hash,\n block_number: raw.block_number,\n }\n }\n\n case SELECTORS.InscriptionCancelled: {\n // keys: [selector, id_low, id_high]\n // data: [creator]\n return {\n type: 'InscriptionCancelled',\n inscription_id: feltsToU256(raw.keys[1], raw.keys[2]),\n creator: raw.data[0],\n transaction_hash: raw.transaction_hash,\n block_number: raw.block_number,\n }\n }\n\n case SELECTORS.InscriptionRepaid: {\n // keys: [selector, id_low, id_high]\n // data: [repayer]\n return {\n type: 'InscriptionRepaid',\n inscription_id: feltsToU256(raw.keys[1], raw.keys[2]),\n repayer: raw.data[0],\n transaction_hash: raw.transaction_hash,\n block_number: raw.block_number,\n }\n }\n\n case SELECTORS.InscriptionLiquidated: {\n // keys: [selector, id_low, id_high]\n // data: [liquidator]\n return {\n type: 'InscriptionLiquidated',\n inscription_id: feltsToU256(raw.keys[1], raw.keys[2]),\n liquidator: raw.data[0],\n transaction_hash: raw.transaction_hash,\n block_number: raw.block_number,\n }\n }\n\n case SELECTORS.SharesRedeemed: {\n // keys: [selector, id_low, id_high, redeemer]\n // data: [shares_low, shares_high]\n return {\n type: 'SharesRedeemed',\n inscription_id: feltsToU256(raw.keys[1], raw.keys[2]),\n redeemer: raw.keys[3],\n shares: feltsToU256(raw.data[0], raw.data[1]),\n transaction_hash: raw.transaction_hash,\n block_number: raw.block_number,\n }\n }\n\n case SELECTORS.TransferSingle: {\n // keys: [selector, operator, from, to]\n // data: [id_low, id_high, value_low, value_high]\n return {\n type: 'TransferSingle',\n operator: raw.keys[1],\n from: raw.keys[2],\n to: raw.keys[3],\n id: feltsToU256(raw.data[0], raw.data[1]),\n value: feltsToU256(raw.data[2], raw.data[3]),\n transaction_hash: raw.transaction_hash,\n block_number: raw.block_number,\n }\n }\n\n case SELECTORS.OrderSettled: {\n // keys: [selector, id_low, id_high, borrower, lender]\n // data: [relayer, fee_low, fee_high]\n return {\n type: 'OrderSettled',\n inscription_id: feltsToU256(raw.keys[1], raw.keys[2]),\n borrower: raw.keys[3],\n lender: raw.keys[4],\n relayer: raw.data[0],\n relayer_fee_amount: feltsToU256(raw.data[1], raw.data[2]),\n transaction_hash: raw.transaction_hash,\n block_number: raw.block_number,\n }\n }\n\n case SELECTORS.OrderFilled: {\n // keys: [selector, id_low, id_high, order_hash, taker]\n // data: [fill_bps_low, fill_bps_high, total_filled_bps_low, total_filled_bps_high]\n return {\n type: 'OrderFilled',\n inscription_id: feltsToU256(raw.keys[1], raw.keys[2]),\n order_hash: raw.keys[3],\n taker: raw.keys[4],\n fill_bps: feltsToU256(raw.data[0], raw.data[1]),\n total_filled_bps: feltsToU256(raw.data[2], raw.data[3]),\n transaction_hash: raw.transaction_hash,\n block_number: raw.block_number,\n }\n }\n\n case SELECTORS.OrderCancelled: {\n // keys: [selector, order_hash]\n // data: [maker]\n return {\n type: 'OrderCancelled',\n order_hash: raw.keys[1],\n maker: raw.data[0],\n transaction_hash: raw.transaction_hash,\n block_number: raw.block_number,\n }\n }\n\n case SELECTORS.OrdersBulkCancelled: {\n // keys: [selector, maker]\n // data: [new_min_nonce]\n return {\n type: 'OrdersBulkCancelled',\n maker: raw.keys[1],\n new_min_nonce: raw.data[0],\n transaction_hash: raw.transaction_hash,\n block_number: raw.block_number,\n }\n }\n\n default:\n return null\n }\n}\n\n/** Parse an array of raw events, skipping unrecognized ones. */\nexport function parseEvents(rawEvents: RawEvent[]): StelaEvent[] {\n const results: StelaEvent[] = []\n for (const raw of rawEvents) {\n const parsed = parseEvent(raw)\n if (parsed) results.push(parsed)\n }\n return results\n}\n","import { hash } from 'starknet'\nimport type { Asset } from '../types/inscription.js'\nimport { ASSET_TYPE_ENUM } from '../constants/protocol.js'\nimport { toU256 } from '../utils/u256.js'\n\n/**\n * Hash an array of assets using Poseidon -- matches Cairo's hash_assets().\n *\n * The Cairo code hashes: len, then for each asset:\n * asset.asset (ContractAddress -> 1 felt)\n * asset.asset_type (enum -> 1 felt)\n * asset.value (u256 -> low felt, high felt)\n * asset.token_id (u256 -> low felt, high felt)\n *\n * Uses `hash.computePoseidonHashOnElements` from starknet.js which takes an\n * array and computes Poseidon over all elements.\n */\nexport function hashAssets(assets: Asset[]): string {\n const elements: string[] = [String(assets.length)]\n for (const asset of assets) {\n elements.push(asset.asset_address)\n elements.push(String(ASSET_TYPE_ENUM[asset.asset_type]))\n const [vLow, vHigh] = toU256(asset.value)\n elements.push(vLow, vHigh)\n const [tidLow, tidHigh] = toU256(asset.token_id)\n elements.push(tidLow, tidHigh)\n }\n return hash.computePoseidonHashOnElements(elements)\n}\n","import type { TypedData } from 'starknet'\nimport type { Asset } from '../types/inscription.js'\nimport { hashAssets } from './hash.js'\n\n/** Domain separator -- MUST match the Cairo contract's SNIP12Metadata */\nconst STELA_DOMAIN = {\n name: 'Stela',\n version: 'v1',\n chainId: '', // filled at call time\n revision: '1',\n}\n\n/**\n * Build SNIP-12 TypedData for a borrower's InscriptionOrder.\n * The borrower signs this off-chain to create an order without gas.\n */\nexport function getInscriptionOrderTypedData(params: {\n borrower: string\n debtAssets: Asset[]\n interestAssets: Asset[]\n collateralAssets: Asset[]\n debtCount: number\n interestCount: number\n collateralCount: number\n duration: bigint\n deadline: bigint\n multiLender: boolean\n nonce: bigint\n chainId: string\n}): TypedData {\n return {\n types: {\n StarknetDomain: [\n { name: 'name', type: 'shortstring' },\n { name: 'version', type: 'shortstring' },\n { name: 'chainId', type: 'shortstring' },\n { name: 'revision', type: 'shortstring' },\n ],\n InscriptionOrder: [\n { name: 'borrower', type: 'ContractAddress' },\n { name: 'debt_hash', type: 'felt' },\n { name: 'interest_hash', type: 'felt' },\n { name: 'collateral_hash', type: 'felt' },\n { name: 'debt_count', type: 'u128' },\n { name: 'interest_count', type: 'u128' },\n { name: 'collateral_count', type: 'u128' },\n { name: 'duration', type: 'u128' },\n { name: 'deadline', type: 'u128' },\n { name: 'multi_lender', type: 'bool' },\n { name: 'nonce', type: 'felt' },\n ],\n },\n primaryType: 'InscriptionOrder',\n domain: {\n ...STELA_DOMAIN,\n chainId: params.chainId,\n },\n message: {\n borrower: params.borrower,\n debt_hash: hashAssets(params.debtAssets),\n interest_hash: hashAssets(params.interestAssets),\n collateral_hash: hashAssets(params.collateralAssets),\n debt_count: params.debtCount.toString(),\n interest_count: params.interestCount.toString(),\n collateral_count: params.collateralCount.toString(),\n duration: params.duration.toString(),\n deadline: params.deadline.toString(),\n multi_lender: params.multiLender,\n nonce: params.nonce.toString(),\n },\n }\n}\n\n/**\n * Build SNIP-12 TypedData for a private lend offer.\n *\n * Convenience wrapper around getLendOfferTypedData that sets lender to zero address\n * and includes the deposit commitment. For private settlements, the lender is anonymous\n * — the privacy pool's deposit commitment proves ownership instead.\n */\nexport function getPrivateLendOfferTypedData(params: {\n orderHash: string\n issuedDebtPercentage: bigint\n nonce: bigint\n chainId: string\n /** The deposit commitment from the privacy pool shield() call. */\n depositCommitment: string\n}): TypedData {\n return getLendOfferTypedData({\n orderHash: params.orderHash,\n lender: '0x0',\n issuedDebtPercentage: params.issuedDebtPercentage,\n nonce: params.nonce,\n chainId: params.chainId,\n lenderCommitment: params.depositCommitment,\n })\n}\n\n/**\n * Build SNIP-12 TypedData for a lender's LendOffer.\n * The lender signs this off-chain to accept an order without gas.\n *\n * @param lenderCommitment - Privacy commitment. When non-zero, shares are committed to the\n * privacy pool's Merkle tree instead of minting ERC1155 to the lender. Defaults to '0'.\n */\nexport function getLendOfferTypedData(params: {\n orderHash: string\n lender: string\n issuedDebtPercentage: bigint\n nonce: bigint\n chainId: string\n /** Privacy commitment (default '0' = non-private). */\n lenderCommitment?: string\n}): TypedData {\n return {\n types: {\n StarknetDomain: [\n { name: 'name', type: 'shortstring' },\n { name: 'version', type: 'shortstring' },\n { name: 'chainId', type: 'shortstring' },\n { name: 'revision', type: 'shortstring' },\n ],\n LendOffer: [\n { name: 'order_hash', type: 'felt' },\n { name: 'lender', type: 'ContractAddress' },\n { name: 'issued_debt_percentage', type: 'u256' },\n { name: 'nonce', type: 'felt' },\n { name: 'lender_commitment', type: 'felt' },\n ],\n u256: [\n { name: 'low', type: 'u128' },\n { name: 'high', type: 'u128' },\n ],\n },\n primaryType: 'LendOffer',\n domain: {\n ...STELA_DOMAIN,\n chainId: params.chainId,\n },\n message: {\n order_hash: params.orderHash,\n lender: params.lender,\n issued_debt_percentage: {\n low: (params.issuedDebtPercentage & ((1n << 128n) - 1n)).toString(),\n high: (params.issuedDebtPercentage >> 128n).toString(),\n },\n nonce: params.nonce.toString(),\n lender_commitment: params.lenderCommitment ?? '0',\n },\n }\n}\n","/**\n * Serialize a starknet.js signature (Signature type) for storage in D1.\n */\nexport interface StoredSignature {\n r: string\n s: string\n}\n\nexport function serializeSignature(sig: string[]): StoredSignature {\n return { r: sig[0], s: sig[1] }\n}\n\nexport function deserializeSignature(stored: StoredSignature): string[] {\n return [stored.r, stored.s]\n}\n","import { hash, shortString } from 'starknet'\nimport { toU256 } from '../utils/u256.js'\nimport type { PrivateNote } from './types.js'\n\n/**\n * Domain separator for note commitments.\n * Must match Cairo: COMMITMENT_DOMAIN = 'STELA_COMMITMENT_V1'\n *\n * Cairo short strings are ASCII encoded as felt252.\n * starknet.js encodeShortString does this conversion.\n */\nconst COMMITMENT_DOMAIN = shortString.encodeShortString('STELA_COMMITMENT_V1')\n\n/**\n * Domain separator for nullifier derivation.\n * Must match Cairo: NULLIFIER_DOMAIN = 'STELA_NULLIFIER_V1'\n */\nconst NULLIFIER_DOMAIN = shortString.encodeShortString('STELA_NULLIFIER_V1')\n\n/**\n * Compute a note commitment matching the Cairo compute_commitment function.\n *\n * commitment = Poseidon(domain, owner, inscription_id.low, inscription_id.high,\n * shares.low, shares.high, salt)\n */\nexport function computeCommitment(\n owner: string,\n inscriptionId: bigint,\n shares: bigint,\n salt: string,\n): string {\n const [idLow, idHigh] = toU256(inscriptionId)\n const [sharesLow, sharesHigh] = toU256(shares)\n\n return hash.computePoseidonHashOnElements([\n COMMITMENT_DOMAIN,\n owner,\n idLow,\n idHigh,\n sharesLow,\n sharesHigh,\n salt,\n ])\n}\n\n/**\n * Derive a nullifier from a commitment and the owner's secret.\n * Matches Cairo: nullifier = Poseidon(domain, commitment, owner_secret)\n */\nexport function computeNullifier(commitment: string, ownerSecret: string): string {\n return hash.computePoseidonHashOnElements([NULLIFIER_DOMAIN, commitment, ownerSecret])\n}\n\n/**\n * Compute a Poseidon hash of two children (for Merkle tree internal nodes).\n * Matches Cairo: hash_pair(left, right) = Poseidon(left, right)\n */\nexport function hashPair(left: string, right: string): string {\n return hash.computePoseidonHashOnElements([left, right])\n}\n\n/**\n * Generate a random salt for commitment uniqueness.\n * Returns a hex-encoded felt252 (< 2^251).\n */\nexport function generateSalt(): string {\n const bytes = new Uint8Array(31) // 31 bytes < 2^248 < FIELD_PRIME\n crypto.getRandomValues(bytes)\n return '0x' + Array.from(bytes).map(b => b.toString(16).padStart(2, '0')).join('')\n}\n\n/**\n * Compute a deposit commitment for the privacy pool's shield() call.\n *\n * This is the commitment that a depositor provides when shielding tokens into the privacy pool.\n * It links the depositor, token, amount, and a secret salt so the deposit can later be consumed\n * during private settlement.\n *\n * commitment = Poseidon(domain, depositor, token, amount.low, amount.high, salt)\n */\nexport function computeDepositCommitment(\n depositor: string,\n token: string,\n amount: bigint,\n salt: bigint,\n): string {\n const [amountLow, amountHigh] = toU256(amount)\n\n return hash.computePoseidonHashOnElements([\n COMMITMENT_DOMAIN,\n depositor,\n token,\n amountLow,\n amountHigh,\n '0x' + salt.toString(16),\n ])\n}\n\n/**\n * Create a full private note: generates salt, computes commitment.\n */\nexport function createPrivateNote(\n owner: string,\n inscriptionId: bigint,\n shares: bigint,\n salt?: string,\n): PrivateNote {\n const noteSalt = salt ?? generateSalt()\n const commitment = computeCommitment(owner, inscriptionId, shares, noteSalt)\n return {\n owner,\n inscriptionId,\n shares,\n salt: noteSalt,\n commitment,\n }\n}\n","[\n {\n \"type\": \"impl\",\n \"name\": \"StelaProtocolImpl\",\n \"interface_name\": \"stela::interfaces::istela::IStelaProtocol\"\n },\n {\n \"type\": \"enum\",\n \"name\": \"core::bool\",\n \"variants\": [\n {\n \"name\": \"False\",\n \"type\": \"()\"\n },\n {\n \"name\": \"True\",\n \"type\": \"()\"\n }\n ]\n },\n {\n \"type\": \"enum\",\n \"name\": \"stela::types::asset::AssetType\",\n \"variants\": [\n {\n \"name\": \"ERC20\",\n \"type\": \"()\"\n },\n {\n \"name\": \"ERC721\",\n \"type\": \"()\"\n },\n {\n \"name\": \"ERC1155\",\n \"type\": \"()\"\n },\n {\n \"name\": \"ERC4626\",\n \"type\": \"()\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::integer::u256\",\n \"members\": [\n {\n \"name\": \"low\",\n \"type\": \"core::integer::u128\"\n },\n {\n \"name\": \"high\",\n \"type\": \"core::integer::u128\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"stela::types::asset::Asset\",\n \"members\": [\n {\n \"name\": \"asset\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"asset_type\",\n \"type\": \"stela::types::asset::AssetType\"\n },\n {\n \"name\": \"value\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"stela::types::inscription::InscriptionParams\",\n \"members\": [\n {\n \"name\": \"is_borrow\",\n \"type\": \"core::bool\"\n },\n {\n \"name\": \"debt_assets\",\n \"type\": \"core::array::Array::<stela::types::asset::Asset>\"\n },\n {\n \"name\": \"interest_assets\",\n \"type\": \"core::array::Array::<stela::types::asset::Asset>\"\n },\n {\n \"name\": \"collateral_assets\",\n \"type\": \"core::array::Array::<stela::types::asset::Asset>\"\n },\n {\n \"name\": \"duration\",\n \"type\": \"core::integer::u64\"\n },\n {\n \"name\": \"deadline\",\n \"type\": \"core::integer::u64\"\n },\n {\n \"name\": \"multi_lender\",\n \"type\": \"core::bool\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"stela::types::private_redeem::PrivateRedeemRequest\",\n \"members\": [\n {\n \"name\": \"root\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"inscription_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"shares\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"nullifier\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"change_commitment\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"recipient\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::array::Span::<core::felt252>\",\n \"members\": [\n {\n \"name\": \"snapshot\",\n \"type\": \"@core::array::Array::<core::felt252>\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"stela::snip12::InscriptionOrder\",\n \"members\": [\n {\n \"name\": \"borrower\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"debt_hash\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"interest_hash\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"collateral_hash\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"debt_count\",\n \"type\": \"core::integer::u32\"\n },\n {\n \"name\": \"interest_count\",\n \"type\": \"core::integer::u32\"\n },\n {\n \"name\": \"collateral_count\",\n \"type\": \"core::integer::u32\"\n },\n {\n \"name\": \"duration\",\n \"type\": \"core::integer::u64\"\n },\n {\n \"name\": \"deadline\",\n \"type\": \"core::integer::u64\"\n },\n {\n \"name\": \"multi_lender\",\n \"type\": \"core::bool\"\n },\n {\n \"name\": \"nonce\",\n \"type\": \"core::felt252\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"stela::snip12::LendOffer\",\n \"members\": [\n {\n \"name\": \"order_hash\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"lender\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"issued_debt_percentage\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"nonce\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"lender_commitment\",\n \"type\": \"core::felt252\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"stela::types::signed_order::SignedOrder\",\n \"members\": [\n {\n \"name\": \"maker\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"allowed_taker\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"inscription_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"bps\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"deadline\",\n \"type\": \"core::integer::u64\"\n },\n {\n \"name\": \"nonce\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"min_fill_bps\",\n \"type\": \"core::integer::u256\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"stela::types::inscription::StoredInscription\",\n \"members\": [\n {\n \"name\": \"borrower\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"lender\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"duration\",\n \"type\": \"core::integer::u64\"\n },\n {\n \"name\": \"deadline\",\n \"type\": \"core::integer::u64\"\n },\n {\n \"name\": \"signed_at\",\n \"type\": \"core::integer::u64\"\n },\n {\n \"name\": \"issued_debt_percentage\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"is_repaid\",\n \"type\": \"core::bool\"\n },\n {\n \"name\": \"liquidated\",\n \"type\": \"core::bool\"\n },\n {\n \"name\": \"multi_lender\",\n \"type\": \"core::bool\"\n },\n {\n \"name\": \"debt_asset_count\",\n \"type\": \"core::integer::u32\"\n },\n {\n \"name\": \"interest_asset_count\",\n \"type\": \"core::integer::u32\"\n },\n {\n \"name\": \"collateral_asset_count\",\n \"type\": \"core::integer::u32\"\n }\n ]\n },\n {\n \"type\": \"interface\",\n \"name\": \"stela::interfaces::istela::IStelaProtocol\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"create_inscription\",\n \"inputs\": [\n {\n \"name\": \"params\",\n \"type\": \"stela::types::inscription::InscriptionParams\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"sign_inscription\",\n \"inputs\": [\n {\n \"name\": \"inscription_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"issued_debt_percentage\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"cancel_inscription\",\n \"inputs\": [\n {\n \"name\": \"inscription_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"repay\",\n \"inputs\": [\n {\n \"name\": \"inscription_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"liquidate\",\n \"inputs\": [\n {\n \"name\": \"inscription_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"redeem\",\n \"inputs\": [\n {\n \"name\": \"inscription_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"shares\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"private_redeem\",\n \"inputs\": [\n {\n \"name\": \"request\",\n \"type\": \"stela::types::private_redeem::PrivateRedeemRequest\"\n },\n {\n \"name\": \"proof\",\n \"type\": \"core::array::Span::<core::felt252>\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"settle\",\n \"inputs\": [\n {\n \"name\": \"order\",\n \"type\": \"stela::snip12::InscriptionOrder\"\n },\n {\n \"name\": \"debt_assets\",\n \"type\": \"core::array::Array::<stela::types::asset::Asset>\"\n },\n {\n \"name\": \"interest_assets\",\n \"type\": \"core::array::Array::<stela::types::asset::Asset>\"\n },\n {\n \"name\": \"collateral_assets\",\n \"type\": \"core::array::Array::<stela::types::asset::Asset>\"\n },\n {\n \"name\": \"borrower_sig\",\n \"type\": \"core::array::Array::<core::felt252>\"\n },\n {\n \"name\": \"offer\",\n \"type\": \"stela::snip12::LendOffer\"\n },\n {\n \"name\": \"lender_sig\",\n \"type\": \"core::array::Array::<core::felt252>\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"fill_signed_order\",\n \"inputs\": [\n {\n \"name\": \"order\",\n \"type\": \"stela::types::signed_order::SignedOrder\"\n },\n {\n \"name\": \"signature\",\n \"type\": \"core::array::Array::<core::felt252>\"\n },\n {\n \"name\": \"fill_bps\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"cancel_order\",\n \"inputs\": [\n {\n \"name\": \"order\",\n \"type\": \"stela::types::signed_order::SignedOrder\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"cancel_orders_by_nonce\",\n \"inputs\": [\n {\n \"name\": \"min_nonce\",\n \"type\": \"core::felt252\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_inscription\",\n \"inputs\": [\n {\n \"name\": \"inscription_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"stela::types::inscription::StoredInscription\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_locker\",\n \"inputs\": [\n {\n \"name\": \"inscription_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"convert_to_shares\",\n \"inputs\": [\n {\n \"name\": \"inscription_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"issued_debt_percentage\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_inscription_fee\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"nonces\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::felt252\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_relayer_fee\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_treasury\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"is_paused\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"is_order_registered\",\n \"inputs\": [\n {\n \"name\": \"order_hash\",\n \"type\": \"core::felt252\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"is_order_cancelled\",\n \"inputs\": [\n {\n \"name\": \"order_hash\",\n \"type\": \"core::felt252\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_filled_bps\",\n \"inputs\": [\n {\n \"name\": \"order_hash\",\n \"type\": \"core::felt252\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_maker_min_nonce\",\n \"inputs\": [\n {\n \"name\": \"maker\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::felt252\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_privacy_pool\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"set_inscription_fee\",\n \"inputs\": [\n {\n \"name\": \"fee\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"set_treasury\",\n \"inputs\": [\n {\n \"name\": \"treasury\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"set_registry\",\n \"inputs\": [\n {\n \"name\": \"registry\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"set_inscriptions_nft\",\n \"inputs\": [\n {\n \"name\": \"inscriptions_nft\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"set_relayer_fee\",\n \"inputs\": [\n {\n \"name\": \"fee\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"set_implementation_hash\",\n \"inputs\": [\n {\n \"name\": \"implementation_hash\",\n \"type\": \"core::felt252\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"set_privacy_pool\",\n \"inputs\": [\n {\n \"name\": \"privacy_pool\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"pause\",\n \"inputs\": [],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"unpause\",\n \"inputs\": [],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"set_locker_allowed_selector\",\n \"inputs\": [\n {\n \"name\": \"locker\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"selector\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"allowed\",\n \"type\": \"core::bool\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"ERC1155MixinImpl\",\n \"interface_name\": \"openzeppelin_interfaces::token::erc1155::ERC1155ABI\"\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::array::Span::<core::starknet::contract_address::ContractAddress>\",\n \"members\": [\n {\n \"name\": \"snapshot\",\n \"type\": \"@core::array::Array::<core::starknet::contract_address::ContractAddress>\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::array::Span::<core::integer::u256>\",\n \"members\": [\n {\n \"name\": \"snapshot\",\n \"type\": \"@core::array::Array::<core::integer::u256>\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::byte_array::ByteArray\",\n \"members\": [\n {\n \"name\": \"data\",\n \"type\": \"core::array::Array::<core::bytes_31::bytes31>\"\n },\n {\n \"name\": \"pending_word\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"pending_word_len\",\n \"type\": \"core::internal::bounded_int::BoundedInt::<0, 30>\"\n }\n ]\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_interfaces::token::erc1155::ERC1155ABI\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"balance_of\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"balance_of_batch\",\n \"inputs\": [\n {\n \"name\": \"accounts\",\n \"type\": \"core::array::Span::<core::starknet::contract_address::ContractAddress>\"\n },\n {\n \"name\": \"token_ids\",\n \"type\": \"core::array::Span::<core::integer::u256>\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::array::Span::<core::integer::u256>\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"safe_transfer_from\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"value\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"data\",\n \"type\": \"core::array::Span::<core::felt252>\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"safe_batch_transfer_from\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"token_ids\",\n \"type\": \"core::array::Span::<core::integer::u256>\"\n },\n {\n \"name\": \"values\",\n \"type\": \"core::array::Span::<core::integer::u256>\"\n },\n {\n \"name\": \"data\",\n \"type\": \"core::array::Span::<core::felt252>\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"is_approved_for_all\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"set_approval_for_all\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"approved\",\n \"type\": \"core::bool\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"supports_interface\",\n \"inputs\": [\n {\n \"name\": \"interface_id\",\n \"type\": \"core::felt252\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"uri\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"balanceOf\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"tokenId\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"balanceOfBatch\",\n \"inputs\": [\n {\n \"name\": \"accounts\",\n \"type\": \"core::array::Span::<core::starknet::contract_address::ContractAddress>\"\n },\n {\n \"name\": \"tokenIds\",\n \"type\": \"core::array::Span::<core::integer::u256>\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::array::Span::<core::integer::u256>\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"safeTransferFrom\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"tokenId\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"value\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"data\",\n \"type\": \"core::array::Span::<core::felt252>\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"safeBatchTransferFrom\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"tokenIds\",\n \"type\": \"core::array::Span::<core::integer::u256>\"\n },\n {\n \"name\": \"values\",\n \"type\": \"core::array::Span::<core::integer::u256>\"\n },\n {\n \"name\": \"data\",\n \"type\": \"core::array::Span::<core::felt252>\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"isApprovedForAll\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setApprovalForAll\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"approved\",\n \"type\": \"core::bool\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"OwnableMixinImpl\",\n \"interface_name\": \"openzeppelin_interfaces::access::ownable::OwnableABI\"\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_interfaces::access::ownable::OwnableABI\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"owner\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transfer_ownership\",\n \"inputs\": [\n {\n \"name\": \"new_owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"renounce_ownership\",\n \"inputs\": [],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transferOwnership\",\n \"inputs\": [\n {\n \"name\": \"newOwner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"renounceOwnership\",\n \"inputs\": [],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n }\n ]\n },\n {\n \"type\": \"constructor\",\n \"name\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"inscriptions_nft\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"registry\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"implementation_hash\",\n \"type\": \"core::felt252\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::TransferSingle\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"value\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::TransferBatch\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"ids\",\n \"type\": \"core::array::Span::<core::integer::u256>\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"values\",\n \"type\": \"core::array::Span::<core::integer::u256>\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::ApprovalForAll\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"approved\",\n \"type\": \"core::bool\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::URI\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"value\",\n \"type\": \"core::byte_array::ByteArray\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::Event\",\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"TransferSingle\",\n \"type\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::TransferSingle\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"TransferBatch\",\n \"type\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::TransferBatch\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"ApprovalForAll\",\n \"type\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::ApprovalForAll\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"URI\",\n \"type\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::URI\",\n \"kind\": \"nested\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_access::ownable::ownable::OwnableComponent::OwnershipTransferred\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"previous_owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"new_owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_access::ownable::ownable::OwnableComponent::OwnershipTransferStarted\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"previous_owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"new_owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_access::ownable::ownable::OwnableComponent::Event\",\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"OwnershipTransferred\",\n \"type\": \"openzeppelin_access::ownable::ownable::OwnableComponent::OwnershipTransferred\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"OwnershipTransferStarted\",\n \"type\": \"openzeppelin_access::ownable::ownable::OwnableComponent::OwnershipTransferStarted\",\n \"kind\": \"nested\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_introspection::src5::SRC5Component::Event\",\n \"kind\": \"enum\",\n \"variants\": []\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_security::reentrancyguard::ReentrancyGuardComponent::Event\",\n \"kind\": \"enum\",\n \"variants\": []\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_security::pausable::PausableComponent::Paused\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"account\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_security::pausable::PausableComponent::Unpaused\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"account\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_security::pausable::PausableComponent::Event\",\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"Paused\",\n \"type\": \"openzeppelin_security::pausable::PausableComponent::Paused\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"Unpaused\",\n \"type\": \"openzeppelin_security::pausable::PausableComponent::Unpaused\",\n \"kind\": \"nested\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_utils::cryptography::nonces::NoncesComponent::Event\",\n \"kind\": \"enum\",\n \"variants\": []\n },\n {\n \"type\": \"event\",\n \"name\": \"stela::stela::StelaProtocol::InscriptionCreated\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"inscription_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"is_borrow\",\n \"type\": \"core::bool\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"stela::stela::StelaProtocol::InscriptionSigned\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"inscription_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"borrower\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"lender\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"issued_debt_percentage\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"shares_minted\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"stela::stela::StelaProtocol::InscriptionCancelled\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"inscription_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"stela::stela::StelaProtocol::InscriptionRepaid\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"inscription_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"repayer\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"stela::stela::StelaProtocol::InscriptionLiquidated\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"inscription_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"liquidator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"stela::stela::StelaProtocol::SharesRedeemed\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"inscription_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"redeemer\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"shares\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"stela::stela::StelaProtocol::OrderSettled\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"inscription_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"borrower\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"lender\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"relayer\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"relayer_fee_amount\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"stela::stela::StelaProtocol::OrderFilled\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"inscription_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"order_hash\",\n \"type\": \"core::felt252\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"taker\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"fill_bps\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"total_filled_bps\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"stela::stela::StelaProtocol::OrderCancelled\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"order_hash\",\n \"type\": \"core::felt252\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"maker\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"stela::stela::StelaProtocol::OrdersBulkCancelled\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"maker\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"new_min_nonce\",\n \"type\": \"core::felt252\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"stela::stela::StelaProtocol::PrivateSettled\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"inscription_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"lender_commitment\",\n \"type\": \"core::felt252\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"shares_committed\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"stela::stela::StelaProtocol::PrivateSharesRedeemed\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"inscription_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"nullifier\",\n \"type\": \"core::felt252\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"shares\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"recipient\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"stela::stela::StelaProtocol::Event\",\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"ERC1155Event\",\n \"type\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::Event\",\n \"kind\": \"flat\"\n },\n {\n \"name\": \"OwnableEvent\",\n \"type\": \"openzeppelin_access::ownable::ownable::OwnableComponent::Event\",\n \"kind\": \"flat\"\n },\n {\n \"name\": \"SRC5Event\",\n \"type\": \"openzeppelin_introspection::src5::SRC5Component::Event\",\n \"kind\": \"flat\"\n },\n {\n \"name\": \"ReentrancyGuardEvent\",\n \"type\": \"openzeppelin_security::reentrancyguard::ReentrancyGuardComponent::Event\",\n \"kind\": \"flat\"\n },\n {\n \"name\": \"PausableEvent\",\n \"type\": \"openzeppelin_security::pausable::PausableComponent::Event\",\n \"kind\": \"flat\"\n },\n {\n \"name\": \"NoncesEvent\",\n \"type\": \"openzeppelin_utils::cryptography::nonces::NoncesComponent::Event\",\n \"kind\": \"flat\"\n },\n {\n \"name\": \"InscriptionCreated\",\n \"type\": \"stela::stela::StelaProtocol::InscriptionCreated\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"InscriptionSigned\",\n \"type\": \"stela::stela::StelaProtocol::InscriptionSigned\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"InscriptionCancelled\",\n \"type\": \"stela::stela::StelaProtocol::InscriptionCancelled\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"InscriptionRepaid\",\n \"type\": \"stela::stela::StelaProtocol::InscriptionRepaid\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"InscriptionLiquidated\",\n \"type\": \"stela::stela::StelaProtocol::InscriptionLiquidated\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"SharesRedeemed\",\n \"type\": \"stela::stela::StelaProtocol::SharesRedeemed\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"OrderSettled\",\n \"type\": \"stela::stela::StelaProtocol::OrderSettled\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"OrderFilled\",\n \"type\": \"stela::stela::StelaProtocol::OrderFilled\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"OrderCancelled\",\n \"type\": \"stela::stela::StelaProtocol::OrderCancelled\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"OrdersBulkCancelled\",\n \"type\": \"stela::stela::StelaProtocol::OrdersBulkCancelled\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"PrivateSettled\",\n \"type\": \"stela::stela::StelaProtocol::PrivateSettled\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"PrivateSharesRedeemed\",\n \"type\": \"stela::stela::StelaProtocol::PrivateSharesRedeemed\",\n \"kind\": \"nested\"\n }\n ]\n }\n]","import { Contract, type RpcProvider, type Account } from 'starknet'\nimport type { Call } from '../types/common.js'\nimport type { Asset, InscriptionParams, StoredInscription, SignedOrder } from '../types/inscription.js'\nimport type { PrivateRedeemRequest } from '../privacy/types.js'\nimport stelaAbi from '../abi/stela.json'\nimport { toU256, fromU256 } from '../utils/u256.js'\nimport { ASSET_TYPE_ENUM } from '../constants/protocol.js'\n\nexport interface InscriptionClientOptions {\n stelaAddress: string\n provider: RpcProvider\n account?: Account\n}\n\nexport class InscriptionClient {\n private contract: Contract\n private address: string\n private account?: Account\n\n constructor(opts: InscriptionClientOptions) {\n this.address = opts.stelaAddress\n this.account = opts.account\n this.contract = new Contract(stelaAbi, opts.stelaAddress, opts.provider)\n }\n\n // ── Read Methods ───────────────────────────────────────────────────\n\n async getInscription(inscriptionId: bigint): Promise<StoredInscription> {\n const result = await this.contract.call('get_inscription', toU256(inscriptionId))\n return parseStoredInscription(result)\n }\n\n async getLocker(inscriptionId: bigint): Promise<string> {\n const result = await this.contract.call('get_locker', toU256(inscriptionId))\n return String((result as unknown[])[0])\n }\n\n async getInscriptionFee(): Promise<bigint> {\n const result = await this.contract.call('get_inscription_fee')\n return extractU256(result)\n }\n\n async convertToShares(inscriptionId: bigint, percentage: bigint): Promise<bigint> {\n const result = await this.contract.call('convert_to_shares', [\n ...toU256(inscriptionId),\n ...toU256(percentage),\n ])\n return extractU256(result)\n }\n\n async getNonce(address: string): Promise<bigint> {\n const result = await this.contract.call('nonces', [address], { blockIdentifier: 'latest' })\n return BigInt(String((result as unknown[])[0] ?? '0'))\n }\n\n async getRelayerFee(): Promise<bigint> {\n const result = await this.contract.call('get_relayer_fee')\n return extractU256(result)\n }\n\n async getTreasury(): Promise<string> {\n const result = await this.contract.call('get_treasury')\n return String((result as unknown[])[0])\n }\n\n async isPaused(): Promise<boolean> {\n const result = await this.contract.call('is_paused')\n return Boolean((result as unknown[])[0])\n }\n\n async isOrderRegistered(orderHash: string): Promise<boolean> {\n const result = await this.contract.call('is_order_registered', [orderHash])\n return Boolean((result as unknown[])[0])\n }\n\n async isOrderCancelled(orderHash: string): Promise<boolean> {\n const result = await this.contract.call('is_order_cancelled', [orderHash])\n return Boolean((result as unknown[])[0])\n }\n\n async getFilledBps(orderHash: string): Promise<bigint> {\n const result = await this.contract.call('get_filled_bps', [orderHash])\n return extractU256(result)\n }\n\n async getMakerMinNonce(maker: string): Promise<string> {\n const result = await this.contract.call('get_maker_min_nonce', [maker], { blockIdentifier: 'latest' })\n return String((result as unknown[])[0] ?? '0')\n }\n\n // ── Call Builders ──────────────────────────────────────────────────\n\n buildCreateInscription(params: InscriptionParams): Call {\n const calldata: string[] = [\n params.is_borrow ? '1' : '0',\n ...serializeAssets(params.debt_assets),\n ...serializeAssets(params.interest_assets),\n ...serializeAssets(params.collateral_assets),\n params.duration.toString(),\n params.deadline.toString(),\n params.multi_lender ? '1' : '0',\n ]\n return { contractAddress: this.address, entrypoint: 'create_inscription', calldata }\n }\n\n buildSignInscription(inscriptionId: bigint, bps: bigint): Call {\n return {\n contractAddress: this.address,\n entrypoint: 'sign_inscription',\n calldata: [...toU256(inscriptionId), ...toU256(bps)],\n }\n }\n\n buildCancelInscription(inscriptionId: bigint): Call {\n return {\n contractAddress: this.address,\n entrypoint: 'cancel_inscription',\n calldata: [...toU256(inscriptionId)],\n }\n }\n\n buildRepay(inscriptionId: bigint): Call {\n return {\n contractAddress: this.address,\n entrypoint: 'repay',\n calldata: [...toU256(inscriptionId)],\n }\n }\n\n buildLiquidate(inscriptionId: bigint): Call {\n return {\n contractAddress: this.address,\n entrypoint: 'liquidate',\n calldata: [...toU256(inscriptionId)],\n }\n }\n\n buildRedeem(inscriptionId: bigint, shares: bigint): Call {\n return {\n contractAddress: this.address,\n entrypoint: 'redeem',\n calldata: [...toU256(inscriptionId), ...toU256(shares)],\n }\n }\n\n buildPrivateRedeem(request: PrivateRedeemRequest, proof: string[]): Call {\n const calldata: string[] = [\n // PrivateRedeemRequest struct fields (must match Cairo Serde order)\n request.root,\n ...toU256(request.inscriptionId),\n ...toU256(request.shares),\n request.nullifier,\n request.changeCommitment,\n request.recipient,\n // proof array\n String(proof.length),\n ...proof,\n ]\n return { contractAddress: this.address, entrypoint: 'private_redeem', calldata }\n }\n\n /**\n * Build a shield() call on the privacy pool contract.\n * The depositor shields tokens into the pool, creating a commitment that can\n * later be consumed during private settlement.\n */\n buildShieldDeposit(params: {\n privacyPoolAddress: string\n token: string\n amount: bigint\n commitment: string\n }): Call {\n return {\n contractAddress: params.privacyPoolAddress,\n entrypoint: 'shield',\n calldata: [\n params.token,\n ...toU256(params.amount),\n params.commitment,\n ],\n }\n }\n\n /**\n * Build a settle() call for private settlement.\n *\n * In a private settlement, the lender is zero address and the lender_commitment\n * is the deposit commitment from the privacy pool. The contract skips lender\n * signature verification and instead consumes the deposit from the privacy pool.\n */\n buildSettlePrivate(params: {\n order: {\n borrower: string\n debtHash: string\n interestHash: string\n collateralHash: string\n debtCount: number\n interestCount: number\n collateralCount: number\n duration: bigint\n deadline: bigint\n multiLender: boolean\n nonce: bigint\n }\n debtAssets: Asset[]\n interestAssets: Asset[]\n collateralAssets: Asset[]\n borrowerSig: string[]\n offer: {\n orderHash: string\n issuedDebtPercentage: bigint\n nonce: bigint\n /** The deposit commitment from the privacy pool. */\n lenderCommitment: string\n }\n lenderSig: string[]\n }): Call {\n return this.buildSettle({\n ...params,\n offer: {\n ...params.offer,\n lender: '0x0',\n },\n })\n }\n\n buildSettle(params: {\n order: {\n borrower: string\n debtHash: string\n interestHash: string\n collateralHash: string\n debtCount: number\n interestCount: number\n collateralCount: number\n duration: bigint\n deadline: bigint\n multiLender: boolean\n nonce: bigint\n }\n debtAssets: Asset[]\n interestAssets: Asset[]\n collateralAssets: Asset[]\n borrowerSig: string[]\n offer: {\n orderHash: string\n lender: string\n issuedDebtPercentage: bigint\n nonce: bigint\n /** Privacy commitment. When non-zero, shares go to privacy pool. Default '0'. */\n lenderCommitment?: string\n }\n lenderSig: string[]\n }): Call {\n const calldata: string[] = [\n // Order struct fields\n params.order.borrower,\n params.order.debtHash,\n params.order.interestHash,\n params.order.collateralHash,\n String(params.order.debtCount),\n String(params.order.interestCount),\n String(params.order.collateralCount),\n params.order.duration.toString(),\n params.order.deadline.toString(),\n params.order.multiLender ? '1' : '0',\n params.order.nonce.toString(),\n // debt_assets array\n ...serializeAssets(params.debtAssets),\n // interest_assets array\n ...serializeAssets(params.interestAssets),\n // collateral_assets array\n ...serializeAssets(params.collateralAssets),\n // borrower_sig array\n String(params.borrowerSig.length),\n ...params.borrowerSig,\n // offer struct\n params.offer.orderHash,\n params.offer.lender,\n ...toU256(params.offer.issuedDebtPercentage),\n params.offer.nonce.toString(),\n params.offer.lenderCommitment ?? '0',\n // lender_sig array\n String(params.lenderSig.length),\n ...params.lenderSig,\n ]\n return { contractAddress: this.address, entrypoint: 'settle', calldata }\n }\n\n buildFillSignedOrder(order: SignedOrder, signature: string[], fillBps: bigint): Call {\n const calldata: string[] = [\n // SignedOrder struct fields\n order.maker,\n order.allowed_taker,\n ...toU256(order.inscription_id),\n ...toU256(order.bps),\n order.deadline.toString(),\n order.nonce,\n ...toU256(order.min_fill_bps),\n // signature array\n String(signature.length),\n ...signature,\n // fill_bps\n ...toU256(fillBps),\n ]\n return { contractAddress: this.address, entrypoint: 'fill_signed_order', calldata }\n }\n\n buildCancelOrder(order: SignedOrder): Call {\n const calldata: string[] = [\n order.maker,\n order.allowed_taker,\n ...toU256(order.inscription_id),\n ...toU256(order.bps),\n order.deadline.toString(),\n order.nonce,\n ...toU256(order.min_fill_bps),\n ]\n return { contractAddress: this.address, entrypoint: 'cancel_order', calldata }\n }\n\n buildCancelOrdersByNonce(minNonce: string): Call {\n return {\n contractAddress: this.address,\n entrypoint: 'cancel_orders_by_nonce',\n calldata: [minNonce],\n }\n }\n\n // ── Execute Methods ────────────────────────────────────────────────\n\n /**\n * Execute one or more calls via the connected account.\n * Pass approval calls to bundle ERC20 approve + protocol call atomically.\n */\n async execute(calls: Call[]): Promise<{ transaction_hash: string }> {\n if (!this.account) throw new Error('Account required for write operations')\n const result = await this.account.execute(calls)\n return { transaction_hash: result.transaction_hash }\n }\n\n async createInscription(params: InscriptionParams, approvals?: Call[]): Promise<{ transaction_hash: string }> {\n const calls = [...(approvals ?? []), this.buildCreateInscription(params)]\n return this.execute(calls)\n }\n\n async signInscription(inscriptionId: bigint, bps: bigint, approvals?: Call[]): Promise<{ transaction_hash: string }> {\n const calls = [...(approvals ?? []), this.buildSignInscription(inscriptionId, bps)]\n return this.execute(calls)\n }\n\n async cancelInscription(inscriptionId: bigint): Promise<{ transaction_hash: string }> {\n return this.execute([this.buildCancelInscription(inscriptionId)])\n }\n\n async repay(inscriptionId: bigint, approvals?: Call[]): Promise<{ transaction_hash: string }> {\n const calls = [...(approvals ?? []), this.buildRepay(inscriptionId)]\n return this.execute(calls)\n }\n\n async liquidate(inscriptionId: bigint): Promise<{ transaction_hash: string }> {\n return this.execute([this.buildLiquidate(inscriptionId)])\n }\n\n async redeem(inscriptionId: bigint, shares: bigint): Promise<{ transaction_hash: string }> {\n return this.execute([this.buildRedeem(inscriptionId, shares)])\n }\n\n async privateRedeem(request: PrivateRedeemRequest, proof: string[]): Promise<{ transaction_hash: string }> {\n return this.execute([this.buildPrivateRedeem(request, proof)])\n }\n\n async fillSignedOrder(order: SignedOrder, signature: string[], fillBps: bigint, approvals?: Call[]): Promise<{ transaction_hash: string }> {\n const calls = [...(approvals ?? []), this.buildFillSignedOrder(order, signature, fillBps)]\n return this.execute(calls)\n }\n\n async cancelOrder(order: SignedOrder): Promise<{ transaction_hash: string }> {\n return this.execute([this.buildCancelOrder(order)])\n }\n\n async cancelOrdersByNonce(minNonce: string): Promise<{ transaction_hash: string }> {\n return this.execute([this.buildCancelOrdersByNonce(minNonce)])\n }\n}\n\n// ── Helpers ────────────────────────────────────────────────────────────\n\nfunction serializeAssets(assets: Asset[]): string[] {\n const calldata: string[] = [String(assets.length)]\n for (const a of assets) {\n calldata.push(a.asset_address)\n calldata.push(String(ASSET_TYPE_ENUM[a.asset_type]))\n calldata.push(...toU256(a.value))\n calldata.push(...toU256(a.token_id))\n }\n return calldata\n}\n\nfunction extractU256(result: unknown): bigint {\n const arr = result as unknown[]\n if (typeof arr[0] === 'bigint') return arr[0]\n if (typeof arr[0] === 'object' && arr[0] !== null && 'low' in arr[0] && 'high' in arr[0]) {\n const u = arr[0] as { low: bigint; high: bigint }\n return fromU256(u)\n }\n return BigInt(String(arr[0]))\n}\n\nfunction parseStoredInscription(result: unknown): StoredInscription {\n const r = result as Record<string, unknown>\n // starknet.js v6 returns a named struct or array depending on call\n const get = (key: string, index: number): unknown => {\n if (key in r) return r[key]\n const arr = result as unknown[]\n return arr[index]\n }\n\n return {\n borrower: String(get('borrower', 0)),\n lender: String(get('lender', 1)),\n duration: BigInt(String(get('duration', 2))),\n deadline: BigInt(String(get('deadline', 3))),\n signed_at: BigInt(String(get('signed_at', 4))),\n issued_debt_percentage: extractFieldU256(get('issued_debt_percentage', 5)),\n is_repaid: Boolean(get('is_repaid', 6)),\n liquidated: Boolean(get('liquidated', 7)),\n multi_lender: Boolean(get('multi_lender', 8)),\n debt_asset_count: Number(get('debt_asset_count', 9)),\n interest_asset_count: Number(get('interest_asset_count', 10)),\n collateral_asset_count: Number(get('collateral_asset_count', 11)),\n }\n}\n\nfunction extractFieldU256(val: unknown): bigint {\n if (typeof val === 'bigint') return val\n if (typeof val === 'object' && val !== null && 'low' in val && 'high' in val) {\n return fromU256(val as { low: bigint; high: bigint })\n }\n return BigInt(String(val))\n}\n","import { Contract, type RpcProvider } from 'starknet'\nimport stelaAbi from '../abi/stela.json'\nimport { toU256 } from '../utils/u256.js'\n\nexport interface ShareClientOptions {\n stelaAddress: string\n provider: RpcProvider\n}\n\n/**\n * Client for reading ERC1155 share balances on the Stela contract.\n * Inscription IDs are token IDs — each lender receives shares as ERC1155 tokens.\n */\nexport class ShareClient {\n private contract: Contract\n\n constructor(opts: ShareClientOptions) {\n this.contract = new Contract(stelaAbi, opts.stelaAddress, opts.provider)\n }\n\n /** Get share balance for an account on a specific inscription */\n async balanceOf(account: string, inscriptionId: bigint): Promise<bigint> {\n const result = await this.contract.call('balance_of', [account, ...toU256(inscriptionId)])\n return extractBigInt(result)\n }\n\n /** Get share balances for multiple account/inscription pairs */\n async balanceOfBatch(accounts: string[], inscriptionIds: bigint[]): Promise<bigint[]> {\n if (accounts.length !== inscriptionIds.length) {\n throw new Error('accounts and inscriptionIds must have the same length')\n }\n const result = await this.contract.call('balance_of_batch', [\n accounts,\n inscriptionIds.map((id) => toU256(id)),\n ])\n const arr = result as unknown[]\n const balances = arr[0] as unknown[]\n return balances.map((b) => BigInt(String(b)))\n }\n\n /** Check if an operator is approved for all tokens of an owner */\n async isApprovedForAll(owner: string, operator: string): Promise<boolean> {\n const result = await this.contract.call('is_approved_for_all', [owner, operator])\n return Boolean((result as unknown[])[0])\n }\n}\n\nfunction extractBigInt(result: unknown): bigint {\n const arr = result as unknown[]\n if (typeof arr[0] === 'bigint') return arr[0]\n return BigInt(String(arr[0]))\n}\n","[\n {\n \"type\": \"struct\",\n \"name\": \"core::integer::u256\",\n \"members\": [\n { \"name\": \"low\", \"type\": \"core::integer::u128\" },\n { \"name\": \"high\", \"type\": \"core::integer::u128\" }\n ]\n },\n {\n \"type\": \"interface\",\n \"name\": \"erc20::IERC20\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"approve\",\n \"inputs\": [\n { \"name\": \"spender\", \"type\": \"core::starknet::contract_address::ContractAddress\" },\n { \"name\": \"amount\", \"type\": \"core::integer::u256\" }\n ],\n \"outputs\": [{ \"type\": \"core::bool\" }],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"balance_of\",\n \"inputs\": [\n { \"name\": \"account\", \"type\": \"core::starknet::contract_address::ContractAddress\" }\n ],\n \"outputs\": [{ \"type\": \"core::integer::u256\" }],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"allowance\",\n \"inputs\": [\n { \"name\": \"owner\", \"type\": \"core::starknet::contract_address::ContractAddress\" },\n { \"name\": \"spender\", \"type\": \"core::starknet::contract_address::ContractAddress\" }\n ],\n \"outputs\": [{ \"type\": \"core::integer::u256\" }],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"balanceOf\",\n \"inputs\": [\n { \"name\": \"account\", \"type\": \"core::starknet::contract_address::ContractAddress\" }\n ],\n \"outputs\": [{ \"type\": \"core::integer::u256\" }],\n \"state_mutability\": \"view\"\n }\n ]\n }\n]\n","[\n {\n \"type\": \"enum\",\n \"name\": \"core::bool\",\n \"variants\": [\n { \"name\": \"False\", \"type\": \"()\" },\n { \"name\": \"True\", \"type\": \"()\" }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::starknet::account::Call\",\n \"members\": [\n { \"name\": \"to\", \"type\": \"core::starknet::contract_address::ContractAddress\" },\n { \"name\": \"selector\", \"type\": \"core::felt252\" },\n { \"name\": \"calldata\", \"type\": \"core::array::Array::<core::felt252>\" }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::array::Span::<core::felt252>\",\n \"members\": [\n { \"name\": \"snapshot\", \"type\": \"@core::array::Array::<core::felt252>\" }\n ]\n },\n {\n \"type\": \"interface\",\n \"name\": \"locker::ILockerAccount\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"__execute__\",\n \"inputs\": [\n { \"name\": \"calls\", \"type\": \"core::array::Span::<core::starknet::account::Call>\" }\n ],\n \"outputs\": [\n { \"type\": \"core::array::Array::<core::array::Span::<core::felt252>>\" }\n ],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"is_unlocked\",\n \"inputs\": [],\n \"outputs\": [{ \"type\": \"core::bool\" }],\n \"state_mutability\": \"view\"\n }\n ]\n }\n]\n","import { Contract, type RpcProvider, type Account, hash } from 'starknet'\nimport type { Call } from '../types/common.js'\nimport type { LockerState } from '../types/locker.js'\nimport stelaAbi from '../abi/stela.json'\nimport erc20Abi from '../abi/erc20.json'\nimport lockerAbi from '../abi/locker.json'\nimport { toU256 } from '../utils/u256.js'\n\nexport class LockerClient {\n constructor(\n private stelaContract: Contract,\n private provider: RpcProvider,\n private account?: Account,\n ) {}\n\n /** Get the Locker TBA address for an inscription */\n async getLockerAddress(inscriptionId: bigint): Promise<string> {\n const contract = new Contract(stelaAbi, this.stelaContract.address, this.provider)\n const result = await contract.call('get_locker', toU256(inscriptionId))\n return String((result as unknown[])[0])\n }\n\n /** Check if a locker is unlocked */\n async isUnlocked(inscriptionId: bigint): Promise<boolean> {\n const address = await this.getLockerAddress(inscriptionId)\n const locker = new Contract(lockerAbi, address, this.provider)\n const result = await locker.call('is_unlocked')\n return Boolean((result as unknown[])[0])\n }\n\n /** Get full locker state */\n async getLockerState(inscriptionId: bigint): Promise<LockerState> {\n const address = await this.getLockerAddress(inscriptionId)\n const locker = new Contract(lockerAbi, address, this.provider)\n const result = await locker.call('is_unlocked')\n const isUnlocked = Boolean((result as unknown[])[0])\n return { address, isUnlocked }\n }\n\n /** Read ERC20 balance held by a locker */\n async getLockerBalance(inscriptionId: bigint, tokenAddress: string): Promise<bigint> {\n const lockerAddress = await this.getLockerAddress(inscriptionId)\n const token = new Contract(erc20Abi, tokenAddress, this.provider)\n const result = await token.call('balance_of', [lockerAddress])\n return BigInt((result as unknown[])[0] as string | bigint)\n }\n\n /** Read multiple ERC20 balances held by a locker */\n async getLockerBalances(inscriptionId: bigint, tokenAddresses: string[]): Promise<Map<string, bigint>> {\n const lockerAddress = await this.getLockerAddress(inscriptionId)\n const balances = new Map<string, bigint>()\n for (const addr of tokenAddresses) {\n const token = new Contract(erc20Abi, addr, this.provider)\n const result = await token.call('balance_of', [lockerAddress])\n balances.set(addr, BigInt((result as unknown[])[0] as string | bigint))\n }\n return balances\n }\n\n // ---- Governance execution through Locker ----\n\n /**\n * Build a Call to execute an arbitrary call through the Locker TBA.\n * The Locker's __execute__ function proxies calls from the locker's address.\n * This is how a DAO retains governance power over locked collateral.\n *\n * The locker uses SNIP-6 account standard (__execute__). The calldata\n * encodes an array of Call structs, each with:\n * - to: felt252 (ContractAddress)\n * - selector: felt252\n * - calldata: Array<felt252> (length-prefixed)\n */\n buildLockerExecute(lockerAddress: string, innerCalls: Call[]): Call {\n // Serialize Call[] into flat felt252 array for the Span<Call> parameter.\n // Format: [num_calls, call0_to, call0_selector, call0_calldata_len, ...call0_calldata, ...]\n const calldata: string[] = [innerCalls.length.toString()]\n for (const c of innerCalls) {\n calldata.push(c.contractAddress)\n calldata.push(hash.getSelectorFromName(c.entrypoint))\n calldata.push(c.calldata.length.toString())\n calldata.push(...c.calldata)\n }\n\n return {\n contractAddress: lockerAddress,\n entrypoint: '__execute__',\n calldata,\n }\n }\n\n /**\n * Execute a governance call through the Locker.\n * Requires account to be the inscription's borrower (NFT owner).\n */\n async executeThrough(inscriptionId: bigint, innerCall: Call): Promise<{ transaction_hash: string }> {\n if (!this.account) throw new Error('Account required for write operations')\n const lockerAddress = await this.getLockerAddress(inscriptionId)\n const call = this.buildLockerExecute(lockerAddress, [innerCall])\n const result = await this.account.execute([call])\n return { transaction_hash: result.transaction_hash }\n }\n\n /**\n * Execute multiple governance calls through the Locker in a single tx.\n */\n async executeThroughBatch(inscriptionId: bigint, innerCalls: Call[]): Promise<{ transaction_hash: string }> {\n if (!this.account) throw new Error('Account required for write operations')\n const lockerAddress = await this.getLockerAddress(inscriptionId)\n const call = this.buildLockerExecute(lockerAddress, innerCalls)\n const result = await this.account.execute([call])\n return { transaction_hash: result.transaction_hash }\n }\n}\n","import type {\n InscriptionRow,\n AssetRow,\n ApiListResponse,\n ApiDetailResponse,\n TreasuryAsset,\n ShareBalance,\n LockerInfo,\n} from '../types/api.js'\n\nexport interface ApiClientOptions {\n baseUrl?: string\n}\n\nexport interface ListInscriptionsParams {\n status?: string\n address?: string\n page?: number\n limit?: number\n}\n\n/**\n * HTTP client for the Stela indexer API.\n * Provides typed access to indexed inscription data, treasury views, and locker info.\n */\nexport class ApiClient {\n private baseUrl: string\n\n constructor(opts?: ApiClientOptions) {\n this.baseUrl = (opts?.baseUrl ?? 'https://stela-dapp.xyz/api').replace(/\\/$/, '')\n }\n\n /** List inscriptions with optional filters */\n async listInscriptions(params?: ListInscriptionsParams): Promise<ApiListResponse<InscriptionRow>> {\n const query = new URLSearchParams()\n if (params?.status) query.set('status', params.status)\n if (params?.address) query.set('address', params.address)\n if (params?.page) query.set('page', String(params.page))\n if (params?.limit) query.set('limit', String(params.limit))\n const qs = query.toString()\n return this.get<ApiListResponse<InscriptionRow>>(`/inscriptions${qs ? `?${qs}` : ''}`)\n }\n\n /** Get a single inscription by ID */\n async getInscription(id: string): Promise<ApiDetailResponse<InscriptionRow>> {\n return this.get<ApiDetailResponse<InscriptionRow>>(`/inscriptions/${id}`)\n }\n\n /** Get events for a specific inscription */\n async getInscriptionEvents(id: string): Promise<ApiListResponse<InscriptionEventRow>> {\n return this.get<ApiListResponse<InscriptionEventRow>>(`/inscriptions/${id}/events`)\n }\n\n /** Get treasury asset balances for an address */\n async getTreasuryView(address: string): Promise<ApiListResponse<TreasuryAsset>> {\n const query = new URLSearchParams({ address })\n return this.get<ApiListResponse<TreasuryAsset>>(`/treasury?${query}`)\n }\n\n /** Get locker info for inscriptions of an address */\n async getLockers(address: string): Promise<ApiListResponse<LockerInfo>> {\n const query = new URLSearchParams({ address })\n return this.get<ApiListResponse<LockerInfo>>(`/lockers?${query}`)\n }\n\n /** Get share balances for an address */\n async getShareBalances(address: string): Promise<ApiListResponse<ShareBalance>> {\n const query = new URLSearchParams({ address })\n return this.get<ApiListResponse<ShareBalance>>(`/shares?${query}`)\n }\n\n private async get<T>(path: string): Promise<T> {\n const url = `${this.baseUrl}${path}`\n const response = await fetch(url)\n if (!response.ok) {\n throw new ApiError(response.status, `API request failed: ${response.status} ${response.statusText}`, url)\n }\n return response.json() as Promise<T>\n }\n}\n\nexport class ApiError extends Error {\n constructor(\n public readonly status: number,\n message: string,\n public readonly url: string,\n ) {\n super(message)\n this.name = 'ApiError'\n }\n}\n\n/** Shape of an inscription event row from the API */\nexport interface InscriptionEventRow {\n id: number\n inscription_id: string\n event_type: string\n tx_hash: string\n block_number: number\n timestamp: string | null\n data: Record<string, unknown> | null\n}\n","import { Contract, type RpcProvider, type Account } from 'starknet'\nimport type { Network } from '../types/common.js'\nimport { STELA_ADDRESS, resolveNetwork } from '../constants/addresses.js'\nimport { InscriptionClient } from './inscription-client.js'\nimport { ShareClient } from './share-client.js'\nimport { LockerClient } from './locker-client.js'\nimport { ApiClient } from './api-client.js'\nimport stelaAbi from '../abi/stela.json'\n\nexport interface StelaSdkOptions {\n /** StarkNet RPC provider */\n provider: RpcProvider\n /** Connected account for write operations (optional for read-only) */\n account?: Account\n /** Network name or auto-detect from provider */\n network?: Network | string\n /** Custom API base URL */\n apiBaseUrl?: string\n /** Override the contract address (for custom deployments) */\n stelaAddress?: string\n}\n\n/**\n * Main SDK facade that wires together all clients.\n *\n * ```ts\n * const sdk = new StelaSdk({ provider, account, network: 'sepolia' })\n * const inscription = await sdk.inscriptions.getInscription(1n)\n * const shares = await sdk.shares.balanceOf(myAddress, 1n)\n * ```\n */\nexport class StelaSdk {\n readonly inscriptions: InscriptionClient\n readonly shares: ShareClient\n readonly locker: LockerClient\n readonly api: ApiClient\n readonly network: Network\n readonly stelaAddress: string\n\n constructor(opts: StelaSdkOptions) {\n this.network = resolveNetwork(opts.network)\n this.stelaAddress = opts.stelaAddress ?? STELA_ADDRESS[this.network]\n\n this.inscriptions = new InscriptionClient({\n stelaAddress: this.stelaAddress,\n provider: opts.provider,\n account: opts.account,\n })\n\n this.shares = new ShareClient({\n stelaAddress: this.stelaAddress,\n provider: opts.provider,\n })\n\n const stelaContract = new Contract(stelaAbi, this.stelaAddress, opts.provider)\n this.locker = new LockerClient(stelaContract, opts.provider, opts.account)\n\n this.api = new ApiClient({ baseUrl: opts.apiBaseUrl })\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/types/common.ts","../src/constants/addresses.ts","../src/constants/protocol.ts","../src/utils/u256.ts","../src/utils/address.ts","../src/utils/amount.ts","../src/utils/format.ts","../src/utils/status.ts","../src/tokens/registry.ts","../src/math/shares.ts","../src/events/selectors.ts","../src/events/parser.ts","../src/offchain/hash.ts","../src/offchain/typed-data.ts","../src/offchain/signature.ts","../src/privacy/commitment.ts","../src/abi/stela.json","../src/client/inscription-client.ts","../src/client/share-client.ts","../src/abi/erc20.json","../src/abi/locker.json","../src/client/locker-client.ts","../src/client/api-client.ts","../src/client/stela-sdk.ts"],"names":["uint256","addAddressPadding","validateAndParseAddress","hash","shortString","Contract"],"mappings":"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","file":"index.cjs","sourcesContent":["/** Supported StarkNet networks */\nexport type Network = 'sepolia' | 'mainnet'\n\n/** Token standard types supported by the Stela protocol */\nexport type AssetType = 'ERC20' | 'ERC721' | 'ERC1155' | 'ERC4626'\n\n/** Possible states of an inscription */\nexport type InscriptionStatus =\n | 'open'\n | 'partial'\n | 'filled'\n | 'repaid'\n | 'liquidated'\n | 'expired'\n | 'cancelled'\n\n/** All valid inscription statuses as an array */\nexport const VALID_STATUSES: readonly InscriptionStatus[] = [\n 'open',\n 'partial',\n 'filled',\n 'repaid',\n 'liquidated',\n 'expired',\n 'cancelled',\n] as const\n\n/** Human-readable labels for each inscription status */\nexport const STATUS_LABELS: Record<InscriptionStatus, string> = {\n open: 'Open',\n partial: 'Partial',\n filled: 'Filled',\n repaid: 'Repaid',\n liquidated: 'Liquidated',\n expired: 'Expired',\n cancelled: 'Cancelled',\n}\n\n/** A single StarkNet call (matches starknet.js Call type) */\nexport interface Call {\n contractAddress: string\n entrypoint: string\n calldata: string[]\n}\n","import type { Network } from '../types/common.js'\n\n/** Deployed Stela protocol contract addresses per network */\nexport const STELA_ADDRESS: Record<Network, string> = {\n sepolia: '0x03e88d289b9ce13e5d6e6ca5159930f9227b08cfbd004231a09a1d6f48568973',\n mainnet: '0x0',\n} as const\n\nconst VALID_NETWORKS: Network[] = ['sepolia', 'mainnet']\n\n/** Validate and return a Network value, defaulting to 'sepolia' */\nexport function resolveNetwork(raw?: string): Network {\n const trimmed = raw?.trim()\n if (trimmed && VALID_NETWORKS.includes(trimmed as Network)) return trimmed as Network\n if (trimmed) console.warn(`Invalid NETWORK \"${trimmed}\", falling back to sepolia`)\n return 'sepolia'\n}\n\n/** SNIP-12 chain ID shortstrings per network */\nexport const CHAIN_ID: Record<Network, string> = {\n sepolia: 'SN_SEPOLIA',\n mainnet: 'SN_MAIN',\n} as const\n\n/** Block explorer base URLs per network (for transaction links) */\nexport const EXPLORER_TX_URL: Record<Network, string> = {\n sepolia: 'https://sepolia.voyager.online/tx',\n mainnet: 'https://voyager.online/tx',\n} as const\n","import type { AssetType } from '../types/common.js'\n\n/** Maximum basis points (100%) */\nexport const MAX_BPS = 10_000n\n\n/** Virtual share offset used in share calculations (1e16) */\nexport const VIRTUAL_SHARE_OFFSET = 10_000_000_000_000_000n\n\n/** Numeric enum values for asset types (matches Cairo contract) */\nexport const ASSET_TYPE_ENUM: Record<AssetType, number> = {\n ERC20: 0,\n ERC721: 1,\n ERC1155: 2,\n ERC4626: 3,\n}\n\n/** Reverse mapping: numeric enum value to AssetType name */\nexport const ASSET_TYPE_NAMES: Record<number, AssetType> = {\n 0: 'ERC20',\n 1: 'ERC721',\n 2: 'ERC1155',\n 3: 'ERC4626',\n}\n","import { uint256 } from 'starknet'\n\nconst U128_MAX = (1n << 128n) - 1n\nconst U256_MAX = (1n << 256n) - 1n\n\n/** Convert a bigint to a [low, high] calldata pair for StarkNet u256 */\nexport const toU256 = (n: bigint): [string, string] => {\n if (n < 0n || n > U256_MAX) throw new RangeError(`Value out of u256 range: ${n}`)\n const { low, high } = uint256.bnToUint256(n)\n return [low.toString(), high.toString()]\n}\n\n/** Convert a { low, high } u256 pair back to a bigint */\nexport const fromU256 = (u: { low: bigint; high: bigint }): bigint => {\n if (u.low < 0n || u.low > U128_MAX || u.high < 0n || u.high > U128_MAX) {\n throw new RangeError('Invalid u256 component: low and high must be u128')\n }\n return uint256.uint256ToBN(u)\n}\n\n/** Convert a u256 { low, high } to a 0x-prefixed 64-char hex string (for DB keys) */\nexport const inscriptionIdToHex = (u: { low: bigint; high: bigint }): string =>\n '0x' + fromU256(u).toString(16).padStart(64, '0')\n","import { addAddressPadding, validateAndParseAddress } from 'starknet'\n\n/** Convert any address-like value (string, bigint, number) to a hex string */\nexport function toHex(value: unknown): string {\n if (typeof value === 'string') return value\n if (typeof value === 'bigint') return '0x' + value.toString(16)\n if (typeof value === 'number') return '0x' + value.toString(16)\n return String(value)\n}\n\n/** Truncate an address for display: 0x1a2b...3c4d */\nexport function formatAddress(address: unknown): string {\n try {\n const hex = toHex(address)\n const padded = addAddressPadding(hex)\n return `${padded.slice(0, 6)}...${padded.slice(-4)}`\n } catch {\n return String(address).slice(0, 10) + '...'\n }\n}\n\n/** Normalize an address to a fully-padded, checksummed hex string */\nexport function normalizeAddress(address: unknown): string {\n const hex = toHex(address)\n return addAddressPadding(validateAndParseAddress(hex))\n}\n\n/** Compare two addresses for equality (handles different padding/casing) */\nexport function addressesEqual(a: unknown, b: unknown): boolean {\n try {\n return normalizeAddress(a) === normalizeAddress(b)\n } catch {\n return toHex(a).toLowerCase() === toHex(b).toLowerCase()\n }\n}\n","/** Convert human-readable amount (e.g. \"1.5\") to on-chain value using decimals */\nexport function parseAmount(humanAmount: string, decimals: number): bigint {\n if (!humanAmount || humanAmount === '.' || humanAmount === '') return 0n\n const parts = humanAmount.split('.')\n const whole = parts[0] ?? '0'\n const frac = (parts[1] ?? '').padEnd(decimals, '0').slice(0, decimals)\n return BigInt(whole + frac)\n}\n\n/** Format a raw token value (string) given its decimals */\nexport function formatTokenValue(raw: string | null, decimals: number): string {\n if (!raw || raw === '0') return '0'\n const n = BigInt(raw)\n if (decimals === 0) return n.toString()\n const divisor = 10n ** BigInt(decimals)\n const whole = n / divisor\n const frac = n % divisor\n if (frac === 0n) return whole.toString()\n const fracStr = frac.toString().padStart(decimals, '0').replace(/0+$/, '')\n return `${whole}.${fracStr}`\n}\n","/** Format duration in seconds to human-readable (e.g. \"7d 0h\", \"2h\", \"30m\") */\nexport function formatDuration(seconds: number | bigint): string {\n const s = Number(seconds)\n if (s < 3600) return `${Math.floor(s / 60)}m`\n const h = Math.floor(s / 3600)\n if (h >= 24) return `${Math.floor(h / 24)}d ${h % 24}h`\n return `${h}h`\n}\n\n/** Format a unix timestamp (seconds) to locale string */\nexport function formatTimestamp(ts: bigint): string {\n if (ts === 0n) return '--'\n return new Date(Number(ts) * 1000).toLocaleString()\n}\n","import type { InscriptionStatus } from '../types/common.js'\nimport { MAX_BPS } from '../constants/protocol.js'\n\n/** Input shape for computeStatus — accepts both bigint and number fields */\nexport interface StatusInput {\n signed_at: number | bigint\n duration: number | bigint\n issued_debt_percentage: number | bigint\n is_repaid: boolean\n liquidated: boolean\n deadline?: number | bigint\n status?: string\n}\n\n/** Compute the inscription status from on-chain fields */\nexport function computeStatus(a: StatusInput, nowSeconds?: number): InscriptionStatus {\n if (a.is_repaid) return 'repaid'\n if (a.liquidated) return 'liquidated'\n if (a.status === 'cancelled') return 'cancelled'\n\n const now = nowSeconds ?? Math.floor(Date.now() / 1000)\n const signedAt = Number(a.signed_at)\n const duration = Number(a.duration)\n const deadline = a.deadline !== undefined ? Number(a.deadline) : 0\n const issuedPct = BigInt(a.issued_debt_percentage)\n\n // Unsigned inscription\n if (signedAt === 0) {\n // If there's a deadline and it has passed, the inscription expired\n if (deadline > 0 && now > deadline) return 'expired'\n return 'open'\n }\n\n // Partially filled\n if (issuedPct < MAX_BPS) return 'partial'\n\n // Fully filled — check if loan duration has elapsed\n if (now > signedAt + duration) return 'expired'\n\n return 'filled'\n}\n","import type { TokenInfo } from './types.js'\n\n/**\n * Curated StarkNet token list.\n * Addresses sourced from official deployments.\n */\nexport const TOKENS: TokenInfo[] = [\n {\n symbol: 'ETH',\n name: 'Ether',\n decimals: 18,\n logoUrl:\n 'https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/info/logo.png',\n addresses: {\n sepolia: '0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7',\n mainnet: '0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7',\n },\n },\n {\n symbol: 'STRK',\n name: 'Starknet Token',\n decimals: 18,\n logoUrl: 'https://assets.coingecko.com/coins/images/26433/standard/starknet.png',\n addresses: {\n sepolia: '0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d',\n mainnet: '0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d',\n },\n },\n {\n symbol: 'USDC',\n name: 'USD Coin',\n decimals: 6,\n logoUrl:\n 'https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48/logo.png',\n addresses: {\n sepolia: '0x053b40a647cedfca6ca84f542a0fe36736031905a9639a7f19a3c1e66bfd5080',\n mainnet: '0x053c91253bc9682c04929ca02ed00b3e423f6710d2ee7e0d5ebb06f3ecf368a8',\n },\n },\n {\n symbol: 'USDT',\n name: 'Tether USD',\n decimals: 6,\n logoUrl:\n 'https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0xdAC17F958D2ee523a2206206994597C13D831ec7/logo.png',\n addresses: {\n sepolia: '0x07394cbe418daa16e42b87ba67372d4ab4a5df0b05c6e554d158577e75e7777c',\n mainnet: '0x068f5c6a61780768455de69077e07e89787839bf8166decfbf92b645209c0fb8',\n },\n },\n {\n symbol: 'WBTC',\n name: 'Wrapped Bitcoin',\n decimals: 8,\n logoUrl:\n 'https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599/logo.png',\n addresses: {\n sepolia: '0x012d537dc323c439dc65c976fad242d5610d27cfb5f31689a0a319b8be7f3d56',\n mainnet: '0x03fe2b97c1fd336e750087d68b9b867997fd64a2661ff3ca5a7c771641e8e7ac',\n },\n },\n {\n symbol: 'DAI',\n name: 'Dai Stablecoin',\n decimals: 18,\n logoUrl:\n 'https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0x6B175474E89094C44Da98b954EedeAC495271d0F/logo.png',\n addresses: {\n mainnet: '0x00da114221cb83fa859dbdb4c44beeaa0bb37c7537ad5ae66fe5e0efd20e6eb3',\n },\n },\n {\n symbol: 'wstETH',\n name: 'Wrapped stETH',\n decimals: 18,\n logoUrl: 'https://assets.coingecko.com/coins/images/18834/standard/wstETH.png',\n addresses: {\n sepolia: '0x0735d0f09a4e8bf8a17005fa35061b5957dcaa56889fc75df9ff7c0d36a4c5e0',\n mainnet: '0x042b8f0484674ca266ac5d08e4ac6a3fe65bd3129795def2dca5c34ecc5f96d2',\n },\n },\n // Mock tokens (Stela Sepolia testnet)\n {\n symbol: 'mUSDC',\n name: 'Mock USDC',\n decimals: 6,\n addresses: {\n sepolia: '0x034a0cf09c79e7f20fb2136212f27b7dd88e91f9a24b2ac50c5c41ff6b30c59d',\n },\n },\n {\n symbol: 'mWETH',\n name: 'Mock WETH',\n decimals: 18,\n addresses: {\n sepolia: '0x07e86764396d61d2179cd1a48033fa4f30897cb172464961a80649aff4da9bdd',\n },\n },\n {\n symbol: 'mDAI',\n name: 'Mock DAI',\n decimals: 18,\n addresses: {\n sepolia: '0x0479f31a23241b1337375b083099bd1672716edbf908b1b30148a648657a1cee',\n },\n },\n {\n symbol: 'StelaNFT',\n name: 'Stela NFT',\n decimals: 0,\n addresses: {\n sepolia: '0x04f2345306bf8ef1c8c1445661354ef08421aa092459445a5d6b46641237e943',\n },\n },\n]\n\n/** Strip leading zeros after 0x for consistent comparison */\nfunction normalizeHex(addr: string): string {\n return '0x' + addr.replace(/^0x0*/i, '').toLowerCase()\n}\n\n/** Get tokens available on a specific network */\nexport function getTokensForNetwork(network: string): TokenInfo[] {\n return TOKENS.filter((t) => t.addresses[network as keyof typeof t.addresses] !== undefined)\n}\n\n/** Find a token by its address (any network) */\nexport function findTokenByAddress(address: string): TokenInfo | undefined {\n const normalized = normalizeHex(address)\n return TOKENS.find((t) =>\n Object.values(t.addresses).some((a) => a !== undefined && normalizeHex(a) === normalized),\n )\n}\n","import { MAX_BPS, VIRTUAL_SHARE_OFFSET } from '../constants/protocol.js'\n\n/** Convert a fill percentage to shares, matching the contract's share math */\nexport function convertToShares(\n percentage: bigint,\n totalSupply: bigint,\n currentIssuedPercentage: bigint,\n): bigint {\n const denominator = currentIssuedPercentage === 0n ? 1n : currentIssuedPercentage\n return (percentage * (totalSupply + VIRTUAL_SHARE_OFFSET)) / denominator\n}\n\n/** Scale a value by a percentage in basis points */\nexport function scaleByPercentage(value: bigint, percentage: bigint): bigint {\n return (value * percentage) / MAX_BPS\n}\n\n/** Convert shares back to a percentage of the inscription */\nexport function sharesToPercentage(\n shares: bigint,\n totalSupply: bigint,\n currentIssuedPercentage: bigint,\n): bigint {\n const effectivePct = currentIssuedPercentage === 0n ? 1n : currentIssuedPercentage\n return (shares * effectivePct) / (totalSupply + VIRTUAL_SHARE_OFFSET)\n}\n\n/** Calculate the fee portion of shares given a fee in basis points */\nexport function calculateFeeShares(shares: bigint, feeBps: bigint): bigint {\n return (shares * feeBps) / MAX_BPS\n}\n","import { hash } from 'starknet'\n\n/** Event selectors for all Stela protocol events */\nexport const SELECTORS = {\n InscriptionCreated: hash.getSelectorFromName('InscriptionCreated'),\n InscriptionSigned: hash.getSelectorFromName('InscriptionSigned'),\n InscriptionCancelled: hash.getSelectorFromName('InscriptionCancelled'),\n InscriptionRepaid: hash.getSelectorFromName('InscriptionRepaid'),\n InscriptionLiquidated: hash.getSelectorFromName('InscriptionLiquidated'),\n SharesRedeemed: hash.getSelectorFromName('SharesRedeemed'),\n TransferSingle: hash.getSelectorFromName('TransferSingle'),\n OrderSettled: hash.getSelectorFromName('OrderSettled'),\n OrderFilled: hash.getSelectorFromName('OrderFilled'),\n OrderCancelled: hash.getSelectorFromName('OrderCancelled'),\n OrdersBulkCancelled: hash.getSelectorFromName('OrdersBulkCancelled'),\n} as const\n","import { uint256 } from 'starknet'\nimport type { RawEvent, StelaEvent } from '../types/events.js'\nimport { SELECTORS } from './selectors.js'\n\n/** Convert two felt strings (low, high) into a bigint */\nfunction feltsToU256(low: string, high: string): bigint {\n return uint256.uint256ToBN({ low: BigInt(low), high: BigInt(high) })\n}\n\n/** Parse a single raw event into a typed StelaEvent. Returns null if unrecognized. */\nexport function parseEvent(raw: RawEvent): StelaEvent | null {\n const selector = raw.keys[0]\n\n switch (selector) {\n case SELECTORS.InscriptionCreated: {\n // keys: [selector, id_low, id_high, creator]\n // data: [is_borrow]\n return {\n type: 'InscriptionCreated',\n inscription_id: feltsToU256(raw.keys[1], raw.keys[2]),\n creator: raw.keys[3],\n is_borrow: BigInt(raw.data[0]) !== 0n,\n transaction_hash: raw.transaction_hash,\n block_number: raw.block_number,\n }\n }\n\n case SELECTORS.InscriptionSigned: {\n // keys: [selector, id_low, id_high, borrower, lender]\n // data: [pct_low, pct_high, shares_low, shares_high]\n return {\n type: 'InscriptionSigned',\n inscription_id: feltsToU256(raw.keys[1], raw.keys[2]),\n borrower: raw.keys[3],\n lender: raw.keys[4],\n issued_debt_percentage: feltsToU256(raw.data[0], raw.data[1]),\n shares_minted: feltsToU256(raw.data[2], raw.data[3]),\n transaction_hash: raw.transaction_hash,\n block_number: raw.block_number,\n }\n }\n\n case SELECTORS.InscriptionCancelled: {\n // keys: [selector, id_low, id_high]\n // data: [creator]\n return {\n type: 'InscriptionCancelled',\n inscription_id: feltsToU256(raw.keys[1], raw.keys[2]),\n creator: raw.data[0],\n transaction_hash: raw.transaction_hash,\n block_number: raw.block_number,\n }\n }\n\n case SELECTORS.InscriptionRepaid: {\n // keys: [selector, id_low, id_high]\n // data: [repayer]\n return {\n type: 'InscriptionRepaid',\n inscription_id: feltsToU256(raw.keys[1], raw.keys[2]),\n repayer: raw.data[0],\n transaction_hash: raw.transaction_hash,\n block_number: raw.block_number,\n }\n }\n\n case SELECTORS.InscriptionLiquidated: {\n // keys: [selector, id_low, id_high]\n // data: [liquidator]\n return {\n type: 'InscriptionLiquidated',\n inscription_id: feltsToU256(raw.keys[1], raw.keys[2]),\n liquidator: raw.data[0],\n transaction_hash: raw.transaction_hash,\n block_number: raw.block_number,\n }\n }\n\n case SELECTORS.SharesRedeemed: {\n // keys: [selector, id_low, id_high, redeemer]\n // data: [shares_low, shares_high]\n return {\n type: 'SharesRedeemed',\n inscription_id: feltsToU256(raw.keys[1], raw.keys[2]),\n redeemer: raw.keys[3],\n shares: feltsToU256(raw.data[0], raw.data[1]),\n transaction_hash: raw.transaction_hash,\n block_number: raw.block_number,\n }\n }\n\n case SELECTORS.TransferSingle: {\n // keys: [selector, operator, from, to]\n // data: [id_low, id_high, value_low, value_high]\n return {\n type: 'TransferSingle',\n operator: raw.keys[1],\n from: raw.keys[2],\n to: raw.keys[3],\n id: feltsToU256(raw.data[0], raw.data[1]),\n value: feltsToU256(raw.data[2], raw.data[3]),\n transaction_hash: raw.transaction_hash,\n block_number: raw.block_number,\n }\n }\n\n case SELECTORS.OrderSettled: {\n // keys: [selector, id_low, id_high, borrower, lender]\n // data: [relayer, fee_low, fee_high]\n return {\n type: 'OrderSettled',\n inscription_id: feltsToU256(raw.keys[1], raw.keys[2]),\n borrower: raw.keys[3],\n lender: raw.keys[4],\n relayer: raw.data[0],\n relayer_fee_amount: feltsToU256(raw.data[1], raw.data[2]),\n transaction_hash: raw.transaction_hash,\n block_number: raw.block_number,\n }\n }\n\n case SELECTORS.OrderFilled: {\n // keys: [selector, id_low, id_high, order_hash, taker]\n // data: [fill_bps_low, fill_bps_high, total_filled_bps_low, total_filled_bps_high]\n return {\n type: 'OrderFilled',\n inscription_id: feltsToU256(raw.keys[1], raw.keys[2]),\n order_hash: raw.keys[3],\n taker: raw.keys[4],\n fill_bps: feltsToU256(raw.data[0], raw.data[1]),\n total_filled_bps: feltsToU256(raw.data[2], raw.data[3]),\n transaction_hash: raw.transaction_hash,\n block_number: raw.block_number,\n }\n }\n\n case SELECTORS.OrderCancelled: {\n // keys: [selector, order_hash]\n // data: [maker]\n return {\n type: 'OrderCancelled',\n order_hash: raw.keys[1],\n maker: raw.data[0],\n transaction_hash: raw.transaction_hash,\n block_number: raw.block_number,\n }\n }\n\n case SELECTORS.OrdersBulkCancelled: {\n // keys: [selector, maker]\n // data: [new_min_nonce]\n return {\n type: 'OrdersBulkCancelled',\n maker: raw.keys[1],\n new_min_nonce: raw.data[0],\n transaction_hash: raw.transaction_hash,\n block_number: raw.block_number,\n }\n }\n\n default:\n return null\n }\n}\n\n/** Parse an array of raw events, skipping unrecognized ones. */\nexport function parseEvents(rawEvents: RawEvent[]): StelaEvent[] {\n const results: StelaEvent[] = []\n for (const raw of rawEvents) {\n const parsed = parseEvent(raw)\n if (parsed) results.push(parsed)\n }\n return results\n}\n","import { hash } from 'starknet'\nimport type { Asset } from '../types/inscription.js'\nimport { ASSET_TYPE_ENUM } from '../constants/protocol.js'\nimport { toU256 } from '../utils/u256.js'\n\n/**\n * Hash an array of assets using Poseidon -- matches Cairo's hash_assets().\n *\n * The Cairo code hashes: len, then for each asset:\n * asset.asset (ContractAddress -> 1 felt)\n * asset.asset_type (enum -> 1 felt)\n * asset.value (u256 -> low felt, high felt)\n * asset.token_id (u256 -> low felt, high felt)\n *\n * Uses `hash.computePoseidonHashOnElements` from starknet.js which takes an\n * array and computes Poseidon over all elements.\n */\nexport function hashAssets(assets: Asset[]): string {\n const elements: string[] = [String(assets.length)]\n for (const asset of assets) {\n elements.push(asset.asset_address)\n elements.push(String(ASSET_TYPE_ENUM[asset.asset_type]))\n const [vLow, vHigh] = toU256(asset.value)\n elements.push(vLow, vHigh)\n const [tidLow, tidHigh] = toU256(asset.token_id)\n elements.push(tidLow, tidHigh)\n }\n return hash.computePoseidonHashOnElements(elements)\n}\n","import type { TypedData } from 'starknet'\nimport type { Asset } from '../types/inscription.js'\nimport { hashAssets } from './hash.js'\n\n/** Domain separator -- MUST match the Cairo contract's SNIP12Metadata */\nconst STELA_DOMAIN = {\n name: 'Stela',\n version: 'v1',\n chainId: '', // filled at call time\n revision: '1',\n}\n\n/**\n * Build SNIP-12 TypedData for a borrower's InscriptionOrder.\n * The borrower signs this off-chain to create an order without gas.\n */\nexport function getInscriptionOrderTypedData(params: {\n borrower: string\n debtAssets: Asset[]\n interestAssets: Asset[]\n collateralAssets: Asset[]\n debtCount: number\n interestCount: number\n collateralCount: number\n duration: bigint\n deadline: bigint\n multiLender: boolean\n nonce: bigint\n chainId: string\n}): TypedData {\n return {\n types: {\n StarknetDomain: [\n { name: 'name', type: 'shortstring' },\n { name: 'version', type: 'shortstring' },\n { name: 'chainId', type: 'shortstring' },\n { name: 'revision', type: 'shortstring' },\n ],\n InscriptionOrder: [\n { name: 'borrower', type: 'ContractAddress' },\n { name: 'debt_hash', type: 'felt' },\n { name: 'interest_hash', type: 'felt' },\n { name: 'collateral_hash', type: 'felt' },\n { name: 'debt_count', type: 'u128' },\n { name: 'interest_count', type: 'u128' },\n { name: 'collateral_count', type: 'u128' },\n { name: 'duration', type: 'u128' },\n { name: 'deadline', type: 'u128' },\n { name: 'multi_lender', type: 'bool' },\n { name: 'nonce', type: 'felt' },\n ],\n },\n primaryType: 'InscriptionOrder',\n domain: {\n ...STELA_DOMAIN,\n chainId: params.chainId,\n },\n message: {\n borrower: params.borrower,\n debt_hash: hashAssets(params.debtAssets),\n interest_hash: hashAssets(params.interestAssets),\n collateral_hash: hashAssets(params.collateralAssets),\n debt_count: params.debtCount.toString(),\n interest_count: params.interestCount.toString(),\n collateral_count: params.collateralCount.toString(),\n duration: params.duration.toString(),\n deadline: params.deadline.toString(),\n multi_lender: params.multiLender,\n nonce: params.nonce.toString(),\n },\n }\n}\n\n/**\n * Build SNIP-12 TypedData for a private lend offer.\n *\n * Convenience wrapper around getLendOfferTypedData that sets lender to zero address\n * and includes the deposit commitment. For private settlements, the lender is anonymous\n * — the privacy pool's deposit commitment proves ownership instead.\n */\nexport function getPrivateLendOfferTypedData(params: {\n orderHash: string\n issuedDebtPercentage: bigint\n nonce: bigint\n chainId: string\n /** The deposit commitment from the privacy pool shield() call. */\n depositCommitment: string\n}): TypedData {\n return getLendOfferTypedData({\n orderHash: params.orderHash,\n lender: '0x0',\n issuedDebtPercentage: params.issuedDebtPercentage,\n nonce: params.nonce,\n chainId: params.chainId,\n lenderCommitment: params.depositCommitment,\n })\n}\n\n/**\n * Build SNIP-12 TypedData for a lender's LendOffer.\n * The lender signs this off-chain to accept an order without gas.\n *\n * @param lenderCommitment - Privacy commitment. When non-zero, shares are committed to the\n * privacy pool's Merkle tree instead of minting ERC1155 to the lender. Defaults to '0'.\n */\nexport function getLendOfferTypedData(params: {\n orderHash: string\n lender: string\n issuedDebtPercentage: bigint\n nonce: bigint\n chainId: string\n /** Privacy commitment (default '0' = non-private). */\n lenderCommitment?: string\n}): TypedData {\n return {\n types: {\n StarknetDomain: [\n { name: 'name', type: 'shortstring' },\n { name: 'version', type: 'shortstring' },\n { name: 'chainId', type: 'shortstring' },\n { name: 'revision', type: 'shortstring' },\n ],\n LendOffer: [\n { name: 'order_hash', type: 'felt' },\n { name: 'lender', type: 'ContractAddress' },\n { name: 'issued_debt_percentage', type: 'u256' },\n { name: 'nonce', type: 'felt' },\n { name: 'lender_commitment', type: 'felt' },\n ],\n u256: [\n { name: 'low', type: 'u128' },\n { name: 'high', type: 'u128' },\n ],\n },\n primaryType: 'LendOffer',\n domain: {\n ...STELA_DOMAIN,\n chainId: params.chainId,\n },\n message: {\n order_hash: params.orderHash,\n lender: params.lender,\n issued_debt_percentage: {\n low: (params.issuedDebtPercentage & ((1n << 128n) - 1n)).toString(),\n high: (params.issuedDebtPercentage >> 128n).toString(),\n },\n nonce: params.nonce.toString(),\n lender_commitment: params.lenderCommitment ?? '0',\n },\n }\n}\n","/**\n * Serialize a starknet.js signature (Signature type) for storage in D1.\n */\nexport interface StoredSignature {\n r: string\n s: string\n}\n\nexport function serializeSignature(sig: string[]): StoredSignature {\n return { r: sig[0], s: sig[1] }\n}\n\nexport function deserializeSignature(stored: StoredSignature): string[] {\n return [stored.r, stored.s]\n}\n","import { hash, shortString } from 'starknet'\nimport { toU256 } from '../utils/u256.js'\nimport type { PrivateNote } from './types.js'\n\n/**\n * Domain separator for note commitments.\n * Must match Cairo: COMMITMENT_DOMAIN = 'STELA_COMMITMENT_V1'\n *\n * Cairo short strings are ASCII encoded as felt252.\n * starknet.js encodeShortString does this conversion.\n */\nconst COMMITMENT_DOMAIN = shortString.encodeShortString('STELA_COMMITMENT_V1')\n\n/**\n * Domain separator for nullifier derivation.\n * Must match Cairo: NULLIFIER_DOMAIN = 'STELA_NULLIFIER_V1'\n */\nconst NULLIFIER_DOMAIN = shortString.encodeShortString('STELA_NULLIFIER_V1')\n\n/**\n * Compute a note commitment matching the Cairo compute_commitment function.\n *\n * commitment = Poseidon(domain, owner, inscription_id.low, inscription_id.high,\n * shares.low, shares.high, salt)\n */\nexport function computeCommitment(\n owner: string,\n inscriptionId: bigint,\n shares: bigint,\n salt: string,\n): string {\n const [idLow, idHigh] = toU256(inscriptionId)\n const [sharesLow, sharesHigh] = toU256(shares)\n\n return hash.computePoseidonHashOnElements([\n COMMITMENT_DOMAIN,\n owner,\n idLow,\n idHigh,\n sharesLow,\n sharesHigh,\n salt,\n ])\n}\n\n/**\n * Derive a nullifier from a commitment and the owner's secret.\n * Matches Cairo: nullifier = Poseidon(domain, commitment, owner_secret)\n */\nexport function computeNullifier(commitment: string, ownerSecret: string): string {\n return hash.computePoseidonHashOnElements([NULLIFIER_DOMAIN, commitment, ownerSecret])\n}\n\n/**\n * Compute a Poseidon hash of two children (for Merkle tree internal nodes).\n * Matches Cairo: hash_pair(left, right) = Poseidon(left, right)\n */\nexport function hashPair(left: string, right: string): string {\n return hash.computePoseidonHashOnElements([left, right])\n}\n\n/**\n * Generate a random salt for commitment uniqueness.\n * Returns a hex-encoded felt252 (< 2^251).\n */\nexport function generateSalt(): string {\n const bytes = new Uint8Array(31) // 31 bytes < 2^248 < FIELD_PRIME\n crypto.getRandomValues(bytes)\n return '0x' + Array.from(bytes).map(b => b.toString(16).padStart(2, '0')).join('')\n}\n\n/**\n * Compute a deposit commitment for the privacy pool's shield() call.\n *\n * This is the commitment that a depositor provides when shielding tokens into the privacy pool.\n * It links the depositor, token, amount, and a secret salt so the deposit can later be consumed\n * during private settlement.\n *\n * commitment = Poseidon(domain, depositor, token, amount.low, amount.high, salt)\n */\nexport function computeDepositCommitment(\n depositor: string,\n token: string,\n amount: bigint,\n salt: bigint,\n): string {\n const [amountLow, amountHigh] = toU256(amount)\n\n return hash.computePoseidonHashOnElements([\n COMMITMENT_DOMAIN,\n depositor,\n token,\n amountLow,\n amountHigh,\n '0x' + salt.toString(16),\n ])\n}\n\n/**\n * Create a full private note: generates salt, computes commitment.\n */\nexport function createPrivateNote(\n owner: string,\n inscriptionId: bigint,\n shares: bigint,\n salt?: string,\n): PrivateNote {\n const noteSalt = salt ?? generateSalt()\n const commitment = computeCommitment(owner, inscriptionId, shares, noteSalt)\n return {\n owner,\n inscriptionId,\n shares,\n salt: noteSalt,\n commitment,\n }\n}\n","[\n {\n \"type\": \"impl\",\n \"name\": \"StelaProtocolImpl\",\n \"interface_name\": \"stela::interfaces::istela::IStelaProtocol\"\n },\n {\n \"type\": \"enum\",\n \"name\": \"core::bool\",\n \"variants\": [\n {\n \"name\": \"False\",\n \"type\": \"()\"\n },\n {\n \"name\": \"True\",\n \"type\": \"()\"\n }\n ]\n },\n {\n \"type\": \"enum\",\n \"name\": \"stela::types::asset::AssetType\",\n \"variants\": [\n {\n \"name\": \"ERC20\",\n \"type\": \"()\"\n },\n {\n \"name\": \"ERC721\",\n \"type\": \"()\"\n },\n {\n \"name\": \"ERC1155\",\n \"type\": \"()\"\n },\n {\n \"name\": \"ERC4626\",\n \"type\": \"()\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::integer::u256\",\n \"members\": [\n {\n \"name\": \"low\",\n \"type\": \"core::integer::u128\"\n },\n {\n \"name\": \"high\",\n \"type\": \"core::integer::u128\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"stela::types::asset::Asset\",\n \"members\": [\n {\n \"name\": \"asset\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"asset_type\",\n \"type\": \"stela::types::asset::AssetType\"\n },\n {\n \"name\": \"value\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"stela::types::inscription::InscriptionParams\",\n \"members\": [\n {\n \"name\": \"is_borrow\",\n \"type\": \"core::bool\"\n },\n {\n \"name\": \"debt_assets\",\n \"type\": \"core::array::Array::<stela::types::asset::Asset>\"\n },\n {\n \"name\": \"interest_assets\",\n \"type\": \"core::array::Array::<stela::types::asset::Asset>\"\n },\n {\n \"name\": \"collateral_assets\",\n \"type\": \"core::array::Array::<stela::types::asset::Asset>\"\n },\n {\n \"name\": \"duration\",\n \"type\": \"core::integer::u64\"\n },\n {\n \"name\": \"deadline\",\n \"type\": \"core::integer::u64\"\n },\n {\n \"name\": \"multi_lender\",\n \"type\": \"core::bool\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"stela::types::private_redeem::PrivateRedeemRequest\",\n \"members\": [\n {\n \"name\": \"root\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"inscription_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"shares\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"nullifier\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"change_commitment\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"recipient\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::array::Span::<core::felt252>\",\n \"members\": [\n {\n \"name\": \"snapshot\",\n \"type\": \"@core::array::Array::<core::felt252>\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"stela::snip12::InscriptionOrder\",\n \"members\": [\n {\n \"name\": \"borrower\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"debt_hash\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"interest_hash\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"collateral_hash\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"debt_count\",\n \"type\": \"core::integer::u32\"\n },\n {\n \"name\": \"interest_count\",\n \"type\": \"core::integer::u32\"\n },\n {\n \"name\": \"collateral_count\",\n \"type\": \"core::integer::u32\"\n },\n {\n \"name\": \"duration\",\n \"type\": \"core::integer::u64\"\n },\n {\n \"name\": \"deadline\",\n \"type\": \"core::integer::u64\"\n },\n {\n \"name\": \"multi_lender\",\n \"type\": \"core::bool\"\n },\n {\n \"name\": \"nonce\",\n \"type\": \"core::felt252\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"stela::snip12::LendOffer\",\n \"members\": [\n {\n \"name\": \"order_hash\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"lender\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"issued_debt_percentage\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"nonce\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"lender_commitment\",\n \"type\": \"core::felt252\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"stela::types::signed_order::SignedOrder\",\n \"members\": [\n {\n \"name\": \"maker\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"allowed_taker\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"inscription_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"bps\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"deadline\",\n \"type\": \"core::integer::u64\"\n },\n {\n \"name\": \"nonce\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"min_fill_bps\",\n \"type\": \"core::integer::u256\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"stela::types::inscription::StoredInscription\",\n \"members\": [\n {\n \"name\": \"borrower\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"lender\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"duration\",\n \"type\": \"core::integer::u64\"\n },\n {\n \"name\": \"deadline\",\n \"type\": \"core::integer::u64\"\n },\n {\n \"name\": \"signed_at\",\n \"type\": \"core::integer::u64\"\n },\n {\n \"name\": \"issued_debt_percentage\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"is_repaid\",\n \"type\": \"core::bool\"\n },\n {\n \"name\": \"liquidated\",\n \"type\": \"core::bool\"\n },\n {\n \"name\": \"multi_lender\",\n \"type\": \"core::bool\"\n },\n {\n \"name\": \"debt_asset_count\",\n \"type\": \"core::integer::u32\"\n },\n {\n \"name\": \"interest_asset_count\",\n \"type\": \"core::integer::u32\"\n },\n {\n \"name\": \"collateral_asset_count\",\n \"type\": \"core::integer::u32\"\n }\n ]\n },\n {\n \"type\": \"interface\",\n \"name\": \"stela::interfaces::istela::IStelaProtocol\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"create_inscription\",\n \"inputs\": [\n {\n \"name\": \"params\",\n \"type\": \"stela::types::inscription::InscriptionParams\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"sign_inscription\",\n \"inputs\": [\n {\n \"name\": \"inscription_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"issued_debt_percentage\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"cancel_inscription\",\n \"inputs\": [\n {\n \"name\": \"inscription_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"repay\",\n \"inputs\": [\n {\n \"name\": \"inscription_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"liquidate\",\n \"inputs\": [\n {\n \"name\": \"inscription_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"redeem\",\n \"inputs\": [\n {\n \"name\": \"inscription_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"shares\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"private_redeem\",\n \"inputs\": [\n {\n \"name\": \"request\",\n \"type\": \"stela::types::private_redeem::PrivateRedeemRequest\"\n },\n {\n \"name\": \"proof\",\n \"type\": \"core::array::Span::<core::felt252>\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"settle\",\n \"inputs\": [\n {\n \"name\": \"order\",\n \"type\": \"stela::snip12::InscriptionOrder\"\n },\n {\n \"name\": \"debt_assets\",\n \"type\": \"core::array::Array::<stela::types::asset::Asset>\"\n },\n {\n \"name\": \"interest_assets\",\n \"type\": \"core::array::Array::<stela::types::asset::Asset>\"\n },\n {\n \"name\": \"collateral_assets\",\n \"type\": \"core::array::Array::<stela::types::asset::Asset>\"\n },\n {\n \"name\": \"borrower_sig\",\n \"type\": \"core::array::Array::<core::felt252>\"\n },\n {\n \"name\": \"offer\",\n \"type\": \"stela::snip12::LendOffer\"\n },\n {\n \"name\": \"lender_sig\",\n \"type\": \"core::array::Array::<core::felt252>\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"fill_signed_order\",\n \"inputs\": [\n {\n \"name\": \"order\",\n \"type\": \"stela::types::signed_order::SignedOrder\"\n },\n {\n \"name\": \"signature\",\n \"type\": \"core::array::Array::<core::felt252>\"\n },\n {\n \"name\": \"fill_bps\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"cancel_order\",\n \"inputs\": [\n {\n \"name\": \"order\",\n \"type\": \"stela::types::signed_order::SignedOrder\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"cancel_orders_by_nonce\",\n \"inputs\": [\n {\n \"name\": \"min_nonce\",\n \"type\": \"core::felt252\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_inscription\",\n \"inputs\": [\n {\n \"name\": \"inscription_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"stela::types::inscription::StoredInscription\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_locker\",\n \"inputs\": [\n {\n \"name\": \"inscription_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"convert_to_shares\",\n \"inputs\": [\n {\n \"name\": \"inscription_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"issued_debt_percentage\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_inscription_fee\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"nonces\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::felt252\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_relayer_fee\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_treasury\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"is_paused\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"is_order_registered\",\n \"inputs\": [\n {\n \"name\": \"order_hash\",\n \"type\": \"core::felt252\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"is_order_cancelled\",\n \"inputs\": [\n {\n \"name\": \"order_hash\",\n \"type\": \"core::felt252\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_filled_bps\",\n \"inputs\": [\n {\n \"name\": \"order_hash\",\n \"type\": \"core::felt252\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_maker_min_nonce\",\n \"inputs\": [\n {\n \"name\": \"maker\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::felt252\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_privacy_pool\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"set_inscription_fee\",\n \"inputs\": [\n {\n \"name\": \"fee\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"set_treasury\",\n \"inputs\": [\n {\n \"name\": \"treasury\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"set_registry\",\n \"inputs\": [\n {\n \"name\": \"registry\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"set_inscriptions_nft\",\n \"inputs\": [\n {\n \"name\": \"inscriptions_nft\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"set_relayer_fee\",\n \"inputs\": [\n {\n \"name\": \"fee\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"set_implementation_hash\",\n \"inputs\": [\n {\n \"name\": \"implementation_hash\",\n \"type\": \"core::felt252\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"set_privacy_pool\",\n \"inputs\": [\n {\n \"name\": \"privacy_pool\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"set_fee_vault\",\n \"inputs\": [\n {\n \"name\": \"fee_vault\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_fee_vault\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"pause\",\n \"inputs\": [],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"unpause\",\n \"inputs\": [],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"set_locker_allowed_selector\",\n \"inputs\": [\n {\n \"name\": \"locker\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"selector\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"allowed\",\n \"type\": \"core::bool\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"ERC1155MixinImpl\",\n \"interface_name\": \"openzeppelin_interfaces::token::erc1155::ERC1155ABI\"\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::array::Span::<core::starknet::contract_address::ContractAddress>\",\n \"members\": [\n {\n \"name\": \"snapshot\",\n \"type\": \"@core::array::Array::<core::starknet::contract_address::ContractAddress>\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::array::Span::<core::integer::u256>\",\n \"members\": [\n {\n \"name\": \"snapshot\",\n \"type\": \"@core::array::Array::<core::integer::u256>\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::byte_array::ByteArray\",\n \"members\": [\n {\n \"name\": \"data\",\n \"type\": \"core::array::Array::<core::bytes_31::bytes31>\"\n },\n {\n \"name\": \"pending_word\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"pending_word_len\",\n \"type\": \"core::internal::bounded_int::BoundedInt::<0, 30>\"\n }\n ]\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_interfaces::token::erc1155::ERC1155ABI\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"balance_of\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"balance_of_batch\",\n \"inputs\": [\n {\n \"name\": \"accounts\",\n \"type\": \"core::array::Span::<core::starknet::contract_address::ContractAddress>\"\n },\n {\n \"name\": \"token_ids\",\n \"type\": \"core::array::Span::<core::integer::u256>\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::array::Span::<core::integer::u256>\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"safe_transfer_from\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"value\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"data\",\n \"type\": \"core::array::Span::<core::felt252>\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"safe_batch_transfer_from\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"token_ids\",\n \"type\": \"core::array::Span::<core::integer::u256>\"\n },\n {\n \"name\": \"values\",\n \"type\": \"core::array::Span::<core::integer::u256>\"\n },\n {\n \"name\": \"data\",\n \"type\": \"core::array::Span::<core::felt252>\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"is_approved_for_all\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"set_approval_for_all\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"approved\",\n \"type\": \"core::bool\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"supports_interface\",\n \"inputs\": [\n {\n \"name\": \"interface_id\",\n \"type\": \"core::felt252\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"uri\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"balanceOf\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"tokenId\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"balanceOfBatch\",\n \"inputs\": [\n {\n \"name\": \"accounts\",\n \"type\": \"core::array::Span::<core::starknet::contract_address::ContractAddress>\"\n },\n {\n \"name\": \"tokenIds\",\n \"type\": \"core::array::Span::<core::integer::u256>\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::array::Span::<core::integer::u256>\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"safeTransferFrom\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"tokenId\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"value\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"data\",\n \"type\": \"core::array::Span::<core::felt252>\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"safeBatchTransferFrom\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"tokenIds\",\n \"type\": \"core::array::Span::<core::integer::u256>\"\n },\n {\n \"name\": \"values\",\n \"type\": \"core::array::Span::<core::integer::u256>\"\n },\n {\n \"name\": \"data\",\n \"type\": \"core::array::Span::<core::felt252>\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"isApprovedForAll\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setApprovalForAll\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"approved\",\n \"type\": \"core::bool\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"OwnableMixinImpl\",\n \"interface_name\": \"openzeppelin_interfaces::access::ownable::OwnableABI\"\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_interfaces::access::ownable::OwnableABI\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"owner\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transfer_ownership\",\n \"inputs\": [\n {\n \"name\": \"new_owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"renounce_ownership\",\n \"inputs\": [],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transferOwnership\",\n \"inputs\": [\n {\n \"name\": \"newOwner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"renounceOwnership\",\n \"inputs\": [],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n }\n ]\n },\n {\n \"type\": \"constructor\",\n \"name\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"inscriptions_nft\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"registry\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"implementation_hash\",\n \"type\": \"core::felt252\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::TransferSingle\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"value\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::TransferBatch\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"ids\",\n \"type\": \"core::array::Span::<core::integer::u256>\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"values\",\n \"type\": \"core::array::Span::<core::integer::u256>\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::ApprovalForAll\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"approved\",\n \"type\": \"core::bool\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::URI\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"value\",\n \"type\": \"core::byte_array::ByteArray\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::Event\",\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"TransferSingle\",\n \"type\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::TransferSingle\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"TransferBatch\",\n \"type\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::TransferBatch\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"ApprovalForAll\",\n \"type\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::ApprovalForAll\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"URI\",\n \"type\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::URI\",\n \"kind\": \"nested\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_access::ownable::ownable::OwnableComponent::OwnershipTransferred\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"previous_owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"new_owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_access::ownable::ownable::OwnableComponent::OwnershipTransferStarted\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"previous_owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"new_owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_access::ownable::ownable::OwnableComponent::Event\",\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"OwnershipTransferred\",\n \"type\": \"openzeppelin_access::ownable::ownable::OwnableComponent::OwnershipTransferred\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"OwnershipTransferStarted\",\n \"type\": \"openzeppelin_access::ownable::ownable::OwnableComponent::OwnershipTransferStarted\",\n \"kind\": \"nested\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_introspection::src5::SRC5Component::Event\",\n \"kind\": \"enum\",\n \"variants\": []\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_security::reentrancyguard::ReentrancyGuardComponent::Event\",\n \"kind\": \"enum\",\n \"variants\": []\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_security::pausable::PausableComponent::Paused\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"account\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_security::pausable::PausableComponent::Unpaused\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"account\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_security::pausable::PausableComponent::Event\",\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"Paused\",\n \"type\": \"openzeppelin_security::pausable::PausableComponent::Paused\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"Unpaused\",\n \"type\": \"openzeppelin_security::pausable::PausableComponent::Unpaused\",\n \"kind\": \"nested\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_utils::cryptography::nonces::NoncesComponent::Event\",\n \"kind\": \"enum\",\n \"variants\": []\n },\n {\n \"type\": \"event\",\n \"name\": \"stela::stela::StelaProtocol::InscriptionCreated\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"inscription_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"is_borrow\",\n \"type\": \"core::bool\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"stela::stela::StelaProtocol::InscriptionSigned\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"inscription_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"borrower\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"lender\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"issued_debt_percentage\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"shares_minted\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"stela::stela::StelaProtocol::InscriptionCancelled\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"inscription_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"stela::stela::StelaProtocol::InscriptionRepaid\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"inscription_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"repayer\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"stela::stela::StelaProtocol::InscriptionLiquidated\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"inscription_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"liquidator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"stela::stela::StelaProtocol::SharesRedeemed\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"inscription_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"redeemer\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"shares\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"stela::stela::StelaProtocol::OrderSettled\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"inscription_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"borrower\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"lender\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"relayer\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"relayer_fee_amount\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"stela::stela::StelaProtocol::OrderFilled\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"inscription_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"order_hash\",\n \"type\": \"core::felt252\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"taker\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"fill_bps\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"total_filled_bps\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"stela::stela::StelaProtocol::OrderCancelled\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"order_hash\",\n \"type\": \"core::felt252\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"maker\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"stela::stela::StelaProtocol::OrdersBulkCancelled\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"maker\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"new_min_nonce\",\n \"type\": \"core::felt252\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"stela::stela::StelaProtocol::PrivateSettled\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"inscription_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"lender_commitment\",\n \"type\": \"core::felt252\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"shares_committed\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"stela::stela::StelaProtocol::PrivateSharesRedeemed\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"inscription_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"nullifier\",\n \"type\": \"core::felt252\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"shares\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"recipient\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"stela::stela::StelaProtocol::Event\",\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"ERC1155Event\",\n \"type\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::Event\",\n \"kind\": \"flat\"\n },\n {\n \"name\": \"OwnableEvent\",\n \"type\": \"openzeppelin_access::ownable::ownable::OwnableComponent::Event\",\n \"kind\": \"flat\"\n },\n {\n \"name\": \"SRC5Event\",\n \"type\": \"openzeppelin_introspection::src5::SRC5Component::Event\",\n \"kind\": \"flat\"\n },\n {\n \"name\": \"ReentrancyGuardEvent\",\n \"type\": \"openzeppelin_security::reentrancyguard::ReentrancyGuardComponent::Event\",\n \"kind\": \"flat\"\n },\n {\n \"name\": \"PausableEvent\",\n \"type\": \"openzeppelin_security::pausable::PausableComponent::Event\",\n \"kind\": \"flat\"\n },\n {\n \"name\": \"NoncesEvent\",\n \"type\": \"openzeppelin_utils::cryptography::nonces::NoncesComponent::Event\",\n \"kind\": \"flat\"\n },\n {\n \"name\": \"InscriptionCreated\",\n \"type\": \"stela::stela::StelaProtocol::InscriptionCreated\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"InscriptionSigned\",\n \"type\": \"stela::stela::StelaProtocol::InscriptionSigned\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"InscriptionCancelled\",\n \"type\": \"stela::stela::StelaProtocol::InscriptionCancelled\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"InscriptionRepaid\",\n \"type\": \"stela::stela::StelaProtocol::InscriptionRepaid\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"InscriptionLiquidated\",\n \"type\": \"stela::stela::StelaProtocol::InscriptionLiquidated\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"SharesRedeemed\",\n \"type\": \"stela::stela::StelaProtocol::SharesRedeemed\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"OrderSettled\",\n \"type\": \"stela::stela::StelaProtocol::OrderSettled\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"OrderFilled\",\n \"type\": \"stela::stela::StelaProtocol::OrderFilled\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"OrderCancelled\",\n \"type\": \"stela::stela::StelaProtocol::OrderCancelled\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"OrdersBulkCancelled\",\n \"type\": \"stela::stela::StelaProtocol::OrdersBulkCancelled\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"PrivateSettled\",\n \"type\": \"stela::stela::StelaProtocol::PrivateSettled\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"PrivateSharesRedeemed\",\n \"type\": \"stela::stela::StelaProtocol::PrivateSharesRedeemed\",\n \"kind\": \"nested\"\n }\n ]\n }\n]","import { Contract, type RpcProvider, type Account } from 'starknet'\nimport type { Call } from '../types/common.js'\nimport type { Asset, InscriptionParams, StoredInscription, SignedOrder } from '../types/inscription.js'\nimport type { PrivateRedeemRequest } from '../privacy/types.js'\nimport stelaAbi from '../abi/stela.json'\nimport { toU256, fromU256 } from '../utils/u256.js'\nimport { ASSET_TYPE_ENUM } from '../constants/protocol.js'\n\nexport interface InscriptionClientOptions {\n stelaAddress: string\n provider: RpcProvider\n account?: Account\n}\n\nexport class InscriptionClient {\n private contract: Contract\n private address: string\n private account?: Account\n\n constructor(opts: InscriptionClientOptions) {\n this.address = opts.stelaAddress\n this.account = opts.account\n this.contract = new Contract(stelaAbi, opts.stelaAddress, opts.provider)\n }\n\n // ── Read Methods ───────────────────────────────────────────────────\n\n async getInscription(inscriptionId: bigint): Promise<StoredInscription> {\n const result = await this.contract.call('get_inscription', toU256(inscriptionId))\n return parseStoredInscription(result)\n }\n\n async getLocker(inscriptionId: bigint): Promise<string> {\n const result = await this.contract.call('get_locker', toU256(inscriptionId))\n return String((result as unknown[])[0])\n }\n\n async getInscriptionFee(): Promise<bigint> {\n const result = await this.contract.call('get_inscription_fee')\n return extractU256(result)\n }\n\n async convertToShares(inscriptionId: bigint, percentage: bigint): Promise<bigint> {\n const result = await this.contract.call('convert_to_shares', [\n ...toU256(inscriptionId),\n ...toU256(percentage),\n ])\n return extractU256(result)\n }\n\n async getNonce(address: string): Promise<bigint> {\n const result = await this.contract.call('nonces', [address], { blockIdentifier: 'latest' })\n return BigInt(String((result as unknown[])[0] ?? '0'))\n }\n\n async getRelayerFee(): Promise<bigint> {\n const result = await this.contract.call('get_relayer_fee')\n return extractU256(result)\n }\n\n async getTreasury(): Promise<string> {\n const result = await this.contract.call('get_treasury')\n return String((result as unknown[])[0])\n }\n\n async isPaused(): Promise<boolean> {\n const result = await this.contract.call('is_paused')\n return Boolean((result as unknown[])[0])\n }\n\n async isOrderRegistered(orderHash: string): Promise<boolean> {\n const result = await this.contract.call('is_order_registered', [orderHash])\n return Boolean((result as unknown[])[0])\n }\n\n async isOrderCancelled(orderHash: string): Promise<boolean> {\n const result = await this.contract.call('is_order_cancelled', [orderHash])\n return Boolean((result as unknown[])[0])\n }\n\n async getFilledBps(orderHash: string): Promise<bigint> {\n const result = await this.contract.call('get_filled_bps', [orderHash])\n return extractU256(result)\n }\n\n async getMakerMinNonce(maker: string): Promise<string> {\n const result = await this.contract.call('get_maker_min_nonce', [maker], { blockIdentifier: 'latest' })\n return String((result as unknown[])[0] ?? '0')\n }\n\n // ── Call Builders ──────────────────────────────────────────────────\n\n buildCreateInscription(params: InscriptionParams): Call {\n const calldata: string[] = [\n params.is_borrow ? '1' : '0',\n ...serializeAssets(params.debt_assets),\n ...serializeAssets(params.interest_assets),\n ...serializeAssets(params.collateral_assets),\n params.duration.toString(),\n params.deadline.toString(),\n params.multi_lender ? '1' : '0',\n ]\n return { contractAddress: this.address, entrypoint: 'create_inscription', calldata }\n }\n\n buildSignInscription(inscriptionId: bigint, bps: bigint): Call {\n return {\n contractAddress: this.address,\n entrypoint: 'sign_inscription',\n calldata: [...toU256(inscriptionId), ...toU256(bps)],\n }\n }\n\n buildCancelInscription(inscriptionId: bigint): Call {\n return {\n contractAddress: this.address,\n entrypoint: 'cancel_inscription',\n calldata: [...toU256(inscriptionId)],\n }\n }\n\n buildRepay(inscriptionId: bigint): Call {\n return {\n contractAddress: this.address,\n entrypoint: 'repay',\n calldata: [...toU256(inscriptionId)],\n }\n }\n\n buildLiquidate(inscriptionId: bigint): Call {\n return {\n contractAddress: this.address,\n entrypoint: 'liquidate',\n calldata: [...toU256(inscriptionId)],\n }\n }\n\n buildRedeem(inscriptionId: bigint, shares: bigint): Call {\n return {\n contractAddress: this.address,\n entrypoint: 'redeem',\n calldata: [...toU256(inscriptionId), ...toU256(shares)],\n }\n }\n\n buildPrivateRedeem(request: PrivateRedeemRequest, proof: string[]): Call {\n const calldata: string[] = [\n // PrivateRedeemRequest struct fields (must match Cairo Serde order)\n request.root,\n ...toU256(request.inscriptionId),\n ...toU256(request.shares),\n request.nullifier,\n request.changeCommitment,\n request.recipient,\n // proof array\n String(proof.length),\n ...proof,\n ]\n return { contractAddress: this.address, entrypoint: 'private_redeem', calldata }\n }\n\n /**\n * Build a shield() call on the privacy pool contract.\n * The depositor shields tokens into the pool, creating a commitment that can\n * later be consumed during private settlement.\n */\n buildShieldDeposit(params: {\n privacyPoolAddress: string\n token: string\n amount: bigint\n commitment: string\n }): Call {\n return {\n contractAddress: params.privacyPoolAddress,\n entrypoint: 'shield',\n calldata: [\n params.token,\n ...toU256(params.amount),\n params.commitment,\n ],\n }\n }\n\n /**\n * Build a settle() call for private settlement.\n *\n * In a private settlement, the lender is zero address and the lender_commitment\n * is the deposit commitment from the privacy pool. The contract skips lender\n * signature verification and instead consumes the deposit from the privacy pool.\n */\n buildSettlePrivate(params: {\n order: {\n borrower: string\n debtHash: string\n interestHash: string\n collateralHash: string\n debtCount: number\n interestCount: number\n collateralCount: number\n duration: bigint\n deadline: bigint\n multiLender: boolean\n nonce: bigint\n }\n debtAssets: Asset[]\n interestAssets: Asset[]\n collateralAssets: Asset[]\n borrowerSig: string[]\n offer: {\n orderHash: string\n issuedDebtPercentage: bigint\n nonce: bigint\n /** The deposit commitment from the privacy pool. */\n lenderCommitment: string\n }\n lenderSig: string[]\n }): Call {\n return this.buildSettle({\n ...params,\n offer: {\n ...params.offer,\n lender: '0x0',\n },\n })\n }\n\n buildSettle(params: {\n order: {\n borrower: string\n debtHash: string\n interestHash: string\n collateralHash: string\n debtCount: number\n interestCount: number\n collateralCount: number\n duration: bigint\n deadline: bigint\n multiLender: boolean\n nonce: bigint\n }\n debtAssets: Asset[]\n interestAssets: Asset[]\n collateralAssets: Asset[]\n borrowerSig: string[]\n offer: {\n orderHash: string\n lender: string\n issuedDebtPercentage: bigint\n nonce: bigint\n /** Privacy commitment. When non-zero, shares go to privacy pool. Default '0'. */\n lenderCommitment?: string\n }\n lenderSig: string[]\n }): Call {\n const calldata: string[] = [\n // Order struct fields\n params.order.borrower,\n params.order.debtHash,\n params.order.interestHash,\n params.order.collateralHash,\n String(params.order.debtCount),\n String(params.order.interestCount),\n String(params.order.collateralCount),\n params.order.duration.toString(),\n params.order.deadline.toString(),\n params.order.multiLender ? '1' : '0',\n params.order.nonce.toString(),\n // debt_assets array\n ...serializeAssets(params.debtAssets),\n // interest_assets array\n ...serializeAssets(params.interestAssets),\n // collateral_assets array\n ...serializeAssets(params.collateralAssets),\n // borrower_sig array\n String(params.borrowerSig.length),\n ...params.borrowerSig,\n // offer struct\n params.offer.orderHash,\n params.offer.lender,\n ...toU256(params.offer.issuedDebtPercentage),\n params.offer.nonce.toString(),\n params.offer.lenderCommitment ?? '0',\n // lender_sig array\n String(params.lenderSig.length),\n ...params.lenderSig,\n ]\n return { contractAddress: this.address, entrypoint: 'settle', calldata }\n }\n\n buildFillSignedOrder(order: SignedOrder, signature: string[], fillBps: bigint): Call {\n const calldata: string[] = [\n // SignedOrder struct fields\n order.maker,\n order.allowed_taker,\n ...toU256(order.inscription_id),\n ...toU256(order.bps),\n order.deadline.toString(),\n order.nonce,\n ...toU256(order.min_fill_bps),\n // signature array\n String(signature.length),\n ...signature,\n // fill_bps\n ...toU256(fillBps),\n ]\n return { contractAddress: this.address, entrypoint: 'fill_signed_order', calldata }\n }\n\n buildCancelOrder(order: SignedOrder): Call {\n const calldata: string[] = [\n order.maker,\n order.allowed_taker,\n ...toU256(order.inscription_id),\n ...toU256(order.bps),\n order.deadline.toString(),\n order.nonce,\n ...toU256(order.min_fill_bps),\n ]\n return { contractAddress: this.address, entrypoint: 'cancel_order', calldata }\n }\n\n buildCancelOrdersByNonce(minNonce: string): Call {\n return {\n contractAddress: this.address,\n entrypoint: 'cancel_orders_by_nonce',\n calldata: [minNonce],\n }\n }\n\n // ── Execute Methods ────────────────────────────────────────────────\n\n /**\n * Execute one or more calls via the connected account.\n * Pass approval calls to bundle ERC20 approve + protocol call atomically.\n */\n async execute(calls: Call[]): Promise<{ transaction_hash: string }> {\n if (!this.account) throw new Error('Account required for write operations')\n const result = await this.account.execute(calls)\n return { transaction_hash: result.transaction_hash }\n }\n\n async createInscription(params: InscriptionParams, approvals?: Call[]): Promise<{ transaction_hash: string }> {\n const calls = [...(approvals ?? []), this.buildCreateInscription(params)]\n return this.execute(calls)\n }\n\n async signInscription(inscriptionId: bigint, bps: bigint, approvals?: Call[]): Promise<{ transaction_hash: string }> {\n const calls = [...(approvals ?? []), this.buildSignInscription(inscriptionId, bps)]\n return this.execute(calls)\n }\n\n async cancelInscription(inscriptionId: bigint): Promise<{ transaction_hash: string }> {\n return this.execute([this.buildCancelInscription(inscriptionId)])\n }\n\n async repay(inscriptionId: bigint, approvals?: Call[]): Promise<{ transaction_hash: string }> {\n const calls = [...(approvals ?? []), this.buildRepay(inscriptionId)]\n return this.execute(calls)\n }\n\n async liquidate(inscriptionId: bigint): Promise<{ transaction_hash: string }> {\n return this.execute([this.buildLiquidate(inscriptionId)])\n }\n\n async redeem(inscriptionId: bigint, shares: bigint): Promise<{ transaction_hash: string }> {\n return this.execute([this.buildRedeem(inscriptionId, shares)])\n }\n\n async privateRedeem(request: PrivateRedeemRequest, proof: string[]): Promise<{ transaction_hash: string }> {\n return this.execute([this.buildPrivateRedeem(request, proof)])\n }\n\n async fillSignedOrder(order: SignedOrder, signature: string[], fillBps: bigint, approvals?: Call[]): Promise<{ transaction_hash: string }> {\n const calls = [...(approvals ?? []), this.buildFillSignedOrder(order, signature, fillBps)]\n return this.execute(calls)\n }\n\n async cancelOrder(order: SignedOrder): Promise<{ transaction_hash: string }> {\n return this.execute([this.buildCancelOrder(order)])\n }\n\n async cancelOrdersByNonce(minNonce: string): Promise<{ transaction_hash: string }> {\n return this.execute([this.buildCancelOrdersByNonce(minNonce)])\n }\n}\n\n// ── Helpers ────────────────────────────────────────────────────────────\n\nfunction serializeAssets(assets: Asset[]): string[] {\n const calldata: string[] = [String(assets.length)]\n for (const a of assets) {\n calldata.push(a.asset_address)\n calldata.push(String(ASSET_TYPE_ENUM[a.asset_type]))\n calldata.push(...toU256(a.value))\n calldata.push(...toU256(a.token_id))\n }\n return calldata\n}\n\nfunction extractU256(result: unknown): bigint {\n const arr = result as unknown[]\n if (typeof arr[0] === 'bigint') return arr[0]\n if (typeof arr[0] === 'object' && arr[0] !== null && 'low' in arr[0] && 'high' in arr[0]) {\n const u = arr[0] as { low: bigint; high: bigint }\n return fromU256(u)\n }\n return BigInt(String(arr[0]))\n}\n\nfunction parseStoredInscription(result: unknown): StoredInscription {\n const r = result as Record<string, unknown>\n // starknet.js v6 returns a named struct or array depending on call\n const get = (key: string, index: number): unknown => {\n if (key in r) return r[key]\n const arr = result as unknown[]\n return arr[index]\n }\n\n return {\n borrower: String(get('borrower', 0)),\n lender: String(get('lender', 1)),\n duration: BigInt(String(get('duration', 2))),\n deadline: BigInt(String(get('deadline', 3))),\n signed_at: BigInt(String(get('signed_at', 4))),\n issued_debt_percentage: extractFieldU256(get('issued_debt_percentage', 5)),\n is_repaid: Boolean(get('is_repaid', 6)),\n liquidated: Boolean(get('liquidated', 7)),\n multi_lender: Boolean(get('multi_lender', 8)),\n debt_asset_count: Number(get('debt_asset_count', 9)),\n interest_asset_count: Number(get('interest_asset_count', 10)),\n collateral_asset_count: Number(get('collateral_asset_count', 11)),\n }\n}\n\nfunction extractFieldU256(val: unknown): bigint {\n if (typeof val === 'bigint') return val\n if (typeof val === 'object' && val !== null && 'low' in val && 'high' in val) {\n return fromU256(val as { low: bigint; high: bigint })\n }\n return BigInt(String(val))\n}\n","import { Contract, type RpcProvider } from 'starknet'\nimport stelaAbi from '../abi/stela.json'\nimport { toU256 } from '../utils/u256.js'\n\nexport interface ShareClientOptions {\n stelaAddress: string\n provider: RpcProvider\n}\n\n/**\n * Client for reading ERC1155 share balances on the Stela contract.\n * Inscription IDs are token IDs — each lender receives shares as ERC1155 tokens.\n */\nexport class ShareClient {\n private contract: Contract\n\n constructor(opts: ShareClientOptions) {\n this.contract = new Contract(stelaAbi, opts.stelaAddress, opts.provider)\n }\n\n /** Get share balance for an account on a specific inscription */\n async balanceOf(account: string, inscriptionId: bigint): Promise<bigint> {\n const result = await this.contract.call('balance_of', [account, ...toU256(inscriptionId)])\n return extractBigInt(result)\n }\n\n /** Get share balances for multiple account/inscription pairs */\n async balanceOfBatch(accounts: string[], inscriptionIds: bigint[]): Promise<bigint[]> {\n if (accounts.length !== inscriptionIds.length) {\n throw new Error('accounts and inscriptionIds must have the same length')\n }\n const result = await this.contract.call('balance_of_batch', [\n accounts,\n inscriptionIds.map((id) => toU256(id)),\n ])\n const arr = result as unknown[]\n const balances = arr[0] as unknown[]\n return balances.map((b) => BigInt(String(b)))\n }\n\n /** Check if an operator is approved for all tokens of an owner */\n async isApprovedForAll(owner: string, operator: string): Promise<boolean> {\n const result = await this.contract.call('is_approved_for_all', [owner, operator])\n return Boolean((result as unknown[])[0])\n }\n}\n\nfunction extractBigInt(result: unknown): bigint {\n const arr = result as unknown[]\n if (typeof arr[0] === 'bigint') return arr[0]\n return BigInt(String(arr[0]))\n}\n","[\n {\n \"type\": \"struct\",\n \"name\": \"core::integer::u256\",\n \"members\": [\n { \"name\": \"low\", \"type\": \"core::integer::u128\" },\n { \"name\": \"high\", \"type\": \"core::integer::u128\" }\n ]\n },\n {\n \"type\": \"interface\",\n \"name\": \"erc20::IERC20\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"approve\",\n \"inputs\": [\n { \"name\": \"spender\", \"type\": \"core::starknet::contract_address::ContractAddress\" },\n { \"name\": \"amount\", \"type\": \"core::integer::u256\" }\n ],\n \"outputs\": [{ \"type\": \"core::bool\" }],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"balance_of\",\n \"inputs\": [\n { \"name\": \"account\", \"type\": \"core::starknet::contract_address::ContractAddress\" }\n ],\n \"outputs\": [{ \"type\": \"core::integer::u256\" }],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"allowance\",\n \"inputs\": [\n { \"name\": \"owner\", \"type\": \"core::starknet::contract_address::ContractAddress\" },\n { \"name\": \"spender\", \"type\": \"core::starknet::contract_address::ContractAddress\" }\n ],\n \"outputs\": [{ \"type\": \"core::integer::u256\" }],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"balanceOf\",\n \"inputs\": [\n { \"name\": \"account\", \"type\": \"core::starknet::contract_address::ContractAddress\" }\n ],\n \"outputs\": [{ \"type\": \"core::integer::u256\" }],\n \"state_mutability\": \"view\"\n }\n ]\n }\n]\n","[\n {\n \"type\": \"enum\",\n \"name\": \"core::bool\",\n \"variants\": [\n { \"name\": \"False\", \"type\": \"()\" },\n { \"name\": \"True\", \"type\": \"()\" }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::starknet::account::Call\",\n \"members\": [\n { \"name\": \"to\", \"type\": \"core::starknet::contract_address::ContractAddress\" },\n { \"name\": \"selector\", \"type\": \"core::felt252\" },\n { \"name\": \"calldata\", \"type\": \"core::array::Array::<core::felt252>\" }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::array::Span::<core::felt252>\",\n \"members\": [\n { \"name\": \"snapshot\", \"type\": \"@core::array::Array::<core::felt252>\" }\n ]\n },\n {\n \"type\": \"interface\",\n \"name\": \"locker::ILockerAccount\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"__execute__\",\n \"inputs\": [\n { \"name\": \"calls\", \"type\": \"core::array::Span::<core::starknet::account::Call>\" }\n ],\n \"outputs\": [\n { \"type\": \"core::array::Array::<core::array::Span::<core::felt252>>\" }\n ],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"is_unlocked\",\n \"inputs\": [],\n \"outputs\": [{ \"type\": \"core::bool\" }],\n \"state_mutability\": \"view\"\n }\n ]\n }\n]\n","import { Contract, type RpcProvider, type Account, hash } from 'starknet'\nimport type { Call } from '../types/common.js'\nimport type { LockerState } from '../types/locker.js'\nimport stelaAbi from '../abi/stela.json'\nimport erc20Abi from '../abi/erc20.json'\nimport lockerAbi from '../abi/locker.json'\nimport { toU256 } from '../utils/u256.js'\n\nexport class LockerClient {\n constructor(\n private stelaContract: Contract,\n private provider: RpcProvider,\n private account?: Account,\n ) {}\n\n /** Get the Locker TBA address for an inscription */\n async getLockerAddress(inscriptionId: bigint): Promise<string> {\n const contract = new Contract(stelaAbi, this.stelaContract.address, this.provider)\n const result = await contract.call('get_locker', toU256(inscriptionId))\n return String((result as unknown[])[0])\n }\n\n /** Check if a locker is unlocked */\n async isUnlocked(inscriptionId: bigint): Promise<boolean> {\n const address = await this.getLockerAddress(inscriptionId)\n const locker = new Contract(lockerAbi, address, this.provider)\n const result = await locker.call('is_unlocked')\n return Boolean((result as unknown[])[0])\n }\n\n /** Get full locker state */\n async getLockerState(inscriptionId: bigint): Promise<LockerState> {\n const address = await this.getLockerAddress(inscriptionId)\n const locker = new Contract(lockerAbi, address, this.provider)\n const result = await locker.call('is_unlocked')\n const isUnlocked = Boolean((result as unknown[])[0])\n return { address, isUnlocked }\n }\n\n /** Read ERC20 balance held by a locker */\n async getLockerBalance(inscriptionId: bigint, tokenAddress: string): Promise<bigint> {\n const lockerAddress = await this.getLockerAddress(inscriptionId)\n const token = new Contract(erc20Abi, tokenAddress, this.provider)\n const result = await token.call('balance_of', [lockerAddress])\n return BigInt((result as unknown[])[0] as string | bigint)\n }\n\n /** Read multiple ERC20 balances held by a locker */\n async getLockerBalances(inscriptionId: bigint, tokenAddresses: string[]): Promise<Map<string, bigint>> {\n const lockerAddress = await this.getLockerAddress(inscriptionId)\n const balances = new Map<string, bigint>()\n for (const addr of tokenAddresses) {\n const token = new Contract(erc20Abi, addr, this.provider)\n const result = await token.call('balance_of', [lockerAddress])\n balances.set(addr, BigInt((result as unknown[])[0] as string | bigint))\n }\n return balances\n }\n\n // ---- Governance execution through Locker ----\n\n /**\n * Build a Call to execute an arbitrary call through the Locker TBA.\n * The Locker's __execute__ function proxies calls from the locker's address.\n * This is how a DAO retains governance power over locked collateral.\n *\n * The locker uses SNIP-6 account standard (__execute__). The calldata\n * encodes an array of Call structs, each with:\n * - to: felt252 (ContractAddress)\n * - selector: felt252\n * - calldata: Array<felt252> (length-prefixed)\n */\n buildLockerExecute(lockerAddress: string, innerCalls: Call[]): Call {\n // Serialize Call[] into flat felt252 array for the Span<Call> parameter.\n // Format: [num_calls, call0_to, call0_selector, call0_calldata_len, ...call0_calldata, ...]\n const calldata: string[] = [innerCalls.length.toString()]\n for (const c of innerCalls) {\n calldata.push(c.contractAddress)\n calldata.push(hash.getSelectorFromName(c.entrypoint))\n calldata.push(c.calldata.length.toString())\n calldata.push(...c.calldata)\n }\n\n return {\n contractAddress: lockerAddress,\n entrypoint: '__execute__',\n calldata,\n }\n }\n\n /**\n * Execute a governance call through the Locker.\n * Requires account to be the inscription's borrower (NFT owner).\n */\n async executeThrough(inscriptionId: bigint, innerCall: Call): Promise<{ transaction_hash: string }> {\n if (!this.account) throw new Error('Account required for write operations')\n const lockerAddress = await this.getLockerAddress(inscriptionId)\n const call = this.buildLockerExecute(lockerAddress, [innerCall])\n const result = await this.account.execute([call])\n return { transaction_hash: result.transaction_hash }\n }\n\n /**\n * Execute multiple governance calls through the Locker in a single tx.\n */\n async executeThroughBatch(inscriptionId: bigint, innerCalls: Call[]): Promise<{ transaction_hash: string }> {\n if (!this.account) throw new Error('Account required for write operations')\n const lockerAddress = await this.getLockerAddress(inscriptionId)\n const call = this.buildLockerExecute(lockerAddress, innerCalls)\n const result = await this.account.execute([call])\n return { transaction_hash: result.transaction_hash }\n }\n}\n","import type {\n InscriptionRow,\n AssetRow,\n ApiListResponse,\n ApiDetailResponse,\n TreasuryAsset,\n ShareBalance,\n LockerInfo,\n} from '../types/api.js'\n\nexport interface ApiClientOptions {\n baseUrl?: string\n}\n\nexport interface ListInscriptionsParams {\n status?: string\n address?: string\n page?: number\n limit?: number\n}\n\n/**\n * HTTP client for the Stela indexer API.\n * Provides typed access to indexed inscription data, treasury views, and locker info.\n */\nexport class ApiClient {\n private baseUrl: string\n\n constructor(opts?: ApiClientOptions) {\n this.baseUrl = (opts?.baseUrl ?? 'https://stela-dapp.xyz/api').replace(/\\/$/, '')\n }\n\n /** List inscriptions with optional filters */\n async listInscriptions(params?: ListInscriptionsParams): Promise<ApiListResponse<InscriptionRow>> {\n const query = new URLSearchParams()\n if (params?.status) query.set('status', params.status)\n if (params?.address) query.set('address', params.address)\n if (params?.page) query.set('page', String(params.page))\n if (params?.limit) query.set('limit', String(params.limit))\n const qs = query.toString()\n return this.get<ApiListResponse<InscriptionRow>>(`/inscriptions${qs ? `?${qs}` : ''}`)\n }\n\n /** Get a single inscription by ID */\n async getInscription(id: string): Promise<ApiDetailResponse<InscriptionRow>> {\n return this.get<ApiDetailResponse<InscriptionRow>>(`/inscriptions/${id}`)\n }\n\n /** Get events for a specific inscription */\n async getInscriptionEvents(id: string): Promise<ApiListResponse<InscriptionEventRow>> {\n return this.get<ApiListResponse<InscriptionEventRow>>(`/inscriptions/${id}/events`)\n }\n\n /** Get treasury asset balances for an address */\n async getTreasuryView(address: string): Promise<ApiListResponse<TreasuryAsset>> {\n const query = new URLSearchParams({ address })\n return this.get<ApiListResponse<TreasuryAsset>>(`/treasury?${query}`)\n }\n\n /** Get locker info for inscriptions of an address */\n async getLockers(address: string): Promise<ApiListResponse<LockerInfo>> {\n const query = new URLSearchParams({ address })\n return this.get<ApiListResponse<LockerInfo>>(`/lockers?${query}`)\n }\n\n /** Get share balances for an address */\n async getShareBalances(address: string): Promise<ApiListResponse<ShareBalance>> {\n const query = new URLSearchParams({ address })\n return this.get<ApiListResponse<ShareBalance>>(`/shares?${query}`)\n }\n\n private async get<T>(path: string): Promise<T> {\n const url = `${this.baseUrl}${path}`\n const response = await fetch(url)\n if (!response.ok) {\n throw new ApiError(response.status, `API request failed: ${response.status} ${response.statusText}`, url)\n }\n return response.json() as Promise<T>\n }\n}\n\nexport class ApiError extends Error {\n constructor(\n public readonly status: number,\n message: string,\n public readonly url: string,\n ) {\n super(message)\n this.name = 'ApiError'\n }\n}\n\n/** Shape of an inscription event row from the API */\nexport interface InscriptionEventRow {\n id: number\n inscription_id: string\n event_type: string\n tx_hash: string\n block_number: number\n timestamp: string | null\n data: Record<string, unknown> | null\n}\n","import { Contract, type RpcProvider, type Account } from 'starknet'\nimport type { Network } from '../types/common.js'\nimport { STELA_ADDRESS, resolveNetwork } from '../constants/addresses.js'\nimport { InscriptionClient } from './inscription-client.js'\nimport { ShareClient } from './share-client.js'\nimport { LockerClient } from './locker-client.js'\nimport { ApiClient } from './api-client.js'\nimport stelaAbi from '../abi/stela.json'\n\nexport interface StelaSdkOptions {\n /** StarkNet RPC provider */\n provider: RpcProvider\n /** Connected account for write operations (optional for read-only) */\n account?: Account\n /** Network name or auto-detect from provider */\n network?: Network | string\n /** Custom API base URL */\n apiBaseUrl?: string\n /** Override the contract address (for custom deployments) */\n stelaAddress?: string\n}\n\n/**\n * Main SDK facade that wires together all clients.\n *\n * ```ts\n * const sdk = new StelaSdk({ provider, account, network: 'sepolia' })\n * const inscription = await sdk.inscriptions.getInscription(1n)\n * const shares = await sdk.shares.balanceOf(myAddress, 1n)\n * ```\n */\nexport class StelaSdk {\n readonly inscriptions: InscriptionClient\n readonly shares: ShareClient\n readonly locker: LockerClient\n readonly api: ApiClient\n readonly network: Network\n readonly stelaAddress: string\n\n constructor(opts: StelaSdkOptions) {\n this.network = resolveNetwork(opts.network)\n this.stelaAddress = opts.stelaAddress ?? STELA_ADDRESS[this.network]\n\n this.inscriptions = new InscriptionClient({\n stelaAddress: this.stelaAddress,\n provider: opts.provider,\n account: opts.account,\n })\n\n this.shares = new ShareClient({\n stelaAddress: this.stelaAddress,\n provider: opts.provider,\n })\n\n const stelaContract = new Contract(stelaAbi, this.stelaAddress, opts.provider)\n this.locker = new LockerClient(stelaContract, opts.provider, opts.account)\n\n this.api = new ApiClient({ baseUrl: opts.apiBaseUrl })\n }\n}\n"]}
|