import { SKChainLibBase } from './../base'; import { SKChain } from './../../skChain'; import BigNumber from 'bignumber.js'; import { Account } from 'mate/account'; import { Block } from 'mate/block'; import { Transaction } from 'mate/transaction'; import { Receipt } from 'mate/receipt'; import { ValueOf } from 'global'; import { accountOpCodes, errorCodes } from 'lib/contract/code'; export declare type UpdateOpCode = ValueOf | ValueOf; export declare type UpdateAccountI = { opCode: UpdateOpCode; value: string | BigNumber | object; } & { account: Account['account']['did']; }; export declare class Ipld extends SKChainLibBase { constructor(chain: SKChain); private stateMpt; private transactionMpt; private receiptsMpt; nextBlock: Block; nextBlockBodyTrans: string[]; private updates; private preLoadAccount; init: () => Promise; clearUpdates: () => void; /** * 在交易执行前做数据准备 * @param trans meta Transaction */ preLoadByTrans: (trans: Transaction) => Promise; /** * 注册到智能合约的执行环境,获取账户数据 * @param did * @returns */ getAccount: (did: string) => Promise; getAccountFromDb: (did: string) => Promise; /** * 接收智能合约的执行结果,批量更新账户数据 * @param account */ addUpdates: (trans: Transaction, updates: UpdateAccountI[], index: number) => Promise; /** * 接收智能合约的执行结果,更新账户数据 * @param account */ addUpdate: (update: UpdateAccountI, trans: Transaction) => Promise; initMpt: () => Promise; addTransaction: (trans: Transaction) => Promise; addReceipts: (tx: string, receipt: Receipt) => Promise; /** * 提交当前区块的数据,进行打包 */ commit: () => Promise; goToNext: () => Promise; }