import _m0 from "protobufjs/minimal";
import { Vector2 } from "./vectors.gen";
/**
 * @public
 */
export declare const enum TextureWrapMode {
    TWM_REPEAT = 0,
    TWM_CLAMP = 1,
    TWM_MIRROR = 2
}
/**
 * @public
 */
export declare const enum TextureFilterMode {
    TFM_POINT = 0,
    TFM_BILINEAR = 1,
    TFM_TRILINEAR = 2
}
/**
 * @public
 */
export interface Texture {
    src: string;
    /** default = TextureWrapMode.Clamp */
    wrapMode?: TextureWrapMode | undefined;
    /** default = FilterMode.Bilinear */
    filterMode?: TextureFilterMode | undefined;
    /** Final uv = offset + (input_uv * tiling) */
    offset?: Vector2 | undefined;
    /** default = Vector2.One; Tiling multiplier for texture repetition, only works for the texture property in PbrMaterial or UnlitMaterial. */
    tiling?: Vector2 | undefined;
}
/**
 * @public
 */
export interface AvatarTexture {
    userId: string;
    /** default = TextureWrapMode.Clamp */
    wrapMode?: TextureWrapMode | undefined;
    /** default = FilterMode.Bilinear */
    filterMode?: TextureFilterMode | undefined;
}
/**
 * @public
 */
export interface VideoTexture {
    videoPlayerEntity: number;
    /** default = TextureWrapMode.Clamp */
    wrapMode?: TextureWrapMode | undefined;
    /** default = FilterMode.Bilinear */
    filterMode?: TextureFilterMode | undefined;
}
/**
 * @public
 */
export interface TextureUnion {
    tex?: {
        $case: "texture";
        texture: Texture;
    } | {
        $case: "avatarTexture";
        avatarTexture: AvatarTexture;
    } | {
        $case: "videoTexture";
        videoTexture: VideoTexture;
    } | undefined;
}
/**
 * @public
 */
export declare namespace Texture {
    function encode(message: Texture, writer?: _m0.Writer): _m0.Writer;
    function decode(input: _m0.Reader | Uint8Array, length?: number): Texture;
}
/**
 * @public
 */
export declare namespace AvatarTexture {
    function encode(message: AvatarTexture, writer?: _m0.Writer): _m0.Writer;
    function decode(input: _m0.Reader | Uint8Array, length?: number): AvatarTexture;
}
/**
 * @public
 */
export declare namespace VideoTexture {
    function encode(message: VideoTexture, writer?: _m0.Writer): _m0.Writer;
    function decode(input: _m0.Reader | Uint8Array, length?: number): VideoTexture;
}
/**
 * @public
 */
export declare namespace TextureUnion {
    function encode(message: TextureUnion, writer?: _m0.Writer): _m0.Writer;
    function decode(input: _m0.Reader | Uint8Array, length?: number): TextureUnion;
}
