import { Accounts } from "./accounts";
import { IMap, INormalizeError, PartialOptional, RazorpayPaginationOptions } from "./api";
import * as fs from "fs";
export declare namespace Stakeholders {
interface RazorpayStakeholderBaseRequestBody {
/**
* The stakeholder's relationship with the account’s business.
*/
relationship?: RelationShip;
/**
* The stakeholder's phone number.
*/
phone: Phone;
/**
* The type of document required to establish the stakeholder's identity.
*/
kyc: {
/**
* The PAN number of the stakeholder.
*/
pan: string;
}
/**
* The stakeholder's name as per the PAN card.
*/
name: string;
/**
* The stakeholder's email address.
*/
email: string;
/**
* The stakeholder's ownership of the business in percentage.
*/
percentage_ownership?: number;
/**
* Details of stakeholder's address.
*/
addresses?: {
residential: Partial
;
}
/**
* Contains user-defined fields stored by the partner for reference purposes.
*/
notes?: IMap;
}
interface RazorpayStakeholderCreateRequestBody extends RazorpayStakeholderBaseRequestBody { }
interface RazorpayStakeholderUpdateRequestBody extends Partial> { }
interface RazorpayStakeholder extends RazorpayStakeholderBaseRequestBody {
/**
* The unique identifier of the stakeholder whose details are created.
*/
id: string;
/**
* Indicates the type of entity.
*/
entity: string;
}
interface Address extends Omit {
street: string;
}
type Phone = {
/**
* The primary contact number of the stakeholder. The minimum length is 8 characters and the maximum length is 11.
*/
primary?: string;
/**
* The secondary contact number of the stakeholder. The minimum length is 8 characters and the maximum length is 11.
*/
secondary?: string;
}
type RelationShip = {
/**
* This attribute is set to `true` if the stakeholder is a director of the account's legal entity
*/
executive?: boolean;
/**
* This attribute is set to `true` if the stakeholder is an executive of the account's legal entity.
*/
director?: boolean;
}
interface FileCreateParams {
file: {
value: fs.ReadStream;
options: {
filename: string;
contentType: string | null;
};
};
document_type: string;
}
interface RazorpayStakeholderDocuments {
individual_proof_of_address: [
{
type: string;
url: string;
}
]
}
}
declare function stakeholders(api: any): {
/**
* Creates a stakeholder
*
* @param accountId - The unique identifier of the account.
* @param params - Check [doc](https://razorpay.com/docs/api/partners/stakeholder#create-a-stakeholder) for required params
*
*/
create(accountId: string, params: Stakeholders.RazorpayStakeholderCreateRequestBody): Promise
create(accountId: string, params: Stakeholders.RazorpayStakeholderCreateRequestBody, callback: (err: INormalizeError | null, data: Stakeholders.RazorpayStakeholder) => void): void;
/**
* Fetches a account given Account ID
*
* @param accountId - The unique identifier of the account.
* @param stakeholderId - The unique identifier of the stakeholder id.
*
*/
fetch(accountId: string, stakeholderId: string): Promise
fetch(accountId: string, stakeholderId: string, callback: (err: INormalizeError | null, data: Stakeholders.RazorpayStakeholder) => void): void;
/**
* Update an stakeholder
*
* @param accountId - The unique identifier of the account.
* @param params - Check [doc](https://razorpay.com/docs/api/partners/stakeholder#update-a-stakeholder) for required params
*
*/
edit(accountId: string, stakeholderId: string, params: Stakeholders.RazorpayStakeholderUpdateRequestBody): Promise
edit(accountId: string, stakeholderId: string, params: Stakeholders.RazorpayStakeholderUpdateRequestBody, callback: (err: INormalizeError | null, data: Stakeholders.RazorpayStakeholder) => void): void;
/**
* Fetch all Stakeholders
*
* @param accountId - The unique identifier of the account.
*
*/
all(accountId: string): Promise<{
entity: string,
items: Array
}>
all(accountId: string, callback: (err: INormalizeError | null, data: {
entity: string,
count: number,
items: Array
}) => void): void;
/**
* Upload stakeholder documents
*
* @param accountId - The unique identifier of the account.
* @param stakeholderId - The unique identifier of the stakeholder id.
*
*/
uploadStakeholderDoc(accountId: string, stakeholderId: string, params: Stakeholders.FileCreateParams): Promise
uploadStakeholderDoc(accountId: string, stakeholderId: string, params: Stakeholders.FileCreateParams, callback: (err: INormalizeError | null, data: Stakeholders.RazorpayStakeholderDocuments) => void): void;
/**
* Fetches stakeholder documents
*
* @param accountId - The unique identifier of the account.
* @param stakeholderId - The unique identifier of the stakeholder id.
*
*/
fetchStakeholderDoc(accountId: string, stakeholderId: string): Promise
fetchStakeholderDoc(accountId: string, stakeholderId: string, callback: (err: INormalizeError | null, data: Stakeholders.RazorpayStakeholderDocuments) => void): void;
}
export default stakeholders