import { TableAction } from '../../../table/index.js';
import type { Table } from '../../../table/index.js';
import type { IndexableKeyType, Key, ResolveIndexableKeyType } from '../../../table/types/index.js';
/**
 * Returns the TS type of a Table Primary Key
 *
 * @param TABLE Table
 * @return Object
 */
export type PrimaryKey<TABLE extends Table = Table> = Table extends TABLE ? Record<string, ResolveIndexableKeyType<IndexableKeyType>> : Key extends TABLE['sortKey'] ? {
    [KEY in TABLE['partitionKey']['name']]: ResolveIndexableKeyType<TABLE['partitionKey']['type']>;
} : NonNullable<TABLE['sortKey']> extends Key ? {
    [KEY in TABLE['partitionKey']['name'] | NonNullable<TABLE['sortKey']>['name']]: KEY extends TABLE['partitionKey']['name'] ? ResolveIndexableKeyType<TABLE['partitionKey']['type']> : KEY extends NonNullable<TABLE['sortKey']>['name'] ? ResolveIndexableKeyType<NonNullable<TABLE['sortKey']>['type']> : never;
} : never;
export declare class PrimaryKeyParser<TABLE extends Table = Table> extends TableAction<TABLE> {
    static actionName: "parsePrimaryKey";
    constructor(table: TABLE);
    parse(keyInput: {
        [KEY: string]: unknown;
    }): PrimaryKey<TABLE>;
}
