///
/**
*
*/
import { Logger } from './util/logger';
import { Record, DescribeLayoutResult, DescribeCompactLayoutsResult, DescribeApprovalLayoutsResult, Optional, DmlOptions, SaveResult, UpsertResult, RetrieveOptions, Schema, SObjectNames, SObjectRecord, SObjectInputRecord, SObjectUpdateRecord, SObjectFieldNames, FieldProjectionConfig, FieldPathSpecifier, FieldPathScopedProjection } from './types';
import Connection from './connection';
import RecordReference from './record-reference';
import Query, { QueryOptions, QueryField, QueryCondition, QueryConfig } from './query';
import QuickAction from './quick-action';
import { CachedFunction } from './cache';
import { Readable } from 'stream';
export type FindOptions> = Partial, 'sort' | 'includes'> & {
limit: number;
offset: number;
}>;
/**
* A class for organizing all SObject access
*/
export declare class SObject, FieldNames extends SObjectFieldNames = SObjectFieldNames, RetrieveRecord extends SObjectRecord = SObjectRecord, InputRecord extends SObjectInputRecord = SObjectInputRecord, UpdateRecord extends SObjectUpdateRecord = SObjectUpdateRecord> {
static _logger: Logger;
type: N;
_conn: Connection;
_logger: Logger;
layouts$: CachedFunction<(ln?: string) => Promise>;
layouts$$: CachedFunction<(ln?: string) => DescribeLayoutResult>;
compactLayouts$: CachedFunction<() => Promise>;
compactLayouts$$: CachedFunction<() => DescribeCompactLayoutsResult>;
approvalLayouts$: CachedFunction<() => Promise>;
approvalLayouts$$: CachedFunction<() => DescribeApprovalLayoutsResult>;
/**
*
*/
constructor(conn: Connection, type: N);
/**
* Create records
*/
create(records: InputRecord[], options?: DmlOptions): Promise;
create(records: InputRecord, options?: DmlOptions): Promise;
create(records: InputRecord | InputRecord[], options?: DmlOptions): Promise;
/**
* Synonym of SObject#create()
*/
insert: {
(records: InputRecord[], options?: DmlOptions): Promise;
(records: InputRecord, options?: DmlOptions): Promise;
(records: InputRecord | InputRecord[], options?: DmlOptions): Promise;
};
/**
* Retrieve specified records
*/
retrieve(ids: string[], options?: RetrieveOptions): Promise;
retrieve(ids: string, options?: RetrieveOptions): Promise;
retrieve(ids: string | string[], options?: RetrieveOptions): Promise;
/**
* Update records
*/
update(records: UpdateRecord[], options?: DmlOptions): Promise;
update(records: UpdateRecord, options?: DmlOptions): Promise;
update(records: UpdateRecord | UpdateRecord[], options?: DmlOptions): Promise;
/**
* Upsert records
*/
upsert(records: InputRecord[], extIdField: FieldNames, options?: DmlOptions): Promise;
upsert(records: InputRecord, extIdField: FieldNames, options?: DmlOptions): Promise;
upsert(records: InputRecord | InputRecord[], extIdField: FieldNames, options?: DmlOptions): Promise;
/**
* Delete records
*/
destroy(ids: string[], options?: DmlOptions): Promise;
destroy(ids: string, options?: DmlOptions): Promise;
destroy(ids: string | string[], options?: DmlOptions): Promise;
/**
* Synonym of SObject#destroy()
*/
delete: {
(ids: string[], options?: DmlOptions): Promise;
(ids: string, options?: DmlOptions): Promise;
(ids: string | string[], options?: DmlOptions): Promise;
};
/**
* Synonym of SObject#destroy()
*/
del: {
(ids: string[], options?: DmlOptions): Promise;
(ids: string, options?: DmlOptions): Promise;
(ids: string | string[], options?: DmlOptions): Promise;
};
/**
* Call Bulk#load() to execute bulkload, returning batch object
*/
bulkload(operation: 'insert' | 'update' | 'upsert' | 'delete' | 'hardDelete', optionsOrInput?: Object | Record[] | Readable | string, input?: Record[] | Readable | string): import("./api/bulk").Batch;
/**
* Bulkly insert input data using bulk API
*/
createBulk(input?: Record[] | Readable | string): import("./api/bulk").Batch;
/**
* Synonym of SObject#createBulk()
*/
insertBulk: (input?: Record[] | Readable | string) => import("./api/bulk").Batch;
/**
* Bulkly update records by input data using bulk API
*/
updateBulk(input?: Record[] | Readable | string): import("./api/bulk").Batch;
/**
* Bulkly upsert records by input data using bulk API
*/
upsertBulk(input?: Record[] | Readable | string, extIdField?: string): import("./api/bulk").Batch;
/**
* Bulkly delete records specified by input data using bulk API
*/
destroyBulk(input?: Record[] | Readable | string): import("./api/bulk").Batch;
/**
* Synonym of SObject#destroyBulk()
*/
deleteBulk: (input?: Record[] | Readable | string) => import("./api/bulk").Batch;
/**
* Bulkly hard delete records specified in input data using bulk API
*/
destroyHardBulk(input: Record[] | Readable): import("./api/bulk").Batch;
/**
* Synonym of SObject#destroyHardBulk()
*/
deleteHardBulk: (input: Record[] | Readable) => import("./api/bulk").Batch;
/**
* Describe SObject metadata
*/
describe(): Promise;
/**
*
*/
describe$(): Promise;
/**
*
*/
describe$$(): import("./types").DescribeSObjectResult;
/**
* Get record representation instance by given id
*/
record(id: string): RecordReference;
/**
* Retrieve recently accessed records
*/
recent(): Promise;
/**
* Retrieve the updated records
*/
updated(start: string | Date, end: string | Date): Promise;
/**
* Retrieve the deleted records
*/
deleted(start: string | Date, end: string | Date): Promise;
/**
* Describe layout information for SObject
*/
layouts(layoutName?: string): Promise;
/**
* @typedef {Object} CompactLayoutInfo
* @prop {Array.