package linera:app; interface service-system-api { get-chain-id: func() -> chain-id; get-next-block-height: func() -> block-height; get-application-id: func() -> application-id; get-application-creator-chain-id: func() -> chain-id; get-application-parameters: func() -> list; read-chain-balance: func() -> amount; read-owner-balance: func(owner: owner) -> amount; read-system-timestamp: func() -> timestamp; read-owner-balances: func() -> list>; read-balance-owners: func() -> list; try-query-application: func(application: application-id, argument: list) -> list; fetch-url: func(url: string) -> list; query-service: func(application-id: application-id, query: list) -> list; http-post: func(query: string, content-type: string, payload: list) -> list; read-data-blob: func(hash: crypto-hash) -> list; assert-data-blob-exists: func(hash: crypto-hash); assert-before: func(timestamp: timestamp); log: func(message: string, level: log-level); record amount { inner0: u128, } record application-id { bytecode-id: bytecode-id, creation: message-id, } record block-height { inner0: u64, } record bytecode-id { contract-blob-hash: crypto-hash, service-blob-hash: crypto-hash, } record chain-id { inner0: crypto-hash, } record crypto-hash { part1: u64, part2: u64, part3: u64, part4: u64, } enum log-level { error, warn, info, debug, trace, } record message-id { chain-id: chain-id, height: block-height, index: u32, } record owner { inner0: crypto-hash, } record timestamp { inner0: u64, } type u128 = tuple; }