@akita-protocol/algomd-core 1.0.0-alpha.0 → 1.0.0-alpha.1

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/types.ts","../src/keys.ts","../src/policy.ts","../src/batcher.ts","../src/http.ts","../src/kinds.ts","../src/grammar.ts","../src/archive/verify.ts","../src/chain/bytes.ts","../src/akita.ts","../src/chain/state.ts","../src/contracts/decode.ts","../src/contracts/schemas.generated.ts","../src/media.ts","../src/archive/history.ts","../src/archive/families.ts","../src/sources/chain-data.ts","../src/sources/indexer.ts","../src/format.ts","../src/identity.ts","../src/interfaces.ts","../src/presets.ts","../src/sources/algod.ts","../src/sources/nfd.ts","../src/sources/resolver.ts","../src/client.ts"],"sourcesContent":["export * from './types'\nexport { algomdKeys, isAlgomdKey, type AlgomdEntityKey } from './keys'\nexport { POLICIES, policyFor, type CachePolicy, type PolicyName } from './policy'\nexport { Batcher, type BatcherOptions } from './batcher'\nexport { HttpError, requestJson, type FetchLike } from './http'\nexport { BUILT_IN_KINDS, KindRegistry, defaultRegistry, type KindDef } from './kinds'\nexport {\n parseContent,\n parseProps,\n extractRefs,\n hasRefs,\n refFromTag,\n serializeRef,\n sizeFromProps,\n type Segment,\n type RefSegment,\n type TextSegment,\n} from './grammar'\nexport { AlgomdClient, createAlgomdClient, memoryCache, type AlgomdConfig, type CacheAdapter, type LoadOptions } from './client'\nexport { createAlgodSource } from './sources/algod'\nexport { createIndexerSource, fetchAppHistory } from './sources/indexer'\nexport { createNfdSource, nfdFromRecord, NFD_API, type NfdData } from './sources/nfd'\nexport { createResolverSource } from './sources/resolver'\nexport type { Source, SourceContext } from './sources/types'\nexport type { AccountData, ApplicationData, AssetData, CollectionData } from './sources/chain-data'\nexport { createIdentitySource, type IdentityData, type IdentityProfile, type IdentityProvider } from './identity'\nexport { createMediaSource, resolveArc19, ipfsToGateway, DEFAULT_IPFS_GATEWAY, type AssetMediaData, type MediaStandard, type MediaOptions } from './media'\nexport {\n createInterfaceSource,\n interfaceFromArc56,\n interfaceAction,\n interfaceCards,\n cidForFile,\n cidToString,\n verifyCid,\n fetchByCid,\n metaRecordKey,\n metaRecordBoxName,\n decodeMetaRecord,\n readInterfacePointer,\n INTERFACE_NAMESPACE,\n type Arc56Like,\n type ContractInterface,\n type ContractUi,\n type InterfaceAction,\n type InterfaceData,\n type InterfaceMethod,\n type InterfaceOptions,\n type MethodUi,\n type UiAmount,\n type UiArgBinding,\n type UiCard,\n type UiFormat,\n type UiInput,\n type UiInputKind,\n type UiJson,\n type UiSource,\n} from './interfaces'\nexport { shortAddress, formatAmount, formatAlgo, formatDuration, formatRelativeTime, type AmountFormatOptions } from './format'\nexport { AKITA_FACTORIES, PUBLIC_ENDPOINTS } from './presets'\nexport {\n AKITA_SINGLETONS,\n readBox,\n listBoxNames,\n readReward,\n readSubscription,\n readTrade,\n readStakingPool,\n splitSubscriptionId,\n stakingPoolFromDecoded,\n type SingletonApps,\n type StakingPoolData,\n type StakingPoolReward,\n type RewardData,\n type SubscriptionData,\n type TradeData,\n type TradeLeg,\n type DualStakeData,\n type PrivateContentData,\n} from './akita'\nexport {\n FAMILIES,\n reduceListing,\n reduceAuction,\n reduceRaffle,\n reducePoll,\n reducePrizeBox,\n type ContractFamily,\n type ListingData,\n type AuctionData,\n type AuctionBid,\n type RaffleData,\n type RaffleEntry,\n type PollData,\n type PrizeBoxData,\n} from './archive/families'\nexport { collectAppCalls, replay, type AppCall, type AppHistory } from './archive/history'\nexport { verifyArchived, type VerifyOptions } from './archive/verify'\nexport { decodeGlobalState, decodeArgs, decodeEvents, methodForSelector, boxName, boxPrefix, decodeBoxValue, decodeBoxKey, type Decoded, type DecodedEvent } from './contracts/decode'\nexport { CONTRACT_SCHEMAS, type ContractName } from './contracts/schemas.generated'\nexport { stateFromTeal, applyDelta, type RawState } from './chain/state'\nexport { fromBase64, toBase64, fromHex, toHex, utf8 } from './chain/bytes'\nexport type * from './chain/indexer-types'\n","export type Network = 'mainnet' | 'testnet' | 'localnet' | (string & {})\n\n/** Display size of a reference. See docs/DESIGN.md §2. */\nexport type Size = 'inline' | 'small' | 'large' | 'full'\n\nexport type EntityStatus = 'live' | 'archived' | 'missing'\n\nexport interface Ref {\n kind: string\n id: string\n /** Kind-declared extra identifiers, e.g. a trade offer's offer id. Never display data. */\n params?: Record<string, string>\n}\n\nexport interface Provenance {\n /** Which source produced the data: `algod`, `indexer`, `resolver`, `nfd`, `host`, `primed`. */\n source: string\n /** Chain round the data reflects, when known. */\n round?: number\n fetchedAt: number\n}\n\nexport interface Evidence {\n appId: number\n factoryAppId?: number\n createdRound?: number\n deletedRound?: number\n deleteTxId?: string\n}\n\nexport interface Verification {\n state: 'verified' | 'mismatch' | 'unverified'\n checkedAt: number\n /** Fields whose claimed value differed from the chain-derived value. */\n mismatches?: string[]\n detail?: string\n}\n\nexport interface Entity<T = unknown> {\n kind: string\n id: string\n network: Network\n status: EntityStatus\n data: T | null\n provenance: Provenance\n evidence?: Evidence\n verification?: Verification\n}\n\nexport interface Endpoint {\n url: string\n token?: string\n headers?: Record<string, string>\n}\n\nexport const refKey = (ref: Pick<Ref, 'kind' | 'id'>): string => `${ref.kind}:${ref.id}`\n","import type { Network } from './types'\n\n/**\n * The one query-key factory for AlgoMD data. Hosts use it too, so the app and\n * the library share cache entries. The network is always part of the key.\n */\nexport const algomdKeys = {\n all: ['algomd'] as const,\n network: (network: Network) => ['algomd', network] as const,\n kind: (network: Network, kind: string) => ['algomd', network, kind] as const,\n entity: (network: Network, kind: string, id: string) => ['algomd', network, kind, id] as const,\n}\n\nexport type AlgomdEntityKey = ReturnType<typeof algomdKeys.entity>\n\nexport function isAlgomdKey(key: readonly unknown[]): key is AlgomdEntityKey {\n return key[0] === 'algomd' && key.length === 4\n}\n","import type { Entity } from './types'\n\nexport type PolicyName = 'immutable' | 'slow' | 'live'\n\nexport interface CachePolicy {\n name: PolicyName\n /** ms; Infinity means never stale. */\n staleTime: number\n /** ms an unused entry stays in memory. */\n gcTime: number\n /** Whether hosts should write the entry to disk. */\n persist: boolean\n /** ms between refetches while the reference is visible; false for none. */\n refetchInterval: number | false\n}\n\nconst HOUR = 3_600_000\n\nexport const POLICIES: Record<PolicyName, CachePolicy> = {\n immutable: { name: 'immutable', staleTime: Infinity, gcTime: 24 * HOUR, persist: true, refetchInterval: false },\n slow: { name: 'slow', staleTime: 6 * HOUR, gcTime: 24 * HOUR, persist: true, refetchInterval: false },\n live: { name: 'live', staleTime: 30_000, gcTime: 10 * 60_000, persist: false, refetchInterval: 30_000 },\n}\n\n/**\n * The policy for an entity. An archived entity is final, so it is immutable\n * whatever its kind's default is. A missing entity is retried like live data.\n */\nexport function policyFor(defaultPolicy: PolicyName, entity?: Entity | null): CachePolicy {\n if (entity?.status === 'archived') return POLICIES.immutable\n if (entity?.status === 'missing') return POLICIES.live\n return POLICIES[defaultPolicy]\n}\n","export interface BatcherOptions<K> {\n /** Most keys per call to `run`. */\n maxBatch: number\n /** Calls to `run` allowed in flight at once. */\n concurrency?: number\n /** ms to wait for more keys before flushing. */\n delayMs?: number\n keyOf: (key: K) => string\n}\n\ninterface Pending<V> {\n promise: Promise<V | undefined>\n resolve: (value: V | undefined) => void\n reject: (error: unknown) => void\n}\n\n/**\n * Collects keys requested close together into batched calls, and shares one\n * promise per key while it is pending or in flight.\n */\nexport class Batcher<K, V> {\n private queue = new Map<string, { key: K; pending: Pending<V> }>()\n private inFlight = new Map<string, Promise<V | undefined>>()\n private timer: ReturnType<typeof setTimeout> | null = null\n private active = 0\n private waiting: Array<() => void> = []\n\n constructor(\n private readonly run: (keys: K[]) => Promise<Map<string, V>>,\n private readonly options: BatcherOptions<K>,\n ) {}\n\n load(key: K): Promise<V | undefined> {\n const id = this.options.keyOf(key)\n const existing = this.queue.get(id)?.pending.promise ?? this.inFlight.get(id)\n if (existing) return existing\n\n let resolve!: (value: V | undefined) => void\n let reject!: (error: unknown) => void\n const promise = new Promise<V | undefined>((res, rej) => {\n resolve = res\n reject = rej\n })\n this.queue.set(id, { key, pending: { promise, resolve, reject } })\n if (this.queue.size >= this.options.maxBatch) this.flush()\n else this.timer ??= setTimeout(() => this.flush(), this.options.delayMs ?? 2)\n return promise\n }\n\n private flush(): void {\n if (this.timer) clearTimeout(this.timer)\n this.timer = null\n const entries = [...this.queue.entries()]\n this.queue.clear()\n for (let i = 0; i < entries.length; i += this.options.maxBatch) {\n void this.dispatch(entries.slice(i, i + this.options.maxBatch))\n }\n }\n\n private async dispatch(chunk: Array<[string, { key: K; pending: Pending<V> }]>): Promise<void> {\n for (const [id, { pending }] of chunk) this.inFlight.set(id, pending.promise)\n await this.acquire()\n try {\n const results = await this.run(chunk.map(([, item]) => item.key))\n for (const [id, { pending }] of chunk) pending.resolve(results.get(id))\n } catch (error) {\n for (const [, { pending }] of chunk) pending.reject(error)\n } finally {\n for (const [id] of chunk) this.inFlight.delete(id)\n this.release()\n }\n }\n\n private acquire(): Promise<void> {\n const limit = this.options.concurrency ?? 6\n if (this.active < limit) {\n this.active++\n return Promise.resolve()\n }\n return new Promise((resolve) => this.waiting.push(() => { this.active++; resolve() }))\n }\n\n private release(): void {\n this.active--\n this.waiting.shift()?.()\n }\n}\n","import type { Endpoint } from './types'\n\nexport class HttpError extends Error {\n constructor(\n readonly status: number,\n readonly url: string,\n message?: string,\n ) {\n super(message ?? `HTTP ${status} for ${url}`)\n this.name = 'HttpError'\n }\n}\n\nexport type FetchLike = (input: string, init?: RequestInit) => Promise<Response>\n\nexport interface RequestOptions {\n method?: 'GET' | 'POST'\n body?: unknown\n timeoutMs?: number\n}\n\nfunction joinUrl(base: string, path: string): string {\n return `${base.replace(/\\/+$/, '')}/${path.replace(/^\\/+/, '')}`\n}\n\n/** JSON request against an endpoint. Returns `undefined` on 404. */\nexport async function requestJson<T>(\n fetchFn: FetchLike,\n endpoint: Endpoint,\n path: string,\n options: RequestOptions = {},\n): Promise<T | undefined> {\n const url = joinUrl(endpoint.url, path)\n const headers: Record<string, string> = { accept: 'application/json', ...endpoint.headers }\n if (endpoint.token) headers['X-Algo-API-Token'] = endpoint.token\n if (options.body !== undefined) headers['content-type'] = 'application/json'\n\n const controller = new AbortController()\n const timer = setTimeout(() => controller.abort(), options.timeoutMs ?? 15_000)\n try {\n const res = await fetchFn(url, {\n method: options.method ?? (options.body === undefined ? 'GET' : 'POST'),\n headers,\n body: options.body === undefined ? undefined : JSON.stringify(options.body),\n signal: controller.signal,\n })\n if (res.status === 404) return undefined\n if (!res.ok) throw new HttpError(res.status, url, await res.text().catch(() => undefined))\n return (await res.json()) as T\n } finally {\n clearTimeout(timer)\n }\n}\n","import type { PolicyName } from './policy'\n\nexport interface KindDef {\n kind: string\n /** Tag names that store this kind in content. The first one is used when serializing. */\n tags: string[]\n /** Props that carry the id, in priority order. The first is used when serializing. */\n idProps: string[]\n /** Extra identifying props kept on the ref (never display data). */\n params?: string[]\n policy: PolicyName\n /** Source names to try, in order. Sources not configured on the client are skipped. */\n sources: string[]\n /** Contract family for chain sources (live state and archive reconstruction). */\n family?: string\n normalizeId?: (id: string) => string | undefined\n /** Builds the cache id from the tag id and params, for kinds keyed by more than one value. */\n composeId?: (id: string, params: Record<string, string>) => string\n /** Inverse of composeId, used when serializing a ref back to a tag. */\n decomposeId?: (id: string) => { id: string; params: Record<string, string> }\n}\n\nconst uint = (id: string) => (/^\\d+$/.test(id.trim()) ? String(BigInt(id.trim())) : undefined)\nconst address = (id: string) => (/^[A-Z2-7]{58}$/.test(id.trim()) ? id.trim() : undefined)\nconst nfdName = (id: string) => {\n const n = id.trim().toLowerCase()\n if (!n) return undefined\n return n.endsWith('.algo') ? n : `${n}.algo`\n}\nconst txid = (id: string) => (/^[A-Z2-7]{52}$/.test(id.trim()) ? id.trim() : undefined)\nconst any = (id: string) => (id.trim() ? id.trim() : undefined)\n\nconst contract = (kind: string, tag: string, family: string): KindDef => ({\n kind,\n tags: [tag],\n idProps: ['appId', 'id'],\n policy: 'live',\n sources: ['resolver', 'algod', 'indexer'],\n family,\n normalizeId: uint,\n})\n\nconst hosted = (kind: string, tag: string, idProps: string[], policy: PolicyName, extra: Partial<KindDef> = {}): KindDef => ({\n kind,\n tags: [tag],\n idProps,\n policy,\n sources: ['resolver'],\n normalizeId: any,\n ...extra,\n})\n\nexport const BUILT_IN_KINDS: KindDef[] = [\n { kind: 'account', tags: ['Account'], idProps: ['address', 'id'], policy: 'live', sources: ['algod', 'indexer'], normalizeId: address },\n { kind: 'identity', tags: [], idProps: ['address'], policy: 'slow', sources: ['identity'], normalizeId: address },\n { kind: 'asset', tags: ['ASA', 'Asset'], idProps: ['id', 'assetId'], policy: 'slow', sources: ['resolver', 'algod', 'indexer'], normalizeId: uint },\n { kind: 'application', tags: ['Application'], idProps: ['id', 'appId'], policy: 'slow', sources: ['resolver', 'indexer', 'algod'], normalizeId: uint },\n // A contract's ARC-56 interface: its `ui` actions and cards. Keyed by app id.\n { kind: 'interface', tags: [], idProps: ['appId', 'id'], policy: 'slow', sources: ['interface'], normalizeId: uint },\n { kind: 'asset-media', tags: [], idProps: ['id'], policy: 'slow', sources: ['media'], normalizeId: uint },\n { kind: 'transaction', tags: ['Transaction'], idProps: ['id', 'txId', 'txid'], policy: 'immutable', sources: ['indexer'], normalizeId: txid },\n { kind: 'nfd', tags: ['NFDProfile'], idProps: ['name', 'id'], policy: 'slow', sources: ['nfd'], normalizeId: nfdName },\n { kind: 'nfd-address', tags: [], idProps: ['address'], policy: 'slow', sources: ['nfd'], normalizeId: address },\n contract('listing', 'NFTListing', 'listing'),\n contract('auction', 'AuctionListing', 'auction'),\n contract('raffle', 'RaffleListing', 'raffle'),\n contract('poll', 'Poll', 'poll'),\n contract('prize-box', 'PrizeBox', 'prize-box'),\n hosted('collection', 'Collection', ['id', 'collectionId'], 'slow'),\n contract('staking-pool', 'StakingPool', 'staking-pool'),\n // HyperSwap is a singleton, so an offer id is enough. Older app tags also carry appId.\n // Chain first while the box exists; the resolver keeps closed offers and their participants.\n { kind: 'trade', tags: ['TradeOffer'], idProps: ['offerId', 'id'], params: ['appId'], policy: 'live', sources: ['algod', 'resolver'], normalizeId: uint },\n hosted('dual-stake', 'DualStakePool', ['appId', 'id'], 'live', { params: ['rewardAssetId'], normalizeId: uint }),\n // A disbursement id in the Rewards singleton.\n { kind: 'reward', tags: ['Reward'], idProps: ['id'], policy: 'live', sources: ['algod', 'resolver'], normalizeId: uint },\n // Services are numbered per owner, so the cache id is `<owner>/<serviceId>` when the owner is known.\n {\n kind: 'subscription',\n tags: ['Subscription'],\n idProps: ['id', 'serviceId'],\n params: ['owner', 'creator', 'address'],\n policy: 'slow',\n // Without an owner only the resolver can find the service.\n sources: ['algod', 'resolver'],\n normalizeId: (id) => (/^([A-Z2-7]{58}\\/)?\\d+$/.test(id.trim()) ? id.trim() : undefined),\n composeId: (id, params) => {\n const owner = params.owner ?? params.creator ?? params.address\n return owner && !id.includes('/') ? `${owner}/${id}` : id\n },\n decomposeId: (id): { id: string; params: Record<string, string> } => {\n const i = id.indexOf('/')\n return i < 0 ? { id, params: {} } : { id: id.slice(i + 1), params: { owner: id.slice(0, i) } }\n },\n },\n // Title is the author's own label in their post, not chain data.\n hosted('private-content', 'PrivateContent', ['id'], 'slow', { params: ['title'] }),\n // A page inside the same post. The host supplies its preview and navigation.\n { kind: 'page-card', tags: ['PageCard'], idProps: ['page', 'next', 'href', 'id'], params: ['title'], policy: 'immutable', sources: [], normalizeId: any },\n]\n\nexport class KindRegistry {\n private byKind = new Map<string, KindDef>()\n private byTag = new Map<string, KindDef>()\n\n constructor(defs: KindDef[] = BUILT_IN_KINDS) {\n defs.forEach((d) => this.register(d))\n }\n\n register(def: KindDef): void {\n this.byKind.set(def.kind, def)\n for (const tag of def.tags) this.byTag.set(tag, def)\n }\n\n get(kind: string): KindDef | undefined {\n return this.byKind.get(kind)\n }\n\n require(kind: string): KindDef {\n const def = this.byKind.get(kind)\n if (!def) throw new Error(`Unknown AlgoMD kind: ${kind}`)\n return def\n }\n\n forTag(tag: string): KindDef | undefined {\n return this.byTag.get(tag)\n }\n\n tags(): string[] {\n return [...this.byTag.keys()]\n }\n\n all(): KindDef[] {\n return [...this.byKind.values()]\n }\n}\n\nexport const defaultRegistry = new KindRegistry()\n","import { defaultRegistry, type KindRegistry } from './kinds'\nimport type { Ref, Size } from './types'\n\n/**\n * The AlgoMD content grammar. Stored content uses self-closing tags such as\n * `<ASA id=\"31566704\" />`. Existing posts are a compatibility boundary: tag\n * names, id props and legacy size props keep working.\n *\n * Only identifiers survive parsing. Any other prop is dropped, so content can\n * never supply the data that gets displayed.\n */\n\nexport interface RefSegment {\n type: 'ref'\n ref: Ref & { size?: Size }\n tag: string\n raw: string\n}\n\nexport interface TextSegment {\n type: 'text'\n content: string\n}\n\nexport type Segment = TextSegment | RefSegment\n\nconst PROPS = `((?:\"[^\"]*\"|'[^']*'|“[^”]*”|‘[^’]*’|\\\\{[^}]*\\\\}|[^'\"“”‘’>])*)`\nconst PROP_RE = /([A-Za-z_][\\w-]*)(?:\\s*=\\s*(?:\"([^\"]*)\"|'([^']*)'|\\{([^}]*)\\}|“([^”]*)”|‘([^’]*)’))?/g\nconst FENCE_RE = /```[\\s\\S]*?```/g\nconst ENTITIES: Record<string, string> = { amp: '&', quot: '\"', apos: \"'\", lt: '<', gt: '>' }\n\nconst tagRegexCache = new WeakMap<KindRegistry, { source: string; tags: string }>()\n\nfunction tagRegex(registry: KindRegistry): RegExp {\n const tags = registry.tags().sort((a, b) => b.length - a.length).join('|')\n let cached = tagRegexCache.get(registry)\n if (!cached || cached.tags !== tags) {\n cached = { tags, source: `<(${tags})\\\\b${PROPS}\\\\/>` }\n tagRegexCache.set(registry, cached)\n }\n return new RegExp(cached.source, 'g')\n}\n\nfunction decodeEntities(value: string): string {\n return value.replace(/&(amp|quot|apos|lt|gt);/g, (_, e: string) => ENTITIES[e] ?? _)\n}\n\nexport function parseProps(raw: string): Record<string, string> {\n const props: Record<string, string> = {}\n for (const m of raw.matchAll(PROP_RE)) {\n const name = m[1]!\n props[name] = decodeEntities(m[2] ?? m[3] ?? m[4] ?? m[5] ?? m[6] ?? 'true').trim()\n }\n return props\n}\n\n/** Maps current and legacy size props to a size. */\nexport function sizeFromProps(props: Record<string, string>): Size | undefined {\n const size = props.size?.toLowerCase()\n switch (size) {\n case 'inline':\n case 'small':\n case 'large':\n return size\n case 'xs':\n case 'sm':\n return 'inline'\n // Legacy `full` meant a full-width card. The full-screen size is stored as `fullscreen`.\n case 'md':\n case 'lg':\n case 'xl':\n case 'full':\n return 'large'\n case 'fullscreen':\n return 'full'\n }\n if (props.inline === 'true' || props.compact === 'true') return 'inline'\n return undefined\n}\n\n/** Builds a ref from a tag name and its props, or undefined if the id is missing or malformed. */\nexport function refFromTag(tag: string, props: Record<string, string>, registry: KindRegistry = defaultRegistry): (Ref & { size?: Size }) | undefined {\n const def = registry.forTag(tag)\n if (!def) return undefined\n const rawId = def.idProps.map((p) => props[p]).find((v) => v && v !== 'true')\n if (!rawId) return undefined\n const params = Object.fromEntries((def.params ?? []).filter((p) => props[p]).map((p) => [p, props[p]!]))\n const composed = def.composeId ? def.composeId(rawId, params) : rawId\n const id = def.normalizeId ? def.normalizeId(composed) : composed\n if (!id) return undefined\n const ref: Ref & { size?: Size } = { kind: def.kind, id }\n if (Object.keys(params).length) ref.params = params\n const size = sizeFromProps(props)\n if (size) ref.size = size\n return ref\n}\n\n/** Splits content into text and reference segments. Tags inside fenced code stay text. */\nexport function parseContent(content: string, registry: KindRegistry = defaultRegistry): Segment[] {\n if (!content) return []\n const fences = [...content.matchAll(FENCE_RE)].map((m) => [m.index!, m.index! + m[0].length] as const)\n const inFence = (i: number) => fences.some(([s, e]) => i >= s && i < e)\n\n const out: Segment[] = []\n let last = 0\n for (const m of content.matchAll(tagRegex(registry))) {\n const at = m.index!\n if (inFence(at)) continue\n const ref = refFromTag(m[1]!, parseProps(m[2] ?? ''), registry)\n if (!ref) continue\n if (at > last) out.push({ type: 'text', content: content.slice(last, at) })\n out.push({ type: 'ref', ref, tag: m[1]!, raw: m[0] })\n last = at + m[0].length\n }\n if (last < content.length) out.push({ type: 'text', content: content.slice(last) })\n return out\n}\n\n/** Every distinct reference in the content, in order of first appearance. */\nexport function extractRefs(content: string, registry: KindRegistry = defaultRegistry): Ref[] {\n const seen = new Map<string, Ref>()\n for (const s of parseContent(content, registry)) {\n if (s.type !== 'ref') continue\n const key = `${s.ref.kind}:${s.ref.id}`\n if (!seen.has(key)) seen.set(key, { kind: s.ref.kind, id: s.ref.id, ...(s.ref.params ? { params: s.ref.params } : {}) })\n }\n return [...seen.values()]\n}\n\nexport function hasRefs(content: string, registry: KindRegistry = defaultRegistry): boolean {\n return parseContent(content, registry).some((s) => s.type === 'ref')\n}\n\nconst attr = (v: string) => v.replace(/&/g, '&amp;').replace(/\"/g, '&quot;').replace(/</g, '&lt;').replace(/>/g, '&gt;')\n\n/**\n * Serializes a reference as a tag. Sizes are written in a form that older\n * clients also understand: inline as `compact`, full as `size=\"fullscreen\"`.\n */\nexport function serializeRef(ref: Ref & { size?: Size }, registry: KindRegistry = defaultRegistry): string {\n const def = registry.require(ref.kind)\n const tag = def.tags[0]\n if (!tag) throw new Error(`Kind ${ref.kind} has no tag and cannot be stored in content`)\n const split = def.decomposeId ? def.decomposeId(ref.id) : { id: ref.id, params: {} as Record<string, string> }\n const params = { ...split.params, ...ref.params }\n const parts = [`${def.idProps[0]}=\"${attr(split.id)}\"`]\n for (const p of def.params ?? []) if (params[p]) parts.push(`${p}=\"${attr(params[p])}\"`)\n if (ref.size === 'inline') parts.push('compact')\n else if (ref.size === 'small') parts.push('size=\"small\"')\n else if (ref.size === 'full') parts.push('size=\"fullscreen\"')\n return `<${tag} ${parts.join(' ')} />`\n}\n","import algosdk from 'algosdk'\nimport type { FetchLike } from '../http'\nimport { fetchAppHistory } from '../sources/indexer'\nimport type { Endpoint, Entity } from '../types'\nimport { FAMILIES } from './families'\n\nexport interface VerifyOptions {\n fetch: FetchLike\n /** Indexer to check against. Prefer one not operated by whoever made the claim. */\n indexer: Endpoint\n /** Factory app ids allowed to have created this kind of app. */\n factories?: number[]\n}\n\nconst norm = (v: unknown) => (v === undefined || v === null || v === '' ? null : v)\nconst same = (a: unknown, b: unknown) => JSON.stringify(norm(a)) === JSON.stringify(norm(b))\n\n/**\n * Checks a claimed archived entity against chain history. Returns the entity\n * with chain-derived data and a verification result. See docs/DESIGN.md §5.\n */\nexport async function verifyArchived(entity: Entity, options: VerifyOptions): Promise<Entity> {\n const checkedAt = Date.now()\n const family = FAMILIES[entity.kind]\n if (!family) return { ...entity, verification: { state: 'unverified', checkedAt, detail: `No reducer for ${entity.kind}` } }\n\n const appId = String(entity.evidence?.appId ?? entity.id)\n const history = await fetchAppHistory(options.fetch, options.indexer, appId)\n if (!history) return { ...entity, verification: { state: 'unverified', checkedAt, detail: 'Indexer has no record of this app' } }\n\n const mismatches: string[] = []\n let factoryAppId: number | undefined\n if (options.factories?.length) {\n const creator = history.application.params.creator\n factoryAppId = options.factories.find((id) => algosdk.getApplicationAddress(id).toString() === creator)\n if (factoryAppId === undefined) mismatches.push('factory')\n }\n\n const reduced = family.reduce(history.application, history.transactions)\n if (!history.application.deleted) mismatches.push('status')\n const claimed = (entity.data ?? {}) as Record<string, unknown>\n const derived = reduced.data as Record<string, unknown>\n for (const field of family.verifyFields) if (!same(claimed[field], derived[field])) mismatches.push(field)\n\n return {\n ...entity,\n status: history.application.deleted ? 'archived' : 'live',\n // Always show what the chain says, whatever was claimed.\n data: reduced.data,\n evidence: { ...reduced.evidence, ...(factoryAppId !== undefined ? { factoryAppId } : {}) },\n verification: mismatches.length\n ? { state: 'mismatch', checkedAt, mismatches, detail: `Claim differs from chain history: ${mismatches.join(', ')}` }\n : { state: 'verified', checkedAt },\n }\n}\n","const B64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nconst LOOKUP = new Map([...B64].map((c, i) => [c, i]))\n\n/** Base64 to bytes without relying on atob or Buffer, so it runs on every host. */\nexport function fromBase64(input: string): Uint8Array {\n const clean = input.replace(/[^A-Za-z0-9+/]/g, '')\n const out = new Uint8Array(Math.floor((clean.length * 3) / 4))\n let buffer = 0\n let bits = 0\n let o = 0\n for (const c of clean) {\n buffer = (buffer << 6) | (LOOKUP.get(c) ?? 0)\n bits += 6\n if (bits >= 8) {\n bits -= 8\n out[o++] = (buffer >> bits) & 0xff\n }\n }\n return out.subarray(0, o)\n}\n\nexport function toHex(bytes: Uint8Array): string {\n return Array.from(bytes, (b) => b.toString(16).padStart(2, '0')).join('')\n}\n\nexport function toLatin1(bytes: Uint8Array): string {\n return Array.from(bytes, (b) => String.fromCharCode(b)).join('')\n}\n\n/** UTF-8 decode that does not depend on TextDecoder. Invalid sequences become U+FFFD. */\nexport function utf8(bytes: Uint8Array): string {\n let out = ''\n for (let i = 0; i < bytes.length; ) {\n const b = bytes[i++]!\n let cp: number\n if (b < 0x80) cp = b\n else if (b >= 0xc0 && b < 0xe0 && i < bytes.length) cp = ((b & 0x1f) << 6) | (bytes[i++]! & 0x3f)\n else if (b >= 0xe0 && b < 0xf0 && i + 1 < bytes.length) cp = ((b & 0x0f) << 12) | ((bytes[i++]! & 0x3f) << 6) | (bytes[i++]! & 0x3f)\n else if (b >= 0xf0 && i + 2 < bytes.length)\n cp = ((b & 0x07) << 18) | ((bytes[i++]! & 0x3f) << 12) | ((bytes[i++]! & 0x3f) << 6) | (bytes[i++]! & 0x3f)\n else cp = 0xfffd\n out += String.fromCodePoint(cp)\n }\n return out\n}\n\nexport function bytesToBigInt(bytes: Uint8Array): bigint {\n let v = 0n\n for (const b of bytes) v = (v << 8n) | BigInt(b)\n return v\n}\n\nexport function toBase64(bytes: Uint8Array): string {\n let out = ''\n for (let i = 0; i < bytes.length; i += 3) {\n const n = (bytes[i]! << 16) | ((bytes[i + 1] ?? 0) << 8) | (bytes[i + 2] ?? 0)\n out += B64[(n >> 18) & 63]! + B64[(n >> 12) & 63]!\n out += i + 1 < bytes.length ? B64[(n >> 6) & 63]! : '='\n out += i + 2 < bytes.length ? B64[n & 63]! : '='\n }\n return out\n}\n\nexport function fromHex(hex: string): Uint8Array {\n const clean = hex.replace(/^0x/, '')\n const out = new Uint8Array(clean.length / 2)\n for (let i = 0; i < out.length; i++) out[i] = parseInt(clean.slice(i * 2, i * 2 + 2), 16)\n return out\n}\n","import algosdk from 'algosdk'\nimport { fromBase64, fromHex, toBase64 } from './chain/bytes'\nimport { stateFromTeal, type RawState } from './chain/state'\nimport type { TealKeyValue } from './chain/indexer-types'\nimport { boxName, boxPrefix, decodeBoxKey, decodeBoxValue, decodeGlobalState, type Decoded } from './contracts/decode'\nimport { requestJson, type FetchLike } from './http'\nimport { base32Lower } from './media'\nimport type { Endpoint } from './types'\n\n/*\n * Kinds that live in contract boxes: staking-pool rewards, reward\n * disbursements (Rewards singleton), subscription services (Subscriptions\n * singleton) and trade offers (HyperSwap singleton).\n */\n\n/** Singleton app ids a host deploys. Defaults are the Akita deployments per network. */\nexport interface SingletonApps {\n rewards?: number\n subscriptions?: number\n hyperSwap?: number\n}\n\nexport const AKITA_SINGLETONS: Record<string, SingletonApps> = {\n mainnet: { rewards: 3569556095, subscriptions: 3569556497, hyperSwap: 3569558555 },\n testnet: { rewards: 763128244, subscriptions: 763128278, hyperSwap: 763128499 },\n}\n\nconst str = (v: Decoded | undefined): string => (typeof v === 'string' ? v : v == null ? '' : String(v))\nconst nowSec = () => Math.floor(Date.now() / 1000)\nconst ZERO = 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAY5HFKQ'\nconst addr = (v: Decoded | undefined) => (typeof v === 'string' && v && v !== ZERO ? v : undefined)\nconst field = (v: Decoded | undefined, k: string): Decoded | undefined =>\n v && typeof v === 'object' && !Array.isArray(v) ? (v as Record<string, Decoded>)[k] : undefined\n\n// ---------------------------------------------------------------- box reads\n\nexport async function readBox(fetchFn: FetchLike, algod: Endpoint, appId: number | string, name: Uint8Array): Promise<Uint8Array | undefined> {\n const res = await requestJson<{ value: string }>(fetchFn, algod, `/v2/applications/${appId}/box?name=b64:${encodeURIComponent(toBase64(name))}`)\n return res ? fromBase64(res.value) : undefined\n}\n\nexport async function listBoxNames(fetchFn: FetchLike, algod: Endpoint, appId: number | string, prefix: Uint8Array): Promise<Uint8Array[]> {\n const res = await requestJson<{ boxes: Array<{ name: string }> }>(\n fetchFn,\n algod,\n `/v2/applications/${appId}/boxes?prefix=b64:${encodeURIComponent(toBase64(prefix))}&max=1000`,\n )\n // Older nodes ignore `prefix`; filter here as well.\n return (res?.boxes ?? []).map((b) => fromBase64(b.name)).filter((n) => prefix.every((p, i) => n[i] === p))\n}\n\n// ---------------------------------------------------------------- staking pool\n\nconst POOL_TYPES: Record<string, string> = { '0': 'none', '10': 'heartbeat', '20': 'soft', '30': 'hard', '40': 'lock' }\nconst DISTRIBUTIONS: Record<string, string> = { '10': 'percentage', '20': 'flat', '30': 'even', '40': 'shuffle' }\n\nexport interface StakingPoolReward {\n id: string\n asset: string\n distribution: string\n rate: string\n interval: string\n expiration: string\n winnerCount: string\n qualifiedStakers: string\n}\n\nexport interface StakingPoolData {\n appId: string\n status: 'draft' | 'upcoming' | 'signups' | 'active' | 'ended' | 'closed'\n title: string\n poolType: string\n creator?: string\n signupAt: string\n startAt: string\n endAt: string\n allowLateSignups: boolean\n maxEntries: string\n entryCount: string\n minimumStake: string\n stakeKey?: { address?: string; name: string }\n gateId: string\n rewards?: StakingPoolReward[]\n closedRound?: number\n}\n\nexport function stakingPoolFromDecoded(appId: string, d: Record<string, Decoded>, now = nowSec()): StakingPoolData {\n const final = str(d.status) === '10'\n const signup = Number(str(d.signupTimestamp) || 0)\n const start = Number(str(d.startTimestamp) || 0)\n const end = Number(str(d.endTimestamp) || 0)\n const status: StakingPoolData['status'] = !final ? 'draft' : now < signup ? 'upcoming' : now < start ? 'signups' : end && now >= end ? 'ended' : 'active'\n const key = d.stakeKey\n return {\n appId,\n status,\n title: str(d.title),\n poolType: POOL_TYPES[str(d.type)] ?? str(d.type),\n creator: addr(d.creator),\n signupAt: str(d.signupTimestamp),\n startAt: str(d.startTimestamp),\n endAt: str(d.endTimestamp),\n allowLateSignups: str(d.allowLateSignups) === '1' || d.allowLateSignups === true,\n maxEntries: str(d.maxEntries),\n // entry_id is the next entry id and starts at 1.\n entryCount: String(Math.max(0, Number(str(d.entryID) || 1) - 1)),\n minimumStake: str(d.minimumStakeAmount),\n ...(key ? { stakeKey: { address: addr(field(key, 'address')), name: str(field(key, 'name')) } } : {}),\n gateId: str(d.gateID),\n }\n}\n\nexport function stakingPoolFromState(appId: string, state: RawState): StakingPoolData {\n return stakingPoolFromDecoded(appId, decodeGlobalState('stakingPool', state))\n}\n\nexport async function readStakingPoolRewards(fetchFn: FetchLike, algod: Endpoint, appId: string): Promise<StakingPoolReward[]> {\n const names = await listBoxNames(fetchFn, algod, appId, boxPrefix('stakingPool', 'rewards'))\n const rewards = await Promise.all(\n names.map(async (name) => {\n const value = await readBox(fetchFn, algod, appId, name)\n if (!value) return undefined\n const r = decodeBoxValue('stakingPool', 'rewards', value)\n return {\n id: str(decodeBoxKey('stakingPool', 'rewards', name)),\n asset: str(field(r, 'asset')),\n distribution: DISTRIBUTIONS[str(field(r, 'distribution'))] ?? str(field(r, 'distribution')),\n rate: str(field(r, 'rate')),\n interval: str(field(r, 'interval')),\n expiration: str(field(r, 'expiration')),\n winnerCount: str(field(r, 'winnerCount')),\n qualifiedStakers: str(field(r, 'qualifiedStakers')),\n }\n }),\n )\n return rewards.filter((r): r is StakingPoolReward => Boolean(r)).sort((a, b) => Number(a.id) - Number(b.id))\n}\n\nexport async function readStakingPool(fetchFn: FetchLike, algod: Endpoint, appId: string, globalState: TealKeyValue[] | undefined): Promise<StakingPoolData> {\n const pool = stakingPoolFromState(appId, stateFromTeal(globalState))\n pool.rewards = await readStakingPoolRewards(fetchFn, algod, appId).catch(() => undefined)\n return pool\n}\n\n// ---------------------------------------------------------------- reward disbursement\n\nexport interface RewardData {\n id: string\n rewardsAppId: string\n creator?: string\n finalized: boolean\n title: string\n note: string\n amount: string\n distributed: string\n allocations: string\n unlockAt: string\n expiresAt: string\n status: 'draft' | 'locked' | 'claimable' | 'expired'\n}\n\nexport async function readReward(fetchFn: FetchLike, algod: Endpoint, rewardsAppId: number, id: string): Promise<RewardData | undefined> {\n const value = await readBox(fetchFn, algod, rewardsAppId, boxName('rewards', 'disbursements', BigInt(id)))\n if (!value) return undefined\n const d = decodeBoxValue('rewards', 'disbursements', value)\n const finalized = field(d, 'finalized') === true\n const unlock = Number(str(field(d, 'timeToUnlock')) || 0)\n const expires = Number(str(field(d, 'expiration')) || 0)\n const now = nowSec()\n return {\n id,\n rewardsAppId: String(rewardsAppId),\n creator: addr(field(d, 'creator')),\n finalized,\n title: str(field(d, 'title')),\n note: str(field(d, 'note')),\n amount: str(field(d, 'amount')),\n distributed: str(field(d, 'distributed')),\n allocations: str(field(d, 'allocations')),\n unlockAt: String(unlock),\n expiresAt: String(expires),\n status: !finalized ? 'draft' : expires && now >= expires ? 'expired' : unlock && now < unlock ? 'locked' : 'claimable',\n }\n}\n\n// ---------------------------------------------------------------- subscription service\n\nconst SERVICE_STATUS: Record<string, string> = { '10': 'draft', '20': 'active', '30': 'paused', '40': 'shutdown' }\n\nexport interface SubscriptionData {\n owner: string\n serviceId: string\n status: string\n title: string\n description: string\n /** ipfs:// URL of the banner image. */\n banner?: string\n asset: string\n amount: string\n /** Seconds between payments. */\n interval: string\n passes: string\n gateId: string\n highlightColor?: string\n /** The service's highlight tag (1 Best Value, 2 Popular, ... 15 Early Access). Absent when none. */\n highlightMessage?: number\n subscriberCount?: number\n}\n\n/** A subscription ref id is `<owner>/<serviceId>`: services are numbered per owner. */\nexport function splitSubscriptionId(id: string): { owner?: string; serviceId: string } {\n const i = id.indexOf('/')\n return i < 0 ? { serviceId: id } : { owner: id.slice(0, i), serviceId: id.slice(i + 1) }\n}\n\nfunction cidFromBytes(hex: string): string | undefined {\n const bytes = fromHex(hex)\n if (!bytes.length || bytes.every((b) => b === 0)) return undefined\n return `ipfs://b${base32Lower(bytes)}`\n}\n\nexport async function readSubscription(fetchFn: FetchLike, algod: Endpoint, subscriptionsAppId: number, id: string): Promise<SubscriptionData | undefined> {\n const { owner, serviceId } = splitSubscriptionId(id)\n if (!owner || !algosdk.isValidAddress(owner)) return undefined\n const value = await readBox(fetchFn, algod, subscriptionsAppId, boxName('subscriptions', 'services', [owner, BigInt(serviceId)]))\n if (!value) return undefined\n const s = decodeBoxValue('subscriptions', 'services', value)\n const color = str(field(s, 'highlightColor'))\n return {\n owner,\n serviceId,\n status: SERVICE_STATUS[str(field(s, 'status'))] ?? str(field(s, 'status')),\n title: str(field(s, 'title')),\n description: str(field(s, 'description')),\n banner: cidFromBytes(str(field(s, 'bannerImage'))),\n asset: str(field(s, 'asset')),\n amount: str(field(s, 'amount')),\n interval: str(field(s, 'interval')),\n passes: str(field(s, 'passes')),\n gateId: str(field(s, 'gateID')),\n ...(color && color !== '000000' ? { highlightColor: `#${color}` } : {}),\n ...(Number(str(field(s, 'highlightMessage'))) > 0 ? { highlightMessage: Number(str(field(s, 'highlightMessage'))) } : {}),\n }\n}\n\n// ---------------------------------------------------------------- trade offer\n\nconst OFFER_STATES: Record<string, string> = {\n '10': 'offered',\n '20': 'escrowing',\n '30': 'disbursing',\n '40': 'completed',\n '50': 'cancelled',\n '60': 'cancelled',\n}\n\nexport interface TradeLeg {\n from: string\n to: string\n asset: string\n amount: string\n}\n\nexport interface TradeData {\n offerId: string\n hyperSwapAppId: string\n state: string\n expiration: string\n /** Number of transfers in the trade. */\n legCount: string\n escrowed: string\n participantCount: string\n acceptances: string\n creator?: string\n participants?: string[]\n /** Only from an off-chain source; the chain keeps a Merkle root. */\n legs?: TradeLeg[]\n}\n\nexport async function readTrade(fetchFn: FetchLike, algod: Endpoint, hyperSwapAppId: number, offerId: string): Promise<TradeData | undefined> {\n const value = await readBox(fetchFn, algod, hyperSwapAppId, boxName('hyperSwap', 'offers', BigInt(offerId)))\n if (!value) return undefined\n const o = decodeBoxValue('hyperSwap', 'offers', value)\n return {\n offerId,\n hyperSwapAppId: String(hyperSwapAppId),\n state: OFFER_STATES[str(field(o, 'state'))] ?? str(field(o, 'state')),\n expiration: str(field(o, 'expiration')),\n legCount: str(field(o, 'leaves')),\n escrowed: str(field(o, 'escrowed')),\n participantCount: str(field(o, 'participantsLeaves')),\n acceptances: str(field(o, 'acceptances')),\n }\n}\n\n// ---------------------------------------------------------------- host-only kinds\n\n/** A dualSTAKE pool (external Myth contract), served by a resolver. */\nexport interface DualStakeData {\n appId: string\n pairedAssetId: string\n lstAssetId: string\n rate?: string\n algoBalance?: string\n asaBalance?: string\n staked?: string\n isOnline?: boolean\n name?: string\n}\n\n/** Public metadata of an encrypted post section. Unlocking needs the viewer's keys and stays in the host. */\nexport interface PrivateContentData {\n id: string\n authorAddress?: string\n ciphertextSize?: number\n createdAt?: number\n}\n\n","import { bytesToBigInt, fromBase64, toLatin1 } from './bytes'\nimport type { EvalDeltaKeyValue, TealKeyValue } from './indexer-types'\n\nexport interface RawValue {\n bytes?: Uint8Array\n uint?: bigint\n}\n\n/** Global state keyed by the raw key bytes as a latin1 string (the form ARC-56 keys use). */\nexport type RawState = Map<string, RawValue>\n\nexport function stateFromTeal(kvs: TealKeyValue[] | undefined): RawState {\n const state: RawState = new Map()\n for (const kv of kvs ?? []) {\n const key = toLatin1(fromBase64(kv.key))\n state.set(key, kv.value.type === 1 ? { bytes: fromBase64(kv.value.bytes ?? '') } : { uint: BigInt(kv.value.uint ?? 0) })\n }\n return state\n}\n\n/** Applies an eval delta in place. */\nexport function applyDelta(state: RawState, delta: EvalDeltaKeyValue[] | undefined): void {\n for (const kv of delta ?? []) {\n const key = toLatin1(fromBase64(kv.key))\n if (kv.value.action === 1) state.set(key, { bytes: fromBase64(kv.value.bytes ?? '') })\n else if (kv.value.action === 2) state.set(key, { uint: BigInt(kv.value.uint ?? 0) })\n else if (kv.value.action === 3) state.delete(key)\n }\n}\n\nexport function rawUint(state: RawState, key: string): bigint | undefined {\n const v = state.get(key)\n if (!v) return undefined\n return v.uint ?? (v.bytes ? bytesToBigInt(v.bytes) : undefined)\n}\n","import algosdk from 'algosdk'\nimport { bytesToBigInt, fromBase64, toHex, utf8 } from '../chain/bytes'\nimport type { RawState } from '../chain/state'\nimport { CONTRACT_SCHEMAS, type ContractName } from './schemas.generated'\n\ntype StructField = { name: string; type: string }\ntype Structs = Record<string, readonly StructField[]>\n\n/** JSON-safe decoded value: uint64 and wider become decimal strings. */\nexport type Decoded = string | boolean | null | Decoded[] | { [k: string]: Decoded }\n\nfunction structTuple(name: string, structs: Structs): string | undefined {\n const fields = structs[name]\n if (!fields) return undefined\n return `(${fields.map((f) => structTuple(f.type, structs) ?? f.type).join(',')})`\n}\n\nfunction normalize(value: unknown, typeName: string, structs: Structs): Decoded {\n const fields = structs[typeName]\n if (fields && Array.isArray(value)) {\n const out: Record<string, Decoded> = {}\n fields.forEach((f, i) => { out[f.name] = normalize(value[i], f.type, structs) })\n return out\n }\n // Byte arrays (byte[N], byte[]) decode to numbers; keep them as hex.\n if (/^byte\\[\\d*\\]$/.test(typeName) && (Array.isArray(value) || value instanceof Uint8Array)) {\n return toHex(Uint8Array.from(value as ArrayLike<number | bigint>, (b) => Number(b)))\n }\n if (typeof value === 'bigint' || typeof value === 'number') return value.toString()\n if (typeof value === 'string' || typeof value === 'boolean') return value\n if (value instanceof Uint8Array) return toHex(value)\n if (Array.isArray(value)) return value.map((v) => normalize(v, '', structs))\n if (value && typeof value === 'object' && 'toString' in value) return String(value)\n return null\n}\n\n/** Decodes one raw global value by its ARC-56 value type. */\nexport function decodeValue(type: string, raw: { bytes?: Uint8Array; uint?: bigint }, structs: Structs): Decoded {\n if (type === 'AVMUint64') return (raw.uint ?? (raw.bytes ? bytesToBigInt(raw.bytes) : 0n)).toString()\n const bytes = raw.bytes ?? new Uint8Array()\n if (type === 'AVMString') return utf8(bytes)\n if (type === 'AVMBytes') return toHex(bytes)\n if (type === 'address') return bytes.length === 32 ? algosdk.encodeAddress(bytes) : toHex(bytes)\n const abi = structTuple(type, structs) ?? type\n try {\n return normalize(algosdk.ABIType.from(abi).decode(bytes), type, structs)\n } catch {\n return toHex(bytes)\n }\n}\n\n/** Decodes a contract's raw global state into named fields using its ARC-56 schema. */\nexport function decodeGlobalState(contract: ContractName, state: RawState): Record<string, Decoded> {\n const schema = CONTRACT_SCHEMAS[contract]\n const structs = schema.structs as unknown as Structs\n const out: Record<string, Decoded> = {}\n for (const [field, def] of Object.entries(schema.global)) {\n const raw = state.get(def.key)\n if (raw) out[field] = decodeValue(def.type, raw, structs)\n }\n return out\n}\n\n/** Method name for a 4-byte selector (hex), or undefined for unknown or older contract versions. */\nexport function methodForSelector(contract: ContractName, selectorHex: string): string | undefined {\n for (const [name, m] of Object.entries(CONTRACT_SCHEMAS[contract].methods)) {\n if (m.selector === selectorHex) return name\n }\n return undefined\n}\n\n/** Decodes the ABI args of a call (excluding the selector and transaction args). */\nexport function decodeArgs(contract: ContractName, method: string, args: Uint8Array[]): Decoded[] {\n const m = (CONTRACT_SCHEMAS[contract].methods as Record<string, { args: readonly { type: string; struct?: string }[] }>)[method]\n if (!m) return []\n const structs = CONTRACT_SCHEMAS[contract].structs as unknown as Structs\n const txnTypes = new Set(['txn', 'pay', 'keyreg', 'acfg', 'axfer', 'afrz', 'appl'])\n const out: Decoded[] = []\n let i = 1\n for (const a of m.args) {\n if (txnTypes.has(a.type)) continue\n const bytes = args[i++]\n if (!bytes) break\n try {\n out.push(normalize(algosdk.ABIType.from(a.type).decode(bytes), a.struct ?? a.type, structs))\n } catch {\n out.push(toHex(bytes))\n }\n }\n return out\n}\n\nexport interface DecodedEvent {\n name: string\n fields: Record<string, Decoded>\n}\n\n/**\n * Decodes the ARC-28 events in a call's logs (base64, as the indexer returns\n * them). Logs that are not events of this contract are skipped.\n */\nexport function decodeEvents(contract: ContractName, logs: string[]): DecodedEvent[] {\n const events = (CONTRACT_SCHEMAS[contract] as { events?: Record<string, { selector: string; args: readonly StructField[] }> }).events ?? {}\n const bySelector = new Map(Object.entries(events).map(([name, e]) => [e.selector, { name, args: e.args }]))\n const out: DecodedEvent[] = []\n for (const log of logs) {\n const bytes = fromBase64(log)\n if (bytes.length < 4) continue\n const event = bySelector.get(toHex(bytes.subarray(0, 4)))\n if (!event) continue\n try {\n const values = algosdk.ABIType.from(`(${event.args.map((a) => a.type).join(',')})`).decode(bytes.subarray(4)) as unknown[]\n const fields: Record<string, Decoded> = {}\n event.args.forEach((a, i) => { fields[a.name] = normalize(values[i], a.type, {}) })\n out.push({ name: event.name, fields })\n } catch {\n // A log that happens to share a selector but does not decode is not this event.\n }\n }\n return out\n}\n\ntype BoxDef = { prefix: string; keyType: string; valueType: string }\n\nfunction boxDef(contract: ContractName, map: string): BoxDef {\n const def = (CONTRACT_SCHEMAS[contract] as unknown as { boxes?: Record<string, BoxDef> }).boxes?.[map]\n if (!def) throw new Error(`${contract} has no box map ${map}`)\n return def\n}\n\nfunction abiTypeFor(type: string, structs: Structs): string {\n return structTuple(type, structs) ?? (type === 'AVMBytes' ? 'byte[]' : type === 'AVMString' ? 'string' : type === 'AVMUint64' ? 'uint64' : type)\n}\n\n/**\n * The full box name for a map key: the map's prefix plus the ABI-encoded key.\n * Struct keys are passed as arrays in field order, e.g. `[address, id]`.\n */\nexport function boxName(contract: ContractName, map: string, key: unknown): Uint8Array {\n const def = boxDef(contract, map)\n const structs = CONTRACT_SCHEMAS[contract].structs as unknown as Structs\n const prefix = Uint8Array.from(def.prefix, (c) => c.charCodeAt(0))\n const encoded = algosdk.ABIType.from(abiTypeFor(def.keyType, structs)).encode(key as algosdk.ABIValue)\n const out = new Uint8Array(prefix.length + encoded.length)\n out.set(prefix)\n out.set(encoded, prefix.length)\n return out\n}\n\nexport function boxPrefix(contract: ContractName, map: string): Uint8Array {\n return Uint8Array.from(boxDef(contract, map).prefix, (c) => c.charCodeAt(0))\n}\n\n/** Decodes a box value by its map's ARC-56 value type. */\nexport function decodeBoxValue(contract: ContractName, map: string, bytes: Uint8Array): Decoded {\n const def = boxDef(contract, map)\n return decodeValue(def.valueType, { bytes }, CONTRACT_SCHEMAS[contract].structs as unknown as Structs)\n}\n\n/** Decodes the key part of a box name (after the prefix). */\nexport function decodeBoxKey(contract: ContractName, map: string, name: Uint8Array): Decoded {\n const def = boxDef(contract, map)\n const structs = CONTRACT_SCHEMAS[contract].structs as unknown as Structs\n return normalize(algosdk.ABIType.from(abiTypeFor(def.keyType, structs)).decode(name.subarray(def.prefix.length)), def.keyType, structs)\n}\n","// Generated by scripts/gen-contract-schemas.mjs from akita-sc ARC-56 specs. Do not edit.\nexport const CONTRACT_SCHEMAS = {\n \"listing\": {\n \"name\": \"Listing\",\n \"global\": {\n \"prize\": {\n \"key\": \"prize\",\n \"type\": \"AVMUint64\"\n },\n \"isPrizeBox\": {\n \"key\": \"is_prize_box\",\n \"type\": \"AVMUint64\"\n },\n \"price\": {\n \"key\": \"price\",\n \"type\": \"AVMUint64\"\n },\n \"paymentAsset\": {\n \"key\": \"payment_asset\",\n \"type\": \"AVMUint64\"\n },\n \"expiration\": {\n \"key\": \"expiration\",\n \"type\": \"AVMUint64\"\n },\n \"seller\": {\n \"key\": \"seller\",\n \"type\": \"address\"\n },\n \"reservedFor\": {\n \"key\": \"reserved_for\",\n \"type\": \"address\"\n },\n \"creatorRoyalty\": {\n \"key\": \"creator_royalty\",\n \"type\": \"AVMUint64\"\n },\n \"gateID\": {\n \"key\": \"gate_id\",\n \"type\": \"AVMUint64\"\n },\n \"marketplace\": {\n \"key\": \"marketplace\",\n \"type\": \"address\"\n },\n \"marketplaceRoyalties\": {\n \"key\": \"marketplace_royalties\",\n \"type\": \"AVMUint64\"\n },\n \"akitaDAOEscrow\": {\n \"key\": \"akita_escrow\",\n \"type\": \"EscrowConfig\"\n },\n \"prizeAmount\": {\n \"key\": \"prize_amount\",\n \"type\": \"AVMUint64\"\n },\n \"lastPriceRound\": {\n \"key\": \"price_round\",\n \"type\": \"AVMUint64\"\n },\n \"rev\": {\n \"key\": \"rev\",\n \"type\": \"AVMUint64\"\n },\n \"version\": {\n \"key\": \"version\",\n \"type\": \"AVMString\"\n },\n \"akitaDAO\": {\n \"key\": \"akita_dao\",\n \"type\": \"AVMUint64\"\n },\n \"funder\": {\n \"key\": \"funder\",\n \"type\": \"FunderInfo\"\n }\n },\n \"boxes\": {},\n \"methods\": {\n \"create\": {\n \"signature\": \"create(uint64,bool,uint64,uint64,uint64,address,(address,uint64),address,uint64,uint64,address,string,uint64,(string,uint64),uint64)void\",\n \"selector\": \"bcb5417a\",\n \"args\": [\n {\n \"name\": \"prize\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"isPrizeBox\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"price\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"paymentAsset\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"expiration\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"seller\",\n \"type\": \"address\"\n },\n {\n \"name\": \"funder\",\n \"type\": \"(address,uint64)\",\n \"struct\": \"FunderInfo\"\n },\n {\n \"name\": \"reservedFor\",\n \"type\": \"address\"\n },\n {\n \"name\": \"creatorRoyalty\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"gateID\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"marketplace\",\n \"type\": \"address\"\n },\n {\n \"name\": \"version\",\n \"type\": \"string\"\n },\n {\n \"name\": \"akitaDAO\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"akitaDAOEscrow\",\n \"type\": \"(string,uint64)\",\n \"struct\": \"EscrowConfig\"\n },\n {\n \"name\": \"prizeAmount\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"create:NoOp\"\n ]\n },\n \"purchase\": {\n \"signature\": \"purchase(pay,address,address)void\",\n \"selector\": \"6a16393d\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"buyer\",\n \"type\": \"address\"\n },\n {\n \"name\": \"marketplace\",\n \"type\": \"address\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"DeleteApplication\"\n ]\n },\n \"purchaseAsa\": {\n \"signature\": \"purchaseAsa(axfer,address,address)void\",\n \"selector\": \"171c9f88\",\n \"args\": [\n {\n \"name\": \"assetXfer\",\n \"type\": \"axfer\"\n },\n {\n \"name\": \"buyer\",\n \"type\": \"address\"\n },\n {\n \"name\": \"marketplace\",\n \"type\": \"address\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"DeleteApplication\"\n ]\n },\n \"delist\": {\n \"signature\": \"delist(address)void\",\n \"selector\": \"68e86343\",\n \"args\": [\n {\n \"name\": \"caller\",\n \"type\": \"address\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"DeleteApplication\"\n ]\n },\n \"changePrice\": {\n \"signature\": \"changePrice(uint64)void\",\n \"selector\": \"19396c4a\",\n \"args\": [\n {\n \"name\": \"price\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"updateAkitaDAO\": {\n \"signature\": \"updateAkitaDAO(uint64)void\",\n \"selector\": \"33e92c94\",\n \"args\": [\n {\n \"name\": \"akitaDAO\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"opUp\": {\n \"signature\": \"opUp()void\",\n \"selector\": \"854dede0\",\n \"args\": [],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"optin\": {\n \"signature\": \"optin(pay,uint64)void\",\n \"selector\": \"3ea11832\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n }\n },\n \"events\": {\n \"ListingFinalized\": {\n \"signature\": \"ListingFinalized(uint64,address,address,uint64,bool,uint64,uint64,uint64,address,address)\",\n \"selector\": \"a6fab5d7\",\n \"args\": [\n {\n \"name\": \"outcome\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"seller\",\n \"type\": \"address\"\n },\n {\n \"name\": \"buyer\",\n \"type\": \"address\"\n },\n {\n \"name\": \"prize\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"isPrizeBox\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"prizeAmount\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"price\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"paymentAsset\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"listMarketplace\",\n \"type\": \"address\"\n },\n {\n \"name\": \"buyMarketplace\",\n \"type\": \"address\"\n }\n ]\n }\n },\n \"structs\": {\n \"EscrowConfig\": [\n {\n \"name\": \"name\",\n \"type\": \"string\"\n },\n {\n \"name\": \"app\",\n \"type\": \"uint64\"\n }\n ],\n \"FunderInfo\": [\n {\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint64\"\n }\n ]\n }\n },\n \"marketplace\": {\n \"name\": \"Marketplace\",\n \"global\": {\n \"childContractVersion\": {\n \"key\": \"child_contract_version\",\n \"type\": \"AVMString\"\n },\n \"akitaDAOEscrow\": {\n \"key\": \"akita_escrow\",\n \"type\": \"EscrowConfig\"\n },\n \"version\": {\n \"key\": \"version\",\n \"type\": \"AVMString\"\n },\n \"akitaDAO\": {\n \"key\": \"akita_dao\",\n \"type\": \"AVMUint64\"\n }\n },\n \"boxes\": {},\n \"methods\": {\n \"create\": {\n \"signature\": \"create(string,string,uint64,(string,uint64))void\",\n \"selector\": \"81153628\",\n \"args\": [\n {\n \"name\": \"version\",\n \"type\": \"string\"\n },\n {\n \"name\": \"childVersion\",\n \"type\": \"string\"\n },\n {\n \"name\": \"akitaDAO\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"akitaDAOEscrow\",\n \"type\": \"(string,uint64)\",\n \"struct\": \"EscrowConfig\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"create:NoOp\"\n ]\n },\n \"list\": {\n \"signature\": \"list(pay,axfer,uint64,uint64,uint64,address,uint64,address,string,byte[32][])uint64\",\n \"selector\": \"e2fa9e21\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"assetXfer\",\n \"type\": \"axfer\"\n },\n {\n \"name\": \"price\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"paymentAsset\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"expiration\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"reservedFor\",\n \"type\": \"address\"\n },\n {\n \"name\": \"gateID\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"marketplace\",\n \"type\": \"address\"\n },\n {\n \"name\": \"name\",\n \"type\": \"string\"\n },\n {\n \"name\": \"proof\",\n \"type\": \"byte[32][]\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"listPrizeBox\": {\n \"signature\": \"listPrizeBox(appl,pay,uint64,uint64,uint64,address,uint64,address)uint64\",\n \"selector\": \"81dc516a\",\n \"args\": [\n {\n \"name\": \"prizeBoxTransferTxn\",\n \"type\": \"appl\"\n },\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"price\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"paymentAsset\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"expiration\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"reservedFor\",\n \"type\": \"address\"\n },\n {\n \"name\": \"gateID\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"marketplace\",\n \"type\": \"address\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"gatedPurchase\": {\n \"signature\": \"gatedPurchase(pay,appl,uint64,address)void\",\n \"selector\": \"6e9035cc\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"gateTxn\",\n \"type\": \"appl\"\n },\n {\n \"name\": \"appId\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"marketplace\",\n \"type\": \"address\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"purchase\": {\n \"signature\": \"purchase(pay,uint64,address)void\",\n \"selector\": \"5d7a6177\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"appId\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"marketplace\",\n \"type\": \"address\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"gatedPurchaseAsa\": {\n \"signature\": \"gatedPurchaseAsa(axfer,appl,uint64,address)void\",\n \"selector\": \"daa97516\",\n \"args\": [\n {\n \"name\": \"assetXfer\",\n \"type\": \"axfer\"\n },\n {\n \"name\": \"gateTxn\",\n \"type\": \"appl\"\n },\n {\n \"name\": \"appId\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"marketplace\",\n \"type\": \"address\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"purchaseAsa\": {\n \"signature\": \"purchaseAsa(axfer,uint64,address)void\",\n \"selector\": \"02cfb1cf\",\n \"args\": [\n {\n \"name\": \"assetXfer\",\n \"type\": \"axfer\"\n },\n {\n \"name\": \"appId\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"marketplace\",\n \"type\": \"address\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"delist\": {\n \"signature\": \"delist(uint64)void\",\n \"selector\": \"c97dbb2e\",\n \"args\": [\n {\n \"name\": \"appId\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"listCost\": {\n \"signature\": \"listCost(uint64,uint64,bool)uint64\",\n \"selector\": \"332f6dd8\",\n \"args\": [\n {\n \"name\": \"prize\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"paymentAsset\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"isPrizeBox\",\n \"type\": \"bool\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"initBoxedContract\": {\n \"signature\": \"initBoxedContract(string,uint64)void\",\n \"selector\": \"c53b32cc\",\n \"args\": [\n {\n \"name\": \"version\",\n \"type\": \"string\"\n },\n {\n \"name\": \"size\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"loadBoxedContract\": {\n \"signature\": \"loadBoxedContract(uint64,byte[])void\",\n \"selector\": \"dca2d862\",\n \"args\": [\n {\n \"name\": \"offset\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"data\",\n \"type\": \"byte[]\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"deleteBoxedContract\": {\n \"signature\": \"deleteBoxedContract()void\",\n \"selector\": \"d346b1a4\",\n \"args\": [],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"optIn\": {\n \"signature\": \"optIn(pay,uint64)void\",\n \"selector\": \"394eaeb2\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"optInCost\": {\n \"signature\": \"optInCost(uint64)uint64\",\n \"selector\": \"33f78808\",\n \"args\": [\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"updateAkitaDAOEscrow\": {\n \"signature\": \"updateAkitaDAOEscrow((string,uint64))void\",\n \"selector\": \"ae84cbd8\",\n \"args\": [\n {\n \"name\": \"config\",\n \"type\": \"(string,uint64)\",\n \"struct\": \"EscrowConfig\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"update\": {\n \"signature\": \"update(string)void\",\n \"selector\": \"ea9180dd\",\n \"args\": [\n {\n \"name\": \"newVersion\",\n \"type\": \"string\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"UpdateApplication\"\n ]\n },\n \"updateAkitaDAO\": {\n \"signature\": \"updateAkitaDAO(uint64)void\",\n \"selector\": \"33e92c94\",\n \"args\": [\n {\n \"name\": \"akitaDAO\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"opUp\": {\n \"signature\": \"opUp()void\",\n \"selector\": \"854dede0\",\n \"args\": [],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n }\n },\n \"events\": {},\n \"structs\": {\n \"EscrowConfig\": [\n {\n \"name\": \"name\",\n \"type\": \"string\"\n },\n {\n \"name\": \"app\",\n \"type\": \"uint64\"\n }\n ]\n }\n },\n \"auction\": {\n \"name\": \"Auction\",\n \"global\": {\n \"prize\": {\n \"key\": \"prize\",\n \"type\": \"AVMUint64\"\n },\n \"isPrizeBox\": {\n \"key\": \"is_prize_box\",\n \"type\": \"AVMUint64\"\n },\n \"prizeClaimed\": {\n \"key\": \"prize_claimed\",\n \"type\": \"AVMUint64\"\n },\n \"bidAsset\": {\n \"key\": \"bid_asset\",\n \"type\": \"AVMUint64\"\n },\n \"bidFee\": {\n \"key\": \"bid_fee\",\n \"type\": \"AVMUint64\"\n },\n \"startingBid\": {\n \"key\": \"starting_bid\",\n \"type\": \"AVMUint64\"\n },\n \"bidMinimumIncrease\": {\n \"key\": \"bid_minimum_increase\",\n \"type\": \"AVMUint64\"\n },\n \"startTimestamp\": {\n \"key\": \"start_timestamp\",\n \"type\": \"AVMUint64\"\n },\n \"endTimestamp\": {\n \"key\": \"end_timestamp\",\n \"type\": \"AVMUint64\"\n },\n \"seller\": {\n \"key\": \"seller\",\n \"type\": \"address\"\n },\n \"creatorRoyalty\": {\n \"key\": \"creator_royalty\",\n \"type\": \"AVMUint64\"\n },\n \"marketplace\": {\n \"key\": \"marketplace\",\n \"type\": \"address\"\n },\n \"marketplaceRoyalties\": {\n \"key\": \"marketplace_royalties\",\n \"type\": \"AVMUint64\"\n },\n \"gateID\": {\n \"key\": \"gate_id\",\n \"type\": \"AVMUint64\"\n },\n \"vrfFailureCount\": {\n \"key\": \"vrf_failure_count\",\n \"type\": \"AVMUint64\"\n },\n \"refundCount\": {\n \"key\": \"refund_count\",\n \"type\": \"AVMUint64\"\n },\n \"bidTotal\": {\n \"key\": \"bid_total\",\n \"type\": \"uint128\"\n },\n \"weightedBidTotal\": {\n \"key\": \"weighted_bid_total\",\n \"type\": \"AVMUint64\"\n },\n \"highestBid\": {\n \"key\": \"highest_bid\",\n \"type\": \"AVMUint64\"\n },\n \"bidID\": {\n \"key\": \"bid_id\",\n \"type\": \"AVMUint64\"\n },\n \"raffleAmount\": {\n \"key\": \"raffle_amount\",\n \"type\": \"AVMUint64\"\n },\n \"rafflePrizeClaimed\": {\n \"key\": \"raffle_prize_claimed\",\n \"type\": \"AVMUint64\"\n },\n \"uniqueAddressCount\": {\n \"key\": \"unique_address_count\",\n \"type\": \"AVMUint64\"\n },\n \"weightsBoxCount\": {\n \"key\": \"weights_box_count\",\n \"type\": \"AVMUint64\"\n },\n \"weightTotals\": {\n \"key\": \"w_totals\",\n \"type\": \"uint64[15]\"\n },\n \"findWinnerCursors\": {\n \"key\": \"find_winner_cursors\",\n \"type\": \"FindWinnerCursors\"\n },\n \"refundMBRCursor\": {\n \"key\": \"refund_mbr_cursor\",\n \"type\": \"AVMUint64\"\n },\n \"winningTicket\": {\n \"key\": \"winning_ticket\",\n \"type\": \"AVMUint64\"\n },\n \"raffleWinner\": {\n \"key\": \"raffle_winner\",\n \"type\": \"address\"\n },\n \"salt\": {\n \"key\": \"salt\",\n \"type\": \"AVMBytes\"\n },\n \"raffleRound\": {\n \"key\": \"raffle_round\",\n \"type\": \"AVMUint64\"\n },\n \"akitaDAOEscrow\": {\n \"key\": \"akita_escrow\",\n \"type\": \"EscrowConfig\"\n },\n \"version\": {\n \"key\": \"version\",\n \"type\": \"AVMString\"\n },\n \"akitaDAO\": {\n \"key\": \"akita_dao\",\n \"type\": \"AVMUint64\"\n },\n \"funder\": {\n \"key\": \"funder\",\n \"type\": \"FunderInfo\"\n }\n },\n \"boxes\": {\n \"bids\": {\n \"prefix\": \"b\",\n \"keyType\": \"uint64\",\n \"valueType\": \"BidInfo\"\n },\n \"weights\": {\n \"prefix\": \"w\",\n \"keyType\": \"uint64\",\n \"valueType\": \"uint64[4096]\"\n },\n \"bidsByAddress\": {\n \"prefix\": \"a\",\n \"keyType\": \"address\",\n \"valueType\": \"uint64\"\n },\n \"locations\": {\n \"prefix\": \"l\",\n \"keyType\": \"uint64\",\n \"valueType\": \"address\"\n }\n },\n \"methods\": {\n \"create\": {\n \"signature\": \"create(uint64,bool,uint64,uint64,uint64,uint64,uint64,uint64,(address,uint64),address,uint64,uint64,address,string,(uint64,(string,uint64)))void\",\n \"selector\": \"82ffa2ce\",\n \"args\": [\n {\n \"name\": \"prize\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"isPrizeBox\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"bidAsset\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"bidFee\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"startingBid\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"bidMinimumIncrease\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"startTimestamp\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"endTimestamp\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"funder\",\n \"type\": \"(address,uint64)\",\n \"struct\": \"FunderInfo\"\n },\n {\n \"name\": \"seller\",\n \"type\": \"address\"\n },\n {\n \"name\": \"creatorRoyalty\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"gateID\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"marketplace\",\n \"type\": \"address\"\n },\n {\n \"name\": \"version\",\n \"type\": \"string\"\n },\n {\n \"name\": \"akitaConfig\",\n \"type\": \"(uint64,(string,uint64))\",\n \"struct\": \"AkitaConfig\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"create:NoOp\"\n ]\n },\n \"init\": {\n \"signature\": \"init(pay,uint64)void\",\n \"selector\": \"bd7148d0\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"weightListLength\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"deleteApplication\": {\n \"signature\": \"deleteApplication()void\",\n \"selector\": \"2487c32c\",\n \"args\": [],\n \"returns\": \"void\",\n \"actions\": [\n \"DeleteApplication\"\n ]\n },\n \"cancel\": {\n \"signature\": \"cancel()void\",\n \"selector\": \"31f26a9b\",\n \"args\": [],\n \"returns\": \"void\",\n \"actions\": [\n \"DeleteApplication\"\n ]\n },\n \"gatedBid\": {\n \"signature\": \"gatedBid(pay,appl,address)void\",\n \"selector\": \"9836c89f\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"gateTxn\",\n \"type\": \"appl\"\n },\n {\n \"name\": \"marketplace\",\n \"type\": \"address\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"bid\": {\n \"signature\": \"bid(pay,address)void\",\n \"selector\": \"4d585697\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"marketplace\",\n \"type\": \"address\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"gatedBidAsa\": {\n \"signature\": \"gatedBidAsa(pay,axfer,appl,address)void\",\n \"selector\": \"d9f4f03a\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"assetXfer\",\n \"type\": \"axfer\"\n },\n {\n \"name\": \"gateTxn\",\n \"type\": \"appl\"\n },\n {\n \"name\": \"marketplace\",\n \"type\": \"address\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"bidAsa\": {\n \"signature\": \"bidAsa(pay,axfer,address)void\",\n \"selector\": \"76952931\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"assetXfer\",\n \"type\": \"axfer\"\n },\n {\n \"name\": \"marketplace\",\n \"type\": \"address\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"refundBid\": {\n \"signature\": \"refundBid(uint64)void\",\n \"selector\": \"b9e39c5c\",\n \"args\": [\n {\n \"name\": \"id\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"raffle\": {\n \"signature\": \"raffle()void\",\n \"selector\": \"696501de\",\n \"args\": [],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"findWinner\": {\n \"signature\": \"findWinner(uint64)void\",\n \"selector\": \"bd1b27d1\",\n \"args\": [\n {\n \"name\": \"iterationAmount\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"refundMBR\": {\n \"signature\": \"refundMBR(uint64)void\",\n \"selector\": \"f2ce2f46\",\n \"args\": [\n {\n \"name\": \"iterationAmount\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"claimPrize\": {\n \"signature\": \"claimPrize()void\",\n \"selector\": \"9daf050a\",\n \"args\": [],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"claimRafflePrize\": {\n \"signature\": \"claimRafflePrize()void\",\n \"selector\": \"65fca98b\",\n \"args\": [],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"clearWeightsBoxes\": {\n \"signature\": \"clearWeightsBoxes(uint64)uint64\",\n \"selector\": \"05e5de4d\",\n \"args\": [\n {\n \"name\": \"iterationAmount\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"isLive\": {\n \"signature\": \"isLive()bool\",\n \"selector\": \"8fa4a160\",\n \"args\": [],\n \"returns\": \"bool\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"hasBid\": {\n \"signature\": \"hasBid(address)bool\",\n \"selector\": \"6082303c\",\n \"args\": [\n {\n \"name\": \"address\",\n \"type\": \"address\"\n }\n ],\n \"returns\": \"bool\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"getMinimumBidAmount\": {\n \"signature\": \"getMinimumBidAmount()uint64\",\n \"selector\": \"20895e26\",\n \"args\": [],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"mbr\": {\n \"signature\": \"mbr()(uint64,uint64,uint64,uint64)\",\n \"selector\": \"73111070\",\n \"args\": [],\n \"returns\": \"(uint64,uint64,uint64,uint64)\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"updateAkitaDAOEscrow\": {\n \"signature\": \"updateAkitaDAOEscrow((string,uint64))void\",\n \"selector\": \"ae84cbd8\",\n \"args\": [\n {\n \"name\": \"config\",\n \"type\": \"(string,uint64)\",\n \"struct\": \"EscrowConfig\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"update\": {\n \"signature\": \"update(string)void\",\n \"selector\": \"ea9180dd\",\n \"args\": [\n {\n \"name\": \"newVersion\",\n \"type\": \"string\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"UpdateApplication\"\n ]\n },\n \"updateAkitaDAO\": {\n \"signature\": \"updateAkitaDAO(uint64)void\",\n \"selector\": \"33e92c94\",\n \"args\": [\n {\n \"name\": \"akitaDAO\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"opUp\": {\n \"signature\": \"opUp()void\",\n \"selector\": \"854dede0\",\n \"args\": [],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"optin\": {\n \"signature\": \"optin(pay,uint64)void\",\n \"selector\": \"3ea11832\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n }\n },\n \"events\": {\n \"AuctionFinalized\": {\n \"signature\": \"AuctionFinalized(uint64,uint64,uint64,uint64,address)\",\n \"selector\": \"3f78cd43\",\n \"args\": [\n {\n \"name\": \"outcome\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"highestBid\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"bidCount\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"uniqueBidders\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"raffleWinner\",\n \"type\": \"address\"\n }\n ]\n },\n \"AuctionPrizeClaimed\": {\n \"signature\": \"AuctionPrizeClaimed(address,uint64,address)\",\n \"selector\": \"fd65163b\",\n \"args\": [\n {\n \"name\": \"winner\",\n \"type\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"marketplace\",\n \"type\": \"address\"\n }\n ]\n },\n \"AuctionRafflePrizeClaimed\": {\n \"signature\": \"AuctionRafflePrizeClaimed(address,uint64)\",\n \"selector\": \"a62c50f0\",\n \"args\": [\n {\n \"name\": \"winner\",\n \"type\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint64\"\n }\n ]\n }\n },\n \"structs\": {\n \"AuctionMBRData\": [\n {\n \"name\": \"bids\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"weights\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"bidsByAddress\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"locations\",\n \"type\": \"uint64\"\n }\n ],\n \"BidInfo\": [\n {\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"marketplace\",\n \"type\": \"address\"\n },\n {\n \"name\": \"refunded\",\n \"type\": \"bool\"\n }\n ],\n \"FindWinnerCursors\": [\n {\n \"name\": \"startingIndex\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"currentRangeStart\",\n \"type\": \"uint64\"\n }\n ],\n \"AkitaConfig\": [\n {\n \"name\": \"akitaDAO\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"akitaDAOEscrow\",\n \"type\": \"EscrowConfig\"\n }\n ],\n \"EscrowConfig\": [\n {\n \"name\": \"name\",\n \"type\": \"string\"\n },\n {\n \"name\": \"app\",\n \"type\": \"uint64\"\n }\n ],\n \"FunderInfo\": [\n {\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint64\"\n }\n ]\n }\n },\n \"auctionFactory\": {\n \"name\": \"AuctionFactory\",\n \"global\": {\n \"childContractVersion\": {\n \"key\": \"child_contract_version\",\n \"type\": \"AVMString\"\n },\n \"akitaDAOEscrow\": {\n \"key\": \"akita_escrow\",\n \"type\": \"EscrowConfig\"\n },\n \"version\": {\n \"key\": \"version\",\n \"type\": \"AVMString\"\n },\n \"akitaDAO\": {\n \"key\": \"akita_dao\",\n \"type\": \"AVMUint64\"\n }\n },\n \"boxes\": {},\n \"methods\": {\n \"create\": {\n \"signature\": \"create(string,string,uint64,(string,uint64))void\",\n \"selector\": \"81153628\",\n \"args\": [\n {\n \"name\": \"version\",\n \"type\": \"string\"\n },\n {\n \"name\": \"childVersion\",\n \"type\": \"string\"\n },\n {\n \"name\": \"akitaDAO\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"akitaDAOEscrow\",\n \"type\": \"(string,uint64)\",\n \"struct\": \"EscrowConfig\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"create:NoOp\"\n ]\n },\n \"newAuction\": {\n \"signature\": \"newAuction(pay,axfer,string,byte[32][],uint64,uint64,uint64,uint64,uint64,uint64,uint64,address,uint64)uint64\",\n \"selector\": \"d1548fff\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"assetXfer\",\n \"type\": \"axfer\"\n },\n {\n \"name\": \"name\",\n \"type\": \"string\"\n },\n {\n \"name\": \"proof\",\n \"type\": \"byte[32][]\"\n },\n {\n \"name\": \"bidAssetID\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"bidFee\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"startingBid\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"bidMinimumIncrease\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"startTimestamp\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"endTimestamp\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"gateID\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"marketplace\",\n \"type\": \"address\"\n },\n {\n \"name\": \"weightsListCount\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"newPrizeBoxAuction\": {\n \"signature\": \"newPrizeBoxAuction(appl,pay,uint64,uint64,uint64,uint64,uint64,uint64,uint64,address,uint64)uint64\",\n \"selector\": \"73f00223\",\n \"args\": [\n {\n \"name\": \"prizeBoxTransferTxn\",\n \"type\": \"appl\"\n },\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"bidAssetID\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"bidFee\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"startingBid\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"bidMinimumIncrease\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"startTimestamp\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"endTimestamp\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"gateID\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"marketplace\",\n \"type\": \"address\"\n },\n {\n \"name\": \"weightsListCount\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"deleteAuctionApp\": {\n \"signature\": \"deleteAuctionApp(uint64)void\",\n \"selector\": \"1714da65\",\n \"args\": [\n {\n \"name\": \"appId\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"cancelAuction\": {\n \"signature\": \"cancelAuction(uint64)void\",\n \"selector\": \"80f44541\",\n \"args\": [\n {\n \"name\": \"appId\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"newAuctionCost\": {\n \"signature\": \"newAuctionCost(bool,uint64,uint64,uint64)uint64\",\n \"selector\": \"a5d42b3a\",\n \"args\": [\n {\n \"name\": \"isPrizeBox\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"bidAssetID\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"prizeAssetID\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"weightsListCount\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"mbr\": {\n \"signature\": \"mbr()(uint64,uint64,uint64,uint64)\",\n \"selector\": \"73111070\",\n \"args\": [],\n \"returns\": \"(uint64,uint64,uint64,uint64)\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"initBoxedContract\": {\n \"signature\": \"initBoxedContract(string,uint64)void\",\n \"selector\": \"c53b32cc\",\n \"args\": [\n {\n \"name\": \"version\",\n \"type\": \"string\"\n },\n {\n \"name\": \"size\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"loadBoxedContract\": {\n \"signature\": \"loadBoxedContract(uint64,byte[])void\",\n \"selector\": \"dca2d862\",\n \"args\": [\n {\n \"name\": \"offset\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"data\",\n \"type\": \"byte[]\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"deleteBoxedContract\": {\n \"signature\": \"deleteBoxedContract()void\",\n \"selector\": \"d346b1a4\",\n \"args\": [],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"optIn\": {\n \"signature\": \"optIn(pay,uint64)void\",\n \"selector\": \"394eaeb2\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"optInCost\": {\n \"signature\": \"optInCost(uint64)uint64\",\n \"selector\": \"33f78808\",\n \"args\": [\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"updateAkitaDAOEscrow\": {\n \"signature\": \"updateAkitaDAOEscrow((string,uint64))void\",\n \"selector\": \"ae84cbd8\",\n \"args\": [\n {\n \"name\": \"config\",\n \"type\": \"(string,uint64)\",\n \"struct\": \"EscrowConfig\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"update\": {\n \"signature\": \"update(string)void\",\n \"selector\": \"ea9180dd\",\n \"args\": [\n {\n \"name\": \"newVersion\",\n \"type\": \"string\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"UpdateApplication\"\n ]\n },\n \"updateAkitaDAO\": {\n \"signature\": \"updateAkitaDAO(uint64)void\",\n \"selector\": \"33e92c94\",\n \"args\": [\n {\n \"name\": \"akitaDAO\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"opUp\": {\n \"signature\": \"opUp()void\",\n \"selector\": \"854dede0\",\n \"args\": [],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n }\n },\n \"events\": {},\n \"structs\": {\n \"AuctionMBRData\": [\n {\n \"name\": \"bids\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"weights\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"bidsByAddress\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"locations\",\n \"type\": \"uint64\"\n }\n ],\n \"EscrowConfig\": [\n {\n \"name\": \"name\",\n \"type\": \"string\"\n },\n {\n \"name\": \"app\",\n \"type\": \"uint64\"\n }\n ]\n }\n },\n \"raffle\": {\n \"name\": \"Raffle\",\n \"global\": {\n \"ticketAsset\": {\n \"key\": \"ticket_asset\",\n \"type\": \"AVMUint64\"\n },\n \"startTimestamp\": {\n \"key\": \"start_timestamp\",\n \"type\": \"AVMUint64\"\n },\n \"endTimestamp\": {\n \"key\": \"end_timestamp\",\n \"type\": \"AVMUint64\"\n },\n \"seller\": {\n \"key\": \"seller\",\n \"type\": \"address\"\n },\n \"minTickets\": {\n \"key\": \"min_tickets\",\n \"type\": \"AVMUint64\"\n },\n \"maxTickets\": {\n \"key\": \"max_tickets\",\n \"type\": \"AVMUint64\"\n },\n \"entryCount\": {\n \"key\": \"entry_count\",\n \"type\": \"AVMUint64\"\n },\n \"ticketCount\": {\n \"key\": \"ticket_count\",\n \"type\": \"AVMUint64\"\n },\n \"winningTicket\": {\n \"key\": \"winning_ticket\",\n \"type\": \"AVMUint64\"\n },\n \"winner\": {\n \"key\": \"winner\",\n \"type\": \"address\"\n },\n \"prize\": {\n \"key\": \"prize\",\n \"type\": \"AVMUint64\"\n },\n \"isPrizeBox\": {\n \"key\": \"is_prize_box\",\n \"type\": \"AVMUint64\"\n },\n \"prizeClaimed\": {\n \"key\": \"prize_claimed\",\n \"type\": \"AVMUint64\"\n },\n \"creatorRoyalty\": {\n \"key\": \"creator_royalty\",\n \"type\": \"AVMUint64\"\n },\n \"gateID\": {\n \"key\": \"gate_id\",\n \"type\": \"AVMUint64\"\n },\n \"marketplace\": {\n \"key\": \"marketplace\",\n \"type\": \"address\"\n },\n \"marketplaceRoyalties\": {\n \"key\": \"marketplace_royalties\",\n \"type\": \"AVMUint64\"\n },\n \"akitaRoyalty\": {\n \"key\": \"akita_royalty\",\n \"type\": \"AVMUint64\"\n },\n \"vrfFailureCount\": {\n \"key\": \"vrf_failure_count\",\n \"type\": \"AVMUint64\"\n },\n \"entryID\": {\n \"key\": \"entry_id\",\n \"type\": \"AVMUint64\"\n },\n \"weightsBoxCount\": {\n \"key\": \"weights_box_count\",\n \"type\": \"AVMUint64\"\n },\n \"weightTotals\": {\n \"key\": \"w_totals\",\n \"type\": \"uint64[15]\"\n },\n \"findWinnerCursors\": {\n \"key\": \"find_winner_cursors\",\n \"type\": \"FindWinnerCursors\"\n },\n \"refundMBRCursor\": {\n \"key\": \"refund_mbr_cursor\",\n \"type\": \"AVMUint64\"\n },\n \"salt\": {\n \"key\": \"salt\",\n \"type\": \"AVMBytes\"\n },\n \"raffleRound\": {\n \"key\": \"raffle_round\",\n \"type\": \"AVMUint64\"\n },\n \"minEntries\": {\n \"key\": \"min_entries\",\n \"type\": \"AVMUint64\"\n },\n \"failed\": {\n \"key\": \"failed\",\n \"type\": \"AVMUint64\"\n },\n \"akitaDAOEscrow\": {\n \"key\": \"akita_escrow\",\n \"type\": \"EscrowConfig\"\n },\n \"version\": {\n \"key\": \"version\",\n \"type\": \"AVMString\"\n },\n \"akitaDAO\": {\n \"key\": \"akita_dao\",\n \"type\": \"AVMUint64\"\n },\n \"funder\": {\n \"key\": \"funder\",\n \"type\": \"FunderInfo\"\n }\n },\n \"boxes\": {\n \"entries\": {\n \"prefix\": \"e\",\n \"keyType\": \"uint64\",\n \"valueType\": \"EntryData\"\n },\n \"weights\": {\n \"prefix\": \"w\",\n \"keyType\": \"uint64\",\n \"valueType\": \"uint64[4096]\"\n },\n \"entriesByAddress\": {\n \"prefix\": \"a\",\n \"keyType\": \"address\",\n \"valueType\": \"uint64\"\n }\n },\n \"methods\": {\n \"create\": {\n \"signature\": \"create(uint64,bool,uint64,uint64,uint64,address,(address,uint64),uint64,uint64,uint64,uint64,uint64,address,uint64,(string,uint64))void\",\n \"selector\": \"a0c2ddf8\",\n \"args\": [\n {\n \"name\": \"prize\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"isPrizeBox\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"ticketAsset\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"startTimestamp\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"endTimestamp\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"seller\",\n \"type\": \"address\"\n },\n {\n \"name\": \"funder\",\n \"type\": \"(address,uint64)\",\n \"struct\": \"FunderInfo\"\n },\n {\n \"name\": \"creatorRoyalty\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"minTickets\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"maxTickets\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"minEntries\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"gateID\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"marketplace\",\n \"type\": \"address\"\n },\n {\n \"name\": \"akitaDAO\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"akitaDAOEscrow\",\n \"type\": \"(string,uint64)\",\n \"struct\": \"EscrowConfig\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"create:NoOp\"\n ]\n },\n \"init\": {\n \"signature\": \"init(pay,uint64)void\",\n \"selector\": \"bd7148d0\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"weightListLength\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"setMinEntries\": {\n \"signature\": \"setMinEntries(uint64)void\",\n \"selector\": \"59d70630\",\n \"args\": [\n {\n \"name\": \"minEntries\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"refundMBR\": {\n \"signature\": \"refundMBR(uint64)void\",\n \"selector\": \"f2ce2f46\",\n \"args\": [\n {\n \"name\": \"iterationAmount\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"clearWeightsBoxes\": {\n \"signature\": \"clearWeightsBoxes()uint64\",\n \"selector\": \"2c942514\",\n \"args\": [],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"deleteApplication\": {\n \"signature\": \"deleteApplication()void\",\n \"selector\": \"2487c32c\",\n \"args\": [],\n \"returns\": \"void\",\n \"actions\": [\n \"DeleteApplication\"\n ]\n },\n \"gatedEnter\": {\n \"signature\": \"gatedEnter(appl,pay,address)void\",\n \"selector\": \"5c57f6d8\",\n \"args\": [\n {\n \"name\": \"gateTxn\",\n \"type\": \"appl\"\n },\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"marketplace\",\n \"type\": \"address\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"enter\": {\n \"signature\": \"enter(pay,address)void\",\n \"selector\": \"962712f1\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"marketplace\",\n \"type\": \"address\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"gatedEnterAsa\": {\n \"signature\": \"gatedEnterAsa(appl,pay,axfer,address)void\",\n \"selector\": \"38e62433\",\n \"args\": [\n {\n \"name\": \"gateTxn\",\n \"type\": \"appl\"\n },\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"assetXfer\",\n \"type\": \"axfer\"\n },\n {\n \"name\": \"marketplace\",\n \"type\": \"address\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"enterAsa\": {\n \"signature\": \"enterAsa(pay,axfer,address)void\",\n \"selector\": \"43a53e4e\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"assetXfer\",\n \"type\": \"axfer\"\n },\n {\n \"name\": \"marketplace\",\n \"type\": \"address\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"gatedAdd\": {\n \"signature\": \"gatedAdd(appl,pay)void\",\n \"selector\": \"dc50b354\",\n \"args\": [\n {\n \"name\": \"gateTxn\",\n \"type\": \"appl\"\n },\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"add\": {\n \"signature\": \"add(pay)void\",\n \"selector\": \"6a6d9b9f\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"gatedAddAsa\": {\n \"signature\": \"gatedAddAsa(appl,axfer)void\",\n \"selector\": \"63bbb735\",\n \"args\": [\n {\n \"name\": \"gateTxn\",\n \"type\": \"appl\"\n },\n {\n \"name\": \"assetXfer\",\n \"type\": \"axfer\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"addAsa\": {\n \"signature\": \"addAsa(axfer)void\",\n \"selector\": \"eb1681b4\",\n \"args\": [\n {\n \"name\": \"assetXfer\",\n \"type\": \"axfer\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"raffle\": {\n \"signature\": \"raffle()void\",\n \"selector\": \"696501de\",\n \"args\": [],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"findWinner\": {\n \"signature\": \"findWinner(uint64)void\",\n \"selector\": \"bd1b27d1\",\n \"args\": [\n {\n \"name\": \"iterationAmount\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"claimRafflePrize\": {\n \"signature\": \"claimRafflePrize()void\",\n \"selector\": \"65fca98b\",\n \"args\": [],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"isLive\": {\n \"signature\": \"isLive()bool\",\n \"selector\": \"8fa4a160\",\n \"args\": [],\n \"returns\": \"bool\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"getState\": {\n \"signature\": \"getState()(uint64,uint64,uint64,address,uint64,uint64,uint64,uint64,uint64,address,uint64,bool,uint64,uint64,uint64,uint64,uint64,bool,uint64)\",\n \"selector\": \"48e59cdd\",\n \"args\": [],\n \"returns\": \"(uint64,uint64,uint64,address,uint64,uint64,uint64,uint64,uint64,address,uint64,bool,uint64,uint64,uint64,uint64,uint64,bool,uint64)\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"mbr\": {\n \"signature\": \"mbr()(uint64,uint64,uint64)\",\n \"selector\": \"d9a35fa4\",\n \"args\": [],\n \"returns\": \"(uint64,uint64,uint64)\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"updateAkitaDAOEscrow\": {\n \"signature\": \"updateAkitaDAOEscrow((string,uint64))void\",\n \"selector\": \"ae84cbd8\",\n \"args\": [\n {\n \"name\": \"config\",\n \"type\": \"(string,uint64)\",\n \"struct\": \"EscrowConfig\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"update\": {\n \"signature\": \"update(string)void\",\n \"selector\": \"ea9180dd\",\n \"args\": [\n {\n \"name\": \"newVersion\",\n \"type\": \"string\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"UpdateApplication\"\n ]\n },\n \"updateAkitaDAO\": {\n \"signature\": \"updateAkitaDAO(uint64)void\",\n \"selector\": \"33e92c94\",\n \"args\": [\n {\n \"name\": \"akitaDAO\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"opUp\": {\n \"signature\": \"opUp()void\",\n \"selector\": \"854dede0\",\n \"args\": [],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"optin\": {\n \"signature\": \"optin(pay,uint64)void\",\n \"selector\": \"3ea11832\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n }\n },\n \"events\": {\n \"RaffleFinalized\": {\n \"signature\": \"RaffleFinalized(uint64,address,uint64,bool,uint64,address,uint64,uint64,uint64)\",\n \"selector\": \"cccb2e51\",\n \"args\": [\n {\n \"name\": \"outcome\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"seller\",\n \"type\": \"address\"\n },\n {\n \"name\": \"prize\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"isPrizeBox\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"ticketAsset\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"winner\",\n \"type\": \"address\"\n },\n {\n \"name\": \"winningTicket\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"entryCount\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"ticketCount\",\n \"type\": \"uint64\"\n }\n ]\n }\n },\n \"structs\": {\n \"EntryData\": [\n {\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"name\": \"marketplace\",\n \"type\": \"address\"\n }\n ],\n \"FindWinnerCursors\": [\n {\n \"name\": \"index\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"amountIndex\",\n \"type\": \"uint64\"\n }\n ],\n \"RaffleMBRData\": [\n {\n \"name\": \"entries\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"weights\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"entriesByAddress\",\n \"type\": \"uint64\"\n }\n ],\n \"RaffleState\": [\n {\n \"name\": \"ticketAsset\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"startTimestamp\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"endTimestamp\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"seller\",\n \"type\": \"address\"\n },\n {\n \"name\": \"minTickets\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"maxTickets\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"entryCount\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"ticketCount\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"winningTicket\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"winner\",\n \"type\": \"address\"\n },\n {\n \"name\": \"prize\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"prizeClaimed\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"gateID\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"vrfFailureCount\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"entryID\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"refundMBRCursor\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"minEntries\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"failed\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"raffleRound\",\n \"type\": \"uint64\"\n }\n ],\n \"EscrowConfig\": [\n {\n \"name\": \"name\",\n \"type\": \"string\"\n },\n {\n \"name\": \"app\",\n \"type\": \"uint64\"\n }\n ],\n \"FunderInfo\": [\n {\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint64\"\n }\n ]\n }\n },\n \"raffleFactory\": {\n \"name\": \"RaffleFactory\",\n \"global\": {\n \"childContractVersion\": {\n \"key\": \"child_contract_version\",\n \"type\": \"AVMString\"\n },\n \"akitaDAOEscrow\": {\n \"key\": \"akita_escrow\",\n \"type\": \"EscrowConfig\"\n },\n \"version\": {\n \"key\": \"version\",\n \"type\": \"AVMString\"\n },\n \"akitaDAO\": {\n \"key\": \"akita_dao\",\n \"type\": \"AVMUint64\"\n }\n },\n \"boxes\": {},\n \"methods\": {\n \"create\": {\n \"signature\": \"create(string,string,uint64,(string,uint64))void\",\n \"selector\": \"81153628\",\n \"args\": [\n {\n \"name\": \"version\",\n \"type\": \"string\"\n },\n {\n \"name\": \"childVersion\",\n \"type\": \"string\"\n },\n {\n \"name\": \"akitaDAO\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"akitaDAOEscrow\",\n \"type\": \"(string,uint64)\",\n \"struct\": \"EscrowConfig\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"create:NoOp\"\n ]\n },\n \"newRaffle\": {\n \"signature\": \"newRaffle(pay,axfer,uint64,uint64,uint64,uint64,uint64,uint64,uint64,address,string,byte[32][],uint64)uint64\",\n \"selector\": \"39caa8ac\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"assetXfer\",\n \"type\": \"axfer\"\n },\n {\n \"name\": \"ticketAsset\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"startTimestamp\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"endTimestamp\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"minTickets\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"maxTickets\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"minEntries\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"gateID\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"marketplace\",\n \"type\": \"address\"\n },\n {\n \"name\": \"name\",\n \"type\": \"string\"\n },\n {\n \"name\": \"proof\",\n \"type\": \"byte[32][]\"\n },\n {\n \"name\": \"weightsListCount\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"newPrizeBoxRaffle\": {\n \"signature\": \"newPrizeBoxRaffle(appl,pay,uint64,uint64,uint64,uint64,uint64,uint64,uint64,address,uint64)uint64\",\n \"selector\": \"dabd4a57\",\n \"args\": [\n {\n \"name\": \"prizeBoxTransferTxn\",\n \"type\": \"appl\"\n },\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"ticketAsset\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"startTimestamp\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"endTimestamp\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"minTickets\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"maxTickets\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"minEntries\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"gateID\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"marketplace\",\n \"type\": \"address\"\n },\n {\n \"name\": \"weightsListCount\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"deleteRaffle\": {\n \"signature\": \"deleteRaffle(uint64)void\",\n \"selector\": \"91dd3c75\",\n \"args\": [\n {\n \"name\": \"appId\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"newRaffleCost\": {\n \"signature\": \"newRaffleCost(bool,uint64,uint64,uint64)uint64\",\n \"selector\": \"9ad7d33d\",\n \"args\": [\n {\n \"name\": \"isPrizeBox\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"prizeID\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"ticketAsset\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"weightsListCount\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"mbr\": {\n \"signature\": \"mbr()(uint64,uint64,uint64)\",\n \"selector\": \"d9a35fa4\",\n \"args\": [],\n \"returns\": \"(uint64,uint64,uint64)\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"initBoxedContract\": {\n \"signature\": \"initBoxedContract(string,uint64)void\",\n \"selector\": \"c53b32cc\",\n \"args\": [\n {\n \"name\": \"version\",\n \"type\": \"string\"\n },\n {\n \"name\": \"size\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"loadBoxedContract\": {\n \"signature\": \"loadBoxedContract(uint64,byte[])void\",\n \"selector\": \"dca2d862\",\n \"args\": [\n {\n \"name\": \"offset\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"data\",\n \"type\": \"byte[]\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"deleteBoxedContract\": {\n \"signature\": \"deleteBoxedContract()void\",\n \"selector\": \"d346b1a4\",\n \"args\": [],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"optIn\": {\n \"signature\": \"optIn(pay,uint64)void\",\n \"selector\": \"394eaeb2\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"optInCost\": {\n \"signature\": \"optInCost(uint64)uint64\",\n \"selector\": \"33f78808\",\n \"args\": [\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"updateAkitaDAOEscrow\": {\n \"signature\": \"updateAkitaDAOEscrow((string,uint64))void\",\n \"selector\": \"ae84cbd8\",\n \"args\": [\n {\n \"name\": \"config\",\n \"type\": \"(string,uint64)\",\n \"struct\": \"EscrowConfig\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"update\": {\n \"signature\": \"update(string)void\",\n \"selector\": \"ea9180dd\",\n \"args\": [\n {\n \"name\": \"newVersion\",\n \"type\": \"string\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"UpdateApplication\"\n ]\n },\n \"updateAkitaDAO\": {\n \"signature\": \"updateAkitaDAO(uint64)void\",\n \"selector\": \"33e92c94\",\n \"args\": [\n {\n \"name\": \"akitaDAO\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"opUp\": {\n \"signature\": \"opUp()void\",\n \"selector\": \"854dede0\",\n \"args\": [],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n }\n },\n \"events\": {},\n \"structs\": {\n \"RaffleMBRData\": [\n {\n \"name\": \"entries\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"weights\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"entriesByAddress\",\n \"type\": \"uint64\"\n }\n ],\n \"EscrowConfig\": [\n {\n \"name\": \"name\",\n \"type\": \"string\"\n },\n {\n \"name\": \"app\",\n \"type\": \"uint64\"\n }\n ]\n }\n },\n \"poll\": {\n \"name\": \"Poll\",\n \"global\": {\n \"type\": {\n \"key\": \"type\",\n \"type\": \"uint8\"\n },\n \"gateID\": {\n \"key\": \"gate_id\",\n \"type\": \"AVMUint64\"\n },\n \"endTime\": {\n \"key\": \"end_time\",\n \"type\": \"AVMUint64\"\n },\n \"optionCount\": {\n \"key\": \"option_count\",\n \"type\": \"AVMUint64\"\n },\n \"maxSelected\": {\n \"key\": \"max_selected\",\n \"type\": \"AVMUint64\"\n },\n \"boxCount\": {\n \"key\": \"box_count\",\n \"type\": \"AVMUint64\"\n },\n \"funder\": {\n \"key\": \"funder\",\n \"type\": \"FunderInfo\"\n },\n \"question\": {\n \"key\": \"question\",\n \"type\": \"AVMString\"\n },\n \"optionOne\": {\n \"key\": \"option_one\",\n \"type\": \"AVMString\"\n },\n \"optionTwo\": {\n \"key\": \"option_two\",\n \"type\": \"AVMString\"\n },\n \"optionThree\": {\n \"key\": \"option_three\",\n \"type\": \"AVMString\"\n },\n \"optionFour\": {\n \"key\": \"option_four\",\n \"type\": \"AVMString\"\n },\n \"optionFive\": {\n \"key\": \"option_five\",\n \"type\": \"AVMString\"\n },\n \"votesOne\": {\n \"key\": \"votes_one\",\n \"type\": \"AVMUint64\"\n },\n \"votesTwo\": {\n \"key\": \"votes_two\",\n \"type\": \"AVMUint64\"\n },\n \"votesThree\": {\n \"key\": \"votes_three\",\n \"type\": \"AVMUint64\"\n },\n \"votesFour\": {\n \"key\": \"votes_four\",\n \"type\": \"AVMUint64\"\n },\n \"votesFive\": {\n \"key\": \"votes_five\",\n \"type\": \"AVMUint64\"\n },\n \"version\": {\n \"key\": \"version\",\n \"type\": \"AVMString\"\n },\n \"akitaDAO\": {\n \"key\": \"akita_dao\",\n \"type\": \"AVMUint64\"\n }\n },\n \"boxes\": {\n \"votes\": {\n \"prefix\": \"\",\n \"keyType\": \"address\",\n \"valueType\": \"AVMBytes\"\n }\n },\n \"methods\": {\n \"create\": {\n \"signature\": \"create(uint64,uint8,uint64,uint64,(address,uint64),string,string[],uint64)void\",\n \"selector\": \"95aaf5eb\",\n \"args\": [\n {\n \"name\": \"akitaDAO\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"type\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"endTime\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"maxSelected\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"funder\",\n \"type\": \"(address,uint64)\",\n \"struct\": \"FunderInfo\"\n },\n {\n \"name\": \"question\",\n \"type\": \"string\"\n },\n {\n \"name\": \"options\",\n \"type\": \"string[]\"\n },\n {\n \"name\": \"gateID\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"create:NoOp\"\n ]\n },\n \"deleteBoxes\": {\n \"signature\": \"deleteBoxes(address[])void\",\n \"selector\": \"e1419080\",\n \"args\": [\n {\n \"name\": \"addresses\",\n \"type\": \"address[]\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"deleteApplication\": {\n \"signature\": \"deleteApplication()void\",\n \"selector\": \"2487c32c\",\n \"args\": [],\n \"returns\": \"void\",\n \"actions\": [\n \"DeleteApplication\"\n ]\n },\n \"gatedVote\": {\n \"signature\": \"gatedVote(pay,appl,uint64[])void\",\n \"selector\": \"5bcf9100\",\n \"args\": [\n {\n \"name\": \"mbrPayment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"gateTxn\",\n \"type\": \"appl\"\n },\n {\n \"name\": \"votes\",\n \"type\": \"uint64[]\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"vote\": {\n \"signature\": \"vote(pay,uint64[])void\",\n \"selector\": \"dd309c7b\",\n \"args\": [\n {\n \"name\": \"mbrPayment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"votes\",\n \"type\": \"uint64[]\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"hasVoted\": {\n \"signature\": \"hasVoted(address)bool\",\n \"selector\": \"5a7f4932\",\n \"args\": [\n {\n \"name\": \"user\",\n \"type\": \"address\"\n }\n ],\n \"returns\": \"bool\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"updateAkitaDAO\": {\n \"signature\": \"updateAkitaDAO(uint64)void\",\n \"selector\": \"33e92c94\",\n \"args\": [\n {\n \"name\": \"akitaDAO\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"opUp\": {\n \"signature\": \"opUp()void\",\n \"selector\": \"854dede0\",\n \"args\": [],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n }\n },\n \"events\": {\n \"PollFinalized\": {\n \"signature\": \"PollFinalized(uint64,uint64,uint64,uint64,uint64,uint64,uint64)\",\n \"selector\": \"c1f30300\",\n \"args\": [\n {\n \"name\": \"endTime\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"optionCount\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"votesOne\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"votesTwo\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"votesThree\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"votesFour\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"votesFive\",\n \"type\": \"uint64\"\n }\n ]\n }\n },\n \"structs\": {\n \"FunderInfo\": [\n {\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint64\"\n }\n ]\n }\n },\n \"pollFactory\": {\n \"name\": \"PollFactory\",\n \"global\": {\n \"childContractVersion\": {\n \"key\": \"child_contract_version\",\n \"type\": \"AVMString\"\n },\n \"akitaDAOEscrow\": {\n \"key\": \"akita_escrow\",\n \"type\": \"EscrowConfig\"\n },\n \"version\": {\n \"key\": \"version\",\n \"type\": \"AVMString\"\n },\n \"akitaDAO\": {\n \"key\": \"akita_dao\",\n \"type\": \"AVMUint64\"\n }\n },\n \"boxes\": {},\n \"methods\": {\n \"create\": {\n \"signature\": \"create(string,string,uint64,(string,uint64))void\",\n \"selector\": \"81153628\",\n \"args\": [\n {\n \"name\": \"version\",\n \"type\": \"string\"\n },\n {\n \"name\": \"childVersion\",\n \"type\": \"string\"\n },\n {\n \"name\": \"akitaDAO\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"akitaDAOEscrow\",\n \"type\": \"(string,uint64)\",\n \"struct\": \"EscrowConfig\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"create:NoOp\"\n ]\n },\n \"new\": {\n \"signature\": \"new(pay,uint8,uint64,uint64,string,string[],uint64)uint64\",\n \"selector\": \"119bc698\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"type\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"endTime\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"maxSelected\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"question\",\n \"type\": \"string\"\n },\n {\n \"name\": \"options\",\n \"type\": \"string[]\"\n },\n {\n \"name\": \"gateID\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"deletePoll\": {\n \"signature\": \"deletePoll(uint64)void\",\n \"selector\": \"44d13a74\",\n \"args\": [\n {\n \"name\": \"appId\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"newPollCost\": {\n \"signature\": \"newPollCost()uint64\",\n \"selector\": \"83661703\",\n \"args\": [],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"initBoxedContract\": {\n \"signature\": \"initBoxedContract(string,uint64)void\",\n \"selector\": \"c53b32cc\",\n \"args\": [\n {\n \"name\": \"version\",\n \"type\": \"string\"\n },\n {\n \"name\": \"size\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"loadBoxedContract\": {\n \"signature\": \"loadBoxedContract(uint64,byte[])void\",\n \"selector\": \"dca2d862\",\n \"args\": [\n {\n \"name\": \"offset\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"data\",\n \"type\": \"byte[]\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"deleteBoxedContract\": {\n \"signature\": \"deleteBoxedContract()void\",\n \"selector\": \"d346b1a4\",\n \"args\": [],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"optIn\": {\n \"signature\": \"optIn(pay,uint64)void\",\n \"selector\": \"394eaeb2\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"optInCost\": {\n \"signature\": \"optInCost(uint64)uint64\",\n \"selector\": \"33f78808\",\n \"args\": [\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"updateAkitaDAOEscrow\": {\n \"signature\": \"updateAkitaDAOEscrow((string,uint64))void\",\n \"selector\": \"ae84cbd8\",\n \"args\": [\n {\n \"name\": \"config\",\n \"type\": \"(string,uint64)\",\n \"struct\": \"EscrowConfig\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"update\": {\n \"signature\": \"update(string)void\",\n \"selector\": \"ea9180dd\",\n \"args\": [\n {\n \"name\": \"newVersion\",\n \"type\": \"string\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"UpdateApplication\"\n ]\n },\n \"updateAkitaDAO\": {\n \"signature\": \"updateAkitaDAO(uint64)void\",\n \"selector\": \"33e92c94\",\n \"args\": [\n {\n \"name\": \"akitaDAO\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"opUp\": {\n \"signature\": \"opUp()void\",\n \"selector\": \"854dede0\",\n \"args\": [],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n }\n },\n \"events\": {},\n \"structs\": {\n \"EscrowConfig\": [\n {\n \"name\": \"name\",\n \"type\": \"string\"\n },\n {\n \"name\": \"app\",\n \"type\": \"uint64\"\n }\n ]\n }\n },\n \"prizeBox\": {\n \"name\": \"PrizeBox\",\n \"global\": {\n \"owner\": {\n \"key\": \"owner\",\n \"type\": \"address\"\n },\n \"optinCount\": {\n \"key\": \"optin_count\",\n \"type\": \"AVMUint64\"\n },\n \"funder\": {\n \"key\": \"funder\",\n \"type\": \"FunderInfo\"\n }\n },\n \"boxes\": {},\n \"methods\": {\n \"create\": {\n \"signature\": \"create(address,(address,uint64))void\",\n \"selector\": \"84caaf2a\",\n \"args\": [\n {\n \"name\": \"owner\",\n \"type\": \"address\"\n },\n {\n \"name\": \"funder\",\n \"type\": \"(address,uint64)\",\n \"struct\": \"FunderInfo\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"create:NoOp\"\n ]\n },\n \"deleteApplication\": {\n \"signature\": \"deleteApplication(address)void\",\n \"selector\": \"215215e0\",\n \"args\": [\n {\n \"name\": \"caller\",\n \"type\": \"address\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"DeleteApplication\"\n ]\n },\n \"optin\": {\n \"signature\": \"optin(pay,uint64)void\",\n \"selector\": \"3ea11832\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"transfer\": {\n \"signature\": \"transfer(address)void\",\n \"selector\": \"adf92ae4\",\n \"args\": [\n {\n \"name\": \"newOwner\",\n \"type\": \"address\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"withdraw\": {\n \"signature\": \"withdraw((uint64,uint64)[])void\",\n \"selector\": \"44200fbd\",\n \"args\": [\n {\n \"name\": \"assets\",\n \"type\": \"(uint64,uint64)[]\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n }\n },\n \"events\": {\n \"PrizeBoxFinalized\": {\n \"signature\": \"PrizeBoxFinalized(address)\",\n \"selector\": \"bc90ead3\",\n \"args\": [\n {\n \"name\": \"owner\",\n \"type\": \"address\"\n }\n ]\n }\n },\n \"structs\": {\n \"FunderInfo\": [\n {\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint64\"\n }\n ]\n }\n },\n \"prizeBoxFactory\": {\n \"name\": \"PrizeBoxFactory\",\n \"global\": {\n \"childContractVersion\": {\n \"key\": \"child_contract_version\",\n \"type\": \"AVMString\"\n },\n \"akitaDAOEscrow\": {\n \"key\": \"akita_escrow\",\n \"type\": \"EscrowConfig\"\n },\n \"version\": {\n \"key\": \"version\",\n \"type\": \"AVMString\"\n },\n \"akitaDAO\": {\n \"key\": \"akita_dao\",\n \"type\": \"AVMUint64\"\n }\n },\n \"boxes\": {},\n \"methods\": {\n \"create\": {\n \"signature\": \"create(string,uint64)void\",\n \"selector\": \"cd9ad67e\",\n \"args\": [\n {\n \"name\": \"version\",\n \"type\": \"string\"\n },\n {\n \"name\": \"akitaDAO\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"create:NoOp\"\n ]\n },\n \"mint\": {\n \"signature\": \"mint(pay,address)uint64\",\n \"selector\": \"3decb140\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"address\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"deletePrizeBox\": {\n \"signature\": \"deletePrizeBox(uint64)void\",\n \"selector\": \"6de1cde4\",\n \"args\": [\n {\n \"name\": \"appId\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"mintCost\": {\n \"signature\": \"mintCost()uint64\",\n \"selector\": \"d34f86fe\",\n \"args\": [],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"initBoxedContract\": {\n \"signature\": \"initBoxedContract(string,uint64)void\",\n \"selector\": \"c53b32cc\",\n \"args\": [\n {\n \"name\": \"version\",\n \"type\": \"string\"\n },\n {\n \"name\": \"size\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"loadBoxedContract\": {\n \"signature\": \"loadBoxedContract(uint64,byte[])void\",\n \"selector\": \"dca2d862\",\n \"args\": [\n {\n \"name\": \"offset\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"data\",\n \"type\": \"byte[]\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"deleteBoxedContract\": {\n \"signature\": \"deleteBoxedContract()void\",\n \"selector\": \"d346b1a4\",\n \"args\": [],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"optIn\": {\n \"signature\": \"optIn(pay,uint64)void\",\n \"selector\": \"394eaeb2\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"optInCost\": {\n \"signature\": \"optInCost(uint64)uint64\",\n \"selector\": \"33f78808\",\n \"args\": [\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"updateAkitaDAOEscrow\": {\n \"signature\": \"updateAkitaDAOEscrow((string,uint64))void\",\n \"selector\": \"ae84cbd8\",\n \"args\": [\n {\n \"name\": \"config\",\n \"type\": \"(string,uint64)\",\n \"struct\": \"EscrowConfig\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"update\": {\n \"signature\": \"update(string)void\",\n \"selector\": \"ea9180dd\",\n \"args\": [\n {\n \"name\": \"newVersion\",\n \"type\": \"string\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"UpdateApplication\"\n ]\n },\n \"updateAkitaDAO\": {\n \"signature\": \"updateAkitaDAO(uint64)void\",\n \"selector\": \"33e92c94\",\n \"args\": [\n {\n \"name\": \"akitaDAO\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"opUp\": {\n \"signature\": \"opUp()void\",\n \"selector\": \"854dede0\",\n \"args\": [],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n }\n },\n \"events\": {},\n \"structs\": {\n \"EscrowConfig\": [\n {\n \"name\": \"name\",\n \"type\": \"string\"\n },\n {\n \"name\": \"app\",\n \"type\": \"uint64\"\n }\n ]\n }\n },\n \"stakingPool\": {\n \"name\": \"StakingPool\",\n \"global\": {\n \"status\": {\n \"key\": \"status\",\n \"type\": \"uint8\"\n },\n \"title\": {\n \"key\": \"title\",\n \"type\": \"AVMString\"\n },\n \"type\": {\n \"key\": \"type\",\n \"type\": \"uint8\"\n },\n \"signupTimestamp\": {\n \"key\": \"signup_timestamp\",\n \"type\": \"AVMUint64\"\n },\n \"allowLateSignups\": {\n \"key\": \"allow_late_signups\",\n \"type\": \"AVMUint64\"\n },\n \"startTimestamp\": {\n \"key\": \"start_timestamp\",\n \"type\": \"AVMUint64\"\n },\n \"endTimestamp\": {\n \"key\": \"end_timestamp\",\n \"type\": \"AVMUint64\"\n },\n \"maxEntries\": {\n \"key\": \"max_entries\",\n \"type\": \"AVMUint64\"\n },\n \"entryID\": {\n \"key\": \"entry_count\",\n \"type\": \"AVMUint64\"\n },\n \"rewardID\": {\n \"key\": \"reward_count\",\n \"type\": \"AVMUint64\"\n },\n \"stakeKey\": {\n \"key\": \"stake_key\",\n \"type\": \"RootKey\"\n },\n \"minimumStakeAmount\": {\n \"key\": \"minimum_stake_amount\",\n \"type\": \"AVMUint64\"\n },\n \"gateID\": {\n \"key\": \"gate_id\",\n \"type\": \"AVMUint64\"\n },\n \"creator\": {\n \"key\": \"creator\",\n \"type\": \"address\"\n },\n \"marketplace\": {\n \"key\": \"marketplace\",\n \"type\": \"address\"\n },\n \"marketplaceRoyalties\": {\n \"key\": \"marketplace_royalties\",\n \"type\": \"AVMUint64\"\n },\n \"akitaRoyalty\": {\n \"key\": \"akita_royalty\",\n \"type\": \"AVMUint64\"\n },\n \"salt\": {\n \"key\": \"salt\",\n \"type\": \"AVMBytes\"\n },\n \"akitaDAOEscrow\": {\n \"key\": \"akita_escrow\",\n \"type\": \"EscrowConfig\"\n },\n \"version\": {\n \"key\": \"version\",\n \"type\": \"AVMString\"\n },\n \"akitaDAO\": {\n \"key\": \"akita_dao\",\n \"type\": \"AVMUint64\"\n },\n \"funder\": {\n \"key\": \"funder\",\n \"type\": \"FunderInfo\"\n }\n },\n \"boxes\": {\n \"entries\": {\n \"prefix\": \"e\",\n \"keyType\": \"uint64\",\n \"valueType\": \"EntryData\"\n },\n \"uniques\": {\n \"prefix\": \"u\",\n \"keyType\": \"address\",\n \"valueType\": \"uint64\"\n },\n \"entriesByAddress\": {\n \"prefix\": \"a\",\n \"keyType\": \"EntryKey\",\n \"valueType\": \"uint64\"\n },\n \"rewards\": {\n \"prefix\": \"r\",\n \"keyType\": \"uint64\",\n \"valueType\": \"Reward\"\n },\n \"disbursements\": {\n \"prefix\": \"d\",\n \"keyType\": \"uint64\",\n \"valueType\": \"AVMBytes\"\n },\n \"budgets\": {\n \"prefix\": \"b\",\n \"keyType\": \"uint64\",\n \"valueType\": \"uint64\"\n },\n \"committed\": {\n \"prefix\": \"c\",\n \"keyType\": \"uint64\",\n \"valueType\": \"uint64\"\n },\n \"roundPaid\": {\n \"prefix\": \"p\",\n \"keyType\": \"uint64\",\n \"valueType\": \"uint64\"\n },\n \"roundRewards\": {\n \"prefix\": \"w\",\n \"keyType\": \"uint64\",\n \"valueType\": \"uint64\"\n }\n },\n \"methods\": {\n \"create\": {\n \"signature\": \"create(string,uint8,address,(address,uint64),address,(address,string),uint64,bool,uint64,uint64,uint64,(string,uint64))void\",\n \"selector\": \"644951f1\",\n \"args\": [\n {\n \"name\": \"title\",\n \"type\": \"string\"\n },\n {\n \"name\": \"type\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"address\"\n },\n {\n \"name\": \"funder\",\n \"type\": \"(address,uint64)\",\n \"struct\": \"FunderInfo\"\n },\n {\n \"name\": \"marketplace\",\n \"type\": \"address\"\n },\n {\n \"name\": \"stakeKey\",\n \"type\": \"(address,string)\",\n \"struct\": \"RootKey\"\n },\n {\n \"name\": \"minimumStakeAmount\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"allowLateSignups\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"gateID\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"maxEntries\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"akitaDAO\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"akitaDAOEscrow\",\n \"type\": \"(string,uint64)\",\n \"struct\": \"EscrowConfig\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"create:NoOp\"\n ]\n },\n \"init\": {\n \"signature\": \"init(uint64)void\",\n \"selector\": \"1bcde52d\",\n \"args\": [\n {\n \"name\": \"akitaRoyalty\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"delete\": {\n \"signature\": \"delete(address)void\",\n \"selector\": \"ab8b213a\",\n \"args\": [\n {\n \"name\": \"caller\",\n \"type\": \"address\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"DeleteApplication\"\n ]\n },\n \"optIn\": {\n \"signature\": \"optIn(pay,uint64)void\",\n \"selector\": \"394eaeb2\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"closeOutAsset\": {\n \"signature\": \"closeOutAsset(uint64)void\",\n \"selector\": \"443bce3a\",\n \"args\": [\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"addReward\": {\n \"signature\": \"addReward(pay,(uint64,uint8,uint64,uint64,uint64,uint64))void\",\n \"selector\": \"71b957af\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"reward\",\n \"type\": \"(uint64,uint8,uint64,uint64,uint64,uint64)\",\n \"struct\": \"AddRewardParams\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"addRewardAsa\": {\n \"signature\": \"addRewardAsa(pay,axfer,(uint64,uint8,uint64,uint64,uint64,uint64))void\",\n \"selector\": \"a00ccec6\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"assetXfer\",\n \"type\": \"axfer\"\n },\n {\n \"name\": \"reward\",\n \"type\": \"(uint64,uint8,uint64,uint64,uint64,uint64)\",\n \"struct\": \"AddRewardParams\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"assignBudget\": {\n \"signature\": \"assignBudget(uint64,uint64)void\",\n \"selector\": \"67730a38\",\n \"args\": [\n {\n \"name\": \"rewardID\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"withdrawReward\": {\n \"signature\": \"withdrawReward(uint64,uint64)void\",\n \"selector\": \"62eeb107\",\n \"args\": [\n {\n \"name\": \"rewardID\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"closeReward\": {\n \"signature\": \"closeReward(uint64)void\",\n \"selector\": \"8eabef2c\",\n \"args\": [\n {\n \"name\": \"rewardID\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"finalize\": {\n \"signature\": \"finalize(uint64,uint64,uint64)void\",\n \"selector\": \"181e8291\",\n \"args\": [\n {\n \"name\": \"signupTimestamp\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"startTimestamp\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"endTimestamp\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"endPool\": {\n \"signature\": \"endPool()void\",\n \"selector\": \"daa2c79a\",\n \"args\": [],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"gatedEnter\": {\n \"signature\": \"gatedEnter(pay,appl,(uint64,uint64,byte[32][])[])void\",\n \"selector\": \"fdcfdff6\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"gateTxn\",\n \"type\": \"appl\"\n },\n {\n \"name\": \"entries\",\n \"type\": \"(uint64,uint64,byte[32][])[]\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"enter\": {\n \"signature\": \"enter(pay,(uint64,uint64,byte[32][])[])void\",\n \"selector\": \"b82ed1b3\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"entries\",\n \"type\": \"(uint64,uint64,byte[32][])[]\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"removeEntry\": {\n \"signature\": \"removeEntry(address,uint64)void\",\n \"selector\": \"8d9b96dc\",\n \"args\": [\n {\n \"name\": \"address\",\n \"type\": \"address\"\n },\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"startDisbursement\": {\n \"signature\": \"startDisbursement(uint64)void\",\n \"selector\": \"a9418d37\",\n \"args\": [\n {\n \"name\": \"rewardID\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"raffle\": {\n \"signature\": \"raffle(uint64)void\",\n \"selector\": \"fc699cb3\",\n \"args\": [\n {\n \"name\": \"rewardID\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"disburseRewards\": {\n \"signature\": \"disburseRewards(uint64,uint64)void\",\n \"selector\": \"6e76b2ca\",\n \"args\": [\n {\n \"name\": \"rewardID\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"iterationAmount\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"finalizeDistribution\": {\n \"signature\": \"finalizeDistribution(uint64)void\",\n \"selector\": \"cdb0ac6a\",\n \"args\": [\n {\n \"name\": \"rewardID\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"abortRound\": {\n \"signature\": \"abortRound(uint64,uint64)void\",\n \"selector\": \"ac6dffc2\",\n \"args\": [\n {\n \"name\": \"rewardID\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"mode\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"reclaimRound\": {\n \"signature\": \"reclaimRound(uint64,(address,uint64)[],bool)void\",\n \"selector\": \"17fe6f32\",\n \"args\": [\n {\n \"name\": \"disbursementID\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"reclaims\",\n \"type\": \"(address,uint64)[]\"\n },\n {\n \"name\": \"close\",\n \"type\": \"bool\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"check\": {\n \"signature\": \"check(address,uint64)(bool,uint64)\",\n \"selector\": \"b223d35d\",\n \"args\": [\n {\n \"name\": \"address\",\n \"type\": \"address\"\n },\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"(bool,uint64)\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"gateCheck\": {\n \"signature\": \"gateCheck(address,uint64)void\",\n \"selector\": \"13803dfd\",\n \"args\": [\n {\n \"name\": \"address\",\n \"type\": \"address\"\n },\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"enterCost\": {\n \"signature\": \"enterCost(address,(uint64,uint64,byte[32][])[])uint64\",\n \"selector\": \"077a0ff2\",\n \"args\": [\n {\n \"name\": \"address\",\n \"type\": \"address\"\n },\n {\n \"name\": \"entries\",\n \"type\": \"(uint64,uint64,byte[32][])[]\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"optInCost\": {\n \"signature\": \"optInCost(uint64)uint64\",\n \"selector\": \"33f78808\",\n \"args\": [\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"addRewardCost\": {\n \"signature\": \"addRewardCost(uint64,uint64)uint64\",\n \"selector\": \"13ca1011\",\n \"args\": [\n {\n \"name\": \"winnerCount\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"getRewardBudget\": {\n \"signature\": \"getRewardBudget(uint64)uint64\",\n \"selector\": \"92e68216\",\n \"args\": [\n {\n \"name\": \"rewardID\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"getFreeFunds\": {\n \"signature\": \"getFreeFunds(uint64)uint64\",\n \"selector\": \"0b41393f\",\n \"args\": [\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"getOpenRounds\": {\n \"signature\": \"getOpenRounds()uint64\",\n \"selector\": \"bd82b9f6\",\n \"args\": [],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"signUpsOpen\": {\n \"signature\": \"signUpsOpen()bool\",\n \"selector\": \"592ee341\",\n \"args\": [],\n \"returns\": \"bool\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"isLive\": {\n \"signature\": \"isLive()bool\",\n \"selector\": \"8fa4a160\",\n \"args\": [],\n \"returns\": \"bool\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"isEntered\": {\n \"signature\": \"isEntered(address)bool\",\n \"selector\": \"e3377342\",\n \"args\": [\n {\n \"name\": \"address\",\n \"type\": \"address\"\n }\n ],\n \"returns\": \"bool\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"getState\": {\n \"signature\": \"getState()(uint8,string,uint8,uint64,uint64,bool,uint64,uint64,uint64,uint64,(address,string),uint64,uint64,address)\",\n \"selector\": \"9a2f21b4\",\n \"args\": [],\n \"returns\": \"(uint8,string,uint8,uint64,uint64,bool,uint64,uint64,uint64,uint64,(address,string),uint64,uint64,address)\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"mbr\": {\n \"signature\": \"mbr(uint64)(uint64,uint64,uint64,uint64,uint64)\",\n \"selector\": \"a4b3e789\",\n \"args\": [\n {\n \"name\": \"winningTickets\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"(uint64,uint64,uint64,uint64,uint64)\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"updateAkitaDAOEscrow\": {\n \"signature\": \"updateAkitaDAOEscrow((string,uint64))void\",\n \"selector\": \"ae84cbd8\",\n \"args\": [\n {\n \"name\": \"config\",\n \"type\": \"(string,uint64)\",\n \"struct\": \"EscrowConfig\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"update\": {\n \"signature\": \"update(string)void\",\n \"selector\": \"ea9180dd\",\n \"args\": [\n {\n \"name\": \"newVersion\",\n \"type\": \"string\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"UpdateApplication\"\n ]\n },\n \"updateAkitaDAO\": {\n \"signature\": \"updateAkitaDAO(uint64)void\",\n \"selector\": \"33e92c94\",\n \"args\": [\n {\n \"name\": \"akitaDAO\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"opUp\": {\n \"signature\": \"opUp()void\",\n \"selector\": \"854dede0\",\n \"args\": [],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n }\n },\n \"events\": {},\n \"structs\": {\n \"ObjectC3416591\": [\n {\n \"name\": \"valid\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"balance\",\n \"type\": \"uint64\"\n }\n ],\n \"RootKey\": [\n {\n \"name\": \"address\",\n \"type\": \"address\"\n },\n {\n \"name\": \"name\",\n \"type\": \"string\"\n }\n ],\n \"AddRewardParams\": [\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"distribution\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"rate\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"expiration\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"interval\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"winnerCount\",\n \"type\": \"uint64\"\n }\n ],\n \"EntryData\": [\n {\n \"name\": \"address\",\n \"type\": \"address\"\n },\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"quantity\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"gateArgs\",\n \"type\": \"byte[][]\"\n },\n {\n \"name\": \"disqualified\",\n \"type\": \"bool\"\n }\n ],\n \"EntryKey\": [\n {\n \"name\": \"address\",\n \"type\": \"address\"\n },\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n }\n ],\n \"RaffleCursor\": [\n {\n \"name\": \"ticket\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"stake\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"disbursed\",\n \"type\": \"uint64\"\n }\n ],\n \"Reward\": [\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"distribution\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"rate\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"expiration\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"interval\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"qualifiedStakers\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"qualifiedStake\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"royaltyAmount\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"winnerCount\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"winningTickets\",\n \"type\": \"uint64[]\"\n },\n {\n \"name\": \"raffleCursor\",\n \"type\": \"RaffleCursor\"\n },\n {\n \"name\": \"vrfFailureCount\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"phase\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"disbursementCursor\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"activeDisbursementID\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"activeDisbursementRoundStart\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"lastDisbursementTimestamp\",\n \"type\": \"uint64\"\n }\n ],\n \"StakingPoolMBRData\": [\n {\n \"name\": \"entries\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"uniques\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"entriesByAddress\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"rewards\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"disbursements\",\n \"type\": \"uint64\"\n }\n ],\n \"StakingPoolState\": [\n {\n \"name\": \"status\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"title\",\n \"type\": \"string\"\n },\n {\n \"name\": \"type\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"signupTimestamp\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"startTimestamp\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"allowLateSignups\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"endTimestamp\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"maxEntries\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"entryCount\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"rewardCount\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"stakeKey\",\n \"type\": \"RootKey\"\n },\n {\n \"name\": \"minimumStakeAmount\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"gateID\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"address\"\n }\n ],\n \"EscrowConfig\": [\n {\n \"name\": \"name\",\n \"type\": \"string\"\n },\n {\n \"name\": \"app\",\n \"type\": \"uint64\"\n }\n ],\n \"FunderInfo\": [\n {\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint64\"\n }\n ]\n }\n },\n \"stakingPoolFactory\": {\n \"name\": \"StakingPoolFactory\",\n \"global\": {\n \"childContractVersion\": {\n \"key\": \"child_contract_version\",\n \"type\": \"AVMString\"\n },\n \"akitaDAOEscrow\": {\n \"key\": \"akita_escrow\",\n \"type\": \"EscrowConfig\"\n },\n \"version\": {\n \"key\": \"version\",\n \"type\": \"AVMString\"\n },\n \"akitaDAO\": {\n \"key\": \"akita_dao\",\n \"type\": \"AVMUint64\"\n }\n },\n \"boxes\": {},\n \"methods\": {\n \"create\": {\n \"signature\": \"create(string,string,uint64,(string,uint64))void\",\n \"selector\": \"81153628\",\n \"args\": [\n {\n \"name\": \"version\",\n \"type\": \"string\"\n },\n {\n \"name\": \"childVersion\",\n \"type\": \"string\"\n },\n {\n \"name\": \"akitaDAO\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"akitaDAOEscrow\",\n \"type\": \"(string,uint64)\",\n \"struct\": \"EscrowConfig\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"create:NoOp\"\n ]\n },\n \"newPool\": {\n \"signature\": \"newPool(pay,string,uint8,address,(address,string),uint64,bool,uint64,uint64)uint64\",\n \"selector\": \"2b25ac89\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"title\",\n \"type\": \"string\"\n },\n {\n \"name\": \"type\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"marketplace\",\n \"type\": \"address\"\n },\n {\n \"name\": \"stakeKey\",\n \"type\": \"(address,string)\",\n \"struct\": \"RootKey\"\n },\n {\n \"name\": \"minimumStakeAmount\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"allowLateSignups\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"gateID\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"maxEntries\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"deletePool\": {\n \"signature\": \"deletePool(uint64)void\",\n \"selector\": \"c7478f9d\",\n \"args\": [\n {\n \"name\": \"appId\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"newPoolCost\": {\n \"signature\": \"newPoolCost()uint64\",\n \"selector\": \"470c6ed7\",\n \"args\": [],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"mbr\": {\n \"signature\": \"mbr(uint64)(uint64,uint64,uint64,uint64,uint64)\",\n \"selector\": \"a4b3e789\",\n \"args\": [\n {\n \"name\": \"winningTickets\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"(uint64,uint64,uint64,uint64,uint64)\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"initBoxedContract\": {\n \"signature\": \"initBoxedContract(string,uint64)void\",\n \"selector\": \"c53b32cc\",\n \"args\": [\n {\n \"name\": \"version\",\n \"type\": \"string\"\n },\n {\n \"name\": \"size\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"loadBoxedContract\": {\n \"signature\": \"loadBoxedContract(uint64,byte[])void\",\n \"selector\": \"dca2d862\",\n \"args\": [\n {\n \"name\": \"offset\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"data\",\n \"type\": \"byte[]\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"deleteBoxedContract\": {\n \"signature\": \"deleteBoxedContract()void\",\n \"selector\": \"d346b1a4\",\n \"args\": [],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"optIn\": {\n \"signature\": \"optIn(pay,uint64)void\",\n \"selector\": \"394eaeb2\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"optInCost\": {\n \"signature\": \"optInCost(uint64)uint64\",\n \"selector\": \"33f78808\",\n \"args\": [\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"updateAkitaDAOEscrow\": {\n \"signature\": \"updateAkitaDAOEscrow((string,uint64))void\",\n \"selector\": \"ae84cbd8\",\n \"args\": [\n {\n \"name\": \"config\",\n \"type\": \"(string,uint64)\",\n \"struct\": \"EscrowConfig\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"update\": {\n \"signature\": \"update(string)void\",\n \"selector\": \"ea9180dd\",\n \"args\": [\n {\n \"name\": \"newVersion\",\n \"type\": \"string\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"UpdateApplication\"\n ]\n },\n \"updateAkitaDAO\": {\n \"signature\": \"updateAkitaDAO(uint64)void\",\n \"selector\": \"33e92c94\",\n \"args\": [\n {\n \"name\": \"akitaDAO\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"opUp\": {\n \"signature\": \"opUp()void\",\n \"selector\": \"854dede0\",\n \"args\": [],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n }\n },\n \"events\": {},\n \"structs\": {\n \"RootKey\": [\n {\n \"name\": \"address\",\n \"type\": \"address\"\n },\n {\n \"name\": \"name\",\n \"type\": \"string\"\n }\n ],\n \"StakingPoolMBRData\": [\n {\n \"name\": \"entries\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"uniques\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"entriesByAddress\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"rewards\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"disbursements\",\n \"type\": \"uint64\"\n }\n ],\n \"EscrowConfig\": [\n {\n \"name\": \"name\",\n \"type\": \"string\"\n },\n {\n \"name\": \"app\",\n \"type\": \"uint64\"\n }\n ]\n }\n },\n \"rewards\": {\n \"name\": \"Rewards\",\n \"global\": {\n \"disbursementID\": {\n \"key\": \"disbursement_id\",\n \"type\": \"AVMUint64\"\n },\n \"version\": {\n \"key\": \"version\",\n \"type\": \"AVMString\"\n },\n \"akitaDAO\": {\n \"key\": \"akita_dao\",\n \"type\": \"AVMUint64\"\n }\n },\n \"boxes\": {\n \"disbursements\": {\n \"prefix\": \"d\",\n \"keyType\": \"uint64\",\n \"valueType\": \"DisbursementDetails\"\n },\n \"userAllocations\": {\n \"prefix\": \"u\",\n \"keyType\": \"UserAllocationsKey\",\n \"valueType\": \"uint64\"\n }\n },\n \"methods\": {\n \"create\": {\n \"signature\": \"create(string,uint64)void\",\n \"selector\": \"cd9ad67e\",\n \"args\": [\n {\n \"name\": \"version\",\n \"type\": \"string\"\n },\n {\n \"name\": \"akitaDAO\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"create:NoOp\"\n ]\n },\n \"fundMbrCredits\": {\n \"signature\": \"fundMbrCredits(uint64,pay)void\",\n \"selector\": \"6661205a\",\n \"args\": [\n {\n \"name\": \"id\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"withdrawMbrCredits\": {\n \"signature\": \"withdrawMbrCredits(uint64,uint64)void\",\n \"selector\": \"d61a69fa\",\n \"args\": [\n {\n \"name\": \"id\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"createDisbursement\": {\n \"signature\": \"createDisbursement(pay,string,uint64,uint64,string)uint64\",\n \"selector\": \"1c9ebbdb\",\n \"args\": [\n {\n \"name\": \"mbrPayment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"title\",\n \"type\": \"string\"\n },\n {\n \"name\": \"timeToUnlock\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"expiration\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"note\",\n \"type\": \"string\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"editDisbursement\": {\n \"signature\": \"editDisbursement(uint64,string,uint64,uint64,string)void\",\n \"selector\": \"8f49262d\",\n \"args\": [\n {\n \"name\": \"id\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"title\",\n \"type\": \"string\"\n },\n {\n \"name\": \"timeToUnlock\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"expiration\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"note\",\n \"type\": \"string\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"createUserAllocations\": {\n \"signature\": \"createUserAllocations(pay,uint64,(address,uint64)[])void\",\n \"selector\": \"5656acf9\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"id\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"allocations\",\n \"type\": \"(address,uint64)[]\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"createAsaUserAllocations\": {\n \"signature\": \"createAsaUserAllocations(axfer,uint64,(address,uint64)[])void\",\n \"selector\": \"f62cdc2b\",\n \"args\": [\n {\n \"name\": \"assetXfer\",\n \"type\": \"axfer\"\n },\n {\n \"name\": \"id\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"allocations\",\n \"type\": \"(address,uint64)[]\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"createAsaDisbursementFromGroup\": {\n \"signature\": \"createAsaDisbursementFromGroup(uint64,uint64,string,uint64,uint64,string,(address,uint64)[])uint64\",\n \"selector\": \"6f5c10cf\",\n \"args\": [\n {\n \"name\": \"mbrPaymentIndex\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"assetTransferStartIndex\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"title\",\n \"type\": \"string\"\n },\n {\n \"name\": \"timeToUnlock\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"expiration\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"note\",\n \"type\": \"string\"\n },\n {\n \"name\": \"allocations\",\n \"type\": \"(address,uint64)[]\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"finalizeDisbursement\": {\n \"signature\": \"finalizeDisbursement(uint64)void\",\n \"selector\": \"5424a591\",\n \"args\": [\n {\n \"name\": \"id\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"createInstantDisbursement\": {\n \"signature\": \"createInstantDisbursement(pay,uint64,uint64,(address,uint64)[])uint64\",\n \"selector\": \"7b7dc5fc\",\n \"args\": [\n {\n \"name\": \"mbrPayment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"timeToUnlock\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"expiration\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"allocations\",\n \"type\": \"(address,uint64)[]\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"createInstantAsaDisbursement\": {\n \"signature\": \"createInstantAsaDisbursement(pay,axfer,uint64,uint64,(address,uint64)[])uint64\",\n \"selector\": \"af1a14f2\",\n \"args\": [\n {\n \"name\": \"mbrPayment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"assetXfer\",\n \"type\": \"axfer\"\n },\n {\n \"name\": \"timeToUnlock\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"expiration\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"allocations\",\n \"type\": \"(address,uint64)[]\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"claimRewards\": {\n \"signature\": \"claimRewards((uint64,uint64)[])void\",\n \"selector\": \"3ec40aa4\",\n \"args\": [\n {\n \"name\": \"rewards\",\n \"type\": \"(uint64,uint64)[]\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"reclaimRewards\": {\n \"signature\": \"reclaimRewards(uint64,(address,uint64)[])void\",\n \"selector\": \"bd3cd090\",\n \"args\": [\n {\n \"name\": \"id\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"reclaims\",\n \"type\": \"(address,uint64)[]\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"closeDisbursement\": {\n \"signature\": \"closeDisbursement(uint64)void\",\n \"selector\": \"087b4b65\",\n \"args\": [\n {\n \"name\": \"id\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"allocationMbrCreditShortfall\": {\n \"signature\": \"allocationMbrCreditShortfall(uint64,uint64)uint64\",\n \"selector\": \"14969d97\",\n \"args\": [\n {\n \"name\": \"id\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"allocationCount\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"updateAkitaDAO\": {\n \"signature\": \"updateAkitaDAO(uint64)void\",\n \"selector\": \"33e92c94\",\n \"args\": [\n {\n \"name\": \"akitaDAO\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"opUp\": {\n \"signature\": \"opUp()void\",\n \"selector\": \"854dede0\",\n \"args\": [],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"mbr\": {\n \"signature\": \"mbr(string,string)(uint64,uint64)\",\n \"selector\": \"d54bbad9\",\n \"args\": [\n {\n \"name\": \"title\",\n \"type\": \"string\"\n },\n {\n \"name\": \"note\",\n \"type\": \"string\"\n }\n ],\n \"returns\": \"(uint64,uint64)\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"optIn\": {\n \"signature\": \"optIn(pay,uint64)void\",\n \"selector\": \"394eaeb2\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n }\n },\n \"events\": {},\n \"structs\": {\n \"DisbursementDetails\": [\n {\n \"name\": \"creator\",\n \"type\": \"address\"\n },\n {\n \"name\": \"finalized\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"title\",\n \"type\": \"string\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"timeToUnlock\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"expiration\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"allocations\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"distributed\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"mbrCredits\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"usedMbrCredits\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"note\",\n \"type\": \"string\"\n }\n ],\n \"RewardsMBRData\": [\n {\n \"name\": \"disbursements\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"userAllocations\",\n \"type\": \"uint64\"\n }\n ],\n \"UserAllocationsKey\": [\n {\n \"name\": \"address\",\n \"type\": \"address\"\n },\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"disbursementID\",\n \"type\": \"uint64\"\n }\n ]\n }\n },\n \"subscriptions\": {\n \"name\": \"Subscriptions\",\n \"global\": {\n \"passesRepricedAt\": {\n \"key\": \"passes_repriced_at\",\n \"type\": \"AVMUint64\"\n },\n \"akitaDAOEscrow\": {\n \"key\": \"akita_escrow\",\n \"type\": \"EscrowConfig\"\n },\n \"version\": {\n \"key\": \"version\",\n \"type\": \"AVMString\"\n },\n \"akitaDAO\": {\n \"key\": \"akita_dao\",\n \"type\": \"AVMUint64\"\n }\n },\n \"boxes\": {\n \"subscriptions\": {\n \"prefix\": \"s\",\n \"keyType\": \"SubscriptionKey\",\n \"valueType\": \"SubscriptionInfo\"\n },\n \"subscriptionslist\": {\n \"prefix\": \"l\",\n \"keyType\": \"address\",\n \"valueType\": \"uint64\"\n },\n \"services\": {\n \"prefix\": \"o\",\n \"keyType\": \"ServicesKey\",\n \"valueType\": \"Service\"\n },\n \"serviceslist\": {\n \"prefix\": \"m\",\n \"keyType\": \"address\",\n \"valueType\": \"uint64\"\n },\n \"blocks\": {\n \"prefix\": \"b\",\n \"keyType\": \"BlockListKey\",\n \"valueType\": \"AVMBytes\"\n },\n \"passes\": {\n \"prefix\": \"p\",\n \"keyType\": \"SubscriptionKey\",\n \"valueType\": \"address[]\"\n }\n },\n \"methods\": {\n \"create\": {\n \"signature\": \"create(string,uint64,(string,uint64))void\",\n \"selector\": \"5ad9f4c6\",\n \"args\": [\n {\n \"name\": \"version\",\n \"type\": \"string\"\n },\n {\n \"name\": \"akitaDAO\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"akitaDAOEscrow\",\n \"type\": \"(string,uint64)\",\n \"struct\": \"EscrowConfig\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"create:NoOp\"\n ]\n },\n \"newService\": {\n \"signature\": \"newService(pay,uint64,uint64,uint64,uint64,uint64,address,string,byte[36],uint8,byte[3])uint64\",\n \"selector\": \"9b0f89d6\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"interval\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"passes\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"gateID\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"payoutAddress\",\n \"type\": \"address\"\n },\n {\n \"name\": \"title\",\n \"type\": \"string\"\n },\n {\n \"name\": \"bannerImage\",\n \"type\": \"byte[36]\"\n },\n {\n \"name\": \"highlightMessage\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"highlightColor\",\n \"type\": \"byte[3]\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"setServiceDescription\": {\n \"signature\": \"setServiceDescription(uint64,uint64,byte[])void\",\n \"selector\": \"366d5b27\",\n \"args\": [\n {\n \"name\": \"id\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"offset\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"data\",\n \"type\": \"byte[]\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"updateServiceTitle\": {\n \"signature\": \"updateServiceTitle(uint64,string)void\",\n \"selector\": \"9ba020b6\",\n \"args\": [\n {\n \"name\": \"id\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"title\",\n \"type\": \"string\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"activateService\": {\n \"signature\": \"activateService()void\",\n \"selector\": \"c8835130\",\n \"args\": [],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"pauseService\": {\n \"signature\": \"pauseService(uint64)void\",\n \"selector\": \"17c8730b\",\n \"args\": [\n {\n \"name\": \"id\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"unpauseService\": {\n \"signature\": \"unpauseService(uint64)void\",\n \"selector\": \"4cdf0cd7\",\n \"args\": [\n {\n \"name\": \"id\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"shutdownService\": {\n \"signature\": \"shutdownService(uint64)void\",\n \"selector\": \"87e055c6\",\n \"args\": [\n {\n \"name\": \"id\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"block\": {\n \"signature\": \"block(pay,address)void\",\n \"selector\": \"b59c8a54\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"blocked\",\n \"type\": \"address\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"unblock\": {\n \"signature\": \"unblock(address)void\",\n \"selector\": \"aeebb378\",\n \"args\": [\n {\n \"name\": \"blocked\",\n \"type\": \"address\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"gatedSubscribe\": {\n \"signature\": \"gatedSubscribe(pay,appl,address,uint64,uint64,uint64)uint64\",\n \"selector\": \"5355da6d\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"gateTxn\",\n \"type\": \"appl\"\n },\n {\n \"name\": \"recipient\",\n \"type\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"interval\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"serviceID\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"subscribe\": {\n \"signature\": \"subscribe(pay,address,uint64,uint64,uint64)uint64\",\n \"selector\": \"10f00c3a\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"recipient\",\n \"type\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"interval\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"serviceID\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"gatedSubscribeAsa\": {\n \"signature\": \"gatedSubscribeAsa(pay,axfer,appl,address,uint64,uint64,uint64)uint64\",\n \"selector\": \"a68e6963\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"assetXfer\",\n \"type\": \"axfer\"\n },\n {\n \"name\": \"gateTxn\",\n \"type\": \"appl\"\n },\n {\n \"name\": \"recipient\",\n \"type\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"interval\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"serviceID\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"subscribeAsa\": {\n \"signature\": \"subscribeAsa(pay,axfer,address,uint64,uint64,uint64)uint64\",\n \"selector\": \"b10a306e\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"assetXfer\",\n \"type\": \"axfer\"\n },\n {\n \"name\": \"recipient\",\n \"type\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"interval\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"serviceID\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"deposit\": {\n \"signature\": \"deposit(pay,uint64)void\",\n \"selector\": \"f2355b55\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"id\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"depositAsa\": {\n \"signature\": \"depositAsa(axfer,uint64)void\",\n \"selector\": \"1ac4a758\",\n \"args\": [\n {\n \"name\": \"assetXfer\",\n \"type\": \"axfer\"\n },\n {\n \"name\": \"id\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"withdraw\": {\n \"signature\": \"withdraw(uint64,uint64)void\",\n \"selector\": \"e3aeb25c\",\n \"args\": [\n {\n \"name\": \"id\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"unsubscribe\": {\n \"signature\": \"unsubscribe(uint64)void\",\n \"selector\": \"eaaaa4d3\",\n \"args\": [\n {\n \"name\": \"id\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"gatedTriggerPayment\": {\n \"signature\": \"gatedTriggerPayment(appl,(address,uint64))void\",\n \"selector\": \"281b891b\",\n \"args\": [\n {\n \"name\": \"gateTxn\",\n \"type\": \"appl\"\n },\n {\n \"name\": \"key\",\n \"type\": \"(address,uint64)\",\n \"struct\": \"SubscriptionKey\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"triggerPayment\": {\n \"signature\": \"triggerPayment((address,uint64))void\",\n \"selector\": \"c3d9f1dc\",\n \"args\": [\n {\n \"name\": \"key\",\n \"type\": \"(address,uint64)\",\n \"struct\": \"SubscriptionKey\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"streakCheck\": {\n \"signature\": \"streakCheck((address,uint64))void\",\n \"selector\": \"c0ff2730\",\n \"args\": [\n {\n \"name\": \"key\",\n \"type\": \"(address,uint64)\",\n \"struct\": \"SubscriptionKey\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"setPasses\": {\n \"signature\": \"setPasses(uint64,address[])void\",\n \"selector\": \"275203af\",\n \"args\": [\n {\n \"name\": \"id\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"addresses\",\n \"type\": \"address[]\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"clearOrphanPasses\": {\n \"signature\": \"clearOrphanPasses((address,uint64))void\",\n \"selector\": \"19a548fa\",\n \"args\": [\n {\n \"name\": \"key\",\n \"type\": \"(address,uint64)\",\n \"struct\": \"SubscriptionKey\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"triggerList\": {\n \"signature\": \"triggerList((address,uint64[])[])bool[]\",\n \"selector\": \"1269d87e\",\n \"args\": [\n {\n \"name\": \"req\",\n \"type\": \"(address,uint64[])[]\"\n }\n ],\n \"returns\": \"bool[]\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"isBlocked\": {\n \"signature\": \"isBlocked(address,address)bool\",\n \"selector\": \"4303668e\",\n \"args\": [\n {\n \"name\": \"address\",\n \"type\": \"address\"\n },\n {\n \"name\": \"blocked\",\n \"type\": \"address\"\n }\n ],\n \"returns\": \"bool\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"isShutdown\": {\n \"signature\": \"isShutdown(address,uint64)bool\",\n \"selector\": \"0d6a47a3\",\n \"args\": [\n {\n \"name\": \"address\",\n \"type\": \"address\"\n },\n {\n \"name\": \"id\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"bool\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"newServiceCost\": {\n \"signature\": \"newServiceCost(uint64)uint64\",\n \"selector\": \"1dc78371\",\n \"args\": [\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"newSubscriptionCost\": {\n \"signature\": \"newSubscriptionCost(address,uint64,uint64)uint64\",\n \"selector\": \"09a3158e\",\n \"args\": [\n {\n \"name\": \"recipient\",\n \"type\": \"address\"\n },\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"serviceID\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"blockCost\": {\n \"signature\": \"blockCost()uint64\",\n \"selector\": \"f99963d4\",\n \"args\": [],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"getService\": {\n \"signature\": \"getService(address,uint64)(uint8,uint64,uint64,uint64,uint64,uint64,address,string,string,byte[36],uint8,byte[3])\",\n \"selector\": \"d4b16e7a\",\n \"args\": [\n {\n \"name\": \"address\",\n \"type\": \"address\"\n },\n {\n \"name\": \"id\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"(uint8,uint64,uint64,uint64,uint64,uint64,address,string,string,byte[36],uint8,byte[3])\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"getServicesByAddress\": {\n \"signature\": \"getServicesByAddress(address,uint64,uint64)(uint8,uint64,uint64,uint64,uint64,uint64,address,string,string,byte[36],uint8,byte[3])[]\",\n \"selector\": \"74def59a\",\n \"args\": [\n {\n \"name\": \"address\",\n \"type\": \"address\"\n },\n {\n \"name\": \"start\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"windowSize\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"(uint8,uint64,uint64,uint64,uint64,uint64,address,string,string,byte[36],uint8,byte[3])[]\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"getSubscription\": {\n \"signature\": \"getSubscription((address,uint64))(bool,address,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64)\",\n \"selector\": \"25b812a7\",\n \"args\": [\n {\n \"name\": \"key\",\n \"type\": \"(address,uint64)\",\n \"struct\": \"SubscriptionKey\"\n }\n ],\n \"returns\": \"(bool,address,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64)\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"mustGetSubscription\": {\n \"signature\": \"mustGetSubscription((address,uint64))(address,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64)\",\n \"selector\": \"969ced9b\",\n \"args\": [\n {\n \"name\": \"key\",\n \"type\": \"(address,uint64)\",\n \"struct\": \"SubscriptionKey\"\n }\n ],\n \"returns\": \"(address,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64)\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"getSubscriptionWithDetails\": {\n \"signature\": \"getSubscriptionWithDetails((address,uint64))(address,uint64,uint64,uint64,uint64,uint64,uint64,uint8,address,string,string,byte[36],uint8,byte[3],uint64,uint64,uint64,address[])\",\n \"selector\": \"33d8e5ad\",\n \"args\": [\n {\n \"name\": \"key\",\n \"type\": \"(address,uint64)\",\n \"struct\": \"SubscriptionKey\"\n }\n ],\n \"returns\": \"(address,uint64,uint64,uint64,uint64,uint64,uint64,uint8,address,string,string,byte[36],uint8,byte[3],uint64,uint64,uint64,address[])\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"isFirstSubscription\": {\n \"signature\": \"isFirstSubscription(address)bool\",\n \"selector\": \"603d7297\",\n \"args\": [\n {\n \"name\": \"address\",\n \"type\": \"address\"\n }\n ],\n \"returns\": \"bool\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"getServiceList\": {\n \"signature\": \"getServiceList(address)uint64\",\n \"selector\": \"dfe602cf\",\n \"args\": [\n {\n \"name\": \"address\",\n \"type\": \"address\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"getSubscriptionList\": {\n \"signature\": \"getSubscriptionList(address)uint64\",\n \"selector\": \"d8a6c523\",\n \"args\": [\n {\n \"name\": \"address\",\n \"type\": \"address\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"optIn\": {\n \"signature\": \"optIn(pay,uint64)void\",\n \"selector\": \"394eaeb2\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"optInCost\": {\n \"signature\": \"optInCost(uint64)uint64\",\n \"selector\": \"33f78808\",\n \"args\": [\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"updateAkitaDAOEscrow\": {\n \"signature\": \"updateAkitaDAOEscrow((string,uint64))void\",\n \"selector\": \"ae84cbd8\",\n \"args\": [\n {\n \"name\": \"config\",\n \"type\": \"(string,uint64)\",\n \"struct\": \"EscrowConfig\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"update\": {\n \"signature\": \"update(string)void\",\n \"selector\": \"ea9180dd\",\n \"args\": [\n {\n \"name\": \"newVersion\",\n \"type\": \"string\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"UpdateApplication\"\n ]\n },\n \"updateAkitaDAO\": {\n \"signature\": \"updateAkitaDAO(uint64)void\",\n \"selector\": \"33e92c94\",\n \"args\": [\n {\n \"name\": \"akitaDAO\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"opUp\": {\n \"signature\": \"opUp()void\",\n \"selector\": \"854dede0\",\n \"args\": [],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n }\n },\n \"events\": {},\n \"structs\": {\n \"BlockListKey\": [\n {\n \"name\": \"address\",\n \"type\": \"byte[16]\"\n },\n {\n \"name\": \"blocked\",\n \"type\": \"byte[16]\"\n }\n ],\n \"Service\": [\n {\n \"name\": \"status\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"interval\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"passes\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"gateID\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"payoutAddress\",\n \"type\": \"address\"\n },\n {\n \"name\": \"title\",\n \"type\": \"string\"\n },\n {\n \"name\": \"description\",\n \"type\": \"string\"\n },\n {\n \"name\": \"bannerImage\",\n \"type\": \"byte[36]\"\n },\n {\n \"name\": \"highlightMessage\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"highlightColor\",\n \"type\": \"byte[3]\"\n }\n ],\n \"ServicesKey\": [\n {\n \"name\": \"address\",\n \"type\": \"address\"\n },\n {\n \"name\": \"id\",\n \"type\": \"uint64\"\n }\n ],\n \"SubscriptionInfo\": [\n {\n \"name\": \"recipient\",\n \"type\": \"address\"\n },\n {\n \"name\": \"serviceID\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"startDate\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"interval\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"gateID\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"lastPayment\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"streak\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"escrowed\",\n \"type\": \"uint64\"\n }\n ],\n \"SubscriptionInfoWithDetails\": [\n {\n \"name\": \"recipient\",\n \"type\": \"address\"\n },\n {\n \"name\": \"startDate\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"interval\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"gateID\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"serviceID\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"status\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"payoutAddress\",\n \"type\": \"address\"\n },\n {\n \"name\": \"title\",\n \"type\": \"string\"\n },\n {\n \"name\": \"description\",\n \"type\": \"string\"\n },\n {\n \"name\": \"bannerImage\",\n \"type\": \"byte[36]\"\n },\n {\n \"name\": \"highlightMessage\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"highlightColor\",\n \"type\": \"byte[3]\"\n },\n {\n \"name\": \"lastPayment\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"streak\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"escrowed\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"passes\",\n \"type\": \"address[]\"\n }\n ],\n \"SubscriptionInfoWithExistence\": [\n {\n \"name\": \"exists\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"recipient\",\n \"type\": \"address\"\n },\n {\n \"name\": \"serviceID\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"startDate\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"interval\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"gateID\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"lastPayment\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"streak\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"escrowed\",\n \"type\": \"uint64\"\n }\n ],\n \"SubscriptionKey\": [\n {\n \"name\": \"address\",\n \"type\": \"address\"\n },\n {\n \"name\": \"id\",\n \"type\": \"uint64\"\n }\n ],\n \"EscrowConfig\": [\n {\n \"name\": \"name\",\n \"type\": \"string\"\n },\n {\n \"name\": \"app\",\n \"type\": \"uint64\"\n }\n ]\n }\n },\n \"hyperSwap\": {\n \"name\": \"HyperSwap\",\n \"global\": {\n \"offerCursor\": {\n \"key\": \"offer_cursor\",\n \"type\": \"AVMUint64\"\n },\n \"version\": {\n \"key\": \"version\",\n \"type\": \"AVMString\"\n },\n \"akitaDAO\": {\n \"key\": \"akita_dao\",\n \"type\": \"AVMUint64\"\n }\n },\n \"boxes\": {\n \"offers\": {\n \"prefix\": \"o\",\n \"keyType\": \"uint64\",\n \"valueType\": \"OfferValue\"\n },\n \"participants\": {\n \"prefix\": \"p\",\n \"keyType\": \"ParticipantKey\",\n \"valueType\": \"RefundValue\"\n },\n \"hashes\": {\n \"prefix\": \"h\",\n \"keyType\": \"HashKey\",\n \"valueType\": \"RefundValue\"\n },\n \"offerRefunds\": {\n \"prefix\": \"f\",\n \"keyType\": \"uint64\",\n \"valueType\": \"RefundValue\"\n },\n \"offerRegistry\": {\n \"prefix\": \"r\",\n \"keyType\": \"uint64\",\n \"valueType\": \"uint64\"\n }\n },\n \"methods\": {\n \"create\": {\n \"signature\": \"create(string,uint64)void\",\n \"selector\": \"cd9ad67e\",\n \"args\": [\n {\n \"name\": \"version\",\n \"type\": \"string\"\n },\n {\n \"name\": \"akitaDAO\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"create:NoOp\"\n ]\n },\n \"offer\": {\n \"signature\": \"offer(pay,byte[32],uint64,byte[32],uint64,uint64)void\",\n \"selector\": \"0db3a44b\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"root\",\n \"type\": \"byte[32]\"\n },\n {\n \"name\": \"leaves\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"participantsRoot\",\n \"type\": \"byte[32]\"\n },\n {\n \"name\": \"participantsLeaves\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"expiration\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"accept\": {\n \"signature\": \"accept(pay,uint64,byte[32][],byte[32])void\",\n \"selector\": \"7bda81c9\",\n \"args\": [\n {\n \"name\": \"mbrPayment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"id\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"proof\",\n \"type\": \"byte[32][]\"\n },\n {\n \"name\": \"terms\",\n \"type\": \"byte[32]\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"escrow\": {\n \"signature\": \"escrow(pay,uint64,address,uint64,byte[32][])void\",\n \"selector\": \"d85febdd\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"id\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"receiver\",\n \"type\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"proof\",\n \"type\": \"byte[32][]\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"escrowAsa\": {\n \"signature\": \"escrowAsa(pay,axfer,uint64,address,uint64,uint64,byte[32][])void\",\n \"selector\": \"466f871a\",\n \"args\": [\n {\n \"name\": \"mbrPayment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"assetXfer\",\n \"type\": \"axfer\"\n },\n {\n \"name\": \"id\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"receiver\",\n \"type\": \"address\"\n },\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"proof\",\n \"type\": \"byte[32][]\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"disburse\": {\n \"signature\": \"disburse(uint64,uint64,address,uint64,uint64)void\",\n \"selector\": \"566a62b2\",\n \"args\": [\n {\n \"name\": \"id\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"receiverWallet\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"receiver\",\n \"type\": \"address\"\n },\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"disburseFrom\": {\n \"signature\": \"disburseFrom(uint64,address,uint64,address,uint64,uint64)void\",\n \"selector\": \"27336ba0\",\n \"args\": [\n {\n \"name\": \"id\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"from\",\n \"type\": \"address\"\n },\n {\n \"name\": \"receiverWallet\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"receiver\",\n \"type\": \"address\"\n },\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"cancel\": {\n \"signature\": \"cancel(uint64,byte[32][])void\",\n \"selector\": \"0c7ab42e\",\n \"args\": [\n {\n \"name\": \"id\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"proof\",\n \"type\": \"byte[32][]\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"withdraw\": {\n \"signature\": \"withdraw(uint64,address,uint64,uint64,byte[32][])void\",\n \"selector\": \"0631868b\",\n \"args\": [\n {\n \"name\": \"id\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"receiver\",\n \"type\": \"address\"\n },\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"proof\",\n \"type\": \"byte[32][]\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"cleanupParticipant\": {\n \"signature\": \"cleanupParticipant(uint64,address)void\",\n \"selector\": \"683bb678\",\n \"args\": [\n {\n \"name\": \"id\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"participant\",\n \"type\": \"address\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"cleanupOffer\": {\n \"signature\": \"cleanupOffer(uint64)void\",\n \"selector\": \"d3ee04f0\",\n \"args\": [\n {\n \"name\": \"id\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"offerTerms\": {\n \"signature\": \"offerTerms(uint64)byte[32]\",\n \"selector\": \"00d701d5\",\n \"args\": [\n {\n \"name\": \"id\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"byte[32]\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"optIn\": {\n \"signature\": \"optIn(pay,uint64)void\",\n \"selector\": \"394eaeb2\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"update\": {\n \"signature\": \"update(string)void\",\n \"selector\": \"ea9180dd\",\n \"args\": [\n {\n \"name\": \"newVersion\",\n \"type\": \"string\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"UpdateApplication\"\n ]\n },\n \"updateAkitaDAO\": {\n \"signature\": \"updateAkitaDAO(uint64)void\",\n \"selector\": \"33e92c94\",\n \"args\": [\n {\n \"name\": \"akitaDAO\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"opUp\": {\n \"signature\": \"opUp()void\",\n \"selector\": \"854dede0\",\n \"args\": [],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"mbr\": {\n \"signature\": \"mbr()(uint64,uint64,uint64,(uint64,uint64))\",\n \"selector\": \"840733dd\",\n \"args\": [],\n \"returns\": \"(uint64,uint64,uint64,(uint64,uint64))\",\n \"actions\": [\n \"NoOp\"\n ]\n }\n },\n \"events\": {},\n \"structs\": {\n \"Object57CB3C34\": [\n {\n \"name\": \"root\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"data\",\n \"type\": \"uint64\"\n }\n ],\n \"HashKey\": [\n {\n \"name\": \"id\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"hash\",\n \"type\": \"byte[32]\"\n }\n ],\n \"HyperSwapMBRData\": [\n {\n \"name\": \"offers\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"participants\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"hashes\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"mm\",\n \"type\": \"Object57CB3C34\"\n }\n ],\n \"OfferValue\": [\n {\n \"name\": \"state\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"root\",\n \"type\": \"byte[32]\"\n },\n {\n \"name\": \"leaves\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"escrowed\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"participantsRoot\",\n \"type\": \"byte[32]\"\n },\n {\n \"name\": \"participantsLeaves\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"acceptances\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"expiration\",\n \"type\": \"uint64\"\n }\n ],\n \"ParticipantKey\": [\n {\n \"name\": \"id\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"address\",\n \"type\": \"address\"\n }\n ],\n \"RefundValue\": [\n {\n \"name\": \"amount\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"payor\",\n \"type\": \"address\"\n }\n ]\n }\n }\n} as const\n\nexport type ContractName = keyof typeof CONTRACT_SCHEMAS\n","import algosdk from 'algosdk'\nimport { sha256 } from 'js-sha256'\nimport { fromBase64, toHex, utf8 } from './chain/bytes'\nimport type { FetchLike } from './http'\nimport { requestJson } from './http'\nimport type { AssetData } from './sources/chain-data'\nimport type { Source, SourceContext } from './sources/types'\nimport { refKey, type Endpoint, type Entity, type Ref } from './types'\n\n/** How an asset's media was found. */\nexport type MediaStandard = 'resolver' | 'arc3' | 'arc19' | 'arc69' | 'url' | 'none'\n\nexport interface AssetMediaData {\n assetId: string\n /** ipfs://, https:// or data: URL of the image. Hosts map it through their image proxy. */\n image?: string\n animation?: string\n mimeType?: string\n standard: MediaStandard\n /**\n * ARC-3 only: true when the metadata JSON matches the asset's on-chain\n * metadata hash, false when it does not, absent when the asset has no hash.\n */\n metadataVerified?: boolean\n description?: string\n}\n\nexport const DEFAULT_IPFS_GATEWAY = 'https://ipfs.akita.community/ipfs/'\n\n// ---------------------------------------------------------------- ARC-19\n\nconst MULTICODEC: Record<string, number> = { raw: 0x55, 'dag-pb': 0x70 }\nconst MULTIHASH: Record<string, number> = { 'sha2-256': 0x12 }\nconst B32 = 'abcdefghijklmnopqrstuvwxyz234567'\n\nexport function base32Lower(bytes: Uint8Array): string {\n let out = ''\n let buffer = 0\n let bits = 0\n for (const b of bytes) {\n buffer = (buffer << 8) | b\n bits += 8\n while (bits >= 5) {\n out += B32[(buffer >>> (bits - 5)) & 31]\n bits -= 5\n }\n }\n if (bits > 0) out += B32[(buffer << (5 - bits)) & 31]\n return out\n}\n\n/** Resolves an ARC-19 `template-ipfs://{ipfscid:1:codec:reserve:sha2-256}` URL to `ipfs://<cid><suffix>`. */\nexport function resolveArc19(template: string, reserve: string | undefined): string | undefined {\n const m = template.match(/^template-ipfs:\\/\\/\\{ipfscid:(\\d+):([^:]+):([^:]+):([^}]+)\\}(.*)$/)\n if (!m || m[3] !== 'reserve' || !reserve || m[1] !== '1') return undefined\n const codec = MULTICODEC[m[2]!]\n const hash = MULTIHASH[m[4]!]\n if (codec === undefined || hash === undefined) return undefined\n const key = algosdk.decodeAddress(reserve).publicKey\n const cid = new Uint8Array(4 + key.length)\n cid.set([0x01, codec, hash, 0x20])\n cid.set(key, 4)\n return `ipfs://b${base32Lower(cid)}${m[5] ?? ''}`\n}\n\n// ---------------------------------------------------------------- helpers\n\nexport function ipfsToGateway(url: string, gateway = DEFAULT_IPFS_GATEWAY): string {\n return url.startsWith('ipfs://') ? `${gateway.replace(/\\/?$/, '/')}${url.slice('ipfs://'.length)}` : url\n}\n\nconst isArc3 = (asset: AssetData) => Boolean(asset.url?.endsWith('#arc3') || asset.name?.endsWith('@arc3') || asset.url?.split('#')[0]!.endsWith('.json'))\n\nasync function fetchBytes(fetchFn: FetchLike, url: string, timeoutMs = 10_000): Promise<Uint8Array | undefined> {\n const controller = new AbortController()\n const timer = setTimeout(() => controller.abort(), timeoutMs)\n try {\n const res = await fetchFn(url, { signal: controller.signal })\n if (!res.ok) return undefined\n return new Uint8Array(await res.arrayBuffer())\n } catch {\n return undefined\n } finally {\n clearTimeout(timer)\n }\n}\n\nfunction mediaFromJson(json: Record<string, unknown>, base: string): Pick<AssetMediaData, 'image' | 'animation' | 'mimeType' | 'description'> {\n const rel = (v: unknown) => {\n if (typeof v !== 'string' || !v) return undefined\n // ARC-3 allows URIs relative to the metadata file.\n return /^[a-z][a-z0-9+.-]*:/i.test(v) ? v : `${base.replace(/[^/]*$/, '')}${v}`\n }\n return {\n image: rel(json.image ?? json.media_url ?? json.image_url),\n animation: rel(json.animation_url),\n mimeType: typeof json.image_mimetype === 'string' ? json.image_mimetype : typeof json.mime_type === 'string' ? json.mime_type : undefined,\n description: typeof json.description === 'string' ? json.description : undefined,\n }\n}\n\n// ---------------------------------------------------------------- source\n\nexport interface MediaOptions {\n ipfsGateway?: string\n /** Indexer for ARC-69 notes. Without it, ARC-69 assets fall back to their URL. */\n indexer?: Endpoint\n}\n\n/**\n * Resolves `asset-media` refs: ARC-3 metadata (checked against the asset's\n * metadata hash), ARC-19 templates, ARC-69 notes and plain URLs. Uses the\n * shared `asset` cache for the asset itself.\n */\nexport function createMediaSource(loadAsset: (id: string) => Promise<Entity<AssetData> | undefined>, options: MediaOptions = {}): Source {\n const gateway = options.ipfsGateway ?? DEFAULT_IPFS_GATEWAY\n return {\n name: 'media',\n maxBatch: 1,\n concurrency: 6,\n supports: (kind) => kind === 'asset-media',\n async fetch(refs: Ref[], ctx: SourceContext) {\n const out = new Map<string, Entity>()\n const ref = refs[0]\n if (!ref) return out\n const asset = (await loadAsset(ref.id))?.data\n const now = Date.now()\n const done = (data: AssetMediaData) =>\n out.set(refKey(ref), { kind: 'asset-media', id: ref.id, network: ctx.network, status: 'live', data, provenance: { source: 'media', fetchedAt: now } })\n if (!asset) return out\n if (asset.imageUrl) return done({ assetId: ref.id, image: asset.imageUrl, standard: 'resolver' }), out\n\n let url = asset.url ?? ''\n let standard: MediaStandard = 'url'\n if (url.startsWith('template-ipfs://')) {\n url = resolveArc19(url, asset.reserve) ?? ''\n standard = 'arc19'\n }\n\n if (url && (isArc3(asset) || url.split('#')[0]!.endsWith('.json') || standard === 'arc19')) {\n const metaUrl = url.split('#')[0]!\n const bytes = await fetchBytes(ctx.fetch, ipfsToGateway(metaUrl, gateway))\n const json = bytes ? safeJson(utf8(bytes)) : undefined\n if (json) {\n const hash = asset.metadataHash ? toHex(fromBase64(asset.metadataHash)) : undefined\n return done({\n assetId: ref.id,\n standard: standard === 'arc19' ? 'arc19' : 'arc3',\n ...mediaFromJson(json, metaUrl),\n ...(hash && bytes ? { metadataVerified: sha256(bytes) === hash } : {}),\n }), out\n }\n // An ARC-19 template can point straight at an image.\n if (standard === 'arc19') return done({ assetId: ref.id, image: url, standard }), out\n }\n\n if (options.indexer) {\n const notes = await requestJson<{ transactions: Array<{ note?: string }> }>(\n ctx.fetch,\n options.indexer,\n `/v2/transactions?asset-id=${ref.id}&tx-type=acfg&limit=50`,\n ).catch(() => undefined)\n // The latest config transaction with a JSON note is the current ARC-69 metadata.\n for (const t of [...(notes?.transactions ?? [])].reverse()) {\n const json = t.note ? safeJson(utf8(fromBase64(t.note))) : undefined\n if (json && json.standard === 'arc69') {\n const media = mediaFromJson(json, url)\n return done({ assetId: ref.id, standard: 'arc69', ...media, image: media.image ?? (url || undefined) }), out\n }\n }\n }\n\n // A plain URL is often a project website; only treat it as media when it looks like one.\n return done(url && looksLikeMedia(url) ? { assetId: ref.id, image: url, standard: 'url' } : { assetId: ref.id, standard: 'none' }), out\n },\n }\n}\n\nexport function looksLikeMedia(url: string): boolean {\n return url.startsWith('ipfs://') || url.startsWith('data:image/') || /\\.(png|jpe?g|gif|webp|svg|avif|mp4|webm)([?#].*)?$/i.test(url)\n}\n\nfunction safeJson(text: string): Record<string, unknown> | undefined {\n try {\n const v = JSON.parse(text)\n return v && typeof v === 'object' && !Array.isArray(v) ? v : undefined\n } catch {\n return undefined\n }\n}\n","import { fromBase64, toHex } from '../chain/bytes'\nimport type { EvalDeltaKeyValue, IndexerApplication, IndexerTransaction } from '../chain/indexer-types'\nimport { applyDelta, type RawState } from '../chain/state'\n\n/** One call to (or creation of) an app, flattened out of the indexer's inner-transaction tree. */\nexport interface AppCall {\n /** Id of the root transaction that contains the call. */\n txId: string\n /** Inner-transaction path inside the root, e.g. \"1.0\". Empty for a root call. */\n path: string\n round: number\n roundTime?: number\n sender: string\n onCompletion: string\n args: Uint8Array[]\n /** First 4 bytes of the first arg, as hex. */\n selector?: string\n creates: boolean\n globalDelta: EvalDeltaKeyValue[]\n logs: string[]\n inner: IndexerTransaction[]\n /** Transactions in the same group as this call (root group or inner group). */\n siblings: IndexerTransaction[]\n}\n\nexport interface AppHistory {\n application: IndexerApplication\n transactions: IndexerTransaction[]\n}\n\n/** Every call to `appId`, in chain order. */\nexport function collectAppCalls(appId: number, roots: IndexerTransaction[]): AppCall[] {\n const ordered = [...roots].sort(\n (a, b) =>\n (a['confirmed-round'] ?? 0) - (b['confirmed-round'] ?? 0) ||\n (a['intra-round-offset'] ?? 0) - (b['intra-round-offset'] ?? 0),\n )\n const calls: AppCall[] = []\n const walk = (txn: IndexerTransaction, root: IndexerTransaction, path: string, siblings: IndexerTransaction[]) => {\n const appl = txn['application-transaction']\n const creates = txn['created-application-index'] === appId\n if (appl && (appl['application-id'] === appId || creates)) {\n const args = (appl['application-args'] ?? []).map(fromBase64)\n calls.push({\n txId: root.id ?? '',\n path,\n round: root['confirmed-round'] ?? 0,\n roundTime: root['round-time'],\n sender: txn.sender,\n onCompletion: appl['on-completion'],\n args,\n selector: args[0] && args[0].length >= 4 ? toHex(args[0].subarray(0, 4)) : undefined,\n creates,\n globalDelta: txn['global-state-delta'] ?? [],\n logs: txn.logs ?? [],\n inner: txn['inner-txns'] ?? [],\n siblings,\n })\n }\n const inner = txn['inner-txns'] ?? []\n inner.forEach((child, i) => walk(child, root, path ? `${path}.${i}` : String(i), inner))\n }\n for (const root of ordered) walk(root, root, '', [root])\n return calls\n}\n\nexport interface Replay {\n state: RawState\n calls: AppCall[]\n created?: AppCall\n deleted?: AppCall\n}\n\n/** Replays every global-state delta in order. `onCall` sees the state before and after each call. */\nexport function replay(\n appId: number,\n roots: IndexerTransaction[],\n onCall?: (call: AppCall, before: RawState, after: RawState) => void,\n): Replay {\n const state: RawState = new Map()\n const calls = collectAppCalls(appId, roots)\n let created: AppCall | undefined\n let deleted: AppCall | undefined\n for (const call of calls) {\n const before = new Map(state)\n applyDelta(state, call.globalDelta)\n if (call.creates) created = call\n if (call.onCompletion === 'delete') deleted = call\n onCall?.(call, before, state)\n }\n return { state, calls, created, deleted }\n}\n\nexport const ZERO_ADDRESS = 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAY5HFKQ'\n\nexport function nonZeroAddress(value: unknown): string | undefined {\n return typeof value === 'string' && value && value !== ZERO_ADDRESS ? value : undefined\n}\n\n/** Receivers of asset transfers of `assetId` anywhere under `txns`. */\nexport function assetReceivers(txns: IndexerTransaction[], assetId: string): string[] {\n const out: string[] = []\n const visit = (t: IndexerTransaction) => {\n const ax = t['asset-transfer-transaction']\n if (ax && String(ax['asset-id']) === assetId) {\n if (ax.amount > 0) out.push(ax.receiver)\n if (ax['close-to']) out.push(ax['close-to'])\n }\n t['inner-txns']?.forEach(visit)\n }\n txns.forEach(visit)\n return out\n}\n","import { fromBase64 } from '../chain/bytes'\nimport { stakingPoolFromState, type StakingPoolData } from '../akita'\nimport { rawUint, stateFromTeal, type RawState } from '../chain/state'\nimport type { IndexerApplication, IndexerTransaction } from '../chain/indexer-types'\nimport { decodeArgs, decodeEvents, decodeGlobalState, methodForSelector, type Decoded } from '../contracts/decode'\nimport { CONTRACT_SCHEMAS } from '../contracts/schemas.generated'\nimport type { Evidence } from '../types'\nimport { assetReceivers, nonZeroAddress, replay, type AppCall } from './history'\n\nconst str = (v: Decoded | undefined): string => (typeof v === 'string' ? v : v == null ? '' : String(v))\nconst flag = (v: Decoded | undefined): boolean => str(v) === '1' || v === true\nconst nowSec = () => Math.floor(Date.now() / 1000)\n\nfunction closeInfo(call: AppCall | undefined) {\n return call ? { closedRound: call.round, closedAt: call.roundTime, closeTxId: call.txId } : {}\n}\n\nfunction evidenceFor(app: IndexerApplication, deleted: AppCall | undefined): Evidence {\n return {\n appId: app.id,\n createdRound: app['created-at-round'],\n deletedRound: app['deleted-at-round'],\n deleteTxId: deleted?.txId,\n }\n}\n\n// ---------------------------------------------------------------- listing\n\nexport interface ListingData {\n appId: string\n status: 'active' | 'expired' | 'sold' | 'delisted' | 'closed'\n seller: string\n prize: string\n isPrizeBox: boolean\n prizeAmount: string\n price: string\n paymentAsset: string\n expiration: string\n reservedFor?: string\n gateId: string\n creatorRoyalty: string\n marketplace?: string\n marketplaceRoyalties: string\n buyer?: string\n createdRound?: number\n closedRound?: number\n closedAt?: number\n closeTxId?: string\n}\n\nexport function listingFromDecoded(appId: string, d: Record<string, Decoded>, now = nowSec()): ListingData {\n const expiration = str(d.expiration)\n return {\n appId,\n status: expiration !== '0' && expiration !== '' && Number(expiration) < now ? 'expired' : 'active',\n seller: str(d.seller),\n prize: str(d.prize),\n isPrizeBox: flag(d.isPrizeBox),\n prizeAmount: str(d.prizeAmount) || '1',\n price: str(d.price),\n paymentAsset: str(d.paymentAsset),\n expiration,\n reservedFor: nonZeroAddress(d.reservedFor),\n gateId: str(d.gateID),\n creatorRoyalty: str(d.creatorRoyalty),\n marketplace: nonZeroAddress(d.marketplace),\n marketplaceRoyalties: str(d.marketplaceRoyalties),\n }\n}\n\n/** Who received the prize in the closing call, for contract versions whose selectors we do not know. */\nfunction prizeRecipient(call: AppCall, listing: ListingData): string | undefined {\n if (listing.isPrizeBox) {\n for (const t of call.inner) {\n const a = t['application-transaction']\n if (a && String(a['application-id']) === listing.prize && a['application-args']?.length) {\n const args = (a['application-args'] ?? []).map(fromBase64)\n const decoded = decodeArgs('prizeBox', 'transfer', args)\n if (typeof decoded[0] === 'string') return decoded[0]\n }\n }\n return undefined\n }\n return assetReceivers(call.inner, listing.prize)[0]\n}\n\nexport function reduceListing(app: IndexerApplication, txns: IndexerTransaction[]) {\n const r = replay(app.id, txns)\n const data: ListingData = { ...listingFromDecoded(String(app.id), decodeGlobalState('listing', r.state)), createdRound: r.created?.round }\n const close = r.deleted\n const finalized = close ? decodeEvents('listing', close.logs).find((e) => e.name === 'ListingFinalized') : undefined\n if (close && finalized) {\n // Contracts with the Finalized event state the outcome directly.\n const sold = str(finalized.fields.outcome) === '1'\n data.status = sold ? 'sold' : 'delisted'\n if (sold) data.buyer = nonZeroAddress(finalized.fields.buyer)\n Object.assign(data, closeInfo(close))\n } else if (close) {\n const method = close.selector ? methodForSelector('listing', close.selector) : undefined\n if (method === 'purchase' || method === 'purchaseAsa') {\n const args = decodeArgs('listing', method, close.args)\n data.status = 'sold'\n data.buyer = typeof args[0] === 'string' ? args[0] : prizeRecipient(close, data)\n } else if (method === 'delist') {\n data.status = 'delisted'\n } else {\n const to = prizeRecipient(close, data)\n data.status = !to ? 'closed' : to === data.seller ? 'delisted' : 'sold'\n if (data.status === 'sold') data.buyer = to\n }\n Object.assign(data, closeInfo(close))\n }\n return { data, evidence: evidenceFor(app, close), archived: Boolean(app.deleted) }\n}\n\n// ---------------------------------------------------------------- auction\n\nexport interface AuctionBid {\n bidder: string\n amount: string\n round: number\n /** Absent when the bid came from an off-chain record. */\n txId?: string\n}\n\nexport interface AuctionData {\n appId: string\n status: 'upcoming' | 'live' | 'ended' | 'settled' | 'cancelled' | 'closed'\n seller: string\n prize: string\n isPrizeBox: boolean\n prizeClaimed: boolean\n bidAsset: string\n bidFee: string\n startingBid: string\n bidMinimumIncrease: string\n startTimestamp: string\n endTimestamp: string\n highestBid: string\n bidCount: string\n uniqueBidders: string\n highestBidder?: string\n raffleAmount: string\n raffleWinner?: string\n rafflePrizeClaimed: boolean\n gateId: string\n marketplace?: string\n creatorRoyalty: string\n bids?: AuctionBid[]\n createdRound?: number\n closedRound?: number\n closedAt?: number\n closeTxId?: string\n}\n\nexport function auctionFromDecoded(appId: string, d: Record<string, Decoded>, now = nowSec()): AuctionData {\n const start = Number(str(d.startTimestamp) || 0)\n const end = Number(str(d.endTimestamp) || 0)\n const prizeClaimed = flag(d.prizeClaimed)\n return {\n appId,\n status: prizeClaimed ? 'settled' : now < start ? 'upcoming' : now < end ? 'live' : 'ended',\n seller: str(d.seller),\n prize: str(d.prize),\n isPrizeBox: flag(d.isPrizeBox),\n prizeClaimed,\n bidAsset: str(d.bidAsset),\n bidFee: str(d.bidFee),\n startingBid: str(d.startingBid),\n bidMinimumIncrease: str(d.bidMinimumIncrease),\n startTimestamp: str(d.startTimestamp),\n endTimestamp: str(d.endTimestamp),\n highestBid: str(d.highestBid),\n // bid_id holds the next bid id and starts at 1.\n bidCount: String(Math.max(0, Number(str(d.bidID) || 1) - 1)),\n uniqueBidders: str(d.uniqueAddressCount),\n raffleAmount: str(d.raffleAmount),\n raffleWinner: nonZeroAddress(d.raffleWinner),\n rafflePrizeClaimed: flag(d.rafflePrizeClaimed),\n gateId: str(d.gateID),\n marketplace: nonZeroAddress(d.marketplace),\n creatorRoyalty: str(d.creatorRoyalty),\n }\n}\n\nconst HIGHEST_BID_KEY = CONTRACT_SCHEMAS.auction.global.highestBid.key\n\nexport function reduceAuction(app: IndexerApplication, txns: IndexerTransaction[]) {\n const bids: AuctionBid[] = []\n const r = replay(app.id, txns, (call, before, after) => {\n if (call.creates) return\n const prev = rawUint(before, HIGHEST_BID_KEY)\n const next = rawUint(after, HIGHEST_BID_KEY)\n // Every accepted bid must beat the highest bid, so a rise in highest_bid marks a bid and its amount.\n if (next !== undefined && next !== prev && (prev === undefined || next > prev)) {\n bids.push({ bidder: call.sender, amount: next.toString(), round: call.round, txId: call.txId })\n }\n })\n const data: AuctionData = { ...auctionFromDecoded(String(app.id), decodeGlobalState('auction', r.state)), bids, createdRound: r.created?.round }\n data.highestBidder = bids.at(-1)?.bidder\n // Contracts with Finalized events name the winners directly.\n const events = r.calls.flatMap((c) => decodeEvents('auction', c.logs))\n const claimed = events.find((e) => e.name === 'AuctionPrizeClaimed')\n if (claimed && str(claimed.fields.amount) !== '0') data.highestBidder = nonZeroAddress(claimed.fields.winner)\n const raffleClaimed = events.find((e) => e.name === 'AuctionRafflePrizeClaimed')\n if (raffleClaimed) data.raffleWinner = nonZeroAddress(raffleClaimed.fields.winner)\n if (r.deleted) {\n const finalized = decodeEvents('auction', r.deleted.logs).find((e) => e.name === 'AuctionFinalized')\n const method = r.deleted.selector ? methodForSelector('auction', r.deleted.selector) : undefined\n data.status = (finalized ? str(finalized.fields.outcome) === '2' : method === 'cancel') ? 'cancelled' : 'closed'\n Object.assign(data, closeInfo(r.deleted))\n }\n return { data, evidence: evidenceFor(app, r.deleted), archived: Boolean(app.deleted) }\n}\n\n// ---------------------------------------------------------------- raffle\n\nexport interface RaffleEntry {\n entrant: string\n tickets: string\n}\n\nexport interface RaffleData {\n appId: string\n status: 'upcoming' | 'live' | 'drawing' | 'complete' | 'failed' | 'closed'\n seller: string\n prize: string\n isPrizeBox: boolean\n prizeClaimed: boolean\n ticketAsset: string\n startTimestamp: string\n endTimestamp: string\n minTickets: string\n maxTickets: string\n minEntries: string\n entryCount: string\n ticketCount: string\n winningTicket: string\n winner?: string\n failed: boolean\n gateId: string\n marketplace?: string\n creatorRoyalty: string\n entries?: RaffleEntry[]\n createdRound?: number\n closedRound?: number\n closedAt?: number\n closeTxId?: string\n}\n\nexport function raffleFromDecoded(appId: string, d: Record<string, Decoded>, now = nowSec()): RaffleData {\n const start = Number(str(d.startTimestamp) || 0)\n const end = Number(str(d.endTimestamp) || 0)\n const winner = nonZeroAddress(d.winner)\n const failed = flag(d.failed)\n return {\n appId,\n status: failed ? 'failed' : winner ? 'complete' : now < start ? 'upcoming' : now < end ? 'live' : 'drawing',\n seller: str(d.seller),\n prize: str(d.prize),\n isPrizeBox: flag(d.isPrizeBox),\n prizeClaimed: flag(d.prizeClaimed),\n ticketAsset: str(d.ticketAsset),\n startTimestamp: str(d.startTimestamp),\n endTimestamp: str(d.endTimestamp),\n minTickets: str(d.minTickets),\n maxTickets: str(d.maxTickets),\n minEntries: str(d.minEntries),\n entryCount: str(d.entryCount),\n ticketCount: str(d.ticketCount),\n winningTicket: str(d.winningTicket),\n winner,\n failed,\n gateId: str(d.gateID),\n marketplace: nonZeroAddress(d.marketplace),\n creatorRoyalty: str(d.creatorRoyalty),\n }\n}\n\nconst TICKET_COUNT_KEY = CONTRACT_SCHEMAS.raffle.global.ticketCount.key\n\nexport function reduceRaffle(app: IndexerApplication, txns: IndexerTransaction[]) {\n const tickets = new Map<string, bigint>()\n const r = replay(app.id, txns, (call, before, after) => {\n if (call.creates) return\n const diff = (rawUint(after, TICKET_COUNT_KEY) ?? 0n) - (rawUint(before, TICKET_COUNT_KEY) ?? 0n)\n // Tickets only grow through enter and add calls; the sender is the entrant.\n if (diff > 0n) tickets.set(call.sender, (tickets.get(call.sender) ?? 0n) + diff)\n })\n const data: RaffleData = {\n ...raffleFromDecoded(String(app.id), decodeGlobalState('raffle', r.state)),\n entries: [...tickets].map(([entrant, n]) => ({ entrant, tickets: n.toString() })),\n createdRound: r.created?.round,\n }\n if (r.deleted) {\n if (data.status !== 'failed') data.status = 'closed'\n Object.assign(data, closeInfo(r.deleted))\n }\n return { data, evidence: evidenceFor(app, r.deleted), archived: Boolean(app.deleted) }\n}\n\n// ---------------------------------------------------------------- poll\n\nexport interface PollData {\n appId: string\n status: 'active' | 'ended' | 'closed'\n type: string\n question: string\n options: Array<{ label: string; votes: string }>\n endTime: string\n maxSelected: string\n gateId: string\n totalVotes: string\n voters?: number\n createdRound?: number\n closedRound?: number\n closedAt?: number\n closeTxId?: string\n}\n\nconst OPTION_FIELDS = [\n ['optionOne', 'votesOne'],\n ['optionTwo', 'votesTwo'],\n ['optionThree', 'votesThree'],\n ['optionFour', 'votesFour'],\n ['optionFive', 'votesFive'],\n] as const\n\nexport function pollFromDecoded(appId: string, d: Record<string, Decoded>, now = nowSec()): PollData {\n const count = Number(str(d.optionCount) || 0)\n const options = OPTION_FIELDS.slice(0, count || OPTION_FIELDS.length)\n .filter(([label]) => str(d[label]) !== '')\n .map(([label, votes]) => ({ label: str(d[label]), votes: str(d[votes]) || '0' }))\n const endTime = str(d.endTime)\n return {\n appId,\n status: Number(endTime || 0) > now ? 'active' : 'ended',\n type: str(d.type),\n question: str(d.question),\n options,\n endTime,\n maxSelected: str(d.maxSelected),\n gateId: str(d.gateID),\n totalVotes: options.reduce((a, o) => a + BigInt(o.votes || '0'), 0n).toString(),\n }\n}\n\nexport function reducePoll(app: IndexerApplication, txns: IndexerTransaction[]) {\n const voters = new Set<string>()\n const voteSelectors = new Set(['vote', 'gatedVote'].map((m) => (CONTRACT_SCHEMAS.poll.methods as Record<string, { selector: string }>)[m]?.selector))\n const r = replay(app.id, txns, (call) => {\n if (call.selector && voteSelectors.has(call.selector)) voters.add(call.sender)\n })\n const data: PollData = { ...pollFromDecoded(String(app.id), decodeGlobalState('poll', r.state)), voters: voters.size, createdRound: r.created?.round }\n if (r.deleted) {\n data.status = 'closed'\n Object.assign(data, closeInfo(r.deleted))\n }\n return { data, evidence: evidenceFor(app, r.deleted), archived: Boolean(app.deleted) }\n}\n\n// ---------------------------------------------------------------- prize box\n\nexport interface PrizeBoxData {\n appId: string\n status: 'active' | 'closed'\n owner: string\n optinCount: string\n createdRound?: number\n closedRound?: number\n closedAt?: number\n closeTxId?: string\n}\n\nexport function prizeBoxFromDecoded(appId: string, d: Record<string, Decoded>): PrizeBoxData {\n return { appId, status: 'active', owner: str(d.owner), optinCount: str(d.optinCount) }\n}\n\nexport function reducePrizeBox(app: IndexerApplication, txns: IndexerTransaction[]) {\n const r = replay(app.id, txns)\n const data: PrizeBoxData = { ...prizeBoxFromDecoded(String(app.id), decodeGlobalState('prizeBox', r.state)), createdRound: r.created?.round }\n if (r.deleted) {\n data.status = 'closed'\n Object.assign(data, closeInfo(r.deleted))\n }\n return { data, evidence: evidenceFor(app, r.deleted), archived: Boolean(app.deleted) }\n}\n\n// ---------------------------------------------------------------- registry\n\n// ---------------------------------------------------------------- staking pool\n\n/** Header only: rewards and rounds live in boxes, which history does not keep. */\nexport function reduceStakingPool(app: IndexerApplication, txns: IndexerTransaction[]) {\n const r = replay(app.id, txns)\n const data: StakingPoolData = stakingPoolFromState(String(app.id), r.state)\n if (r.deleted) {\n data.status = 'closed'\n data.closedRound = r.deleted.round\n }\n return { data, evidence: evidenceFor(app, r.deleted), archived: Boolean(app.deleted) }\n}\n\nexport interface ContractFamily {\n contract: 'listing' | 'auction' | 'raffle' | 'poll' | 'prizeBox' | 'stakingPool'\n /** Live state from global state (algod or a live indexer record). */\n fromState(appId: string, state: RawState): unknown\n /** Final or current state from full call history. */\n reduce(app: IndexerApplication, txns: IndexerTransaction[]): { data: unknown; evidence: Evidence; archived: boolean }\n /** Fields compared when verifying a claimed archived state. */\n verifyFields: string[]\n}\n\nexport const FAMILIES: Record<string, ContractFamily> = {\n listing: {\n contract: 'listing',\n fromState: (id, s) => listingFromDecoded(id, decodeGlobalState('listing', s)),\n reduce: reduceListing,\n verifyFields: ['status', 'seller', 'prize', 'price', 'paymentAsset', 'buyer'],\n },\n auction: {\n contract: 'auction',\n fromState: (id, s) => auctionFromDecoded(id, decodeGlobalState('auction', s)),\n reduce: reduceAuction,\n verifyFields: ['status', 'seller', 'prize', 'highestBid', 'bidCount', 'highestBidder', 'raffleWinner'],\n },\n raffle: {\n contract: 'raffle',\n fromState: (id, s) => raffleFromDecoded(id, decodeGlobalState('raffle', s)),\n reduce: reduceRaffle,\n verifyFields: ['status', 'seller', 'prize', 'entryCount', 'ticketCount', 'winner'],\n },\n poll: {\n contract: 'poll',\n fromState: (id, s) => pollFromDecoded(id, decodeGlobalState('poll', s)),\n reduce: reducePoll,\n verifyFields: ['question', 'options', 'totalVotes'],\n },\n 'staking-pool': {\n contract: 'stakingPool',\n fromState: (id, s) => stakingPoolFromState(id, s),\n reduce: reduceStakingPool,\n verifyFields: ['title', 'creator', 'poolType', 'minimumStake'],\n },\n 'prize-box': {\n contract: 'prizeBox',\n fromState: (id, s) => prizeBoxFromDecoded(id, decodeGlobalState('prizeBox', s)),\n reduce: reducePrizeBox,\n verifyFields: ['owner'],\n },\n}\n\nexport { stateFromTeal }\n","import type { IndexerAsset } from '../chain/indexer-types'\n\nexport interface AssetData {\n id: string\n name?: string\n unitName?: string\n decimals: number\n total: string\n url?: string\n /** Base64 metadata hash, used to verify ARC-3 metadata. */\n metadataHash?: string\n creator: string\n manager?: string\n reserve?: string\n freeze?: string\n clawback?: string\n defaultFrozen?: boolean\n /** Resolved image URL, when a resolver supplies one (ARC-3, ARC-19 and ARC-69 already applied). */\n imageUrl?: string\n deleted?: boolean\n createdRound?: number\n destroyedRound?: number\n}\n\nexport function assetFromJson(a: IndexerAsset): AssetData {\n const p = a.params\n return {\n id: String(a.index),\n name: p.name,\n unitName: p['unit-name'],\n decimals: p.decimals,\n total: String(p.total),\n url: p.url,\n metadataHash: p['metadata-hash'],\n creator: p.creator,\n manager: p.manager,\n reserve: p.reserve,\n freeze: p.freeze,\n clawback: p.clawback,\n defaultFrozen: Boolean(p['default-frozen']),\n ...(a.deleted ? { deleted: true } : {}),\n ...(a['created-at-round'] ? { createdRound: a['created-at-round'] } : {}),\n ...(a['destroyed-at-round'] ? { destroyedRound: a['destroyed-at-round'] } : {}),\n }\n}\n\nexport interface AccountData {\n address: string\n amount: string\n minBalance: string\n totalAssets: number\n totalApps: number\n authAddr?: string\n}\n\nexport function accountFromJson(a: Record<string, unknown>): AccountData {\n return {\n address: String(a.address),\n amount: String(a.amount ?? 0),\n minBalance: String(a['min-balance'] ?? 0),\n totalAssets: Number(a['total-assets-opted-in'] ?? 0),\n totalApps: Number(a['total-apps-opted-in'] ?? 0),\n ...(a['auth-addr'] ? { authAddr: String(a['auth-addr']) } : {}),\n }\n}\n\nexport interface ApplicationData {\n id: string\n creator?: string\n deleted: boolean\n createdRound?: number\n deletedRound?: number\n}\n\n/** An NFT collection, served by a resolver (Akita backend). Images are assets, so they resolve through asset-media. */\nexport interface CollectionData {\n id: string\n name: string\n description?: string\n /** NFD app id that owns the collection. */\n nfdId?: string\n avatarAssetId?: string\n bannerAssetId?: string\n explicit?: boolean\n}\n","import { FAMILIES } from '../archive/families'\nimport type { AppHistory } from '../archive/history'\nimport type { IndexerApplication, IndexerAsset, IndexerTransaction } from '../chain/indexer-types'\nimport { stateFromTeal } from '../chain/state'\nimport { requestJson, type FetchLike } from '../http'\nimport { refKey, type Endpoint, type Entity, type Ref } from '../types'\nimport { accountFromJson, assetFromJson, type ApplicationData } from './chain-data'\nimport type { Source, SourceContext } from './types'\n\nconst KINDS = new Set(['account', 'asset', 'application', 'transaction'])\n\n/** An app's indexer record (kept after deletion) and its complete call history. */\nexport async function fetchAppHistory(fetchFn: FetchLike, endpoint: Endpoint, appId: string): Promise<AppHistory | undefined> {\n const rec = await requestJson<{ application: IndexerApplication }>(fetchFn, endpoint, `/v2/applications/${appId}?include-all=true`)\n if (!rec) return undefined\n const transactions: IndexerTransaction[] = []\n let next: string | undefined\n do {\n const page = await requestJson<{ transactions: IndexerTransaction[]; 'next-token'?: string }>(\n fetchFn,\n endpoint,\n `/v2/transactions?application-id=${appId}&limit=1000${next ? `&next=${encodeURIComponent(next)}` : ''}`,\n )\n transactions.push(...(page?.transactions ?? []))\n next = page?.transactions.length ? page['next-token'] : undefined\n } while (next)\n return { application: rec.application, transactions }\n}\n\n/**\n * History and deleted records from an indexer. For contract kinds it rebuilds\n * deleted apps from their call history, so it is the source of archived state.\n */\nexport function createIndexerSource(endpoint: Endpoint): Source {\n return {\n name: 'indexer',\n maxBatch: 1,\n concurrency: 6,\n supports: (kind) => KINDS.has(kind) || kind in FAMILIES,\n async fetch(refs: Ref[], ctx: SourceContext) {\n const out = new Map<string, Entity>()\n const ref = refs[0]\n if (!ref) return out\n const key = refKey(ref)\n const now = Date.now()\n const base = { kind: ref.kind, id: ref.id, network: ctx.network }\n\n if (ref.kind === 'transaction') {\n const t = await requestJson<{ transaction: IndexerTransaction }>(ctx.fetch, endpoint, `/v2/transactions/${ref.id}`)\n if (t) out.set(key, { ...base, status: 'live', data: t.transaction, provenance: { source: 'indexer', round: t.transaction['confirmed-round'], fetchedAt: now } })\n return out\n }\n if (ref.kind === 'account') {\n const a = await requestJson<{ account: Record<string, unknown>; 'current-round'?: number }>(ctx.fetch, endpoint, `/v2/accounts/${ref.id}?exclude=all`)\n if (a) out.set(key, { ...base, status: 'live', data: accountFromJson(a.account), provenance: { source: 'indexer', round: a['current-round'], fetchedAt: now } })\n return out\n }\n if (ref.kind === 'asset') {\n const a = await requestJson<{ asset: IndexerAsset }>(ctx.fetch, endpoint, `/v2/assets/${ref.id}?include-all=true`)\n if (a) out.set(key, { ...base, status: a.asset.deleted ? 'archived' : 'live', data: assetFromJson(a.asset), provenance: { source: 'indexer', fetchedAt: now } })\n return out\n }\n if (ref.kind === 'application') {\n const a = await requestJson<{ application: IndexerApplication }>(ctx.fetch, endpoint, `/v2/applications/${ref.id}?include-all=true`)\n if (!a) return out\n const app = a.application\n const data: ApplicationData = {\n id: ref.id,\n creator: app.params.creator,\n deleted: Boolean(app.deleted),\n createdRound: app['created-at-round'],\n deletedRound: app['deleted-at-round'],\n }\n out.set(key, { ...base, status: app.deleted ? 'archived' : 'live', data, provenance: { source: 'indexer', fetchedAt: now } })\n return out\n }\n\n const family = FAMILIES[ref.kind]\n if (!family) return out\n const rec = await requestJson<{ application: IndexerApplication }>(ctx.fetch, endpoint, `/v2/applications/${ref.id}?include-all=true`)\n if (!rec) return out\n if (!rec.application.deleted) {\n // Live app: the indexer record carries current global state, but no boxes.\n const data = family.fromState(ref.id, stateFromTeal(rec.application.params['global-state']))\n out.set(key, { ...base, status: 'live', data, provenance: { source: 'indexer', fetchedAt: now } })\n return out\n }\n const history = await fetchAppHistory(ctx.fetch, endpoint, ref.id)\n if (!history) return out\n const reduced = family.reduce(history.application, history.transactions)\n out.set(key, {\n ...base,\n status: 'archived',\n data: reduced.data,\n evidence: reduced.evidence,\n provenance: { source: 'indexer', round: reduced.evidence.deletedRound, fetchedAt: now },\n verification: { state: 'verified', checkedAt: now, detail: 'Rebuilt from chain history' },\n })\n return out\n },\n }\n}\n","/** `ABCD…WXYZ`. The one address shortener; see docs/DESIGN.md §6. */\nexport function shortAddress(address: string, head = 4, tail = 4): string {\n if (!address || address.length <= head + tail + 1) return address\n return `${address.slice(0, head)}…${address.slice(-tail)}`\n}\n\nexport interface AmountFormatOptions {\n /** Most fraction digits to show. Defaults to all significant digits. */\n maxFraction?: number\n /** Group thousands with commas. Default true. */\n group?: boolean\n}\n\n/** Formats a base-unit amount (string, bigint or number) with `decimals`, without floating-point loss. */\nexport function formatAmount(base: string | bigint | number, decimals: number, options: AmountFormatOptions = {}): string {\n let v: bigint\n try {\n v = typeof base === 'bigint' ? base : BigInt(typeof base === 'number' ? Math.trunc(base) : base || '0')\n } catch {\n return String(base)\n }\n const negative = v < 0n\n if (negative) v = -v\n const digits = v.toString().padStart(decimals + 1, '0')\n let whole = decimals ? digits.slice(0, -decimals) : digits\n let fraction = decimals ? digits.slice(-decimals) : ''\n if (options.maxFraction !== undefined && fraction.length > options.maxFraction) fraction = fraction.slice(0, options.maxFraction)\n fraction = fraction.replace(/0+$/, '')\n if (options.group !== false) whole = whole.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',')\n return `${negative ? '-' : ''}${whole}${fraction ? `.${fraction}` : ''}`\n}\n\nexport const formatAlgo = (microAlgo: string | bigint | number, options?: AmountFormatOptions) => formatAmount(microAlgo, 6, options)\n\nconst UNITS: Array<[number, string]> = [\n [86_400, 'd'],\n [3_600, 'h'],\n [60, 'm'],\n [1, 's'],\n]\n\n/** `2d 4h`, `35m`, `12s`: the two largest units of a duration in seconds. */\nexport function formatDuration(seconds: number): string {\n let s = Math.max(0, Math.floor(seconds))\n if (s === 0) return '0s'\n // Past a week, hours are noise.\n if (s >= 7 * 86_400) return `${Math.floor(s / 86_400)}d`\n const parts: string[] = []\n for (const [size, unit] of UNITS) {\n if (s >= size && parts.length < 2) {\n parts.push(`${Math.floor(s / size)}${unit}`)\n s %= size\n }\n }\n return parts.join(' ')\n}\n\n/** `in 2d 4h` or `3h ago`, relative to `now` (unix seconds). */\nexport function formatRelativeTime(unixSeconds: number, now = Math.floor(Date.now() / 1000)): string {\n const diff = unixSeconds - now\n return diff >= 0 ? `in ${formatDuration(diff)}` : `${formatDuration(-diff)} ago`\n}\n","import { shortAddress } from './format'\nimport type { NfdData } from './sources/nfd'\nimport type { Source, SourceContext } from './sources/types'\nimport { refKey, type Entity, type Ref } from './types'\n\nexport interface IdentityData {\n address: string\n short: string\n name?: string\n avatar?: string\n nfd?: string\n /** Which step supplied the name: `nfd`, a provider name, or `address`. */\n nameSource: string\n /** True only when the name is bound to the address on-chain (an NFD). Self-chosen names are false. */\n nameVerified: boolean\n}\n\nexport interface IdentityProfile {\n name?: string\n avatar?: string\n}\n\n/** A host-supplied identity step, such as the Akita social profile. */\nexport interface IdentityProvider {\n name: string\n resolve(addresses: string[], ctx: SourceContext): Promise<Map<string, IdentityProfile>>\n}\n\n/**\n * The account identity chain (docs/DESIGN.md §6): steps in `order`, then the\n * short address. NFD lookups go through the shared `nfd-address` cache.\n */\nexport function createIdentitySource(\n loadNfd: (address: string) => Promise<Entity<NfdData> | undefined>,\n providers: IdentityProvider[],\n order: string[],\n): Source {\n return {\n name: 'identity',\n maxBatch: 100,\n concurrency: 4,\n supports: (kind) => kind === 'identity',\n async fetch(refs: Ref[], ctx: SourceContext) {\n const addresses = refs.map((r) => r.id)\n const [nfds, ...profiles] = await Promise.all([\n order.includes('nfd') ? Promise.all(addresses.map((a) => loadNfd(a).catch(() => undefined))) : Promise.resolve([]),\n ...providers.map((p) => p.resolve(addresses, ctx).catch(() => new Map<string, IdentityProfile>())),\n ])\n const byProvider = new Map(providers.map((p, i) => [p.name, profiles[i]!]))\n const out = new Map<string, Entity>()\n addresses.forEach((address, i) => {\n const nfd = (nfds as Array<Entity<NfdData> | undefined>)[i]?.data ?? undefined\n const data: IdentityData = { address, short: shortAddress(address), nameSource: 'address', nameVerified: false, ...(nfd ? { nfd: nfd.name } : {}) }\n for (const step of order) {\n const p = step === 'nfd' ? (nfd ? { name: nfd.name, avatar: nfd.avatar } : undefined) : byProvider.get(step)?.get(address)\n if (!p) continue\n if (!data.avatar && p.avatar) data.avatar = p.avatar\n if (!data.name && p.name) {\n data.name = p.name\n data.nameSource = step\n data.nameVerified = step === 'nfd'\n }\n }\n const ref = refs[i]!\n out.set(refKey(ref), { kind: 'identity', id: address, network: ctx.network, status: 'live', data, provenance: { source: 'identity', fetchedAt: Date.now() } })\n })\n return out\n },\n }\n}\n","import algosdk from 'algosdk'\nimport { sha256 } from 'js-sha256'\nimport { fromHex, toHex, utf8 } from './chain/bytes'\nimport { readBox } from './akita'\nimport { requestJson, type FetchLike } from './http'\nimport { base32Lower, DEFAULT_IPFS_GATEWAY } from './media'\nimport type { Source, SourceContext } from './sources/types'\nimport { refKey, type Endpoint, type Entity, type Ref } from './types'\n\n/*\n * Contract interfaces: the ARC-56 `ui` extension (icons, labels and call\n * cards declared in the contract source) and the Meta pointer that lets any\n * client find the full ARC-56 file for a deployed app.\n *\n * The publisher pins the ARC-56 JSON to IPFS as a CIDv1 raw sha256 file, so\n * the CID is the hash of the file, and stores the 36 CID bytes in Meta under\n * its own account with the key `akita.iface` + app id. A factory child is\n * described once, under its factory's id by the factory's creator.\n */\n\n// ---------------------------------------------------------------- ui types\n\n/** Any JSON value. */\nexport type UiJson = string | number | boolean | null | UiJson[] | { [key: string]: UiJson | undefined }\n\n/** A value read for a card, resolved like an ARC-56 `DefaultValue`. */\nexport type UiSource =\n | { source: 'global' | 'local' | 'box' | 'method'; data: string }\n | { arg: string }\n | { const: UiJson }\n\nexport type UiInputKind = 'amount' | 'count' | 'asset' | 'address' | 'text' | 'choice' | 'toggle'\n\nexport interface UiInput {\n input: UiInputKind\n label?: string\n min?: number\n max?: number\n options?: { label: string; value: UiJson }[]\n asset?: UiSource\n [key: string]: UiJson | UiSource | undefined\n}\n\nexport type UiArgBinding = 'ref' | 'sender' | 'wallet' | 'rekeyBack' | UiSource | UiInput\n\nexport type UiAmount = UiSource | { add: UiAmount[] } | { mul: UiAmount[] }\n\nexport type UiFormat = 'amount' | 'time' | 'duration' | 'address' | 'asset' | 'text'\n\nexport interface UiCard {\n show?: { label: string; from: UiSource; format?: UiFormat }[]\n bind?: Record<string, UiArgBinding>\n pay?: { amount: UiAmount; asset?: UiSource; receiver?: UiSource }\n enabled?: { before?: UiSource; after?: UiSource }\n confirm?: string\n}\n\nexport interface MethodUi {\n action?: string\n glyph?: string\n label?: string\n card?: UiCard\n}\n\nexport interface ContractUi {\n v?: number\n glyph?: string\n svg?: string\n color?: string\n defaultAction?: string\n}\n\n/** The parts of an ARC-56 app spec this module reads. */\nexport interface Arc56Like {\n name: string\n arcs?: number[]\n ui?: ContractUi\n methods: Array<{\n name: string\n desc?: string\n args: Array<{ type: string; name?: string; desc?: string; defaultValue?: unknown }>\n returns: { type: string }\n readonly?: boolean\n ui?: MethodUi\n }>\n}\n\n// ---------------------------------------------------------------- interface\n\nexport interface InterfaceMethod {\n name: string\n signature: string\n /** 4-byte ABI selector, hex. */\n selector: string\n args: Arc56Like['methods'][number]['args']\n readonly: boolean\n ui?: MethodUi\n}\n\nexport interface ContractInterface {\n name: string\n ui?: ContractUi\n methods: InterfaceMethod[]\n /** The full ARC-56 spec, for clients that build calls. */\n spec: Arc56Like\n}\n\nexport function interfaceFromArc56(spec: Arc56Like): ContractInterface {\n return {\n name: spec.name,\n ...(isObject(spec.ui) ? { ui: spec.ui } : {}),\n methods: spec.methods.map((m) => {\n const signature = `${m.name}(${m.args.map((a) => a.type).join(',')})${m.returns.type}`\n return {\n name: m.name,\n signature,\n selector: toHex(algosdk.ABIMethod.fromSignature(signature).getSelector()),\n args: m.args,\n readonly: m.readonly ?? false,\n ...(isObject(m.ui) ? { ui: m.ui } : {}),\n }\n }),\n spec,\n }\n}\n\nexport interface InterfaceAction {\n /** Stable action name, e.g. `raffle_enter`. Hosts map it to their own icon and wording. */\n action?: string\n glyph?: string\n label?: string\n /** The contract's own icon and color, when it declares them. */\n svg?: string\n color?: string\n /** The method the action came from. Absent when it came from the contract's `defaultAction`. */\n method?: InterfaceMethod\n}\n\n/**\n * The action to show for a call. Looks the method up by selector (hex or\n * bytes) or name, and falls back to the contract's `defaultAction` and glyph.\n */\nexport function interfaceAction(iface: ContractInterface, call: { selector?: string | Uint8Array; method?: string } = {}): InterfaceAction | undefined {\n const selector = call.selector instanceof Uint8Array ? toHex(call.selector) : call.selector?.toLowerCase().replace(/^0x/, '')\n const method = selector\n ? iface.methods.find((m) => m.selector === selector)\n : call.method\n ? iface.methods.find((m) => m.name === call.method || m.signature === call.method)\n : undefined\n const c = iface.ui ?? {}\n const look = { ...(c.svg ? { svg: c.svg } : {}), ...(c.color ? { color: c.color } : {}) }\n if (method?.ui && (method.ui.action || method.ui.glyph || method.ui.label)) {\n return { action: method.ui.action, glyph: method.ui.glyph ?? c.glyph, label: method.ui.label, ...look, method }\n }\n if (c.defaultAction || c.glyph || c.svg) {\n const fallback = c.defaultAction ? iface.methods.find((m) => m.ui?.action === c.defaultAction) : undefined\n return { action: c.defaultAction, glyph: fallback?.ui?.glyph ?? c.glyph, label: fallback?.ui?.label, ...look }\n }\n return undefined\n}\n\n/** Methods that declare a card, i.e. that a client can offer as a form. */\nexport function interfaceCards(iface: ContractInterface): InterfaceMethod[] {\n return iface.methods.filter((m) => isObject(m.ui?.card))\n}\n\n// ---------------------------------------------------------------- CID\n\nconst CID_PREFIX = [0x01, 0x55, 0x12, 0x20] // CIDv1, raw, sha2-256, 32 bytes\n\n/** The CIDv1 raw sha256 of a file: the bytes Meta stores. */\nexport function cidForFile(file: Uint8Array): Uint8Array {\n return new Uint8Array([...CID_PREFIX, ...fromHex(sha256(file))])\n}\n\n/** `b…` base32 text form of CID bytes. */\nexport function cidToString(cid: Uint8Array): string {\n return `b${base32Lower(cid)}`\n}\n\n/** True when `cid` is a CIDv1 raw sha256 whose digest is the hash of `file`. */\nexport function verifyCid(cid: Uint8Array, file: Uint8Array): boolean {\n if (cid.length !== 36 || CID_PREFIX.some((b, i) => cid[i] !== b)) return false\n return toHex(cid.subarray(4)) === sha256(file)\n}\n\n// ---------------------------------------------------------------- Meta pointer\n\nexport const INTERFACE_NAMESPACE = 'akita.iface'\nconst META_RECORD_PREFIX = 0x6d // 'm'\n\nconst ascii = (s: string) => new Uint8Array([...s].map((c) => c.charCodeAt(0)))\n\n/** Meta record key: the namespace length, the namespace, then the key. */\nexport function metaRecordKey(namespace: string, key: string): Uint8Array {\n return new Uint8Array([namespace.length, ...ascii(namespace), ...ascii(key)])\n}\n\n/** Box name of a Meta record owned by `owner`. */\nexport function metaRecordBoxName(owner: string, key: Uint8Array): Uint8Array {\n return new Uint8Array([META_RECORD_PREFIX, ...algosdk.decodeAddress(owner).publicKey, ...key])\n}\n\n/** Decodes a Meta record box value, ARC-4 `(uint64 revision, byte[] data)`. */\nexport function decodeMetaRecord(value: Uint8Array): { revision: bigint; data: Uint8Array } | undefined {\n if (value.length < 12) return undefined\n const view = new DataView(value.buffer, value.byteOffset, value.byteLength)\n const offset = view.getUint16(8)\n if (offset + 2 > value.length) return undefined\n const length = view.getUint16(offset)\n if (offset + 2 + length > value.length) return undefined\n return { revision: view.getBigUint64(0), data: value.slice(offset + 2, offset + 2 + length) }\n}\n\n/** The CID `owner` published in Meta for `subject` (an app id), if any. */\nexport async function readInterfacePointer(\n fetchFn: FetchLike,\n algod: Endpoint,\n metaAppId: number,\n owner: string,\n subject: number | string,\n): Promise<Uint8Array | undefined> {\n const box = await readBox(fetchFn, algod, metaAppId, metaRecordBoxName(owner, metaRecordKey(INTERFACE_NAMESPACE, String(subject))))\n const data = box ? decodeMetaRecord(box)?.data : undefined\n return data && data.length === 36 ? data : undefined\n}\n\n/** Fetches a file by CID through the gateways in order and returns it only if it matches the CID. */\nexport async function fetchByCid(fetchFn: FetchLike, cid: Uint8Array, gateways: string[] = [DEFAULT_IPFS_GATEWAY]): Promise<Uint8Array | undefined> {\n const name = cidToString(cid)\n for (const gateway of gateways) {\n try {\n const res = await fetchFn(`${gateway.replace(/\\/?$/, '/')}${name}`)\n if (!res.ok) continue\n const bytes = new Uint8Array(await res.arrayBuffer())\n if (verifyCid(cid, bytes)) return bytes\n } catch {\n // Try the next gateway.\n }\n }\n return undefined\n}\n\n// ---------------------------------------------------------------- source\n\nexport interface InterfaceOptions {\n /** Algod used to find the app's creator and to read Meta. */\n algod?: Endpoint\n /** Meta app id. Without it only bundled interfaces are used. */\n metaAppId?: number\n /** Accounts trusted to publish for any app, tried before the creator, e.g. the DAO. */\n publishers?: string[]\n /** Factory app ids. A child of one of these uses the factory's interface. */\n factories?: number[]\n /** Interfaces shipped with the host, keyed by app id (a factory id covers its children). */\n bundled?: Record<string, Arc56Like>\n /** IPFS gateways, tried in order. */\n ipfsGateways?: string[]\n}\n\nexport interface InterfaceData extends ContractInterface {\n appId: string\n /** The app id the interface was published for: the app itself, or its factory. */\n subject: string\n origin: 'bundled' | 'meta'\n /** Account whose Meta record pointed at the file. */\n publisher?: string\n /** CID of the verified file. */\n cid?: string\n}\n\ninterface AlgodApp {\n params?: { creator?: string }\n}\n\nexport function createInterfaceSource(options: InterfaceOptions): Source {\n const factoryByAddress = new Map((options.factories ?? []).map((id) => [algosdk.getApplicationAddress(id).toString(), id]))\n const gateways = options.ipfsGateways ?? [DEFAULT_IPFS_GATEWAY]\n const creatorOf = async (fetchFn: FetchLike, appId: number | string) =>\n options.algod ? (await requestJson<AlgodApp>(fetchFn, options.algod, `/v2/applications/${appId}`))?.params?.creator : undefined\n\n return {\n name: 'interface',\n maxBatch: 1,\n concurrency: 4,\n supports: (kind) => kind === 'interface',\n async fetch(refs: Ref[], ctx: SourceContext) {\n const out = new Map<string, Entity>()\n const ref = refs[0]\n if (!ref) return out\n const done = (data: Omit<InterfaceData, 'appId'>) =>\n out.set(refKey(ref), {\n kind: 'interface',\n id: ref.id,\n network: ctx.network,\n status: 'live',\n data: { appId: ref.id, ...data },\n provenance: { source: data.origin, fetchedAt: Date.now() },\n })\n\n const own = options.bundled?.[ref.id]\n if (own) return done({ ...interfaceFromArc56(own), subject: ref.id, origin: 'bundled' }), out\n\n const creator = await creatorOf(ctx.fetch, ref.id)\n if (!creator) return out\n const factory = factoryByAddress.get(creator)\n const subject = factory !== undefined ? String(factory) : ref.id\n const bundled = options.bundled?.[subject]\n if (bundled) return done({ ...interfaceFromArc56(bundled), subject, origin: 'bundled' }), out\n if (!options.metaAppId || !options.algod) return out\n\n const publisher = factory !== undefined ? await creatorOf(ctx.fetch, factory) : creator\n const owners = [...new Set([...(options.publishers ?? []), ...(publisher ? [publisher] : [])])]\n for (const owner of owners) {\n const cid = await readInterfacePointer(ctx.fetch, options.algod, options.metaAppId, owner, subject)\n if (!cid) continue\n const file = await fetchByCid(ctx.fetch, cid, gateways)\n const spec = file ? safeSpec(utf8(file)) : undefined\n if (!spec) continue\n return done({ ...interfaceFromArc56(spec), subject, origin: 'meta', publisher: owner, cid: cidToString(cid) }), out\n }\n return out\n },\n }\n}\n\n// ---------------------------------------------------------------- helpers\n\nfunction isObject(v: unknown): v is Record<string, unknown> {\n return typeof v === 'object' && v !== null && !Array.isArray(v)\n}\n\nfunction safeSpec(text: string): Arc56Like | undefined {\n try {\n const json = JSON.parse(text) as unknown\n return isObject(json) && typeof json.name === 'string' && Array.isArray(json.methods) ? (json as unknown as Arc56Like) : undefined\n } catch {\n return undefined\n }\n}\n","/**\n * Akita factory app ids per network, from akita-sdk `networks.ts`. Archived\n * claims for these kinds are only accepted when the app was created by one of\n * these factories. Hosts deploying their own contracts pass their own ids.\n */\nexport const AKITA_FACTORIES: Record<string, Record<string, number[]>> = {\n mainnet: {\n listing: [3569557584],\n auction: [3569557408],\n raffle: [3569557743],\n poll: [3569557932],\n 'prize-box': [3569557972],\n 'staking-pool': [3569556570],\n },\n testnet: {\n listing: [763128381],\n auction: [763128353],\n raffle: [763128404],\n poll: [763128430],\n 'prize-box': [763128434],\n 'staking-pool': [763128285],\n },\n}\n\nexport const PUBLIC_ENDPOINTS: Record<string, { algod: string; indexer: string }> = {\n mainnet: { algod: 'https://mainnet-api.4160.nodely.dev', indexer: 'https://mainnet-idx.4160.nodely.dev' },\n testnet: { algod: 'https://testnet-api.4160.nodely.dev', indexer: 'https://testnet-idx.4160.nodely.dev' },\n}\n","import { FAMILIES } from '../archive/families'\nimport type { IndexerAsset, TealKeyValue } from '../chain/indexer-types'\nimport { stateFromTeal } from '../chain/state'\nimport { requestJson } from '../http'\nimport { refKey, type Endpoint, type Entity, type Ref } from '../types'\nimport { accountFromJson, assetFromJson, type ApplicationData } from './chain-data'\nimport { readReward, readStakingPool, readSubscription, readTrade, type SingletonApps } from '../akita'\nimport type { Source, SourceContext } from './types'\n\ninterface AlgodApp {\n id: number\n params: { creator?: string; 'global-state'?: TealKeyValue[] }\n}\n\nconst KINDS = new Set(['account', 'asset', 'application'])\n\n/**\n * Live state from an algod node: accounts, assets, apps, contract global state\n * and the boxes of the singleton apps. Knows nothing about deleted apps.\n */\nexport function createAlgodSource(endpoint: Endpoint, singletons: SingletonApps = {}): Source {\n const singletonKinds: Record<string, number | undefined> = {\n reward: singletons.rewards,\n subscription: singletons.subscriptions,\n trade: singletons.hyperSwap,\n }\n return {\n name: 'algod',\n maxBatch: 1,\n concurrency: 8,\n supports: (kind) => KINDS.has(kind) || kind in FAMILIES || Boolean(singletonKinds[kind]),\n async fetch(refs: Ref[], ctx: SourceContext) {\n const out = new Map<string, Entity>()\n const ref = refs[0]\n if (!ref) return out\n const base = { kind: ref.kind, id: ref.id, network: ctx.network, status: 'live' as const }\n const provenance = { source: 'algod', fetchedAt: Date.now() }\n\n if (ref.kind === 'account') {\n const a = await requestJson<Record<string, unknown>>(ctx.fetch, endpoint, `/v2/accounts/${ref.id}?exclude=all`)\n if (a) out.set(refKey(ref), { ...base, data: accountFromJson(a), provenance: { ...provenance, round: Number(a.round ?? 0) || undefined } })\n return out\n }\n const singleton = singletonKinds[ref.kind]\n if (singleton) {\n const data =\n ref.kind === 'reward'\n ? await readReward(ctx.fetch, endpoint, singleton, ref.id)\n : ref.kind === 'subscription'\n ? await readSubscription(ctx.fetch, endpoint, singleton, ref.id)\n : await readTrade(ctx.fetch, endpoint, singleton, ref.id)\n if (data) out.set(refKey(ref), { ...base, data, provenance })\n return out\n }\n if (ref.kind === 'asset') {\n const a = await requestJson<IndexerAsset>(ctx.fetch, endpoint, `/v2/assets/${ref.id}`)\n if (a) out.set(refKey(ref), { ...base, data: assetFromJson(a), provenance })\n return out\n }\n const app = await requestJson<AlgodApp>(ctx.fetch, endpoint, `/v2/applications/${ref.id}`)\n if (!app) return out\n if (ref.kind === 'application') {\n const data: ApplicationData = { id: ref.id, creator: app.params.creator, deleted: false }\n out.set(refKey(ref), { ...base, data, provenance })\n return out\n }\n if (ref.kind === 'staking-pool') {\n out.set(refKey(ref), { ...base, data: await readStakingPool(ctx.fetch, endpoint, ref.id, app.params['global-state']), provenance })\n return out\n }\n const family = FAMILIES[ref.kind]\n if (family) out.set(refKey(ref), { ...base, data: family.fromState(ref.id, stateFromTeal(app.params['global-state'])), provenance })\n return out\n },\n }\n}\n","import { requestJson } from '../http'\nimport { refKey, type Endpoint, type Entity, type Ref } from '../types'\nimport type { Source, SourceContext } from './types'\n\nexport interface NfdData {\n name: string\n appId?: string\n owner?: string\n depositAccount?: string\n avatar?: string\n /** True when the avatar is set through NFD's verified properties. */\n avatarVerified: boolean\n banner?: string\n /** Addresses the NFD owner has verified as theirs. */\n verifiedAddresses: string[]\n /** `owned`, `forSale`, `available`, `reserved`, `expired`. */\n state?: string\n category?: string\n /** Sale price in microAlgo when the NFD is for sale. */\n sellAmount?: string\n /** Unix seconds when a renewable NFD expires. */\n expires?: number\n}\n\ninterface NfdRecord {\n name: string\n state?: string\n category?: string\n sellAmount?: number\n timeExpires?: string\n appID?: number\n owner?: string\n depositAccount?: string\n caAlgo?: string[]\n properties?: {\n userDefined?: Record<string, string>\n verified?: Record<string, string>\n }\n}\n\nexport const NFD_API: Record<string, string> = {\n mainnet: 'https://api.nf.domains',\n testnet: 'https://api.testnet.nf.domains',\n}\n\n/**\n * NFD returns images through its own resizing gateway. Hand back the plain\n * ipfs:// URL so the host's image proxy sizes and caches it like any other image.\n */\nexport function normalizeNfdImage(url: string | undefined): string | undefined {\n if (!url) return undefined\n const m = url.match(/^https:\\/\\/ipfsgw\\.nf\\.domains\\/ipfs\\/([^?#]+)/)\n return m ? `ipfs://${m[1]}` : url\n}\n\nexport function nfdFromRecord(r: NfdRecord): NfdData {\n const verified = r.properties?.verified ?? {}\n const user = r.properties?.userDefined ?? {}\n return {\n name: r.name,\n appId: r.appID ? String(r.appID) : undefined,\n owner: r.owner,\n depositAccount: r.depositAccount,\n avatar: normalizeNfdImage(verified.avatar || user.avatar),\n avatarVerified: Boolean(verified.avatar),\n banner: normalizeNfdImage(verified.banner || user.banner),\n verifiedAddresses: r.caAlgo ?? [],\n state: r.state,\n category: r.category,\n ...(r.sellAmount ? { sellAmount: String(r.sellAmount) } : {}),\n ...(r.timeExpires ? { expires: Math.floor(Date.parse(r.timeExpires) / 1000) } : {}),\n }\n}\n\n/**\n * NFD API source. `nfd` refs are looked up by name one at a time; `nfd-address`\n * refs are batched, 20 addresses per call.\n */\nexport function createNfdSource(endpoint?: Partial<Endpoint>): Source {\n return {\n name: 'nfd',\n maxBatch: 20,\n concurrency: 4,\n supports: (kind) => kind === 'nfd' || kind === 'nfd-address',\n async fetch(refs: Ref[], ctx: SourceContext) {\n const out = new Map<string, Entity>()\n const ep: Endpoint = { url: endpoint?.url ?? NFD_API[ctx.network] ?? NFD_API.mainnet!, headers: endpoint?.headers }\n const now = Date.now()\n const make = (ref: Ref, data: NfdData | null): Entity => ({\n kind: ref.kind,\n id: ref.id,\n network: ctx.network,\n status: data ? 'live' : 'missing',\n data,\n provenance: { source: 'nfd', fetchedAt: now },\n })\n\n const byName = refs.filter((r) => r.kind === 'nfd')\n await Promise.all(\n byName.map(async (ref) => {\n const r = await requestJson<NfdRecord>(ctx.fetch, ep, `/nfd/${encodeURIComponent(ref.id)}?view=brief&poll=false`)\n out.set(refKey(ref), make(ref, r ? nfdFromRecord(r) : null))\n }),\n )\n\n const byAddress = refs.filter((r) => r.kind === 'nfd-address')\n if (byAddress.length) {\n const qs = byAddress.map((r) => `address=${r.id}`).join('&')\n const res = await requestJson<Record<string, NfdRecord>>(ctx.fetch, ep, `/nfd/lookup?${qs}&view=thumbnail&allowUnverified=false`)\n for (const ref of byAddress) {\n const rec = res?.[ref.id]\n // A missing address means it has no verified NFD. That is a real answer, so it is cached.\n out.set(refKey(ref), make(ref, rec ? nfdFromRecord(rec) : null))\n }\n }\n return out\n },\n }\n}\n","import { requestJson } from '../http'\nimport { refKey, type Endpoint, type Entity, type Ref } from '../types'\nimport type { Source, SourceContext } from './types'\n\ninterface ResolveResponse {\n ok?: boolean\n data?: { entities?: Entity[] }\n}\n\n/**\n * A trusted backend that resolves up to 100 mixed refs per call\n * (`POST /algomd/resolve`). Archived entities it returns are verified against\n * chain history by the client; see docs/DESIGN.md §5.\n */\nexport function createResolverSource(endpoint: Endpoint, options: { kinds?: string[] } = {}): Source {\n const kinds = options.kinds ? new Set(options.kinds) : undefined\n return {\n name: 'resolver',\n maxBatch: 100,\n concurrency: 4,\n supports: (kind) => !kinds || kinds.has(kind),\n async fetch(refs: Ref[], ctx: SourceContext) {\n const res = await requestJson<ResolveResponse>(ctx.fetch, endpoint, '/algomd/resolve', {\n method: 'POST',\n body: { network: ctx.network, refs: refs.map(({ kind, id, params }) => ({ kind, id, ...(params ? { params } : {}) })) },\n })\n const out = new Map<string, Entity>()\n for (const e of res?.data?.entities ?? []) {\n // Only keep what was asked for, and never let the resolver pick the network.\n if (!refs.some((r) => r.kind === e.kind && r.id === e.id)) continue\n out.set(refKey(e), { ...e, network: ctx.network, provenance: { ...e.provenance, fetchedAt: e.provenance?.fetchedAt ?? Date.now() } })\n }\n return out\n },\n }\n}\n","import { verifyArchived } from './archive/verify'\nimport { Batcher } from './batcher'\nimport type { FetchLike } from './http'\nimport { createIdentitySource, type IdentityProvider } from './identity'\nimport { createInterfaceSource, interfaceAction, type Arc56Like, type InterfaceAction, type InterfaceData } from './interfaces'\nimport { createMediaSource } from './media'\nimport type { AssetData } from './sources/chain-data'\nimport { algomdKeys } from './keys'\nimport { defaultRegistry, type KindRegistry } from './kinds'\nimport { policyFor, type CachePolicy } from './policy'\nimport { AKITA_FACTORIES } from './presets'\nimport { AKITA_SINGLETONS, type SingletonApps } from './akita'\nimport { createAlgodSource } from './sources/algod'\nimport { createIndexerSource } from './sources/indexer'\nimport { createNfdSource, type NfdData } from './sources/nfd'\nimport { createResolverSource } from './sources/resolver'\nimport type { Source, SourceContext } from './sources/types'\nimport { refKey, type Endpoint, type Entity, type Network, type Provenance, type Ref } from './types'\n\nexport interface AlgomdConfig {\n network: Network\n algod?: Endpoint\n indexer?: Endpoint\n /** Indexer used to verify archived claims. Defaults to `indexer`. Prefer one the resolver operator does not run. */\n verificationIndexer?: Endpoint\n /** NFD API. Defaults to the public API for the network; `false` turns NFD off. */\n nfd?: Partial<Endpoint> | false\n /** Trusted batch resolver (`POST /algomd/resolve`). */\n resolver?: Endpoint\n /** Host sources. They are tried first for the kinds they support. */\n sources?: Source[]\n /** Host identity steps, such as the Akita social profile. */\n identityProviders?: IdentityProvider[]\n /** Identity step order. Defaults to `['nfd', ...provider names]`. */\n identityOrder?: string[]\n /** Factory app ids per kind. Defaults to the Akita factories for the network. */\n factories?: Record<string, number[]>\n /** Singleton app ids (Rewards, Subscriptions, HyperSwap). Defaults to the Akita deployments for the network. */\n singletons?: SingletonApps\n /**\n * Contract interfaces (ARC-56 `ui`). `metaAppId` turns on the Meta lookup;\n * `publishers` are trusted for every app before its creator, e.g. the DAO;\n * `bundled` are specs the host ships, keyed by app id or factory id.\n */\n interfaces?: { metaAppId?: number; publishers?: string[]; bundled?: Record<string, Arc56Like>; ipfsGateways?: string[] }\n /** IPFS gateway for asset metadata. Defaults to the Akita gateway. */\n ipfsGateway?: string\n /** How archived claims from non-chain sources are checked. Default `background`. */\n verifyArchived?: 'background' | 'blocking' | 'off'\n /** ms to wait to fill a batch. Default 2. */\n batchDelayMs?: number\n fetch?: FetchLike\n registry?: KindRegistry\n}\n\n/** Where loaded entities are cached. The React binding plugs in TanStack Query. */\nexport interface CacheAdapter {\n get(key: readonly unknown[]): Entity | undefined\n set(key: readonly unknown[], entity: Entity): void\n}\n\nexport function memoryCache(): CacheAdapter {\n const map = new Map<string, Entity>()\n return {\n get: (key) => map.get(JSON.stringify(key)),\n set: (key, entity) => void map.set(JSON.stringify(key), entity),\n }\n}\n\nconst CHAIN_SOURCES = new Set(['algod', 'indexer'])\n\nexport interface LoadOptions {\n params?: Record<string, string>\n /** Skip the cache read; used when the cache itself asked for the load. */\n fresh?: boolean\n}\n\nexport class AlgomdClient {\n readonly network: Network\n readonly registry: KindRegistry\n private readonly fetchFn: FetchLike\n private readonly builtIns = new Map<string, Source>()\n private readonly hostSources: Source[]\n private readonly batchers = new Map<string, Batcher<Ref, Entity>>()\n private cache: CacheAdapter = memoryCache()\n private readonly verifying = new Map<string, Promise<Entity>>()\n\n constructor(readonly config: AlgomdConfig) {\n this.network = config.network\n this.registry = config.registry ?? defaultRegistry\n this.fetchFn = config.fetch ?? ((input, init) => fetch(input, init))\n this.hostSources = config.sources ?? []\n if (config.resolver) this.builtIns.set('resolver', createResolverSource(config.resolver))\n if (config.algod) this.builtIns.set('algod', createAlgodSource(config.algod, config.singletons ?? AKITA_SINGLETONS[config.network] ?? {}))\n if (config.indexer) this.builtIns.set('indexer', createIndexerSource(config.indexer))\n if (config.nfd !== false) this.builtIns.set('nfd', createNfdSource(config.nfd || undefined))\n this.builtIns.set(\n 'media',\n createMediaSource((id) => this.load('asset', id) as Promise<Entity<AssetData>>, { ipfsGateway: config.ipfsGateway, indexer: config.indexer }),\n )\n if (config.algod || config.interfaces?.bundled) {\n const factories = Object.values(config.factories ?? AKITA_FACTORIES[config.network] ?? {}).flat()\n this.builtIns.set(\n 'interface',\n createInterfaceSource({\n ...config.interfaces,\n algod: config.algod,\n factories,\n ipfsGateways: config.interfaces?.ipfsGateways ?? (config.ipfsGateway ? [config.ipfsGateway] : undefined),\n }),\n )\n }\n const providers = config.identityProviders ?? []\n this.builtIns.set(\n 'identity',\n createIdentitySource(\n (address) => this.load('nfd-address', address) as Promise<Entity<NfdData>>,\n providers,\n config.identityOrder ?? ['nfd', ...providers.map((p) => p.name)],\n ),\n )\n }\n\n /** Plugs in the shared cache. The React provider calls this with the host's QueryClient. */\n setCache(cache: CacheAdapter): void {\n this.cache = cache\n }\n\n key(kind: string, id: string) {\n return algomdKeys.entity(this.network, kind, id)\n }\n\n policy(kind: string, entity?: Entity | null): CachePolicy {\n return policyFor(this.registry.get(kind)?.policy ?? 'slow', entity)\n }\n\n /** Normalizes an id for a kind, or undefined if it is not a valid id. */\n normalizeId(kind: string, id: string): string | undefined {\n const def = this.registry.get(kind)\n return def?.normalizeId ? def.normalizeId(id) : id\n }\n\n private context(): SourceContext {\n return { network: this.network, fetch: this.fetchFn, registry: this.registry }\n }\n\n private sourcesFor(kind: string): Source[] {\n const def = this.registry.require(kind)\n const host = this.hostSources.filter((s) => s.supports(kind))\n const builtIn = def.sources.map((n) => this.builtIns.get(n)).filter((s): s is Source => Boolean(s) && s!.supports(kind))\n return [...host, ...builtIn]\n }\n\n private batcher(source: Source): Batcher<Ref, Entity> {\n let b = this.batchers.get(source.name)\n if (!b) {\n b = new Batcher((refs) => source.fetch(refs, this.context()), {\n maxBatch: source.maxBatch,\n concurrency: source.concurrency,\n delayMs: this.config.batchDelayMs,\n keyOf: refKey,\n })\n this.batchers.set(source.name, b)\n }\n return b\n }\n\n private missing(kind: string, id: string): Entity {\n return { kind, id, network: this.network, status: 'missing', data: null, provenance: { source: 'none', fetchedAt: Date.now() } }\n }\n\n private isFresh(entity: Entity): boolean {\n return Date.now() - entity.provenance.fetchedAt < this.policy(entity.kind, entity).staleTime\n }\n\n /**\n * Loads one entity: cache, then each source in order. Batched and\n * de-duplicated across every caller in the same tick.\n */\n async load(kind: string, rawId: string, options: LoadOptions = {}): Promise<Entity> {\n const id = this.normalizeId(kind, rawId)\n if (!id) return this.missing(kind, rawId)\n const key = this.key(kind, id)\n if (!options.fresh) {\n const cached = this.cache.get(key)\n if (cached && this.isFresh(cached)) return cached\n }\n\n const ref: Ref = { kind, id, ...(options.params ? { params: options.params } : {}) }\n let found: Entity | undefined\n let missing: Entity | undefined\n let lastError: unknown\n for (const source of this.sourcesFor(kind)) {\n try {\n const e = await this.batcher(source).load(ref)\n if (e && e.status !== 'missing') {\n found = e\n break\n }\n missing ??= e\n } catch (error) {\n lastError = error\n }\n }\n if (!found) {\n if (!missing && lastError) throw lastError\n found = missing ?? this.missing(kind, id)\n }\n found = await this.afterLoad(found)\n if (!options.fresh) this.cache.set(key, found)\n return found\n }\n\n /**\n * The action to show for a call to `appId`: its method's declared action,\n * glyph and label, or the contract's default. Undefined when the app\n * declares no interface.\n */\n async actionFor(appId: number | string, call: { selector?: string | Uint8Array; method?: string } = {}): Promise<InterfaceAction | undefined> {\n const entity = (await this.load('interface', String(appId)).catch(() => undefined)) as Entity<InterfaceData> | undefined\n return entity?.data ? interfaceAction(entity.data, call) : undefined\n }\n\n loadMany(refs: Ref[]): Promise<Entity[]> {\n return Promise.all(refs.map((r) => this.load(r.kind, r.id, { params: r.params })))\n }\n\n private async afterLoad(entity: Entity): Promise<Entity> {\n const mode = this.config.verifyArchived ?? 'background'\n const needsCheck =\n entity.status === 'archived' && !CHAIN_SOURCES.has(entity.provenance.source) && entity.verification?.state !== 'verified'\n if (!needsCheck || mode === 'off') return entity\n const unverified: Entity = { ...entity, verification: entity.verification ?? { state: 'unverified', checkedAt: Date.now() } }\n if (mode === 'blocking') return this.verify(unverified)\n void this.verify(unverified).then(\n (checked) => this.cache.set(this.key(checked.kind, checked.id), checked),\n () => undefined,\n )\n return unverified\n }\n\n /** Checks an archived entity against chain history (docs/DESIGN.md §5). One check per entity at a time. */\n verify(entity: Entity): Promise<Entity> {\n const indexer = this.config.verificationIndexer ?? this.config.indexer\n if (!indexer) return Promise.resolve({ ...entity, verification: { state: 'unverified', checkedAt: Date.now(), detail: 'No indexer configured' } })\n const k = refKey(entity)\n let p = this.verifying.get(k)\n if (!p) {\n const factories = (this.config.factories ?? AKITA_FACTORIES[this.network] ?? {})[entity.kind]\n p = verifyArchived(entity, { fetch: this.fetchFn, indexer, factories }).finally(() => this.verifying.delete(k))\n this.verifying.set(k, p)\n }\n return p\n }\n\n /**\n * Writes data the host already has into the shared cache, so no source is\n * asked for it. Only the host operator primes; content never does.\n */\n prime<T>(kind: string, id: string, data: T, provenance: Partial<Provenance> = {}, status: Entity['status'] = 'live'): Entity<T> {\n const entity: Entity<T> = {\n kind,\n id,\n network: this.network,\n status,\n data,\n provenance: { source: 'primed', fetchedAt: Date.now(), ...provenance },\n }\n this.cache.set(this.key(kind, id), entity)\n return entity\n }\n\n /** Seeds the cache with entities from a pre-resolved payload (feed response, SSR). */\n hydrate(entities: Entity[]): void {\n for (const e of entities) {\n if (e.network !== this.network) continue\n const id = this.normalizeId(e.kind, e.id)\n if (!id) continue\n void this.afterLoad({ ...e, id }).then((checked) => this.cache.set(this.key(e.kind, id), checked))\n }\n }\n}\n\nexport function createAlgomdClient(config: AlgomdConfig): AlgomdClient {\n return new AlgomdClient(config)\n}\n"],"mappings":"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","names":["import_algosdk","import_algosdk","algosdk","contract","field","import_algosdk","algosdk","algosdk","str","nowSec","algosdk","field","address","address","import_algosdk","import_js_sha256","algosdk","KINDS","address"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/types.ts","../src/keys.ts","../src/policy.ts","../src/batcher.ts","../src/http.ts","../src/kinds.ts","../src/grammar.ts","../src/archive/verify.ts","../src/chain/bytes.ts","../src/akita.ts","../src/chain/state.ts","../src/contracts/decode.ts","../src/contracts/schemas.generated.ts","../src/media.ts","../src/archive/history.ts","../src/archive/families.ts","../src/sources/chain-data.ts","../src/sources/indexer.ts","../src/format.ts","../src/identity.ts","../src/interfaces.ts","../src/presets.ts","../src/guild.ts","../src/sources/algod.ts","../src/sources/nfd.ts","../src/sources/resolver.ts","../src/client.ts"],"sourcesContent":["export * from './types'\nexport { algomdKeys, isAlgomdKey, type AlgomdEntityKey } from './keys'\nexport { POLICIES, policyFor, type CachePolicy, type PolicyName } from './policy'\nexport { Batcher, type BatcherOptions } from './batcher'\nexport { HttpError, requestJson, type FetchLike } from './http'\nexport { BUILT_IN_KINDS, KindRegistry, defaultRegistry, type KindDef } from './kinds'\nexport {\n parseContent,\n parseProps,\n extractRefs,\n hasRefs,\n refFromTag,\n serializeRef,\n sizeFromProps,\n type Segment,\n type RefSegment,\n type TextSegment,\n} from './grammar'\nexport { AlgomdClient, createAlgomdClient, memoryCache, type AlgomdConfig, type CacheAdapter, type LoadOptions } from './client'\nexport { createAlgodSource } from './sources/algod'\nexport { createIndexerSource, fetchAppHistory } from './sources/indexer'\nexport { createNfdSource, nfdFromRecord, NFD_API, type NfdData } from './sources/nfd'\nexport { createResolverSource } from './sources/resolver'\nexport type { Source, SourceContext } from './sources/types'\nexport type { AccountData, ApplicationData, AssetData, CollectionData } from './sources/chain-data'\nexport { createIdentitySource, type IdentityData, type IdentityProfile, type IdentityProvider } from './identity'\nexport { createMediaSource, resolveArc19, ipfsToGateway, DEFAULT_IPFS_GATEWAY, type AssetMediaData, type MediaStandard, type MediaOptions } from './media'\nexport {\n createInterfaceSource,\n interfaceFromArc56,\n interfaceAction,\n interfaceCards,\n cidForFile,\n cidToString,\n verifyCid,\n fetchByCid,\n metaRecordKey,\n metaRecordBoxName,\n decodeMetaRecord,\n readInterfacePointer,\n INTERFACE_NAMESPACE,\n type Arc56Like,\n type ContractInterface,\n type ContractUi,\n type InterfaceAction,\n type InterfaceData,\n type InterfaceMethod,\n type InterfaceOptions,\n type MethodUi,\n type UiAmount,\n type UiArgBinding,\n type UiCard,\n type UiFormat,\n type UiInput,\n type UiInputKind,\n type UiJson,\n type UiSource,\n} from './interfaces'\nexport { shortAddress, formatAmount, formatAlgo, formatDuration, formatRelativeTime, type AmountFormatOptions } from './format'\nexport { AKITA_FACTORIES, PUBLIC_ENDPOINTS } from './presets'\nexport {\n AKITA_SINGLETONS,\n readBox,\n listBoxNames,\n readReward,\n readSubscription,\n readTrade,\n readStakingPool,\n splitSubscriptionId,\n stakingPoolFromDecoded,\n type SingletonApps,\n type StakingPoolData,\n type StakingPoolReward,\n type RewardData,\n type SubscriptionData,\n type TradeData,\n type TradeLeg,\n type DualStakeData,\n type PrivateContentData,\n} from './akita'\nexport {\n GUILD_ZERO_ADDRESS,\n formatGuildPercent,\n guildBallotOutcome,\n guildProposalStatusLabel,\n guildRequirementsText,\n readGuildProposal,\n splitGuildProposalId,\n summarizeGuildActions,\n type GuildBallotData,\n type GuildProposalAction,\n type GuildProposalData,\n type GuildProposalStatus,\n} from './guild'\nexport {\n FAMILIES,\n reduceListing,\n reduceAuction,\n reduceRaffle,\n reducePoll,\n reducePrizeBox,\n type ContractFamily,\n type ListingData,\n type AuctionData,\n type AuctionBid,\n type RaffleData,\n type RaffleEntry,\n type PollData,\n type PrizeBoxData,\n} from './archive/families'\nexport { collectAppCalls, replay, type AppCall, type AppHistory } from './archive/history'\nexport { verifyArchived, type VerifyOptions } from './archive/verify'\nexport { decodeGlobalState, decodeArgs, decodeEvents, methodForSelector, boxName, boxPrefix, decodeBoxValue, decodeBoxKey, type Decoded, type DecodedEvent } from './contracts/decode'\nexport { CONTRACT_SCHEMAS, type ContractName } from './contracts/schemas.generated'\nexport { stateFromTeal, applyDelta, type RawState } from './chain/state'\nexport { fromBase64, toBase64, fromHex, toHex, utf8 } from './chain/bytes'\nexport type * from './chain/indexer-types'\n","export type Network = 'mainnet' | 'testnet' | 'localnet' | (string & {})\n\n/** Display size of a reference. See docs/DESIGN.md §2. */\nexport type Size = 'inline' | 'small' | 'large' | 'full'\n\nexport type EntityStatus = 'live' | 'archived' | 'missing'\n\nexport interface Ref {\n kind: string\n id: string\n /** Kind-declared extra identifiers, e.g. a trade offer's offer id. Never display data. */\n params?: Record<string, string>\n}\n\nexport interface Provenance {\n /** Which source produced the data: `algod`, `indexer`, `resolver`, `nfd`, `host`, `primed`. */\n source: string\n /** Chain round the data reflects, when known. */\n round?: number\n fetchedAt: number\n}\n\nexport interface Evidence {\n appId: number\n factoryAppId?: number\n createdRound?: number\n deletedRound?: number\n deleteTxId?: string\n}\n\nexport interface Verification {\n state: 'verified' | 'mismatch' | 'unverified'\n checkedAt: number\n /** Fields whose claimed value differed from the chain-derived value. */\n mismatches?: string[]\n detail?: string\n}\n\nexport interface Entity<T = unknown> {\n kind: string\n id: string\n network: Network\n status: EntityStatus\n data: T | null\n provenance: Provenance\n evidence?: Evidence\n verification?: Verification\n}\n\nexport interface Endpoint {\n url: string\n token?: string\n headers?: Record<string, string>\n}\n\nexport const refKey = (ref: Pick<Ref, 'kind' | 'id'>): string => `${ref.kind}:${ref.id}`\n","import type { Network } from './types'\n\n/**\n * The one query-key factory for AlgoMD data. Hosts use it too, so the app and\n * the library share cache entries. The network is always part of the key.\n */\nexport const algomdKeys = {\n all: ['algomd'] as const,\n network: (network: Network) => ['algomd', network] as const,\n kind: (network: Network, kind: string) => ['algomd', network, kind] as const,\n entity: (network: Network, kind: string, id: string) => ['algomd', network, kind, id] as const,\n}\n\nexport type AlgomdEntityKey = ReturnType<typeof algomdKeys.entity>\n\nexport function isAlgomdKey(key: readonly unknown[]): key is AlgomdEntityKey {\n return key[0] === 'algomd' && key.length === 4\n}\n","import type { Entity } from './types'\n\nexport type PolicyName = 'immutable' | 'slow' | 'live'\n\nexport interface CachePolicy {\n name: PolicyName\n /** ms; Infinity means never stale. */\n staleTime: number\n /** ms an unused entry stays in memory. */\n gcTime: number\n /** Whether hosts should write the entry to disk. */\n persist: boolean\n /** ms between refetches while the reference is visible; false for none. */\n refetchInterval: number | false\n}\n\nconst HOUR = 3_600_000\n\nexport const POLICIES: Record<PolicyName, CachePolicy> = {\n immutable: { name: 'immutable', staleTime: Infinity, gcTime: 24 * HOUR, persist: true, refetchInterval: false },\n slow: { name: 'slow', staleTime: 6 * HOUR, gcTime: 24 * HOUR, persist: true, refetchInterval: false },\n live: { name: 'live', staleTime: 30_000, gcTime: 10 * 60_000, persist: false, refetchInterval: 30_000 },\n}\n\n/**\n * The policy for an entity. An archived entity is final, so it is immutable\n * whatever its kind's default is. A missing entity is retried like live data.\n */\nexport function policyFor(defaultPolicy: PolicyName, entity?: Entity | null): CachePolicy {\n if (entity?.status === 'archived') return POLICIES.immutable\n if (entity?.status === 'missing') return POLICIES.live\n return POLICIES[defaultPolicy]\n}\n","export interface BatcherOptions<K> {\n /** Most keys per call to `run`. */\n maxBatch: number\n /** Calls to `run` allowed in flight at once. */\n concurrency?: number\n /** ms to wait for more keys before flushing. */\n delayMs?: number\n keyOf: (key: K) => string\n}\n\ninterface Pending<V> {\n promise: Promise<V | undefined>\n resolve: (value: V | undefined) => void\n reject: (error: unknown) => void\n}\n\n/**\n * Collects keys requested close together into batched calls, and shares one\n * promise per key while it is pending or in flight.\n */\nexport class Batcher<K, V> {\n private queue = new Map<string, { key: K; pending: Pending<V> }>()\n private inFlight = new Map<string, Promise<V | undefined>>()\n private timer: ReturnType<typeof setTimeout> | null = null\n private active = 0\n private waiting: Array<() => void> = []\n\n constructor(\n private readonly run: (keys: K[]) => Promise<Map<string, V>>,\n private readonly options: BatcherOptions<K>,\n ) {}\n\n load(key: K): Promise<V | undefined> {\n const id = this.options.keyOf(key)\n const existing = this.queue.get(id)?.pending.promise ?? this.inFlight.get(id)\n if (existing) return existing\n\n let resolve!: (value: V | undefined) => void\n let reject!: (error: unknown) => void\n const promise = new Promise<V | undefined>((res, rej) => {\n resolve = res\n reject = rej\n })\n this.queue.set(id, { key, pending: { promise, resolve, reject } })\n if (this.queue.size >= this.options.maxBatch) this.flush()\n else this.timer ??= setTimeout(() => this.flush(), this.options.delayMs ?? 2)\n return promise\n }\n\n private flush(): void {\n if (this.timer) clearTimeout(this.timer)\n this.timer = null\n const entries = [...this.queue.entries()]\n this.queue.clear()\n for (let i = 0; i < entries.length; i += this.options.maxBatch) {\n void this.dispatch(entries.slice(i, i + this.options.maxBatch))\n }\n }\n\n private async dispatch(chunk: Array<[string, { key: K; pending: Pending<V> }]>): Promise<void> {\n for (const [id, { pending }] of chunk) this.inFlight.set(id, pending.promise)\n await this.acquire()\n try {\n const results = await this.run(chunk.map(([, item]) => item.key))\n for (const [id, { pending }] of chunk) pending.resolve(results.get(id))\n } catch (error) {\n for (const [, { pending }] of chunk) pending.reject(error)\n } finally {\n for (const [id] of chunk) this.inFlight.delete(id)\n this.release()\n }\n }\n\n private acquire(): Promise<void> {\n const limit = this.options.concurrency ?? 6\n if (this.active < limit) {\n this.active++\n return Promise.resolve()\n }\n return new Promise((resolve) => this.waiting.push(() => { this.active++; resolve() }))\n }\n\n private release(): void {\n this.active--\n this.waiting.shift()?.()\n }\n}\n","import type { Endpoint } from './types'\n\nexport class HttpError extends Error {\n constructor(\n readonly status: number,\n readonly url: string,\n message?: string,\n ) {\n super(message ?? `HTTP ${status} for ${url}`)\n this.name = 'HttpError'\n }\n}\n\nexport type FetchLike = (input: string, init?: RequestInit) => Promise<Response>\n\nexport interface RequestOptions {\n method?: 'GET' | 'POST'\n body?: unknown\n timeoutMs?: number\n}\n\nfunction joinUrl(base: string, path: string): string {\n return `${base.replace(/\\/+$/, '')}/${path.replace(/^\\/+/, '')}`\n}\n\n/** JSON request against an endpoint. Returns `undefined` on 404. */\nexport async function requestJson<T>(\n fetchFn: FetchLike,\n endpoint: Endpoint,\n path: string,\n options: RequestOptions = {},\n): Promise<T | undefined> {\n const url = joinUrl(endpoint.url, path)\n const headers: Record<string, string> = { accept: 'application/json', ...endpoint.headers }\n if (endpoint.token) headers['X-Algo-API-Token'] = endpoint.token\n if (options.body !== undefined) headers['content-type'] = 'application/json'\n\n const controller = new AbortController()\n const timer = setTimeout(() => controller.abort(), options.timeoutMs ?? 15_000)\n try {\n const res = await fetchFn(url, {\n method: options.method ?? (options.body === undefined ? 'GET' : 'POST'),\n headers,\n body: options.body === undefined ? undefined : JSON.stringify(options.body),\n signal: controller.signal,\n })\n if (res.status === 404) return undefined\n if (!res.ok) throw new HttpError(res.status, url, await res.text().catch(() => undefined))\n return (await res.json()) as T\n } finally {\n clearTimeout(timer)\n }\n}\n","import type { PolicyName } from './policy'\n\nexport interface KindDef {\n kind: string\n /** Tag names that store this kind in content. The first one is used when serializing. */\n tags: string[]\n /** Props that carry the id, in priority order. The first is used when serializing. */\n idProps: string[]\n /** Extra identifying props kept on the ref (never display data). */\n params?: string[]\n policy: PolicyName\n /** Source names to try, in order. Sources not configured on the client are skipped. */\n sources: string[]\n /** Contract family for chain sources (live state and archive reconstruction). */\n family?: string\n normalizeId?: (id: string) => string | undefined\n /** Builds the cache id from the tag id and params, for kinds keyed by more than one value. */\n composeId?: (id: string, params: Record<string, string>) => string\n /** Inverse of composeId, used when serializing a ref back to a tag. */\n decomposeId?: (id: string) => { id: string; params: Record<string, string> }\n}\n\nconst uint = (id: string) => (/^\\d+$/.test(id.trim()) ? String(BigInt(id.trim())) : undefined)\nconst address = (id: string) => (/^[A-Z2-7]{58}$/.test(id.trim()) ? id.trim() : undefined)\nconst nfdName = (id: string) => {\n const n = id.trim().toLowerCase()\n if (!n) return undefined\n return n.endsWith('.algo') ? n : `${n}.algo`\n}\nconst txid = (id: string) => (/^[A-Z2-7]{52}$/.test(id.trim()) ? id.trim() : undefined)\nconst any = (id: string) => (id.trim() ? id.trim() : undefined)\n\nconst contract = (kind: string, tag: string, family: string): KindDef => ({\n kind,\n tags: [tag],\n idProps: ['appId', 'id'],\n policy: 'live',\n sources: ['resolver', 'algod', 'indexer'],\n family,\n normalizeId: uint,\n})\n\nconst hosted = (kind: string, tag: string, idProps: string[], policy: PolicyName, extra: Partial<KindDef> = {}): KindDef => ({\n kind,\n tags: [tag],\n idProps,\n policy,\n sources: ['resolver'],\n normalizeId: any,\n ...extra,\n})\n\nexport const BUILT_IN_KINDS: KindDef[] = [\n { kind: 'account', tags: ['Account'], idProps: ['address', 'id'], policy: 'live', sources: ['algod', 'indexer'], normalizeId: address },\n { kind: 'identity', tags: [], idProps: ['address'], policy: 'slow', sources: ['identity'], normalizeId: address },\n { kind: 'asset', tags: ['ASA', 'Asset'], idProps: ['id', 'assetId'], policy: 'slow', sources: ['resolver', 'algod', 'indexer'], normalizeId: uint },\n { kind: 'application', tags: ['Application'], idProps: ['id', 'appId'], policy: 'slow', sources: ['resolver', 'indexer', 'algod'], normalizeId: uint },\n // A contract's ARC-56 interface: its `ui` actions and cards. Keyed by app id.\n { kind: 'interface', tags: [], idProps: ['appId', 'id'], policy: 'slow', sources: ['interface'], normalizeId: uint },\n { kind: 'asset-media', tags: [], idProps: ['id'], policy: 'slow', sources: ['media'], normalizeId: uint },\n { kind: 'transaction', tags: ['Transaction'], idProps: ['id', 'txId', 'txid'], policy: 'immutable', sources: ['indexer'], normalizeId: txid },\n { kind: 'nfd', tags: ['NFDProfile'], idProps: ['name', 'id'], policy: 'slow', sources: ['nfd'], normalizeId: nfdName },\n { kind: 'nfd-address', tags: [], idProps: ['address'], policy: 'slow', sources: ['nfd'], normalizeId: address },\n contract('listing', 'NFTListing', 'listing'),\n contract('auction', 'AuctionListing', 'auction'),\n contract('raffle', 'RaffleListing', 'raffle'),\n contract('poll', 'Poll', 'poll'),\n contract('prize-box', 'PrizeBox', 'prize-box'),\n hosted('collection', 'Collection', ['id', 'collectionId'], 'slow'),\n contract('staking-pool', 'StakingPool', 'staking-pool'),\n // HyperSwap is a singleton, so an offer id is enough. Older app tags also carry appId.\n // Chain first while the box exists; the resolver keeps closed offers and their participants.\n { kind: 'trade', tags: ['TradeOffer'], idProps: ['offerId', 'id'], params: ['appId'], policy: 'live', sources: ['algod', 'resolver'], normalizeId: uint },\n hosted('dual-stake', 'DualStakePool', ['appId', 'id'], 'live', { params: ['rewardAssetId'], normalizeId: uint }),\n // A disbursement id in the Rewards singleton.\n { kind: 'reward', tags: ['Reward'], idProps: ['id'], policy: 'live', sources: ['algod', 'resolver'], normalizeId: uint },\n // Services are numbered per owner, so the cache id is `<owner>/<serviceId>` when the owner is known.\n {\n kind: 'subscription',\n tags: ['Subscription'],\n idProps: ['id', 'serviceId'],\n params: ['owner', 'creator', 'address'],\n policy: 'slow',\n // Without an owner only the resolver can find the service.\n sources: ['algod', 'resolver'],\n normalizeId: (id) => (/^([A-Z2-7]{58}\\/)?\\d+$/.test(id.trim()) ? id.trim() : undefined),\n composeId: (id, params) => {\n const owner = params.owner ?? params.creator ?? params.address\n return owner && !id.includes('/') ? `${owner}/${id}` : id\n },\n decomposeId: (id): { id: string; params: Record<string, string> } => {\n const i = id.indexOf('/')\n return i < 0 ? { id, params: {} } : { id: id.slice(i + 1), params: { owner: id.slice(0, i) } }\n },\n },\n // A Guild proposal. Proposal ids count per Guild, so the cache id is `<guildAppId>/<proposalId>`.\n {\n kind: 'guild-proposal',\n tags: ['GuildProposal'],\n idProps: ['proposalId', 'id'],\n params: ['appId'],\n policy: 'live',\n sources: ['algod'],\n normalizeId: (id) => (/^(\\d+\\/)?\\d+$/.test(id.trim()) ? id.trim() : undefined),\n composeId: (id, params) => (params.appId && !id.includes('/') ? `${params.appId}/${id}` : id),\n decomposeId: (id): { id: string; params: Record<string, string> } => {\n const i = id.indexOf('/')\n return i < 0 ? { id, params: {} } : { id: id.slice(i + 1), params: { appId: id.slice(0, i) } }\n },\n },\n // Title is the author's own label in their post, not chain data.\n hosted('private-content', 'PrivateContent', ['id'], 'slow', { params: ['title'] }),\n // A page inside the same post. The host supplies its preview and navigation.\n { kind: 'page-card', tags: ['PageCard'], idProps: ['page', 'next', 'href', 'id'], params: ['title'], policy: 'immutable', sources: [], normalizeId: any },\n]\n\nexport class KindRegistry {\n private byKind = new Map<string, KindDef>()\n private byTag = new Map<string, KindDef>()\n\n constructor(defs: KindDef[] = BUILT_IN_KINDS) {\n defs.forEach((d) => this.register(d))\n }\n\n register(def: KindDef): void {\n this.byKind.set(def.kind, def)\n for (const tag of def.tags) this.byTag.set(tag, def)\n }\n\n get(kind: string): KindDef | undefined {\n return this.byKind.get(kind)\n }\n\n require(kind: string): KindDef {\n const def = this.byKind.get(kind)\n if (!def) throw new Error(`Unknown AlgoMD kind: ${kind}`)\n return def\n }\n\n forTag(tag: string): KindDef | undefined {\n return this.byTag.get(tag)\n }\n\n tags(): string[] {\n return [...this.byTag.keys()]\n }\n\n all(): KindDef[] {\n return [...this.byKind.values()]\n }\n}\n\nexport const defaultRegistry = new KindRegistry()\n","import { defaultRegistry, type KindRegistry } from './kinds'\nimport type { Ref, Size } from './types'\n\n/**\n * The AlgoMD content grammar. Stored content uses self-closing tags such as\n * `<ASA id=\"31566704\" />`. Existing posts are a compatibility boundary: tag\n * names, id props and legacy size props keep working.\n *\n * Only identifiers survive parsing. Any other prop is dropped, so content can\n * never supply the data that gets displayed.\n */\n\nexport interface RefSegment {\n type: 'ref'\n ref: Ref & { size?: Size }\n tag: string\n raw: string\n}\n\nexport interface TextSegment {\n type: 'text'\n content: string\n}\n\nexport type Segment = TextSegment | RefSegment\n\nconst PROPS = `((?:\"[^\"]*\"|'[^']*'|“[^”]*”|‘[^’]*’|\\\\{[^}]*\\\\}|[^'\"“”‘’>])*)`\nconst PROP_RE = /([A-Za-z_][\\w-]*)(?:\\s*=\\s*(?:\"([^\"]*)\"|'([^']*)'|\\{([^}]*)\\}|“([^”]*)”|‘([^’]*)’))?/g\nconst FENCE_RE = /```[\\s\\S]*?```/g\nconst ENTITIES: Record<string, string> = { amp: '&', quot: '\"', apos: \"'\", lt: '<', gt: '>' }\n\nconst tagRegexCache = new WeakMap<KindRegistry, { source: string; tags: string }>()\n\nfunction tagRegex(registry: KindRegistry): RegExp {\n const tags = registry.tags().sort((a, b) => b.length - a.length).join('|')\n let cached = tagRegexCache.get(registry)\n if (!cached || cached.tags !== tags) {\n cached = { tags, source: `<(${tags})\\\\b${PROPS}\\\\/>` }\n tagRegexCache.set(registry, cached)\n }\n return new RegExp(cached.source, 'g')\n}\n\nfunction decodeEntities(value: string): string {\n return value.replace(/&(amp|quot|apos|lt|gt);/g, (_, e: string) => ENTITIES[e] ?? _)\n}\n\nexport function parseProps(raw: string): Record<string, string> {\n const props: Record<string, string> = {}\n for (const m of raw.matchAll(PROP_RE)) {\n const name = m[1]!\n props[name] = decodeEntities(m[2] ?? m[3] ?? m[4] ?? m[5] ?? m[6] ?? 'true').trim()\n }\n return props\n}\n\n/** Maps current and legacy size props to a size. */\nexport function sizeFromProps(props: Record<string, string>): Size | undefined {\n const size = props.size?.toLowerCase()\n switch (size) {\n case 'inline':\n case 'small':\n case 'large':\n return size\n case 'xs':\n case 'sm':\n return 'inline'\n // Legacy `full` meant a full-width card. The full-screen size is stored as `fullscreen`.\n case 'md':\n case 'lg':\n case 'xl':\n case 'full':\n return 'large'\n case 'fullscreen':\n return 'full'\n }\n if (props.inline === 'true' || props.compact === 'true') return 'inline'\n return undefined\n}\n\n/** Builds a ref from a tag name and its props, or undefined if the id is missing or malformed. */\nexport function refFromTag(tag: string, props: Record<string, string>, registry: KindRegistry = defaultRegistry): (Ref & { size?: Size }) | undefined {\n const def = registry.forTag(tag)\n if (!def) return undefined\n const rawId = def.idProps.map((p) => props[p]).find((v) => v && v !== 'true')\n if (!rawId) return undefined\n const params = Object.fromEntries((def.params ?? []).filter((p) => props[p]).map((p) => [p, props[p]!]))\n const composed = def.composeId ? def.composeId(rawId, params) : rawId\n const id = def.normalizeId ? def.normalizeId(composed) : composed\n if (!id) return undefined\n const ref: Ref & { size?: Size } = { kind: def.kind, id }\n if (Object.keys(params).length) ref.params = params\n const size = sizeFromProps(props)\n if (size) ref.size = size\n return ref\n}\n\n/** Splits content into text and reference segments. Tags inside fenced code stay text. */\nexport function parseContent(content: string, registry: KindRegistry = defaultRegistry): Segment[] {\n if (!content) return []\n const fences = [...content.matchAll(FENCE_RE)].map((m) => [m.index!, m.index! + m[0].length] as const)\n const inFence = (i: number) => fences.some(([s, e]) => i >= s && i < e)\n\n const out: Segment[] = []\n let last = 0\n for (const m of content.matchAll(tagRegex(registry))) {\n const at = m.index!\n if (inFence(at)) continue\n const ref = refFromTag(m[1]!, parseProps(m[2] ?? ''), registry)\n if (!ref) continue\n if (at > last) out.push({ type: 'text', content: content.slice(last, at) })\n out.push({ type: 'ref', ref, tag: m[1]!, raw: m[0] })\n last = at + m[0].length\n }\n if (last < content.length) out.push({ type: 'text', content: content.slice(last) })\n return out\n}\n\n/** Every distinct reference in the content, in order of first appearance. */\nexport function extractRefs(content: string, registry: KindRegistry = defaultRegistry): Ref[] {\n const seen = new Map<string, Ref>()\n for (const s of parseContent(content, registry)) {\n if (s.type !== 'ref') continue\n const key = `${s.ref.kind}:${s.ref.id}`\n if (!seen.has(key)) seen.set(key, { kind: s.ref.kind, id: s.ref.id, ...(s.ref.params ? { params: s.ref.params } : {}) })\n }\n return [...seen.values()]\n}\n\nexport function hasRefs(content: string, registry: KindRegistry = defaultRegistry): boolean {\n return parseContent(content, registry).some((s) => s.type === 'ref')\n}\n\nconst attr = (v: string) => v.replace(/&/g, '&amp;').replace(/\"/g, '&quot;').replace(/</g, '&lt;').replace(/>/g, '&gt;')\n\n/**\n * Serializes a reference as a tag. Sizes are written in a form that older\n * clients also understand: inline as `compact`, full as `size=\"fullscreen\"`.\n */\nexport function serializeRef(ref: Ref & { size?: Size }, registry: KindRegistry = defaultRegistry): string {\n const def = registry.require(ref.kind)\n const tag = def.tags[0]\n if (!tag) throw new Error(`Kind ${ref.kind} has no tag and cannot be stored in content`)\n const split = def.decomposeId ? def.decomposeId(ref.id) : { id: ref.id, params: {} as Record<string, string> }\n const params = { ...split.params, ...ref.params }\n const parts = [`${def.idProps[0]}=\"${attr(split.id)}\"`]\n for (const p of def.params ?? []) if (params[p]) parts.push(`${p}=\"${attr(params[p])}\"`)\n if (ref.size === 'inline') parts.push('compact')\n else if (ref.size === 'small') parts.push('size=\"small\"')\n else if (ref.size === 'full') parts.push('size=\"fullscreen\"')\n return `<${tag} ${parts.join(' ')} />`\n}\n","import algosdk from 'algosdk'\nimport type { FetchLike } from '../http'\nimport { fetchAppHistory } from '../sources/indexer'\nimport type { Endpoint, Entity } from '../types'\nimport { FAMILIES } from './families'\n\nexport interface VerifyOptions {\n fetch: FetchLike\n /** Indexer to check against. Prefer one not operated by whoever made the claim. */\n indexer: Endpoint\n /** Factory app ids allowed to have created this kind of app. */\n factories?: number[]\n}\n\nconst norm = (v: unknown) => (v === undefined || v === null || v === '' ? null : v)\nconst same = (a: unknown, b: unknown) => JSON.stringify(norm(a)) === JSON.stringify(norm(b))\n\n/**\n * Checks a claimed archived entity against chain history. Returns the entity\n * with chain-derived data and a verification result. See docs/DESIGN.md §5.\n */\nexport async function verifyArchived(entity: Entity, options: VerifyOptions): Promise<Entity> {\n const checkedAt = Date.now()\n const family = FAMILIES[entity.kind]\n if (!family) return { ...entity, verification: { state: 'unverified', checkedAt, detail: `No reducer for ${entity.kind}` } }\n\n const appId = String(entity.evidence?.appId ?? entity.id)\n const history = await fetchAppHistory(options.fetch, options.indexer, appId)\n if (!history) return { ...entity, verification: { state: 'unverified', checkedAt, detail: 'Indexer has no record of this app' } }\n\n const mismatches: string[] = []\n let factoryAppId: number | undefined\n if (options.factories?.length) {\n const creator = history.application.params.creator\n factoryAppId = options.factories.find((id) => algosdk.getApplicationAddress(id).toString() === creator)\n if (factoryAppId === undefined) mismatches.push('factory')\n }\n\n const reduced = family.reduce(history.application, history.transactions)\n if (!history.application.deleted) mismatches.push('status')\n const claimed = (entity.data ?? {}) as Record<string, unknown>\n const derived = reduced.data as Record<string, unknown>\n for (const field of family.verifyFields) if (!same(claimed[field], derived[field])) mismatches.push(field)\n\n return {\n ...entity,\n status: history.application.deleted ? 'archived' : 'live',\n // Always show what the chain says, whatever was claimed.\n data: reduced.data,\n evidence: { ...reduced.evidence, ...(factoryAppId !== undefined ? { factoryAppId } : {}) },\n verification: mismatches.length\n ? { state: 'mismatch', checkedAt, mismatches, detail: `Claim differs from chain history: ${mismatches.join(', ')}` }\n : { state: 'verified', checkedAt },\n }\n}\n","const B64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nconst LOOKUP = new Map([...B64].map((c, i) => [c, i]))\n\n/** Base64 to bytes without relying on atob or Buffer, so it runs on every host. */\nexport function fromBase64(input: string): Uint8Array {\n const clean = input.replace(/[^A-Za-z0-9+/]/g, '')\n const out = new Uint8Array(Math.floor((clean.length * 3) / 4))\n let buffer = 0\n let bits = 0\n let o = 0\n for (const c of clean) {\n buffer = (buffer << 6) | (LOOKUP.get(c) ?? 0)\n bits += 6\n if (bits >= 8) {\n bits -= 8\n out[o++] = (buffer >> bits) & 0xff\n }\n }\n return out.subarray(0, o)\n}\n\nexport function toHex(bytes: Uint8Array): string {\n return Array.from(bytes, (b) => b.toString(16).padStart(2, '0')).join('')\n}\n\nexport function toLatin1(bytes: Uint8Array): string {\n return Array.from(bytes, (b) => String.fromCharCode(b)).join('')\n}\n\n/** UTF-8 decode that does not depend on TextDecoder. Invalid sequences become U+FFFD. */\nexport function utf8(bytes: Uint8Array): string {\n let out = ''\n for (let i = 0; i < bytes.length; ) {\n const b = bytes[i++]!\n let cp: number\n if (b < 0x80) cp = b\n else if (b >= 0xc0 && b < 0xe0 && i < bytes.length) cp = ((b & 0x1f) << 6) | (bytes[i++]! & 0x3f)\n else if (b >= 0xe0 && b < 0xf0 && i + 1 < bytes.length) cp = ((b & 0x0f) << 12) | ((bytes[i++]! & 0x3f) << 6) | (bytes[i++]! & 0x3f)\n else if (b >= 0xf0 && i + 2 < bytes.length)\n cp = ((b & 0x07) << 18) | ((bytes[i++]! & 0x3f) << 12) | ((bytes[i++]! & 0x3f) << 6) | (bytes[i++]! & 0x3f)\n else cp = 0xfffd\n out += String.fromCodePoint(cp)\n }\n return out\n}\n\nexport function bytesToBigInt(bytes: Uint8Array): bigint {\n let v = 0n\n for (const b of bytes) v = (v << 8n) | BigInt(b)\n return v\n}\n\nexport function toBase64(bytes: Uint8Array): string {\n let out = ''\n for (let i = 0; i < bytes.length; i += 3) {\n const n = (bytes[i]! << 16) | ((bytes[i + 1] ?? 0) << 8) | (bytes[i + 2] ?? 0)\n out += B64[(n >> 18) & 63]! + B64[(n >> 12) & 63]!\n out += i + 1 < bytes.length ? B64[(n >> 6) & 63]! : '='\n out += i + 2 < bytes.length ? B64[n & 63]! : '='\n }\n return out\n}\n\nexport function fromHex(hex: string): Uint8Array {\n const clean = hex.replace(/^0x/, '')\n const out = new Uint8Array(clean.length / 2)\n for (let i = 0; i < out.length; i++) out[i] = parseInt(clean.slice(i * 2, i * 2 + 2), 16)\n return out\n}\n","import algosdk from 'algosdk'\nimport { fromBase64, fromHex, toBase64 } from './chain/bytes'\nimport { stateFromTeal, type RawState } from './chain/state'\nimport type { TealKeyValue } from './chain/indexer-types'\nimport { boxName, boxPrefix, decodeBoxKey, decodeBoxValue, decodeGlobalState, type Decoded } from './contracts/decode'\nimport { requestJson, type FetchLike } from './http'\nimport { base32Lower } from './media'\nimport type { Endpoint } from './types'\n\n/*\n * Kinds that live in contract boxes: staking-pool rewards, reward\n * disbursements (Rewards singleton), subscription services (Subscriptions\n * singleton) and trade offers (HyperSwap singleton).\n */\n\n/** Singleton app ids a host deploys. Defaults are the Akita deployments per network. */\nexport interface SingletonApps {\n rewards?: number\n subscriptions?: number\n hyperSwap?: number\n}\n\nexport const AKITA_SINGLETONS: Record<string, SingletonApps> = {\n mainnet: { rewards: 3569556095, subscriptions: 3569556497, hyperSwap: 3569558555 },\n testnet: { rewards: 763128244, subscriptions: 763128278, hyperSwap: 763128499 },\n}\n\nconst str = (v: Decoded | undefined): string => (typeof v === 'string' ? v : v == null ? '' : String(v))\nconst nowSec = () => Math.floor(Date.now() / 1000)\nconst ZERO = 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAY5HFKQ'\nconst addr = (v: Decoded | undefined) => (typeof v === 'string' && v && v !== ZERO ? v : undefined)\nconst field = (v: Decoded | undefined, k: string): Decoded | undefined =>\n v && typeof v === 'object' && !Array.isArray(v) ? (v as Record<string, Decoded>)[k] : undefined\n\n// ---------------------------------------------------------------- box reads\n\nexport async function readBox(fetchFn: FetchLike, algod: Endpoint, appId: number | string, name: Uint8Array): Promise<Uint8Array | undefined> {\n const res = await requestJson<{ value: string }>(fetchFn, algod, `/v2/applications/${appId}/box?name=b64:${encodeURIComponent(toBase64(name))}`)\n return res ? fromBase64(res.value) : undefined\n}\n\nexport async function listBoxNames(fetchFn: FetchLike, algod: Endpoint, appId: number | string, prefix: Uint8Array): Promise<Uint8Array[]> {\n const res = await requestJson<{ boxes: Array<{ name: string }> }>(\n fetchFn,\n algod,\n `/v2/applications/${appId}/boxes?prefix=b64:${encodeURIComponent(toBase64(prefix))}&max=1000`,\n )\n // Older nodes ignore `prefix`; filter here as well.\n return (res?.boxes ?? []).map((b) => fromBase64(b.name)).filter((n) => prefix.every((p, i) => n[i] === p))\n}\n\n// ---------------------------------------------------------------- staking pool\n\nconst POOL_TYPES: Record<string, string> = { '0': 'none', '10': 'heartbeat', '20': 'soft', '30': 'hard', '40': 'lock' }\nconst DISTRIBUTIONS: Record<string, string> = { '10': 'percentage', '20': 'flat', '30': 'even', '40': 'shuffle' }\n\nexport interface StakingPoolReward {\n id: string\n asset: string\n distribution: string\n rate: string\n interval: string\n expiration: string\n winnerCount: string\n qualifiedStakers: string\n}\n\nexport interface StakingPoolData {\n appId: string\n status: 'draft' | 'upcoming' | 'signups' | 'active' | 'ended' | 'closed'\n title: string\n poolType: string\n creator?: string\n signupAt: string\n startAt: string\n endAt: string\n allowLateSignups: boolean\n maxEntries: string\n entryCount: string\n minimumStake: string\n stakeKey?: { address?: string; name: string }\n gateId: string\n rewards?: StakingPoolReward[]\n closedRound?: number\n}\n\nexport function stakingPoolFromDecoded(appId: string, d: Record<string, Decoded>, now = nowSec()): StakingPoolData {\n const final = str(d.status) === '10'\n const signup = Number(str(d.signupTimestamp) || 0)\n const start = Number(str(d.startTimestamp) || 0)\n const end = Number(str(d.endTimestamp) || 0)\n const status: StakingPoolData['status'] = !final ? 'draft' : now < signup ? 'upcoming' : now < start ? 'signups' : end && now >= end ? 'ended' : 'active'\n const key = d.stakeKey\n return {\n appId,\n status,\n title: str(d.title),\n poolType: POOL_TYPES[str(d.type)] ?? str(d.type),\n creator: addr(d.creator),\n signupAt: str(d.signupTimestamp),\n startAt: str(d.startTimestamp),\n endAt: str(d.endTimestamp),\n allowLateSignups: str(d.allowLateSignups) === '1' || d.allowLateSignups === true,\n maxEntries: str(d.maxEntries),\n // entry_id is the next entry id and starts at 1.\n entryCount: String(Math.max(0, Number(str(d.entryID) || 1) - 1)),\n minimumStake: str(d.minimumStakeAmount),\n ...(key ? { stakeKey: { address: addr(field(key, 'address')), name: str(field(key, 'name')) } } : {}),\n gateId: str(d.gateID),\n }\n}\n\nexport function stakingPoolFromState(appId: string, state: RawState): StakingPoolData {\n return stakingPoolFromDecoded(appId, decodeGlobalState('stakingPool', state))\n}\n\nexport async function readStakingPoolRewards(fetchFn: FetchLike, algod: Endpoint, appId: string): Promise<StakingPoolReward[]> {\n const names = await listBoxNames(fetchFn, algod, appId, boxPrefix('stakingPool', 'rewards'))\n const rewards = await Promise.all(\n names.map(async (name) => {\n const value = await readBox(fetchFn, algod, appId, name)\n if (!value) return undefined\n const r = decodeBoxValue('stakingPool', 'rewards', value)\n return {\n id: str(decodeBoxKey('stakingPool', 'rewards', name)),\n asset: str(field(r, 'asset')),\n distribution: DISTRIBUTIONS[str(field(r, 'distribution'))] ?? str(field(r, 'distribution')),\n rate: str(field(r, 'rate')),\n interval: str(field(r, 'interval')),\n expiration: str(field(r, 'expiration')),\n winnerCount: str(field(r, 'winnerCount')),\n qualifiedStakers: str(field(r, 'qualifiedStakers')),\n }\n }),\n )\n return rewards.filter((r): r is StakingPoolReward => Boolean(r)).sort((a, b) => Number(a.id) - Number(b.id))\n}\n\nexport async function readStakingPool(fetchFn: FetchLike, algod: Endpoint, appId: string, globalState: TealKeyValue[] | undefined): Promise<StakingPoolData> {\n const pool = stakingPoolFromState(appId, stateFromTeal(globalState))\n pool.rewards = await readStakingPoolRewards(fetchFn, algod, appId).catch(() => undefined)\n return pool\n}\n\n// ---------------------------------------------------------------- reward disbursement\n\nexport interface RewardData {\n id: string\n rewardsAppId: string\n creator?: string\n finalized: boolean\n title: string\n note: string\n amount: string\n distributed: string\n allocations: string\n unlockAt: string\n expiresAt: string\n status: 'draft' | 'locked' | 'claimable' | 'expired'\n}\n\nexport async function readReward(fetchFn: FetchLike, algod: Endpoint, rewardsAppId: number, id: string): Promise<RewardData | undefined> {\n const value = await readBox(fetchFn, algod, rewardsAppId, boxName('rewards', 'disbursements', BigInt(id)))\n if (!value) return undefined\n const d = decodeBoxValue('rewards', 'disbursements', value)\n const finalized = field(d, 'finalized') === true\n const unlock = Number(str(field(d, 'timeToUnlock')) || 0)\n const expires = Number(str(field(d, 'expiration')) || 0)\n const now = nowSec()\n return {\n id,\n rewardsAppId: String(rewardsAppId),\n creator: addr(field(d, 'creator')),\n finalized,\n title: str(field(d, 'title')),\n note: str(field(d, 'note')),\n amount: str(field(d, 'amount')),\n distributed: str(field(d, 'distributed')),\n allocations: str(field(d, 'allocations')),\n unlockAt: String(unlock),\n expiresAt: String(expires),\n status: !finalized ? 'draft' : expires && now >= expires ? 'expired' : unlock && now < unlock ? 'locked' : 'claimable',\n }\n}\n\n// ---------------------------------------------------------------- subscription service\n\nconst SERVICE_STATUS: Record<string, string> = { '10': 'draft', '20': 'active', '30': 'paused', '40': 'shutdown' }\n\nexport interface SubscriptionData {\n owner: string\n serviceId: string\n status: string\n title: string\n description: string\n /** ipfs:// URL of the banner image. */\n banner?: string\n asset: string\n amount: string\n /** Seconds between payments. */\n interval: string\n passes: string\n gateId: string\n highlightColor?: string\n /** The service's highlight tag (1 Best Value, 2 Popular, ... 15 Early Access). Absent when none. */\n highlightMessage?: number\n subscriberCount?: number\n}\n\n/** A subscription ref id is `<owner>/<serviceId>`: services are numbered per owner. */\nexport function splitSubscriptionId(id: string): { owner?: string; serviceId: string } {\n const i = id.indexOf('/')\n return i < 0 ? { serviceId: id } : { owner: id.slice(0, i), serviceId: id.slice(i + 1) }\n}\n\nfunction cidFromBytes(hex: string): string | undefined {\n const bytes = fromHex(hex)\n if (!bytes.length || bytes.every((b) => b === 0)) return undefined\n return `ipfs://b${base32Lower(bytes)}`\n}\n\nexport async function readSubscription(fetchFn: FetchLike, algod: Endpoint, subscriptionsAppId: number, id: string): Promise<SubscriptionData | undefined> {\n const { owner, serviceId } = splitSubscriptionId(id)\n if (!owner || !algosdk.isValidAddress(owner)) return undefined\n const value = await readBox(fetchFn, algod, subscriptionsAppId, boxName('subscriptions', 'services', [owner, BigInt(serviceId)]))\n if (!value) return undefined\n const s = decodeBoxValue('subscriptions', 'services', value)\n const color = str(field(s, 'highlightColor'))\n return {\n owner,\n serviceId,\n status: SERVICE_STATUS[str(field(s, 'status'))] ?? str(field(s, 'status')),\n title: str(field(s, 'title')),\n description: str(field(s, 'description')),\n banner: cidFromBytes(str(field(s, 'bannerImage'))),\n asset: str(field(s, 'asset')),\n amount: str(field(s, 'amount')),\n interval: str(field(s, 'interval')),\n passes: str(field(s, 'passes')),\n gateId: str(field(s, 'gateID')),\n ...(color && color !== '000000' ? { highlightColor: `#${color}` } : {}),\n ...(Number(str(field(s, 'highlightMessage'))) > 0 ? { highlightMessage: Number(str(field(s, 'highlightMessage'))) } : {}),\n }\n}\n\n// ---------------------------------------------------------------- trade offer\n\nconst OFFER_STATES: Record<string, string> = {\n '10': 'offered',\n '20': 'escrowing',\n '30': 'disbursing',\n '40': 'completed',\n '50': 'cancelled',\n '60': 'cancelled',\n}\n\nexport interface TradeLeg {\n from: string\n to: string\n asset: string\n amount: string\n}\n\nexport interface TradeData {\n offerId: string\n hyperSwapAppId: string\n state: string\n expiration: string\n /** Number of transfers in the trade. */\n legCount: string\n escrowed: string\n participantCount: string\n acceptances: string\n creator?: string\n participants?: string[]\n /** Only from an off-chain source; the chain keeps a Merkle root. */\n legs?: TradeLeg[]\n}\n\nexport async function readTrade(fetchFn: FetchLike, algod: Endpoint, hyperSwapAppId: number, offerId: string): Promise<TradeData | undefined> {\n const value = await readBox(fetchFn, algod, hyperSwapAppId, boxName('hyperSwap', 'offers', BigInt(offerId)))\n if (!value) return undefined\n const o = decodeBoxValue('hyperSwap', 'offers', value)\n return {\n offerId,\n hyperSwapAppId: String(hyperSwapAppId),\n state: OFFER_STATES[str(field(o, 'state'))] ?? str(field(o, 'state')),\n expiration: str(field(o, 'expiration')),\n legCount: str(field(o, 'leaves')),\n escrowed: str(field(o, 'escrowed')),\n participantCount: str(field(o, 'participantsLeaves')),\n acceptances: str(field(o, 'acceptances')),\n }\n}\n\n// ---------------------------------------------------------------- host-only kinds\n\n/** A dualSTAKE pool (external Myth contract), served by a resolver. */\nexport interface DualStakeData {\n appId: string\n pairedAssetId: string\n lstAssetId: string\n rate?: string\n algoBalance?: string\n asaBalance?: string\n staked?: string\n isOnline?: boolean\n name?: string\n}\n\n/** Public metadata of an encrypted post section. Unlocking needs the viewer's keys and stays in the host. */\nexport interface PrivateContentData {\n id: string\n authorAddress?: string\n ciphertextSize?: number\n createdAt?: number\n}\n\n","import { bytesToBigInt, fromBase64, toLatin1 } from './bytes'\nimport type { EvalDeltaKeyValue, TealKeyValue } from './indexer-types'\n\nexport interface RawValue {\n bytes?: Uint8Array\n uint?: bigint\n}\n\n/** Global state keyed by the raw key bytes as a latin1 string (the form ARC-56 keys use). */\nexport type RawState = Map<string, RawValue>\n\nexport function stateFromTeal(kvs: TealKeyValue[] | undefined): RawState {\n const state: RawState = new Map()\n for (const kv of kvs ?? []) {\n const key = toLatin1(fromBase64(kv.key))\n state.set(key, kv.value.type === 1 ? { bytes: fromBase64(kv.value.bytes ?? '') } : { uint: BigInt(kv.value.uint ?? 0) })\n }\n return state\n}\n\n/** Applies an eval delta in place. */\nexport function applyDelta(state: RawState, delta: EvalDeltaKeyValue[] | undefined): void {\n for (const kv of delta ?? []) {\n const key = toLatin1(fromBase64(kv.key))\n if (kv.value.action === 1) state.set(key, { bytes: fromBase64(kv.value.bytes ?? '') })\n else if (kv.value.action === 2) state.set(key, { uint: BigInt(kv.value.uint ?? 0) })\n else if (kv.value.action === 3) state.delete(key)\n }\n}\n\nexport function rawUint(state: RawState, key: string): bigint | undefined {\n const v = state.get(key)\n if (!v) return undefined\n return v.uint ?? (v.bytes ? bytesToBigInt(v.bytes) : undefined)\n}\n","import algosdk from 'algosdk'\nimport { bytesToBigInt, fromBase64, toHex, utf8 } from '../chain/bytes'\nimport type { RawState } from '../chain/state'\nimport { CONTRACT_SCHEMAS, type ContractName } from './schemas.generated'\n\ntype StructField = { name: string; type: string }\ntype Structs = Record<string, readonly StructField[]>\n\n/** JSON-safe decoded value: uint64 and wider become decimal strings. */\nexport type Decoded = string | boolean | null | Decoded[] | { [k: string]: Decoded }\n\nfunction structTuple(name: string, structs: Structs): string | undefined {\n const fields = structs[name]\n if (!fields) return undefined\n return `(${fields.map((f) => structTuple(f.type, structs) ?? f.type).join(',')})`\n}\n\nfunction normalize(value: unknown, typeName: string, structs: Structs): Decoded {\n const fields = structs[typeName]\n if (fields && Array.isArray(value)) {\n const out: Record<string, Decoded> = {}\n fields.forEach((f, i) => { out[f.name] = normalize(value[i], f.type, structs) })\n return out\n }\n // Byte arrays (byte[N], byte[]) decode to numbers; keep them as hex.\n if (/^byte\\[\\d*\\]$/.test(typeName) && (Array.isArray(value) || value instanceof Uint8Array)) {\n return toHex(Uint8Array.from(value as ArrayLike<number | bigint>, (b) => Number(b)))\n }\n if (typeof value === 'bigint' || typeof value === 'number') return value.toString()\n if (typeof value === 'string' || typeof value === 'boolean') return value\n if (value instanceof Uint8Array) return toHex(value)\n if (Array.isArray(value)) return value.map((v) => normalize(v, '', structs))\n if (value && typeof value === 'object' && 'toString' in value) return String(value)\n return null\n}\n\n/** Decodes one raw global value by its ARC-56 value type. */\nexport function decodeValue(type: string, raw: { bytes?: Uint8Array; uint?: bigint }, structs: Structs): Decoded {\n if (type === 'AVMUint64') return (raw.uint ?? (raw.bytes ? bytesToBigInt(raw.bytes) : 0n)).toString()\n const bytes = raw.bytes ?? new Uint8Array()\n if (type === 'AVMString') return utf8(bytes)\n if (type === 'AVMBytes') return toHex(bytes)\n if (type === 'address') return bytes.length === 32 ? algosdk.encodeAddress(bytes) : toHex(bytes)\n const abi = structTuple(type, structs) ?? type\n try {\n return normalize(algosdk.ABIType.from(abi).decode(bytes), type, structs)\n } catch {\n return toHex(bytes)\n }\n}\n\n/** Decodes a contract's raw global state into named fields using its ARC-56 schema. */\nexport function decodeGlobalState(contract: ContractName, state: RawState): Record<string, Decoded> {\n const schema = CONTRACT_SCHEMAS[contract]\n const structs = schema.structs as unknown as Structs\n const out: Record<string, Decoded> = {}\n for (const [field, def] of Object.entries(schema.global)) {\n const raw = state.get(def.key)\n if (raw) out[field] = decodeValue(def.type, raw, structs)\n }\n return out\n}\n\n/** Method name for a 4-byte selector (hex), or undefined for unknown or older contract versions. */\nexport function methodForSelector(contract: ContractName, selectorHex: string): string | undefined {\n for (const [name, m] of Object.entries(CONTRACT_SCHEMAS[contract].methods)) {\n if (m.selector === selectorHex) return name\n }\n return undefined\n}\n\n/** Decodes the ABI args of a call (excluding the selector and transaction args). */\nexport function decodeArgs(contract: ContractName, method: string, args: Uint8Array[]): Decoded[] {\n const m = (CONTRACT_SCHEMAS[contract].methods as Record<string, { args: readonly { type: string; struct?: string }[] }>)[method]\n if (!m) return []\n const structs = CONTRACT_SCHEMAS[contract].structs as unknown as Structs\n const txnTypes = new Set(['txn', 'pay', 'keyreg', 'acfg', 'axfer', 'afrz', 'appl'])\n const out: Decoded[] = []\n let i = 1\n for (const a of m.args) {\n if (txnTypes.has(a.type)) continue\n const bytes = args[i++]\n if (!bytes) break\n try {\n out.push(normalize(algosdk.ABIType.from(a.type).decode(bytes), a.struct ?? a.type, structs))\n } catch {\n out.push(toHex(bytes))\n }\n }\n return out\n}\n\nexport interface DecodedEvent {\n name: string\n fields: Record<string, Decoded>\n}\n\n/**\n * Decodes the ARC-28 events in a call's logs (base64, as the indexer returns\n * them). Logs that are not events of this contract are skipped.\n */\nexport function decodeEvents(contract: ContractName, logs: string[]): DecodedEvent[] {\n const events = (CONTRACT_SCHEMAS[contract] as { events?: Record<string, { selector: string; args: readonly StructField[] }> }).events ?? {}\n const bySelector = new Map(Object.entries(events).map(([name, e]) => [e.selector, { name, args: e.args }]))\n const out: DecodedEvent[] = []\n for (const log of logs) {\n const bytes = fromBase64(log)\n if (bytes.length < 4) continue\n const event = bySelector.get(toHex(bytes.subarray(0, 4)))\n if (!event) continue\n try {\n const values = algosdk.ABIType.from(`(${event.args.map((a) => a.type).join(',')})`).decode(bytes.subarray(4)) as unknown[]\n const fields: Record<string, Decoded> = {}\n event.args.forEach((a, i) => { fields[a.name] = normalize(values[i], a.type, {}) })\n out.push({ name: event.name, fields })\n } catch {\n // A log that happens to share a selector but does not decode is not this event.\n }\n }\n return out\n}\n\ntype BoxDef = { prefix: string; keyType: string; valueType: string }\n\nfunction boxDef(contract: ContractName, map: string): BoxDef {\n const def = (CONTRACT_SCHEMAS[contract] as unknown as { boxes?: Record<string, BoxDef> }).boxes?.[map]\n if (!def) throw new Error(`${contract} has no box map ${map}`)\n return def\n}\n\nfunction abiTypeFor(type: string, structs: Structs): string {\n return structTuple(type, structs) ?? (type === 'AVMBytes' ? 'byte[]' : type === 'AVMString' ? 'string' : type === 'AVMUint64' ? 'uint64' : type)\n}\n\n/**\n * The full box name for a map key: the map's prefix plus the ABI-encoded key.\n * Struct keys are passed as arrays in field order, e.g. `[address, id]`.\n */\nexport function boxName(contract: ContractName, map: string, key: unknown): Uint8Array {\n const def = boxDef(contract, map)\n const structs = CONTRACT_SCHEMAS[contract].structs as unknown as Structs\n const prefix = Uint8Array.from(def.prefix, (c) => c.charCodeAt(0))\n const encoded = algosdk.ABIType.from(abiTypeFor(def.keyType, structs)).encode(key as algosdk.ABIValue)\n const out = new Uint8Array(prefix.length + encoded.length)\n out.set(prefix)\n out.set(encoded, prefix.length)\n return out\n}\n\nexport function boxPrefix(contract: ContractName, map: string): Uint8Array {\n return Uint8Array.from(boxDef(contract, map).prefix, (c) => c.charCodeAt(0))\n}\n\n/** Decodes a box value by its map's ARC-56 value type. */\nexport function decodeBoxValue(contract: ContractName, map: string, bytes: Uint8Array): Decoded {\n const def = boxDef(contract, map)\n return decodeValue(def.valueType, { bytes }, CONTRACT_SCHEMAS[contract].structs as unknown as Structs)\n}\n\n/** Decodes the key part of a box name (after the prefix). */\nexport function decodeBoxKey(contract: ContractName, map: string, name: Uint8Array): Decoded {\n const def = boxDef(contract, map)\n const structs = CONTRACT_SCHEMAS[contract].structs as unknown as Structs\n return normalize(algosdk.ABIType.from(abiTypeFor(def.keyType, structs)).decode(name.subarray(def.prefix.length)), def.keyType, structs)\n}\n","// Generated by scripts/gen-contract-schemas.mjs from akita-sc ARC-56 specs. Do not edit.\nexport const CONTRACT_SCHEMAS = {\n \"listing\": {\n \"name\": \"Listing\",\n \"global\": {\n \"prize\": {\n \"key\": \"prize\",\n \"type\": \"AVMUint64\"\n },\n \"isPrizeBox\": {\n \"key\": \"is_prize_box\",\n \"type\": \"AVMUint64\"\n },\n \"price\": {\n \"key\": \"price\",\n \"type\": \"AVMUint64\"\n },\n \"paymentAsset\": {\n \"key\": \"payment_asset\",\n \"type\": \"AVMUint64\"\n },\n \"expiration\": {\n \"key\": \"expiration\",\n \"type\": \"AVMUint64\"\n },\n \"seller\": {\n \"key\": \"seller\",\n \"type\": \"address\"\n },\n \"reservedFor\": {\n \"key\": \"reserved_for\",\n \"type\": \"address\"\n },\n \"creatorRoyalty\": {\n \"key\": \"creator_royalty\",\n \"type\": \"AVMUint64\"\n },\n \"gateID\": {\n \"key\": \"gate_id\",\n \"type\": \"AVMUint64\"\n },\n \"marketplace\": {\n \"key\": \"marketplace\",\n \"type\": \"address\"\n },\n \"marketplaceRoyalties\": {\n \"key\": \"marketplace_royalties\",\n \"type\": \"AVMUint64\"\n },\n \"akitaDAOEscrow\": {\n \"key\": \"akita_escrow\",\n \"type\": \"EscrowConfig\"\n },\n \"prizeAmount\": {\n \"key\": \"prize_amount\",\n \"type\": \"AVMUint64\"\n },\n \"lastPriceRound\": {\n \"key\": \"price_round\",\n \"type\": \"AVMUint64\"\n },\n \"rev\": {\n \"key\": \"rev\",\n \"type\": \"AVMUint64\"\n },\n \"version\": {\n \"key\": \"version\",\n \"type\": \"AVMString\"\n },\n \"akitaDAO\": {\n \"key\": \"akita_dao\",\n \"type\": \"AVMUint64\"\n },\n \"funder\": {\n \"key\": \"funder\",\n \"type\": \"FunderInfo\"\n }\n },\n \"boxes\": {},\n \"methods\": {\n \"create\": {\n \"signature\": \"create(uint64,bool,uint64,uint64,uint64,address,(address,uint64),address,uint64,uint64,address,string,uint64,(string,uint64),uint64)void\",\n \"selector\": \"bcb5417a\",\n \"args\": [\n {\n \"name\": \"prize\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"isPrizeBox\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"price\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"paymentAsset\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"expiration\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"seller\",\n \"type\": \"address\"\n },\n {\n \"name\": \"funder\",\n \"type\": \"(address,uint64)\",\n \"struct\": \"FunderInfo\"\n },\n {\n \"name\": \"reservedFor\",\n \"type\": \"address\"\n },\n {\n \"name\": \"creatorRoyalty\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"gateID\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"marketplace\",\n \"type\": \"address\"\n },\n {\n \"name\": \"version\",\n \"type\": \"string\"\n },\n {\n \"name\": \"akitaDAO\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"akitaDAOEscrow\",\n \"type\": \"(string,uint64)\",\n \"struct\": \"EscrowConfig\"\n },\n {\n \"name\": \"prizeAmount\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"create:NoOp\"\n ]\n },\n \"purchase\": {\n \"signature\": \"purchase(pay,address,address)void\",\n \"selector\": \"6a16393d\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"buyer\",\n \"type\": \"address\"\n },\n {\n \"name\": \"marketplace\",\n \"type\": \"address\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"DeleteApplication\"\n ]\n },\n \"purchaseAsa\": {\n \"signature\": \"purchaseAsa(axfer,address,address)void\",\n \"selector\": \"171c9f88\",\n \"args\": [\n {\n \"name\": \"assetXfer\",\n \"type\": \"axfer\"\n },\n {\n \"name\": \"buyer\",\n \"type\": \"address\"\n },\n {\n \"name\": \"marketplace\",\n \"type\": \"address\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"DeleteApplication\"\n ]\n },\n \"delist\": {\n \"signature\": \"delist(address)void\",\n \"selector\": \"68e86343\",\n \"args\": [\n {\n \"name\": \"caller\",\n \"type\": \"address\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"DeleteApplication\"\n ]\n },\n \"changePrice\": {\n \"signature\": \"changePrice(uint64)void\",\n \"selector\": \"19396c4a\",\n \"args\": [\n {\n \"name\": \"price\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"updateAkitaDAO\": {\n \"signature\": \"updateAkitaDAO(uint64)void\",\n \"selector\": \"33e92c94\",\n \"args\": [\n {\n \"name\": \"akitaDAO\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"opUp\": {\n \"signature\": \"opUp()void\",\n \"selector\": \"854dede0\",\n \"args\": [],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"optin\": {\n \"signature\": \"optin(pay,uint64)void\",\n \"selector\": \"3ea11832\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n }\n },\n \"events\": {\n \"ListingFinalized\": {\n \"signature\": \"ListingFinalized(uint64,address,address,uint64,bool,uint64,uint64,uint64,address,address)\",\n \"selector\": \"a6fab5d7\",\n \"args\": [\n {\n \"name\": \"outcome\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"seller\",\n \"type\": \"address\"\n },\n {\n \"name\": \"buyer\",\n \"type\": \"address\"\n },\n {\n \"name\": \"prize\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"isPrizeBox\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"prizeAmount\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"price\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"paymentAsset\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"listMarketplace\",\n \"type\": \"address\"\n },\n {\n \"name\": \"buyMarketplace\",\n \"type\": \"address\"\n }\n ]\n }\n },\n \"structs\": {\n \"EscrowConfig\": [\n {\n \"name\": \"name\",\n \"type\": \"string\"\n },\n {\n \"name\": \"app\",\n \"type\": \"uint64\"\n }\n ],\n \"FunderInfo\": [\n {\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint64\"\n }\n ]\n }\n },\n \"marketplace\": {\n \"name\": \"Marketplace\",\n \"global\": {\n \"childContractVersion\": {\n \"key\": \"child_contract_version\",\n \"type\": \"AVMString\"\n },\n \"akitaDAOEscrow\": {\n \"key\": \"akita_escrow\",\n \"type\": \"EscrowConfig\"\n },\n \"version\": {\n \"key\": \"version\",\n \"type\": \"AVMString\"\n },\n \"akitaDAO\": {\n \"key\": \"akita_dao\",\n \"type\": \"AVMUint64\"\n }\n },\n \"boxes\": {},\n \"methods\": {\n \"create\": {\n \"signature\": \"create(string,string,uint64,(string,uint64))void\",\n \"selector\": \"81153628\",\n \"args\": [\n {\n \"name\": \"version\",\n \"type\": \"string\"\n },\n {\n \"name\": \"childVersion\",\n \"type\": \"string\"\n },\n {\n \"name\": \"akitaDAO\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"akitaDAOEscrow\",\n \"type\": \"(string,uint64)\",\n \"struct\": \"EscrowConfig\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"create:NoOp\"\n ]\n },\n \"list\": {\n \"signature\": \"list(pay,axfer,uint64,uint64,uint64,address,uint64,address,string,byte[32][])uint64\",\n \"selector\": \"e2fa9e21\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"assetXfer\",\n \"type\": \"axfer\"\n },\n {\n \"name\": \"price\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"paymentAsset\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"expiration\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"reservedFor\",\n \"type\": \"address\"\n },\n {\n \"name\": \"gateID\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"marketplace\",\n \"type\": \"address\"\n },\n {\n \"name\": \"name\",\n \"type\": \"string\"\n },\n {\n \"name\": \"proof\",\n \"type\": \"byte[32][]\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"listPrizeBox\": {\n \"signature\": \"listPrizeBox(appl,pay,uint64,uint64,uint64,address,uint64,address)uint64\",\n \"selector\": \"81dc516a\",\n \"args\": [\n {\n \"name\": \"prizeBoxTransferTxn\",\n \"type\": \"appl\"\n },\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"price\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"paymentAsset\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"expiration\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"reservedFor\",\n \"type\": \"address\"\n },\n {\n \"name\": \"gateID\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"marketplace\",\n \"type\": \"address\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"gatedPurchase\": {\n \"signature\": \"gatedPurchase(pay,appl,uint64,address)void\",\n \"selector\": \"6e9035cc\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"gateTxn\",\n \"type\": \"appl\"\n },\n {\n \"name\": \"appId\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"marketplace\",\n \"type\": \"address\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"purchase\": {\n \"signature\": \"purchase(pay,uint64,address)void\",\n \"selector\": \"5d7a6177\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"appId\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"marketplace\",\n \"type\": \"address\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"gatedPurchaseAsa\": {\n \"signature\": \"gatedPurchaseAsa(axfer,appl,uint64,address)void\",\n \"selector\": \"daa97516\",\n \"args\": [\n {\n \"name\": \"assetXfer\",\n \"type\": \"axfer\"\n },\n {\n \"name\": \"gateTxn\",\n \"type\": \"appl\"\n },\n {\n \"name\": \"appId\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"marketplace\",\n \"type\": \"address\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"purchaseAsa\": {\n \"signature\": \"purchaseAsa(axfer,uint64,address)void\",\n \"selector\": \"02cfb1cf\",\n \"args\": [\n {\n \"name\": \"assetXfer\",\n \"type\": \"axfer\"\n },\n {\n \"name\": \"appId\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"marketplace\",\n \"type\": \"address\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"delist\": {\n \"signature\": \"delist(uint64)void\",\n \"selector\": \"c97dbb2e\",\n \"args\": [\n {\n \"name\": \"appId\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"listCost\": {\n \"signature\": \"listCost(uint64,uint64,bool)uint64\",\n \"selector\": \"332f6dd8\",\n \"args\": [\n {\n \"name\": \"prize\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"paymentAsset\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"isPrizeBox\",\n \"type\": \"bool\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"initBoxedContract\": {\n \"signature\": \"initBoxedContract(string,uint64)void\",\n \"selector\": \"c53b32cc\",\n \"args\": [\n {\n \"name\": \"version\",\n \"type\": \"string\"\n },\n {\n \"name\": \"size\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"loadBoxedContract\": {\n \"signature\": \"loadBoxedContract(uint64,byte[])void\",\n \"selector\": \"dca2d862\",\n \"args\": [\n {\n \"name\": \"offset\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"data\",\n \"type\": \"byte[]\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"deleteBoxedContract\": {\n \"signature\": \"deleteBoxedContract()void\",\n \"selector\": \"d346b1a4\",\n \"args\": [],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"optIn\": {\n \"signature\": \"optIn(pay,uint64)void\",\n \"selector\": \"394eaeb2\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"optInCost\": {\n \"signature\": \"optInCost(uint64)uint64\",\n \"selector\": \"33f78808\",\n \"args\": [\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"updateAkitaDAOEscrow\": {\n \"signature\": \"updateAkitaDAOEscrow((string,uint64))void\",\n \"selector\": \"ae84cbd8\",\n \"args\": [\n {\n \"name\": \"config\",\n \"type\": \"(string,uint64)\",\n \"struct\": \"EscrowConfig\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"update\": {\n \"signature\": \"update(string)void\",\n \"selector\": \"ea9180dd\",\n \"args\": [\n {\n \"name\": \"newVersion\",\n \"type\": \"string\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"UpdateApplication\"\n ]\n },\n \"updateAkitaDAO\": {\n \"signature\": \"updateAkitaDAO(uint64)void\",\n \"selector\": \"33e92c94\",\n \"args\": [\n {\n \"name\": \"akitaDAO\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"opUp\": {\n \"signature\": \"opUp()void\",\n \"selector\": \"854dede0\",\n \"args\": [],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n }\n },\n \"events\": {},\n \"structs\": {\n \"EscrowConfig\": [\n {\n \"name\": \"name\",\n \"type\": \"string\"\n },\n {\n \"name\": \"app\",\n \"type\": \"uint64\"\n }\n ]\n }\n },\n \"auction\": {\n \"name\": \"Auction\",\n \"global\": {\n \"prize\": {\n \"key\": \"prize\",\n \"type\": \"AVMUint64\"\n },\n \"isPrizeBox\": {\n \"key\": \"is_prize_box\",\n \"type\": \"AVMUint64\"\n },\n \"prizeClaimed\": {\n \"key\": \"prize_claimed\",\n \"type\": \"AVMUint64\"\n },\n \"bidAsset\": {\n \"key\": \"bid_asset\",\n \"type\": \"AVMUint64\"\n },\n \"bidFee\": {\n \"key\": \"bid_fee\",\n \"type\": \"AVMUint64\"\n },\n \"startingBid\": {\n \"key\": \"starting_bid\",\n \"type\": \"AVMUint64\"\n },\n \"bidMinimumIncrease\": {\n \"key\": \"bid_minimum_increase\",\n \"type\": \"AVMUint64\"\n },\n \"startTimestamp\": {\n \"key\": \"start_timestamp\",\n \"type\": \"AVMUint64\"\n },\n \"endTimestamp\": {\n \"key\": \"end_timestamp\",\n \"type\": \"AVMUint64\"\n },\n \"seller\": {\n \"key\": \"seller\",\n \"type\": \"address\"\n },\n \"creatorRoyalty\": {\n \"key\": \"creator_royalty\",\n \"type\": \"AVMUint64\"\n },\n \"marketplace\": {\n \"key\": \"marketplace\",\n \"type\": \"address\"\n },\n \"marketplaceRoyalties\": {\n \"key\": \"marketplace_royalties\",\n \"type\": \"AVMUint64\"\n },\n \"gateID\": {\n \"key\": \"gate_id\",\n \"type\": \"AVMUint64\"\n },\n \"vrfFailureCount\": {\n \"key\": \"vrf_failure_count\",\n \"type\": \"AVMUint64\"\n },\n \"refundCount\": {\n \"key\": \"refund_count\",\n \"type\": \"AVMUint64\"\n },\n \"bidTotal\": {\n \"key\": \"bid_total\",\n \"type\": \"uint128\"\n },\n \"weightedBidTotal\": {\n \"key\": \"weighted_bid_total\",\n \"type\": \"AVMUint64\"\n },\n \"highestBid\": {\n \"key\": \"highest_bid\",\n \"type\": \"AVMUint64\"\n },\n \"bidID\": {\n \"key\": \"bid_id\",\n \"type\": \"AVMUint64\"\n },\n \"raffleAmount\": {\n \"key\": \"raffle_amount\",\n \"type\": \"AVMUint64\"\n },\n \"rafflePrizeClaimed\": {\n \"key\": \"raffle_prize_claimed\",\n \"type\": \"AVMUint64\"\n },\n \"uniqueAddressCount\": {\n \"key\": \"unique_address_count\",\n \"type\": \"AVMUint64\"\n },\n \"weightsBoxCount\": {\n \"key\": \"weights_box_count\",\n \"type\": \"AVMUint64\"\n },\n \"weightTotals\": {\n \"key\": \"w_totals\",\n \"type\": \"uint64[15]\"\n },\n \"findWinnerCursors\": {\n \"key\": \"find_winner_cursors\",\n \"type\": \"FindWinnerCursors\"\n },\n \"refundMBRCursor\": {\n \"key\": \"refund_mbr_cursor\",\n \"type\": \"AVMUint64\"\n },\n \"winningTicket\": {\n \"key\": \"winning_ticket\",\n \"type\": \"AVMUint64\"\n },\n \"raffleWinner\": {\n \"key\": \"raffle_winner\",\n \"type\": \"address\"\n },\n \"salt\": {\n \"key\": \"salt\",\n \"type\": \"AVMBytes\"\n },\n \"raffleRound\": {\n \"key\": \"raffle_round\",\n \"type\": \"AVMUint64\"\n },\n \"akitaDAOEscrow\": {\n \"key\": \"akita_escrow\",\n \"type\": \"EscrowConfig\"\n },\n \"version\": {\n \"key\": \"version\",\n \"type\": \"AVMString\"\n },\n \"akitaDAO\": {\n \"key\": \"akita_dao\",\n \"type\": \"AVMUint64\"\n },\n \"funder\": {\n \"key\": \"funder\",\n \"type\": \"FunderInfo\"\n }\n },\n \"boxes\": {\n \"bids\": {\n \"prefix\": \"b\",\n \"keyType\": \"uint64\",\n \"valueType\": \"BidInfo\"\n },\n \"weights\": {\n \"prefix\": \"w\",\n \"keyType\": \"uint64\",\n \"valueType\": \"uint64[4096]\"\n },\n \"bidsByAddress\": {\n \"prefix\": \"a\",\n \"keyType\": \"address\",\n \"valueType\": \"uint64\"\n },\n \"locations\": {\n \"prefix\": \"l\",\n \"keyType\": \"uint64\",\n \"valueType\": \"address\"\n }\n },\n \"methods\": {\n \"create\": {\n \"signature\": \"create(uint64,bool,uint64,uint64,uint64,uint64,uint64,uint64,(address,uint64),address,uint64,uint64,address,string,(uint64,(string,uint64)))void\",\n \"selector\": \"82ffa2ce\",\n \"args\": [\n {\n \"name\": \"prize\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"isPrizeBox\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"bidAsset\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"bidFee\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"startingBid\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"bidMinimumIncrease\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"startTimestamp\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"endTimestamp\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"funder\",\n \"type\": \"(address,uint64)\",\n \"struct\": \"FunderInfo\"\n },\n {\n \"name\": \"seller\",\n \"type\": \"address\"\n },\n {\n \"name\": \"creatorRoyalty\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"gateID\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"marketplace\",\n \"type\": \"address\"\n },\n {\n \"name\": \"version\",\n \"type\": \"string\"\n },\n {\n \"name\": \"akitaConfig\",\n \"type\": \"(uint64,(string,uint64))\",\n \"struct\": \"AkitaConfig\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"create:NoOp\"\n ]\n },\n \"init\": {\n \"signature\": \"init(pay,uint64)void\",\n \"selector\": \"bd7148d0\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"weightListLength\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"deleteApplication\": {\n \"signature\": \"deleteApplication()void\",\n \"selector\": \"2487c32c\",\n \"args\": [],\n \"returns\": \"void\",\n \"actions\": [\n \"DeleteApplication\"\n ]\n },\n \"cancel\": {\n \"signature\": \"cancel()void\",\n \"selector\": \"31f26a9b\",\n \"args\": [],\n \"returns\": \"void\",\n \"actions\": [\n \"DeleteApplication\"\n ]\n },\n \"gatedBid\": {\n \"signature\": \"gatedBid(pay,appl,address)void\",\n \"selector\": \"9836c89f\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"gateTxn\",\n \"type\": \"appl\"\n },\n {\n \"name\": \"marketplace\",\n \"type\": \"address\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"bid\": {\n \"signature\": \"bid(pay,address)void\",\n \"selector\": \"4d585697\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"marketplace\",\n \"type\": \"address\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"gatedBidAsa\": {\n \"signature\": \"gatedBidAsa(pay,axfer,appl,address)void\",\n \"selector\": \"d9f4f03a\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"assetXfer\",\n \"type\": \"axfer\"\n },\n {\n \"name\": \"gateTxn\",\n \"type\": \"appl\"\n },\n {\n \"name\": \"marketplace\",\n \"type\": \"address\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"bidAsa\": {\n \"signature\": \"bidAsa(pay,axfer,address)void\",\n \"selector\": \"76952931\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"assetXfer\",\n \"type\": \"axfer\"\n },\n {\n \"name\": \"marketplace\",\n \"type\": \"address\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"refundBid\": {\n \"signature\": \"refundBid(uint64)void\",\n \"selector\": \"b9e39c5c\",\n \"args\": [\n {\n \"name\": \"id\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"raffle\": {\n \"signature\": \"raffle()void\",\n \"selector\": \"696501de\",\n \"args\": [],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"findWinner\": {\n \"signature\": \"findWinner(uint64)void\",\n \"selector\": \"bd1b27d1\",\n \"args\": [\n {\n \"name\": \"iterationAmount\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"refundMBR\": {\n \"signature\": \"refundMBR(uint64)void\",\n \"selector\": \"f2ce2f46\",\n \"args\": [\n {\n \"name\": \"iterationAmount\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"claimPrize\": {\n \"signature\": \"claimPrize()void\",\n \"selector\": \"9daf050a\",\n \"args\": [],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"claimRafflePrize\": {\n \"signature\": \"claimRafflePrize()void\",\n \"selector\": \"65fca98b\",\n \"args\": [],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"clearWeightsBoxes\": {\n \"signature\": \"clearWeightsBoxes(uint64)uint64\",\n \"selector\": \"05e5de4d\",\n \"args\": [\n {\n \"name\": \"iterationAmount\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"isLive\": {\n \"signature\": \"isLive()bool\",\n \"selector\": \"8fa4a160\",\n \"args\": [],\n \"returns\": \"bool\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"hasBid\": {\n \"signature\": \"hasBid(address)bool\",\n \"selector\": \"6082303c\",\n \"args\": [\n {\n \"name\": \"address\",\n \"type\": \"address\"\n }\n ],\n \"returns\": \"bool\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"getMinimumBidAmount\": {\n \"signature\": \"getMinimumBidAmount()uint64\",\n \"selector\": \"20895e26\",\n \"args\": [],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"mbr\": {\n \"signature\": \"mbr()(uint64,uint64,uint64,uint64)\",\n \"selector\": \"73111070\",\n \"args\": [],\n \"returns\": \"(uint64,uint64,uint64,uint64)\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"updateAkitaDAOEscrow\": {\n \"signature\": \"updateAkitaDAOEscrow((string,uint64))void\",\n \"selector\": \"ae84cbd8\",\n \"args\": [\n {\n \"name\": \"config\",\n \"type\": \"(string,uint64)\",\n \"struct\": \"EscrowConfig\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"update\": {\n \"signature\": \"update(string)void\",\n \"selector\": \"ea9180dd\",\n \"args\": [\n {\n \"name\": \"newVersion\",\n \"type\": \"string\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"UpdateApplication\"\n ]\n },\n \"updateAkitaDAO\": {\n \"signature\": \"updateAkitaDAO(uint64)void\",\n \"selector\": \"33e92c94\",\n \"args\": [\n {\n \"name\": \"akitaDAO\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"opUp\": {\n \"signature\": \"opUp()void\",\n \"selector\": \"854dede0\",\n \"args\": [],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"optin\": {\n \"signature\": \"optin(pay,uint64)void\",\n \"selector\": \"3ea11832\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n }\n },\n \"events\": {\n \"AuctionFinalized\": {\n \"signature\": \"AuctionFinalized(uint64,uint64,uint64,uint64,address)\",\n \"selector\": \"3f78cd43\",\n \"args\": [\n {\n \"name\": \"outcome\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"highestBid\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"bidCount\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"uniqueBidders\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"raffleWinner\",\n \"type\": \"address\"\n }\n ]\n },\n \"AuctionPrizeClaimed\": {\n \"signature\": \"AuctionPrizeClaimed(address,uint64,address)\",\n \"selector\": \"fd65163b\",\n \"args\": [\n {\n \"name\": \"winner\",\n \"type\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"marketplace\",\n \"type\": \"address\"\n }\n ]\n },\n \"AuctionRafflePrizeClaimed\": {\n \"signature\": \"AuctionRafflePrizeClaimed(address,uint64)\",\n \"selector\": \"a62c50f0\",\n \"args\": [\n {\n \"name\": \"winner\",\n \"type\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint64\"\n }\n ]\n }\n },\n \"structs\": {\n \"AuctionMBRData\": [\n {\n \"name\": \"bids\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"weights\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"bidsByAddress\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"locations\",\n \"type\": \"uint64\"\n }\n ],\n \"BidInfo\": [\n {\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"marketplace\",\n \"type\": \"address\"\n },\n {\n \"name\": \"refunded\",\n \"type\": \"bool\"\n }\n ],\n \"FindWinnerCursors\": [\n {\n \"name\": \"startingIndex\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"currentRangeStart\",\n \"type\": \"uint64\"\n }\n ],\n \"AkitaConfig\": [\n {\n \"name\": \"akitaDAO\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"akitaDAOEscrow\",\n \"type\": \"EscrowConfig\"\n }\n ],\n \"EscrowConfig\": [\n {\n \"name\": \"name\",\n \"type\": \"string\"\n },\n {\n \"name\": \"app\",\n \"type\": \"uint64\"\n }\n ],\n \"FunderInfo\": [\n {\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint64\"\n }\n ]\n }\n },\n \"auctionFactory\": {\n \"name\": \"AuctionFactory\",\n \"global\": {\n \"childContractVersion\": {\n \"key\": \"child_contract_version\",\n \"type\": \"AVMString\"\n },\n \"akitaDAOEscrow\": {\n \"key\": \"akita_escrow\",\n \"type\": \"EscrowConfig\"\n },\n \"version\": {\n \"key\": \"version\",\n \"type\": \"AVMString\"\n },\n \"akitaDAO\": {\n \"key\": \"akita_dao\",\n \"type\": \"AVMUint64\"\n }\n },\n \"boxes\": {},\n \"methods\": {\n \"create\": {\n \"signature\": \"create(string,string,uint64,(string,uint64))void\",\n \"selector\": \"81153628\",\n \"args\": [\n {\n \"name\": \"version\",\n \"type\": \"string\"\n },\n {\n \"name\": \"childVersion\",\n \"type\": \"string\"\n },\n {\n \"name\": \"akitaDAO\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"akitaDAOEscrow\",\n \"type\": \"(string,uint64)\",\n \"struct\": \"EscrowConfig\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"create:NoOp\"\n ]\n },\n \"newAuction\": {\n \"signature\": \"newAuction(pay,axfer,string,byte[32][],uint64,uint64,uint64,uint64,uint64,uint64,uint64,address,uint64)uint64\",\n \"selector\": \"d1548fff\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"assetXfer\",\n \"type\": \"axfer\"\n },\n {\n \"name\": \"name\",\n \"type\": \"string\"\n },\n {\n \"name\": \"proof\",\n \"type\": \"byte[32][]\"\n },\n {\n \"name\": \"bidAssetID\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"bidFee\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"startingBid\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"bidMinimumIncrease\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"startTimestamp\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"endTimestamp\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"gateID\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"marketplace\",\n \"type\": \"address\"\n },\n {\n \"name\": \"weightsListCount\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"newPrizeBoxAuction\": {\n \"signature\": \"newPrizeBoxAuction(appl,pay,uint64,uint64,uint64,uint64,uint64,uint64,uint64,address,uint64)uint64\",\n \"selector\": \"73f00223\",\n \"args\": [\n {\n \"name\": \"prizeBoxTransferTxn\",\n \"type\": \"appl\"\n },\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"bidAssetID\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"bidFee\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"startingBid\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"bidMinimumIncrease\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"startTimestamp\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"endTimestamp\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"gateID\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"marketplace\",\n \"type\": \"address\"\n },\n {\n \"name\": \"weightsListCount\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"deleteAuctionApp\": {\n \"signature\": \"deleteAuctionApp(uint64)void\",\n \"selector\": \"1714da65\",\n \"args\": [\n {\n \"name\": \"appId\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"cancelAuction\": {\n \"signature\": \"cancelAuction(uint64)void\",\n \"selector\": \"80f44541\",\n \"args\": [\n {\n \"name\": \"appId\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"newAuctionCost\": {\n \"signature\": \"newAuctionCost(bool,uint64,uint64,uint64)uint64\",\n \"selector\": \"a5d42b3a\",\n \"args\": [\n {\n \"name\": \"isPrizeBox\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"bidAssetID\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"prizeAssetID\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"weightsListCount\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"mbr\": {\n \"signature\": \"mbr()(uint64,uint64,uint64,uint64)\",\n \"selector\": \"73111070\",\n \"args\": [],\n \"returns\": \"(uint64,uint64,uint64,uint64)\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"initBoxedContract\": {\n \"signature\": \"initBoxedContract(string,uint64)void\",\n \"selector\": \"c53b32cc\",\n \"args\": [\n {\n \"name\": \"version\",\n \"type\": \"string\"\n },\n {\n \"name\": \"size\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"loadBoxedContract\": {\n \"signature\": \"loadBoxedContract(uint64,byte[])void\",\n \"selector\": \"dca2d862\",\n \"args\": [\n {\n \"name\": \"offset\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"data\",\n \"type\": \"byte[]\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"deleteBoxedContract\": {\n \"signature\": \"deleteBoxedContract()void\",\n \"selector\": \"d346b1a4\",\n \"args\": [],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"optIn\": {\n \"signature\": \"optIn(pay,uint64)void\",\n \"selector\": \"394eaeb2\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"optInCost\": {\n \"signature\": \"optInCost(uint64)uint64\",\n \"selector\": \"33f78808\",\n \"args\": [\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"updateAkitaDAOEscrow\": {\n \"signature\": \"updateAkitaDAOEscrow((string,uint64))void\",\n \"selector\": \"ae84cbd8\",\n \"args\": [\n {\n \"name\": \"config\",\n \"type\": \"(string,uint64)\",\n \"struct\": \"EscrowConfig\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"update\": {\n \"signature\": \"update(string)void\",\n \"selector\": \"ea9180dd\",\n \"args\": [\n {\n \"name\": \"newVersion\",\n \"type\": \"string\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"UpdateApplication\"\n ]\n },\n \"updateAkitaDAO\": {\n \"signature\": \"updateAkitaDAO(uint64)void\",\n \"selector\": \"33e92c94\",\n \"args\": [\n {\n \"name\": \"akitaDAO\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"opUp\": {\n \"signature\": \"opUp()void\",\n \"selector\": \"854dede0\",\n \"args\": [],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n }\n },\n \"events\": {},\n \"structs\": {\n \"AuctionMBRData\": [\n {\n \"name\": \"bids\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"weights\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"bidsByAddress\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"locations\",\n \"type\": \"uint64\"\n }\n ],\n \"EscrowConfig\": [\n {\n \"name\": \"name\",\n \"type\": \"string\"\n },\n {\n \"name\": \"app\",\n \"type\": \"uint64\"\n }\n ]\n }\n },\n \"raffle\": {\n \"name\": \"Raffle\",\n \"global\": {\n \"ticketAsset\": {\n \"key\": \"ticket_asset\",\n \"type\": \"AVMUint64\"\n },\n \"startTimestamp\": {\n \"key\": \"start_timestamp\",\n \"type\": \"AVMUint64\"\n },\n \"endTimestamp\": {\n \"key\": \"end_timestamp\",\n \"type\": \"AVMUint64\"\n },\n \"seller\": {\n \"key\": \"seller\",\n \"type\": \"address\"\n },\n \"minTickets\": {\n \"key\": \"min_tickets\",\n \"type\": \"AVMUint64\"\n },\n \"maxTickets\": {\n \"key\": \"max_tickets\",\n \"type\": \"AVMUint64\"\n },\n \"entryCount\": {\n \"key\": \"entry_count\",\n \"type\": \"AVMUint64\"\n },\n \"ticketCount\": {\n \"key\": \"ticket_count\",\n \"type\": \"AVMUint64\"\n },\n \"winningTicket\": {\n \"key\": \"winning_ticket\",\n \"type\": \"AVMUint64\"\n },\n \"winner\": {\n \"key\": \"winner\",\n \"type\": \"address\"\n },\n \"prize\": {\n \"key\": \"prize\",\n \"type\": \"AVMUint64\"\n },\n \"isPrizeBox\": {\n \"key\": \"is_prize_box\",\n \"type\": \"AVMUint64\"\n },\n \"prizeClaimed\": {\n \"key\": \"prize_claimed\",\n \"type\": \"AVMUint64\"\n },\n \"creatorRoyalty\": {\n \"key\": \"creator_royalty\",\n \"type\": \"AVMUint64\"\n },\n \"gateID\": {\n \"key\": \"gate_id\",\n \"type\": \"AVMUint64\"\n },\n \"marketplace\": {\n \"key\": \"marketplace\",\n \"type\": \"address\"\n },\n \"marketplaceRoyalties\": {\n \"key\": \"marketplace_royalties\",\n \"type\": \"AVMUint64\"\n },\n \"akitaRoyalty\": {\n \"key\": \"akita_royalty\",\n \"type\": \"AVMUint64\"\n },\n \"vrfFailureCount\": {\n \"key\": \"vrf_failure_count\",\n \"type\": \"AVMUint64\"\n },\n \"entryID\": {\n \"key\": \"entry_id\",\n \"type\": \"AVMUint64\"\n },\n \"weightsBoxCount\": {\n \"key\": \"weights_box_count\",\n \"type\": \"AVMUint64\"\n },\n \"weightTotals\": {\n \"key\": \"w_totals\",\n \"type\": \"uint64[15]\"\n },\n \"findWinnerCursors\": {\n \"key\": \"find_winner_cursors\",\n \"type\": \"FindWinnerCursors\"\n },\n \"refundMBRCursor\": {\n \"key\": \"refund_mbr_cursor\",\n \"type\": \"AVMUint64\"\n },\n \"salt\": {\n \"key\": \"salt\",\n \"type\": \"AVMBytes\"\n },\n \"raffleRound\": {\n \"key\": \"raffle_round\",\n \"type\": \"AVMUint64\"\n },\n \"minEntries\": {\n \"key\": \"min_entries\",\n \"type\": \"AVMUint64\"\n },\n \"failed\": {\n \"key\": \"failed\",\n \"type\": \"AVMUint64\"\n },\n \"akitaDAOEscrow\": {\n \"key\": \"akita_escrow\",\n \"type\": \"EscrowConfig\"\n },\n \"version\": {\n \"key\": \"version\",\n \"type\": \"AVMString\"\n },\n \"akitaDAO\": {\n \"key\": \"akita_dao\",\n \"type\": \"AVMUint64\"\n },\n \"funder\": {\n \"key\": \"funder\",\n \"type\": \"FunderInfo\"\n }\n },\n \"boxes\": {\n \"entries\": {\n \"prefix\": \"e\",\n \"keyType\": \"uint64\",\n \"valueType\": \"EntryData\"\n },\n \"weights\": {\n \"prefix\": \"w\",\n \"keyType\": \"uint64\",\n \"valueType\": \"uint64[4096]\"\n },\n \"entriesByAddress\": {\n \"prefix\": \"a\",\n \"keyType\": \"address\",\n \"valueType\": \"uint64\"\n }\n },\n \"methods\": {\n \"create\": {\n \"signature\": \"create(uint64,bool,uint64,uint64,uint64,address,(address,uint64),uint64,uint64,uint64,uint64,uint64,address,uint64,(string,uint64))void\",\n \"selector\": \"a0c2ddf8\",\n \"args\": [\n {\n \"name\": \"prize\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"isPrizeBox\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"ticketAsset\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"startTimestamp\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"endTimestamp\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"seller\",\n \"type\": \"address\"\n },\n {\n \"name\": \"funder\",\n \"type\": \"(address,uint64)\",\n \"struct\": \"FunderInfo\"\n },\n {\n \"name\": \"creatorRoyalty\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"minTickets\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"maxTickets\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"minEntries\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"gateID\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"marketplace\",\n \"type\": \"address\"\n },\n {\n \"name\": \"akitaDAO\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"akitaDAOEscrow\",\n \"type\": \"(string,uint64)\",\n \"struct\": \"EscrowConfig\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"create:NoOp\"\n ]\n },\n \"init\": {\n \"signature\": \"init(pay,uint64)void\",\n \"selector\": \"bd7148d0\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"weightListLength\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"setMinEntries\": {\n \"signature\": \"setMinEntries(uint64)void\",\n \"selector\": \"59d70630\",\n \"args\": [\n {\n \"name\": \"minEntries\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"refundMBR\": {\n \"signature\": \"refundMBR(uint64)void\",\n \"selector\": \"f2ce2f46\",\n \"args\": [\n {\n \"name\": \"iterationAmount\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"clearWeightsBoxes\": {\n \"signature\": \"clearWeightsBoxes()uint64\",\n \"selector\": \"2c942514\",\n \"args\": [],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"deleteApplication\": {\n \"signature\": \"deleteApplication()void\",\n \"selector\": \"2487c32c\",\n \"args\": [],\n \"returns\": \"void\",\n \"actions\": [\n \"DeleteApplication\"\n ]\n },\n \"gatedEnter\": {\n \"signature\": \"gatedEnter(appl,pay,address)void\",\n \"selector\": \"5c57f6d8\",\n \"args\": [\n {\n \"name\": \"gateTxn\",\n \"type\": \"appl\"\n },\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"marketplace\",\n \"type\": \"address\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"enter\": {\n \"signature\": \"enter(pay,address)void\",\n \"selector\": \"962712f1\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"marketplace\",\n \"type\": \"address\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"gatedEnterAsa\": {\n \"signature\": \"gatedEnterAsa(appl,pay,axfer,address)void\",\n \"selector\": \"38e62433\",\n \"args\": [\n {\n \"name\": \"gateTxn\",\n \"type\": \"appl\"\n },\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"assetXfer\",\n \"type\": \"axfer\"\n },\n {\n \"name\": \"marketplace\",\n \"type\": \"address\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"enterAsa\": {\n \"signature\": \"enterAsa(pay,axfer,address)void\",\n \"selector\": \"43a53e4e\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"assetXfer\",\n \"type\": \"axfer\"\n },\n {\n \"name\": \"marketplace\",\n \"type\": \"address\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"gatedAdd\": {\n \"signature\": \"gatedAdd(appl,pay)void\",\n \"selector\": \"dc50b354\",\n \"args\": [\n {\n \"name\": \"gateTxn\",\n \"type\": \"appl\"\n },\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"add\": {\n \"signature\": \"add(pay)void\",\n \"selector\": \"6a6d9b9f\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"gatedAddAsa\": {\n \"signature\": \"gatedAddAsa(appl,axfer)void\",\n \"selector\": \"63bbb735\",\n \"args\": [\n {\n \"name\": \"gateTxn\",\n \"type\": \"appl\"\n },\n {\n \"name\": \"assetXfer\",\n \"type\": \"axfer\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"addAsa\": {\n \"signature\": \"addAsa(axfer)void\",\n \"selector\": \"eb1681b4\",\n \"args\": [\n {\n \"name\": \"assetXfer\",\n \"type\": \"axfer\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"raffle\": {\n \"signature\": \"raffle()void\",\n \"selector\": \"696501de\",\n \"args\": [],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"findWinner\": {\n \"signature\": \"findWinner(uint64)void\",\n \"selector\": \"bd1b27d1\",\n \"args\": [\n {\n \"name\": \"iterationAmount\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"claimRafflePrize\": {\n \"signature\": \"claimRafflePrize()void\",\n \"selector\": \"65fca98b\",\n \"args\": [],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"isLive\": {\n \"signature\": \"isLive()bool\",\n \"selector\": \"8fa4a160\",\n \"args\": [],\n \"returns\": \"bool\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"getState\": {\n \"signature\": \"getState()(uint64,uint64,uint64,address,uint64,uint64,uint64,uint64,uint64,address,uint64,bool,uint64,uint64,uint64,uint64,uint64,bool,uint64)\",\n \"selector\": \"48e59cdd\",\n \"args\": [],\n \"returns\": \"(uint64,uint64,uint64,address,uint64,uint64,uint64,uint64,uint64,address,uint64,bool,uint64,uint64,uint64,uint64,uint64,bool,uint64)\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"mbr\": {\n \"signature\": \"mbr()(uint64,uint64,uint64)\",\n \"selector\": \"d9a35fa4\",\n \"args\": [],\n \"returns\": \"(uint64,uint64,uint64)\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"updateAkitaDAOEscrow\": {\n \"signature\": \"updateAkitaDAOEscrow((string,uint64))void\",\n \"selector\": \"ae84cbd8\",\n \"args\": [\n {\n \"name\": \"config\",\n \"type\": \"(string,uint64)\",\n \"struct\": \"EscrowConfig\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"update\": {\n \"signature\": \"update(string)void\",\n \"selector\": \"ea9180dd\",\n \"args\": [\n {\n \"name\": \"newVersion\",\n \"type\": \"string\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"UpdateApplication\"\n ]\n },\n \"updateAkitaDAO\": {\n \"signature\": \"updateAkitaDAO(uint64)void\",\n \"selector\": \"33e92c94\",\n \"args\": [\n {\n \"name\": \"akitaDAO\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"opUp\": {\n \"signature\": \"opUp()void\",\n \"selector\": \"854dede0\",\n \"args\": [],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"optin\": {\n \"signature\": \"optin(pay,uint64)void\",\n \"selector\": \"3ea11832\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n }\n },\n \"events\": {\n \"RaffleFinalized\": {\n \"signature\": \"RaffleFinalized(uint64,address,uint64,bool,uint64,address,uint64,uint64,uint64)\",\n \"selector\": \"cccb2e51\",\n \"args\": [\n {\n \"name\": \"outcome\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"seller\",\n \"type\": \"address\"\n },\n {\n \"name\": \"prize\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"isPrizeBox\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"ticketAsset\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"winner\",\n \"type\": \"address\"\n },\n {\n \"name\": \"winningTicket\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"entryCount\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"ticketCount\",\n \"type\": \"uint64\"\n }\n ]\n }\n },\n \"structs\": {\n \"EntryData\": [\n {\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"name\": \"marketplace\",\n \"type\": \"address\"\n }\n ],\n \"FindWinnerCursors\": [\n {\n \"name\": \"index\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"amountIndex\",\n \"type\": \"uint64\"\n }\n ],\n \"RaffleMBRData\": [\n {\n \"name\": \"entries\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"weights\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"entriesByAddress\",\n \"type\": \"uint64\"\n }\n ],\n \"RaffleState\": [\n {\n \"name\": \"ticketAsset\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"startTimestamp\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"endTimestamp\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"seller\",\n \"type\": \"address\"\n },\n {\n \"name\": \"minTickets\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"maxTickets\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"entryCount\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"ticketCount\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"winningTicket\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"winner\",\n \"type\": \"address\"\n },\n {\n \"name\": \"prize\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"prizeClaimed\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"gateID\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"vrfFailureCount\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"entryID\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"refundMBRCursor\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"minEntries\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"failed\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"raffleRound\",\n \"type\": \"uint64\"\n }\n ],\n \"EscrowConfig\": [\n {\n \"name\": \"name\",\n \"type\": \"string\"\n },\n {\n \"name\": \"app\",\n \"type\": \"uint64\"\n }\n ],\n \"FunderInfo\": [\n {\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint64\"\n }\n ]\n }\n },\n \"raffleFactory\": {\n \"name\": \"RaffleFactory\",\n \"global\": {\n \"childContractVersion\": {\n \"key\": \"child_contract_version\",\n \"type\": \"AVMString\"\n },\n \"akitaDAOEscrow\": {\n \"key\": \"akita_escrow\",\n \"type\": \"EscrowConfig\"\n },\n \"version\": {\n \"key\": \"version\",\n \"type\": \"AVMString\"\n },\n \"akitaDAO\": {\n \"key\": \"akita_dao\",\n \"type\": \"AVMUint64\"\n }\n },\n \"boxes\": {},\n \"methods\": {\n \"create\": {\n \"signature\": \"create(string,string,uint64,(string,uint64))void\",\n \"selector\": \"81153628\",\n \"args\": [\n {\n \"name\": \"version\",\n \"type\": \"string\"\n },\n {\n \"name\": \"childVersion\",\n \"type\": \"string\"\n },\n {\n \"name\": \"akitaDAO\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"akitaDAOEscrow\",\n \"type\": \"(string,uint64)\",\n \"struct\": \"EscrowConfig\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"create:NoOp\"\n ]\n },\n \"newRaffle\": {\n \"signature\": \"newRaffle(pay,axfer,uint64,uint64,uint64,uint64,uint64,uint64,uint64,address,string,byte[32][],uint64)uint64\",\n \"selector\": \"39caa8ac\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"assetXfer\",\n \"type\": \"axfer\"\n },\n {\n \"name\": \"ticketAsset\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"startTimestamp\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"endTimestamp\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"minTickets\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"maxTickets\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"minEntries\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"gateID\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"marketplace\",\n \"type\": \"address\"\n },\n {\n \"name\": \"name\",\n \"type\": \"string\"\n },\n {\n \"name\": \"proof\",\n \"type\": \"byte[32][]\"\n },\n {\n \"name\": \"weightsListCount\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"newPrizeBoxRaffle\": {\n \"signature\": \"newPrizeBoxRaffle(appl,pay,uint64,uint64,uint64,uint64,uint64,uint64,uint64,address,uint64)uint64\",\n \"selector\": \"dabd4a57\",\n \"args\": [\n {\n \"name\": \"prizeBoxTransferTxn\",\n \"type\": \"appl\"\n },\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"ticketAsset\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"startTimestamp\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"endTimestamp\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"minTickets\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"maxTickets\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"minEntries\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"gateID\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"marketplace\",\n \"type\": \"address\"\n },\n {\n \"name\": \"weightsListCount\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"deleteRaffle\": {\n \"signature\": \"deleteRaffle(uint64)void\",\n \"selector\": \"91dd3c75\",\n \"args\": [\n {\n \"name\": \"appId\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"newRaffleCost\": {\n \"signature\": \"newRaffleCost(bool,uint64,uint64,uint64)uint64\",\n \"selector\": \"9ad7d33d\",\n \"args\": [\n {\n \"name\": \"isPrizeBox\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"prizeID\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"ticketAsset\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"weightsListCount\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"mbr\": {\n \"signature\": \"mbr()(uint64,uint64,uint64)\",\n \"selector\": \"d9a35fa4\",\n \"args\": [],\n \"returns\": \"(uint64,uint64,uint64)\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"initBoxedContract\": {\n \"signature\": \"initBoxedContract(string,uint64)void\",\n \"selector\": \"c53b32cc\",\n \"args\": [\n {\n \"name\": \"version\",\n \"type\": \"string\"\n },\n {\n \"name\": \"size\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"loadBoxedContract\": {\n \"signature\": \"loadBoxedContract(uint64,byte[])void\",\n \"selector\": \"dca2d862\",\n \"args\": [\n {\n \"name\": \"offset\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"data\",\n \"type\": \"byte[]\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"deleteBoxedContract\": {\n \"signature\": \"deleteBoxedContract()void\",\n \"selector\": \"d346b1a4\",\n \"args\": [],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"optIn\": {\n \"signature\": \"optIn(pay,uint64)void\",\n \"selector\": \"394eaeb2\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"optInCost\": {\n \"signature\": \"optInCost(uint64)uint64\",\n \"selector\": \"33f78808\",\n \"args\": [\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"updateAkitaDAOEscrow\": {\n \"signature\": \"updateAkitaDAOEscrow((string,uint64))void\",\n \"selector\": \"ae84cbd8\",\n \"args\": [\n {\n \"name\": \"config\",\n \"type\": \"(string,uint64)\",\n \"struct\": \"EscrowConfig\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"update\": {\n \"signature\": \"update(string)void\",\n \"selector\": \"ea9180dd\",\n \"args\": [\n {\n \"name\": \"newVersion\",\n \"type\": \"string\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"UpdateApplication\"\n ]\n },\n \"updateAkitaDAO\": {\n \"signature\": \"updateAkitaDAO(uint64)void\",\n \"selector\": \"33e92c94\",\n \"args\": [\n {\n \"name\": \"akitaDAO\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"opUp\": {\n \"signature\": \"opUp()void\",\n \"selector\": \"854dede0\",\n \"args\": [],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n }\n },\n \"events\": {},\n \"structs\": {\n \"RaffleMBRData\": [\n {\n \"name\": \"entries\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"weights\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"entriesByAddress\",\n \"type\": \"uint64\"\n }\n ],\n \"EscrowConfig\": [\n {\n \"name\": \"name\",\n \"type\": \"string\"\n },\n {\n \"name\": \"app\",\n \"type\": \"uint64\"\n }\n ]\n }\n },\n \"poll\": {\n \"name\": \"Poll\",\n \"global\": {\n \"type\": {\n \"key\": \"type\",\n \"type\": \"uint8\"\n },\n \"gateID\": {\n \"key\": \"gate_id\",\n \"type\": \"AVMUint64\"\n },\n \"endTime\": {\n \"key\": \"end_time\",\n \"type\": \"AVMUint64\"\n },\n \"optionCount\": {\n \"key\": \"option_count\",\n \"type\": \"AVMUint64\"\n },\n \"maxSelected\": {\n \"key\": \"max_selected\",\n \"type\": \"AVMUint64\"\n },\n \"boxCount\": {\n \"key\": \"box_count\",\n \"type\": \"AVMUint64\"\n },\n \"funder\": {\n \"key\": \"funder\",\n \"type\": \"FunderInfo\"\n },\n \"question\": {\n \"key\": \"question\",\n \"type\": \"AVMString\"\n },\n \"optionOne\": {\n \"key\": \"option_one\",\n \"type\": \"AVMString\"\n },\n \"optionTwo\": {\n \"key\": \"option_two\",\n \"type\": \"AVMString\"\n },\n \"optionThree\": {\n \"key\": \"option_three\",\n \"type\": \"AVMString\"\n },\n \"optionFour\": {\n \"key\": \"option_four\",\n \"type\": \"AVMString\"\n },\n \"optionFive\": {\n \"key\": \"option_five\",\n \"type\": \"AVMString\"\n },\n \"votesOne\": {\n \"key\": \"votes_one\",\n \"type\": \"AVMUint64\"\n },\n \"votesTwo\": {\n \"key\": \"votes_two\",\n \"type\": \"AVMUint64\"\n },\n \"votesThree\": {\n \"key\": \"votes_three\",\n \"type\": \"AVMUint64\"\n },\n \"votesFour\": {\n \"key\": \"votes_four\",\n \"type\": \"AVMUint64\"\n },\n \"votesFive\": {\n \"key\": \"votes_five\",\n \"type\": \"AVMUint64\"\n },\n \"version\": {\n \"key\": \"version\",\n \"type\": \"AVMString\"\n },\n \"akitaDAO\": {\n \"key\": \"akita_dao\",\n \"type\": \"AVMUint64\"\n }\n },\n \"boxes\": {\n \"votes\": {\n \"prefix\": \"\",\n \"keyType\": \"address\",\n \"valueType\": \"AVMBytes\"\n }\n },\n \"methods\": {\n \"create\": {\n \"signature\": \"create(uint64,uint8,uint64,uint64,(address,uint64),string,string[],uint64)void\",\n \"selector\": \"95aaf5eb\",\n \"args\": [\n {\n \"name\": \"akitaDAO\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"type\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"endTime\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"maxSelected\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"funder\",\n \"type\": \"(address,uint64)\",\n \"struct\": \"FunderInfo\"\n },\n {\n \"name\": \"question\",\n \"type\": \"string\"\n },\n {\n \"name\": \"options\",\n \"type\": \"string[]\"\n },\n {\n \"name\": \"gateID\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"create:NoOp\"\n ]\n },\n \"deleteBoxes\": {\n \"signature\": \"deleteBoxes(address[])void\",\n \"selector\": \"e1419080\",\n \"args\": [\n {\n \"name\": \"addresses\",\n \"type\": \"address[]\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"deleteApplication\": {\n \"signature\": \"deleteApplication()void\",\n \"selector\": \"2487c32c\",\n \"args\": [],\n \"returns\": \"void\",\n \"actions\": [\n \"DeleteApplication\"\n ]\n },\n \"gatedVote\": {\n \"signature\": \"gatedVote(pay,appl,uint64[])void\",\n \"selector\": \"5bcf9100\",\n \"args\": [\n {\n \"name\": \"mbrPayment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"gateTxn\",\n \"type\": \"appl\"\n },\n {\n \"name\": \"votes\",\n \"type\": \"uint64[]\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"vote\": {\n \"signature\": \"vote(pay,uint64[])void\",\n \"selector\": \"dd309c7b\",\n \"args\": [\n {\n \"name\": \"mbrPayment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"votes\",\n \"type\": \"uint64[]\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"hasVoted\": {\n \"signature\": \"hasVoted(address)bool\",\n \"selector\": \"5a7f4932\",\n \"args\": [\n {\n \"name\": \"user\",\n \"type\": \"address\"\n }\n ],\n \"returns\": \"bool\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"updateAkitaDAO\": {\n \"signature\": \"updateAkitaDAO(uint64)void\",\n \"selector\": \"33e92c94\",\n \"args\": [\n {\n \"name\": \"akitaDAO\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"opUp\": {\n \"signature\": \"opUp()void\",\n \"selector\": \"854dede0\",\n \"args\": [],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n }\n },\n \"events\": {\n \"PollFinalized\": {\n \"signature\": \"PollFinalized(uint64,uint64,uint64,uint64,uint64,uint64,uint64)\",\n \"selector\": \"c1f30300\",\n \"args\": [\n {\n \"name\": \"endTime\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"optionCount\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"votesOne\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"votesTwo\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"votesThree\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"votesFour\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"votesFive\",\n \"type\": \"uint64\"\n }\n ]\n }\n },\n \"structs\": {\n \"FunderInfo\": [\n {\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint64\"\n }\n ]\n }\n },\n \"pollFactory\": {\n \"name\": \"PollFactory\",\n \"global\": {\n \"childContractVersion\": {\n \"key\": \"child_contract_version\",\n \"type\": \"AVMString\"\n },\n \"akitaDAOEscrow\": {\n \"key\": \"akita_escrow\",\n \"type\": \"EscrowConfig\"\n },\n \"version\": {\n \"key\": \"version\",\n \"type\": \"AVMString\"\n },\n \"akitaDAO\": {\n \"key\": \"akita_dao\",\n \"type\": \"AVMUint64\"\n }\n },\n \"boxes\": {},\n \"methods\": {\n \"create\": {\n \"signature\": \"create(string,string,uint64,(string,uint64))void\",\n \"selector\": \"81153628\",\n \"args\": [\n {\n \"name\": \"version\",\n \"type\": \"string\"\n },\n {\n \"name\": \"childVersion\",\n \"type\": \"string\"\n },\n {\n \"name\": \"akitaDAO\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"akitaDAOEscrow\",\n \"type\": \"(string,uint64)\",\n \"struct\": \"EscrowConfig\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"create:NoOp\"\n ]\n },\n \"new\": {\n \"signature\": \"new(pay,uint8,uint64,uint64,string,string[],uint64)uint64\",\n \"selector\": \"119bc698\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"type\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"endTime\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"maxSelected\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"question\",\n \"type\": \"string\"\n },\n {\n \"name\": \"options\",\n \"type\": \"string[]\"\n },\n {\n \"name\": \"gateID\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"deletePoll\": {\n \"signature\": \"deletePoll(uint64)void\",\n \"selector\": \"44d13a74\",\n \"args\": [\n {\n \"name\": \"appId\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"newPollCost\": {\n \"signature\": \"newPollCost()uint64\",\n \"selector\": \"83661703\",\n \"args\": [],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"initBoxedContract\": {\n \"signature\": \"initBoxedContract(string,uint64)void\",\n \"selector\": \"c53b32cc\",\n \"args\": [\n {\n \"name\": \"version\",\n \"type\": \"string\"\n },\n {\n \"name\": \"size\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"loadBoxedContract\": {\n \"signature\": \"loadBoxedContract(uint64,byte[])void\",\n \"selector\": \"dca2d862\",\n \"args\": [\n {\n \"name\": \"offset\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"data\",\n \"type\": \"byte[]\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"deleteBoxedContract\": {\n \"signature\": \"deleteBoxedContract()void\",\n \"selector\": \"d346b1a4\",\n \"args\": [],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"optIn\": {\n \"signature\": \"optIn(pay,uint64)void\",\n \"selector\": \"394eaeb2\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"optInCost\": {\n \"signature\": \"optInCost(uint64)uint64\",\n \"selector\": \"33f78808\",\n \"args\": [\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"updateAkitaDAOEscrow\": {\n \"signature\": \"updateAkitaDAOEscrow((string,uint64))void\",\n \"selector\": \"ae84cbd8\",\n \"args\": [\n {\n \"name\": \"config\",\n \"type\": \"(string,uint64)\",\n \"struct\": \"EscrowConfig\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"update\": {\n \"signature\": \"update(string)void\",\n \"selector\": \"ea9180dd\",\n \"args\": [\n {\n \"name\": \"newVersion\",\n \"type\": \"string\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"UpdateApplication\"\n ]\n },\n \"updateAkitaDAO\": {\n \"signature\": \"updateAkitaDAO(uint64)void\",\n \"selector\": \"33e92c94\",\n \"args\": [\n {\n \"name\": \"akitaDAO\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"opUp\": {\n \"signature\": \"opUp()void\",\n \"selector\": \"854dede0\",\n \"args\": [],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n }\n },\n \"events\": {},\n \"structs\": {\n \"EscrowConfig\": [\n {\n \"name\": \"name\",\n \"type\": \"string\"\n },\n {\n \"name\": \"app\",\n \"type\": \"uint64\"\n }\n ]\n }\n },\n \"prizeBox\": {\n \"name\": \"PrizeBox\",\n \"global\": {\n \"owner\": {\n \"key\": \"owner\",\n \"type\": \"address\"\n },\n \"optinCount\": {\n \"key\": \"optin_count\",\n \"type\": \"AVMUint64\"\n },\n \"funder\": {\n \"key\": \"funder\",\n \"type\": \"FunderInfo\"\n }\n },\n \"boxes\": {},\n \"methods\": {\n \"create\": {\n \"signature\": \"create(address,(address,uint64))void\",\n \"selector\": \"84caaf2a\",\n \"args\": [\n {\n \"name\": \"owner\",\n \"type\": \"address\"\n },\n {\n \"name\": \"funder\",\n \"type\": \"(address,uint64)\",\n \"struct\": \"FunderInfo\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"create:NoOp\"\n ]\n },\n \"deleteApplication\": {\n \"signature\": \"deleteApplication(address)void\",\n \"selector\": \"215215e0\",\n \"args\": [\n {\n \"name\": \"caller\",\n \"type\": \"address\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"DeleteApplication\"\n ]\n },\n \"optin\": {\n \"signature\": \"optin(pay,uint64)void\",\n \"selector\": \"3ea11832\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"transfer\": {\n \"signature\": \"transfer(address)void\",\n \"selector\": \"adf92ae4\",\n \"args\": [\n {\n \"name\": \"newOwner\",\n \"type\": \"address\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"withdraw\": {\n \"signature\": \"withdraw((uint64,uint64)[])void\",\n \"selector\": \"44200fbd\",\n \"args\": [\n {\n \"name\": \"assets\",\n \"type\": \"(uint64,uint64)[]\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n }\n },\n \"events\": {\n \"PrizeBoxFinalized\": {\n \"signature\": \"PrizeBoxFinalized(address)\",\n \"selector\": \"bc90ead3\",\n \"args\": [\n {\n \"name\": \"owner\",\n \"type\": \"address\"\n }\n ]\n }\n },\n \"structs\": {\n \"FunderInfo\": [\n {\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint64\"\n }\n ]\n }\n },\n \"prizeBoxFactory\": {\n \"name\": \"PrizeBoxFactory\",\n \"global\": {\n \"childContractVersion\": {\n \"key\": \"child_contract_version\",\n \"type\": \"AVMString\"\n },\n \"akitaDAOEscrow\": {\n \"key\": \"akita_escrow\",\n \"type\": \"EscrowConfig\"\n },\n \"version\": {\n \"key\": \"version\",\n \"type\": \"AVMString\"\n },\n \"akitaDAO\": {\n \"key\": \"akita_dao\",\n \"type\": \"AVMUint64\"\n }\n },\n \"boxes\": {},\n \"methods\": {\n \"create\": {\n \"signature\": \"create(string,uint64)void\",\n \"selector\": \"cd9ad67e\",\n \"args\": [\n {\n \"name\": \"version\",\n \"type\": \"string\"\n },\n {\n \"name\": \"akitaDAO\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"create:NoOp\"\n ]\n },\n \"mint\": {\n \"signature\": \"mint(pay,address)uint64\",\n \"selector\": \"3decb140\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"address\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"deletePrizeBox\": {\n \"signature\": \"deletePrizeBox(uint64)void\",\n \"selector\": \"6de1cde4\",\n \"args\": [\n {\n \"name\": \"appId\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"mintCost\": {\n \"signature\": \"mintCost()uint64\",\n \"selector\": \"d34f86fe\",\n \"args\": [],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"initBoxedContract\": {\n \"signature\": \"initBoxedContract(string,uint64)void\",\n \"selector\": \"c53b32cc\",\n \"args\": [\n {\n \"name\": \"version\",\n \"type\": \"string\"\n },\n {\n \"name\": \"size\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"loadBoxedContract\": {\n \"signature\": \"loadBoxedContract(uint64,byte[])void\",\n \"selector\": \"dca2d862\",\n \"args\": [\n {\n \"name\": \"offset\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"data\",\n \"type\": \"byte[]\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"deleteBoxedContract\": {\n \"signature\": \"deleteBoxedContract()void\",\n \"selector\": \"d346b1a4\",\n \"args\": [],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"optIn\": {\n \"signature\": \"optIn(pay,uint64)void\",\n \"selector\": \"394eaeb2\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"optInCost\": {\n \"signature\": \"optInCost(uint64)uint64\",\n \"selector\": \"33f78808\",\n \"args\": [\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"updateAkitaDAOEscrow\": {\n \"signature\": \"updateAkitaDAOEscrow((string,uint64))void\",\n \"selector\": \"ae84cbd8\",\n \"args\": [\n {\n \"name\": \"config\",\n \"type\": \"(string,uint64)\",\n \"struct\": \"EscrowConfig\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"update\": {\n \"signature\": \"update(string)void\",\n \"selector\": \"ea9180dd\",\n \"args\": [\n {\n \"name\": \"newVersion\",\n \"type\": \"string\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"UpdateApplication\"\n ]\n },\n \"updateAkitaDAO\": {\n \"signature\": \"updateAkitaDAO(uint64)void\",\n \"selector\": \"33e92c94\",\n \"args\": [\n {\n \"name\": \"akitaDAO\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"opUp\": {\n \"signature\": \"opUp()void\",\n \"selector\": \"854dede0\",\n \"args\": [],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n }\n },\n \"events\": {},\n \"structs\": {\n \"EscrowConfig\": [\n {\n \"name\": \"name\",\n \"type\": \"string\"\n },\n {\n \"name\": \"app\",\n \"type\": \"uint64\"\n }\n ]\n }\n },\n \"stakingPool\": {\n \"name\": \"StakingPool\",\n \"global\": {\n \"status\": {\n \"key\": \"status\",\n \"type\": \"uint8\"\n },\n \"title\": {\n \"key\": \"title\",\n \"type\": \"AVMString\"\n },\n \"type\": {\n \"key\": \"type\",\n \"type\": \"uint8\"\n },\n \"signupTimestamp\": {\n \"key\": \"signup_timestamp\",\n \"type\": \"AVMUint64\"\n },\n \"allowLateSignups\": {\n \"key\": \"allow_late_signups\",\n \"type\": \"AVMUint64\"\n },\n \"startTimestamp\": {\n \"key\": \"start_timestamp\",\n \"type\": \"AVMUint64\"\n },\n \"endTimestamp\": {\n \"key\": \"end_timestamp\",\n \"type\": \"AVMUint64\"\n },\n \"maxEntries\": {\n \"key\": \"max_entries\",\n \"type\": \"AVMUint64\"\n },\n \"entryID\": {\n \"key\": \"entry_count\",\n \"type\": \"AVMUint64\"\n },\n \"rewardID\": {\n \"key\": \"reward_count\",\n \"type\": \"AVMUint64\"\n },\n \"stakeKey\": {\n \"key\": \"stake_key\",\n \"type\": \"RootKey\"\n },\n \"minimumStakeAmount\": {\n \"key\": \"minimum_stake_amount\",\n \"type\": \"AVMUint64\"\n },\n \"gateID\": {\n \"key\": \"gate_id\",\n \"type\": \"AVMUint64\"\n },\n \"creator\": {\n \"key\": \"creator\",\n \"type\": \"address\"\n },\n \"marketplace\": {\n \"key\": \"marketplace\",\n \"type\": \"address\"\n },\n \"marketplaceRoyalties\": {\n \"key\": \"marketplace_royalties\",\n \"type\": \"AVMUint64\"\n },\n \"akitaRoyalty\": {\n \"key\": \"akita_royalty\",\n \"type\": \"AVMUint64\"\n },\n \"salt\": {\n \"key\": \"salt\",\n \"type\": \"AVMBytes\"\n },\n \"akitaDAOEscrow\": {\n \"key\": \"akita_escrow\",\n \"type\": \"EscrowConfig\"\n },\n \"version\": {\n \"key\": \"version\",\n \"type\": \"AVMString\"\n },\n \"akitaDAO\": {\n \"key\": \"akita_dao\",\n \"type\": \"AVMUint64\"\n },\n \"funder\": {\n \"key\": \"funder\",\n \"type\": \"FunderInfo\"\n }\n },\n \"boxes\": {\n \"entries\": {\n \"prefix\": \"e\",\n \"keyType\": \"uint64\",\n \"valueType\": \"EntryData\"\n },\n \"uniques\": {\n \"prefix\": \"u\",\n \"keyType\": \"address\",\n \"valueType\": \"uint64\"\n },\n \"entriesByAddress\": {\n \"prefix\": \"a\",\n \"keyType\": \"EntryKey\",\n \"valueType\": \"uint64\"\n },\n \"rewards\": {\n \"prefix\": \"r\",\n \"keyType\": \"uint64\",\n \"valueType\": \"Reward\"\n },\n \"disbursements\": {\n \"prefix\": \"d\",\n \"keyType\": \"uint64\",\n \"valueType\": \"AVMBytes\"\n },\n \"budgets\": {\n \"prefix\": \"b\",\n \"keyType\": \"uint64\",\n \"valueType\": \"uint64\"\n },\n \"committed\": {\n \"prefix\": \"c\",\n \"keyType\": \"uint64\",\n \"valueType\": \"uint64\"\n },\n \"roundPaid\": {\n \"prefix\": \"p\",\n \"keyType\": \"uint64\",\n \"valueType\": \"uint64\"\n },\n \"roundRewards\": {\n \"prefix\": \"w\",\n \"keyType\": \"uint64\",\n \"valueType\": \"uint64\"\n }\n },\n \"methods\": {\n \"create\": {\n \"signature\": \"create(string,uint8,address,(address,uint64),address,(address,string),uint64,bool,uint64,uint64,uint64,(string,uint64))void\",\n \"selector\": \"644951f1\",\n \"args\": [\n {\n \"name\": \"title\",\n \"type\": \"string\"\n },\n {\n \"name\": \"type\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"address\"\n },\n {\n \"name\": \"funder\",\n \"type\": \"(address,uint64)\",\n \"struct\": \"FunderInfo\"\n },\n {\n \"name\": \"marketplace\",\n \"type\": \"address\"\n },\n {\n \"name\": \"stakeKey\",\n \"type\": \"(address,string)\",\n \"struct\": \"RootKey\"\n },\n {\n \"name\": \"minimumStakeAmount\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"allowLateSignups\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"gateID\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"maxEntries\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"akitaDAO\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"akitaDAOEscrow\",\n \"type\": \"(string,uint64)\",\n \"struct\": \"EscrowConfig\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"create:NoOp\"\n ]\n },\n \"init\": {\n \"signature\": \"init(uint64)void\",\n \"selector\": \"1bcde52d\",\n \"args\": [\n {\n \"name\": \"akitaRoyalty\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"delete\": {\n \"signature\": \"delete(address)void\",\n \"selector\": \"ab8b213a\",\n \"args\": [\n {\n \"name\": \"caller\",\n \"type\": \"address\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"DeleteApplication\"\n ]\n },\n \"optIn\": {\n \"signature\": \"optIn(pay,uint64)void\",\n \"selector\": \"394eaeb2\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"closeOutAsset\": {\n \"signature\": \"closeOutAsset(uint64)void\",\n \"selector\": \"443bce3a\",\n \"args\": [\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"addReward\": {\n \"signature\": \"addReward(pay,(uint64,uint8,uint64,uint64,uint64,uint64))void\",\n \"selector\": \"71b957af\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"reward\",\n \"type\": \"(uint64,uint8,uint64,uint64,uint64,uint64)\",\n \"struct\": \"AddRewardParams\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"addRewardAsa\": {\n \"signature\": \"addRewardAsa(pay,axfer,(uint64,uint8,uint64,uint64,uint64,uint64))void\",\n \"selector\": \"a00ccec6\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"assetXfer\",\n \"type\": \"axfer\"\n },\n {\n \"name\": \"reward\",\n \"type\": \"(uint64,uint8,uint64,uint64,uint64,uint64)\",\n \"struct\": \"AddRewardParams\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"assignBudget\": {\n \"signature\": \"assignBudget(uint64,uint64)void\",\n \"selector\": \"67730a38\",\n \"args\": [\n {\n \"name\": \"rewardID\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"withdrawReward\": {\n \"signature\": \"withdrawReward(uint64,uint64)void\",\n \"selector\": \"62eeb107\",\n \"args\": [\n {\n \"name\": \"rewardID\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"closeReward\": {\n \"signature\": \"closeReward(uint64)void\",\n \"selector\": \"8eabef2c\",\n \"args\": [\n {\n \"name\": \"rewardID\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"finalize\": {\n \"signature\": \"finalize(uint64,uint64,uint64)void\",\n \"selector\": \"181e8291\",\n \"args\": [\n {\n \"name\": \"signupTimestamp\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"startTimestamp\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"endTimestamp\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"endPool\": {\n \"signature\": \"endPool()void\",\n \"selector\": \"daa2c79a\",\n \"args\": [],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"gatedEnter\": {\n \"signature\": \"gatedEnter(pay,appl,(uint64,uint64,byte[32][])[])void\",\n \"selector\": \"fdcfdff6\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"gateTxn\",\n \"type\": \"appl\"\n },\n {\n \"name\": \"entries\",\n \"type\": \"(uint64,uint64,byte[32][])[]\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"enter\": {\n \"signature\": \"enter(pay,(uint64,uint64,byte[32][])[])void\",\n \"selector\": \"b82ed1b3\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"entries\",\n \"type\": \"(uint64,uint64,byte[32][])[]\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"removeEntry\": {\n \"signature\": \"removeEntry(address,uint64)void\",\n \"selector\": \"8d9b96dc\",\n \"args\": [\n {\n \"name\": \"address\",\n \"type\": \"address\"\n },\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"startDisbursement\": {\n \"signature\": \"startDisbursement(uint64)void\",\n \"selector\": \"a9418d37\",\n \"args\": [\n {\n \"name\": \"rewardID\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"raffle\": {\n \"signature\": \"raffle(uint64)void\",\n \"selector\": \"fc699cb3\",\n \"args\": [\n {\n \"name\": \"rewardID\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"disburseRewards\": {\n \"signature\": \"disburseRewards(uint64,uint64)void\",\n \"selector\": \"6e76b2ca\",\n \"args\": [\n {\n \"name\": \"rewardID\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"iterationAmount\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"finalizeDistribution\": {\n \"signature\": \"finalizeDistribution(uint64)void\",\n \"selector\": \"cdb0ac6a\",\n \"args\": [\n {\n \"name\": \"rewardID\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"abortRound\": {\n \"signature\": \"abortRound(uint64,uint64)void\",\n \"selector\": \"ac6dffc2\",\n \"args\": [\n {\n \"name\": \"rewardID\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"mode\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"reclaimRound\": {\n \"signature\": \"reclaimRound(uint64,(address,uint64)[],bool)void\",\n \"selector\": \"17fe6f32\",\n \"args\": [\n {\n \"name\": \"disbursementID\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"reclaims\",\n \"type\": \"(address,uint64)[]\"\n },\n {\n \"name\": \"close\",\n \"type\": \"bool\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"check\": {\n \"signature\": \"check(address,uint64)(bool,uint64)\",\n \"selector\": \"b223d35d\",\n \"args\": [\n {\n \"name\": \"address\",\n \"type\": \"address\"\n },\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"(bool,uint64)\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"gateCheck\": {\n \"signature\": \"gateCheck(address,uint64)void\",\n \"selector\": \"13803dfd\",\n \"args\": [\n {\n \"name\": \"address\",\n \"type\": \"address\"\n },\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"enterCost\": {\n \"signature\": \"enterCost(address,(uint64,uint64,byte[32][])[])uint64\",\n \"selector\": \"077a0ff2\",\n \"args\": [\n {\n \"name\": \"address\",\n \"type\": \"address\"\n },\n {\n \"name\": \"entries\",\n \"type\": \"(uint64,uint64,byte[32][])[]\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"optInCost\": {\n \"signature\": \"optInCost(uint64)uint64\",\n \"selector\": \"33f78808\",\n \"args\": [\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"addRewardCost\": {\n \"signature\": \"addRewardCost(uint64,uint64)uint64\",\n \"selector\": \"13ca1011\",\n \"args\": [\n {\n \"name\": \"winnerCount\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"getRewardBudget\": {\n \"signature\": \"getRewardBudget(uint64)uint64\",\n \"selector\": \"92e68216\",\n \"args\": [\n {\n \"name\": \"rewardID\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"getFreeFunds\": {\n \"signature\": \"getFreeFunds(uint64)uint64\",\n \"selector\": \"0b41393f\",\n \"args\": [\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"getOpenRounds\": {\n \"signature\": \"getOpenRounds()uint64\",\n \"selector\": \"bd82b9f6\",\n \"args\": [],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"signUpsOpen\": {\n \"signature\": \"signUpsOpen()bool\",\n \"selector\": \"592ee341\",\n \"args\": [],\n \"returns\": \"bool\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"isLive\": {\n \"signature\": \"isLive()bool\",\n \"selector\": \"8fa4a160\",\n \"args\": [],\n \"returns\": \"bool\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"isEntered\": {\n \"signature\": \"isEntered(address)bool\",\n \"selector\": \"e3377342\",\n \"args\": [\n {\n \"name\": \"address\",\n \"type\": \"address\"\n }\n ],\n \"returns\": \"bool\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"getState\": {\n \"signature\": \"getState()(uint8,string,uint8,uint64,uint64,bool,uint64,uint64,uint64,uint64,(address,string),uint64,uint64,address)\",\n \"selector\": \"9a2f21b4\",\n \"args\": [],\n \"returns\": \"(uint8,string,uint8,uint64,uint64,bool,uint64,uint64,uint64,uint64,(address,string),uint64,uint64,address)\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"mbr\": {\n \"signature\": \"mbr(uint64)(uint64,uint64,uint64,uint64,uint64)\",\n \"selector\": \"a4b3e789\",\n \"args\": [\n {\n \"name\": \"winningTickets\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"(uint64,uint64,uint64,uint64,uint64)\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"updateAkitaDAOEscrow\": {\n \"signature\": \"updateAkitaDAOEscrow((string,uint64))void\",\n \"selector\": \"ae84cbd8\",\n \"args\": [\n {\n \"name\": \"config\",\n \"type\": \"(string,uint64)\",\n \"struct\": \"EscrowConfig\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"update\": {\n \"signature\": \"update(string)void\",\n \"selector\": \"ea9180dd\",\n \"args\": [\n {\n \"name\": \"newVersion\",\n \"type\": \"string\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"UpdateApplication\"\n ]\n },\n \"updateAkitaDAO\": {\n \"signature\": \"updateAkitaDAO(uint64)void\",\n \"selector\": \"33e92c94\",\n \"args\": [\n {\n \"name\": \"akitaDAO\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"opUp\": {\n \"signature\": \"opUp()void\",\n \"selector\": \"854dede0\",\n \"args\": [],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n }\n },\n \"events\": {},\n \"structs\": {\n \"ObjectC3416591\": [\n {\n \"name\": \"valid\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"balance\",\n \"type\": \"uint64\"\n }\n ],\n \"RootKey\": [\n {\n \"name\": \"address\",\n \"type\": \"address\"\n },\n {\n \"name\": \"name\",\n \"type\": \"string\"\n }\n ],\n \"AddRewardParams\": [\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"distribution\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"rate\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"expiration\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"interval\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"winnerCount\",\n \"type\": \"uint64\"\n }\n ],\n \"EntryData\": [\n {\n \"name\": \"address\",\n \"type\": \"address\"\n },\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"quantity\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"gateArgs\",\n \"type\": \"byte[][]\"\n },\n {\n \"name\": \"disqualified\",\n \"type\": \"bool\"\n }\n ],\n \"EntryKey\": [\n {\n \"name\": \"address\",\n \"type\": \"address\"\n },\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n }\n ],\n \"RaffleCursor\": [\n {\n \"name\": \"ticket\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"stake\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"disbursed\",\n \"type\": \"uint64\"\n }\n ],\n \"Reward\": [\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"distribution\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"rate\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"expiration\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"interval\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"qualifiedStakers\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"qualifiedStake\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"royaltyAmount\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"winnerCount\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"winningTickets\",\n \"type\": \"uint64[]\"\n },\n {\n \"name\": \"raffleCursor\",\n \"type\": \"RaffleCursor\"\n },\n {\n \"name\": \"vrfFailureCount\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"phase\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"disbursementCursor\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"activeDisbursementID\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"activeDisbursementRoundStart\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"lastDisbursementTimestamp\",\n \"type\": \"uint64\"\n }\n ],\n \"StakingPoolMBRData\": [\n {\n \"name\": \"entries\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"uniques\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"entriesByAddress\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"rewards\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"disbursements\",\n \"type\": \"uint64\"\n }\n ],\n \"StakingPoolState\": [\n {\n \"name\": \"status\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"title\",\n \"type\": \"string\"\n },\n {\n \"name\": \"type\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"signupTimestamp\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"startTimestamp\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"allowLateSignups\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"endTimestamp\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"maxEntries\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"entryCount\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"rewardCount\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"stakeKey\",\n \"type\": \"RootKey\"\n },\n {\n \"name\": \"minimumStakeAmount\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"gateID\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"address\"\n }\n ],\n \"EscrowConfig\": [\n {\n \"name\": \"name\",\n \"type\": \"string\"\n },\n {\n \"name\": \"app\",\n \"type\": \"uint64\"\n }\n ],\n \"FunderInfo\": [\n {\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint64\"\n }\n ]\n }\n },\n \"stakingPoolFactory\": {\n \"name\": \"StakingPoolFactory\",\n \"global\": {\n \"childContractVersion\": {\n \"key\": \"child_contract_version\",\n \"type\": \"AVMString\"\n },\n \"akitaDAOEscrow\": {\n \"key\": \"akita_escrow\",\n \"type\": \"EscrowConfig\"\n },\n \"version\": {\n \"key\": \"version\",\n \"type\": \"AVMString\"\n },\n \"akitaDAO\": {\n \"key\": \"akita_dao\",\n \"type\": \"AVMUint64\"\n }\n },\n \"boxes\": {},\n \"methods\": {\n \"create\": {\n \"signature\": \"create(string,string,uint64,(string,uint64))void\",\n \"selector\": \"81153628\",\n \"args\": [\n {\n \"name\": \"version\",\n \"type\": \"string\"\n },\n {\n \"name\": \"childVersion\",\n \"type\": \"string\"\n },\n {\n \"name\": \"akitaDAO\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"akitaDAOEscrow\",\n \"type\": \"(string,uint64)\",\n \"struct\": \"EscrowConfig\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"create:NoOp\"\n ]\n },\n \"newPool\": {\n \"signature\": \"newPool(pay,string,uint8,address,(address,string),uint64,bool,uint64,uint64)uint64\",\n \"selector\": \"2b25ac89\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"title\",\n \"type\": \"string\"\n },\n {\n \"name\": \"type\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"marketplace\",\n \"type\": \"address\"\n },\n {\n \"name\": \"stakeKey\",\n \"type\": \"(address,string)\",\n \"struct\": \"RootKey\"\n },\n {\n \"name\": \"minimumStakeAmount\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"allowLateSignups\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"gateID\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"maxEntries\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"deletePool\": {\n \"signature\": \"deletePool(uint64)void\",\n \"selector\": \"c7478f9d\",\n \"args\": [\n {\n \"name\": \"appId\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"newPoolCost\": {\n \"signature\": \"newPoolCost()uint64\",\n \"selector\": \"470c6ed7\",\n \"args\": [],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"mbr\": {\n \"signature\": \"mbr(uint64)(uint64,uint64,uint64,uint64,uint64)\",\n \"selector\": \"a4b3e789\",\n \"args\": [\n {\n \"name\": \"winningTickets\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"(uint64,uint64,uint64,uint64,uint64)\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"initBoxedContract\": {\n \"signature\": \"initBoxedContract(string,uint64)void\",\n \"selector\": \"c53b32cc\",\n \"args\": [\n {\n \"name\": \"version\",\n \"type\": \"string\"\n },\n {\n \"name\": \"size\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"loadBoxedContract\": {\n \"signature\": \"loadBoxedContract(uint64,byte[])void\",\n \"selector\": \"dca2d862\",\n \"args\": [\n {\n \"name\": \"offset\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"data\",\n \"type\": \"byte[]\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"deleteBoxedContract\": {\n \"signature\": \"deleteBoxedContract()void\",\n \"selector\": \"d346b1a4\",\n \"args\": [],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"optIn\": {\n \"signature\": \"optIn(pay,uint64)void\",\n \"selector\": \"394eaeb2\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"optInCost\": {\n \"signature\": \"optInCost(uint64)uint64\",\n \"selector\": \"33f78808\",\n \"args\": [\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"updateAkitaDAOEscrow\": {\n \"signature\": \"updateAkitaDAOEscrow((string,uint64))void\",\n \"selector\": \"ae84cbd8\",\n \"args\": [\n {\n \"name\": \"config\",\n \"type\": \"(string,uint64)\",\n \"struct\": \"EscrowConfig\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"update\": {\n \"signature\": \"update(string)void\",\n \"selector\": \"ea9180dd\",\n \"args\": [\n {\n \"name\": \"newVersion\",\n \"type\": \"string\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"UpdateApplication\"\n ]\n },\n \"updateAkitaDAO\": {\n \"signature\": \"updateAkitaDAO(uint64)void\",\n \"selector\": \"33e92c94\",\n \"args\": [\n {\n \"name\": \"akitaDAO\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"opUp\": {\n \"signature\": \"opUp()void\",\n \"selector\": \"854dede0\",\n \"args\": [],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n }\n },\n \"events\": {},\n \"structs\": {\n \"RootKey\": [\n {\n \"name\": \"address\",\n \"type\": \"address\"\n },\n {\n \"name\": \"name\",\n \"type\": \"string\"\n }\n ],\n \"StakingPoolMBRData\": [\n {\n \"name\": \"entries\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"uniques\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"entriesByAddress\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"rewards\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"disbursements\",\n \"type\": \"uint64\"\n }\n ],\n \"EscrowConfig\": [\n {\n \"name\": \"name\",\n \"type\": \"string\"\n },\n {\n \"name\": \"app\",\n \"type\": \"uint64\"\n }\n ]\n }\n },\n \"rewards\": {\n \"name\": \"Rewards\",\n \"global\": {\n \"disbursementID\": {\n \"key\": \"disbursement_id\",\n \"type\": \"AVMUint64\"\n },\n \"version\": {\n \"key\": \"version\",\n \"type\": \"AVMString\"\n },\n \"akitaDAO\": {\n \"key\": \"akita_dao\",\n \"type\": \"AVMUint64\"\n }\n },\n \"boxes\": {\n \"disbursements\": {\n \"prefix\": \"d\",\n \"keyType\": \"uint64\",\n \"valueType\": \"DisbursementDetails\"\n },\n \"userAllocations\": {\n \"prefix\": \"u\",\n \"keyType\": \"UserAllocationsKey\",\n \"valueType\": \"uint64\"\n }\n },\n \"methods\": {\n \"create\": {\n \"signature\": \"create(string,uint64)void\",\n \"selector\": \"cd9ad67e\",\n \"args\": [\n {\n \"name\": \"version\",\n \"type\": \"string\"\n },\n {\n \"name\": \"akitaDAO\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"create:NoOp\"\n ]\n },\n \"fundMbrCredits\": {\n \"signature\": \"fundMbrCredits(uint64,pay)void\",\n \"selector\": \"6661205a\",\n \"args\": [\n {\n \"name\": \"id\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"withdrawMbrCredits\": {\n \"signature\": \"withdrawMbrCredits(uint64,uint64)void\",\n \"selector\": \"d61a69fa\",\n \"args\": [\n {\n \"name\": \"id\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"createDisbursement\": {\n \"signature\": \"createDisbursement(pay,string,uint64,uint64,string)uint64\",\n \"selector\": \"1c9ebbdb\",\n \"args\": [\n {\n \"name\": \"mbrPayment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"title\",\n \"type\": \"string\"\n },\n {\n \"name\": \"timeToUnlock\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"expiration\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"note\",\n \"type\": \"string\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"editDisbursement\": {\n \"signature\": \"editDisbursement(uint64,string,uint64,uint64,string)void\",\n \"selector\": \"8f49262d\",\n \"args\": [\n {\n \"name\": \"id\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"title\",\n \"type\": \"string\"\n },\n {\n \"name\": \"timeToUnlock\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"expiration\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"note\",\n \"type\": \"string\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"createUserAllocations\": {\n \"signature\": \"createUserAllocations(pay,uint64,(address,uint64)[])void\",\n \"selector\": \"5656acf9\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"id\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"allocations\",\n \"type\": \"(address,uint64)[]\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"createAsaUserAllocations\": {\n \"signature\": \"createAsaUserAllocations(axfer,uint64,(address,uint64)[])void\",\n \"selector\": \"f62cdc2b\",\n \"args\": [\n {\n \"name\": \"assetXfer\",\n \"type\": \"axfer\"\n },\n {\n \"name\": \"id\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"allocations\",\n \"type\": \"(address,uint64)[]\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"createAsaDisbursementFromGroup\": {\n \"signature\": \"createAsaDisbursementFromGroup(uint64,uint64,string,uint64,uint64,string,(address,uint64)[])uint64\",\n \"selector\": \"6f5c10cf\",\n \"args\": [\n {\n \"name\": \"mbrPaymentIndex\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"assetTransferStartIndex\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"title\",\n \"type\": \"string\"\n },\n {\n \"name\": \"timeToUnlock\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"expiration\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"note\",\n \"type\": \"string\"\n },\n {\n \"name\": \"allocations\",\n \"type\": \"(address,uint64)[]\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"finalizeDisbursement\": {\n \"signature\": \"finalizeDisbursement(uint64)void\",\n \"selector\": \"5424a591\",\n \"args\": [\n {\n \"name\": \"id\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"createInstantDisbursement\": {\n \"signature\": \"createInstantDisbursement(pay,uint64,uint64,(address,uint64)[])uint64\",\n \"selector\": \"7b7dc5fc\",\n \"args\": [\n {\n \"name\": \"mbrPayment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"timeToUnlock\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"expiration\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"allocations\",\n \"type\": \"(address,uint64)[]\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"createInstantAsaDisbursement\": {\n \"signature\": \"createInstantAsaDisbursement(pay,axfer,uint64,uint64,(address,uint64)[])uint64\",\n \"selector\": \"af1a14f2\",\n \"args\": [\n {\n \"name\": \"mbrPayment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"assetXfer\",\n \"type\": \"axfer\"\n },\n {\n \"name\": \"timeToUnlock\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"expiration\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"allocations\",\n \"type\": \"(address,uint64)[]\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"claimRewards\": {\n \"signature\": \"claimRewards((uint64,uint64)[])void\",\n \"selector\": \"3ec40aa4\",\n \"args\": [\n {\n \"name\": \"rewards\",\n \"type\": \"(uint64,uint64)[]\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"reclaimRewards\": {\n \"signature\": \"reclaimRewards(uint64,(address,uint64)[])void\",\n \"selector\": \"bd3cd090\",\n \"args\": [\n {\n \"name\": \"id\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"reclaims\",\n \"type\": \"(address,uint64)[]\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"closeDisbursement\": {\n \"signature\": \"closeDisbursement(uint64)void\",\n \"selector\": \"087b4b65\",\n \"args\": [\n {\n \"name\": \"id\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"allocationMbrCreditShortfall\": {\n \"signature\": \"allocationMbrCreditShortfall(uint64,uint64)uint64\",\n \"selector\": \"14969d97\",\n \"args\": [\n {\n \"name\": \"id\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"allocationCount\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"updateAkitaDAO\": {\n \"signature\": \"updateAkitaDAO(uint64)void\",\n \"selector\": \"33e92c94\",\n \"args\": [\n {\n \"name\": \"akitaDAO\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"opUp\": {\n \"signature\": \"opUp()void\",\n \"selector\": \"854dede0\",\n \"args\": [],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"mbr\": {\n \"signature\": \"mbr(string,string)(uint64,uint64)\",\n \"selector\": \"d54bbad9\",\n \"args\": [\n {\n \"name\": \"title\",\n \"type\": \"string\"\n },\n {\n \"name\": \"note\",\n \"type\": \"string\"\n }\n ],\n \"returns\": \"(uint64,uint64)\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"optIn\": {\n \"signature\": \"optIn(pay,uint64)void\",\n \"selector\": \"394eaeb2\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n }\n },\n \"events\": {},\n \"structs\": {\n \"DisbursementDetails\": [\n {\n \"name\": \"creator\",\n \"type\": \"address\"\n },\n {\n \"name\": \"finalized\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"title\",\n \"type\": \"string\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"timeToUnlock\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"expiration\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"allocations\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"distributed\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"mbrCredits\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"usedMbrCredits\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"note\",\n \"type\": \"string\"\n }\n ],\n \"RewardsMBRData\": [\n {\n \"name\": \"disbursements\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"userAllocations\",\n \"type\": \"uint64\"\n }\n ],\n \"UserAllocationsKey\": [\n {\n \"name\": \"address\",\n \"type\": \"address\"\n },\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"disbursementID\",\n \"type\": \"uint64\"\n }\n ]\n }\n },\n \"subscriptions\": {\n \"name\": \"Subscriptions\",\n \"global\": {\n \"passesRepricedAt\": {\n \"key\": \"passes_repriced_at\",\n \"type\": \"AVMUint64\"\n },\n \"akitaDAOEscrow\": {\n \"key\": \"akita_escrow\",\n \"type\": \"EscrowConfig\"\n },\n \"version\": {\n \"key\": \"version\",\n \"type\": \"AVMString\"\n },\n \"akitaDAO\": {\n \"key\": \"akita_dao\",\n \"type\": \"AVMUint64\"\n }\n },\n \"boxes\": {\n \"subscriptions\": {\n \"prefix\": \"s\",\n \"keyType\": \"SubscriptionKey\",\n \"valueType\": \"SubscriptionInfo\"\n },\n \"subscriptionslist\": {\n \"prefix\": \"l\",\n \"keyType\": \"address\",\n \"valueType\": \"uint64\"\n },\n \"services\": {\n \"prefix\": \"o\",\n \"keyType\": \"ServicesKey\",\n \"valueType\": \"Service\"\n },\n \"serviceslist\": {\n \"prefix\": \"m\",\n \"keyType\": \"address\",\n \"valueType\": \"uint64\"\n },\n \"blocks\": {\n \"prefix\": \"b\",\n \"keyType\": \"BlockListKey\",\n \"valueType\": \"AVMBytes\"\n },\n \"passes\": {\n \"prefix\": \"p\",\n \"keyType\": \"SubscriptionKey\",\n \"valueType\": \"address[]\"\n }\n },\n \"methods\": {\n \"create\": {\n \"signature\": \"create(string,uint64,(string,uint64))void\",\n \"selector\": \"5ad9f4c6\",\n \"args\": [\n {\n \"name\": \"version\",\n \"type\": \"string\"\n },\n {\n \"name\": \"akitaDAO\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"akitaDAOEscrow\",\n \"type\": \"(string,uint64)\",\n \"struct\": \"EscrowConfig\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"create:NoOp\"\n ]\n },\n \"newService\": {\n \"signature\": \"newService(pay,uint64,uint64,uint64,uint64,uint64,address,string,byte[36],uint8,byte[3])uint64\",\n \"selector\": \"9b0f89d6\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"interval\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"passes\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"gateID\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"payoutAddress\",\n \"type\": \"address\"\n },\n {\n \"name\": \"title\",\n \"type\": \"string\"\n },\n {\n \"name\": \"bannerImage\",\n \"type\": \"byte[36]\"\n },\n {\n \"name\": \"highlightMessage\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"highlightColor\",\n \"type\": \"byte[3]\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"setServiceDescription\": {\n \"signature\": \"setServiceDescription(uint64,uint64,byte[])void\",\n \"selector\": \"366d5b27\",\n \"args\": [\n {\n \"name\": \"id\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"offset\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"data\",\n \"type\": \"byte[]\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"updateServiceTitle\": {\n \"signature\": \"updateServiceTitle(uint64,string)void\",\n \"selector\": \"9ba020b6\",\n \"args\": [\n {\n \"name\": \"id\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"title\",\n \"type\": \"string\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"activateService\": {\n \"signature\": \"activateService()void\",\n \"selector\": \"c8835130\",\n \"args\": [],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"pauseService\": {\n \"signature\": \"pauseService(uint64)void\",\n \"selector\": \"17c8730b\",\n \"args\": [\n {\n \"name\": \"id\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"unpauseService\": {\n \"signature\": \"unpauseService(uint64)void\",\n \"selector\": \"4cdf0cd7\",\n \"args\": [\n {\n \"name\": \"id\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"shutdownService\": {\n \"signature\": \"shutdownService(uint64)void\",\n \"selector\": \"87e055c6\",\n \"args\": [\n {\n \"name\": \"id\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"block\": {\n \"signature\": \"block(pay,address)void\",\n \"selector\": \"b59c8a54\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"blocked\",\n \"type\": \"address\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"unblock\": {\n \"signature\": \"unblock(address)void\",\n \"selector\": \"aeebb378\",\n \"args\": [\n {\n \"name\": \"blocked\",\n \"type\": \"address\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"gatedSubscribe\": {\n \"signature\": \"gatedSubscribe(pay,appl,address,uint64,uint64,uint64)uint64\",\n \"selector\": \"5355da6d\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"gateTxn\",\n \"type\": \"appl\"\n },\n {\n \"name\": \"recipient\",\n \"type\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"interval\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"serviceID\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"subscribe\": {\n \"signature\": \"subscribe(pay,address,uint64,uint64,uint64)uint64\",\n \"selector\": \"10f00c3a\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"recipient\",\n \"type\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"interval\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"serviceID\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"gatedSubscribeAsa\": {\n \"signature\": \"gatedSubscribeAsa(pay,axfer,appl,address,uint64,uint64,uint64)uint64\",\n \"selector\": \"a68e6963\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"assetXfer\",\n \"type\": \"axfer\"\n },\n {\n \"name\": \"gateTxn\",\n \"type\": \"appl\"\n },\n {\n \"name\": \"recipient\",\n \"type\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"interval\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"serviceID\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"subscribeAsa\": {\n \"signature\": \"subscribeAsa(pay,axfer,address,uint64,uint64,uint64)uint64\",\n \"selector\": \"b10a306e\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"assetXfer\",\n \"type\": \"axfer\"\n },\n {\n \"name\": \"recipient\",\n \"type\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"interval\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"serviceID\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"deposit\": {\n \"signature\": \"deposit(pay,uint64)void\",\n \"selector\": \"f2355b55\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"id\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"depositAsa\": {\n \"signature\": \"depositAsa(axfer,uint64)void\",\n \"selector\": \"1ac4a758\",\n \"args\": [\n {\n \"name\": \"assetXfer\",\n \"type\": \"axfer\"\n },\n {\n \"name\": \"id\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"withdraw\": {\n \"signature\": \"withdraw(uint64,uint64)void\",\n \"selector\": \"e3aeb25c\",\n \"args\": [\n {\n \"name\": \"id\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"unsubscribe\": {\n \"signature\": \"unsubscribe(uint64)void\",\n \"selector\": \"eaaaa4d3\",\n \"args\": [\n {\n \"name\": \"id\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"gatedTriggerPayment\": {\n \"signature\": \"gatedTriggerPayment(appl,(address,uint64))void\",\n \"selector\": \"281b891b\",\n \"args\": [\n {\n \"name\": \"gateTxn\",\n \"type\": \"appl\"\n },\n {\n \"name\": \"key\",\n \"type\": \"(address,uint64)\",\n \"struct\": \"SubscriptionKey\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"triggerPayment\": {\n \"signature\": \"triggerPayment((address,uint64))void\",\n \"selector\": \"c3d9f1dc\",\n \"args\": [\n {\n \"name\": \"key\",\n \"type\": \"(address,uint64)\",\n \"struct\": \"SubscriptionKey\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"streakCheck\": {\n \"signature\": \"streakCheck((address,uint64))void\",\n \"selector\": \"c0ff2730\",\n \"args\": [\n {\n \"name\": \"key\",\n \"type\": \"(address,uint64)\",\n \"struct\": \"SubscriptionKey\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"setPasses\": {\n \"signature\": \"setPasses(uint64,address[])void\",\n \"selector\": \"275203af\",\n \"args\": [\n {\n \"name\": \"id\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"addresses\",\n \"type\": \"address[]\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"clearOrphanPasses\": {\n \"signature\": \"clearOrphanPasses((address,uint64))void\",\n \"selector\": \"19a548fa\",\n \"args\": [\n {\n \"name\": \"key\",\n \"type\": \"(address,uint64)\",\n \"struct\": \"SubscriptionKey\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"triggerList\": {\n \"signature\": \"triggerList((address,uint64[])[])bool[]\",\n \"selector\": \"1269d87e\",\n \"args\": [\n {\n \"name\": \"req\",\n \"type\": \"(address,uint64[])[]\"\n }\n ],\n \"returns\": \"bool[]\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"isBlocked\": {\n \"signature\": \"isBlocked(address,address)bool\",\n \"selector\": \"4303668e\",\n \"args\": [\n {\n \"name\": \"address\",\n \"type\": \"address\"\n },\n {\n \"name\": \"blocked\",\n \"type\": \"address\"\n }\n ],\n \"returns\": \"bool\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"isShutdown\": {\n \"signature\": \"isShutdown(address,uint64)bool\",\n \"selector\": \"0d6a47a3\",\n \"args\": [\n {\n \"name\": \"address\",\n \"type\": \"address\"\n },\n {\n \"name\": \"id\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"bool\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"newServiceCost\": {\n \"signature\": \"newServiceCost(uint64)uint64\",\n \"selector\": \"1dc78371\",\n \"args\": [\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"newSubscriptionCost\": {\n \"signature\": \"newSubscriptionCost(address,uint64,uint64)uint64\",\n \"selector\": \"09a3158e\",\n \"args\": [\n {\n \"name\": \"recipient\",\n \"type\": \"address\"\n },\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"serviceID\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"blockCost\": {\n \"signature\": \"blockCost()uint64\",\n \"selector\": \"f99963d4\",\n \"args\": [],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"getService\": {\n \"signature\": \"getService(address,uint64)(uint8,uint64,uint64,uint64,uint64,uint64,address,string,string,byte[36],uint8,byte[3])\",\n \"selector\": \"d4b16e7a\",\n \"args\": [\n {\n \"name\": \"address\",\n \"type\": \"address\"\n },\n {\n \"name\": \"id\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"(uint8,uint64,uint64,uint64,uint64,uint64,address,string,string,byte[36],uint8,byte[3])\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"getServicesByAddress\": {\n \"signature\": \"getServicesByAddress(address,uint64,uint64)(uint8,uint64,uint64,uint64,uint64,uint64,address,string,string,byte[36],uint8,byte[3])[]\",\n \"selector\": \"74def59a\",\n \"args\": [\n {\n \"name\": \"address\",\n \"type\": \"address\"\n },\n {\n \"name\": \"start\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"windowSize\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"(uint8,uint64,uint64,uint64,uint64,uint64,address,string,string,byte[36],uint8,byte[3])[]\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"getSubscription\": {\n \"signature\": \"getSubscription((address,uint64))(bool,address,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64)\",\n \"selector\": \"25b812a7\",\n \"args\": [\n {\n \"name\": \"key\",\n \"type\": \"(address,uint64)\",\n \"struct\": \"SubscriptionKey\"\n }\n ],\n \"returns\": \"(bool,address,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64)\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"mustGetSubscription\": {\n \"signature\": \"mustGetSubscription((address,uint64))(address,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64)\",\n \"selector\": \"969ced9b\",\n \"args\": [\n {\n \"name\": \"key\",\n \"type\": \"(address,uint64)\",\n \"struct\": \"SubscriptionKey\"\n }\n ],\n \"returns\": \"(address,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64)\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"getSubscriptionWithDetails\": {\n \"signature\": \"getSubscriptionWithDetails((address,uint64))(address,uint64,uint64,uint64,uint64,uint64,uint64,uint8,address,string,string,byte[36],uint8,byte[3],uint64,uint64,uint64,address[])\",\n \"selector\": \"33d8e5ad\",\n \"args\": [\n {\n \"name\": \"key\",\n \"type\": \"(address,uint64)\",\n \"struct\": \"SubscriptionKey\"\n }\n ],\n \"returns\": \"(address,uint64,uint64,uint64,uint64,uint64,uint64,uint8,address,string,string,byte[36],uint8,byte[3],uint64,uint64,uint64,address[])\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"isFirstSubscription\": {\n \"signature\": \"isFirstSubscription(address)bool\",\n \"selector\": \"603d7297\",\n \"args\": [\n {\n \"name\": \"address\",\n \"type\": \"address\"\n }\n ],\n \"returns\": \"bool\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"getServiceList\": {\n \"signature\": \"getServiceList(address)uint64\",\n \"selector\": \"dfe602cf\",\n \"args\": [\n {\n \"name\": \"address\",\n \"type\": \"address\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"getSubscriptionList\": {\n \"signature\": \"getSubscriptionList(address)uint64\",\n \"selector\": \"d8a6c523\",\n \"args\": [\n {\n \"name\": \"address\",\n \"type\": \"address\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"optIn\": {\n \"signature\": \"optIn(pay,uint64)void\",\n \"selector\": \"394eaeb2\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"optInCost\": {\n \"signature\": \"optInCost(uint64)uint64\",\n \"selector\": \"33f78808\",\n \"args\": [\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"updateAkitaDAOEscrow\": {\n \"signature\": \"updateAkitaDAOEscrow((string,uint64))void\",\n \"selector\": \"ae84cbd8\",\n \"args\": [\n {\n \"name\": \"config\",\n \"type\": \"(string,uint64)\",\n \"struct\": \"EscrowConfig\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"update\": {\n \"signature\": \"update(string)void\",\n \"selector\": \"ea9180dd\",\n \"args\": [\n {\n \"name\": \"newVersion\",\n \"type\": \"string\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"UpdateApplication\"\n ]\n },\n \"updateAkitaDAO\": {\n \"signature\": \"updateAkitaDAO(uint64)void\",\n \"selector\": \"33e92c94\",\n \"args\": [\n {\n \"name\": \"akitaDAO\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"opUp\": {\n \"signature\": \"opUp()void\",\n \"selector\": \"854dede0\",\n \"args\": [],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n }\n },\n \"events\": {},\n \"structs\": {\n \"BlockListKey\": [\n {\n \"name\": \"address\",\n \"type\": \"byte[16]\"\n },\n {\n \"name\": \"blocked\",\n \"type\": \"byte[16]\"\n }\n ],\n \"Service\": [\n {\n \"name\": \"status\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"interval\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"passes\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"gateID\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"payoutAddress\",\n \"type\": \"address\"\n },\n {\n \"name\": \"title\",\n \"type\": \"string\"\n },\n {\n \"name\": \"description\",\n \"type\": \"string\"\n },\n {\n \"name\": \"bannerImage\",\n \"type\": \"byte[36]\"\n },\n {\n \"name\": \"highlightMessage\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"highlightColor\",\n \"type\": \"byte[3]\"\n }\n ],\n \"ServicesKey\": [\n {\n \"name\": \"address\",\n \"type\": \"address\"\n },\n {\n \"name\": \"id\",\n \"type\": \"uint64\"\n }\n ],\n \"SubscriptionInfo\": [\n {\n \"name\": \"recipient\",\n \"type\": \"address\"\n },\n {\n \"name\": \"serviceID\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"startDate\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"interval\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"gateID\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"lastPayment\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"streak\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"escrowed\",\n \"type\": \"uint64\"\n }\n ],\n \"SubscriptionInfoWithDetails\": [\n {\n \"name\": \"recipient\",\n \"type\": \"address\"\n },\n {\n \"name\": \"startDate\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"interval\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"gateID\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"serviceID\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"status\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"payoutAddress\",\n \"type\": \"address\"\n },\n {\n \"name\": \"title\",\n \"type\": \"string\"\n },\n {\n \"name\": \"description\",\n \"type\": \"string\"\n },\n {\n \"name\": \"bannerImage\",\n \"type\": \"byte[36]\"\n },\n {\n \"name\": \"highlightMessage\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"highlightColor\",\n \"type\": \"byte[3]\"\n },\n {\n \"name\": \"lastPayment\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"streak\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"escrowed\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"passes\",\n \"type\": \"address[]\"\n }\n ],\n \"SubscriptionInfoWithExistence\": [\n {\n \"name\": \"exists\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"recipient\",\n \"type\": \"address\"\n },\n {\n \"name\": \"serviceID\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"startDate\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"interval\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"gateID\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"lastPayment\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"streak\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"escrowed\",\n \"type\": \"uint64\"\n }\n ],\n \"SubscriptionKey\": [\n {\n \"name\": \"address\",\n \"type\": \"address\"\n },\n {\n \"name\": \"id\",\n \"type\": \"uint64\"\n }\n ],\n \"EscrowConfig\": [\n {\n \"name\": \"name\",\n \"type\": \"string\"\n },\n {\n \"name\": \"app\",\n \"type\": \"uint64\"\n }\n ]\n }\n },\n \"hyperSwap\": {\n \"name\": \"HyperSwap\",\n \"global\": {\n \"offerCursor\": {\n \"key\": \"offer_cursor\",\n \"type\": \"AVMUint64\"\n },\n \"version\": {\n \"key\": \"version\",\n \"type\": \"AVMString\"\n },\n \"akitaDAO\": {\n \"key\": \"akita_dao\",\n \"type\": \"AVMUint64\"\n }\n },\n \"boxes\": {\n \"offers\": {\n \"prefix\": \"o\",\n \"keyType\": \"uint64\",\n \"valueType\": \"OfferValue\"\n },\n \"participants\": {\n \"prefix\": \"p\",\n \"keyType\": \"ParticipantKey\",\n \"valueType\": \"RefundValue\"\n },\n \"hashes\": {\n \"prefix\": \"h\",\n \"keyType\": \"HashKey\",\n \"valueType\": \"RefundValue\"\n },\n \"offerRefunds\": {\n \"prefix\": \"f\",\n \"keyType\": \"uint64\",\n \"valueType\": \"RefundValue\"\n },\n \"offerRegistry\": {\n \"prefix\": \"r\",\n \"keyType\": \"uint64\",\n \"valueType\": \"uint64\"\n }\n },\n \"methods\": {\n \"create\": {\n \"signature\": \"create(string,uint64)void\",\n \"selector\": \"cd9ad67e\",\n \"args\": [\n {\n \"name\": \"version\",\n \"type\": \"string\"\n },\n {\n \"name\": \"akitaDAO\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"create:NoOp\"\n ]\n },\n \"offer\": {\n \"signature\": \"offer(pay,byte[32],uint64,byte[32],uint64,uint64)void\",\n \"selector\": \"0db3a44b\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"root\",\n \"type\": \"byte[32]\"\n },\n {\n \"name\": \"leaves\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"participantsRoot\",\n \"type\": \"byte[32]\"\n },\n {\n \"name\": \"participantsLeaves\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"expiration\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"accept\": {\n \"signature\": \"accept(pay,uint64,byte[32][],byte[32])void\",\n \"selector\": \"7bda81c9\",\n \"args\": [\n {\n \"name\": \"mbrPayment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"id\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"proof\",\n \"type\": \"byte[32][]\"\n },\n {\n \"name\": \"terms\",\n \"type\": \"byte[32]\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"escrow\": {\n \"signature\": \"escrow(pay,uint64,address,uint64,byte[32][])void\",\n \"selector\": \"d85febdd\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"id\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"receiver\",\n \"type\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"proof\",\n \"type\": \"byte[32][]\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"escrowAsa\": {\n \"signature\": \"escrowAsa(pay,axfer,uint64,address,uint64,uint64,byte[32][])void\",\n \"selector\": \"466f871a\",\n \"args\": [\n {\n \"name\": \"mbrPayment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"assetXfer\",\n \"type\": \"axfer\"\n },\n {\n \"name\": \"id\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"receiver\",\n \"type\": \"address\"\n },\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"proof\",\n \"type\": \"byte[32][]\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"disburse\": {\n \"signature\": \"disburse(uint64,uint64,address,uint64,uint64)void\",\n \"selector\": \"566a62b2\",\n \"args\": [\n {\n \"name\": \"id\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"receiverWallet\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"receiver\",\n \"type\": \"address\"\n },\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"disburseFrom\": {\n \"signature\": \"disburseFrom(uint64,address,uint64,address,uint64,uint64)void\",\n \"selector\": \"27336ba0\",\n \"args\": [\n {\n \"name\": \"id\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"from\",\n \"type\": \"address\"\n },\n {\n \"name\": \"receiverWallet\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"receiver\",\n \"type\": \"address\"\n },\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"cancel\": {\n \"signature\": \"cancel(uint64,byte[32][])void\",\n \"selector\": \"0c7ab42e\",\n \"args\": [\n {\n \"name\": \"id\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"proof\",\n \"type\": \"byte[32][]\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"withdraw\": {\n \"signature\": \"withdraw(uint64,address,uint64,uint64,byte[32][])void\",\n \"selector\": \"0631868b\",\n \"args\": [\n {\n \"name\": \"id\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"receiver\",\n \"type\": \"address\"\n },\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"proof\",\n \"type\": \"byte[32][]\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"cleanupParticipant\": {\n \"signature\": \"cleanupParticipant(uint64,address)void\",\n \"selector\": \"683bb678\",\n \"args\": [\n {\n \"name\": \"id\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"participant\",\n \"type\": \"address\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"cleanupOffer\": {\n \"signature\": \"cleanupOffer(uint64)void\",\n \"selector\": \"d3ee04f0\",\n \"args\": [\n {\n \"name\": \"id\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"offerTerms\": {\n \"signature\": \"offerTerms(uint64)byte[32]\",\n \"selector\": \"00d701d5\",\n \"args\": [\n {\n \"name\": \"id\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"byte[32]\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"optIn\": {\n \"signature\": \"optIn(pay,uint64)void\",\n \"selector\": \"394eaeb2\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"asset\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"update\": {\n \"signature\": \"update(string)void\",\n \"selector\": \"ea9180dd\",\n \"args\": [\n {\n \"name\": \"newVersion\",\n \"type\": \"string\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"UpdateApplication\"\n ]\n },\n \"updateAkitaDAO\": {\n \"signature\": \"updateAkitaDAO(uint64)void\",\n \"selector\": \"33e92c94\",\n \"args\": [\n {\n \"name\": \"akitaDAO\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"opUp\": {\n \"signature\": \"opUp()void\",\n \"selector\": \"854dede0\",\n \"args\": [],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"mbr\": {\n \"signature\": \"mbr()(uint64,uint64,uint64,(uint64,uint64))\",\n \"selector\": \"840733dd\",\n \"args\": [],\n \"returns\": \"(uint64,uint64,uint64,(uint64,uint64))\",\n \"actions\": [\n \"NoOp\"\n ]\n }\n },\n \"events\": {},\n \"structs\": {\n \"Object57CB3C34\": [\n {\n \"name\": \"root\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"data\",\n \"type\": \"uint64\"\n }\n ],\n \"HashKey\": [\n {\n \"name\": \"id\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"hash\",\n \"type\": \"byte[32]\"\n }\n ],\n \"HyperSwapMBRData\": [\n {\n \"name\": \"offers\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"participants\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"hashes\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"mm\",\n \"type\": \"Object57CB3C34\"\n }\n ],\n \"OfferValue\": [\n {\n \"name\": \"state\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"root\",\n \"type\": \"byte[32]\"\n },\n {\n \"name\": \"leaves\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"escrowed\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"participantsRoot\",\n \"type\": \"byte[32]\"\n },\n {\n \"name\": \"participantsLeaves\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"acceptances\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"expiration\",\n \"type\": \"uint64\"\n }\n ],\n \"ParticipantKey\": [\n {\n \"name\": \"id\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"address\",\n \"type\": \"address\"\n }\n ],\n \"RefundValue\": [\n {\n \"name\": \"amount\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"payor\",\n \"type\": \"address\"\n }\n ]\n }\n },\n \"guild\": {\n \"name\": \"Guild\",\n \"global\": {\n \"state\": {\n \"key\": \"state\",\n \"type\": \"uint8\"\n },\n \"consensus\": {\n \"key\": \"consensus\",\n \"type\": \"AVMUint64\"\n },\n \"version\": {\n \"key\": \"version\",\n \"type\": \"AVMString\"\n },\n \"creator\": {\n \"key\": \"creator\",\n \"type\": \"address\"\n },\n \"wallet\": {\n \"key\": \"wallet\",\n \"type\": \"AVMUint64\"\n },\n \"walletFactory\": {\n \"key\": \"wallet_factory\",\n \"type\": \"AVMUint64\"\n },\n \"proposalActionLimit\": {\n \"key\": \"proposal_action_limit\",\n \"type\": \"AVMUint64\"\n },\n \"proposalID\": {\n \"key\": \"proposal_id\",\n \"type\": \"AVMUint64\"\n },\n \"pluginSetLocked\": {\n \"key\": \"plugins_locked\",\n \"type\": \"AVMUint64\"\n },\n \"reserved\": {\n \"key\": \"reserved\",\n \"type\": \"AVMUint64\"\n },\n \"upgradeAppProposalSettings\": {\n \"key\": \"upgrade_app_ps\",\n \"type\": \"GuildProposalSettings\"\n },\n \"addPluginProposalSettings\": {\n \"key\": \"add_plugin_ps\",\n \"type\": \"GuildProposalSettings\"\n },\n \"removeExecutionProposalSettings\": {\n \"key\": \"remove_execution_ps\",\n \"type\": \"GuildProposalSettings\"\n },\n \"removePluginProposalSettings\": {\n \"key\": \"remove_plugin_ps\",\n \"type\": \"GuildProposalSettings\"\n },\n \"addAllowancesProposalSettings\": {\n \"key\": \"add_allowances_ps\",\n \"type\": \"GuildProposalSettings\"\n },\n \"removeAllowancesProposalSettings\": {\n \"key\": \"remove_allowances_ps\",\n \"type\": \"GuildProposalSettings\"\n },\n \"newEscrowProposalSettings\": {\n \"key\": \"new_escrow_ps\",\n \"type\": \"GuildProposalSettings\"\n },\n \"toggleEscrowLockProposalSettings\": {\n \"key\": \"toggle_escrow_ps\",\n \"type\": \"GuildProposalSettings\"\n },\n \"updateGuildProposalSettings\": {\n \"key\": \"update_guild_ps\",\n \"type\": \"GuildProposalSettings\"\n }\n },\n \"boxes\": {\n \"plugins\": {\n \"prefix\": \"g\",\n \"keyType\": \"GuildPluginKey\",\n \"valueType\": \"GuildProposalSettings\"\n },\n \"proposals\": {\n \"prefix\": \"l\",\n \"keyType\": \"uint64\",\n \"valueType\": \"GuildProposal\"\n },\n \"executions\": {\n \"prefix\": \"x\",\n \"keyType\": \"AVMBytes\",\n \"valueType\": \"GuildExecutionMetadata\"\n },\n \"consensusActions\": {\n \"prefix\": \"c\",\n \"keyType\": \"uint64\",\n \"valueType\": \"GuildProposalSettings\"\n }\n },\n \"methods\": {\n \"create\": {\n \"signature\": \"create(string,address,uint64,uint64,(uint64,((uint64,uint64,uint64,uint64,uint64,uint64),(uint64,uint64,uint64,uint64,uint64,uint64),(uint64,uint64,uint64,uint64,uint64,uint64),(uint64,uint64,uint64,uint64,uint64,uint64),(uint64,uint64,uint64,uint64,uint64,uint64),(uint64,uint64,uint64,uint64,uint64,uint64),(uint64,uint64,uint64,uint64,uint64,uint64),(uint64,uint64,uint64,uint64,uint64,uint64),(uint64,uint64,uint64,uint64,uint64,uint64))))void\",\n \"selector\": \"06cb2e54\",\n \"args\": [\n {\n \"name\": \"version\",\n \"type\": \"string\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"address\"\n },\n {\n \"name\": \"walletFactory\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"consensus\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"config\",\n \"type\": \"(uint64,((uint64,uint64,uint64,uint64,uint64,uint64),(uint64,uint64,uint64,uint64,uint64,uint64),(uint64,uint64,uint64,uint64,uint64,uint64),(uint64,uint64,uint64,uint64,uint64,uint64),(uint64,uint64,uint64,uint64,uint64,uint64),(uint64,uint64,uint64,uint64,uint64,uint64),(uint64,uint64,uint64,uint64,uint64,uint64),(uint64,uint64,uint64,uint64,uint64,uint64),(uint64,uint64,uint64,uint64,uint64,uint64)))\",\n \"struct\": \"GuildBaseConfig\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"create:NoOp\"\n ]\n },\n \"consensusConfigurationMbr\": {\n \"signature\": \"consensusConfigurationMbr(byte[])uint64\",\n \"selector\": \"97881e21\",\n \"args\": [\n {\n \"name\": \"config\",\n \"type\": \"byte[]\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"configureConsensus\": {\n \"signature\": \"configureConsensus(pay,byte[])void\",\n \"selector\": \"5081f793\",\n \"args\": [\n {\n \"name\": \"mbrPayment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"config\",\n \"type\": \"byte[]\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"setup\": {\n \"signature\": \"setup(string,byte[32])uint64\",\n \"selector\": \"f8e140aa\",\n \"args\": [\n {\n \"name\": \"nickname\",\n \"type\": \"string\"\n },\n {\n \"name\": \"salt\",\n \"type\": \"byte[32]\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"setProposalSettings\": {\n \"signature\": \"setProposalSettings(uint8,(uint64,uint64,uint64,uint64,uint64,uint64))void\",\n \"selector\": \"ce73147b\",\n \"args\": [\n {\n \"name\": \"actionType\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"settings\",\n \"type\": \"(uint64,uint64,uint64,uint64,uint64,uint64)\",\n \"struct\": \"GuildProposalSettings\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"setConsensusActionSettings\": {\n \"signature\": \"setConsensusActionSettings(uint64,(uint64,uint64,uint64,uint64,uint64,uint64))void\",\n \"selector\": \"236cb1bb\",\n \"args\": [\n {\n \"name\": \"code\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"settings\",\n \"type\": \"(uint64,uint64,uint64,uint64,uint64,uint64)\",\n \"struct\": \"GuildProposalSettings\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"setProposalActionLimit\": {\n \"signature\": \"setProposalActionLimit(uint64)void\",\n \"selector\": \"78b643e8\",\n \"args\": [\n {\n \"name\": \"limit\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"lockPluginSet\": {\n \"signature\": \"lockPluginSet()void\",\n \"selector\": \"40988cb9\",\n \"args\": [],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"partiallyInitialize\": {\n \"signature\": \"partiallyInitialize()void\",\n \"selector\": \"53c47566\",\n \"args\": [],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"initialize\": {\n \"signature\": \"initialize()void\",\n \"selector\": \"fd2c93cd\",\n \"args\": [],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"newProposal\": {\n \"signature\": \"newProposal(pay,byte[36],(uint8,byte[])[],byte[])uint64\",\n \"selector\": \"3495781a\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"cid\",\n \"type\": \"byte[36]\"\n },\n {\n \"name\": \"actions\",\n \"type\": \"(uint8,byte[])[]\"\n },\n {\n \"name\": \"evidence\",\n \"type\": \"byte[]\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"editProposal\": {\n \"signature\": \"editProposal(uint64,byte[36],(uint8,byte[])[],byte[])void\",\n \"selector\": \"d046fb71\",\n \"args\": [\n {\n \"name\": \"id\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"cid\",\n \"type\": \"byte[36]\"\n },\n {\n \"name\": \"actions\",\n \"type\": \"(uint8,byte[])[]\"\n },\n {\n \"name\": \"evidence\",\n \"type\": \"byte[]\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"editProposalWithPayment\": {\n \"signature\": \"editProposalWithPayment(pay,uint64,byte[36],(uint8,byte[])[],byte[])void\",\n \"selector\": \"880950f9\",\n \"args\": [\n {\n \"name\": \"payment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"id\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"cid\",\n \"type\": \"byte[36]\"\n },\n {\n \"name\": \"actions\",\n \"type\": \"(uint8,byte[])[]\"\n },\n {\n \"name\": \"evidence\",\n \"type\": \"byte[]\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"deleteProposal\": {\n \"signature\": \"deleteProposal(uint64)void\",\n \"selector\": \"28f80154\",\n \"args\": [\n {\n \"name\": \"proposalID\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"submitProposal\": {\n \"signature\": \"submitProposal(uint64,byte[])void\",\n \"selector\": \"a9e1f57b\",\n \"args\": [\n {\n \"name\": \"proposalID\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"evidence\",\n \"type\": \"byte[]\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"voteProposal\": {\n \"signature\": \"voteProposal(pay,uint64,uint8,byte[])void\",\n \"selector\": \"3769989f\",\n \"args\": [\n {\n \"name\": \"mbrPayment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"proposalID\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"vote\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"evidence\",\n \"type\": \"byte[]\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"finalizeProposal\": {\n \"signature\": \"finalizeProposal(uint64)void\",\n \"selector\": \"62ce9b5b\",\n \"args\": [\n {\n \"name\": \"proposalID\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"cleanupProposalConsensus\": {\n \"signature\": \"cleanupProposalConsensus(uint64,address[])uint64\",\n \"selector\": \"b57a1ecd\",\n \"args\": [\n {\n \"name\": \"proposalID\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"voters\",\n \"type\": \"address[]\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"cancelProposal\": {\n \"signature\": \"cancelProposal(uint64)void\",\n \"selector\": \"bfb5248f\",\n \"args\": [\n {\n \"name\": \"proposalID\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"executeProposal\": {\n \"signature\": \"executeProposal(uint64)void\",\n \"selector\": \"f1ff28aa\",\n \"args\": [\n {\n \"name\": \"proposalID\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"update\": {\n \"signature\": \"update(string)void\",\n \"selector\": \"ea9180dd\",\n \"args\": [\n {\n \"name\": \"newVersion\",\n \"type\": \"string\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"UpdateApplication\"\n ]\n },\n \"sweep\": {\n \"signature\": \"sweep()uint64\",\n \"selector\": \"bc0d58a7\",\n \"args\": [],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"setupCost\": {\n \"signature\": \"setupCost()uint64\",\n \"selector\": \"9699d108\",\n \"args\": [],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"proposalCost\": {\n \"signature\": \"proposalCost((uint8,byte[])[])(uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64)\",\n \"selector\": \"8feadadb\",\n \"args\": [\n {\n \"name\": \"actions\",\n \"type\": \"(uint8,byte[])[]\"\n }\n ],\n \"returns\": \"(uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64)\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"getProposal\": {\n \"signature\": \"getProposal(uint64)(uint8,byte[36],address,uint64,uint64,uint64,(uint8,byte[])[])\",\n \"selector\": \"fe0227c9\",\n \"args\": [\n {\n \"name\": \"proposalID\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"(uint8,byte[36],address,uint64,uint64,uint64,(uint8,byte[])[])\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"getBallot\": {\n \"signature\": \"getBallot(uint64)(bool,bool,uint64,uint64,uint64,(uint64,uint64,uint64),(uint64,uint64,uint64))\",\n \"selector\": \"92bb769e\",\n \"args\": [\n {\n \"name\": \"proposalID\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"(bool,bool,uint64,uint64,uint64,(uint64,uint64,uint64),(uint64,uint64,uint64))\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"mustGetExecution\": {\n \"signature\": \"mustGetExecution(byte[32])(uint64,uint64)\",\n \"selector\": \"dbbec6d2\",\n \"args\": [\n {\n \"name\": \"lease\",\n \"type\": \"byte[32]\"\n }\n ],\n \"returns\": \"(uint64,uint64)\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"getConsensusActionSettings\": {\n \"signature\": \"getConsensusActionSettings(uint64)(uint64,uint64,uint64,uint64,uint64,uint64)\",\n \"selector\": \"957c752e\",\n \"args\": [\n {\n \"name\": \"code\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"(uint64,uint64,uint64,uint64,uint64,uint64)\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"voteCost\": {\n \"signature\": \"voteCost(uint64,address)uint64\",\n \"selector\": \"8b5f86e0\",\n \"args\": [\n {\n \"name\": \"proposalID\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"voter\",\n \"type\": \"address\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"voteMbr\": {\n \"signature\": \"voteMbr()uint64\",\n \"selector\": \"6f9378e3\",\n \"args\": [],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"sweepable\": {\n \"signature\": \"sweepable()uint64\",\n \"selector\": \"f1c08e6a\",\n \"args\": [],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"canChangePluginSet\": {\n \"signature\": \"canChangePluginSet()bool\",\n \"selector\": \"27adf91f\",\n \"args\": [],\n \"returns\": \"bool\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"opUp\": {\n \"signature\": \"opUp()void\",\n \"selector\": \"854dede0\",\n \"args\": [],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n }\n },\n \"events\": {},\n \"structs\": {\n \"GuildBaseConfig\": [\n {\n \"name\": \"proposalActionLimit\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"proposalSettings\",\n \"type\": \"GuildProposalSettingsConfig\"\n }\n ],\n \"GuildConsensusBallot\": [\n {\n \"name\": \"resolved\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"approved\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"votingEnd\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"eligiblePower\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"voteCount\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"requirements\",\n \"type\": \"GuildConsensusRequirements\"\n },\n {\n \"name\": \"votes\",\n \"type\": \"GuildVoteTotals\"\n }\n ],\n \"GuildConsensusRequirements\": [\n {\n \"name\": \"participation\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"approval\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"minimumApprovals\",\n \"type\": \"uint64\"\n }\n ],\n \"GuildExecutionMetadata\": [\n {\n \"name\": \"proposalID\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"index\",\n \"type\": \"uint64\"\n }\n ],\n \"GuildPluginKey\": [\n {\n \"name\": \"plugin\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"escrow\",\n \"type\": \"string\"\n }\n ],\n \"GuildProposal\": [\n {\n \"name\": \"status\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"cid\",\n \"type\": \"byte[36]\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"address\"\n },\n {\n \"name\": \"votingTs\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"created\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"feesPaid\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"actions\",\n \"type\": \"(uint8,byte[])[]\"\n }\n ],\n \"GuildProposalCostInfo\": [\n {\n \"name\": \"total\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"mbr\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"power\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"duration\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"participation\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"approval\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"minimumApprovals\",\n \"type\": \"uint64\"\n }\n ],\n \"GuildProposalSettings\": [\n {\n \"name\": \"fee\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"power\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"duration\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"participation\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"approval\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"minimumApprovals\",\n \"type\": \"uint64\"\n }\n ],\n \"GuildProposalSettingsConfig\": [\n {\n \"name\": \"upgradeApp\",\n \"type\": \"GuildProposalSettings\"\n },\n {\n \"name\": \"addPlugin\",\n \"type\": \"GuildProposalSettings\"\n },\n {\n \"name\": \"removeExecution\",\n \"type\": \"GuildProposalSettings\"\n },\n {\n \"name\": \"removePlugin\",\n \"type\": \"GuildProposalSettings\"\n },\n {\n \"name\": \"addAllowances\",\n \"type\": \"GuildProposalSettings\"\n },\n {\n \"name\": \"removeAllowances\",\n \"type\": \"GuildProposalSettings\"\n },\n {\n \"name\": \"newEscrow\",\n \"type\": \"GuildProposalSettings\"\n },\n {\n \"name\": \"toggleEscrowLock\",\n \"type\": \"GuildProposalSettings\"\n },\n {\n \"name\": \"updateGuild\",\n \"type\": \"GuildProposalSettings\"\n }\n ],\n \"GuildVoteTotals\": [\n {\n \"name\": \"approvals\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"rejections\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"abstains\",\n \"type\": \"uint64\"\n }\n ]\n }\n },\n \"guildConsensus\": {\n \"name\": \"FixedSignerGuildConsensus\",\n \"global\": {\n \"threshold\": {\n \"key\": \"signer_threshold\",\n \"type\": \"AVMUint64\"\n },\n \"memberCount\": {\n \"key\": \"member_count\",\n \"type\": \"AVMUint64\"\n },\n \"eligiblePower\": {\n \"key\": \"member_power\",\n \"type\": \"AVMUint64\"\n },\n \"membershipLocked\": {\n \"key\": \"members_locked\",\n \"type\": \"AVMUint64\"\n },\n \"weightMode\": {\n \"key\": \"weight_mode\",\n \"type\": \"uint8\"\n },\n \"membershipEpoch\": {\n \"key\": \"membership_epoch\",\n \"type\": \"AVMUint64\"\n },\n \"maximumMemberWeight\": {\n \"key\": \"maximum_member_weight\",\n \"type\": \"AVMUint64\"\n },\n \"guild\": {\n \"key\": \"guild\",\n \"type\": \"AVMUint64\"\n },\n \"activeBallots\": {\n \"key\": \"active_ballots\",\n \"type\": \"AVMUint64\"\n },\n \"activated\": {\n \"key\": \"activated\",\n \"type\": \"AVMUint64\"\n }\n },\n \"boxes\": {\n \"members\": {\n \"prefix\": \"m\",\n \"keyType\": \"address\",\n \"valueType\": \"Object75E64AB9\"\n },\n \"memberHistory\": {\n \"prefix\": \"h\",\n \"keyType\": \"ObjectA760343E\",\n \"valueType\": \"ObjectA68503ED\"\n },\n \"memberSnapshots\": {\n \"prefix\": \"s\",\n \"keyType\": \"uint64\",\n \"valueType\": \"ObjectEEB10897\"\n },\n \"ballots\": {\n \"prefix\": \"b\",\n \"keyType\": \"uint64\",\n \"valueType\": \"GuildConsensusBallot\"\n },\n \"votes\": {\n \"prefix\": \"v\",\n \"keyType\": \"GuildVoteKey\",\n \"valueType\": \"GuildVote\"\n }\n },\n \"methods\": {\n \"memberAdditionMbr\": {\n \"signature\": \"memberAdditionMbr(uint64)uint64\",\n \"selector\": \"aa927d7b\",\n \"args\": [\n {\n \"name\": \"count\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"historyMbr\": {\n \"signature\": \"historyMbr()uint64\",\n \"selector\": \"db28eb21\",\n \"args\": [],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"validateSettings\": {\n \"signature\": \"validateSettings((uint64,uint64,uint64,uint64,uint64,uint64))void\",\n \"selector\": \"9140c638\",\n \"args\": [\n {\n \"name\": \"settings\",\n \"type\": \"(uint64,uint64,uint64,uint64,uint64,uint64)\",\n \"struct\": \"GuildProposalSettings\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"ballotMbr\": {\n \"signature\": \"ballotMbr()uint64\",\n \"selector\": \"d3d29643\",\n \"args\": [],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"memberPowerAt\": {\n \"signature\": \"memberPowerAt(address,uint64,byte[])uint64\",\n \"selector\": \"f12a468e\",\n \"args\": [\n {\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"name\": \"proposalID\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"evidence\",\n \"type\": \"byte[]\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"cleanupBallot\": {\n \"signature\": \"cleanupBallot(uint64,address[])uint64\",\n \"selector\": \"a9e823cd\",\n \"args\": [\n {\n \"name\": \"proposalID\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"voters\",\n \"type\": \"address[]\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"validateActivation\": {\n \"signature\": \"validateActivation()void\",\n \"selector\": \"b9865a61\",\n \"args\": [],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"openProposal\": {\n \"signature\": \"openProposal(pay,uint64,uint64,(uint64,uint64,uint64))void\",\n \"selector\": \"68449088\",\n \"args\": [\n {\n \"name\": \"mbrPayment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"proposalID\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"votingEnd\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"requirements\",\n \"type\": \"(uint64,uint64,uint64)\",\n \"struct\": \"GuildConsensusRequirements\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"resolveProposal\": {\n \"signature\": \"resolveProposal(uint64)(bool,uint64,uint64,uint64,uint64)\",\n \"selector\": \"5b3a8b00\",\n \"args\": [\n {\n \"name\": \"proposalID\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"(bool,uint64,uint64,uint64,uint64)\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"vote\": {\n \"signature\": \"vote(pay,address,uint64,uint8,byte[])void\",\n \"selector\": \"3d7525e9\",\n \"args\": [\n {\n \"name\": \"mbrPayment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"voter\",\n \"type\": \"address\"\n },\n {\n \"name\": \"proposalID\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"vote\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"evidence\",\n \"type\": \"byte[]\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"proposalPower\": {\n \"signature\": \"proposalPower(address,byte[],uint64)uint64\",\n \"selector\": \"c3eb7cd4\",\n \"args\": [\n {\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"name\": \"evidence\",\n \"type\": \"byte[]\"\n },\n {\n \"name\": \"requiredThrough\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"create\": {\n \"signature\": \"create(byte[])void\",\n \"selector\": \"8e79358d\",\n \"args\": [\n {\n \"name\": \"governanceConfig\",\n \"type\": \"byte[]\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"create:NoOp\"\n ]\n },\n \"configurationMbr\": {\n \"signature\": \"configurationMbr(byte[])uint64\",\n \"selector\": \"aa3e40a8\",\n \"args\": [\n {\n \"name\": \"config\",\n \"type\": \"byte[]\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"configure\": {\n \"signature\": \"configure(pay,byte[])void\",\n \"selector\": \"8bff8387\",\n \"args\": [\n {\n \"name\": \"mbrPayment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"config\",\n \"type\": \"byte[]\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"consensusActionMbr\": {\n \"signature\": \"consensusActionMbr(byte[])uint64\",\n \"selector\": \"857e2717\",\n \"args\": [\n {\n \"name\": \"data\",\n \"type\": \"byte[]\"\n }\n ],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"applyConsensusAction\": {\n \"signature\": \"applyConsensusAction(pay,uint64,byte[])void\",\n \"selector\": \"67ed5fed\",\n \"args\": [\n {\n \"name\": \"mbrPayment\",\n \"type\": \"pay\"\n },\n {\n \"name\": \"proposalID\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"data\",\n \"type\": \"byte[]\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"bindGuild\": {\n \"signature\": \"bindGuild(uint64)void\",\n \"selector\": \"3e87013b\",\n \"args\": [\n {\n \"name\": \"guild\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"getBallot\": {\n \"signature\": \"getBallot(uint64)(bool,bool,uint64,uint64,uint64,(uint64,uint64,uint64),(uint64,uint64,uint64))\",\n \"selector\": \"92bb769e\",\n \"args\": [\n {\n \"name\": \"proposalID\",\n \"type\": \"uint64\"\n }\n ],\n \"returns\": \"(bool,bool,uint64,uint64,uint64,(uint64,uint64,uint64),(uint64,uint64,uint64))\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"voteMbr\": {\n \"signature\": \"voteMbr()uint64\",\n \"selector\": \"6f9378e3\",\n \"args\": [],\n \"returns\": \"uint64\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"hasVoted\": {\n \"signature\": \"hasVoted(uint64,address)bool\",\n \"selector\": \"f50808ef\",\n \"args\": [\n {\n \"name\": \"proposalID\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"voter\",\n \"type\": \"address\"\n }\n ],\n \"returns\": \"bool\",\n \"actions\": [\n \"NoOp\"\n ]\n },\n \"opUp\": {\n \"signature\": \"opUp()void\",\n \"selector\": \"854dede0\",\n \"args\": [],\n \"returns\": \"void\",\n \"actions\": [\n \"NoOp\"\n ]\n }\n },\n \"events\": {},\n \"structs\": {\n \"Object75E64AB9\": [\n {\n \"name\": \"weight\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"since\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"slot\",\n \"type\": \"uint64\"\n }\n ],\n \"ObjectA68503ED\": [\n {\n \"name\": \"weight\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"until\",\n \"type\": \"uint64\"\n }\n ],\n \"ObjectA760343E\": [\n {\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"name\": \"since\",\n \"type\": \"uint64\"\n }\n ],\n \"ObjectEEB10897\": [\n {\n \"name\": \"epoch\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"mode\",\n \"type\": \"uint8\"\n }\n ],\n \"GuildConsensusBallot\": [\n {\n \"name\": \"resolved\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"approved\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"votingEnd\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"eligiblePower\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"voteCount\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"requirements\",\n \"type\": \"GuildConsensusRequirements\"\n },\n {\n \"name\": \"votes\",\n \"type\": \"GuildVoteTotals\"\n }\n ],\n \"GuildConsensusRequirements\": [\n {\n \"name\": \"participation\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"approval\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"minimumApprovals\",\n \"type\": \"uint64\"\n }\n ],\n \"GuildConsensusResult\": [\n {\n \"name\": \"approved\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"approvals\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"rejections\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"abstains\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"eligiblePower\",\n \"type\": \"uint64\"\n }\n ],\n \"GuildProposalSettings\": [\n {\n \"name\": \"fee\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"power\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"duration\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"participation\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"approval\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"minimumApprovals\",\n \"type\": \"uint64\"\n }\n ],\n \"GuildVote\": [\n {\n \"name\": \"type\",\n \"type\": \"uint8\"\n },\n {\n \"name\": \"power\",\n \"type\": \"uint64\"\n }\n ],\n \"GuildVoteKey\": [\n {\n \"name\": \"proposalID\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"voter\",\n \"type\": \"address\"\n }\n ],\n \"GuildVoteTotals\": [\n {\n \"name\": \"approvals\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"rejections\",\n \"type\": \"uint64\"\n },\n {\n \"name\": \"abstains\",\n \"type\": \"uint64\"\n }\n ]\n }\n }\n} as const\n\nexport type ContractName = keyof typeof CONTRACT_SCHEMAS\n","import algosdk from 'algosdk'\nimport { sha256 } from 'js-sha256'\nimport { fromBase64, toHex, utf8 } from './chain/bytes'\nimport type { FetchLike } from './http'\nimport { requestJson } from './http'\nimport type { AssetData } from './sources/chain-data'\nimport type { Source, SourceContext } from './sources/types'\nimport { refKey, type Endpoint, type Entity, type Ref } from './types'\n\n/** How an asset's media was found. */\nexport type MediaStandard = 'resolver' | 'arc3' | 'arc19' | 'arc69' | 'url' | 'none'\n\nexport interface AssetMediaData {\n assetId: string\n /** ipfs://, https:// or data: URL of the image. Hosts map it through their image proxy. */\n image?: string\n animation?: string\n mimeType?: string\n standard: MediaStandard\n /**\n * ARC-3 only: true when the metadata JSON matches the asset's on-chain\n * metadata hash, false when it does not, absent when the asset has no hash.\n */\n metadataVerified?: boolean\n description?: string\n}\n\nexport const DEFAULT_IPFS_GATEWAY = 'https://ipfs.akita.community/ipfs/'\n\n// ---------------------------------------------------------------- ARC-19\n\nconst MULTICODEC: Record<string, number> = { raw: 0x55, 'dag-pb': 0x70 }\nconst MULTIHASH: Record<string, number> = { 'sha2-256': 0x12 }\nconst B32 = 'abcdefghijklmnopqrstuvwxyz234567'\n\nexport function base32Lower(bytes: Uint8Array): string {\n let out = ''\n let buffer = 0\n let bits = 0\n for (const b of bytes) {\n buffer = (buffer << 8) | b\n bits += 8\n while (bits >= 5) {\n out += B32[(buffer >>> (bits - 5)) & 31]\n bits -= 5\n }\n }\n if (bits > 0) out += B32[(buffer << (5 - bits)) & 31]\n return out\n}\n\n/** Resolves an ARC-19 `template-ipfs://{ipfscid:1:codec:reserve:sha2-256}` URL to `ipfs://<cid><suffix>`. */\nexport function resolveArc19(template: string, reserve: string | undefined): string | undefined {\n const m = template.match(/^template-ipfs:\\/\\/\\{ipfscid:(\\d+):([^:]+):([^:]+):([^}]+)\\}(.*)$/)\n if (!m || m[3] !== 'reserve' || !reserve || m[1] !== '1') return undefined\n const codec = MULTICODEC[m[2]!]\n const hash = MULTIHASH[m[4]!]\n if (codec === undefined || hash === undefined) return undefined\n const key = algosdk.decodeAddress(reserve).publicKey\n const cid = new Uint8Array(4 + key.length)\n cid.set([0x01, codec, hash, 0x20])\n cid.set(key, 4)\n return `ipfs://b${base32Lower(cid)}${m[5] ?? ''}`\n}\n\n// ---------------------------------------------------------------- helpers\n\nexport function ipfsToGateway(url: string, gateway = DEFAULT_IPFS_GATEWAY): string {\n return url.startsWith('ipfs://') ? `${gateway.replace(/\\/?$/, '/')}${url.slice('ipfs://'.length)}` : url\n}\n\nconst isArc3 = (asset: AssetData) => Boolean(asset.url?.endsWith('#arc3') || asset.name?.endsWith('@arc3') || asset.url?.split('#')[0]!.endsWith('.json'))\n\nasync function fetchBytes(fetchFn: FetchLike, url: string, timeoutMs = 10_000): Promise<Uint8Array | undefined> {\n const controller = new AbortController()\n const timer = setTimeout(() => controller.abort(), timeoutMs)\n try {\n const res = await fetchFn(url, { signal: controller.signal })\n if (!res.ok) return undefined\n return new Uint8Array(await res.arrayBuffer())\n } catch {\n return undefined\n } finally {\n clearTimeout(timer)\n }\n}\n\nfunction mediaFromJson(json: Record<string, unknown>, base: string): Pick<AssetMediaData, 'image' | 'animation' | 'mimeType' | 'description'> {\n const rel = (v: unknown) => {\n if (typeof v !== 'string' || !v) return undefined\n // ARC-3 allows URIs relative to the metadata file.\n return /^[a-z][a-z0-9+.-]*:/i.test(v) ? v : `${base.replace(/[^/]*$/, '')}${v}`\n }\n return {\n image: rel(json.image ?? json.media_url ?? json.image_url),\n animation: rel(json.animation_url),\n mimeType: typeof json.image_mimetype === 'string' ? json.image_mimetype : typeof json.mime_type === 'string' ? json.mime_type : undefined,\n description: typeof json.description === 'string' ? json.description : undefined,\n }\n}\n\n// ---------------------------------------------------------------- source\n\nexport interface MediaOptions {\n ipfsGateway?: string\n /** Indexer for ARC-69 notes. Without it, ARC-69 assets fall back to their URL. */\n indexer?: Endpoint\n}\n\n/**\n * Resolves `asset-media` refs: ARC-3 metadata (checked against the asset's\n * metadata hash), ARC-19 templates, ARC-69 notes and plain URLs. Uses the\n * shared `asset` cache for the asset itself.\n */\nexport function createMediaSource(loadAsset: (id: string) => Promise<Entity<AssetData> | undefined>, options: MediaOptions = {}): Source {\n const gateway = options.ipfsGateway ?? DEFAULT_IPFS_GATEWAY\n return {\n name: 'media',\n maxBatch: 1,\n concurrency: 6,\n supports: (kind) => kind === 'asset-media',\n async fetch(refs: Ref[], ctx: SourceContext) {\n const out = new Map<string, Entity>()\n const ref = refs[0]\n if (!ref) return out\n const asset = (await loadAsset(ref.id))?.data\n const now = Date.now()\n const done = (data: AssetMediaData) =>\n out.set(refKey(ref), { kind: 'asset-media', id: ref.id, network: ctx.network, status: 'live', data, provenance: { source: 'media', fetchedAt: now } })\n if (!asset) return out\n if (asset.imageUrl) return done({ assetId: ref.id, image: asset.imageUrl, standard: 'resolver' }), out\n\n let url = asset.url ?? ''\n let standard: MediaStandard = 'url'\n if (url.startsWith('template-ipfs://')) {\n url = resolveArc19(url, asset.reserve) ?? ''\n standard = 'arc19'\n }\n\n if (url && (isArc3(asset) || url.split('#')[0]!.endsWith('.json') || standard === 'arc19')) {\n const metaUrl = url.split('#')[0]!\n const bytes = await fetchBytes(ctx.fetch, ipfsToGateway(metaUrl, gateway))\n const json = bytes ? safeJson(utf8(bytes)) : undefined\n if (json) {\n const hash = asset.metadataHash ? toHex(fromBase64(asset.metadataHash)) : undefined\n return done({\n assetId: ref.id,\n standard: standard === 'arc19' ? 'arc19' : 'arc3',\n ...mediaFromJson(json, metaUrl),\n ...(hash && bytes ? { metadataVerified: sha256(bytes) === hash } : {}),\n }), out\n }\n // An ARC-19 template can point straight at an image.\n if (standard === 'arc19') return done({ assetId: ref.id, image: url, standard }), out\n }\n\n if (options.indexer) {\n const notes = await requestJson<{ transactions: Array<{ note?: string }> }>(\n ctx.fetch,\n options.indexer,\n `/v2/transactions?asset-id=${ref.id}&tx-type=acfg&limit=50`,\n ).catch(() => undefined)\n // The latest config transaction with a JSON note is the current ARC-69 metadata.\n for (const t of [...(notes?.transactions ?? [])].reverse()) {\n const json = t.note ? safeJson(utf8(fromBase64(t.note))) : undefined\n if (json && json.standard === 'arc69') {\n const media = mediaFromJson(json, url)\n return done({ assetId: ref.id, standard: 'arc69', ...media, image: media.image ?? (url || undefined) }), out\n }\n }\n }\n\n // A plain URL is often a project website; only treat it as media when it looks like one.\n return done(url && looksLikeMedia(url) ? { assetId: ref.id, image: url, standard: 'url' } : { assetId: ref.id, standard: 'none' }), out\n },\n }\n}\n\nexport function looksLikeMedia(url: string): boolean {\n return url.startsWith('ipfs://') || url.startsWith('data:image/') || /\\.(png|jpe?g|gif|webp|svg|avif|mp4|webm)([?#].*)?$/i.test(url)\n}\n\nfunction safeJson(text: string): Record<string, unknown> | undefined {\n try {\n const v = JSON.parse(text)\n return v && typeof v === 'object' && !Array.isArray(v) ? v : undefined\n } catch {\n return undefined\n }\n}\n","import { fromBase64, toHex } from '../chain/bytes'\nimport type { EvalDeltaKeyValue, IndexerApplication, IndexerTransaction } from '../chain/indexer-types'\nimport { applyDelta, type RawState } from '../chain/state'\n\n/** One call to (or creation of) an app, flattened out of the indexer's inner-transaction tree. */\nexport interface AppCall {\n /** Id of the root transaction that contains the call. */\n txId: string\n /** Inner-transaction path inside the root, e.g. \"1.0\". Empty for a root call. */\n path: string\n round: number\n roundTime?: number\n sender: string\n onCompletion: string\n args: Uint8Array[]\n /** First 4 bytes of the first arg, as hex. */\n selector?: string\n creates: boolean\n globalDelta: EvalDeltaKeyValue[]\n logs: string[]\n inner: IndexerTransaction[]\n /** Transactions in the same group as this call (root group or inner group). */\n siblings: IndexerTransaction[]\n}\n\nexport interface AppHistory {\n application: IndexerApplication\n transactions: IndexerTransaction[]\n}\n\n/** Every call to `appId`, in chain order. */\nexport function collectAppCalls(appId: number, roots: IndexerTransaction[]): AppCall[] {\n const ordered = [...roots].sort(\n (a, b) =>\n (a['confirmed-round'] ?? 0) - (b['confirmed-round'] ?? 0) ||\n (a['intra-round-offset'] ?? 0) - (b['intra-round-offset'] ?? 0),\n )\n const calls: AppCall[] = []\n const walk = (txn: IndexerTransaction, root: IndexerTransaction, path: string, siblings: IndexerTransaction[]) => {\n const appl = txn['application-transaction']\n const creates = txn['created-application-index'] === appId\n if (appl && (appl['application-id'] === appId || creates)) {\n const args = (appl['application-args'] ?? []).map(fromBase64)\n calls.push({\n txId: root.id ?? '',\n path,\n round: root['confirmed-round'] ?? 0,\n roundTime: root['round-time'],\n sender: txn.sender,\n onCompletion: appl['on-completion'],\n args,\n selector: args[0] && args[0].length >= 4 ? toHex(args[0].subarray(0, 4)) : undefined,\n creates,\n globalDelta: txn['global-state-delta'] ?? [],\n logs: txn.logs ?? [],\n inner: txn['inner-txns'] ?? [],\n siblings,\n })\n }\n const inner = txn['inner-txns'] ?? []\n inner.forEach((child, i) => walk(child, root, path ? `${path}.${i}` : String(i), inner))\n }\n for (const root of ordered) walk(root, root, '', [root])\n return calls\n}\n\nexport interface Replay {\n state: RawState\n calls: AppCall[]\n created?: AppCall\n deleted?: AppCall\n}\n\n/** Replays every global-state delta in order. `onCall` sees the state before and after each call. */\nexport function replay(\n appId: number,\n roots: IndexerTransaction[],\n onCall?: (call: AppCall, before: RawState, after: RawState) => void,\n): Replay {\n const state: RawState = new Map()\n const calls = collectAppCalls(appId, roots)\n let created: AppCall | undefined\n let deleted: AppCall | undefined\n for (const call of calls) {\n const before = new Map(state)\n applyDelta(state, call.globalDelta)\n if (call.creates) created = call\n if (call.onCompletion === 'delete') deleted = call\n onCall?.(call, before, state)\n }\n return { state, calls, created, deleted }\n}\n\nexport const ZERO_ADDRESS = 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAY5HFKQ'\n\nexport function nonZeroAddress(value: unknown): string | undefined {\n return typeof value === 'string' && value && value !== ZERO_ADDRESS ? value : undefined\n}\n\n/** Receivers of asset transfers of `assetId` anywhere under `txns`. */\nexport function assetReceivers(txns: IndexerTransaction[], assetId: string): string[] {\n const out: string[] = []\n const visit = (t: IndexerTransaction) => {\n const ax = t['asset-transfer-transaction']\n if (ax && String(ax['asset-id']) === assetId) {\n if (ax.amount > 0) out.push(ax.receiver)\n if (ax['close-to']) out.push(ax['close-to'])\n }\n t['inner-txns']?.forEach(visit)\n }\n txns.forEach(visit)\n return out\n}\n","import { fromBase64 } from '../chain/bytes'\nimport { stakingPoolFromState, type StakingPoolData } from '../akita'\nimport { rawUint, stateFromTeal, type RawState } from '../chain/state'\nimport type { IndexerApplication, IndexerTransaction } from '../chain/indexer-types'\nimport { decodeArgs, decodeEvents, decodeGlobalState, methodForSelector, type Decoded } from '../contracts/decode'\nimport { CONTRACT_SCHEMAS } from '../contracts/schemas.generated'\nimport type { Evidence } from '../types'\nimport { assetReceivers, nonZeroAddress, replay, type AppCall } from './history'\n\nconst str = (v: Decoded | undefined): string => (typeof v === 'string' ? v : v == null ? '' : String(v))\nconst flag = (v: Decoded | undefined): boolean => str(v) === '1' || v === true\nconst nowSec = () => Math.floor(Date.now() / 1000)\n\nfunction closeInfo(call: AppCall | undefined) {\n return call ? { closedRound: call.round, closedAt: call.roundTime, closeTxId: call.txId } : {}\n}\n\nfunction evidenceFor(app: IndexerApplication, deleted: AppCall | undefined): Evidence {\n return {\n appId: app.id,\n createdRound: app['created-at-round'],\n deletedRound: app['deleted-at-round'],\n deleteTxId: deleted?.txId,\n }\n}\n\n// ---------------------------------------------------------------- listing\n\nexport interface ListingData {\n appId: string\n status: 'active' | 'expired' | 'sold' | 'delisted' | 'closed'\n seller: string\n prize: string\n isPrizeBox: boolean\n prizeAmount: string\n price: string\n paymentAsset: string\n expiration: string\n reservedFor?: string\n gateId: string\n creatorRoyalty: string\n marketplace?: string\n marketplaceRoyalties: string\n buyer?: string\n createdRound?: number\n closedRound?: number\n closedAt?: number\n closeTxId?: string\n}\n\nexport function listingFromDecoded(appId: string, d: Record<string, Decoded>, now = nowSec()): ListingData {\n const expiration = str(d.expiration)\n return {\n appId,\n status: expiration !== '0' && expiration !== '' && Number(expiration) < now ? 'expired' : 'active',\n seller: str(d.seller),\n prize: str(d.prize),\n isPrizeBox: flag(d.isPrizeBox),\n prizeAmount: str(d.prizeAmount) || '1',\n price: str(d.price),\n paymentAsset: str(d.paymentAsset),\n expiration,\n reservedFor: nonZeroAddress(d.reservedFor),\n gateId: str(d.gateID),\n creatorRoyalty: str(d.creatorRoyalty),\n marketplace: nonZeroAddress(d.marketplace),\n marketplaceRoyalties: str(d.marketplaceRoyalties),\n }\n}\n\n/** Who received the prize in the closing call, for contract versions whose selectors we do not know. */\nfunction prizeRecipient(call: AppCall, listing: ListingData): string | undefined {\n if (listing.isPrizeBox) {\n for (const t of call.inner) {\n const a = t['application-transaction']\n if (a && String(a['application-id']) === listing.prize && a['application-args']?.length) {\n const args = (a['application-args'] ?? []).map(fromBase64)\n const decoded = decodeArgs('prizeBox', 'transfer', args)\n if (typeof decoded[0] === 'string') return decoded[0]\n }\n }\n return undefined\n }\n return assetReceivers(call.inner, listing.prize)[0]\n}\n\nexport function reduceListing(app: IndexerApplication, txns: IndexerTransaction[]) {\n const r = replay(app.id, txns)\n const data: ListingData = { ...listingFromDecoded(String(app.id), decodeGlobalState('listing', r.state)), createdRound: r.created?.round }\n const close = r.deleted\n const finalized = close ? decodeEvents('listing', close.logs).find((e) => e.name === 'ListingFinalized') : undefined\n if (close && finalized) {\n // Contracts with the Finalized event state the outcome directly.\n const sold = str(finalized.fields.outcome) === '1'\n data.status = sold ? 'sold' : 'delisted'\n if (sold) data.buyer = nonZeroAddress(finalized.fields.buyer)\n Object.assign(data, closeInfo(close))\n } else if (close) {\n const method = close.selector ? methodForSelector('listing', close.selector) : undefined\n if (method === 'purchase' || method === 'purchaseAsa') {\n const args = decodeArgs('listing', method, close.args)\n data.status = 'sold'\n data.buyer = typeof args[0] === 'string' ? args[0] : prizeRecipient(close, data)\n } else if (method === 'delist') {\n data.status = 'delisted'\n } else {\n const to = prizeRecipient(close, data)\n data.status = !to ? 'closed' : to === data.seller ? 'delisted' : 'sold'\n if (data.status === 'sold') data.buyer = to\n }\n Object.assign(data, closeInfo(close))\n }\n return { data, evidence: evidenceFor(app, close), archived: Boolean(app.deleted) }\n}\n\n// ---------------------------------------------------------------- auction\n\nexport interface AuctionBid {\n bidder: string\n amount: string\n round: number\n /** Absent when the bid came from an off-chain record. */\n txId?: string\n}\n\nexport interface AuctionData {\n appId: string\n status: 'upcoming' | 'live' | 'ended' | 'settled' | 'cancelled' | 'closed'\n seller: string\n prize: string\n isPrizeBox: boolean\n prizeClaimed: boolean\n bidAsset: string\n bidFee: string\n startingBid: string\n bidMinimumIncrease: string\n startTimestamp: string\n endTimestamp: string\n highestBid: string\n bidCount: string\n uniqueBidders: string\n highestBidder?: string\n raffleAmount: string\n raffleWinner?: string\n rafflePrizeClaimed: boolean\n gateId: string\n marketplace?: string\n creatorRoyalty: string\n bids?: AuctionBid[]\n createdRound?: number\n closedRound?: number\n closedAt?: number\n closeTxId?: string\n}\n\nexport function auctionFromDecoded(appId: string, d: Record<string, Decoded>, now = nowSec()): AuctionData {\n const start = Number(str(d.startTimestamp) || 0)\n const end = Number(str(d.endTimestamp) || 0)\n const prizeClaimed = flag(d.prizeClaimed)\n return {\n appId,\n status: prizeClaimed ? 'settled' : now < start ? 'upcoming' : now < end ? 'live' : 'ended',\n seller: str(d.seller),\n prize: str(d.prize),\n isPrizeBox: flag(d.isPrizeBox),\n prizeClaimed,\n bidAsset: str(d.bidAsset),\n bidFee: str(d.bidFee),\n startingBid: str(d.startingBid),\n bidMinimumIncrease: str(d.bidMinimumIncrease),\n startTimestamp: str(d.startTimestamp),\n endTimestamp: str(d.endTimestamp),\n highestBid: str(d.highestBid),\n // bid_id holds the next bid id and starts at 1.\n bidCount: String(Math.max(0, Number(str(d.bidID) || 1) - 1)),\n uniqueBidders: str(d.uniqueAddressCount),\n raffleAmount: str(d.raffleAmount),\n raffleWinner: nonZeroAddress(d.raffleWinner),\n rafflePrizeClaimed: flag(d.rafflePrizeClaimed),\n gateId: str(d.gateID),\n marketplace: nonZeroAddress(d.marketplace),\n creatorRoyalty: str(d.creatorRoyalty),\n }\n}\n\nconst HIGHEST_BID_KEY = CONTRACT_SCHEMAS.auction.global.highestBid.key\n\nexport function reduceAuction(app: IndexerApplication, txns: IndexerTransaction[]) {\n const bids: AuctionBid[] = []\n const r = replay(app.id, txns, (call, before, after) => {\n if (call.creates) return\n const prev = rawUint(before, HIGHEST_BID_KEY)\n const next = rawUint(after, HIGHEST_BID_KEY)\n // Every accepted bid must beat the highest bid, so a rise in highest_bid marks a bid and its amount.\n if (next !== undefined && next !== prev && (prev === undefined || next > prev)) {\n bids.push({ bidder: call.sender, amount: next.toString(), round: call.round, txId: call.txId })\n }\n })\n const data: AuctionData = { ...auctionFromDecoded(String(app.id), decodeGlobalState('auction', r.state)), bids, createdRound: r.created?.round }\n data.highestBidder = bids.at(-1)?.bidder\n // Contracts with Finalized events name the winners directly.\n const events = r.calls.flatMap((c) => decodeEvents('auction', c.logs))\n const claimed = events.find((e) => e.name === 'AuctionPrizeClaimed')\n if (claimed && str(claimed.fields.amount) !== '0') data.highestBidder = nonZeroAddress(claimed.fields.winner)\n const raffleClaimed = events.find((e) => e.name === 'AuctionRafflePrizeClaimed')\n if (raffleClaimed) data.raffleWinner = nonZeroAddress(raffleClaimed.fields.winner)\n if (r.deleted) {\n const finalized = decodeEvents('auction', r.deleted.logs).find((e) => e.name === 'AuctionFinalized')\n const method = r.deleted.selector ? methodForSelector('auction', r.deleted.selector) : undefined\n data.status = (finalized ? str(finalized.fields.outcome) === '2' : method === 'cancel') ? 'cancelled' : 'closed'\n Object.assign(data, closeInfo(r.deleted))\n }\n return { data, evidence: evidenceFor(app, r.deleted), archived: Boolean(app.deleted) }\n}\n\n// ---------------------------------------------------------------- raffle\n\nexport interface RaffleEntry {\n entrant: string\n tickets: string\n}\n\nexport interface RaffleData {\n appId: string\n status: 'upcoming' | 'live' | 'drawing' | 'complete' | 'failed' | 'closed'\n seller: string\n prize: string\n isPrizeBox: boolean\n prizeClaimed: boolean\n ticketAsset: string\n startTimestamp: string\n endTimestamp: string\n minTickets: string\n maxTickets: string\n minEntries: string\n entryCount: string\n ticketCount: string\n winningTicket: string\n winner?: string\n failed: boolean\n gateId: string\n marketplace?: string\n creatorRoyalty: string\n entries?: RaffleEntry[]\n createdRound?: number\n closedRound?: number\n closedAt?: number\n closeTxId?: string\n}\n\nexport function raffleFromDecoded(appId: string, d: Record<string, Decoded>, now = nowSec()): RaffleData {\n const start = Number(str(d.startTimestamp) || 0)\n const end = Number(str(d.endTimestamp) || 0)\n const winner = nonZeroAddress(d.winner)\n const failed = flag(d.failed)\n return {\n appId,\n status: failed ? 'failed' : winner ? 'complete' : now < start ? 'upcoming' : now < end ? 'live' : 'drawing',\n seller: str(d.seller),\n prize: str(d.prize),\n isPrizeBox: flag(d.isPrizeBox),\n prizeClaimed: flag(d.prizeClaimed),\n ticketAsset: str(d.ticketAsset),\n startTimestamp: str(d.startTimestamp),\n endTimestamp: str(d.endTimestamp),\n minTickets: str(d.minTickets),\n maxTickets: str(d.maxTickets),\n minEntries: str(d.minEntries),\n entryCount: str(d.entryCount),\n ticketCount: str(d.ticketCount),\n winningTicket: str(d.winningTicket),\n winner,\n failed,\n gateId: str(d.gateID),\n marketplace: nonZeroAddress(d.marketplace),\n creatorRoyalty: str(d.creatorRoyalty),\n }\n}\n\nconst TICKET_COUNT_KEY = CONTRACT_SCHEMAS.raffle.global.ticketCount.key\n\nexport function reduceRaffle(app: IndexerApplication, txns: IndexerTransaction[]) {\n const tickets = new Map<string, bigint>()\n const r = replay(app.id, txns, (call, before, after) => {\n if (call.creates) return\n const diff = (rawUint(after, TICKET_COUNT_KEY) ?? 0n) - (rawUint(before, TICKET_COUNT_KEY) ?? 0n)\n // Tickets only grow through enter and add calls; the sender is the entrant.\n if (diff > 0n) tickets.set(call.sender, (tickets.get(call.sender) ?? 0n) + diff)\n })\n const data: RaffleData = {\n ...raffleFromDecoded(String(app.id), decodeGlobalState('raffle', r.state)),\n entries: [...tickets].map(([entrant, n]) => ({ entrant, tickets: n.toString() })),\n createdRound: r.created?.round,\n }\n if (r.deleted) {\n if (data.status !== 'failed') data.status = 'closed'\n Object.assign(data, closeInfo(r.deleted))\n }\n return { data, evidence: evidenceFor(app, r.deleted), archived: Boolean(app.deleted) }\n}\n\n// ---------------------------------------------------------------- poll\n\nexport interface PollData {\n appId: string\n status: 'active' | 'ended' | 'closed'\n type: string\n question: string\n options: Array<{ label: string; votes: string }>\n endTime: string\n maxSelected: string\n gateId: string\n totalVotes: string\n voters?: number\n createdRound?: number\n closedRound?: number\n closedAt?: number\n closeTxId?: string\n}\n\nconst OPTION_FIELDS = [\n ['optionOne', 'votesOne'],\n ['optionTwo', 'votesTwo'],\n ['optionThree', 'votesThree'],\n ['optionFour', 'votesFour'],\n ['optionFive', 'votesFive'],\n] as const\n\nexport function pollFromDecoded(appId: string, d: Record<string, Decoded>, now = nowSec()): PollData {\n const count = Number(str(d.optionCount) || 0)\n const options = OPTION_FIELDS.slice(0, count || OPTION_FIELDS.length)\n .filter(([label]) => str(d[label]) !== '')\n .map(([label, votes]) => ({ label: str(d[label]), votes: str(d[votes]) || '0' }))\n const endTime = str(d.endTime)\n return {\n appId,\n status: Number(endTime || 0) > now ? 'active' : 'ended',\n type: str(d.type),\n question: str(d.question),\n options,\n endTime,\n maxSelected: str(d.maxSelected),\n gateId: str(d.gateID),\n totalVotes: options.reduce((a, o) => a + BigInt(o.votes || '0'), 0n).toString(),\n }\n}\n\nexport function reducePoll(app: IndexerApplication, txns: IndexerTransaction[]) {\n const voters = new Set<string>()\n const voteSelectors = new Set(['vote', 'gatedVote'].map((m) => (CONTRACT_SCHEMAS.poll.methods as Record<string, { selector: string }>)[m]?.selector))\n const r = replay(app.id, txns, (call) => {\n if (call.selector && voteSelectors.has(call.selector)) voters.add(call.sender)\n })\n const data: PollData = { ...pollFromDecoded(String(app.id), decodeGlobalState('poll', r.state)), voters: voters.size, createdRound: r.created?.round }\n if (r.deleted) {\n data.status = 'closed'\n Object.assign(data, closeInfo(r.deleted))\n }\n return { data, evidence: evidenceFor(app, r.deleted), archived: Boolean(app.deleted) }\n}\n\n// ---------------------------------------------------------------- prize box\n\nexport interface PrizeBoxData {\n appId: string\n status: 'active' | 'closed'\n owner: string\n optinCount: string\n createdRound?: number\n closedRound?: number\n closedAt?: number\n closeTxId?: string\n}\n\nexport function prizeBoxFromDecoded(appId: string, d: Record<string, Decoded>): PrizeBoxData {\n return { appId, status: 'active', owner: str(d.owner), optinCount: str(d.optinCount) }\n}\n\nexport function reducePrizeBox(app: IndexerApplication, txns: IndexerTransaction[]) {\n const r = replay(app.id, txns)\n const data: PrizeBoxData = { ...prizeBoxFromDecoded(String(app.id), decodeGlobalState('prizeBox', r.state)), createdRound: r.created?.round }\n if (r.deleted) {\n data.status = 'closed'\n Object.assign(data, closeInfo(r.deleted))\n }\n return { data, evidence: evidenceFor(app, r.deleted), archived: Boolean(app.deleted) }\n}\n\n// ---------------------------------------------------------------- registry\n\n// ---------------------------------------------------------------- staking pool\n\n/** Header only: rewards and rounds live in boxes, which history does not keep. */\nexport function reduceStakingPool(app: IndexerApplication, txns: IndexerTransaction[]) {\n const r = replay(app.id, txns)\n const data: StakingPoolData = stakingPoolFromState(String(app.id), r.state)\n if (r.deleted) {\n data.status = 'closed'\n data.closedRound = r.deleted.round\n }\n return { data, evidence: evidenceFor(app, r.deleted), archived: Boolean(app.deleted) }\n}\n\nexport interface ContractFamily {\n contract: 'listing' | 'auction' | 'raffle' | 'poll' | 'prizeBox' | 'stakingPool'\n /** Live state from global state (algod or a live indexer record). */\n fromState(appId: string, state: RawState): unknown\n /** Final or current state from full call history. */\n reduce(app: IndexerApplication, txns: IndexerTransaction[]): { data: unknown; evidence: Evidence; archived: boolean }\n /** Fields compared when verifying a claimed archived state. */\n verifyFields: string[]\n}\n\nexport const FAMILIES: Record<string, ContractFamily> = {\n listing: {\n contract: 'listing',\n fromState: (id, s) => listingFromDecoded(id, decodeGlobalState('listing', s)),\n reduce: reduceListing,\n verifyFields: ['status', 'seller', 'prize', 'price', 'paymentAsset', 'buyer'],\n },\n auction: {\n contract: 'auction',\n fromState: (id, s) => auctionFromDecoded(id, decodeGlobalState('auction', s)),\n reduce: reduceAuction,\n verifyFields: ['status', 'seller', 'prize', 'highestBid', 'bidCount', 'highestBidder', 'raffleWinner'],\n },\n raffle: {\n contract: 'raffle',\n fromState: (id, s) => raffleFromDecoded(id, decodeGlobalState('raffle', s)),\n reduce: reduceRaffle,\n verifyFields: ['status', 'seller', 'prize', 'entryCount', 'ticketCount', 'winner'],\n },\n poll: {\n contract: 'poll',\n fromState: (id, s) => pollFromDecoded(id, decodeGlobalState('poll', s)),\n reduce: reducePoll,\n verifyFields: ['question', 'options', 'totalVotes'],\n },\n 'staking-pool': {\n contract: 'stakingPool',\n fromState: (id, s) => stakingPoolFromState(id, s),\n reduce: reduceStakingPool,\n verifyFields: ['title', 'creator', 'poolType', 'minimumStake'],\n },\n 'prize-box': {\n contract: 'prizeBox',\n fromState: (id, s) => prizeBoxFromDecoded(id, decodeGlobalState('prizeBox', s)),\n reduce: reducePrizeBox,\n verifyFields: ['owner'],\n },\n}\n\nexport { stateFromTeal }\n","import type { IndexerAsset } from '../chain/indexer-types'\n\nexport interface AssetData {\n id: string\n name?: string\n unitName?: string\n decimals: number\n total: string\n url?: string\n /** Base64 metadata hash, used to verify ARC-3 metadata. */\n metadataHash?: string\n creator: string\n manager?: string\n reserve?: string\n freeze?: string\n clawback?: string\n defaultFrozen?: boolean\n /** Resolved image URL, when a resolver supplies one (ARC-3, ARC-19 and ARC-69 already applied). */\n imageUrl?: string\n deleted?: boolean\n createdRound?: number\n destroyedRound?: number\n}\n\nexport function assetFromJson(a: IndexerAsset): AssetData {\n const p = a.params\n return {\n id: String(a.index),\n name: p.name,\n unitName: p['unit-name'],\n decimals: p.decimals,\n total: String(p.total),\n url: p.url,\n metadataHash: p['metadata-hash'],\n creator: p.creator,\n manager: p.manager,\n reserve: p.reserve,\n freeze: p.freeze,\n clawback: p.clawback,\n defaultFrozen: Boolean(p['default-frozen']),\n ...(a.deleted ? { deleted: true } : {}),\n ...(a['created-at-round'] ? { createdRound: a['created-at-round'] } : {}),\n ...(a['destroyed-at-round'] ? { destroyedRound: a['destroyed-at-round'] } : {}),\n }\n}\n\nexport interface AccountData {\n address: string\n amount: string\n minBalance: string\n totalAssets: number\n totalApps: number\n authAddr?: string\n}\n\nexport function accountFromJson(a: Record<string, unknown>): AccountData {\n return {\n address: String(a.address),\n amount: String(a.amount ?? 0),\n minBalance: String(a['min-balance'] ?? 0),\n totalAssets: Number(a['total-assets-opted-in'] ?? 0),\n totalApps: Number(a['total-apps-opted-in'] ?? 0),\n ...(a['auth-addr'] ? { authAddr: String(a['auth-addr']) } : {}),\n }\n}\n\nexport interface ApplicationData {\n id: string\n creator?: string\n deleted: boolean\n createdRound?: number\n deletedRound?: number\n}\n\n/** An NFT collection, served by a resolver (Akita backend). Images are assets, so they resolve through asset-media. */\nexport interface CollectionData {\n id: string\n name: string\n description?: string\n /** NFD app id that owns the collection. */\n nfdId?: string\n avatarAssetId?: string\n bannerAssetId?: string\n explicit?: boolean\n}\n","import { FAMILIES } from '../archive/families'\nimport type { AppHistory } from '../archive/history'\nimport type { IndexerApplication, IndexerAsset, IndexerTransaction } from '../chain/indexer-types'\nimport { stateFromTeal } from '../chain/state'\nimport { requestJson, type FetchLike } from '../http'\nimport { refKey, type Endpoint, type Entity, type Ref } from '../types'\nimport { accountFromJson, assetFromJson, type ApplicationData } from './chain-data'\nimport type { Source, SourceContext } from './types'\n\nconst KINDS = new Set(['account', 'asset', 'application', 'transaction'])\n\n/** An app's indexer record (kept after deletion) and its complete call history. */\nexport async function fetchAppHistory(fetchFn: FetchLike, endpoint: Endpoint, appId: string): Promise<AppHistory | undefined> {\n const rec = await requestJson<{ application: IndexerApplication }>(fetchFn, endpoint, `/v2/applications/${appId}?include-all=true`)\n if (!rec) return undefined\n const transactions: IndexerTransaction[] = []\n let next: string | undefined\n do {\n const page = await requestJson<{ transactions: IndexerTransaction[]; 'next-token'?: string }>(\n fetchFn,\n endpoint,\n `/v2/transactions?application-id=${appId}&limit=1000${next ? `&next=${encodeURIComponent(next)}` : ''}`,\n )\n transactions.push(...(page?.transactions ?? []))\n next = page?.transactions.length ? page['next-token'] : undefined\n } while (next)\n return { application: rec.application, transactions }\n}\n\n/**\n * History and deleted records from an indexer. For contract kinds it rebuilds\n * deleted apps from their call history, so it is the source of archived state.\n */\nexport function createIndexerSource(endpoint: Endpoint): Source {\n return {\n name: 'indexer',\n maxBatch: 1,\n concurrency: 6,\n supports: (kind) => KINDS.has(kind) || kind in FAMILIES,\n async fetch(refs: Ref[], ctx: SourceContext) {\n const out = new Map<string, Entity>()\n const ref = refs[0]\n if (!ref) return out\n const key = refKey(ref)\n const now = Date.now()\n const base = { kind: ref.kind, id: ref.id, network: ctx.network }\n\n if (ref.kind === 'transaction') {\n const t = await requestJson<{ transaction: IndexerTransaction }>(ctx.fetch, endpoint, `/v2/transactions/${ref.id}`)\n if (t) out.set(key, { ...base, status: 'live', data: t.transaction, provenance: { source: 'indexer', round: t.transaction['confirmed-round'], fetchedAt: now } })\n return out\n }\n if (ref.kind === 'account') {\n const a = await requestJson<{ account: Record<string, unknown>; 'current-round'?: number }>(ctx.fetch, endpoint, `/v2/accounts/${ref.id}?exclude=all`)\n if (a) out.set(key, { ...base, status: 'live', data: accountFromJson(a.account), provenance: { source: 'indexer', round: a['current-round'], fetchedAt: now } })\n return out\n }\n if (ref.kind === 'asset') {\n const a = await requestJson<{ asset: IndexerAsset }>(ctx.fetch, endpoint, `/v2/assets/${ref.id}?include-all=true`)\n if (a) out.set(key, { ...base, status: a.asset.deleted ? 'archived' : 'live', data: assetFromJson(a.asset), provenance: { source: 'indexer', fetchedAt: now } })\n return out\n }\n if (ref.kind === 'application') {\n const a = await requestJson<{ application: IndexerApplication }>(ctx.fetch, endpoint, `/v2/applications/${ref.id}?include-all=true`)\n if (!a) return out\n const app = a.application\n const data: ApplicationData = {\n id: ref.id,\n creator: app.params.creator,\n deleted: Boolean(app.deleted),\n createdRound: app['created-at-round'],\n deletedRound: app['deleted-at-round'],\n }\n out.set(key, { ...base, status: app.deleted ? 'archived' : 'live', data, provenance: { source: 'indexer', fetchedAt: now } })\n return out\n }\n\n const family = FAMILIES[ref.kind]\n if (!family) return out\n const rec = await requestJson<{ application: IndexerApplication }>(ctx.fetch, endpoint, `/v2/applications/${ref.id}?include-all=true`)\n if (!rec) return out\n if (!rec.application.deleted) {\n // Live app: the indexer record carries current global state, but no boxes.\n const data = family.fromState(ref.id, stateFromTeal(rec.application.params['global-state']))\n out.set(key, { ...base, status: 'live', data, provenance: { source: 'indexer', fetchedAt: now } })\n return out\n }\n const history = await fetchAppHistory(ctx.fetch, endpoint, ref.id)\n if (!history) return out\n const reduced = family.reduce(history.application, history.transactions)\n out.set(key, {\n ...base,\n status: 'archived',\n data: reduced.data,\n evidence: reduced.evidence,\n provenance: { source: 'indexer', round: reduced.evidence.deletedRound, fetchedAt: now },\n verification: { state: 'verified', checkedAt: now, detail: 'Rebuilt from chain history' },\n })\n return out\n },\n }\n}\n","/** `ABCD…WXYZ`. The one address shortener; see docs/DESIGN.md §6. */\nexport function shortAddress(address: string, head = 4, tail = 4): string {\n if (!address || address.length <= head + tail + 1) return address\n return `${address.slice(0, head)}…${address.slice(-tail)}`\n}\n\nexport interface AmountFormatOptions {\n /** Most fraction digits to show. Defaults to all significant digits. */\n maxFraction?: number\n /** Group thousands with commas. Default true. */\n group?: boolean\n}\n\n/** Formats a base-unit amount (string, bigint or number) with `decimals`, without floating-point loss. */\nexport function formatAmount(base: string | bigint | number, decimals: number, options: AmountFormatOptions = {}): string {\n let v: bigint\n try {\n v = typeof base === 'bigint' ? base : BigInt(typeof base === 'number' ? Math.trunc(base) : base || '0')\n } catch {\n return String(base)\n }\n const negative = v < 0n\n if (negative) v = -v\n const digits = v.toString().padStart(decimals + 1, '0')\n let whole = decimals ? digits.slice(0, -decimals) : digits\n let fraction = decimals ? digits.slice(-decimals) : ''\n if (options.maxFraction !== undefined && fraction.length > options.maxFraction) fraction = fraction.slice(0, options.maxFraction)\n fraction = fraction.replace(/0+$/, '')\n if (options.group !== false) whole = whole.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',')\n return `${negative ? '-' : ''}${whole}${fraction ? `.${fraction}` : ''}`\n}\n\nexport const formatAlgo = (microAlgo: string | bigint | number, options?: AmountFormatOptions) => formatAmount(microAlgo, 6, options)\n\nconst UNITS: Array<[number, string]> = [\n [86_400, 'd'],\n [3_600, 'h'],\n [60, 'm'],\n [1, 's'],\n]\n\n/** `2d 4h`, `35m`, `12s`: the two largest units of a duration in seconds. */\nexport function formatDuration(seconds: number): string {\n let s = Math.max(0, Math.floor(seconds))\n if (s === 0) return '0s'\n // Past a week, hours are noise.\n if (s >= 7 * 86_400) return `${Math.floor(s / 86_400)}d`\n const parts: string[] = []\n for (const [size, unit] of UNITS) {\n if (s >= size && parts.length < 2) {\n parts.push(`${Math.floor(s / size)}${unit}`)\n s %= size\n }\n }\n return parts.join(' ')\n}\n\n/** `in 2d 4h` or `3h ago`, relative to `now` (unix seconds). */\nexport function formatRelativeTime(unixSeconds: number, now = Math.floor(Date.now() / 1000)): string {\n const diff = unixSeconds - now\n return diff >= 0 ? `in ${formatDuration(diff)}` : `${formatDuration(-diff)} ago`\n}\n","import { shortAddress } from './format'\nimport type { NfdData } from './sources/nfd'\nimport type { Source, SourceContext } from './sources/types'\nimport { refKey, type Entity, type Ref } from './types'\n\nexport interface IdentityData {\n address: string\n short: string\n name?: string\n avatar?: string\n nfd?: string\n /** Which step supplied the name: `nfd`, a provider name, or `address`. */\n nameSource: string\n /** True only when the name is bound to the address on-chain (an NFD). Self-chosen names are false. */\n nameVerified: boolean\n}\n\nexport interface IdentityProfile {\n name?: string\n avatar?: string\n}\n\n/** A host-supplied identity step, such as the Akita social profile. */\nexport interface IdentityProvider {\n name: string\n resolve(addresses: string[], ctx: SourceContext): Promise<Map<string, IdentityProfile>>\n}\n\n/**\n * The account identity chain (docs/DESIGN.md §6): steps in `order`, then the\n * short address. NFD lookups go through the shared `nfd-address` cache.\n */\nexport function createIdentitySource(\n loadNfd: (address: string) => Promise<Entity<NfdData> | undefined>,\n providers: IdentityProvider[],\n order: string[],\n): Source {\n return {\n name: 'identity',\n maxBatch: 100,\n concurrency: 4,\n supports: (kind) => kind === 'identity',\n async fetch(refs: Ref[], ctx: SourceContext) {\n const addresses = refs.map((r) => r.id)\n const [nfds, ...profiles] = await Promise.all([\n order.includes('nfd') ? Promise.all(addresses.map((a) => loadNfd(a).catch(() => undefined))) : Promise.resolve([]),\n ...providers.map((p) => p.resolve(addresses, ctx).catch(() => new Map<string, IdentityProfile>())),\n ])\n const byProvider = new Map(providers.map((p, i) => [p.name, profiles[i]!]))\n const out = new Map<string, Entity>()\n addresses.forEach((address, i) => {\n const nfd = (nfds as Array<Entity<NfdData> | undefined>)[i]?.data ?? undefined\n const data: IdentityData = { address, short: shortAddress(address), nameSource: 'address', nameVerified: false, ...(nfd ? { nfd: nfd.name } : {}) }\n for (const step of order) {\n const p = step === 'nfd' ? (nfd ? { name: nfd.name, avatar: nfd.avatar } : undefined) : byProvider.get(step)?.get(address)\n if (!p) continue\n if (!data.avatar && p.avatar) data.avatar = p.avatar\n if (!data.name && p.name) {\n data.name = p.name\n data.nameSource = step\n data.nameVerified = step === 'nfd'\n }\n }\n const ref = refs[i]!\n out.set(refKey(ref), { kind: 'identity', id: address, network: ctx.network, status: 'live', data, provenance: { source: 'identity', fetchedAt: Date.now() } })\n })\n return out\n },\n }\n}\n","import algosdk from 'algosdk'\nimport { sha256 } from 'js-sha256'\nimport { fromHex, toHex, utf8 } from './chain/bytes'\nimport { readBox } from './akita'\nimport { requestJson, type FetchLike } from './http'\nimport { base32Lower, DEFAULT_IPFS_GATEWAY } from './media'\nimport type { Source, SourceContext } from './sources/types'\nimport { refKey, type Endpoint, type Entity, type Ref } from './types'\n\n/*\n * Contract interfaces: the ARC-56 `ui` extension (icons, labels and call\n * cards declared in the contract source) and the Meta pointer that lets any\n * client find the full ARC-56 file for a deployed app.\n *\n * The publisher pins the ARC-56 JSON to IPFS as a CIDv1 raw sha256 file, so\n * the CID is the hash of the file, and stores the 36 CID bytes in Meta under\n * its own account with the key `akita.iface` + app id. A factory child is\n * described once, under its factory's id by the factory's creator.\n */\n\n// ---------------------------------------------------------------- ui types\n\n/** Any JSON value. */\nexport type UiJson = string | number | boolean | null | UiJson[] | { [key: string]: UiJson | undefined }\n\n/** A value read for a card, resolved like an ARC-56 `DefaultValue`. */\nexport type UiSource =\n | { source: 'global' | 'local' | 'box' | 'method'; data: string }\n | { arg: string }\n | { const: UiJson }\n\nexport type UiInputKind = 'amount' | 'count' | 'asset' | 'address' | 'text' | 'choice' | 'toggle'\n\nexport interface UiInput {\n input: UiInputKind\n label?: string\n min?: number\n max?: number\n options?: { label: string; value: UiJson }[]\n asset?: UiSource\n [key: string]: UiJson | UiSource | undefined\n}\n\nexport type UiArgBinding = 'ref' | 'sender' | 'wallet' | 'rekeyBack' | UiSource | UiInput\n\nexport type UiAmount = UiSource | { add: UiAmount[] } | { mul: UiAmount[] }\n\nexport type UiFormat = 'amount' | 'time' | 'duration' | 'address' | 'asset' | 'text'\n\nexport interface UiCard {\n show?: { label: string; from: UiSource; format?: UiFormat }[]\n bind?: Record<string, UiArgBinding>\n pay?: { amount: UiAmount; asset?: UiSource; receiver?: UiSource }\n enabled?: { before?: UiSource; after?: UiSource }\n confirm?: string\n}\n\nexport interface MethodUi {\n action?: string\n glyph?: string\n label?: string\n card?: UiCard\n}\n\nexport interface ContractUi {\n v?: number\n glyph?: string\n svg?: string\n color?: string\n defaultAction?: string\n}\n\n/** The parts of an ARC-56 app spec this module reads. */\nexport interface Arc56Like {\n name: string\n arcs?: number[]\n ui?: ContractUi\n methods: Array<{\n name: string\n desc?: string\n args: Array<{ type: string; name?: string; desc?: string; defaultValue?: unknown }>\n returns: { type: string }\n readonly?: boolean\n ui?: MethodUi\n }>\n}\n\n// ---------------------------------------------------------------- interface\n\nexport interface InterfaceMethod {\n name: string\n signature: string\n /** 4-byte ABI selector, hex. */\n selector: string\n args: Arc56Like['methods'][number]['args']\n readonly: boolean\n ui?: MethodUi\n}\n\nexport interface ContractInterface {\n name: string\n ui?: ContractUi\n methods: InterfaceMethod[]\n /** The full ARC-56 spec, for clients that build calls. */\n spec: Arc56Like\n}\n\nexport function interfaceFromArc56(spec: Arc56Like): ContractInterface {\n return {\n name: spec.name,\n ...(isObject(spec.ui) ? { ui: spec.ui } : {}),\n methods: spec.methods.map((m) => {\n const signature = `${m.name}(${m.args.map((a) => a.type).join(',')})${m.returns.type}`\n return {\n name: m.name,\n signature,\n selector: toHex(algosdk.ABIMethod.fromSignature(signature).getSelector()),\n args: m.args,\n readonly: m.readonly ?? false,\n ...(isObject(m.ui) ? { ui: m.ui } : {}),\n }\n }),\n spec,\n }\n}\n\nexport interface InterfaceAction {\n /** Stable action name, e.g. `raffle_enter`. Hosts map it to their own icon and wording. */\n action?: string\n glyph?: string\n label?: string\n /** The contract's own icon and color, when it declares them. */\n svg?: string\n color?: string\n /** The method the action came from. Absent when it came from the contract's `defaultAction`. */\n method?: InterfaceMethod\n}\n\n/**\n * The action to show for a call. Looks the method up by selector (hex or\n * bytes) or name, and falls back to the contract's `defaultAction` and glyph.\n */\nexport function interfaceAction(iface: ContractInterface, call: { selector?: string | Uint8Array; method?: string } = {}): InterfaceAction | undefined {\n const selector = call.selector instanceof Uint8Array ? toHex(call.selector) : call.selector?.toLowerCase().replace(/^0x/, '')\n const method = selector\n ? iface.methods.find((m) => m.selector === selector)\n : call.method\n ? iface.methods.find((m) => m.name === call.method || m.signature === call.method)\n : undefined\n const c = iface.ui ?? {}\n const look = { ...(c.svg ? { svg: c.svg } : {}), ...(c.color ? { color: c.color } : {}) }\n if (method?.ui && (method.ui.action || method.ui.glyph || method.ui.label)) {\n return { action: method.ui.action, glyph: method.ui.glyph ?? c.glyph, label: method.ui.label, ...look, method }\n }\n if (c.defaultAction || c.glyph || c.svg) {\n const fallback = c.defaultAction ? iface.methods.find((m) => m.ui?.action === c.defaultAction) : undefined\n return { action: c.defaultAction, glyph: fallback?.ui?.glyph ?? c.glyph, label: fallback?.ui?.label, ...look }\n }\n return undefined\n}\n\n/** Methods that declare a card, i.e. that a client can offer as a form. */\nexport function interfaceCards(iface: ContractInterface): InterfaceMethod[] {\n return iface.methods.filter((m) => isObject(m.ui?.card))\n}\n\n// ---------------------------------------------------------------- CID\n\nconst CID_PREFIX = [0x01, 0x55, 0x12, 0x20] // CIDv1, raw, sha2-256, 32 bytes\n\n/** The CIDv1 raw sha256 of a file: the bytes Meta stores. */\nexport function cidForFile(file: Uint8Array): Uint8Array {\n return new Uint8Array([...CID_PREFIX, ...fromHex(sha256(file))])\n}\n\n/** `b…` base32 text form of CID bytes. */\nexport function cidToString(cid: Uint8Array): string {\n return `b${base32Lower(cid)}`\n}\n\n/** True when `cid` is a CIDv1 raw sha256 whose digest is the hash of `file`. */\nexport function verifyCid(cid: Uint8Array, file: Uint8Array): boolean {\n if (cid.length !== 36 || CID_PREFIX.some((b, i) => cid[i] !== b)) return false\n return toHex(cid.subarray(4)) === sha256(file)\n}\n\n// ---------------------------------------------------------------- Meta pointer\n\nexport const INTERFACE_NAMESPACE = 'akita.iface'\nconst META_RECORD_PREFIX = 0x6d // 'm'\n\nconst ascii = (s: string) => new Uint8Array([...s].map((c) => c.charCodeAt(0)))\n\n/** Meta record key: the namespace length, the namespace, then the key. */\nexport function metaRecordKey(namespace: string, key: string): Uint8Array {\n return new Uint8Array([namespace.length, ...ascii(namespace), ...ascii(key)])\n}\n\n/** Box name of a Meta record owned by `owner`. */\nexport function metaRecordBoxName(owner: string, key: Uint8Array): Uint8Array {\n return new Uint8Array([META_RECORD_PREFIX, ...algosdk.decodeAddress(owner).publicKey, ...key])\n}\n\n/** Decodes a Meta record box value, ARC-4 `(uint64 revision, byte[] data)`. */\nexport function decodeMetaRecord(value: Uint8Array): { revision: bigint; data: Uint8Array } | undefined {\n if (value.length < 12) return undefined\n const view = new DataView(value.buffer, value.byteOffset, value.byteLength)\n const offset = view.getUint16(8)\n if (offset + 2 > value.length) return undefined\n const length = view.getUint16(offset)\n if (offset + 2 + length > value.length) return undefined\n return { revision: view.getBigUint64(0), data: value.slice(offset + 2, offset + 2 + length) }\n}\n\n/** The CID `owner` published in Meta for `subject` (an app id), if any. */\nexport async function readInterfacePointer(\n fetchFn: FetchLike,\n algod: Endpoint,\n metaAppId: number,\n owner: string,\n subject: number | string,\n): Promise<Uint8Array | undefined> {\n const box = await readBox(fetchFn, algod, metaAppId, metaRecordBoxName(owner, metaRecordKey(INTERFACE_NAMESPACE, String(subject))))\n const data = box ? decodeMetaRecord(box)?.data : undefined\n return data && data.length === 36 ? data : undefined\n}\n\n/** Fetches a file by CID through the gateways in order and returns it only if it matches the CID. */\nexport async function fetchByCid(fetchFn: FetchLike, cid: Uint8Array, gateways: string[] = [DEFAULT_IPFS_GATEWAY]): Promise<Uint8Array | undefined> {\n const name = cidToString(cid)\n for (const gateway of gateways) {\n try {\n const res = await fetchFn(`${gateway.replace(/\\/?$/, '/')}${name}`)\n if (!res.ok) continue\n const bytes = new Uint8Array(await res.arrayBuffer())\n if (verifyCid(cid, bytes)) return bytes\n } catch {\n // Try the next gateway.\n }\n }\n return undefined\n}\n\n// ---------------------------------------------------------------- source\n\nexport interface InterfaceOptions {\n /** Algod used to find the app's creator and to read Meta. */\n algod?: Endpoint\n /** Meta app id. Without it only bundled interfaces are used. */\n metaAppId?: number\n /** Accounts trusted to publish for any app, tried before the creator, e.g. the DAO. */\n publishers?: string[]\n /** Factory app ids. A child of one of these uses the factory's interface. */\n factories?: number[]\n /** Interfaces shipped with the host, keyed by app id (a factory id covers its children). */\n bundled?: Record<string, Arc56Like>\n /** IPFS gateways, tried in order. */\n ipfsGateways?: string[]\n}\n\nexport interface InterfaceData extends ContractInterface {\n appId: string\n /** The app id the interface was published for: the app itself, or its factory. */\n subject: string\n origin: 'bundled' | 'meta'\n /** Account whose Meta record pointed at the file. */\n publisher?: string\n /** CID of the verified file. */\n cid?: string\n}\n\ninterface AlgodApp {\n params?: { creator?: string }\n}\n\nexport function createInterfaceSource(options: InterfaceOptions): Source {\n const factoryByAddress = new Map((options.factories ?? []).map((id) => [algosdk.getApplicationAddress(id).toString(), id]))\n const gateways = options.ipfsGateways ?? [DEFAULT_IPFS_GATEWAY]\n const creatorOf = async (fetchFn: FetchLike, appId: number | string) =>\n options.algod ? (await requestJson<AlgodApp>(fetchFn, options.algod, `/v2/applications/${appId}`))?.params?.creator : undefined\n\n return {\n name: 'interface',\n maxBatch: 1,\n concurrency: 4,\n supports: (kind) => kind === 'interface',\n async fetch(refs: Ref[], ctx: SourceContext) {\n const out = new Map<string, Entity>()\n const ref = refs[0]\n if (!ref) return out\n const done = (data: Omit<InterfaceData, 'appId'>) =>\n out.set(refKey(ref), {\n kind: 'interface',\n id: ref.id,\n network: ctx.network,\n status: 'live',\n data: { appId: ref.id, ...data },\n provenance: { source: data.origin, fetchedAt: Date.now() },\n })\n\n const own = options.bundled?.[ref.id]\n if (own) return done({ ...interfaceFromArc56(own), subject: ref.id, origin: 'bundled' }), out\n\n const creator = await creatorOf(ctx.fetch, ref.id)\n if (!creator) return out\n const factory = factoryByAddress.get(creator)\n const subject = factory !== undefined ? String(factory) : ref.id\n const bundled = options.bundled?.[subject]\n if (bundled) return done({ ...interfaceFromArc56(bundled), subject, origin: 'bundled' }), out\n if (!options.metaAppId || !options.algod) return out\n\n const publisher = factory !== undefined ? await creatorOf(ctx.fetch, factory) : creator\n const owners = [...new Set([...(options.publishers ?? []), ...(publisher ? [publisher] : [])])]\n for (const owner of owners) {\n const cid = await readInterfacePointer(ctx.fetch, options.algod, options.metaAppId, owner, subject)\n if (!cid) continue\n const file = await fetchByCid(ctx.fetch, cid, gateways)\n const spec = file ? safeSpec(utf8(file)) : undefined\n if (!spec) continue\n return done({ ...interfaceFromArc56(spec), subject, origin: 'meta', publisher: owner, cid: cidToString(cid) }), out\n }\n return out\n },\n }\n}\n\n// ---------------------------------------------------------------- helpers\n\nfunction isObject(v: unknown): v is Record<string, unknown> {\n return typeof v === 'object' && v !== null && !Array.isArray(v)\n}\n\nfunction safeSpec(text: string): Arc56Like | undefined {\n try {\n const json = JSON.parse(text) as unknown\n return isObject(json) && typeof json.name === 'string' && Array.isArray(json.methods) ? (json as unknown as Arc56Like) : undefined\n } catch {\n return undefined\n }\n}\n","/**\n * Akita factory app ids per network, from akita-sdk `networks.ts`. Archived\n * claims for these kinds are only accepted when the app was created by one of\n * these factories. Hosts deploying their own contracts pass their own ids.\n */\nexport const AKITA_FACTORIES: Record<string, Record<string, number[]>> = {\n mainnet: {\n listing: [3569557584],\n auction: [3569557408],\n raffle: [3569557743],\n poll: [3569557932],\n 'prize-box': [3569557972],\n 'staking-pool': [3569556570],\n },\n testnet: {\n listing: [763128381],\n auction: [763128353],\n raffle: [763128404],\n poll: [763128430],\n 'prize-box': [763128434],\n 'staking-pool': [763128285],\n },\n}\n\nexport const PUBLIC_ENDPOINTS: Record<string, { algod: string; indexer: string }> = {\n mainnet: { algod: 'https://mainnet-api.4160.nodely.dev', indexer: 'https://mainnet-idx.4160.nodely.dev' },\n testnet: { algod: 'https://testnet-api.4160.nodely.dev', indexer: 'https://testnet-idx.4160.nodely.dev' },\n}\n","import algosdk from 'algosdk'\nimport { fromHex } from './chain/bytes'\nimport type { TealKeyValue } from './chain/indexer-types'\nimport { stateFromTeal } from './chain/state'\nimport { boxName, decodeBoxValue, decodeGlobalState, type Decoded } from './contracts/decode'\nimport { requestJson, type FetchLike } from './http'\nimport { readBox } from './akita'\nimport type { Endpoint } from './types'\n\n/*\n * Guild proposals. A proposal lives in the Guild app's `proposals` box; once\n * voting opens, its ballot lives in the paired consensus app's `ballots` box.\n * The ref id is `<guildAppId>/<proposalId>`, since proposal ids count per Guild.\n */\n\nexport type GuildProposalStatus = 'draft' | 'invalid' | 'voting' | 'rejected' | 'approved' | 'executed'\n\nconst STATUS: Record<string, GuildProposalStatus> = {\n '0': 'draft',\n '10': 'invalid',\n '20': 'voting',\n '30': 'rejected',\n '40': 'approved',\n '50': 'executed',\n}\n\nexport interface GuildProposalAction {\n /** Guild action type (akita-sc guilds/core/constants.ts). */\n type: number\n label: string\n /** Plugin application, for plugin actions. */\n pluginAppId?: string\n /** Delegated caller, for add and remove plugin actions. The zero address means members by vote. */\n caller?: string\n}\n\nexport interface GuildBallotData {\n resolved: boolean\n approved: boolean\n /** Unix seconds. */\n votingEnd: string\n eligiblePower: string\n voteCount: string\n /** Fixed point, 100000 = 100%. */\n requirements: { participation: string; approval: string; minimumApprovals: string }\n votes: { approvals: string; rejections: string; abstains: string }\n}\n\nexport interface GuildProposalData {\n guildAppId: string\n proposalId: string\n consensusAppId?: string\n walletAppId?: string\n status: GuildProposalStatus\n creator?: string\n /** Unix seconds. */\n created: string\n votingTs: string\n actions: GuildProposalAction[]\n ballot?: GuildBallotData\n}\n\nexport const GUILD_ZERO_ADDRESS = algosdk.ALGORAND_ZERO_ADDRESS_STRING\n\n/** Splits a `guild-proposal` id into its Guild app id and proposal id. */\nexport function splitGuildProposalId(id: string): { guildAppId: string; proposalId: string } | undefined {\n const match = /^(\\d+)\\/(\\d+)$/.exec(id.trim())\n return match ? { guildAppId: match[1]!, proposalId: match[2]! } : undefined\n}\n\n// ---------------------------------------------------------------- actions\n\nconst ACTION_LABELS: Record<number, string> = {\n 10: 'Upgrade the guild',\n 20: 'Install a plugin',\n 21: 'Install a named plugin',\n 22: 'Change plugin vote settings',\n 30: 'Run a plugin',\n 31: 'Revoke a plugin run',\n 40: 'Remove a plugin',\n 41: 'Remove a named plugin',\n 50: 'Add spending allowances',\n 60: 'Remove spending allowances',\n 70: 'Create an escrow',\n 71: 'Lock or unlock an escrow',\n 72: 'Reclaim from an escrow',\n 80: 'Change proposal rules',\n 81: 'Change the action limit',\n 82: 'Create a wallet',\n 83: 'Change membership',\n 84: 'Change membership vote settings',\n 86: 'Set the chat steward',\n 90: 'Update the wallet',\n 91: 'Hand the wallet to a new admin',\n 100: 'Finish setup',\n 110: 'Lock the plugin set',\n}\n\nfunction readUint64(data: Uint8Array, offset: number): bigint | undefined {\n if (data.length < offset + 8) return undefined\n let value = 0n\n for (let i = 0; i < 8; i += 1) value = (value << 8n) | BigInt(data[offset + i]!)\n return value\n}\n\n/**\n * Labels a proposal's on-chain actions. Plugin actions decode their static head\n * `(uint64 plugin, address caller, ...)` so a view can say which agent a plugin is for.\n */\nexport function summarizeGuildActions(actions: ReadonlyArray<readonly [number, Uint8Array]>): GuildProposalAction[] {\n return actions.map(([type, data]) => {\n const label = ACTION_LABELS[type] ?? `Action ${type}`\n if (type !== 20 && type !== 22 && type !== 30 && type !== 40) return { type, label }\n const plugin = readUint64(data, 0)\n const action: GuildProposalAction = { type, label, ...(plugin !== undefined && { pluginAppId: plugin.toString() }) }\n if ((type === 20 || type === 40) && data.length >= 40) action.caller = algosdk.encodeAddress(data.slice(8, 40))\n return action\n })\n}\n\n// ---------------------------------------------------------------- chain read\n\nconst str = (v: Decoded | undefined): string => (typeof v === 'string' ? v : v == null ? '' : String(v))\nconst field = (v: Decoded | undefined, k: string): Decoded | undefined =>\n v && typeof v === 'object' && !Array.isArray(v) ? (v as Record<string, Decoded>)[k] : undefined\nconst positive = (v: Decoded | undefined) => (str(v) && str(v) !== '0' ? str(v) : undefined)\n\nfunction decodedActions(value: Decoded | undefined): Array<[number, Uint8Array]> {\n if (!Array.isArray(value)) return []\n return value.flatMap((entry) => {\n if (!Array.isArray(entry) || entry.length < 2) return []\n const type = Number(str(entry[0]))\n const raw = entry[1]\n const data =\n typeof raw === 'string' ? fromHex(raw) : Array.isArray(raw) ? Uint8Array.from(raw, (b) => Number(str(b))) : new Uint8Array()\n return Number.isSafeInteger(type) ? [[type, data] as [number, Uint8Array]] : []\n })\n}\n\nfunction ballotFrom(b: Decoded): GuildBallotData {\n const req = field(b, 'requirements')\n const votes = field(b, 'votes')\n return {\n resolved: field(b, 'resolved') === true,\n approved: field(b, 'approved') === true,\n votingEnd: str(field(b, 'votingEnd')),\n eligiblePower: str(field(b, 'eligiblePower')),\n voteCount: str(field(b, 'voteCount')),\n requirements: {\n participation: str(field(req, 'participation')) || '0',\n approval: str(field(req, 'approval')) || '0',\n minimumApprovals: str(field(req, 'minimumApprovals')) || '0',\n },\n votes: {\n approvals: str(field(votes, 'approvals')) || '0',\n rejections: str(field(votes, 'rejections')) || '0',\n abstains: str(field(votes, 'abstains')) || '0',\n },\n }\n}\n\n/** Reads a proposal from its Guild's boxes, plus its ballot once voting has opened. */\nexport async function readGuildProposal(fetchFn: FetchLike, algod: Endpoint, id: string): Promise<GuildProposalData | undefined> {\n const parts = splitGuildProposalId(id)\n if (!parts) return undefined\n const { guildAppId, proposalId } = parts\n const [app, value] = await Promise.all([\n requestJson<{ params: { 'global-state'?: TealKeyValue[] } }>(fetchFn, algod, `/v2/applications/${guildAppId}`),\n readBox(fetchFn, algod, guildAppId, boxName('guild', 'proposals', BigInt(proposalId))),\n ])\n if (!app || !value) return undefined\n const guild = decodeGlobalState('guild', stateFromTeal(app.params['global-state']))\n const p = decodeBoxValue('guild', 'proposals', value)\n const status = STATUS[str(field(p, 'status'))] ?? 'invalid'\n const consensusAppId = positive(guild.consensus)\n const creator = str(field(p, 'creator'))\n const data: GuildProposalData = {\n guildAppId,\n proposalId,\n consensusAppId,\n walletAppId: positive(guild.wallet),\n status,\n creator: creator && creator !== GUILD_ZERO_ADDRESS ? creator : undefined,\n created: str(field(p, 'created')),\n votingTs: str(field(p, 'votingTs')),\n actions: summarizeGuildActions(decodedActions(field(p, 'actions'))),\n }\n if (consensusAppId && status !== 'draft' && status !== 'invalid') {\n const ballot = await readBox(fetchFn, algod, consensusAppId, boxName('guildConsensus', 'ballots', BigInt(proposalId))).catch(() => undefined)\n if (ballot) data.ballot = ballotFrom(decodeBoxValue('guildConsensus', 'ballots', ballot))\n }\n return data\n}\n\n// ---------------------------------------------------------------- outcome\n\nconst HUNDRED = 100_000n\n\nfunction meets(b: GuildBallotData, approvals: bigint, rejections: bigint, turnout: bigint): boolean {\n const participation = BigInt(b.requirements.participation)\n const approval = BigInt(b.requirements.approval)\n const minimum = BigInt(b.requirements.minimumApprovals)\n const eligible = BigInt(b.eligiblePower || '0')\n const decisive = approvals + rejections\n return (\n approvals > 0n &&\n (participation === 0n || turnout * HUNDRED >= eligible * participation) &&\n (minimum === 0n || approvals >= minimum) &&\n (approval === 0n || (decisive > 0n && approvals * HUNDRED >= decisive * approval))\n )\n}\n\n/**\n * How an open ballot resolves if it is closed now (`now` in Unix seconds),\n * mirroring the consensus contract: after `votingEnd` by the votes cast; before\n * it only once the members who have not voted cannot change the result.\n * `undefined` while the result is still open.\n */\nexport function guildBallotOutcome(b: GuildBallotData, now: number): 'approved' | 'rejected' | undefined {\n if (b.resolved) return undefined\n const approvals = BigInt(b.votes.approvals)\n const rejections = BigInt(b.votes.rejections)\n const turnout = approvals + rejections + BigInt(b.votes.abstains)\n const passes = meets(b, approvals, rejections, turnout)\n if (now > Number(b.votingEnd)) return passes ? 'approved' : 'rejected'\n const eligible = BigInt(b.eligiblePower || '0')\n if (eligible === 0n) return undefined\n const remaining = eligible > turnout ? eligible - turnout : 0n\n if (passes) return meets(b, approvals, rejections + remaining, turnout) ? 'approved' : undefined\n return meets(b, approvals + remaining, rejections, turnout + remaining) ? undefined : 'rejected'\n}\n\n/** A fixed point percentage (100000 = 100%), rounded up so a requirement never reads lower than it is. */\nexport function formatGuildPercent(value: string): string {\n const tenths = Number((BigInt(value || '0') * 1_000n + HUNDRED - 1n) / HUNDRED)\n return `${tenths % 10 === 0 ? tenths / 10 : (tenths / 10).toFixed(1)}%`\n}\n\nexport function guildProposalStatusLabel(status: GuildProposalStatus): string {\n switch (status) {\n case 'draft': return 'Draft'\n case 'invalid': return 'Invalid'\n case 'voting': return 'Voting'\n case 'rejected': return 'Rejected'\n case 'approved': return 'Passed'\n case 'executed': return 'Done'\n }\n}\n\n/** The ballot's requirements in a few words, e.g. \"Needs 50% yes, at least 1 approval\". */\nexport function guildRequirementsText(b: GuildBallotData): string {\n const { approval, minimumApprovals, participation } = b.requirements\n return [\n approval !== '0' ? `Needs ${formatGuildPercent(approval)} yes` : null,\n minimumApprovals !== '0' ? `at least ${minimumApprovals} approval${minimumApprovals === '1' ? '' : 's'}` : null,\n participation !== '0' ? `${formatGuildPercent(participation)} turnout` : null,\n ]\n .filter(Boolean)\n .join(', ')\n}\n","import { FAMILIES } from '../archive/families'\nimport type { IndexerAsset, TealKeyValue } from '../chain/indexer-types'\nimport { stateFromTeal } from '../chain/state'\nimport { requestJson } from '../http'\nimport { refKey, type Endpoint, type Entity, type Ref } from '../types'\nimport { accountFromJson, assetFromJson, type ApplicationData } from './chain-data'\nimport { readReward, readStakingPool, readSubscription, readTrade, type SingletonApps } from '../akita'\nimport { readGuildProposal } from '../guild'\nimport type { Source, SourceContext } from './types'\n\ninterface AlgodApp {\n id: number\n params: { creator?: string; 'global-state'?: TealKeyValue[] }\n}\n\nconst KINDS = new Set(['account', 'asset', 'application', 'guild-proposal'])\n\n/**\n * Live state from an algod node: accounts, assets, apps, contract global state\n * and the boxes of the singleton apps. Knows nothing about deleted apps.\n */\nexport function createAlgodSource(endpoint: Endpoint, singletons: SingletonApps = {}): Source {\n const singletonKinds: Record<string, number | undefined> = {\n reward: singletons.rewards,\n subscription: singletons.subscriptions,\n trade: singletons.hyperSwap,\n }\n return {\n name: 'algod',\n maxBatch: 1,\n concurrency: 8,\n supports: (kind) => KINDS.has(kind) || kind in FAMILIES || Boolean(singletonKinds[kind]),\n async fetch(refs: Ref[], ctx: SourceContext) {\n const out = new Map<string, Entity>()\n const ref = refs[0]\n if (!ref) return out\n const base = { kind: ref.kind, id: ref.id, network: ctx.network, status: 'live' as const }\n const provenance = { source: 'algod', fetchedAt: Date.now() }\n\n if (ref.kind === 'account') {\n const a = await requestJson<Record<string, unknown>>(ctx.fetch, endpoint, `/v2/accounts/${ref.id}?exclude=all`)\n if (a) out.set(refKey(ref), { ...base, data: accountFromJson(a), provenance: { ...provenance, round: Number(a.round ?? 0) || undefined } })\n return out\n }\n if (ref.kind === 'guild-proposal') {\n const data = await readGuildProposal(ctx.fetch, endpoint, ref.id)\n if (data) out.set(refKey(ref), { ...base, data, provenance })\n return out\n }\n const singleton = singletonKinds[ref.kind]\n if (singleton) {\n const data =\n ref.kind === 'reward'\n ? await readReward(ctx.fetch, endpoint, singleton, ref.id)\n : ref.kind === 'subscription'\n ? await readSubscription(ctx.fetch, endpoint, singleton, ref.id)\n : await readTrade(ctx.fetch, endpoint, singleton, ref.id)\n if (data) out.set(refKey(ref), { ...base, data, provenance })\n return out\n }\n if (ref.kind === 'asset') {\n const a = await requestJson<IndexerAsset>(ctx.fetch, endpoint, `/v2/assets/${ref.id}`)\n if (a) out.set(refKey(ref), { ...base, data: assetFromJson(a), provenance })\n return out\n }\n const app = await requestJson<AlgodApp>(ctx.fetch, endpoint, `/v2/applications/${ref.id}`)\n if (!app) return out\n if (ref.kind === 'application') {\n const data: ApplicationData = { id: ref.id, creator: app.params.creator, deleted: false }\n out.set(refKey(ref), { ...base, data, provenance })\n return out\n }\n if (ref.kind === 'staking-pool') {\n out.set(refKey(ref), { ...base, data: await readStakingPool(ctx.fetch, endpoint, ref.id, app.params['global-state']), provenance })\n return out\n }\n const family = FAMILIES[ref.kind]\n if (family) out.set(refKey(ref), { ...base, data: family.fromState(ref.id, stateFromTeal(app.params['global-state'])), provenance })\n return out\n },\n }\n}\n","import { requestJson } from '../http'\nimport { refKey, type Endpoint, type Entity, type Ref } from '../types'\nimport type { Source, SourceContext } from './types'\n\nexport interface NfdData {\n name: string\n appId?: string\n owner?: string\n depositAccount?: string\n avatar?: string\n /** True when the avatar is set through NFD's verified properties. */\n avatarVerified: boolean\n banner?: string\n /** Addresses the NFD owner has verified as theirs. */\n verifiedAddresses: string[]\n /** `owned`, `forSale`, `available`, `reserved`, `expired`. */\n state?: string\n category?: string\n /** Sale price in microAlgo when the NFD is for sale. */\n sellAmount?: string\n /** Unix seconds when a renewable NFD expires. */\n expires?: number\n}\n\ninterface NfdRecord {\n name: string\n state?: string\n category?: string\n sellAmount?: number\n timeExpires?: string\n appID?: number\n owner?: string\n depositAccount?: string\n caAlgo?: string[]\n properties?: {\n userDefined?: Record<string, string>\n verified?: Record<string, string>\n }\n}\n\nexport const NFD_API: Record<string, string> = {\n mainnet: 'https://api.nf.domains',\n testnet: 'https://api.testnet.nf.domains',\n}\n\n/**\n * NFD returns images through its own resizing gateway. Hand back the plain\n * ipfs:// URL so the host's image proxy sizes and caches it like any other image.\n */\nexport function normalizeNfdImage(url: string | undefined): string | undefined {\n if (!url) return undefined\n const m = url.match(/^https:\\/\\/ipfsgw\\.nf\\.domains\\/ipfs\\/([^?#]+)/)\n return m ? `ipfs://${m[1]}` : url\n}\n\nexport function nfdFromRecord(r: NfdRecord): NfdData {\n const verified = r.properties?.verified ?? {}\n const user = r.properties?.userDefined ?? {}\n return {\n name: r.name,\n appId: r.appID ? String(r.appID) : undefined,\n owner: r.owner,\n depositAccount: r.depositAccount,\n avatar: normalizeNfdImage(verified.avatar || user.avatar),\n avatarVerified: Boolean(verified.avatar),\n banner: normalizeNfdImage(verified.banner || user.banner),\n verifiedAddresses: r.caAlgo ?? [],\n state: r.state,\n category: r.category,\n ...(r.sellAmount ? { sellAmount: String(r.sellAmount) } : {}),\n ...(r.timeExpires ? { expires: Math.floor(Date.parse(r.timeExpires) / 1000) } : {}),\n }\n}\n\n/**\n * NFD API source. `nfd` refs are looked up by name one at a time; `nfd-address`\n * refs are batched, 20 addresses per call.\n */\nexport function createNfdSource(endpoint?: Partial<Endpoint>): Source {\n return {\n name: 'nfd',\n maxBatch: 20,\n concurrency: 4,\n supports: (kind) => kind === 'nfd' || kind === 'nfd-address',\n async fetch(refs: Ref[], ctx: SourceContext) {\n const out = new Map<string, Entity>()\n const ep: Endpoint = { url: endpoint?.url ?? NFD_API[ctx.network] ?? NFD_API.mainnet!, headers: endpoint?.headers }\n const now = Date.now()\n const make = (ref: Ref, data: NfdData | null): Entity => ({\n kind: ref.kind,\n id: ref.id,\n network: ctx.network,\n status: data ? 'live' : 'missing',\n data,\n provenance: { source: 'nfd', fetchedAt: now },\n })\n\n const byName = refs.filter((r) => r.kind === 'nfd')\n await Promise.all(\n byName.map(async (ref) => {\n const r = await requestJson<NfdRecord>(ctx.fetch, ep, `/nfd/${encodeURIComponent(ref.id)}?view=brief&poll=false`)\n out.set(refKey(ref), make(ref, r ? nfdFromRecord(r) : null))\n }),\n )\n\n const byAddress = refs.filter((r) => r.kind === 'nfd-address')\n if (byAddress.length) {\n const qs = byAddress.map((r) => `address=${r.id}`).join('&')\n const res = await requestJson<Record<string, NfdRecord>>(ctx.fetch, ep, `/nfd/lookup?${qs}&view=thumbnail&allowUnverified=false`)\n for (const ref of byAddress) {\n const rec = res?.[ref.id]\n // A missing address means it has no verified NFD. That is a real answer, so it is cached.\n out.set(refKey(ref), make(ref, rec ? nfdFromRecord(rec) : null))\n }\n }\n return out\n },\n }\n}\n","import { requestJson } from '../http'\nimport { refKey, type Endpoint, type Entity, type Ref } from '../types'\nimport type { Source, SourceContext } from './types'\n\ninterface ResolveResponse {\n ok?: boolean\n data?: { entities?: Entity[] }\n}\n\n/**\n * A trusted backend that resolves up to 100 mixed refs per call\n * (`POST /algomd/resolve`). Archived entities it returns are verified against\n * chain history by the client; see docs/DESIGN.md §5.\n */\nexport function createResolverSource(endpoint: Endpoint, options: { kinds?: string[] } = {}): Source {\n const kinds = options.kinds ? new Set(options.kinds) : undefined\n return {\n name: 'resolver',\n maxBatch: 100,\n concurrency: 4,\n supports: (kind) => !kinds || kinds.has(kind),\n async fetch(refs: Ref[], ctx: SourceContext) {\n const res = await requestJson<ResolveResponse>(ctx.fetch, endpoint, '/algomd/resolve', {\n method: 'POST',\n body: { network: ctx.network, refs: refs.map(({ kind, id, params }) => ({ kind, id, ...(params ? { params } : {}) })) },\n })\n const out = new Map<string, Entity>()\n for (const e of res?.data?.entities ?? []) {\n // Only keep what was asked for, and never let the resolver pick the network.\n if (!refs.some((r) => r.kind === e.kind && r.id === e.id)) continue\n out.set(refKey(e), { ...e, network: ctx.network, provenance: { ...e.provenance, fetchedAt: e.provenance?.fetchedAt ?? Date.now() } })\n }\n return out\n },\n }\n}\n","import { verifyArchived } from './archive/verify'\nimport { Batcher } from './batcher'\nimport type { FetchLike } from './http'\nimport { createIdentitySource, type IdentityProvider } from './identity'\nimport { createInterfaceSource, interfaceAction, type Arc56Like, type InterfaceAction, type InterfaceData } from './interfaces'\nimport { createMediaSource } from './media'\nimport type { AssetData } from './sources/chain-data'\nimport { algomdKeys } from './keys'\nimport { defaultRegistry, type KindRegistry } from './kinds'\nimport { policyFor, type CachePolicy } from './policy'\nimport { AKITA_FACTORIES } from './presets'\nimport { AKITA_SINGLETONS, type SingletonApps } from './akita'\nimport { createAlgodSource } from './sources/algod'\nimport { createIndexerSource } from './sources/indexer'\nimport { createNfdSource, type NfdData } from './sources/nfd'\nimport { createResolverSource } from './sources/resolver'\nimport type { Source, SourceContext } from './sources/types'\nimport { refKey, type Endpoint, type Entity, type Network, type Provenance, type Ref } from './types'\n\nexport interface AlgomdConfig {\n network: Network\n algod?: Endpoint\n indexer?: Endpoint\n /** Indexer used to verify archived claims. Defaults to `indexer`. Prefer one the resolver operator does not run. */\n verificationIndexer?: Endpoint\n /** NFD API. Defaults to the public API for the network; `false` turns NFD off. */\n nfd?: Partial<Endpoint> | false\n /** Trusted batch resolver (`POST /algomd/resolve`). */\n resolver?: Endpoint\n /** Host sources. They are tried first for the kinds they support. */\n sources?: Source[]\n /** Host identity steps, such as the Akita social profile. */\n identityProviders?: IdentityProvider[]\n /** Identity step order. Defaults to `['nfd', ...provider names]`. */\n identityOrder?: string[]\n /** Factory app ids per kind. Defaults to the Akita factories for the network. */\n factories?: Record<string, number[]>\n /** Singleton app ids (Rewards, Subscriptions, HyperSwap). Defaults to the Akita deployments for the network. */\n singletons?: SingletonApps\n /**\n * Contract interfaces (ARC-56 `ui`). `metaAppId` turns on the Meta lookup;\n * `publishers` are trusted for every app before its creator, e.g. the DAO;\n * `bundled` are specs the host ships, keyed by app id or factory id.\n */\n interfaces?: { metaAppId?: number; publishers?: string[]; bundled?: Record<string, Arc56Like>; ipfsGateways?: string[] }\n /** IPFS gateway for asset metadata. Defaults to the Akita gateway. */\n ipfsGateway?: string\n /** How archived claims from non-chain sources are checked. Default `background`. */\n verifyArchived?: 'background' | 'blocking' | 'off'\n /** ms to wait to fill a batch. Default 2. */\n batchDelayMs?: number\n fetch?: FetchLike\n registry?: KindRegistry\n}\n\n/** Where loaded entities are cached. The React binding plugs in TanStack Query. */\nexport interface CacheAdapter {\n get(key: readonly unknown[]): Entity | undefined\n set(key: readonly unknown[], entity: Entity): void\n}\n\nexport function memoryCache(): CacheAdapter {\n const map = new Map<string, Entity>()\n return {\n get: (key) => map.get(JSON.stringify(key)),\n set: (key, entity) => void map.set(JSON.stringify(key), entity),\n }\n}\n\nconst CHAIN_SOURCES = new Set(['algod', 'indexer'])\n\nexport interface LoadOptions {\n params?: Record<string, string>\n /** Skip the cache read; used when the cache itself asked for the load. */\n fresh?: boolean\n}\n\nexport class AlgomdClient {\n readonly network: Network\n readonly registry: KindRegistry\n private readonly fetchFn: FetchLike\n private readonly builtIns = new Map<string, Source>()\n private readonly hostSources: Source[]\n private readonly batchers = new Map<string, Batcher<Ref, Entity>>()\n private cache: CacheAdapter = memoryCache()\n private readonly verifying = new Map<string, Promise<Entity>>()\n\n constructor(readonly config: AlgomdConfig) {\n this.network = config.network\n this.registry = config.registry ?? defaultRegistry\n this.fetchFn = config.fetch ?? ((input, init) => fetch(input, init))\n this.hostSources = config.sources ?? []\n if (config.resolver) this.builtIns.set('resolver', createResolverSource(config.resolver))\n if (config.algod) this.builtIns.set('algod', createAlgodSource(config.algod, config.singletons ?? AKITA_SINGLETONS[config.network] ?? {}))\n if (config.indexer) this.builtIns.set('indexer', createIndexerSource(config.indexer))\n if (config.nfd !== false) this.builtIns.set('nfd', createNfdSource(config.nfd || undefined))\n this.builtIns.set(\n 'media',\n createMediaSource((id) => this.load('asset', id) as Promise<Entity<AssetData>>, { ipfsGateway: config.ipfsGateway, indexer: config.indexer }),\n )\n if (config.algod || config.interfaces?.bundled) {\n const factories = Object.values(config.factories ?? AKITA_FACTORIES[config.network] ?? {}).flat()\n this.builtIns.set(\n 'interface',\n createInterfaceSource({\n ...config.interfaces,\n algod: config.algod,\n factories,\n ipfsGateways: config.interfaces?.ipfsGateways ?? (config.ipfsGateway ? [config.ipfsGateway] : undefined),\n }),\n )\n }\n const providers = config.identityProviders ?? []\n this.builtIns.set(\n 'identity',\n createIdentitySource(\n (address) => this.load('nfd-address', address) as Promise<Entity<NfdData>>,\n providers,\n config.identityOrder ?? ['nfd', ...providers.map((p) => p.name)],\n ),\n )\n }\n\n /** Plugs in the shared cache. The React provider calls this with the host's QueryClient. */\n setCache(cache: CacheAdapter): void {\n this.cache = cache\n }\n\n key(kind: string, id: string) {\n return algomdKeys.entity(this.network, kind, id)\n }\n\n policy(kind: string, entity?: Entity | null): CachePolicy {\n return policyFor(this.registry.get(kind)?.policy ?? 'slow', entity)\n }\n\n /** Normalizes an id for a kind, or undefined if it is not a valid id. */\n normalizeId(kind: string, id: string): string | undefined {\n const def = this.registry.get(kind)\n return def?.normalizeId ? def.normalizeId(id) : id\n }\n\n private context(): SourceContext {\n return { network: this.network, fetch: this.fetchFn, registry: this.registry }\n }\n\n private sourcesFor(kind: string): Source[] {\n const def = this.registry.require(kind)\n const host = this.hostSources.filter((s) => s.supports(kind))\n const builtIn = def.sources.map((n) => this.builtIns.get(n)).filter((s): s is Source => Boolean(s) && s!.supports(kind))\n return [...host, ...builtIn]\n }\n\n private batcher(source: Source): Batcher<Ref, Entity> {\n let b = this.batchers.get(source.name)\n if (!b) {\n b = new Batcher((refs) => source.fetch(refs, this.context()), {\n maxBatch: source.maxBatch,\n concurrency: source.concurrency,\n delayMs: this.config.batchDelayMs,\n keyOf: refKey,\n })\n this.batchers.set(source.name, b)\n }\n return b\n }\n\n private missing(kind: string, id: string): Entity {\n return { kind, id, network: this.network, status: 'missing', data: null, provenance: { source: 'none', fetchedAt: Date.now() } }\n }\n\n private isFresh(entity: Entity): boolean {\n return Date.now() - entity.provenance.fetchedAt < this.policy(entity.kind, entity).staleTime\n }\n\n /**\n * Loads one entity: cache, then each source in order. Batched and\n * de-duplicated across every caller in the same tick.\n */\n async load(kind: string, rawId: string, options: LoadOptions = {}): Promise<Entity> {\n const id = this.normalizeId(kind, rawId)\n if (!id) return this.missing(kind, rawId)\n const key = this.key(kind, id)\n if (!options.fresh) {\n const cached = this.cache.get(key)\n if (cached && this.isFresh(cached)) return cached\n }\n\n const ref: Ref = { kind, id, ...(options.params ? { params: options.params } : {}) }\n let found: Entity | undefined\n let missing: Entity | undefined\n let lastError: unknown\n for (const source of this.sourcesFor(kind)) {\n try {\n const e = await this.batcher(source).load(ref)\n if (e && e.status !== 'missing') {\n found = e\n break\n }\n missing ??= e\n } catch (error) {\n lastError = error\n }\n }\n if (!found) {\n if (!missing && lastError) throw lastError\n found = missing ?? this.missing(kind, id)\n }\n found = await this.afterLoad(found)\n if (!options.fresh) this.cache.set(key, found)\n return found\n }\n\n /**\n * The action to show for a call to `appId`: its method's declared action,\n * glyph and label, or the contract's default. Undefined when the app\n * declares no interface.\n */\n async actionFor(appId: number | string, call: { selector?: string | Uint8Array; method?: string } = {}): Promise<InterfaceAction | undefined> {\n const entity = (await this.load('interface', String(appId)).catch(() => undefined)) as Entity<InterfaceData> | undefined\n return entity?.data ? interfaceAction(entity.data, call) : undefined\n }\n\n loadMany(refs: Ref[]): Promise<Entity[]> {\n return Promise.all(refs.map((r) => this.load(r.kind, r.id, { params: r.params })))\n }\n\n private async afterLoad(entity: Entity): Promise<Entity> {\n const mode = this.config.verifyArchived ?? 'background'\n const needsCheck =\n entity.status === 'archived' && !CHAIN_SOURCES.has(entity.provenance.source) && entity.verification?.state !== 'verified'\n if (!needsCheck || mode === 'off') return entity\n const unverified: Entity = { ...entity, verification: entity.verification ?? { state: 'unverified', checkedAt: Date.now() } }\n if (mode === 'blocking') return this.verify(unverified)\n void this.verify(unverified).then(\n (checked) => this.cache.set(this.key(checked.kind, checked.id), checked),\n () => undefined,\n )\n return unverified\n }\n\n /** Checks an archived entity against chain history (docs/DESIGN.md §5). One check per entity at a time. */\n verify(entity: Entity): Promise<Entity> {\n const indexer = this.config.verificationIndexer ?? this.config.indexer\n if (!indexer) return Promise.resolve({ ...entity, verification: { state: 'unverified', checkedAt: Date.now(), detail: 'No indexer configured' } })\n const k = refKey(entity)\n let p = this.verifying.get(k)\n if (!p) {\n const factories = (this.config.factories ?? AKITA_FACTORIES[this.network] ?? {})[entity.kind]\n p = verifyArchived(entity, { fetch: this.fetchFn, indexer, factories }).finally(() => this.verifying.delete(k))\n this.verifying.set(k, p)\n }\n return p\n }\n\n /**\n * Writes data the host already has into the shared cache, so no source is\n * asked for it. Only the host operator primes; content never does.\n */\n prime<T>(kind: string, id: string, data: T, provenance: Partial<Provenance> = {}, status: Entity['status'] = 'live'): Entity<T> {\n const entity: Entity<T> = {\n kind,\n id,\n network: this.network,\n status,\n data,\n provenance: { source: 'primed', fetchedAt: Date.now(), ...provenance },\n }\n this.cache.set(this.key(kind, id), entity)\n return entity\n }\n\n /** Seeds the cache with entities from a pre-resolved payload (feed response, SSR). */\n hydrate(entities: Entity[]): void {\n for (const e of entities) {\n if (e.network !== this.network) continue\n const id = this.normalizeId(e.kind, e.id)\n if (!id) continue\n void this.afterLoad({ ...e, id }).then((checked) => this.cache.set(this.key(e.kind, id), checked))\n }\n }\n}\n\nexport function createAlgomdClient(config: AlgomdConfig): AlgomdClient {\n return new AlgomdClient(config)\n}\n"],"mappings":"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","names":["import_algosdk","import_algosdk","algosdk","contract","field","import_algosdk","algosdk","algosdk","str","nowSec","algosdk","field","address","address","import_algosdk","import_js_sha256","algosdk","import_algosdk","algosdk","str","field","KINDS","address"]}