/// <reference types="node" />
/// <reference types="pouchdb-core" />
import { ECPoint, UInt160, UInt256 } from '@neo-one/client-common-browserify';
import { Account, Asset, Attribute, Block, BlockBase, Contract, ContractParameter, Equatable, Input, Output, Transaction, Validator, VMSettings, Witness } from '@neo-one/node-core-browserify';
import BN from 'bn.js';
import { AttributeStackItem } from './AttributeStackItem';
import { MapStackItem } from './MapStackItem';
import { StackItem } from './StackItem';
import { StackItemEnumerator } from './StackItemEnumerator';
import { StackItemIterator } from './StackItemIterator';
import { StorageContextStackItem } from './StorageContextStackItem';
export interface AsStorageContextStackItemOptions {
    readonly currentBlockIndex: number;
    readonly vm: VMSettings;
    readonly scriptHash: UInt160;
    readonly callingScriptHash: UInt160 | undefined;
    readonly entryScriptHash: UInt160;
}
export declare class StackItemBase implements Equatable {
    private mutableCount;
    readonly referenceCount: number;
    increment(seen?: Set<StackItemBase>): number;
    decrement(seen?: Set<StackItemBase>): number;
    toStructuralKey(): string;
    equals(other: any): boolean;
    serialize(seen?: Set<StackItemBase>): Buffer;
    asArray(): StackItem[];
    asBigInteger(currentBlockIndex?: number): BN;
    asBigIntegerUnsafe(): BN;
    asBuffer(): Buffer;
    asBufferMaybe(): Buffer | undefined;
    asBoolean(): boolean;
    asUInt160(): UInt160;
    asUInt160Maybe(): UInt160 | undefined;
    asUInt256(): UInt256;
    asUInt256Maybe(): UInt256 | undefined;
    asECPoint(): ECPoint;
    asECPointMaybe(): ECPoint | undefined;
    asString(): string;
    asHeader(): BlockBase;
    asBlockBase(): BlockBase;
    asBlock(): Block;
    asTransaction(): Transaction;
    asWitness(): Witness;
    asAttribute(): Attribute;
    asAttributeStackItem(): AttributeStackItem;
    asInput(): Input;
    asOutput(): Output;
    asAccount(): Account;
    asAsset(): Asset;
    asContract(): Contract;
    asValidator(): Validator;
    asMapStackItem(): MapStackItem;
    asEnumerator(): StackItemEnumerator;
    asIterator(): StackItemIterator;
    asStorageContextStackItem(_options: AsStorageContextStackItemOptions): StorageContextStackItem;
    isArray(): boolean;
    isMap(): boolean;
    toContractParameter(): ContractParameter;
    readonly size: number;
    toString(): string;
    convertJSON(seen?: Set<StackItemBase>): any;
    protected incrementInternal(_seen: Set<StackItemBase>): number;
    protected decrementInternal(_seen: Set<StackItemBase>): number;
    protected incrementInternalArray(stackItems: readonly StackItem[], seen: Set<StackItemBase>): number;
    protected decrementInternalArray(stackItems: readonly StackItem[], seen: Set<StackItemBase>): number;
    protected serializeInternal(_seen: Set<StackItemBase>): Buffer;
    protected convertJSONInternal(_seen: Set<StackItemBase>): any;
}
