import { Segment } from './segment';
import { BigNumber } from 'ethers/utils';
import { Address, RLPItem, Hash } from './helpers/types';
import { IState } from './state/BaseStateManager';
export declare class StateUpdate implements IState {
segment: Segment;
blkNum: BigNumber;
predicate: Address;
state: string;
constructor(segment: Segment, blkNum: BigNumber, predicate: Address, state: string);
getSegment(): Segment;
getBlkNum(): BigNumber;
getRawState(): string;
serialize(): string;
static deserialize(data: string): StateUpdate;
encodeToTuple(): RLPItem[];
static fromTupl(data: RLPItem[]): StateUpdate;
/**
* for RootChain contract
*/
encode(): string;
getStateHash(): string;
hash(): string;
getSubStateUpdate(newSegment: Segment): StateUpdate;
getRemainingState(state: StateUpdate): StateUpdate[];
verifyDeprecation(hash: Hash, newStateUpdate: StateUpdate, deprecationWitness: string, predicatesManager: PredicatesManager): boolean;
isOwnedBy(owner: Address, predicatesManager: PredicatesManager): boolean;
getOwner(): string;
}
export declare class PredicatesManager {
predicates: Map
;
name2address: Map;
constructor();
addPredicate(predicateAddress: Address, nativePredicate: string): void;
getNativePredicate(nativePredicate: string): string;
verifyDeprecation(predicate: Address, hash: string, stateUpdate: StateUpdate, deprecationWitness: string, nextStateUpdate: StateUpdate): boolean;
isOwnedBy(predicate: Address, owner: Address, stateUpdate: StateUpdate): boolean;
}
export declare class OwnershipPredicate {
static create(segment: Segment, blkNum: BigNumber, predicate: Address, owner: Address): StateUpdate;
static verifyDeprecation(hash: string, stateUpdate: StateUpdate, deprecationWitness: string, nextStateUpdate: StateUpdate): boolean;
static isOwnedBy(owner: Address, stateUpdate: StateUpdate): boolean;
}
export declare class PaymentChannelPredicate {
static create(segment: Segment, blkNum: BigNumber, predicate: Address, hash: string, participant1: Address, participant2: Address, stateIndex: number): StateUpdate;
static verifyDeprecation(hash: string, stateUpdate: StateUpdate, deprecationWitness: string, nextStateUpdate: StateUpdate): boolean;
static isOwnedBy(owner: Address, stateUpdate: StateUpdate): boolean;
}