---
title: "ProgramConfigurationSet | JavaScript maps SDK"
description: "Documentation for MapTiler SDK"
---

> For AI agents: a documentation index is available at [/llms.txt](https://docs.maptiler.com/llms.txt). Markdown versions of all pages are available by appending .md to any URL.

# Class ProgramConfigurationSet<Layer>

#### Type Parameters

-   Layer extends [TypedStyleLayer](https://docs.maptiler.com/sdk-js/api-reference/types/Externals.TypedStyleLayer/)

##### Index

### Constructors[](#constructors)

[constructor](#constructor)

### Properties[](#properties)

[needsUpload](#needsupload) [programConfigurations](#programconfigurations)

### Methods[](#methods)

[destroy](#destroy) [get](#get) [populatePaintArrays](#populatepaintarrays) [updatePaintArrays](#updatepaintarrays) [upload](#upload)

## Constructors[](#constructors-1)

### constructor[](#constructor)

-   new ProgramConfigurationSet<[Layer](#constructorprogramconfigurationsetlayer) extends [TypedStyleLayer](https://docs.maptiler.com/sdk-js/api-reference/types/Externals.TypedStyleLayer/)\>(  
        layers: readonly [Layer](#layer)\[\],  
        zoom: number,  
        filterProperties?: (\_: string) \=> boolean,  
    ): ProgramConfigurationSet<[Layer](#layer)\>[](#constructorprogramconfigurationset)
    
    #### Type Parameters
    
    -   Layer extends [TypedStyleLayer](https://docs.maptiler.com/sdk-js/api-reference/types/Externals.TypedStyleLayer/)
    
    #### Parameters
    
    -   layers: readonly [Layer](#layer)\[\]
    -   zoom: number
    -   `Optional`filterProperties: (\_: string) \=> boolean
    
    #### Returns ProgramConfigurationSet<[Layer](#layer)\>
    

## Properties[](#properties-1)

### needsUpload[](#needsupload)

needsUpload: boolean

### programConfigurations[](#programconfigurations)

programConfigurations: { \[\_: string\]: [ProgramConfiguration](https://docs.maptiler.com/sdk-js/api-reference/classes/Externals.ProgramConfiguration/) }

## Methods[](#methods-1)

### destroy[](#destroy)

-   destroy(): void[](#destroy-1)
    
    #### Returns void
    

### get[](#get)

-   get(layerId: string): [ProgramConfiguration](https://docs.maptiler.com/sdk-js/api-reference/classes/Externals.ProgramConfiguration/)[](#get-1)
    
    #### Parameters
    
    -   layerId: string
    
    #### Returns [ProgramConfiguration](https://docs.maptiler.com/sdk-js/api-reference/classes/Externals.ProgramConfiguration/)
    

### populatePaintArrays[](#populatepaintarrays)

-   populatePaintArrays(  
        length: number,  
        feature: [Feature](https://docs.maptiler.com/sdk-js/api-reference/types/Feature/),  
        index: number,  
        options: [PaintOptions](https://docs.maptiler.com/sdk-js/api-reference/types/Externals.PaintOptions/),  
    ): void[](#populatepaintarrays-1)
    
    #### Parameters
    
    -   length: number
    -   feature: [Feature](https://docs.maptiler.com/sdk-js/api-reference/types/Feature/)
    -   index: number
    -   options: [PaintOptions](https://docs.maptiler.com/sdk-js/api-reference/types/Externals.PaintOptions/)
    
    #### Returns void
    

### updatePaintArrays[](#updatepaintarrays)

-   updatePaintArrays(  
        featureStates: [FeatureStates](https://docs.maptiler.com/sdk-js/api-reference/types/Externals.FeatureStates/),  
        vtLayer: [VectorTileLayerLike](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.VectorTileLayerLike/),  
        layers: readonly [TypedStyleLayer](https://docs.maptiler.com/sdk-js/api-reference/types/Externals.TypedStyleLayer/)\[\],  
        options: [PaintOptions](https://docs.maptiler.com/sdk-js/api-reference/types/Externals.PaintOptions/),  
    ): void[](#updatepaintarrays-1)
    
    #### Parameters
    
    -   featureStates: [FeatureStates](https://docs.maptiler.com/sdk-js/api-reference/types/Externals.FeatureStates/)
    -   vtLayer: [VectorTileLayerLike](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.VectorTileLayerLike/)
    -   layers: readonly [TypedStyleLayer](https://docs.maptiler.com/sdk-js/api-reference/types/Externals.TypedStyleLayer/)\[\]
    -   options: [PaintOptions](https://docs.maptiler.com/sdk-js/api-reference/types/Externals.PaintOptions/)
    
    #### Returns void
    

### upload[](#upload)

-   upload(context: [Context](https://docs.maptiler.com/sdk-js/api-reference/classes/Externals.Context/)): void[](#upload-1)
    
    #### Parameters
    
    -   context: [Context](https://docs.maptiler.com/sdk-js/api-reference/classes/Externals.Context/)
    
    #### Returns void
