import { Observable } from '@nativescript/core';
import { GPUBuffer } from './GPUBuffer';
import { GPUTexture } from './GPUTexture';
import { native_ } from './Constants';
import { GPUShaderModule } from './GPUShaderModule';
import { GPUQueue } from './GPUQueue';
import { GPUPipelineLayout } from './GPUPipelineLayout';
import { GPURenderPipeline } from './GPURenderPipeline';
import { GPUCommandEncoder } from './GPUCommandEncoder';
import { GPUDeviceLostInfo } from './Errors';
import { GPUBindGroup } from './GPUBindGroup';
import { GPUBindGroupLayout } from './GPUBindGroupLayout';
import { GPUSampler } from './GPUSampler';
import type { GPUAddressMode, GPUCompareFunction, GPUErrorFilter, GPUFilterMode, GPUMipmapFilterMode, GPUQueryType, GPUTextureFormat } from './Types';
import type { GPUBindGroupDescriptor, GPUBindGroupLayoutEntry, GPUComputePipelineDescriptor, GPURenderPipelineDescriptor } from './Interfaces';
import { GPUComputePipeline } from './GPUComputePipeline';
import { GPUQuerySet } from './GPUQuerySet';
import { GPURenderBundleEncoder } from './GPURenderBundleEncoder';
import { GPUAdapter, GPUSupportedFeatures } from './GPUAdapter';
export declare class EventTarget {
    protected _emitter?: WeakRef<Observable>;
    addEventListener(event: string, handler: any, options?: AddEventListenerOptions): void;
    removeEventListener(event: string, handler?: any): void;
    dispatchEvent(event: any): void;
}
interface GPUExtent3DDict {
    width: number;
    height?: number;
    depthOrArrayLayers?: number;
}
type GPUExtent3D = [number, number, number] | [number, number] | GPUExtent3DDict;
export declare class GPUDevice extends EventTarget {
    [native_]: any;
    private _lost;
    private _observerable;
    constructor();
    private _uncapturederror;
    static fromNative(device: any, adapter: GPUAdapter): GPUDevice;
    get label(): any;
    get lost(): Promise<GPUDeviceLostInfo>;
    get native(): any;
    get limits(): any;
    get features(): GPUSupportedFeatures;
    destroy(): void;
    createBindGroup(descriptor: GPUBindGroupDescriptor): GPUBindGroup;
    createBindGroupLayout(descriptor: GPUBindGroupLayoutEntry): GPUBindGroupLayout;
    createBuffer(descriptor: {
        label?: string;
        mappedAtCreation?: boolean;
        size: number;
        usage: number;
    }): GPUBuffer;
    createCommandEncoder(descriptor?: {
        label?: string;
    }): GPUCommandEncoder;
    createComputePipeline(descriptor: GPUComputePipelineDescriptor): GPUComputePipeline;
    createComputePipelineAsync(descriptor: GPUComputePipelineDescriptor): Promise<unknown>;
    createPipelineLayout(descriptor: {
        bindGroupLayouts: GPUBindGroupLayout[];
        label?: string;
    }): GPUPipelineLayout;
    createQuerySet(descriptor: {
        count: number;
        label?: string;
        type: GPUQueryType;
    }): GPUQuerySet;
    createRenderBundleEncoder(descriptor: {
        colorFormats: (null | GPUTextureFormat)[];
        depthReadOnly?: boolean;
        depthStencilFormat?: GPUTextureFormat;
        label?: string;
        sampleCount?: number;
        stencilReadOnly?: boolean;
    }): GPURenderBundleEncoder;
    createRenderPipeline(descriptor: GPURenderPipelineDescriptor): GPURenderPipeline;
    createRenderPipelineAsync(descriptor: GPURenderPipelineDescriptor): Promise<unknown>;
    createSampler(descriptor?: {
        addressModeU?: GPUAddressMode;
        addressModeV?: GPUAddressMode;
        addressModeW?: GPUAddressMode;
        compare?: GPUCompareFunction;
        label?: string;
        lodMaxClamp?: number;
        lodMinClamp?: number;
        magFilter?: GPUFilterMode;
        maxAnisotropy?: number;
        minFilter?: GPUFilterMode;
        mipmapFilter?: GPUMipmapFilterMode;
    }): GPUSampler;
    createShaderModule(descriptor: {
        label?: string;
        code: string;
        sourceMap?: object;
        compilationHints?: any[];
    }): GPUShaderModule;
    createTexture(descriptor: {
        label?: string;
        size: GPUExtent3D;
        mipLevelCount?: number;
        sampleCount?: number;
        dimension?: '1d' | '2d' | '3d';
        format: GPUTextureFormat;
        usage: number;
        viewFormats?: any[];
    }): GPUTexture;
    popErrorScope(): Promise<unknown>;
    pushErrorScope(filter: GPUErrorFilter): void;
    private _queue;
    get queue(): GPUQueue;
}
export {};
