import { Request, SNS as AWSSNS } from 'aws-sdk';
declare type ReturnTypeFrom<K extends keyof AWSSNS> = AWSSNS[K] extends (...args: any) => Request<infer R, any> ? R : never;
declare type ParamsFrom<K extends keyof AWSSNS, Extras> = AWSSNS[K] extends {
    (param: infer P, callback: (...args: any) => void): Request<infer R, any>;
    (callback: (...args: any) => void): any;
} ? P & Extras : never;
export declare class SNS {
    private readonly client;
    private constructor();
    readonly signingRegion: undefined;
    readonly service: "sns";
    readonly global: false;
    readonly category: "Application Integration";
    readonly topLevelCalls: readonly ["listOriginationNumbers", "listPhoneNumbersOptedOut", "listPlatformApplications", "listSMSSandboxPhoneNumbers", "listSubscriptions", "listTopics"];
    addPermission: (params: ParamsFrom<'addPermission', Record<string, never>>) => Promise<ReturnTypeFrom<'addPermission'>>;
    checkIfPhoneNumberIsOptedOut: (params: ParamsFrom<'checkIfPhoneNumberIsOptedOut', Record<string, never>>) => Promise<ReturnTypeFrom<'checkIfPhoneNumberIsOptedOut'>>;
    confirmSubscription: (params: ParamsFrom<'confirmSubscription', Record<string, never>>) => Promise<ReturnTypeFrom<'confirmSubscription'>>;
    createPlatformApplication: (params: ParamsFrom<'createPlatformApplication', Record<string, never>>) => Promise<ReturnTypeFrom<'createPlatformApplication'>>;
    createPlatformEndpoint: (params: ParamsFrom<'createPlatformEndpoint', Record<string, never>>) => Promise<ReturnTypeFrom<'createPlatformEndpoint'>>;
    createSMSSandboxPhoneNumber: (params: ParamsFrom<'createSMSSandboxPhoneNumber', Record<string, never>>) => Promise<ReturnTypeFrom<'createSMSSandboxPhoneNumber'>>;
    createTopic: (params: ParamsFrom<'createTopic', Record<string, never>>) => Promise<ReturnTypeFrom<'createTopic'>>;
    deleteEndpoint: (params: ParamsFrom<'deleteEndpoint', Record<string, never>>) => Promise<ReturnTypeFrom<'deleteEndpoint'>>;
    deletePlatformApplication: (params: ParamsFrom<'deletePlatformApplication', Record<string, never>>) => Promise<ReturnTypeFrom<'deletePlatformApplication'>>;
    deleteSMSSandboxPhoneNumber: (params: ParamsFrom<'deleteSMSSandboxPhoneNumber', Record<string, never>>) => Promise<ReturnTypeFrom<'deleteSMSSandboxPhoneNumber'>>;
    deleteTopic: (params: ParamsFrom<'deleteTopic', Record<string, never>>) => Promise<ReturnTypeFrom<'deleteTopic'>>;
    getDataProtectionPolicy: (params: ParamsFrom<'getDataProtectionPolicy', Record<string, never>>) => Promise<ReturnTypeFrom<'getDataProtectionPolicy'>>;
    getEndpointAttributes: (params: ParamsFrom<'getEndpointAttributes', Record<string, never>>) => Promise<ReturnTypeFrom<'getEndpointAttributes'>>;
    getPlatformApplicationAttributes: (params: ParamsFrom<'getPlatformApplicationAttributes', Record<string, never>>) => Promise<ReturnTypeFrom<'getPlatformApplicationAttributes'>>;
    getSMSAttributes: (params: ParamsFrom<'getSMSAttributes', Record<string, never>>) => Promise<ReturnTypeFrom<'getSMSAttributes'>>;
    getSMSSandboxAccountStatus: (params: ParamsFrom<'getSMSSandboxAccountStatus', Record<string, never>>) => Promise<ReturnTypeFrom<'getSMSSandboxAccountStatus'>>;
    getSubscriptionAttributes: (params: ParamsFrom<'getSubscriptionAttributes', Record<string, never>>) => Promise<ReturnTypeFrom<'getSubscriptionAttributes'>>;
    getTopicAttributes: (params: ParamsFrom<'getTopicAttributes', Record<string, never>>) => Promise<ReturnTypeFrom<'getTopicAttributes'>>;
    listEndpointsByPlatformApplication(params: {
        [K in keyof ParamsFrom<'listEndpointsByPlatformApplication', {
            next?: string;
        }>]: ParamsFrom<'listEndpointsByPlatformApplication', {
            next?: string;
        }>[K];
    }): Promise<{
        next?: string | number;
        totalItems: number;
        member: {
            [K in keyof ReturnTypeFrom<'listEndpointsByPlatformApplication'>]-?: ReturnTypeFrom<'listEndpointsByPlatformApplication'>[K];
        }['Endpoints'];
    }>;
    listOriginationNumbers(params: {
        [K in keyof ParamsFrom<'listOriginationNumbers', {
            next?: string;
            limit?: number;
        }>]: ParamsFrom<'listOriginationNumbers', {
            next?: string;
            limit?: number;
        }>[K];
    }): Promise<{
        next?: string | number;
        totalItems: number;
        member: {
            [K in keyof ReturnTypeFrom<'listOriginationNumbers'>]-?: ReturnTypeFrom<'listOriginationNumbers'>[K];
        }['PhoneNumbers'];
    }>;
    listPhoneNumbersOptedOut(params: {
        [K in keyof ParamsFrom<'listPhoneNumbersOptedOut', {
            next?: string;
        }>]: ParamsFrom<'listPhoneNumbersOptedOut', {
            next?: string;
        }>[K];
    }): Promise<{
        next?: string | number;
        totalItems: number;
        member: {
            [K in keyof ReturnTypeFrom<'listPhoneNumbersOptedOut'>]-?: ReturnTypeFrom<'listPhoneNumbersOptedOut'>[K];
        }['phoneNumbers'];
    }>;
    listPlatformApplications(params: {
        [K in keyof ParamsFrom<'listPlatformApplications', {
            next?: string;
        }>]: ParamsFrom<'listPlatformApplications', {
            next?: string;
        }>[K];
    }): Promise<{
        next?: string | number;
        totalItems: number;
        member: {
            [K in keyof ReturnTypeFrom<'listPlatformApplications'>]-?: ReturnTypeFrom<'listPlatformApplications'>[K];
        }['PlatformApplications'];
    }>;
    listSMSSandboxPhoneNumbers(params: {
        [K in keyof ParamsFrom<'listSMSSandboxPhoneNumbers', {
            next?: string;
            limit?: number;
        }>]: ParamsFrom<'listSMSSandboxPhoneNumbers', {
            next?: string;
            limit?: number;
        }>[K];
    }): Promise<{
        next?: string | number;
        totalItems: number;
        member: {
            [K in keyof ReturnTypeFrom<'listSMSSandboxPhoneNumbers'>]-?: ReturnTypeFrom<'listSMSSandboxPhoneNumbers'>[K];
        }['PhoneNumbers'];
    }>;
    listSubscriptions(params: {
        [K in keyof ParamsFrom<'listSubscriptions', {
            next?: string;
        }>]: ParamsFrom<'listSubscriptions', {
            next?: string;
        }>[K];
    }): Promise<{
        next?: string | number;
        totalItems: number;
        member: {
            [K in keyof ReturnTypeFrom<'listSubscriptions'>]-?: ReturnTypeFrom<'listSubscriptions'>[K];
        }['Subscriptions'];
    }>;
    listSubscriptionsByTopic(params: {
        [K in keyof ParamsFrom<'listSubscriptionsByTopic', {
            next?: string;
        }>]: ParamsFrom<'listSubscriptionsByTopic', {
            next?: string;
        }>[K];
    }): Promise<{
        next?: string | number;
        totalItems: number;
        member: {
            [K in keyof ReturnTypeFrom<'listSubscriptionsByTopic'>]-?: ReturnTypeFrom<'listSubscriptionsByTopic'>[K];
        }['Subscriptions'];
    }>;
    listTagsForResource: (params: ParamsFrom<'listTagsForResource', Record<string, never>>) => Promise<ReturnTypeFrom<'listTagsForResource'>>;
    listTopics(params: {
        [K in keyof ParamsFrom<'listTopics', {
            next?: string;
        }>]: ParamsFrom<'listTopics', {
            next?: string;
        }>[K];
    }): Promise<{
        next?: string | number;
        totalItems: number;
        member: {
            [K in keyof ReturnTypeFrom<'listTopics'>]-?: ReturnTypeFrom<'listTopics'>[K];
        }['Topics'];
    }>;
    optInPhoneNumber: (params: ParamsFrom<'optInPhoneNumber', Record<string, never>>) => Promise<ReturnTypeFrom<'optInPhoneNumber'>>;
    publish: (params: ParamsFrom<'publish', Record<string, never>>) => Promise<ReturnTypeFrom<'publish'>>;
    publishBatch: (params: ParamsFrom<'publishBatch', Record<string, never>>) => Promise<ReturnTypeFrom<'publishBatch'>>;
    putDataProtectionPolicy: (params: ParamsFrom<'putDataProtectionPolicy', Record<string, never>>) => Promise<ReturnTypeFrom<'putDataProtectionPolicy'>>;
    removePermission: (params: ParamsFrom<'removePermission', Record<string, never>>) => Promise<ReturnTypeFrom<'removePermission'>>;
    setEndpointAttributes: (params: ParamsFrom<'setEndpointAttributes', Record<string, never>>) => Promise<ReturnTypeFrom<'setEndpointAttributes'>>;
    setPlatformApplicationAttributes: (params: ParamsFrom<'setPlatformApplicationAttributes', Record<string, never>>) => Promise<ReturnTypeFrom<'setPlatformApplicationAttributes'>>;
    setSMSAttributes: (params: ParamsFrom<'setSMSAttributes', Record<string, never>>) => Promise<ReturnTypeFrom<'setSMSAttributes'>>;
    setSubscriptionAttributes: (params: ParamsFrom<'setSubscriptionAttributes', Record<string, never>>) => Promise<ReturnTypeFrom<'setSubscriptionAttributes'>>;
    setTopicAttributes: (params: ParamsFrom<'setTopicAttributes', Record<string, never>>) => Promise<ReturnTypeFrom<'setTopicAttributes'>>;
    subscribe: (params: ParamsFrom<'subscribe', Record<string, never>>) => Promise<ReturnTypeFrom<'subscribe'>>;
    tagResource: (params: ParamsFrom<'tagResource', Record<string, never>>) => Promise<ReturnTypeFrom<'tagResource'>>;
    unsubscribe: (params: ParamsFrom<'unsubscribe', Record<string, never>>) => Promise<ReturnTypeFrom<'unsubscribe'>>;
    untagResource: (params: ParamsFrom<'untagResource', Record<string, never>>) => Promise<ReturnTypeFrom<'untagResource'>>;
    verifySMSSandboxPhoneNumber: (params: ParamsFrom<'verifySMSSandboxPhoneNumber', Record<string, never>>) => Promise<ReturnTypeFrom<'verifySMSSandboxPhoneNumber'>>;
    static fromClient(client: AWSSNS): SNS;
    static client(options?: AWSSNS.Types.ClientConfiguration): SNS;
}
export {};
