import { StateProvider } from './state';
import { aether } from '../../../aether/aether';
import { z } from 'zod';
import { Destructor } from '@synnaxlabs/x';
import { control } from '@synnaxlabs/client';

export declare const legendStateZ: z.ZodObject<{
    needsControlOf: z.ZodArray<z.ZodNumber, "many">;
    states: z.ZodArray<z.ZodObject<{
        resource: z.ZodNumber;
        subject: z.ZodObject<{
            name: z.ZodString;
            key: z.ZodString;
        }, "strip", z.ZodTypeAny, {
            name: string;
            key: string;
        }, {
            name: string;
            key: string;
        }>;
        authority: z.ZodUnion<[z.ZodType<control.Authority, z.ZodTypeDef, control.Authority>, z.ZodEffects<z.ZodNumber, control.Authority, number>, z.ZodEffects<z.ZodType<Number, z.ZodTypeDef, Number>, control.Authority, Number>]>;
        subjectColor: z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>, z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>, z.ZodType<import('../../../color/external').Color, z.ZodTypeDef, import('../../../color/external').Color>, z.ZodObject<{
            rgba255: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
        }, "strip", z.ZodTypeAny, {
            rgba255: [number, number, number, number];
        }, {
            rgba255: [number, number, number, number];
        }>]>, import('../../../color/external').Color, string | [number, number, number, number] | {
            rgba255: [number, number, number, number];
        } | import('../../../color/external').Color | [number, number, number]>;
    }, "strip", z.ZodTypeAny, {
        resource: number;
        subjectColor: import('../../../color/external').Color;
        subject: {
            name: string;
            key: string;
        };
        authority: control.Authority;
    }, {
        resource: number;
        subjectColor: string | [number, number, number, number] | {
            rgba255: [number, number, number, number];
        } | import('../../../color/external').Color | [number, number, number] | (string & [number, number, number, number]) | (string & {
            rgba255: [number, number, number, number];
        }) | (string & import('../../../color/external').Color) | (string & [number, number, number]) | ([number, number, number, number] & string) | ([number, number, number, number] & {
            rgba255: [number, number, number, number];
        }) | ([number, number, number, number] & import('../../../color/external').Color) | ({
            rgba255: [number, number, number, number];
        } & string) | ({
            rgba255: [number, number, number, number];
        } & [number, number, number, number]) | ({
            rgba255: [number, number, number, number];
        } & import('../../../color/external').Color) | ({
            rgba255: [number, number, number, number];
        } & [number, number, number]) | (import('../../../color/external').Color & string) | (import('../../../color/external').Color & [number, number, number, number]) | (import('../../../color/external').Color & {
            rgba255: [number, number, number, number];
        }) | (import('../../../color/external').Color & [number, number, number]) | ([number, number, number] & string) | ([number, number, number] & {
            rgba255: [number, number, number, number];
        }) | ([number, number, number] & import('../../../color/external').Color);
        subject: {
            name: string;
            key: string;
        };
        authority: (number | Number | control.Authority) & (number | Number | control.Authority | undefined);
    }>, "many">;
}, "strip", z.ZodTypeAny, {
    needsControlOf: number[];
    states: {
        resource: number;
        subjectColor: import('../../../color/external').Color;
        subject: {
            name: string;
            key: string;
        };
        authority: control.Authority;
    }[];
}, {
    needsControlOf: number[];
    states: {
        resource: number;
        subjectColor: string | [number, number, number, number] | {
            rgba255: [number, number, number, number];
        } | import('../../../color/external').Color | [number, number, number] | (string & [number, number, number, number]) | (string & {
            rgba255: [number, number, number, number];
        }) | (string & import('../../../color/external').Color) | (string & [number, number, number]) | ([number, number, number, number] & string) | ([number, number, number, number] & {
            rgba255: [number, number, number, number];
        }) | ([number, number, number, number] & import('../../../color/external').Color) | ({
            rgba255: [number, number, number, number];
        } & string) | ({
            rgba255: [number, number, number, number];
        } & [number, number, number, number]) | ({
            rgba255: [number, number, number, number];
        } & import('../../../color/external').Color) | ({
            rgba255: [number, number, number, number];
        } & [number, number, number]) | (import('../../../color/external').Color & string) | (import('../../../color/external').Color & [number, number, number, number]) | (import('../../../color/external').Color & {
            rgba255: [number, number, number, number];
        }) | (import('../../../color/external').Color & [number, number, number]) | ([number, number, number] & string) | ([number, number, number] & {
            rgba255: [number, number, number, number];
        }) | ([number, number, number] & import('../../../color/external').Color);
        subject: {
            name: string;
            key: string;
        };
        authority: (number | Number | control.Authority) & (number | Number | control.Authority | undefined);
    }[];
}>;
interface InternalState {
    stateProv: StateProvider;
    disconnectStateProv?: Destructor;
}
export declare class Legend extends aether.Leaf<typeof legendStateZ, InternalState> {
    static readonly TYPE = "Legend";
    schema: z.ZodObject<{
        needsControlOf: z.ZodArray<z.ZodNumber, "many">;
        states: z.ZodArray<z.ZodObject<{
            resource: z.ZodNumber;
            subject: z.ZodObject<{
                name: z.ZodString;
                key: z.ZodString;
            }, "strip", z.ZodTypeAny, {
                name: string;
                key: string;
            }, {
                name: string;
                key: string;
            }>;
            authority: z.ZodUnion<[z.ZodType<control.Authority, z.ZodTypeDef, control.Authority>, z.ZodEffects<z.ZodNumber, control.Authority, number>, z.ZodEffects<z.ZodType<Number, z.ZodTypeDef, Number>, control.Authority, Number>]>;
            subjectColor: z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>, z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>, z.ZodType<import('../../../color/external').Color, z.ZodTypeDef, import('../../../color/external').Color>, z.ZodObject<{
                rgba255: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
            }, "strip", z.ZodTypeAny, {
                rgba255: [number, number, number, number];
            }, {
                rgba255: [number, number, number, number];
            }>]>, import('../../../color/external').Color, string | [number, number, number, number] | {
                rgba255: [number, number, number, number];
            } | import('../../../color/external').Color | [number, number, number]>;
        }, "strip", z.ZodTypeAny, {
            resource: number;
            subjectColor: import('../../../color/external').Color;
            subject: {
                name: string;
                key: string;
            };
            authority: control.Authority;
        }, {
            resource: number;
            subjectColor: string | [number, number, number, number] | {
                rgba255: [number, number, number, number];
            } | import('../../../color/external').Color | [number, number, number] | (string & [number, number, number, number]) | (string & {
                rgba255: [number, number, number, number];
            }) | (string & import('../../../color/external').Color) | (string & [number, number, number]) | ([number, number, number, number] & string) | ([number, number, number, number] & {
                rgba255: [number, number, number, number];
            }) | ([number, number, number, number] & import('../../../color/external').Color) | ({
                rgba255: [number, number, number, number];
            } & string) | ({
                rgba255: [number, number, number, number];
            } & [number, number, number, number]) | ({
                rgba255: [number, number, number, number];
            } & import('../../../color/external').Color) | ({
                rgba255: [number, number, number, number];
            } & [number, number, number]) | (import('../../../color/external').Color & string) | (import('../../../color/external').Color & [number, number, number, number]) | (import('../../../color/external').Color & {
                rgba255: [number, number, number, number];
            }) | (import('../../../color/external').Color & [number, number, number]) | ([number, number, number] & string) | ([number, number, number] & {
                rgba255: [number, number, number, number];
            }) | ([number, number, number] & import('../../../color/external').Color);
            subject: {
                name: string;
                key: string;
            };
            authority: (number | Number | control.Authority) & (number | Number | control.Authority | undefined);
        }>, "many">;
    }, "strip", z.ZodTypeAny, {
        needsControlOf: number[];
        states: {
            resource: number;
            subjectColor: import('../../../color/external').Color;
            subject: {
                name: string;
                key: string;
            };
            authority: control.Authority;
        }[];
    }, {
        needsControlOf: number[];
        states: {
            resource: number;
            subjectColor: string | [number, number, number, number] | {
                rgba255: [number, number, number, number];
            } | import('../../../color/external').Color | [number, number, number] | (string & [number, number, number, number]) | (string & {
                rgba255: [number, number, number, number];
            }) | (string & import('../../../color/external').Color) | (string & [number, number, number]) | ([number, number, number, number] & string) | ([number, number, number, number] & {
                rgba255: [number, number, number, number];
            }) | ([number, number, number, number] & import('../../../color/external').Color) | ({
                rgba255: [number, number, number, number];
            } & string) | ({
                rgba255: [number, number, number, number];
            } & [number, number, number, number]) | ({
                rgba255: [number, number, number, number];
            } & import('../../../color/external').Color) | ({
                rgba255: [number, number, number, number];
            } & [number, number, number]) | (import('../../../color/external').Color & string) | (import('../../../color/external').Color & [number, number, number, number]) | (import('../../../color/external').Color & {
                rgba255: [number, number, number, number];
            }) | (import('../../../color/external').Color & [number, number, number]) | ([number, number, number] & string) | ([number, number, number] & {
                rgba255: [number, number, number, number];
            }) | ([number, number, number] & import('../../../color/external').Color);
            subject: {
                name: string;
                key: string;
            };
            authority: (number | Number | control.Authority) & (number | Number | control.Authority | undefined);
        }[];
    }>;
    afterUpdate(): Promise<void>;
    afterDelete(): Promise<void>;
    render(): Promise<void>;
}
export {};
//# sourceMappingURL=legend.d.ts.map