import type { NobjcObject } from "objc-js";
import type { _NSCopying } from "../Foundation/NSCopying.js";
import type { _NSObject } from "../Foundation/NSObject.js";
import type { _NSSecureCoding } from "../Foundation/NSSecureCoding.js";
import type { _NSString } from "../Foundation/NSString.js";
import type { _SKTexture } from "./SKTexture.js";
import type { simd_float2x2 } from "../structs/simd_float2x2.js";
import type { simd_float3x3 } from "../structs/simd_float3x3.js";
import type { simd_float4x4 } from "../structs/simd_float4x4.js";
import type { SKUniformType } from "./SKUniformType.js";
export declare class _SKUniform extends _NSObject {
    static alloc(): _SKUniform;
    static new(): _SKUniform;
    init(): _SKUniform;
    /**
     * Create a shader uniform with a given name. @param name the name of the shader uniform.
     */
    static uniformWithName$(name: _NSString): _SKUniform;
    /**
     * Create a shader uniform with a given name, and texture data @param name the name of the shader uniform. @param texture the texture data associated with this uniform.
     */
    static uniformWithName$texture$(name: _NSString, texture: _SKTexture | null): _SKUniform;
    /**
     * Create a shader uniform with a given name, and a float value @param name the name of the shader uniform. @param value the floating point value associated with this uniform.
     */
    static uniformWithName$float$(name: _NSString, value: number): _SKUniform;
    /**
     * Create a shader uniform with a given name, and a float vector2 value @param name the name of the shader uniform. @param value the float vector2 value associated with this uniform.
     */
    static uniformWithName$vectorFloat2$(name: _NSString, value: NobjcObject): _SKUniform;
    /**
     * Create a shader uniform with a given name, and a float vector3 value @param name the name of the shader uniform. @param value the float vector3 value associated with this uniform.
     */
    static uniformWithName$vectorFloat3$(name: _NSString, value: NobjcObject): _SKUniform;
    /**
     * Create a shader uniform with a given name, and a float vector4 value @param name the name of the shader uniform. @param value the float vector4 value associated with this uniform.
     */
    static uniformWithName$vectorFloat4$(name: _NSString, value: NobjcObject): _SKUniform;
    /**
     * Create a shader uniform with a given name, and a 2x2 matrix value @param name the name of the shader uniform. @param value the 2x2 matrix value associated with this uniform.
     */
    static uniformWithName$matrixFloat2x2$(name: _NSString, value: simd_float2x2): _SKUniform;
    /**
     * Create a shader uniform with a given name, and a 3x3 matrix value @param name the name of the shader uniform. @param value the 3x3 matrix value associated with this uniform.
     */
    static uniformWithName$matrixFloat3x3$(name: _NSString, value: simd_float3x3): _SKUniform;
    /**
     * Create a shader uniform with a given name, and a 4x4 matrix value @param name the name of the shader uniform. @param value the 4x4 matrix value associated with this uniform.
     */
    static uniformWithName$matrixFloat4x4$(name: _NSString, value: simd_float4x4): _SKUniform;
    /** @deprecated */
    static uniformWithName$floatVector2$(name: _NSString, value: NobjcObject): _SKUniform;
    /** @deprecated */
    static uniformWithName$floatVector3$(name: _NSString, value: NobjcObject): _SKUniform;
    /** @deprecated */
    static uniformWithName$floatVector4$(name: _NSString, value: NobjcObject): _SKUniform;
    /** @deprecated */
    static uniformWithName$floatMatrix2$(name: _NSString, value: NobjcObject): _SKUniform;
    /** @deprecated */
    static uniformWithName$floatMatrix3$(name: _NSString, value: NobjcObject): _SKUniform;
    /** @deprecated */
    static uniformWithName$floatMatrix4$(name: _NSString, value: NobjcObject): _SKUniform;
    initWithName$(name: _NSString): _SKUniform;
    initWithName$texture$(name: _NSString, texture: _SKTexture | null): _SKUniform;
    initWithName$float$(name: _NSString, value: number): _SKUniform;
    initWithName$vectorFloat2$(name: _NSString, value: NobjcObject): _SKUniform;
    initWithName$vectorFloat3$(name: _NSString, value: NobjcObject): _SKUniform;
    initWithName$vectorFloat4$(name: _NSString, value: NobjcObject): _SKUniform;
    /** @deprecated */
    initWithName$matrixFloat2x2$(name: _NSString, value: simd_float2x2): _SKUniform;
    /** @deprecated */
    initWithName$matrixFloat3x3$(name: _NSString, value: simd_float3x3): _SKUniform;
    /** @deprecated */
    initWithName$matrixFloat4x4$(name: _NSString, value: simd_float4x4): _SKUniform;
    /** @deprecated */
    initWithName$floatVector2$(name: _NSString, value: NobjcObject): _SKUniform;
    /** @deprecated */
    initWithName$floatVector3$(name: _NSString, value: NobjcObject): _SKUniform;
    /** @deprecated */
    initWithName$floatVector4$(name: _NSString, value: NobjcObject): _SKUniform;
    /** @deprecated */
    initWithName$floatMatrix2$(name: _NSString, value: NobjcObject): _SKUniform;
    /** @deprecated */
    initWithName$floatMatrix3$(name: _NSString, value: NobjcObject): _SKUniform;
    /** @deprecated */
    initWithName$floatMatrix4$(name: _NSString, value: NobjcObject): _SKUniform;
    /** The name by which this uniform will be referenced in a shader */
    name(): _NSString;
    /**
     * Once created, a uniform is locked to a specific type, you may only access the property of this type
     */
    uniformType(): SKUniformType;
    /** Access to the texture data associated with the current uniform */
    textureValue(): _SKTexture | null;
    setTextureValue$(value: _SKTexture | null): void;
    /** Access to the value associated with the uniform */
    floatValue(): number;
    setFloatValue$(value: number): void;
    vectorFloat2Value(): NobjcObject;
    setVectorFloat2Value$(value: NobjcObject): void;
    vectorFloat3Value(): NobjcObject;
    setVectorFloat3Value$(value: NobjcObject): void;
    vectorFloat4Value(): NobjcObject;
    setVectorFloat4Value$(value: NobjcObject): void;
    matrixFloat2x2Value(): simd_float2x2;
    setMatrixFloat2x2Value$(value: simd_float2x2): void;
    matrixFloat3x3Value(): simd_float3x3;
    setMatrixFloat3x3Value$(value: simd_float3x3): void;
    matrixFloat4x4Value(): simd_float4x4;
    setMatrixFloat4x4Value$(value: simd_float4x4): void;
    /** @deprecated */
    floatVector2Value(): NobjcObject;
    setFloatVector2Value$(value: NobjcObject): void;
    /** @deprecated */
    floatVector3Value(): NobjcObject;
    setFloatVector3Value$(value: NobjcObject): void;
    /** @deprecated */
    floatVector4Value(): NobjcObject;
    setFloatVector4Value$(value: NobjcObject): void;
    /** @deprecated */
    floatMatrix2Value(): NobjcObject;
    setFloatMatrix2Value$(value: NobjcObject): void;
    /** @deprecated */
    floatMatrix3Value(): NobjcObject;
    setFloatMatrix3Value$(value: NobjcObject): void;
    /** @deprecated */
    floatMatrix4Value(): NobjcObject;
    setFloatMatrix4Value$(value: NobjcObject): void;
}
export interface _SKUniform extends _NSCopying, _NSSecureCoding {
}
