export interface SM4Options {
    padding?: 'pkcs#7' | 'pkcs#5' | 'none' | null;
    mode?: 'cbc' | 'ecb' | 'gcm';
    iv?: Uint8Array | string;
    output?: 'string' | 'array';
    associatedData?: Uint8Array | string;
    outputTag?: boolean;
    tag?: Uint8Array | string;
}
export declare function sm4(inArray: Uint8Array | string, key: Uint8Array | string, cryptFlag: 0 | 1, options?: SM4Options): string | Uint8Array<ArrayBufferLike> | {
    output: Uint8Array;
    tag?: Uint8Array;
} | {
    output: string;
    tag: string | undefined;
};
export interface GCMResult<T = Uint8Array | string> {
    output: T;
    tag?: T;
}
export declare function encrypt(inArray: Uint8Array | string, key: Uint8Array | string, options: {
    mode: 'gcm';
    output: 'array';
} & SM4Options): GCMResult<Uint8Array>;
export declare function encrypt(inArray: Uint8Array | string, key: Uint8Array | string, options: {
    mode: 'gcm';
    output?: 'string';
} & SM4Options): GCMResult<string>;
export declare function encrypt(inArray: Uint8Array | string, key: Uint8Array | string, options?: {
    output: 'array';
} & SM4Options): Uint8Array;
export declare function encrypt(inArray: Uint8Array | string, key: Uint8Array | string, options?: {
    output?: 'string';
} & SM4Options): string;
export declare function decrypt(inArray: Uint8Array | string, key: Uint8Array | string, options?: {
    output: 'array';
} & SM4Options): Uint8Array;
export declare function decrypt(inArray: Uint8Array | string, key: Uint8Array | string, options?: {
    output?: 'string';
} & SM4Options): string;
//# sourceMappingURL=index.d.ts.map