import { SubaccountId, SubaccountIdSDKType } from "./subaccount";
import * as _m0 from "protobufjs/minimal";
import { DeepPartial, Long } from "../../helpers";
/**
 * StreamSubaccountUpdate provides information on a subaccount update. Used in
 * the full node GRPC stream.
 */
export interface StreamSubaccountUpdate {
    subaccountId?: SubaccountId;
    /** updated_perpetual_positions will each be for unique perpetuals. */
    updatedPerpetualPositions: SubaccountPerpetualPosition[];
    /** updated_asset_positions will each be for unique assets. */
    updatedAssetPositions: SubaccountAssetPosition[];
    /**
     * Snapshot indicates if the response is from a snapshot of the subaccount.
     * All updates should be ignored until snapshot is received.
     * If the snapshot is true, then all previous entries should be
     * discarded and the subaccount should be resynced.
     * For a snapshot subaccount update, the `updated_perpetual_positions` and
     * `updated_asset_positions` fields will contain the full state of the
     * subaccount.
     */
    snapshot: boolean;
}
/**
 * StreamSubaccountUpdate provides information on a subaccount update. Used in
 * the full node GRPC stream.
 */
export interface StreamSubaccountUpdateSDKType {
    subaccount_id?: SubaccountIdSDKType;
    updated_perpetual_positions: SubaccountPerpetualPositionSDKType[];
    updated_asset_positions: SubaccountAssetPositionSDKType[];
    snapshot: boolean;
}
/**
 * SubaccountPerpetualPosition provides information on a subaccount's updated
 * perpetual positions.
 */
export interface SubaccountPerpetualPosition {
    /** The `Id` of the `Perpetual`. */
    perpetualId: number;
    /** The size of the position in base quantums. Negative means short. */
    quantums: Long;
}
/**
 * SubaccountPerpetualPosition provides information on a subaccount's updated
 * perpetual positions.
 */
export interface SubaccountPerpetualPositionSDKType {
    perpetual_id: number;
    quantums: Long;
}
/**
 * SubaccountAssetPosition provides information on a subaccount's updated asset
 * positions.
 */
export interface SubaccountAssetPosition {
    /** The `Id` of the `Asset`. */
    assetId: number;
    /** The absolute size of the position in base quantums. */
    quantums: Long;
}
/**
 * SubaccountAssetPosition provides information on a subaccount's updated asset
 * positions.
 */
export interface SubaccountAssetPositionSDKType {
    asset_id: number;
    quantums: Long;
}
export declare const StreamSubaccountUpdate: {
    encode(message: StreamSubaccountUpdate, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): StreamSubaccountUpdate;
    fromPartial(object: DeepPartial<StreamSubaccountUpdate>): StreamSubaccountUpdate;
};
export declare const SubaccountPerpetualPosition: {
    encode(message: SubaccountPerpetualPosition, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): SubaccountPerpetualPosition;
    fromPartial(object: DeepPartial<SubaccountPerpetualPosition>): SubaccountPerpetualPosition;
};
export declare const SubaccountAssetPosition: {
    encode(message: SubaccountAssetPosition, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): SubaccountAssetPosition;
    fromPartial(object: DeepPartial<SubaccountAssetPosition>): SubaccountAssetPosition;
};
//# sourceMappingURL=streaming.d.ts.map