1//
2// Copyright (c) ZeroC, Inc. All rights reserved.
3//
4
5declare module "ice"
6{
7    namespace Ice
8    {
9        /**
10         * The base class for instances of Slice classes.
11         */
12        class Value
13        {
14            /**
15             * The Ice run time invokes this method prior to marshaling an object's data members. This allows a subclass
16             * to override this method in order to validate its data members.
17             */
18            ice_preMarshal():void;
19
20            /**
21             * The Ice run time invokes this method vafter unmarshaling an object's data members. This allows a
22             * subclass to override this method in order to perform additional initialization.
23             */
24            ice_postUnmarshal():void;
25
26            /**
27             * Obtains the Slice type ID of the most-derived class supported by this object.
28             * @return The type ID.
29             */
30            ice_id():string;
31
32            /**
33             * Obtains the Slice type ID of this type.
34             * @return The return value is always "::Ice::Object".
35             */
36            static ice_staticId():string;
37
38            /**
39             * Obtains the sliced data associated with this instance.
40             * @return The sliced data if the value has a preserved-slice base class and has been sliced during
41             * unmarshaling of the value, nil otherwise.
42             */
43            ice_getSlicedData():SlicedData;
44        }
45
46        class InterfaceByValue extends Value
47        {
48            constructor(id:string);
49        }
50    }
51}
52